COGO15 - Prezzi Particolari¶
Sorgente: cbl/cogo15.cbl | Program-ID: COGO15 | Tipo: Programma interattivo GUI (sottoprogramma richiamato)
Menu: Ordini > Clienti > Prezzi Particolari
Scopo¶
Gestione dei prezzi particolari legati a una singola riga d'ordine (cliente o
fornitore). Richiamato dalla gestione ordini passando l'ordine, la merce e la
riga (area di linkage util-s46), presenta in una griglia lo storico dei prezzi
particolari per quella combinazione ordine/merce/riga, ciascuno con data di
decorrenza e prezzo. L'operatore puo' inserire, modificare ed eliminare le righe;
le variazioni sono scritte direttamente sul file COGPREOR. Il titolo della
maschera e il tipo importo (vendita/acquisto) si adattano al tipo di ordine
Clienti ("C") o Fornitori. Gli importi in valuta diversa da quella della riga
vengono convertiti alla data di decorrenza tramite COGU10.
File e tabelle¶
| File/Tabella | Tipo | Modalita' | Descrizione |
|---|---|---|---|
| FEURTAB | Indexed | Input | Tabella nomi file (risoluzione nomi fisici) |
| COGMERCI | Indexed | Input | Anagrafica merci |
| COGGEANA | Indexed | Input | Anagrafica clienti/fornitori |
| COGTESOR | Indexed | Input | Testata ordini |
| COGRIGOR | Indexed | Input | Righe ordini (accesso anche per chiave k02) |
| COGPREOR | Indexed | I-O | Prezzi particolari ordini (file aggiornato dal programma) |
Copybook utilizzate¶
| Copybook | Descrizione |
|---|---|
| feurtab.fd | SELECT tabella nomi file |
| cogfiles.cpy | Record tabella nomi file |
| cogo15.select | SELECT dei file gestiti (include i .fd di cogmerci, coggeana, cogtesor, cogrigor, cogpreor) |
| cogo15.fd | FD dei file gestiti |
| cogo15.wrk | Working-storage generato da Screens |
| k-u10.cpy | Costanti importi COGU10 |
| wgrave.cpy | Gestione errori gravi |
| wnscr.cpy | Dati schermo |
| wopenf.cpy | Apertura file |
| wstato.cpy | Stato I/O |
| cogazien.cpy | Dati azienda |
| wgrid.cpy | Costanti/handle gestione griglia |
| utilgdad.cpy | Linkage gestore griglia GRIDADMN |
| utils52.cpy | Utility date COGS52 |
| utils68.cpy | Utility merce COGS68 |
| utilu10.cpy | Utility importi COGU10 |
| wcont.cpy | Linkage stringhe comuni |
| wcont1.cpy | Linkage area utente 2 |
| utils46.cpy | Linkage parametri di ingresso (ordine, merce, riga) |
| grave.cpy | Paragrafi errori gravi |
| mmmask.cpy | Paragrafi init/exit programma |
| opengen.cpy | Apertura file generica |
| stato.cpy / stato1.cpy | Controllo stato I/O |
| winmsg.cpy | Messaggi a video |
| cogrigor.k02 | Accesso COGRIGOR per chiave secondaria k02 |
| cogo15.prc | Paragrafi generati da Screens (gestione controlli/verbi) |
| utilgrid.cpy | Paragrafi gestione griglia |
| getdcont.cpy | Lettura divisa/dati contabilita' (get-divisa-conto) |
| cogo15.decla | Declaratives generate da Screens |
| cogo15-01.scr | Screen section |
Logica di elaborazione¶
- Inizializzazione: controllo abilitazioni, init programma, caricamento
lingua, lettura dati azienda e apertura file. Vengono attivati i tasti
funzione previsti (invio/modifica, aggiungi Ctrl-A, elimina Ctrl-E,
Shift-F4 gestione griglia). Si legge la data di sistema e la divisa del conto
(
get-divisa-conto), memorizzata inw-currency. - Lettura ordine e riga: dai parametri
s46-ordine,s46-merce,s46-rigasi legge la testata (COGTESOR); se l'ordine non esiste esce con messaggio. Si legge la riga (COGRIGOR); se non trovata esce. Da questi si ricavano il tipo ordine (tor-tipo), la divisa riga (ror-currency), il prezzo e la data di decorrenza (tor-datdecor). - Titolo e maschera: il titolo diventa "Prezzi Particolari Ordini Clienti"
o "...Fornitori" in base a
w-tip. Si costruiscono i controlli e la griglia (GRIDADMN, operazione "Prepara"). - Testata a video: vengono visualizzati tipo/anno/numero/progressivo ordine, il cliente/fornitore (nome letto da COGGEANA), la merce (formattata via COGS68) e il prezzo d'ordine (formattato via COGU10).
- Caricamento tabella: si scandisce COGPREOR (
st-cogpreor-may+rdnxt-cogpreor) filtrando su ordine (tipo/anno/numero/progr) + merce + riga; per ogni record trovato si popolano data (anno/mese/giorno) e prezzo nella tabella internatm-tab. Se la valuta del record differisce da quella della riga il prezzo viene convertito alla data di decorrenza (COGU10, operazione cambio). Limite massimok-max-ele-tab= 200 elementi; oltre tale soglia ulteriori elementi vengono scartati con avviso. - Popolamento griglia: la tabella interna viene riversata nella griglia
(
z-costruisci-grid, GRIDADMN "Add-Record"). - Loop principale griglia (
a-accept-grid): gestisce ESC (uscita), doppio-click/invio (modifica riga), Shift-F4 (amministrazione griglia via GRIDADMN), Ctrl-A (inserimento), Ctrl-E (eliminazione). Ogni azione e' soggetta al controllo abilitazioni (w-abi-agg,w-abi-ins,w-abi-del). - Dettaglio riga (
a-riga-dettaglio): in modifica ("M") viene fatto il read con lock del record COGPREOR; in inserimento ("I") si predispone una nuova riga. Accept di data decorrenza (COGS52, con calendario F8) e prezzo (COGU10), con controlli di obbligatorieta' su entrambi i campi. - Conferma e scrittura: alla conferma la riga viene riversata in griglia
(GRIDADMN Add/Modify-Record) e il record COGPREOR viene aggiornato: se in
inserimento ma il record esiste gia' si passa a modifica (avviso); se in
modifica ma il record e' stato cancellato si passa a inserimento. La valuta
scritta e' quella della riga (
ror-currency). Scrittura conwr-cogpreoro riscrittura conrwr-cogpreor. - Eliminazione: previa conferma, il record viene riletto con lock
(
rd-cogpreor-lk) e cancellato (del-cogpreor); la tabella interna e la griglia vengono ricompattate. - Uscita (
fine/z-chiudi): chiusura file, chiusura finestra,canceldi COGU10W e uscita al chiamante conexit program.
Chiamate a sottoprogrammi¶
| Programma | Scopo |
|---|---|
| GRIDADMN | Gestore griglia (preparazione, svuotamento, aggiunta/modifica record, amministrazione colonne) |
| COGU10W | Gestione, formattazione, conversione e cambio valuta degli importi |
Nota: i verbi st-/rdnxt-/rd-/wr-/rwr-/del-cogpreor e analoghi sugli
altri file (rd-coggeana, rd-cogmerci, rd-cogtesor, rd-cogrigor) sono
gestori tabella generati da Screens, non chiamate a programmi esterni.