Vai al contenuto

COGMB0 - Budget per Commessa

Scopo

Gestione del budget (costo/ricavo) per commessa, distribuito sui nodi della struttura ad albero dei raggruppamenti centri di costo. La struttura ad albero viene costruita a runtime da COGUA1 (subroutine di traversamento) e salvata in due file di transito.

I budget effettivi sono persistiti in COGBUDCM con chiave commessa + classe + id-raggruppamento.

Vendite > Commesse > Tabelle > Budget

File e tabelle

File Tipo Descrizione
FEURTAB Parametri File parametri di ambiente
COGTESCM Indicizzato Testate commesse (lettura descrizione)
COGRAGGR Indicizzato Classi di raggruppamento
COGANRAG Indicizzato Anagrafica nodi raggruppamento (tip="R")
COGBUDCM Indicizzato Budget per commessa (rd/wr/rwr)
COGTRANS File temporaneo Albero raggruppamenti (chiave secondaria su trs-ord)
T-STRUTTURA File temporaneo Output COGUA1 (struttura traversata)

Copybook

File e select

  • feurtab.fd, cogfiles.cpy
  • cogmb0.select, cogmb0.fd, cogmb0.wrk
  • cogua1-t-struttura.fd, cogua1-t-struttura.cpy
  • cogmb0-01.scr, cogmb0.decla, cogmb0.prc

Working-storage standard

  • wgrave.cpy, wnscr.cpy, wopenf.cpy, wstato.cpy, cogazien.cpy

Utility

  • utilu10.cpy, utilu20.cpy, utilncnf.cpy
  • wgrid.cpy, utilgdad.cpy, utilcogua1.cpy

Linkage

  • wcont.cpy, wcont1.cpy, utilcogmb0.cpy

Procedure finali

  • grave.cpy, mmmask.cpy, opengen.cpy, stato.cpy, stato1.cpy, winmsg.cpy
  • cogtrans.k01, cogtrans.k02
  • cogtrans.k01 replaced verso t-struttura

CALL

Programma Scopo
GRIDADMN Gestione griglia (Prepara, custom)
COGUA1 Traversamento struttura ad albero raggruppamenti
RNEWCONF Lettura configurazione COMMESSE / CLASSE-RAGGR-CENTRI-COSTO

Logica di elaborazione

  1. Inizializzazione (apri): apre file, legge azienda, legge configurazione classe-raggruppamento via x99-confi.
  2. Validazione input (se richiamato): controlla esistenza commessa in COGTESCM e classe in COGRAGGR; in caso di errore esce.
  3. Apertura file temporanei (a4): genera nomi univoci per COGTRANS e T-STRUTTURA in ext-tmp-dir con timestamp + operatore. Se file gia' in uso stato 93 → blocco "Funzione gia' in uso".
  4. Costruzione albero (carica-cogtrans):
  5. Chiama COGUA1 con cogua1-classe = tm-cfg-classe
  6. Apre T-STRUTTURA in input, traversa con st-t-struttura-notmin + rdnxt-t-struttura
  7. Per ogni record scrive in COGTRANS (wr-cogtrans) copiando classe, id, livello, padre, ordine
  8. Riempimento griglia (a10-loop): legge COGTRANS via rdnxt-cogtrans (chiave secondaria chia2) e per ogni nodo:
  9. imposta tm-liv, formatta tm-gruppo con indentazione (- per livello 2, --- per 3, ecc., fino a 7)
  10. cerca descrizione in COGANRAG (arag-classe+arag-tip="R"+arag-id)
  11. legge eventuale budget esistente in COGBUDCM (bdc-commessa+bdc-classe+bdc-id-raggr) e mostra bdc-costo, bdc-ricavo
  12. Loop principale (a-grid/a-accept-grid): standard pattern griglia tramite GRIDADMN. F3 → a1-aggiorna.
  13. Validazione (a1-aggiornax-controlla-tm-tab-tutto): chiama ctr-costo/ctr-ricavo per ogni riga; questi paragrafi risalgono l'albero (via arag-id-padre) e cercano altri nodi che abbiano gia' un valore non zero — se trovati, scartano l'inserimento (regola: costo/ricavo solo su foglie o solo su nodi senza discendenti valorizzati).
  14. Persistenza (b-aggiorna): per ogni riga della griglia legge COGBUDCM; se trovato rwr-cogbudcm, altrimenti wr-cogbudcm.
  15. Chiusura (z-chiudi): chiude e cancella i file temporanei (delete file).

Configurazione

Lettura RNEWCONF con pack "C" (COGE): - COMMESSE / CLASSE-RAGGR-CENTRI-COSTOtm-cfg-classe

Note tecniche

  • Programma legacy: usa GO TO, PERFORM ... THRU e GO TO ... LOOP non conformi alle convenzioni attuali (es. il ctr-costo/ctr-ricavo ricorsivo via GO TO).
  • I file temporanei COGTRANS e T-STRUTTURA sono univoci per operatore + timestamp: il lock previene esecuzioni concorrenti dello stesso operatore.
  • Limite k-max-ele-tab = 500 sulla griglia (eccesso → messaggio "tabella piena").
  • L'indentazione visiva del nome gruppo e' fatta direttamente in tm-gruppo con stringhe di trattini; tm-gruppo-orig mantiene l'id pulito per le scritture.