Vai al contenuto

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 da csm-impo-ritac senza 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/.prc in cbl/screens/ (solo .version). La screen section, i paragrafi di richiesta parametro e le routine di I/O sono codificati direttamente nel sorgente, con navigazione a GO TO tipica dei programmi di stampa piu' datati.