Pessoal, boa tarde, Estou trabalhando em uma integração de nosso ERP com o Vtex e estou com dificuldades para enviar produtos similares ao Vtex.

Estou usando o método StockKeepingUnitComplementInsertUpdate, mas um dos parâmetros que é ComplementType eu não estou conseguindo identificar e entender o que e como passar.

Alguém teria alguma dica?

Obs.: Anexei um print da tela do SOAP onde estou consumindo o serviço e também o XML do retorno.

Fala @Einstein Braga​, tudo joia?

ComplementType

enum

-

Tipo do complemento (Acessório, sugestão ou similar)

Encontrei essa informação no manual das classes e métodos do webservice da VTEX.

Ou seja, como é um campo enum, logo você deverá enviar uma dessas opções no seu XML.

@Nathan Prestes​ @Augusto Garrucho​

Quando passo em vb.net - wsVtex

StockKeepingUnitComplementInsertUpdate

sObjeto.ComplementType = wsVtex.StockKeepingUnitComplementDTOComplementTypeEnum.Similarly

RETORNO:

"The INSERT statement conflicted with the FOREIGN KEY constraint ""FK_SkuComplemento_ProdutoComplementoTipo"". The conflict occurred in database ""myplace"", table ""dbo.ComplementoTipo"", column 'IdComplementoTipo'." & vbCrLf & "The statement has been terminated."

Sabem o que pode ser?

Quando faço o teste no postman ele funciona nesse padrao abaixo:

<x:Envelope xmlns:x="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tem="http://tempuri.org/" xmlns:vte="http://schemas.datacontract.org/2004/07/Vtex.Commerce.WebApps.AdminWcfService.Contracts" xmlns:arr="http://schemas.microsoft.com/2003/10/Serialization/Arrays"> <x:Header/> <x:Body> <tem:StockKeepingUnitComplementInsertUpdate> <tem:objStockKeepingUnitComplementDTO> <vte:ComplementType>Similarly</vte:ComplementType> <vte:StockKeepingUnitComplements> <arr:int>1325</arr:int> <arr:int>1329</arr:int> </vte:StockKeepingUnitComplements> <vte:StockKeepingUnitId>1325</vte:StockKeepingUnitId> </tem:objStockKeepingUnitComplementDTO> </tem:StockKeepingUnitComplementInsertUpdate> </x:Body> </x:Envelope>

Aparentemente é a mesma coisa. O que pode ser?

Já tentou alterar para:

<vte:ComplementType>Similar</vte:ComplementType>

?

não funciona, tentei, pois o WS pede pra escolher um enum

'''<remarks/> <System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.7.2102.0"), _ System.SerializableAttribute(), _ System.Xml.Serialization.XmlTypeAttribute(TypeName:="StockKeepingUnitComplementDTO.ComplementTypeEnum", [Namespace]:="http://schemas.datacontract.org/2004/07/Vtex.Commerce.WebApps.AdminWcfService.Con"& _ "tracts")> _ Public Enum StockKeepingUnitComplementDTOComplementTypeEnum '''<remarks/> Accessory '''<remarks/> Sugestion '''<remarks/> Similarly '''<remarks/> Generic '''<remarks/> ShowTogether End Enum

Desta forma abaixo funciona perfeitamente fazendo o teste no PostMan

<x:Envelope xmlns:x="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tem="http://tempuri.org/" xmlns:vte="http://schemas.datacontract.org/2004/07/Vtex.Commerce.WebApps.AdminWcfService.Contracts" xmlns:arr="http://schemas.microsoft.com/2003/10/Serialization/Arrays"> <x:Header/> <x:Body> <tem:StockKeepingUnitComplementInsertUpdate> <tem:objStockKeepingUnitComplementDTO> <vte:ComplementType>Similarly</vte:ComplementType> <vte:StockKeepingUnitComplements> <arr:int>1325</arr:int> <arr:int>1329</arr:int> </vte:StockKeepingUnitComplements> <vte:StockKeepingUnitId>1325</vte:StockKeepingUnitId> </tem:objStockKeepingUnitComplementDTO> </tem:StockKeepingUnitComplementInsertUpdate> </x:Body> </x:Envelope>

Porem no WS ele pede pra passar obrigatoriamente o enum que informei acima.

sObjeto.ComplementType = wsVtex.StockKeepingUnitComplementDTOComplementTypeEnum.Similarly

aparentemente é a mesma coisa que passar o que funciona no Postman

<vte:ComplementType>Similarly</vte:ComplementType>

Porem retorna o que falei sobre o conflito com FK

RETORNO:

"The INSERT statement conflicted with the FOREIGN KEY constraint ""FK_SkuComplemento_ProdutoComplementoTipo"". The conflict occurred in database ""myplace"", table ""dbo.ComplementoTipo"", column 'IdComplementoTipo'." & vbCrLf & "The statement has been terminated."

Que estranho... eu sinceramente nunca precisei enviar uma informação através do WS nessa função e não sei ao certo como enviar.

Já li a documentação dessa parte e realmente não informa direito como enviar.

Acredito que o melhor caminho seja a abertura de um chamado.