Vai al contenuto

AVVCRM - Schedulazione avvisi

Posizione nel menu

Programma non a menu.

Linkage section

Programma richiamabile dal programma di schedulazione COGSKP; la linkage e' analoga agli altri programmi richiamati da li'.

Logica generale

Questo programma analizza tutte le tipologie di avviso attive. Per ciascuna tipologia:

  1. Filtra i nominativi in base al filtro previsto
  2. Verifica se ciascun nominativo corrisponde ai criteri dell'avviso
  3. Se per un nominativo deve essere generato l'avviso, lo genera in funzione della tipologia prevista (notifica, e-mail, SMS)

Elaborazione

A - Ricerca filtri attivi

Scansione di tutti i record di CRMAVTES usando AVT-CHIA3; considerare solo quelli con AVT-FL-ATTIVO = "S".

Per ciascun record eseguire il punto B.

B - Filtro su nominativi

Definire un file di transito TRAN-CRM040 (vedi CRM038). Eseguire una chiamata a CRM040 con i seguenti parametri:

Dato Contenuto
CRM040-CALLER k-program-id
CRM040-CALLED "CRM040"
CRM040-OPE "ESEGUI-FILTRO"
CRM040-FLT-TIP K-CPT-FILTRO-ALLARME
CRM040-FLT-COD AVT-CHIA1

All'uscita aprire il transito TRAN-CRM040. Ciascun record contiene l'elenco dei nominativi filtrati. Per ciascun nominativo trovato eseguire il punto C.

C - Verifica nominativo

Cercare il contenuto dell'informazione su cui viene effettuato l'allarme AVT-INF-AVVISO con chiamata a CRMS06:

Dato Contenuto
CRMS06-OPE "LEGGI"
CRMS06-NOM Codice nominativo trovato
CRMS06-INF AVT-INF-AVVISO
CRMS06-INF-SPECIE "I"

Il dato restituito potra' essere una data (in CRMS06-DATO) o un valore numerico (in CRMS06-DATO-NUM). In entrambi i casi sommare il valore contenuto in AVT-SOGLIA1.

Se l'informazione in AVT-INF-CONFRONTO e':

  • Vuota (puo' essere solo se l'inf-avviso e' di tipo data): il valore di confronto e' la data di sistema
  • Significativa: il valore di confronto e' il contenuto dell'informazione

L'avviso dovra' essere effettuato se (INF-AVVISO + SOGLIA) >= VALORE-CONFRONTO; in tal caso proseguire con il punto D.

D - Emissione avviso

Come prima cosa eseguire la sostituzione dei tag contenuti in AVT-MESSAGGIO (punto D.4).

Per ciascun destinatario trovato (punto D.5), in base al contenuto di AVD-TIP-NOTIFICA:

  • "E": Emissione via e-mail (punto D.1)
  • "S": Emissione via SMS (punto D.2)
  • "N": Emissione via notifica (punto D.3)

Dopodiche', se AVT-INF-DA-AGGIORNARE > 0, eseguire il punto E.

D.1 - Emissione avviso via e-mail

Chiamata a POSTA:

Dato Contenuto
POSTA-OPE "COMPLETO"
POSTA-OGGETTO AVT-OGGETTO
MYMAIL-TEXT AVT-MESSAGGIO compilato
MYMAIL-INVIO-AUTO "S"
POSTA-EMAIL Indirizzo di posta trovato al punto D.5

D.2 - Emissione avviso via SMS

Chiamata a AREASMS:

Dato Contenuto
AREASMS-OPE "INVIA-SILENT"
AREASMS-TESTO AVT-MESSAGGIO compilato
AREASMS-DEST-NUM Numero di telefono trovato al punto D.5

D.3 - Emissione avviso via notifica

Verificare se e' gia' stata emessa una segnalazione per l'evento corrente. L'evento e' identificato da codice nominativo + identificativo segnalazione.

Ricerca su COGSEGNA dell'esistenza di una segnalazione, con scansione attraverso SGN-CHIA2. Se esiste un record avente SGN-CAT="A", SGN-TIP="L", SGN-KEY-LIV="1", SGN-KEY=codice nominativo + AVT-CHIA1 e SGN-FL-EVA="N", l'evento e' gia' stato notificato e nessun utente lo ha evaso: uscire.

Altrimenti inserire i seguenti record:

Record su COGSEGNA:

Dato Contenuto
SGN-NUM Primo numero libero
SGN-CAT "A"
SGN-TIP "L"
SGN-KEY-LIV "1"
SGN-KEY Codice nominativo + AVT-CHIA1
SGN-AUT-TIP "P"
SGN-AUT k-program-id
SGN-DATA-EMI Data sistema
SGN-ORA-EMI Ora sistema
SGN-FL-EVA "N"
SGN-OGG AVT-OGGETTO
SGN-FL-AGG "S"

Record su COGSGNT:

Dato Contenuto
SGL-NUM SGN-NUM
SGN-LEN Lunghezza di AVT-MESSAGGIO compilato
SGN-NOTE AVT-MESSAGGIO compilato

Per ciascun destinatario, record su COGSGNDT:

Dato Contenuto
SGO-NUM SGN-NUM
SGO-OPE Codice operatore destinatario
SGO-DATA-EMI SGN-DATA-EMI
SGO-ORA-EMI SGN-ORA-EMI
SGO-DATA-EVA 0
SGO-ORA-EVA 0
SGO-FL-EVA "N"
SGO-FL-ALLARME "N"
SGO-DATA-ALL 0
SGO-ORA-ALL 0
SGO-FL-VISTA "N"

D.4 - Compilazione testo messaggio

La compilazione del messaggio comporta la sostituzione di appositi contrassegni con un'informazione relativa alla scheda CRM. Ad esempio:

Il contratto n. <INFO-F0002> scadra' in data <INFO-I0151>, verificare se e' da rinnovare

potra' diventare:

Il contratto n. 153 scadra' in data 31/10/2013, verificare se e' da rinnovare

Il loop scorre il testo del messaggio finche' viene trovata una stringa contenente <INFO-. I 5 caratteri successivi sono:

  • Carattere 1: Specie informazione ("F" fissa, "I" variabile)
  • Caratteri 2-5: Codice informazione da trasformare

Usare CRMS06 per ottenere il contenuto dell'informazione. Quindi sostituire il tag <INFO-xnnnn> con il contenuto appropriato in base al tipo informazione:

  • Tipo data: Editare con le barre (es. 31/10/2013)
  • Tipo numero: Usare direttamente CRMS06-DATO-EDIT
  • Tipo nominativo: Usare CRMS06-DATO-NUM per leggere CRMANAGR e usare CRA-NOME

D.5 - Ricerca destinatario

Determina quanti e quali destinatari deve avere l'avviso. Scorrere il contenuto di CRMAVDST:

  • "O" (Operatore): Leggere PRNTOPE2 usando AVD-DST-OPE. I dati PTO2-SMS o PTO2-EMAIL contengono l'indirizzo per la spedizione, in base al tipo notifica.
  • "G" (Gruppo): Scansione di PRNTGROD per tutti i record con PGOD-GRP = AVD-DST-GRUPPO. Per ciascun record leggere PRNTOPE2 per i dati di contatto.
  • "P" (Proprietario): Se l'utente ha impostato l'informazione proprietario, questa contiene il codice nominativo del proprietario. Usare CRMS06 per estrarre il codice (CRMS06-DATO-NUM), leggere CRMANAGR e cercare il contatto su COGRIFER con posizione = AVT-POSIZIONE. Usare RIF-MAIL per e-mail o il primo campo RIF-TEL-1/2/3 corrispondente a un numero mobile per SMS.

E - Aggiornamento informazione

Se AVT-INF-DA-AGGIORNARE > 0, in base a AVT-TIPO-AGGIORNAMENTO:

  • "A" (Valore informazione avviso): Aggiornare con il contenuto dell'informazione AVT-INF-AVVISO letto in precedenza
  • "B" (Data sistema): Aggiornare con la data di sistema
  • "C" (Incremento): Incrementare il valore (solo per info numeriche)

L'aggiornamento si esegue con chiamata a CRMS06:

Dato Contenuto
CRMS06-OPE "SCRIVI"
CRMS06-NOM Codice nominativo trovato
CRMS06-INF AVT-INF-DA-AGGIORNARE
CRMS06-DATO / CRMS06-DATO-NUM Dato da aggiornare (in base al tipo informazione)