Objetivo
Este documento tem como objetivo explicar o funcionamento da integração do Preço dos produtos.
Pré-Requisitos e Restrições
- Necessário a instalação do serviço winthor-pedido-venda. Para realizar a instalação desse serviço, segue link com as devidas explicações:
Comece por aqui -> Parametrizações WTA
- De acordo com as parametrizações realizadas pela rotina 132, parâmetro 2277 - Tipo de precificação, é possível expor os preços pelas seguintes rotinas:
201 – Precificar Produto
Como precificar produtos pela rotina 201 - Precificar produtos
2017 – Precificação Por Embalagem.
Como precificar produtos pela rotina 2017 - Precificação por embalagem
- Caso exista política de preço fixo cadastrada na rotina 357 que se aplique ao conjunto de dados informados (cliente, região, filial, produto, plano de pagamento, etc), o preço a ser exposto será o cadastrado na política.
- A parametrização de venda por embalagem e preço de venda por embalagem será por filial.
- Com o uso do Tipo de precificação Atacado será empregado o preço cadastrado da (Rotina 2017) - Precificação Por Embalagem, gravando o campo (PCEMBALAGEM.PVENDAATAC).
- Com o uso do Tipo de precificação Varejo será empregado o preço cadastrado da (Rotina 2017) - Precificação Por Embalagem, gravando o campo (PCEMBALAGEM.PVENDA).
- Com o uso do Tipo de precificação Padrão será empregado o preço cadastrado da (Rotina 201) - Precificar Produto, gravando o campo (PCTABPR.PVENDA1).
Deve-se preencher o parâmetro 4257 – Código da região para preço CIASHOP (CODREGIAOPRECOCIASHOP) com a Região que será utilizada por Filial.
Caso parâmetro 4257 Não esteja preenchido, é utilizada a região informada no parâmetro 2832 – Número da região utilizada pelo e-commerce (REGIAOECOMMERCE).
- Quando se tratar de produto de Origem Web e/ou E-commerce a API não irá calcular o preço de venda com Impostos. O preço de venda válido será sempre o preço vindo do E-commerce.
- Quando o parâmetro 2277 - Tipo de Precificação da rotina 132 estiver cadastrado como Atacado (A) ou Varejo (V) e estiver sendo usado o preço por embalagem (preço cadastrado na rotina 2017), o retorno da requisição terá os atributos "offerPrice", "offerStartDate" e "offerEndDate", que correspondem respectivamente as colunas POFERTA, DTOFERTAINI e DTOFERTAFIM da tabela PCEMBALAGEM. Do contrário, se o parâmetro estiver como Padrão (P) estes atributos retornarão 0 e vazio.
- Deve-se preencher o campo ENVIAECOMMERCE no cadastro do produto (Rotina 203).
- Deve-se preencher o campo USAECOMMERCE no cadastro da região (Rotina 519) para o envio dos preços dos itens em regiões de e-commerce.
Importante
Quando não houver preenchimento do campo DATA, exemplo (data de cadastro, data de alteração), nossas APIs retornará por padrão a informação "1900-01-01T00:00:00".
Caso necessário, realizar o ajuste nos cadastros para que a API apresente a data desejada.
Integração
A integração consiste em enviar todo estoque disponível que serão utilizados no E-Commerce.
Os dados integrados são:
API | Winthor (Rotina 201) | Winthor (Rotina 2017) - ATACADO | Winthor (Rotina 2017) - VAREJO |
---|---|---|---|
branchId | PCEMBALAGEM.CODFILIAL | PCEMBALAGEM.CODFILIAL | PCEMBALAGEM.CODFILIAL |
erpReferenceKey | PCTABPR.CODPROD | PCTABPR.CODPROD | PCTABPR.CODPROD |
fixedPrice | PCPRODUT.PRECOFIXO | PCPRODUT.PRECOFIXO | PCPRODUT.PRECOFIXO |
lastChange | PCEMBALAGEM.DTULTALTPVENDA | PCEMBALAGEM.DTULTALTPVENDA | PCEMBALAGEM.DTULTALTPVENDA |
origin | 201 | 2017 | 2017 |
price | PCTABPR.PVENDA1 | PCEMBALAGEM.PVENDAATAC1 | PCEMBALAGEM.PVENDA |
PCTABPR.PVENDA2 | PCEMBALAGEM.PVENDAATAC | ||
PCTABPR.PVENDA3 | PCEMBALAGEM.PVENDAATAC | ||
PCTABPR.PVENDA4 | PCEMBALAGEM.PVENDAATAC | ||
PCTABPR.PVENDA5 | PCEMBALAGEM.PVENDAATAC | ||
PCTABPR.PVENDA6 | PCEMBALAGEM.PVENDAATAC | ||
PCTABPR.PVENDA7 | PCEMBALAGEM.PVENDAATAC | ||
pricingIpi | PCTABPR.VLIPI | PCTABPR.VLIPI | PCTABPR.VLIPI |
pricingSt | PCTABPR.VLST | PCTABPR.VLST | PCTABPR.VLST |
skuId | PCPRODUT.CODAUXILIAR, PCPRODUT.CODPROD | PCPRODUT.CODAUXILIAR, PCPRODUT.CODPROD | PCPRODUT.CODAUXILIAR, PCPRODUT.CODPROD |
taxFigureId | PCTABPR.CODST | PCTABPR.CODST | PCTABPR.CODST |
unitMultiplier | PCEMBALAGEM.QTUNIT | PCEMBALAGEM.QTUNIT | PCEMBALAGEM.QTUNIT |
gnreST | campo calculado* | campo calculado* | campo calculado* |
st | campo calculado* | campo calculado* | campo calculado* |
calculationBaseFecp | campo calculado* | campo calculado* | campo calculado* |
calculationBaseIpi | campo calculado* | campo calculado* | campo calculado* |
calculationBaseST | campo calculado* | campo calculado* | campo calculado* |
internalSTAliquot | campo calculado* | campo calculado* | campo calculado* |
ipi | campo calculado* | campo calculado* | campo calculado* |
ipiAliquot | campo calculado* | campo calculado* | campo calculado* |
externalSTAliquot | campo calculado* | campo calculado* | campo calculado* |
fecp | campo calculado* | campo calculado* | campo calculado* |
fecpAliquot | campo calculado* | campo calculado* | campo calculado* |
offerPrice | PCEMBALAGEM.POFERTA | PCEMBALAGEM.POFERTA | PCEMBALAGEM.POFERTA |
offerStartDate | PCEMBALAGEM.DTOFERTAINI | PCEMBALAGEM.DTOFERTAINI | PCEMBALAGEM.DTOFERTAINI |
offerEndDate | PCEMBALAGEM.DTOFERTAFIM | PCEMBALAGEM.DTOFERTAFIM | PCEMBALAGEM.DTOFERTAFIM |
Exemplo do envio da requisição:
method: 'GET', url: '/api/wholesale/v1/price/list' -> Poderá informar todos os PARAMS abaixo. OU url: '/api/wholesale/v1/price/' -> Passar os dados do produto e Filial, e opcionalmente o cliente e plano de pagamento.
branchId : 0 - Código da Filial *requerido customerId : 0 - Código Cliente productSKUERPReferenceKey : 0 - Código do Produto providerId : 0 - Código do Fornecedor departmentId : 0 - Código do Departamento sectionId : 0 - Código da Seção categoryId : 0 - Código da Categoria subcategoryId : 0 - Código da SubCategoria productSegmentId : 0 - Código do Segmento do produto brandId : 0 - Código da Marca paymentPlanId : 0 - Código do Plano de Pagamento measuredUnit : string - Unidade de medida imported : true/false - Importado callOrigin : W - Origem order : lastChange - ordenação lastChange : 1900-01-01T00:00:00 - data da última alteração page : 1 - número de página pageSize : 10 - quantidade por página multiRegionPrice : true/false - Trazer as regiões configurados para o E-commerce (rotina 519) API list useMultiplePricesPerProductPackage: true/false - Retornar os preços por embalagens
Exemplo JSON da resposta:
{ "first": false, "items": [ { "branchId": "string", "calculationBaseFecp": 0, "calculationBaseIpi": 0, "calculationBaseST": 0, "erpReferenceKey": 0, "externalSTAliquot": 0, "fecp": 0, "fecpAliquot": 0, "fixedPrice": false, "internalSTAliquot": 0, "ipi": 0, "ipiAliquot": 0, "lastChange": "2021-07-23T15:25:19", "noTaxesPrice": 0, "origin": 201, "price": 129.25, "pricingIpi": 0, "pricingSt": 0.0, "skuId": "000-0", "st": 0, "taxFigureId": 10, "unitMultiplier": 0, "offerPrice": 0, "offerStartDate": "", "offerEndDate": "", "gnreST": false, "priceRegion": 1 } ], "hasNext": false }
Para que seja realizada uma nova integração atualizando um registro já integrado, o sistema verifica a data de última atualização do registro. Portanto, ao realizar alguma alteração no registro, ele será encaminhado novamente para a view para manter a integridade dos dados do ERP com o E-commerce.