Se puede usar el programa econnect.sync para poder enviar la siguiente información de un ERP al servidor de e-connect:
- Referencias
- Fases
- Fases-Referencias
- Componentes
- Órdenes de Trabajo
- Ordenes de trabajo por trabajador
- Dependencias Ordenes de trabajo
- Trabajadores
A continuación se explica como configurarlo para poder iniciar el envío de esta información.
Configuración general
Debe existir el archivo config.xml en el mismo directorio donde se encuentre el archivo .exe usado (ver el apartado Configurar sincronizador#Programas).
Importante: Antes de realizar cambios en el archivo config.xml, el programa debe estar parado.
Puedes descargar config.zip [4,60 KB] en el que hay archivos de configuración de ejemplo como punto de partida:
- config-csv.xml → el origen de los datos son archivos en formato CSV
- config-json.xml → el origen de los datos son archivos en formato JSON
- config-xml.xml → el origen de los datos son archivos en formato XML
- config-odbc.xml → el origen de los datos es una Base de Datos a la que debe conectarse usando ODBC
- config-oledb.xml → el origen de los datos es una Base de Datos a la que debe conectarse usando OLEDB
- config-sqlserver.xml → el origen de los datos es una Base de Datos SQL Server
A continuación se detalla el contenido del archivo config.xml:
Auth
Incluye los tokens necesarios para validarse con los servicios de e-connect:
<Auth> <ClientId>{e-connect ClientId}</ClientId> <RefreshToken>{e-connect RefreshToken}</RefreshToken> <AccessToken /> <ExpiresUtc xsi:nil="true" /> </Auth>
Hay que sustituir el texto {e-connect RefreshToken} por el token de nuestro usuario de e-connect i el texto {e-connect ClientId} por el cliente de nuestro usuario de e-connect. Ver el documento Obtener Refresh Token para saber cómo obtenerlo. Es importante no cambiar esta información una vez el sincronizador esté en funcionamiento para evitar problemas de autenticación.
- ClientId→ Id necesario para obtener un nuevo AccessToken
- RefreshToken → Token necesario para obtener un nuevo AccessToken
- AccessToken → Token necesario para realizar las peticiones al servidor de e-connect
- ExpiresUtc → Fecha/hora (UTC) cuando caducará el AccessToken actual
En el caso que no haya AccessToken o ExpiresUtc o esta última haya expirado, se obtendrá un nuevo AccessToken. Al obtener uno nuevo, se actualiza el archivo de configuración con los nuevos valores.
Trigger
Indica al programa cuando debe ejecutarse la sincronización.
<Trigger> <Type>Schedule</Type> <Parameter>0 0/15 * * * ?</Parameter> </Trigger>
Los posibles valores de Type son:
- Schedule → ejecuta la sincronización según una configuración de tiempo (en el ejemplo se ejecutaría cada 15 minutos).
- Once → ejecutar únicamente una vez.
- FileDetected → ejecuta la sincronización cuando se detecta un archivo nuevo en alguna de las carpetas de Input. Sólo disponible si todos los DataSource de Input son de tipo Files.
El contenido del Parameter depende del Type escogido:
Schedule → indica cuando hay que ejecutar basado en el tiempo. Más información en: https://www.quartz-scheduler.net/documentation/quartz-2.x/tutorial/crontriggers.html
- FileDetected -> indica los segundos a esperar antes de procesar los archivos (puede ser 0 para no realizar espera)
Atención: el tipo FileDetected no reintentará procesar el archivo en el caso que haya un error de comunicación con el servidor. Por esa razón, recomendamos usar el tipo Schedule.
DataSources
Configuración de los distintos orígenes de datos (tanto para entrada como para salida).
<DataSources> <DataSource xsi:type="DataSourceFilesCsv"> <Id>1</Id> <Name>File Sample</Name> <Type>Files</Type> <Source>{Path to CSV files}</Source> <Format>Csv</Format> <Separator>;</Separator> </DataSource> </DataSources>
- Atributo xsi:type → posibles valores:
DataSourceFilesCsv
DataSourceFiles
DataSourceDatabase
- Id → identificador único para poderlo asociar a los SyncItem (ver después).
- Name → nombre identificativo. Sólo para que el usuario pueda diferenciarlo fácilmente.
- Type → indica la forma de obtener o guardar los datos. Posibles valores:
- Files
- Database
- Source → el valor cambia en función del Type:
- Files → ruta al directorio donde están los archivos (debe existir si se usa para un SyncItemInput).
- Database → ConnectionString para conectarse a la Base de Datos.
El DataSourceFilesCsv debe tener un parámetro adicional (Separator) para indicar el carácter o caracteres que deben usarse para obtener los datos del archivo CSV. Para usar más de un carácter, deben ponerse juntos (Ej: para usar el punto y como además de la coma, habría que usar <Separator>;,</Separator>). En caso de usarlo también para exportar datos, se usará el primer carácter como separador para el archivo CSV generado por el sincronizador.
En el ejemplo, se usan archivos en formato CSV separados por punto y coma.
Si se necesitan distintos tipos de orígenes, se recomienda copiar el nodo DataSource del archivo de configuración de ejemplo adecuado para incorporarlo al config.xml propio.
Input
Define la información que se va a importar a e-connect.
<Input> <SyncItemInput> <Name>CSV File: Work Orders</Name> <DataSourceId>1</DataSourceId> <OrderPos>0</OrderPos> <LastModified xsi:nil="true" /> <DataType>WorkOrder</DataType> <Expression>{Filter to apply when searching for files. Ex: am*.csv}</Expression> </SyncItemInput> </Input>
- Name → nombre identificativo. Sólo para que el usuario pueda diferenciarlo fácilmente.
- DataSourceId → identificador del DataSource del que obtener los datos para este Item.
- OrderPos → posición en la que se debe procesar este Item dentro de todos los Items Input.
- LastModified → fecha/hora del último elemento que se haya procesado (en el caso que los elementos tengan el campo LastModified).
- DataType → posibles valores (pueden combinarse usando |):
- Reference → referencias / artículos
- Component → componentes, es decir, referencias que forman parte de otra referencia
- Phase → fases
- PhaseReference→ fases-referencias
- WorkOrder → órdenes de trabajo
- Worker → trabajadores
- WorkOrderWorker → trabajadores en órdenes de trabajo
- CycleTime → tiempos de ciclo
- Expression → depende del DataSource:
- Files → filtro a aplicar al buscar archivos en el directorio (Ej.: ordenes-*.csv).
- Database → consulta a ejecutar en la Base de Datos. Se puede incluir {LastModified} en la consulta para devolver únicamente los elementos modificados desde el último que se ha procesado. Consultar el archivo config-sqlserver.xml para ver ejemplos. Si LastModified para el item no existe, se usará la fecha 1/1/2000
Ver el apartado Campos en Input para ver qué campos deben o pueden tener las consultas o archivos, qué nombre deben tener y qué formato.
Se puede descargar el archivo input-samples.zip [14 KB] para tener ejemplos de los archivos con distintos formatos y consultas SQL.
Output
Permite definir cómo exportar la información de e-connect.
<Output> <SyncItemOutput> <Name>CSV File: Work Orders Production</Name> <DataSourceId>1</DataSourceId> <OrderPos>0</OrderPos> <LastModified xsi:nil="true" /> <DataType>WOProduction</DataType> </SyncItemOutput> </Output>
- Name → nombre identificativo. Sólo para que el usuario pueda diferenciarlo fácilmente.
- DataSourceId → identificador del DataSource a usar al guardar los datos.
- OrderPos → posición en la que se debe procesar este Item dentro de todos los Items Output.
- LastModified → última fecha/hora de finalización de las producciones recibidas.
- DataType → posibles valores:
- GeneralProduction → producción general
- Users → usuarios
- Se puede incluir el elemento <Expression></Expression> con uno de los siguientes valores:
- owner: propietario
- admin: administrador
- responsable: encargado
- worker: operario
- user: usuario
- Se puede incluir el elemento <Expression></Expression> con uno de los siguientes valores:
- Machines → máquinas
Ver el apartado Campos en Output para ver qué campos tendrán los archivos generados o qué columnas y nombre de tabla debe tener en caso de quererlo en una Base de Datos.
Se puede descargar el archivo output-samples.zip [6,77 KB] para tener ejemplos de los archivos que se generar con los distintos formatos y las tablas a crear en la Base de Datos.
Campos en Input
Para poder importar la información correctamente, el origen de los datos (consulta SQL o archivo) debe tener los campos con los nombres y formatos aquí indicados.
Referencias
Nombre campo | Descripción | Tipo | Requerido |
---|---|---|---|
Code | Código único de la referencia | Texto(128) | Sí |
Description | Descripción de la referencia | Texto | No |
PictureFile | Ruta completa al archivo con la foto (JPG, PNG, GIF) | Texto | No |
Picture | Foto en formato Base 64 (RFC 3548 o RFC 4648) en archivos y | Texto | No |
PictureFileName | Nombre de archivo de la foto (Ej: 0001.jpg). Usado junto con Picture, aunque es opcional | Texto | No |
IsActive | Referencia activa | Bool | Puede ser un entero: 0-Falso / 1-Cierto Puede ser texto:
|
LastModified | Fecha/hora de última modificación | Fecha/Hora | No |
Fases
Nombre campo | Descripción | Tipo | Requerido |
---|---|---|---|
Code | Código único de la fase | Texto(50) | Sí |
Description | Descripción de la fase | Texto(100) | No |
LastModified | Fecha/hora de última modificación | Fecha/Hora | No |
Fases-Referencias
Nombre campo | Descripción | Tipo | Requerido |
---|---|---|---|
PhaseCode | Código de la fase | Texto(50) | Sí |
ReferenceCode | Código de la referencia | Texto(128) | Sí |
Description | Descripción de la fase para la referencia | Texto(100) | No |
PictureFile | Ruta completa al archivo con la foto (JPG, PNG, GIF) | Texto | No |
Picture | Foto en formato Base 64 (RFC 3548 o RFC 4648) en archivos y formato binario para Base de Datos (Ej: image en SQL Server) Si existe PictureFile se usará antes que Picture | Texto | No |
PictureFileName | Nombre de archivo de la foto (Ej: 0001.jpg). Usado junto con Picture, aunque es opcional | Texto | No |
LastModified | Fecha/hora de última modificación | Fecha/Hora | No |
Componentes
Nombre campo | Descripción | Tipo | Requerido |
---|---|---|---|
ReferenceCode | Código de la referencia | Texto(128) | Sí |
ComponentCode | Código del componente | Texto(128) | Sí |
WorkOrderNumber | Número de OT (en caso que los componentes cambien para cada OT) | Texto(50) | No |
PhaseCode | Código de la Fase (en caso que los componentes cambien para cada OT + Fase) | Texto(50) | No |
Quantity | Cantidad del componente para la referencia | Decimal | No |
Comment | Observaciones del componente | Texto | No |
LastModified | Fecha/hora de última modificación | Fecha/Hora | No |
Órdenes de Trabajo
Nombre campo | Descripción | Tipo | Requerido | Observaciones |
---|---|---|---|---|
Number | Número de OT | Texto(50) | Sí | |
ReferenceCode | Código de la Referencia | Texto(128) | Sí | |
ReferenceDescription | Descripción de la Referencia | Texto | No | |
PhaseCode | Código de la Fase | Texto(50) | No | |
PhaseDescription | Descripción de la Fase | Texto(100) | No | |
ToolingCode | Código del Utillaje | Texto(50) | No | |
ToolingDescription | Descripción del Utillaje | Texto(100) | No | |
Quantity | Cantidad a fabricar | Decimal | No | |
PreparationTime | Tiempo de preparación previsto (segundos) | Decimal | No | |
ProductionTime | Tiempo de producción previsto (segundos) | Decimal | No | |
ClientName | Nombre del Cliente | Texto | No | |
MachineCode | Código de la Máquina | Texto(50) | No | |
MachineName | Nombre de la Máquina | Texto(100) | No | |
Status | Estado de la OT | Entero | No | 0: Abierta 1: Cerrada |
Comment | Observaciones de la OT | Texto | No | |
ExternalCode | Código externo de la OT | Texto(50) | No | Si se indica, entonces se entenderá como OT única la unión de Number, Phase (si hay) y ExternalCode |
LastModified | Fecha/hora de última modificación | Fecha/Hora | No |
Órdenes de trabajo por trabajador
Nombre campo | Descripción | Tipo | Requerido | Observaciones |
---|---|---|---|---|
OTNumber | Número de OT | Texto(50) | Sí | |
PhaseCode | Código de la Fase | Texto(50) | No | |
ReferenceCode | Código de la Referencia | Texto(128) | Sí | |
WorkerCode | Código del trabajador | Texto(20) | Sí | |
StartDate | Fecha/hora de inicio prevista del trabajo | Fecha/Hora | Sí | |
EndDate | Fecha/hora de fin prevista del trabajo | Fecha/Hora | Sí | |
Quantity | Cantidad a fabricar | Decimal | No | |
Comment | Observaciones | Texto | No | |
OTExternalCode | Código externo de la OT | Texto(50) | No | Si se indica, entonces se entenderá como OT única la unión de Number, Phase (si hay) y ExternalCode |
Dependencias órdenes de trabajo
Nombre campo | Descripción | Tipo | Requerido | Observaciones |
---|---|---|---|---|
OTNumber | Número de OT | Texto(50) | Sí | |
PhaseCode | Código de la Fase | Texto(50) | Sí | |
ReferenceCode | Código de la Referencia | Texto(128) | Sí | |
OTNumberRequired | Número de OT requerida | Texto(50) | Sí | |
PhaseCodeRequired | Código de la Fase requerida | Texto(50) | Sí | |
ReferenceCodeRequired | Código de la Referencia requerida | Texto(128) | Sí | |
Blocking | Dependencia bloqueante | Char | Sí | (Y/N) |
Trabajadores
Nombre campo | Descripción | Tipo | Requerido | Observaciones |
---|---|---|---|---|
Name | Nombre del trabajador | Texto | Sí | |
WorkerCode | Código del trabajador | Texto(20) | Sí | |
Correo electrónico del trabajador | Texto(256) | Sí | ||
Language | Idioma del trabajador | Entero | No | 1: Català 2: Español 3: English 4: Français 5: Português |
Tiempos de Ciclo
Nombre campo | Descripción | Tipo | Requerido | Observaciones |
---|---|---|---|---|
MachineCode | Código de máquina | Texto(50) | Sí | |
ReferenceCode | Código de la Referencia | Texto(128) | Sí | |
CycleTime | Tiempo de ciclo (segundos) | Decimal | Sí | |
MachineName | Nombre de la Máquina | Texto(100) | No | |
ReferenceDescription | Descripción de la Referencia | Texto | No | |
MachineCycles | Ciclos de máquina | Entero | No | Si no se indica, se asignará 1 |
UnitsCycle | Ciclos por unidad | Entero | No | Si no se indica, se asignará 1 |
Importante
- En el caso de incorporar el campo LastModified, los registros deberán venir ordenados por esa fecha de forma ascendente.
- Archivos: los campos Fecha/Hora deben tener el siguiente formato: yyyy-MM-dd HH:mm:ss
- OT: en el caso de no tener el campo Status, se cerrará la OT en cuanto no se detecte en los registros recibidos. Por lo que, en caso de no tener Status, deben enviarse siempre todas las OTs en curso en un mismo archivo o en una misma consulta SQL.
- Los campos de tipo Texto sin longitud indicada, no tienen límite definido.
- Los campos de tipo Decimal, sólo pueden tener separador de decimales (se acepta el punto y la coma), pero no pueden tener separador de millares.
Campos en Output
Producción General
Si se utiliza la salida SQL estándar, la tabla es EConnectGP
Nombre campo | Descripción | Tipo |
---|---|---|
KeyId | Identificador único | Texto(40) |
ReferenceCode | Código de la referencia | Texto(128) |
WorkerName | Nombre del operario | Texto |
WorkerCode | Código del operario | Texto(20) |
DeviceName | Nombre del dispositivo | Texto(75) |
MachineName | Nombre de la máquina | Texto(100) |
MachineCode | Código de la máquina | Texto(50) |
MachineExternalCode | Código externo de la máquina | Texto(50) |
PhaseCode | Código de la fase | Texto(50) |
PhaseDescription | Descripción de la fase | Texto(100) |
StartDate | Fecha/Hora de inicio de la producción | Fecha/Hora |
EndDate | Fecha/Hora de finalización de la producción | Fecha/Hora |
Duration | Duración de la producción (segundos) | Decimal |
CountOK | Número de elementos contados como OK | Decimal |
CountNG | Número de elementos contados como NO OK | Decimal |
ReportedCountOK | Número de elementos informados como OK por el operario | Decimal |
ReportedCountNG | Número de elementos informados como NO OK por el operario | Decimal |
Quantity | Cantidad de la OT | Decimal |
ReportedQuantity | Número de elementos informados totales (suma de ReportedCountOK y ReportedCountNG) | Decimal |
WorkOrder | Número de la OT | Texto(50) |
WOExternalCode | Código externo de la OT | Texto(50) |
NumberOfStops | Número de paradas | Entero |
Oee | OEE | Decimal |
CycleTime | Tiempo de ciclo | Decimal |
IdealCycleTime | Tiempo de ciclo ideal | Decimal |
IsProduction | XML/JSON: true/false BD/CSV: Y indica que és un registro de producción, si es N indica que és de preparación | Bool/Char |
PlannedPieces | Número de elementos planificados | Decimal |
PreparationPieces | Número de elementos en preparación | Decimal |
PreparationTime | Tiempo de preparación (segundos) | Entero |
Registro de rechazos en producción
Si se utiliza la salida SQL estándar, la tabla es EConnectNC
Nombre de campo | Descripción | Tipo |
---|---|---|
KeyId | Identificador único de la producción (tabla EConnectGP) | Texto(40) |
WorkOrder | Número de la OT | Texto |
RejectionTypeId | Identificador del tipo de rechazo | Texto |
RejectionTypeCode | Código del tipo de rechazo | Texto |
Quantity | Cantidad rechazada o asignada a un motivo de rechazo | Decimal |
IsProduction | Y indica que és un registro de producción, si es N indica que és de preparación | Char |
Usuarios
Si se utiliza la salida SQL estándar, la tabla es EConnectUS
Nombre campo | Descripción | Tipo |
---|---|---|
KeyId | Identificador único | Texto(40) |
UserName | Nombre de usuario | Texto(256) |
Name | Nombre del usuario | Texto |
E-mail del usuario | Texto(256) | |
IsActive | Usuario activo (Y: activo, N: no activo) | Char |
LanguageId | Idioma del usuario: 1: Català 2: Español 3: English 4: Français 5: Português | Entero |
PhoneNumber | Número de teléfono del usuario | Texto |
WorkerCode | Código como trabajador | Texto(20) |
Updated | Fecha/Hora de última actualización | Fecha/Hora |
Claims | Tipos de perfil separados por coma:
| Texto(50) |
Máquinas
Si se utiliza la salida SQL estándar, la tabla es EConnectMA
Nombre campo | Descripción | Tipo |
---|---|---|
KeyId | Identificador único | Texto(40) |
Name | Nombre de la máquina | Texto(100) |
Code | Código de la máquina | Texto(50) |
ExternalCode | Código externo de la máquina | Texto(50) |
Created | Fecha/Hora de creación de la máquina | Fecha/Hora |
Updated | Fecha/Hora de última actualización de los datos de la máquina | Fecha/Hora |
Model | Modelo de la máquina | Texto |
MachineUse | Para qué se usa la máquina | Texto |
Comment | Observaciones de la máquina | Texto |
TimeToStop | Tiempo que debe pasar sin recibir producciones para interpretar que la máquina está Parada (segundos) | Entero |
MeasureUnitId | Unidad de medida de su producción:
| Texto(50) |
TimeToSuggestStop | Tiempo que debe pasar sin recibir producciones para que la Parada deba ser justificada por el operario (minutos) | Entero |
Programas
Se puede descargar el sincronizador des de este enlace:
Hay dos formas de usar el sincronizador:
- Servicio de Windows
- Aplicación de consola
Servicio de Windows
Debe instalarse el servicio de la siguiente forma (archivo econnect.sync.service.exe):
- Abrir línea de comandos (o símbolo de sistema) con permisos de Administrador
cmd
- Ir a la carpeta del framework .NET (la versión debe ser v4.0.xxxxx)
cd C:\Windows\Microsoft.NET\Framework64\v4.0.30319
- Usar el programa InstallUtil para instalar el servicio
InstallUtil.exe C:\ruta\econnect.sync.service.exe
- Si todo ha ido bien, tendremos el nuevo servicio instalado
- Una vez esté configurado, deberá iniciarse el servicio
Aplicación de consola
Debe ejecutarse el archivo econnect.sync.console.exe y dejar la ventana abierta.