COGY07 - Vendite per Zona¶
Sorgente: cbl/cogy07.cbl | Program-ID: COGY07 | Tipo: Programma interattivo (estrazione con griglia + export Excel + stampa)
Menu: Statistiche > Vendite x Zona
Scopo¶
Estrae una statistica di vendita raggruppata per zona geografica o classificazione cliente, scelta dinamicamente dall'utente tramite tm-tip-rag (N = Nazione, R = Regione, P = Provincia, C = Tipologia cliente). I dati provengono direttamente da cogstati (alimentato da COGY12). Per ciascun cliente nelle statistiche il programma legge coggeana per ricavare provincia/nazione, decodifica regione tramite cogtabel tipo 26, e classifica per tipologia tramite cogappog. Visualizza la griglia su file di transito cogtrans con tre chiavi di ordinamento alternative.
File e tabelle¶
| File/Tabella | Tipo | Modalita' | Descrizione |
|---|---|---|---|
| COGTRANS | ISAM (temp.) | Output / I-O | File di transito; chiave primaria trs-chia1 (tipo + rag-cod + cliente + dati-mov), 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) |
| COGGEANA | ISAM | Input | Anagrafica clienti (province, nazione, classificazione) |
| COGAPPOG | ISAM | Input | Tabella appoggio anagrafica (tipologia cliente in app-tip-stt) |
| COGTABEL | ISAM | Input | Decodifica province/regioni (tipo 26), stati (tipo 54), categorie cliente (tipo 84) |
| TRAN-COGS96 | ISAM (temp.) | I-O | Buffer agenti dell'operatore |
| FEURTAB | ISAM | Input | Tabella features/abilitazioni utente |
Copybook utilizzate¶
| Copybook | Descrizione |
|---|---|
cogy07.select, cogy07.fd, cogy07.wrk |
SELECT, FD, working storage (Screens) |
cogy07-01.scr, cogy07.tm, cogy07.prc, cogy07.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, utils68.cpy |
Utility calendario, stampa, scelte codificate, ricerca merce |
utilu10.cpy |
Utility COGU10 (divisa, conversione) |
utilcogs96.cpy |
Utility COGS96 (filtro agenti) |
utilw138.cpy |
Utility WIN138 (dettaglio cliente della zona) |
utilf09.cpy, utilf62.cpy, utile04.cpy, utilf10.cpy |
Utility selezione provincia, regione, nazione, tipologia cliente |
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>/#$COGY07.<operatore>. Crea pulsante custom F7 "Dettaglio Cliente". Legge configurazione STATSTPARA via RNEWCONF (chiavi c018-ela, c018-mag, c018-imp, c018-na, c018-stat-ext).
Fase parametri (a4): Carica agenti dell'operatore via carica-agenti (COGS96 popola tran-cogs96). Default: tm-tip-rag = "N", tm-mov = "R", tm-ord = "C". Pagina 1 con accept dei campi:
- tm-tipo-stat — tipo statistica
- tm-mag — magazzino (F8 = WIN036)
- tm-tip-rag — tipo raggruppamento (N/R/P/C). Pilota la visibilita' dei campi seguenti:
- tm-prov-cod — provincia (F8 = COGF09), visibile solo se tm-tip-rag = "P"
- tm-regio-cod — regione (F8 = COGF62), visibile solo se tm-tip-rag = "R"
- tm-nazio-cod — nazione (F8 = COGE04), visibile solo se tm-tip-rag = "N"
- tm-tip-cli-cod — tipologia cliente (F8 = COGF10), visibile solo se tm-tip-rag = "C"
- tm-tip-mov — tipo movimento (T/N/M)
- tm-art (gru/sot/cod, cma, cmf, cmc, bc) — filtro articolo (selezione via COGS68W)
- 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.
- a1-scrivi-transito: per ogni record legge coggeana del cliente e calcola a1-rag-cod in base a tm-tip-rag:
- "N" -> ana-st-cod (codice stato cliente), default "ITA" se vuoto. Filtra se tm-nazio-cod valorizzato.
- "R" -> legge cogtabel tipo 26 con cod = "P" + ana-prov e prende euta-lo-app (regione). Filtra se tm-regio-cod valorizzato.
- "P" -> ana-prov. Filtra se tm-prov-cod valorizzato.
- "C" -> legge cogappog per il cliente e prende app-tip-stt (tipologia). Filtra se tm-tip-cli-cod valorizzato.
- Per ogni record applica i filtri agente, articolo, magazzino (analogo a COGY06).
- Scrive su cogtrans tre record per riga statistica:
- trs-tipo = "R" con trs-rag-cod = a1-rag-cod (raggruppamento zona)
- trs-tipo = "C" con trs-rag-cod e trs-cli (cliente nella zona)
- trs-tipo = "T" con trs-rag-cod = "999", trs-rag-nome = "TOTALETOTALE" (totale generale)
- opera-transito decodifica trs-rag-nome in base a tm-tip-rag:
- "N" -> cogtabel tipo 54 (stati), forzando "ITALIA" per trs-rag-cod = "ITA"
- "R" -> cogtabel tipo 26 con cod = "R" + rag-cod (descrizione regione)
- "P" -> cogtabel tipo 26 con cod = "P" + rag-cod (descrizione provincia)
- "C" -> cogtabel tipo 84 con cod = "C" + rag-cod (descrizione tipologia cliente)
- Conversione valuta tramite COGU10W (x1-calcola-imp) se necessario.
Griglia (vis-tabella): Spaginamento su cogtrans filtrato per trs-tipo = "R", ordinato secondo tm-ord. Le righe mostrano: codice zona, descrizione, quantita', importo, val. FIFO, margine, margine percentuale. F8 (con tasto-premuto = k-f7) apre WIN138 per il dettaglio per cliente della zona. 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) |
COGS68W |
Ricerca/selezione codice articolo |
COGF09 |
Selezione provincia (F8 su tm-prov-cod) |
COGF62 |
Selezione regione (F8 su tm-regio-cod) |
COGE04 |
Selezione nazione (F8 su tm-nazio-cod) |
COGF10 |
Selezione tipologia cliente (F8 su tm-tip-cli-cod) |
WIN036 |
Selezione magazzino (F8 su tm-mag) |
WIN138 |
Dettaglio per cliente della zona selezionata |
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. - Costanti
cogtabel: tipo 26 con prefisso"P"/"R"per province/regioni, tipo 54 per stati, tipo 84 con prefisso"C"per categorie clienti. - 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-na,euta-c018-stat-ext. - La nazione di default per i clienti senza
ana-st-codvalorizzato e' "ITA". - I tre tipi di record su
cogtrans(R/C/T) permettono di mantenere in unica tabella sia il raggruppamento di zona, sia il dettaglio cliente, sia il totale generale; la griglia filtra pertrs-tipo = "R".