CRM036 - Configurazione stampe scheda CRM¶
Sorgente: cbl/crm036.cbl | Program-ID: CRM036 | Tipo: Programma interattivo GUI (gestione diretta su griglia)
Menu: CRM > Stampe > Configurazione report
Scopo¶
Definisce le stampe (report) associate alla scheda CRM, gestite per tipologia cliente. Ogni riga della griglia rappresenta una stampa configurata su CRMSTNTS: codice stampa, descrizione, tipo (Semplice/Tabellare), modello di layout e, per le stampe tabellari, il filtro applicato (codice filtro e tipologia cliente del filtro). Il programma consente inserimento, modifica e cancellazione delle stampe direttamente in griglia, con aggiornamento differito al momento della conferma (F3). Puo' essere richiamato in modalita' selezione da altri programmi.
Da ciascuna riga (F10) si accede alla configurazione di dettaglio della singola stampa tramite CRM037.
File e tabelle¶
| File/Tabella | Tipo | Modalita' | Descrizione |
|---|---|---|---|
| FEURTAB | ISAM | I-O | Tabella features/abilitazioni utente |
| CRMSTNTS | ISAM | I-O | Definizione stampe scheda (chiave: snt-tcl + snt-cod) |
| CRMTIPCL | ISAM | Input | Tipologie cliente (validazione tcl-cod, descrizione) |
| CRMFLTTS | ISAM | Input | Filtri per stampe tabellari (chiave flt-tip + flt-cod, descrizione e tipologia associata) |
Copybook utilizzate¶
| Copybook | Descrizione |
|---|---|
crm036.select, crm036.fd, crm036.wrk |
SELECT, FD, working storage (Screens) |
crm036-01.scr, crm036.decla, crm036.prc |
Screen, declaratives, procedure I/O |
feurtab.fd, cogfiles.cpy |
Record FEURTAB |
k-tipi-cogtabel.cpy |
Costanti tipi COGTABEL |
utilncnf.cpy |
Linkage RNEWCONF |
wgrave.cpy, wnscr.cpy, wopenf.cpy, wstato.cpy |
Working storage standard |
cogazien.cpy |
Dati azienda |
wgrid.cpy, utilgdad.cpy |
Supporto griglia editabile (GRIDADMN) |
utilu20.cpy |
Supporto griglia diretta |
utilcrm010.cpy, utilcrm019.cpy, utilcrm037.cpy |
Linkage CRM010 (tipologia cliente), CRM019 (filtro), CRM037 (config stampa) |
wcont.cpy, wcont1.cpy, utilcrm036.cpy |
Linkage standard e linkage di chiamata (called/caller, in/out) |
grave.cpy, mmmask.cpy, opengen.cpy, stato.cpy, stato1.cpy, winmsg.cpy |
Infrastruttura standard |
Logica di elaborazione¶
Inizializzazione (apri): Init programma, apertura file. Se chiamato (crm036-called = CRM036 con caller valorizzato) entra in modalita' "S" (selezione) e riceve la tipologia di filtro crm036-tcl; altrimenti modalita' "A" (aggiornamento). Configura i tasti (F1 configura, Invio, F3 selezione/modifica/aggiorna secondo modalita', F8 aiuto, Shift+F4 griglia, Ctrl+A aggiungi, Ctrl+E elimina). Carica un pulsante custom F10 (configura stampa).
Caricamento griglia (a4 -> a10-loop): Scansione CRMSTNTS filtrata per tipologia (snt-tcl = tm-tcl, se valorizzata). Per ogni record carica in griglia codice tipologia (con descrizione da CRMTIPCL), codice stampa, sequenza, descrizione, tipo, modello e dati filtro. Memorizza per ogni riga i valori "precedenti" (tm-cod-prec, tm-tcl-prec) usati poi in fase di aggiornamento per distinguere insert/modify/delete.
Editing in griglia (a-grid / a-accept-grid): Gestione diretta delle celle (framework griglia editabile U20/GRIDADMN). Comportamenti:
- Invio in modalita' "S" -> ritorna al chiamante (crm036-tcl, crm036-cod).
- Ctrl+A -> aggiunge una riga vuota (z-aggiungi-riga-tm-tab, tipo default "S").
- Ctrl+E -> cancella la riga con conferma (azzera i dati mantenendo i valori "prec" per la successiva cancellazione fisica).
- F10 -> CRM037 configurazione di dettaglio della stampa selezionata (visibile solo su righe gia' esistenti).
- F8 su cella tipologia/filtro -> ricerca: CRM010 (tipologia cliente) o CRM019 (filtro).
- Shift+F4 -> GRIDADMN personalizzazione.
- F1 -> modifica configurazione RNEWCONF.
Controlli di cella (x-controlla-tm-*):
- Codice stampa: obbligatorio e non ripetibile nella stessa tipologia (a5-controlla-stesso-codice).
- Descrizione: obbligatoria se la riga ha un codice.
- Tipologia cliente: deve esistere su CRMTIPCL.
- Modello: obbligatorio.
- Codice filtro / tipologia filtro: obbligatori e validati (CRMFLTTS / CRMTIPCL) solo per le stampe di tipo Tabellare (tm-tip = "T"); le celle filtro sono editabili solo per tipo "T".
Aggiornamento (F3 -> a1-aggiorna -> b-aggiorna): In modalita' aggiornamento, verifica prima tutti i controlli (x-controlla-tm-tab-tutto); se tutto valido, riversa la griglia su CRMSTNTS confrontando codice attuale e precedente riga per riga:
- COD = COD-PREC e riga modificata -> modifica (b2-modifica, rwr-crmstnts).
- COD-PREC vuoto -> inserimento (b1-inserisci, wr-crmstnts; se il record esiste gia' chiede sovrascrittura).
- COD vuoto -> cancellazione (b3-cancella, del-crmstnts).
- COD <> COD-PREC -> cancellazione del precedente + inserimento del nuovo.
In modalita' called/selezione, F3 alterna tra selezione e aggiornamento (con eventuale salvataggio se ci sono modifiche pendenti, fl-esc-agg).
Chiamate a sottoprogrammi¶
| Programma | Utilizzo |
|---|---|
CRM037 |
Configurazione di dettaglio della singola stampa (F10) |
CRM010 |
Ricerca/selezione tipologia cliente (F8 su cella tipologia) |
CRM019 |
Ricerca/selezione filtro stampa tabellare (F8 su cella filtro) |
GRIDADMN |
Gestione griglia editabile (prepara, add/modify, svuota, personalizzazione) |
RNEWCONF |
Lettura configurazione |
Configurazione (RNEWCONF)¶
Gruppo/chiave letta in x99-confi (pacchetto C):
| Gruppo | Chiave | Uso |
|---|---|---|
| clipot | abilitazione-pagine-scheda | Abilitazione pagine scheda (tm-cfg-abil-pagine-scheda) |
Gestione errori¶
- Al caricamento la griglia viene validata interamente (
x-controlla-tm-tab-tutto); se almeno una riga e' in errore viene emesso un avviso. - Codice stampa duplicato nella stessa tipologia o campi obbligatori mancanti bloccano l'aggiornamento con messaggio.
- In inserimento, se la coppia tipologia/codice esiste gia' su
CRMSTNTSviene chiesta conferma di sovrascrittura; in modifica, se il record non esiste piu' viene chiesto se ricrearlo. - Cancellazione soggetta al flag di abilitazione (
w-abi-del); modifica di righe esistenti soggetta aw-abi-agg.
Note implementative¶
- Autore: Andrea Parmeggiani (Eurosystem).
k-max-ele-tab = 500: dimensione massima della tabella righe in griglia.- L'aggiornamento e' differito e batch: le operazioni fisiche su
CRMSTNTSavvengono solo alla conferma F3, decise dal confronto tra valori correnti e "precedenti" di ogni riga (pattern insert/modify/delete su griglia editabile). - Le celle in chiave (tipologia, codice stampa) sono modificabili solo in inserimento (
z-tm-tab-*-be-ep); le celle di filtro sono abilitate solo per le stampe tabellari. configuration section: usasource-computer/object-computer pc-sperry.