Vai al contenuto

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

  1. apri / a4 — inizializzazione: ctr-abil, z-99-init-program, x-carica-lingua, rd-azi, open-files. Legge la divisa del conto (get-divisa-contow-currency-conto). Legge la tabella esercizio contabile da COGTABEL (record generalizzato tipo 66):
  2. euta-tipo = 66, euta-codr = 1 → travasato in conta1-rec (COGCONT1: conto di transito reddito + parametri).
  3. euta-tipo = 66, euta-codr = 0 → travasato in conta-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, con w-opn-contabilizzata = "ATT"), salvando il nome file in dep-archiat.
  4. 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 con s52-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 in x-controlla-tm-*; x-imposta-conferma valida l'insieme prima del bottone F3.
  5. a-inizio-dati — su conferma F3 apre il dispositivo di stampa (COGS54, s54-id = "COGC01", s54-chr-stampa = 80) e avvia l'elaborazione.
  6. Ciclo di scansione (a220a280) — scandisce COGSLPCO (start su st-cogslpco-notmin, rdnxt-cogslpco) filtrando sull'anno esercizio precedente (con-anno = tm-eserciziopre-r). Per ogni conto:
  7. Converte prodare/proavere nella divisa del conto (z-u10, operazione k-u10-cambio).
  8. Ad ogni cambio mastro rilegge l'anagrafica piano conti (COGPNCON) per ottenere pco-reddito; se il mastro non e' su piano conti, errore bloccante.
  9. Conti di reddito (pco-reddito = "R" senza conto/sconto) o conto di transito (coincidente con conta1-mastro/conto/sconto): non elaborati singolarmente, si accumulano trandare/tranavere (a270).
  10. Altri conti: perform elabora (calcolo e scrittura saldo di riporto) + perform lista (riga di stampa).
  11. Avanzamento chiave conto in a280 (incremento sconto, roll-over su conto) fino al terminatore 99/99/999999.
  12. 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.
  13. 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, da get-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 TO e PERFORM ... THRU (stile legacy pre-conversione Win, 2004): e' codice esistente e non va rifattorizzato in occasione di correzioni puntuali.
  • Le chiavi secondarie eventualmente necessarie (.k02 ecc.) non sono incluse automaticamente da Screens: il file cogc01.select/.fd include solo le FD con chiave primaria.