SWA053 - Esportazione giorni di non disponibilità¶
Logica generale Esportazione dei giorni di non disponibilità su ARPGGNONDISP, specificatamente al tipo "O". I dati vengono determinati da CRMAGCAL. Al momento è previsto solo l'esportazione da gestionale. Il programma terrà conto anche delle forzature fatte da scheduler (A-GGND-FORZATURA-SCHEDULER), che hanno priorità rispetto alle impostazioni del gestionale. Configurazioni possibili
| Gruppo | Parametro | Note |
|---|---|---|
Elaborazione A - Esportazione Su POSTGRES, 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 |
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) A.1 Ricalcolo calendario Per essere certi di avere il calendario corretto, prima di eseguire l'elaborazione vera e propria effettuare una chiamata a CRM120:
| Dato | Contenuto |
|---|---|
| CRM120-CALLER | k-program-id |
| CRM120-CALLED | "CRM120" |
| CRM120-OPE | 0 |
| CRM120-DATA-MIN | Oggi |
| CRM120-DATA-MAX | Oggi + 1 anno |
| CRM120-BATCH-MODE | "S" |
Questo ricostruisce il contenuto di CRMAGCAL per il periodo in corso. 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. D Aggiornamento id sincro Al termine dell'elaborazione, aggiornare il record APSTATOSYN:
| Dato | Contenuto |
|---|---|
| A-SYN-AZIENDA | Codice azienda |
| A-SYN-TABELLA | "ARPGGNONDISP-O" |
| A-SYN-DA-ID-SINCRO | Ultimo ID sincro aggiornato |
Estratto da documentazione interna ClickUp