Vai al contenuto

COGT20 - Anagrafica operatori

Sorgente: cbl/cogt20.cbl | Tipo: Programma interattivo GUI con griglia + frame di dettaglio a schede (anche richiamabile via CALL come lookup) | Program-ID: COGT20

Menu:

  • Sistema > Configurazione > Menu/Operatori (voce "Operatori")

Scopo

E' l'anagrafica degli operatori del gestionale (tabella PRNTOPER), il cuore del controllo accessi: ogni operatore ha un codice numerico, una descrizione, una password, un profilo di abilitazioni, la periferica/stampante di default e una serie di flag e associazioni (agente, magazzino, zona, reparto, divisione, lingua, ecc.). E' il programma che governa chi puo' accedere e con quali abilitazioni.

Ogni operatore ha i dati distribuiti su tre file collegati per lo stesso codice operatore:

  • PRNTOPER (ptop-*) - dati anagrafici principali e flag di abilitazione;
  • PRNTOPE2 (pto2-*) - dati estesi (SMS, e-mail, credenziali SW-ING, id multiazienda, magazzino, area, zona, divisione, lingua, modo abilitazione, avviso fatture);
  • MASKOPER (file .ARC locale, mop-*) - password cifrata e alcuni parametri di menu.

Il programma opera in due modalita' (a-modalita):

  • Da menu: modalita' "Aggiornamento" (a-modalita = "A") per inserire, modificare ed eliminare operatori.
  • Richiamato via CALL (t20-called = COGT20 e t20-caller valorizzato, copybook utilt20.cpy): modalita' "Selezione" (a-modalita = "S"); l'operatore scelto con invio viene restituito al chiamante in t20-out-cod/t20-out-des. In questa veste e' usato come help/selezione operatori (p.es. da COGT35, tasto F8).

Alcuni chiamanti particolari (WPOPEXE, WPOPTRE) accedono in sola visualizzazione: se t20-caller = "WPOPTRE" vengono disattivati inserimento, modifica, cancellazione e il pulsante restrizioni.


Struttura del programma

Il programma segue il pattern standard delle maschere Eurocoge basate su griglia con dettaglio: una griglia (e-tm-tab, gestita via GRIDADMN) elenca gli operatori e un frame di dettaglio a due schede (e-tab-control, pagine 01 e 02) consente inserimento/modifica del singolo operatore. La tabella interna tab-maschera (fino a k-max-ele-tab = 900 righe, occurs tm-righe) e' l'immagine di lavoro.

Inizializzazione (apri)

ctr-abil (salvo chiamate da WPOPEXE/WPOPTRE), z-99-init-program, open-files, apertura del file locale MASKOPER.ARC (path costruito da ext-ope-dir), lettura azienda (rd-azi), lettura configurazioni (x99-confi). Rileva la chiamata da altro programma (w-dc-called = "S") per impostare la modalita' selezione. Costruisce la chiave di trascodifica (w-key) dalla matrice w-calderone per cifrare/decifrare le password. Abilita i tasti funzione, prepara la griglia (z-prepara-tm-grid) e crea il pulsante custom "Restrizioni per operatore" (F5).

Caricamento (a10 / a10-loop)

Scandisce PRNTOPER dall'inizio (st-prntoper-notmin + rdnxt-prntoper) e per ogni operatore riempie la riga interna leggendo i dati collegati: PRNTOPE2 (rd-prntope2), profilo periferica PRNTPERF (rd-prntperf), profilo utente PRNTPROF (rd-prntprof), lingua COGTBLNG, zona/reparto/area su COGTABEL, sottoreparto su LODTABEL, agente su COGGEANA, magazzino su COGMAGAZ/CAPMAGAZ (consorzi), divisione su COGDIVIS. La password viene letta da MASKOPER e decifrata con ENCRYPT. Gli operatori con ptop-fl-val = "C" (cancellati logicamente) sono nascosti ai non amministratori.

Griglia e selezione modalita' (a-grid / a-accept-grid)

Il tasto F3 commuta tra Selezione e Aggiornamento. In Selezione l'invio restituisce l'operatore al chiamante e termina; in Aggiornamento l'invio apre la riga in modifica (a-operazione = "M"). Ctrl-A inserisce (a-operazione = "I"), Ctrl-E cancella (con conferma). Shift-F4 apre la personalizzazione griglia (GRIDADMN). F1 propone la copia degli operatori da MASKOPER (copia-oper) e, tramite DIALOGS, l'accesso alla modifica configurazioni (x99-confi). Il pulsante custom F5 (visibile solo se gestione-gruppo-aziende = "S") apre COGT35 per le restrizioni per operatore/azienda sull'operatore selezionato.

Riga di dettaglio a schede (a-riga-dettaglio ... a-riga-dettaglio-fine)

Il dettaglio e' organizzato su due schede accettate campo per campo con navigazione avanti/indietro (F2). I campi principali:

  • Pagina 01: codice operatore (chiave, editabile solo in inserimento), descrizione, password (solo amministratore), periferica di default (tm-prf-cod, F8 -> COGT24), flag validita' (tm-fl-val), profilo utente (tm-prof-cod, F8 -> COGT30), id multiazienda, agente (tm-age-cod, help COGS65W), lingua (F8 -> COGE0A), flag menu automatico/forzato/albero/Windows, flag export dati, flag amministratore, modo abilitazione (Ottimistica/Pessimistica).
  • Pagina 02: reparto/sottoreparto (visibili se gestione-reparti = "S"; F8 -> W80 e COGF12), invio SMS, divisione (F8 -> COGD34), invio e-mail, utente/password SW-ING, agenzia (F8 -> WCA005.COB), magazzino (F8 -> W36), zona (F8 -> COGF01), area agenti CAP (F8 -> CAP270), controllo fatture attive su cruscotto.

Alla conferma (F3, a-riga-dettaglio-fine) il record viene scritto/riscritto contestualmente su PRNTOPER, PRNTOPE2 e MASKOPER (password cifrata con CRYPT); l'operazione (wr-/rwr-) e' scelta rileggendo prima il record in lock. Segue l'aggiornamento del flag SMS sul contatto CRM collegato (aggiorna-sms, su COGANATN/COGRIFER), l'eventuale creazione contatto potenziale (CRM016 se az-cli-pot = "S") e la sincronizzazione KPN (x-sincronizza-kpn).

Cancellazione (c-cancella)

Rilegge PRNTOPER in lock (rd-prntoper-lk) e lo elimina (del-prntoper); elimina anche i record collegati su MASKOPER (del-maskoper) e PRNTOPE2 (del-prntope2), poi sincronizza KPN.

Copia operatori (copia-oper)

Scandisce MASKOPER (st-maskoper-notmin + rdnxt-maskoper) e crea in PRNTOPER gli operatori presenti nel file maschere ma non ancora in anagrafica (funzione di allineamento/migrazione da vecchio impianto).

Sincronizzazione KPN (x-sincronizza-kpn)

Dopo ogni scrittura/cancellazione, invia la chiave operatore (ptop-chia1) al modulo di sincronizzazione tramite SWN073 (operazione ESPORTA-KEY), per propagare l'anagrafica operatori verso il sistema KPN.

Variante ISCOBOL (>> IF ISC IS DEFINED)

In compilazione iSeries/ISCOBOL, alla scrittura/cancellazione l'operatore viene propagato anche su DB relazionale tramite ISGESOPE (funzioni upsert/delete), usando i record lq-ptop-rec/lr-ptop-rec (copie di prntoper.cpy con prefisso rinominato).


Tabelle e file

File logico Chiave / accesso Descrizione
FEURTAB - Tabella di sistema (aperta via cogfiles.cpy)
PRNTOPER primaria ptop-chia1 (ptop-cod); secondaria ptop-chia2 (ptop-des) Anagrafica operatori: codice, descrizione, periferica, password, profilo, agente, flag abilitazione (ptop-fl-amm, ptop-fl-exp, ptop-menu-tree, ptop-menu-win, ptop-fl-val)
PRNTOPE2 primaria pto2-cod Dati estesi operatore: SMS, e-mail, credenziali SW-ING, id multiazienda, magazzino/area/zona, divisione, lingua, modo abilitazione, avviso fatture
MASKOPER file locale .ARC, chiave mop-ope Password cifrata e parametri di menu personalizzato (menu a carattere)
PRNTPERF ptpf-cod (lettura) Descrizione periferica di default
PRNTPROF ptpr-cod (lettura) Descrizione profilo utente
COGGEANA ana-tipo/ana-cod (lettura) Anagrafica agente collegato all'operatore
COGTABEL euta-tipo/euta-cod (lettura) Descrizioni zona (tipo 88), reparto (tipo 85), area (tipo "BV")
LODTABEL lta-tipo/lta-cod (lettura) Descrizione sottoreparto (tipo 11), se gestione reparti attiva
COGMAGAZ / CAPMAGAZ magz-* / magc-cod (lettura) Descrizione magazzino operatore (CAPMAGAZ solo per consorzi)
COGDIVIS div-cod (lettura) Descrizione divisione
COGTBLNG lng-cod (lettura) Descrizione lingua
COGANATN atn-ope-cod (chia3, lettura) Contatti CRM collegati all'operatore (per aggiornamento SMS)
COGRIFER rif-tip/rif-cod (lettura/riscrittura) Aggiornamento campo SMS del referente collegato

COPY incluse

File Section

feurtab.fd, cogt20.select, cogt20.fd, cogfiles.cpy, maskoper.fd, maskoper.cpy

Working-Storage

cogt20.wrk, wstato.cpy, wgrave.cpy, wgrid.cpy, wopenf.cpy, wnscr.cpy, cogazien.cpy, utildlg.cpy, utilgdad.cpy, utils65.cpy, utild34.cpy, utilt24.cpy, utilt30.cpy, utilw80.cpy, utilncnf.cpy, utilw36.cpy, utilf01.cpy, utilcap270.cpy, utilcoge0a.cpy, utilcogt35.cpy, utilagprg.cpy; sotto >> IF ISC: utilisgesope.cpy, prntoper.cpy (due volte con replacing leading), iscobol.def

Linkage

wcont.cpy, utilf12.cpy, wcont1.cpy, utilt20.cpy

Procedure Division

cogt20.decla, cogt20-01.scr (screen), grave.cpy, mmmask.cpy, opengen.cpy, stato1.cpy, stato.cpy, winmsg.cpy, sendw36.cpy, coganatn.k03, sendw80.cpy, utilgrid.cpy, cogt20.prc, maskoper.k01

Le routine di I/O su PRNTOPER, PRNTOPE2, MASKOPER e le altre tabelle sono incluse tramite la catena di COPY generata (.k01/.k02/.k03).


CALL a sottoprogrammi

Programma Scopo
GRIDADMN Gestione griglia (Prepara, Svuota-Tutto, Add-Record, Modify-Record) e personalizzazione colonne (Shift-F4)
COGT24 Help/selezione periferica di default (F8 su periferica)
COGT30 Help/selezione profilo utente (F8 su profilo)
COGT35 Restrizioni per operatore/azienda dell'operatore selezionato (pulsante F5)
COGS65W Help/selezione agente (campo agente)
COGE0A Help/selezione lingua (F8)
COGF12 Help/selezione sottoreparto (F8)
COGD34 Help/selezione divisione (F8)
COGF01 Help/selezione zona (F8)
CAP270 Help/selezione area agenti CAP (F8)
WCA005.COB Help/selezione agenzia (F8, solo consorzi)
W80 / W36 Help reparto (tipo 85) e magazzino (send-w80 / send-w36)
CRM016 Creazione contatto potenziale (se az-cli-pot = "S" in inserimento)
DIALOGS Dialogo di scelta per la copia operatori / configurazione (F1)
ENCRYPT / CRYPT Cifratura/decifratura password su MASKOPER
SWN073 Sincronizzazione anagrafica operatore verso KPN (ESPORTA-KEY)
RNEWCONF Lettura parametri di configurazione (vedi sotto)
ISGESOPE (solo ISCOBOL) upsert/delete operatore su DB relazionale

I sottoprogrammi Y* di gestione tabella sono generati dallo Screen Designer.

Il programma e' a sua volta richiamato via CALL come help/selezione operatori (p.es. da COGT35) e in sola lettura dai popup WPOPEXE/WPOPTRE.


Configurazioni RNEWCONF

Nel paragrafo x99-confi (pacchetto C) sono lette tre chiavi:

Gruppo Chiave Variabile Effetto
ODONTO GESTIONE-REPARTI tm-cfg-reparto Se "S", attiva i campi reparto/sottoreparto e le relative colonne di griglia
abilita gruppo-aziende tm-cfg-abil-gruppo Abilitazione gestione gruppo aziende (multiazienda)
assist gestione-gruppo-aziende tm-cfg-gruppo-aziende Se "S", mostra il pulsante F5 "Restrizioni per operatore" (COGT35)

Note tecniche

  • Password cifrate: la password non e' mai in chiaro su file. Su MASKOPER e' cifrata con CRYPT (chiave w-key derivata dalla matrice w-calderone) e decifrata in visualizzazione con ENCRYPT. Il campo password nel dettaglio e' visibile solo agli amministratori (w-fl-ammin = "S").
  • Tre file per un operatore: creazione, modifica e cancellazione agiscono in modo coordinato su PRNTOPER, PRNTOPE2 e MASKOPER; l'operazione effettiva (wr-/rwr-) e' decisa rileggendo il record in lock su ciascun file, per gestire coerentemente i casi di record gia' presente/gia' cancellato.
  • Chiave secondaria descrizione: PRNTOPER ha una chiave alternata su ptop-des; la scansione in caricamento avviene comunque sulla chiave primaria (codice).
  • Doppia veste (menu / lookup): la stessa maschera funge da anagrafica quando lanciata da menu e da finestra di selezione quando richiamata via CALL; discriminante w-dc-called (da t20-called/t20-caller).
  • Accesso ristretto WPOPTRE: se il chiamante e' WPOPTRE, tutti i tasti di modifica/inserimento/cancellazione e il pulsante restrizioni sono disattivati (sola consultazione).
  • Cancellazione logica: ptop-fl-val = "C" marca un operatore come cancellato logicamente; e' visibile solo agli amministratori.
  • Sincronizzazione esterna: ogni variazione dell'anagrafica viene propagata a KPN via SWN073 e, in build ISCOBOL, a un DB relazionale via ISGESOPE.