COGY06 - Vendite per Gruppo / Sottogruppo¶
Sorgente: cbl/cogy06.cbl | Program-ID: COGY06 | Tipo: Programma interattivo (estrazione con griglia + export Excel + stampa)
Menu: Statistiche > Vendite per Gruppo/Sottogr.
Scopo¶
Estrae una statistica di vendita raggruppata per gruppo/sottogruppo merceologico (stt-gru + "/" + stt-sot). I dati provengono direttamente da cogstati (archivio statistiche di vendita popolato da COGY12). Per ciascun gruppo/sottogruppo il programma calcola quantita', importo, valorizzazione FIFO e percentuale sul totale. Visualizza la griglia su file di transito cogtrans con tre chiavi di ordinamento alternative (codice, nome, importo). Per i movimenti senza articolo (contabili puri) usa il pseudo-gruppo "No merci".
File e tabelle¶
| File/Tabella | Tipo | Modalita' | Descrizione |
|---|---|---|---|
| COGTRANS | ISAM (temp.) | Output / I-O | File di transito; chiave primaria trs-chia1 (tipo + gruppo + cliente), alternate keys trs-chia2 per nome, trs-chia3 per importo |
| COGSTATI | ISAM | Input | Archivio statistiche di vendita (chiave per data chia3: stt-tip + stt-data) |
| COGTABEL | ISAM | Input | Decodifica gruppo/sottogruppo articoli (tipo AB) |
| TRAN-COGS96 | ISAM (temp.) | I-O | Buffer agenti dell'operatore |
| FEURTAB | ISAM | Input | Tabella features/abilitazioni utente |
Copybook utilizzate¶
| Copybook | Descrizione |
|---|---|
cogy06.select, cogy06.fd, cogy06.wrk |
SELECT, FD, working storage (Screens) |
cogy06-01.scr, cogy06.tm, cogy06.prc, cogy06.decla |
Schermata, tab maschera, procedure I/O, declaratives |
tran-cogs96.fd, tran-cogs96.cpy, tran-cogs96.k01 |
FD/record/chiave file agenti |
cogtrans.k01, cogtrans.k02, cogtrans.k03 |
Chiavi file di transito (3 alternate keys) |
cogstati.k03 |
Chiave secondaria cogstati per tip + data |
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, utilncnf.cpy, utilrcnf.cpy |
Supporto griglia + configurazioni RNEWCONF |
utils52.cpy, utils54.cpy, utils60.cpy, utils65.cpy, utils68.cpy |
Utility calendario, stampa, scelte codificate, ricerca cliente, ricerca merce |
utilu10.cpy |
Utility COGU10 (divisa, conversione) |
utilcogs96.cpy |
Utility COGS96 (filtro agenti) |
utilw137.cpy |
Utility WIN137 (dettaglio cliente del gruppo) |
getdcont.cpy, dtab.cpy, fscrol2.cpy, utilpggr.cpy |
Lettura contatori, tabelle, scrolling, paginazione |
wcont.cpy, wcont1.cpy |
Linkage standard |
stato, stato1, winmsg, grave, mmmask, opengen |
Infrastruttura standard |
Logica di elaborazione¶
Inizializzazione (apri): Apre i file, abilita F3 conferma, F7 filtra, F8 aiuto/calendario, F9 stampa/ricerca avanzata, Shift+F4 griglia, Shift+F5 esporta Excel. Carica divisa di conto via COGU10W. Compone il nome di cogtrans come <tmp-dir>/#$COGY06.<operatore>. Crea pulsante custom F8 "Dettaglio Cliente". Legge configurazione STATSTPARA via RNEWCONF (chiavi c018-ela, c018-mag, c018-imp, c018-stat-ext).
Fase parametri (a4): Carica agenti dell'operatore via carica-agenti (COGS96 popola tran-cogs96). Tipo statistica iniziale: "E" se az-personal = "AL", altrimenti "V". Default: tm-tip-mov = "T", tm-mov = "R", tm-ord = "C". Pagina 1 con accept dei campi:
- tm-tipo-stat — tipo statistica
- tm-mag — magazzino (F8 = WIN036)
- tm-tip-mov — tipo movimento (T/N/M)
- tm-merce (gru/sot/cod, cma, cmf, cmc, bc) — filtro merce (selezione via COGS68W)
- tm-cli-cod — cliente di partenza (selezione via COGS65W)
- tm-data-da, tm-data-a — periodo (F8 = COGS52)
- tm-mov — livello dettaglio
- tm-ord — ordinamento (C/N/I)
Elaborazione (inizio-ela, a F3):
- Apre cogtrans in output e poi i-o.
- Parte da stt-tip = tm-tipo-stat e stt-data = tm-data-da, scorre cogstati con rdnxt (chiave k03).
- Esce quando stt-tip not = tm-tipo-stat oppure stt-data > tm-data-a.
- Per ogni record applica i filtri: agente, cliente, tipo movimento, gruppo/sottogruppo/codice merce, magazzino.
- Calcola a1-gruppo:
- se stt-fl-mc = "C" (movimento non-merce / contabile): a1-gruppo = "No merci";
- altrimenti: a1-gruppo = stt-gru + "/" + stt-sot.
- a1-scrivi-transito: aggrega su cogtrans un record con trs-tipo = spaces, trs-cli, trs-gruppo = a1-gruppo sommando trs-qta, trs-imp, trs-val-fifo (gestione segno per importi negativi). Scrive anche un record trs-gruppo = "Totale" per il totale generale.
- Conversione valuta tramite COGU10W (x1-calcola-imp) se necessario.
Griglia (vis-tabella): Spaginamento su cogtrans ordinato secondo tm-ord:
- "C" -> chiave primaria (cliente+gruppo)
- "N" -> alternate key 2 (nome+gruppo)
- "I" -> alternate key 3 (importo+cliente)
Le righe della griglia mostrano: gruppo, descrizione (letta da cogtabel tipo AB), quantita', importo, val. FIFO, differenza, percentuale sul totale, totale fatturato. F8 (con tasto-premuto = k-f7) apre WIN137 per il dettaglio per cliente del gruppo. Shift+F4 GRIDADMN, Shift+F5 export Excel, F9 stampa.
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) |
COGS52 |
Calendario (F8 sui campi data) |
COGS65W |
Ricerca/selezione cliente di partenza |
COGS68W |
Ricerca/selezione codice merce |
WIN036 |
Selezione magazzino (F8 su tm-mag) |
WIN137 |
Dettaglio per cliente del gruppo selezionato |
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. k-euta-tipo-sot = "AB": tipocogtabelusato per decodificare le descrizioni gruppo/sottogruppo.- 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-ela,euta-c018-mag,euta-c018-imp,euta-c018-stat-ext. - COGY06 e COGY03 condividono la struttura
cogtranse larga parte della procedura: COGY03 raggruppa per attributo CRM, COGY06 per gruppo/sottogruppo merceologico.