CRM010 - Tipologie Nominativo (CRM)¶
Sorgente: cbl/crm010.cbl | Program-ID: CRM010 | Tipo: Programma interattivo a griglia (gestione anagrafica, dual-use standalone/selettore)
Menu: CRM > Archivi > Tipologie Nominativo
Scopo¶
Gestisce l'anagrafica delle tipologie di nominativo del modulo CRM (clienti potenziali): sono le "categorie" nelle quali si classificano i nominativi (es. Cliente, Fornitore, Prospect), ciascuna con la propria scheda dati. Per ogni tipologia si definiscono codice, descrizione, tipo anagrafico associato (C/F/P/A), dimensioni della scheda nominativo (V-Size in righe, H-Size in colonne), il flag "dati anagrafici", il punto di partenza del numeratore automatico (tcl-id-start) e il flag di inclusione nella ricerca nominativi.
L'interfaccia e' basata su una griglia GRIDADMN in cui l'elenco delle tipologie e' caricato in una tabella di lavoro interna (tm-tab, fino a 900 righe); l'aggiunta/modifica avviene su una "area dettaglio" separata i cui campi vengono validati campo per campo. Le scritture su CRMTIPCL avvengono direttamente per singola riga confermata (write/rewrite), non a fine sessione.
Il programma e' dual-use: se richiamato con crm010-called = "CRM010" (linkage utilcrm010.cpy) opera in modalita' "selezione" restituendo al chiamante il codice/descrizione scelti (crm010-out-cod, crm010-out-des); e' cosi' usato come selettore di tipologia da CRM011 e CRM013 (tasto F8).
File e tabelle¶
| File/Tabella | Tipo | Modalita' | Descrizione |
|---|---|---|---|
| FEURTAB | ISAM | Input | Parametri file aziendali (cogfiles.cpy) |
| CRMTIPCL | ISAM | I-O (gestore Screens) | Anagrafica tipologie nominativo (tcl-cod, tcl-des, tcl-ana-tip, tcl-v-size, tcl-h-size, tcl-fl-dati-ana, tcl-id, tcl-id-start, tcl-fl-ricerca-nom) - file principale gestito |
| CRMINFOR | ISAM | Input | Informazioni; letta per tcl-id per verificare che l'informazione identificativa sia di tipo "I" (ipt-fl-id) e recuperarne descrizione/tipo |
| CRMSKPAG | ISAM | Input | Pagine scheda; scansionata in c1-ctrl-canc per bloccare la cancellazione se esistono pagine configurate sulla tipologia (skp-tcl) |
| CRMUSRTC | ISAM (k02) | I-O | Abilitazioni tipologia per utente; ripulita in cancella-usrtc alla cancellazione della tipologia (chiave 2 ctc-tcl) |
I file dichiarati tramite crm010.select/crm010.fd (CRMTIPCL, CRMINFOR, CRMSKPAG, CRMUSRTC) sono gestiti dai gestori generati dallo Screen Designer (st-/rdnxt-/rd-/wr-/rwr-/del- + verbi crmtipcl, crminfor, crmskpag, crmusrtc).
Copybook utilizzate¶
| Copybook | Descrizione |
|---|---|
crm010.select, crm010.fd, crm010.wrk, crm010-01.scr, crm010.prc, crm010.decla |
Screen Designer (SELECT/FD/working/screen/procedure/declaratives) |
feurtab.fd, cogfiles.cpy |
FEURTAB |
costanti-clipot.cpy |
Costanti CRM clienti potenziali (tipi informazione, link, ecc.) |
wstato.cpy, wgrave.cpy, wopenf.cpy, wnscr.cpy, cogazien.cpy |
Working storage standard + dati azienda |
wgrid.cpy, utilgdad.cpy, utilgrid.cpy |
Gestione griglia GUI e linkage GRIDADMN |
utilncnf.cpy |
Linkage RNEWCONF |
utilcrm025.cpy |
Linkage CALL a CRM025 (abilitazione tipologie per utente) |
utilcrm010.cpy |
Linkage di chiamata proprio (dati called/caller, out-cod/out-des) |
utilagprg.cpy |
Linkage sincronizzazione KPN/Areagate (SWN024) |
wcont.cpy, wcont1.cpy |
Linkage standard maschera |
stato.cpy, stato1.cpy, winmsg.cpy, grave.cpy, opengen.cpy, mmmask.cpy |
Copybook di fine procedure |
crmusrtc.k02 |
Chiave secondaria CRMUSRTC (aggiunta manualmente a fine procedure) |
Logica¶
Struttura goto-driven a stati (stile legacy). Fasi principali:
- apri:
ctr-abil,z-99-init-program, caricamento lingua,open-files,rd-azi; legge configurazione viax99-confi; determina se e' chiamato (w-dc-called = "S"). Attiva i tasti funzione previsti (Invio, Invio-modifica, Ctrl+A aggiungi, Ctrl+E elimina, Shift+F4 griglia, F1 configura, e F3-selezione/F3-modifica solo se chiamato); carica la bitmap customclipote crea il pulsante "F7" (abilitazione tipologie). Imposta modalita' iniziale: "S" (selezione) se chiamato, "A" (aggiornamento) altrimenti.z-prepara-tm-grid,z-costruisci-controlli. - a4/a10/a10-loop: caricamento della tabella di lavoro scorrendo CRMTIPCL (
st-crmtipcl-notmin+rdnxt-crmtipcl) fino a max 900 righe; per ogni tipologia contcl-id <> 0legge CRMINFOR e avvisa se l'informazione ID non e' di tipo "I". - a30/a-grid/a-accept-grid: costruzione griglia (
z-costruisci-gridvia GRIDADMN Svuota-Tutto + Add-Record) e ciclo di accept sulla griglia. Gestisce: doppio click/Invio sulla cella (imposta Invio), Shift+F4 (amministrazione griglia GRIDADMN), F3 (toggle modalita' selezione/aggiornamento), Invio (in "A" modifica riga sew-abi-agg; in "S" ritorna codice al chiamante), Ctrl+A (aggiungi, sew-abi-ins), Ctrl+E (elimina, sew-abi-del), F7 (CALL CRM025), F1 (configurazione in modifica). - a-riga-dettaglio ... a-riga-dettaglio-fine: sequenza di accept validati dei campi di dettaglio (
a-tm-cod,a-tm-des,a-tm-tip-anavia COGS60,a-tm-v-size,a-tm-h-size,a-tm-fl-dati-anavia COGS95,a-tm-id-start,a-tm-ricerca-nom). ESC su un campo torna aa-tm-cod-tfche, previa conferma, ripristina la riga datm-ele-sav. Ogni campo ha unx-controlla-*che colora il controllo e impostax-f3-ok-parziale. Validazioni notevoli: V-Size 10-99, H-Size 80-200, codice univoco in inserimento. - a-riga-dettaglio-fine:
x-imposta-conferma(verifica cumulativa tutti i campi), conferma custom, aggiorna la riga in griglia (GRIDADMN Add/Modify-Record), poi write/rewrite su CRMTIPCL (wr-crmtipcl/rwr-crmtipcl) auto-correggendo I/M in base all'esistenza del record; infinex-sincronizza-kpn. - Cancellazione (
c-cancella): rilegge in lock,del-crmtipcl,x-sincronizza-kpn,cancella-usrtc(pulisce le abilitazioni utente).c1-ctrl-cancla blocca se esistono pagine scheda (CRMSKPAG) sulla tipologia. - fine/z-chiudi:
z-close-files, chiusura finestra,z-99-exit-program,exit program.
Configurazioni (RNEWCONF)¶
Pacchetto "C", punto 01, percorso CLIPOT.CNF:
| Chiave | Uso |
|---|---|
clipot / abilitazione-tipologia |
Se "S", abilita il pulsante F7 di gestione abilitazioni tipologia per utente (tm-cfg-abi-tipologia, letta in x99-confi, valorizza la visibilita' del pulsante in x-attiva-tf-grid) |
CALL¶
| Programma | Scopo |
|---|---|
CRM025 |
Abilitazione delle tipologie di nominativo per i singoli utenti dell'azienda (F7) |
GRIDADMN |
Gestione griglia (Prepara/Svuota-Tutto/Add-Record/Modify-Record, amministrazione Shift+F4) |
RNEWCONF |
Lettura configurazione abilitazione tipologia |
SWN024 |
Sincronizzazione chiave verso KPN/Areagate (ESPORTA-KEY, agprg-key = "C" + tcl-chia1) a ogni scrittura/cancellazione |
Note¶
- Dual-use: se lanciato da menu opera come gestione completa (modalita' "A"); se richiamato (
crm010-called) opera come selettore in modalita' "S" e restituiscecrm010-out-cod/crm010-out-des. In modalita' selezione l'Invio non modifica ma ritorna al chiamante. - Codice goto-driven con uso estensivo di
GO TOtra stati ePERFORM ... THRU(c-cancella thru ex-c,c1-ctrl-canc thru ex-c1,cancella-usrtc thru ex-cancella-usrtc): stile legacy antecedente alle convenzioni attuali. - Effetto collaterale su archivio condiviso: la cancellazione di una tipologia elimina in cascata anche le abilitazioni utente su CRMUSRTC (
cancella-usrtc). - La sincronizzazione KPN (
x-sincronizza-kpn-> SWN024) e' invocata a ogni write/rewrite/delete della tipologia; propaga la chiave verso l'esterno (Areagate). - I gestori di tabella
Y*(es. YCRMTIPCL) sono gestori generati automaticamente dallo Screen Designer. - La chiave secondaria
crmusrtc.k02(ctc-tcl) e' inclusa manualmente a fine procedure, come da convenzione (Screens genera solo.k01).