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"