Microsoft Dynamics™ NAV – Exporta tus productos a Magento por FTP con VBScript

Inicio MagentoMicrosoft Dynamics™ NAV – Exporta tus productos a Magento por FTP con VBScript
Microsoft Dynamics™ NAV

Microsoft Dynamics™ NAV – Exporta tus productos a Magento por FTP con VBScript

No Comments

Microsoft Dynamics™ NAV – Exporta tus productos, clientes, etc. a Magento.

Os mostramos un potente conjunto de funciones que os ayudará a exportar vuestros datos desde Microsoft Dynamics™ NAV a un sitio FTP web.

Nosotros lo utilizamos para sincronizar los productos, descripciones, categorías, etc, desde Microsoft Dynamics™ NAV a Magento junto a nuestra nueva extensión Magboxes Product Synchronization (http://www.eboxesfactory.com/magboxes-sincronizacion-producto/).

Seguro que lo encontraréis muy interesante!

El proceso, se compone de los siguientes pasos:

1.- Borrado de archivos locales.
2.- Exportación datos a archivo local.
3.- Upload/subida archivo local al sitio FTP web.

Para realizar el proceso, creamos una codeunit donde definimos las funciones y variables necesarias para el proceso. En primer lugar, definimos las siguientes variables globales:

  • Name: WshShell
  • Data Type: Automation
  • Subtype: ‘Windows Script Host Object Model’.WshShell
  • Description: // EBOXESFACTORY – Automation VBScript.
  • Name: intWindowStyle
  • Data Type: Integer
  • Description: // EBOXESFACTORY – Utilizado para definir el estilo de ventana al utilizar WshShell.
  • Name: bWaitOnReturn
  • Data Type: Boolean
  • Description: // EBOXESFACTORY – Utilizado para definir el tipo de ejecución de WshShell.

1.- Borrado Archivos Locales

Utilizaremos la función DeleteLocalfile con los siguientes parámetros:

  • Name: LocalCmdFile
  • Data Type: Text
  • Length: 120
  • Description: // EBOXESFACTORY – Path/Nombre fichero .cmd utilizado para informar los comandos de borrado.
  • Name: LocalFile
  • Data Type: Text
  • Length: 120
  • Description: // EBOXESFACTORY – Path/Nombre fichero a borrar.

Como variables locales de la función DeleteLocalfile encontramos las siguientes:

  • Name: DelCommandFile
  • Data Type: File
  • Description: // EBOXESFACTORY – Fichero para guardar los comandos de borrado.

Código de la función DeleteLocalfile:

//>>> EBOXESFACTORY: DeleteLocalfile. **
 
//>>> 1.- Create Command Execution File
DelCommandFile.CREATE(LocalCmdFile);
DelCommandFile.TEXTMODE(TRUE);
DelCommandFile.WRITE('del ' +LocalFile);
DelCommandFile.CLOSE;
 
//>>> 2.- Execute Command File
IF ISCLEAR(WshShell) THEN CREATE(WshShell);
intWindowStyle := 0;
bWaitOnReturn := TRUE;
WshShell.Run(LocalCmdFile,intWindowStyle,bWaitOnReturn);
CLEAR(WshShell);

2.- Exportación de Datos a Archivo Local

Utilizaremos una función que llamaremos ExportData que realizará la llamada a las diferentes funciones del proceso.

En el ejemplo, hemos añadido a una tabla de configuración (311 – Sales & Receivables Setup, 313 – Inventory Setup, etc.), varios campos que utilizaremos para informar valores que necesitaremos para la ejecución del proceso. Los campos a incluir en el fichero de configuración, son los siguientes:

  • Name: Usuario FTP
  • Data Type: Text
  • Length: 30
  • Description: // EBOXESFACTORY – Usuario utilizado para la conexión FTP.
  • Name: Password FTP
  • Data Type: Text
  • Length: 30
  • Description: // EBOXESFACTORY – Contraseña utilizada para la conexión FTP.
  • Name: IP FTP
  • Data Type: Text
  • Length: 30
  • Description: // EBOXESFACTORY – IP Servidor FTP.
  • Name: Folder FTP
  • Data Type: Text
  • Length: 120
  • Description: // EBOXESFACTORY – Carpeta del FTP donde se guardará el fichero subido.
  • Name: Export Local Path
  • Data Type: Text
  • Length: 120
  • Description: // EBOXESFACTORY – Path Local donde se guardará el fichero a subir al FTP.

Ahora, definimos el código a incluir en la función:

//>>> EBOXESFACTORY: ExportData. **
 
 
IF CustomTableSetup.GET() THEN
BEGIN
 
   <strong>//&gt;&gt;&gt; Delete Local File</strong>
   DeleteLocalFile(CustomTableSetup."Export Local Filename"+'\dele_command.cmd',
   CustomTableSetup."Export Local Filename"+'\products.csv');
 
   <strong>//&gt;&gt;&gt; Execute Export Data.</strong> En el ejemplo exportamos productos. 
   //&gt;&gt;&gt; Se puede ejecutar un dataport, un XLMport, informar una variable tipo FILE, etc.
   ExportProducts; 
 
   <strong>//&gt;&gt;&gt; Upload File.</strong>
   FTPUploadFile(CustomTableSetup."Usuario FTP",CustomTableSetup."Password FTP",
                 CustomTableSetup."Export Local Path"+'\ftp_script.txt',CustomTableSetup."Folder FTP",
                 CustomTableSetup."Export Local Path"+'\exec_command.cmd',CustomTableSetup."IP FTP",
                 CustomTableSetup."Export Local Path",'products.csv');
END

Finalmente, definimos la función FTPUploadFile que realizará la subida del archivo local al sitio FTP.

3.- Upload/subida archivo local al sitio FTP web

Utilizaremos la función FTPUploadFile con los siguientes parámetros:

  • Name: FTPUsername
  • Data Type: Text
  • Length: 90
  • Description: // EBOXESFACTORY – Nombre Usuario FTP.
  • Name: FTPPassword
  • Data Type: Text
  • Length: 90
  • Description: // EBOXESFACTORY – Contraseña FTP.
  • Name: FTPLocalScript
  • Data Type: Text
  • Length: 120
  • Description: // EBOXESFACTORY – Path/Nombre fichero local con comandos Script.
  • Name: FTPRemoteFolder
  • Data Type: Text
  • Length: 90
  • Description: // EBOXESFACTORY – Carpeta FTP donde se ubicará el fichero subido.
  • Name: FTPLocalCmdFile
  • Data Type: Text
  • Length: 120
  • Description: // EBOXESFACTORY – Path/Nombre fichero local donde se guardan los comandos de ejecución para WshShell.
  • Name: FTPHostname
  • Data Type: Text
  • Length: 90
  • Description: // EBOXESFACTORY – IP/Host Name FTP.
  • Name: FTPLocalFolder
  • Data Type: Text
  • Length: 120
  • Description: // EBOXESFACTORY – Carpeta local donde se guarda el fichero a subir.
  • Name: FTPLocalFile
  • Data Type: Text
  • Length: 90
  • Description: // EBOXESFACTORY – Nombre del fichero local a subir al FTP.

Las variables locales a definir en la función FTPUploadFile son las siguientes:

  • Name: CommandFile
  • Data Type: File
  • Description: // EBOXESFACTORY – Fichero para guardar los comandos de ejecución.
  • Name: ScriptFile
  • Data Type: File
  • Description: // EBOXESFACTORY – Fichero donde se guardan los comandos de subida al FTP.

El código de la función FTPUploadFile es el siguiente:

//&gt;&gt;&gt; EBOXESFACTORY: FTPUploadFile. **
 
 
//&gt;&gt;&gt; 1.- Create Script File
 
//   binary --&gt; Set file transfer mode to binary.
//   cd FTPRemoteFolder --&gt; Select and place on remote FTP folder.
//   lcd FTPLocalFolder --&gt; Place on local folder.
//   mput *.* --&gt; Copy files from local folder to remote FTP folder.
//   quit -&gt;- Exit form FTP
 
ScriptFile.CREATE(FTPLocalScript);
ScriptFile.TEXTMODE(TRUE);
ScriptFile.WRITE(FTPUsername);
ScriptFile.WRITE(FTPPassword);
ScriptFile.WRITE('binary');
ScriptFile.WRITE('cd ' + FTPRemoteFolder);
ScriptFile.WRITE('lcd ' + FTPLocalFolder);
ScriptFile.WRITE('mput ' + FTPLocalFile);
ScriptFile.WRITE('quit');
ScriptFile.CLOSE;
 
//&gt;&gt;&gt; 2.- Create Command Execution File
 
//   -i --&gt; Turns off prompt.
//   -s:FileName --&gt; Text file that containf script ftp commands (without spaces!) ;
 
 
CommandFile.CREATE(FTPLocalCmdFile);
CommandFile.TEXTMODE(TRUE);
CommandFile.WRITE('ftp -i -s:' +FTPLocalScript+' '+FTPHostname);
CommandFile.CLOSE;
 
//&gt;&gt;&gt; 3.- Execute Command File.
 
//   intWindowStyle --&gt; Optional. Window style value. 0 = Hides the window and activates another window.
//   bWaitOnReturn --&gt;  Optional. If TRUE suspend script until the command execution has been finished.
 
 
IF ISCLEAR(WshShell) THEN CREATE(WshShell);
intWindowStyle := 0;
bWaitOnReturn := TRUE;
WshShell.Run(FTPLocalCmdFile,intWindowStyle,bWaitOnReturn);
CLEAR(WshShell);

Para ejecutar el proceso, únicamente necesitamos realizar la llamada a la función ExportData.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *