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¶
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".- Accept maschera:
a-tm-merce(gruppo/sottogruppo/codice merce, con aiuto S68/S68W),a-tm-mag(codice magazzino, aiuto F8 viasend-w36). Merce e magazzino sono entrambi facoltativi. F3 ->a-fine-dati. a-fine-dati-x-controlla-dativalida merce e magazzino, conferma (acc-conf), poi lanciaciclo-mag. Al termine eseguecancel "COGU23"e mostra "Ricostruzione impegni terminata".ciclo-mag- scandisceCOGMAGAZper i soli record di tipoM; se e' stato indicato un magazzino elabora solo quello. Per ogni magazzino esegueciclo-art.ciclo-art- scandisceCOGMERCI(tutte o la merce indicata); salta la merce (chiave sentinella999999999non applicabile qui) semap-fl-gia = "N"sulla relativaCOGMERAP, altrimenti eseguetratta-art.tratta-art- legge il saldoCOGSLMAGper merce+magazzino salvandoold-qta-impegnata; chiamalancia-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) ripetetratta-art. Se il nuovo valore differisce, registra la variazione con COGU12.lancia-cogu23- chiama COGU23 conu23-tip = "S",u23-data-da = datasis(data odierna), merce e magazzino correnti,u23-silent-mode = "S"e nome del file di log; ottiene inu23-o-imp-ven(impegnato da vendite) eu23-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-causaleeu12-tor-impegnonon 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: semsal-qta-impegnatae' cambiato rispetto aold-qta-impegnataripete l'elaborazione della merce (gestione concorrenza). - Le merci con
map-fl-gia = "N"(non gestite a giacenza) sono escluse. - Il codice usa
PERFORM ... THRUeGO TO(sorgente legacy pre-convenzioni attuali).