Productos
El endpoint PostAddProduct es responsable del registro de un nuevo producto en el sistema MIMS. El registro puede ser visualizado en las pantallas CAD022 y CAD223.
Cómo registrar un producto
Request HTTP POST
| Tipo de Solicitud | URL Ejemplo |
|---|---|
| POST | {{url_base}}/PostAddProduct |
| Ejemplo | http://seuIPePorta/datasnap/rest/RESTWebServiceMethods/"PostAddProduct" |
Parámetros de Entrada
| Parámetro | Tipo | Obligatorio | Descripción |
|---|---|---|---|
| ProductNo | String(25) | Sí | Código externo del producto |
| Name | String(60) | Sí | Descripción del producto |
| ReducedName | String(28) | Sí | Descripción reducida del producto |
| ProductionCode | String(10) | No | Código del producto en la producción |
| MaterialNo | String(25) | Sí | Código externo del material |
| PackageNo | String(25) | Sí | Código externo del embalaje |
| FamilyNo | String(25) | Sí | Código externo de la familia del producto |
| BrandNo | String(25) | Sí | Código externo de la marca |
| AnimalTypeNo | String(25) | Sí | Código externo del tipo de animal |
| IntegrationNo | String(25) | No | Código de integración del producto |
| UnitMeasurementNo | String(25) | No | Código externo de la unidad de medida de la pieza |
| BillingUnitMeasurementNo | String(25) | No | Código externo de la unidad de medida de facturación |
| ValidityRuleNo | String(25) | No | Código externo de la regla de validez |
| ExpirationDays | Integer | No | Cantidad de días de validez del producto |
| LabelTemplateCode | Integer | No | Modelo etiqueta |
| PreIdentificationLabel TemplateCode | Integer | No | Modelo etiqueta Pre-Identificación |
| PrimaryLabelTemplateCode | Integer | No | Modelo etiqueta Primaria |
| Condition | ConditionProduct | Sí | Enumerador con los posibles valores para la Condición del producto: cdFresh (Fresco), cdDeepChill (Refrigerado) o cdFrozen (Congelado) |
| Species | SpeciesProduct | Sí | Enumerador con los posibles valores para la Especie del producto: spcWhole (Entero), spcCut (Corte), spcGiblets (Menudillos), spcByProduct (Subproducto) o spcOther (Otro) |
| RawMaterialState | RawMaterialStateProduct | Sí | Enumerador con los posibles valores para el Estado del producto: mspInNatura (In Natura) o mspSazonado (Sazonado) |
| EAN13 | String(13) | No | Código EAN 13 |
| EAN14 | String(14) | No | Código EAN 14 |
| MaxTolerancePercentage | Float | No | Porcentaje de tolerancia máxima |
| MinTolerancePercentage | Float | No | Porcentaje de tolerancia mínima |
| AnimalsInPackageQty | Integer | No | Cantidad de animales en el embalaje |
| ProductInPackageQty | Integer | No | Cantidad de productos en el embalaje |
| MaximumCapacity | Float | No | Capacidad Máxima |
| AverageCapacity | Float | No | Capacidad Media |
| MinimumCapacity | Float | No | Capacidad Mínima |
| StandardCapacity | Float | No | Capacidad Estándar |
| ProductBranchList | ProductBranchList | Sí | Objeto conteniendo las informaciones del producto por filial |
| OverwriteIfExists | Boolean | No | Flag que indica que los datos deben ser sobrescritos si el registro ya existe |
Nota
- La validez del producto puede informarse mediante el parámetro
ValidityRuleNoo mediante el parámetroExpirationDays; al menos uno de los dos debe ser informado. Cuando se envían ambos, elValidityRuleNotiene precedencia. Al informarExpirationDays, el sistema busca una regla de validez registrada en días con esa misma cantidad y, cuando no encuentra ninguna, registra automáticamente una nueva regla con esa cantidad de días. - En los parámetros
LabelTemplateCode,PreIdentificationLabelTemplateCodeyPrimaryLabelTemplateCode, validamos si el valor pasado es mayor que 0 y verificamos la existencia solo de las etiquetas que poseen el código mayor o igual a 1000, pues son las etiquetas que poseen registro en la view "VW_ETIQUETA". Si la etiqueta no está registrada, generamos la excepción "¡La etiqueta "[valor enviado en la solicitud]" informada no fue encontrada!" - En los parámetros
FamilyNo,BrandNoyAnimalTypeNo, cuando la solicitud sea una modificación de producto y el valor informado sea igual al texto de integración estándar (definido en la variable StandardIntegration del archivo INI), el sistema no actualiza el valor de estos campos. En estos casos, el valor ya existente en el registro del producto será mantenido. - Asegúrese de que los parámetros
ProductNo,MaterialNo,PackageNo,FamilyNo,BrandNo,AnimalTypeNoy otros códigos externos sean válidos y no duplicados en el sistema MIMS.
📝 Objeto ProductBranchList
El objeto ProductBranchList representa una lista de informaciones del producto por filial.
Parámetros de Entrada
Parámetros Tipo Obligatorio Descripción BranchNo String(25) Sí Código externo de la filial Name String(120) No Descripción del producto en la filial ProductionGroupNo String(25) No Código externo del grupo de producción ProductionStructureNo String(25) No Código externo de la estructura de producción predeterminada en la que el producto puede ser producido WarehouseNo String(25) No Código externo del almacén ClassifierGridNo String(25) No Código externo de la grade clasificadora UnitMeasurementNo String(25) No Código externo de la unidad de medida de la pieza UnitMeasurementIndi
UnitNoString(25) No Código externo de la unidad de medida de la unidad individual StockSequestrationDays Integer No Días secuestro en stock ToleranceStandardDateDays Integer No Días de tolerancia de la fecha estándar DefaultQuantityinPallet Integer No Cantidad estándar de embalajes para montaje del pallet UnidPartQty Integer No Cantidad de piezas por unidad AnimalsInPackageQty Integer No Cantidad de animales en el embalaje ProductInPackageQty Integer No Cantidad de productos en el embalaje MinRawMaterialPercentage Float No Porcentaje mínimo de producto materia prima WeightToleranceUpon
GroupedWeighingPercentageFloat No Porcentaje de tolerancia de peso en la Pesada Agrupada MaxTolerancePercentage Float No Porcentaje de tolerancia máxima del peso MinTolerancePercentage Float No Porcentaje de tolerancia mínima del peso LabelTemplateCode Integer No Modelo Etiqueta PreIdentificationLabel
TemplateCodeInteger No Modelo Etiqueta Pre-Identificación PrimaryLabelTemplateCode Integer No Modelo Etiqueta Primaria RegisterAgricultureMinistryCode String(14) Sí Número registro Ministerio de Agricultura AgricultureMinistryName String(180) Sí Descripción en el Ministerio de Agricultura IdentifiesType IdentifiesType No Enumerador con los posibles valores para el Tipo de Identificación del producto: itOpticalReading(Lectura Óptica) oitManualTyping(Digitación Manual)DispatchType DispatchType Sí Enumerador con los posibles valores para el Tipo de Expedición del producto: dtOpticalReading(Lectura Óptica),dtManualDispatching(Expedición Manual),dtAutomaticDispatching(Expedición Automática) odtInBulk(A Granel)OwnProduction OwnProduction Sí Enumerador con los posibles valores para Producción Propia: opYes(Sí),opNo(No) oopBoth(Ambos)IsInactive Boolean No Flag que indica que el producto está inactivo IsTunnelControlDisabled Boolean No Flag que indica que el Control de Túneles está Inactivo ControlsSecondaryMaterial
TraceabilityBoolean No Flag que indica que el producto controla la trazabilidad de material secundario PrimaryTare Float No Tara primaria adicional del producto en la filial UpdatePrimaryTare Boolean No Flag que indica que la PrimaryTaredebe grabarse exactamente como se informó, incluso con valor ceroOverwriteIfExists Boolean No Flag que indica que los datos deben ser sobrescritos si el registro ya existe Nota
- En los parámetros
PreIdentificationLabelTemplateCodeyPrimaryLabelTemplateCode, validamos si el valor pasado es mayor que 0 y verificamos la existencia solo de las etiquetas que poseen el código mayor o igual a 1000, pues son las etiquetas que poseen registro en la view "VW_ETIQUETA". Si la etiqueta no está registrada, generamos la excepción "¡La etiqueta "[valor enviado en la solicitud]" informada no fue encontrada!"- En los parámetros
ClassifierGridNo,WarehouseNoyProductionGroupNo, cuando la solicitud sea una modificación de producto y el valor informado sea igual al texto de integración estándar (definido en la variable StandardIntegration del archivo INI), el sistema no actualiza el valor de estos campos. En estos casos, el valor ya existente en el registro del producto será mantenido.- El parámetro
ProductionStructureNovincula el producto a la estructura de producción en la que puede ser producido. La estructura informada debe pertenecer a la sucursal informada enBranchNo.- En el parámetro
ControlsSecondaryMaterialTraceability, cuando la solicitud sea una modificación de producto y el control de trazabilidad de material secundario ya esté activo en la sucursal, el sistema no desactiva este control, aunque el valor informado seafalse. Es decir, mediante la API, en una modificación, solo es posible activar este control.- En los parámetros
PrimaryTareyUpdatePrimaryTare, por defecto la tara primaria solo se graba cuando el valor informado es mayor que cero; de lo contrario, en una modificación se mantiene el valor actual y en una inclusión se graba cero. Para grabar el valor exactamente como se informó (incluso cero, para poner la tara en cero), envíeUpdatePrimaryTarecomotrue.
Retorno
| Parámetro | Tipo | Obligatorio | Descripción |
|---|---|---|---|
| WebServiceReturn | WebServiceReturn | Sí | Informaciones estándar de respuesta del WebService en la ejecución del método |
| ProductCode | Integer | Sí | Código interno del producto generado en el sistema MIMS |
Ejemplo de Request
curl --location 'http://seuIPePorta/datasnap/rest/RESTWebServiceMethods/"PostAddProduct"' \
--header 'Content-Type: application/json' \
--data '{
"ProductNo": "PROD001",
"Name": "Nombre del producto Prueba",
"ReducedName": "Producto Prueba",
"ProductionCode": "FRG001",
"MaterialNo": "MATE123",
"PackageNo": "EMBA123",
"FamilyNo": "FAMI123",
"BrandNo": "MARC123",
"AnimalTypeNo": "TPAVE123",
"IntegrationNo": "INT123456",
"UnitMeasurementNo": "UN",
"BillingUnitMeasurementNo": "UN",
"ValidityRuleNo": "VALI123",
"LabelTemplateCode": 5011,
"PreIdentificationLabelTemplateCode": 5014,
"PrimaryLabelTemplateCode": 5015,
"Condition": "cdFresh",
"Species": "spcCut",
"RawMaterialState": "mspInNatura",
"EAN13": "1234567899874",
"EAN14": "12345678998745",
"MaxTolerancePercentage": 85,
"MinTolerancePercentage": 60,
"AnimalsInPackageQty": 10,
"ProductInPackageQty": 30,
"MaximumCapacity": 100,
"AverageCapacity": 50,
"MinimumCapacity": 20,
"StandardCapacity": 60,
"OverwriteIfExists": true,
"ProductBranchList":[
{
"BranchNo": "BR001",
"Name": "Producto Ejemplo - Filial",
"ProductionGroupNo": "GRP001",
"ProductionStructureNo": "EST001",
"ClassifierGridNo": "CLF001",
"WarehouseNo": "WH001",
"UnitMeasurementNo": "UND001",
"UnitMeasurementIndiUnitNo": "UNDIND001",
"StockSequestrationDays": 7,
"ToleranceStandardDateDays": 3,
"DefaultQuantityinPallet": 20,
"UnidPartQty": 10,
"AnimalsInPackageQty": 5,
"ProductInPackageQty": 50,
"MinRawMaterialPercentage": 1.5,
"WeightToleranceUponGroupedWeighingPercentage": 2.0,
"MaxTolerancePercentage": 4.0,
"MinTolerancePercentage": 1.0,
"LabelTemplateCode": 1000,
"PreIdentificationLabelTemplateCode": 1001,
"PrimaryLabelTemplateCode": 1002,
"RegisterAgricultureMinistryCode": "REG1234567890",
"AgricultureMinistryName": "Ministerio de Agricultura - Unidad Ejemplo",
"IdentifiesType": "itOpticalReading",
"DispatchType": "dtAutomaticDispatching",
"OwnProduction": "opYes",
"IsInactive": false,
"IsTunnelControlDisabled": false,
"ControlsSecondaryMaterialTraceability": false,
"PrimaryTare": 0.05,
"UpdatePrimaryTare": false,
"OverwriteIfExists": true
}
]
}'
Ejemplo de Response
{
"WebServiceReturn": {
"Status": "wrsSuccess",
"ErrorCode": "",
"Message": "",
"Actor": "",
"ReturnQuestion": null
},
"ProductCode": 789
}
🐞 Posibles Errores
| Código | Mensaje |
|---|---|
| APR‑001 | ¡El parámetro "Código Externo del Producto (ProductNo)" informado ya existe! |
| APR‑002 | ¡La etiqueta "LabelTemplateCode" informada no fue encontrada! |
| APR‑002 | ¡La etiqueta "PreIdentificationLabelTemplateCode" informada no fue encontrada! |
| APR‑002 | ¡La etiqueta "PrimaryLabelTemplateCode" informada no fue encontrada! |
| APR‑002 | ¡La etiqueta "PreIdentificationLabelTemplateCode" informada no fue encontrada! |
| APR‑003 | ¡Los parámetros "Capacidad Estándar (StandardCapacity)" y "Capacidad Media (AverageCapacity)" no fueron informados. Informe al menos uno! |
| APR‑004 | ¡El parámetro "Capacidad Estándar (StandardCapacity)" del Embalaje no puede ser inferior al parámetro "Capacidad Mínima (MinimumCapacity)"! |
| APR‑005 | ¡El parámetro "Capacidad Media (AverageCapacity)" del Embalaje no puede ser inferior al parámetro "Capacidad Mínima (MinimumCapacity)"! |
| APR‑006 | ¡El parámetro "Capacidad Máxima (MaximumCapacity)" del Embalaje no puede ser inferior al parámetro "Capacidad Mínima (MinimumCapacity)"! |
| APR‑007 | ¡El parámetro "Capacidad Estándar (StandardCapacity)" del Embalaje no puede ser superior al parámetro "Capacidad Máxima (MaximumCapacity)"! |
| APR‑008 | ¡El parámetro "Capacidad Media (AverageCapacity)" del Embalaje no puede ser superior al parámetro "Capacidad Máxima (MaximumCapacity)"! |
| APR‑009 | ¡El parámetro "Capacidad Mínima (MinimumCapacity)" del Embalaje no puede ser superior al parámetro "Capacidad Máxima (MaximumCapacity)"! |
| APR‑010 | ¡El parámetro "Tolerancia mínima (MinimumTolerancePercentage)" no puede ser mayor que el parámetro "Tolerancia máxima (MaximumTolerancePercentage)"! |
| APR‑011 | ¡El parámetro "Código de la Producción (ProductionCode)" excedió el tamaño máximo de "[Cantidad máxima de caracteres permitida para el código de producción del producto]" caracteres! |
| APR‑012 | ¡El parámetro "Código de la Producción (ProductionCode)" ya está vinculado con otro producto! |
| APR‑013 | ¡Existe registro de producto con el embalaje ([valor enviado en la solicitud]) y material ([valor enviado en la solicitud]) vinculado a otro código externo de producto ([código externo del producto encontrado])! |
| APR‑014 | No se informó el parámetro Código Externo de la Regla de Validez (ValidityRuleNo) y el parámetro Cantidad de Días de Validez (ExpirationDays). ¡Reporta al menos uno! |
| APR‑015 | ¡El código de producto externo ([valor enviado en la solicitud]) ya está registrado con otro material y otro embalaje y posee registros de producción, por lo que no puede vincularse al material ([valor enviado en la solicitud]) y al embalaje ([valor enviado en la solicitud])! |
| APR‑016 | ¡La estructura de producción informada ([valor enviado en la solicitud]) pertenece a otra sucursal y no puede vincularse al producto en la sucursal ([valor enviado en la solicitud])! |
| APR‑017 | ¡La sucursal informada ([valor enviado en la solicitud]) no posee unidad de faena registrada, por lo que la estructura de producción ([valor enviado en la solicitud]) no puede vincularse al producto! |