CRM015 - Configurazione schede nominativi (clienti potenziali)¶
Sorgente: cbl/crm015.cbl | Program-ID: CRM015 | Tipo: Programma interattivo (configuratore layout schede CRM)
Menu: CRM > Archivi > Configurazione schede
Scopo¶
CRM015 e' l'editor della struttura delle schede nominativo del modulo CRM (clienti potenziali). Per una data coppia tipologia nominativo (tm-tcl) + pagina (tm-pag) gestisce l'elenco delle informazioni che compongono la scheda, memorizzate su CRMSKINF: per ciascuna definisce il codice informazione (dal dizionario CRMINFOR), la posizione (v-pos/h-pos) e la dimensione (v-size/h-size) sul form, il flag obbligatorieta', il flag scheda cessata, il riquadro (padre) di appartenenza, la sequenza di tabulazione e l'eventuale id multiaziendale.
Il programma lavora in due modalita' (selezione "S" / aggiornamento "A", commutate con F3) su una griglia di dettaglio riempita e amministrata via GRIDADMN. In modalita' aggiornamento consente inserimento (Ctrl+A), modifica (Invio) e cancellazione (Ctrl+E) delle informazioni, con controlli di integrita' prima della cancellazione. Le informazioni di tipo "R" (riquadro) fungono da contenitori: il programma calcola la tabella dei padri (tab-padri) e ordina gli elementi per riquadro e posizione (a-ordinamento, a5-ordina-per-sequenza).
Oltre alla mera configurazione del layout, CRM015 propaga le modifiche sui dati gia' acquisiti: all'inserimento di una informazione la attiva su tutti i nominativi esistenti della tipologia (d-inserisci su CRMANAGR/CRMANANF), alla cancellazione rimuove i valori memorizzati (c-cancella), al cambio codice informazione la aggiorna su tutti i nominativi (a-cambio-informazione-i), e allo spostamento di pagina migra i dati (a2-sposta). Gestisce inoltre i campi calcolati (tipo "N" con fl-calc = 'C') delegando a CRM033 il calcolo/cancellazione delle formule (F5 gestione formula, F4 cancella formula), e sincronizza le informazioni con l'ambiente KPN/Postgres via SWN008.
File e tabelle¶
| File/Tabella | Tipo | Modalita' | Descrizione |
|---|---|---|---|
| FEURTAB | ISAM | Input | Parametri file aziendali (cogfiles.cpy) |
| CRMSKINF | ISAM (k02, k03) | I-O | Informazioni della scheda (ski-chia1 = ski-tcl+ski-pag+ski-prog; ski-inf, ski-v-pos, ski-h-pos, ski-v-size, ski-h-size, ski-fl-obb, ski-scheda-cessata, ski-prog-padre, ski-seq, ski-id-multiazi, ski-des) |
| CRMTIPCL | ISAM | Input | Tipologie nominativo (aiuto F8 via CRM010) |
| CRMSKPAG | ISAM | Input | Pagine scheda (aiuto F8 via CRM011) |
| CRMINFOR | ISAM | Input | Dizionario informazioni (ipt-num, ipt-des, ipt-tip, ipt-lun, ipt-tab, ipt-fl-calc, ipt-fl-id) |
| CRMINFTT | ISAM | Input | Definizione tabelle di dominio delle informazioni tipo "T" (itt-cod, itt-lun) |
| CRMANAGR | ISAM | Input | Anagrafica nominativi CRM (cra-cod, cra-tip) - scansione per propagazione dati |
| CRMANANF | ISAM (k03) | I-O | Valori informazioni numeriche/variabili dei nominativi (nnf-cod, nnf-pag, nnf-prog, nnf-specie, nnf-inf, nnf-dato-num) |
| CRMANANN | ISAM | I-O | Valori informazioni note dei nominativi (nnn-cod, nnn-pag, nnn-prog) |
| CRMANANG | ISAM | I-O | Valori informazioni griglia dei nominativi |
| CRMPRITS / CRMPRIDT | ISAM | Input | Profili di importazione (testata/dettaglio): controllo referenze prima della cancellazione (pit-tcl, pid-sk-pag, pid-sk-prog) |
| CRMSTSTS / CRMSTSDT | ISAM | Input | Profili di stampa sintetica (testata/dettaglio): controllo referenze (sst-tcl, ssd-sk-pag, ssd-sk-prog) |
| CRMINFFC / CRMINFFR | ISAM (k02) | Input | Formule campi calcolati (contesto/righe): controllo dipendenze prima della cancellazione (ifc-inf, ifr-tcl, ifr-pag, ifr-prog, ifr-formula) |
| BRMSKINF | ISAM | - | File gestito da Screen (presente nell'FD generato) |
| COGEXPORT1/2/3 | Binary sequential | Output | File di testo temporanei con layout XFD/copybook della scheda, generati solo in ambiente di sviluppo (ext-ambiente-sviluppo = "S") |
Copybook utilizzate¶
| Copybook | Descrizione |
|---|---|
crm015.select, crm015.fd, crm015.wrk, crm015-01.scr, crm015.prc, crm015.decla |
Screen Designer |
feurtab.fd, cogfiles.cpy |
FEURTAB |
costanti-clipot.cpy |
Costanti CRM clienti potenziali (k-inf-tip-*, k-inf-variabile, ecc.) |
wstato.cpy, wgrave.cpy, wgrid.cpy, wopenf.cpy, wnscr.cpy, cogazien.cpy |
Working storage standard + dati azienda |
utilgdad.cpy |
Linkage GRIDADMN (amministrazione griglia) |
utilgridcol.cpy |
Linkage GRIDCOL (descrizione colonne/valori) |
utilncnf.cpy |
Linkage RNEWCONF |
utilu20.cpy, utils68.cpy |
Linkage COGU20 / COGS68 |
utilgre005.cpy |
Linkage GRE005 (gruppi aziende) |
utilcrm010.cpy, utilcrm011.cpy, utilcrm013.cpy, utilcrm030.cpy, utilcrm033.cpy |
Linkage CRM010/011/013/030/033 |
utilagprg.cpy |
Linkage SWN008 (sincronizzazione KPN) |
stato.cpy, stato1.cpy, winmsg.cpy, grave.cpy, opengen.cpy, mmmask.cpy, utilgrid.cpy |
Copybook di fine procedure |
crmanagr.k05, crmananf.k03, crminffc.k02 |
Chiavi secondarie (aggiunte a fine procedure) |
Logica¶
Struttura goto-driven a stati (paragrafi a-*), tipica dei configuratori a griglia CRM.
- apri: init,
open-files,rd-azi; abilita tasti F7/F8, Invio, F3, Shift+F4, Ctrl+A, Ctrl+E; legge configurazione (x99-confi); carica bitmapclipote crea i pulsanti custom "Calcola" (F5) e "Cancella formula" (F4); imposta modalita' (S/A) e prepara la griglia (z-prepara-tm-grid,z-costruisci-controlli). - a4 / a-tm-tcl / a-tm-pag: reset maschera e accept di tipologia (F8 = CRM010) e pagina (F8 = CRM011); questi due valori identificano la scheda da configurare.
- a-inizio-dati:
carica-datipopola la tabellatm-tabscorrendo CRMSKINF perski-tcl/ski-pag, risolvendo tipo/descrizione di ogni informazione (a1-dati-informazioneda CRMINFOR/CRMINFTT/GRIDCOL), costruendo la tabella dei riquadri padri e, se in ambiente sviluppo, generando i file COGEXPORT. Poi ordina (a-ordinamento,a5-ordina-per-sequenza) e costruisce la griglia. - a-grid / a-accept-grid: loop principale sulla griglia. Esc torna, Shift+F4 apre l'admin griglia, F3 commuta modalita' S/A, F7 lancia CRM030 (simulazione scheda), F5/F4 gestiscono le formule dei campi calcolati (solo se
tm-inf-tip = 'N'etm-fl-calc = 'C'), Invio/Ctrl+A/Ctrl+E entrano nel dettaglio o cancellano. - a-riga-dettaglio ... a-tm-*: accept sequenziale dei campi della singola informazione (codice via aiuto CRM013, descrizione, id multiaziendale, posizioni e dimensioni via COGU20, obbligatorieta', scheda cessata). Gestione informazione "identificativo" (
fl-id = "I"): consentita solo su tipologia con tipo anagrafico "A", unica per tipologia, aggiornatm-tcl-id(x-aggiorna-identificativo). - a-riga-dettaglio-fine: valida i campi (
x-imposta-conferma), scrive/riscrive CRMSKINF (wr-crmskinf/rwr-crmskinf). All'inserimento (tranne tipo fascicolo) attiva l'informazione sui nominativi esistenti (d-inserisci); alla modifica del codice informazione la propaga (a-cambio-informazione-i). Se attivo il gruppo aziende chiama GRE005 ("AGGIORNA"). Chiama semprex-sincronizza-informazione(SWN008). Se sono cambiati riquadro padre o sequenza, ricarica e riordina. - c1-ctrl-canc: prima della cancellazione verifica che l'informazione non sia referenziata da profili di importazione (CRMPRIDT/CRMPRITS), profili di stampa sintetica (CRMSTSDT/CRMSTSTS) o formule di altri campi calcolati (CRMINFFC/CRMINFFR); avverte se e' presente su schede nominativo.
- c-cancella: elimina i valori memorizzati sui nominativi della tipologia (CRMANANF), azzera l'identificativo se necessario, elimina il record CRMSKINF (
del-crmskinf), sincronizza (SWN008) e, se attivo il gruppo aziende, chiama GRE005 ("CANCELLA"). - a2-sposta: sposta una informazione (o l'intera pagina) su un'altra pagina, migrando anche i valori gia' presenti sui nominativi.
- a4-ricalcola-formule / a4-ricalcola-formula: ricalcola via CRM033 ("CALCOLA") i campi formula per tutti i nominativi della tipologia, aggiornando CRMANANF; al termine scarica la DLL di calcolo (CRM033 "SCARICA-DLL").
- cancella-formula-sub-ski: chiama CRM033 ("CANCELLA") per rimuovere la formula associata a una informazione.
- fine / z-chiudi:
z-close-files, chiude la window,exit program.
Configurazioni (RNEWCONF)¶
Pacchetto "C" (x99-confi, 3 chiavi):
| Chiave | Gruppo | Uso |
|---|---|---|
gruppo-aziende |
abilita |
Se "S", propaga inserimento/cancellazione informazioni al gruppo aziende via GRE005 (tm-cfg-abil-gruppo) |
AGG-POSTGRES-ONLINE |
AREAAPP |
Aggiornamento online Postgres (tm-cfg-agg-online) |
AGLANCIO-ATTIVO |
AREAAPP |
Flag Aglancio attivo (tm-cfg-aglancio-attivo) |
CALL¶
| Programma | Scopo |
|---|---|
GRIDADMN |
Amministrazione e riempimento della griglia di dettaglio |
GRIDCOL |
Risoluzione descrizione del tipo informazione per la griglia |
CRM010 |
Aiuto/selezione tipologia nominativo (F8 su tipologia) |
CRM011 |
Aiuto/selezione pagina scheda (F8 su pagina) |
CRM013 |
Aiuto/selezione codice informazione (F8 sul codice) |
CRM030 |
Simulazione scheda nominativo (F7) |
CRM033 |
Motore campi calcolati: gestione/calcolo/cancellazione formule e scarico DLL |
GRE005 |
Propagazione informazione al gruppo aziende (AGGIORNA/CANCELLA) |
COGU20 |
Editor numerico posizioni/dimensioni |
SWN008 |
Sincronizzazione informazione/scheda verso KPN/Postgres |
RNEWCONF |
Lettura configurazioni |
Note¶
- Il codice usa
PERFORM ... THRUeGO TOin modo estensivo (stile legacy pre-convenzioni attuali). - I file COGEXPORT1/2/3 sono un ausilio di sviluppo: vengono aperti/scritti solo se
ext-ambiente-sviluppo = "S"e servono a generare la rappresentazione XFD/copybook della scheda (per l'export verso database esterno/AGLANCIO). In produzione non vengono prodotti. - Le informazioni di tipo "R" (riquadro) hanno come padre se stesse (
ski-prog-padre = ski-prog): se il dato letto non e' coerente,carica-datilo riscrive e forza la sincronizzazione. - Cancellazioni e cambi codice sono operazioni pesanti: scorrono l'intera CRMANAGR (nessuna chiave diretta per posizione informazione) filtrando per tipologia, con avanzamento mostrato tramite clock-msg. Toccano dati condivisi (valori nominativi), quindi hanno impatto diretto sulle schede compilate.
- La cancellazione e' bloccata se l'informazione e' usata in profili di import (CRMPRIDT), profili di stampa sintetica (CRMSTSDT) o formule di altri campi calcolati (CRMINFFR).
- I campi calcolati (tipo "N" con
fl-calc = 'C') delegano interamente a CRM033; F5/F4 sono abilitati solo su queste righe. - CRM015 puo' operare in modalita' "chiamato" (
w-dc-called = "S") che apre in selezione con F3 disponibile, ma il ramo non risulta innescato da un copybook di linkage dedicato (nessunutil-crm015): la selezione e' pensata per l'uso interattivo.