SWC022 - Scaricamento Interventi/Chiamate Tempo Reale per SW-ING¶
Intestazione¶
| Campo | Valore |
|---|---|
| Programma | SWC022 |
| Titolo | Scaricamento Interventi/Chiamate Tempo Reale archivi Assist 2.0 x SW-ING |
| Posizione menu | Statistiche > Estrazione dati vs B.I.Swing > Assist 2.0 > Interventi/chiamate tempo reale |
Scopo e logica generale¶
SWC022 estrae gli interventi assistenza aggiornati dall'ultima esecuzione e li scrive negli archivi BIAINTTR (interventi/chiamate) e BIAPRODT (produzione per tecnico) utilizzati dal sistema di Business Intelligence SW-ING.
A differenza degli altri SWC del bouquet, l'estrazione e' incrementale*: la finestra di scan e' calcolata dalla data/ora memorizzate nelle chiavi RNEWCONF swc022-data-inizio-scarico-interventi / swc022-ora-inizio-scarico-interventi, e al termine queste vengono aggiornate con la data/ora dell'ultimo record processato.
Modalita' di esecuzione:
- Interattiva: l'operatore avvia dalla maschera; vengono visualizzati contatori di record letti ed esportati.
- Batch (chiamata da Aglancio): rilevamento via
C$NARG/C$PARAMSIZEsuutil-agprg; output rediretto al log Aglancio tramitegesdebug. Tipicamente schedulato a intervalli brevi.
A differenza di SWC009/SWC021/SWC030/SWC032/SWC033, non esegue cancellazione massiva preventiva: cancella solo l'intervento corrente in BI prima di riscriverlo (sql-delete-by-bintr-id-intervento / sql-delete-by-baptn-id-intervento).
Flusso principale¶
- Inizializzazione (
m-00): controllo abilitazione, lettura azienda, apertura file, configurazione (x99-src-cfg,x99-src-cfg-agl), inizializzazione connessione BI (init-bin-sub-tm-cfg-bin-tipo). - Rilevamento modalita' Aglancio: se
agprg-id-processovalido, modalita' batch. - Setup log debug:
gesdebug-loadconf,gesdebug-apri-principale. - Elaborazione (
b-elabora→x2-sca-interventi): - Scan ASNINTE2 chiave2 (data+ora aggiornamento) partendo da
b-ue-data/b-ue-ora(= valori precedenti dalla configurazione). - Per ogni intervento: cancellazione record BIAINTTR/BIAPRODT esistenti, ricostruzione BIAINTTR con dati ASNINTES/ASNCHTES/ASNCNTES, ricerca bolla collegata (ASNINDMG tip "F" / COGRACCO), determinazione lavorazione esterna (
b1-set-fl-lav-est), calcolo importo totale (calc-tot-documentosu prestazioni e materiali ASNINDET), determinazione azienda tecnico (COGAZGRP). x4-sca-produzione: per ogni record ASNPRODT collegato all'intervento → BIAPRODT.- Aggiornamento configurazione (
fine): scriveb-ua-data/b-ua-orasulle chiavi RNEWCONF per la prossima esecuzione (rd-cogcnf+rwr-cogcnfowr-cogcnf). - Chiusura (
z-chiudi): cancel sub-CALL (GESSTR, ASNS07, COGS01F, COGL61), chiusura file, riapertura DB AreaGate e aggiornamento ARPSTPRC (solo batch).
File e tabelle acceduti¶
| File logico | Record | Modalita' | Uso |
|---|---|---|---|
| BIAINTTR | bintr-rec | I-O | BI: interventi/chiamate (output principale) |
| BIAPRODT | baptn-rec | I-O | BI: produzione per tecnico per intervento (output) |
| ASNINTE2 | acit2-rec | Input | Indice interventi per data/ora aggiornamento (chiave2) |
| ASNINTES | acit-rec | Input | Anagrafica interventi |
| ASNCHTES | acht-rec | Input | Anagrafica chiamate assistenza |
| ASNCNTES | acnt-rec | Input | Contratti assist (rif-contratto) |
| ASNINDMG | acim-rec | Input | Indici materiali/documenti intervento (tip "F" per bolla) |
| ASNINDET | acid-rec | Input | Dettaglio prestazioni/materiali intervento (calcolo importo) |
| ASNPRODT | aptn-rec | Input | Produzione per tecnico per intervento |
| COGRACCO | rac-rec | Input | Raccordo bolle-fatture (chiave2: bolla) |
| COGAZGRP | azg-rec | Input | Aziende del gruppo (chiave3: rif-fornitore, per derivare azienda tecnico) |
| ARPSTPRC | a-stpr-rec | I-O | Stato processi Aglancio (solo batch) |
| FEURTAB | - | Input | Tabella file Eurosystem |
Copybook inclusi¶
Screen Designer¶
| Copybook | Contenuto |
|---|---|
swc022.select |
SELECT dei file |
swc022.fd |
FD dei file |
swc022.wrk |
Working storage maschera |
swc022.decla |
Declaratives |
swc022.prc |
Procedure standard maschera |
Strutture dati¶
| Copybook | Contenuto |
|---|---|
cogfiles.cpy |
FD feurtab |
biainttr.cpy / biaprodt.cpy |
Record BIAINTTR / BIAPRODT |
arpstprc.cpy |
Record ARPSTPRC |
cogazien.cpy |
Dati azienda |
costanti-assist.cpy |
Costanti modulo Assist |
k-u10.cpy |
Costanti COGU10 |
k-personal.cpy |
Costanti personalizzazione (es. k-personal-consorzio-progresso, k-personal-endonova) |
k-tipi-cogtabel.cpy |
Costanti tipi COGTABEL |
wgrave.cpy / wnscr.cpy / wopenf.cpy / wstato.cpy |
Working storage comuni |
sql-decla-ws.cpy |
Working storage connessione SQL/BI |
biainttr-sql-ws.cpy / biaprodt-sql-ws.cpy |
Interfaccia SQL BIAINTTR/BIAPRODT |
arpstprc-sql-ws.cpy |
Interfaccia SQL ARPSTPRC |
Utility¶
| Copybook | Contenuto |
|---|---|
utilncnf.cpy |
Struttura parametri RNEWCONF |
utilgesdebug.cpy |
Gestione debug/log |
utilswgets.cpy |
Interfaccia SWGETS |
utilagprg.cpy |
Interfaccia Aglancio processo |
utilgesstr.cpy |
Conversione testo (export/import) |
utilasns07.cpy |
Interfaccia ASNS07 (calcolo costi) |
utilasns21.cpy |
Interfaccia ASNS21 (cerca tecnico, fornitore listino) |
utilcogl61.cpy |
Interfaccia COGL61 (prezzi acquisto/medio) |
utils52.cpy |
Interfaccia COGS52 |
utils62.cpy |
Interfaccia COGS62 (differenza tempo, per SWLIVE) |
utilu10.cpy |
Interfaccia COGU10 |
utils01f.cpy |
Interfaccia COGS01F (listino, in linkage) |
Programmi chiamati (CALL)¶
| Programma | Scopo |
|---|---|
| RNEWCONF | Lettura configurazione (2 chiamate: src-cfg, src-cfg-agl) |
| SWGETS | Recupero stringa di connessione SW-ING (modalita' batch) |
| COGS62 | Calcolo differenza tempo (per SWLIVE) |
| SWLIVE | Keepalive processo Aglancio (ogni 30 secondi in modalita' batch) |
| ASNS21 | Ricerca tecnico e fornitore listino per data intervento |
| GESSTR | Conversione testo (CONV-TESTO-X-ESPORT) per bintr-chiamata-oggetto |
| COGU10W | Formattazione/arrotondamento importi (paragrafo z-u10-cogl61-out-*) |
| C$NARG / C$PARAMSIZE | Verifica presenza parametro util-agprg |
Configurazione (RNEWCONF)¶
Chiamata x99-src-cfg:
| # | Gruppo | Chiave | Campo interno | Descrizione |
|---|---|---|---|---|
| 01 | abilita | bin-tipo | tm-cfg-bin-tipo |
Tipo connessione BI: "P", "C", "D", "N" |
| 02 | abilita | bin-db-path | tm-cfg-bin-path |
Percorso C-Tree |
| 03-05 | abilita | bin-db-conn-string (1-3) | tm-cfg-bin-conn-string |
Stringhe connessione Postgres |
| 06 | abilita | bin-db-log-level | tm-cfg-bin-log-level |
Log level connessione |
| 07 | bint | swc022-data-inizio-scarico-interventi | tm-cfg-da-ges-data |
Data ultimo scarico (incrementale) |
| 08 | bint | swc022-ora-inizio-scarico-interventi | tm-cfg-da-ges-ora |
Ora ultimo scarico (incrementale) |
| 09 | ASSIST | UM-PRESTAZIONI-A-TEMPO | tm-cfg-um-tempo |
UM prestazioni a tempo |
| 10 | ASS-VAL | TIPO-COSTO-STANDARD | tm-cfg-costo-standard |
Flag costo standard |
| 11 | BINT | SWA001-DEBUG-CHIAMATA | tm-cfg-debug-chiamata |
ID chiamata di debug (filtra elaborazione) |
| 12 | ass-contr | chiamate-programmate-sabato | tm-cfg-chiam-sabato |
Flag chiamate sabato |
Le chiavi 07 e 08 sono scritte (aggiornate) a fine elaborazione tramite rwr-cogcnf (o wr-cogcnf se non esistenti).
Chiamata x99-src-cfg-agl (modalita' Aglancio):
| # | Gruppo | Chiave | Campo interno | Descrizione |
|---|---|---|---|---|
| 01 | areaapp | cod-azienda | tm-cfg-cod-azienda |
Codice azienda AreaApp |
| 02 | areaapp | db-log-level | tm-cfg-bin-log-level-agl |
Log level connessione AreaGate |
| 03 | AREAAPP | AGLANCIO-ATTIVO | tm-cfg-aglancio-attivo |
"S" = nuova procedura Aglancio attiva |
Logica di business¶
Estrazione incrementale (x2-sca-interventi)¶
Scan ASNINTE2 chiave2 (data+ora aggiornamento) partendo da b-ue-data/b-ue-ora. Per ogni intervento:
- Aggiorna
b-ua-data/b-ua-oraconacit2-da-data/acit2-da-time(l'ultimo record processato definisce il punto di ripresa). - Filtro debug: se
tm-cfg-debug-chiamata > 0eacit-id-chiamata <> tm-cfg-debug-chiamata, salta. - Validazioni: scarta interventi senza ASNINTES o ASNCHTES corrispondenti (log scrittura
gesdebug-write-errore). - Cancellazione precedente:
sql-delete-by-bintr-id-intervento. - Calcolo progressivo BI:
sql-carica-max-progr-inter-metodo2(SELECT MAX subintr_id_progr) + 1. - Costruzione
bintr-rec: - Clienti assist e fatturazione (fallback fatturazione=assistenza se zero).
- Tipo attivita', priorita', stato (eccezione Endonova: usa
acht-situazioneo "A" se vuoto). - Contratto: lettura ASNCNTES per
rif-contratto. - Date: chiamata, scadenza, assegnazione, intervento (con fallback
datasisodata-chiamse zero). - Targa, commessa, sottocommessa.
- Oggetto chiamata: converte
acht-oggettovia GESSTR (CONV-TESTO-X-ESPORT). - Destinazione: priorita'
acit-dst-*suacht-dst-*. - Brand, gruppo azienda.
- Tipo/causale esito: se
acit-stato = "C"eacit2-tipo-esitovuoto, forza "S". Per Consorzio Progresso (k-personal-consorzio-progresso) con tipo "S" e stato chiuso, forza causale "PO01". - Tecnico, magazzino.
- Bolla e fattura collegate: scan ASNINDMG con tip "F" → stringifica chiave bolla in
bintr-bolla; per ogni bolla, scan COGRACCO chiave2 → stringifica chiavi fattura inbintr-fattura. - Situazione (
bintr-situaz): mappaacit-stato(A/C/Z/P) su lettera, "D" se mancano stato o tecnico. - Lavorazione esterna (
b1-set-fl-lav-est): acht-classe = "L": scan ASNINDMG con tip "F"; "S" se trovato un DDT verso fornitore.acht-classe = "C": sempre "S" (chiamata standard = esterna).- Importo totale documento (
calc-tot-documento): scan ASNINDET due volte:- Prima sulle prestazioni (tip "P"): somma
acid-importoseacid-fl-fat in {S,G,X,D,F}e merce <> " 00000". Flagw-ricevuta-fiscalese fl-fat = "F". - Poi sui materiali (tip "M"): stessa logica + materiali fl-fat="N" se ricevuta fiscale = "S".
- Prima sulle prestazioni (tip "P"): somma
- Azienda tecnico: chiama ASNS21 per cercare il fornitore listino del tecnico alla data assegnazione; scan COGAZGRP chiave3 per
azg-cod→bintr-az-cod-tec. - WRITE BIAINTTR via
sub-cfg-wr-biainttr. - Produzione (
x4-sca-produzione): per ogni record ASNPRODT conaptn-id-intervento = acit-id, scrive BIAPRODT (conbaptn-importoebaptn-prd-importonegati seaptn-segno = "D").
Aggiornamento punto di ripresa¶
Al termine, le chiavi RNEWCONF swc022-data-inizio-scarico-interventi e swc022-ora-inizio-scarico-interventi vengono aggiornate con b-ua-data/b-ua-ora (ultimo record processato), in modo che la prossima esecuzione riprenda da li'.
Keepalive Aglancio (SWLIVE)¶
In modalita' batch, ogni 30 secondi (verificati via COGS62) durante le scan principali, chiama SWLIVE per segnalare al motore Aglancio che il processo e' attivo (PCASE-3896, 18/06/2024).
Note¶
- ID processo Aglancio: 50022.
- Logica incrementale: a differenza degli altri SWC* di questo bouquet, non esiste full-refresh; la finestra di scan e' sempre dall'ultimo timestamp processato.
- Eccezioni personalizzazione: Endonova (
k-personal-endonova) per gestione stato/situazione; Consorzio Progresso (k-personal-consorzio-progresso) per causale esito.