Vai al contenuto

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.cpy
  • opensave.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.cpy
  • cogx10.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 a datasis e disabilitata)
  • tm-fl-canc: "S/N" — cancella precedenti prima di importare
  • tm-nome-file: path completo del file Excel

Flusso principale

  1. apri: init, apertura file, lettura azienda, lettura configurazione delimitatore
  2. a4 / a-tm-*: accept parametri
  3. a-inizio-dati: conferma F3, conversione Excel→ASCII via ESTRXLS, riapertura file-asc
  4. Se tm-fl-canc = "S": cancella-dati (per "V": tutte di tipo "V") oppure cancella-x-data (per "A": tutte di tipo "A" alla data)
  5. carica-dati: loop di lettura su file-asc, parsing con unstring sul 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-chia3 su (tipo, targa): se trovato → fl-modifica = "S" → riscrittura via rwr-bcvettur
  • Se non trovato → inserimento via wr-bcvettur con nuovo progressivo bvt-prog e chiave random bvt-random generata con FUNCTION RANDOM(timesis) * 99999999 per 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-asc non e' apribile