Vai al contenuto

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.prc
  • flsta.fd, flsta.cpy
  • wgrave.cpy, wnscr.cpy, wopenf.cpy, wstato.cpy, cogazien.cpy, utilncnf.cpy
  • utils52.cpy, utils54.cpy, utils65.cpy, utils68.cpy, utilu10.cpy
  • wcont.cpy, wcont1.cpy
  • k-u10.cpy, wrk-u10.cpy, u10-fun.cpy
  • cogrigbp.k02, cogrigbp.k03
  • grave.cpy, mmmask.cpy, opengen.cpy, stato.cpy, stato1.cpy, winmsg.cpy
  • GetDCont.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 (default az-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

  1. apri: open files, lettura configurazione, controllo az-prof = "S" o az-personal = "FE".
  2. Modalita' chiamata: se p71-caller in (COGV60TA, COGV60FE), bypassa la maschera, carica i parametri da linkage (ri-bolla, date, cliente), chiede conferma "Stampa allegato dettaglio prestazioni giornaliere?" e procede.
  3. 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).
  4. a-richiesta-conferma: chiamata COGS54 per stampante.
  5. b-stampa (ripetuta tm-cfg-cop volte):
  6. fl-key = '3' (chiave 3: cliente+merce+data) - usata sempre
  7. rst-next: posizionamento sulla chiave e riempimento tm-tab (max 13 elementi, ridimensionato a t-size)
  8. 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)
  9. Continua finche' fl-read = 'E'
  10. 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 lette
  • ricordante (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/indietro
  • first-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 / BLR nelle righe di stampa per gestione enfasi (bold start/reset)
  • Bug nei controlli date (x-controlla-tm-da-data, x-controlla-tm-a-data): end-if mancanti 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'