Permitir que o PDV aplique descontos na venda atual. O parceiro receberá o JSON com as informações da venda, devendo colocar o desconto nos itens, para retornar as informações ao PDV.
O parceiro pode configurar uma mensagem caso necessário, por exemplo, informando quanto de desconto o cliente ganhou ou quantos pontos ele ganhou com a compra.
O PDV precisa estar com a operação de Subtotal da venda, na operação de Início da venda e Finalização da venda não serão aplicados descontos.
O desconto poderá ser recebido mais de uma vez, quando o fluxo voltar para o PDV solicitando um novo desconto. A seguir exemplos de como executar esta operação.
PARÂMETRO | TIPO | OBRIGATÓRIO | DESCRIÇÃO | ||||||||||||||||||
Version | string | true | Versão da API | ||||||||||||||||||
Execution | string | true | Tipo da execução cetContinue, cetInterrupt, cetFailed | ||||||||||||||||||
Increase | double | true | Valor total dos acréscimos na venda | ||||||||||||||||||
Discount | double | true | Valor total dos descontos na venda | ||||||||||||||||||
Total | double | true | Valor total da venda | ||||||||||||||||||
ItemNumber | double | true | Número do item | ||||||||||||||||||
UnitPrice | double | true | Valor bruto do produto | ||||||||||||||||||
IncreasePrice | double | true | Acréscimo no item | ||||||||||||||||||
PackingQuantity | double | true | Quantidade itens por embalagem | ||||||||||||||||||
Quantity | double | true | Quantidade de itens | ||||||||||||||||||
TotalPrice | double | true | Valor total do item após descontos e acréscimos | ||||||||||||||||||
DiscountPrice | double | true | Valor total dos descontos aplicados nos itens | ||||||||||||||||||
Status | string | true | Status do item. Tipo de dado (sttValid, sttCanceled) | ||||||||||||||||||
Text | string | true | Texto da mensagem customizada | ||||||||||||||||||
PartitionDiscount | array of objects | false | Distribuição do total de descontos nos itens por regras de descontos e parceiros
| ||||||||||||||||||
PartitionIncrease | array of objects | false | Distribuição do total de acréscimos nos itens por regras de acréscimos e parceiros
| ||||||||||||||||||
SellerCode | string | false | Informar o código do vendedor. |
Observação : A tag IncreDiscType será informada pelo PDV, pois ela é um informativo do que foi aplicado no PDV.
O desconto pode ser aplicado no total do cupom ou em itens do cupom.
Quando o PDV tiver em operação “Finalizar venda”, todo desconto aplicado na forma de pagamento ou no cupom, será rateado proporcionalmente nos itens, informando o código indicador da promoção do parceiro.
Em caso de desconto ou acréscimo, no rateio dos itens será identificado o código do parceiro através do parâmetro “PartnerCode” e o código da promoção através do parâmetro “PromotionCode”. Quando retornar zero, o desconto foi aplicado de forma manual ou por alguma regra cadastrada interna no PDV.
O integrador não deverá utilizar os valores de descontos presentes no cupom, para bases de cálculos, pois os valores do mesmo estarão rateados entre os valores de descontos dos itens.
O PDV não realizará Cálculos para apuração de descontos ou acréscimo, ele atuará sempre de acordo com o retorno da API do parceiro.
No exemplo abaixo foram adicionados dois itens no cupom.
Cupom da venda – Foi adicionado um desconto no campo "discount" de R$ 1,00
Notem quem não foram informados valores de descontos nos "items" e foi informado em "partitionDiscount" dentro da "sale" (Cupom). O desconto que será rateado pelo o PDV na finalização da venda.
JSON Completo
{
"version": 1,
"execution": "cetCompleted",
"interpret": null,
"sale": {
"increase": 0,
"discount": 1,
"total": 0,
"header": null,
"payments": [],
"paymentChange": null,
"solidaryChange": null,
"items": [
{
"itemNumber": 1,
"unitPrice": 0,
"increasePrice": 0,
"packingQuantity": 0,
"quantity": 0,
"totalPrice": 0,
"discountPrice": 0,
"status": "sttValid",
"sellerCode": 0,
"partitionIncrease": [],
"partitionDiscount": [
{
"price": 0,
"partnerCode": 0,
"promotionCode": 10,
"discountAmount": 1,
"IncreDiscType": 1
},
{
"price": 0,
"partnerCode": 0,
"promotionCode": 43,
"discountAmount": 1,
"IncreDiscType": 2
}
]
},
{
"itemNumber": 2,
"unitPrice": 0,
"increasePrice": 0,
"packingQuantity": 0,
"quantity": 0,
"totalPrice": 0,
"discountPrice": 0,
"status": "sttValid",
"sellerCode": 0,
"partitionIncrease": [],
"partitionDiscount": [
{
"price": 0,
"partnerCode": 0,
"promotionCode": 11,
"discountAmount": 1,
"IncreDiscType": 2
},
{
"price": 0,
"partnerCode": 0,
"promotionCode": 94,
"discountAmount": 1
"IncreDiscType":1
}
]
}
],
"discountCodes": [],
"messages": {
"customer": [],
"user": [
{
"text": "Nesta compra ganhou R$ 1,00 de desconto"
}
]
},
"vouchersPrint": [
{
"text": " CUPOM DESCONTO 1\r\n\r\n Cupom de 5% de desconto para \r\npróxima\r\ncompra, aplicado para todos os \r\nprodutos.\r\n\r\n[ImpBarra]1234567890\r\n[ImpFimBarra]\r\n"
},
{
"text": " CUPOM DESCONTO 2\r\n\r\n Cupom de 10% de desconto para \r\npróxima\r\ncompra, aplicado para todos os \r\nprodutos.\r\n\r\n[ImpBarra]1234567890\r\n[ImpFimBarra]\r\n"
}
],
"partitionIncrease": [],
"partitionDiscount": [
{
"price": 1,
"partnerCode": 0,
"promotionCode": 77,
"discountAmount": 0
}
]
},
"pay": null,
"return": {
"code": 0,
"messageText": "0"
},
"vouchersPrint": []
}
JSON Simplificado com parâmetros necessários
{
"version"1,
"execution""cetCompleted",
"sale"{
"discount"1.00
}
}
No exemplo abaixo foi adicionado um item no cupom.
Item 1 – Foi adicionado um desconto de R$0,44 com o Código do parceiro 10 e o código da promoção 210, encontrados no PartitionDiscount do Item.
IMPORTANTE: Caso o desconto fosse aplicado em mais de uma unidade o “discountPrice” deve conter a soma dos descontos, neste exemplo o desconto é de R$0,44 por item, ou seja, se fossem duas unidades o discountPrice seria de R$0,88.
Não houve desconto no cupom da venda, apenas desconto no item.
JSON Completo
{
"version": 1,
"execution": "cetCompleted",
"interpret": null,
"sale": {
"increase": 0,
"discount": 0,
"total": 0,
"header": null,
"payments": [],
"paymentChange": null,
"solidaryChange": null,
"items": [
{
"itemNumber": 1,
"unitPrice": 0,
"increasePrice": 0,
"packingQuantity": 0,
"quantity": 0,
"totalPrice": 0,
"discountPrice": 0.44,
"status": "sttValid",
"sellerCode": 0,
"partitionIncrease": [],
"partitionDiscount": [
{
"price": 0.2245,
"partnerCode": 10,
"promotionCode": 210,
"discountAmount": 1,
"IncreDiscType": 21
}
]
}
],
"discountCodes": [],
"messages": {
"customer": [],
"user": [
{
"text": "Nesta compra ganhou R$ 1,00 de desconto"
}
]
},
"vouchersPrint": [
{
"text": " CUPOM DESCONTO 1\r\n\r\n Cupom de 5% de desconto para \r\npróxima\r\ncompra, aplicado para todos os \r\nprodutos.\r\n\r\n[ImpBarra]1234567890\r\n[ImpFimBarra]\r\n"
},
{
"text": " CUPOM DESCONTO 2\r\n\r\n Cupom de 10% de desconto para \r\npróxima\r\ncompra, aplicado para todos os \r\nprodutos.\r\n\r\n[ImpBarra]1234567890\r\n[ImpFimBarra]\r\n"
}
],
"partitionIncrease": [],
"partitionDiscount": [
{
"price": 0,
"partnerCode": 0,
"promotionCode": 0,
"discountAmount": 0
}
]
},
"pay": null,
"return": {
"code": 0,
"messageText": "0"
},
"vouchersPrint": []
}
JSON simplificado com parâmetros necessários
{
"version"1,
"execution""cetCompleted",
"sale"{
"items"[
{
"discountAmount"1,
"itemNumber"1,
"discountPrice"0.44,
"discountAmount"1
}
]
}
}
No exemplo abaixo foram adicionados dois itens no cupom.
Item 2 – Foi adicionado um desconto com o código do parceiro 201 e código da promoção 593 no valor de R$ 0,49, encontrado no PartitionDiscount do Item.
Cupom da venda – Foi adicionado desconto na venda.
Desconto cupom 2 – Adicionado desconto com o código do parceiro 201 e código da promoção 568 no valor de R$1,00 encontrado no PartitionDiscount do cupom.
{
"version": 1,
"execution": "cetCompleted",
"interpret": null,
"sale": {
"increase": 0,
"discount": 1,
"total": 0,
"header": null,
"payments": [],
"paymentChange": null,
"solidaryChange": null,
"items": [
{
"itemNumber": 1,
"unitPrice": 0,
"increasePrice": 0,
"packingQuantity": 0,
"quantity": 0,
"totalPrice": 0,
"discountPrice": 0.99,
"status": "sttValid",
"sellerCode": 0,
"partitionIncrease": [],
"partitionDiscount": [
{
"price": 0.49,
"partnerCode": 201,
"promotionCode": 593,
"discountAmount": 1
"IncreDiscType": 1
}
]
}
],
"discountCodes": [],
"messages": {
"customer": [],
"user": [
{
"text": "Nesta compra ganhou R$ 1,00 de desconto"
}
]
},
"vouchersPrint": [
{
"text": " CUPOM DESCONTO 1\r\n\r\n Cupom de 5% de desconto para \r\npróxima\r\ncompra, aplicado para todos os \r\nprodutos.\r\n\r\n[ImpBarra]1234567890\r\n[ImpFimBarra]\r\n"
},
{
"text": " CUPOM DESCONTO 2\r\n\r\n Cupom de 10% de desconto para \r\npróxima\r\ncompra, aplicado para todos os \r\nprodutos.\r\n\r\n[ImpBarra]1234567890\r\n[ImpFimBarra]\r\n"
}
],
"partitionIncrease": [],
"partitionDiscount": [
{
"price": 1,
"partnerCode": 201,
"promotionCode": 568,
"discountAmount": 0,
"IncreDiscType": 2
}
]
},
"pay": null,
"return": {
"code": 0,
"messageText": "0"
},
"vouchersPrint": []
}
Início da venda no PDV, foi inserido um produto e teclado Enter. Após todos os produtos inseridos, foi acionada a função para ir ao Subtotal da venda.
Imagem 1 – Tela de Venda
JSON enviado ao parceiro
{
"Event""cetBefore",
"Execution""cetContinue",
"ID""001600000590921",
"Operation""cotSubtotalSale",
"Sale"{
"Header"{
"AccountingDate""2020-01-22T00 00 00",
"DateTimeIssue""2020-01-22T14 15 36",
"IdDocument"590921,
"IdUser"2,
"Identifcation"[
{
"Document""12345678909",
"PartnerCode""10",
"DocumentType""cdtCPF"
}
],
},
"ID""001600000590921",
"Items"[
{
"BarCode""7891000100103",
"CaptionPacking""UN",
"Description""LEITE COND MOCA LATA 395G",
"DiscountAmount"0,
"DiscountPrice"0,
"IncreasePrice"0,
"InternalCode""4900",
"ItemNumber"1,
"PackingQuantity"1,
"Quantity"1,
"Status""sttValid",
"TotalPrice"4.99,
"UnitPrice"4.99
}
]
}
}
JSON retornado pelo parceiro com uma mensagem para o operador do PDV, nesse caso informa que o cliente ganhou 100 pontos na compra
{
"version"1,
"execution""cetContinue",
"sale"{
"items"[
{
"itemNumber"1,
"discountPrice"0.49,
"discountAmount"1
}
],
"messages"{
"customer"[
{
"text""Ganhou desconto 100 nessa compra"
}
]
},
"vouchersPrint"[
{
"text"" CUPOM DESCONTO 1\r\n\r\n Cupom de 5% de desconto para \r\npróxima\r\ncompra, aplicado para todos os \r\nprodutos.\r\n\r\n[ImpBarra]1234567891231[ImpFimBarra]"
},
{
"text"" CUPOM DESCONTO 2\r\n\r\n Cupom de 10% de desconto para \r\npróxima\r\ncompra, aplicado para todos os \r\nprodutos.\r\n\r\n[ImpBarra]1234567891231[ImpFimBarra]"
}
]
}
}
Tela apresentada ao operador.
Imagem 2 – Pontuação Compra
Após finalização da venda conforme tela abaixo, será impresso o comprovante onde constará os cupons de desconto impressos.
Imagem 3 – Tela Pagamento
Exemplo de texto impresso no cupom.
Imagem 4 – Texto Cupom