SWC017 - Scaricamento Tabelle e Movimenti IVA x SW-ING¶
Intestazione¶
| Campo | Valore |
|---|---|
| Programma | SWC017 |
| Titolo | Scaricamento Tabelle e Movimenti IVA su SW-ING |
| Posizione menu | Statistiche > Estrazione dati vs B.I.Swing > Contabilita' > Movimenti IVA e tabelle |
| Posizione menu (alternativa) | Statistiche > Estrazione dati vs B.I.Swing > Movimenti IVA e tabelle |
Scopo e logica generale¶
SWC017 estrae verso le tabelle BI di SW-ING:
- Tabelle di base contabili IVA (tipi documento, aliquote, articoli esenzione, registri, destinazioni, tipi fatturazione).
- Movimenti IVA del periodo selezionato, con eventuale ripartizione su piu' destinazioni IVA quando il documento contabile collegato ha conti con destinazioni IVA particolari.
Il programma funziona in due modalita':
- Interattiva: l'operatore inserisce il periodo da estrarre; al termine vengono mostrati i contatori di righe lette/scritte.
- Batch (chiamata da Aglancio): il periodo e' calcolato automaticamente (
tm-daint-fi = datasis,tm-daint-in = 01/01/anno-precedente); l'output e' rediretto al log di processo Aglancio tramitegesdebug.
Prima dell'elaborazione, in modalita' PostgreSQL, viene eseguita la truncate delle tabelle BI di destinazione (cancella-bin-sub-tm-cfg-bin-tipo).
Flusso principale¶
- Inizializzazione (
apri): controllo abilitazione, lettura azienda, apertura file, lettura configurazione RNEWCONF (x99-confi,x99-src-cfg,x99-src-cfg-agl), inizializzazione connessione BI (init-bin-sub-tm-cfg-bin-tipo), apertura file di prima nota corrente e precedente (apri-cont). - Accept parametri (modalita' interattiva):
a-tm-daint-in(data inizio),a-tm-daint-fi(data fine), con supporto calendario COGS52. - Calcolo automatico del periodo (modalita' Aglancio/batch):
tm-daint-fi = datasis,tm-daint-in= 1 gennaio dell'anno precedente. - Elaborazione (
a-elabora-conferma): cancella-bin-sub-tm-cfg-bin-tipo: truncate delle 7 tabelle BI di destinazione.fase1(elabora): scarico delle 6 tabelle di base + movimenti IVA (carica-tabella).- Chiusura (
z-chiudi): chiusura file e connessione BI, aggiornamento stato processo ARPSTPRC (solo modalita' Aglancio).
File e tabelle acceduti¶
| File logico | Record | Modalita' | Uso |
|---|---|---|---|
| BINTIDOC | btidoc-rec | I-O | Archivio BI tipi documento IVA (output) |
| BINALIVA | baliva-rec | I-O | Archivio BI aliquote IVA (output) |
| BINARTES | bartes-rec | I-O | Archivio BI articoli esenzione IVA (output) |
| BINREIVA | breiva-rec | I-O | Archivio BI registri IVA (output) |
| BINIVACF | biva-rec | I-O | Archivio BI movimenti IVA per cliente/fornitore (output principale) |
| BINDEIVA | bdeiva-rec | I-O | Archivio BI destinazioni IVA (output) |
| BINTIFAT | btifat-rec | I-O | Archivio BI tipi fatturazione (output) |
| COGTABEL | euta-rec | Input | Tabelle sistema (tipo 67 aliquote, 68 tipi doc IVA, 69 art. esenzione, "AD" registri, "FQ" destinazioni IVA, "FL" tipi fatturazione, "AT" tipi reverse charge) |
| COGARIVA | iva-rec | Input | Movimenti IVA |
| COGGEANA | ana-rec | Input | Anagrafica generale (clienti, fornitori) |
| COGAPPOG | app-rec | Input | Tabella appoggio (tipologia statistica) |
| COGLTINT | lti-rec | Input | Letteri di intento (per gestione esenzioni IVA) |
| COGPNCON | pco-rec | Input | Piano dei conti |
| COGPNONC | pno-rec | Input | Prima nota non contabilizzata |
| BOGARIVA | bva-rec | Input | Copia COGARIVA con prefissi diversi (per scan secondaria) |
| COGCOATT | con-rec | Input | Prima nota esercizio attuale |
| COGCOPRE | con-rec | Input | Prima nota esercizio precedente |
| FEURTAB | - | Input | Tabella file Eurosystem |
| ARPSTPRC | a-stpr-rec | I-O | Stato processi Aglancio (solo modalita' batch) |
Copybook inclusi¶
Screen Designer¶
| Copybook | Contenuto |
|---|---|
swc017-01.scr |
Maschera principale |
swc017.select |
SELECT dei file |
swc017.fd |
FD dei file |
swc017.wrk |
Working storage maschera |
swc017.decla |
Declaratives |
Strutture dati¶
| Copybook | Contenuto |
|---|---|
cogfiles.cpy |
FD feurtab |
bintidoc.cpy / binaliva.cpy / binartes.cpy / binreiva.cpy / binivacf.cpy / bindeiva.cpy / bintifat.cpy |
Record delle 7 tabelle BI di destinazione |
arpstprc.cpy |
Record ARPSTPRC |
cogcoatt.cpy / cogcopre.cpy |
FD prima nota corrente/precedente |
cogazien.cpy |
Dati azienda |
k-u10.cpy / k-personal.cpy / k-tipi-cogtabel.cpy |
Costanti |
wgrave.cpy / wnscr.cpy / wopenf.cpy / wstato.cpy |
Working storage comuni |
sql-decla-ws.cpy |
Working storage connessione SQL/BI |
*-sql-ws.cpy |
Interfaccia SQL per le 7 tabelle BI |
arpstprc-sql-ws.cpy |
Interfaccia SQL ARPSTPRC |
Utility¶
| Copybook | Contenuto |
|---|---|
utilncnf.cpy |
Struttura parametri RNEWCONF |
utilgesdebug.cpy |
Gestione debug/log |
utilswgets.cpy |
Interfaccia SWGETS |
utilagprg.cpy |
Interfaccia Aglancio processo |
utilu10.cpy |
Interfaccia COGU10W |
utils52.cpy |
Interfaccia COGS52 (calendario) |
utils62.cpy |
Interfaccia COGS62 (delta tempo per SWLIVE) |
utilcgiarea.cpy |
Linkage area CGI |
Programmi chiamati (CALL)¶
| Programma | Scopo |
|---|---|
| RNEWCONF | Lettura configurazione (3 chiamate: x99-confi, x99-src-cfg, x99-src-cfg-agl) |
| SWGETS | Recupero stringa di connessione SW-ING |
| COGU10W | Conversione divisa importi |
| COGS62 | Calcolo differenza in secondi tra due timestamp (per SWLIVE) |
| SWLIVE | Keepalive processo Aglancio (ogni 30 secondi in modalita' batch) |
Configurazione (RNEWCONF)¶
Configurazione applicativa (x99-confi, pacchetto "C")¶
| # | Gruppo | Chiave | Campo interno | Descrizione |
|---|---|---|---|---|
| 01 | PRNTCG90 | euta-tipogior | tm-cfg-tipogior |
Tipo giornale stampa (default "C1"); usato per leggere tipo "AD" con intestazione e ordinamento |
| 02 | CONTABIL | tipo-doc-iva-docmag-vendita | tm-cfg-docmag-vendita |
Tipo documento IVA da escludere (vendita magazzino) |
| 03 | CONTABIL | tipo-doc-iva-docmag-resi-cli | tm-cfg-docmag-resi |
Tipo documento IVA da escludere (resi cliente) |
Configurazione connessione BI (x99-src-cfg, pacchetto "C")¶
| # | Gruppo | Chiave | Campo interno | Descrizione |
|---|---|---|---|---|
| 01 | abilita | bin-tipo | tm-cfg-bin-tipo |
Tipo connessione BI: "P" PostgreSQL, "C" C-Tree, "D" DBmaker, "N" disabilitato |
| 02 | abilita | bin-db-path | tm-cfg-bin-path |
Percorso file BI (per C-Tree) |
| 03-05 | abilita | bin-db-conn-string (1-3) | tm-cfg-bin-conn-string |
Stringa di connessione PostgreSQL |
| 06 | abilita | bin-db-log-level | tm-cfg-bin-log-level |
Livello di log SQL |
La configurazione Aglancio e' letta da x99-src-cfg-agl (gruppo "areaapp": cod-azienda, db-log-level, AGLANCIO-ATTIVO). La stringa di connessione AreaGATE e' recuperata da SWGETS.
Logica di business¶
Fase 1: estrazione tabelle di base e movimenti IVA¶
Tutte le tabelle di base (tipi documento, aliquote, articoli esenzione, registri, destinazioni IVA, tipi fatturazione) vengono lette da COGTABEL con il tipo opportuno e scritte 1:1 nella corrispondente tabella BI. Per ogni tabella viene effettuata una scansione st-cogtabel-notmin + loop rdnxt-cogtabel.
Per i movimenti IVA (carica-tabella):
- Scansione di COGARIVA, filtro per data movimento nel range
tm-daint-in/tm-daint-fie per tipo documento (esclusi i tipidocmag-venditaedocmag-resiconfigurati). - I record con
iva-val = "C"(cancellati) vengono saltati. - Per ogni documento, ricerca conti collegati in prima nota con destinazioni IVA particolari (
x1-cerca-docum) tramite COGCOATT/COGCOPRE; se trovate piu' destinazioni distinte si attiva la ripartizione (x2-aggio-ripartiz). - Conversione importi in divisa conto con COGU10W.
- Determinazione del flag intracomunitario (
biva-intra): controlla stato del cliente/fornitore (COGTABEL tipo 54), tipi documento "AT" e tipo reverse charge (k-euta-tipo-gc-rc). - Controllo lettere di intento (COGLTINT) per impostare
biva-let-int. - Scrittura in BINIVACF.
Ripartizione IVA su piu' destinazioni (x2-aggio-ripartiz)¶
Quando in x1-cerca-docum vengono trovate piu' destinazioni IVA distinte nei conti del documento contabile, il record IVA viene ripartito in piu' record BINIVACF, uno per ogni destinazione, calcolando per ognuno la quota di imponibile/IVA proporzionale all'importo del conto destinazione.
Keepalive Aglancio¶
In modalita' batch, ogni 30 secondi viene chiamato SWLIVE per evitare che il motore di scheduling termini il processo per inattivita'. Il delta tempo e' misurato con COGS62.