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.

...

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

Integração


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

A integração API consiste em enviar todas buscar as regras de politica de desconto cadastradas na 561 por filial.

Totvs custom tabs box items
defaultyes
referenciapasso1

Os dados integrados são: 

Tag

WinthorTipo/ TamInglesTag JSONObscodigoCampanha
pcdesconto.coddescontonumber(8,0)campaignIdcodigoFilialCódigo da campanha
pcdesconto.codfilialvarchar2(2)branchIdpode ser nulonumeroRegiaoCódigo da filial 
pcdesconto.numregiaonumber(4)regionIdcodigoProdutoCódigo da região
pcdesconto.codprodnumber(6,0)productIdcodigoBarrasCódigo do produto
pcdesconto.codauxiliarnumber(20,0)barCodecodigoProdutoPrincipalCódigo auxiliar
pcdesconto.codprodprincnumber(6)mainProductIdcodigoPlanoPagamentoCódigo do produto principal
pcdesconto.codplpagnumber(4)paymentTermIdcodigoGrupoRestricaoPlanoPagtoCódigo do plano de pagamento
pcdesconto.codgruponumber(10)groupClientIdcodigoPracaCódigo do Grupo de Cliente cadastrado na Rotina 3311
pcdesconto.codpracanumber(4)squareIdcodigoRamoAtividadeCódigo da praça
pcdesconto.codativnumber(6)branchActivityIdusaClientePrincipalCódigo do ramo de atividade
pcdesconto.utlizadescredeutilizadescredevarchar2(1)useFeeClientNetaplicaDescontoAutomatico
pcdesconto.aplicadescontovarchar2(1)taxApplied
origempcdesconto.origempedvarchar2(1)orderOriginO - Todos | A - VarejocodigoFornecedor
pcdesconto.codfornecnumber(6)supplierIdpercentualTaxaFornecedorCódigo do fornecedor 
pcdescontofornec.percdescnumber(10,4)supplierFeePercentageprioritariaPercentual de desconto aplicado ao fornecedor na Rotina 4161
pcdesconto.prioritariageralvarchar2(1)priorityusaProdutoPrincipalForçar Aplicação de Política Prioritária
pcdesconto.alteraptabelavarchar2(1) useMainProductIdativa Ativa a promoção para produtos principaiscodigoCliente
pcdesconto.codclinumber(9)clientIdcodigoGrupoClienteCódigo do Cliente
pcdesconto.codgruponumber(10)groupClientIdcodigoRedeCliente
pcdesconto.codredenumber(4)clientNetIdqtdInicialCódigo da rede
pcdesconto.qtininumber(10,4)startQtdqtdFinalQuantidade inicial 
pcdesconto.qtfimnumber(10,4)endQtddataInicioQuantidade final
pcdesconto.dtiniciodatestartDatedataFimData de inicio da campanha
pcdesconto.dtfimdateendDatepercentualTaxaData de fim da campanha
pcdesconto.percdescnumber(10,4)feePercentageSe valor positivo é desconto, senão , acréscimopercentualValue
pcdesconto.percdescnumber(10,4)PercentageValueCampo sem o Sinal de - ou +tipo
CalculadoInteirotypeTipo de aplicação pcdesconto.percdesc sendo:   0 = desconto ,1 = acréscimo
Se valor positivo é desconto=0 , senão - é acréscimo
situacaosituation

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

dataCadastro
pcdesconto.datalancdateregistrationDatedataUltimaAlteracaoData de cadastro
pcdesconto.dataultalterdatelastChangeDatecodigoRestricaoPlanoPagtoUltima alteração
pcdesconto.codgruporestnumber(9)restrictionIdcodigoTipoRestricaoPlanoPagtoCódigo do Grupo de Cliente cadastrado na Rotina 3311
pcdesconto.tipogruporestvarchar2(2)restrictionTermTypeCode'CL' - ClientecodigoDepartamento
pcdesconto.codeptocodigoSecaoInteirocodeDepartmentData de inicio da campanha
pcdesconto.codsecInteirocodeSectionCódigo da seçãocodigoCategoria
pcdesconto.codcategoriaInteirocodeCategoryCódigo da categoria codigoSubCategoria
pcdesconto.subcategoriaInteirocodeSubCategoryCódigo da sub categoriacodigoMarca
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.
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ódigo Cliente 
productSKUERPReferenceKey : 0       	- Código do Produto
providerId		 : 0					- Código do Fornecedor
departmentId	 : 0					- Código do Departamento
sectionId 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 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		 : 10 barras, 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": "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        {
            "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,
            "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 manter a integridade dos dados.

...