Vai al contenuto

COGP75 — Stampa Sconti per Cliente

Sorgente: cbl/cogp75.cbl | Tipo: interattivo a maschera + stampa | Program-ID: cogp75

Menu: Contabilita' > Archivi & Tabelle > Stampe > Clienti > Sconti per Cliente ; Magazzino > Archivi & Tabelle > Stampe > Sconti > Sconti per Cliente


Scopo

Produce la stampa degli sconti riservati ai clienti. Per ogni cliente selezionato riporta il riferimento listino e gli sconti generici a livello anagrafica (ts3-sco1/ts3-sco2 dal record sconto con scc-merce = k-merce-null) e, sotto, gli sconti di dettaglio per singola merce/gruppo merceologico (percentuali scc-sco-1/scc-sco-2 e prezzo finito scc-pre editato in divisa tramite COGU10).

La maschera raccoglie i parametri di selezione: ordinamento (per Codice o per Alfabetico/descrizione, campo tm-ord), cliente di partenza e di arrivo (tm-da-cli/tm-a-cli, con relative descrizioni risolte da COGGEANA) e il flag tm-sconti-zero che decide se stampare anche le righe con sconti tutti a zero.

File e tabelle principali

File/Tabella Copybook Uso
COGGEANA coggeana.k02 (chiave alfabetica) Anagrafica clienti (k-ana-tipo-cli): ciclo di stampa e validazione codici. Letta per codice (st-coggeana-notmin) o per nome (st-coggeana-notmin-chia1) in base a tm-ord
COGSCONT cogscont.k01 Sconti cliente. Scansione per anagrafica (scc-tip="A", scc-ana-tip, scc-ana-cod); scarta i cancellati logici (scc-val="C")
flsta flsta.fd / flsta.cpy File di stampa (write riga)

Flusso principale

  1. apri — inizializzazione programma, open-files, caricamento lingua e azienda; attiva i tasti funzione F8 aiuto, F3 conferma, F9 ricerca avanzata; costruisce i controlli della maschera (z-costruisci-controlli).
  2. a4 — reset tab-maschera, default tm-ord="A" e tm-sconti-zero="S".
  3. a-tm-ord / a-tm-da-cli / a-tm-a-cli / a-tm-sconti-zero — accept in sequenza dei parametri. Cliente di partenza e arrivo gestiti dalla subroutine di ricerca COGS65W (z-s65-tm-da-cli, z-s65-tm-a-cli); combo di ordinamento e flag sconti-zero via COGS60. Controlli di coerenza in x-controlla-tm-da-cli/x-controlla-tm-a-cli e controlla-ordine.
  4. a-riga-fine — verifica requisiti (x-imposta-conferma), poi chiama COGS54 per la scelta stampante/anteprima e avvia la stampa (c-stampa).
  5. c-stampa / c-10-loop — scandisce COGGEANA nel range richiesto; per ogni cliente esegue c2-src-sco.
  6. c2-src-sco / c2-10-loop — legge gli sconti del cliente su COGSCONT, applica i filtri (cancellati, sconti a zero) e stampa via c1-riga.
  7. c1-riga — stampa testata pagina (x1-testa), dati cliente (daticli), sconti generici (datiscon) o sconti per merce (datimer).
  8. fine / z-chiudi — chiusura file, chiusura finestra, exit program.

Sottoprogrammi chiamati

Programma Ruolo
COGS54 Selezione periferica di stampa / anteprima, s54-after-print a fine stampa
COGS65W Ricerca e validazione anagrafica cliente (codice + descrizione) sui campi da/a
COGS68W Ricerca/edit gruppo merceologico per la riga sconti-merce (z-s68-tmr-merce)
COGU10 Editing del prezzo finito scc-pre in divisa (z-u10)
COGS60 Combo-box di ordinamento e flag sconti-zero (gestori z-s60-* da .prc)

Note

  • Il codice usa estesamente PERFORM ... THRU (es. c-stampa thru ex-c, c2-src-sco thru ex-c2, c1-riga thru ex-criga, controlla-ordine thru ex-controlla-ordine) e numerosi GO TO per la navigazione tra i paragrafi di accept e per le rotture di ciclo: pattern legacy tipico dei programmi di stampa a maschera, da non replicare nei nuovi sviluppi.
  • Le righe marcate 220222 documentano l'aggiunta del flag tm-sconti-zero (stampa/esclusione dei clienti con sconti a zero) e del relativo controllo/handler mouse a-tm-sconti-zero.
  • Il salto pagina e la ripetizione della testata cliente sono gestiti confrontando ctr-rig con s54-stm-lin - 8 (numero righe utili di pagina restituito da COGS54).
  • Le righe sconto-merce distinguono la prima occorrenza (stampa testa4 di colonna) tramite il flag locale fl.