Pular para o conteúdo principal

Produtos

O endpoint PostAddProduct é responsável pelo cadastro de um novo produto no sistema MIMS. O cadastro pode ser visualizado nas telas CAD022 e CAD223.


Como cadastrar um produto​

Request HTTP POST

Tipo da RequisiçãoURL Exemplo
POST{{url_base}}/PostAddProduct
Exemplohttp://seuIPePorta/datasnap/rest/RESTWebServiceMethods/"PostAddProduct"

Parâmetros de Entrada​

ParâmetroTipoObrigatórioDescrição
ProductNoString(25)SimCódigo externo do produto
NameString(60)SimDescrição do produto
ReducedNameString(28)SimDescrição reduzida do produto
ProductionCodeString(10)NãoCódigo do produto na produção
MaterialNoString(25)SimCódigo externo do material
PackageNoString(25)SimCódigo externo da embalagem
FamilyNoString(25)SimCódigo externo da família do produto
BrandNoString(25)SimCódigo externo da marca
AnimalTypeNoString(25)SimCódigo externo do tipo de animal
IntegrationNoString(25)NãoCódigo integração do produto
UnitMeasurementNoString(25)NãoCódigo externo da unidade de medida da peça
BillingUnitMeasurementNoString(25)NãoCódigo externo da unidade de medida de faturamento
ValidityRuleNoString(25)NãoCódigo externo da regra de validade
ExpirationDaysIntegerNãoQuantidade de dias de validade do produto
LabelTemplateCodeIntegerNãoModelo etiqueta
PreIdentificationLabel
TemplateCode
IntegerNãoModelo etiqueta Pré-Identificação
PrimaryLabelTemplateCodeIntegerNãoModelo etiqueta Primária
ConditionConditionProductSimEnumerador com os possíveis valores para a Condição do produto: cdFresh (Fresco), cdDeepChill (Resfriado) ou cdFrozen (Congelado)
SpeciesSpeciesProductSimEnumerador com os possíveis valores para a Espécie do produto: spcWhole (Inteiro), spcCut (Corte), spcGiblets (Miúdo), spcByProduct (Subproduto) ou spcOther (Outro)
RawMaterialStateRawMaterialStateProductSimEnumerador com os possíveis valores para o Estado do produto: mspInNatura (In Natura) ou mspSazonado (Temperado)
EAN13String(13)NãoCódigo EAN 13
EAN14String(14)NãoCódigo EAN 14
MaxTolerancePercentageFloatNãoPorcentagem de tolerância máxima
MinTolerancePercentageFloatNãoPorcentagem de tolerância mínima
AnimalsInPackageQtyIntegerNãoQuantidade de animais na embalagem
ProductInPackageQtyIntegerNãoQuantidade de produtos na embalagem
MaximumCapacityFloatNãoCapacidade Máxima
AverageCapacityFloatNãoCapacidade Média
MinimumCapacityFloatNãoCapacidade Mínima
StandardCapacityFloatNãoCapacidade Padrão
ProductBranchListProductBranchListSimObjeto contendo as informações do produto por filial
OverwriteIfExistsBooleanNãoFlag que indica que os dados devem ser sobrescritos caso o registro já exista
Observação
  • A validade do produto pode ser informada pelo parâmetro ValidityRuleNo ou pelo parâmetro ExpirationDays; pelo menos um dos dois deve ser informado. Quando os dois são enviados, o ValidityRuleNo tem precedência. Ao informar ExpirationDays, o sistema procura uma regra de validade cadastrada em dias com essa mesma quantidade e, quando não encontra nenhuma, cadastra automaticamente uma nova regra com essa quantidade de dias.
  • Nos parâmetros LabelTemplateCode, PreIdentificationLabelTemplateCode e PrimaryLabelTemplateCode, validamos se o valor passado é maior que 0 e verificamos a existência apenas das etiquetas que possuem o código maior ou igual a 1000, pois são as etiquetas que possuem registro na view "VW_ETIQUETA". Se a etiqueta não estiver registrada, geramos a exceção "A etiqueta "[valor enviado na requisição]" informada não foi encontrada!"
  • Nos parâmetros FamilyNo, BrandNo e AnimalTypeNo, quando a requisição for uma alteração de produto e o valor informado for igual ao texto de integração padrão (definido na variável StandardIntegration do arquivo INI), o sistema não atualiza o valor desses campos. Nesses casos, o valor já existente no cadastro do produto será mantido.
  • Certifique-se de que os parâmetros ProductNo, MaterialNo, PackageNo, FamilyNo, BrandNo, AnimalTypeNo e outros códigos externos sejam válidos e não duplicados no sistema MIMS.

📝 Objeto ProductBranchList​

O objeto ProductBranchList representa uma lista de informações do produto por filial.

Parâmetros de Entrada​

ParâmetrosTipoObrigatórioDescrição
BranchNoString(25)SimCódigo externo da filial
NameString(120)NãoDescrição do produto na filial
ProductionGroupNoString(25)NãoCódigo externo do grupo de produção
ProductionStructureNoString(25)NãoCódigo externo da estrutura de produção padrão em que o produto pode ser produzido
WarehouseNoString(25)NãoCódigo externo do almoxarifado
ClassifierGridNoString(25)NãoCódigo externo da grade classificadora
UnitMeasurementNoString(25)NãoCódigo externo da unidade de medida da peça
UnitMeasurementIndi
UnitNo
String(25)NãoCódigo externo da unidade de medida da unidade individual
StockSequestrationDaysIntegerNãoDias sequestro em estoque
ToleranceStandardDateDaysIntegerNãoDias de tolerância da data padrão
DefaultQuantityinPalletIntegerNãoQuantidade padrão de embalagens para montagem do palete
UnidPartQtyIntegerNãoQuantidade de peças por unidade
AnimalsInPackageQtyIntegerNãoQuantidade de animais na embalagem
ProductInPackageQtyIntegerNãoQuantidade de produtos na embalagem
MinRawMaterialPercentageFloatNãoPorcentagem mínima de produto matéria-prima
WeightToleranceUpon
GroupedWeighingPercentage
FloatNãoPorcentagem de tolerância de peso na Pesagem Agrupada
MaxTolerancePercentageFloatNãoPorcentagem de tolerância máxima do peso
MinTolerancePercentageFloatNãoPorcentagem de tolerância mínima do peso
LabelTemplateCodeIntegerNãoModelo Etiqueta
PreIdentificationLabel
TemplateCode
IntegerNãoModelo Etiqueta Pré-Identificação
PrimaryLabelTemplateCodeIntegerNãoModelo Etiqueta Primária
RegisterAgricultureMinistryCodeString(14)SimNúmero registro Ministério da Agricultura
AgricultureMinistryNameString(180)SimDescrição no Ministério da Agricultura
IdentifiesTypeIdentifiesTypeNãoEnumerador com os possíveis valores para o Tipo de Identificação do produto: itOpticalReading (Leitura Óptica) ou itManualTyping (Digitação Manual)
DispatchTypeDispatchTypeSimEnumerador com os possíveis valores para o Tipo de Expedição do produto: dtOpticalReading (Leitura Óptica), dtManualDispatching (Expedição Manual), dtAutomaticDispatching (Expedição Automática) ou dtInBulk (A Granel)
OwnProductionOwnProductionSimEnumerador com os possíveis valores para Produção Própria: opYes (Sim), opNo (Não) ou opBoth (Ambos)
IsInactiveBooleanNãoFlag que indica que o produto está inativo
IsTunnelControlDisabledBooleanNãoFlag que indica que o Controle de Túneis está Inativo
ControlsSecondaryMaterial
Traceability
BooleanNãoFlag que indica que o produto controla a rastreabilidade de material secundário
PrimaryTareFloatNãoTara primária adicional do produto na filial
UpdatePrimaryTareBooleanNãoFlag que indica que a PrimaryTare deve ser gravada exatamente como informada, inclusive com valor zero
OverwriteIfExistsBooleanNãoFlag que indica que os dados devem ser sobrescritos caso o registro já exista
Observação
  • Nos parâmetros PreIdentificationLabelTemplateCode e PrimaryLabelTemplateCode, validamos se o valor passado é maior que 0 e verificamos a existência apenas das etiquetas que possuem o código maior ou igual a 1000, pois são as etiquetas que possuem registro na view "VW_ETIQUETA". Se a etiqueta não estiver registrada, geramos a exceção "A etiqueta "[valor enviado na requisição]" informada não foi encontrada!"
  • Nos parâmetros ClassifierGridNo, WarehouseNo e ProductionGroupNo, quando a requisição for uma alteração de produto e o valor informado for igual ao texto de integração padrão (definido na variável StandardIntegration do arquivo INI), o sistema não atualiza o valor desses campos. Nesses casos, o valor já existente no cadastro do produto será mantido.
  • No parâmetro ControlsSecondaryMaterialTraceability, quando a requisição for uma alteração de produto e o controle de rastreabilidade de material secundário já estiver ativo na filial, o sistema não desativa esse controle, mesmo que o valor informado seja false. Ou seja, via API, em uma alteração, é possível apenas ativar esse controle.
  • Nos parâmetros PrimaryTare e UpdatePrimaryTare, por padrão a tara primária só é gravada quando o valor informado for maior que zero; caso contrário, em uma alteração o valor atual é mantido e em uma inclusão é gravado zero. Para gravar o valor exatamente como informado (inclusive zero, para zerar a tara), envie UpdatePrimaryTare como true.
  • O parâmetro ProductionStructureNo vincula o produto à estrutura de produção em que ele pode ser produzido. A estrutura informada deve pertencer à filial informada em BranchNo.

Retorno​

ParâmetroTipoObrigatórioDescrição
WebServiceReturnWebServiceReturnSimInformações padrão de resposta do WebService na execução do método
ProductCodeIntegerSimCódigo interno do produto gerado no sistema MIMS

Exemplo de Request​

curl --location 'http://seuIPePorta/datasnap/rest/RESTWebServiceMethods/"PostAddProduct"' \
--header 'Content-Type: application/json' \
--data '{
"ProductNo": "PROD001",
"Name": "Nome do produto Teste",
"ReducedName": "Produto Teste",
"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": "Produto Exemplo - 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": "Ministério da Agricultura - Unidade Exemplo",
"IdentifiesType": "itOpticalReading",
"DispatchType": "dtAutomaticDispatching",
"OwnProduction": "opYes",
"IsInactive": false,
"IsTunnelControlDisabled": false,
"ControlsSecondaryMaterialTraceability": false,
"PrimaryTare": 0.05,
"UpdatePrimaryTare": false,
"OverwriteIfExists": true
}
]
}'

Exemplo de Response​

{
"WebServiceReturn": {
"Status": "wrsSuccess",
"ErrorCode": "",
"Message": "",
"Actor": "",
"ReturnQuestion": null
},
"ProductCode": 789
}

🐞 Possíveis Erros​

CódigoMensagem
APR‑001Parâmetro "Código Externo do Produto (ProductNo)" informado já existe!
APR‑002A etiqueta "LabelTemplateCode" informada não foi encontrada!
APR‑002A etiqueta "PreIdentificationLabelTemplateCode" informada não foi encontrada!
APR‑002A etiqueta "PrimaryLabelTemplateCode" informada não foi encontrada!
APR‑002A etiqueta "PreIdentificationLabelTemplateCode" informada não foi encontrada!
APR‑003O parâmetro "Capacidade Padrão (StandardCapacity)" e o parâmetro "Capacidade Média (AverageCapacity)" não foram informados. Informe pelo menos um!
APR‑004O parâmetro "Capacidade Padrão (StandardCapacity)" da Embalagem não pode ser inferior ao parâmetro "Capacidade Mínima (MinimumCapacity)"!
APR‑005O parâmetro "Capacidade Média (AverageCapacity)" da Embalagem não pode ser inferior ao parâmetro "Capacidade Mínima (MinimumCapacity)"!
APR‑006O parâmetro "Capacidade Máxima (MaximumCapacity)" da Embalagem não pode ser inferior ao parâmetro "Capacidade Mínima (MinimumCapacity)"!
APR‑007O parâmetro "Capacidade Padrão (StandardCapacity)" da Embalagem não pode ser superior ao parâmetro "Capacidade Máxima (MaximumCapacity)"!
APR‑008O parâmetro "Capacidade Média (AverageCapacity)" da Embalagem não pode ser superior ao parâmetro "Capacidade Máxima (MaximumCapacity)"!
APR‑009O parâmetro "Capacidade Mínima (MinimumCapacity)" da Embalagem não pode ser superior ao parâmetro "Capacidade Máxima (MaximumCapacity)"!
APR‑010O parâmetro "Tolerância mínima (MinimumTolerancePercentage)" não pode ser maior que o parâmetro "Tolerância máxima (MaximumTolerancePercentage)"!
APR‑011O parâmetro "Código da Produção (ProductionCode)" excedeu o tamanho máximo de "[Quantidade máxima de caracteres permitida para o código de produção do produto]" caracteres!
APR‑012O parâmetro "Código da Produção (ProductionCode)" já está vinculado com outro produto!
APR‑013Existe cadastro de produto com a embalagem ([valor enviado na requisição]) e material ([valor enviado na requisição]) vinculado a outro código externo de produto ([código externo do produto encontrado])!
APR‑014O parâmetro "Código Externo da Regra de Validade (ValidityRuleNo)" e o parâmetro "Quantidade de Dias de Validade (ExpirationDays)" não foram informados. Informe pelo menos um!
APR‑015O código externo de produto ([valor enviado na requisição]) já está cadastrado com outro material e outra embalagem e possui registros de produção, portanto não pode ser vinculado ao material ([valor enviado na requisição]) e à embalagem ([valor enviado na requisição])!
APR‑016A estrutura de produção informada ([valor enviado na requisição]) pertence a outra filial e não pode ser vinculada ao produto na filial ([valor enviado na requisição])!
APR‑017A filial informada ([valor enviado na requisição]) não possui unidade de abate cadastrada, portanto a estrutura de produção ([valor enviado na requisição]) não pode ser vinculada ao produto!