Vai al contenuto

COGO41 — Visualizzazione/gestione situazione cambi e trasporti ordini fornitore

Intestazione

Campo Valore
Sorgente cbl/cogo41.cbl
Program-ID cogo41
Tipo Programma interattivo GUI (maschera con griglia paginata)
Posizione menu Ordini > Fornitori > Visualizzazioni > Situazione cambi/trasporti

Scopo

COGO41 e' una funzione di consultazione e rettifica dei dati di cambio valuta e costo di trasporto associati agli ordini a fornitore. Per ogni ordine viene messa a confronto la coppia di valori:

  • Statistica (dato di previsione registrato in testata ordine COGTESOR): cambio d'inserimento, divisa, costo/percentuale di trasporto previsti;
  • Reale (dato consuntivato sulla bolla di carico collegata COGTESBO): cambio dogana/bolla, divisa, costo/percentuale di trasporto effettivi.

L'operatore filtra per fornitore e per stato ordine (Aperti / Chiusi), la maschera estrae gli ordini in un file di transito, li mostra in griglia paginata e — se abilitato in aggiornamento (w-abi-agg) — consente di modificare riga per riga i valori di cambio/trasporto. Le modifiche vengono riscritte sull'ordine (COGTESOR) e sulla bolla (COGTESBO) e innescano il ricalcolo dei prezzi medi tramite COGR26.

E' presente una personalizzazione per l'azienda EX (az-personal = "EX"): i campi del blocco "reale" e il cambio dogana sono modificabili solo per determinati profili operatore (wo-oper = 1 o 2).


Struttura e flusso

Il programma segue il pattern standard delle maschere GUI con griglia paginata (COGS65W per il fornitore, GRIDADMN per la griglia, gestione paginazione fscrol2/utilpggr).

  1. Inizializzazione (apri): z-99-init-program, controllo abilitazione (ctr-abil), lettura azienda (rd-azi), apertura file (open-files), attivazione tasti funzione (F3 conferma/gestione, F8 dettaglio, Invio modifica, Shift-F4 personalizza griglia, Shift-F5 export Excel, F9 ricerca avanzata). Recupero divisa di conto via COGU10W (GetDivisaContow-currency-conto). Costruzione nome del file di transito temporaneo w-trs-name (cartella temp + #$COGO41.<operatore>).
  2. Apertura file di transito (a4): (ri)creazione del file indicizzato cogtrans in open output (test di lock: se gia' in uso da altro operatore → messaggio e fine), poi riapertura open i-o; svuotamento griglia.
  3. Accept parametri: a-tm-stato (stato ordini A/C) e a-tm-fornitore (fornitore, con help COGS65W; controllo esistenza su COGGEANA tipo "F"; 0 = tutti i fornitori).
  4. Estrazione (a-fine-daticarica-transito): scansione COGTESOR per chiave secondaria fornitore, popolamento del file di transito.
  5. Caricamento griglia (a-grid-inicarica-tab): lettura paginata del transito in tabella tm-tab e riempimento della griglia. Se nessun ordine → messaggio e ritorno.
  6. Ciclo griglia (a-grid): navigazione con PgUp/PgDn (spaginamento su cogtrans), Shift-F4 (GRIDADMN personalizzazione colonne), Shift-F5 (export Excel), F3 (gestione ordine → COGO60), F8 (dettaglio bolla → WIN015), Invio (modifica riga).
  7. Modifica riga (a-riga-dettaglioa-fine-dettaglio): pannello di dettaglio con i campi cambio/trasporto statistici e reali; abilitazioni dinamiche in base al tipo trasporto (Importo "I" / Percentuale "P") e alla presenza della bolla; alla conferma aggiornamento di COGTESOR e COGTESBO.
  8. Chiusura (fine/z-chiudi): chiusura file, close + delete file cogtrans (il transito e' temporaneo e viene eliminato), z-99-exit-program, goback.

File di transito

Il programma appoggia l'elaborazione su un file indicizzato temporaneo cogtrans, dichiarato manualmente nel sorgente (SELECT/FD, chiave trs-chia1) — non gestito da Screen Designer. Il nome fisico e' costruito a runtime (w-trs-name, univoco per operatore) e il file viene creato in open output e cancellato (delete file) all'uscita.

Record trs-rec (dichiarato inline), campi principali:

Campo Contenuto
trs-chia1 (trs-ordine = tipo/anno/numero/progr, trs-fornitore) Chiave primaria
trs-des-fornitore, trs-conferma Descrizione fornitore, n. conferma d'ordine
trs-stat-cmb-div / -des, trs-stat-cambio Divisa e cambio statistici
trs-stat-trasp-tip (I/P), trs-stat-trasp-div / -des, trs-stat-trasporto, trs-stat-perc Trasporto statistico (importo o percentuale)
trs-real-cmb-div / -des, trs-real-cambio Divisa e cambio reali (bolla)
trs-real-trasp-tip (I/P), trs-real-trasp-div / -des, trs-real-trasporto, trs-real-perc Trasporto reale
trs-bolla (trs-mag, trs-annob, trs-tipob, trs-bolla3) Riferimento bolla di carico collegata

File e tabelle principali

File logico Record Modalita' Uso
COGTESOR tor-rec I-O Testate ordini clienti/fornitori. Estrazione per chiave secondaria tor-chia2 (= tor-tipo1 "F" + tor-clifor + tor-chiu + tor-chia) tramite le routine del copybook cogtesor.k03 (st-cogtesor-notmin-chi2). Sono aggiornati tor-cambio-ins, tor-tra-imp, tor-tra-perc, tor-cambio-dogana, tor-currency
COGTESBO tes-rec I-O Testate bolle di carico (documento reale). La bolla e' individuata via COGU09; sono aggiornati tes-cambio, tes-tra-currency, tes-tra-imp, tes-tra-perc, tes-currency (chiave tes-chia3)
COGGEANA ana-rec Input Anagrafica fornitori (tipo "F"): descrizione fornitore, validazione codice
COGTABEL euta-rec Input Tabella EUROTAB tipo 56 (divise): descrizioni divisa euta-ve-des
cogtrans trs-rec I-O (temp) File di transito temporaneo (vedi sopra); cancellato all'uscita
FEURTAB Input Tabella file Eurosystem (feurtab.fd / cogfiles.cpy)

Il record tor-rec fornisce i valori di partenza per il blocco statistico: tor-cambio-ins, tor-currency, tor-tra-currency, tor-tra-imp / tor-tra-perc, tor-cnf-num, tor-cambio-dogana; tor-chiu distingue ordini aperti/chiusi. Il record tes-rec fornisce il blocco reale: tes-cambio, tes-currency, tes-tra-currency, tes-tra-imp / tes-tra-perc.


Copybook principali

Screen Designer (generati)

Copybook Contenuto
cogo41.select SELECT dei file di maschera
cogo41.fd FD dei file di maschera
cogo41.wrk Working storage della maschera
cogo41.decla Declaratives I/O
cogo41.prc Routine di I/O generate (rd-*, st-*, wr-*, rwr-*, rdnxt-*, rdprv-*)
cogo41-01.scr Screen section (maschera con griglia e-tm-tab e pannello e-dettaglio)

Strutture dati e comuni

Copybook Contenuto
cogfiles.cpy / feurtab.fd FD feurtab
cogazien.cpy Dati azienda (az-personal, az-main-mag, ...)
cogtesor.k03 Routine I/O COGTESOR per chiave secondaria tor-chia2
cogtrans.k01 Routine I/O del transito cogtrans (chiave primaria)
wgrave.cpy, wnscr.cpy, wopenf.cpy, wstato.cpy Working storage comuni
grave.cpy, stato.cpy, stato1.cpy, winmsg.cpy, opengen.cpy Routine comuni di fine procedure
mmmask.cpy Infrastruttura programma standalone (z-99-init-program / z-99-exit-program)
wcont.cpy / wcont1.cpy Area di linkage stringhe / continuazione; user-area ridefinita in w-chiave-ordine per COGO60
dtab.cpy, fscrol2.cpy, utilpggr.cpy Utility data + gestione griglia paginata (spaginamento)
wgrid.cpy Handle e costanti griglia

Interfacce sottoprogrammi (util-*)

Copybook Sottoprogramma
utilu09.cpy COGU09 (ricerca magazzino/bolla dell'ordine)
utilu10.cpy COGU10W (divisa/edit importi)
utilu20.cpy COGU20 (edit/accept importi cambio e percentuali)
utils52.cpy COGS52 (calendario)
utils65.cpy COGS65W (help/accept fornitore)
utile22.cpy COGE22 (help divise)
utilw15.cpy WIN015 (dettaglio ordine)
utilgdad.cpy GRIDADMN (amministrazione griglia)
utilr26.cpy COGR26 (ricalcolo prezzi medi)

Sottoprogrammi chiamati (CALL)

Programma Punto Scopo
COGU10W apri, edit importi Recupero divisa di conto (GetDivisaConto) ed edit/arrotondamento importi trasporto
COGS65W z-s65-tm-fornitore Accept/help del codice fornitore con descrizione
COGU09 call-u09 (cerca-magazzino) Individua la bolla di carico (movimento di magazzino) collegata all'ordine, per recuperare i dati "reali" da COGTESBO
COGE22 accept divise trasporto (F8) Help selezione divisa trasporto
GRIDADMN preparazione/riempimento/modifica griglia, Shift-F4 Gestione della griglia paginata (Prepara, Add/Modify-Record, Svuota, personalizzazione colonne)
WIN015 a-grid (F8) Finestra di dettaglio dell'ordine selezionato
COGO60 call-ges-ordine (F3) Gestione/apertura dell'ordine fornitore; al ritorno ricarica i dati dell'ordine da COGTESOR e riallinea il transito
COGR26 call-r26 Ricalcolo prezzi medi d'acquisto dopo modifica; r26-tip-doc = "O" (ordine, chiave tor-chia) o "B" (bolla, chiave tes-chia3)

Logica di business

Estrazione ordini (carica-transito)

Scansione di COGTESOR per la chiave secondaria fornitore (tor-tipo1 = "F", tor-clifor = tm-fornitore), filtrando per stato:

  • tm-stato = "C" (Chiusi): solo ordini con tor-chiu = "C";
  • tm-stato = "A" (Aperti): esclusi gli ordini con tor-chiu = "C".

Per ogni ordine trovato viene scritto un record di transito con:

  • Blocco statistico dai campi di testata ordine: tor-cambio-ins, tor-currency, tor-tra-currency; tipo trasporto "I" con tor-tra-imp se importo non nullo, altrimenti "P" con tor-tra-perc; descrizioni divisa lette da COGTABEL tipo 56;
  • Blocco reale: la bolla collegata e' cercata via COGU09 (u09-o-mm-*) e riletta su COGTESBO; se trovata si prendono tes-cambio, tes-currency, tes-tra-currency, tes-tra-imp/tes-tra-perc; altrimenti il cambio reale ripiega su tor-cambio-dogana / tor-currency.

Modifica riga (a-fine-dettaglio)

Alla conferma della riga, se un valore del blocco statistico e' cambiato (tm-r-stat-cambio, tm-r-stat-trasporto, tm-r-stat-perc, tm-r-real-cambio) rispetto ai valori correnti dell'ordine, viene:

  1. riletto e riscritto COGTESOR (tor-cambio-ins, tor-tra-imp, tor-tra-perc, e — se applicabile — tor-cambio-dogana; se tor-currency vuota viene impostata alla divisa di conto);
  2. chiamato COGR26 con w-r26 = "O" per il ricalcolo prezzi sull'ordine;
  3. aggiornato il corrispondente record di transito (rwr-cogtrans).

Se la riga ha una bolla collegata (tm-r-mag valorizzato) e i valori "reali" sono cambiati, viene riletta e riscritta COGTESBO (tes-cambio, tes-tra-currency, tes-tra-imp, tes-tra-perc), chiamato COGR26 con w-r26 = "B" e aggiornato il transito.

Il tipo trasporto "I"/"P" e' mutuamente esclusivo: prima della scrittura, se tipo = "I" viene azzerata la percentuale, se "P" viene azzerato l'importo (sia sul lato statistico sia sul reale).

Personalizzazione EX (az-personal = "EX")

Per l'azienda EX i campi del blocco reale (cambio, tipo/divisa/importo/percentuale trasporto) e l'aggiornamento del cambio dogana sono consentiti solo agli operatori con wo-oper = 1 o 2 (routine z-cambia-tm-r-real-* che abilitano/disabilitano i controlli). Per le altre aziende i campi reali sono sempre modificabili quando esiste la bolla.


Note

  • Il file di transito cogtrans e' temporaneo, univoco per operatore, e viene cancellato (delete file) alla chiusura; il tentativo di apertura in open output funge anche da lock: se fallisce (stato ≠ "00") la funzione e' considerata gia' in uso e il programma termina.
  • La griglia usa il pattern standard di paginazione (fscrol2 / utilpggr): il record letto e caricato in tabella tm-tab (max k-max-ele-tab = 900 righe); PgUp/PgDn eseguono lo spaginamento leggendo avanti/indietro sul transito.
  • La navigazione tra i controlli del pannello di dettaglio e' gestita "a mano" con go to verso i paragrafi a-tm-r-* e con x-test-mouse per gli spostamenti col mouse (stile storico del programma, precedente alle convenzioni attuali).
  • Il modulo appartiene alla gestione ordini fornitore: si integra con la gestione ordine COGO60 (F3) e con il dettaglio ordine WIN015 (F8); il ricalcolo dei prezzi medi e' delegato a COGR26.