Vai al contenuto

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$PARAMSIZE su util-agprg; output rediretto al log Aglancio tramite gesdebug. 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

  1. 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).
  2. Rilevamento modalita' Aglancio: se agprg-id-processo valido, modalita' batch.
  3. Setup log debug: gesdebug-loadconf, gesdebug-apri-principale.
  4. Elaborazione (b-elaborax2-sca-interventi):
  5. Scan ASNINTE2 chiave2 (data+ora aggiornamento) partendo da b-ue-data/b-ue-ora (= valori precedenti dalla configurazione).
  6. 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-documento su prestazioni e materiali ASNINDET), determinazione azienda tecnico (COGAZGRP).
  7. x4-sca-produzione: per ogni record ASNPRODT collegato all'intervento → BIAPRODT.
  8. Aggiornamento configurazione (fine): scrive b-ua-data/b-ua-ora sulle chiavi RNEWCONF per la prossima esecuzione (rd-cogcnf + rwr-cogcnf o wr-cogcnf).
  9. 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:

  1. Aggiorna b-ua-data/b-ua-ora con acit2-da-data/acit2-da-time (l'ultimo record processato definisce il punto di ripresa).
  2. Filtro debug: se tm-cfg-debug-chiamata > 0 e acit-id-chiamata <> tm-cfg-debug-chiamata, salta.
  3. Validazioni: scarta interventi senza ASNINTES o ASNCHTES corrispondenti (log scrittura gesdebug-write-errore).
  4. Cancellazione precedente: sql-delete-by-bintr-id-intervento.
  5. Calcolo progressivo BI: sql-carica-max-progr-inter-metodo2 (SELECT MAX su bintr_id_progr) + 1.
  6. Costruzione bintr-rec:
  7. Clienti assist e fatturazione (fallback fatturazione=assistenza se zero).
  8. Tipo attivita', priorita', stato (eccezione Endonova: usa acht-situazione o "A" se vuoto).
  9. Contratto: lettura ASNCNTES per rif-contratto.
  10. Date: chiamata, scadenza, assegnazione, intervento (con fallback datasis o data-chiam se zero).
  11. Targa, commessa, sottocommessa.
  12. Oggetto chiamata: converte acht-oggetto via GESSTR (CONV-TESTO-X-ESPORT).
  13. Destinazione: priorita' acit-dst-* su acht-dst-*.
  14. Brand, gruppo azienda.
  15. Tipo/causale esito: se acit-stato = "C" e acit2-tipo-esito vuoto, forza "S". Per Consorzio Progresso (k-personal-consorzio-progresso) con tipo "S" e stato chiuso, forza causale "PO01".
  16. Tecnico, magazzino.
  17. Bolla e fattura collegate: scan ASNINDMG con tip "F" → stringifica chiave bolla in bintr-bolla; per ogni bolla, scan COGRACCO chiave2 → stringifica chiavi fattura in bintr-fattura.
  18. Situazione (bintr-situaz): mappa acit-stato (A/C/Z/P) su lettera, "D" se mancano stato o tecnico.
  19. Lavorazione esterna (b1-set-fl-lav-est):
  20. acht-classe = "L": scan ASNINDMG con tip "F"; "S" se trovato un DDT verso fornitore.
  21. acht-classe = "C": sempre "S" (chiamata standard = esterna).
  22. Importo totale documento (calc-tot-documento): scan ASNINDET due volte:
    • Prima sulle prestazioni (tip "P"): somma acid-importo se acid-fl-fat in {S,G,X,D,F} e merce <> " 00000". Flag w-ricevuta-fiscale se fl-fat = "F".
    • Poi sui materiali (tip "M"): stessa logica + materiali fl-fat="N" se ricevuta fiscale = "S".
  23. Azienda tecnico: chiama ASNS21 per cercare il fornitore listino del tecnico alla data assegnazione; scan COGAZGRP chiave3 per azg-codbintr-az-cod-tec.
  24. WRITE BIAINTTR via sub-cfg-wr-biainttr.
  25. Produzione (x4-sca-produzione): per ogni record ASNPRODT con aptn-id-intervento = acit-id, scrive BIAPRODT (con baptn-importo e baptn-prd-importo negati se aptn-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.