COGP71 - Stampa Dettagliato Prestazioni per Cliente¶
Scopo¶
Stampa rendiconto dettagliato delle prestazioni di un cliente (o di tutti) in un periodo, con totali per prestazione e per cliente. Funziona sia come programma standalone (menu Vendite > Prestazioni > Stampa) sia come allegato di fatture/bolle servizi quando chiamato da COGV60TA / COGV60FE. Disponibile solo per profilo aziendale "professionisti" (az-prof = "S") o personalizzazione Ferracini (az-personal = "FE").
Posizioni menu¶
- Vendite > Prestazioni > Stampa
File e Tabelle¶
| File | Copybook | Utilizzo |
|---|---|---|
| FEURTAB | cogfiles.cpy | Tabella file di sistema |
| COGTESBP | cogp71.fd | Testata buoni di prelievo (per controllo aperto/chiuso) |
| COGRIGBP | cogp71.fd | Righe buoni di prelievo (chiave 2: merce+data, chiave 3: cliente+merce+data) |
| COGMERCI | cogp71.fd | Anagrafica merci (descrizione, IVA, art. esente) |
| COGGEANA | cogp71.fd | Anagrafica clienti |
| COGMAGAZ | cogp71.fd | Anagrafica magazzini |
| COGGENER | cogp71.fd | Tabella generica - legami bolla servizi (tipo BB, parte-1=bolla, parte-2=tbp) |
| FLSTA | flsta.cpy | File stampante |
Copybook¶
cogfiles.cpy,cogp71.select,cogp71.fd,cogp71.wrk,cogp71-01.scr,cogp71.decla,cogp71.prcflsta.fd,flsta.cpywgrave.cpy,wnscr.cpy,wopenf.cpy,wstato.cpy,cogazien.cpy,utilncnf.cpyutils52.cpy,utils54.cpy,utils65.cpy,utils68.cpy,utilu10.cpywcont.cpy,wcont1.cpyk-u10.cpy,wrk-u10.cpy,u10-fun.cpycogrigbp.k02,cogrigbp.k03grave.cpy,mmmask.cpy,opengen.cpy,stato.cpy,stato1.cpy,winmsg.cpyGetDCont.cpy,printer.cpy
CALL¶
| Programma | Scopo |
|---|---|
| COGS52 | Input data con calendario |
| COGS54 | Parametri stampante |
| COGS65W | Ricerca cliente con zoom |
| COGS68W | Ricerca prestazione (merce) con zoom |
| COGU10W | Conversione divisa, arrotondamento, edit numerico |
| RNEWCONF | Lettura configurazione PRNTSTFATT |
Logica di elaborazione¶
Linkage section¶
Da wcont.cpy, ridefinizione link-p71:
- p71-caller: identificativo del programma chiamante (COGV60TA / COGV60FE)
- p71-data-da, p71-data-a: range date
- p71-cli: cliente
- p71-bolla: chiave bolla servizi (mag+ann+tip+num)
Parametri input (tab-maschera)¶
tm-cli: cliente (0 = tutti)tm-merce-da/tm-merce-a: range prestazioni (gru+sot+cod)tm-mag: magazzino (defaultaz-main-mag)tm-da-data/tm-a-data: range date (default 1/1 - 31/12 anno corrente)tm-tipo: T=Tutti, A=Aperti, C=Chiusi
Configurazione (tab-mas-cfg)¶
Da RNEWCONF percorso PRNTSTFATT:
- tm-cfg-emu: emulazione stampante
- tm-cfg-cop: numero copie
- tm-cfg-v-off, tm-cfg-h-off: offset stampa
- tm-cfg-mod-con1: modalita' continua
Flusso¶
- apri: open files, lettura configurazione, controllo
az-prof = "S"oaz-personal = "FE". - Modalita' chiamata: se
p71-callerin (COGV60TA, COGV60FE), bypassa la maschera, carica i parametri da linkage (ri-bolla, date, cliente), chiede conferma "Stampa allegato dettaglio prestazioni giornaliere?" e procede. - Modalita' standalone (a4): accept campi (a-tm-cli, a-tm-merce-da, a-tm-merce-a, a-tm-da-data, a-tm-a-data, a-tm-tipo).
- a-richiesta-conferma: chiamata COGS54 per stampante.
- b-stampa (ripetuta
tm-cfg-copvolte): fl-key = '3'(chiave 3: cliente+merce+data) - usata semprerst-next: posizionamento sulla chiave e riempimentotm-tab(max 13 elementi, ridimensionato a t-size)- Per ogni blocco di elementi:
- Rottura su cliente (
tm-cod-cli<>ri-cli): stampa totale merce, totale cliente, nuova testata - Rottura su prestazione (
tm-merce<>ri-merce): stampa totale merce, nuova testata merce - Stampa riga di dettaglio (
riga-dettaglio)
- Rottura su cliente (
- Continua finche'
fl-read = 'E' - Stampa finale: totale ultima merce, totale ultimo cliente, salto pagina, codici fine emulazione.
Strutture dati¶
tm-tab(occurs 0..14, depending on n-e): batch di righe lettericordante (ri-...): chiavi correnti per rilevare le rotture (cliente, merce, totali, valuta)w-b-key2/3,w-t-key2/3: chiavi backup per restart in avanti/indietrofirst-ele: primo elemento del batch (per scroll bar in modalita' visualizzazione, non usata)
Filtri (x3-controlli-fill)¶
Per ogni record letto da COGRIGBP:
- x5-src-tipo: legge la testata, controlla tbp-fl-cls (Aperto/Chiuso) vs tm-tipo
- Filtri: cliente, range date, range merce, magazzino
- Se fl-called = "S": ulteriore filtro su coggener tipo BB per legame con la bolla servizi (ri-bolla)
Conversione divisa¶
In x31-fill-tab e riga-dettaglio: se w-currency-conto <> tm-currency(n-e), chiamata z-u10-cambio-a-conto (copy u10-fun.cpy). Routine z-u10-call-field smista fra tm-prezzo, rg-prezzo, ri-tot-mer, ri-tot-cli, rgt-imp in base a wrk-u10-field (definito da costanti k-tm-prezzo ... k-rgt-imp).
Gestione salto pagina¶
bool-new-pg1(62 righe),bool-new-pg3(60 righe)- Larghezza riga: 130 caratteri
Note tecniche¶
- GUI screen section (
cogp71-01.scr) - Codici di controllo
BLS/BLRnelle righe di stampa per gestione enfasi (bold start/reset) - Bug nei controlli date (
x-controlla-tm-da-data,x-controlla-tm-a-data):end-ifmancanti in modo simmetrico tra le IF nidificate, ma il comportamento netto risulta corretto - Lo stato del buono (Aperto/Chiuso) viene riportato come carattere singolo a sinistra della riga (
rg-fl-cls) solo se diverso da 'A'