ASN118 - Aggancio interventi-commesse¶
Sorgente: cbl/asn118.cbl (733 righe) | Tipo: Programma batch interattivo (parametri su maschera + elaborazione a scorrimento), log di elaborazione GESDEBUG
Menu: Assist 2.0 > Operativo > Utility > Aggancio interventi-commesse
Scopo¶
Assegna in modo massivo la commessa e la sottocommessa di default (definite sul tipo attivita' della chiamata) alle chiamate di assistenza, agli interventi collegati e alle righe dei documenti di magazzino associati, per un periodo di date indicato. La commessa di default deriva dalla tabella tipo-attivita' ASNTPAT2 (atp2-commessa-def / atp2-sottocom-def).
L'utente sceglie un intervallo di date (da/a) e se eseguire realmente l'aggiornamento (tm-aggio = "S") oppure una sola simulazione di controllo (tm-aggio = "N"). In entrambi i casi l'esito di ciascuna riga esaminata e' scritto in un log GESDEBUG, consultato automaticamente alla fine.
Nota menu: la voce di menu recita "Aggancio interventi-commesse". La funzione reale e' piu' ampia: l'aggancio della commessa avviene su tre livelli — testata chiamata (
ASNCHTES), interventi (ASNINTES) e righe dei documenti di magazzino collegati (COGMOMAG, tramite creazione del legame movimento-commessa via COGU18).
Prerequisito¶
All'avvio (a4) verifica che la gestione commesse sia abilitata (az-commesse = "M" dai dati azienda, cogazien.cpy); in caso contrario mostra "Gestione commesse non abilitata" e termina.
File acceduti¶
| File | Copybook | Uso |
|---|---|---|
| feurtab | cogfiles.cpy |
Tabella di sistema |
| ASNCHTES | acht-rec |
Testata chiamata: scansione per data (st-asnchtes-notmin-chia6, chiave k06), riscrittura commessa/sottocommessa (rwr-asnchtes) |
| ASNTPAT2 | atp2-rec |
Tipo attivita' (estensione 2): fornisce atp2-commessa-def e atp2-sottocom-def |
| ASNINTES | acit-rec |
Testata intervento: scansione per id-chiamata (st-asnintes-notmin-chia2), riscrittura commessa (rwr-asnintes) |
| ASNINDMG | acim-rec |
Legame intervento-documenti di magazzino: scansione (st-asnindmg-notmin) |
| COGTESBO | tes-rec |
Testata bolla/documento: verifica esistenza documento collegato (rd-cogtesbo) |
| COGMOMAG | mag-recz |
Righe movimento magazzino del documento: scansione (st-cogmomag-notmin) per creare/verificare il legame con la commessa |
Copybook incluse¶
- File/environment:
feurtab.fd,asn118.select,asn118.fd,cogfiles.cpy - Working di programma:
asn118.wrk - Working standard:
wgrave.cpy,wnscr.cpy,wopenf.cpy,wstato.cpy,cogazien.cpy - Interfacce sub:
utils52.cpy(edita/gestione date),utilu18.cpy(legame movimento-commessa),utildlg.cpy,utilncnf.cpy - Log/debug:
utilgesdebug.cpy,gesdebug.cpy - Linkage:
wcont.cpy,wcont1.cpy - Screen:
asn118-01.scr - Chiavi secondarie:
asnchtes.k06,asnintes.k02 - Fine procedure:
grave.cpy,mmmask.cpy,opengen.cpy,stato.cpy,stato1.cpy,winmsg.cpy,asn118.prc
Programmi chiamati¶
| Programma | Operazione | Scopo |
|---|---|---|
| COGU18 | cerca-commessa |
Verifica se una riga DDT (COGMOMAG) e' gia' collegata a una commessa |
| COGU18 | crea-legame (tipo "RD") |
Crea il legame movimento magazzino → commessa/sottocommessa di default (solo in modalita' aggiornamento) |
| GESLPRC | CONSULTA-PROCEDURA |
Consultazione del log di elaborazione al termine |
| GESDATE / S52 | Edita |
Formattazione/gestione delle date (via utils52.cpy) |
Parametri di maschera¶
| Campo | Descrizione | Validazione |
|---|---|---|
tm-da-data |
Data inizio periodo | Obbligatoria; non superiore alla data fine |
tm-a-data |
Data fine periodo | Obbligatoria; non inferiore alla data inizio |
tm-aggio |
"S" esegue l'aggiornamento, "N"/" " solo controllo |
— |
Flusso di elaborazione (a10-acc)¶
Dopo la conferma (F3) e la richiesta di conferma finale (acc-conf), apre il log GESDEBUG e scorre le chiamate.
Livello 1 - chiamate (a1-10-loop)¶
Scansione di ASNCHTES per data (chiave k06) da tm-da-data a tm-a-data. Per ogni chiamata:
- Salta se ha gia' una commessa significativa (acht-commessa not = spaces)... con la seguente logica: la chiamata viene comunque considerata solo se il tipo attivita' e' valorizzato (acht-tip-att) e ha una commessa di default (atp2-commessa-def)
- Legge ASNTPAT2 per il tipo attivita'; se non c'e' commessa di default → salta
- Se la chiamata e' senza commessa e in modalita' aggiornamento, imposta commessa/sottocommessa di default e riscrive ASNCHTES
- Se la chiamata ha gia' una commessa diversa dal default → scrive una segnalazione nel log e salta
Livello 2 - interventi (b1-10-loop)¶
Scansione di ASNINTES per id-chiamata. Per ogni intervento senza commessa significativa: registra la modifica nel log e, in aggiornamento, imposta commessa/sottocommessa di default e riscrive ASNINTES.
Livello 3 - documenti di magazzino (c1-10-loop / c1-20-loop)¶
Per ogni intervento scorre i legami ASNINDMG; per ogni documento verifica l'esistenza in COGTESBO e scorre le righe COGMOMAG. Per ciascuna riga:
- COGU18 cerca-commessa verifica se e' gia' collegata a una commessa
- Se non collegata: registra nel log e, in aggiornamento, COGU18 crea-legame (tipo "RD") crea il legame con la commessa/sottocommessa di default, usando la data del movimento (mag-da3)
- Eventuali errori di crea-legame (u18-ret-cod) sono scritti nel log
Chiusura (a1-999)¶
Scrive nel log l'esito finale (con/senza aggiornamento), chiude GESDEBUG e apre la consultazione del log via GESLPRC.
Gestione errori¶
- Validazioni di data bloccanti su F3 (
x-imposta-conferma): data inizio/fine obbligatorie e coerenti (inizio <= fine) - Le anomalie funzionali (chiamata con commessa diversa dal default, errori di creazione legame) non bloccano l'elaborazione ma vengono registrate nel log GESDEBUG
- Uso di scorrimento indicizzato con
GO TOdi etichetta per il controllo di rottura chiave (pattern legacy del programma, consource-computer. acu-cobol)
Note implementative¶
- La modalita' controllo (
tm-aggio = "N") esegue tutte le letture e produce lo stesso log della modalita' aggiornamento, ma non riscrive alcun record: utile come simulazione preventiva - La commessa/sottocommessa applicata e' sempre quella di default del tipo attivita' (
ASNTPAT2), non un valore inserito dall'utente - L'aggancio delle righe di magazzino avviene creando un legame movimento-commessa tramite COGU18 (tipo
"RD"), non modificando direttamente il record diCOGMOMAG - La revisione datata
120522ha reso esplicita la logica: aggiorna solo le chiamate senza commessa; se la commessa esistente differisce dal default, si limita a segnalarlo nel log