Vai al contenuto

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. (costanti k-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-cfg con ncnf-ope = "Modifica").
  • Codice configurazione / gruppo (a-tm-prog): la funzione/gruppo; validato contro CNFTES (x-controlla-tm-prog, che ne recupera la descrizione cft-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 gruppo abilita.
  • Configurazioni non visitate? (a-tm-fl-non-visitate): filtra le sole configurazioni con cfg-fl-vista diverso da "S".
  • Gruppi da ricercare (a-tm-chiavi): stringa di ricerca full-text; con F8 apre il lookup CFG10. La ricerca e' preparata con GESSTR (operazione CERCA-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 gruppo abilita) e, se non lo e' gia', attiva il log sulla tabella COGCNF (record CO/500 di genfiles.arc, campo fil-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-parametro copia i metadati dal record CNFPAR nell'immagine di griglia (descrizione, flag "usa operatore/postazione", validazione, obbligatorieta', tipo suddivisione cfp-tip-sud, formato cfp-format, dimensioni ricavate dal formato, codice password cfp-cod-pwd), leggendo anche la descrizione della testata da CNFTES.
  • c1-carica-cfg scandisce 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 usa cfg-value-n, per merce/pianoconti/data/password ci sono rami dedicati. Per le password legge il valore cifrato e lo decifra con ENCRYPT per la visualizzazione.
  • Se il parametro non ha ancora alcuna istanza in COGCNF, b1-10-cfg ne 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 descrizione cfv-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 in COGCNF. 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, tipo M=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 (CRYPT in scrittura, ENCRYPT in lettura) con la chiave tm-key costruita da z-crea-chiave-crypt; l'accesso al valore puo' richiedere una password specifica verificata da COGS10 (codice cfp-cod-pwd).
  • Log configurazioni: l'ingresso con la password "utente" attiva, se non gia' attivo, il log applicativo sul file COGCNF (record CO/500 di genfiles.arc), tracciando le modifiche alle configurazioni.
  • Flag "visitata": cfg-fl-vista serve 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-tab gestisce fino a k-max-ele-tab = 2000 righe; oltre, il caricamento viene interrotto con avviso.