COGY02 - Raffronto mensile¶
Sorgente: cbl/cogy02.cbl | Program-ID: COGY02 | Tipo: Programma interattivo (estrazione con griglia + export Excel + stampa)
Menu: Statistiche > Raffronto mensile
Scopo¶
Genera un raffronto del fatturato mensile tra due anni: anno di elaborazione (tm-anno-ela) e anno di raffronto (tm-anno-raf). Per ogni mese (1..12, piu' un totale annuo "99") aggrega gli importi e calcola differenza assoluta e percentuale. I dati provengono direttamente da cogstati (archivio statistiche di vendita popolato da COGY12). Visualizza la griglia su file di transito cogtrans e supporta dettaglio cliente (WIN130), dettaglio merce (WIN131), export Excel e stampa.
File e tabelle¶
| File/Tabella | Tipo | Modalita' | Descrizione |
|---|---|---|---|
| COGTRANS | ISAM (temp.) | Output / I-O | File di transito; chiave trs-chia1 (tipo T/C/M + mese 1..12,99 + cliente/conto/merce) |
| COGSTATI | ISAM | Input | Archivio statistiche di vendita (chiave principale: stt-tip + stt-mese-fat + ...) |
| TRAN-COGS96 | ISAM (temp.) | I-O | Buffer agenti dell'operatore (per filtraggio movimenti) |
| FEURTAB | ISAM | Input | Tabella features/abilitazioni utente |
Copybook utilizzate¶
| Copybook | Descrizione |
|---|---|
cogy02.select, cogy02.fd, cogy02.wrk |
SELECT, FD, working storage (Screens) |
cogy02-01.scr, cogy02.tm, cogy02.prc, cogy02.decla |
Schermata, tab maschera, procedure I/O, declaratives |
tran-cogs96.fd, tran-cogs96.cpy, tran-cogs96.k01 |
FD/record/chiave file agenti |
cogtrans.k01 |
Chiave file di transito |
flsta.fd, flsta.cpy |
File status |
k-u10.cpy |
Costanti utility valuta |
wstato.cpy, wgrave.cpy, wopenf.cpy, wnscr.cpy, wgrid.cpy |
Working storage standard + griglia |
cogazien.cpy |
Dati azienda |
utilgdad.cpy |
Supporto griglia (GRIDADMN) |
utilncnf.cpy, utilrcnf.cpy |
Lettura configurazioni RNEWCONF |
utils52.cpy, utils54.cpy |
Utility calendario, stampa |
utilu10.cpy |
Utility COGU10 (divisa, conversione) |
utilcogs96.cpy |
Utility COGS96 (filtro agenti) |
utilw130.cpy, utilw131.cpy |
Utility WIN130/WIN131 (dettagli) |
dtab.cpy, fscrol2.cpy, utilpggr.cpy |
Tabelle/scrolling/paginazione |
wcont.cpy, utily02.cpy, wcont1.cpy |
Linkage standard |
stato, stato1, winmsg, grave, mmmask, opengen |
Infrastruttura standard |
Logica di elaborazione¶
Inizializzazione (apri): Verifica ext-ambiente-gui in {S,M}. Apre i file. Abilita F3 conferma, F8 calendario, F9 stampa, Shift+F4 griglia, Shift+F5 esporta Excel. Carica divisa di conto via COGU10W (GetDivisaConto). Compone il nome di cogtrans come <tmp-dir>/#$COGY02.<operatore>. Carica pulsanti custom F7 (Dettaglio Cliente) e F8 (Dettaglio Merce). Legge configurazione STATSTPARA/euta-c018-imp e STATSTPARA/euta-c018-stat-ext via RNEWCONF.
Fase parametri (a4): Chiude e riapre cogtrans (se gia' aperto da altro operatore segnala "Funzione gia' in uso"). Tipo statistica iniziale: "E" se az-personal = "AL", altrimenti "V". Accept dei campi:
- tm-tipo-stat — tipo statistica
- tm-anno-ela — anno elaborazione (con calendario F8)
- tm-anno-raf — anno raffronto (deve essere diverso e minore di tm-anno-ela)
Elaborazione (a F3):
- Chiama carica-agenti che, se all'operatore sono associati agenti (ptop-age), chiama COGS96 per popolare tran-cogs96 con la lista degli agenti visibili.
- riempi-cogtrans-ela: parte da stt-tip = tm-tipo-stat e stt-mese-fat = tm-data-inizio (gennaio anno ela), scorre cogstati con rdnxt fino al mese 12 incluso. Per ogni record:
- se fl-ok-age = "S" verifica che stt-age-1 sia in tran-cogs96 (filtro agenti);
- aggrega su cogtrans con tre tipologie di record: T=totale, C=per cliente (stt-cli), M=per merce (stt-fl-mc/stt-conto o stt-merce);
- somma o sottrae l'importo a seconda di stt-fl-vr (V=vendita, R=reso);
- per ogni mese aggrega su trs-mese = w-mese (mese del fatturato) e su trs-mese = 99 (totale annuo).
- riempi-cogtrans-raf: stessa logica per l'anno di raffronto, alimentando trs-imp-raf invece di trs-imp-ela.
- Conversione valuta tramite COGU10W se la divisa del movimento e' diversa dalla divisa di conto.
Griglia (vis-tabella): Spaginamento su cogtrans filtrato per trs-tipo = "T" (totali mensili). Per ogni mese carica tm-mese, tm-imp-ela, tm-imp-raf, calcola tm-diff = tm-imp-ela - tm-imp-raf e tm-diff-perc. Visualizza paginato. F7 apre WIN130 (dettaglio cliente del mese), F8 apre WIN131 (dettaglio merce del mese), Shift+F4 GRIDADMN, Shift+F5 export Excel, F9 stampa via COGS54.
Chiamate a sottoprogrammi¶
| Programma | Utilizzo |
|---|---|
COGS96 |
Caricamento agenti dell'operatore in tran-cogs96 |
COGU10W |
Conversione valuta / arrotondamento / GetDivisaConto |
COGS54 |
Selezione device/parametri di stampa (F9) |
WIN130 |
Dettaglio per cliente del mese (F7) |
WIN131 |
Dettaglio per merce del mese (F8) |
GRIDADMN |
Gestione griglia, personalizzazione, export Excel |
RNEWCONF |
Lettura configurazioni STATSTPARA |
Note implementative¶
- Autore: Claudio Chiossi.
k-max-ele-tab = 100: dimensione massimatm-tabcome buffer in memoria; la griglia vera e' sucogtranspaginato.- Il file
cogtranse' per-operatore (wo-opernel nome) per evitare conflitti. - Il mese "99" e' usato come slot di totale annuo aggiuntivo, scritto in parallelo per ogni record letto.
- A differenza di COGY15, questo programma non passa da
tran-cogs96per le righe statistiche: legge direttamentecogstati. COGS96 e' usato solo come filtro agenti. - Configurazioni rilevanti (gruppo
STATSTPARA):euta-c018-imp(importo netto/lordo),euta-c018-stat-ext(statistica estesa). - Vincolo di validazione:
tm-anno-raf < tm-anno-ela(messaggim-contr-anno-1/m-contr-anno-2).