Vai al contenuto

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

  1. 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 in w-currency.
  2. Lettura ordine e riga: dai parametri s46-ordine, s46-merce, s46-riga si 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).
  3. 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").
  4. 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).
  5. 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 interna tm-tab. Se la valuta del record differisce da quella della riga il prezzo viene convertito alla data di decorrenza (COGU10, operazione cambio). Limite massimo k-max-ele-tab = 200 elementi; oltre tale soglia ulteriori elementi vengono scartati con avviso.
  6. Popolamento griglia: la tabella interna viene riversata nella griglia (z-costruisci-grid, GRIDADMN "Add-Record").
  7. 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).
  8. 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.
  9. 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 con wr-cogpreor o riscrittura con rwr-cogpreor.
  10. Eliminazione: previa conferma, il record viene riletto con lock (rd-cogpreor-lk) e cancellato (del-cogpreor); la tabella interna e la griglia vengono ricompattate.
  11. Uscita (fine / z-chiudi): chiusura file, chiusura finestra, cancel di COGU10W e uscita al chiamante con exit 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.