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¶
crea-cogtrans: crea (open output → i-o) i tre file di transito, con controllo di funzione gia' in uso.riempi-file: scorreLODCMMOR(tip"A", senza ordine assegnato); per ogni commessa ordinabile recupera medico/paziente dalla prescrizione e ragione sociale, scrive il record suCOGTRANS, salva la chiave suCOGTRANS3(tipo"1") e richiamascrivi-cogtrans2. Si ferma dopo 1000 commesse (flag di blocco lettura), avvisando che ne esistono altre.scrivi-cogtrans2→tratta-lodcmmta: per ogni commessa scorreLODCMMTA; le righe con provvista"C"non ancora ordinate (ord-ann/ord-num = 0) vengono sommate per merce suCOGTRANS2, salvando le chiavi suCOGTRANS3(tipo"2").- Visualizzazione: la griglia paginata (
vis-tabella-disp, con paginazioneutilpggr/fscrol2) mostra l'elenco commesse; l'operatore puo' esportare in Excel (S-F5) o gestire colonne (S-F4). aggiorna(F3, dopo conferma): scorreCOGTRANS2e 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 viaCOGU12. Infine scorreCOGTRANS3(tratta-cogtrans3) e riscrive suLODCMMOReLODCMMTAil riferimento all'ordine appena creato (tipo/anno/numero/progressivo).- 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 ... THRUe paginazione manuale (stile legacy): in manutenzione prestare attenzione allo scope dei loop.