COGK90 - Stampa coassicurazioni raggruppata per polizza¶
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 ramo/polizza: per ogni polizza stampa una sezione con intestazione di colonne e le righe di quietanza/incasso, con totali parziali per polizza e un totale generale finale. Variante di COGK86, con la stessa logica di estrazione ma rottura sul ramo/numero-polizza anziche' sulla compagnia. Avviato da maschera GUI con conferma F3.
Posizione nel menu¶
| Menu | Percorso |
|---|---|
| Contabilita' | Coassicurazioni > Stampe > Elenchi raggruppati per polizza |
Struttura del programma¶
File e tabelle utilizzati¶
| File/Tabella | Tipo | Descrizione |
|---|---|---|
| FEURTAB | Input | Tabella di sistema (nomi file / percorsi) |
| COASSMOV | Input | Movimenti di coassicurazione; scanditi per chiave primaria (data-eff) o secondaria csm-chia2 (data-incasso) |
| COGCOASS | Input | Anagrafica polizze in coassicurazione (contraente, compagnie, agenti, percentuali) |
| COGGEANA | Input | Anagrafica generale (compagnie tipo "C") per la descrizione compagnia in stampa |
| COGAPPOG | Input | Dati di appoggio bancari (aperto ma non usato nel report per polizza) |
| COGBNCA | Input | Anagrafica banche (aperto ma non usato nel report per polizza) |
| LAVORO | I-O | File indicizzato temporaneo di transito (#$COGK90.<operatore>); riordina i movimenti per 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 (intestazione stampa) |
| 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 | 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 e chiusura post-stampa |
Logica di elaborazione¶
1. Inizializzazione (apri / a000)¶
Come COGK86: nome programma, ctr-abil, z-99-init-program, rd-azi, apertura file di sistema e di coassicurazione, nome file di lavoro (#$COGK90.<wo-oper>), abilitazione F3/F8, maschera "Stampa Polizze Di Controllo", creazione/riapertura in I-O del file LAVORO con controllo di uso esclusivo.
2. Richiesta parametri (a4 - a-tm-tipo)¶
Identica a COGK86: Data Inizio (obbligatoria), Data Fine (obbligatoria, >= inizio), Tipo di stampa (combo Q / I / N, default "Q"). Navigazione a GO TO con supporto mouse, ESC e F2.
3. Avvio stampa (a-riga-fine / a-riga-fine-ok)¶
Conferma parametri, apertura sessione COGS54. Per tipo "I" esegue elabora2 (scan per data-incasso), altrimenti elabora (scan per data-eff), poi stampa.
4. Elaborazione (elabora / elabora2)¶
Logica identica a COGK86 nella lettura dei movimenti (filtro sull'intervallo date, lettura polizza COGCOASS, espansione per compagnia in csm-ele-assicura). La differenza e' nel tracciato del file LAVORO: la chiave primaria e' ramo / npol / data-eff / data-inca / compagnia (il ramo/polizza precede la compagnia), cosi' da ordinare i movimenti per polizza.
5. Stampa del report (stampa)¶
Scorre LAVORO in ordine di chiave. La rottura e' su ramo o numero polizza (tmp-ramo not = lav-ramo or tmp-polizza not = lav-npol):
- emette il totale parziale (i3) della polizza precedente;
- stampa il tratto separatore e la riga di intestazione colonne (i1): Ramo, Polizza, Contraente, Data, Compagnia, Perc., Pr. Lordo, Pr. Netto, Q/P, Provvig., Rit. Acc.
Per ogni riga di dettaglio (i2) stampa ramo, polizza, contraente, data, descrizione compagnia (da COGGEANA tipo "C"), percentuale, importi, tipo Q/P, provvigione, ritenuta, accumulando totali parziali e generali. Come in COGK86 il contenuto dipende dal tipo (Q usa premio+data-eff, N il premio solo se incasso a zero, I l'incasso solo se valorizzato). Per le righe successive della stessa polizza (ramo dei restanti campi via initialize i2) omette ramo/polizza/contraente/data ripetuti. Alla fine (a3-99-exit) stampa l'ultimo totale parziale (i3), il tratto di asterischi e il totale generale (i4).
6. Chiusura (fine-sta / fine)¶
Come COGK86: chiusura sessione stampa, finestra di appoggio, file, cancellazione file LAVORO, z-99-exit-program.
Note tecniche¶
- Variante per polizza di COGK86: condivide con COGK86 lo stesso schema (stessi file, stesso combo tipo, stesse subroutine, stessa logica di estrazione dei movimenti). L'unica differenza sostanziale e' l'ordine della chiave del file LAVORO (ramo/polizza in testa) che produce la rottura per polizza anziche' per compagnia, e il layout righe di stampa (i1/i2/i3/i4 con la colonna Compagnia interna alla riga).
- File COGAPPOG / COGBNCA aperti ma non usati: le sezioni bancarie presenti in COGK86 (c/c, ABI/CAB, agenzia) non sono replicate nel report per polizza; i due file restano aperti per omogeneita' con il modello ma non alimentano righe di stampa.
- Espansione per compagnia: come in COGK86, ogni movimento COASSMOV genera una riga di LAVORO per ciascuna compagnia in
csm-ele-assicura(max 30). - Doppio percorso di scansione: quietanze/non incassati per data-eff (chiave primaria), incassi per data-incasso (chiave secondaria
csm-chia2). La ritenuta d'acconto e' presa dacsm-impo-ritacsenza ricalcolo. - Discrepanza commento/titolo: il titolo maschera e' "Stampa Polizze Di Controllo"; la funzione di menu e' "Elenchi raggruppati per polizza". Il raggruppamento effettivo del report e' per ramo/polizza (rottura su
lav-ramo/lav-npol). - Programma non generato da Screens: scritto a mano (autore Claudio, 10/01/2004); non esistono i file
.select/.fd/.wrk/.prcincbl/screens/(solo.version). Screen section, richiesta parametri e I/O sono codificati nel sorgente, con navigazione aGO TO.