COGY46 - Storicizza Partite Clienti/Fornitori¶
Descrizione¶
Storicizza le partite contabili di clienti e fornitori completamente chiuse con tutti i movimenti entro la data indicata. Sposta i movimenti da COGMOVPA a COGOLDPA e aggiorna il flag par-fl-storica = "S" su COGPARTI. Supporta modalità prova (tm-prova = "S") che simula l'elaborazione senza scrivere.
Il programma usa un file di lock (COGTRANS) per impedire esecuzioni concorrenti dello stesso operatore. Al termine produce un file sequenziale TSV con l'elenco delle partite storicizzate, apribile in Excel tramite chiamata a GRIDTOXS.
Tabelle utilizzate¶
| Tabella | Accesso | Descrizione |
|---|---|---|
| COGPARTI | Read/Rewrite (indexed, key=par-chia1) | Partite clienti/fornitori — tabella principale di scansione |
| COGMOVPA | Read/Delete (indexed, key3=notmin partita) | Movimenti partite correnti — letti per verifica e cancellati dopo storicizzazione |
| COGOLDPA | Write (indexed) | Archivio storico movimenti — destinazione dei movimenti storicizzati |
| COGTABEL (tipo 66) | Read | Parametri contabili esercizio: data chiusura esercizio precedente (conta-conchiupre9) |
| COGTABEL (tipo "BQ") | Read/Write | Traccia la data dell'ultima storicizzazione eseguita |
| COGTRANS | Output/I-O con lock | File di lock per esclusione accesso concorrente |
| FEURTAB | Read | Tabella file di sistema (nomi path archivi) |
Flusso di elaborazione¶
Inizializzazione (paragrafo apri / a4)¶
- Lettura configurazione aziendale e abilitazioni operatore.
- Da COGTABEL tipo 66: recupero data chiusura esercizio precedente → limite superiore per
tm-daint-fi. - Da COGTABEL tipo "BQ": recupero data ultima storicizzazione → limite inferiore per
tm-daint-fi. - Display maschera con campi: data fine (
tm-daint-fi) e flag prova (tm-prova).
Validazione (x-controlla-tm-daint-fi)¶
tm-daint-fideve essere <=conta-conchiupre9(data chiusura esercizio precedente).tm-daint-fideve essere >=tm-ultima-stor(data ultima storicizzazione).
Conferma¶
- Modalità effettiva: doppia conferma esplicita con F3.
- Modalità prova: singola conferma.
Elaborazione (fase1)¶
Scansione sequenziale di COGPARTI (start notmin su par-patipcli = "C"):
Per ogni partita non già storicizzata (par-fl-storica <> "S"):
verifica-saldo: legge tutti i movimenti da COGMOVPA con chiavemov-par-testa = par-chia1.- Calcola saldo (dare/avere), convertendo importi in valuta diversa tramite COGU10W.
- Conta movimenti oltre la data (
w-num-mov-oltre-data). -
Se il movimento ha
mov-anno = 55555555oppuremov-fl-prov <> spacesoppuremov-sosp = "S"→ impostaw-fl-spostabile = "N". -
Condizione di storicizzazione:
saldo = 0ANDw-num-mov-oltre-data = 0ANDw-num-mov > 0ANDw-fl-spostabile = "S". -
estrae-movimenti→exp-movim: copia ogni movimento (MOV-REC → MLD-REC) conwr-cogoldpa. In caso di errore scrittura chiamarecupera-movimper riportare i movimenti già copiati da COGOLDPA a COGMOVPA. -
Condizione di completezza: solo se
w-num-mov = w-num-mov-storicizzatiprocede con: cancella-movimenti:del-cogmovpaper ogni movimento; tiene traccia diw-data-chiusa(data massima dei movimenti).-
aggiorna-cogparti:rwr-cogparticonpar-fl-storica = "S"epar-data-chiu = w-data-chiusa. In caso di errore rewrite chiamarecupera-movim. -
Ogni partita storicizzata con successo produce una riga nel file sequenziale (formato TSV: TipoAnag, CodAnag, Anno, Tipo, NumPartita, ProgPartita, DataApertura, DataChiusura, Dare, Avere, Stato).
Post-elaborazione¶
- Se
tm-scritti-mov > 0etm-prova = "N": aggiornamento COGTABEL tipo "BQ" contm-daint-ficome nuova data ultima storicizzazione. - Proposta apertura file Excel tramite call
GRIDTOXS(ope="apri-file").
Note implementative¶
- Il file di lock COGTRANS viene aperto in OUTPUT (per creare/truncare) e poi riaperto in I-O WITH LOCK. Il nome file include
ext-tmp-dir,k-program-idewo-operper identificare operatore e programma. - Il file sequenziale di output è nominato
partite-storicizzate-{AAAA}.txtnella cartellaext-arc-dir. - La conversione valutaria è delegata a COGU10W (subroutine k-u10-cambio) per uniformare tutti gli importi nella divisa del conto.
- Il programma usa
cogmovpa.k03ecogoldpa.k03per la scansione per partita (start notmin su chiave 3 =mov-par-testa+mov-paprogrca). - Il contatore
tm-lettisi aggiorna ogni 333 record (modulo 333) per feedback visivo all'utente senza penalizzare le prestazioni. - La configurazione cliente (
tm-cfg-cliente) permette di limitare la storicizzazione a un singolo cliente (usato raramente per test o recupero selettivo).