CRM052 - Agenda Operatore (Centrale Attivita' CRM)¶
Sorgente: cbl/crm052.cbl (~15.000 righe) | Program-ID: CRM052 | Autore: Gianluca Tonti (08/04/2006) | Tipo: Programma interattivo GUI complesso, orchestratore centrale con tab-control multi-pagina, vista calendario/agenda e piu' griglie
Menu: CRM > Operativo > Agenda Operatore
Nota: la voce di menu "Agenda Operatore" identifica il pannello centrale delle attivita' CRM di un operatore. Il commento interno lo descrive come "Gestione AreA: Gestione Centrale Attivita' CRM". La funzione reale comprende molto piu' di una semplice agenda: e' il cruscotto operativo da cui l'operatore vede, esegue, riceve, attribuisce, inoltra e schedula le proprie attivita', gestisce gli appuntamenti a calendario, gli avvisi, le note e i dossier/workflow collegati.
Scopo¶
CRM052 e' il pannello operativo centrale del modulo CRM. Presenta all'operatore le proprie attivita' (CRMATTIV / CRMATTOP) organizzate in un tab-control a pagine multiple, piu' una vista agenda a calendario per gli appuntamenti. Per ciascuna attivita' consente le operazioni tipiche del flusso CRM (esecuzione, risposta, inoltro, attribuzione, riprogrammazione), l'apertura delle schede di dettaglio (via i programmi CRM05x/CRM06x) e il collegamento a dossier, workflow, campagne e documenti.
Le pagine (tab) mostrate dipendono dalle abilitazioni azienda e dalle configurazioni:
| Tab | Codice | Contenuto |
|---|---|---|
| Attivita' | ATT |
Attivita' da eseguire dell'operatore (record CRMATTOP con fl-ese = "N"), comprese quelle arretrate |
| Eseguite | ESE |
Attivita' gia' eseguite |
| Attribuite | ATR |
Attivita' attribuite ad altri / da altri |
| Ricevute | RIS |
Attivita' ricevute (risorse) |
| Inviti | INV |
Inviti/inoltri con operatore richiedente |
| Appuntamenti | APP |
Vista agenda a calendario (griglia ore x giorni) con appuntamenti |
| Avvisi | AVV |
Avvisi (solo se az-avvisi = "S") |
| Note | NOT |
Note operatore (solo se az-avvisi = "S") |
| Modula | MOD |
Impegni/dettaglio Modula (solo se az-mag-modula valorizzato) |
| Scheduler | SKD |
Browser web verso lo scheduler esterno (solo se l'utente ha cru-vis-scheduler = "S" e la configurazione azienda espone un link-scheduler) |
Il programma puo' funzionare come finestra principale (crm052-main-window = "S", window standard) o come finestra secondaria floating, ed essere richiamato in modalita' called.
Interfaccia chiamato (linkage util-crm052)¶
| Campo | Tipo | Uso |
|---|---|---|
crm052-called |
x(13) | Se = "CRM052-CALLED" il programma e' stato richiamato |
crm052-ope |
9(03) | Operatore di cui mostrare l'agenda |
crm052-data-da / crm052-data-a |
9(08) | Periodo di partenza/arrivo |
crm052-main-window |
x(01) | "S" = primo programma eseguito, usa una window standard anziche' floating |
In modalita' called il programma imposta operatore e periodo dai parametri, forza il periodo Z (personalizzato) e carica il filtro predefinito dell'operatore.
File e tabelle acceduti¶
Le principali (elenco completo dei tracciati in crm052.select):
| Tabella | Ruolo |
|---|---|
| CRMATTIV | Testata attivita' CRM |
| CRMATTOP | Attivita' per operatore (record di lavoro crp-rec: crp-fl-ese, crp-data-ese, crp-ope, ...). Chiavi k02/k03/k05/k06 per scansioni per operatore, esecuzione, data |
| CRMATTAN / CRMATTNT | Anagrafiche/note collegate all'attivita' |
| CRMATTRS | Risorse/destinatari dell'attivita' |
| CRMTPATT | Tipi attivita' (con abilitazione tipi via config CLIPOT) |
| CRMUSERS / CRMUSRTA / CRMUSRVW / CRMGGUSR | Utenti CRM, tipi attivita' per utente, viste utente, gruppi/gerarchie |
| CRMAGCAL / CRMAGAPP / CRMAGASP | Calendario, appuntamenti e aspetti dell'agenda (vista APP) |
| CRMDOSTP / CRMDOSST / CRMDOSSR / CRMDOSAN / CRMDOSAT | Dossier CRM (tipi, stati, testata, anagrafica, attivita' collegate) |
| CRMWKFMV | Movimenti workflow (attivita' generate da un workflow) |
| CRMANAGR | Anagrafica CRM (nominativi) |
| CRMATTLG | Log attivita' |
| CRMTPAGR / CRMAGASP | Tipi/aspetti agenda |
| COGGEANA | Anagrafica clienti |
| COGTESBO / COGTESBP / COGTESOR / COGCONOR / COGDESCR | Documenti (testate bolla backoffice/provvisoria, origine, descrizioni) per il collegamento attivita'-documento |
| COGMDTES / COGMDRIG | Modelli documento |
| COGSEGNA / COGSGNNT / COGSGNDT / COGIMPCA | Segnalazioni e impegni collegati |
| COGRIFER | Riferimenti (tecnici/agenti) |
| PRNTOPER | Profilo operatore (ptop-rec) |
| ARPAZIEN | Configurazione azienda AreaApp (accesso anche via SQL per link-scheduler) |
| LODTMDES | File temporaneo descrizioni |
| FEURTAB | Features/abilitazioni utente |
| cogtrans / cogtrans2 / cogtrans3 | File di transito indicizzati (selezioni, ordinamenti categoria/tipo/data, tipi) |
| tran-crm050 / tran-cogt42 / flsta | Transiti di appoggio (liste CRM050, tabella cogt42, stato) |
Copybook principali¶
| Copybook | Descrizione |
|---|---|
crm052.wrk/.tm/.fd/.select/-01.scr/.decla/.prc |
Artefatti Screens |
crm052.imppredf-wrk / crm052.imppredf |
Salvataggio/caricamento filtri predefiniti |
k-u10.cpy, k-personal.cpy |
Costanti numeri e personalizzazioni cliente |
sql-decla-ws.cpy, arpazien-sql-ws.cpy, sql-interface-prc.cpy, arpazien-sql-prc.cpy |
Accesso SQL alla configurazione azienda (scheduler) |
wgrid.cpy, utilgdad.cpy |
Supporto griglie (GRIDADMN) |
utilncnf.cpy |
Linkage RNEWCONF |
utilwp04.cpy, sendwp04.cpy, getdcont.cpy |
Servizi WP04 / contatori documento |
utilareawkad.cpy, utilcrm017/030/051/053/054/055/056/057/060/060t/064/065/066/067/068/069/070/071.cpy |
Linkage dei numerosi sottoprogrammi CRM chiamati |
utilcrmk10/k11/k24/k26.cpy, utilcrms08/s12.cpy |
Linkage moduli dossier/workflow/servizi CRM |
utilcogt44/t45/t47.cpy, utils52/s54/s68.cpy, utilu06/u10.cpy, utilw122.cpy, utilzde.cpy, utilswa.cpy |
Linkage servizi cogtesti, campi, utility |
chiavi secondarie: crmattiv.k02, crmattop.k02/k03/k05/k06, crmattrs.k02, crmdosat.k03, crmwkfmv.k05, crmagasp.k02, cogmdtes.k03, cogsgndt.k02 e altre |
Accessi indicizzati |
Chiamate a sottoprogrammi¶
| Programma | Utilizzo (indicativo) |
|---|---|
| GRIDADMN | Preparazione/personalizzazione delle molteplici griglie (una per tab) |
| DTPRG / PRGDT | Conversione data <-> progressivo giorni (calcolo settimane, spostamenti calendario) |
| CRM060 | Scheda/gestione attivita' (chiamato molto frequentemente per aprire il dettaglio) |
| CRM051 / CRM053 / CRM054 / CRM055 / CRM056 / CRM057 / CRM064 / CRM065 / CRM066 / CRM067 / CRM068 / CRM069 / CRM070 / CRM071 / CRM040 / CRM017 / CRM030 / CRM060T | Funzioni CRM collegate alle attivita' (esecuzione, risposta, inoltro, campagne, workflow, ecc.), attivabili da tasti funzione e menu contestuale |
| CRMK10 / CRMK11 / CRMK21 / CRMK24 / CRMK26 | Gestione dossier e workflow collegati (voci del menu contestuale attivita') |
| CRMS08 / CRMS12 | Servizi CRM |
| AREAWKAD | Workflow AreaApp |
| COGU06 / COGU10W | Utility (numeri/edit) |
| COGT42 / COGT44 / COGT45 / COGT47 / COGT50 | Servizi su tabelle cogt (testi/documenti) |
| COGS54 / COGS68W | Lookup campi |
| COGO60 | Servizio documenti |
| COGZDEW | Servizio ZDE |
| FESTA | Determinazione giorni festivi (colorazione calendario) |
| WIN122 | Servizio finestra/browser |
| SWA014 | Servizio AreaApp |
| RNEWCONF | Lettura configurazioni (x99-confi, x99-src-cfg) |
Configurazioni RNEWCONF (x99-confi)¶
Il programma legge in un solo giro (ncnf-pnt = 42, pacchetto "C") un ampio blocco di configurazioni. Le principali:
| Gruppo | Chiave | Effetto |
|---|---|---|
CLIPOT |
ABILITAZIONE-TIPI-ATTIVITA |
Abilita i tipi attivita' visibili (tm-cfg-abi-tat) |
crm-agenda |
intervallo |
Intervallo minuti delle celle agenda (15/30/60) |
crm-agenda |
colore * (ndoe, ndo, nde, noe, doe, nd, no, ne, do, de, oe, n, d, o, e, intervallo ore, ...) |
Colori delle celle calendario secondo lo stato dell'appuntamento (combinazioni Nuovo/Da eseguire/Occupato/Eseguito) |
crm-agenda |
contenuto cella |
Cosa mostrare nella cella (tm-cfg-cella) |
crm-agenda |
dicitura-settimana |
Modalita' etichetta settimana precedente/successiva |
crm-agenda |
size-nome-in-cella |
Lunghezza del nome mostrato in cella (default 60) |
crm-agenda |
colore-att-wf-da-eseguire / colore-att-wf-ritardo / colore-attivita-non-lette |
Colori attivita' workflow / non lette |
crm-agenda |
colore int. selezione |
Colore intervallo selezionato |
colori |
riga-griglia-warning / riga-griglia-ok / riga-griglia-selez |
Colori righe griglia attivita' |
abilita |
clipot agenda |
Abilita la vista agenda (tm-cfg-agenda) |
abilita |
clipot-pratiche / clipot-workflow / labod-impegni |
Abilitazioni pratiche / workflow / impegni laboratorio |
clipot |
minuti aggiornamento |
Intervallo di auto-refresh della griglia (w-attesa) |
clipot |
canc-attivita |
Consenso cancellazione attivita' |
clipot |
attivita-con-articoli |
Attivita' con articoli (tm-cfg-fl-art) |
arc-ott |
periferica-archivia-pcl |
Periferica archiviazione |
crm-camp |
gestione-campagne, tip-att-primo-contatto, tip-att-contatto-successivo, tip-att-appuntamento, tip-att-appuntamento-annullato |
Gestione campagne e tipi attivita' collegati |
areaapp |
calendar-syncro-real-time |
Sincronizzazione calendario in tempo reale (tm-cfg-syncro-calendar-rt) |
Una seconda lettura (x99-src-cfg) recupera i parametri del binario scheduler (tipo, path, connection string, log-level) e il codice azienda, usati per la pagina SKD e la sincronizzazione.
Struttura del flusso (orchestratore)¶
apri: init programma, bitmap e pulsanti custom, lettura azienda e configurazioni, definizione tasti funzione (condizionata aaz-cli-pot,az-avvisi,az-mag-modula), costruzione del menu contestuale attivita', composizione nomi dei file di transito temporanei (con PID), preparazione griglie.a4: init pagina/dati, impostazione operatore e periodo (da linkage se called, altrimenti operatore corrente e data odierna con periodo1), caricamento filtro predefinito, lettura profilo operatore (PRNTOPER) e viste utente (leggi-usrvw),modifica-tabper costruire dinamicamente le pagine visibili.modifica-tab: aggiunge/rimuove le pagine del tab-control in base ad abilitazioni (az-cli-pot,tm-cfg-agenda,az-avvisi,az-mag-modula) e alla presenza del link scheduler; popolatab-pag (1..k-tab-pagine).inizio-pagina/inizio-dati: azzerano gli indici delle griglie e svuotano tutte le griglie (z-svuota-tutto-grid-*).a1-carica-attivita: estrazione principale. ScorreCRMATTOP(chiave k05 per non eseguite,crp-fl-ese = "N"), recuperando le attivita' arretrate (fino a 30 giorni indietro) e quelle del periodo, e le smista nelle varie griglie tramitecarica-att/carica-ele-att. Il caricamento e' limitato ak-max-ele-tab = 4000righe per griglia.- Loop di pagina: per ciascun tab esistono i paragrafi
a-pagina-XXX(attivazione pagina, ricostruzione griglia sechanged) ea-grid-XXX/a-accept-grid-XXX(loop di accept sulla griglia con auto-refresh a scadenzaw-attesa). Il cambio pagina e' pilotato dagli eventicmd-tabchangedinz-99-event-form.
Vista agenda / appuntamenti (tab APP)¶
La pagina APP e' una griglia a matrice ore x giorni (non una griglia di righe): inizio-app dimensiona la griglia in base all'intervallo (15/30/60 min -> 96/48/24 fasce orarie) e imposta le etichette di navigazione (settimana precedente/successiva, vista mensile, nuovo appuntamento).
tf-appuntamentigestisce lo spostamento sulle celle: legge la cella corrente (tm-app-cel (y x)), abilita/disabilita i tasti funzione a seconda che la cella contenga un appuntamento occupato/eseguito (posticipa SF6, anticipa SF7, taglia Ctrl+X, cancella F4, incolla Ctrl+V, dettaglio F7 se piu' appuntamenti nella fascia).- Le celle vengono colorate secondo lo stato dell'appuntamento (combinazioni Nuovo/Da eseguire/Occupato/Eseguito) usando i colori configurati e, per i giorni festivi, la determinazione via FESTA.
- La navigazione settimanale/mensile usa DTPRG/PRGDT per calcolare le date; la conversione da cella a data/ora avviene combinando
tm-data-app, la colonna (giorno) e la riga (fascia orariatm-app-ora). - Le operazioni sugli appuntamenti (creazione, spostamento, cancellazione, taglia/incolla) operano su
w-taglia(attivita'/data/ora) e sulle tabelle agendaCRMAGCAL/CRMAGAPP/CRMAGASP, oltre a innescare l'eventuale sincronizzazione calendario (pulsanti SF10 sync Google / refresh grid) quandow-sync-cal = "S".
Tasti funzione e menu contestuale¶
I tasti funzione sono condizionati alle abilitazioni azienda (az-cli-pot, az-avvisi, az-mag-modula) e comprendono, tra gli altri: F1 nuova attivita' / configura, F3 gestione / modifica / conferma, F4 cancella, F5 risposta OK / esegui / dettaglio Modula, F6 scheda / note operatore, F7 allegato / dettaglio / calcola, F8 aiuto / calendario, F9 stampa, SF4 personalizzazione griglia, SF6 posticipa, SF7 anticipa, Ctrl+X taglia / Ctrl+V incolla (appuntamenti), Ctrl+S/Ctrl+F filtri predefiniti, SF10 sync/refresh.
Il menu contestuale sulle attivita' (build-main-popup-att) espone voci mappate a costanti dedicate che aprono i sottoprogrammi collegati: CRM051 (k-pma-crm051), CRM053, CRM070, pratiche CRM, CRM040, CRMK10 (e modifica), AREAWKAD, CRMK24, CRMK21, oltre al browser interno.
Note implementative¶
- Programma di dimensioni eccezionali (~15.000 righe): incorpora nel proprio sorgente sia la logica delle attivita' sia il rendering completo della vista calendario, con numerose griglie separate e i relativi record di interscambio (
grid-record-att/ris/atr/inv/ese/...). - I file di transito temporanei sono nominati includendo
ext-pid(PID del processo) e l'operatore per garantire univocita' tra sessioni concorrenti; vengono chiusi e cancellati in chiusura. - La visibilita' delle pagine e' completamente dinamica:
k-tab-paginepagine vengono cancellate e ricostruite ad ognimodifica-tabin base a configurazioni e abilitazioni. - L'accesso alla configurazione azienda per il link scheduler avviene via SQL (interfaccia
arpazien-sql), non via file indicizzato: e' l'unico punto in cui il programma usa SQL. - L'auto-refresh della griglia e' governato da
w-grid-before-time = w-attesa(derivato dalla configminuti aggiornamento), che fa scadere l'accept periodicamente per ricaricare i dati.