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.
Menu¶
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.cpycogmb0.select,cogmb0.fd,cogmb0.wrkcogua1-t-struttura.fd,cogua1-t-struttura.cpycogmb0-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.cpywgrid.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.cpycogtrans.k01,cogtrans.k02cogtrans.k01replaced versot-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¶
- Inizializzazione (
apri): apre file, legge azienda, legge configurazione classe-raggruppamento viax99-confi. - Validazione input (se richiamato): controlla esistenza commessa in COGTESCM e classe in COGRAGGR; in caso di errore esce.
- Apertura file temporanei (
a4): genera nomi univoci per COGTRANS e T-STRUTTURA inext-tmp-dircon timestamp + operatore. Se file gia' in uso stato93→ blocco "Funzione gia' in uso". - Costruzione albero (
carica-cogtrans): - Chiama COGUA1 con
cogua1-classe = tm-cfg-classe - Apre T-STRUTTURA in input, traversa con
st-t-struttura-notmin+rdnxt-t-struttura - Per ogni record scrive in COGTRANS (
wr-cogtrans) copiando classe, id, livello, padre, ordine - Riempimento griglia (
a10-loop): legge COGTRANS viardnxt-cogtrans(chiave secondaria chia2) e per ogni nodo: - imposta
tm-liv, formattatm-gruppocon indentazione (-per livello 2,---per 3, ecc., fino a 7) - cerca descrizione in COGANRAG (
arag-classe+arag-tip="R"+arag-id) - legge eventuale budget esistente in COGBUDCM (
bdc-commessa+bdc-classe+bdc-id-raggr) e mostrabdc-costo,bdc-ricavo - Loop principale (
a-grid/a-accept-grid): standard pattern griglia tramite GRIDADMN. F3 →a1-aggiorna. - Validazione (
a1-aggiorna→x-controlla-tm-tab-tutto): chiamactr-costo/ctr-ricavoper ogni riga; questi paragrafi risalgono l'albero (viaarag-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). - Persistenza (
b-aggiorna): per ogni riga della griglia legge COGBUDCM; se trovatorwr-cogbudcm, altrimentiwr-cogbudcm. - Chiusura (
z-chiudi): chiude e cancella i file temporanei (delete file).
Configurazione¶
Lettura RNEWCONF con pack "C" (COGE):
- COMMESSE / CLASSE-RAGGR-CENTRI-COSTO → tm-cfg-classe
Note tecniche¶
- Programma legacy: usa
GO TO,PERFORM ... THRUeGO TO ... LOOPnon conformi alle convenzioni attuali (es. ilctr-costo/ctr-ricavoricorsivo 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 = 500sulla griglia (eccesso → messaggio "tabella piena"). - L'indentazione visiva del nome gruppo e' fatta direttamente in
tm-gruppocon stringhe di trattini;tm-gruppo-origmantiene l'id pulito per le scritture.