Vai al contenuto

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

  1. 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).
  2. Recupero divisa di conto: chiama COGU10W con GetDivisaConto per ottenere w-currency-conto.
  3. Elaborazione mese corrente (a-avanti-ok):
  4. tm-data-in = primo del mese di sistema.
  5. tm-data-fi = ultimo giorno del mese (via GESDATE CERCA-FINE-MESE).
  6. b-elabora.
  7. Elaborazione mesi precedenti (a-mesi-precedenti): risale di un mese alla volta finche' tm-nr-mesi > 0.
  8. 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)

  1. Cancellazione SQL: DELETE FROM binmagvl WHERE magvl_data BETWEEN ... AND magvl_azi = ... (solo PostgreSQL).
  2. Scan COGMAGAZ per magz-tipo = "M".
  3. Per ogni magazzino:
  4. Scan COGMERCI (tutte le merci, chiamata SWLIVE periodica).
  5. 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" e in-pma = "S", ottenendo cogl61-out-prezacq (ultimo acquisto) e cogl61-out-pma (PMA), ciascuno nella propria divisa.
    • Conversione cambio alla divisa di conto: COGU10W con Cambio sui 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.

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' la tm-data-fi dell'iterazione precedente).
  • Decrementa tm-nr-mesi e ripete b-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.