Importazione categorie articoli

Creato il: 11.11.2022
Supponiamo che il fornitore ABC ci invii la sua struttura categorie articoli su un file di testo simile al seguente:
"COMPUTER SYSTEMS    ","00","* "
"DESKTOPS/TOWERS ","00","01"
"COMPUTER&MNTR UNITS ","00","02"
"SERVERS ","00","05"
"ULTRAMOBILE PC(UMPC)","00","10"
"PORTABLES/NOTEBOOKS ","00","11"
"TABLET PC PORTABLE ","00","12"
"TABLET PC HANDHELD ","00","14"
"TABLET PC ACCS ","00","16"
"DISPLAYS ","03","* "
"CRT 15IN MONITOR ","03","02"
"CRT 17IN MONITOR ","03","04"
"CRT 19IN MONITOR ","03","05"
"CRT MONITOR ACCS ","03","09"
"CRT 20IN MONITOR ","03","12"
"DIGITAL PHOTOFRAME ","03","13"
"PRINTER/COPIER/FAX ","07","* "
"MATRIX PRINTERS ","07","01"
"INKJET PRINTERS ","07","03"
"INKJET BUSINESS PRNT","07","04"
"INKJET ALL IN ONE ","07","06"
"INKJET PHOTO PRINTER","07","08"
"INKJET LFP ","07","11"
..........

Il primo campo contiene la descrizione della categoria.
Il secondo campo contiene il codice categoria principale.
Il terzo campo contiene il codice sottocategoria (contiene un asterisco se la categoria e' una categoria principale e non una sottocategoria).

Il file e' delimitato ma e' possibile trattarlo anche come file a larghezza fissa essendo i campi tutti della stessa larghezza.

Uno script di pre-processing come il seguente:
Option Explicit
 
Dim OutputData, FileArticoli, righe, i, NuovaRiga, NuovoNomeFile
Dim DescCategoria, NewCode, CodMain, CodSub
 
' 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)
   If Len(righe(i))>=32 Then
       DescCategoria = Trim(Mid(Righe(i),2,20))
       CodMain = Trim(Mid(Righe(i),25,2))
     CodSub = Trim(Mid(Righe(i),30,2))
       If (DescCategoria<>"")And(CodMain<>"") Then
           If CodSub="*" Then
               NewCode = CodMain
           Else
               NewCode = CodMain & CodSub
           End If
           NuovaRiga = NewCode & ";" & Replace(DescCategoria,";","") & ";" & CodMain
 
           ' Aggiungo la riga alla stringa di output
OutputData = OutputData & NuovaRiga & vbCrLf
       End If
   End If
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

Trasformera' il file in un nuovo file correttamente formattato per una importazione in Ready Pro:
COD CATEGORIA ; DESCRIZIONE ; COD MACROCATEGORIA
00;COMPUTER SYSTEMS;00
0001;DESKTOPS/TOWERS;00
0002;COMPUTER&MNTR UNITS;00
0005;SERVERS;00
0010;ULTRAMOBILE PC(UMPC);00
0011;PORTABLES/NOTEBOOKS;00
0012;TABLET PC PORTABLE;00
0014;TABLET PC HANDHELD;00
0016;TABLET PC ACCS;00
0021;HANDHELD COMPUTERS;00
.....

Login