Objetivo

Este documento tem como objetivo explicar o funcionamento da integração de politica de desconto da rotina 561.

Pré-Requisitos e Restrições

Comece por aqui -> Parametrizações WTA

  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.

Integração


A API consiste em buscar as regras de politica de desconto cadastradas na 561.

Os dados integrados são: 

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.

Exemplo do envio da requisição:

method: 'GET',
url: '/winthor/precos/v1/politica-desconto'     -> Poderá informar todos os PARAMS abaixo.
page			 : 1					   - número da página (se não informar, assume o padrão)
pageSize		 : 10					   - quantidade de registros por página (se não informar, assume o padrão)
lastChange  	 : 1900-01-01T00: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 campanha. caso não informado trazer todos
branchId  		 : String				   - Código da Filial (lista separado por virgula). Não obrigatório. Se for nulo, tratar como 99
regionId         : 0					   - Código da região (lista separado por virgula), caso não informado trazer todos
productId        : 0					   - Código do produto (lista separado por virgula), caso não informado trazer todos
barCodeId        : 0					   - Código de barras, caso não informado trazer todos
suppierId        : 0					   - Código do fornecedor, caso não informado trazer todos 
active           : true/false			   - Somente cadastros ativos, caso não informado trazer todos  

Exemplo JSON da resposta:  

{
    "first": false,
    "items": [
        {
            "active": "true",
            "campaignId": 4899,
            "branchId": "1",
            "regionId": 0,             
			"productId": 2996,
            "skuId": "7899917123826-2996",
            "barCode": 7899917123826,
            "packingId": "7899917123826-2996",             
			"mainProductId": 0,
            "paymentTermId": 1,
            "groupClientId": 0,
            "squareId": 0,
            "branchActivityId": 0,
            "useFeeClientNet": "N",
            "taxApplied": "S",
            "orderOrigin": "O",
            "supplierId": 0,
            "supplierFeePercentage": 0,
            "priority": "N",
            "useMainProductId": "N",
            "clientId": 0,
            "clientNetId": 0,
            "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,
            "brandcode": 0
        }
    ],
    "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 manter a integridade dos dados.