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
- Apertura I-O del file temporaneo COGTRANS (path:
ext-tmp-dir/#$coso10ma.<operatore>).
- Lettura sequenziale di COGCOATT con chiave alternata 2 (mastro/conto/sottoconto), partendo da mastro/conto soci e da
tm-socioda.
- 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).
- Cambio socio: chiamata a
stabol che emette il MAV per il socio precedente.
Generazione MAV
- Letti i totali per socio da COGTRANS (paragrafi
crea-rec-totali, tratta-cogtrans): se totale <= tm-impoav, si salta.
- Apertura RIBA01 (path:
ext-tmp-dir/MAV01.MAV) al primo socio valido, scrittura record IM.
- 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).
- A fine elaborazione: scrittura record 70 e EF (totale importi cumulato, conteggio record).
- 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
Stampa riepilogo
- 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).