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