Vai al contenuto

COGR03 - Ricostruzione impegno magazzino

Sorgente: cbl/cogr03.cbl | Tipo: Programma di menu / elaborazione | Program-ID: COGR03

Menu: Sistema > Archivi > Ricostruzioni [Impegno Magazzino]


Scopo

COGR03 ricostruisce la quantita' impegnata di magazzino (msal-qta-impegnata sul saldo merce/magazzino COGSLMAG). Per ogni coppia merce/magazzino ricalcola l'impegno da zero facendo sommare l'impegnato da vendite e l'impegnato da produzione tramite la subroutine di disponibilita' COGU23, poi registra la variazione con COGU12 (aggiornamento saldo). L'obiettivo e' riallineare il saldo impegnato ai valori derivati dagli ordini/documenti aperti, correggendo eventuali disallineamenti accumulati.

L'esecuzione e' interattiva: maschera con selezione (opzionale) di una singola merce e di un singolo magazzino; se lasciati vuoti elabora tutte le merci e tutti i magazzini.

File e tabelle principali

File/Tabella Copybook Uso
COGMAGAZ cogmagaz.fd (magz-rec) Elenco magazzini (tipo M): ciclo esterno su tutti i magazzini o filtro sul magazzino scelto
COGMERCI cogmerci.fd (mer-rec) Anagrafica merce: ciclo interno su tutte le merci o filtro sulla merce scelta
COGMERAP cogmerap.fd (map-rec) Anagrafica prodotto/parametri: flag gestione giacenza map-fl-gia (le merci con map-fl-gia = "N" sono saltate)
COGSLMAG cogslmag.fd (msal-rec) Saldo merce/magazzino: lettura del vecchio msal-qta-impegnata e destinazione della ricostruzione (aggiornato via COGU12)

Flusso principale

  1. main / apri - init, ctr-abil, rd-azi, open-files; costruisce il nome del file di log <prog>.LOG (usato da COGU23 in silent-mode); prepara la maschera "Ricreazione Impegni Magazzino".
  2. Accept maschera: a-tm-merce (gruppo/sottogruppo/codice merce, con aiuto S68/S68W), a-tm-mag (codice magazzino, aiuto F8 via send-w36). Merce e magazzino sono entrambi facoltativi. F3 -> a-fine-dati.
  3. a-fine-dati - x-controlla-dati valida merce e magazzino, conferma (acc-conf), poi lancia ciclo-mag. Al termine esegue cancel "COGU23" e mostra "Ricostruzione impegni terminata".
  4. ciclo-mag - scandisce COGMAGAZ per i soli record di tipo M; se e' stato indicato un magazzino elabora solo quello. Per ogni magazzino esegue ciclo-art.
  5. ciclo-art - scandisce COGMERCI (tutte o la merce indicata); salta la merce (chiave sentinella 999999999 non applicabile qui) se map-fl-gia = "N" sulla relativa COGMERAP, altrimenti esegue tratta-art.
  6. tratta-art - legge il saldo COGSLMAG per merce+magazzino salvando old-qta-impegnata; chiama lancia-cogu23; il nuovo impegno e' new-qta-impegnata = u23-o-imp-ven + u23-o-imp-prd. Rilegge il saldo: se nel frattempo l'impegnato e' cambiato (concorrenza) ripete tratta-art. Se il nuovo valore differisce, registra la variazione con COGU12.
  7. lancia-cogu23 - chiama COGU23 con u23-tip = "S", u23-data-da = datasis (data odierna), merce e magazzino correnti, u23-silent-mode = "S" e nome del file di log; ottiene in u23-o-imp-ven (impegnato da vendite) e u23-o-imp-prd (impegnato da produzione).

Sottoprogrammi chiamati

Programma Ruolo
COGU23 Calcolo disponibilita'/impegno merce-magazzino: restituisce impegnato da vendite (u23-o-imp-ven) e da produzione (u23-o-imp-prd) alla data
COGU12 Aggiornamento saldo di magazzino: registra la variazione dell'impegnato (tipo I, entrata/uscita U, con giacenza) sulla base di qta-old/qta-new; scrive log movimento
COGS68W / COGS52 / COGS60 / COGS93 / COGS95 Gestori ausiliari maschera e selezione merce (z-carica-*)
SEND-W36 Aiuto magazzino sede (sendw36.cpy)
DIALOGS / box-msg / vbx-msg Dialoghi e messaggistica

Parametri COGU12 (aggiornamento saldo)

Per registrare la variazione dell'impegno il programma imposta: u12-tipo = "I" (impegno), u12-mag, u12-merce, u12-qta-old = old-qta-impegnata, u12-qta-new = new-qta-impegnata, u12-con-gia = "SI", u12-entrusc = "U", u12-program-id, u12-nota = "tratta-art".

Note

  • Il programma non riscrive direttamente COGSLMAG: la scrittura del saldo e del relativo log passa sempre da COGU12, coerentemente con il canale unico di aggiornamento giacenze.
  • u12-causale e u12-tor-impegno non vengono valorizzati (commento nel sorgente): non e' possibile sapere se il valore originario e' cambiato, quindi la registrazione avviene senza causale/impegno di riferimento.
  • Prima della lettura del nuovo saldo il programma verifica la coerenza rileggendo COGSLMAG: se msal-qta-impegnata e' cambiato rispetto a old-qta-impegnata ripete l'elaborazione della merce (gestione concorrenza).
  • Le merci con map-fl-gia = "N" (non gestite a giacenza) sono escluse.
  • Il codice usa PERFORM ... THRU e GO TO (sorgente legacy pre-convenzioni attuali).