Vai al contenuto

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.k01
  • asnteams.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 Sswa004 (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

Vedi assist, areaapp, labimp.

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.

  1. cogtrans2 (x1-trs2-100): scorre ASNINTES per acit-ass-data = tm-data-int, stato A, chiamata classe C, situazione A; scrive un record per cli-ass con tecnico principale. Serve agli ordinamenti C/T.
  2. Interventi da assegnare (x1-10): scorre ASNINTES su chia6 (acit-stato spaces/A), tecnico(1) = 0, acit-ass-data = 0, chiamata classe C, situazione spaces/A, acht-data nel range tm-datain..tm-datafi. Applica i filtri zona/provincia/priorita'. Scrive cogtrans con trs-fl-assegnata = spaces.
  3. Interventi gia' assegnati (x1-100): scorre ASNINTES su chia3 (acit-ass-data = tm-data-int), stato A, chiamata classe C, situazione A; scrive cogtrans con trs-fl-assegnata = "S" e ricava la squadra da atea-cod = acit-team (con dialoghi di errore se squadra non trovata).
  4. 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 + id
  • D (data): data-sca-decrescente + ora-sca + id
  • Z (zona/provincia): prov + priorita + ...
  • C (clienti in assegnazione): clienti gia' presenti in cogtrans2 in testa (" "+cli), altri con "ZZZ"+cli
  • T (assegnate per tecnico): raggruppa per nome tecnico da cogtrans2, poi per cliente

Per az-personal = "TI" (Torricelli) la priorita' viene ricodificata (U1, N2, "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): scorre cogtrans su chia4 (ordinamento); righe con trs-cod-squadra gia' valorizzato sono le assegnate (colonna squadra popolata); colore riga da tipo attivita'/priorita'/stato.
  • GRID-F1 (a20-loop): scorre ASNTEAMS per la decorrenza tm-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 (da acit-fl-invio-mail/sms).

Assegnazione interattiva

  • Invio su GRID-NOM: verifica che l'intervento non sia gia' stato assegnato da altra postazione (x8-verifico-assegnata su situazione R/C o 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-aggiornab-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 = spaces e 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 intervento acit-ass-ora da ora-inizio + step * progressivo, aggiorna ASNINTES (tecnici, targa, team, data/ora, stato A), ASNCHTES (situazione A, stato configurato), storico ASNCHSTO, 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-team anziche' 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) su trs-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.
  • cogtrans e cogtrans2 sono file di transito con nome per operatore (wo-oper), aperti in output e riaperti i-o all'avvio; cancellati in z-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/ASNCHTES per non sovrascrivere modifiche fatte da altri utenti.
  • az-personal = "TI" (Torricelli) e az-personal = "EI" introducono ricodifiche di priorita' e colori specifici.