COGF44 -- Ricarichi Standard su Listino Vendita¶
Sorgente: cbl/cogf44.cbl | Tipo: Programma interattivo GUI a maschera + griglia | Program-ID: COGF44
Menu: Magazzino > Archivi & Tabelle > Listino Vendita > Ricarichi Standard
Scopo¶
Manutenzione dell'archivio dei ricarichi standard applicati ai listini di
vendita (COGRICLS). L'operatore gestisce una lista di "selezioni"
(merce/gruppo/sottogruppo, piu' fino a 3 raggruppamenti merce) e, per ciascuna
selezione, imposta i ricarichi percentuali per ogni listino tramite il
sottoprogramma esterno COGS29W.
Per semplificare la gestione, il programma non lavora direttamente sull'archivio ufficiale ma su una copia di transito:
- all'avvio copia
COGRICLSsu un archivio di transito con stesso tracciato (cogtrans, nome per-operatore#$f44<oper>.arcinext-tmp-dir); - tutte le modifiche avvengono sul transito;
- solo alla conferma finale con F3 (
b3-aggiorna) il transito viene ricopiato integralmente suCOGRICLS. L'uscita con ESC scarta tutto (delete file cogtrans).
File e tabelle¶
| Tabella | Ruolo / campi principali |
|---|---|
| COGRICLS | Archivio ufficiale ricarichi. Chiave primaria rls-chia1 (= rls-selezione merce+rag1/2/3 + rls-listino tip+rif); chiave 2 rls-chia2 (= listino+selezione). Ricarichi rls-ric occurs 5 (per fasce), rls-arrot, rls-tip-arr. Aperto i-o, letto nella copia iniziale, riscritto in b3-aggiorna |
| cogtrans | Archivio di transito temporaneo, copia di cogricls.cpy (REPLACING rls- -> trs-); nome dinamico #$f44<oper>.arc. E' il file su cui si lavora davvero (rd-/st-/rdnxt-/wr-/rwr-/del-cogtrans) |
| COGTESLS | Testate listini (tls-rec, chiave tls-tip+tls-rif; tls-int, tls-div, tls-fascie). Legge i listini tipo "L" e "C" per costruire tab-listini (st-cogtesls-notmin, rdnxt-cogtesls) |
| COGMERCI | Anagrafica merci (mer-rec, chiave mer-chia). Validazione codice merce completo in x-controlla-tm-r-merce (rd-cogmerci) |
| COGTABEL | Tabella raggruppamenti merce: euta-tipo=17, euta-cfg-arg="1"/"2"/"3", euta-cfg-key = valore raggruppamento; descrizione euta-descr/euta-rm-des. Verifica quali dei 3 raggruppamenti sono definiti e valida/descrive i valori inseriti (rd-cogtabel) |
| FEURTAB | File tabelle generico standard (aperto in open-files) |
| COGAZIEN | Config azienda (rd-azi): usa az-personal = "EX" / k-personal-exon per filtrare la griglia |
Copybook principali¶
| Copybook | Descrizione |
|---|---|
cogf44.select, cogf44.fd, cogf44.wrk, cogf44-01.scr, cogf44.prc, cogf44.decla |
Screen Designer |
feurtab.fd, cogfiles.cpy |
FEURTAB / tabelle generiche |
cogricls.fd/.cpy/.k01/.k02, cogtrans.k01/.k02, cogtesls.k01, cogmerci.k01, cogtabel.k01 |
Tracciati e chiavi tabelle |
wgrid.cpy, utilgdad.cpy, wscrolmc.cpy |
Working griglia + linkage GRIDADMN |
k-personal.cpy |
Costanti personalizzazioni |
utils52, utilu05, utilu10, utilu20, utilw29, utils29w, utils68, utildlg |
Linkage sottoprogrammi (data, divisa, ricarichi, controllo merce, dialog) |
wstato, wgrave, wopenf, wnscr, cogazien.cpy |
Working storage standard + dati azienda |
wcont.cpy, wcont1.cpy |
Linkage in ingresso (stringhe) |
sendw29.cpy |
Routine di invocazione COGS29W/COGS68W |
Chiamate ad altri programmi¶
| Modulo | Scopo |
|---|---|
| COGU10W | Ricava la divisa di conto per la data corrente (carica-divisa-di-conto) |
| C$FILEINFO | Verifica esistenza del file di transito residuo (recupero da aggiornamento interrotto) |
| DIALOGS | Dialog di scelta (ESC / F3 rinfresca / F5 usa archivio di lavoro esistente) |
| GRIDADMN | Gestore griglia (Prepara / Add-Record / Modify-Record / Svuota-Tutto) |
| COGS29W | Maschera di inserimento ricarichi per listino (cuore funzionale, b1-ricarichi); s29w-fl-f3-aggiorna segnala la conferma operatore |
| COGS68W | Controllo composito merce (gruppo/sottogruppo/codice/descrizione/BC/CMA/CMC/CMF), richiamato in cogf44.prc |
| READLNG | Caricamento etichette/messaggi multilingua (COGF44.lng, gen.lng) |
Flusso / Paragrafi principali¶
main/a000:ctr-abil(abilitazioni utente),z-99-init-program,rd-azi,open-files, data sistema,carica-divisa-di-conto,prepara-files,accept-form.prepara-files: costruisce il nome del transito (#$f44<oper>.arc); se gia' esistente chiede via DIALOGS;ricopia-cogricls-in-transito(COGRICLS -> cogtrans record per record); apre i-o cogtrans.carica-raggruppamenti-definiti: interroga COGTABEL tipo 17 arg 1/2/3 per impostaretm-fl-ragr-1/2/3.prepara-dati:c-leggi-cogteslsper tip "L" e "C" (popolatab-listini).carica-griglia: scorre cogtrans per chiave primaria, salta i record "null" e le merci singole (per personal "EX" tiene solotrs-mer-cod=0), deduplica su merce+rag1/2/3, popolatab-maschera(maxk-max-ele-tab= 900).a-accept-grid(loop principale griglia): F1 (ricarichi "standard" = selezione null), Invio (modifica), Ctrl-A (inserimento), Ctrl-E (eliminazione con conferma), F3 (acc-conf->b3-aggiorna-> fine), ESC (close+delete cogtrans senza salvare), eventi mouse (x-test-mouse).a-riga-dettaglio(a-tm-r-merce/a-tm-r-ragr-1/2/3/a-tm-r-ricarichi): accept sequenziale con validazione per campo (x-controlla-*), F8 aiuto raggruppamenti (send-w29), poi lancio ricarichi.b1-ricarichi: caricautil-s29wdai listini + ricarichi dal transito e chiama COGS29W.b4-scrivi-ricarichi:b2-elimina(cancella dal transito i record della selezione) + riscrittura ricarichi dall'output COGS29W (wr/rwr-cogtrans)- record "listino inizializzato" per la selezione.
b3-aggiorna(salvataggio finale F3): svuota COGRICLS (loop del) e lo riscrive interamente da cogtrans, poidelete file cogtrans.fine/z-chiudi: chiusura file/finestra,cancel 'COGS29W', uscita.
La gestione errori usa vbx-msg/vbx-msg-error/box-msg per i messaggi modali
(tabella piena, codice merce non valido, raggruppamento inesistente, non
abilitato, transito non apribile), acc-conf per le conferme F3, grave.cpy
per gli errori gravi standard. Le DECLARATIVES io-error su tutti i file hanno
corpo exit (delega allo stato file gestito dagli handler).
Note¶
- Filtro personalizzazione EX: con
az-personal = k-personal-exonla griglia mostra solo i ricarichi a livello gruppo/sottogruppo (trs-mer-cod = 0), escludendo le merci singole. - Recupero transito orfano: se al riavvio esiste un
#$f44<oper>.arcresiduo (aggiornamento interrotto), l'operatore sceglie via DIALOGS se rigenerarlo da COGRICLS o riprenderlo. - Fasce quantita': ogni listino puo' avere fino a 5 fasce (
rls-ric occurs 5/tls-fascie); COGS29W gestisce ricarichi multipli per fascia. Il tipo arrotondamento (trs-tip-arr) e' prelevato dal primo record disponibile del listino e propagato. - Abilitazioni:
w-abi-ins/w-abi-agg/w-abi-del(dammmask, impostate dactr-abil) controllano inserimento/modifica/cancellazione. - Nessuna configurazione RNEWCONF: l'unica "configurazione" letta e' la tabella COGTABEL tipo 17 (raggruppamenti merce), che e' una tabella applicativa e non una chiave RNEWCONF.
- Programma legacy: fa uso pervasivo di
GO TOePERFORM ... THRU(contrario alle convenzioni attuali del progetto). Non contiene marcatori*>DOC:.