Vai al contenuto

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 in x-controlla-tm-merce contro COGMERCI (esclude merce nulla e "999999999").
  • Fornitore: gestito dalla subroutine COGS65W (z-s65-tm-for-cod, util-s65, tipo "F"); validato in x-controlla-tm-for-cod contro 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-divisa contro la tabella divise COGTABEL tipo 56; imposta il numero di decimali tm-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-controlli costruiscono la griglia (colonne data + 5 prezzi) via GRIDADMN (Add-Record, Svuota-Tutto).
  • x-riempi-grid-record formatta 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 flag w-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). In x-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:

  1. la griglia viene aggiornata via GRIDADMN (Add-Record o Modify-Record);
  2. viene riletto COGLISFO per la chiave della riga; se in inserimento il record esiste gia' l'operazione diventa modifica (e viceversa);
  3. il record COGLISFO viene scritto (wr-coglisfo) o riscritto (rwr-coglisfo) con i 5 prezzi e la divisa;
  4. 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-tab ha capacita' massima k-max-ele-tab = 900 righe; 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.