SWC014 - Scaricamento Movimenti Vendita Colli/Peso (Funghi) per SW-ING¶
Intestazione¶
| Campo | Valore |
|---|---|
| Programma | SWC014 |
| Titolo | Scaricamento Mov. Vendita a Colli e Peso su SW-ING |
| Posizione menu | Statistiche > Estrazione dati vs B.I.Swing > Magazzino/Vendite > Movimenti vendita funghi |
Scopo e logica generale¶
SWC014 estrae i movimenti di vendita arricchiti dei dati colli/peso/tara/lotti e li scrive negli archivi BINVENCP (movimenti) e BINVENLT (lotti) utilizzati dal sistema di Business Intelligence SW-ING. E' una variante specializzata di SWC009 pensata per filiere che vendono a peso/colli (origine: Modena Funghi).
Il programma funziona in due modalita':
- Interattiva: l'operatore inserisce il periodo da estrarre tramite maschera; al termine viene mostrato il contatore di righe lette/scritte.
- Batch (chiamata da Aglancio): il periodo e' calcolato automaticamente in base alla configurazione (
nr-mesi-bi0009); l'output e' rediretto al log di processo Aglancio tramitegesdebug.
Prima dell'elaborazione il programma cancella i record BINVENCP/BINVENLT del periodo (cancella-bin-sub-tm-cfg-bin-tipo), poi rielabora da zero.
Flusso principale¶
- Inizializzazione (
apri): controllo abilitazione, lettura azienda, apertura file, lettura configurazione RNEWCONF (x99-confi,x99-src-cfg,x99-src-cfg-agl), inizializzazione connessione BI (init-bin-sub-tm-cfg-bin-tipo), setup tasti funzione. - Accept parametri (modalita' interattiva):
a-tm-daint-in(data inizio),a-tm-daint-fi(data fine), con supporto calendario COGS52. - Calcolo automatico del periodo (modalita' Aglancio/batch): data fine = data di sistema; data inizio = data di sistema meno
nr-mesi-bi0009 * 30giorni. - Elaborazione (
a-elabora-conferma): - Cancellazione del periodo in BINVENCP/BINVENLT.
fase1: estrazione movimenti di magazzino da COGTESBO/COGMOMAG, con gestione fase righe no-merci (fase1-60/fase1-66-loop).- Chiusura (
fine): chiusura connessione BI, aggiornamento stato processo ARPSTPRC (solo modalita' batch).
File e tabelle acceduti¶
| File logico | Record | Modalita' | Uso |
|---|---|---|---|
| BINVENCP | bvcp-rec | I-O | Archivio movimenti vendita colli/peso BI (output principale) |
| BINVENLT | bvlt-rec | I-O | Archivio movimenti lotti BI (output) |
| COGTESBO | tes-rec | Input | Testate documenti magazzino (chiave2: data) |
| COGMOMAG | mag-recz | Input | Righe movimenti magazzino |
| COGCONTR | con-rec | Input | Righe "no merci" dei documenti |
| COGMERCI | mer-rec | Input | Anagrafica merci (UM, lotti) |
| COGMERAP | map-rec | Input | Prezzi/aliquote IVA merce |
| COGMERA2 | ma2-rec | Input | Classificazione statistica merce (ma2-tipo-stat) |
| COGGEANA | ana-rec | Input | Anagrafica generale (clienti, agenti) |
| COGTABEL | euta-rec | Input | Tabelle sistema (tipo 15: causali; tipo 67: aliquote IVA) |
| COGRACCO | rac-rec | Input | Raccordo bolle-fatture (chiave2: bolla) |
| COGRACBB | rbb-rec | Input | Raccordo bolla-bolla (per resi su fatturato, chiave2: RV+bolla) |
| COGTESOR | tor-rec | Input | Testate ordini |
| COGRIGOR | ror-rec | Input | Righe ordini |
| COGTORAG | tar-rec | Input | Dati aggiuntivi ordine (brand, destinazione finale) |
| COGTESAP | tsa-rec | Input | Testate documenti aggiuntivi (brand, grp-az-cod) |
| COGDESAG | dag-rec | Input | Destinazioni agente (per righe descrittive merci) |
| COGMOAGG | moa-rec | Input | Movimenti aggregati (val-fifo per resi) |
| COGMOAG2 | moa2-rec | Input | Movimenti aggregati 2 (tara bancale) |
| COGANAPP | aap-rec | Input | Applicazione listino (flag listino-padre) |
| COGSCONT | scc-rec | Input | Sconti aggiuntivi (per tratta) |
| COGMOVLT | mvl-rec | Input | Movimenti lotti |
| FEURTAB | - | Input | Tabella file Eurosystem |
| ARPSTPRC | a-stpr-rec | I-O | Stato processi Aglancio (solo modalita' batch) |
Copybook inclusi¶
Screen Designer¶
| Copybook | Contenuto |
|---|---|
swc014-01.scr |
Maschera principale |
swc014.select |
SELECT dei file |
swc014.fd |
FD dei file |
swc014.wrk |
Working storage maschera |
swc014.decla |
Declaratives |
Strutture dati¶
| Copybook | Contenuto |
|---|---|
cogfiles.cpy |
FD feurtab |
binvencp.cpy / binvenlt.cpy |
Record BINVENCP / BINVENLT |
arpstprc.cpy |
Record ARPSTPRC |
cogazien.cpy |
Dati azienda |
k-u10.cpy / k-personal.cpy |
Costanti |
wgrave.cpy / wnscr.cpy / wopenf.cpy / wstato.cpy |
Working storage comuni |
sql-decla-ws.cpy |
Working storage connessione SQL/BI |
binvencp-sql-ws.cpy / binvenlt-sql-ws.cpy |
Interfaccia SQL BINVENCP/BINVENLT |
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 |
utilcogl61.cpy |
Interfaccia COGL61 (costo FIFO/PMA) |
utilg31.cpy |
Interfaccia COGG31 (conversione UM, per Modena Funghi) |
utils01.cpy |
Interfaccia COGS01 (listino, in linkage) |
utils52.cpy |
Interfaccia COGS52 (calendario) |
utilu09.cpy / utilu10.cpy |
Interfaccia COGU09 / COGU10W |
Programmi chiamati (CALL)¶
| Programma | Scopo |
|---|---|
| RNEWCONF | Lettura configurazione (3 chiamate: confi, src-cfg, src-cfg-agl) |
| COGS01 | Ricerca prezzo di listino per la merce/cliente/data |
| COGL61 | Recupero costo unitario FIFO o prezzo medio acquisto |
| COGG31 | Conversione quantita' in UM alternativa (per Modena Funghi) |
| COGU09 | Ricerca consegna/ordine collegato a riga di movimento |
| COGU10W | Formattazione/arrotondamento importi |
| SWGETS | Recupero configurazione SW-ING (stringa connessione) |
| DTPRG / PRGDT | Conversione data <-> progressivo (calcolo periodo automatico) |
Configurazione (RNEWCONF)¶
Lette nella chiamata x99-confi (pacchetto "C"). Le chiavi condividono il suffisso bi0009 con SWC009 (estrazione vendite generica):
| # | Gruppo | Chiave | Campo interno | Descrizione |
|---|---|---|---|---|
| 01 | BINT | nr-mesi-bi0009 | tm-cfg-nr-mesi |
Numero di mesi precedenti per calcolo automatico periodo |
| 02 | BINT | no-merci-bi0009 | tm-cfg-no-merci |
"S" = estrai anche righe senza merce (da COGCONTR) |
| 03 | BINT | cod-merce-bi0009 | tm-cfg-merce-nm |
Codice merce da usare per le righe senza merce |
| 04 | gestbuonip | causale-contanti-1 | tm-cfg-cau-con-1 |
Prima causale corrispettivi (marca come fatturato) |
| 05 | gestbuonip | causale-contanti-2 | tm-cfg-cau-con-2 |
Seconda causale corrispettivi |
| 06 | BINT | espl-dbase-bi0009 | tm-cfg-espl-dbase |
Flag esplosione distinta base (presente ma non usato in SWC014) |
| 07 | BINT | criterio-costo-bi0009 | tm-cfg-criterio-costo |
Criterio costo: "PU" = FIFO, "PM" = prezzo medio, "VF" = valore fifo |
| 08 | uscite | tara-bancale | tm-cfg-tara-bancale |
"S" = recupera tara bancale da COGMOAG2 |
La configurazione per la connessione BI e' letta da x99-src-cfg (gruppo "abilita": bin-tipo, bin-db-path, bin-db-conn-string 1-3, bin-db-log-level).
La configurazione Aglancio e' letta da x99-src-cfg-agl (gruppo "areaapp": cod-azienda, db-log-level, AGLANCIO-ATTIVO).
Logica di business¶
Fase 1: estrazione movimenti di magazzino¶
Scansione di COGTESBO per data nel range tm-daint-in - tm-daint-fi.
Per ogni testata documento:
- Filtro causale: COGTABEL tipo 15. Se
euta-cb-con-fat <> 'SI'il documento e' saltato (eccetto causali corrispettivi per Sgarbi). - Filtro tipo CF: solo documenti verso clienti (
tes-tipocf = "C"). - Loop righe COGMOMAG per la testata. Per ogni riga:
- Tipo statistico da COGMERA2 (
ma2-tipo-stat): "T" = tutto, "V" = solo valore, "Q" = solo quantita'. - Compila bvcp-rec con: azienda, documento, tipo doc, magazzino, data, cliente principale (
tes-nonno), padre, figlio, agente, causale. - Flag fatturato
bvcp-fattu: "S" setes-flagfatvalorizzato, o causale corrispettivi, o tipo "P" (prima nota), o causale azienda contanti. - Quantita'/valore in base a
ma2-tipo-statcon segno positivo/negativo a seconda dimag-entrusc. - Costo: secondo
tm-cfg-criterio-costo: "PU" (COGL61 prezzo acquisto), "PM" (COGL61 prezzo medio), "VF" (COGMOAGG valore fifo). - Margine:
bvcp-marg-perc = (mag-valore - t-val-costo) / mag-valore * 100;bvcp-marg-val = mag-valore - t-val-costo. Inversione di segno semag-entrusc = "E"(modifica 07/08/24). - Colli/peso (se
az-imballi = "SI"): nazione provenienza (defaultaz-naz-default), peso lordo, tara unitaria. - Tara bancale (se
tm-cfg-tara-bancale = "S"): da COGMOAG2 (moa2-tara-bancale). Peso lordo 2 = peso lordo - tara bancale. - Listino: legge COGANAPP per flag
aap-fl-listino-padre(gestione triplo livello cliente-padre-figlio); chiama COGS01 con parametri opportuni per ricavares01-pre-lis; calcola sconto come scostamento dal listino. Aggiunge tratta da COGSCONT (tipo "A"). - Riferimento fattura: COGRACCO chiave2; se trovato, popola
bvcp-rif-fat,bvcp-data-fat,bvcp-fattu = "S". - Riferimento ordine: chiamata
cerca-preventivo(per documentites-fl-ord = "S") ocerca-ordine2(altrimenti). Entrambi usano COGU09 + COGTESOR; estraggono anche destinazione finale da COGTORAG. - Conversione UM (solo
az-personal = k-personal-modena-funghi): semer-um-altvalorizzato, chiama COGG31convert.um. - Scrittura BINVENCP (con fallback
rwr). - Movimenti lotti (
carica-movimenti-lotti): solo semer-lotti = "S"eaz-lotti <> "N". Scan COGMOVLT sumvl-chiave-riga = mag-chiapper la merce corrente; per ogni lotto scrive BINVENLT con qta segnata in base amvl-segno.
Fase 1bis: righe "no merci" (fase1-60)¶
Attiva se tm-cfg-no-merci = "S" e tm-cfg-merce-nm configurata.
Scan COGCONTR per la stessa testata. Per ogni riga con con-valore <> 0:
- Documento =
con-chiap, fatturato = "S", merce =tm-cfg-merce-nm. - Valore: positivo per uscite ("S"), negativo per resi ("Q"). Ulteriormente invertito se
con-fl-segno = "-". - Quantita': default 1 con prezzo = valore, oppure
con-qta/con-prezzo. - Stessa logica conversione UM per Modena Funghi.
- Riferimento fattura come fase1. Scrive BINVENCP e movimenti lotti come per le righe ordinarie.
Gestione resi su fatturato (cerca-e-scala-resi, carica-reso, scala-reso, agg-r-res)¶
Per bolle ad uscita gia' fatturate, cerca su COGRACBB (raccordo bolla-bolla tipo "RV") i resi collegati. Per ogni reso, legge il documento di reso, lo filtra (non considera resi gia' fatturati o con causale da non fatturare) e ne scrive una riga BINVENCP separata, con calcoli analoghi alla fase1 ma con costo da COGMOAGG (moa-val-fifo). E' un meccanismo per correggere le statistiche quando un reso annulla parzialmente una vendita gia' considerata.
Avvertenze e note¶
- La configurazione condivide il suffisso
bi0009con SWC009: cambi alle chiavibint.nr-mesi-bi0009ecc. impattano entrambi i programmi. - Quando
mag-sco-1 = 99,99viene normalizzato a 100 (modifica 24/11/11). - Per
az-personal = k-personal-sgarbile causali corrispettivi configurate sono trattate come fatturate.