SWC023 - Scaricamento Saldi Magazzino Valorizzati per SW-ING¶
Intestazione¶
| Campo | Valore |
|---|---|
| Programma | SWC023 |
| Titolo | Scaricamento Saldi magazzino valorizzati |
| Posizione menu | Statistiche > Estrazione dati vs B.I.Swing > Magazzino/Vendite > Saldi magazzino valorizzati |
Scopo e logica generale¶
SWC023 calcola e scrive nell'archivio BINMAGVL del sistema di Business Intelligence SW-ING la fotografia dei saldi di magazzino valorizzati a fine mese, per ogni combinazione magazzino + merce. Vengono valorizzati prezzo ultimo acquisto e prezzo medio acquisto (via COGL61) e si arricchisce il record con ultima entrata/uscita (via COGU31).
Il programma funziona in due modalita':
- Interattiva: la maschera mostra una sola data (
tm-data-a) se invocato con parametro "D" (w-richiedo-date = "D"); altrimenti, anche se interattivo, salta direttamente alla fase di elaborazione automatica. - Batch (chiamata da Aglancio): parte automaticamente senza maschera; periodicamente (ogni 30 secondi via COGS62) chiama SWLIVE.
L'elaborazione viene fatta per il mese di sistema corrente e ripetuta per tm-cfg-nr-mesi mesi precedenti (a-mesi-precedenti), risalendo un mese alla volta. Per ogni mese cancella i record BINMAGVL del periodo (b1-cancella via SQL) e li riscrive.
Flusso principale¶
- Inizializzazione (
m-00): controllo abilitazione, lettura azienda, apertura file, lettura configurazione RNEWCONF (x99-src-cfg,x99-src-cfg-agl), inizializzazione connessione BI (init-bin-sub-tm-cfg-bin-tipo). - Recupero divisa di conto: chiama COGU10W con
GetDivisaContoper ottenerew-currency-conto. - Elaborazione mese corrente (
a-avanti-ok): tm-data-in= primo del mese di sistema.tm-data-fi= ultimo giorno del mese (via GESDATECERCA-FINE-MESE).b-elabora.- Elaborazione mesi precedenti (
a-mesi-precedenti): risale di un mese alla volta finche'tm-nr-mesi > 0. - Chiusura (
fine): chiusura connessione BI, aggiornamento stato processo ARPSTPRC (solo modalita' batch).
File e tabelle acceduti¶
| File logico | Record | Modalita' | Uso |
|---|---|---|---|
| BINMAGVL | magvl-rec | I-O | Archivio saldi magazzino valorizzati BI (output) |
| COGMAGAZ | magz-rec | Input | Anagrafica magazzini (filtra tipo "M") |
| COGMERCI | mer-rec | Input | Anagrafica merci |
| COGMERAP | map-rec | Input | Prezzi/aliquote merce (per flag map-fl-gia) |
| FEURTAB | - | Input | Tabella file Eurosystem |
| ARPSTPRC | a-stpr-rec | I-O | Stato processi Aglancio (solo modalita' batch) |
Copybook inclusi¶
Screen Designer¶
| Copybook | Contenuto |
|---|---|
swc023-01.scr |
Maschera principale |
swc023.select |
SELECT dei file |
swc023.fd |
FD dei file |
swc023.wrk |
Working storage maschera |
swc023.decla |
Declaratives |
Strutture dati¶
| Copybook | Contenuto |
|---|---|
cogfiles.cpy |
FD feurtab |
binmagvl.cpy |
Record BINMAGVL |
arpstprc.cpy |
Record ARPSTPRC |
cogazien.cpy |
Dati azienda |
cogconta.cpy |
Dati contabili |
k-u10.cpy / k-personal.cpy / wrk-u10.cpy |
Costanti e working U10 |
wgrave.cpy / wnscr.cpy / wopenf.cpy / wstato.cpy |
Working storage comuni |
sql-decla-ws.cpy |
Working storage connessione SQL/BI |
binmagvl-sql-ws.cpy |
Interfaccia SQL BINMAGVL |
arpstprc-sql-ws.cpy |
Interfaccia SQL ARPSTPRC |
getdcont.cpy |
Helper per GetDivisaConto |
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) |
utilu10.cpy |
Interfaccia COGU10W (divisa, arrotondamenti, cambi) |
utilu31.cpy |
Interfaccia COGU31 (giacenza + ultima entrata/uscita) |
utilcogl61.cpy |
Interfaccia COGL61 (prezzo ultimo acquisto + PMA) |
utilgesdate.cpy |
Interfaccia GESDATE (calcolo fine mese) |
Programmi chiamati (CALL)¶
| Programma | Scopo |
|---|---|
| RNEWCONF | Lettura configurazione (2 chiamate: src-cfg, src-cfg-agl) |
| COGU10W | Recupero divisa di conto, conversione cambio, arrotondamenti |
| COGU31 | Recupero giacenza alla data + dati ultima entrata/uscita per merce/magazzino |
| COGL61 | Recupero prezzo ultimo acquisto e PMA |
| COGS62 | Calcolo differenza in secondi tra due timestamp (per SWLIVE) |
| GESDATE | Calcolo fine mese |
| SWGETS | Recupero configurazione SW-ING (stringa connessione) |
| SWLIVE | Keepalive processo Aglancio (ogni 30 secondi in modalita' batch) |
| DTPRG / PRGDT | Conversione data <-> progressivo (per calcolo mese precedente) |
| W$FLUSH | Flush video durante l'elaborazione |
Configurazione (RNEWCONF)¶
A differenza degli altri SWC*, le configurazioni di SWC023 sono tutte concentrate in x99-src-cfg:
| # | Gruppo | Chiave | Campo interno | Descrizione |
|---|---|---|---|---|
| 01 | abilita | bin-tipo | tm-cfg-bin-tipo |
Tipo connessione BI: "N"=no, "C"=C-Tree, "D"=DBmaker, "P"=PostgreSQL |
| 02 | abilita | bin-db-path | tm-cfg-bin-path |
Percorso file dB (per C-Tree) |
| 03-05 | abilita | bin-db-conn-string (idx 1-3) | tm-cfg-bin-conn-string (1..3) |
Stringa connessione PostgreSQL (3 parti) |
| 06 | abilita | bin-db-log-level | tm-cfg-bin-log-level |
Livello log SQL |
| 07 | bint | swc023-nr-mesi | tm-cfg-nr-mesi |
Numero di mesi precedenti da rielaborare oltre al corrente |
Chiavi lette in x99-src-cfg-agl (gruppo "areaapp"): cod-azienda, db-log-level, AGLANCIO-ATTIVO. La stringa di connessione Aglancio viene restituita da SWGETS.
Logica di business¶
Elaborazione di un mese (b-elabora)¶
- Cancellazione SQL:
DELETE FROM binmagvl WHERE magvl_data BETWEEN ... AND magvl_azi = ...(solo PostgreSQL). - Scan COGMAGAZ per
magz-tipo = "M". - Per ogni magazzino:
- Scan COGMERCI (tutte le merci, chiamata SWLIVE periodica).
- Per ogni merce:
- Esclusioni:
mer-val = "E"(gruppo Arena),map-fl-gia = "N",mer-chia = '999999999',mer-classe = "S", oppure giacenza nulla/negativa per Artic Seals. - Giacenza + ultima entrata/uscita: chiama COGU31 con
u31-data = tm-data-fi,u31-mag = magz-cod,u31-ricerca-totale = "N". - Prezzi: chiama COGL61 con
in-prezacq = "S"ein-pma = "S", ottenendocogl61-out-prezacq(ultimo acquisto) ecogl61-out-pma(PMA), ciascuno nella propria divisa. - Conversione cambio alla divisa di conto: COGU10W con
Cambiosui due prezzi. - Compila magvl-rec: azienda, data fine, magazzino, merce, UM, qta giacenza, prezzo+importo ultimo acquisto, prezzo+importo PMA. Importi arrotondati via COGU10W
Arrotonda. - Date e quantita' ultima entrata/uscita da COGU31; documento formato come stringa
mag/anno/tipob/bolla. - Scrittura BINMAGVL via
sub-cfg-wr-binmagvl.
- Esclusioni:
Iterazione sui mesi precedenti (a-mesi-precedenti)¶
Dopo l'elaborazione del mese corrente, risale un mese alla volta:
- Nuovo
tm-data-fi=tm-data-in- 1 giorno (= ultimo giorno mese precedente). - Nuovo
tm-data-in= primo del mese (cioe' latm-data-fidell'iterazione precedente). - Decrementa
tm-nr-mesie ripeteb-elabora. - Continua finche'
tm-nr-mesi > 0.
SWLIVE periodico¶
Inserito in due punti del loop principale (uno per magazzino, uno per merce), verifica-swlive (PCASE-3896, 24/06/18) chiama SWLIVE ogni 30 secondi per evitare timeout di Aglancio.