COGK86 - Stampa coassicurazioni raggruppata per compagnia¶
Panoramica¶
Programma di stampa (report tabulare a 132 colonne) del modulo Coassicurazioni. Su richiesta di un intervallo di date e di un tipo di stampa (Quietanze / Incassi / Non incassati), estrae i movimenti di coassicurazione (COASSMOV), li appoggia in un file di lavoro indicizzato temporaneo e produce un elenco raggruppato per compagnia assicuratrice: per ogni compagnia stampa intestazione (anagrafica, coordinate bancarie, agente) e le righe di quietanza/incasso, con totali parziali per compagnia e un totale generale finale. La stampa e' avviata da maschera GUI con conferma F3.
Posizione nel menu¶
| Menu | Percorso |
|---|---|
| Contabilita' | Coassicurazioni > Stampe > Elenchi raggruppati per compagnia |
Struttura del programma¶
File e tabelle utilizzati¶
| File/Tabella | Tipo | Descrizione |
|---|---|---|
| FEURTAB | Input | Tabella di sistema (nomi file / percorsi) |
| COASSMOV | Input | Movimenti di coassicurazione (quietanze/incassi per polizza); scanditi per chiave primaria (data-eff) o secondaria csm-chia2 (data-incasso) |
| COGCOASS | Input | Anagrafica polizze in coassicurazione (contraente, compagnie, agenti, percentuali di riparto) |
| COGGEANA | Input | Anagrafica generale (compagnie tipo "C", agenti tipo "F"): nome, indirizzo |
| COGAPPOG | Input | Dati di appoggio anagrafica (ABI, CAB, c/c, IBAN-CIN) per compagnia |
| COGBNCA | Input | Anagrafica banche/agenzie (descrizione per ABI tipo "B" e CAB tipo "S") |
| LAVORO | I-O | File indicizzato temporaneo di transito (#$COGK86.<operatore> in ext-tmp-dir); riordina i movimenti per compagnia/ramo/polizza/date |
Copybook principali¶
| Copybook | Descrizione |
|---|---|
| feurtab.fd / cogfiles.cpy | SELECT/FD e record della tabella di sistema |
| coggeana.fd / coggeana.cpy | SELECT/FD e record anagrafica generale |
| cogcoass.fd / cogcoass.cpy | SELECT/FD e record polizze coassicurazione (coa-rec) |
| coassmov.fd / coassmov.cpy | SELECT/FD e record movimenti coassicurazione (csm-rec) |
| cogappog.fd / cogappog.cpy | SELECT/FD e record dati di appoggio bancari |
| cogbnca.fd / cogbnca.cpy | SELECT/FD e record anagrafica banche |
| flsta.fd / flsta.cpy | File di stato/stampa standard |
| costanti.cpy | Costanti generali |
| wstato / wgrave / wopenf / wnscr | Stato I/O, errori gravi, apertura file, gestione video |
| cogazien.cpy | Dati azienda (az-int, intestazione) |
| UTILS54 / UTILS52 / UTILS21 / UTILW06 / utils65 | Aree linkage subroutine di stampa (COGS54), data (COGS52W), combo (COGS60W) e utility |
| WCONT.CPY / WCONT1.CPY | Aree di linkage standard (parametro stringhe) |
| stato / stato1 / winmsg / grave / open1 / mmmask | Routine di stato verbi, messaggi, errori gravi, apertura generica, maschera |
| coggeana.k01 / cogcoass.k01 / coassmov.k01 / coassmov.k03 / cogappog.k01 / cogbnca.k01 | Routine di I/O per chiave (k03 = chiave secondaria coassmov per data-incasso) |
Chiamate a sottoprogrammi (CALL)¶
| Programma | Scopo |
|---|---|
| COGS52W | Gestione ed edit del campo data (input date maschera, formattazione data per la stampa) |
| COGS60W | Gestione del combo-box "Tipo di stampa" (Quietanze / Incassi / Non incassati) |
| COGS54 | Apertura sessione di stampa (file report, righe per pagina s54-stm-lin) e chiusura post-stampa |
Logica di elaborazione¶
1. Inizializzazione (apri / a000)¶
Imposta il nome programma per help/errori, verifica l'abilitazione (ctr-abil), inizializza il programma (z-99-init-program), legge i dati azienda (rd-azi), apre i file di sistema (open-files) e i file di coassicurazione (open-coassic: COGCOASS e COASSMOV in input dalla directory arc). Costruisce il nome del file di lavoro temporaneo con directory temporanea e codice operatore. Abilita F3 (conferma) e F8 (calendario). Visualizza la maschera "Stampa di Controllo" (rd-msk-pop), costruisce i controlli (combo tipo) e crea/riapre in I-O il file LAVORO; se il file e' gia' in uso segnala "Funzione gia` in uso dall'operatore" ed esce.
2. Richiesta parametri (a4 - a-tm-tipo)¶
Inizializza la maschera con tipo default "Q" e richiede in sequenza:
- Data Inizio (a-tm-daint-in): data obbligatoria, editata via COGS52W;
- Data Fine (a-tm-daint-fi): obbligatoria, con controllo che sia >= Data Inizio;
- Tipo di stampa (a-tm-tipo): combo COGS60W con opzioni Quietanze (Q) / Incassi (I) / Non Incassati (N).
La navigazione tra campi e' gestita a GO TO con supporto mouse (x-test-mouse), ESC per uscire/tornare indietro e F2 per il campo precedente. F3 (z-99-exception-form) porta a a-riga-fine.
3. Avvio stampa (a-riga-fine / a-riga-fine-ok)¶
Verifica finale dei parametri (x-imposta-conferma), apre la finestra di appoggio e la sessione di stampa via COGS54. In base al tipo scelto:
- tipo "I" (Incassi): esegue elabora2 (scan su chiave secondaria per data-incasso);
- altrimenti (Q / N): esegue elabora (scan su data-eff).
Al termine chiama stampa per produrre il report.
4. Elaborazione quietanze/non incassati (elabora)¶
Si posiziona su COASSMOV con st-coassmov-notmin (data-eff = data inizio) e scorre con rdnxt-coassmov, scartando i movimenti fuori dall'intervallo [Data Inizio, Data Fine] su csm-data-eff. Per ogni movimento valido legge la polizza (rd-cogcoass con deleg/ramo/npol) e, per ciascuna compagnia dell'elemento csm-ele-assicura (fino a compagnia = zero), scrive un record nel file LAVORO con importi di quietanza (netto/lordo), incasso, provvigione, ritenuta d'acconto, date, contraente. Chiave di LAVORO: compagnia / ramo / npol / data-eff / data-inca.
5. Elaborazione incassi (elabora2)¶
Analogo a elabora ma si posiziona con st-coassmov-notmin-chia2 (chiave secondaria csm-chia2 = data-incasso) e filtra su csm-data-incasso nell'intervallo. Popola il file LAVORO con gli stessi campi.
6. Stampa del report (stampa)¶
Scorre il file LAVORO in ordine di chiave (compagnia / ramo / polizza / date). Alla rottura di compagnia (tmp-compagnia not = lav-compagnia):
- emette la riga di totale parziale (i5) della compagnia precedente;
- stampa il tratto separatore e le righe di intestazione compagnia:
- riga 1 (i1): codice/nome compagnia (da COGGEANA tipo "C"), c/c e CIN (da COGAPPOG);
- riga 2 (i2): ABI + descrizione banca e CAB + descrizione agenzia (da COGBNCA tipi "B" e "S");
- riga 3 (i3): codice/nome agente (da COGGEANA tipo "F") e le etichette di colonna.
Per ogni riga di dettaglio (riga 4, i4) stampa contraente, ramo, polizza, percentuale, importi lordo/netto, tipo Q/P, provvigione, ritenuta d'acconto, accumulando nei totali parziali (w-tot*) e generali (wt-tot*). Il contenuto della riga dipende dal tipo: per "Q" usa il premio (quietanza) e data effetto; per "N" (non incassati) usa il premio solo se incasso lordo e netto sono zero; per "I" usa l'incasso e data incasso solo se valorizzati. Alla fine (a3-99-exit) stampa l'ultimo totale parziale, il tratto di asterischi e il totale generale (i6). L'intestazione di pagina (x5-intesta) riporta azienda, tipo di stampa, intervallo date, data di stampa e numero pagina.
7. Chiusura (fine-sta / fine)¶
Chiude la sessione di stampa (COGS54 after-print), la finestra di appoggio, i file di coassicurazione e di sistema, elimina il file LAVORO (delete file), chiude la finestra ed esegue z-99-exit-program.
Note tecniche¶
- File di lavoro temporaneo per riordino: il programma non stampa direttamente da COASSMOV; costruisce un file indicizzato temporaneo (LAVORO) con chiave primaria compagnia/ramo/polizza/date, il che consente il raggruppamento per compagnia in fase di stampa. Il file e' univoco per operatore (
#$COGK86.<wo-oper>) e viene cancellato in chiusura. - Espansione riga per compagnia: un singolo movimento COASSMOV puo' generare piu' righe di LAVORO, una per ciascuna compagnia co-assicuratrice presente in
csm-ele-assicura(max 30). L'agente e la percentuale sono per-compagnia. - Doppio percorso di scansione: quietanze/non incassati scanditi per data-eff (chiave primaria), incassi per data-incasso (chiave secondaria
csm-chia2, con duplicati). La ritenuta d'acconto e' presa dacsm-impo-ritacsenza ricalcolo (a differenza di COGK87 che la calcola se mancante). - Coordinate bancarie: la banca/agenzia sono risolte con doppia lettura di COGBNCA (tipo "B" per la banca via ABI, tipo "S" per l'agenzia via CAB), con c/c e IBAN-CIN letti da COGAPPOG.
- Discrepanza commento: l'intestazione della screen definisce il titolo maschera come "Stampa di Controllo", mentre la funzione di menu e' "Elenchi raggruppati per compagnia": il raggruppamento effettivo del report e' per compagnia (rottura su
lav-compagnia). - Programma non generato da Screens: struttura scritta a mano (autore Claudio, 03/01/2004), non esistono i file
.select/.fd/.wrk/.prcincbl/screens/(solo.version). La screen section, i paragrafi di richiesta parametro e le routine di I/O sono codificati direttamente nel sorgente, con navigazione aGO TOtipica dei programmi di stampa piu' datati.