La Aplicación Móvil permite desplegar un catálogo con imágenes para facilitar a los vendedores la toma de pedidos y a su vez darles una herramienta visualmente llamativa para mostrar los productos a sus clientes.


Para realizar la carga de las imágenes que los vendedores visualizarán en su dispositivo, es necesario subir dichas fotos asociadas a sus respectivos productos. Para esto existen 2 alternativas, la primera de ellas es mediante el portal web y la segunda es mediante el programa de sincronización InalambrikSync ya instalado en su servidor, este último requiere un archivo de Excel.


Carga de Imágenes Mediante el Portal Web


Para realizar la carga en el portal web se deben seguir los siguientes pasos:


  1. Ingresar al portal pedidos.inalambrik.com.ec con su usuario y contraseña.
  2. Presionar sobre el menú Configuración y luego sobre la opción de Productos
  3. Buscar el producto deseado utilizando los filtros que aparecen en la parte superior y presionar sobre el ícono de la lupa que se encuentra del lado izquierdo del producto.
  4. Presionar sobre la pestaña Imágenes 
  5. Al realizar el paso anterior se mostrará una lista con las fotos ya registradas, si es la primera vez que se van a registrar imágenes, la lista aparecerá vacía. Para agregar una nueva imagen presione en el ícono más ubicado en la parte superior derecha de los títulos de la lista.
  6. Esto desplegará una pantalla en donde se deberá registrar un título para la imagen y presionar en el botón Seleccionar Archivo el cual abrirá una ventana de navegación para buscar la foto o imagen deseada.
  7. Una vez ubicada la imagen presione Abrir en la ventana y luego Confirmar en la página para confirmar la grabación de la imagen.
  8. Al confirmar retornará al listado donde pordrá visualizar la imagen cargada y las subidas previamente. Sobre este listado puede Modificar una línea, eliminar una imagen o convertir una imagen en principal .


Carga Masiva de  Imágenes Mediante el Sincronizador


Para realizar la carga masiva de imágenes, debe estar instalado Microsoft Visual J#. Si se intenta subir datos y no se cuenta con esta librería, se mostrará un error de vsjlib. Visual J# puede ser descargado de internet de forma gratuita y no requiere reiniciar la máquina luego de la instalación.


 Las tareas a realizar para la carga de Imágenes asociadas a Productos se describe a continuación:


1. En un Documento de Excel (xlsx, último formato) se deberán definir las siguientes columnas de información:


COLUMNA
DESCRIPCIÓN
Código Producto
Código de Producto.
#Archivo
Identificador de Número de Archivo asociado a Producto. Cada producto puede tener asociado N archivos/documentos. (#Secuencial).
Título
Descripción a utilizar durante la visualización del archivo en la Galería o Catálogo Virtual. (máx. 20 caracteres). Si coloca (*) se indicará que es la imagen principal del producto.
Descripción
Detalle breve del producto, relacionado a la imagen. (máx. 40 caracteres)
Tipo
Debido a que es una imagen debe ir el texto IMAGE por cada fila. Si coloca la palabra DELETE, indicará que desea eliminar la imagen del portal.
Catálogo1
Dejar en blanco, no aplica para este caso.
Catálogo2
Dejar en blanco, no aplica para este caso.
Catálogo3
Dejar en blanco, no aplica para este caso.
Ruta

Ruta Absoluta de la imagen. Es decir, la dirección física en donde esté alojada la imagen a cargar.


Consideraciones 

  • No existe un tamaño específico establecido para las imágenes a cargar, pero se recomienda que tengan una relación de aspecto de 1:1, es decir que sean cuadradas o tiendan a serlo.
  • Respecto al peso de las imágenes no deben exceder los 100 KB.
  • El formato de las imágenes debe ser .jpg o .png
  • Con respecto a la plantilla de Excel que se elabore con las columnas anteriormente detalladas:

- No aplicar celdas combinadas

- No dejar celdas vacías (excepto las tres columnas de Catálogo1, Catálogo2 y Catálogo3).

- Colocar la ruta completa de las imágenes, ejemplo: "C:\InalambricSync\ImagenesProductos\imagen1.jpg"


2. Con el archivo Excel, se utilizará el ejecutable aSync.exe (para versiones anteriores del sincronizador usar el comando aProductFileUploadFromExcelV1.exe ) del Inalambrik Sync que será el encargado de cargar los archivos/documentos al sistema a través de la definición establecida.

3. Ejecute desde la línea de comando lo siguiente:

  • c:
  • cd \InalambrikSync\bin
  • aSync UPLOAD_PRODUCT_IMAGES_FROM_EXCEL imports\CatalogoYellow.xlsx

4. El ejemplo anterior asume que en la carpeta imports se encuentra el archivo  CatalogoYellow.xlsx.  

5. Un ejemplo de esta definición se puede ver en el archivo ProductFileUploadFromExcel.bat dentro de la carpeta c:\InalambrikSync\bin\batchs

6. Al ejecutar el programa anteriormente descrito, Inalambrik Sync empezará la carga de archivos hacia el sistema de toma de pedidos y notificará durante su procesamiento alguna eventualidad o problema con cada archivo definido en el Excel de configuración.

7. Una vez terminado el proceso, se podrán visualizar los archivos cargados en Productos de la plataforma web. A su vez, esta información estará disponible en la aplicación móvil en la ficha técnica de cada producto de la compañía.


Publicando Fotos de Productos desde su ERP


Si tiene las imágenes principales de los productos grabadas en su ERP, estas pueden publicarse automáticamente definiendo el siguiente query.  Cambiar la ruta 'c:\InalambrikSync\images\' si es necesario y el nombre de la base de datos origen.

SET NOCOUNT ON
DECLARE @STARTED_AT DATETIME
DECLARE @SECONDS_ELAPSED NUMERIC
DECLARE @MSG VARCHAR(200)
DECLARE @Rows int

-- Comment out this line if you need to force synchronization of this table.
-- DELETE FROM InalambrikSync.dbo.SyncProductBrand

-- Delete temporary table if exist
IF OBJECT_ID('InalambrikSync.dbo.temp_ProductFile', 'U') IS NOT NULL
  DROP TABLE InalambrikSync.dbo.temp_ProductFile; 

-- Select source data from source
RAISERROR('Selecting source records ...',0,1) WITH NOWAIT
SET @STARTED_AT = SYSDATETIME()
SELECT * INTO InalambrikSync.dbo.temp_ProductFile FROM ( 

SELECT 
	ProductCode as ProductFileProductCode 
	,1 as ProductFileId 
	,ProductName as ProductFileTitle
	,ProductName as ProductFileDescription
	,'c:\InalambrikSync\images\nophoto.jpg' as ProductFileSource
	,SYSDATETIME() as ProductFileModifiedOn
	,'A' as ProductFileStatus
FROM InalambrikSync.dbo.SyncProduct 
) source_data
SELECT @Rows=@@ROWCOUNT
SET @SECONDS_ELAPSED = DATEDIFF(SECOND,@STARTED_AT,SYSDATETIME())
SET @MSG =LTRIM(STR(@Rows))+' records selected in '+LTRIM(STR(@SECONDS_ELAPSED))+' secs' 
RAISERROR(@MSG,0,1) WITH NOWAIT
	
-- If table InalambrikSync.dbo.temp_ProductFile is created
IF @@ERROR = 0
BEGIN

	RAISERROR('Building indexes ...',0,1) WITH NOWAIT
	SET @STARTED_AT = SYSDATETIME()
	CREATE NONCLUSTERED INDEX temp_InalambrikSync_ProductFile_Index ON InalambrikSync.dbo.temp_ProductFile ( ProductFileProductCode,ProductFileId );

	-- Create an index on target table to improve performance
	IF NOT EXISTS(SELECT * FROM InalambrikSync.sys.indexes WHERE name = 'InalambrikSync_ProductFile_Index' )    
		 CREATE NONCLUSTERED INDEX InalambrikSync_ProductFile_Index ON InalambrikSync.dbo.PRODUCTFILE ( ProductFileProductCode,ProductFileId );
	SET @SECONDS_ELAPSED = DATEDIFF(SECOND,@STARTED_AT,SYSDATETIME())
	SET @MSG =LTRIM(STR(@SECONDS_ELAPSED))+' secs' 
	RAISERROR(@MSG,0,1) WITH NOWAIT

	
	-- Update record on table SyncProductBrand when key fields are found and data fields are different
	RAISERROR('Updating modifed records on table SyncProductBrand ...',0,1) WITH NOWAIT
	SET @STARTED_AT = SYSDATETIME()
	UPDATE t SET t.ProductFileTitle = substring(isnull(s.ProductFileTitle,''),1,20) 
				, t.ProductFileDescription = substring(isnull(s.ProductFileDescription,'') ,1,40) 
				, t.ProductFileSource = substring(isnull(s.ProductFileSource,'') ,1,250) 
				, t.ProductFileModifiedOn = isnull(s.ProductFileModifiedOn,SYSDATETIME()) 				
				, t.ProductFileStatus = isnull(s.ProductFileStatus,'A') 								
				FROM InalambrikSync.dbo.PRODUCTFILE t 
		INNER JOIN InalambrikSync.dbo.temp_ProductFile s ON t.ProductFileProductCode COLLATE DATABASE_DEFAULT = s.ProductFileProductCode and t.ProductFileId = s.ProductFileId 
	WHERE t.ProductFileTitle COLLATE DATABASE_DEFAULT <> substring(isnull(s.ProductFileTitle,''),1,20) 
		or t.ProductFileDescription <> substring(isnull(s.ProductFileDescription,''),1,40)
		or t.ProductFileSource <> substring(isnull(s.ProductFileSource,''),1,250)
		or t.ProductFileStatus <> isnull(s.ProductFileStatus,'A')
	SELECT @Rows=@@ROWCOUNT
	SET @SECONDS_ELAPSED = DATEDIFF(SECOND,@STARTED_AT,SYSDATETIME())
	SET @MSG =LTRIM(STR(@Rows))+' records updated in '+LTRIM(STR(@SECONDS_ELAPSED))+' secs' 
	RAISERROR(@MSG,0,1) WITH NOWAIT

	-- Insert record on table SyncProductBrand when key fields are not found
	RAISERROR('Inserting new records on table SyncProductBrand ...',0,1) WITH NOWAIT
	SET @STARTED_AT = SYSDATETIME()
	INSERT INTO InalambrikSync.dbo.PRODUCTFILE	
	( ProductFileProductCode ,ProductFileId ,ProductFileTitle,ProductFileDescription,ProductFileSource,ProductFileModifiedOn,ProductFileUploadedOn,ProductFileErrorMessage ,ProductFileStatus )
			SELECT s.ProductFileProductCode ,s.ProductFileId , SUBSTRING(s.ProductFileTitle,1,20), SUBSTRING(s.ProductFileDescription,1,40) ,SUBSTRING(s.ProductFileSource,1,250),s.ProductFileModifiedOn,'2000-01-01 00:00:00', '' ,s.ProductFileStatus
			FROM InalambrikSync.dbo.temp_ProductFile s 
				LEFT JOIN InalambrikSync.dbo.ProductFile t ON t.ProductFileProductCode COLLATE DATABASE_DEFAULT = s.ProductFileProductCode and t.ProductFileId = s.ProductFileId 
				WHERE t.ProductFileProductCode IS NULL 	
	SELECT @Rows=@@ROWCOUNT
	SET @SECONDS_ELAPSED = DATEDIFF(SECOND,@STARTED_AT,SYSDATETIME())
	SET @MSG =LTRIM(STR(@Rows))+' records inserted in '+LTRIM(STR(@SECONDS_ELAPSED))+' secs' 
	RAISERROR(@MSG,0,1) WITH NOWAIT
			
	-- Set record as deleted when is not found on source table 
	RAISERROR('Deleting records not found on source ...',0,1) WITH NOWAIT
	SET @STARTED_AT = SYSDATETIME()
	-- Field not available on this table
	UPDATE t SET t.ProductFileStatus = 'X' 
			FROM InalambrikSync.dbo.ProductFile t 
			LEFT JOIN InalambrikSync.dbo.temp_ProductFile s ON t.ProductFileProductCode COLLATE DATABASE_DEFAULT = s.ProductFileProductCode and t.ProductFileId = s.ProductFileId WHERE s.ProductFileProductCode IS NULL AND t.ProductFileStatus <> 'X'
	SELECT @Rows=@@ROWCOUNT
	SET @SECONDS_ELAPSED = DATEDIFF(SECOND,@STARTED_AT,SYSDATETIME())
	SET @MSG =LTRIM(STR(@Rows))+' records set as deleted in '+LTRIM(STR(@SECONDS_ELAPSED))+' secs' 
	RAISERROR(@MSG,0,1) WITH NOWAIT

		
	DROP TABLE InalambrikSync.dbo.temp_ProductFile; 	
END

2. Ejecutar el comando "aSync.exe UPLOAD_PRODUCT_IMAGES" ubicado en la carpeta 'c:\InalambrikSync\bin' para publicar las nuevas imágenes