SWN013 - Esportazione fatture¶
Nome programma SWN013 Linkage section UTILAGPRG - Linkage comune Id processo: 16 Nome processo: FATTURE Tabelle principali gestite
| AREA | AREAGATE | Direzione |
|---|---|---|
| COGFATTU COGFATT2 |
ARPFATTU | ------> |
Logica generale Esportazione della tabella "Fatture". Verranno esportate sia le fatture attive che le passive Assieme alla fattura verrà eseguita l'archiviazione dell'immagine fattura, che dovrà essere sempre in remoto. Al momento è previsto solo l'esportazione da gestionale. Se la configurazione archiviazione-remota è inattiva, non verrà effettuata l'esportazione del documento. Se il documento XML da esportare non esiste, la fattura verrà marcata comunque come esportata: nel caso in cui l'XML venga prodotto successivamente, il programma interessato provvederà a marcare la fattura come "da esportare". Configurazioni possibili
| Gruppo | Parametro | Note |
|---|---|---|
| abilita | attiva-areaapp | |
| areaapp | cod-azienda | |
| areaapp | db-conn-string | |
| areaapp | agg-postgres-online | |
| arc-ott | path-temp-fatture | |
| arc-ott | archiviazione-remota |
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 - Apertura B.1 Apertura tabelle Tentare l'apertura della tabella da sincronizzare: ARPFATTU Se fallita inviare una Segnalazione critica e chiudere. B - Esportazione informazioni aggiornate * ID SINCRO: gestito * Esportazione differenziale: gestita e ottimizzata, attraverso il flag di esportazione FAT2-FL-ESPORTATA. * Cancellazione logica: gestita In questa fase si dovrà tenere conto di * Limite record (NB: si dovrà impostare comunque un limite massimo per non rendere l'esportazione troppo pesante) * Limite errori * "Esporta tutto" B.1 - Stato sincronizzazione Sulla tabella APSTATOSYN, leggere il record relativo alla tabella/oggetto da sincronizzare "ARPFATTU"; se il record non esiste, crearlo impostando
| Dato | Contenuto |
|---|---|
| A_SYN_AZIENDA | Codice azienda |
| A_SYN_TABELLA | "ARPFATTU" |
| A_SYN_DA_GES_DATA | 0 |
| A_SYN_DA_GES_ORA | 0 |
| A_SYN_DA_ID_SINCRO | 1 |
Qui otterremo due informazioni importanti: * Data/ora ultima esportazione da gestionale a postgres (A_SYN_DA_GES_DATA e A_SY_DA_GES_ORA) * Prossimo ID sincronizzazione da memorizzare sulla tabella (A_SYN_ID_SINCRO) B.2 - Ricerca record da esportare Limite di esportazione Dato che questo processo è inserito nel contesto di AGLANCIO, ed effettua anche l'archiviazione della fattura, per non rendere troppo pesante il processo, prevedo l'esportazione di un numero limitato di record alla volta: indicativamente, sarà 1 record ogni 2 minuti di intervallo in cui è programmato il processo. Quindi se ad esempio questo processo è programmato per essere eseguito ogni 10 minuti, ad ogni esportazione potrà esportare un massimo di 5 fatture. B.2.1 Ricerca record da esportare
| Tipo di elaborazione | Condizione | Cosa fare |
|---|---|---|
| Singolo record | AGPRG-KEY <> " " | Si legge direttamente il record da aggiornare su COGFATTU Verrà eseguita se agg-postgres-online è attiva Se viene sincronizzato un record cancellato, verrà effettuata la cancellazione logica |
| Esportazione totale | AGPRG-ESPORTA-TUTTO = "S" | Non prevista |
| Esportazione standard | Si scorrono tutti i record di COGFATT2, usando la chiave FAT2-CHIA2, considerando i record con:: 0 Si effettuerà solo l'esportazione dei documenti degli ultimi 5 anni |
Per ciascun record valido si cercano tutti i record collegati: * COGFATTU * COGFTETS (Ricerca attraverso FTETS-CHIA6) Esclusioni * Per Terrepadane, per il momento escludiamo tutte le fatture passive * Escludiamo, per il momento, le Prefatture (AZ-TIPO-PRF) B.2.2 Verifica ed esportazione record Come prima cosa è necessario definire se la fattura è in formato elettronico: se il record COGFTETS è presente, allora la fattura è in formato elettronico. Dopodichè i controlli di esportazione cambiano:
| Tipo di fattura | Condizione | Fatture attive | Fatture passive |
|---|---|---|---|
| Elettronica | Nella cartella path-temp-fatture deve essere presente un documento chiamato "fattura.xml" (es. "cl20210000123.xml") | Se FTETS-STATO-INVIO = "N" La fattura non è ancora stata inviata allo SDI: skippare dall'elaborazione |
E' sufficiente la presenza del record COGFTETS e del file XML nella cartella configurata |
| Se FTETS-STATO-INVIO <> "N" La fattura è stata inviata allo SDI, quindi si potrà proseguire con l'elaborazione |
|||
| Standard | Nella cartella path-temp-fatture deve essere presente un documento chiamato "fattura.pdf" (es. "CL20210000123.PDF") | Il documento è presente? Proseguire con l'elaborazione | L'archiviazione viene fatta nel modo tradizionale. Quindi dando per scontato che il documento sia già archiviato in questo caso ci limitiamo a creare ARPFATTU |
| Il documento non è presente? skippare dall'elaborazione |
Dopodichè, se la fattura è pronta per l'elaborazione si effettua la ricerca dell'informazione su ARPFATTU
| Dato | Contenuto |
|---|---|
| A-FAT-AZI | Codice azienda |
| A-FAT-FATTURA | FAT-CHIA1 |
Se non esiste, inserirlo. Se esiste, aggiornarlo l'aggiornamento del record deve avvenire solo se almeno un dato tra quelli da modificare è diverso. NB: se è stata richiesta l'esportazione completa (AGPRG-ESPORTA-TUTTO = "S") allora il record dovrà essere esportato a prescindere dal confronto Suggerimento Invece di popolare direttamente i dati del record di destinazione, portarli su delle copie in w/s. Al termine confrontare i dati sulla destinazione con la copia in w/s. Aggiornamento da COGFATTU/COGFATT2
| Dato | Contenuto | Confronto? |
|---|---|---|
| A-FAT-AZI | Codice azienda | |
| A-FAT-FATTURA | FAT-CHIA1 | |
| A-FAT-TIPO-CODICE | "A" | |
| A-FAT-ANAGRAFICA | FAT-ANA | Si |
| A-FAT-VAL | " " | Si |
| A-FAT-ID-SINCRO | Prossimo id sincro | |
| A-FAT-TIP | FAT-TIP | Si |
| A-FAT-ANN | FAT-ANN | Si |
| A-FAT-NUM | FAT-NUM | Si |
| A-FAT-DATA | FAT-DAMOV | Si |
| A-FAT-TOTALE | FAT-IMPORTO (40) | Si |
| A-FAT-IVA | FAT-IMPORTO (39) | Si |
| A-FAT-IMPONIBILE | FAT-IMPORTO (40) - FAT-IMPORTO (39) | Si |
| A-FAT-BRAND | FAT-BRAND | Si |
Aggiornamento flag di esportazione Aggiornare COGFATT2 impostando
| Dato | Contenuto |
|---|---|
| FAT2-FL-ESPORTATA (1:1) | "A" |
B.3 - Archiviazione fattura B.3.1 - Archiviazione fattura attiva Dopo aver esportato una fattura nuova o variata, si dovrà effettuare la creazione del documento di stampa e l'archiviazione remota. Quindi gli step sono: 1. Il documento è già archiviato? viene rimosso. Questo vale sia nel caso in cui il documento è già remoto che non. 2. Archiviazione documento 1. Fattura elettronica: il documento da archiviare è quello presente in path-temp-fatture con estensione XML 2. Fattura standard: il documento da archiviare è quello presente in path-temp-fatture B.3.2 - Archiviazione fattura passiva Dopo aver esportato una fattura nuova o variata, non si dovrà fare altro perchè il documento è già archiviato (dando per scontato che sia attiva l'archiviazione remota) B.9 - Aggiornamento id syncro Al termine dell'elaborazione, aggiornare il record APSTATOSYN:
| Dato | Contenuto |
|---|---|
| A_SYN_AZIENDA | Codice azienda |
| A_SYN_TABELLA | "ARPFATTU" |
| A_SYN_DA_GES_DATA | Data/ora dell'ultimo record aggiornato |
| A_SYN_DA_GES_ORA | |
| A_SYN_DA_ID_SINCRO | Ultimo id sincro + 1 |
C - Verifica record cancellati Su COGFATTU/COGFATT2 non esiste la cancellazione logica. Quindi si dovrebbe sviluppare un processo di cancellazione distinto, che potrebbe non essere performante. Dando per scontato che una fattura cancellata verrà comunque ricreata, per il momento lo ignoriamo.
Estratto da documentazione interna ClickUp