Vai al contenuto

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:

  1. all'avvio copia COGRICLS su un archivio di transito con stesso tracciato (cogtrans, nome per-operatore #$f44<oper>.arc in ext-tmp-dir);
  2. tutte le modifiche avvengono sul transito;
  3. solo alla conferma finale con F3 (b3-aggiorna) il transito viene ricopiato integralmente su COGRICLS. 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

  1. main/a000: ctr-abil (abilitazioni utente), z-99-init-program, rd-azi, open-files, data sistema, carica-divisa-di-conto, prepara-files, accept-form.
  2. 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.
  3. carica-raggruppamenti-definiti: interroga COGTABEL tipo 17 arg 1/2/3 per impostare tm-fl-ragr-1/2/3.
  4. prepara-dati: c-leggi-cogtesls per tip "L" e "C" (popola tab-listini).
  5. carica-griglia: scorre cogtrans per chiave primaria, salta i record "null" e le merci singole (per personal "EX" tiene solo trs-mer-cod=0), deduplica su merce+rag1/2/3, popola tab-maschera (max k-max-ele-tab = 900).
  6. 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).
  7. 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.
  8. b1-ricarichi: carica util-s29w dai listini + ricarichi dal transito e chiama COGS29W.
  9. b4-scrivi-ricarichi: b2-elimina (cancella dal transito i record della selezione) + riscrittura ricarichi dall'output COGS29W (wr/rwr-cogtrans)
  10. record "listino inizializzato" per la selezione.
  11. b3-aggiorna (salvataggio finale F3): svuota COGRICLS (loop del) e lo riscrive interamente da cogtrans, poi delete file cogtrans.
  12. 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-exon la 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>.arc residuo (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 (da mmmask, impostate da ctr-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 TO e PERFORM ... THRU (contrario alle convenzioni attuali del progetto). Non contiene marcatori *>DOC:.