SWC032 - Scaricamento Preventivi per SW-ING¶
Intestazione¶
| Campo | Valore |
|---|---|
| Programma | SWC032 |
| Titolo | Scaricamento Preventivi su SW-ING |
| Posizione menu | Statistiche > Estrazione dati vs B.I.Swing > Magazzino / Vendite > Preventivi |
Scopo e logica generale¶
SWC032 estrae i preventivi clienti e li scrive nell'archivio BINPREVE utilizzato dal sistema di Business Intelligence SW-ING.
Il programma supporta solo backend Postgres (tm-cfg-bin-tipo = "P"): la configurazione segnala errore per qualsiasi altro valore.
Il programma funziona in due modalita':
- Interattiva: l'operatore avvia l'elaborazione dalla maschera; nessun parametro di periodo richiesto (l'intervallo e' hard-coded
19000101-21000101, di fatto full-refresh). - Batch (chiamata da Aglancio): rilevamento via
C$NARG/C$PARAMSIZEsul parametroutil-agprg; output rediretto al log Aglancio tramitegesdebug.
Prima dell'elaborazione esegue cancella-bin-sub-tm-cfg-bin-tipo (TRUNCATE binpreve), poi riesporta da zero. Per ogni riga: WRITE BINPREVE, in caso di duplicato fallback RWR.
Flusso principale¶
- Inizializzazione (
apri): controllo abilitazione, init programma, apertura file Eurocoge, lettura azienda, configurazione (x99-src-cfg,x99-src-cfg-agl), inizializzazione connessione BI (init-bin-sub-tm-cfg-bin-tipo). - Rilevamento modalita' Aglancio: se
agprg-id-processovalido, modalita' batch contm-id-processodal chiamante e chiusura connessione AreaGate per riapertura locale. - Maschera (solo interattivo): titolo "Scaricamento Preventivi su SW-ING", attesa F3 (la maschera mostra controlli per data inizio/fine, ma gli accept sono commentati: di fatto e' full-refresh).
- Elaborazione (
a-elabora-conferma→elabora→fase1): - Cancellazione BINPREVE.
- Scan COGTESPR (testate preventivo).
- Per ogni testata: lettura COGTPRAG, note (COGTPRNT tipo T e TC), commessa (COGRIGCM chiave2), chiamata assist (ASNCHPRV chiave2).
- Scan COGRIGPR (righe preventivo) → BINPREVE per ogni riga con merce valorizzata.
- Chiusura (
fine/z-chiudi): chiusura file e connessione BI, riapertura DB AreaGate per aggiornare stato processo ARPSTPRC (solo modalita' batch).
File e tabelle acceduti¶
| File logico | Record | Modalita' | Uso |
|---|---|---|---|
| BINPREVE | bpre-rec | I-O | BI: preventivi (output principale) |
| COGTESPR | tpr-rec | Input | Testate preventivo |
| COGTPRAG | tpra-rec | Input | Dati aggiuntivi testata preventivo |
| COGTPRNT | tprn-rec | Input | Note preventivo (tipo "T" testata, "TC" costi aggiuntivi) |
| COGRIGPR | rpr-rec | Input | Righe preventivo |
| COGRPRAG | rpra-rec | Input | Dati aggiuntivi riga preventivo |
| COGRIGCM | rgc-rec | Input | Righe commesse (chiave2: tipo "TP" + chia1 preventivo) |
| ASNCHPRV | achv-rec | Input | Collegamento preventivo-chiamata assist (chiave2: tpr-chia1) |
| COGTESOR | tor-rec | Input | Testate ordini (per data di decorrenza ordine generato) |
| ARPSTPRC | a-stpr-rec | I-O | Stato processi Aglancio (solo batch) |
Copybook inclusi¶
Screen Designer¶
| Copybook | Contenuto |
|---|---|
swc032-01.scr |
Maschera principale |
swc032.select |
SELECT dei file |
swc032.fd |
FD dei file |
swc032.wrk |
Working storage maschera |
swc032.decla |
Declaratives |
swc032.prc |
Procedure standard maschera |
Strutture dati¶
| Copybook | Contenuto |
|---|---|
cogfiles.cpy |
FD feurtab |
binpreve.cpy |
Record BINPREVE |
arpstprc.cpy |
Record ARPSTPRC |
cogazien.cpy |
Dati azienda |
k-personal.cpy |
Costanti personalizzazione |
k-u10.cpy |
Costanti COGU10 |
wgrave.cpy / wnscr.cpy / wopenf.cpy / wstato.cpy |
Working storage comuni |
sql-decla-ws.cpy |
Working storage connessione SQL/BI |
binpreve-sql-ws.cpy |
Interfaccia SQL BINPREVE |
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, controlli maschera) |
utils62.cpy |
Interfaccia COGS62 (differenza tempo, per SWLIVE) |
utilu10.cpy |
Interfaccia COGU10 |
utilcgiarea.cpy |
Linkage per chiamata BIENG-CALLED (CGI Areagate) |
Programmi chiamati (CALL)¶
| Programma | Scopo |
|---|---|
| RNEWCONF | Lettura configurazione (2 chiamate: src-cfg, src-cfg-agl) |
| SWGETS | Recupero stringa di connessione SW-ING (modalita' batch) |
| COGS62 | Calcolo differenza in secondi tra timestamp (per SWLIVE) |
| SWLIVE | Keepalive processo Aglancio (ogni 30 secondi in modalita' batch) |
| C$NARG / C$PARAMSIZE | Verifica presenza parametro util-agprg |
Configurazione (RNEWCONF)¶
Chiamata x99-src-cfg (gruppo abilita):
| # | Gruppo | Chiave | Campo interno | Descrizione |
|---|---|---|---|---|
| 01 | abilita | bin-tipo | tm-cfg-bin-tipo |
Tipo connessione BI: deve essere "P" (Postgres) |
| 02 | abilita | bin-db-path | tm-cfg-bin-path |
(non usato per Postgres) |
| 03-05 | abilita | bin-db-conn-string (1-3) | tm-cfg-bin-conn-string |
Stringhe di connessione Postgres |
| 06 | abilita | bin-db-log-level | tm-cfg-bin-log-level |
Log level connessione |
Chiamata x99-src-cfg-agl (modalita' Aglancio):
| # | Gruppo | Chiave | Campo interno | Descrizione |
|---|---|---|---|---|
| 01 | areaapp | cod-azienda | tm-cfg-cod-azienda |
Codice azienda AreaApp |
| 02 | areaapp | db-log-level | tm-cfg-bin-log-level-agl |
Log level connessione AreaGate |
| 03 | AREAAPP | AGLANCIO-ATTIVO | tm-cfg-aglancio-attivo |
"S" = nuova procedura Aglancio attiva |
La stringa di connessione AreaGate e' restituita da SWGETS.
Logica di business¶
Fase 1: estrazione preventivi¶
Scan di COGTESPR. Per ogni testata:
- Dati aggiuntivi: legge COGTPRAG (chia1).
- Note testata: legge COGTPRNT con tipo "T" prog 1 →
tm-note-testata. - Note costi aggiuntivi: legge COGTPRNT con tipo "TC" prog 1 →
tm-note-cst-agg. - Commessa collegata: scan COGRIGCM chiave2 con tip "TP" e chiave = tpr-chia1; prende
rgc-tsc→tm-com-tsc. - Chiamata assist collegata (solo se
az-assist = "S"): scan ASNCHPRV chiave2 conachv-tpr-chia1 = tpr-chia1; prendeacht-ideprog. - Loop righe (COGRIGPR per
tpr-anno/tpr-numero): - Scarta righe con
rpr-merce = k-merce-null(= " 00000"), salvando la descrizione della prima riga intm-note-priga. - Legge dati aggiuntivi riga (COGRPRAG).
- Se ordine generato (
tpr-ord-numero <> 0), recuperator-datdecorrda COGTESOR perbpre-data-ord. - Valorizza BINPREVE con dati di testata, dati aggiuntivi, dati riga, note accumulate, commessa, classificazione assist/commerciale (
bpre-tipo-ass-comm = "A"se chiamata trovata, altrimenti "C"). - WRITE BINPREVE; in caso di duplicato (
w-verbo-invalido), fallback RWR.
Modalita' BIENG-CALLED (CGI)¶
Il programma riceve util-cgiarea con flag cgia-called. Se chiamato come "BIENG-CALLED" copia in w-dc-util-cgi (al momento la logica di filtro periodo via CGI e' commentata, vedi codice originale).
Note¶
- ID processo Aglancio: 50024.
- Solo backend Postgres supportato (per altri valori di
bin-tiposegnala errore). - L'intervallo date
tm-daint-in/tm-daint-fiesiste nella tab-maschera ma gli accept sono commentati: l'estrazione e' sempre full-refresh.