COGE27 — Gestione numerazioni Prima Nota Mensile¶
Sorgente: cbl/coge27.cbl | Tipo: interattivo a griglia | Program-ID: coge27
Menu: Contabilita' > Archivi & Tabelle > Tabelle > Numerazioni > Prima Nota Mensile
Scopo¶
Gestisce la tabella delle numerazioni della prima nota contabile quando l'azienda adotta la numerazione mensile (giornale bollato a numerazione per mese). Per un dato anno visualizza una griglia con i dodici mesi (Gennaio-Dicembre) e per ciascun mese il numero di partenza (primo numero libero) della prima nota. L'operatore seleziona l'anno, poi modifica riga per riga il numeratore di ogni mese.
I record gestiti risiedono nella tabella numerazioni COGNUMER con num-tipo = "13" (numerazioni prima nota contabile) e chiave secondaria strutturata come num-cod-r5 (num-r5-ann = anno, num-r5-mes = mese 1-12). Il programma e' attivo solo se l'azienda ha az-num-pno = 'M' (numerazione P.Nota mensile): in caso contrario mostra il messaggio m-pnota-mensile ed esce. Prima di ogni scrittura applica una batteria di controlli di congruenza sui numeratori (progressione crescente, ampiezza massima mensile, coerenza con l'anno precedente e successivo) per impedire di introdurre salti o sovrapposizioni nella numerazione bollata.
File e tabelle principali¶
| File/Tabella | Copybook | Uso |
|---|---|---|
COGNUMER (feurtab) |
cognumer.cpy → num-rec.cpy |
Tabella numerazioni; lettura/scrittura record tipo 13 (P.Nota mensile) e lettura tipo 11 cod 5 (numeratore vecchio) |
| Anagrafica azienda | cogazien.cpy |
Parametri azienda: az-num-pno (tipo numerazione), az-np-aa/az-np-mm (ultimo anno/mese numerato) |
| — | cogcont1.cpy |
Strutture contabili linkage (wcont1) |
Copybook di working/servizio: wstato.cpy, wgrave.cpy, wgrid.cpy, wopenf.cpy, wnscr.cpy, utilgdad.cpy (interfaccia GRIDADMN), utils52.cpy (editing data/anno via COGS52).
Flusso principale¶
apri— inizializzazioni,open-files, lettura azienda (rd-azi); attiva i tasti funzione griglia (w-presenza-invio,w-presenza-sf4-griglia), predispone la maschera e la griglia (z-prepara-tm-grid).a10— imposta l'anno di sistema come default; seaz-num-pno not = 'M'mostram-pnota-mensilee va afine.a-tm-anno— accept dell'anno tramite COGS52 (z-s52-tm-anno); valida conx-controlla-tm-anno(anno >= 1994, non inferiore aaz-np-aa); esegueric-numper caricare i numeratori di riferimento (dic anno-1, gen anno-1, gen anno+1, numeratore vecchio tipo 11/5).- Caricamento tabella per anno: cicla i 12 mesi leggendo
rd-cognumere riempietm-num (j); costruisce la griglia (z-costruisci-grid). a-grid/a-accept-grid— gestione griglia;S-F4apre la personalizzazione colonne (GRIDADMN "GRIDADMN"),F3commuta modalita' Selezione/Aggiornamento,invioin modalita' Aggiornamento apre il dettaglio riga.a-riga-dettaglio/a-tm-num— accept del numeratore del mese; blocca il record in modifica (rd-cognumer-lk); valida conx-controlla-tm-num.a-riga-dettaglio-fine— conferma (acc-conf-custom), aggiorna la griglia via GRIDADMN e scrive il record:wr-cognumer/rwr-cognumergestendonum-numenum-num-ini.ric-num— routine di ricerca dei numeratori adiacenti e del numeratore storico (tipo 11 cod 5).fine/z-chiudi— chiudeCOGNUMER, chiude la window ed esce.
Controlli sui numeratori (x-controlla-tm-num)¶
- Numero > 900000 o >
k-max-num(999999): errore (m-coge27-err05,m-coge27-err12). - Numeratore a zero non ammesso in vari casi (mesi >=
az-np-mm, mese 12, primo avvio):m-coge27-err06. - Coerenza con l'ultimo numero usato dell'azienda (
w-num-old): non puo' essere <= (m-coge27-err07). - Ampiezza mensile (differenza fra numeratore corrente e precedente) non oltre 41665:
m-coge27-err08. - Progressione non decrescente e non uguale rispetto al mese precedente:
m-coge27-err09. - Coerenza gennaio/dicembre con anno adiacente:
m-coge27-err10,m-coge27-err11.
Sottoprogrammi chiamati¶
| Programma | Ruolo |
|---|---|
GRIDADMN |
Gestore griglia (prepara, svuota, add/modify record, personalizzazione colonne) |
COGS52 (via z-s52-tm-anno) |
Editing/validazione campo anno |
Note¶
- Le costanti chiave:
k-num-tipo = "13"(tipo numerazione P.Nota contabile),k-max-ele-tab = 12(dodici mesi),k-max-num = 999999. - La distinzione fra
num-num(primo numero libero) enum-num-ini(numero iniziale del mese) e' rilevante: in scrittura di un record gia' esistente, senum-num = num-num-iniallora entrambi vengono riallineati al nuovo valore, altrimenti si aggiorna solonum-num. - I paragrafi
c-cancella/c1-ctrl-canc(cancellazione riga, tasti CTRL+A/CTRL+E) sono commentati/disattivati: il programma consente solo la modifica dei numeratori dei 12 mesi, non l'inserimento o l'eliminazione di righe. - Il sorgente fa largo uso di
GO TOper la navigazione fra gli accept (pattern legacy tipico delle maschere convertite) e diPERFORM ... THRUresidui (ric-num thru ex-ric-num,c-cancella thru ex-c): sono forme legacy da non replicare in nuovi programmi. z-operazioni-accessorie-gridavverte esplicitamente sul flagfl-sono-su-gridper evitare deadlock con i controlli gestiti da COGS52.