SWC010 - Scaricamento Movimenti Costi di Produzione per SW-ING¶
Intestazione¶
| Campo | Valore |
|---|---|
| Programma | SWC010 |
| Titolo | Scaricamento consumi di produzione su SW-ING |
| Posizione menu | Statistiche > Estrazione dati vs B.I.Swing > Magazzino/Vendite > Movimenti costi di produzione |
Scopo e logica generale¶
SWC010 estrae i movimenti di consumo materiali per produzione e li scrive nell'archivio BINCONSU utilizzato dal sistema di Business Intelligence SW-ING. Originariamente sviluppato per Artic Seals (esporta BINCONSU).
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.
Per ogni iterazione cancella i record BINCONSU del periodo via SQL (DELETE FROM binconsu WHERE bcns_data BETWEEN ... AND bcns_azi = ...) e li rielabora da zero.
L'estrazione e' sempre completa: il file logfile viene cancellato a ogni avvio.
Flusso principale¶
- Inizializzazione (
apri): controllo abilitazione, lettura azienda, apertura file, lettura configurazione RNEWCONF (x99-confi,x99-src-cfg), 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 SQL del periodo in BINCONSU.
- Scan COGTESBO per data (testate documenti): per ogni documento
a-esamina-documento. - Scan CLCSTCNS per data (consuntivi stampaggio, chiave 5 su
stc-ini-data): per ogni rigaa-esamina-riga-consuntivo. - Chiusura (
fine): chiusura connessione BI, aggiornamento stato processo ARPSTPRC (solo modalita' batch).
File e tabelle acceduti¶
| File logico | Record | Modalita' | Uso |
|---|---|---|---|
| BINCONSU | bcns-rec | I-O | Archivio movimenti costi di produzione BI (output) |
| COGTESBO | tes-rec | Input | Testate documenti magazzino (chiave2: data) |
| COGMOMAG | mag-recz | Input | Righe movimenti magazzino |
| COGGENER | gnr-rec | Input | Riferimenti generali (chiave2: tipo + parte-2, per legare documento a commessa di produzione) |
| COGLAVOR | cla-rec | Input | Commesse di lavorazione (per merce in lavorazione) |
| COGDBASE | dba-rec | Input | Distinta base (componenti del prodotto, alias clndbase per scendere nei miscelati) |
| COGMERCI | mer-rec | Input | Anagrafica merci (per UM componente) |
| CLCSTCNS | stc-rec | Input | Consuntivi stampaggio (chiave5: data inizio) |
| FEURTAB | - | Input | Tabella file Eurosystem |
| ARPSTPRC | a-stpr-rec | I-O | Stato processi Aglancio (solo modalita' batch) |
| LOGFILE | - | I-O | Log testuale operazioni (cancellato ad ogni avvio) |
Copybook inclusi¶
Screen Designer¶
| Copybook | Contenuto |
|---|---|
swc010-01.scr |
Maschera principale |
swc010.select |
SELECT dei file |
swc010.fd |
FD dei file |
swc010.wrk |
Working storage maschera |
swc010.decla |
Declaratives |
Strutture dati¶
| Copybook | Contenuto |
|---|---|
cogfiles.cpy |
FD feurtab |
binconsu.cpy |
Record BINCONSU |
arpstprc.cpy |
Record ARPSTPRC |
logfile.fd / logfile-ext.cpy |
FD ed estensioni del log testuale |
cogazien.cpy |
Dati azienda |
k-u10.cpy |
Costanti COGU10 |
k-personal.cpy |
Costanti personalizzazione |
wgrave.cpy / wnscr.cpy / wopenf.cpy / wstato.cpy |
Working storage comuni |
sql-decla-ws.cpy |
Working storage connessione SQL/BI |
binconsu-sql-ws.cpy |
Interfaccia SQL BINCONSU |
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 (PMA componente) |
utilg31.cpy |
Interfaccia COGG31 (conversione UM) |
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) |
| COGL61 | Recupero prezzo medio acquisto componente alla fine anno 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"):
| # | 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 |
Flag estrazione righe senza merce (non usato attivamente in SWC010) |
| 03 | BINT | cod-merce-bi0009 | tm-cfg-merce-nm |
Codice merce per righe senza merce |
| 04 | gestbuonip | causale-contanti-1 | tm-cfg-cau-con-1 |
Causale corrispettivi 1 |
| 05 | gestbuonip | causale-contanti-2 | tm-cfg-cau-con-2 |
Causale corrispettivi 2 |
| 06 | BINT | espl-dbase-bi0009 | tm-cfg-espl-dbase |
Flag esplosione distinta base |
| 07 | BINT | criterio-costo-bi0009 | tm-cfg-criterio-costo |
Criterio costo (non usato in SWC010, che usa sempre PMA) |
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¶
Esame documento di magazzino (a-esamina-documento)¶
Per ogni testata COGTESBO nel periodo:
- Cerca su COGGENER (tipo "mov-prod") un riferimento a una commessa di produzione (
a-cla-chia1). - Se trovato, legge COGLAVOR e marca il documento come "collegato a produzione".
- Filtri sulle righe COGMOMAG del documento:
- Solo movimenti di entrata (
mag-entrusc = "E"). - Se collegato a produzione: solo movimenti che riguardano la merce in lavorazione.
- Se non collegato a produzione: solo movimenti sul magazzino principale (
tes-mag = az-main-mag) con tipo bolla "P" (prima nota). - Per ogni movimento valido, scrive un record di log e chiama
a-esamina-movimentocon provenienza "Magazzino".
Esame riga consuntivo stampaggio (a-esamina-riga-consuntivo)¶
Per ogni riga CLCSTCNS nel periodo con stc-slot > 0 e stc-ope-c = "Avanzamento stampaggio", viene preparato un record con provenienza "Stampaggio" (merce = stc-articolo, magazzino principale, quantita' = stc-pezzi, lotto = stc-lotto) e si chiama a1-estrai.
Estrazione componenti (a1-estrai)¶
Per la merce padre (a1-merce):
- Scan COGDBASE per i componenti diretti.
- Per ogni componente con
dba-gru-f = "MM"(miscelato): chiamaa-esamina-miscelatoche scende nella distinta base figlia (clndbase) e moltiplica la quantita' percentuale del miscelato per la quantita' del componente. - Per ogni componente non miscelato: chiama
a-inserisci-binconsu. - Al termine inserisce un record "finto" con componente
"XX 00001", UM"NR"e quantita' del prodotto finito (a1-qta).
Inserimento BINCONSU (a-inserisci-binconsu)¶
Per ogni componente:
- Recupera UM da COGMERCI.
- Calcola quantita' componente:
a1-qta * a-qta(dovea-qtae' la quantita' del componente nella distinta). - Costo unitario: chiamata COGL61 con
cogl61-in-pma = "S"su data 31/12 dell'anno del movimento. Per materie prime (mer-gru = "MB"o"MP") il PMA e' al kg, quindicosto-tot = pma * qta / 1000; altrimenticosto-tot = pma * qta. - Arrotondamento via COGU10W (
z-u10-bcns-costo-tot). - Commessa formattata come
aa/numero. - Causale documento (TASK-3467, 10/03/26):
bcns-causale=tes-causaleper i versamenti da magazzino; zero per i consuntivi di stampaggio. - Scrittura con fallback
rwrse gia' presente.