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

...

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

  • 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 de Clienteregistros 
productSKUERPReferenceKeypor :página 0(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
categoryIdcampanha. 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					   - Origem
order  			 : lastChange			- ordenação
lastChange  	 : 1900-01-01T00:00:00	- data da última alteração
page			 : 1Código do produto (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 a view para manter a integridade dos dados do ERP com o E-commerce.