Vai al contenuto

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 tramite gesdebug. 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

  1. 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.
  2. Accept parametri (modalita' interattiva): a-tm-daint-in (data inizio), a-tm-daint-fi (data fine), con supporto calendario COGS52.
  3. Calcolo automatico del periodo (modalita' Aglancio/batch): data fine = data di sistema; data inizio = data di sistema meno nr-mesi-bi0011 * 30 giorni.
  4. Elaborazione (a-elabora-conferma):
  5. Cancellazione del periodo in BINACQUI.
  6. fase1: estrazione movimenti di magazzino in entrata da fornitori (COGTESBO/COGMOMAG).
  7. fase2: estrazione spese da fatture senza bolla / differenza fattura-bolle (COGFATTU), solo se no-merci-bi0011 = "S".
  8. x-acq-ordini: estrazione ordini fornitore aperti (tipodoc = "O"), solo se acquisti-con-ordini = "S".
  9. 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:

  1. Filtro causale: COGTABEL tipo 15 con euta-cb-con-fat = 'SI'.
  2. Filtro tipo CF: solo documenti verso fornitori (tes-tipocf = "F").
  3. Lettura COGTESAP: per brand, gruppo azienda, magazzino periferico.
  4. Loop righe COGMOMAG: per ogni riga del documento:
  5. Valorizza bacq-rec con: azienda, documento, data, fornitore (tes-nonno), causale, accertamento (bacq-accerta = "S" se tes-fl-acc = "A"), tipo documento, magazzino, numero bolla fornitore (tes-nbolfor), merce, prezzo.
  6. Quantita' e valore negativi se uscita (mag-entrusc <> "E").
  7. Codice articolo fornitore da COGMERFO.
  8. Dati aggiuntivi da COGTESAP: brand, magazzino periferico.
  9. Ricerca fattura: tramite COGRACCO (chiave2), legge COGFATTU per estrarre bacq-rif-fat (ann/tip/num) e bacq-data-fat (usa fat-dafatfor se valorizzata, altrimenti fat-damov).
  10. Ricerca ordine/consegna: chiama COGU09 con cerca-consegna, recupera testata ordine COGTESOR (per bacq-rif-ord e bacq-data-ord) e consegna COGCONOR (per bacq-data-cons).
  11. Scrittura BINACQUI (con fallback rwr se 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: somma fat-impo (i) per i = 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 da fat-brand.

Estrazione ordini fornitore aperti (x-acq-ordini)

Attiva solo se tm-cfg-acq-con-ordini = "S".

  1. Pulizia: SQL DELETE FROM binacqui WHERE bacq_azi = ? AND bacq_tipodoc = 'O'.
  2. Scan COGTESOR (chiave3) per tor-chiu = " " e tor-tipo = "F".
  3. Per ogni testata: scan COGCONOR delle consegne; per ogni consegna con cor-merce <> low-value e quantita' non completamente evasa (cor-qta > cor-qtacons), chiama x-estrai-consegna.
  4. x-estrai-consegna: crea record BINACQUI con tipodoc = "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).