CFG03 - Gestione configurazioni (editor RNEWCONF)¶
Sorgente: cbl/cfg03.cbl | Tipo: Programma interattivo GUI con griglia (editor generale delle configurazioni) | Program-ID: CFG03
Menu:
- Sistema > Configurazione (voce "Configurazioni")
Scopo¶
E' l'editor generale delle configurazioni del gestionale: la maschera con cui l'assistenza (e, in ambito limitato, l'utente) consulta e modifica i parametri di configurazione memorizzati sul file COGCNF (COGCNF.ARC), cioe' lo store che alimenta il servizio di lettura configurazioni RNEWCONF usato da tutti i programmi applicativi.
Il programma non contiene la definizione dei singoli parametri: queste risiedono in una famiglia di file di metadati (CNFTES, CNFPAR, CNFDEF, CNFVAL, CNFDES, CNFGRU, CNFGRC). CFG03 li legge per sapere quali parametri esistono per una data area/gruppo, con che formato, con che descrizione e con che valori ammessi, e propone all'operatore la griglia dei valori effettivamente impostati in COGCNF (creandoli al volo dal default quando ancora non esistono).
La chiave logica di una configurazione e' quindi la quintupla:
- pacchetto (
cfg-pack): area applicativa - "C"=Coge/Admin, "T"=Tessile, "F"=Forma, "P"=Personalizzate (verticali), "S"=Consorzi, ecc. (costantik-pack-coge,k-pack-tess,k-pack-form,k-pack-cap,k-pack-grandine,k-pack-pers,k-pack-tutti); - gruppo/funzione (
cfg-prog): il "programma" o gruppo di configurazione (es.arc-ott,fatturaz,abilita, ...); - chiave (
cfg-param-key): il nome del singolo parametro; - suddivisione (
cfg-param-sub) ed eventuale personalizzazione per operatore (cfg-ope) / postazione (cfg-post); - indice (
cfg-param-idx) per i parametri ad array.
Al valore (cfg-value) e' associato un flag cfg-fl-vista ("configurazione gia' visitata") che CFG03 imposta a "S" quando una configurazione viene aperta, per poter poi filtrare le sole configurazioni "non ancora visitate".
Struttura del programma¶
Inizializzazione (apri)¶
ctr-abil, z-99-init-program, rd-azi, open-files. Determina se l'operatore e' amministratore leggendo PRNTOPER (ptop-fl-amm -> m-ope-amm): l'amministratore vede il pulsante custom "Imposta default" (F7) e alcuni aiuti (F8 sul codice password). Abilita i tasti funzione (F1 configura, invio modifica, F3 conferma, F5 apri file, F8 aiuto/calendario, Shift-F4 griglia, Ctrl-A aggiungi, Ctrl-E elimina), crea i pulsanti custom (Shift-F2 "Navigazione", F7 "Imposta default") e apre la maschera in modalita' modeless. Legge le tre configurazioni "di servizio" della maschera via x99-src-cfg (vedi RNEWCONF).
Filtro di ricerca (paragrafi a-tm-pac -> a-richiesta-conferma)¶
Prima di caricare la griglia l'operatore imposta i filtri, accettati in sequenza:
- Pacchetto (
a-tm-pac): area applicativa; con F1 apre la gestione della configurazione della maschera stessa (x99-src-cfgconncnf-ope = "Modifica"). - Codice configurazione / gruppo (
a-tm-prog): la funzione/gruppo; validato contro CNFTES (x-controlla-tm-prog, che ne recupera la descrizionecft-prog-des). Con F8 apre il lookup gruppi CFG01. Se l'operatore e' entrato con la password "utente" (vedi Note tecniche) non puo' selezionare il gruppoabilita. - Configurazioni non visitate? (
a-tm-fl-non-visitate): filtra le sole configurazioni concfg-fl-vistadiverso da "S". - Gruppi da ricercare (
a-tm-chiavi): stringa di ricerca full-text; con F8 apre il lookup CFG10. La ricerca e' preparata conGESSTR(operazioneCERCA-TUTTO-PREPARA).
Password di accesso (a-tm-password)¶
All'ingresso (salvo ambiente di sviluppo ext-ambiente-sviluppo = "S", o password gia' validata) e' richiesta una password generale:
FLUX-cfg-es2000: accesso completo;- la password "utente" configurata (
abilita/password-cfg-utente): accesso ridotto (w-gestione-abilita = "N", niente gruppoabilita) e, se non lo e' gia', attiva il log sulla tabella COGCNF (recordCO/500 digenfiles.arc, campofil-log = "X",fil-giorni-log = 360) e termina.
Caricamento griglia (a-inizio-dati / carica-dati / b1-carica)¶
carica-dati chiama b1-carica, che scandisce CNFPAR (definizione parametri) per il pacchetto/gruppo scelti, in ordine alfabetico (st-cnfpar-notmin) o per ordine di accettazione (st-cnfpar-notmin-chia2) a seconda della configurazione CONFIG/ORDINAMENTO. Per ogni parametro definito:
a1-carica-parametrocopia i metadati dal record CNFPAR nell'immagine di griglia (descrizione, flag "usa operatore/postazione", validazione, obbligatorieta', tipo suddivisionecfp-tip-sud, formatocfp-format, dimensioni ricavate dal formato, codice passwordcfp-cod-pwd), leggendo anche la descrizione della testata da CNFTES.c1-carica-cfgscandisce COGCNF per tutte le istanze (per postazione/operatore/suddivisione) del parametro e le carica in griglia, convertendo il valore secondo il formato (k-format-*); per i formati numerici usacfg-value-n, per merce/pianoconti/data/password ci sono rami dedicati. Per le password legge il valore cifrato e lo decifra conENCRYPTper la visualizzazione.- Se il parametro non ha ancora alcuna istanza in COGCNF,
b1-10-cfgne crea una al volo (wr-cogcnf) valorizzandola con il default letto da CNFDEF (cfd-default).
Con un filtro di ricerca attivo (tm-chiavi), per ciascun parametro la ricerca viene eseguita con GESSTR su nome chiave, descrizione parametro, note (CNFDES), valori ammessi (CNFVAL), postazione, suddivisione e valore, scartando i parametri che non contengono la stringa cercata.
Al termine a3-reload-fl-vista ricarica il flag "visitata" per l'intera tabella.
Griglia e comandi (a-grid / a-accept-grid)¶
Sulla griglia: invio apre la riga in modifica (a-operazione = "M"), Ctrl-A aggiunge una riga ("I"), Ctrl-E elimina (con conferma -> c-cancella). Shift-F4 apre la personalizzazione colonne (GRIDADMN). F7 (solo amministratore) esegue a4-imposta-default per riportare al default la riga selezionata o tutte le configurazioni caricate (cancellandone il record COGCNF, cosi' che alla successiva rilettura riparta dal default CNFDEF). F8 (amministratore, riga con tm-cod-pwd valorizzato) mostra la descrizione del codice password leggendola da COGTABEL. Shift-F2 (solo in ambiente sviluppo) apre la navigazione sorgenti SCRPGNAV posizionandosi sul parametro.
Riga di dettaglio (a-riga-dettaglio -> a-riga-dettaglio-fine)¶
Accetta in sequenza pacchetto, gruppo (a-tm-par, con lookup CFG02 su F8), suddivisione (magazzino/cliente/generica secondo tm-par-tip-sud), operatore, postazione, indice e infine il valore. Il valore e' accettato con controlli e lookup dipendenti dal formato del parametro:
- valori fissi (
cfp-causes-validation = "S"): il valore deve esistere in CNFVAL, di cui viene mostrata la descrizionecfv-value-des; lookup con CFG04; - formati speciali: merce (
WCAT36/lookup merce), piano conti, causale (COGT20/COGT27), info CRM (CRM017/CRM013), contropartita, articolo/esercizio, cliente/fornitore (COGV04/COGE65/COGE69), colore (GETCOLOR), data (calendario), password (cifratura CRYPT).
I parametri con cfp-cod-pwd valorizzato richiedono la verifica di una password specifica via COGS10 prima di consentire la modifica del valore.
Salvataggio (a-riga-dettaglio-fine)¶
Rilegge la riga da COGCNF (a5-leggi-cogcnf-da-tabella) per verificare coerenza inserimento/modifica, converte il valore di griglia nel formato di COGCNF (per le password lo cifra con CRYPT usando la chiave tm-key preparata da z-crea-chiave-crypt) e scrive (wr-cogcnf) o riscrive (rwr-cogcnf) il record. In ambiente di sviluppo aggiorna anche le note del parametro su CNFDES (cfs-des). Infine aggiorna la griglia (GRIDADMN) e marca la configurazione come "visitata" (a2-visita-configurazione).
Cancellazione (c-cancella)¶
Ricompone la chiave COGCNF dalla riga di griglia (pacchetto, gruppo, chiave, suddivisione, operatore, postazione, indice), rilegge in lock (rd-cogcnf-lk) ed elimina (del-cogcnf).
Aiuto in linea (x-aiuto-cfg / x-mostra-aiuto-cfg)¶
Finestra ancillare (subroutine NOTECFG) che mostra le note descrittive del parametro selezionato, lette dal file CNFDES (cfs-des, record a lunghezza variabile).
Tabelle e file¶
| File logico | Chiave / accesso | Descrizione |
|---|---|---|
| FEURTAB | record CO/500 di genfiles.arc (fil-tip+fil-num) |
Tabella di sistema; usata per attivare il log su COGCNF |
| COGCNF | cfg-chia1 (cfg-pack+cfg-prog+cfg-param-key+cfg-param-sub+cfg-ope+cfg-post+cfg-param-idx) |
Store delle configurazioni (valori RNEWCONF): valore cfg-value, flag visitata cfg-fl-vista |
| CNFTES | cft-chia1 (cft-pack+cft-prog) |
Metadati: testata gruppo/funzione di configurazione (descrizione cft-prog-des) |
| CNFPAR | cfp-chia1 (cfp-pack+cfp-prog+cfp-param-key); secondaria .k02 (ordine cfp-param-ord) |
Metadati: definizione parametri (descrizione, formato, flag ope/post/validazione/obbligatorio, tipo suddivisione, codice password) |
| CNFDEF | cfd-chia1 (cfd-pack+cfd-prog+cfd-param-key+cfd-param-sub+cfd-param-idx) |
Metadati: valore di default del parametro (cfd-default) |
| CNFVAL | cfv-chia1 (cfv-pack+cfv-prog+cfv-param-key+cfv-idx); secondaria .k02 (su valore) |
Metadati: valori ammessi per i parametri a valori fissi (cfv-value, descrizione cfv-value-des) |
| CNFDES | cfs-chia1 (cfs-pack+cfs-prog+cfs-param-key+cfs-idx) |
Metadati: note/aiuto in linea del parametro (record variabile cfs-des) |
| CNFGRU / CNFGRC | primaria; cnfgrc.k02 |
Metadati: raggruppamenti di configurazioni (gruppi e loro chiavi) |
| CAPTABEL / CAPMAGAZ | - | Tabelle consorzi (agenzia/magazzino, per la suddivisione consorzi) |
| COGTABEL | euta-key (euta-cod) |
Tabelle generiche; usata per la descrizione del codice password |
| COGGEANA | ana-tipo+ana-cod |
Anagrafica generale; validazione suddivisione per cliente |
| COGMAGAZ | magz-tipo+magz-cod |
Magazzini; validazione suddivisione per magazzino |
| COGPNCON / COGCLASM | - | Piano conti / classi merceologiche (validazione valori tipizzati) |
| CRMINFOR / CRMTPATT | - | Anagrafiche CRM (validazione valori tipo info-crm) |
| PRNTPOST | - | Postazioni (descrizione postazione della suddivisione/personalizzazione) |
| PRNTOPER | ptop-cod |
Operatori; flag amministratore ptop-fl-amm |
Le routine di I/O sui file cnf*, cogcnf, ecc. (st-, rdnxt-, rd-, rd-...-lk, wr-, rwr-, del-) sono i gestori tabella generati dallo Screen Designer, inclusi nella catena di COPY di fine procedure division.
COPY incluse¶
Working-Storage¶
cfg03.wrk, wgrave.cpy, wnscr.cpy, wopenf.cpy, wstato.cpy, cogazien.cpy, opensave.def, utile09.cpy, utile65.cpy, utils52.cpy, utils65.cpy, utils67.cpy, utils68.cpy, utilu10.cpy, utilv04.cpy, utilw01.cpy, utilw36.cpy, utilt20.cpy, utilt27.cpy, wgrid.cpy, utilgdad.cpy, utilcfg01.cpy, utilcfg02.cpy, utilcfg04.cpy, utilcfg10.cpy, linkg37.cpy, utilcrm013.cpy, utilcrm017.cpy, utilnotecfg.cpy, utilgcol.cpy, utilcrypt.cpy, utilgesstr.cpy, utilscrpgnav.cpy, utilncnf.cpy
Linkage¶
wcont.cpy, utilg37.cpy, utils10.cpy, wcont1.cpy
Procedure Division¶
cfg03.decla, cfg03-01.scr (screen), grave.cpy, mmmask.cpy, opengen.cpy, stato.cpy, stato1.cpy, winmsg.cpy, crypt.cpy, sendw01.cpy, sendw36.cpy, utilgrid.cpy, cfg03.prc, cnfpar.k02, cnfval.k02, cnfgrc.k02, cogfiles.k01
CALL a sottoprogrammi¶
| Programma | Scopo |
|---|---|
| RNEWCONF | Lettura delle configurazioni di servizio della maschera (x99-src-cfg) |
| CFG01 | Lookup del gruppo/funzione di configurazione (F8 sul codice configurazione) |
| CFG02 | Lookup della chiave/parametro (F8 sul parametro) |
| CFG04 | Lookup del valore ammesso del parametro (valori fissi CNFVAL) |
| CFG10 | Lookup dei gruppi da inserire nella stringa di ricerca (F8) |
| NOTECFG | Finestra ancillare di aiuto/note del parametro (lette da CNFDES) |
| GRIDADMN | Gestione griglia (Prepara, Svuota-Tutto, Add/Modify-Record) e personalizzazione colonne (Shift-F4) |
| GESSTR | Ricerca full-text sui parametri (preparazione ed esecuzione della ricerca) |
| CRYPT / ENCRYPT | Cifratura/decifratura dei valori dei parametri di tipo password |
| COGS10 | Verifica della password specifica associata a un parametro (cfp-cod-pwd) |
| COGT20 / COGT27 | Lookup causali/tipi (per i formati causale) |
| CRM013 / CRM017 | Lookup anagrafiche CRM (formato info-crm) |
| COGV04 / COGE65 / COGE69 | Lookup cliente/fornitore ed entita' collegate |
| COGG37 | Utility di supporto (linkage utilg37) |
| GETCOLOR | Selezione colore (formato color) |
| COGS65W | Servizio di supporto (COGS65) |
| WCAT36 | Ricerca magazzino consorzi |
| SCRPGNAV | Navigazione sorgenti (solo ambiente sviluppo, Shift-F2) |
| C$OPENSAVEBOX | Dialogo di selezione file/percorso (F5) |
I sottoprogrammi CFG01, CFG02, CFG04, CFG10 sono i pannelli ausiliari dell'editor configurazioni (lookup sui metadati cnf*).
Configurazioni RNEWCONF¶
CFG03 e' il programma che modifica COGCNF, ma per la propria maschera legge tre configurazioni via RNEWCONF nel paragrafo x99-src-cfg (pacchetto "C"):
| Gruppo | Chiave | Uso |
|---|---|---|
| CONFIG | ORDINAMENTO |
Ordine di scansione dei parametri in griglia ("A" = alfabetico su CNFPAR chiave primaria, altrimenti per ordine di accettazione su .k02) |
| COLORI | RIGA-GRIGLIA-WARNING |
Colore di evidenziazione righe di warning nella griglia |
| abilita | password-cfg-utente |
Password "utente" che abilita l'accesso ridotto (senza gruppo abilita) e attiva il log su COGCNF |
Riferimenti: config, colori, abilita.
Note tecniche¶
- Metadati vs valori: la definizione di un parametro (esistenza, formato, default, valori ammessi, note) vive nei file
CNFTES/CNFPAR/CNFDEF/CNFVAL/CNFDES; il valore effettivo vive inCOGCNF. CFG03 crea al volo il record COGCNF dal default se manca (b1-10-cfg), e la funzione "Imposta default" (F7) cancella il record COGCNF per farlo ripartire dal default. - Personalizzazione a piu' livelli: lo stesso parametro puo' avere piu' istanze in COGCNF differenziate per suddivisione (
cfg-param-sub, tipoM=magazzino /C=cliente /G=generica), operatore (cfg-ope) e postazione (cfg-post); e' il meccanismo con cui una configurazione assume valori diversi per magazzino/postazione. - Password parametri: i valori di formato password sono memorizzati cifrati in COGCNF (
CRYPTin scrittura,ENCRYPTin lettura) con la chiavetm-keycostruita daz-crea-chiave-crypt; l'accesso al valore puo' richiedere una password specifica verificata daCOGS10(codicecfp-cod-pwd). - Log configurazioni: l'ingresso con la password "utente" attiva, se non gia' attivo, il log applicativo sul file COGCNF (record
CO/500 digenfiles.arc), tracciando le modifiche alle configurazioni. - Flag "visitata":
cfg-fl-vistaserve a distinguere le configurazioni gia' esaminate dall'assistenza; il filtro "Configurazioni non visitate" aiuta a individuare rapidamente i parametri mai toccati (tipicamente ancora al default). - Limite griglia: la tabella interna
tm-tabgestisce fino ak-max-ele-tab = 2000righe; oltre, il caricamento viene interrotto con avviso.