SWC033 - Scaricamento Ordini Clienti per SW-ING¶
Intestazione¶
| Campo | Valore |
|---|---|
| Programma | SWC033 |
| Titolo | Scaricamento Ordini Clienti su SW-ING |
| Posizione menu | Statistiche > Estrazione dati vs B.I.Swing > Magazzino / Vendite > Ordini clienti |
Scopo e logica generale¶
SWC033 estrae gli ordini cliente (tipo "C") e li scrive nell'archivio BINORDIN 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.
Modalita' di esecuzione:
- Interattiva: l'operatore avvia l'elaborazione dalla maschera; nessun parametro di periodo richiesto (intervallo hard-coded, full-refresh).
- Batch (chiamata da Aglancio): rilevamento via
C$NARG/C$PARAMSIZEsuutil-agprg; output rediretto al log Aglancio tramitegesdebug.
Prima dell'elaborazione esegue cancella-bin-sub-tm-cfg-bin-tipo (TRUNCATE binordin), poi riesporta da zero. WRITE BINORDIN, in caso di duplicato fallback RWR.
Flusso principale¶
- Inizializzazione (
apri): controllo abilitazione, init programma, apertura file Eurocoge, lettura azienda, divisa conto, configurazione (x99-src-cfg,x99-src-cfg-agl), inizializzazione connessione BI. - Rilevamento modalita' Aglancio: se
agprg-id-processovalido, modalita' batch. - Maschera (solo interattivo): titolo "Scaricamento Ordini Clienti su SW-ING", attesa F3.
- Elaborazione (
a-elabora-conferma→elabora→fase1): - Cancellazione BINORDIN.
- Scan COGTESOR con
tor-tipo = "C". - Per ogni testata: lettura COGTORAG (dati aggiuntivi), scan COGRIGOR (righe ordine).
- Per ogni riga: lettura COGRORA2 (dati aggiuntivi riga), validazione date, calcolo importo netto (sconti applicati con arrotondamento via COGU10W), lookup commessa, preventivo origine, bolla collegata (COGU09), scrittura BINORDIN.
- 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 |
|---|---|---|---|
| BINORDIN | btor-rec | I-O | BI: ordini clienti (output principale) |
| COGTESOR | tor-rec | Input | Testate ordini |
| COGTORAG | tar-rec | Input | Dati aggiuntivi testata ordine |
| COGRIGOR | ror-rec | Input | Righe ordine |
| COGRORA2 | ra2-rec | Input | Dati aggiuntivi riga ordine (iva-cod, art-ese) |
| COGMERCI | mer-rec | Input | Anagrafica merci (fallback codice IVA) |
| COGRIGCM | rgc-rec | Input | Righe commesse (chiave2: tipo "OR" + chiave ror-chia1) |
| COGTESPR | tpr-rec | Input | Testate preventivo (chiave3: rif-ord = tor-chia, ricerca preventivo origine) |
| ARPSTPRC | a-stpr-rec | I-O | Stato processi Aglancio (solo batch) |
Copybook inclusi¶
Screen Designer¶
| Copybook | Contenuto |
|---|---|
swc033-01.scr |
Maschera principale |
swc033.select |
SELECT dei file |
swc033.fd |
FD dei file |
swc033.wrk |
Working storage maschera |
swc033.decla |
Declaratives |
swc033.prc |
Procedure standard maschera |
Strutture dati¶
| Copybook | Contenuto |
|---|---|
cogfiles.cpy |
FD feurtab |
binordin.cpy |
Record BINORDIN |
arpstprc.cpy |
Record ARPSTPRC |
cogazien.cpy |
Dati azienda |
k-personal.cpy |
Costanti personalizzazione |
k-u10.cpy |
Costanti COGU10 |
getdcont.cpy |
Recupero divisa conto |
wgrave.cpy / wnscr.cpy / wopenf.cpy / wstato.cpy |
Working storage comuni |
sql-decla-ws.cpy |
Working storage connessione SQL/BI |
binordin-sql-ws.cpy |
Interfaccia SQL BINORDIN |
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 |
Interfaccia COGU09 (cerca documento collegato all'ordine) |
utilu10.cpy |
Interfaccia COGU10 (formattazione/arrotondamento importi) |
utilcgiarea.cpy |
Linkage per chiamata BIENG-CALLED (CGI) |
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) |
| COGU09 | Ricerca documento di magazzino collegato all'ordine (cerca-magazzino) |
| COGU10W | Arrotondamento prezzo e importo netto |
| AZVALIDA.COB | Validazione date (decorrenza, scadenza, conferma) |
| 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 ordini¶
Scan di COGTESOR partendo da tor-tipo = "C" (ordini cliente). Esce dal loop appena tor-tipo cambia.
Per ogni testata ordine:
- Dati aggiuntivi testata: legge COGTORAG (chiave: tor-chia) →
tar-rec. - Scan COGRIGOR: per ogni riga ordine appartenente alla testata corrente:
- Legge COGRORA2 (chiave: tipo+anno+numero+progr+rig-pro).
- Valida
tor-datdecorrvia AZVALIDA.COB: se non valida o zero, usadatasis. - Costruisce
w-data-scaddator-anscad/mescad/giscad; valida; defaultdatasis. - Costruisce
bcfn-datada conferma cliente (tor-cnf-aa/mm/gg); valida; defaultdatasis. - Calcolo importo netto (
tm-r-pre-net):- Prezzo unitario =
ror-prez. - Applica
ror-sconto-1(con eccezione: 99,99 = sconto del 100%, hardcoded). - Applica
ror-sconto-2. - Arrotondamento via COGU10W con
u10-tipo-dato = "V"(vendita), divisa conto, data ordine. tm-r-imp-net = tm-r-pre-net * ror-qtaord, arrotondato.
- Prezzo unitario =
- Codice IVA: se
ra2-iva-codvuoto, prendemer-codivadalla merce (COGMERCI). - Commessa: scan COGRIGCM chiave2 con tip "OR" + chiave
ror-chia1→btor-tsc-com/btor-sot-com. - Preventivo origine: scan COGTESPR chiave3 con
tpr-rif-ord = tor-chia→btor-anno-prev/btor-numero-prev. - Bolla collegata: chiama COGU09 con
cerca-magazzino,u09-i-ordi = tor-chia→btor-documentodau09-o-mm-testa. - WRITE BINORDIN; in caso di duplicato fallback RWR.
Modalita' BIENG-CALLED (CGI)¶
Il programma riceve util-cgiarea con flag cgia-called. Se "BIENG-CALLED" copia in w-dc-util-cgi (logica filtro periodo via CGI commentata).
Note¶
- ID processo Aglancio: 50032.
- Solo backend Postgres supportato.
- L'intervallo date
tm-daint-in/tm-daint-fiesiste nella tab-maschera ma gli accept sono commentati: full-refresh. - Lo sconto 99,99 e' interpretato come sconto 100% (riga omaggio).