Vai al contenuto

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.cpynum-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

  1. 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).
  2. a10 — imposta l'anno di sistema come default; se az-num-pno not = 'M' mostra m-pnota-mensile e va a fine.
  3. a-tm-anno — accept dell'anno tramite COGS52 (z-s52-tm-anno); valida con x-controlla-tm-anno (anno >= 1994, non inferiore a az-np-aa); esegue ric-num per caricare i numeratori di riferimento (dic anno-1, gen anno-1, gen anno+1, numeratore vecchio tipo 11/5).
  4. Caricamento tabella per anno: cicla i 12 mesi leggendo rd-cognumer e riempie tm-num (j); costruisce la griglia (z-costruisci-grid).
  5. a-grid / a-accept-grid — gestione griglia; S-F4 apre la personalizzazione colonne (GRIDADMN "GRIDADMN"), F3 commuta modalita' Selezione/Aggiornamento, invio in modalita' Aggiornamento apre il dettaglio riga.
  6. a-riga-dettaglio / a-tm-num — accept del numeratore del mese; blocca il record in modifica (rd-cognumer-lk); valida con x-controlla-tm-num.
  7. a-riga-dettaglio-fine — conferma (acc-conf-custom), aggiorna la griglia via GRIDADMN e scrive il record: wr-cognumer/rwr-cognumer gestendo num-num e num-num-ini.
  8. ric-num — routine di ricerca dei numeratori adiacenti e del numeratore storico (tipo 11 cod 5).
  9. fine / z-chiudi — chiude COGNUMER, 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) e num-num-ini (numero iniziale del mese) e' rilevante: in scrittura di un record gia' esistente, se num-num = num-num-ini allora entrambi vengono riallineati al nuovo valore, altrimenti si aggiorna solo num-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 TO per la navigazione fra gli accept (pattern legacy tipico delle maschere convertite) e di PERFORM ... THRU residui (ric-num thru ex-ric-num, c-cancella thru ex-c): sono forme legacy da non replicare in nuovi programmi.
  • z-operazioni-accessorie-grid avverte esplicitamente sul flag fl-sono-su-grid per evitare deadlock con i controlli gestiti da COGS52.