Vai al contenuto

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

  1. Inizializzazione: caricamento configurazione Assist 2.0, preparazione tasti funzione, apertura file transito COGTRANS
  2. Input chiave: accettazione ID intervento (barcode o manuale), validazione esistenza e stato
  3. Caricamento dati: lettura ASNINTES + ASNCHTES, caricamento tecnici (1-5), date, tempi, deposito
  4. Interfaccia a schede:
  5. PA1: Dati generali (cliente, tecnici, stato, flag risolutivo)
  6. PA2: Annotazioni (note tecniche, contratto, certificazioni)
  7. PA3: Riepilogo tempi multi-giorno (se configurato intervento-piu-giorni)
  8. PA4: Griglia prestazioni
  9. PA5: Griglia materiali
  10. PA6: Griglia difetti (se configurato difetti-su-intervento)
  11. Validazione: controllo tecnici attivi, lotti, causali definitive, contratto, scaling prestazioni
  12. Conferma e aggiornamento:
  13. Aggiorna stato chiamata (ASNCHTES): R=risolutivo, C=chiuso
  14. Aggiorna intervento (ASNINTES): flag completamento, date/tempi
  15. Registra storico stato (ASNCHSTO)
  16. Chiude non conformita' collegate (COGNA0)
  17. Scrive dettagli prestazioni (ASNINDET) e materiali (ASNMTRLK)
  18. Genera documenti di magazzino se configurato (crea-bolla-chiu-chiamata)
  19. 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:

  1. Legge tutti i record ASNCHORD collegati alla chiamata tramite acho-id-chiamata
  2. Per ogni record di tipo "O" (ordine), verifica che l'ordine (COGTESOR) non sia gia' chiuso (tor-chiu <> "C")
  3. Se l'ordine e' ancora aperto, chiama COGO45 tramite l'interfaccia util-cogo45, passando cogo45-called = "COGO45-CALLED", cogo45-ordine = tor-chia, cogo45-chiusura-auto = tm-cfg-chiusura-auto-ordini-2
  4. 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:

  1. 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" a mlt-stato not = "C" con il controllo aggiuntivo mlt-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.

  2. 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:

  1. Scan di ASNCHDET per achd-id = tm-id-chiam
  2. Per ogni dettaglio, lettura di ASNMATRI (amtr-id = achd-id-matricola)
  3. Se amtr-sn corrisponde al serial number indicato dall'operatore, il flag w-g2-ok-sn viene posto a "S" e il loop termina (statusfi = k-fine-file)
  4. Se al termine del loop il flag non e' valorizzato, viene impostato il messaggio m-asn140-598-1, il flag x-f3-ok-parziale = "N", e viene eseguito exit paragraph interrompendo la conferma

Nuova variabile: w-g2-ok-sn PIC X(01) (flag locale di esito controllo).