COGC02 — Creazione articolo di chiusura conti di reddito¶
Intestazione¶
| Campo | Valore |
|---|---|
| Sorgente | cbl/cogc02.cbl |
| Program-ID | COGC02 |
| Tipo | Programma interattivo con maschera (Screen Designer) |
| Posizione menu | Contabilita' > Bilancio > Chiusura/Riapertura Esercizio > Creazione Art.Chiusura C/Reddito |
Scopo¶
COGC02 genera l'articolo contabile di chiusura dei conti di reddito (costi e ricavi) a fine esercizio. Scorre i saldi progressivi del piano dei conti (COGSLPCO), individua i conti di reddito e produce, per ciascuno, una scrittura di prima nota in doppia partita che azzera il conto contro il relativo conto di riepilogo (tipicamente il conto economico / profitti e perdite).
Le scritture generate non vengono inserite direttamente nella prima nota definitiva: sono scritte in un archivio di transito (ECONO.ARC, file logico cogtrans) creato in open output. Al termine, previa conferma dell'operatore, il programma richiama COGC03 per la stampa/consolidamento dell'articolo di chiusura.
L'operatore inserisce da maschera i parametri dell'articolo (data articolo, data di competenza economica, tipo operazione, descrizione sui movimenti); la data effettiva e l'esercizio sono ricavati dalla tabella dati contabili (COGTABEL tipo 66, record conta-rec).
Struttura / Flusso¶
Il programma segue lo schema standard "maschera con accept in sequenza + GO TO tra paragrafi di campo" tipico dei programmi contabili convertiti a Windows.
apri/main: controllo abilitazione (ctr-abil), init programma (z-99-init-program), caricamento lingua, lettura azienda (rd-azi), apertura file (open-files). Attiva i tasti funzione F3 (conferma), F8 (calendario) e F8 (aiuto tipo operazione).- Legge da COGTABEL il record esercizio contabile (
euta-tipo = 66,euta-codr = 0) e lo travasa inconta-rec. - Costruisce il nome fisico dell'archivio di transito
cogtransinw-trs-name:ext-arc-dir+ slash OS +conta-cone1(2:3)+"ECONO.ARC". -
Costruisce e visualizza la maschera (
rd-msk-pop,z-costruisci-controlli). -
a4(ricarica dati maschera): rilegge COGTABEL tipo 66, imposta l'esercizio visualizzato (tm-esercizio1/tm-esercizio2daconta-cone1/conta-cone2), la data di chiusura precedente (conta-conchiupre*) come data effettiva e come data di competenza proposta, formatta le date via COGS52W e imposta la descrizione di default"CHIUSURA CONTI DI REDDITO " + conta-conchiuprea. -
Accept dei campi (ognuno un paragrafo con navigazione F2 = campo precedente, ESC, F-event mouse):
a-tm-dataart— data articolo (via COGS52W, con calendario F8).a-tm-data-competenza— data di competenza economica del documento (via COGS52W).a-tm-t-o— tipo operazione (accept, con aiuto F8 tramite COGE65).a-tm-descri— descrizione sui movimenti.-
a-inizio-dati— validazione complessiva (x-imposta-conferma) e attesa conferma F3. -
Elaborazione (da
a-inizio-dati): open output cogtrans; se il file e' gia' in uso (stato ≠ "00") esce con messaggio "Funzione gia' in uso!!!".a220/a220-loop: scan sequenziale di COGSLPCO (st-cogslpco-notmin+rdnxt-cogslpco) su tutti i conti; per ogni saldo progressivo:- salta i record con
con-annodiverso dall'esercizio (tm-esercizio); - a ogni cambio mastro rilegge COGPNCON (
rd-cogpncon) per verificare che il mastro sia sul piano dei conti; - considera solo i conti di reddito (
pco-reddito = "R"); - verifica che il conto di riepilogo sia completo (
pco-riemastro/pco-rieconto/pco-riesotconon a zero), altrimenti blocca con messaggio; - scarta i mastri (record con
con-sconto = 0); - doppia passata governata da
fl-fine: nella prima passata (" ") elabora i conti con saldo dare < avere, nella seconda ("F") quelli con dare > avere, in modo da separare i due segni nell'articolo; - se
con-prodare ≠ con-proavere, chiamax1-wr-pnoche scrive le due righe contrapposte incogtrans.
- salta i record con
a800: alterna le due passate (" "→"F"), poi ferma il clessidra.-
a805: chiede conferma stampa ("Vuoi la stampa dell'articolo?"); su F3 chiude i file e chiama COGC03. -
fine/z-chiudi: chiusura file (cogpncon,cogtrans,feurtab,cogslpco), chiusura finestra,z-99-exit-program,exit program.
Generazione delle righe di prima nota (x1-wr-pno)¶
Per ogni conto di reddito con saldo non pareggiato genera due righe contrapposte nel record pno-rec (poi copiato in trs-rec e scritto con wr-cogtrans):
- Riga sul conto di riepilogo (
pco-riemastro/pco-rieconto/pco-riesotco), importo= con-prodare − con-proavere, segno"D"se dare > avere altrimenti"A". - Riga sul conto di reddito (
con-mastro/con-conto/con-sconto), con segno invertito rispetto alla prima.
Numerazione documento: alla prima scrittura (ctr = 1) x11-agg-num richiama COGS25 (progressivo tipo 5, anno/mese dalla data articolo) per ottenere il numero documento (documento); il progressivo riga (pno-pro) e' incrementato per ogni scrittura. La data di competenza economica (pno-data-econ) e' valorizzata con tm-data-competenza (modifica 060919; in precedenza usava pno-datamov). Anno prima nota (pno-anno) = conta-cones9 (esercizio in corso).
Controlli di campo¶
x-controlla-tm-dataart— data articolo obbligatoria e non anteriore alla data effettiva.x-controlla-tm-data-competenza— segnala (non bloccante) se la data di competenza differisce dalla data di chiusura precedente inconta-conchiupre*.x-controlla-tm-t-o— tipo operazione esistente su COGTABEL tipo 65 (ne recupera la descrizioneeuta-descr).x-controlla-tm-descri— descrizione movimento obbligatoria.
File e tabelle principali¶
| File logico | Record | Modalita' | Uso |
|---|---|---|---|
| COGSLPCO | con-rec |
Input (scan) | Saldi progressivi piano dei conti. Chiave con-chia (con-mastro, con-conto, con-sconto, con-anno); importi con-prodare / con-proavere, con-currency. Fonte dei saldi da chiudere |
| COGPNCON | pco-rec |
Input | Anagrafica piano dei conti. Usa pco-reddito (flag conto di reddito "R") e il conto di riepilogo pco-riemastro / pco-rieconto / pco-riesotco |
cogtrans (ECONO.ARC) |
trs-rec |
Output | Archivio di transito delle scritture di chiusura generate. Record con layout prima nota (cogpnonc.cpy con prefisso trs-); chiavi multiple (trs-chia, trs-chia2, trs-chia3, trs-cc, trs-valuta, trs-partita, trs-chia7 = trs-data-econ + trs-chia) |
| COGTABEL | euta-rec |
Input | Tabelle generiche contabili. Tipo 66 = esercizio contabile (letto in conta-rec); tipo 65 = tipi operazione |
| FEURTAB | fil-rec |
Input | Tabella nomi file (cogfiles.cpy) |
Il record di prima nota generato usa pno-rec (cogpnonc.cpy): chiave pno-chia (pno-anno, pno-docum, pno-pro), conto (pno-mastro/pno-conto/pno-sconto), importo pno-importo, pno-segno, pno-data-econ, pno-to, pno-des, pno-currency.
Copybook principali¶
Screen Designer (gestiti dal tool Screens, non presenti in cpy/)¶
| Copybook | Contenuto |
|---|---|
cogc02.select |
SELECT dei file |
cogc02.fd |
FD dei file |
cogc02.wrk |
Working storage della maschera |
cogc02.decla |
Declaratives |
cogc02-01.scr |
Definizione screen |
cogc02.prc |
Paragrafi di accesso ai file (verbi rd-/st-/rdnxt-/wr-) |
Strutture dati¶
| Copybook | Contenuto |
|---|---|
cogfiles.cpy |
FD di FEURTAB (fil-rec) |
cogconta.cpy |
Record conta-rec (dati contabili generici: esercizio, date di chiusura) |
cogpnonc.cpy |
Record prima nota pno-rec (usato sia come layout sia, con replacing "pno-" by "trs-", come record di cogtrans) |
cogazien.cpy |
Dati azienda |
wcont.cpy / wcont1.cpy |
Aree di lavoro contabili (linkage) |
wgrave.cpy / wnscr.cpy / wopenf.cpy / wstato.cpy |
Working storage comuni |
feurtab.fd |
FD tabella file Eurosystem |
cogtrans.k00 |
Verbi di accesso al file di transito cogtrans |
Utility (interfacce di CALL)¶
| Copybook | Contenuto |
|---|---|
utile65.cpy |
Interfaccia COGE65 (util-e65: e65-called, e65-caller, e65-out-cod) |
utils25.cpy |
Interfaccia COGS25 (util-s25: s25-i-mag, s25-i-cod, s25-i-aa, s25-i-mm, s25-o-num) |
utils52.cpy |
Interfaccia COGS52W (util-s52: s52-ope, s52-data, s52-data-edit, s52-exception, s52-o-control-id) |
Fine procedure division¶
grave.cpy, mmmask.cpy, opengen.cpy, stato.cpy, stato1.cpy, winmsg.cpy, cogc02.prc, cogtrans.k00.
Sottoprogrammi chiamati (CALL)¶
| Programma | Sorgente | Scopo |
|---|---|---|
| COGS52W | cbl/cogs52w.cbl |
Edit/gestione date con calendario (data articolo, data effettiva, data competenza) |
| COGE65 | cbl/coge65.cbl |
Aiuto/gestione tabella tipi operazione (F8 sul campo tipo operazione) |
| COGS25 | cbl/cogs25.cbl |
Assegnazione numero documento progressivo (tipo 5) per l'articolo di chiusura |
| COGC03 | cbl/cogc03.cbl |
Stampa / consolidamento dell'articolo di chiusura generato in cogtrans |
Note¶
- L'archivio
cogtrans(ECONO.ARC) e' dichiarato manualmente nel sorgente (SELECT/FD nel corpo del programma) e non tramite Screen Designer; il suo record e' derivato dacogpnonc.cpyconreplacing leading "pno-" by "trs-". I verbi di accesso arrivano dacogtrans.k00. - L'
open output cogtransserve anche da lock funzionale: se il file e' gia' aperto da un'altra sessione, la creazione fallisce e il programma segnala "Funzione gia' in uso!!!". - La doppia passata su COGSLPCO (
fl-fine" "poi"F") raggruppa nell'articolo prima i conti a saldo avere e poi quelli a saldo dare; non e' un filtro sui dati ma un ordinamento del risultato. - Modifica 060919: introdotta la gestione esplicita della data di competenza economica (
tm-data-competenza), proposta uguale alla data di chiusura precedente e riportata supno-data-econdi ogni riga generata (in precedenza si usavapno-datamov). - Il segno delle due righe generate e' sempre contrapposto (doppia partita): una sul conto di reddito, l'altra sul conto di riepilogo indicato in anagrafica piano dei conti.
- Se un conto di reddito ha il conto di riepilogo mancante o incompleto, l'elaborazione si interrompe con messaggio bloccante (non genera un articolo parziale).