Vai al contenuto

COGZAL — Creazione ordini clienti da file denti

Sorgente: cbl/cogzal.cbl | Program-ID: cogzal | Tipo: Programma interattivo GUI a griglia paginata

Menu: Lab.Odont. > Magazzino > Ordine clienti > Ordini da file denti


Scopo

Genera un ordine cliente di scarico (e la relativa consegna) a partire dalle materie prime provvisorie accantonate sulle commesse di laboratorio (file "denti" — movimenti materiali LODCMMTA con provvista "C" non ancora ordinati). Il programma raggruppa per merce le quantita' provvisorie di tutte le commesse ordinabili, mostra all'operatore l'elenco delle commesse coinvolte in una griglia paginata, e alla conferma (F3) crea un unico ordine cliente intestato al cliente fisso 88017, con una riga per merce, aggiornando poi le commesse con il riferimento all'ordine appena generato.

All'avvio chiede conferma esplicita ("Confermi di voler eseguire la creazione dell'ordine cliente di scarico del file denti ?"); l'ordine viene creato solo dopo una seconda conferma dalla griglia.


File e tabelle

File Copybook Accesso Scopo
LODCMMOR lodcmmor.k02 Lettura sequenziale (chia2, tip "A") Ordini/movimenti commessa: sorgente delle commesse da ordinare (solo senza ordine gia' assegnato)
LODCMMTA (via .prc) Lettura sequenziale (notmin) Movimenti materiali per commessa: quantita' provvisorie (prov = "C") da raggruppare per merce
LODPRESC lodpresc.k04 Lettura per chiave (chia4) Prescrizioni: medico e paziente della commessa
COGGEANA Lettura diretta Anagrafica: ragione sociale cliente, dati pagamento/listino/agente del cliente 88017
COGTABEL Lettura diretta Tabelle: flag provvigione agente (tipo 21)
COGTESOR Scrittura Testata ordine cliente generato
COGRIGOR Scrittura Righe ordine cliente (una per merce)
COGCONOR Scrittura Testata e righe consegna collegate all'ordine
COGTRANS FD interno + cogtrans.k01 I-O temporaneo Transito commesse (cliente/commessa, descrizione, paziente): alimenta la griglia
COGTRANS2 FD interno + cogtran2.k01 I-O temporaneo Transito quantita' per merce (chiave merce, quantita' sommata)
COGTRANS3 FD interno + cogtran3.k01 I-O temporaneo Transito chiavi da aggiornare (tipo "1" = LODCMMOR, "2" = LODCMMTA) col numero ordine finale

I tre file di transito sono file indicizzati temporanei dichiarati manualmente nel sorgente (SELECT + FD). I nomi fisici sono in ext-tmp-dir con schema #$cogzal.{operatore}, cogzal2.{operatore}, cogzal3.{operatore}.


Programmi chiamati (CALL)

Programma Condizione Scopo
COGS25 testata-ordine / testata-consegna Numeratore documenti: assegna il numero all'ordine (cod 10) e alla consegna (cod 4)
COGU12 righe-ordine Aggiornamento giacenze/movimenti magazzino per la riga d'ordine creata (entrata/uscita "U", causale d'ordine)
COGU10W z-u10 / get-divisa-conto Gestione divisa di conto ed editing importi
GRIDADMN preparazione/gestione griglia Personalizzazione colonne griglia (S-F4) ed export
RNEWCONF x99-confi Lettura dei 3 parametri di configurazione dell'ordine

Copybook incluse

Working Storage

feurtab.fd, cogfiles.cpy, cogzal.fd, cogzal.select, cogzal.wrk, k-u10.cpy, wgrave.cpy, wnscr.cpy, wopenf.cpy, wstato.cpy, wgrid.cpy, utilgdad.cpy, utilu03.cpy, utils52.cpy, utilu10.cpy, utilu12.cpy, utilrcnf.cpy, cogazien.cpy, cogconta.cpy, utils25.cpy, utilncnf.cpy, utils77.cpy, utils54.cpy

Linkage / Screen

wcont.cpy, wcont1.cpy, cogzal-01.scr

Procedure Division

cogzal.decla, grave.cpy, mmmask.cpy, opengen.cpy, stato.cpy, stato1.cpy, winmsg.cpy, dtab.cpy, fscrol2.cpy, utilpggr.cpy, cogzal.prc, getdcont.cpy, lodcmmor.k02, lodpresc.k04, cogtrans.k01, cogtran2.k01, cogtran3.k01


Parametri di configurazione (RNEWCONF)

Caricati in x99-confi (gruppo PROGCOGU52):

Chiave Variabile interna Uso
tor-impegno w-tor-impegno Codice impegno della testata ordine
tor-causale w-tor-causale Causale della testata ordine (usata anche in COGU12)
tor-dove w-tor-dove Campo "dove" della testata ordine

Logica di elaborazione

  1. crea-cogtrans: crea (open output → i-o) i tre file di transito, con controllo di funzione gia' in uso.
  2. riempi-file: scorre LODCMMOR (tip "A", senza ordine assegnato); per ogni commessa ordinabile recupera medico/paziente dalla prescrizione e ragione sociale, scrive il record su COGTRANS, salva la chiave su COGTRANS3 (tipo "1") e richiama scrivi-cogtrans2. Si ferma dopo 1000 commesse (flag di blocco lettura), avvisando che ne esistono altre.
  3. scrivi-cogtrans2tratta-lodcmmta: per ogni commessa scorre LODCMMTA; le righe con provvista "C" non ancora ordinate (ord-ann/ord-num = 0) vengono sommate per merce su COGTRANS2, salvando le chiavi su COGTRANS3 (tipo "2").
  4. Visualizzazione: la griglia paginata (vis-tabella-disp, con paginazione utilpggr/fscrol2) mostra l'elenco commesse; l'operatore puo' esportare in Excel (S-F5) o gestire colonne (S-F4).
  5. aggiorna (F3, dopo conferma): scorre COGTRANS2 e crea una sola testata ordine (testata-ordine) e testata consegna (testata-consegna) alla prima iterazione, poi una riga ordine (righe-ordine) e una riga consegna (righe-consegna) per ciascuna merce. Ogni riga d'ordine aggiorna le giacenze via COGU12. Infine scorre COGTRANS3 (tratta-cogtrans3) e riscrive su LODCMMOR e LODCMMTA il riferimento all'ordine appena creato (tipo/anno/numero/progressivo).
  6. Al termine mostra il numero dell'ordine inserito.

Paragrafi chiave

Paragrafo Scopo
apri Inizializzazione, conferma iniziale, pulsanti, configurazione
crea-cogtrans Creazione dei tre file di transito
riempi-file Estrazione commesse ordinabili da LODCMMOR
scrivi-cogtrans2 / tratta-lodcmmta Raggruppamento quantita' provvisorie per merce
vis-tabella-disp Ciclo di gestione della griglia paginata (F3 conferma, S-F4/S-F5, PgUp/PgDn)
aggiorna Creazione ordine + consegna e aggiornamento riferimenti sulle commesse
testata-ordine / righe-ordine Scrittura testata e righe ordine cliente (con COGU12)
testata-consegna / righe-consegna Scrittura testata e righe consegna collegate
tratta-cogtrans3 Riscrittura del numero ordine su LODCMMOR/LODCMMTA
x99-confi Caricamento configurazione ordine

Note

  • Il cliente destinatario dell'ordine (88017), i codici documento (10 = ordine, 4 = consegna, tipo "C") e il magazzino (az-main-mag) sono cablati nel codice.
  • Il limite di 1000 commesse per elaborazione e' un vincolo tecnico: se residuano altre commesse ordinabili l'operatore deve uscire e rientrare.
  • Il programma usa PERFORM ... THRU e paginazione manuale (stile legacy): in manutenzione prestare attenzione allo scope dei loop.