COGC05 — Contabilizzazione articolo di chiusura C/Economico¶
Sorgente: cbl/cogc05.cbl | Tipo: interattivo a maschera con elaborazione batch | Program-ID: cogc05
Menu: Contabilita' > Bilancio > Chiusura/Riapertura Esercizio > Contabilizz. Art.Chiusura C/Econ.
Scopo¶
Contabilizza in prima nota l'articolo di chiusura del conto economico, trasferendo i movimenti generati (e depositati nell'archivio provvisorio ??ECONO.ARC) nella prima nota definitiva e aggiornando i saldi progressivi. Contestualmente produce il giornale bollato su file di stampa e riporta i movimenti nell'archivio della prima nota dell'anno precedente.
Per ogni movimento letto dal conto di transito, il programma: aggiorna i saldi progressivi a livello di sottoconto, conto e mastro (COGSLPCO); scrive il movimento nell'archivio prima nota anno attuale (COGCOATT) e anno precedente (COGCOPRE); accoda la riga al file del giornale bollato. I saldi dei conti di reddito (piano conti con pco-reddito = "R") vengono girocontati sull'apposito conto di transito indicato nell'esercizio contabile (conta1-mastro/conto/sconto). Al termine verifica la quadratura (totale Dare = totale Avere): se non quadra segnala di ripristinare gli archivi.
File e tabelle principali¶
| File/Tabella | Copybook | Uso |
|---|---|---|
COGTABEL (feurtab) |
cogfiles.cpy |
Esercizio contabile: euta-tipo 66 con euta-codr 1 → conta1-rec (conto di transito reddito) e euta-codr 0 → conta-rec (esercizio corrente). Anche euta-tipo "AF" per euta-doc-reddito |
COGTRANS = ??ECONO.ARC |
cogpnonc.cpy (replacing pno-→trs-) |
Conto di transito: movimenti dell'articolo di chiusura da contabilizzare; scandito per chiave trs-chia3 |
COGCOATT |
cogcoatt.cpy |
Prima nota contabilizzata anno attuale (att-rec); scritta con wr-cogcoatt |
COGCOPRE |
cogcopre.cpy |
Prima nota contabilizzata anno precedente (pre-rec); scritta con write pre-rec (anno conta-conepre) |
COGSLPCO |
cogcont1.cpy |
Saldi progressivi per conto (con-rec): con-prodare, con-proavere, con-saldo(mese), con-currency; aggiornati per sottoconto/conto/mastro |
COGPNCON |
cogpncon.cpy |
Piano dei conti: lettura del mastro per determinare pco-reddito |
FEURLAV = GIORNA#$.ARC |
(record lav-rec pic x(300)) |
File sequenziale del giornale bollato (aperto in output); ogni movimento vi viene scritto con write lav-rec from pno-rec |
Copybook di servizio: cogconta.cpy (conta-rec/conta1-rec), cogpnonc.cpy (pno-rec), utile65.cpy, utils25.cpy, utils52.cpy (data articolo), utilu10.cpy/k-u10.cpy (cambio/edit divisa).
Flusso principale¶
apri— init,open-files; legge esercizio contabile (euta-tipo 66,codr 1inconta1-rececodr 0inconta-rec); compone il nome del conto di transito??ECONO.ARCdaconta-cone1.apri38c/apri40/apri50— apre in inputCOGTRANSe in I/O gli archivi prima nota contabilizzata attuale (COGCOATT,nf-name-att) e precedente (COGCOPRE,nf-name-pre) tramiteopen-pn-contabilizzata; compone il nome del file giornaleGIORNA#$.ARC.a4/a-tm-risp1— maschera: chiede conferma (tm-risp1) che il salvataggio degli archivi sia stato eseguito prima di procedere; avviso sul ripristino in caso di fine anomala.a-inizio-dati— conferma finale (acc-conf,F3); apre in outputFEURLAV; scandisce il transito dast-cogtrans-notmin-chia3.a220— loop di lettura movimenti (rdnxt-cogtrans); per ogni movimento legge il mastro sul piano conti per ricavarepco-reddito; richiama in sequenzaaggiornasaldo,aggiornaconto,aggiornamastr.a225— se conto di reddito, sostituisce mastro/conto/sottoconto con il conto di transito (conta1-*); converte l'importo in Euro (COGU10W); scrive il movimento inCOGCOATT.a227/a230— scrive la riga sul giornale bollato (FEURLAV); scrive il movimento nell'archivio anno precedente (COGCOPRE, gestendo eventuale data effettivapno-eff*); aggiornaeuta-doc-redditoin tabella (euta-tipo "AF").a240— accumula totali Dare/Avere (totd/tota); aggiorna la maschera con documento, data articolo e conto in lavorazione.a800— a fine scansione edita i totali; setotd not = totasegnala chiusura non quadrata; altrimenti mostra il riepilogo.aggiornasaldo/aggiornaconto/aggiornamastr(fino aex-*) — aggiornano i saldi progressivi (COGSLPCO) rispettivamente a livello di sottoconto, conto e mastro, per l'anno corrente e (sepno-effa) per l'anno precedente, creando il record saldo se assente; conversione divisa viaCOGU10W.fine/z-chiudi— chiude tutti gli archivi ed esce.
Sottoprogrammi chiamati¶
| Programma | Ruolo |
|---|---|
COGU10W |
Cambio ed editing importi in divisa (k-u10-cambio, k-u10-edita) |
COGS52W |
Editing/formattazione della data articolo (s52-data-edit) |
Note¶
- Il programma non elabora se il transito
??ECONO.ARCnon contiene movimenti ("Nessun Movimento da Contabilizzare"). - La quadratura Dare/Avere e' un controllo a posteriori: se fallisce, i movimenti sono gia' stati scritti negli archivi, per questo la maschera richiede esplicita conferma del salvataggio preventivo e avvisa di ripristinare gli archivi in caso di anomalia.
- Gli errori gravi su saldi, giornale o archivi prima nota interrompono l'elaborazione (
go to fine) con messaggio di ripristino: l'elaborazione non e' transazionale. - Il sorgente usa estesamente
GO TOfra i paragrafi di apertura/elaborazione (a220..a240,aggiorna*55/100/200) ePERFORM ... THRU(cstato thru ex-cstato,aggiornasaldo thru ex-aggiornasaldo, ecc.): forme legacy della conversione, da non replicare. - A fine procedure division sono incluse manualmente le chiavi secondarie del conto di transito:
cogtrans.k00ecogtrans.k03.