COGT71 - Evidenza commerciale articoli¶
Panoramica¶
Programma GUI (interfaccia a griglia moderna) per la gestione della tabella "Evidenza commerciale articoli", memorizzata in COGTABEL con tipo tabella "FW". Ogni voce e' composta da un codice evidenza (2 caratteri), una descrizione e un codice host (codice per sistema esterno/host). La griglia consente di visualizzare, inserire, modificare ed eliminare le voci direttamente in linea (aggiungi riga Ctrl-A, elimina riga Ctrl-E).
Il programma funziona in due modalita', determinate da come viene avviato:
- standalone (da menu): parte in modalita' "Aggiornamento", con salvataggio tramite F3;
- richiamato (come help/selezione da un altro programma, cogt71-called = "COGT71" con cogt71-caller valorizzato): parte in modalita' "Selezione", dove l'operatore sceglie una voce con Invio e la restituisce al chiamante in cogt71-out-cod / cogt71-out-des; F3 alterna tra selezione e aggiornamento.
Posizione nel menu¶
| Menu | Percorso |
|---|---|
| Magazzino | Archivi & Tabelle > Tabelle > Evidenza commerciale articoli |
Struttura del programma¶
File e tabelle utilizzati¶
| File/Tabella | Tipo | Descrizione |
|---|---|---|
| FEURTAB | Input | Tabella di sistema (nomi file) |
| COGTABEL | I-O | Tabella generica del gestionale; le voci "Evidenza commerciale articoli" sono i record con tipo "FW" |
Copybook principali¶
| Copybook | Descrizione |
|---|---|
| feurtab.fd / cogfiles.cpy | SELECT/FD e record della tabella di sistema |
| cogt71.select / cogt71.fd | SELECT e File Description (generati da Screens; il FD referenzia COGTABEL) |
| cogt71.wrk / cogt71.decla / cogt71.prc | Working storage, declaratives e procedure di I/O generati da Screens |
| cogt71-01.scr | Screen section (griglia e-tm-tab e maschera) |
| utilcogt71.cpy | Area di linkage util-cogt71 (parametri cogt71-caller, cogt71-called, cogt71-out-cod, cogt71-out-des) |
| cogtabel.cpy / cogtabel.k01 | Record COGTABEL e chiave primaria (campi euta-tipo-x, euta-cod, euta-evc-des, euta-evc-codice-host) |
| wgrave.cpy / wnscr.cpy / wopenf.cpy / wstato.cpy | Working storage errori, video, apertura file, stato I/O |
| cogazien.cpy | Dati azienda |
| wgrid.cpy / utilgdad.cpy | Gestione griglia e interfaccia GRIDADMN |
| wcont.cpy / wcont1.cpy | Aree di comunicazione standard tra programmi |
| grave.cpy / stato.cpy / stato1.cpy / winmsg.cpy | Gestione errori gravi, stato verbi, messaggi |
| mmmask.cpy | Gestione maschera (rd-msk-pop, z-99-init-program, z-99-exit-program) |
| opengen.cpy | Routine generica di apertura file (open-files, z-close-files) |
Chiamate a sottoprogrammi (CALL)¶
| Programma | Scopo |
|---|---|
| GRIDADMN | Gestione e personalizzazione della griglia paginata (preparazione colonne, Shift-F4 personalizzazione layout) |
Logica di elaborazione¶
1. Inizializzazione (apri)¶
Imposta nome programma per help/errori, verifica l'abilitazione (ctr-abil), inizializza il programma (z-99-init-program), apre i file e legge i dati azienda. In base ai parametri di linkage determina se e' stato richiamato da un altro programma (w-dc-called = "S" quando cogt71-called = "COGT71" e cogt71-caller valorizzato). Abilita i tasti funzione: se richiamato, F3 selezione/modifica; altrimenti F3 aggiorna. Attiva anche Sf4 (griglia), Ctrl-A (aggiungi) e Ctrl-E (elimina). Imposta il titolo "Evidenza commerciale articoli", prepara la griglia (z-prepara-tm-grid) e i controlli, e imposta la modalita' iniziale (a-modalita = "S" selezione se richiamato, "A" aggiornamento se standalone).
2. Caricamento griglia (a4-a30)¶
Svuota la griglia e i controlli, quindi carica le voci scandendo COGTABEL per tipo "FW": si posiziona con st-cogtabel-notmin e scorre con rdnxt-cogtabel finche' euta-tipo-x = "FW" (fino a k-max-ele-tab = 500 righe). Per ogni record valorizza nella griglia il codice (tm-cod), il codice precedente per il confronto di aggiornamento (tm-cod-prec), la descrizione (tm-des, da euta-evc-des) e il codice host (tm-cod-host, da euta-evc-codice-host). Costruisce la tabella video (z-costruisci-tm-tab) e attiva i tasti funzione della griglia.
3. Gestione eventi griglia (a-grid / a-accept-grid)¶
Ciclo principale di accept sulla griglia (z-99-accept-tm-tab), che gestisce:
- ESC: uscita previa test-wesc (con eventuale richiesta di salvataggio se ci sono modifiche pendenti, fl-esc-agg);
- mouse / doppio click / invio su cella: emula l'Invio (selezione);
- Shift-F4: personalizzazione layout griglia tramite GRIDADMN;
- F3: in modalita' aggiornamento salva (a1-aggiorna) e, se richiamato, torna in selezione; in modalita' selezione passa ad aggiornamento; controlla le abilitazioni a inserire/modificare (w-abi-ins, w-abi-agg);
- Invio: in modalita' selezione, restituisce codice e descrizione della riga scelta al chiamante (cogt71-out-cod, cogt71-out-des) ed esce;
- Ctrl-A: aggiunge una riga (z-aggiungi-riga-tm-tab) in modalita' aggiornamento;
- Ctrl-E: elimina la riga corrente (previa abilitazione w-abi-del e conferma), azzerando i dati e conservando tm-cod-prec per la successiva cancellazione fisica.
4. Validazioni di cella¶
x-controlla-tm-cod: verifica che il codice evidenza non sia duplicato nella griglia;x-controlla-tm-des: la descrizione e' obbligatoria se il codice e' valorizzato;x-controlla-tm-cod-host: controllo sul codice host;z-event-tm-tab-ep: in modalita' selezione blocca l'ingresso in cella; verifica l'abilitazione alla modifica sulle righe gia' esistenti.
5. Salvataggio (a1-aggiorna / b-aggiorna)¶
a1-aggiorna esegue prima i controlli complessivi (x-controlla-tm-tab-tutto); se validi, chiama b-aggiorna. Questo scorre tutte le righe della griglia e, confrontando codice attuale (tm-cod) e codice precedente (tm-cod-prec), decide l'operazione su COGTABEL:
- codice attuale vuoto e precedente valorizzato -> cancella (b3-cancella, del-cogtabel);
- codice = precedente e riga modificata -> modifica (b2-modifica, rwr-cogtabel);
- precedente vuoto -> inserisci (b1-inserisci, con wr-cogtabel/rwr-cogtabel);
- codice diverso dal precedente -> cancella la vecchia e inserisci la nuova.
In inserimento, se il codice esiste gia' chiede conferma di sovrascrittura; in modifica, se il record non esiste piu' chiede se ricrearlo. Tutti i record scritti/riscritti hanno euta-tipo-x = "FW", euta-cod = codice evidenza, euta-evc-des = descrizione, euta-evc-codice-host = codice host.
6. Chiusura (fine / z-chiudi)¶
Chiude i file (z-close-files), chiude la finestra, esegue z-99-exit-program ed esce con exit program.
Note tecniche¶
- Tabella COGTABEL tipo "FW": le voci "Evidenza commerciale articoli" sono record di COGTABEL con
euta-tipo-x = "FW". I campi specifici sono definiti nel copybookcogtabel.cpy:euta-evc-des(descrizione, 40 char) eeuta-evc-codice-host(codice host, 10 char). Il codice evidenza (euta-cod, 10 char) e' usato nella griglia sui primi 2 caratteri (cogt71-out-code'pic x(02)). - Doppia modalita' (selezione/aggiornamento): lo stesso programma serve sia da manutenzione tabella (menu, modalita' aggiornamento) sia da help/selezione richiamato da altri programmi (modalita' selezione, restituisce la voce scelta in
util-cogt71). La modalita' e' pilotata daw-dc-callede commutata con F3. - Aggiornamento differito con confronto cod/cod-prec: le modifiche in griglia non aggiornano immediatamente COGTABEL; il salvataggio (F3) confronta ogni riga con il codice precedente memorizzato all'ingresso (
tm-cod-prec) per decidere inserimento/modifica/cancellazione. Questo consente rinomine (cancella+inserisci) e cancellazioni (svuotamento riga). - Programma generato da Screens: struttura e routine di I/O (SELECT, FD, griglia, procedure) provengono dai file
cogt71.select/.fd/.wrk/.decla/.prce dalla screencogt71-01.scr, generati dal tool Screens (versione indicata 2.13.0) e situati incbl/screens/. La griglia e' amministrata da GRIDADMN (Shift-F4 per la personalizzazione delle colonne). - Abilitazioni: il programma rispetta i flag di abilitazione utente
w-abi-ins(inserimento),w-abi-agg(modifica) ew-abi-del(cancellazione), bloccando le rispettive operazioni con messaggio se non abilitate.