Vai al contenuto

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 bitmap clipot e 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-dati popola la tabella tm-tab scorrendo CRMSKINF per ski-tcl/ski-pag, risolvendo tipo/descrizione di ogni informazione (a1-dati-informazione da 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' e tm-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, aggiorna tm-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 sempre x-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 ... THRU e GO TO in 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-dati lo 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 (nessun util-crm015): la selezione e' pensata per l'uso interattivo.