GRP002 - Anagrafica aziende del gruppo¶
Sorgente: cbl/grp002.cbl | Tipo: Programma interattivo GUI con griglia editabile (anche richiamabile via CALL come help/selezione) | Program-ID: GRP002
Menu:
- Sistema > Configurazione > Gruppi di aziende > Aziende
- Clinica > Archivi > Pannello di controllo
Scopo¶
E' il pannello di controllo delle aziende del gruppo: gestisce l'anagrafica GRPAZIEN (le singole aziende/ambienti che compongono il gruppo) e i dati locali collegati (GRPAZGRP, tabella codice merce avanzato COGTABEL tipo 62). Per ogni azienda si definiscono codice, descrizione, tipo azienda (da GRPAZTIP), percorsi di export/import, stato, flag import, path base/univoco e, se attiva la gestione gruppo aziende, il magazzino sede e i riferimenti cliente/fornitore locali.
L'interfaccia e' una griglia editabile (pattern tm-tab / GRIDADMN): l'operatore inserisce/modifica/elimina le righe e alla conferma (F3) le variazioni sono riversate sulle tabelle confrontando codice attuale e codice precedente di ciascuna riga.
Modalita' di funzionamento:
- Standalone da menu: parte in "Aggiornamento", F3 salva e chiude.
- Chiamato come help/selezione (
grp002-called = k-program-id): parte in "Selezione", riceve ingrp002-in-codun codice azienda che filtra le righe visualizzate secondo il tipo del record indicato (holding, clinica, laboratorio, pdlab), e restituisce codice/descrizione selezionati ingrp002-out-cod/grp002-out-des.
Tasti aggiuntivi rispetto a GRP001/GRP004: F1 riapre la configurazione (RNEWCONF) e la rilegge, Shift-F7 apre i contatti dell'azienda selezionata (GRP003).
Struttura del programma¶
Flusso principale¶
- Inizializzazione (
apri):ctr-abil,z-99-init-program,open-files,rd-azi; determinaw-dc-callede memorizzagrp002-in-codinw-dc-in-cod. Abilita i tasti (Invio, F1 configura, F3, F8 aiuto, Shift-F4 griglia, Ctrl-A/Ctrl-E, Shift-F7 contatti). Legge le configurazioni (x99-src-cfg), imposta il titolo "Pannello di Controllo", prepara la griglia. - Filtro per chiamata (
a4): se chiamato (w-dc-called = "S") legge il record azienda diw-dc-in-cod, ne ricava il tipo (flag-tipo-in-cod) e, per il tipo pdlab, il codice laboratorio associato (scansione GRPLABOD per chiaveao-lab-chia5). - Caricamento griglia (
a10-loop): scandisce GRPAZIEN (st-grpazien-notmin+rdnxt-grpazien), fino ak-max-ele-tab= 600 righe. Applica il filtro: - tipo laboratorio: mostra solo l'azienda
w-dc-in-cod; - tipo pdlab: mostra
w-dc-in-code le aziende con laboratorio (GRPLABOD) il cui padre coincide con il laboratorio diw-dc-in-cod(ao-lab-padre = w-ao-lab-cod). Per ogni riga carica: codice, descrizione, tipo azienda + descrizione tipo (da GRPAZTIP), path export/import, stato, flag import, path base/univoco (in minuscolo). Se attiva la gestione gruppo aziende, integra da GRPAZGRP i riferimenti cliente/fornitore (con nome da COGGEANA) e da GRPAZIEN il magazzino sede (nome da COGMAGAZ). - Gestione griglia (
a-grid/a-accept-grid): accept sulla griglia, gestione Esc, emulazione Invio, F1 (riconfigura), Shift-F4, Shift-F7 (contatti), F3, Invio, Ctrl-A, Ctrl-E. - Conferma / salvataggio (
a1-aggiorna->b-aggiorna): valida e riversa le variazioni. - Chiusura (
fine/z-chiudi):z-close-files,cancel "COGS65W", chiusura finestra, uscita.
Salvataggio (b-aggiorna)¶
Come nella famiglia GRP0xx, per ogni riga confronta tm-cod e tm-cod-prec: cancella (b3-cancella), modifica (b2-modifica), inserisce (b1-inserisci) oppure cancella+inserisci se il codice e' cambiato.
b1-inserisci / b2-modifica aggiornano il record GRPAZIEN (descrizione, tipo, path, stato, flag import, path base/univoco). Se gestione-gruppo-aziende = "S" sincronizzano anche il record locale GRPAZGRP (crea se assente; scrive azg-rif-cliente / azg-rif-fornitore), il magazzino sede e chiamano a-sincronizza-aziende-gruppo. Dopo la scrittura eseguono x-sincronizza-kpn (esporta la chiave azienda verso KPN via SWN121) e b-aggiorna-tma (allineamento tabella codice merce avanzato COGTABEL tipo 62, se configurata la sigla in TAB-CMA-AZIENDE-GRUPPO).
b3-cancella cancella GRPAZIEN, sincronizza KPN, e se attiva la gestione gruppo aziende cancella anche GRPAZGRP e la voce COGTABEL collegata (b-cancella-tma).
Controlli di cella¶
x-controlla-tm-tipo: tipo azienda obbligatorio e verificato su GRPAZTIP (carica la descrizione tipo).x-controlla-tm-path-exp/x-controlla-tm-path-imp: percorsi export/import obbligatori.x-controlla-tm-mag: codice magazzino verificato su COGMAGAZ (solo se gestione gruppo aziende attiva).x-controlla-tm-cli-cod/x-controlla-tm-for-cod: cliente/fornitore verificati su COGGEANA (solo se gestione gruppo aziende attiva).- I paragrafi
z-tm-tab-*-be-epper le colonne mag/cli/for disabilitano l'ingresso in cella (w-cell-accept-ok = "N") quando la gestione gruppo aziende non e' attiva.
Help di cella (z-usa-tf-tm-tab-ep)¶
- colonna tipo (F8): apre GRP001 come selezione e riporta il tipo scelto;
- colonna magazzino (F8, solo con gestione gruppo aziende): apre l'help magazzino (
send-w36) e riporta il codice scelto.
Tabelle e file¶
| File logico | Chiave / accesso | Descrizione |
|---|---|---|
| FEURTAB | - | Tabella di sistema (COGTABEL per il codice merce avanzato, tipo 62) |
| GRPAZIEN | primaria ao-azi-chia1 (ao-azi-cod, 4 car.); scansione st-grpazien-notmin + rdnxt-grpazien |
Anagrafica aziende del gruppo (tipo, path export/import, stato, flag import, path base/univoco, magazzino sede) |
| GRPAZTIP | ao-azt-chia1 (ao-azt-cod) |
Tipologie di azienda (descrizione tipo per la griglia; verifica in x-controlla-tm-tipo) |
| GRPAZGRP (COGAZGRP) | azg-chia1 (azg-cod) |
Dati locali azienda del gruppo (riferimenti cliente azg-rif-cliente / fornitore azg-rif-fornitore) |
| GRPLABOD | chiave .k05 ao-lab-chia5 (ao-lab-az-cod) |
Aziende/laboratori odontotecnici (filtro pdlab: ao-lab-padre) |
| COGGEANA | ana-tipo+ana-cod |
Anagrafica generale (nome cliente/fornitore) |
| COGMAGAZ | magz-tipo+magz-cod |
Anagrafica magazzini (nome sede) |
| COGTABEL (via FEURTAB) | euta-tipo (62) + euta-ptc-tip + euta-ptc-cod |
Codice merce avanzato: descrizione azienda allineata (b-aggiorna-tma / b-cancella-tma) |
COPY incluse¶
Working-Storage¶
grp002.wrk, wgrave.cpy, wnscr.cpy, wopenf.cpy, wstato.cpy, cogazien.cpy, utilagprg.cpy, wgrid.cpy, utilgdad.cpy, utilu20.cpy, utilncnf.cpy, utilgrp001.cpy, utilgrp003.cpy, utils65.cpy, utilw36.cpy
Linkage¶
wcont.cpy, wcont1.cpy, utilgrp002.cpy (parametri grp002-caller, grp002-called, grp002-in-cod, grp002-out-cod, grp002-out-des)
Procedure Division¶
grp002.decla, grp002-01.scr (screen), grave.cpy, mmmask.cpy, opengen.cpy, stato.cpy, stato1.cpy, grplabod.k05 (chiave secondaria aggiunta manualmente), winmsg.cpy, sendw36.cpy, grp002.prc
Le routine di I/O di GRPAZIEN, GRPAZTIP, COGAZGRP, COGGEANA, COGMAGAZ, COGTABEL (dai file dichiarati nel
.selectgenerato da Screens) sono incluse viagrp002.prc; la chiave secondariagrplabod.k05e' aggiunta esplicitamente perche' Screens genera solo la chiave primaria.
CALL a sottoprogrammi¶
| Programma | Scopo |
|---|---|
| GRIDADMN | Gestione della griglia editabile e-tm-tab (operazione "Prepara" e chiamata interattiva su Shift-F4) |
| RNEWCONF | Lettura delle chiavi di configurazione (paragrafo x99-src-cfg, richiamabile anche da F1) |
| GRP001 | Help/selezione del tipo azienda (F8 sulla colonna tipo) |
| GRP003 | Gestione contatti dell'azienda selezionata (Shift-F7) |
| SWN121 | Sincronizzazione con KPN: esporta la chiave azienda (ESPORTA-KEY) in x-sincronizza-kpn |
| COGS65W | Help anagrafica cliente/fornitore per le colonne cli/for (parametrizzato da z-s65-tm-cli-ep / z-s65-tm-for-ep; cancel in chiusura) |
| Y* | Gestori tabella generati per GRPAZIEN, GRPAZTIP, COGAZGRP, GRPLABOD, COGGEANA, COGMAGAZ, COGTABEL (routine incluse via grp002.prc) |
Configurazioni RNEWCONF¶
Lette nel paragrafo x99-src-cfg (pacchetto C):
| Gruppo | Chiave | Uso |
|---|---|---|
| AZIENDA | GESTIONE-BRAND-MARCHIO |
Flag gestione brand/marchio (tm-cfg-gestione-brand) |
| SISTMERAVA | TAB-CMA-AZIENDE-GRUPPO |
Sigla tabella codice merce avanzato su cui allineare la descrizione azienda (COGTABEL tipo 62); se vuota l'allineamento e' disattivato |
| assist | gestione-gruppo-aziende |
Abilita i dati locali gruppo (magazzino sede, cliente/fornitore, GRPAZGRP) sia in griglia sia in salvataggio (tm-cfg-gestione-gruppo-aziende) |
| ABILITA | GRUPPO-AZIENDE |
Se "S" attiva la sincronizzazione aziende del gruppo (a-sincronizza-aziende-gruppo / a-cancella-aziende-gruppo, tm-cfg-gruppo-aziende) |
Riferimenti: azienda, sistmerava, assist, abilita.
Note tecniche¶
- Griglia con diffing codice/codice-precedente: come tutta la famiglia GRP0xx, la persistenza (
b-aggiorna) confrontatm-codetm-cod-precper decidere insert/update/delete/rinomina. - Nuova riga precompilata: all'aggiunta (Ctrl-A) la riga nasce con stato
"P"(attiva/produzione) e flag import"S". - Path base/univoco in minuscolo:
ao-azi-path-baseeao-azi-path-univocosono forzati in minuscolo (function lower-case) sia in caricamento sia in scrittura. - Sincronizzazione KPN: ogni scrittura/cancellazione di azienda esporta la chiave verso KPN tramite SWN121 (
x-sincronizza-kpn), conon overflow continueper non bloccare in assenza del modulo. - Dipendenza dalla configurazione gruppo aziende: i paragrafi di sincronizzazione (
a-sincronizza-aziende-gruppo,a-cancella-aziende-gruppo) attualmente si limitano aunlock all; le colonne magazzino/cliente/fornitore e la scrittura di GRPAZGRP sono attive solo congestione-gruppo-aziende = "S". - Filtro pdlab/laboratorio: quando il programma e' chiamato con un'azienda di tipo laboratorio o pdlab, la griglia mostra un sottoinsieme delle aziende ricavato da GRPLABOD (
ao-lab-padre); usato per navigare le aziende figlie di un laboratorio. - Limite griglia: massimo 600 aziende in memoria (
k-max-ele-tab). - Per la collocazione di GRP002 nel contesto import/export del gruppo vedi Gruppi di aziende - Panoramica.