Vai al contenuto

SWC002 - Scaricamento Anagrafica Merci e Tabelle Magazzino per SW-ING

Sorgente: cbl/swc002.cbl | Program-ID: SWC002 | Tipo: Batch BI (interattivo + Aglancio)

Menu: Statistiche > Estrazione dati vs B.I.Swing > Tabelle & Anagrafiche > Anagrafiche Merci & Tabelle Magaz.


Scopo

Esporta l'anagrafica merci e le principali tabelle di classificazione magazzino verso il sottosistema di Business Intelligence SW-ING (tabelle bin*).

Il programma puo' essere lanciato:

  • Interattivo (da menu Eurocoge): visualizza una maschera con i contatori di righe lette/scritte per ogni fase;
  • Batch (da Aglancio): comportamento controllato da w-dc-called = "S", output ridiretto a log via gesdebug, aggiornamento ARPSTPRC.

File e tabelle

Input (gestionale)

File Tipo Modalita' Uso
FEURTAB ISAM Input Parametri file
COGMERCI ISAM Input Anagrafica merci (loop principale fase1)
COGMERAP ISAM Input Dati aggiuntivi merce (reparti, raggruppamenti, max ordine)
COGMERA2 ISAM Input Classificazione statistica e qta per bancale
COGRACMC ISAM Input Raccordo cod-avanzato per merce (chiave2 su merce)
COGSLMAG ISAM Input Saldo magazzino principale (giacenza fisica/virtuale/impegnata/ordinata)
COGLGMER ISAM Input Ubicazioni merce (st-cogcoglgmer, primi 2 record)
COGTABEL ISAM Input Tabelle sistema (tipi AA gruppi, AB sottogruppi, 16 contropartite, 62 codici-avanzati)
COGTESLS ISAM Input Testate listini di vendita
COGLISNW ISAM Input Righe listini (chiave: merce+tipo+rif+fascia+data; ricerca rdprv su data)
COGPNCON ISAM Input Piano dei conti (descrizione contropartite)
COGBRAND ISAM Input Anagrafica brand (fase6)
TGLPRRKE ISAM Input Solo per Siderpress: ricerca preventivo da rcm-merce

Output (B.I.Swing - SQL via PostgreSQL o C-Tree/DBmaker)

Tabella BI Record Modalita' Contenuto
BINMERCI bmer-rec I-O Anagrafica merci (output principale fase1)
BINCLASS - I-O Tabella classi
BINSTAME bstm-rec I-O Stati merce (E/F/M/N/P/S - hardcoded fase2)
BINGRUPP bgrp-rec I-O Tabella gruppi (fase3)
BINSOGRU bsgr-rec I-O Tabella sottogruppi (fase4)
BINCPCON bcpn-rec I-O Contropartite contabili (fase5)
BINTESLS btls-rec I-O Testate listini (fase0)
BINLISNW blnw-rec I-O Righe listino merce (fase11-exp-listino)
BINBRAND bbra-rec I-O Brand / marchi (fase6)
ARPSTPRC a-stpr-rec I-O Stato processi Aglancio (solo modalita' batch)

File transito

File Uso
COGTRANS File temporaneo (#$swc002.<oper> in ext-tmp-dir) per memorizzare i listini disponibili durante fase1

Copybook utilizzate

Screen Designer

Copybook Contenuto
swc002.select, swc002.fd, swc002.wrk, swc002-01.scr, swc002.decla, swc002.prc File Screen Designer

Strutture dati BI

Copybook Contenuto
binmerci.cpy, binclass.cpy, binstame.cpy, bingrupp.cpy, binsogru.cpy, bincpcon.cpy, bintesls.cpy, binlisnw.cpy, binbrand.cpy Record BI
binmerci-sql-ws.cpy, bingrupp-sql-ws.cpy, ecc. Interfacce SQL
arpstprc.cpy, arpstprc-sql-ws.cpy Stato processi
sql-decla-ws.cpy Working storage connessione SQL

Utility

Copybook Contenuto
cogazien.cpy Dati azienda
k-personal.cpy Costanti per varianti per azienda (LO Nexxta, siderpress, modena-funghi, ecc.)
costanti-tgls.cpy Costanti listini
utilncnf.cpy Lettura configurazioni RNEWCONF
utilgesdebug.cpy Log/debug gesdebug
utilswgets.cpy Configurazione SW-ING (path, conn-string)
utilagprg.cpy Linkage Aglancio (passato 2 volte, una rinominata per test presenza)
utilcogl61.cpy Recupero prezzo ultimo acquisto / PMA
utils62.cpy Calcolo differenza tempo per keepalive SWLIVE
wgrave, wnscr, wopenf, wstato Working storage standard

Logica di elaborazione

Apertura (apri)

  1. Test presenza linkage util-agprg tramite C$NARG + C$PARAMSIZE.
  2. ctr-abil, z-99-init-program, rd-azi, open-files.
  3. x99-src-cfg (configurazione BI: bin-tipo, bin-db-path, bin-db-conn-string 1-3, bin-db-log-level).
  4. x999-src-cfg (configurazione codici avanzati: euta-c039-cla + binrtmxx-euta-legame 1-15).
  5. x99-src-cfg-agl (configurazione Aglancio: cod-azienda, db-log-level, AGLANCIO-ATTIVO, conn-string da SWGETS).
  6. Determinazione modalita' (w-dc-called = "S" se chiamato da Aglancio con agprg-id-processo > 0).
  7. Apertura file COGTRANS in ext-tmp-dir/#$swc002.<oper>.
  8. init-bin-sub-tm-cfg-bin-tipo: apertura connessione PostgreSQL / C-Tree / DBmaker secondo tm-cfg-bin-tipo.

Elaborazione (elabora)

  1. carica-tab-cod-ava (solo se az-mer-ava = "S"): legge COGTABEL tipo 62 e popola tab-cod-ava/tab-cod-ava2.
  2. fase0: scan completo COGTESLS, scrive BINTESLS e accumula su COGTRANS. Aggiunge riga "L"/100 "Prezzo Ultimo Acquisto".
  3. fase1: scan completo COGMERCI; per ogni merce:
  4. Letture: COGMERAP, COGMERA2, COGRACMC, COGSLMAG (giacenze), COGLGMER (max 2 ubicazioni).
  5. Se Siderpress: m-ricostruzione-chiavi-cm iniziale; per merci PF/PR cerca i dati dal preventivo (x-estrai-dati-pf-siderpress -> x-estrai-dati-pf-lamiera).
  6. Se az-mer-ava = "S": chiama prepare-binrtmxx per ogni codice avanzato configurato.
  7. Scrive BINMERCI tramite sub-cfg-wr-binmerci.
  8. Chiama fase11-exp-listino: per ogni listino in COGTRANS, ricerca COGLISNW (rdprv su data) e scrive BINLISNW; poi chiama COGL61 per il prezzo ultimo acquisto e scrive ulteriore riga "L"/100.
  9. fase2: scrive 6 record fissi su BINSTAME (E/F/M/N/P/S) con descrizioni hardcoded.
  10. fase3: scan COGTABEL tipo "AA" -> BINGRUPP.
  11. fase4: scan COGTABEL tipo "AB" -> BINSOGRU.
  12. fase5: scan COGTABEL tipo 16 + lookup COGPNCON -> BINCPCON.
  13. fase6: scan COGBRAND -> BINBRAND.

Chiusura (fine / z-chiudi)

  • cancel "COGL61", chiusura file, delete file COGTRANS.
  • Chiusura connessione BI (close-bin-sub-tm-cfg-bin-tipo).
  • Solo modalita' batch: riapre connessione AreaGate e aggiorna ARPSTPRC.

Keepalive SWLIVE

verifica-swlive: chiamato dentro next-tm-letti e dentro fase11-exp-listino. Calcola tramite COGS62 la differenza in secondi rispetto all'ultima invocazione; se > 30 secondi chiama SWLIVE per evitare che Aglancio termini il processo.


Chiamate esterne (CALL)

Programma Scopo
RNEWCONF Lettura configurazione (3 chiamate: confi-merci-ava, src-cfg BI, src-cfg-agl)
SWGETS Recupero conn-string SW-ING
COGL61 Prezzo ultimo acquisto / prezzo medio
COGS62 Differenza in secondi (per SWLIVE)
SWLIVE Keepalive processo Aglancio (ogni 30 secondi)
C$NARG, C$PARAMSIZE, C$RERR Runtime AcuCOBOL (test parametri / errori SQL)
DTPRG / PRGDT Conversione data <-> progressivo (se gestione date)

Configurazioni (RNEWCONF)

Configurazione BI (x99-src-cfg, gruppo abilita)

Chiave Campo interno Descrizione
bin-tipo tm-cfg-bin-tipo Tipo connessione: "N" disabilitato, "C" C-Tree, "D" DBmaker, "P" PostgreSQL
bin-db-path tm-cfg-bin-path Path per C-Tree
bin-db-conn-string (1-3) tm-cfg-bin-conn-string Stringhe connessione PostgreSQL
bin-db-log-level tm-cfg-bin-log-level Livello log

Configurazione codici avanzati (x999-src-cfg)

Chiave Gruppo Descrizione
euta-c039-cla sistmerava Flag estrazione classe (tm-cfg-cla)
binrtmxx-euta-legame (1-15) bint Mappatura tipo cod-avanzato -> tabella BINRTM01..15

Configurazione Aglancio (x99-src-cfg-agl, gruppo areaapp)

  • cod-azienda -> tm-cfg-cod-azienda
  • db-log-level -> tm-cfg-bin-log-level-agl
  • AGLANCIO-ATTIVO -> tm-cfg-aglancio-attivo

Stringa connessione AreaGate via SWGETS.


Schedulazione (Aglancio)

k-id-processo = 50002 / k-tabella-statosyn = "SWC002". Invocato con linkage util-agprg; quando agprg-id-processo > 0 attiva la modalita' batch (w-dc-called = "S"), forza bin-tipo = "P", chiude la connessione AreaGate gia' aperta (ext-dbpg-kpn-aperto), elabora, poi alla fine riapre la connessione AreaGate per aggiornare ARPSTPRC.


Note

  • Per Siderpress (az-personal = "SP") e' prevista una ricostruzione iniziale chiavi commessa-merce e una ricerca dei dati progettazione dal preventivo (lamiera/profilo).
  • Per Modena Funghi (az-personal = "MF"), se mer-um-alt e' valorizzata, viene usata al posto di mer-um.
  • La gestione del codice avanzato (15 tabelle BINRTM01..15) viene attivata solo se az-mer-ava = "S".
  • L'eventuale prefisso deb nei sub-cfg-wr-bintesls / sub-cfg-wr-binlisnw indica che la scrittura listini e' debug-able (alcuni installati commentano).