Vai al contenuto

XXXS06 - Cancellazione Chiamata/Intervento (Versione Senza Controlli)

Identificazione

Campo Valore
Program-ID XXXS06
File sorgente cbl/xxxs06.cbl
Tipo Subroutine COBOL (CALL/CANCEL)
Origine Variante di ASNS06
Scopo Cancellazione di chiamate e interventi di assistenza, con alcuni controlli disabilitati per permettere la cancellazione di record errati

Avvertenza

ATTENZIONE - PROGRAMMA "TAROCCATO"

Questo programma e' una variante modificata di ASNS06 con il commento esplicito nel sorgente: "VERSIONE TAROCCATA SENZA ALCUNI CONTROLLI PER CANCELLARE CHIAMATE/INTERVENTI ERRATI".

Va utilizzato solo in situazioni di emergenza per rimuovere chiamate o interventi inseriti erroneamente che non sarebbero altrimenti cancellabili con il programma standard ASNS06.


Interfaccia (Linkage Section)

Il programma riceve due parametri tramite PROCEDURE DIVISION USING:

Parametro Copybook Contenuto
stringhe wcont.cpy Contesto generale (operatore ecc.)
util-asns06 utilasns06.cpy Parametri specifici della chiamata

Campi principali di util-asns06

Campo Tipo Descrizione
asns06-id-chiamata 9(12) ID della chiamata da cancellare
asns06-id-intervento 9(12) ID dell'intervento da cancellare (solo tipo "I")
asns06-tipo-canc X(01) "C" = cancella chiamata (default), "I" = cancella intervento
asns06-forza-acpk X(01) "S" = forza cancellazione anche se la chiamata ha una successiva programmata
asns06-disabilita-postgres X(01) "S" = non eseguire ASNS06AP (aggiornamento Postgres)
asns06-esito X(01) Output: "S" = successo, "N" = errore
asns06-msg X(...) Output: messaggio di errore in caso di esito "N"

Flusso principale

a000
 ├─ ctr-abil           (controllo abilitazioni)
 ├─ rd-azi             (lettura azienda)
 ├─ open-files         (apertura files)
 ├─ x99-load-config    (caricamento configurazioni da RNEWCONF)
 ├─ se tipo-canc = "C" → a-cancella-chiamata
 └─ se tipo-canc = "I" → b-cancella-intervento

Sezione A - Cancellazione Chiamata (a-cancella-chiamata)

A.1 - Controlli attivi (NON disabilitati)

A.1.1 - Chiamata successiva (acpk) Se la chiamata ha un record ASNCHPLK con acpk-id-sucessiva > 0 e il parametro asns06-forza-acpk non e' "S", la cancellazione viene bloccata. Questo controllo e' attivo anche in XXXS06.

A.1.2 - Esistenza chiamata Se la chiamata non esiste in ASNCHTES, la cancellazione viene bloccata con esito "N". Questo controllo e' attivo anche in XXXS06.

A.1 - Controlli DISABILITATI (commentati)

A.1.2b - Blocco chiamata chiusa/risolta/fittizia (DISABILITATO) In ASNS06, se la configurazione cancella-chiamata-chiusa vale "N", non e' possibile cancellare una chiamata con acht-situazione in: - "R" (risolta), "C" (chiusa), "Z" (fittizia)

In XXXS06 questo blocco e' completamente commentato (righe 215-237).

A.1.3 - Controllo presenza documenti di magazzino (DISABILITATO) In ASNS06, la ricerca di interventi con documenti collegati (cerca-intervento-condoc) blocca la cancellazione se esistono DDT o altri documenti associati (salvo un solo documento di riparazione).

In XXXS06 la perform cerca-intervento-condoc e' commentata (righe 250-252); la variabile w-inter-con-doc rimane inizializzata a spazi, quindi il controllo successivo non scatta mai.

A.1 - Configurazioni di permuta non caricate (DISABILITATO) In ASNS06, la x99-load-config carica anche: - cau-rip-permuta-fat (riga 05) - cau-rip-permuta-nofat (riga 06)

In XXXS06 queste voci sono commentate e i relativi campi tm-cfg-cau-rip-permuta-fat e tm-cfg-cau-rip-permuta-nofat vengono forzati a zero (righe 1098-1099).


A.2 - Elaborazione cancellazione chiamata

Tutti i passi di elaborazione sono identici ad ASNS06.

A.2.1 - Aggiornamento Postgres (ASNS06AP) Se tm-cfg-aggiorna-postgres-online = "S" e w-asns06-disabilita-postgres <> "S", viene eseguita la CALL a ASNS06AP.

A.2.2 - Cancellazione a cascata delle tabelle della chiamata

Il programma cancella, nell'ordine:

Ordine Tabella (file) Descrizione
1 ASNINTES (acit) Interventi collegati (loop con a221-cancella per ognuno)
2 ASNINTE2 (acit2) Dati aggiuntivi intervento (tabella 2)
3 ASNCHTES (acht) Testata chiamata
4 ASNCHDET (achd) Matricole/seriali della chiamata
5 ASNCHPRP (achp) Prestazioni/materiali previsti
6 ASNCHSTO (achs) Storico modifiche della chiamata
7 ASNCHPRV (achv) Collegamenti a preventivi
8 ASNCHPLK (acpk) Record "chiamata successiva" (se questa e' la successiva di una programmata)
9 ASNCHORD (acho) Collegamenti a ordini
10 COGRIGCM (rgc) Raccordo chiamata-commessa (tipo "CH")
11 COGIMAGE (img) Immagini collegate (tipo doc "A2"), tramite CALL COGU06
12 COGNCDOC (ncr) Non conformita' collegate (solo lettura, poi CALL COGNA0)

Per ogni intervento cancellato (a221-cancella), vengono cancellate le sottoentita':

Tabella (file) Descrizione
ASNINTES (acit) Legame CRM attivita' (CALL ASNS78 se az-cli-pot="S")
ASNINDAG (aitd) Dati aggiuntivi intervento (esclusi tipo "S" e "U")
ASNINDE2 (acid2) Righe dettaglio intervento (tabella 2)
ASNINDED (acidd) Righe dettaglio intervento tipo "D"
ASNINTMP (acip) Tempi di lavoro su intervento
ASNINDIF (acii) Difetti/soluzioni su intervento
ASNINDET (acid) Dettaglio intervento (testata dettagli)
ASNAPPPR (asnapppr) Prestazioni APP Mobile
ASNAPPMT (asnappmt) Materiali APP Mobile
ASNINDMG (acim) Legami con documenti di magazzino

Dopo la cancellazione di tutti gli interventi, viene chiamato ASNS23 con operazione "CANCELLA" per aggiornare la produzione per tecnico.


Sezione B - Cancellazione Intervento (b-cancella-intervento)

B.1 - Controlli (attivi in XXXS06)

  • Intervento non trovato in ASNINTES → blocco
  • acit-fl-bol = "E" (documenti magazzino gia' creati) → blocco
  • Presenza di documenti in ASNINDMG con acim-tes-num <> 0 → blocco

Nota: questi controlli non sono stati disabilitati in XXXS06.

B.2 - Cancellazione a cascata intervento

Uguale ad ASNS06: 1. a221-cancella (stesse sottoentita' descritte sopra) 2. del-asnintes 3. del-asnintes-storico (scrive una riga in ASNCHSTO con operazione "IC") 4. del-asninte2 5. CALL ASNS23 (cancella produzione tecnico) 6. CALL COGNA0 con "RICALCOLA" per ogni non conformita' collegata


CALL esterne

Programma Parametri Quando
ASNS06AP stringhe, util-asns06 Aggiornamento Postgres (se configurato e non disabilitato)
ASNS23 stringhe, util-asns23 Cancellazione produzione per tecnico (per ogni intervento)
ASNS78 stringhe, util-asns78 Cancellazione legame CRM attivita' (se az-cli-pot="S")
COGU06 stringhe, util-u06 Eliminazione immagini collegate alla chiamata
COGNA0 stringhe, util-cogna0 Ricalcolo non conformita' collegate (oper. "RICALCOLA")
RNEWCONF stringhe, util-ncnf, ncnf-tab Lettura configurazioni al bootstrap

Tutti i CALL sono seguiti da CANCEL (stile subroutine dinamica).


COPYbook utilizzati

FILE-CONTROL / FD

Copybook Contenuto
feurtab.fd FD file tabelle di sistema
asns06.select SELECT dei file del modulo assistenza
cogfiles.cpy Record del file FEURTAB
asns06.fd FD dei file del modulo assistenza

WORKING-STORAGE

Copybook Contenuto
asns06.wrk Working-storage condivisa con ASNS06
k-personal.cpy Costanti personali (program-id ecc.)
costanti-tipi-documento.cpy Costanti tipi documento (k-doc-tip-*)
utilncnf.cpy Struttura per RNEWCONF
wstato.cpy Status file (w-verbo-ok, w-fine-file ecc.)
wgrave.cpy Gestione errori gravi
wopenf.cpy Open file utility
wnscr.cpy Gestione schermo
cogazien.cpy Dati azienda (az-cli-pot ecc.)
utilasns23.cpy Parametri per CALL ASNS23
utilasns78.cpy Parametri per CALL ASNS78
utilu06.cpy Parametri per CALL COGU06
utilcogna0.cpy Parametri per CALL COGNA0

LINKAGE

Copybook Contenuto
wcont.cpy Parametro stringhe (contesto)
wcont1.cpy Estensione contesto
utilasns06.cpy Parametri ingresso/uscita ASNS06

PROCEDURE DIVISION

Copybook Contenuto
asns06.decla DECLARATIVES (gestione errori I/O)
stato.cpy Paragrafi gestione stato
stato1.cpy Paragrafi gestione stato (ext.)
winmsg.cpy Messaggi di warning
grave.cpy Gestione errori gravi
opengen.cpy Apertura/chiusura file
mmsubw.cpy Utility subroutine
asns06.prc Paragrafi I/O condivisi con ASNS06
cogimage.k02 Accesso indicizzato COGIMAGE
asnchplk.k02 Accesso indicizzato ASNCHPLK
cogrigcm.k02 Accesso indicizzato COGRIGCM
asnintes.k02 Accesso indicizzato ASNINTES
cogmatri.k03 Accesso indicizzato COGMATRI
cogncdoc.k02 Accesso indicizzato COGNCDOC

Differenze rispetto ad ASNS06

Aspetto ASNS06 XXXS06
Blocco chiamata chiusa/risolta Attivo DISABILITATO (commentato)
Controllo documenti magazzino Attivo DISABILITATO (commentato)
Config. cau-rip-permuta-fat/nofat Caricata DISABILITATO (forzata a zero)
Resto della logica Identico Identico

Paragrafi chiave

Paragrafo Descrizione
a000 Main: inizializzazione, dispatch tipo cancellazione
a-cancella-chiamata Controlli (parziali) + cancellazione a cascata chiamata
a221-cancella Cancellazione sottoentita' di un intervento
a221-10-loop Loop sugli interventi della chiamata
a222-10-loop Loop sulle immagini della chiamata
aggio-35-loop Loop sulle non conformita' della chiamata
b-cancella-intervento Controlli + cancellazione singolo intervento
del-asnintes-storico Scrittura record storico "IC" su ASNCHSTO
scrivi-asnchsto Scrittura con gestione progressivo (anti-loop PBUG-2105)
x99-load-config Caricamento configurazioni tramite RNEWCONF
cerca-intervento-condoc (Non invocata in XXXS06) Ricerca interventi con doc.

Note tecniche

  • Il programma condivide quasi tutto il codice con ASNS06 tramite copybook (asns06.select, asns06.fd, asns06.wrk, asns06.prc); il sorgente XXXS06 contiene solo le sezioni modificate.
  • Il flag w-asns06-disabilita-postgres e' stato introdotto il 25/10/2019 per evitare doppi aggiornamenti quando XXXS06 viene richiamato da programmi DB Frontiera che interagiscono direttamente con Postgres.
  • Il fix PCASE-3951 (10/06/24) e' presente anche in XXXS06: i record ASNINDAG con aitd-tipo = "S" o "U" non vengono cancellati.
  • Il fix PBUG-2105 (12/09/24) e' presente: protezione loop infinito su scrivi-asnchsto quando il progressivo ASNCHSTO e' esaurito.