Vai al contenuto

COGT52 - Analisi / Controllo Preventivi

Scopo

Programma GUI per l'analisi di un preventivo di vendita: dato anno e numero preventivo, ricostruisce per ogni riga merce i possibili fornitori e ne confronta i prezzi (prezzo richiesto, prezzo lordo, prezzo netto ricalcolato con sconti fornitore, prezzo di listino, prezzo condizione), evidenziando i fornitori preferenziali. I dati elaborati vengono scritti in un file di transito temporaneo (COGTRANS) e visualizzati in una griglia paginata. Puo' essere lanciato in modalita' "chiamato" (cogt52-called) con anno/numero gia' passati dal chiamante.

Vendite > Preventivi > Analisi Preventivo

File e tabelle

File Tipo Descrizione
COGTRANS Indicizzato (temporaneo) File di transito dei risultati, chiave trs-chia1 (trs-ragg, trs-tot-raggr/trs-dettaglio in redefines, trs-for); nome file costruito a runtime con dir temp + PID/operatore, aperto/cancellato dal programma
COGTESPR Indicizzato Testata preventivo (chiave tpr-anno, tpr-numero); lettura rd-cogtespr
COGRIGPR Indicizzato Righe preventivo (chiave rpr-anno, rpr-numero, rpr-riga); scansione st-cogrigpr-notmin / rdnxt-cogrigpr
COGMERCI Indicizzato Anagrafica merci (chiave mer-chia); lettura rd-cogmerci
COGMERFO Indicizzato Correlazione merce-fornitore (chiave mfr-merce); scansione st-cogmerfo-notmin / rdnxt-cogmerfo
COGGEANA Indicizzato Anagrafica generale (clienti/fornitori), chiave ana-tipo, ana-cod; lettura rd-coggeana
COGCNDCF Indicizzato Condizioni cliente/fornitore (chiave cnd-cnd, cnd-key, cnd-tip, cnd-cod); determina il flag "Preferenziale" (rd-cogcndcf)
COGGENMF Indicizzato Dati merce-fornitore (gruppo, prezzo lordo/netto, moltiplicatore, valuta); chiave gmf-cmf, gmf-cf; lettura rd-coggenmf
COGTESGF Indicizzato Testata gestione fornitore (chiave tgf-cf); lettura rd-cogtesgf
COGTABEL Indicizzato Tabelle di sistema (tipo 19, prod "PL"/"SC"/"GR"); lettura rd-cogtabel per i flag di calcolo prezzo
COGSCOCF Indicizzato Sconti condizionati fornitore (chiave scf-tip, scf-cod, scf-cnd, scf-key); lettura/scansione per sconti gruppo
COGSCONT Indicizzato Sconti/prezzi contratto (chiave scc-tip, scc-ana-tip, scc-ana-cod, scc-merce); lettura rd-cogscont prezzo condizione
COGLISFO Indicizzato Listini fornitore (chiave lfo-merce, lfo-for, lfo-data); ricerca listino st-coglisfo-notmay / rdprv-coglisfo

Copybook

File e select

  • feurtab.fd, cogfiles.cpy
  • cogt52.select, cogt52.fd, cogt52.wrk, cogt52.decla, cogt52.prc
  • cogt52-01.scr (screen section)
  • La select di cogtrans e la FD (trs-rec) sono dichiarate manualmente nel sorgente (file temporaneo non gestito da Screens); chiave inclusa con cogtrans.k01

Working-storage standard

  • k-u10.cpy
  • wgrave.cpy, wnscr.cpy, wopenf.cpy, wstato.cpy, cogazien.cpy

Utilita'

  • wgrid.cpy, utilgdad.cpy — gestione griglia (GRIDADMN)
  • utils52.cpy — subroutine campo data
  • utilu10.cpy — gestione divise / edit importi (COGU10W)
  • utilcogl61.cpy — linkage modulo COGL61 (prezzo acquisto merce)
  • utilpggr.cpy, fscrol2.cpy — griglia paginata / scroll

Linkage

  • wcont.cpy, wcont1.cpy
  • utilcogt52.cpy — parametri di chiamata (cogt52-called, cogt52-caller, cogt52-anno, cogt52-numero)

Procedure

  • grave.cpy, mmmask.cpy, opengen.cpy, stato.cpy, stato1.cpy, winmsg.cpy
  • dtab.cpy, getdcont.cpy

CALL

Programma Descrizione
COGL61 Estrazione prezzo acquisto merce a una data (util-cogl61), con opzione in-prezacq
COGU10W Edit/arrotondamento/cambio divisa importi (util-u10): usato per convertire prezzi in divisa di conto e formattarli per la griglia
GRIDADMN Amministrazione griglia (prepara, add-record, svuota, colori riga, export Excel)

Logica di elaborazione

  1. apri: init programma, ctr-abil, rd-azi, open-files; attivazione tasti funzione (F3 conferma, F8 calendario, Shift+F4 griglia, Shift+F5 esporta Excel); costruzione controlli screen, preparazione griglia (z-prepara-tm-grid); composizione nome file transito COGTRANS con dir temp + k-program-id + operatore; se lanciato come chiamato (cogt52-called = k-program-id) recupera anno/numero da w-dati-called.
  2. a4: apre COGTRANS in output (verifica che non sia gia' in uso da altro operatore, messaggio "Funzione gia' in uso"), poi in I-O; svuota la griglia; inizializza tab-maschera.
  3. a-tm-anno / a-tm-numero / a-tm-tipo-elab: accept dei campi di filtro con help, calendario e controlli; x-controlla-tm-numero verifica esistenza del preventivo su COGTESPR e valorizza cliente/descrizione da COGGEANA.
  4. a-fine-dati: controlli complessivi (x-controlla-dati), poi carica-dati (elaborazione) su conferma F3.
  5. carica-dati: legge testata (rd-cogtespr) e righe (rdnxt-cogrigpr); per ogni riga merce esegue COGL61 (prezzo acquisto), converte le divise via COGU10W, scandisce i fornitori (ciclo-merfo) e scrive i record risultato su COGTRANS; scrive righe di totale gruppo merceologico ("Fine Gru. merc.") e, se tm-tipo-elab = "S", righe di "Fine raggr.".
  6. ciclo-merfo: per ogni fornitore della merce (COGMERFO) determina descrizione fornitore (COGGEANA), flag preferenziale (COGCNDCF), dati merce-fornitore (COGGENMF), listino (cerca-listino su COGLISFO) e prezzo netto ricalcolato (calcola-pre-net).
  7. calcola-pre-net / c-agg-lfo / c1-pre-lor: replica la logica di calcolo prezzo netto di COGW06 (commentato nel sorgente): determina flag prezzo-da-lordo (tm-fl-pl), sconto particolare (tm-fl-sp), sconto gruppo (tm-fl-sg) da COGTABEL/COGSCOCF, applica sconti a cascata (c1-calc-sp, c1-calc-sg, c11-calc-mer, c12-calc-gru) e arrotonda con COGU10W.
  8. carica-tab / z-costruisci-grid / x-riempi-grid-record: legge COGTRANS in sequenza, riempie tab-maschera, formatta il grid-record (importi editati via z-u10) e alimenta la griglia via GRIDADMN.
  9. a-grid: gestione della griglia paginata (z-99-accept-paged-grid), con Shift+F4 (amministrazione colonne via GRIDADMN) e Shift+F5 (esporta Excel).
  10. fine / z-chiudi: chiude e cancella COGTRANS (delete file cogtrans), chiude finestra e programma.

Note tecniche

  • COGTRANS e' un file indicizzato temporaneo per-operatore: la SELECT e la FD sono scritte a mano nel sorgente (non generate da Screens); il nome fisico e' costruito a runtime con ext-tmp-dir + slash + #$ + COGT52 + operatore, e il file viene cancellato in chiusura.
  • La chiave trs-tot-raggr di COGTRANS e' ridefinita in tre viste (trs-tot-grumer, trs-dettaglio) per distinguere righe di dettaglio da righe di totale gruppo/raggruppamento; i valori "zzz..." forzano l'ordinamento delle righe di totale in coda al gruppo.
  • Tutti gli importi sono normalizzati alla divisa di conto (w-currency-conto, ottenuta da get-divisa-conto) tramite chiamate ripetute a COGU10W (operazioni "Cambio"/"Arrotonda"/edit).
  • La logica sconti gruppo distingue tipo "S" (match sui primi caratteri del codice merce/fornitore) e tipo "G" (match sul gruppo di COGGENMF); organizza-tgs ordina i gruppi per lunghezza significativa decrescente (bubble sort).
  • Costante k-max-ele-tab = 900 limita il numero di righe della griglia; tab-gruppi-sconto e w-str-confronto usano tabelle a lunghezza variabile (occurs depending on).
  • L'esportazione XLS della griglia avviene tramite Shift+F5 (z-esporta-paged-grid).