SWC011 - Scaricamento Movimenti Acquisto per SW-ING¶
Intestazione¶
| Campo | Valore |
|---|---|
| Programma | SWC011 |
| Titolo | Scaricamento Movimenti Acquisto su SW-ING |
| Posizione menu | Statistiche > Estrazione dati vs B.I.Swing > Magazzino/Vendite > Movimenti acquisto (duplicato anche al primo livello del sottomenu B.I.Swing) |
Scopo e logica generale¶
SWC011 estrae i movimenti di acquisto dal magazzino e li scrive nell'archivio BINACQUI utilizzato dal sistema di Business Intelligence SW-ING.
Il programma funziona in due modalita':
- Interattiva: l'operatore inserisce il periodo da estrarre tramite maschera; al termine viene mostrato il contatore di righe lette/scritte.
- Batch (chiamata da Aglancio): il periodo e' calcolato automaticamente in base alla configurazione (
nr-mesi-bi0011); l'output e' rediretto al log di processo Aglancio tramitegesdebug. Periodicamente (ogni 30 secondi) chiama SWLIVE per evitare la terminazione da parte di Aglancio (PCASE-3896).
Prima dell'elaborazione il programma cancella i record BINACQUI gia' presenti per il periodo (cancella-bin-sub-tm-cfg-bin-tipo, su PostgreSQL via SQL DELETE), poi rielabora da zero.
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), setup tasti funzione. - 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): data fine = data di sistema; data inizio = data di sistema meno
nr-mesi-bi0011 * 30giorni. - Elaborazione (
a-elabora-conferma): - Cancellazione del periodo in BINACQUI.
fase1: estrazione movimenti di magazzino in entrata da fornitori (COGTESBO/COGMOMAG).fase2: estrazione spese da fatture senza bolla / differenza fattura-bolle (COGFATTU), solo seno-merci-bi0011 = "S".x-acq-ordini: estrazione ordini fornitore aperti (tipodoc = "O"), solo seacquisti-con-ordini = "S".- Chiusura (
fine): chiusura connessione BI, aggiornamento stato processo ARPSTPRC (solo modalita' batch).
File e tabelle acceduti¶
| File logico | Record | Modalita' | Uso |
|---|---|---|---|
| BINACQUI | bacq-rec | I-O | Archivio movimenti acquisto BI (output principale) |
| COGTESBO | tes-rec | Input | Testate documenti magazzino (chiave2: data) |
| COGMOMAG | mag-recz | Input | Righe movimenti magazzino |
| COGFATTU | fat-rec | Input | Fatture fornitori (chiave8: data movimento, per fase2) |
| COGTABEL | euta-rec | Input | Tabelle sistema (tipo 15: causali) |
| COGRACCO | rac-rec | Input | Raccordo bolle-fatture (chiave2: bolla; chiave principale per fase2) |
| COGTESAP | tsa-rec | Input | Testate documenti aggiuntive (brand, grp-az-cod) |
| COGTESOR | tor-rec | Input | Testate ordini fornitori (chiave3: F + chiu, chiave4/5 vari) |
| COGCONOR | cor-rec | Input | Consegne ordini fornitori (chiave2: testa ordine) |
| COGRIGOR | ror-rec | Input | Righe ordini fornitori |
| COGTORAG | tar-rec | Input | Dati aggiuntivi ordine (brand, magazzino periferico) |
| COGMERFO | mfr-rec | Input | Listino fornitore merce (per cod-for) |
| FEURTAB | - | Input | Tabella file Eurosystem |
| ARPSTPRC | a-stpr-rec | I-O | Stato processi Aglancio (solo modalita' batch) |
Copybook inclusi¶
Screen Designer¶
| Copybook | Contenuto |
|---|---|
swc011-01.scr |
Maschera principale |
swc011.select |
SELECT dei file |
swc011.fd |
FD dei file |
swc011.wrk |
Working storage maschera |
swc011.decla |
Declaratives |
Strutture dati¶
| Copybook | Contenuto |
|---|---|
cogfiles.cpy |
FD feurtab |
binacqui.cpy |
Record BINACQUI |
arpstprc.cpy |
Record ARPSTPRC |
cogazien.cpy |
Dati azienda |
k-u10.cpy / k-personal.cpy |
Costanti |
wgrave.cpy / wnscr.cpy / wopenf.cpy / wstato.cpy |
Working storage comuni |
sql-decla-ws.cpy |
Working storage connessione SQL/BI |
binacqui-sql-ws.cpy |
Interfaccia SQL BINACQUI |
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 |
utils52.cpy |
Interfaccia COGS52 (calendario) |
utils62.cpy |
Interfaccia COGS62 (differenza tempo, per SWLIVE) |
utilu09.cpy / utilu10.cpy |
Interfaccia COGU09 / COGU10 |
Programmi chiamati (CALL)¶
| Programma | Scopo |
|---|---|
| RNEWCONF | Lettura configurazione (3 chiamate: confi, src-cfg, src-cfg-agl) |
| COGS62 | Calcolo differenza in secondi tra due timestamp (per SWLIVE) |
| COGU09 | Ricerca consegna/ordine collegato a riga di movimento |
| COGU10 | Formattazione/arrotondamento importi |
| SWGETS | Recupero configurazione SW-ING (stringa connessione) |
| SWLIVE | Keepalive processo Aglancio (ogni 30 secondi in modalita' batch) |
| DTPRG / PRGDT | Conversione data <-> progressivo (calcolo periodo automatico) |
Configurazione (RNEWCONF)¶
Lette nella chiamata x99-confi (pacchetto "C"):
| # | Gruppo | Chiave | Campo interno | Descrizione |
|---|---|---|---|---|
| 01 | BINT | nr-mesi-bi0011 | tm-cfg-nr-mesi |
Numero di mesi precedenti per calcolo automatico periodo |
| 02 | BINT | no-merci-bi0011 | tm-cfg-no-merci |
"S" = abilita estrazione spese da fatture senza bolla (fase2) |
| 03 | BINT | cod-merce-bi0011 | tm-cfg-merce-nm |
Codice merce da usare per le righe da fattura senza bolla |
| 04 | BINT | acquisti-con-ordini | tm-cfg-acq-con-ordini |
"S" = abilita estrazione ordini fornitore aperti (tipodoc "O") |
La configurazione per la connessione BI e' letta da x99-src-cfg (gruppo "abilita": bin-tipo, bin-db-path, bin-db-conn-string 1-3, bin-db-log-level).
La configurazione Aglancio e' letta da x99-src-cfg-agl (gruppo "areaapp": cod-azienda, db-log-level, AGLANCIO-ATTIVO).
Logica di business¶
Fase 1: estrazione movimenti di magazzino fornitori¶
Scansione di COGTESBO per data nel range tm-daint-in - tm-daint-fi.
Per ogni testata documento:
- Filtro causale: COGTABEL tipo 15 con
euta-cb-con-fat = 'SI'. - Filtro tipo CF: solo documenti verso fornitori (
tes-tipocf = "F"). - Lettura COGTESAP: per brand, gruppo azienda, magazzino periferico.
- Loop righe COGMOMAG: per ogni riga del documento:
- Valorizza bacq-rec con: azienda, documento, data, fornitore (
tes-nonno), causale, accertamento (bacq-accerta = "S"setes-fl-acc = "A"), tipo documento, magazzino, numero bolla fornitore (tes-nbolfor), merce, prezzo. - Quantita' e valore negativi se uscita (
mag-entrusc <> "E"). - Codice articolo fornitore da COGMERFO.
- Dati aggiuntivi da COGTESAP: brand, magazzino periferico.
- Ricerca fattura: tramite COGRACCO (chiave2), legge COGFATTU per estrarre
bacq-rif-fat(ann/tip/num) ebacq-data-fat(usafat-dafatforse valorizzata, altrimentifat-damov). - Ricerca ordine/consegna: chiama COGU09 con
cerca-consegna, recupera testata ordine COGTESOR (perbacq-rif-ordebacq-data-ord) e consegna COGCONOR (perbacq-data-cons). - Scrittura BINACQUI (con fallback
rwrse gia' presente).
Fase 2: estrazione spese da fatture senza bolla¶
Attiva solo se tm-cfg-no-merci = "S".
Scansione di COGFATTU per data movimento. Per ogni fattura fornitore (fat-tip-ana = k-ana-tipo-for):
- Verifica eventuali bolle collegate via COGRACCO. Per ogni bolla collegata, somma l'imponibile delle righe COGMOMAG (
w-imponibile-bolla), tenendo conto del segno (E/U). Memorizza la data della bolla piu' recente. - Calcola
w-tot-impo: - Se
fat-alitab (1) <> spaces: sommafat-impo (i)peri = 1..5. - Altrimenti:
fat-importo (40) - fat-importo (39)(compensazione per fatture caricate da COGE87 senza tabella IVA). - Determina segno qta/valore in base a
fat-segno (40)(A = positivo, altri = negativo). - Sottrae imponibile bolle:
bacq-valore = bacq-valore - w-imponibile-bolla. Cosi' una fattura legata a bolle estrae solo la differenza (es. spese non bollate). - Compila bacq-rec con merce =
tm-cfg-merce-nm, causale 00, accertamento "S", riferimento fattura, brand dafat-brand.
Estrazione ordini fornitore aperti (x-acq-ordini)¶
Attiva solo se tm-cfg-acq-con-ordini = "S".
- Pulizia: SQL
DELETE FROM binacqui WHERE bacq_azi = ? AND bacq_tipodoc = 'O'. - Scan COGTESOR (chiave3) per
tor-chiu = " "etor-tipo = "F". - Per ogni testata: scan COGCONOR delle consegne; per ogni consegna con
cor-merce <> low-valuee quantita' non completamente evasa (cor-qta > cor-qtacons), chiamax-estrai-consegna. x-estrai-consegna: crea record BINACQUI contipodoc = "O", fornitore =tor-destina, data =tor-datdecorr, quantita' residua =cor-qta - cor-qtacons, prezzo da COGRIGOR (ror-prez), riferimento ordine completo. Dati aggiuntivi da COGTORAG (brand, mag.periferico).