Vai al contenuto

COGV96 — Pulizia e riorganizzazione movimenti di prima nota magazzino

Sorgente: cbl/cogv96.cbl | Tipo: interattivo a maschera (batch di riorganizzazione) | Program-ID: cogv96

Menu: Magazzino > Produzione > Commesse > Creazione da Archivio ; Sistema > Archivi > Riorganizzazioni > Prime Note Magazzino


Scopo

Il programma fonde (compatta) tutti i movimenti di prima nota magazzino di un dato anno, creando un unico movimento aggregato per ogni combinazione magazzino/anno/causale/merce. L'intestazione stessa della maschera lo descrive: "Questo programma fonde tutti i movimenti di prima nota magazzino assieme creando un unico movimento per ogni magazzino/anno". Lo scopo e' recuperare spazio archivio dopo un consolidamento contabile: i singoli movimenti storici di p.n. (tipo bolla "P") vengono cancellati e sostituiti da pochi movimenti di sintesi.

L'elaborazione avviene in due fasi. In una prima fase scandisce le testate bolla (COGTESBO) e i movimenti (COGMOMAG) dell'anno, accumula quantita' e valori in un file di transito indicizzato temporaneo (cogtrans, $#COGV96.001), convertendo eventualmente gli importi nella divisa dell'anno tramite COGU10, e cancella gli originali. In una seconda fase rilegge il transito e ricrea le testate e i movimenti di sintesi (massimo 100 righe per documento) su COGTESBO/COGMOMAG. Il recupero effettivo dello spazio richiede poi la funzione di compattazione archivi.

L'anno elaborabile non puo' superare l'ultimo anno interamente consolidato: la data consolidato viene letta da COGTABEL tipo 57 (euta-dc-*) e confrontata con l'anno richiesto (w-anno-cfr).

File e tabelle principali

File/Tabella Copybook Uso
COGTESBO COGTESBO.CPY, cogtesbo.k01, cogtesbo.k01-agg, cogtesbo.k02 Testate bolla: lettura per anno (chiave secondaria chia2), cancellazione delle p.n. originali, scrittura testate di sintesi
COGMOMAG COGMOMAG.CPY, cogmomag.k01, cogmomag.k01-agg Movimenti di magazzino: lettura per bolla, cancellazione originali, scrittura righe di sintesi
COGTABEL COGTABEL.CPY, cogtabel.k01 Parametri: tipo 57 (data consolidato/riorganizzazione), tipo 15 (causali con flag con-gia/con-val)
cogtrans (FD inline trs-rec), cogtrans.k01 File indicizzato temporaneo di transito per l'accumulo qta/valore per magazzino+causale+merce; nome $#COGV96.001 senza codice operatore
feurtab cogfiles.cpy Tabella file di sistema

Flusso principale

  1. inizio / open-files — apertura file, rd-azi, lettura divisa conto corrente via COGU10 (GetDivisaConto). Costruzione nome file di transito (ext-tmp-dir + $#COGV96.001).
  2. Gestione ripartenza anomala — apre in input cogtrans; se esiste (stato "00") significa che un'elaborazione precedente e' terminata in modo anomalo: emette segnalazione e, se l'operatore preme F1, prosegue senza reinizializzare il transito (fl-open="I"), altrimenti termina.
  3. a3a — display maschera mm-1, lettura data consolidato da COGTABEL tipo 57; se non c'e' consolidamento (w-data-ult=0) esce.
  4. a10 — accettazione anno da elaborare via COGS52; validazione che non superi l'ultimo anno completamente consolidato (w-anno-cfr). Determinazione della divisa dell'anno via COGU10.
  5. a25-acc — richiesta conferma (acc-conf).
  6. a30-loop (Fase 1, selezione e fusione) — scansione testate bolla dell'anno (rdnxt-cogtesbo-lk); considera solo tes-tipob="P". Per ogni testata determina la causale di destinazione in base ai flag con-gia/con-val (tabella tab-causali con combinazioni SS/SN/NS/NN).
  7. a40-loop — scansione movimenti della bolla (rdnxt-cogmomag-lk); accumula qta/valore nel record di transito (converte il valore nella divisa dell'anno via z-u10-mag-valore), poi cancella il movimento (del-cogmomag).
  8. a50 — cancellazione della testata (del-cogtesbo) e registrazione evento tramite GESEVLOG (tipo k-evl-canc-cogtesbo).
  9. a80 / a100-loop (Fase 2, ricreazione) — rilettura del transito ordinato; per ogni cambio magazzino/causale o superamento delle 100 righe scrive una nuova testata (a1-scrivi-testata); scrive la riga di movimento di sintesi su COGMOMAG calcolando prezzo = valore/qta e arrotondandolo via COGU10 (Arrotonda).
  10. a200 / a200-cancel — messaggio di fine, chiusura ed eventuale delete file cogtrans (se creato ex-novo), z-chiudi.

Sottoprogrammi chiamati

Programma Ruolo
COGU10 Conversione/arrotondamento importi in divisa (GetDivisaConto, Cambio, Arrotonda) e divisa dell'anno
COGS52 Accettazione/verifica dell'anno di elaborazione
GESEVLOG Registrazione evento di cancellazione testata (log eventi)

Configurazioni (RNEWCONF)

Nessuna chiave RNEWCONF utilizzata. I parametri di controllo (data consolidato, causali) sono letti da COGTABEL.

Note

  • Il file di transito viene creato volontariamente senza codice operatore (nome fisso $#COGV96.001) "per essere sicuri di trovarlo agevolmente in caso di problemi" (commento nel sorgente); da qui la gestione esplicita della ripartenza anomala all'avvio.
  • Elaborazione a forte impatto: cancella fisicamente le prime note originali dell'anno e le sostituisce con movimenti di sintesi. La maschera avverte esplicitamente ("ATTENZIONE !!!") e sottolinea che il recupero spazio richiede la successiva funzione di compattazione archivi.
  • Titolo runtime mostrato: "Pulizia Movimenti di Prima Nota Magazzino"; prog-err/w-nome-hlp valorizzati con "COGV28".
  • Codice legacy: uso estensivo di GO TO e delle etichette a30-loop/a40-loop/a100-loop per i cicli, e PERFORM intesta THRU-like non presente qui ma numerose GO TO ...loop. La ripartenza search-file usa un GO TO ... DEPENDING ON. Il paragrafo z-chiudi chiude cogmomag cogtesbo cogtabel ed esce dal programma.
  • La conversione divisa dei valori usa la data movimento mag-da2 come data cambio.