Importazione articoli

Creato il: 03.12.2014
Supponiamo che il fornitore ABC ci invia il suo listino in formato CSV simile al seguente:

CODICE;DESCRIZIONE
1234;ARTICOLO XYZ
1235;ARTICOLO JKL
1236;ARTICOLO GHI
1237;ARTICOLO 123
1239;ARTICOLO MNO
......

e supponiamo di voler importare questi articoli inserendo prima del codice articolo il nome del fornitore (ovvero vogliamo importare gli articoli in modo che vengano codificati automaticamente come ABC1234, ABC1235, ABC1236, ABC1237, ...)

Se creiamo un filtro di importazione come il seguente:
Utilizzando un filtro standard di questo tipo pero' gli articoli verrebbero codificati come 1234, 1235, 1236, ecc.
Quello che abbiamo bisogno di fare e' preelaborare il file di origine aggiungendo la stringa "ABC" all'inizio di ogni riga

Per fare questo possiamo utillizzare uno script di pre-processing come il seguente:

Option Explicit
 
Dim OutputData, FileArticoli, righe, i, campi
Dim NuovaRiga
Dim NuovoNomeFile
 
Rdy.LogForm_Show True
 
' Lettura file ricevuto dal fornitore
FileArticoli = Rdy.LoadStringFromFile(RowItem.InputFileName)
 
' inserimento su un array delle righe trovate sul file
righe = Split(FileArticoli, vbCrLf)
 
' Questa variabile conterra' il file rielaborato da passare al filtro di import
OutputData = ""
 
' scorre tutte le righe del file
For i=0 To UBound(righe)
   Rdy.LogForm_Progress i, UBound(righe)
 
   ' spezzo la riga in tanti campi separati (usando il ; come separatore)
campi=split(righe(i),";")
   If i=0 Then
       ' Sulla prima riga non faccio niente
Else
       ' Controllo che sulla riga siano presenti 2 o piu' campi
If UBound(campi)>=1 Then
           ' Aggiungo 'ABC' sul primo campo (che e' quello del codice articolo)
campi(0) = "ABC" & campi(0)
       End If
   End If
 
   ' Ricompongo la riga
NuovaRiga=join(campi, ";")
 
   ' Aggiungo la riga alla stringa di output
OutputData = OutputData & NuovaRiga & vbCrLf
Next
' Genero un nuovo nome di file temporaneo
NuovoNomeFile=RowItem.InputFileName & ".process.txt"
 
' Salvo la stringa di output sul nuovo file
Rdy.SaveStringToFile NuovoNomeFile,OutputData
 
' Passo il nuovo file elaborato alla procedura di import
RowItem.InputFileName=NuovoNomeFile
 
Rdy.LogForm_Hide


In questo modo il file di origine sara' formattato esattamente come ci serve per effettuare una importazione automatica

Login