B - Ricerca interventi aperti
Si dovrà leggere APSTATOSYN - Stato sincronizzazione; il record relativo a "ARPINTES-APERTI". Questa conterrà data/ora di aggiornamento dell'ultimo intervento esportato in precedenza. Si dovranno esportare solo gli interventi inseriti/aggiornati dopo questa data/ora.
Ricerca su ASNINTES - Intervento; testata, attraverso ACIT-CHIA6.
Vengono esaminati solo gli interventi:
•Aperti (ACIT-STATO = "A", oppure ACIT-STATO = " ")
•Assegnati o non assegnati (quindi ora non va più effettuato il controllo su ACIT-ASS-DATA e/o ACIT-TECNICO)
•Non ancora assegnati su scheduler (quindi se RCIT-STATO = "M" vanno ignorati)
•Se non cancellati logicamente, non devono essere esportati (è successo che un intervento eseguito è stato cancellato. La fase di cancellazione marca l'intervento su KPN solo come cancellato e lascia il resto invariato); quindi se
oRCIT-FL-ESEGUITA = "S"
oRCIT-FL-CANCELLATA <> "S"
l'intervento viene scartato (non esportato)
•Interventi su chiamate esterne (ACHT-CLASSE <> "L") -> gli eventuali interventi trovati su KPN che sono di tipo "laboratorio" verranno eliminati da KPN (B.1 elimina intervento)
•Data/ora aggiornamento superiore a data/ora ultimo intervento esportato
B.0.1 - Caso particolare - Interventi creati su APP
Se è stato importato un intervento creato da APP, avremo un intervento dove:
✓ARPINTES.RCIT-FL-AREAGATE = "2"
✓ASNINTES.ACIT-DA-PROG = "SWA005"
Se stiamo esportando un intervento in questa condizione, non dovrà essere riesportato: altrimenti la seguente catena di eventi:
1.Chiusura intervento su APP e successiva pre-chiusura su ARPINTES
2.Esportazione interventi aperti (SWA004)
3.Importazione interventi chiusi
non potrebbe importare l'intervento perchè al punto 2 viene riaggiornato come aperto.
Intervento valido
•Per ciascun intervento valido viene eseguita l'elaborazione:
oB.1. Elimina intervento
oB.2 Estrazione intervento
oB.3 Estrazione altri dati
oB.4 Estrazione galleria immagini
B.1 - Elimina intervento
Come prima cosa si salva il flag RCIT-FL-MYSQL dell'intervento da cancellare. Si predispone anche in campo di comodo che servirà a fare in modo che, in caso di successiva estrazione intervento, il campo RCIT-FL-CHIUSO viene impostato a "1"
Poi si esegue:
•Cancellazione di ARPINTEC - Tecnici x intervento
•Cancellazione logica di tutti i record su ARPCHDET - Matricole su chiamata, impostando RCHT-VAL = "C"
B.2 - Estrazione intervento
ARPINTES
Nome campo |
Contenuto |
RCIT-AZI |
Azienda |
RCIT-ID |
Id intervento |
RCIT-ASS-DATA RCIT-ASS-ORA |
Data/ora assegnazione |
RCIT-ESEC-DATA RCIT-ESEC-ORA |
ACIT-INT-DATA ACIT-INT-ORA |
RCIT-ID-CHIAMATA |
Id chiamata |
RCIT-ANA |
Cliente assistito della chiamata |
RCIT-PRIORITA |
ACHT-PRIORITA |
RCIT-TIPO-INTERVENTO |
ACIT-TIPO-INTERVENTO |
RCIT-INDIRIZZO-INTERVENTO |
Indirizzo completo eventuale destinazione diversa |
RCIT-CHIAMATA-CLI |
ACHT-CHIAMATA-CLI |
RCIT-FL-RISOLUTIVO |
"N" |
RCIT-FL-TRASFERTA |
"N" |
RCIT-TARGA |
ACIT-TARGA |
RCIT-DESCRIZIONE |
ACIT-NOTE (Note intervento) |
RCIT-NOTE-INTERNE |
Note interne intervento (da ASNINDAG.AITD-NOTE) |
RCIT-NOTE-TECNICO |
" " |
RCIT-FL-AGGIORNATO |
"S" |
RCIT-FL-ESEGUITA |
"N" |
RCIT-VIAGGIO-KM |
0 |
RCIT-VIAGGIO-ORE |
0 |
RCIT-FL-CANCELLATO |
"N" |
RCIT-CHIAMATA-DATA RCIT-CHIAMATA-ORA |
Data/ora chiamata |
RCIT-OGGETTO |
Oggetto chiamata |
RCIT-CHIAMATA-DES |
Descrizione chiamata |
RCIT-FL-CONTRATTO |
ACHT-FL-CONTRATTO |
RCIT-SCADENZA-DATA RCIT-SCADENZA-ORA |
Data/ora scadenza chiamata |
RCIT-CONTATTO-1 |
Contatto citato sulla chiamata |
RCIT-FL-MYSQL |
Viene impostato a: •Valore precedente del campo, in fase di esportazione interventi aperti (B) •"0": in esportazione chiamate fittizie |
RCIT-FL-CHIUSO |
•"1": in fase di esportazione interventi aperti (B) •"0": tutti gli altri casi |
RCIT-FL-CHIUSA |
" " |
RCIT-STATO |
Stato intervento |
RCIT-SPOSTABILE |
ACIT-FL-SPOSTABILE |
RCIT-FL-ASSEGNATA |
"N" |
RCIT-ID-TECNICO-ORIG |
Primo tecnico assegnato alla chiamata |
RCIT-FL-FAT |
ACHT-FL-FAT |
RCIT-FL-STA-RAP |
ACHT-FL-STA-RAP |
RCIT-FL-STA-CERT |
ACHT-FL-STA-CERT |
RCIT-PRESENZA-PREVENTIVO |
ACHT-PRESENZA-PREV |
RCIT-MODELLO-CERT |
ACHT-MODELLO-CERT |
RCIT-AGENTE |
ACHT-AGENTE |
RCIT-DST |
ACIT-DST |
RCIT-MAG-DEFAULT |
ACIT-MAG |
RCIT-TIP-ATT |
ACHT-TIP-ATT |
RCIT-DDT-CNS* |
Eventuale chiave documento di consegna collegato all'intervento, in caso di intervento di consegna In questo caso il contenuto del ddt verrà esportato su APCOGTESBO/APCOGMOMAG |
RCIT-FL-AREAGATE |
ACHT-FL-AREAGATE |
RCIT-PROVENIENZA |
ACHT-PROVENIENZA |
RCIT-UTE-AG-COD |
ACIT-UTE-AG-ANA |
RCIT-NOM-ASS |
ACHT-NOM-ASS |
ARPINTES2
Nome campo |
Contenuto |
RCIT2-AZI |
Azienda |
RCIT2-ID |
Id intervento |
RCIT2-NOTE-FATTURA |
|
RCIT2-IMP-FRANCHIGIA |
|
RCIT2-RIF-CHI-PORTALE |
|
RCIT2-RIF-PTO-VENDITA |
|
RCIT2-COMMESSA |
|
RCIT2-SOTTOCOM |
|
RCIT2-ID-OPE-CHIAMATA |
ACHT-OPERATORE |
RCIT2-ID-SINCRO |
Primo ID sincronizzazione disponibile |
RCIT2-AREA-TECNICA |
ACHT-AREA-TECNICA |
RCIT2-RESPONSABILE |
ACHT-RESPONSABILE |
RCIT2-MAG-TIP |
ACIT2-MAG-TIP |
RCIT2-MAG-SEC |
ACIT2-MAG-SEC |
RCIT2-GRP-AZ-ESE |
ACHT-GRP-AZ-ESE |
RCIT2-GRP-AZ-APP |
ACHT-GRP-AZ-APP |
RCIT2-BRAND |
ACHT-BRAND |
RCIT2-AVVISA-CLIENTE |
ACHT-AVVISA-CLIENTE |
RCIT2-CNT-TIP |
ACHT-CNT-TIP |
RCIT2-CNT-COD |
ACHT-CNT-COD |
B.2.1 - Verifica esistenza cliente
E' necessario verificare se il cliente relativo alla chiamata esiste sul db Web;
B.2.1.1 - Verifica esistenza cliente standard
Se RCIT-ANA è significativo, cercare l'esistenza su ARPANAGR; se non esiste eseguire una chiamata a SWA031 per l'inserimento/aggiornamento:
Nome campo |
Contenuto |
UTILSWA031-OPE |
"ESPORTA-CLIENTE" |
UTILSWA031-CLI |
Il codice cliente da aggiornare Quindi se ad esempio RCIT-ANA vale "C00123", il codice cliente sarà 123 |
Vedi anche COGE08C
B.2.1.2 - Verifica esistenza cliente potenziale
Se RCIT-NOM-ASS è significativo, cercare l'esistenza su APCRMANAGR; se non esiste eseguire una chiamata a SWA013 per l'inserimento/aggiornamento:
Nome campo |
Contenuto |
SWA013-OPE |
"ESPORTA-NOM" |
SWA013-NOM |
RCIT-NOM-ASS |
B.2.2 - Verifiche su altre tabelle secondarie
Per ciascuno dei seguenti campi è necessario controllare l'esistenza del record relativo sulla tabella di destinazione, e se necessario al termine dell'operazione (quindi di tutti gli interventi esportati) eseguire una-tantum il programma indicato:
Campo da controllare |
Tabella su cui controllare |
Programma da eseguire |
RCIT-STATO-CHIAMATA |
ARPSTCHM |
SWA026 |
RCIT-PRIORITA |
ARPPRIOR |
SWA066 |
RCIT-TIP-ATT |
ARPTPATT |
SWA066 |
RCIT2-AREA-TECNICA |
ARPAREAT |
SWA025 |
In seguito viene eseguita l'operazione B.3 estrazione altri dati
B.3 - Estrazione altri dati
Per l'intervento in corso:
•Esportazione ASNCHDET su ARPCHDET
oSe il record esiste, aggiornarlo togliendo il flag di cancellazione logica RCHT-VAL
•Prestazioni previste:
oCancellazione ARPCHPRP
oEsportazione delle prestazioni previste non ancora evase su ARPCHPRP, con l'ausilio di ASNS16 - Ricerca prestazioni/materiali non evasi su chiamata
oPer ciascuna riga valida si valorizzerà anche:
▪RCHP-PREZZO-PREVENTIVO: se presente un preventivo collegato alla chiamata, qui verrà inserito il prezzo netto trovato sul preventivo a parità di merce
▪RCHP-IVA-COD, RCHP-IVA-ALI: da RA2-IVA-COD e la relativa aliquota trovata nella tabella
•Esportazione tecnici su ARPINTEC:
oSe la chiamata non è assegnata (ACIT-TECNICO (1) = 0), il record ARPINTEC va creato comunque anche se con i tutti i tecnici = 0.
B.3.1 DDT di consegna
Per ciascuna chiamata esportata, se il tipo attività è quello configurato in tipo-attivita-consegna verificare l'esistenza di un ddt di consegna collegato, attraverso una lettura su ASNINDMG, dove:
Nome campo |
Formato |
ACIM-ID-INTERVENTO |
Id intervento |
ACIM-TIP |
"N" |
Se esiste, procedere all'esportazione di testata e dettaglio:
DDT di consegna: testata
Leggere la testata documento COGTESBO presente in ACIM-TES-CHIA3; con i dati qui contenuti creare o modificare il record relativo trovato in APCOGTESBO; i campi saranno riempiti in funzione dell'analogia tra i campi delle due tabelle.
DDT di consegna: dettaglio
Come prima cosa, attraverso un apposito comando SQL cancellare tutti i record id APCOGMOMAG relativi al documento in elaborazione.
Dopodichè scorrere i record COGMOMAG relativi al documento esaminato e riesportarli su APCOGMOMAG, i campi saranno riempiti in funzione dell'analogia tra i campi delle due tabelle.
B.3.2 Notifiche push
Prima e durante l'aggiornamento di ARPINTES e ARPINTEC di un intervento, salvarsi i dati per capire se è stata effettuata una modifica che necessita dell'invio di una notifica.
Il caso più complesso che potrebbe succedere è il seguente:
Prima della modifica, ARPINTEC conteneva:
RCIN-ID-TECNICO1 |
RCIN-ID-TECNICO2 |
RCIN-ID-TECNICO3 |
.... |
10 |
15 |
|
|
Dopo la modifica, ARPINTEC contiene:
RCIN-ID-TECNICO1 |
RCIN-ID-TECNICO2 |
RCIN-ID-TECNICO3 |
.... |
15 |
18 |
|
|
In questo caso i tecnici a cui inviare le notifiche sono 3:
Tecnico (prima) |
Tecnico (dopo) |
Operazione |
10 |
0 |
Tecnico rimosso |
15 |
15 |
Tecnico rimasto sull'intervento (invariato) |
0 |
18 |
Tecnico aggiunto |
Quindi, per ciascun tecnico interessato all'intervento, vediamo i casi possibili:
RCIT-DATA-ASS RCIT-ORA-ASS (prima) |
RCIT-DATA-ASS RCIT-ORA-ASS (dopo) |
Stato tecnico |
Operazione |
Tipo notifica |
vuoto |
Non vuoto |
Aggiunto |
L'intervento è stato assegnato al tecnico |
1 |
vuoto |
Non vuoto |
Invariato |
Il tecnico era già stato preassegnato, ora gli è stata attribuita una data; di fatto è una nuova assegnazione |
1 |
Non vuoto |
Non vuoto (data-ora diverse) |
Aggiunto |
E' stata cambiata la data/ora assegnazione, e il tecnico è stato aggiunto; di fatto è una nuova assegnazione |
1 |
Non vuoto |
Non vuoto (stessa data-ora) |
Aggiunto |
Data/ora assegnazione sono rimaste le stesse, e il tecnico è stato aggiunto; di fatto è una nuova assegnazione |
1 |
vuoto |
vuoto |
Rimosso |
Questa sitazione, riguarda il caso in cui il tecnico era preassegnato, ma la data non era stata definita. Il tecnico viene tolto dalla preassegnazione, ma non è necessaria nessuna notifica |
Nessuna |
Non vuoto |
Non vuoto |
Rimosso |
Qualunque altra situazione in cui il tecnico viene rimosso, necessita di una notifica "Assegnazione rimossa" |
3 |
vuoto |
vuoto |
Invariato |
Non è stata effettuata nessuna modifica all'assegnazione: nessuna notifica |
Nessuna |
Non vuoto |
vuoto |
Invariato |
E' stata tolta la data assegnazione, ma il tecnico è rimasto: corrisponde ad una assegnazione rimossa |
3 |
Non vuoto |
Non vuoto (data-ora diverse) |
Invariato |
E' stata modificata la data assegnazione, ma il tecnico è rimasto: corrisponde ad una assegnazione modificata |
2 |
in tutti gli altri casi non descritti, non deve essere inviata nessuna notifica.
B.3.2.1 Creazione notifica
La creazione di una notifica corrisponde all'inserimento di un record sulla tabella ARPNOTIFICHE (un servizio sul server WEB si preoccupa di leggere questa tabella e inviare realmente le notifiche):
Nome campo |
Note |
ANTP-ID |
Campo autoincrementante, non è necessario valorizzarlo |
ANTP-AZIENDA |
Codice azienda |
ANTP-CLASSE |
"AI" |
ANTP-ID-OGGETTO |
Id intervento in elaborazione |
ANTP-ID-TECNICO |
Codice tecnico interessato |
ANTP-TIP |
Vedi Tipo notifica nella tabella sopra |
ANTP-ESITO |
0 |
Quindi per ciascun intervento potrà essere necessario creare più record, a seconda delle situazioni descritte sopra.
B.3.3 Notifiche per inserimento nuova chiamata
Questa operazione va effettuata solo quando si esporta una nuova chiamata non programmata: escludere quindi:
•le chiamate con ACHT-PROVENIENZA = chiamate-programmate-provenienza
•gli interventi "non nuovi" (per i quali non si sta effettuando un inserimento ma un aggiornamento)
•gli interventi successivi al primo: quindi quelli il cui codice non finisce per "01"
Per ciascun intervento che viene considerato eseguire direttamente la creazione della notifica con l'inserimento di un record sulla tabella ARPNOTIFICHE:
Nome campo |
Note |
ANTP-ID |
Campo autoincrementante, non è necessario valorizzarlo |
ANTP-AZIENDA |
Codice azienda |
ANTP-CLASSE |
"AI" |
ANTP-ID-OGGETTO |
Id intervento in elaborazione |
ANTP-ID-TECNICO |
0 |
ANTP-TIP |
4 |
ANTP-ESITO |
0 |
B.4 - Estrazione galleria immagini
B.4.1 - Azzeramento flag "aggiornato"
Eseguire un comando SQL con cui aggiornare tutti i record relativi alla chiamata in elaborazione in corso:
Nome campo |
Note |
RCHIMG-AZI |
Codice azienda |
RCHIMG-ID |
RCIT-ID-CHIAMATA |
Lo scopo è di predisporre i flag sulla galleria immagini per capire se ci sono immagini cancellate.
In pratica il comando SQL corrisponde a
"UPDATE arpchimg SET rchimg_area_fl_agg = 'N', rchimg_area_fl_canc = ' ' WHERE rchimg_azi = azienda AND rchimg_id = rcit_id_chiamata"
B.4.2 - Controllo ed esportazione allegati
•Scorrere tutti i record di COGIMAGE attraverso IMG-CHIA2 aventi
oIMG-TIP-DOC = "A2"
oIMG-DC-A2-KEY = RCIT-ID-CHIAMATA
oIMG-DC-A2-TIP = "IM"
•Per ciascun record leggere il corrispondente record COGARIDX su ARX-CHIA2, impostando:
oARX-PROTOCOLLO = IMG-PROTOCOLLO
•A questo punto siamo posizionati su un allegato dell'attività; vediamo se sulla tabella web esiste ed è aggiornato:
•Lettura di ARPCHIMG impostando
Dato |
Descrizione |
RCHIMG-AZI |
Codice azienda |
RCHIMG-ID |
ID chiamata |
RCHIMG-PROG |
Progressivo di immagine nella galleria (IMG-DC-A2-PROG) |
•Quindi se il record esiste e:
oRCHIMG-AREA-AGG-DATA = ARX-DA-DATA
oRCHIMG-AREA-AGG-ORA = ARX-DA-ORA
▪Significa che l'allegato è già presente e aggiornato, quindi impostare RCHIMG-AREA-FL-AGG = "S" e leggere il prossimo record
Altrimenti proseguire: estrazione documento: chiamata a COGU06 con i parametri:
Dato |
Descrizione |
U06-OPE |
"Estrai-da-doc" |
U06-FL-INTERNO |
"D" |
U06-TIP-DOC |
"A2" |
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 ARPCHIMG:
Nome campo |
Note |
RCHIMG-AZI |
Codice azienda |
RCHIMG-ID |
RCIT-ID-CHIAMATA |
RCHIMG-PROG |
Progressivo di immagine nella galleria (IMG-DC-A2-PROG) |
RCHIMG-DES |
IMG-OGGETTO |
RCHIMG-NOME |
U06-FILE |
RCHIMG-AREA-AGG-DATA |
ARX-DA-DATA |
RCHIMG-AREA-AGG-ORA |
ARX-DA-TIME |
RCHIMG-AREA-FL-AGG |
"S" |
|
•Trasferimento file sul server WEB, usando la subroutine di trasferimento FTP già usata per gli allegati di Assist, vedi SWA005:
oDA: EXT-TMP-DIR/U06-FILE
oA: vedi SWA005
N.B. configurare la seguente nuova configurazione con i parametri del server FTP e le path come quelle di SWA005:
"areaapp" - "swa004-codice-server-ftp" vedere anche le cfg previste per swa024
"ass-chiam" esporta-galleria-chiamata" = S
B.4.3 - Controllo allegati non presenti sul gestionale
Eseguire un comando SQL con cui marcare come cancellati tutti i record relativi alla chiamata in elaborazione in corso non aggiornati
in pratica il comando SQL corrisponde a
"UPDATE arpchimg SET rchimg_area_fl_canc = 'C' WHERE rchimg_azi = azienda AND rchimg_id = rcit_id_chiamata AND rchimg_area_fl_agg = 'N'"
B.5 - Geomapping dei nuovi clienti/nominativi
Se durante l'elaborazione è stata effettuata l'esportazione di un cliente o prospect, si dovrà effettuare una chiamata a BROWSER, impostando:
Nome campo |
Note |
BRWS-OPE |
"OPEN-PAGINA" |
BRWS-PAGINA |
https://kpngate.es2000.it/coordinate/geocoding_prospect.php?azienda=Cnnnnn |