Vai al contenuto

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 TO di etichetta per il controllo di rottura chiave (pattern legacy del programma, con source-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 di COGMOMAG
  • La revisione datata 120522 ha reso esplicita la logica: aggiorna solo le chiamate senza commessa; se la commessa esistente differisce dal default, si limita a segnalarlo nel log