Vai al contenuto

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)

  1. z-99-init-program, ctr-abil, rd-azi, open-files, x99-confi (configurazioni).
  2. Se richiamato da COGV10/COGV11/COGV31-CALLED, imposta fl-called e i filtri dal chiamante.
  3. Se v31-silent-mode = "S", salta la maschera.
  4. 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).
  5. Prepara maschera e controlli.

Ricalcolo (per ogni prodotto/magazzino)

  1. 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.
  2. In base al tipo anagrafico (C = vendite, F = acquisti) e al segno mag-entrusc (E/U), accumula le quantita' in tot-a-qta (acquisti) e tot-v-qta (vendite).
  3. Calcola la rimanenza finale tot-f-qta = tot-a-qta - tot-v-qta, sommando le giacenze mensili precedenti (mav-qta-gia).
  4. Rilegge il saldo attuale da COGSLMAG (msal-qta) — rilettura eseguita al momento per intercettare aggiornamenti concorrenti di altri programmi.
  5. Correzione del saldo (solo se l'articolo gestisce giacenza, map-fl-gia = 'S'):
  6. se msal-qta <> tot-f-qta e msal-qta = tot-g-qta-precedente (il saldo letto coincide con quello del gruppo precedente, quindi non e' una differenza indotta da un aggiornamento concorrente), imposta msal-qta = tot-f-qta e 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-giacenza del gruppo COGESYS (letta in x99-confi nell'area tm-cfg-log, sotto-flag tutto/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 ha lgg-tipo = "R" (Ricostruzione saldo).
  • Apertura file (v31-scrivi-log-giacenza): tenta open extend; se il file non esiste (stato 35) lo crea in open output e scrive prima la riga di intestazione colonne (v31-log-registra-testa); gestisce il lock (stato 93) 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 R prodotte da COGV31 sono lette insieme a quelle di COGU12 dagli strumenti di analisi dei log giacenza.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, con copy "coglog-rec.cpy"; e' aggiunto alle declaratives (coglog).
  • La copybook coglog-rec.cpy e' 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