Vai al contenuto

SWN123 - Giorni di non disponibilità

Nome programma SWN123 Linkage section UTILAGPRG - Linkage comune Id processo: 123 Nome processo: GIORNI-NON-DISP Tabelle principali gestite

AREA AREAGATE Direzione
CRMAGFES
CRMUSERS
ARPGGNONDISP ------>

Logica generale Esportazione dei giorni di non disponibilità per operatore. Esportazione Esportazione di tutti i record effettivamente modificati (con dati variati). Importazione Non prevista Configurazioni possibili

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

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: ARPGGNONDISP Se fallita inviare una Segnalazione critica e chiudere. B - Esportazione informazioni aggiornate * ID SINCRO: gestito * Esportazione differenziale: gestita ma non ottimizzata * 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 "ARPGGNONDISP-O"; se il record non esiste, crearlo impostando

Dato Contenuto
A_SYN_AZIENDA Codice azienda
A_SYN_TABELLA "ARPGGNONDISP-O"
A_SYN_DA_GES_DATA 0
A_SYN_DA_GES_ORA 0
A_SYN_DA_ID_SINCRO 1
A-SYN-VERSIONE 2

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.2 - Ricerca record da esportare Se la configurazione arpggnondisp-giorni-ricalcolo vale 0, non effettuare nessuna elaborazione B.2.1 Ricerca record da esportare

Tipo di elaborazione Condizione Cosa fare
Singolo record AGPRG-KEY <> " " Non prevista
Esportazione totale AGPRG-ESPORTA-TUTTO = "S" Vedi descrizione successiva
Esportazione standard
Pulizia AGPRG-OPE = "PULIZIA" Non prevista

A.2 Scansione operatori Scorrere CRMUSERS. Considerare solo gli operatori che hanno CRU-LIV numerico e > 0 e ripetere il giro descritto per ciascun operatore. A.2.1 Ricerca record da esportare Per ciascun operatore configurato nel CRM dovremo estrarre le date di non disponibilità per 1 anno a partire dalla data odierna (ignoriamo i giorni passati). Quindi usando DTPRG e PRGDT partendo da oggi ripetere il ciclo 365 volte. A.2.1.1 Ricerca operatore/giorno Fare una chiamata a GESDATE per ottenere informazioni relative al giorno in elaborazione:

Dato Contenuto
GESDATE-OPE "INFO-DATA"
GESDATE-DATA-IN Data da esaminare

Se GESDATE-FESTA = "S", allora si esegue B - Operatore non disponibile. Altrimenti proseguire. Scorrere CRMAGCAL per la combinazione operatore/giorno:

Dato Contenuto
CCA-OPE Operatore in elaborazione
CCA-DATA data in elaborazione
  • Se non esiste nessun record: B - Operatore non disponibile
  • Se esiste almeno un record, scorrere i record per operatore/giorno finchè non se ne trova uno con CCA-FL-DISP = "S": questo significa che l'operatore è disponibile. Quindi, se
    • Trovato: C - Operatore disponibile
    • Non trovato: B - Operatore non disponibile B - Operatore non disponibile Cercare l'esistenza di un record su ARPGGNONDISP:
Dato Contenuto
A-GGND-AZIENDA azienda
A-GGND-APPLICAZIONE "O"
A-GGND-OPERATORE Operatore in elaborazione
A-GGND-ANAGRAFICA " "
A-GGND-DST-ID-TIP " "
A-GGND-DST-ID-IDX 0
A-GGND-DATA data in elaborazione

Se il record: * Non esiste: inserirlo * Esiste: se è stata forzata la "disponibilità da Scheduler", deve avere la priorità; quindi, se A-GGND-FORZATURA-SCHEDULER contiene: * \= "D": non facciamo nulla * <> "D": impostiamo la non disponibilità; quindi se A-GGND-VAL contiene: * \= "C": variarlo * <> "C": non fare nulla I dati da aggiornare in caso di inserimento/variazione sono

Dato Contenuto
A-GGND-VAL " "
A-GGND-ID-SINCRO Primo id sincro libero
A-GGND-NOTE " "

C - Operatore disponibile Cercare l'esistenza di un record su ARPGGNONDISP:

Dato Contenuto
A-GGND-AZIENDA azienda
A-GGND-APPLICAZIONE "O"
A-GGND-OPERATORE Operatore in elaborazione
A-GGND-ANAGRAFICA " "
A-GGND-DST-ID-TIP " "
A-GGND-DST-ID-IDX 0
A-GGND-DATA data in elaborazione

Se il record esiste, verifichiamo se è stata forzata la "non disponibilità da Scheduler"; questa deve avere la priorità; quindi se A-GGND-FORZATURA-SCHEDULER è: * \= "N": non facciamo nulla * <> "N": lo marchiamo come cancellato (annulla la non disponibilità):

Dato Contenuto
A-GGND-VAL "C"
A-GGND-ID-SINCRO Primo id sincro libero

Se invece non esiste, non fare nulla B.9 - Aggiornamento id syncro Al termine dell'elaborazione, aggiornare il record APSTATOSYN:

Dato Contenuto
A-SYN-AZIENDA Codice azienda
A-SYN-TABELLA "ARPGGNONDISP-O"
A-SYN-DA-GES-DATA
A-SYN-DA-GES-ORA
A-SYN-DA-ID-SINCRO Ultimo id sincro + 1
A-SYN-VERSIONE 2

Estratto da documentazione interna ClickUp