COGC01 — Creazione Saldi Nuovo Esercizio (conti di reddito)¶
Intestazione¶
| Campo | Valore |
|---|---|
| Sorgente | cbl/cogc01.cbl |
| Program-ID | COGC01 |
| Tipo | Programma interattivo GUI (maschera parametri + stampa lista) |
| Posizione menu | Contabilita' > Bilancio > Chiusura/Riapertura Esercizio > Apertura Nuovo Esercizio > Creazione Saldi Nuovo Esercizio |
Scopo¶
COGC01 riporta i saldi dei conti sul nuovo esercizio contabile in fase di apertura. Per ogni conto del piano dei conti calcola il saldo di riporto (prodare - proavere) dell'esercizio precedente e lo scrive come saldo di apertura sull'archivio saldi dell'esercizio nuovo (COGSLPCO).
La logica distingue i conti di reddito dagli altri: i conti di reddito (mastri con pco-reddito = "R") non vengono riportati singolarmente ma confluiscono in un unico conto di transito (letto dalla tabella COGCONT1, tipo 66 codice 1) di cui vengono cumulati dare/avere; alla fine il transito viene aperto sul nuovo esercizio e i totali risalgono su sottoconto, conto e mastro. I conti patrimoniali/altri vengono invece riportati direttamente con il proprio saldo netto.
Il programma produce contestualmente una lista di stampa dei saldi riportati (con totali generali dare/avere) tramite il driver di stampa COGS54.
Puo' operare in due modalita', selezionate dal campo tm-risp:
- "P" (Prova): esegue tutti i calcoli e la lista, ma non scrive su COGSLPCO ne' aggiorna la tabella esercizio (COGCONTA). Serve a verificare il risultato prima del passaggio definitivo.
- "D" (Definitivo): scrive i saldi di apertura su COGSLPCO, aggiorna la tabella dell'esercizio contabile (COGCONTA) con i nuovi anni/date di chiusura e registra su FEURTAB i percorsi degli archivi di prima nota (vecchio e nuovo).
Struttura e flusso¶
Il programma segue il pattern standard delle maschere GUI generate da Screens: sequenza di paragrafi a-tm-* per l'accettazione dei singoli campi, con gestione di F2 (indietro), ESC (annulla), F3 (conferma), F8 (calendario) e spostamento col mouse (x-test-mouse, tab control su control-id 100-199).
apri/a4— inizializzazione:ctr-abil,z-99-init-program,x-carica-lingua,rd-azi,open-files. Legge la divisa del conto (get-divisa-conto→w-currency-conto). Legge la tabella esercizio contabile da COGTABEL (record generalizzato tipo 66):euta-tipo = 66,euta-codr = 1→ travasato inconta1-rec(COGCONT1: conto di transito reddito + parametri).euta-tipo = 66,euta-codr = 0→ travasato inconta-rec(COGCONTA: anni esercizio, date chiusura). Costruisce la maschera pop-up (rd-msk-pop,z-costruisci-controlli) e apre l'archivio prima nota contabilizzato (open-pn-contabilizzata, conw-opn-contabilizzata = "ATT"), salvando il nome file indep-archiat.- Accettazione parametri (
a-tm-esercizio1,a-tm-esercizio2,a-tm-datachiu,a-tm-datami,a-tm-archinuo,a-tm-risp): anno I e II del nuovo esercizio (validati via COGS52W cons52-verifica = "a"), data chiusura, data minima di accettazione, nome archivio prima nota del nuovo esercizio, tipo elaborazione (combo Prova/Definitivo via COGS60W/z-s60-tm-risp). I controlli per-campo sono inx-controlla-tm-*;x-imposta-confermavalida l'insieme prima del bottone F3. a-inizio-dati— su conferma F3 apre il dispositivo di stampa (COGS54,s54-id = "COGC01",s54-chr-stampa = 80) e avvia l'elaborazione.- Ciclo di scansione (
a220–a280) — scandisce COGSLPCO (start sust-cogslpco-notmin,rdnxt-cogslpco) filtrando sull'anno esercizio precedente (con-anno = tm-eserciziopre-r). Per ogni conto: - Converte prodare/proavere nella divisa del conto (
z-u10, operazionek-u10-cambio). - Ad ogni cambio mastro rilegge l'anagrafica piano conti (COGPNCON) per ottenere
pco-reddito; se il mastro non e' su piano conti, errore bloccante. - Conti di reddito (
pco-reddito = "R"senza conto/sconto) o conto di transito (coincidente conconta1-mastro/conto/sconto): non elaborati singolarmente, si accumulanotrandare/tranavere(a270). - Altri conti:
perform elabora(calcolo e scrittura saldo di riporto) +perform lista(riga di stampa). - Avanzamento chiave conto in
a280(incremento sconto, roll-over su conto) fino al terminatore99/99/999999. a800— chiusura ciclo:transito(apre sul nuovo esercizio il conto di transito con i totali reddito accumulati, a livello sottoconto/conto/mastro),totgen(totali generali dare/avere in stampa); se definitivo,aggiornatab.a900/fine/z-chiudi— chiusura stampa (COGS54,s54-after-print = "S"), chiusura file e uscita (z-99-exit-program,exit program).
Calcolo del saldo di riporto (elabora)¶
Se con-prodare = con-proavere il conto e' azzerato e non si scrive nulla. Altrimenti calcola con-saldorip = con-prodare - con-proavere, normalizza i progressivi (lascia il residuo solo sul lato dare o avere), azzera i 12 saldi mensili (con-saldo (01..12)), mette il saldo di riporto in con-saldo (01) e sull'anno nuovo (tm-esercizio-r). In modalita' definitiva scrive/riscrive il record su COGSLPCO (rwr-cogslpco se gia' presente, wr-cogslpco se nuovo); in Prova salta la scrittura (elabora900). La currency del record e' impostata a w-currency-conto.
Aggiornamento tabella esercizio (aggiornatab, solo Definitivo)¶
Rilegge COGTABEL tipo 66 codice 0 in conta-rec e aggiorna: esercizio precedente (conta-cone1/2 ← ex esercizio corrente), esercizio corrente (conta-cones1/2 ← nuovi anni), data chiusura precedente/attuale (conta-conchiupre ← ex conta-conchiuatt, poi conta-conchiuatt* ← tm-datachiu), data minima (conta-dachiu* ← tm-datami). Riscrive con rwr-cogtabel. Chiama inoltre a1-scrivi-cogfiles per registrare su FEURTAB i percorsi archivio prima nota vecchio/nuovo.
Registrazione percorsi archivi (a1-scrivi-cogfiles)¶
Apre FEURTAB in I-O e scrive/aggiorna due record tipo "CO": numero 900 = archivio prima nota attuale (tm-archiat = dep-archiat), numero 901 = archivio prima nota nuovo (tm-archinuo). Per ciascuno imposta il filesystem (set-filesystem-for-fname).
File e tabelle principali¶
| File logico | Record | Chiave / campi rilevanti | Accesso | Uso |
|---|---|---|---|---|
| COGSLPCO | con-rec |
con-mastro, con-conto, con-sconto, con-anno; con-prodare, con-proavere, con-saldo (12), con-saldorip, con-currency |
Input + Scrittura/Riscrittura | Saldi contabili per conto/anno. Letto per l'esercizio precedente, riscritto/creato per il nuovo esercizio (solo Definitivo) |
| COGPNCON | pco-rec |
pco-mastro, pco-conto, pco-sconto; pco-reddito, pco-tipoanagr, pco-des |
Input | Anagrafica piano dei conti: determina se il mastro e' di reddito e la descrizione per la lista |
| COGGEANA | ana-rec |
ana-tipo, ana-cod; ana-nome |
Input | Anagrafica cli/for/trasp: descrizione dei sottoconti anagrafici in stampa (pco-tipoanagr valorizzato) |
| COGTABEL | euta-rec |
euta-tipo = 66, euta-codr; record ridefinito come conta-rec / conta1-rec |
Input + Riscrittura | Tabelle generalizzate: parametri esercizio contabile (codice 0) e conto di transito reddito (codice 1) |
| FEURTAB | fil-rec |
fil-tip = "CO", fil-num (900/901); fil-nome |
I-O | Tabella nomi file: registra i percorsi archivio prima nota vecchio/nuovo |
| COGPNONC | — | — | (aperto in open-files, chiuso in z-chiudi) |
Prima nota (archivio contabilizzato aperto via open-pn-contabilizzata) |
| FLSTA | riga |
rg-pic, dimensione da s54-chr-stampa |
Output | File di stampa (spool) della lista saldi, gestito da COGS54 |
La struttura COGCONTA (conta-rec) e COGCONT1 (conta1-rec) sono due "viste" del record generalizzato COGTABEL tipo 66: conta-rec contiene anni esercizio precedente/corrente e date di chiusura; conta1-rec contiene mastro/conto/sconto del conto di transito reddito piu' i parametri IVA (non usati qui).
Copybook principali¶
Screen Designer (cbl/screens/)¶
| Copybook | Contenuto |
|---|---|
cogc01.select |
SELECT dei file (cogtabel, coggeana, cogpncon, cogslpco, cogpnonc) |
cogc01.fd |
FD dei file gestiti da Screens |
cogc01.wrk |
Working storage maschera: costanti k-m-*-size, id controlli (k-id-tm-esercizio1..risp), tabella opzioni combo tab-opt-tm-risp, tabella nomi file, descrizioni in lingua |
cogc01-01.scr |
Definizione maschera (screen section) |
cogc01.decla |
Declaratives |
cogc01.prc |
Procedure copiate (routine verbi I/O generate) |
Strutture dati e utility (cpy/)¶
| Copybook | Contenuto |
|---|---|
feurtab.fd / cogfiles.cpy |
SELECT/FD e record fil-rec della tabella nomi file |
flsta.fd / flsta.cpy |
SELECT/FD e record riga del file di stampa |
cogslpco.cpy |
Record COGSLPCO (con-rec) |
cogpncon.cpy |
Record COGPNCON (pco-rec) |
coggeana.cpy |
Record COGGEANA (ana-rec) |
cogtabel.cpy |
Record COGTABEL (euta-rec) |
cogconta.cpy |
Vista conta-rec (esercizio contabile) su COGTABEL |
cogcont1.cpy |
Vista conta1-rec (conto di transito reddito) su COGTABEL |
cogazien.cpy |
Dati azienda |
getdcont.cpy |
Routine get-divisa-conto → imposta w-currency-conto |
k-u10.cpy |
Costanti COGU10 (k-u10-cambio, k-u10-edita) |
utils52.cpy / utils54.cpy / utilu10.cpy |
Interfacce COGS52W (calendario/validazione date), COGS54 (stampa), COGU10W (conversione/edit importi) |
wcont.cpy / wcont1.cpy |
Aree linkage per COGSLPCO / COGCONT1 |
wgrave.cpy / wnscr.cpy / wopenf.cpy / wstato.cpy |
Working storage comuni (errori, video, apertura file, stato I/O) |
grave.cpy / stato.cpy / stato1.cpy / winmsg.cpy / opengen.cpy / mmmask.cpy |
Routine comuni fine procedure (errore grave, controllo stato, messaggi, apertura generica, init/exit programma GUI) |
Sottoprogrammi chiamati (CALL)¶
| Programma | Scopo |
|---|---|
| COGS52W | Validazione/gestione data e anno esercizio con calendario (F8); usato per tm-esercizio1/2 (s52-verifica = "a"), tm-datachiu, tm-datami |
| COGS54 | Driver di stampa/spool: apertura dispositivo (s54-id = "COGC01"), righe per pagina (s54-stm-lin), chiusura stampa (s54-after-print) |
| COGU10W | Conversione di divisa (k-u10-cambio) ed edit/arrotondamento importi (k-u10-edita) per calcoli e lista, richiamata via z-u10 |
| COGS60W | Gestione combo-box del campo tipo elaborazione tm-risp (Prova/Definitivo), via z-s60-tm-risp |
Note¶
- L'elaborazione in modalita' "P" (Prova) e' non distruttiva: nessuna scrittura su COGSLPCO, COGCONTA o FEURTAB. Solo "D" (Definitivo) consolida i saldi di apertura e aggiorna la tabella esercizio e i percorsi archivio.
- I conti di reddito non sono riportati singolarmente: i loro dare/avere confluiscono nel conto di transito definito in COGCONT1 (COGTABEL tipo 66 codice 1) e vengono aperti sul nuovo esercizio a livello di sottoconto, conto e mastro (
transito). - Gli importi sono trattati nella divisa del conto (
w-currency-conto, daget-divisa-conto): prodare/proavere letti da COGSLPCO sono convertiti prima del calcolo e la lista/i totali sono editati nella stessa divisa. - Il controllo di rottura pagina in stampa usa
s54-stm-lin(righe fisiche del dispositivo restituite da COGS54), quindi il salto pagina si adatta alla periferica selezionata. - Il sorgente usa ampiamente
GO TOePERFORM ... THRU(stile legacy pre-conversione Win, 2004): e' codice esistente e non va rifattorizzato in occasione di correzioni puntuali. - Le chiavi secondarie eventualmente necessarie (
.k02ecc.) non sono incluse automaticamente da Screens: il filecogc01.select/.fdinclude solo le FD con chiave primaria.