COGV31 - Ricreazione Saldi Magazzino (Magazzini Interni)¶
Sorgente: cbl/cogv31.cbl | Program-ID: COGV31 | Tipo: Programma interattivo / richiamabile in modalita' silenziosa
Menu:
- Sistema > Archivi > Ricostruzioni > Giacenze > Magazzini interni
Scopo¶
Ricostruisce i saldi di giacenza dei magazzini interni ricalcolandoli dai movimenti di magazzino (COGMOMAG) e confrontandoli con il saldo registrato su COGSLMAG. L'elaborazione puo' essere globale oppure filtrata per singolo prodotto e/o singolo magazzino, e puo' opzionalmente azzerare (ripulire) il saldo esistente prima del ricalcolo.
Il programma e' usato in caso di disallineamento tra le giacenze visualizzate e i movimenti effettivi. Puo' essere lanciato dal menu oppure richiamato in modalita' silenziosa da altri programmi.
Modalita' di esecuzione¶
| Modalita' | Innesco | Comportamento |
|---|---|---|
| Interattiva | Da menu | L'operatore inserisce i filtri (data consolidato, magazzino, prodotto, flag di pulizia saldo) e conferma con F3 |
| Chiamata da gestione | v31-caller = "COGV10" / "COGV11" o v31-called = "COGV31-CALLED" |
Riceve merce/magazzino dal chiamante (v31-merce, v31-mag), imposta fl-called = "S" e restituisce saldo letto/scritto (v31-qta-letta, v31-qta-scritta) |
| Silenziosa | v31-silent-mode = "S" |
Salta la maschera (go to a5) ed esegue direttamente il ricalcolo |
L'area di interscambio con i chiamanti e' passata in linkage (stringhe / wcont).
File e tabelle¶
| File/Tabella | Accesso | Descrizione |
|---|---|---|
| FEURTAB | I-O | Tabella di sistema (nomi fisici file, dati azienda) |
| COGMOMAG | Input | Movimenti di magazzino: scansione (rdnxt-cogmomag) per magazzino/merce; da qui si accumulano acquisti (tot-a-qta) e vendite (tot-v-qta) |
| COGTESBO | Input | Testate bolle (lettura causale della bolla, rd-cogtesbo) |
| COGTABEL (via FEURTAB) | Input | Tabella generica: causali tipo 15 (euta-cb-con-gia, euta-cb-cli-for), data consolidato tipo 57, configurazioni |
| COGMERCI | Input | Anagrafica merci (mer-*, flag map-fl-gia "gestisce giacenza") |
| COGMAGAZ | Input | Anagrafica magazzini (magz-cod) |
| COGSLMAG | I-O | Saldi di magazzino (msal-*): saldo letto/aggiornato per merce+magazzino (rd-cogslmag-lk, wr-sal) |
Saldi mensili (mav-) |
Input | Giacenze annue/mensili lette da x5-rd-mav (mav-qta-gia per mese) |
| COGLOG | Output (line seq.) | Log giacenza giacenza.YYYYMM (vedi sotto), stesso tracciato di COGU12 (coglog-rec.cpy) |
| FLSTA | I-O | File di stato/appoggio standard |
Logica di elaborazione¶
Inizializzazione (apri)¶
z-99-init-program,ctr-abil,rd-azi,open-files,x99-confi(configurazioni).- Se richiamato da COGV10/COGV11/COGV31-CALLED, imposta
fl-callede i filtri dal chiamante. - Se
v31-silent-mode = "S", salta la maschera. - Costruisce il nome del file di log giacenza:
w-nome-coglog = ext-log-dir + ext-os-slash + "giacenza." + sis-aa + sis-mm(directory di log configurata +giacenza.+ anno + mese correnti). - Prepara maschera e controlli.
Ricalcolo (per ogni prodotto/magazzino)¶
- Scansione COGMOMAG per magazzino/merce; per ciascun movimento legge la testata (COGTESBO) e la causale (COGTABEL tipo 15). Se la causale non e' "in giacenza" (
euta-cb-con-gia <> 'SI') il movimento e' escluso. - In base al tipo anagrafico (C = vendite, F = acquisti) e al segno
mag-entrusc(E/U), accumula le quantita' intot-a-qta(acquisti) etot-v-qta(vendite). - Calcola la rimanenza finale
tot-f-qta = tot-a-qta - tot-v-qta, sommando le giacenze mensili precedenti (mav-qta-gia). - Rilegge il saldo attuale da COGSLMAG (
msal-qta) — rilettura eseguita al momento per intercettare aggiornamenti concorrenti di altri programmi. - Correzione del saldo (solo se l'articolo gestisce giacenza,
map-fl-gia = 'S'): - se
msal-qta <> tot-f-qtaemsal-qta = tot-g-qta-precedente(il saldo letto coincide con quello del gruppo precedente, quindi non e' una differenza indotta da un aggiornamento concorrente), impostamsal-qta = tot-f-qtae registra la ricostruzione nel log giacenza (v31-scrivi-log-giacenza).
Questa guardia (msal-qta = tot-g-qta-precedente) evita di sovrascrivere un saldo che nel frattempo e' stato legittimamente aggiornato da un altro programma (es. COGU12 richiamato durante l'elaborazione).
Log di ricostruzione saldo (COGLOG)¶
Introdotto a luglio 2026. Quando corregge un saldo, COGV31 scrive una riga nello stesso file mensile giacenza.YYYYMM usato dall'aggiornamento giacenze (COGU12), cosi' che la ricostruzione risulti tracciata nella storia dei movimenti di quell'articolo/magazzino.
- Attivazione: controllata dalla configurazione RNEWCONF
log-su-giacenzadel gruppoCOGESYS(letta inx99-confinell'areatm-cfg-log, sotto-flagtutto/gia/imp/ord/pren/esteso). Il log e' scritto solo se e' attiva la posizione 1 (logga tutto) o la posizione 2 (logga la giacenza):if tm-cfg-log-tutto not = "S" and tm-cfg-log-gia not = "S" exit paragraph. - Tracciato: identico a COGU12 (copybook condivisa
coglog-rec.cpy, estratta da COGU12 proprio per essere riusata qui). La riga di ricostruzione halgg-tipo = "R"(Ricostruzione saldo). - Apertura file (
v31-scrivi-log-giacenza): tentaopen extend; se il file non esiste (stato35) lo crea inopen outpute scrive prima la riga di intestazione colonne (v31-log-registra-testa); gestisce il lock (stato93) con retry. - Campi valorizzati:
lgg-data/lgg-ora(data/ora sistema),lgg-program-id = "COGV31",lgg-nota = "Ricostruzione saldo",lgg-descrizione = mer-descr,lgg-mag = magz-cod,lgg-merce(gru/sot/cod),lgg-qta-old/lgg-old-qta = tot-g-qta(saldo precedente),lgg-qta-new/lgg-new-qta = tot-f-qta(saldo ricostruito),lgg-causale = 0.
Le righe di tipo
Rprodotte da COGV31 sono lette insieme a quelle di COGU12 dagli strumenti di analisi dei loggiacenza.YYYYMM.
Configurazioni RNEWCONF¶
Lette in x99-confi (pacchetto "C", 2 chiavi):
| Gruppo | Chiave | Uso |
|---|---|---|
| causali | addebito-imballi | Causale per l'aggiornamento dei saldi imballi (tm-cfg-cau-add-imballi) |
| COGESYS | log-su-giacenza | Attivazione e livello del log giacenza (tm-cfg-log) |
Note tecniche¶
- Solo i prodotti con flag "gestisce giacenza" (
map-fl-gia = 'S') vengono elaborati. - Il file COGLOG e' dichiarato manualmente nel sorgente (SELECT
assign to random w-nome-coglog, organization line sequential,file status stato) e nella FD, concopy "coglog-rec.cpy"; e' aggiunto alle declaratives (coglog). - La copybook
coglog-rec.cpye' stata estratta dalla definizione inline che era in COGU12, per condividere lo stesso tracciato tra i due programmi. - Se configurato (azienda con gestione imballi), aggiorna anche i saldi imballi (
b22-aggiorna-saldi-imballi) per i movimenti in data successiva al consolidamento imballi.
Vedi anche¶
- COGU12 - Aggiornamento giacenze (produttore principale del log
giacenza.YYYYMM) - COGW58 - Ricostruzione Giacenza Magazzino Lavorante
- COGR03 - Ricostruzione Impegno Magazzino
- COGV28 - Riorganizzazione Movimenti Magazzino