Vai al contenuto

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)

  1. apri: init programma, bitmap e pulsanti custom, lettura azienda e configurazioni, definizione tasti funzione (condizionata a az-cli-pot, az-avvisi, az-mag-modula), costruzione del menu contestuale attivita', composizione nomi dei file di transito temporanei (con PID), preparazione griglie.
  2. a4: init pagina/dati, impostazione operatore e periodo (da linkage se called, altrimenti operatore corrente e data odierna con periodo 1), caricamento filtro predefinito, lettura profilo operatore (PRNTOPER) e viste utente (leggi-usrvw), modifica-tab per costruire dinamicamente le pagine visibili.
  3. 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; popola tab-pag (1..k-tab-pagine).
  4. inizio-pagina / inizio-dati: azzerano gli indici delle griglie e svuotano tutte le griglie (z-svuota-tutto-grid-*).
  5. a1-carica-attivita: estrazione principale. Scorre CRMATTOP (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 tramite carica-att / carica-ele-att. Il caricamento e' limitato a k-max-ele-tab = 4000 righe per griglia.
  6. Loop di pagina: per ciascun tab esistono i paragrafi a-pagina-XXX (attivazione pagina, ricostruzione griglia se changed) e a-grid-XXX / a-accept-grid-XXX (loop di accept sulla griglia con auto-refresh a scadenza w-attesa). Il cambio pagina e' pilotato dagli eventi cmd-tabchanged in z-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-appuntamenti gestisce 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 oraria tm-app-ora).
  • Le operazioni sugli appuntamenti (creazione, spostamento, cancellazione, taglia/incolla) operano su w-taglia (attivita'/data/ora) e sulle tabelle agenda CRMAGCAL/CRMAGAPP/CRMAGASP, oltre a innescare l'eventuale sincronizzazione calendario (pulsanti SF10 sync Google / refresh grid) quando w-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-pagine pagine vengono cancellate e ricostruite ad ogni modifica-tab in 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 config minuti aggiornamento), che fa scadere l'accept periodicamente per ricaricare i dati.