Vai al contenuto

COGZO3 - Ristampa Lettera/Cartella Ortodontica

Sorgente: cbl/cogzo3.cbl | Program-ID: COGZO3 | Tipo: Programma interattivo (ristampa documento ortodontico)

Menu: Lab.Odont. > Ortodonzia > Ristampa Documento

Nota sulla funzione reale: l'etichetta di menu recita "Ristampa Documento". Il programma ristampa in particolare i documenti del fascicolo ortodontico gia' generati per una commessa: le Lettere (tipo "L") e le Cartelle (tipo "C") ortodontiche archiviate su LODDFORT. Non genera nuovi documenti, ne' li modifica: recupera un documento esistente e lo reinvia in stampa.


Scopo

Consente di ristampare una Lettera o una Cartella ortodontica gia' prodotta per una commessa di laboratorio. L'operatore identifica la prescrizione/commessa tramite la ricerca generica (studio medico, paziente, progressivo, numero commessa) via COGS98W; il programma verifica che la prescrizione esista, quindi chiede il tipo documento ("L" = Lettera, "C" = Cartella) e il numero documento all'interno della commessa. Verificata l'esistenza del documento su LODDFORT (rd-loddfort), viene selezionata la stampante/emulazione tramite COGS54 e poi lanciato dinamicamente il sottoprogramma di composizione ed emissione del documento (COGZO3L per le lettere, COGZO3C per le cartelle).

Il programma puo' essere avviato anche come funzione richiamata da un altro programma (chiamata "COGZO3-CALLED", vedi copybook utilzo3.cpy): in tal caso riceve gia' numero commessa, tipo documento e numero documento, salta la fase interattiva di scelta e va direttamente alla stampa.

File e tabelle

File/Tabella Tipo Modalita' Descrizione
FEURTAB ISAM Input Parametri generali azienda (cogfiles.cpy)
LODPRESC ISAM Input Prescrizione (gestita tramite COGS98W)
LODCMTES ISAM Input Testata commessa (gestita tramite COGS98W)
LODDFORT ISAM Input Documento del fascicolo ortodontico: chiave ldf-commessa + ldf-tip ("L"/"C") + ldf-num; dati ldf-data, ldf-rif-lettera (loddfort.cpy)
FLSTA file di stampa Output File di spool/stampa gestito nella declaratives (flsta.fd, flsta.cpy)

Copybook utilizzate

Copybook Descrizione
cogzo3.select, cogzo3.fd, cogzo3.wrk, cogzo3-01.scr, cogzo3.prc, cogzo3.decla Screen Designer
feurtab.fd, cogfiles.cpy FEURTAB
flsta.fd, flsta.cpy File di stampa FLSTA
wstato.cpy, wopenf.cpy, wgrave.cpy, wnscr.cpy, cogazien.cpy Working storage standard + dati azienda
utils54.cpy Linkage COGS54 (selezione stampante/emulazione)
utils52.cpy, utils98.cpy Linkage COGS52, COGS98W
utilzde.cpy Linkage COGZDEW (editor descrizioni)
utilfnt.cpy Gestione font
utilzs3.cpy Linkage util-zs3 (commessa/tipo doc/allegato)
utilzo3x.cpy Linkage util-zo3x passato ai sottoprogrammi COGZO3L/COGZO3C (zo3x-commessa, zo3x-tip, zo3x-num)
wcont.cpy, utilzo3.cpy, wcont1.cpy Linkage di programma; utilzo3.cpy definisce i dati di chiamata (zo3-called, zo3-commessa, zo3-tip-doc, zo3-num-doc)
stato1.cpy, stato.cpy, winmsg.cpy, grave.cpy, mmmask.cpy, opengen.cpy Copybook di fine procedure

Logica

Struttura goto-driven con integrazione COGS98W per la ricerca prescrizione. Flusso principale:

  • apri: init, ctr-abil, open-files, rd-azi; rileva la chiamata esterna (zo3-called = "COGZO3-CALLED") e in tal caso valorizza w-dc-called = "S" con commessa, tipo e numero documento ricevuti; abilita i tasti F3, F4, F8 aiuto/calendario, F9; carica la bitmap labodonto e crea il pulsante custom "Commessa (F5)"; z-costruisci-controlli, z-s98-init.
  • a4: reset maschera (tm-tip = "L" di default, data = data di sistema); z-carica-controlli, z-s98-init. Se chiamato (w-dc-called = "S") muove la commessa in tm-num e salta a a-10-cerca.
  • a-tm-cli: accept della prescrizione/commessa via COGS98W (z-s98-tm-presc, s98-fun = "accept"); gli esiti "exit"/"prev" chiudono il programma.
  • a-10-cerca / a-fine-commessa: x-controlla-commessa esegue COGS98W in modalita' "find+display": se la prescrizione non esiste segnala errore e torna a a-tm-cli; altrimenti recupera il numero commessa (s98-lpm-num -> tm-num). Se chiamato, muove tipo e numero documento ricevuti e salta a a-50-loddfort.
  • a-tm-tip: accept del tipo documento (combo gestita via COGS60, z-s60-tm-tip); F3 va alla conferma.
  • a-tm-num-doc: accept del numero documento all'interno della commessa.
  • a-richiesta-conferma: valida i campi (x-imposta-conferma -> x-controlla-tm-tip, x-controlla-tm-num-doc).
  • a-50-loddfort: compone la chiave LODDFORT (ldf-commessa = tm-num, ldf-tip, ldf-num = tm-num-doc) ed esegue rd-loddfort; se il documento non esiste segnala "Documento non esistente" e torna alla richiesta numero; recupera la data documento (ldf-data) in tm-data.
  • a-90: chiama COGS54 (emulazione 'HPLJ3', carattere stampa 250) per la selezione stampante; ESC/F2 chiudono, F3 prosegue.
  • a-90-ok: prepara util-zo3x (commessa, tipo, numero) e compone dinamicamente il nome del sottoprogramma: COGZO3L se tm-tip = "L", COGZO3C altrimenti; esegue call w-nome-prog using stringhe util-zo3x util-s54, poi cancel; imposta s54-after-print = "S" e richiama COGS54 per chiudere la stampa; termina (go to fine).
  • fine / z-chiudi: z-close-files, chiusura finestra, z-99-exit-program, cancel 'COGS98W', exit program.
  • x-test-mouse: instradamento eventi mouse/click sui controlli della maschera.

CALL

Programma Scopo
COGS98W Ricerca/accept generico prescrizione-commessa (studio/paziente/progressivo/numero)
COGS54 Selezione stampante/emulazione e apertura/chiusura stampa
COGZO3L Sottoprogramma di composizione e stampa della Lettera ortodontica (tm-tip = "L")
COGZO3C Sottoprogramma di composizione e stampa della Cartella ortodontica (tm-tip <> "L")
COGZDEW Editor/gestione descrizioni (linkage util-zde)

Note

  • Il codice usa PERFORM ... THRU e GO TO in modo estensivo (stile legacy pre-convenzioni attuali).
  • Il nome del sottoprogramma di stampa e' costruito a runtime concatenando k-program-id con "L" o "C" (string k-program-id "L"/"C" ... into w-nome-prog): per la commessa corrente vengono quindi richiamati COGZO3L o COGZO3C, che contengono la logica effettiva di composizione del testo del documento.
  • Il documento da ristampare deve gia' esistere su LODDFORT: il programma non lo crea. Il tipo documento e' "L" (Lettera) o "C" (Cartella), coerentemente con ldf-tip in loddfort.cpy.
  • In modalita' chiamata (COGZO3-CALLED) il programma bypassa completamente l'interazione (scelta prescrizione, tipo e numero documento) e va direttamente alla selezione stampante e alla stampa.