COGV19 — Prezzi di acquisto per fornitore¶
Sorgente: cbl/cogv19.cbl | Tipo: Programma interattivo GUI con griglia | Program-ID: COGV19
Menu: Magazzino > Archivi & Tabelle > Merci Fornitori > Prezzi di acquisto per fornitore
Scopo¶
Gestisce il listino di acquisto di una merce presso un fornitore: per una coppia (merce, fornitore) mostra in griglia i prezzi di acquisto con relativa data di decorrenza e permette di inserirli, modificarli ed eliminarli. Ogni riga di listino contiene fino a 5 prezzi paralleli (listino euro, listino divisa e tre listini "liberi") e una data di validita'.
Oltre alla modalita' interattiva standalone (voce di menu), COGV19 puo' essere richiamato da un altro programma passando gia' merce e fornitore: in questo caso l'intestazione (merce e fornitore) e' bloccata e si entra direttamente sul listino della coppia.
Per i dettagli operativi lato utente vedere la pagina utente corrispondente in docs/user.
File e tabelle principali¶
| File/Tabella | Copybook | Uso |
|---|---|---|
| COGLISFO | coglisfo |
Listino fornitori: prezzi di acquisto per (merce, fornitore, data). Record lfo-rec, chiave lfo-chia composta da lfo-merce + lfo-for + data (lfo-an/lfo-me/lfo-gi) |
| COGMERCI | cogmerci |
Anagrafica merci; validazione merce (mer-chia, mer-descr) |
| COGGEANA | coggeana |
Anagrafica generale; lettura fornitore (ana-tipo = "F", ana-cod, ana-nome) |
| COGMERFO | cogmerfo |
Relazione merce/fornitore; conserva la divisa di default della coppia (mfr-merce, mfr-for, mfr-divisa) |
| COGTABEL | cogtabel (via euta-rec) |
Tabella divise (euta-tipo = 56); da qui euta-ve-dec (numero decimali) |
util-v19 (linkage) |
utilv19.cpy |
Area di dialogo con il chiamante: v19-called, v19-caller, v19-for, v19-merce |
I record COGLISFO vengono letti/scritti dai verbi generati st-coglisfo-notmin, rdnxt-coglisfo, rd-coglisfo-lk, wr-coglisfo, rwr-coglisfo, del-coglisfo.
Struttura ed elaborazione¶
Il programma e' costruito sul framework maschera standard (mmmask.cpy, rd-msk-pop, z-99-init-program/z-99-exit-program) e usa la griglia gestita tramite GRIDADMN (utilgdad.cpy, copie utilgrid.cpy).
Intestazione (selezione)¶
I campi di testata sono accettati in sequenza nei paragrafi a-tm-merce, a-tm-for-cod, a-tm-divisa:
- Merce: gestita dalla subroutine di aiuto merce COGS68W (
z-s68-tm-merce,util-s68); validata inx-controlla-tm-mercecontro COGMERCI (esclude merce nulla e"999999999"). - Fornitore: gestito dalla subroutine COGS65W (
z-s65-tm-for-cod,util-s65, tipo"F"); validato inx-controlla-tm-for-codcontro COGGEANA. Qui viene anche letto COGMERFO per verificare che la merce appartenga al fornitore e per ereditare la divisa della coppia (mfr-divisa). - Divisa: validata in
x-controlla-tm-divisacontro la tabella divise COGTABEL tipo 56; imposta il numero di decimalitm-dec.
Alla conferma dell'intestazione (a-fine-intestazione) viene eseguita carica-dati.
Caricamento listino (carica-dati / carica-loop)¶
Legge COGLISFO in sequenza a partire da (merce, fornitore) con st-coglisfo-notmin + rdnxt-coglisfo, fino a rottura chiave su lfo-merce/lfo-for. Ogni riga popola la tabella in memoria tm-tab (occorrenze tm-righe, max k-max-ele-tab = 900) con data, divisa e i 5 prezzi (lfo-prezzo (1..5)). Se la divisa della riga (lfo-currency) e' diversa da quella di conto (w-currency-conto) viene mostrato un avviso.
Griglia e dettaglio¶
z-costruisci-grid/z-costruisci-controllicostruiscono la griglia (colonne data + 5 prezzi) via GRIDADMN (Add-Record,Svuota-Tutto).x-riempi-grid-recordformatta ogni cella; i prezzi sono arrotondati ed editati tramite la subroutine COGU10W (util-u10, operazioni"Arrotonda"e edit).- INVIO su una riga = modifica (
a-operazione = "M"), Ctrl-A = inserimento ("I"), Ctrl-E = eliminazione (previa conferma). Le abilitazioni sono soggette ai flagw-abi-ins/w-abi-agg/w-abi-del. - La riga di dettaglio (
a-riga-dettaglio) accetta data (a-tm-data, con calendario F8 e subroutine COGS52) e i 5 prezzi (a-tm-prezzo-1..5, subroutine COGU10W). Inx-controlla-tm-prezzo-1, se la divisa e' impostata e il prezzo in divisa e' zero, il prezzo viene convertito al cambio (z-u10-tm-prezzo-cambio, COGU10W operazione"Cambio").
Scrittura (a-fine-dettaglio)¶
Alla conferma della riga:
- la griglia viene aggiornata via GRIDADMN (
Add-RecordoModify-Record); - viene riletto COGLISFO per la chiave della riga; se in inserimento il record esiste gia' l'operazione diventa modifica (e viceversa);
- il record COGLISFO viene scritto (
wr-coglisfo) o riscritto (rwr-coglisfo) con i 5 prezzi e la divisa; - viene aggiornato COGMERFO (
rd-cogmerfo-lk+rwr-cogmerfo) memorizzando la divisa della coppia merce/fornitore.
La cancellazione (c-cancella) rilegge il record e chiama del-coglisfo.
CALL a sottoprogrammi¶
| Sottoprogramma | Scopo |
|---|---|
| COGS68W | Aiuto/accept merce (via z-s68-tm-merce) |
| COGS65W | Aiuto/accept fornitore (via z-s65-tm-for-cod) |
| COGS52 (COGS52W) | Accept data di decorrenza con calendario |
| COGS60 / S95 | Combo/check di supporto (divisa, ecc.) |
| COGU10W | Edit, arrotondamento e conversione al cambio dei prezzi |
| GRIDADMN | Gestione griglia (prepara, add/modify record, svuota, esporta) |
Modalita' "chiamato" (integrazione con altri programmi)¶
Se v19-called = "COGV19" e v19-caller not = spaces, il flag interno w-dc-called = "S" attiva la modalita' integrata:
- merce e fornitore arrivano da
v19-merce/v19-for(letto il nome fornitore da COGGEANA e la descrizione merce via COGS68W in operazione"Display"); - i campi merce e fornitore vengono disabilitati (
z-cambia-tm-merce,z-cambia-tm-for-cod,z-cambia-tm-for-des) e la validazione intestazione (x-controlla-intestazione) li salta; - l'uscita dalla divisa in questa modalita' termina il programma (
go to fine) anziche' tornare all'intestazione.
Note¶
- La tabella in memoria
tm-tabha capacita' massimak-max-ele-tab = 900righe; oltre questa soglia gli elementi eccedenti vengono scartati con avviso all'operatore. - I 5 prezzi rappresentano: listino euro, listino in divisa e tre listini "liberi" (
tm-prezzo-1..5); l'edit/arrotondamento e la conversione al cambio sono delegati a COGU10W.