Vai al contenuto

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)

  1. Lettura configurazione aziendale e abilitazioni operatore.
  2. Da COGTABEL tipo 66: recupero data chiusura esercizio precedente → limite superiore per tm-daint-fi.
  3. Da COGTABEL tipo "BQ": recupero data ultima storicizzazione → limite inferiore per tm-daint-fi.
  4. Display maschera con campi: data fine (tm-daint-fi) e flag prova (tm-prova).

Validazione (x-controlla-tm-daint-fi)

  • tm-daint-fi deve essere <= conta-conchiupre9 (data chiusura esercizio precedente).
  • tm-daint-fi deve 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"):

  1. verifica-saldo: legge tutti i movimenti da COGMOVPA con chiave mov-par-testa = par-chia1.
  2. Calcola saldo (dare/avere), convertendo importi in valuta diversa tramite COGU10W.
  3. Conta movimenti oltre la data (w-num-mov-oltre-data).
  4. Se il movimento ha mov-anno = 55555555 oppure mov-fl-prov <> spaces oppure mov-sosp = "S" → imposta w-fl-spostabile = "N".

  5. Condizione di storicizzazione: saldo = 0 AND w-num-mov-oltre-data = 0 AND w-num-mov > 0 AND w-fl-spostabile = "S".

  6. estrae-movimentiexp-movim: copia ogni movimento (MOV-REC → MLD-REC) con wr-cogoldpa. In caso di errore scrittura chiama recupera-movim per riportare i movimenti già copiati da COGOLDPA a COGMOVPA.

  7. Condizione di completezza: solo se w-num-mov = w-num-mov-storicizzati procede con:

  8. cancella-movimenti: del-cogmovpa per ogni movimento; tiene traccia di w-data-chiusa (data massima dei movimenti).
  9. aggiorna-cogparti: rwr-cogparti con par-fl-storica = "S" e par-data-chiu = w-data-chiusa. In caso di errore rewrite chiama recupera-movim.

  10. 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 > 0 e tm-prova = "N": aggiornamento COGTABEL tipo "BQ" con tm-daint-fi come 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-id e wo-oper per identificare operatore e programma.
  • Il file sequenziale di output è nominato partite-storicizzate-{AAAA}.txt nella cartella ext-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.k03 e cogoldpa.k03 per la scansione per partita (start notmin su chiave 3 = mov-par-testa + mov-paprogrca).
  • Il contatore tm-letti si 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).