Vai al contenuto

SWN052 - Attività CRM

Nome programma SWN052 Linkage section UTILAGPRG - Linkage comune Id processo: 55 Nome processo: ATTIVITA-CRM Tabelle principali gestite

AREA AREAGATE Direzione
CRMATTIV
CRMATTAN
CRMATTOP
APCRMATTIV
APCRMATTAN
APCRMATTOP
------>
<------

Logica generale Sincronizzazione attività CRM Esportazione Esportazione di tutti i record effettivamente modificati (con dati variati). Importazione Le applicazioni WEB potranno inserire, modificare o cancellare logicamente nuove attività NB: questo programma non è strutturata in modo classico come quelli standard delle nuove sincronizzazione, a causa della complessità delle operazioni di import/export relative alle attività. Si è cercato comunque di adeguarlo il più possibile allo schema standard. Configurazioni possibili

Gruppo Parametro Note
abilita attiva-areaapp
areaapp cod-azienda
areaapp db-conn-string
areaapp agg-postgres-online

Elaborazione Tipi di segnalazione: Vedi Tipi di segnalazione A - Controllo di esecuzione Vedi Controllo di esecuzione A.1 - Aggiornamento KEEP-ALIVE Per il momento non lo eseguiamo: il keep-alive viene tenuto aggiornato dal thread autonomo di aglancio; se il programma venisse chiamato in "tempo reale" dal programma di gestione, non necessita comunque del keep-alive. A.2 - Apertura A.2.1 Apertura tabelle Tentare l'apertura della tabella da sincronizzare: APCRMATTIV Se fallita inviare una Segnalazione critica e chiudere. Esportazione attività Seguendo le Linee guida per la sincronizzazione, eseguire l'esportazione delle attività. Su POSTGRES, tabella APSTATOSYN, leggere il record relativo alla tabella/oggetto da sincronizzare "CRMATTIV"; se il record non esiste, crearlo impostando

Dato Contenuto
A-SYN-AZIENDA Codice azienda
A-SYN-TABELLA "CRMATTIV"
A-SYN-DA-GES-DATA 0
A-SYN-DA-GES-ORA 0
A-SYN-DA-ID-SINCRO 1

Qui otterremo due informazioni importanti: * Data/ora ultima esportazione da gestionale a postgres (A-SYN-DA-GES-DATA e A-SY-DA-GES-ORA) * Prossimo ID sincronizzazione da memorizzare sulla tabella (A-SYN-ID-SINCRO) Se configurata l'esportazione massiva: swa014-esportazione-massiva = "S", verrà eseguito il punto A.1, altrimenti il punto A.2 Non ancora implementato il giro di ricerca sul log aggiornamenti: attivare solo se è configurato il log, altrimenti lasciare il giro attuale che anche se non è ottimizzato comunque può funzionare. A.1 - Esportazione massiva attività * Scorrere CRMATTIV; * Se l'attività ha data precedente alla data confiurata in swa014-data-inizio-exp-massiva, l'attività non sarà esportata * Eseguire il punto A.1.1 per verificare se l'attività è di tipo "Agenda"; se si, cercare l'ora fine appuntamento con il punto A.1.2 * Eseguire A.3ca A.1.1 - Ricerca se attività "Agenda" * Verificare se su CRMAGAPP esistono record collegati all'attività in esame; se si, significa che l'attività è di tipo "Agenda". A.1.2 - Ricerca fine appuntamento Cercare con una start all'indietro l'ultimo record di CRMAGASP collegato ad una attività. L'ora fine dell'appuntamento è data da "ASP-ORA + 15 minuti" A.2 - Esportazione attività aggiornate/cancellate Occorre verificare se per la tabella interessata il log aggiornamenti è attivo: quindi testare il campo TLF-CRM-LOG (8). Se il campo non vale "X" segnalare e uscire. * Scorrere il log aggiornamenti relativo alla tabella interessata ricerca su LOGAGREC attraverso LGR-CHIA3, impostando: * LGR-FILE = "CRMATTIV" * LGR-DATA = A-SYN-DA-GES-DATA * LGR-ORA = A-SYN-DA-GES-ORA * Leggere tutti i record trovati * leggere LOGIDREC che contiene la chiave del file CRMATTIV * Se e' il campo di linkage denominato "utilswa-num-attivita" non e' = 0 si deve filtrare solamente i record con questo numero di attivita. * Eseguire il punto A.1.1 per verificare se l'attività è di tipo "Agenda"; se si, se si, cercare l'ora fine appuntamento con il punto A.1.2 * Per ciascun record valudo, se LGR-OPERAZIONE vale: * "C": eseguire A.4 * "I": eseguire A.3 * "M": eseguire A.3 Se siamo in modalita' di "aggiornamento su singola attivita'" modifiicare "logdirec" mettere nel campo lgr-eseguito = "S" ed eseguire rewrite allo scopo di indicare a SWA014 che gira in modo massivo, che si tratta di un record di cui e' gia' stato fatto l'aggioranamento. A.3 - Esportazione attività nuova/aggiornata Cerca l'esistenza di un record su APCRMATTIV avente:

Dato Descrizione
A-CRT-AZIENDA Codice azienda
A-CRT-ID-DISPOSITIVO 0
A-CRT-IDD-PROG 0
A-CRT-NUM CRT-NUM

Se non esiste, inserirlo. Se esiste, aggiornarlo: se pero' A-CRT-AGG-APP = "S" o "C", inserire una segnalazione sul file di log. A.3.1 - Aggiornamento APCRMATTIV Cerca l'esistenza di un record su APCRMATTIV avente: Informazioni con cui inserire/aggiornare un record su APCRMATTIV:

Dato Descrizione
A-CRT-AZIENDA Codice azienda
A-CRT-ID-DISPOSITIVO 0
A-CRT-IDD-PROG 0
A-CRT-NUM CRT-NUM
A-CRT-TIPO

A-CRT-OPE-AUTORE CRT-OPE
A-CRT-DATA CRT-DATA
A-CRT-ORA CRT-ORA
A-CRT-DATA-ESE CRT-DATA-ESE
A-CRT-ORA-ESE CRT-ORA-ESE
A-CRT-TIPOLOGIA CRT-TIP
A-CRT-FL-ESE CRT-FL-ESE
A-CRT-DES CRT-DES
A-CRT-NOTE Ricerca note attività su CRMATTNT
A-CRT-FL-CANC CRT-FL-CANC
A-CRT-IMP CRT-IMP
A-CRT-FL-PERSONALE CRT-FL-PERSONALE
A-CRT-FL-MULTI-DEST CRT-FL-MULTI-DEST
A-CRT-FL-MAIL CRT-FL-MAIL
A-CRT-FL-SMS CRT-FL-SMS
A-CRT-FL-RPZ CRT-FL-RPZ
A-CRT-RPZ-CADENZA CRT-RPZ-CADENZA
A-CRT-ID-SINCRO A-SYN-ID-SINCRO
A-CRT-AGG-APP "N"
A-CRT-ORA-FINE Contiene l'ora fine appuntamento, se A-CRT-TIPO = "G"
A-CRT-CODICE-GIRO CRT-CODICE-GIRO
A-CRT-DATA-GIRO CRT-DATA-GIRO
A-CRT-ORA-GIRO CRT-ORA-GIRO
A-CRT-STATO-ATTIVITA CRT-STATO-ATTIVITA
A-CRT-CATEGORIA CRT-CATEGORIA

A.3.2 - Aggiornamento APCRMATTAN Usando un opportuno comando SQL cancellare tutti i record di APCRMATTAN la cui chiave corrisponde alla chiave primaria di APCRMATTIV. Dopodichè eseguire l'esportazione dei record CRMATTAN aventi: * CRN-NUM = CRT-NUM Per ciascun record inserire un nuovo record su APCRMATTAN:

Dato Descrizione
A-CRN-AZIENDA Codice azienda
A-CRN-ID-DISPOSITIVO 0
A-CRN-IDD-PROG 0
A-CRN-NUM CRT-NUM
A-CRN-NOM CRN-ANA
A-CRN-DATA-ESE CRN-DATA-ESE
CRN-ORA-ESE
A-CRN-ORA-ESE
A-CRN-CND-COD CRN-CND-COD

A.3.3 - Aggiornamento APCRMATTOP Usando un opportuno comando SQL cancellare tutti i record di APCRMATTOP la cui chiave corrisponde alla chiave primaria di APCRMATTIV. Dopodichè eseguire l'esportazione dei record CRMATTOP aventi: * CRP-NUM = CRT-NUM Per ciascun record inserire un nuovo record su APCRMATTOP:

Dato Descrizione
A-CRP-AZIENDA Codice azienda
A-CRP-ID-DISPOSITIVO 0
A-CRP-IDD-PROG 0
A-CRP-NUM CRP-NUM
A-CRP-OPE CRP-OPE
A-CRP-DATA-ESE CRP-DATA-ESE
CRP-ORA-ESE
A-CRP-ORA-ESE
A-CRP-DATA-ALL CRP-DATA-ALL
CRP-ORA-ALL
A-CRP-ORA-ALL
A-CRP-FL-ALLARME CRP-FL-ALLARME
A-CRP-FL-ESITO CRP-FL-ESITO
A-CRP-FL-NOTIFICA CRP-FL-NOTIFICA
A-CRP-FL-ESE CRP-FL-ESE
A-CRP-ID-APP-GOOGLE CRP-ID-APP-GOOGLE
A-CRP-SMS-NOTIFICA CRP-SMS-NOTIFICA

A.3.4 - Aggiornamento APCRMATTAL Per motivi di performance, si cercherà di aggiornare (e quindi trasferire da server gestionale a server web) i soli allegati nuovi realmente modificati sull'attività (una attività potrebbe venire aggiornata, ma gli allegati non essere stati toccati). Note su archiviazione remota Se per la classe "Attività CRM" è attiva l'archiviazione remota, l'esecuzione di questa fase viene bypassata: anche se è stata appena attivata, i documenti non ancora remoti saranno sincronizzati e trasferiti dall'apposito processo incluso in ARC005. A.3.4.1 - Azzeramento A-CRL-AGG-GEST Eseguire un comando SQL con cui impostare "A-CRL-AGG-GEST="N"" per tutti i record relativi all'attività in corso:

Dato Descrizione
A-CRL-AZIENDA Codice azienda
A-CRL-ID-DISPOSITIVO 0
A-CRL-IDD-PROG 0
A-CRL-NUM CRT-NUM

A.3.4.2 - Controllo ed esportazione allegati * Scorrere tutti i record di COGIMAGE attraverso IMG-CHIA2 aventi * IMG-TIP-DOC = "AT" * IMG-DOC-COGE (1:12) = numero attività * Per ciascun record leggere il corrispondente record COGARIDX su ARX-CHIA2, impostando: * ARX-PROTOCOLLO = IMG-PROTOCOLLO * A questo punto siamo posizionati su un allegato dell'attività; vediamo se sulla tabella web esiste ed è aggiornato: * Lettura di APCRMATTAL impostando

Dato Descrizione
A-CRL-AZIENDA Codice azienda
A-CRL-ID-DISPOSITIVO 0
A-CRL-IDD-PROG 0
A-CRL-NUM CRT-NUM
A-CRL-PROG Progressivo di allegato (IMG-DOC-COGE (13:4)
  • Quindi se il record esiste e:
    • A-CRL-AGG-DATA = ARX-DA-DATA
    • A-CRL-AGG-ORA = ARX-DA-ORA
      • Significa che l'allegato è già presente e aggiornato, quindi scartare il record
  • Altrimenti proseguire:
  • Estrazione documento: chiamata a COGU06 con i parametri:
Dato Descrizione
U06-OPE "Estrai-da-doc"
U06-FL-INTERNO "T"ASN115
U06-TIP-DOC "AT"
U06-DOC-COGE IMG-DOC-COGE

A questo punto sarà presente un file nella cartella EXT-TMP-DIR con nome U06-FILE * inserimento/aggiornamento record su APCRMATTAL:

Dato Descrizione
A-CRL-AZIENDA Codice azienda
A-CRL-ID-DISPOSITIVO 0
A-CRL-IDD-PROG 0
A-CRL-NUM CRT-NUM
A-CRL-PROG Progressivo di allegato (IMG-DOC-COGE (13:4)
A-CRL-ARX-PROGRESSIVO ARX-PROGRESSIVO
A-CRL-DOCUMENTO U06-FILE
A-CRL-DESCRIZIONE IMG-OGGETTO
A-CRL-AGG-DATA ARX-DA-DATA
ARX-DA-TIME
A-CRL-AGG-ORA
A-CRL-AGG-APP "N"
A-CRL-AGG-GEST "S"
  • Trasferimento file sul server WEB, usando la subroutine di trasferimento FTP già usata per gli allegati di Assist, vedi SWA005:
    • DA: EXT-TMP-DIR/U06-FILE
    • A: cartella configurata "areaapp"-"cartella-ftp-attivita" / CRT-NUM "/" U06-FILE
    • La modalità di trasferimento dipenderà dalla configurazione attivazione-bucket A.3.4.3 - Controllo allegati non presenti sul gestionale Eseguire un comando SQL con cui effettuare la cancellazione logica di tutti i record relativi all'attività in corso:
Dato Descrizione
A-CRL-AZIENDA Codice azienda
A-CRL-ID-DISPOSITIVO 0
A-CRL-IDD-PROG 0
A-CRL-NUM CRT-NUM

aventi ancora A-CRL-AGG-GEST = "N" A.4 - Cancellazione attività In questo caso dobbiamo semplicemente informare i dispositivi esterni che l'attività è stata cancellata; quindi: Cerca l'esistenza di un record su APCRMATTIV avente:

Dato Descrizione
A-CRT-AZIENDA Codice azienda
A-CRT-ID-DISPOSITIVO 0
A-CRT-IDD-PROG 0
A-CRT-NUM CRT-NUM

Se il record viene trovato, aggiornare impostando:

Dato Descrizione
A-CRT-FL-CANC "C"

B - Importazione attività Scorrere APCRMATTIV eseguendo una apposita query che permetta di restituire i record aggiornati (A-CRT-AGG-APP <> " ","N"). Per ciascun record trovato, se il campo: A-CRT-NUM vale: * "0": significa che è una nuova attività inserito su smartphone; eseguire B.1 * <> 0: significa che sullo smartphone l'attività è stato aggiornata; eseguire B.2 24/04/2018 Aggiungo questa nota dopo aver controllato il comportamento attuale del programma che nel frattempo è stato pesantemente modificato per la sincronizzazione con Calendar/Scheduler. Si considera "aggiornata" l'attività quando A-CRT-AGG-APP = "A" B.1 - Inserimento nuova attività Significa che il record è stato inserito da uno smartphone o da Areagate; in questo caso avremo anche A-CRT-ID-DISPOSITIVO e A-CRT-IDD-PROG significativi. Non appena si inizia questa fase impostare

Dato Descrizione
A-CRT-SEMAFORO 1

e salvare: questo impedirà che qualcuno possa effettuare modifiche all'attività temporanea da ora in avanti B.1.1 - Creazione nuova attività NB: per il momento prevedo che l'attività sia collegata ad un solo nominativo e ad un solo utente destinatario, e con un solo allegato Chiamata a CRMS08 impostando:

Dato Descrizione
CRMS08-OPE "SCRIVI"
CRMS08-NOM Posizionarsi sul primo record di APCRMATTAN collegato all'attività; passare A-CRN-NOM
CRMS08-TIP A-CRT-TIPOLOGIA
CRMS08-OGGETTO A-CRT-DES
CRMS08-TESTO A-CRT-NOTE
CRMS08-OPE-AUT A-CRT-OPE-AUTORE
CRMS08-OPE-DST Posizionarsi sul primo record di APCRMATTOP collegato all'attività; passare A-CRP-OPE
CRMS08-FL-ESEGUI A-CRT-FL-ESE
CRMS08-FL-ALLARME A-CRP-FL-ALLARME
CRMS08-ALLARME-DATA A-CRP-DATA-ALL
CRMS08-ALLARME-ORA A-CRP-ORA-ALL
CRMS08-CODICE-GIRO A-CRT-CODICE-GIRO
CRMS08-DATA-GIRO A-CRT-DATA-GIRO
CRMS08-ORA-GIRO A-CRT-ORA-GIRO
CRMS08-STATO-ATTIVITA A-CRT-STATO-ATTIVITA
CRMS08-CATEGORIA A-CRT-CATEGORIA

B.1.1.1 - Aggiornamenti all'attività CRMS08 non è in grado attualmente di salvare tutti i dati necessari all'attività. Quindi all'uscita dall'inserimento, rileggere CRMATTIV e: * Se c'è il modulo assistenza attivo (AZ-ASSIST = "S"), salvare il codice intervento collegato su CRT-ID-INTER (recuperato dalla descrizione A-CRT-DES) B.1.2 - Importazione allegati Lettura di tutti i record id APCRMATTAL collegati all'attività; per ciascuno: B.1.2.1 - Download allegato Trasferimento file dal server WEB, usando la subroutine di trasferimento FTP già usata per gli allegati di Assist, vedi SWA005: * * DA: cartella configurata "areaapp"-"cartella-ftp-attivita" / CRT-NUM "/" A-CRL-DOCUMENTO * A: EXT-TMP-DIR/A-CRL-DOCUMENTO Se il documento è cancellato logicamente (A-CRL-FL-CANC = "C") non verrà importato in fase di acquisizione nuova attività. B.1.2.2 - Archiviazione allegato Archiviazione del documento sull'attività, con una chiamata a COGU06:

Nome campo Contenuto
U06-OPE INSERISCI-FILE
U06-FL-INTERNO "T"
U06-TIP-DOC "AT"
U06-DOC-COGE CRMS08-ATTIVITA-CREATA su 12 cifre + A-CRL-PROG
U06-DO-OGGETTO A-CRL-DESCRIZIONE
U06-FILE EXT-TMP-DIR/A-CRL-DOCUMENTO

B.1.3 - Rimozione record di input Il record di origine da cui siamo partiti su APCRMATTIV va cancellato, assieme ai record collegati alla stessa attività sulle altre tabelle: * APCRMATTAN * APCRMATTOP * APCRMATTAL B.1.3 - Riesportazione record La nuova attività dovrà essere riesportata come spiegato al punto A.3 In questo caso dovremo valorizzare alcuni campi in più:

Nome campo Contenuto
A-CRT-ID-DISP-ORIG A-CRT-ID-DISPOSITIVO del record temporaneo
A-CRT-IDD-PROG-ORIG A-CRT-IDD-PROG del record temporaneo

B.2 - Aggiornamento attività esistente In questo caso avremo A-CRT-ID-DISPOSITIVO e A-CRT-IDD-PROG = 0, mentre avremo A-CRT-NUM significativo. Se A-CRT-AGG-APP = 'C' l'attività è stata cancellata lato web, quindi bisogna agire di conseguenza Altrimenti effettuare una chiamata specifica a CRMS08:

Nome campo Contenuto
CRMS06-OPE AGGIORNA
CRMS08-ATTIVITA-CREATA A-CRT-NUM
CRMS08-OGGETTO A-CRT-DES/
CRMS08-TESTO A-CRT-NOTE
CRMS08-OPE-DST A-CRT-OPE-AUTORE (?)
CRMS08-FL-ESEGUI A-CRT-FL-ESE
CRMS08-CODICE-GIRO A-CRT-CODICE-GIRO
CRMS08-DATA-GIRO A-CRT-DATA-GIRO
CRMS08-ORA-GIRO A-CRT-ORA-GIRO
CRMS08-STATO-ATTIVITA A-CRT-STATO-ATTIVITA
CRMS08-CATEGORIA A-CRT-CATEGORIA

B.2.2 - Aggiornamento APCRMATTIV Aggiornare il record di origine impostando:

Dato Descrizione
A-CRT-AGG-APP "N"

C - Aggiornamento APSTATOSYN Aggiornare il record APSTATOSYN relativo a:

Dato Contenuto
A-SYN-AZIENDA Codice azienda
A-SYN-TABELLA "CRMATTIV"

e aggiornare i dati:

Dato Contenuto
A-SYN-AZIENDA Codice azienda
A-SYN-TABELLA "CRMATTIV"
A-SYN-DA-GES-DATA Data/ora di aggiornamento maggiore trovata sui record esportati
A-SYN-DA-GES-ORA
A-SYN-DA-ID-SINCRO Sommare 1 al valore precedente

Estratto da documentazione interna ClickUp