Vai al contenuto

COGT42N - Commesse non fatturate

Nome programma COGT42N Linkage section UTILAGPRG - Linkage comune Id processo: 30001 Nome processo:AVVISI-N Logica generale Questo programma genera degli avvisi per ciascuna commessa fatturata parzialmente, e per la quale non sono state emesse fatture entro "n" giorni Mettere nel programma la scrittura dei log di procedura sufficienti a capire lo svolgimento dell'elaborazione. Configurazioni possibili

Gruppo Parametro Note
abilita attiva-areaapp
areaapp cod-azienda
areaapp db-conn-string
areaapp agg-postgres-online

Elaborazione Tipi di segnalazione: Vedi Tipi di segnalazione A - Controllo di esecuzione Vedi Controllo di esecuzione A.1 - Aggiornamento KEEP-ALIVE Per il momento non lo eseguiamo: il keep-alive viene tenuto aggiornato dal thread autonomo di aglancio; se il programma venisse chiamato in "tempo reale" dal programma di gestione, non necessita comunque del keep-alive. B - Elaborazione B.0 - Ricerca testata segnalazione Ricerca della testata segnalazione su COGSGTIP:

Dato Contenuto
SGC-CAT "A"
SGC-COD "N"

Se il record esiste, e SGT-FL-ATTIVA = 'S' proseguire con l'elaborazione; altrimenti uscire segnalando nel log che l'elaborazione non è attiva. Questo record contiene anche altri dati necessari in seguito. B.0.1 - Ricerca destinatari Creare una tabella in working contenente di destinatari (elenco di operatori) Scorrere i record di COGSGDST per il tipo avviso:

Dato Contenuto
SGD-CAT "A"
SGD-COD "N"
SGD-LIV 1

Ogni record trovato corrisponde ad un destinatario dell'avviso; quindi, se SGD-DST-TIP vale:

SGD-DST-TIP Cosa fare
"O" SGD-DST-OPE contiene un operatore da aggiungere alla tabella (se non esiste già)
"G" SGD-DST-GRP contiene un gruppo di utenti; quindi, cercare gli utenti contenuti nel gruppo, con una ricerca su PRNTGROD:

Ciascun record trovato corrisponde ad un operatore; aggiungere quindi PGOD-OPE alla tabella, se non esiste già

B.1 - Ricerca commesse Ricerca delle commesse aperte: scansione di COGTESCM via TSC-CHIA7. La commessa è valida se è a preventivo: cercare il tipo commessa su COGTABEL:

Dato Contenuto
EUTA-TIPO K-EUTA-TIPO-TIPO-COMMESSA
EUTA-COD TSC-TIPO

Il record trovato deve avere EUTA-COM-FL-ECON <> "S" -> Commesse a preventivo Per "IMPERNOVO": considerare solo le commesse con TSC-RAGGR = "F" B.2 Analisi dati commessa Se la commessa è valida, effettuare una chiamata a COGUA0 :

Dato Contenuto
COGUA0-COMMESSA TSC-COD

All'uscita valutare il totalizzatore "DIFF-PREV-FATT" (restituito nella tabella COGUA0-TAB-TOTALIZZATORI) Se è > 0 proseguire B.3 Ricerca data ultima fattura Cercare tutte le fatture collegate alla commessa, con ricerca su COGRIGCM : RGC-TSC = TSC-COD Considerare quindi solo i record con RGC-TIP = 'FT'; RGC-CHIAVE conterrà la chiave fattura. Con questa cercare la testata fattura su COGFATTU. Determinare la data fattura più recente per la commessa. No, siccome il tipo "FT" non e' gestito, la data e la chiave dell' ultima fattura viene restituita da COGUA0:

  • cogua0-ult-fat-data
  • cogua0-ult-fat-key Calcolare la differenza tra la data odierna e la data ultima fattura, in giorni: se è > numero di giorni configurati in SGT-SOGLIA-1, allora proseguire con il punto B.4 B.4 - Creazione avviso (prendere spunto da COGT42M) B.4.1 Ricerca segnalazione per la commessa Fare una ricerca su COGSEGNA con chiave SGN-CHIA2:
Dato Contenuto
SGN-CAT "A"
SGN-COD "N"
SGN-KEY-LIV 1
SGN-KEY TSC-COD

Scorrere tutti i record trovati, e verificare se esiste una segnalazione ancora aperta per la commessa in esame (SGN-FL-EVA <> "S"); i casi potrebbero essere: * Non esiste -> Creazione di una nuova segnalazione * Esiste: "Refresh" segnalazione B.4.2 Creazione nuova segnalazione B.4.2.1 Testata segnalazione Cercare il primo numero libero di segnalazione, con una ricerca all'indietro su COGSEGNA. Quindi creare il record di testata:

Dato Contenuto
SGN-NUM Primo numero libero
SGN-CAT "A"
SGN-COD "N"
SGN-KEY-LIV 1
SGN-KEY TSC-COD
SGN-AUT-TIP "P"
SGN-AUT k-program-id
SGN-DATA-EMI Data sistema
SGN-ORA-EMI Ora sistema
SGN-OGG Commessa non fatturata completamente: TSC-COD
SGN-FL-RISP "N"
SGN-FL-AGG "S"
SGN-FL-EVA "N"

B.4.2.2 Note segnalazione Inserire un record su COGSGNNT

Dato Contenuto
SGL-NUM SGN-NUM
SGL-LEN Lunghezza della nota creata
SGL-NOTE L'ultima fattura sulla commessa è TT/AAAA/NNNNNNN del GG/MM/AAAA

B.4.2.3 Destinatari Per ciascun operatore presente nella tabella preparata all'inizio, aggiungere un record su COGSGNDT:

Dato Contenuto
SGO-NUM SGN-NUM
SGO-OPE Codice operatore
SGO-FL-EVA "N"
SGO-DATA-EVA 0
SGO-ORA-EVA 0
SGO-DATA-EMI SGN-DATA-EMI
SGO-ORA-EMI SGN-ORA-EMI
SGO-FL-ALLARME "N"

B.4.3 Refresh segnalazione esistente In questo caso una segnalazione potrebbe essere stata vista anche solo da 1 utente del gruppo, quindi non risulta ancora evasa. E' necessario quindi "riaprire la segnalazione" per tutti gli utenti interessati: Loop su COGSGNDT. impostando

Dato Contenuto
SGO-NUM SGN-NUM

Per ciascun record letto, se SGO-FL-EVA = "S", aggiornare impostando * SGO-FL-EVA = "N" * SGO-FL-VISTA = "N"