COGI57 - Legge art.62 Pagamenti per Cliente¶
Sorgente: cbl/cogi57.cbl | Program-ID: COGI57 | Tipo: Programma interattivo (maschera con griglia, modalita' aggiornamento/selezione)
Menu: Vendite > Fatturazione > Tabelle > Legge art.62 Pagamenti per Cliente
Scopo¶
Gestisce, per singolo cliente, i codici di pagamento specifici previsti dalla normativa "art.62" (deperibili). Ogni riga associa a un cliente un codice pagamento merci "BI", con relativa descrizione, codice di pagamento standard collegato e codice di raggruppamento bolle.
I dati sono memorizzati come record della tabella generica COGTABEL con tipo alfanumerico "BI": la chiave euta-cod e' composta dai 5 caratteri del codice cliente + 1 carattere del codice art.62. Il programma puo' essere richiamato in modalita' selezione tramite il linkage utilcogi57.
Pattern standard "tabella anagrafica" con griglia editabile e duplice modalita' aggiornamento/selezione (analogo ad ASN020, ma su COGTABEL).
Struttura della maschera¶
Screen definita in cogi57-01.scr. Unica griglia e-tm-tab (array tm-grid-dati, max k-max-ele-tab = 500 righe). Colonne principali:
tm-ana-cod/tm-ana-des: codice e ragione sociale cliente (letta da COGGEANA, tipo "C")tm-cod: codice art.62 (identificatore "BI", 6o carattere della chiave)tm-des: descrizionetm-cod-pag/tm-des-cod-pag: codice pagamento standard collegato (tipok-euta-tipo-pag = 14) e sua descrizionetm-raggr: codice di raggruppamento per bolle
Campi tecnici per il tracciamento modifiche: tm-cli-prec (codice cliente originale), tm-cod-prec (codice art.62 originale), tm-fl-riga-mod.
Titolo maschera: "Legge.art.62 Pagamenti specifici per cliente".
Logica di elaborazione¶
Apertura (apri): init, apertura file, lettura azienda. Valuta il linkage utilcogi57: se cogi57-called = "COGI57" e cogi57-caller valorizzato imposta modalita' "S" (selezione), altrimenti "A" (aggiornamento). Definisce i tasti funzione a seconda della modalita' (F3 selezione/modifica in "S", F3 aggiorna in "A"; sempre Invio, F8 aiuto, S-F4 griglia, Ctrl+A aggiungi, Ctrl+E elimina).
Caricamento griglia (a4 / a10-loop): start su COGTABEL con euta-tipo-x = "BI", scan sequenziale fino a k-max-ele-tab. Per ogni record: estrae codice cliente (euta-cod (1:5)) e codice art.62 (euta-cod (6:1)), legge la ragione sociale da COGGEANA, riporta descrizione, codice pagamento e raggruppamento. In a30 risolve la descrizione del codice pagamento leggendo COGTABEL tipo 14.
Gestione griglia (a-grid / a-accept-grid):
- F3 (modo A): valida e salva -> a1-aggiorna -> b-aggiorna. Se chiamato in selezione, dopo il salvataggio torna in modalita' "S".
- F3 (modo S): conferma selezione (cogi57-out-cod / cogi57-out-des) e ritorna.
- Invio (modo S): seleziona il codice art.62 corrente e ritorna.
- Ctrl+A / Ctrl+E: aggiungi / elimina riga (solo in modo A).
- S-F4: GRIDADMN per personalizzazione griglia.
Aiuti da cella (z-usa-tf-tm-tab-ep, F8):
- Su colonna codice art.62 (gcn-cod): chiama COGI56 per selezionare il codice art.62 da tabella.
- Su colonna codice pagamento (gcn-cod-pag): chiama WIN002 per selezionare il codice pagamento.
Aggiornamento (b-aggiorna): confronto standard tm-cod vs tm-cod-prec (e tm-ana-cod vs tm-cli-prec) per decidere insert/modifica/cancella su COGTABEL:
- tm-cod = tm-cod-prec e stesso cliente: modifica (b2-modifica, solo se tm-fl-riga-mod = "S")
- tm-cod-prec vuoto: inserimento (b1-inserisci)
- tm-cod vuoto: cancellazione (b3-cancella)
- chiavi diverse: cancella vecchio + inserisce nuovo
Dopo ogni scrittura/cancellazione su COGTABEL viene eseguito x-sincronizza-kpn, che chiama SWN065 con operazione "ESPORTA-KEY" per allineare la chiave verso KPN (accodamento variazioni per sincronizzazione esterna).
Controlli campo: codice art.62 esistente su COGTABEL tipo "BH" (x-controlla-tm-cod), descrizione obbligatoria (x-controlla-tm-des), codice pagamento esistente su tipo 14 (x-controlla-tm-cod-pag), raggruppamento bolle obbligatorio (x-controlla-tm-raggr).
File utilizzati¶
| File | Tipo | Descrizione |
|---|---|---|
| FEURTAB (COGTABEL) | I-O | Tabella generica; tipo "BI" = pagamenti art.62 per cliente (record principale), tipo 14 = codici pagamento, tipo "BH" = codici art.62 |
| COGGEANA | Input | Anagrafica clienti/fornitori (ragione sociale) |
Programmi chiamati¶
| Programma | Scopo |
|---|---|
| COGI56 | Selezione codice art.62 (aiuto F8 su cella codice) |
| WIN002 | Selezione codice pagamento (aiuto F8 su cella pagamento) |
| SWN065 | Sincronizzazione chiave verso KPN (x-sincronizza-kpn, op. "ESPORTA-KEY") |
| GRIDADMN | Gestione/personalizzazione griglia |
Sono inoltre chiamate le usuali subroutine di accept griglia generate da Screen Designer.
Copybook principali¶
| Copybook | Contenuto |
|---|---|
cogi57.select, cogi57.fd, cogi57.wrk, cogi57-01.scr, cogi57.prc, cogi57.decla |
File Screen Designer (in cbl/screens/) |
feurtab.fd, cogfiles.cpy |
FD e layout COGTABEL |
utilcogi57.cpy |
Linkage del programma (chiamata in selezione) |
utilcogi56.cpy |
Linkage COGI56 |
utilagprg.cpy |
Linkage SWN065 (sincronizzazione KPN) |
utilw02.cpy |
Linkage WIN002 |
utils65.cpy, utilu20.cpy |
Linkage subroutine accept anagrafica / utility |
wgrid.cpy, utilgdad.cpy |
Working griglia + linkage GRIDADMN |
cogazien.cpy, capazien.cpy |
Dati azienda (base e consorzi) |
wgrave, wnscr, wopenf, wstato |
Working storage standard |
Note tecniche¶
- Il "codice deperibilita" (art.62) e' un record COGTABEL di tipo alfanumerico "BI"; la chiave concatena codice cliente (5) + codice art.62 (1). La descrizione dei codici pagamento collegati si legge da COGTABEL tipo 14, i codici art.62 selezionabili da tipo "BH".
- In
b1-inserisci, la conferma di sovrascrittura in caso di chiave gia' esistente e' commentata (acc-conf-customdisabilitato): l'inserimento riscrive comunque il record. - La sincronizzazione KPN (SWN065) e' eseguita dopo ogni insert/modifica/cancella per propagare le variazioni delle chiavi.
- La griglia e' in sola lettura quando il programma e' in modalita' selezione (
z-event-tm-tab-epimpostaevent-action-fail-terminatesea-modalita = "S"). - Il programma include
capazien.cpy(dati azienda consorzi), disponibile sottocap/cpy/.