Vai al contenuto

SWN004 - Contatti

Nome programma SWN004 Linkage section UTILAGPRG - Linkage comune Id processo: 7 Nome processo: CONTATTI Tabelle principali gestite

AREA AREAGATE Direzione
COGRIFER
COGRIFE2
ARPCONTT ------>
<------

Logica generale Sincronizzazione dei contatti. Esportazione Esportazione di tutti i contatti effettivamente modificati (con dati variati). Importazione Le applicazioni WEB potranno: * Creare nuovi contatti: saranno salvati su ARPCONTT con RRIF-TIP = "A" * Modificare contatti esistenti: saranno salvati su ARPCONTT sulla chiave originale, e sarà alzato il flag di aggiornamento web RRIF-AGG-APP Configurazioni possibili

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

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: ARPCONTT Se fallita inviare una Segnalazione critica e chiudere. C - Importazione aggiornamenti Effettuare una query per estrarre tutti i contatti aggiornati su APP: SELECT * FROM arpcontt WHERE rrif_azi = azienda AND rrif_agg_app = 'A' I contatti aggiornati potranno essere: * Se RRIF_TIP = "A" -> Sempre nuovi; in questo caso l'attribuzione della numerazione avviene sempre dal gestionale -> C.2 * se RRIF_TIP = "C" -> Potrebbero essere aggiornati o nuovi (nuovi solo se la configurazione numerazione-web è attiva) -> C.1 C.1 - Importazione contatto aggiornato o nuovo Un contatto aggiornato deve esistere già su COGRIFER. Fare quindi una ricerca impostando:

Dato Contenuto
RIF-TIP RRIF-TIP
RIF-COD RRIF-COD

Se il contatto non esiste; se la configurazione numerazione-web * E' attiva: * Inserire il contatto creando il record su COGRIFER con il codice attribuito sul web, e aggiornarlo come in caso di variazione * In questo caso non si deve proseguire con il punto C.2 ma fermarsi qui perchè il contatto importato è già ufficiale * Non è attiva: inserire una segnalazione critica-es2000 indicando il contatto errato Altrimenti proseguire con l'aggiornamento di COGRIFER.

Dato Contenuto
RIF-CODANA
Se RIF-ANA-TIP


Se RRIF-COD-NOM:

> 0: contatto su prospect:


RIF-NOME RRIF-NOME
RIF-EMAIL RRIF-EMAIL
RIF-TEL1 RRIF-TEL1
RIF-TEL2 RRIF-TEL2
RIF-TEL3 RRIF-TEL3
RIF-FAX RRIF-FAX
RIF-TITOLO RRIF-TITOLO
RIF-POSIZIONE RRIF-COD-POSIZIONE
RIF-INTERNO RRIF-INTERNO
RIF-SKYPE RRIF-SKYPE
RIF-VAL RRIF-VAL
RIF-FL-STAMPA RRIF-FL-STAMPA

Leggere e aggiornare COGRIFER2:

Dato Contenuto
RIF2-NOTE RRIF-NOTE

C.2 - Importazione nuovo contatto Quando RRIF-TIP = "A" significa che è stato creato un nuovo contatto su APP, e va aggiunto all'interlocutore di riferimento (cliente/fornitore/contatto). C.2.1 - Creazione nuovo contatto Inserimento di COGRIFER

Dato Contenuto
RIF-TIP "C"
RIF-COD Cercare il primo codice libero su COGRIFER
altri campi i restanti campi saranno valorizzati come al punto C.1

Inserimento di COGRIFER2

Dato Contenuto
RIF2-TIP RIF-TIP
RIF2-COD RIF-COD
RIF2-NOTE RRIF-NOTE

C.2.2 - Rimozione "nuovo contatto" Il contatto presente su ARPCONTT con RRIF-TIP = 'A', dopo l'inserimento deve essere cancellato. C.2.2 - Rimozione "nuovo contatto" Il contatto presente su ARPCONTT con RRIF-TIP = 'A', dopo l'inserimento deve essere cancellato. B - Esportazione informazioni aggiornate * ID SINCRO: gestito * Esportazione differenziale: gestita ma non ottimizzata: non esiste una chiave diretta per ottenere solo i record aggiornati * Cancellazione logica: gestita In questa fase si dovrà tenere conto di * Limite record * Limite errori * "Esporta tutto" B.1 - Stato sincronizzazione Sulla tabella APSTATOSYN, leggere il record relativo alla tabella/oggetto da sincronizzare "ARPCONTT"; se il record non esiste, crearlo impostando

Dato Contenuto
A_SYN_AZIENDA Codice azienda
A_SYN_TABELLA "ARPCONTT"
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) B.1.1 - ID sincro iniziale In precedenza l'id sincro veniva gestito come numerazione in COGNUMER. Quindi, se A-SYN-DA-ID-SINCRO = 0 o 1, effettuare una prima ricerca con COGS25:

Dato Contenuto
S25-I-COD 49

(vedi SWA002) B.2 - Ricerca record da esportare B.2.1 Ricerca record da esportare

Tipo di elaborazione Condizione Cosa fare
Singolo record AGPRG-KEY <> " "
(conterrà RIF-CHIA1)
Si legge direttamente il record da aggiornare su COGRIFER
Verrà eseguita se agg-postgres-online è attiva
Se viene sincronizzato un record cancellato, verrà effettuata la cancellazione logica
Esportazione totale AGPRG-ESPORTA-TUTTO = "S" Si scorrono tutti i record di COGRIFER; ogni record va considerato, ignorando il controllo sulla variazione dei record
Esportazione standard Si scorrono tutti i record di COGRIFER: si considerano solo i record dove:
(RIF-DA-DATA+RIF-DA-TIME) >=
(A-SYN-DA-GES-DATA+A-SYN-DA-GES-ORA)
Pulizia AGPRG-OPE = "PULIZIA" Eseguire solo il giro di cancellazione logica B.3 quindi uscire
Occupazione numerazione
(conterrà RIF-CHIA1)

Eseguire la procedura B.4 e uscire

Per ciascun record valido si cercano tutti i record collegati: * COGRIFE2 B.2.2 Verifica ed esportazione record Dopodichè si effettua la ricerca dell'informazione su ARPCONTT

Dato Contenuto
RRIF-AZI Codice azienda
RRIF-TIP RIF-TIP
RRIF-COD RIF-COD

Se non esiste, inserirlo. Se esiste, aggiornarlo l'aggiornamento del record deve avvenire solo se almeno un dato tra quelli da modificare è diverso. NB: se è stata richiesta l'esportazione completa (AGPRG-ESPORTA-TUTTO = "S") allora il record dovrà essere esportato a prescindere dal confronto Suggerimento Invece di popolare direttamente i dati del record di destinazione, portarli su delle copie in w/s. Al termine confrontare i dati sulla destinazione con la copia in w/s. Aggiornamento da ASNPREST

Dato Contenuto Confronto?
RRIF-AZI Codice azienda
RRIF-TIP RIF-TIP
RRIF-COD RIF-COD
RRIF-CODANA Se RIF-ANA-TIP:


Si
RRIF-COD-NOM Se RIF-ANA-TIP:


Si
RRIF-NOME RIF-NOME Si
RRIF-EMAIL RIF-EMAIL Si
RRIF-TEL1 RIF-TEL1 Si
RRIF-TEL2 RIF-TEL2 Si
RRIF-TEL3 RIF-TEL3 Si
RRIF-FAX RIF-FAX Si
RRIF-NOTE RIF2-NOTE Si
RRIF-TITOLO RIF-TITOLO Si
RRIF-COD-POSIZIONE RIF-POSIZIONE Si
RRIF-POSIZIONE Descrizione della posizione trovata sulla apposita tabella
RRIF-INTERNO RIF-INTERNO Si
RRIF-DATA-AGG Data sistema
RRIF-SKYPE RIF-SKYPE Si
RRIF-VAL RIF-VAL Si
RRIF-FL-STAMPA RIF-FL-STAMPA Si
RRIF-ID-SINCRO Prossimo id sincro
RRIF-AGG-APP " "

In questa fase tenere memoria di data+ora dell'ultimo record di input considerato. Per tutti i campi alfanumerici significativi (non flag, non valori fissi) effettuare il parsing tramite GESSTR, come già fatto negli altri programmi di sincronizzazione B.3 Verifica record cancellati Sulla tabella di origine COGRIFER esiste il flag di cancellazione logica. Non possiamo pero' dare per scontato che nessun programma possa effettuare cancellazioni fisiche (ad esempio, la cancellazione fisica di un cliente effettua anche la cancellazione fisica sui contatti). Quindi gestiamo anche in questo caso il giro di verifica record cancellati. Quindi si opererà come segue: 1. Scorrere tutti i record di ARPCONTT 2. Ricerca, per ciascuno, del corrispondente record su COGRIFER A questo punto la situazione potrebbe essere la seguente:

COGRIFER trovato? RIF-VAL RRIF-VAL Cosa fare
Si " " "C" Aggiornare ARPCONTT impostando


Si "C" "C" Nessuna operazione
Si " " " " Nessuna operazione
Si "C" " " Aggiornare ARPCONTT impostando


No / "C" Nessuna operazione
No / " " Aggiornare ARPCONTT impostando


B.4 Occupazione numerazione condivisa Procedura specifica per l'operazione "OCCUPA-KEY" In questa operazione si riceve una chiave di contatto (RIF-CHIA1), e il programma deve controllare che questo numero sia libero. In tal caso occuparlo inserendo il record. In dettaglio: Ricerca di un record su ARPCONTT con la chiave:

Dato Contenuto
RRIF-AZI Codice azienda
RRIF-TIP RIF-TIP
RRIF-CODCONT RIF-COD

Se il record viene trovato -> uscire restituendo AGPRG-ESITO = "N" Altrimenti inserire il record vuoto, esattamente cosi' com'è. Se a questo punto l'operazione ha esito: * Positivo: uscire restituendo AGPRG-ESITO = "S" * Negativo: uscire restituendo AGPRG-ESITO = "N" (in questo caso nel lasso di tempo tra la lettura e la scrittura del record un processo web ha effettuato la stessa operazione ed è arrivata prima). B.9 - Aggiornamento id syncro Al termine dell'elaborazione, aggiornare il record APSTATOSYN:

Dato Contenuto
A_SYN_AZIENDA Codice azienda
A_SYN_TABELLA "ARPCONTT"
A_SYN_DA_GES_DATA Data/ora dell'ultimo record aggiornato
A_SYN_DA_GES_ORA
A_SYN_DA_ID_SINCRO Ultimo id sincro + 1

Estratto da documentazione interna ClickUp