Vai al contenuto

COSO10MA -- Estrazione bollettini su MAV

Sorgente: cbl/coso10ma.cbl | Tipo: Programma interattivo | Program-ID: COSO10MA

Menu: Contabilita' > Unione soci/clienti > Bollettini


Scopo

Generazione dell'archivio MAV (Mediante Avviso) in formato CBI a partire dalle partite a debito dei soci presenti nella Prima Nota contabilizzata. Il programma aggrega le partite aperte per socio e per causale, separando imponibile e IVA, ed emette un MAV per ciascun socio con totale superiore alla soglia. In elaborazione definitiva assegna un numero progressivo a ciascun bollettino e aggiorna l'archivio storico dei MAV emessi. Produce contestualmente una stampa di riepilogo.

File e tabelle

File/Tabella Tipo Descrizione
COGTABEL (FEURTAB) Indexed, I-O Tabella generale: contabilita' (tipo 66), mastro/conto soci (tipo 06/97), numero bollettini (tipo 07/3), IVA (tipo 67), zone (tipo 06/90), postazioni (tipo "AH")
COGCOATT Indexed, Input Prima Nota contabilizzata (archivio attivo)
UNANASO Indexed, Input Anagrafica soci/clienti
UNMEMBOL Indexed, Output Storico bollettini MAV emessi (scrittura solo in elaborazione definitiva)
NUTBANAS Indexed, Input Tabella banche assuntrici
COGTRANS Indexed temp, I-O File di lavoro: aggregazione per socio + causale (chiave: causocio + caucomp)
RIBA01 Line sequential, Output File MAV in formato CBI (record 120 byte)
FLSTA Sequential File di stampa riepilogo

Copybook principali

  • coso10ma.wrk / coso10ma.select / coso10ma.fd / coso10ma.prc / coso10ma.decla -- Screen designer
  • cogfiles.cpy -- Definizione file tabella generale
  • cogcoatt.cpy -- Layout Prima Nota contabilizzata
  • k-u10.cpy -- Costanti gestione importi/divise
  • Chiavi: cogcoatt.k02 (chiave per mastro/conto/sottoconto), cogtrans.k01

Tracciati record CBI generati

Tipo Descrizione
IM Record di testata (mittente, ABI assuntrice, data creazione, divisa)
14 Dati pagamento (progressivo, data valuta, causale 07000, importo, ABI/CAB banca, codice debitore)
20 Descrizione aggiuntiva (ragione sociale azienda emittente)
30 Dati anagrafici debitore (ragione sociale, P.IVA o codice fiscale)
40 Indirizzo debitore (via + civico, CAP, comune, provincia)
51 Riferimento ricevuta (numero bollettino)
59 Descrizione libera (avviso di pagamento + totale + descrizione causali)
EF Record di chiusura (totale importi, numero record, numero MAV)

Paragrafi principali

Paragrafo Funzione
apri Inizializzazione, apertura COGTRANS temporaneo, lettura tabella contabilita' tipo 66, apertura COGCOATT
a4 Inizializzazione maschera
a-tm-tab-ban ... a-tm-tipo-elab Accept dei campi maschera
a-richiesta-conferma Validazione e avvio stampa/estrazione (chiama COGS54 per gestione stampante)
stampa (paragrafo a205...a260) Loop principale: scansiona COGCOATT per il mastro/conto soci, applica filtri zona/causale/data, aggrega in COGTRANS
stabol Per ogni socio: lettura COGTRANS, scrittura record MAV
scrivi-mav Costruzione record 14/20/30/40/51/59 per il bollettino corrente
wr-rb / wr-eof Record IM (testata) e EF (coda)
cerca-numbol Lettura e incremento contatore numero bollettino su COGTABEL tipo 07/3
riempi-unmembol Scrittura record storico in UNMEMBOL (solo elaborazione definitiva)

Logica di elaborazione

Aggregazione in COGTRANS

  1. Apertura I-O del file temporaneo COGTRANS (path: ext-tmp-dir/#$coso10ma.<operatore>).
  2. Lettura sequenziale di COGCOATT con chiave alternata 2 (mastro/conto/sottoconto), partendo da mastro/conto soci e da tm-socioda.
  3. Per ogni movimento valido (esclusi effetti, causali 080/081, fuori range date/causali/zona), si accumula su COGTRANS per chiave (socio + causale): imponibile con segno D/A e relativa IVA (calcolata da cogtabel tipo 67 con s99-iva-cod del socio).
  4. Cambio socio: chiamata a stabol che emette il MAV per il socio precedente.

Generazione MAV

  1. Letti i totali per socio da COGTRANS (paragrafi crea-rec-totali, tratta-cogtrans): se totale <= tm-impoav, si salta.
  2. Apertura RIBA01 (path: ext-tmp-dir/MAV01.MAV) al primo socio valido, scrittura record IM.
  3. Per ogni socio: lettura anagrafica (UNANASO), recupero di un nuovo numero bollettino (cerca-numbol in definitiva, oppure 1 in prova), scrittura record 14, 20, 30, 40, 51 e fino a 20 record 59 (un 59 per causale, con descrizione e importo).
  4. A fine elaborazione: scrittura record 70 e EF (totale importi cumulato, conteggio record).
  5. In elaborazione definitiva: per ogni causale del socio si scrive un record UNMEMBOL (chiave: numero bollettino + progressivo).

Filtri applicati durante la scansione

  • Mastro/conto = configurazione tabella tipo 06/97
  • Sottoconto compreso in tm-socioda..tm-socioa
  • Movimenti senza effetti (att-effa = 0)
  • Causale diversa da 080 e 081 (causali tecniche di rate/sospensione)
  • att-datamov compreso in tm-dadata..tm-adata
  • Filtro zona (anas-zona2) se non "tutte le zone"
  • Filtro causali secondo tm-tipo-caus: 1=tutte, 2=elenco incluse, 3=elenco escluse, 4=range, 5=range + elenco
  • Larghezza: 160 caratteri (fissata da k-chr-stampa)
  • Per ciascun bollettino: numero bollettino, denominazione socio, P.IVA o CF, indirizzo, data valuta, importo
  • Footer: totale MAV, archivio creato, totale importo, totale imponibile, numero MAV

CALL esterne

Programma Scopo
COGS52W Accept date con calendario
COGS54 Gestione stampante (selezione device + after-print)
COGS65 Accept codice socio con ricerca
COGS99W Accept codici causale con aiuto (e lettura attributo IVA della causale)
COGU10W Accept/formattazione importi
WIN023 Ricerca banche assuntrici (F8 su campo banca)

Note implementative

  • L'elaborazione "di prova" (tm-tipo-elab = 1) usa numero bollettino fittizio 1 e non scrive UNMEMBOL ne' aggiorna il contatore.
  • Il file COGTRANS viene aperto/chiuso/riaperto piu' volte per resettare il contenuto a ogni cambio socio (paragrafo init-cogtrans).
  • Il numero record progressivo ctr-rek nel record EF include tutti i record scritti compresi IM e EF stesso.
  • Il codice mittente (trrb-cod-mitt = 05387) e il riferimento mittente ('CONFAGRICOLTURA BO') sono hardcoded nel sorgente.
  • Il campo tr14-imp viene moltiplicato per 100 per esprimere l'importo in centesimi (formato CBI).
  • Causale CBI fissa a 07000 per i record 14 (pagamento mediante avviso).