Vai al contenuto

GRP001 - Tipi azienda (gruppi di aziende)

Sorgente: cbl/grp001.cbl | Tipo: Programma interattivo GUI con griglia editabile (anche richiamabile via CALL come help/selezione) | Program-ID: GRP001

Menu:

  • Sistema > Configurazione > Gruppi di aziende > Tipi azienda
  • Clinica > Archivi > Tipi azienda

Scopo

Gestisce l'anagrafica delle tipologie di azienda che compongono un gruppo di aziende (tabella GRPAZTIP). Ogni tipo azienda e' identificato da un codice a un carattere e da una descrizione; per l'installazione Apollonia i tipi previsti sono H = Holding, P = Pdalab, C = Clinica, L = Laboratorio esterno.

L'interfaccia e' una griglia editabile (pattern standard tm-tab / GRIDADMN) in cui l'operatore inserisce, modifica ed elimina le righe; alla conferma (F3) le variazioni vengono riversate sulla tabella confrontando codice attuale e codice precedente di ciascuna riga.

Il programma opera in due modalita':

  • Standalone da menu (nessun parametro di chiamata): all'ingresso e' direttamente in modalita' "Aggiornamento" e F3 salva e chiude.
  • Chiamato come help/selezione (grp001-called = k-program-id, grp001-caller valorizzato): parte in modalita' "Selezione", con F3 che alterna Selezione/Aggiornamento; l'Invio (o doppio click) su una riga restituisce codice e descrizione al chiamante in grp001-out-cod / grp001-out-des. Tipico chiamante: GRP002 (help sulla colonna tipo azienda).

I dati identificativi (data/ora/operatore/programma di inserimento e modifica) sono valorizzati automaticamente dalle routine generate wr-grpaztip / rwr-grpaztip.


Struttura del programma

Flusso principale

  1. Inizializzazione (apri): ctr-abil, z-99-init-program, open-files, rd-azi. Determina la modalita' di chiamata (w-dc-called), abilita i tasti funzione (Invio, F3 aggiorna/selezione/modifica, F8 aiuto, Shift-F4 griglia, Ctrl-A aggiungi, Ctrl-E elimina), imposta il titolo "Gestione Tipi Azienda", prepara la griglia (z-prepara-tm-grid -> GRIDADMN "Prepara") e costruisce i controlli.
  2. Caricamento griglia (a4 / a10-loop): svuota la griglia, scandisce GRPAZTIP dall'inizio (st-grpaztip-notmin + rdnxt-grpaztip) e riempie ogni riga con tm-cod (= tm-cod-prec) e tm-des, fino a k-max-ele-tab = 500 righe (oltre il limite emette il messaggio "tabella piena").
  3. Gestione griglia (a-grid / a-accept-grid): accept sulla griglia (z-99-accept-tm-tab), gestione Esc (test-wesc), emulazione Invio su doppio click/enter, Shift-F4 (GRIDADMN interattivo), F3, Invio, Ctrl-A, Ctrl-E, e i controlli particolari di cella (z-usa-tf-tm-tab).
  4. Conferma / salvataggio (a1-aggiorna -> b-aggiorna): valida la griglia (x-controlla-tm-tab-tutto) e, se OK, riversa le variazioni sulla tabella.
  5. Chiusura (fine / z-chiudi): z-close-files, chiusura finestra, z-99-exit-program.

Salvataggio (b-aggiorna)

Scorre tutte le righe della griglia e, in base al confronto tra tm-cod (codice attuale) e tm-cod-prec (codice presente all'ultima lettura):

  • tm-cod vuoto e tm-cod-prec valorizzato: cancella (b3-cancella);
  • tm-cod = tm-cod-prec: modifica (b2-modifica);
  • tm-cod valorizzato e tm-cod-prec vuoto: inserisce (b1-inserisci);
  • tm-cod <> tm-cod-prec (entrambi valorizzati): cancella il vecchio e inserisce il nuovo.

b1-inserisci verifica la preesistenza del codice (chiede conferma sovrascrittura), b2-modifica gestisce il caso di record nel frattempo scomparso (chiede se ricrearlo), b3-cancella ignora silenziosamente il record gia' assente.

Controlli e abilitazioni

  • x-controlla-tm-cod: in inserimento segnala il codice gia' presente (lettura rd-grpaztip-lk).
  • x-controlla-tm-des: descrizione obbligatoria se il codice e' valorizzato.
  • z-event-tm-tab-ep: in modalita' "Selezione" impedisce l'entrata in cella; sulle righe gia' esistenti blocca la modifica se manca l'abilitazione (w-abi-agg = "N").
  • Le abilitazioni utente (w-abi-ins / w-abi-agg / w-abi-del) sono controllate su F3, Ctrl-A e Ctrl-E.

Tabelle e file

File logico Chiave / accesso Descrizione
FEURTAB - Tabella di sistema
GRPAZTIP primaria ao-azt-chia1 (ao-azt-cod, 1 car.); scansione st-grpaztip-notmin + rdnxt-grpaztip Tipologie di azienda del gruppo (codice ao-azt-cod, descrizione ao-azt-des)

COPY incluse

Working-Storage

grp001.wrk, wgrave.cpy, wnscr.cpy, wopenf.cpy, wstato.cpy, cogazien.cpy, utilgdad.cpy, wgrid.cpy, utilu20.cpy

Linkage

wcont.cpy, wcont1.cpy, utilgrp001.cpy (parametri grp001-caller, grp001-called, grp001-in-cod, grp001-out-cod, grp001-out-des)

Procedure Division

grp001.decla, grp001-01.scr (screen), grave.cpy, mmmask.cpy, opengen.cpy, stato.cpy, stato1.cpy, winmsg.cpy, grp001.prc

La catena delle routine di I/O grpaztip.k01 (e il resto dei file dichiarati nel .select generato da Screens) e' inclusa tramite grp001.prc.


CALL a sottoprogrammi

Programma Scopo
GRIDADMN Gestione della griglia editabile e-tm-tab (operazione "Prepara" alla costruzione, chiamata interattiva su Shift-F4)
Y* Gestore tabella generato per GRPAZTIP (routine rd-/wr-/rwr-/del-/st-/rdnxt-grpaztip incluse via grp001.prc)

Configurazioni RNEWCONF

Il programma non contiene un paragrafo di lettura di chiavi RNEWCONF applicative: non usa RNEWCONF ne' utilncnf.cpy.


Note tecniche

  • Griglia con diffing codice/codice-precedente: l'intera logica di persistenza (b-aggiorna) si basa sul confronto tra tm-cod e tm-cod-prec; questo e' il pattern standard delle maschere a griglia di manutenzione tabella del gestionale (comune a GRP002 e GRP004).
  • Doppio ruolo del programma: da menu e' un editor a tutti gli effetti; via CALL diventa una finestra di help/selezione. La distinzione e' pilotata solo da w-dc-called, che a sua volta abilita/disabilita i tasti F3 selezione/modifica anziche' F3 aggiorna e attiva il ritorno del codice selezionato all'Invio.
  • Limite griglia: massimo 500 tipi azienda in memoria (k-max-ele-tab); oltre il limite il caricamento si interrompe con avviso.
  • Il tasto F8 (aiuto di cella) e' dichiarato ma i relativi paragrafi di attivazione/uso (z-gestione-tf-tm-tab-ep / z-usa-tf-tm-tab-ep) sono vuoti: su questa maschera non ci sono celle con help attivo.