SWCV02 - Scaricamento Statistiche Vendita 'Agenzie Videopress' per SW-ING¶
Intestazione¶
| Campo | Valore |
|---|---|
| Programma | SWCV02 |
| Titolo | Scaricamento Statistiche Vendita su SW-ING |
| Posizione menu | Statistiche > Estrazione dati vs B.I.Swing > Procedura 'Agenzie' > Statistiche vendita |
| Sostituisce | BI4002 |
Scopo e logica generale¶
SWCV02 estrae movimenti di vendita, note di accredito e ordini della procedura "Agenzie Videopress" e li scrive in BINVPAST nel BI SW-ING.
Le righe BINVPAST gia' presenti per il periodo (data fattura tra tm-daint-in e tm-daint-fi) vengono cancellate via DELETE prima della ricostruzione. La data di fine e' fissata internamente a 20501231: non viene chiesta all'operatore e funge da limite superiore "aperto".
Il programma supporta esclusivamente connessione "P" (Postgres): altri valori di bin-tipo portano a "Funzione non abilitata".
Il programma funziona in due modalita':
- Interattiva: l'operatore inserisce data inizio (con calendario F8).
- Batch (chiamata da Aglancio) o quando
wo-parametro <> "D": data inizio = 01/01 anno precedente alla data di sistema.
Flusso principale¶
- Inizializzazione (
apri): rilevamento modalita' Aglancio,ctr-abil, lettura azienda, apertura file, lettura RNEWCONF (x99-confi,x99-src-cfg,x99-src-cfg-agl), apertura log gesdebug, apertura connessione BI. Sesql-init-ok = no-> uscita. - Setup maschera (interattivo): titolo "Scaricamento Statistiche Vendita su SW-ING".
- Inizializzazione date (
a4):tm-daint-fi = 20501231; data inizio da operatore (modalita' interattiva con D) o calcolata. - Accept parametri (interattivo):
a-tm-daint-incon calendario F8. - Conferma F3 (
a-richiesta-conferma). - Elaborazione (
a-elabora-conferma->elabora): fase1: cancellazione periodo + estrazione movimenti fatturati + estrazione movimenti non fatturati + estrazione note accredito.fase2: estrazione ordini.- Chiusura (
fine/z-chiudi): chiusura connessione BI, aggiornamento ARPSTPRC se batch, chiusura log.
File e tabelle acceduti¶
| File logico | Record | Modalita' | Uso |
|---|---|---|---|
| BINVPAST | bvas-rec | I-O | Movimenti vendita agenzie BI (output unico) |
| VPACALDE | cld-rec | Input | Calendario movimenti vendita (chiave4: data fattura) |
| VPATESOR | vto-rec | Input | Testate ordine Videopress (chiave2: data per fase2) |
| VPARIGOR | vro-rec | Input | Righe ordine Videopress (chiave1: tipo+anno+numero+progr.) |
| VPANACCR | nac-rec | Input | Note accredito Videopress (chiave5: data) |
| COGFATTU | fat-rec | Input | Fatture clienti (per recuperare dati fattura/pagamento) |
| ARPSTPRC | a-stpr-rec | I-O | Stato processi Aglancio (solo modalita' batch) |
| FEURTAB | - | Input | Tabella file Eurosystem |
Copybook inclusi¶
Screen Designer¶
| Copybook | Contenuto |
|---|---|
swcv02-01.scr |
Maschera principale |
swcv02.select |
SELECT dei file (cogfattu, vpatabel, vpamezzi, vpatesor, vparigor, vpacalde, vpanaccr) |
swcv02.fd |
FD dei file |
swcv02.wrk |
Working storage maschera |
swcv02.decla |
Declaratives |
Strutture dati¶
| Copybook | Contenuto |
|---|---|
cogfiles.cpy |
FD feurtab |
binvpast.cpy |
Record BINVPAST |
arpstprc.cpy |
Record ARPSTPRC |
cogazien.cpy |
Dati azienda |
k-u10.cpy / k-personal.cpy |
Costanti COGU10 / personalizzazione |
sql-decla-ws.cpy |
Working storage connessione SQL/BI |
binvpast-sql-ws.cpy |
Interfaccia SQL BINVPAST |
arpstprc-sql-ws.cpy |
Interfaccia SQL ARPSTPRC |
wstato.cpy/wgrave.cpy/wopenf.cpy/wnscr.cpy |
Working storage comuni |
Chiavi secondarie¶
| Copybook | Uso |
|---|---|
binvpast.k01 |
Chiave primaria BINVPAST |
vpacalde.k04 |
Accesso VPACALDE per data fattura |
vpanaccr.k05 |
Accesso VPANACCR per data nota accredito |
arpstprc.k01 / arpstprc.k01-agg |
Chiavi ARPSTPRC |
Utility¶
| Copybook | Contenuto |
|---|---|
utilncnf.cpy |
Struttura parametri RNEWCONF |
utilgesdebug.cpy |
Gestione debug/log Aglancio |
utilswgets.cpy |
Interfaccia SWGETS |
utilagprg.cpy |
Interfaccia parametri Aglancio (linkage + util-2gprg per sondaggio dinamico) |
utils52.cpy |
Interfaccia COGS52 (calendario) |
utilu09.cpy / utilu10.cpy |
Interfaccia COGU09 / COGU10W |
utils01.cpy |
Interfaccia COGS01 (listino, in linkage) |
Programmi chiamati (CALL)¶
| Programma | Scopo |
|---|---|
| RNEWCONF | Lettura configurazione (3 chiamate: confi, src-cfg, src-cfg-agl) |
| SWGETS | Recupero stringa di connessione AreaGATE |
| C$NARG / C$PARAMSIZE | Verifica dinamica della presenza di util-agprg |
| COGS52 | Calendario (selezione data interattiva, tramite copybook utils52) |
Configurazione (RNEWCONF)¶
x99-confi (pacchetto "C")¶
1 chiave:
| # | Gruppo | Chiave | Campo interno | Descrizione |
|---|---|---|---|---|
| 01 | BINT | nr-mesi-bi0009 | tm-cfg-nr-mesi |
Numero mesi (configurazione condivisa con SWC009; nel codice attuale e' letta ma non viene piu' utilizzata per il calcolo del periodo, che usa sempre "anno precedente") |
x99-src-cfg (pacchetto "C", gruppo "abilita")¶
6 chiavi:
| # | Gruppo | Chiave | Campo interno | Descrizione |
|---|---|---|---|---|
| 01 | abilita | bin-tipo | tm-cfg-bin-tipo |
Tipo connessione BI; SWCV02 supporta solo "P" (Postgres) |
| 02 | abilita | bin-db-path | tm-cfg-bin-path |
Percorso database file-based |
| 03-05 | abilita | bin-db-conn-string (idx 1-3) | tm-cfg-bin-conn-string (1-3) |
Stringa di connessione Postgres (3 segmenti) |
| 06 | abilita | bin-db-log-level | tm-cfg-bin-log-level |
Livello di log SQL |
x99-src-cfg-agl (pacchetto "C", gruppo "areaapp")¶
3 chiavi (cod-azienda, db-log-level, AGLANCIO-ATTIVO) per la connessione ad AreaGATE.
Logica di business¶
Fase 1: movimenti vendita (cancellazione + fatturati + non fatturati + note)¶
Cancellazione periodo (cancella-postgres)¶
DELETE su BINVPAST per bvas_data_fat BETWEEN $1 AND $2 (tm-daint-in, tm-daint-fi). Se tm-daint-in = 0 viene forzata a 19000101; se tm-daint-fi = 0 a 20501231.
Movimenti fatturati (fase1 -> fase1-60)¶
Scansione VPACALDE chiave4 (data fattura) da tm-daint-in. Per ogni record:
- Se cld-fat-num <> 0: lettura COGFATTU (fat-tip/ann/num), se non trovata si salta.
- Lettura VPATESOR (vto-rec) con cld-vro-tip/ann/num; se non trovato si salta.
- Lettura VPARIGOR (vro-rec) con tipo+anno+numero+progressivo; se non trovato si salta.
- Inizializza bvas-rec con bvas-tip-rec = "F", bvas-data-fat = cld-data-fat, cliente, riferimenti ordine, mezzo (vro-mez), spazio (vro-spz), agente, agenzia, quantita', bvas-imp = cld-imp-fat-e, tipo movimento (cld-tip-mov), bvas-cnd-pag = cld-fl-fat, pagamento, riferimenti fattura, flag composizione (cld-fl-comp).
- Scrittura BINVPAST (sub-cfg-wr-binvpast con fallback rwr se gia' presente).
Lo start su chiave4 con data zero (in fase1-60) seguito da scansione fino a quando cld-data-fat > 0 permette di intercettare i record "in sospeso" (non ancora fatturati). Il filtro cld-data < 20190101 esclude i movimenti pre-2019.
Movimenti non fatturati (fase1-61-loop)¶
Per le righe con cld-data-fat = 0 e cld-data >= 20190101: stessa logica del flusso fatturati, ma:
- bvas-data-fat = cld-data (data documento).
- bvas-imp-prog = cld-imp-e (importo a progressivo, non fatturato).
Note di accredito (fase1-65)¶
Scansione VPANACCR chiave5 (data) da tm-daint-in. Per ogni nota:
- Lettura COGFATTU (nac-nac-tip/ann/num), VPATESOR e VPARIGOR (con riferimenti ordine nac-ord-*).
- bvas-tip-rec = "F", bvas-data-fat = nac-data, cliente da vto-cli, riferimenti ordine, importo negato (bvas-imp = nac-imp-e * -1), bvas-cnd-pag = "S", bvas-fl-comp = nac-fl-comp, riferimenti fattura da fat-*.
Fase 2: ordini¶
Scansione VPATESOR da tm-daint-in (chiave2: data) tramite start key is not <. Per ogni testata:
- Scansione VPARIGOR per ogni progressivo della testata (start + read next finche' la chiave matcha).
- Inizializza bvas-rec con bvas-tip-rec = "O", bvas-data-fat = vro-data, cliente da vto-cli, riferimenti ordine, mezzo/spazio, agente, agenzia, bvas-qta = vro-qta, bvas-imp-ord = vro-imp-e, bvas-tip-mov = "O", bvas-cnd-pag = vto-fl-fat, nessun pagamento.
- Scrittura BINVPAST.
Apertura connessione BI (init-bin-sub-tm-cfg-bin-tipo)¶
Solo "P" (Postgres) e' supportato; altri valori -> sql-init-ok = no con conseguente uscita "Funzione non abilitata".