ASN078 - Cruscotto assegnazione interventi a richiesta¶
Sorgente: cbl/asn078.cbl (6.014 righe) | Tipo: Programma interattivo a tre griglie affiancate con file di transito e aggiornamento diretto degli interventi
Menu: Assist 2.0 > Operativo > Gestione Interventi a Richiesta > Cruscotto Assegnazione Interventi
Scopo¶
Cruscotto grafico per l'assegnazione degli interventi Assist aperti (chiamate di classe C) alle squadre di tecnici, in una data intervento scelta. Estrae in un file di transito (cogtrans) sia gli interventi da assegnare sia quelli gia' assegnati per la data, li mostra ordinati nella griglia di sinistra, e permette all'operatore di trascinarli/selezionarli verso una squadra (griglia in alto a destra); l'esito viene poi salvato su ASNINTES (assegnazione tecnico/mezzo/data/ora), ASNCHTES (situazione chiamata) e ASNCHSTO (storico).
L'interfaccia e' organizzata in tre griglie:
- GRID-NOM (sinistra): interventi aperti da assegnare per il periodo/filtri richiesti
- GRID-F1 (alto destra): squadre tecnici in vigore alla data intervento, con targa, tecnici e disponibilita' oraria mattino/pomeriggio (in ambiente CRM)
- GRID-F2 (basso destra): interventi gia' assegnati alla squadra selezionata
Il programma e' predisposto per essere invocato come "called" (w-dc-called), ma il ramo relativo e' commentato: di fatto funziona solo standalone da menu.
File acceduti¶
Input/lettura¶
| File | Copybook | Uso |
|---|---|---|
| ASNINTES | acit-rec |
Interventi. Estrazione da assegnare (chia6 su acit-stato) e gia' assegnati (chia3 su acit-ass-data); update in fase di assegnazione |
| ASNCHTES | acht-rec |
Testate chiamate: classe (C), situazione, data/ora, scadenza, priorita', cliente assistito, note, tipo attivita' |
| ASNTEAMS | atea-rec |
Squadre tecnici: chiave k02 per decorrenza; tecnici (1/2), targa, descrizione. Determina la data ultima decorrenza tm-data-ult |
| ASNTPATT | atpa-rec |
Tipi attivita': colore riga (modo colore A) |
| ASNPRIOR | apri-rec |
Priorita' chiamata: descrizione e colore riga (modo colore diverso da A) |
| ASNVEICL | avei-rec |
Veicoli: validazione targa in GRID-F1 |
| ASNINDAG | aitd-rec |
Note intervento tipo I (191216): campo trs-note-i |
| COGRIFER | rif-rec |
Nomi/sigle dei tecnici (rif-nome/rif-titolo) |
| COGGEANA | ana-rec |
Cliente assistito: zona, provincia, localita', indirizzo, ragione sociale |
| COGTABEL | euta-rec |
Descrizione zona (tipo 88) e provincia (tipo 26) |
| COGGENER | gnr-rec |
Raccordo nr. chiamata portale (tip AC = API/IP/EUROPAM, AT = TOTALERG) se configurato |
| COGANATN | atn-rec |
Raccordo tecnico → operatore CRM (per agenda) |
| CRMUSERS | cru-rec |
Livello utente CRM |
| CRMAGCAL | cca-rec |
Agenda CRM: fasce orarie calendario del tecnico |
| CRMAGASP | asp-rec |
Agenda CRM: impegni (chiave k02) per calcolo disponibilita' |
| PRNTOPER | (via COGT20 indiretto) | non usato direttamente |
Output/aggiornamento¶
| File | Copybook | Scrittura |
|---|---|---|
| ASNINTES | acit-rec |
Assegnazione: acit-team, acit-tecnico(1/2), acit-targa, acit-ass-data, acit-ass-ora, acit-stato = "A", acit-tipo-att = "G" (in CRM). Disassegnazione: azzeramento degli stessi campi |
| ASNINTE2 | acit2-rec |
Creato/aggiornato "a vuoto" a corredo di ogni update intervento (x-aggiorna-asninte2) |
| ASNCHTES | acht-rec |
acht-situazione = "A" in assegnazione (o spaces in disassegnazione); acht-stato da configurazione |
| ASNCHSTO | achs-rec |
Storico chiamata: operazione IA (assegnazione/disassegnazione tecnico), M1 (nuovo stato) |
| ASNTEAMS | atea-rec |
Modifica/creazione squadra da GRID-F1 (tecnici, targa, descrizione) |
Transito¶
| File | Scopo |
|---|---|
cogtrans (#$asn078.{oper}) |
Buffer interventi. Chiavi: k01 trs-num-int; k02 cod-squadra+prog-squadra; k03 cod-squadra+ora-squadra; k04 ordinamento. Campo trs-ordinamento (x50) costruito per pilotare l'ordine di visualizzazione |
cogtrans2 (#$asn078B.{oper}) |
Buffer clienti/tecnici gia' in assegnazione nella data (chiave trs2-cli-ass), usato per gli ordinamenti "Clienti in assegnazione" (C) e "Assegnate per tecnico" (T) |
Chiavi secondarie¶
cogtrans.k01/.k02/.k03/.k04,cogtran2.k01asnteams.k02(decorrenza)asnintes.k03(ass-data),.k04(num-att),.k06(stato)crmagasp.k02
Programmi chiamati¶
| Programma | Contesto | Scopo |
|---|---|---|
ASN230 (ASN230-CALLED) |
F6 su tutti i campi/griglie | Consultazione (ricerca interventi per data) |
| ASN041 | F8 su priorita' | Lookup codice priorita' |
| COGF01 | F8 su zona | Lookup zona |
| COGF09 | F8 su provincia | Lookup provincia |
| COGG67 | F8 su tecnico 1/2 (GRID-F1) | Lookup tecnico (param T) |
| ASN040 | F8 su targa (GRID-F1) | Lookup veicolo |
| ASN060 | Stampa interventi su modulo (F9) | Stampa scheda intervento singolo |
| ASN082 | F11 su GRID-F2 | Invio mail/gestione (con asn060-tecnico-master) |
| ASN110 | F7 gestione carburanti / doppio | Gestione chiamata (intervento singolo) |
ASN120 (ASN120-CALLED) |
F7 gestione carburanti | Gestione intervento multiplo (progressivo > 01) |
| ASNS78 | Ambiente CRM | Aggiornamento/cancellazione agenda tecnici (I/C), tipo att G |
| CRM058 | F7 su tecnico (GRID-F1) | Visualizzazione agenda CRM del tecnico |
| swa004 | aggiorna-postgres |
Allineamento online PostgreSQL (Areagate) se configurato |
| DIALOGS | Conferme multiple | Dialoghi conferma assegnazione (solo/scheda), stampa modulo, squadra non trovata |
| GRIDADMN | Griglie | Prepara/Add/Modify/Svuota, S-F4 personalizzazione |
| RNEWCONF | x99-confi |
Lettura/modifica configurazioni |
| ENCRYPT | — | (non presente) |
Configurazioni RNEWCONF (x99-confi)¶
| Idx | Gruppo | Chiave | Variabile | Effetto |
|---|---|---|---|---|
| 01 | ASSIST |
ora-inizio-assegnazione-inter |
tm-cfg-ora-inizio |
Ora prima fascia di assegnazione. Se 0 → blocco iniziale (m-asn078-3-1) |
| 02 | ASSIST |
step-orario-assegnazione-inter |
tm-cfg-step-ora |
Passo orario tra un intervento e il successivo. Se 0 → blocco (m-asn078-4-1) |
| 03 | ASSIST |
codice-stato-chiamata |
tm-cfg-cod-stato |
Stato chiamata "base" (usato in disassegnazione) |
| 04 | ASSIST |
codice-stato-assegnazione |
tm-cfg-stato-asseg |
Stato da impostare sulla chiamata all'assegnazione |
| 05 | ASSIST |
cod-attivita-su-chiamata |
tm-cfg-attivita |
Se valorizzato + az-cli-pot=S → gestione agenda CRM |
| 06 | ASSIST |
codice-stato-noneseguita |
tm-cfg-non-eseguita |
Stato "non eseguita" → colore riga (07) |
| 07 | ASSIST |
codice-stato-sospesa |
tm-cfg-sospesa |
Stato "sospesa" → colore riga (08) |
| 08 | AREAAPP |
agg-postgres-online |
tm-cfg-aggiorna-postgres-online |
Se S → swa004 (allineamento Areagate online) |
| 09 | assist |
tipo-colore-righe-vis-chiamate |
tm-cfg-tipo-colore |
A = colore da tipo attivita', altro = colore da priorita' |
| 10 | assist |
codice-colore-non-eseguita |
tm-cfg-nr-colore-non-eseguita |
Colore righe stato "non eseguita" |
| 11 | assist |
codice-colore-sospesa |
tm-cfg-nr-colore-sospesa |
Colore righe stato "sospesa" |
| 12 | assist |
gestione-chiamate-da-portale-web |
tm-cfg-chiam-portale |
Se S → ricerca nr. chiamata portale su COGGENER |
| 13 | assist |
nome-tecnico-breve-cruscotto |
tm-cfg-sigla-breve-tec |
S = sigla (rif-titolo), altro = nome esteso |
| 14 | labimp |
ora-inizio-pomeriggio |
tm-cfg-ora-inizio-pom |
Soglia mattino/pomeriggio per calcolo disponibilita' (default 14:00) |
| 15 | assist |
gestione-impianti-carburanti |
tm-cfg-gest-imp-carbur |
Se S → note intervento su descrizione, tasto F7 dettaglio |
Logica di creazione del transito (x1-creo-file)¶
Eseguita alla conferma dei filtri (F3), dopo a-inizio-creazione che ricrea cogtrans/cogtrans2. La data ultima decorrenza squadre tm-data-ult viene ricavata scorrendo ASNTEAMS all'indietro dalla data intervento.
- cogtrans2 (
x1-trs2-100): scorreASNINTESperacit-ass-data = tm-data-int, statoA, chiamata classeC, situazioneA; scrive un record percli-asscon tecnico principale. Serve agli ordinamentiC/T. - Interventi da assegnare (
x1-10): scorreASNINTESsu chia6 (acit-statospaces/A), tecnico(1) = 0,acit-ass-data = 0, chiamata classeC, situazione spaces/A,acht-datanel rangetm-datain..tm-datafi. Applica i filtri zona/provincia/priorita'. Scrivecogtranscontrs-fl-assegnata = spaces. - Interventi gia' assegnati (
x1-100): scorreASNINTESsu chia3 (acit-ass-data = tm-data-int), statoA, chiamata classeC, situazioneA; scrivecogtranscontrs-fl-assegnata = "S"e ricava la squadra daatea-cod = acit-team(con dialoghi di errore se squadra non trovata). - Rinumerazione (
x9-prog-squadra): riassegna il progressivo per squadra ordinando per ora intervento.
Ordinamento (campo trs-ordinamento)¶
Costruito in base a tm-ordine:
P(priorita'):priorita + data-sca-decrescente + ora-sca + idD(data):data-sca-decrescente + ora-sca + idZ(zona/provincia):prov + priorita + ...C(clienti in assegnazione): clienti gia' presenti in cogtrans2 in testa (" "+cli), altri con"ZZZ"+cliT(assegnate per tecnico): raggruppa per nome tecnico da cogtrans2, poi per cliente
Per az-personal = "TI" (Torricelli) la priorita' viene ricodificata (U→1, N→2, "Programmate"→D) e la data scadenza e' invertita (99999999 - data) per ordine decrescente. Il ricarico su nuovo ordinamento avviene in x2-ricarico-transito senza rileggere gli archivi.
Caricamento griglie (a-inizio-elaborazione)¶
- GRID-NOM (
a10-loop): scorrecogtranssu chia4 (ordinamento); righe contrs-cod-squadragia' valorizzato sono le assegnate (colonna squadra popolata); colore riga da tipo attivita'/priorita'/stato. - GRID-F1 (
a20-loop): scorreASNTEAMSper la decorrenzatm-data-ult; per ogni squadra conta chiamate gia' assegnate in cogtrans e, in ambiente CRM, calcola disponibilita' mattino/pomeriggio (f1-dispon-tec) con colorazione celle. - GRID-F2 (
visualizza-grid-f2): interventi assegnati alla squadra selezionata (chia2), con flag email/SMS inviati (daacit-fl-invio-mail/sms).
Assegnazione interattiva¶
- Invio su GRID-NOM: verifica che l'intervento non sia gia' stato assegnato da altra postazione (
x8-verifico-assegnatasu situazioneR/Co data assegnazione); memorizza la riga e passa a GRID-F1. - Invio su GRID-F1: assegna l'intervento selezionato alla squadra (
add-chiamata-f2), aggiorna cogtrans (trs-cod-squadra,trs-prog-squadra,trs-riga-nom-sel), incrementa contatori, torna a GRID-NOM. - Ctrl-E su GRID-F1/F2: disassegna l'intervento (
togli-chiamata-f2), azzera squadra su cogtrans. - Drag&drop su GRID-F2 (
a4-incolla-blocco+rinumera-prog-f2): riordino manuale del progressivo intervento nella squadra.
Salvataggio (a1-aggiorna → b-aggiorna)¶
Innescato da F3 in modalita' aggiornamento. Prima aggiorna le squadre (b-aggiorna-f1). Poi scorre cogtrans su chia2 (per squadra/progressivo):
- Se
trs-cod-squadra = spacese flag assegnata: disassegna (b-tolgo-assegnazione) solo se il record risulta ancora assegnato (verifica anti-conflitto con altre postazioni,x82-verifico-assegnata). - Altrimenti assegna: legge la squadra da
ASNTEAMS, calcola ora interventoacit-ass-oradaora-inizio + step * progressivo, aggiornaASNINTES(tecnici, targa, team, data/ora, statoA),ASNCHTES(situazioneA, stato configurato), storicoASNCHSTO, ASNINTE2, ed eventualmente agenda CRM (ASNS78) e PostgreSQL (swa004).
In ambiente CRM con tm-cfg-attivita, prima di assegnare a un nuovo tecnico si innesca la cancellazione dei riferimenti CRM precedenti (asns78-tipo-elab = "C"), solo se l'intervento e' collegato ad attivita' CRM (acit-num-att != 0). L'aggiornamento dell'agenda CRM in fase di assegnazione avviene solo se l'operatore ha scelto "Assegna scheda" (w-aggiorna-agenda-crm = "S") tramite il dialogo iniziale.
A fine salvataggio, dialogo b-999-fine per innescare stampa interventi per tecnico (F6 → ASN074) o generale (F9 → ASN076).
Disponibilita' tecnici in agenda CRM (f1-dispon-tec)¶
Solo in ambiente CRM (az-cli-pot=S + tm-cfg-attivita). Scorre l'agenda calendario CRMAGCAL del tecnico nella data intervento: per ogni fascia non occupata (o occupata da attivita' collegata a chiamata Assist tramite CRMAGASP+ASNINTES) somma 0,25 h al mattino o pomeriggio secondo la soglia ora-inizio-pomeriggio. La disponibilita' visualizzata e' cappata a 4 ore (richiesta Torricelli, 130215) e la cella e' colorata secondo il livello (0 / <4 / >=4).
Messaggi principali¶
| ID | Contesto |
|---|---|
m-asn078-2-1 |
Titolo maschera |
m-asn078-3-1/4-1 |
Ora inizio / step orario non configurati (blocco) |
m-asn078-5-1 |
Creazione transito in corso |
m-asn078-6-1/7-1 + 20-1/21-1 |
Errore apertura cogtrans/cogtrans2 |
m-asn078-8-1 |
Ricerca interventi in corso |
m-asn078-9-1 |
Nessun intervento trovato |
m-asn078-10-1/11-1 |
Conferme perdita assegnazioni su ESC |
m-asn078-12-1 |
Intervento gia' assegnato da altra postazione |
m-asn078-13-1/15-1 |
Aggiornamento non abilitato |
m-asn078-14-1 |
Conferma assegnazione |
m-asn078-18-1 |
Assegnazione in corso |
m-asn078-22-1/23-1/24-1 |
Errori scrittura/rewrite cogtrans |
m-asn078-26-1/27-1 |
Tecnico 1/2 non esistente |
m-asn078-28-1 |
Targa non esistente |
m-asn078-29-1/30-1 |
Date incongruenti |
m-asn078-31-1/32-1/33-1/34-1 |
Zona/provincia/priorita'/data intervento non valide |
m-asn078-35-1/36-1 |
Etichette pulsanti custom |
m-err-squadra-nfd / m-non-considero-intervento |
Squadra non trovata per intervento assegnato |
Storico modifiche significative (dal sorgente)¶
- 250213: allargato filtro stato/situazione (considera anche
A= disassegnati) - 040213: ricerca squadra per codice
acit-teamanziche' per tecnico primario (squadre con stessi tecnici) - 300714: gestione impianti carburanti (note intervento, F7 dettaglio ASN110/ASN120)
- 150414: disponibilita' tecnici da agenda CRM (
f1-dispon-tec, CRM058, soglia pomeriggio) - 130215: cap 4 ore sulla disponibilita' visualizzata
- 160215: dialogo scelta aggiornamento agenda CRM (solo assegnazione / assegna scheda); ricarico grid-f1 solo se necessario
- 200214: colori configurabili, chiamata portale (COGGENER AC/AT), sigla breve tecnico, cogtrans2 per ordinamenti C/T, email/SMS su GRID-F2
- 191216: note intervento tipo
I(ASNINDAG) sutrs-note-i - 180516: allineamento PostgreSQL online anche in disassegnazione
Note implementative¶
- Tre griglie affiancate ridimensionate manualmente (
z-resize-grid) con GRID-NOM ~metа larghezza + 15; F1/F2 impilate a destra. cogtransecogtrans2sono file di transito con nome per operatore (wo-oper), aperti in output e riaperti i-o all'avvio; cancellati inz-chiudi.- Il campo
trs-ordinamento(chiave alternativa k04) e' il perno dell'ordinamento: viene ricostruito senza rileggere gli archivi quando si cambia solo il criterio (x2-ricarico-transito). - Anti-conflitto multi-postazione: prima di assegnare/disassegnare si rilegge lo stato reale su
ASNINTES/ASNCHTESper non sovrascrivere modifiche fatte da altri utenti. az-personal = "TI"(Torricelli) eaz-personal = "EI"introducono ricodifiche di priorita' e colori specifici.