ASN140 - Chiusura intervento¶
Intestazione¶
| Campo | Valore |
|---|---|
| Programma | ASN140 |
| Titolo | Chiusura intervento |
| Modulo | Assist 2.0 |
| Posizione menu | Assist 2.0 > Operativo > Gestione interventi a richiesta > Chiusura intervento |
Scopo e logica generale¶
ASN140 gestisce la chiusura degli interventi di assistenza tecnica. Permette di registrare prestazioni effettuate, materiali scaricati, note del tecnico, difetti/soluzioni, e tempi di lavorazione multi-giorno. Alla conferma, aggiorna lo stato dell'intervento e della chiamata collegata, genera eventuali documenti di magazzino, e integra con il modulo CRM e il modulo laboratorio.
Supporta anche la modalita' "Chiusura-Auto" quando invocato da ASN530 (chiusura programmata senza interazione utente).
Flusso principale¶
- Inizializzazione: caricamento configurazione Assist 2.0, preparazione tasti funzione, apertura file transito COGTRANS
- Input chiave: accettazione ID intervento (barcode o manuale), validazione esistenza e stato
- Caricamento dati: lettura ASNINTES + ASNCHTES, caricamento tecnici (1-5), date, tempi, deposito
- Interfaccia a schede:
- PA1: Dati generali (cliente, tecnici, stato, flag risolutivo)
- PA2: Annotazioni (note tecniche, contratto, certificazioni)
- PA3: Riepilogo tempi multi-giorno (se configurato
intervento-piu-giorni) - PA4: Griglia prestazioni
- PA5: Griglia materiali
- PA6: Griglia difetti (se configurato
difetti-su-intervento) - Validazione: controllo tecnici attivi, lotti, causali definitive, contratto, scaling prestazioni
- Conferma e aggiornamento:
- Aggiorna stato chiamata (ASNCHTES): R=risolutivo, C=chiuso
- Aggiorna intervento (ASNINTES): flag completamento, date/tempi
- Registra storico stato (ASNCHSTO)
- Chiude non conformita' collegate (COGNA0)
- Scrive dettagli prestazioni (ASNINDET) e materiali (ASNMTRLK)
- Genera documenti di magazzino se configurato (
crea-bolla-chiu-chiamata) - Post-chiusura: dialogo con opzioni: visualizza documenti (F4), crea chiamate laboratorio (F5), stampa (F9), crea chiamate future (S-F5)
File e tabelle acceduti¶
| File | Record | Modalita' | Uso |
|---|---|---|---|
| ASNINTES / ASNINTE2 | acit/acit2-rec | I-O | Interventi di assistenza (testata) |
| ASNCHTES | acht-rec | I-O | Chiamate di assistenza (testata) |
| ASNCHDET | achd-rec | I-O | Dettagli chiamata (matricole collegate) |
| ASNCHORD | acho-rec | Input | Ordini materiali collegati alla chiamata |
| COGTESOR | tor-rec | Input | Stato ordini materiali |
| ASNCHPRV | achv-rec | Input | Preventivi/quote intervento |
| ASNINDET / ASNINDE2 | acid-rec | I-O | Righe prestazioni intervento |
| ASNMTRLK / ASNMATRL | varie | I-O | Righe materiali intervento |
| ASNINDIF | varie | I-O | Righe difetti intervento |
| ASNINDAG | varie | I-O | Annotazioni intervento |
| ASNCHSTO | achs-rec | Output | Storico stati chiamata |
| ASNCHWKF | achw-rec | I-O | Workflow laboratorio (fasi commessa) |
| COGMAGAZ / COGMAGPE | magz/mgp-rec | Input | Magazzini/depositi |
| COGSTSCH | astc-rec | Input | Codici stato chiamata |
| COGTRANS | trs-rec | I-O | File transito temporaneo per griglia |
| COGRIFER | rif-rec | Input | Dati tecnici di riferimento |
Chiavi secondarie utilizzate¶
| Copybook | Tabella | Scopo |
|---|---|---|
asnchdet.k02 |
ASNCHDET | Ricerca dettagli per chiamata |
asnintes.k02 |
ASNINTES | Ricerca interventi per chiamata |
asnindet.k07 |
ASNINDET | Ricerca prestazioni per intervento |
cogmatri.k04 |
COGMATRI | Ricerca matricole per merce |
cogracco.k02 |
COGRACCO | Raccolta contabile |
cogracmt.k02 |
COGRACMT | Raccolta materiali |
asncntes.k08 |
ASNCNTES | Contratti per cliente |
asnmtrlk.k02 |
ASNMTRLK | Materiali per intervento |
asnmatri.k02 |
ASNMATRI | Matricole assistenza |
cogncdoc.k02 |
COGNCDOC | Documenti non conformita' |
asnchwkf.k02 |
ASNCHWKF | Workflow per chiamata |
Programmi chiamati (CALL)¶
| Programma | Scopo |
|---|---|
| W$MENU | Menu dropdown |
| ASN230 | Ricerca/selezione chiamate |
| POSTIT | Informazioni cliente |
| ASNS21 | Verifica attivita'/validita' tecnico |
| ASNS17 | Lettura barcode materiali |
| DIALOGS | Finestre di dialogo modali |
| ASN110 | Selezione/dettagli contratto |
| ASN500 | Gestione contratti |
| ASN520 | Certificazioni/conformita' |
| ASN040, ASN220, ASN142 | Utility materiali/prestazioni |
| ASN015, COGY68, COGE67 | Utility documenti/fiscali |
| ASNS23 | Tracking produzione tecnico (se configurato) |
| ASN139 | Creazione chiamate future |
| ASN145 | Creazione chiamate laboratorio |
| ASN060 | Stampa intervento |
| ASN120 | Gestione chiamata |
| COGNA0 | Chiusura non conformita' |
| COGU06 | Archiviazione ottica documenti |
| COGO45 | Chiusura automatica ordini collegati alla chiamata (TASK-3595) |
| COGU35W | Utility generale |
| SWN937 | Aggiornamento online note intervento su KPN/AreaAPP (TASK-4759, attivata da areaapp / agg-postgres-online = "S") |
Tasti funzione¶
| Tasto | Contesto | Funzione |
|---|---|---|
| F1 | Campo ID | Configurazione ASN140 |
| F2 | Vari | Ripeti/toggle campo |
| F3 | Vari | Conferma/procedi |
| F4 | Post-chiusura | Visualizza documenti creati |
| F5 | Post-chiusura | Crea chiamate laboratorio |
| F6 | Post-chiusura | Stampa etichette riparazione |
| F7 | PA2 | Mostra contratti |
| F9 | Campo ID / Post-chiusura | Ricerca avanzata / Stampa intervento |
| S-F2 | Vari | Mostra filiera documenti |
| S-F5 | Post-chiusura | Crea chiamate future |
| ESC | Vari | Indietro/esci |
Logica di business¶
Stati intervento¶
| Stato | Significato |
|---|---|
| (vuoto) | Da eseguire |
| P | Pre-chiuso (prestazioni/materiali "Da Definire") |
| C | Chiuso |
| Z | Chiamata bianca (senza intervento effettivo) |
Chiusura con stato parziale (P)¶
Se almeno una riga prestazione o materiale ha il flag "Da Definire", l'intervento viene salvato in stato "P" (pre-chiuso). Non vengono generati documenti di magazzino. L'operatore dovra' completare le righe e confermare nuovamente.
Scaling prestazioni multi-giorno¶
Se configurato intervento-piu-giorni, i tempi inseriti nella scheda PA3 (riepilogo giornaliero) vengono convertiti automaticamente in prestazioni (PA4):
- Ore ordinarie →
prestazione-manodopera-standard - Ore straordinarie →
prestazione-manodopera-straord - Ore festive →
prestazione-manodopera-festiva - Tempo viaggio →
prestazione-tempo-viaggio - Km viaggio →
prestazione-km-viaggio - Trasferte/pasti/pernotti → prestazioni configurate
Scaling contratto "a consumo"¶
Per i contratti "a consumo", le prestazioni vengono ricalcolate in base alla quantita' residua del contratto. Se applicabile, il sistema applica il meccanismo dei "gettoni" (token) contrattuali.
Generazione documenti¶
Se configurato crea-bolla-chiu-chiamata, alla chiusura vengono generati automaticamente documenti di magazzino (bolle/fatture) tramite ASN351. Le prestazioni eseguite in mesi diversi generano documenti separati.
Validazioni chiave¶
- Intervento gia' chiuso → rifiutato
- Ordine materiali aperto collegato → chiusura bloccata
- Tecnico non attivo alla data → errore
- Lotti mancanti su articoli gestiti a lotto → errore
- Magazzino non significativo su riga materiale con lotti → errore ("Codice magazzino non significativo, riga: N")
- Causali provvisorie rimaste → richiesta completamento
Configurazioni principali¶
| Gruppo | Parametro | Effetto |
|---|---|---|
| assist | chiudo-chiamata-inter-risolutivo | Auto-chiusura chiamata su intervento risolutivo |
| assist | crea-bolla-chiu-chiamata | Contabilizzazione immediata o differita |
| ass-chiam | intervento-piu-giorni | Abilita scheda riepilogo tempi multi-giorno |
| ass-chiam | difetti-su-intervento | Abilita griglia difetti/soluzioni |
| assist | gestione-produzione-tecnico | Abilita tracking produzione tecnico |
| ass-chiam | forzo-non-fatturare | Forza flag "non fatturare" quando importo = 0 |
| ass-chiam | chiusura-automatica-ordini-2 | Chiusura automatica ordini collegati alla chiamata: "S" = chiudi a chiusura chiamata, "R" = chiudi a chiusura intervento risolutivo |
| areaapp | agg-postgres-online | Se "S", alla conferma intervento attiva l'aggiornamento immediato delle note su KPN (PostgreSQL AreaAPP) via SWN937 (TASK-4759). Riga di tabella tm-cfg-aggiorna-postgres-online, indice 76 in RNEWCONF. |
| ass-chiam | asn140-sn-materiale-presente-asnchdet | Se "S", alla conferma matricola sulla griglia materiali il sistema verifica che il serial number indicato sia presente anche fra i dettagli della chiamata (ASNCHDET -> ASNMATRI). Se non presente, blocca la conferma con messaggio m-asn140-598-1 (TASK-5188). Riga di tabella tm-cfg-sn-materiale-presente-asnchdet, indice 77 in RNEWCONF. |
| ass-strum | importanza-obbligatoria | Rende obbligatorie prestazioni di default con importanza configurata |
Pattern architetturali¶
- Interfaccia a schede (tab): 6 pagine con griglia modificabile per prestazioni, materiali, difetti
- File transito (COGTRANS): disaccoppia modifiche griglia da scritture su database
- Auto-closure mode: supporto invocazione programmata da ASN530 senza interazione utente
- Storico stati: ogni cambio stato viene registrato in ASNCHSTO per audit trail
- Post-chiusura dialog: interfaccia modale con opzioni multiple (documenti, laboratorio, stampe, chiamate future)
Storico modifiche¶
2026-03-24: Assegnazione automatica magazzino per lotti¶
Aggiunta logica di assegnazione automatica del codice magazzino (tm-g2-mag) sulle righe materiali quando sono soddisfatte entrambe le condizioni:
- La gestione lotti e' attiva (
az-lotti = "C") - La configurazione di movimentazione lotti e' abilitata (
tm-cfg-movimentazione-lotti = "A")
Se il codice magazzino sulla riga griglia e' vuoto, viene popolato con il magazzino di default dell'intervento (tm-mag).
Aggiunta validazione: prima di aprire il dialogo di selezione lotto (WIN097), il sistema verifica che il magazzino sia compilato. Se vuoto, viene mostrato l'errore "Codice magazzino non significativo" e la selezione lotto non viene aperta.
Aggiunta pulizia low-value sui codici lotto tramite INSPECT ... REPLACING LOW-VALUES BY SPACES.
2026-03-31: TASK-3595 - Chiusura automatica ordini collegati alla chiamata¶
Aggiunta nuova configurazione ass-chiam / chiusura-automatica-ordini-2 (parametro 75 su RNEWCONF) che controlla la chiusura automatica degli ordini materiali collegati alla chiamata quando questa viene chiusa.
Quando la configurazione vale "S" o "R", alla chiusura della chiamata viene eseguito il nuovo paragrafo chiudo-ordine che:
- Legge tutti i record
ASNCHORDcollegati alla chiamata tramiteacho-id-chiamata - Per ogni record di tipo
"O"(ordine), verifica che l'ordine (COGTESOR) non sia gia' chiuso (tor-chiu <> "C") - Se l'ordine e' ancora aperto, chiama
COGO45tramite l'interfacciautil-cogo45, passandocogo45-called = "COGO45-CALLED",cogo45-ordine = tor-chia,cogo45-chiusura-auto = tm-cfg-chiusura-auto-ordini-2 - Logga ogni chiusura nel debug:
"chiamata: {id} chiuso ordine: {ordine}"
Nuove variabili: tm-cfg-chiusura-auto-ordini-2 (PIC X(01)).
Nuovi paragrafi: chiudo-ordine / ex-chiudo-ordine.
2026-05-13: TASK-4759 - Note fatturazione accessibili anche con DDT collegati¶
Rimosso il blocco che impediva l'accesso al campo "Note fatturazione" (tm-note-fattura) quando erano gia' stati creati DDT collegati all'intervento (w-fl-creati-ddt = "S"). In precedenza il paragrafo a-tm-note-fattura controllava il flag x-enabled-tm-note-fattura e saltava al campo successivo (a-tm-imp-concordato con F2, a-tm-dst-idx altrimenti) impedendo la modifica del testo.
Aggiunta inoltre la variabile tm-note-fattura-prec (PIC X(2000)) che memorizza il valore originale delle note fatturazione al caricamento dell'intervento, leggendolo da aitd-note (riga annotazioni intervento). Il campo conserva il valore originale anche quando l'utente modifica tm-note-fattura, permettendo confronti o ripristini successivi.
2026-05-14: TASK-4759 (estensione) - Note non risolutivo sempre modificabili + sync KPN online¶
Estensione del task precedente: ora anche "Note intervento non risolutivo" (tm-note-non-risol) sono modificabili indipendentemente dallo stato dell'intervento. Rimosso il controllo che limitava l'editabilita' del campo allo stato "P" (Pre-chiuso) abbinato a cambio di tm-fl-risol. Sia il blocco di abilitazione visiva (modify e-tm-note-non-risol, color = ext-color-controls) sia l'accept del paragrafo a-tm-note-non-risol non controllano piu' tm-fl-stato / x-enabled-tm-note-non-risol. Aggiunte le variabili tm-note-tecnico-prec e tm-note-non-risol-prec (PIC X(2000) ciascuna) che, in modo simmetrico a tm-note-fattura-prec, memorizzano i valori originali delle note al caricamento dell'intervento.
Sincronizzazione immediata KPN (AreaAPP):
introdotta nuova configurazione areaapp / agg-postgres-online (tm-cfg-aggiorna-postgres-online, indice 76 di RNEWCONF). Quando vale "S", alla conferma dell'aggiornamento intervento (paragrafo di chiusura aggiornamenti) il programma confronta tm-note-fattura, tm-note-tecnico e tm-note-non-risol con i rispettivi *-prec. Se almeno uno e' cambiato, viene attivato il flag w-fl-call-swn937 = "S" e viene effettuata la chiamata:
move acht-cli-ass to utilswa-cli
move k-program-id to utilswa-called
move tm-id-inter to utilswa-id-intervento
call "SWN937" using stringhe
cancel "SWN937"
SWN937 e' una nuova subroutine che apre la connessione PostgreSQL KPN, legge ARPINTES e ARPINTES2 per l'intervento e aggiorna rcit-note-tecnico, rcit-commento-risolutivo, rcit2-note-fattura con i valori correnti da ASNINDAG (tipi "T", "F", "E"). Aggiorna anche rcit2-id-sincro con un nuovo progressivo letto da APSTATOSYN (tabella ARPINTES).
Nuova copybook: utilswa.cpy (passaggio parametri verso le subroutine SWN/SWA).
Nuova variabile: w-fl-call-swn937 PIC X(01) (flag locale per attivazione chiamata).
2026-05-15: TASK-5052 - Blocco chiusura intervento se ordine materiali non chiuso¶
Aggiunto controllo bloccante all'avvio della procedura di aggiornamento intervento: se sulla chiamata risulta collegato (in ASNCHORD con acho-tip = "O") un ordine materiali la cui testata (COGTESOR) non e' in stato chiuso (tor-chiu <> "C"), la chiusura/aggiornamento dell'intervento viene impedita.
Il programma scorre ASNCHORD per acht-id = acho-id-chiamata, prende il primo record di tipo "O", legge la testata ordine corrispondente (tor-chia = acho-tor-chia) e, se l'ordine non risulta chiuso, mostra il messaggio "Chiusura intervento Non abilitata: la chiamata e' collegata ad un ordine di materiali non ancora chiuso ..." e imposta il flag locale tm-no-aggio = "S" (che inibisce il salvataggio).
Il controllo si affianca alla nuova logica di completamento descrizione ordine introdotta in ASN110/COGO05W (TASK-5052): l'intero ciclo "chiamata -> ordine materiali -> chiusura intervento" e' ora vincolato a chiudere prima l'ordine.
2026-03-27: Selezione lotto con controllo quantita' sufficiente¶
Modificata la logica di selezione lotto in due punti:
-
Ricerca lotto per riga materiale BDP (~paragrafo di match lotto): la condizione di selezione e' cambiata da
mlt-qta > zero and mlt-stato not = "C"amlt-stato not = "C"con il controllo aggiuntivomlt-qta >= tm-g2-qta(i2). Il lotto deve avere una quantita' sufficiente per la quantita' richiesta dalla riga materiale, non semplicemente una quantita' maggiore di zero. -
Ricerca lotto per chiave secondaria (chia2): la logica e' passata da una singola lettura a un loop (
PERFORM UNTIL) che scorre i record lotto con la stessa chiave, selezionando il primo lotto non chiuso (mlt-stato not = "C") con quantita' sufficiente (mlt-qta >= tm-g2-qta(i2)).
2026-06-01: TASK-5188 - Controllo s.n. matricola presente in ASNCHDET¶
Aggiunto nuovo controllo opzionale alla conferma della matricola sulla griglia materiali (paragrafo x-controlla-tm-g2-sn). Quando la nuova configurazione ass-chiam / asn140-sn-materiale-presente-asnchdet vale "S" (tm-cfg-sn-materiale-presente-asnchdet, indice 77 in RNEWCONF), il programma verifica che il serial number indicato (tm-g2-sn(i2)) sia presente fra le matricole collegate alla chiamata corrente.
Logica:
- Scan di
ASNCHDETperachd-id = tm-id-chiam - Per ogni dettaglio, lettura di
ASNMATRI(amtr-id = achd-id-matricola) - Se
amtr-sncorrisponde al serial number indicato dall'operatore, il flagw-g2-ok-snviene posto a"S"e il loop termina (statusfi = k-fine-file) - Se al termine del loop il flag non e' valorizzato, viene impostato il messaggio
m-asn140-598-1, il flagx-f3-ok-parziale = "N", e viene eseguitoexit paragraphinterrompendo la conferma
Nuova variabile: w-g2-ok-sn PIC X(01) (flag locale di esito controllo).