Páginas filhas
  • APIs Integrações - Politica de desconto

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

...

  • Necessário a instalação do serviço winthor-integracao-preco. Para realizar a instalação desse serviço, segue link com as devidas explicações:

Comece por aqui -> Parametrizações WTA

  • 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.

...

titleImportante

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".

  • A rotina 561 - Cadastrar Política de Desconto tem como objetivo possibilitar o cadastro de políticas de desconto. É utilizada quando a empresa tem interesse em conceder descontos em determinadas situações nos quais poderão ser delimitados por período de vigência, podendo ocorrer também por regiões, clientes, RCA's, supervisores, departamentos, seções ou produtos. Para mais informações 561 - Cadastrar Política de Desconto - DR
  • Para uma política de desconto/ acréscimo está apta para retornar nessa API deverá atender as condições abaixo:

  1. Aba Informações Comuns > Tipo de Desconto -  PCDESCONTO.TIPO deve ser igual a 'C' para ser considerada válida.
  2. Aba Informações Comuns > Origem do Pedido - PCDESCONTO.ORIGEMPED deve ser 'A' - Auto Serviço ou 'O'- Todas.
  3. Aba Informações Comuns > Aplica desconto Automaticamente - PCDESCONTO.APLICADESCONTO deve ser igual a 'S'.
  4. Aba Informações do Produto > PCDESCONTO.CODAUXILIAR não pode ser nulo ou PCDESCONTO.CODPROD não deve ser nulo.
  5. Aba Informações Comuns > Se PCDESCONTO.APENASPLPAGMAX for 'S', na  Aba Informações do Cliente > PCDESCONTO.CODPLPAG não deve ser nulo.
  6. Aba Informações do Cliente > Se PCDESCONTO.TIPOGRUPOREST in ('CL').
  7. Se a condição anterior for verdadeira, PCDESCONTO.CODGRUPOREST não pode ser nulo, na Rotina 3311 deve-se cadastrar o Grupo Cliente

...

  1. .

Integração


PCEMBALAGEM.DTOFERTAFIM
Totvs custom tabs box
tabsDados integrados com Winthor, Envio Parâmetros, Resposta da Requisição, Passo 04
idspasso1,passo2,passo3

A integração consiste em enviar todo estoque disponível que serão utilizados no E-CommerceAPI consiste em buscar as regras de politica de desconto cadastradas na 561.

Totvs custom tabs box items
defaultyes
referenciapasso1

Os dados integrados são: 

API Winthor (Rotina 201)Winthor (Rotina 2017) - ATACADOWinthor (Rotina 2017) - VAREJO
branchIdPCEMBALAGEM.CODFILIALPCEMBALAGEM.CODFILIALPCEMBALAGEM.CODFILIAL
erpReferenceKeyPCTABPR.CODPRODPCTABPR.CODPRODPCTABPR.CODPROD
fixedPricePCPRODUT.PRECOFIXOPCPRODUT.PRECOFIXOPCPRODUT.PRECOFIXO
lastChangePCEMBALAGEM.DTULTALTPVENDAPCEMBALAGEM.DTULTALTPVENDAPCEMBALAGEM.DTULTALTPVENDA
origin20120172017
pricePCTABPR.PVENDA1PCEMBALAGEM.PVENDAATAC1PCEMBALAGEM.PVENDA
PCTABPR.PVENDA2PCEMBALAGEM.PVENDAATACPCTABPR.PVENDA3PCEMBALAGEM.PVENDAATACPCTABPR.PVENDA4PCEMBALAGEM.PVENDAATACPCTABPR.PVENDA5PCEMBALAGEM.PVENDAATACPCTABPR.PVENDA6PCEMBALAGEM.PVENDAATACPCTABPR.PVENDA7PCEMBALAGEM.PVENDAATAC
pricingIpiPCTABPR.VLIPIPCTABPR.VLIPIPCTABPR.VLIPI
pricingStPCTABPR.VLSTPCTABPR.VLSTPCTABPR.VLST
skuIdPCPRODUT.CODAUXILIAR, PCPRODUT.CODPRODPCPRODUT.CODAUXILIAR, PCPRODUT.CODPRODPCPRODUT.CODAUXILIAR, PCPRODUT.CODPROD
taxFigureIdPCTABPR.CODSTPCTABPR.CODSTPCTABPR.CODST
unitMultiplierPCEMBALAGEM.QTUNITPCEMBALAGEM.QTUNITPCEMBALAGEM.QTUNIT
gnreST campo calculado*campo calculado*campo calculado*
stcampo calculado*campo calculado*campo calculado*
calculationBaseFecpcampo calculado*campo calculado*campo calculado*
calculationBaseIpicampo calculado*campo calculado*campo calculado*
calculationBaseSTcampo calculado*campo calculado*campo calculado*
internalSTAliquotcampo calculado*campo calculado*campo calculado*
ipicampo calculado*campo calculado*campo calculado*
ipiAliquotcampo calculado*campo calculado*campo calculado*
externalSTAliquotcampo calculado*campo calculado*campo calculado*
fecpcampo calculado*campo calculado*campo calculado*
fecpAliquotcampo calculado*campo calculado*campo calculado*
offerPricePCEMBALAGEM.POFERTAPCEMBALAGEM.POFERTAPCEMBALAGEM.POFERTA
offerStartDatePCEMBALAGEM.DTOFERTAINIPCEMBALAGEM.DTOFERTAINIPCEMBALAGEM.DTOFERTAINI
WinthorTipo/ TamTag JSONObs
pcdesconto.coddescontonumber(8,0)campaignIdCódigo da campanha
pcdesconto.codfilialvarchar2(2)branchIdCódigo da filial 
pcdesconto.numregiaonumber(4)regionIdCódigo da região
pcdesconto.codprodnumber(6,0)productIdCódigo do produto
pcdesconto.codauxiliarnumber(20,0)barCodeCódigo auxiliar
pcdesconto.codprodprincnumber(6)mainProductIdCódigo do produto principal
pcdesconto.codplpagnumber(4)paymentTermIdCódigo do plano de pagamento
pcdesconto.codgruponumber(10)groupClientIdCódigo do Grupo de Cliente cadastrado na Rotina 3311
pcdesconto.codpracanumber(4)squareIdCódigo da praça
pcdesconto.codativnumber(6)branchActivityIdCódigo do ramo de atividade
pcdesconto.utilizadescredevarchar2(1)useFeeClientNet
pcdesconto.aplicadescontovarchar2(1)taxApplied
pcdesconto.origempedvarchar2(1)orderOriginO - Todos | A - Varejo
pcdesconto.codfornecnumber(6)supplierIdCódigo do fornecedor 
pcdescontofornec.percdescnumber(10,4)supplierFeePercentagePercentual de desconto aplicado ao fornecedor na Rotina 4161
pcdesconto.prioritariageralvarchar2(1)priorityForçar Aplicação de Política Prioritária
pcdesconto.alteraptabelavarchar2(1) useMainProductIdAtiva a promoção para produtos principais
pcdesconto.codclinumber(9)clientIdCódigo do Cliente
pcdesconto.codgruponumber(10)groupClientId
pcdesconto.codredenumber(4)clientNetIdCódigo da rede
pcdesconto.qtininumber(10,4)startQtdQuantidade inicial 
pcdesconto.qtfimnumber(10,4)endQtdQuantidade final
pcdesconto.dtiniciodatestartDateData de inicio da campanha
pcdesconto.dtfimdateendDateData de fim da campanha
pcdesconto.percdescnumber(10,4)feePercentageSe valor positivo é desconto, senão , acréscimo
pcdesconto.percdescnumber(10,4)PercentageValueCampo sem o Sinal de - ou +
CalculadoInteirotypeTipo de aplicação pcdesconto.percdesc sendo:   0 = desconto ,1 = acréscimo
Se valor positivo é desconto=0 , senão - é acréscimo

String

active

I = Cadastro inativo 

A = Cadastro ativo

  • Para validar se uma política está válida, deverá verificar se a mesma não foi movida para o log (PCDESCONTOLOG).

pcdesconto.datalancdateregistrationDateData de cadastro
pcdesconto.dataultalterdatelastChangeDateUltima alteração
pcdesconto.codgruporestnumber(9)restrictionIdCódigo do Grupo de Cliente cadastrado na Rotina 3311
pcdesconto.tipogruporestvarchar2(2)restrictionTermTypeCode'CL' - Cliente
pcdesconto.codeptoInteirocodeDepartmentData de inicio da campanha
pcdesconto.codsecInteirocodeSectionCódigo da seção
pcdesconto.codcategoriaInteirocodeCategoryCódigo da categoria 
pcdesconto.subcategoriaInteirocodeSubCategoryCódigo da sub categoria
pcdesconto.codmarcaInteiro

brandcode

Código da marca


Sobre a Resposta da Requisição na apresentação dos seguintes campos listados: 

SkuId

  • Se o campo PCDESCONTO.CODAUXILIAR estiver preenchido, o retorno será formado por:
    PCPRODUT.CODAUXILIAR + "-" + PCEMBALAGEM.CODPROD,
    onde PCPRODUT é obtido pela busca: PCPRODUT.CODPROD = PCEMBALAGEM.CODPROD.
  • Se o campo PCDESCONTO.CODPROD estiver preenchido, o retorno será:
    PCPRODUT.CODAUXILIAR + "-" + PCDESCONTO.CODPROD,
    onde PCPRODUT é obtido pela busca: PCPRODUT.CODPROD = PCDESCONTO.CODPROD.

PackingId

  • Quando o campo PCDESCONTO.CODAUXILIAR estiver preenchido, o retorno será:
    PCDESCONTO.CODAUXILIAR + "-" + PCEMBALAGEM.CODPROD.

AllPackages

    • Se PCDESCONTO.CODAUXILIAR estiver preenchido, o retorno será false.
    • Se PCDESCONTO.CODAUXILIAR não estiver preenchido, o retorno será true.


Regras para entender os campos de desconto e acréscimo

  1. Campo percdesc (taxa de desconto ou acréscimo)

    • Valores positivos: Representam desconto.
      Exemplo: 10,0000 significa um desconto de 10%.
    • Valores negativos: Representam acréscimo.
      Exemplo: -10,0000 significa um acréscimo de 10%.
  2. Campo percentageValue (valor da porcentagem)

    • Mostra somente o número, sem sinal de positivo (+) ou negativo (-).
      Exemplo: Se o valor for 10,0000, ele pode ser um desconto ou acréscimo, dependendo de como o sistema interpretar.
  3. Campo type (tipo de aplicação)

    • Indica se o valor é desconto ou acréscimo:
      • 0: É um desconto.
      • 1: É um acréscimo.

Como tudo funciona junto:

    • Se o número no campo percdesc for positivo, ele será tratado como um desconto e o type será 0.
    • Se o número no campo percdesc for negativo, ele será tratado como um acréscimo e o type será 1.
offerEndDatePCEMBALAGEM.DTOFERTAFIMPCEMBALAGEM.DTOFERTAFIM
Totvs custom tabs box items
defaultno
referenciapasso2

Exemplo do envio da requisição:

Bloco de código
languagejs
titleURI
method: 'GET',
url: '/apiwinthor/wholesaleprecos/v1/price/listpolitica-desconto'     -> 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.
Bloco de código
languagejs
titleParams
branchId  page			 : 01					   - Códigonúmero da Filial  *requerido
customerId  página (se não informar, assume o padrão)
pageSize		 : 010					   - Códigoquantidade Clientede 
productSKUERPReferenceKeyregistros :por 0página (se não informar, assume o padrão)
lastChange  	 : 1900-01- Código do Produto
providerId		 : 0					- Código do Fornecedor
departmentId	 : 0					- Código do Departamento
sectionId01T00:00:00	   - data da última alteração
startDate        : 1900-01-01T00:00:00	   - data de inicio do pedido
endDate          : 1900-01-01T00:00:00	   - data de fim do pedido
id      		 : 0					   - Código da Seção
categoryId campanha. caso não informado trazer todos
branchId  		 : 0String					   - 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	Filial (lista separado por virgula). Não obrigatório. Se for nulo, tratar como 99
regionId         : 0					- Código do Plano- de Pagamento
measuredUnit	 : string				- Unidade de medida
imported  		 : true/false			- Importado
callOrigin  	 : WCódigo da região (lista separado por virgula), caso não informado trazer todos
productId        : 0					   - Código Origem
orderdo produto 			 : lastChange			- ordenação
lastChange  	 : 1900-01-01T00:00:00	- data da última alteração
page			 : 1(lista separado por virgula), caso não informado trazer todos
barCodeId        : 0					   - númeroCódigo de página
pageSize		 : 10barras, caso não informado trazer todos
suppierId        : 0					- quantidade por página
multiRegionPrice- :Código true/falsedo fornecedor, caso não informado trazer todos 
active      - Trazer as regiões configurados para o E-commerce (rotina 519) API list
useMultiplePricesPerProductPackage: true/false - Retornar os preços por embalagens: true/false			   - Somente cadastros ativos, caso não informado trazer todos  
Totvs custom tabs box items
defaultno
referenciapasso3

Exemplo JSON da resposta:  

Bloco de código
languagejs
titleBody Response
{
        "first": false,
        "items": [
        {
            "branchId        {
            "active": "string",
            "calculationBaseFecp": 0,
            "calculationBaseIpi"true",
            "campaignId": 4899,
            "branchId": "1",
            "regionId": 0,
            "calculationBaseST             
			"productId": 02996,
            "erpReferenceKey            "skuId": 0,
            "externalSTAliquot"7899917123826-2996",
            "barCode": 07899917123826,
            "fecp            "packingId": 0,
            "fecpAliquot"7899917123826-2996",             
			"mainProductId": 0,
            "fixedPrice            "paymentTermId": false1,
            "internalSTAliquot            "groupClientId": 0,
            "ipi            "squareId": 0,
            "ipiAliquot            "branchActivityId": 0,
            "lastChange": "2021-07-23T15:25:19",
            "noTaxesPrice            "useFeeClientNet": "N",
            "taxApplied": "S",
            "orderOrigin": "O",
            "supplierId": 0,
            "supplierFeePercentage": 0,
            "origin            "priority": 201"N",
            "price            "useMainProductId": 129.25,
            "pricingIpi"N",
            "clientId": 0,
            "pricingSt            "clientNetId": 0.0,
            "skuId": "000-0",
            "st": 0,
            "taxFigureId": 10,
            "unitMultiplier": 0,
			"offerPrice": 0,
			"offerStartDate": "",
			"offerEndDate": "",
            "gnreST": false,
            "startDate": "0024-11-06T00:00:00",
            "endDate": "0025-11-06T23:59:59",
            "feePercentage": -10,
            "percentageValue": 10,
            "type": 1,
            "registrationDate": "2024-11-06T17:10:19",
            "lastChangeDate": "0024-11-06T00:00:00",
            "restrictionId": 1,
            "restrictionTermTypeCode": "CL",
            "codeDepartment": 0,
            "codeSection": 0,
            "codeCategory": 0,
            "codeSubCategory": 0,
            "priceRegionbrandcode": 10
            }
        ],
        "hasNext": false 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.