SWCL02 - Esportazione Taglio Dati Lavorazioni Manuali per SW-ING¶
Intestazione¶
| Campo | Valore |
|---|---|
| Programma | SWCL02 |
| Titolo | Taglio - esportazione dati lavorazioni manuali |
| Posizione menu | Statistiche > Estrazione dati vs B.I.Swing > Cicli di lavorazione > Taglio dati manuali |
Scopo e logica generale¶
SWCL02 estrae i consuntivi delle lavorazioni manuali di taglio (TGLLCONS) per il periodo selezionato e i relativi preventivi di taglio (cesoia/punzonatura/piegatura presenti in TGLPRRIG) per ogni commessa toccata. I dati vengono scritti su BINTGLLCONS (consuntivi) e BINTGLLPREV (preventivi).
Il programma funziona in due modalita':
- Interattiva: l'operatore indica mese/anno di inizio e fine; la finestra dei consuntivi e' espansa al primo del mese di inizio - ultimo del mese di fine.
- Batch (chiamata da Aglancio): il periodo e' calcolato sottraendo
tm-cfg-num-mesidalla data di sistema; l'output e' rediretto al log Aglancio tramitegesdebug.
Per ogni periodo viene cancellata la finestra corrispondente in BINTGLLCONS (DELETE per data e azienda). Per i preventivi, la cancellazione e' per singola commessa: ogni commessa che ha consuntivi nel periodo viene prima cancellata da BINTGLLPREV e poi ricostruita dalle righe d'ordine.
Flusso principale¶
- Inizializzazione (
m-00): rilevamento modalita' Aglancio,ctr-abil, lettura azienda, apertura file, lettura configurazioni RNEWCONF (x99-src-cfg,x99-src-cfg-agl), apertura log gesdebug, apertura connessione BI. - Setup maschera (interattivo): titolo "Swcl02: Taglio - esportazione dati lavorazioni manuali".
- Accept parametri (
a-tm-aai,a-tm-mmi,a-tm-aa,a-tm-mm): anno e mese di inizio/fine. - Calcolo periodo (
a222-ok): - Modalita' batch o
w-richiedo-date <> "D": anno/mese iniziale = data sistema menotm-cfg-num-mesi. - Modalita' interattiva: usa i valori inseriti dall'operatore.
data-ini-ctr = AAAAMM01;data-fin-ctr = AAAAMMGGcon gg = ultimo del mese (28/29/30/31 in base a anno bisestile).- Elaborazione (
b-elabora): b1-cancella: DELETE su BINTGLLCONS per periodo + azienda.open-file-transito: crea filecogtranstemporaneo per accumulare le commesse toccate.- Scansione TGLLCONS su chiave4 (data inizio) nel periodo, esegue
estrai-tgllcons. - Scansione COGTRANS per le commesse accumulate, esegue
estrai-tgllprev. - Chiusura (
fine/z-chiudi): chiusura e cancellazione del file transito, chiusura connessione BI, aggiornamento ARPSTPRC se batch, chiusura log.
File e tabelle acceduti¶
| File logico | Record | Modalita' | Uso |
|---|---|---|---|
| BINTGLLCONS | btlco-rec | I-O | Consuntivi taglio BI (output principale) |
| BINTGLLPREV | btlpr-rec | I-O | Preventivi taglio BI (output, accumulato per commessa) |
| TGLLCONS | tlco-rec | Input | Consuntivi lavorazioni taglio (chiave4 su data inizio) |
| COGLAVOR | cla-rec | Input | Lavorazioni commessa (chiave6 per ordine collegato, chiave4 per commessa) |
| COGTESOR | tor-rec (tar-rec) | Input | Testate ordini (per verificare tipo speciale) |
| COGTORAG (alias cogtesor) | tar-rec | Input | Testata raggruppamento ordini |
| COGRIGOR | ror-rec | Input | Righe ordini (scansione per preventivi) |
| TGLPRRIG | trpr-rec | Input | Righe preventivo taglio (chiave2 su testata+riga d'ordine) |
| TGLPRRIP | - | Input | Righe preventivo taglio (definito in select, non usato in elaborazione) |
| CLCANAMA | mac-rec | Input | Anagrafica macchine (per associare lavorazione alla macchina di taglio) |
| COGTRANS | trs-rec | I-O | File temporaneo per accumulare le commesse toccate dai consuntivi |
| ARPSTPRC | a-stpr-rec | I-O | Stato processi Aglancio (solo modalita' batch) |
| FEURTAB | - | Input | Tabella file Eurosystem |
| LOGFILE | - | Output | (Inutilizzato, scritture commentate) |
Il file COGTRANS e' un file ISAM temporaneo (#$swcl02-<operatore>-<datasis><orasis>) in ext-tmp-dir, cancellato a fine elaborazione.
Copybook inclusi¶
Screen Designer¶
| Copybook | Contenuto |
|---|---|
swcl02-01.scr |
Maschera principale |
swcl02.select |
SELECT dei file (clcanama, cogtesor, cogrigor, coglavor, cogtorag, tglprrig, tgllcons, tglprrip) |
swcl02.fd |
FD dei file |
swcl02.wrk |
Working storage maschera |
swcl02.decla |
Declaratives |
Strutture dati¶
| Copybook | Contenuto |
|---|---|
cogfiles.cpy |
FD feurtab |
bintgllcons.cpy/bintgllprev.cpy |
Record BIN* |
arpstprc.cpy |
Record ARPSTPRC |
logfile.cpy |
Record LOGFILE |
cogazien.cpy |
Dati azienda |
sql-decla-ws.cpy |
Working storage connessione SQL/BI |
bintgllcons-sql-ws.cpy/bintgllprev-sql-ws.cpy |
Interfacce SQL |
arpstprc-sql-ws.cpy |
Interfaccia SQL ARPSTPRC |
wstato.cpy/wgrave.cpy/wopenf.cpy/wnscr.cpy |
Working storage comuni |
Chiavi secondarie¶
| Copybook | Uso |
|---|---|
cogtrans.k01 |
Chiave primaria file transito |
tglprrig.k02 |
Accesso TGLPRRIG per testata+riga d'ordine |
coglavor.k04 / coglavor.k06 |
Accesso COGLAVOR per commessa / ordine |
tgllcons.k04 |
Accesso TGLLCONS per data inizio |
bintgllcons.k01 / bintgllprev.k01 |
Chiavi primarie tabelle BI |
arpstprc.k01 / arpstprc.k01-agg |
Chiavi ARPSTPRC |
Utility¶
| Copybook | Contenuto |
|---|---|
utilncnf.cpy |
Struttura parametri RNEWCONF |
utilgesdebug.cpy |
Gestione debug/log Aglancio |
utilswgets.cpy |
Interfaccia SWGETS |
utilagprg.cpy |
Interfaccia parametri Aglancio (in linkage e duplicato come util-2gprg per sondaggio dinamico) |
utilu18.cpy |
Interfaccia COGU18 |
Programmi chiamati (CALL)¶
| Programma | Scopo |
|---|---|
| RNEWCONF | Lettura configurazione (2 chiamate: src-cfg, src-cfg-agl) |
| SWGETS | Recupero stringa di connessione AreaGATE |
| C$NARG / C$PARAMSIZE | Verifica dinamica della presenza di util-agprg |
Configurazione (RNEWCONF)¶
x99-src-cfg (pacchetto "C")¶
8 chiavi:
| # | Gruppo | Chiave | Campo interno | Descrizione |
|---|---|---|---|---|
| 01 | abilita | bin-tipo | tm-cfg-bin-tipo |
Tipo connessione BI: "P" Postgres, "C" C-Tree, "D" DBmaker, "N" non abilitato |
| 02 | abilita | bin-db-path | tm-cfg-bin-path |
Percorso database file-based |
| 03-05 | abilita | bin-db-conn-string (idx 1-3) | tm-cfg-bin-conn-string (1-3) |
Stringa di connessione Postgres (3 segmenti) |
| 06 | abilita | bin-db-log-level | tm-cfg-bin-log-level |
Livello di log SQL |
| 07 | areaapp | cod-azienda | tm-cfg-cod-azienda |
Codice azienda usato per chiave BINTGLLCONS |
| 08 | areaapp | mesi-esportazione-taglio | tm-cfg-num-mesi |
Numero mesi precedenti per calcolo periodo automatico (modalita' batch) |
x99-src-cfg-agl (pacchetto "C", gruppo "areaapp")¶
3 chiavi (cod-azienda, db-log-level, AGLANCIO-ATTIVO) per la connessione ad AreaGATE e l'aggiornamento di ARPSTPRC.
Logica di business¶
Cancellazione preventiva consuntivi (b1-cancella)¶
DELETE su BINTGLLCONS per btlco_data BETWEEN $1 AND $2 e btlco_azi = $3, con $1/$2 = data-ini-ctr/data-fin-ctr e $3 = tm-cfg-cod-azienda. Eseguito tramite sql-execparams su statement preparato dinamicamente.
Estrazione consuntivi (estrai-tgllcons)¶
Per ogni record TGLLCONS nel periodo:
- Inizializza btlco-rec; copia tlco-id (id registrazione), tlco-ope-1 (operatore), commessa formattata "aaaa/nnnnnnnnnn", tlco-mac, tlco-lav, tlco-tip, tlco-data-ini, tlco-tempo.
- Per recuperare l'ordine di riferimento: scansione COGLAVOR chiave6 con cla-com-ann/cla-com-num dalla commessa del consuntivo; usa l'ultima riga letta per formattare btlco-ordine come "tipo/aaaa/numero/progressivo".
- Scrittura su BINTGLLCONS (sub-cfg-wr-bintgllcons).
- Salvataggio nel file COGTRANS della coppia (commessa, commessa formattata) per la successiva estrazione preventivi.
Estrazione preventivi (estrai-tgllprev)¶
Per ogni commessa in COGTRANS:
1. b2-cancella: DELETE su BINTGLLPREV per btlpr_com = <commessa formattata> (rimuove tutti i preventivi precedenti della commessa).
2. Legge COGLAVOR (chiave4) per recuperare l'ordine collegato alla commessa.
3. Legge COGTORAG (alias di COGTESOR) per verificare tar-tipo-speciale. Se non e' speciale, esegue x-scorri-cogrigor.
4. x-scorri-cogrigor: loop sulle righe COGRIGOR dell'ordine. Per ogni riga, x-scorri-tglprrig.
5. x-scorri-tglprrig: loop sulle righe TGLPRRIG (chiave2 = testata + progressivo riga). Per ogni riga preventivo: scrivi-pre-tgl-lam.
6. scrivi-pre-tgl-lam: scrive/aggiorna fino a 3 record BINTGLLPREV per riga preventivo, uno per ogni tipo di lavorazione di taglio attiva:
- Cesoia (trpr-fl-lc-eseguo = "S"): macchina trpr-lc-mac, tempo trpr-lc-tempo-lav.
- Punzonatura (trpr-fl-lp-eseguo = "S"): macchina trpr-lp-mac, tempo trpr-lp-tempo-lav.
- Piegatura (trpr-fl-lg-eseguo = "S"): macchina trpr-lg-mac, tempo trpr-lg-tempo-lav.
Per ogni tipo, viene letta CLCANAMA per ricavare mac-lav (la lavorazione associata alla macchina). Se il record BINTGLLPREV (chiave = azienda+commessa+tipo+lavorazione, da btlpr.k01) esiste, il tempo viene sommato; altrimenti viene creato.
Trasformazione campi¶
- Commessa formattata:
<aaaa>/<nnnnnnnnnn>inbtlco-comebtlpr-com. - Ordine formattato:
<tipo>/<aaaa>/<numero>/<progressivo>inbtlco-ordineebtlpr-ordine. - Tipo lavorazione: "L" (lavorazione) fisso per i preventivi taglio.