COGR04 - Ricostruzione ordinato di magazzino¶
Intestazione¶
| Campo | Valore |
|---|---|
| Programma | COGR04 |
| Sorgente | cbl/cogr04.cbl |
| Tipo | Interattivo (batch di ricostruzione con maschera di avanzamento) + modalita' silent chiamata |
| Modulo | Sistema |
| Posizione menu | Sistema > Archivi > Riorganizzazioni > P.N. non Contabilizz. (vedi Nota sulla voce di menu) |
Scopo¶
COGR04 ricostruisce la quantita' ordinata memorizzata nei saldi di magazzino (msal-qta-ordinata) a partire dagli ordini fornitore ancora aperti. L'intestazione del sorgente lo descrive come "Ricreazione qta ordinata in giacenza" in due fasi:
- Fase A — Azzeramento totale di
msal-qta-ordinatasu tutti i saldi (cogslmag). - Fase B — Ricreazione dell'ordinato: legge gli ordini ancora aperti e, per ogni riga aperta che gestisce la giacenza, somma all'ordinato la quantita' residua
ROR-QTAORD - ROR-QTACONS.
Il programma ha due percorsi di esecuzione:
- Interattivo (avvio da menu): maschera "Ricreazione Ordinato" con conferma F3, esegue Fase A e Fase B su tutti i saldi mostrando i contatori di righe lette/scritte.
- Chiamato / silent (
r04-called = "COGR04-CALLED"): ricostruisce l'ordinato di una sola merce/magazzino (c-singolo) e ritorna al chiamante la quantita' letta e quella scritta; l'aggiornamento del saldo passa da COGU12.
Tabelle / file coinvolti¶
| File | Copybook | Campo chiave | Uso |
|---|---|---|---|
cogslmag |
cogslmag.cpy |
msal-chia1 (msal-merce = gru/sot/cod, msal-mag1) |
Saldi di magazzino; campo aggiornato: msal-qta-ordinata. Azzerato in Fase A, ricalcolato in Fase B |
cogtesor |
cogtesor.cpy |
tor-chia (tor-tipo = 'F') |
Testate ordini fornitore; filtri: tor-chiu, tor-impegno, tor-causale, tor-magaz |
cogrigor |
cogrigor.cpy (chiave .k04) |
ror-chia1 / ror-chia4 (ror-merce) |
Righe ordine; quantita': ror-qtaord, ror-qtacons; stato: ror-flagchiu |
cogtabel |
cogtabel.cpy |
euta-tipo = 15, euta-cod = tor-causale |
Causali documento: euta-cb-con-gia (primo carattere "S" = la causale gestisce la giacenza) |
cogmerap |
(via rd-cogmerap) |
map-merce (gru/sot/cod) |
Anagrafica merci di appoggio: map-fl-gia = "N" → merce non a giacenza (esclusa) |
coglog |
FD locale log-rec |
— | File di log (line sequential) scritto in modalita' silent quando una riga ordine e' senza testata |
Logica di elaborazione¶
Fase A - Azzeramento (a-azz-ord)¶
Scandisce tutto cogslmag (start su msal-chia1 = low-values, poi read next); per ogni saldo azzera msal-qta-ordinata e riscrive (rewrite msal-rec). Aggiorna i contatori tm-r-l (lette) e tm-r-s (scritte) mostrati a video con W$FLUSH a blocchi.
Fase B - Ricreazione (b-agg-ord)¶
- Scandisce
cogtesora partire dator-tipo = 'F'. Per ogni testata: - salta se
tor-tipo not = 'F', setor-chiu = 'C'(ordine chiuso), setor-impegno = "NO"; - legge la causale (
cogtabeltipo 15) e salta se non trovata o seeuta-cb-con-gia (1:1) not = "S"(causale che non gestisce la giacenza). - Per la testata valida, scandisce le righe
cogrigorcon chiave testata (ror-chia1). Per ogni riga: - salta se
ror-flagchiu = 'C'o seror-qtacons >= ror-qtaord(nulla di residuo); - controlla la merce su
cogmerap: semap-fl-gia = 'N'la riga e' saltata; - somma al saldo: legge/crea il record
cogslmagper merce+magazzino (tor-magaz) e calcolamsal-qta-ordinata = msal-qta-ordinata + ror-qtaord - ror-qtacons, poirewrite. - Aggiorna i contatori lette/scritte a video.
Al termine mostra "Ricostruzione Ordinato terminata." e chiude.
Modalita' silent / singola merce (c-singolo)¶
Attivata quando r04-called = "COGR04-CALLED". Ricalcola l'ordinato per la sola merce/magazzino ricevuti (r04-merce, r04-mag):
- Legge il saldo corrente, memorizza
r04-qta-letta = msal-qta-ordinatae azzera l'ordinato in memoria; se la merce non gestisce la giacenza (map-fl-gia = "N") salta il ricalcolo. - Scandisce le righe ordine aperte della merce (
cogrigorchiave.k04,ror-tipo = "F",ror-flagchiu = " "); per ogni riga con residuo verifica la testata (cogtesor) — se assente scrive un record di log (x1-scrivi-log) — e i filtri chiusura/impegno/magazzino/causale (tipo 15,euta-cb-con-gia), quindi sommaror-qtaord - ror-qtaconsall'ordinato. - In
c-50confronta il ricalcolo con la lettura iniziale; se il saldo e' cambiato nel frattempo ripetec-singolo. L'aggiornamento del saldo e' delegato a COGU12 (util-u12:u12-tipo = "O"ordinato,u12-qta-old/u12-qta-new,u12-entrusc = "E",u12-con-gia = "SI"), che restituisce anche la traccia sul log giacenze. - Ritorna al chiamante
r04-qta-lettaer04-qta-scritta.
Chiamate / COPY rilevanti¶
| Elemento | Tipo | Scopo |
|---|---|---|
| COGU12 | CALL (util-u12) |
Aggiornamento saldo/ordinato di magazzino con tracciatura (modalita' silent, c-singolo) |
| W$FLUSH | CALL di sistema | Refresh video dei contatori di avanzamento |
rd-cogmerap |
PERFORM | Lettura anagrafica merci (flag giacenza map-fl-gia) |
rd-cogtabel |
PERFORM | Lettura causale documento (tipo 15) |
wr-sal / inssaldo.cpy |
PERFORM / COPY | Creazione record saldo mancante |
Copybook principali:
wgrave.cpy,wnscr.cpy,wopenf.cpy,wstato.cpy,cogazien.cpy— working-storage standard.utilu12.cpy(util-u12) — area scambio con COGU12.- Linkage:
wcont.cpy(stringhe),utilr04.cpy(util-r04:r04-called,r04-caller,r04-mag,r04-merce,r04-silent-mode,r04-nome-log,r04-qta-letta,r04-qta-scritta),wcont1.cpy. - Screen:
cogr04-01.scr; procedure:cogr04.prc,cogr04.decla; chiave secondaria righe ordine:cogrigor.k04.
Note¶
- Voce di menu: in
prog.txtCOGR04 compare in due posizioni. Sotto Riorganizzazioni ha la label "P.N. non Contabilizz.", ma il comportamento reale del sorgente riguarda la ricreazione dell'ordinato di magazzino (saldicogslmag), non le prime note contabili; la stessa funzione compare piu' coerentemente sotto Ricostruzioni con la label "Ordinato Magazzino". La label "P.N. non Contabilizz." risulta quindi disallineata rispetto alla logica implementata. - La modalita'
c-singoloviene richiamata da altri programmi per riallineare l'ordinato di una singola merce senza rielaborare l'intero magazzino; l'aggiornamento passa da COGU12 per garantire la tracciatura sul log giacenze. - Filtri di validita' riga: causale che gestisce la giacenza (
cogtabeltipo 15,euta-cb-con-gia), ordine non chiuso (tor-chiu/ror-flagchiu), impegno diverso da "NO", quantita' residua positiva, merce a giacenza (map-fl-gia). source-computer/object-computerdichiaratirmcobol(residuo storico); il programma e' comunque eseguito in ambiente AcuCOBOL.- Vedi flusso Sistema - Archivi (Riorganizzazioni/Ricostruzioni).
Documentazione tecnica -- creata 2026-08-07