SWC034 - Scaricamento Tabelle, Budget e CO.AN. Scuola Edile per SW-ING¶
Intestazione¶
| Campo | Valore |
|---|---|
| Programma | SWC034 |
| Titolo | Scuola Edile: Scaricamento Tabelle, Budget e CO.AN. x SW-ING |
| Tipo | Worker di estrazione BI (non a menu in prog.txt) |
| Verticalizzazione | Scuola Edile |
| ID processo Aglancio | 50035 (k-id-processo) |
| Tabella stato sincro | SWC034 (k-tabella-statosyn) |
Scopo e logica generale¶
SWC034 estrae le anagrafiche di controllo di gestione della verticalizzazione Scuola Edile e le scrive nell'archivio mirror del datamart PostgreSQL BI SW-ING (tabelle bin* il cui schema e' creato da SWCINIT). E' il corrispettivo, per la Scuola Edile, di SWC010 (BINCONSU) e SWC033 (BINORDIN).
Scrive quattro tabelle mirror (aggiunte a SWCINIT ai numeri 128-131):
| Fase | Tabella destinazione | Contenuto |
|---|---|---|
| FASE1 | binseres |
Responsabili Centri di Costo |
| FASE2 | binserag |
Raggruppamenti gerarchici (4 livelli) |
| FASE3 | binsecen |
Centri (merci/prestazioni) con gerarchia e responsabile |
| FASE4 | binsebud |
Codici Budget |
Il programma supporta solo backend Postgres (tm-cfg-bin-tipo = "P"): la configurazione segnala errore per qualunque altro valore.
Modalita' di esecuzione:
- Interattiva: l'operatore avvia dalla maschera; contatori
e-tm-letti/e-tm-scrittia video per fase. - Batch (chiamata da Aglancio): rilevata via
C$NARG/C$PARAMSIZEsul parametroutil-agprg; l'output e' rediretto al log Aglancio tramitegesdebuge lo stato del processo e' aggiornato suARPSTPRC. In modalita' batch, ogni 30 secondi viene chiamatoSWLIVE(keepalive) per evitare che i motori di Aglancio terminino il processo (PCASE-3896).
Flusso principale¶
- Inizializzazione (
apri): rilevamento parametro Aglancio (C$NARG/C$PARAMSIZE), controllo abilitazione (ctr-abil), init programma, caricamento lingua, lettura azienda (rd-azi), apertura file, divisa conto (get-divisa-conto), lettura configurazione (x99-src-cfg+x99-src-cfg-agl), apertura debug/log e connessione BI (init-bin-sub-tm-cfg-bin-tipo). - File di transito
cogtrans: nome temporaneo costruito conext-tmp-dir+wo-oper; apertura in output poi i-o (usato come appoggio per i raggruppamenti gerarchici). - Maschera (solo interattivo): titolo "Scuola Edile:Scarica Tabelle,Budget e CO.AN."; attesa conferma F3.
- Elaborazione (
elabora):fase1→fase2→fase3→fase4(vedi Logica di business). - Chiusura (
fine/z-chiudi): chiusura file e connessione BI,delete file cogtrans; in modalita' batch riapertura DB AreaGate e aggiornamento stato processo suARPSTPRC(sub-cfg-rd/wr/rwr-arpstprc), chiusura log.
File e tabelle acceduti¶
| File logico | Record | Modalita' | Uso |
|---|---|---|---|
| BINSERES | seres-rec |
I-O (BI) | Responsabili C.C. (output FASE1) |
| BINSERAG | serag-rec |
I-O (BI) | Raggruppamenti gerarchici (output FASE2) |
| BINSECEN | secen-rec |
I-O (BI) | Centri merci/prestazioni (output FASE3) |
| BINSEBUD | sebud-rec |
I-O (BI) | Codici Budget (output FASE4) |
| COGTABEL | euta-rec |
Input | Tabelle EurTab: tipo "TR" (responsabili, FASE1), tipo "TP" (codici budget, FASE4) |
| COGANRAG | arag-rec |
Input | Raggruppamenti analitici (classe + tip "R"/"M"); risalita gerarchica arag-id-padre |
| COGMERCI | mer-rec |
Input | Anagrafica merci → centri (FASE3) |
| COGMERA4 | ma4-rec |
Input | Dati aggiuntivi merce (data avvio, responsabile C.C., nr parte, nr ore) |
| COGRACMC | rcm-rec |
Input | Raccordo codici merce (chiave2) → secen-cod-ava |
| COGTRANS | trs-rec |
I-O (temp) | File di transito per i raggruppamenti |
| ARPSTPRC | a-stpr-rec |
I-O | Stato processi Aglancio (solo batch) |
| FEURTAB | cogfiles |
Input | File parametri Eurocoge |
Copybook inclusi¶
Screen Designer¶
swc034.select,swc034.fd,swc034.wrk,swc034.decla,swc034.prc(maschera e file)
Strutture dati / FD¶
cogfiles.cpy(FD feurtab),arpstprc.cpybinseres.cpy,binserag.cpy,binsecen.cpy,binsebud.cpy(record BI)arpstprc-sql-ws.cpy(interfaccia SQL ARPSTPRC)k-u10.cpy,k-personal.cpy(costanti)
Working-storage / utilita'¶
utilgesdebug.cpy(gestione debug/log),utilswgets.cpy(interfaccia SWGETS)
Linkage¶
stringheeutil-agprg(parametri di lancio;util-agprgpresente solo se chiamato da Aglancio)
Programmi chiamati (CALL)¶
| Programma | Scopo |
|---|---|
| RNEWCONF | Lettura configurazione (2 chiamate: x99-src-cfg, x99-src-cfg-agl) |
| SWGETS | Recupero stringa di connessione AreaGate (modalita' batch) |
| COGS62 | Calcolo differenza in secondi tra timestamp (per il keepalive SWLIVE) |
| SWLIVE | Keepalive processo Aglancio (ogni 30 secondi in modalita' batch) |
| PRGDT / DTPRG | Conversione data/progressivo |
| C$NARG / C$PARAMSIZE / C$CARG | Verifica presenza del parametro util-agprg |
Configurazione (RNEWCONF)¶
Chiamata x99-src-cfg (7 chiavi):
| # | Gruppo | Chiave | Campo interno | Descrizione |
|---|---|---|---|---|
| 01 | abilita | bin-tipo | tm-cfg-bin-tipo |
Tipo connessione BI: deve essere "P" (Postgres) |
| 02 | abilita | bin-db-path | tm-cfg-bin-path |
(non usato per Postgres) |
| 03-05 | abilita | bin-db-conn-string (1-3) | tm-cfg-bin-conn-string |
Stringhe di connessione Postgres |
| 06 | abilita | bin-db-log-level | tm-cfg-bin-log-level |
Log level connessione |
| 07 | bint | swc034-classe-raggruppamento | tm-cfg-classe-raggruppamento |
Classe di raggruppamento analitico (COGANRAG) da usare per la gerarchia dei centri |
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 |
La stringa di connessione AreaGate e' restituita da SWGETS.
Logica di business¶
Ogni fase azzera tm-letti/tm-scritti, scorre la tabella sorgente e scrive il record BI corrispondente (WRITE, con fallback RWR in caso di duplicato). Il codice azienda scritto e' sempre az-personal; data-agg = datasis (data sistema).
FASE1 — Responsabili Centri di Costo → BINSERES¶
Scan di COGTABEL con euta-tipo-x = "TR" (esce al cambio tipo). Per ogni voce scrive binseres: seres-cod = euta-cod, seres-des = euta-tr-des.
FASE2 — Raggruppamenti gerarchici → BINSERAG¶
Estrazione su 4 livelli da COGANRAG, filtrata su arag-classe = tm-cfg-classe-raggruppamento e arag-tip = "R". Per ogni livello scrive binserag con serag-cod, serag-des e serag-livello. Il file di transito cogtrans e' usato come appoggio per la costruzione della gerarchia.
FASE3 — Centri (merci/prestazioni) → BINSECEN¶
Scan di COGMERCI. Per ogni merce con ma4-data-avvio <> 0 (dati aggiuntivi COGMERA4) scrive binsecen:
secen-codice = mer-chia(gru/sot/cod),secen-des = mer-descr.secen-cod-avada COGRACMC (raccordo, chiave2); assente ⇒ spazi.- Gerarchia livelli 1-4: risalita ricorsiva su COGANRAG partendo dal codice merce (
arag-tip = "M"per il livello 4, poiarag-tip = "R"risalendo conarag-id = arag-id-padredel livello inferiore) →secen-livello4..1. secen-respo = ma4-respo-cc,secen-nr-parte = ma4-nr-parte,secen-nr-ore = ma4-nr-ore.
FASE4 — Codici Budget → BINSEBUD¶
Scan di COGTABEL con euta-tipo-x = "TP" (esce al cambio tipo). Per ogni voce scrive binsebud: sebud-cod = euta-cod, sebud-des = euta-tp-des.
Note¶
- ID processo Aglancio: 50035; tabella stato sincronizzazione:
SWC034. - Solo backend Postgres supportato; in assenza di stringa di connessione o con
bin-tipodiverso da "P" il programma segnala e termina (z-chiudi). - Le quattro tabelle
bin*sono create/allineate da SWCINIT (n. 128-131); il presente programma le popola. - Il file di transito
cogtranse' temporaneo (nome conext-tmp-dir+wo-oper) e viene cancellato in chiusura. - In modalita' batch il keepalive
SWLIVEviene invocato all'interno dei loop di fase quando sono trascorsi piu' di 30 secondi dall'ultima chiamata (differenza calcolata con COGS62).