COGX10 - Importazione Vetture da File Excel¶
Scopo¶
Caricamento batch dell'archivio BCVETTUR a partire da un file Excel (.xls) generato esternamente. Il programma converte il file Excel in formato testo delimitato tramite il sottoprogramma ESTRXLS, poi lo scorre riga per riga e inserisce/aggiorna i record in BCVETTUR.
Supporta due tipi di importazione:
- "V" Vetture Disponibili: importazione del parco proprio; opzionalmente cancella tutte le vetture di tipo "V" gia' presenti prima di caricare le nuove
- "A" Vetture Assegnate: importazione di vetture assegnate alla data indicata; opzionalmente cancella tutte le vetture di tipo "A" con la stessa data prima di caricare le nuove
Posizioni menu¶
- Magazzino > Gestione Veicoli > Commerciale > Importazione Vetture
File e Tabelle¶
| File | Copybook | Utilizzo |
|---|---|---|
| FEURTAB | cogfiles.cpy | Tabella file di sistema |
| BCVETTUR | (da cogx10.select Screens) | Anagrafica vetture (lettura/scrittura/cancellazione) |
| FILE-ASC | (inline) | File ASCII di transito generato da ESTRXLS a partire dal file Excel; path: <ext-tmp-dir>/import.txt |
Copybook¶
Working storage¶
cogx10.wrk(generata da Screens)wgrave.cpy,wnscr.cpy,wopenf.cpy,wstato.cpy,cogazien.cpyopensave.def(dialogo selezione file)utilncnf.cpy(RNEWCONF)utils52.cpy(calendario)utilestrxls.cpy(chiamata ESTRXLS)
Linkage¶
wcont.cpy,wcont1.cpy
Procedure¶
grave.cpy,mmmask.cpy,stato.cpy,stato1.cpy,opengen.cpy,winmsg.cpycogx10.prc(generato da Screens)- Chiave:
bcvettur.k03(chiave alternata su tipo + targa)
CALL¶
| Programma | Scopo |
|---|---|
| ESTRXLS | Converte file Excel in file ASCII delimitato |
| RNEWCONF | Lettura configurazione (gruppo "cogesys") |
| C$OPENSAVEBOX | Dialogo di selezione file (Windows) |
| C$TOUPPER | Normalizzazione in maiuscolo dei campi alfanumerici |
| COGS52 | Calendario (su tm-data) |
Configurazione RNEWCONF¶
Gruppo: cogesys
| Chiave | Campo | Descrizione |
|---|---|---|
| delimitatore-colonne-excel | tm-cfg-delimiter | Carattere usato da ESTRXLS come separatore di colonne nel file generato |
Logica di elaborazione¶
Parametri di input (tab-maschera)¶
tm-tipo-file: "V" Disponibili / "A" Assegnate (default "A")tm-data: data caricamento (obbligatoria per "A"; per "V" forzata adatasise disabilitata)tm-fl-canc: "S/N" — cancella precedenti prima di importaretm-nome-file: path completo del file Excel
Flusso principale¶
apri: init, apertura file, lettura azienda, lettura configurazione delimitatorea4/a-tm-*: accept parametria-inizio-dati: conferma F3, conversione Excel→ASCII viaESTRXLS, riaperturafile-asc- Se
tm-fl-canc = "S":cancella-dati(per "V": tutte di tipo "V") oppurecancella-x-data(per "A": tutte di tipo "A" alla data) carica-dati: loop di lettura sufile-asc, parsing conunstringsul delimitatore, scrittura/aggiornamento su BCVETTUR
Parsing del file ASCII¶
Diverso a seconda di tm-tipo-file:
- "A" Assegnate: 27 campi (numero record, pratica, societa', targa, marca, modello, data imm., colore, eurotax + filler, valori commerciali alternati con filler vuoti, sconto, prezzo finale, prezzo IVA)
- "V" Disponibili: 13 campi (tipo IVA, modello, colore, targa, telaio, km attuali, data segnalazione, data immatricolazione, danni, deprezzamento, valore riferimento, info, descrizione Bercar). Per le Disponibili la marca viene estratta come prima parola del modello.
La prima riga del file viene scartata (intestazione).
Targa provvisoria (proponi-targa)¶
Se nel record letto la targa e' vuota: assegna progressivo decrescente con prefisso fisso, cercando l'ultimo gia' presente:
- Disponibili (V): prefisso "##" su 2 caratteri + 6 cifre numeriche
- Assegnate (A): prefisso "**" su 2 caratteri + 6 cifre numeriche
Gestione duplicati¶
rd-bcvettur-chia3su (tipo, targa): se trovato →fl-modifica = "S"→ riscrittura viarwr-bcvettur- Se non trovato → inserimento via
wr-bcvetturcon nuovo progressivobvt-proge chiave randombvt-randomgenerata conFUNCTION RANDOM(timesis) * 99999999per garantire unicita' - In caso di conflitto chiave random in scrittura (
stato2 = "2"): rigenerazione random e retry
Per "A" Assegnate (importazione dati da file Bercar)¶
Se la vettura non e' gia' presente tra le Assegnate ma esiste tra le Disponibili con stessa targa, vengono recuperati i dati extra (info, accessori) dalle Disponibili e riportati sulla nuova Assegnata.
Conversione date¶
I campi data nel file Excel sono in formato gg/mm/aaaa (10 caratteri); vengono ricomposti con substring (7:4), (4:2), (1:2) su w-data formato AAAAMMGG.
Normalizzazione campi¶
Tutti i campi testuali significativi vengono passati a C$TOUPPER prima della scrittura.
Limiti¶
- Nessun limite esplicito al numero di vetture caricabili
- Errore "File di import non trovato!!" se la conversione ESTRXLS fallisce o
file-ascnon e' apribile