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.
Menu¶
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.cpycogt52.select,cogt52.fd,cogt52.wrk,cogt52.decla,cogt52.prccogt52-01.scr(screen section)- La select di
cogtranse la FD (trs-rec) sono dichiarate manualmente nel sorgente (file temporaneo non gestito da Screens); chiave inclusa concogtrans.k01
Working-storage standard¶
k-u10.cpywgrave.cpy,wnscr.cpy,wopenf.cpy,wstato.cpy,cogazien.cpy
Utilita'¶
wgrid.cpy,utilgdad.cpy— gestione griglia (GRIDADMN)utils52.cpy— subroutine campo datautilu10.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.cpyutilcogt52.cpy— parametri di chiamata (cogt52-called,cogt52-caller,cogt52-anno,cogt52-numero)
Procedure¶
grave.cpy,mmmask.cpy,opengen.cpy,stato.cpy,stato1.cpy,winmsg.cpydtab.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¶
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 transitoCOGTRANScon dir temp +k-program-id+ operatore; se lanciato come chiamato (cogt52-called = k-program-id) recupera anno/numero daw-dati-called.a4: apreCOGTRANSin output (verifica che non sia gia' in uso da altro operatore, messaggio "Funzione gia' in uso"), poi in I-O; svuota la griglia; inizializzatab-maschera.a-tm-anno/a-tm-numero/a-tm-tipo-elab: accept dei campi di filtro con help, calendario e controlli;x-controlla-tm-numeroverifica esistenza del preventivo suCOGTESPRe valorizza cliente/descrizione daCOGGEANA.a-fine-dati: controlli complessivi (x-controlla-dati), poicarica-dati(elaborazione) su conferma F3.carica-dati: legge testata (rd-cogtespr) e righe (rdnxt-cogrigpr); per ogni riga merce esegueCOGL61(prezzo acquisto), converte le divise viaCOGU10W, scandisce i fornitori (ciclo-merfo) e scrive i record risultato suCOGTRANS; scrive righe di totale gruppo merceologico ("Fine Gru. merc.") e, setm-tipo-elab = "S", righe di "Fine raggr.".ciclo-merfo: per ogni fornitore della merce (COGMERFO) determina descrizione fornitore (COGGEANA), flag preferenziale (COGCNDCF), dati merce-fornitore (COGGENMF), listino (cerca-listinosuCOGLISFO) e prezzo netto ricalcolato (calcola-pre-net).calcola-pre-net/c-agg-lfo/c1-pre-lor: replica la logica di calcolo prezzo netto diCOGW06(commentato nel sorgente): determina flag prezzo-da-lordo (tm-fl-pl), sconto particolare (tm-fl-sp), sconto gruppo (tm-fl-sg) daCOGTABEL/COGSCOCF, applica sconti a cascata (c1-calc-sp,c1-calc-sg,c11-calc-mer,c12-calc-gru) e arrotonda conCOGU10W.carica-tab/z-costruisci-grid/x-riempi-grid-record: leggeCOGTRANSin sequenza, riempietab-maschera, formatta ilgrid-record(importi editati viaz-u10) e alimenta la griglia viaGRIDADMN.a-grid: gestione della griglia paginata (z-99-accept-paged-grid), con Shift+F4 (amministrazione colonne viaGRIDADMN) e Shift+F5 (esporta Excel).fine/z-chiudi: chiude e cancellaCOGTRANS(delete file cogtrans), chiude finestra e programma.
Note tecniche¶
COGTRANSe' 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 conext-tmp-dir+ slash +#$+COGT52+ operatore, e il file viene cancellato in chiusura.- La chiave
trs-tot-raggrdiCOGTRANSe' 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 daget-divisa-conto) tramite chiamate ripetute aCOGU10W(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-tgsordina i gruppi per lunghezza significativa decrescente (bubble sort). - Costante
k-max-ele-tab = 900limita il numero di righe della griglia;tab-gruppi-scontoew-str-confrontousano tabelle a lunghezza variabile (occurs depending on). - L'esportazione XLS della griglia avviene tramite Shift+F5 (
z-esporta-paged-grid).