COGM36 - Stampa Merci Avanzate (Esecuzione)¶
Intestazione¶
| Campo | Valore |
|---|---|
| Programma | COGM36 |
| Titolo | Esecuzione stampe su merci avanzate |
| Posizione menu | Magazzino > Archivi & Tabelle > Stampe > Merci Avanzate > Esecuzione |
Scopo e logica generale¶
COGM36 e' il motore di esecuzione delle stampe personalizzabili sull'anagrafica merci. Legge un modello di stampa definito nella tabella COGTABEL (tipo 63), consente di modificare i parametri di ordinamento, selezione e filtro, quindi esegue la ricerca delle merci e produce il report.
Il programma supporta: - Fino a 5 livelli di ordinamento con interlinea configurabile - Fino a 8 filtri di selezione con 6 operatori di confronto (EQ, NE, GT, LT, NG, NL) - Rottura e totali per gruppo - Informazioni fisse (codice, descrizione, prezzi, giacenza, valore) e dinamiche (da COGRACMT) - Informazioni estese (differenze percentuali, ricarichi) - Sottofunzioni esterne per parametri e stampe speciali
Il programma puo' ricevere il tipo di elaborazione dalla linkage (sub-m36-tip-ela).
Flusso principale¶
- Inizializzazione (
apri): controllo abilitazione, apertura file tramiteopen-files(conopen1.cpy), lettura azienda, data sistema, divisa conto (COGU10), caricamento configurazione (RNEWCONF su "SISTMERAVA" e "MERCI.CNF") - Selezione modello (
a-5): popup selezione codice stampa tramite COGGW05, lettura modello dalla tabella tipo 63 in COGTABEL (record tipi 1, 2, 3 tramiteb-visua) - Accept parametri:
- Salto pagina (
a-30): tabella per rottura pagina, con aiuto WIN074 (F8) - Classe (
a-35): filtro classe merceologica (setm-cfg-cla= "S"), con aiuto WIN075 (F8) - Ordinamento (
a-40->a-40-acc): fino a 5 tabelle, con tabella figlia (a-43) e interlinea (a-45) - Selezione (
a-50->a-50-acc): fino a 8 filtri con operatore (a-53) e valore (a-55), con aiuto WIN076 (F8) - Copie (
a-85) - Divisa (
a-87): tramite COGS60 (Lira/Euro) - Dati giacenza (
a-90->a3-dati-giacenza): magazzino e flag articoli a zero, solo se il modello include giacenza - Valorizzazione: scelta prezzo ultimo/medio acquisto, solo se richiesto dal modello
- Sottofunzione parametri: se
tm-subnon vuoto, chiama il sottoprogramma per parametri aggiuntivi - Anteprima stampa (
a-100): COGS54 per configurare la stampante - Ricerca (
e-ricerca): selezione merci e scrittura su file di transitotran-m36 - Stampa (
d-stampa): lettura sequenziale ditran-m36, costruzione e scrittura righe,tm-copvolte. Setm-subpresente, la stampa e' delegata alla sottofunzione - Chiusura (
fine): chiusura file, COGS01 con flag "C",z-99-exit-program
File e tabelle acceduti¶
| File logico | Record | Modalita' | Uso |
|---|---|---|---|
| FEURTAB | cogfiles | Input | Tabella generica Eurosystem |
| COGTABEL | euta-rec | Input | Tabelle sistema: modelli stampa (tipo 63), tabelle ordinamento/selezione (tipo 62), classi (tipo 61) |
| COGMERCI | mer-rec | Input | Anagrafica merci (descrizione, prezzi) |
| COGMAGAZ | magz-rec | Input | Anagrafica magazzini |
| COGSLMAG | msal-rec | Input | Saldi magazzino (giacenza, ordinato, impegnato) |
| COGMERFO | mfr-rec | Input | Merci-fornitore (codice fornitore, descrizione) |
| COGINVEN | inv-rec | Input | Inventario (giacenza inventariale) |
| COGSCONT | scc-rec | Input | Sconti per gruppo merceologico |
| COGRACMC | rcm-rec | Input | Raccordo merci-classificazioni (chiave primaria e per merce) |
| COGRACMT | rtm-rec | Input | Raccordo merci-tabelle (informazioni dinamiche, chiavi ordinamento) |
| TRAN-M36 | trs-m36-rec | I-O | File di transito temporaneo per merci selezionate |
| FLSTA | flsta-rec | Input | File per gestione stato stampa |
Struttura del modello di stampa (COGTABEL tipo 63)¶
Il modello e' composto da 3 tipi di record:
Record tipo 1 (b1-load) - Dati generali¶
Campi caricati da euta-ds4-*:
- tm-tit: titolo stampa
- tm-sub: sottoprogramma esterno
- tm-tip-rig: tipo riga (A=80col norm, B=80col compr, C=132col norm, D=132col compr)
- tm-lun-fgl: lunghezza foglio
- tm-int: intestazione azienda (S=sempre, P=solo prima pagina)
- tm-jmp: righe di salto
- tm-rot: tabella per rottura
- tm-cla: classe merceologica
- tm-ord-tab(1..5): tabelle ordinamento con flag figlia e interlinea
Record tipo 2 (b2-load) - Selezioni¶
Per ogni selezione: tabella (euta-ds5-sel), valore (euta-ds5-val), operatore (euta-ds5-ope)
Record tipo 3 (b3-load) - Dettaglio colonne¶
Per ogni colonna: tipo (I=dinamica, F=fissa, E=estesa), codice informazione, flag figlia, tipo stampa, titolo, posizione start/end
Informazioni fisse (tipo F)¶
| Codice | Informazione | Flag attivati |
|---|---|---|
| 01 | Codice merce (gru/sot/cod) | - |
| 02 | Codice avanzamento (da COGRACMC) | tm-fl-rcm |
| 03 | Codice fornitore (da COGMERFO) | tm-fl-mfr |
| 04 | Descrizione merce (da COGMERCI + COGRACMC) | tm-fl-mer, tm-fl-rcm |
| 05 | Prezzo lordo/listino | tm-fl-lis |
| 06 | Sconti | tm-fl-lis |
| 07 | Prezzo netto | - |
| 08 | Giacenza | tm-fl-gia |
| 09 | Quantita' in ordine | tm-fl-gia |
| 10 | Quantita' impegnata | tm-fl-gia |
| 11 | Descrizione merce fornitore | tm-fl-mfr |
| 12 | Prezzo ultimo acquisto | tm-fl-mer, tm-fl-pua |
| 13 | Prezzo medio acquisto | tm-fl-mer, tm-fl-pma |
| 14 | Valore di magazzino | tm-fl-gia, tm-fl-val-req |
| 15 | Riga inventario (trattini) | tm-fl-inv, tm-fl-gia, tm-fl-mfr |
Informazioni estese (tipo E)¶
| Codice | Informazione |
|---|---|
| 01 | Differenza % tra prezzo lordo e netto |
| 02-11 | Prezzi ricaricati e relative percentuali di vendita (fino a 5 livelli) |
Logica di ricerca e selezione (sezione e-*)¶
Senza filtri di selezione (e1-cerca-tutto)¶
Scansione sequenziale di COGRACMC (tipo = spazio), con eventuale filtro classe.
Con filtri di selezione (e2-seleziona)¶
- Preparazione (
c-prepara): i filtri vengono ordinati per numero di occorrenze della tabella (ottimizzazione: il filtro piu' selettivo per primo) - Ricerca primaria: la prima tabella di selezione viene usata per posizionamento e scansione su COGRACMT, con START appropriato in base all'operatore
- Verifiche secondarie: per ogni merce trovata, si verificano le condizioni delle tabelle successive (
e21-e26per i 6 operatori) - Aggiunta al transito (
e3-aggiungi): la merce viene scritta su TRAN-M36 con chiave di rottura e chiavi di ordinamento (ricavate da COGRACMT)
Supporto tabelle figlie¶
Per ordinamento e informazioni dinamiche, se la tabella ha flag guida (euta-tma-gui), il valore effettivo viene cercato nella tabella figlia tramite COGRACMT.
Logica di stampa (sezione d-*)¶
Testata (d1-testa)¶
Stampa: linea separatrice, titolo centrato con data, intestazione azienda (con indirizzo e P.IVA da COGMAGAZ se tm-int = "S" o "P"), eventuale riga rottura, intestazioni colonne.
Riga dettaglio (d2-fill-riga)¶
Per ogni colonna definita nel modello (fino a 50):
- Tipo I (d21-fr-i): informazione dinamica da COGRACMT
- Tipo F (d22-fr-f): informazione fissa (codice, descrizione, prezzi, giacenze, sconti, valore)
- Tipo E (d23-fr-e): informazione estesa (percentuali, ricarichi)
Interlinea (d5-interlinea)¶
7 stili configurabili per livello di ordinamento: da nessuna (1) a linea continua (7).
Totali (d6-tot-rot, d6-tot-tot)¶
Totali per gruppo di rottura e totale generale su: giacenza, ordinato, impegnato, valore.
Copybook inclusi¶
File e tabelle¶
| Copybook | Contenuto |
|---|---|
feurtab.fd |
FD file tabelle Eurosystem |
cogfiles.cpy |
Record feurtab |
cogtabel.fd / cogtabel.cpy |
FD e record tabelle sistema |
cogdefst.cpy / cnfgsist.cpy |
Definizioni e configurazione sistema |
cogmerci.fd / cogmerci.cpy |
FD e record anagrafica merci |
cogmagaz.fd / cogmagaz.cpy |
FD e record anagrafica magazzini |
cogslmag.fd / cogslmag.cpy |
FD e record saldi magazzino |
cogmerfo.fd / cogmerfo.cpy |
FD e record merci-fornitore |
coginven.fd / coginven.cpy |
FD e record inventario |
cogscont.fd / cogscont.cpy |
FD e record sconti |
cogracmc.fd / cogracmc.cpy |
FD e record raccordo merci-classificazioni |
cogracmt.fd / cogracmt.cpy |
FD e record raccordo merci-tabelle |
tran-m36.fd / tran-m36.cpy |
FD e record file di transito |
flsta.fd / flsta.cpy |
FD e record file stato stampa |
coginven.k01 |
Chiave COGINVEN |
cogscont.k01 |
Chiave COGSCONT |
Strutture dati e utility¶
| Copybook | Contenuto |
|---|---|
wstato.cpy |
Working storage stato |
wgrave.cpy |
Gestione errori gravi |
wopenf.cpy |
Apertura file |
wnscr.cpy |
Gestione schermo |
cogazien.cpy |
Dati azienda |
utilncnf.cpy |
Interfaccia RNEWCONF |
utils21.cpy |
Interfaccia COGS21 (selezione S/N) |
utils54.cpy |
Interfaccia COGS54 (anteprima stampa) |
utils60.cpy |
Interfaccia COGS60 (selezione da lista) |
utilu10.cpy |
Interfaccia COGU10 (divisa/formattazione) |
utilw36.cpy |
Interfaccia WIN036 (selezione magazzino) |
utilw74.cpy |
Interfaccia WIN074 (selezione tabella) |
utilw75.cpy |
Interfaccia WIN075 (selezione classe) |
utilw76.cpy |
Interfaccia WIN076 (selezione valore tabella) |
utilgw05.cpy |
Interfaccia COGGW05 (selezione codice stampa) |
wdisp002.cpy |
Display utility |
utilcogl61.cpy |
Interfaccia COGL61 (prezzi medi) |
Linkage e routine standard¶
| Copybook | Contenuto |
|---|---|
wcont.cpy / wcont1.cpy |
Linkage section |
utils01.cpy |
Interfaccia COGS01 (listino prezzi) |
stato.cpy / stato1.cpy |
Gestione stato file |
winmsg.cpy |
Messaggi a finestra |
grave.cpy |
Gestione errori gravi |
open1.cpy |
Apertura file (con ricerca nome) |
mmmask.cpy |
Maschera principale (init/exit program) |
dtab.cpy |
Display tabella |
scree.cpy |
Routine schermo |
tstfun1.cpy |
Test funzioni scorrimento |
sendw36.cpy |
Invio a WIN036 |
sendw74.cpy |
Invio a WIN074 |
sendw75.cpy |
Invio a WIN075 |
sendw76.cpy |
Invio a WIN076 |
sendgw05.cpy |
Invio a COGGW05 |
pdisp002.cpy |
Routine display |
Programmi chiamati (CALL)¶
| Programma | Scopo |
|---|---|
| RNEWCONF | Configurazione: classe merci (SISTMERAVA), dati fissi estesi e ricarichi (MERCI.CNF) |
| COGGW05 | Selezione codice stampa (popup) |
| COGS21 | Selezione valore S/N (tabella figlia, articoli a zero) |
| COGS54 | Configurazione stampante / anteprima |
| COGS60 | Selezione da lista (divisa, valorizzazione) |
| COGU10 | Conversione divisa, formattazione importi, arrotondamento |
| COGL61 | Ricerca prezzo medio e ultimo acquisto |
| COGS01 | Listino prezzi (prezzo lordo, netto, sconti) |
| WIN036 | Selezione magazzino (F8 su dati giacenza) |
| WIN074 | Selezione tabella generica (F8 su salto pagina, ordinamento, selezione) |
| WIN075 | Selezione classe merceologica (F8) |
| WIN076 | Selezione valore tabella (F8 su selezione) |
tm-sub |
Sottofunzione esterna (chiamata dinamica per parametri aggiuntivi e/o stampa) |
Configurazione (RNEWCONF)¶
Gruppo SISTMERAVA¶
| Chiave | Variabile | Uso |
|---|---|---|
euta-c039-cla |
tm-cfg-cla |
Abilita filtro classe ("S"/"N") |
Gruppo MERCI.CNF¶
| Chiave | Variabile | Uso |
|---|---|---|
| STAMPA MERCI AVANZATE CON DATI FISSI ESTESI | tm-cfg-df-ext |
Abilita informazioni estese |
| % DI RICARICO (1..5) | tm-cfg-perc-ric(1..5) |
Percentuali di ricarico |
| STAMPA MERCI AVANZATE PREZZO LORDO | tm-cfg-pre-lordo |
"L" = usa prezzo listino come lordo |
| LISTINO STAMPA MERCI AVANZATE | tm-cfg-listino |
Numero listino da usare |
Variabili di stato principali¶
| Variabile | Descrizione |
|---|---|
tm-cod |
Codice modello di stampa selezionato |
tm-tit |
Titolo della stampa |
tm-sub |
Nome sottofunzione esterna |
tm-tip-rig |
Tipo riga (A/B/C/D) |
tm-lun-rig |
Lunghezza riga in caratteri (80/132/226) |
tm-rot |
Tabella per rottura/salto pagina |
tm-cla |
Filtro classe merceologica |
tm-mag |
Magazzino per giacenza |
tm-fl-zero |
"S" = stampa anche articoli a zero |
tm-fl-val |
"U" = ultimo acquisto, "M" = medio acquisto |
tm-divisa |
Divisa di stampa ("E"/"L") |
tm-cop |
Numero copie |
n-p |
Numero di tabelle di selezione attive (dopo preparazione) |
ctr-rig |
Contatore righe pagina corrente |
ctr-pag |
Contatore pagine |
w-rot |
Valore corrente della chiave di rottura (per cambio gruppo) |