Skip to content

Tag-icone-mini.png APIs do Totali Middleware

Conceito ​

O processo deve receber os dados do documento e as campanhas disponíveis.
Irá realizar a chamada do Motor de Promoção repassando os dados das campanhas recebidas.
Irá devolver o documento indicando as campanhas utilizadas em cada item e seus respectivos desconto sobre cada item, assim como indicação para geração de cupom para venda futura.

Valida Sessão ​

Não

Para mais informações para a Validação de sessão e obtenção da Assinatura, verificar a documentação do padrão de trocas de informações neste link.

Exemplo de como deve ser enviado o comando completo:

{ "Parametros":{ "Id":55251, "Dados":{ "Documento":{ Dados do Documento de Venda... }, "Campanhas":[ { Dados das campanhas de desconto aplicáveis a operação... } ] } }, "Assinatura":"71AC25C67D801BE7933756BA48C3950D" }

API ​

TCommerceLocalAPI

Método ​

CalculaDescontoDaCampanha

Exemplo de chamada: http://localhost:8080/datasnap/rest/TCommerceLocalAPI/CalculaDescontoDaCampanha

Troca de informações ​

  • Parâmetros de Entrada:

{ "Documento": { "Filial": "<Código da Filial [TD_FIL.CODFIL]>", "CNPJFilial": "<CNPJ da Filial [TD_FIL.CGCFIL]>", "CanalVenda": "<Canal da venda (L - Loja, O - Omnichannel, T - Todos) [TT_CPR.CANAPL]>", "ValorTotal": "<Valor Total [TT_ORC.VLRTOT]>", "__comment__": "OBS: Para o campo "DataVenda" utilizar Encode: ISO_8601", "DataVenda": "<Date/Hora do Pedido [TT_ORC.PED_EM]>", "Itens": [{ "__comment__": "<Lista de Itens>", "NumeroItem": <Número do item [TT_IOR.NUMITE] (Sequencial do item)>, "ProdutoServico": { "__comment__": "<Obrigatório informar um dos 4 códigos abaixo>", "ProdutoServicoChave":"<Código do Produto (EX: FILMAT || CODMAT) (opcional)>", "GradeProdutoServicoChave":"<Código da Grade (EX: FILMAT || CODMAT || - || CODCOR || - || CODTAM) (opcional)>", "ChaveAlternativa": "<Chave Alternativa do produto (EX: FILMAT || CODMAT || - || CODCOR || - || CODTAM) (opcional)>", "Chave": "<Chave do produto [Pro_Chave da consulta] (opcional)>", "__comment__": "<Os campos (Filmat - Codmat - Codcor - Codtam) devem ser informado em conjunto>", "Filmat":"<Filial do produto (opcional)>", "Codmat":"<Código do produto (opcional)>", "Codcor":<Código do produto (opcional)>, "Codtam":<Código do produto (opcional)>, "__comment__": "<Apesar dos campos serem opcionais se não informados pode causar o não enquadramento do item nas regras/aplicações das campanhas de desconto>", "Departamento":<Código do Departamento (opcional)>, "Classe1":<Código do Classe 1 (opcional)>, "Classe2":<Código do Classe 2 (opcional)>, "Classe3":<Código do Classe 3 (opcional)>, "Classe4":<Código do Classe 4 (opcional)> }, "Quantidade": <Quantidade [TT_IOR.QTDITE]>, "ValorUnitario": <Valor Unitário [TT_IOR.VLRITE]>, "ValorDesconto": <Valor do Desconto [TT_IOR.VLRDES] (opcional)>, "ValorAcrescimo": <Valor do Acréscimo [TT_IOR.VLRACR] (opcional)>, "ValorTotalSemAcrescimoDesconto": <Valor Total Sem Desconto/Acréscimo [TT_IOR.VLRPGT]>, "ValorTotal": <Valor Total [TT_IOR.VLRCUS>, "PrecoPromocinal": "<Promoção? (True ou False)>", "PrecoDeTabela": <Valor Unitário [TT_IOR.VLRENT]> }], "Cliente": { "__comment__": "<Cliente -> Obrigatório informar um dos 2 códigos abaixo>", "Chave": "<Chave do Parceiro [TT_CLI.FILCLI || TT_CLI.CODCLI] (opcional)>", "FilCli": "<Filial do Parceiro [TT_CLI.FILCLI] (opcional) - Campo deve ser informado em conjunto com CodCli>", "CodCli": "<Código do Parceiro [TT_CLI.CODCLI] (opcional) - Campo deve ser informado em conjunto com FilCli>" } } "Campanhas": [{ "Chave":"<Chave>", "Filial":"<Filial (opcional)>", "Sequen":"<Sequenciador (opcional)>", "Descricao":"<Descrição (opcional)>", "Ativo": < Ativo ? true ou false > , "__comment__":"OBS: Para o campo (DataInclusao - DataAtualizacao - DataInicioVigencia - DataFinalVigencia) utilizar Encode: ISO_8601", "DataInclusao":"", "DataAtualizacao":"<Data Atualização (opcional)>", "DataInicioVigencia":"<Data Início da Vigência (opcional)>", "DataFinalVigencia":"<Data Final da Vigência (opcional)>", "TipoAplicacao": "<Tipo de aplicação (L - Livre, C - Por Cupom)>" , "CanalAplicacao": "<Canal da venda (L - Loja, O - Omnichannel, T - Todos) [TT_CPR.CANAPL]>" , "FilialAplicacao":"<Filial de aplicação da campanha (opcional)>", "PermiteUsoComOutrosDescontos": < Permitir uso com produtos com outro desconto ? (true ou false) > , "ValorMinimoCompra": < Valor mínimo da compra > , "SolicitaPermissaoVendaAbaixoCustoReposicao": < Solicitar permissão quando valor de venda ficar abaixo do Custo de Reposição ? (T - True ou F - False) > , "Gatilhos": [{ "Chave":"< Chave >", "Sequen":"< Sequenciador (opcional) >", "Ativo": < Ativo ? true ou false > , "__comment__":"OBS: Para o campo (DataInclusao - DataAtualizacao) utilizar Encode: [https: //pt.wikipedia.org/wiki/ISO_8601 ISO_8601]", "DataInclusao":"<Data Inclusão (opcional)>", "DataAtualizacao":"<Data Atualização (opcional)>", "TipoGatilho": "<Tipo de Gatilho (O - Para operação atual; G - Cupom para uso futuro)>" , "TipoObrigatoriedade": "<Tipo de Obrigatoriedade(U - Apenas uma das regras aplicadas sobre os produtos; T - Todas as regras aplicadas sobre os produtos)>" , "CampanhaCupomFuturo": { "Chave":"< Chave >", "Filial":"< Filial (opcional) >", "Sequen":"< Sequenciador (opcional) >" }, "RegrasCliente": [{ "Chave":"< Chave >", "Sequen":"< Sequenciador (opcional) >", "__comment__":"OBS: Para o campo (DataInclusao - DataAtualizacao) utilizar Encode: [https: //pt.wikipedia.org/wiki/ISO_8601 ISO_8601]", "DataInclusao":"<Data Inclusão (opcional)>", "DataAtualizacao":"<Data Atualização (opcional)>", "CodigoCategoria1Chave":"<Código do Categoria 1 (opcional)>", "CodigoCategoria2Chave":"<Código do Categoria 2 (opcional)>", "CodigoCategoria3Chave":"<Código do Categoria 3 (opcional)>", "Cliente": { "__comment__":"<Cliente -> Obrigatório informar um dos 3 códigos abaixo>", "CodigoExterno":"<Código Externo do Parceiro [TT_CLI.CODEXT] (opcional)>", "NumDoc":"<Número do Documento [TT_CLI.NUMDOC] (opcional)>", "FilCli":"<Filial do Parceiro [TT_CLI.FILCLI] (opcional) - Campo deve ser informado em conjunto com CodCli>", "CodCli":"<Código do Parceiro [TT_CLI.CODCLI] (opcional) - Campo deve ser informado em conjunto com FilCli>" } } ], "RegrasProduto": [{ "Chave":"< Chave >", "Sequen":"< Sequenciador (opcional) >", "__comment__":"OBS: Para o campo (DataInclusao - DataAtualizacao) utilizar Encode: [https: //pt.wikipedia.org/wiki/ISO_8601 ISO_8601]", "DataInclusao":"<Data Inclusão (opcional)>", "DataAtualizacao":"<Data Atualização (opcional)>", "QuantidadeMinimaDeCompra": < Quantidade mínimo de compra(opcional) > , "QuantidadeMaximaDeCompra": < Quantidade máxima de compra(opcional) > , "CodigoDepartamentoChave":"<Código do Departamento (opcional)>", "CodigoClasse1Chave":"<Código do Classe 1 (opcional)>", "CodigoClasse2Chave":"<Código do Classe 2 (opcional)>" "CodigoClasse3Chave":"<Código do Classe 3 (opcional)>", "CodigoClasse4Chave":"<Código do Classe 4 (opcional)>", "ProdutoServicoChave":"<Código do Produto (EX: FILMAT || CODMAT) (opcional)>", "GradeProdutoServicoChave":"<Código da Grade (EX: FILMAT || CODMAT || - || CODCOR || - || CODTAM) (opcional)>", "DivisaoChave":"<Código da Divisão (EX: CODCOR) (opcional)", "SubDivisaoChave":"<Código da Sub-Divisão (EX: CODTAM) (opcional)" } ], "Aplicacoes": [{ "Chave":"< Chave >", "Sequen":"< Sequenciador (opcional) >", "__comment__":"OBS: Para o campo (DataInclusao - DataAtualizacao) utilizar Encode: [https: //pt.wikipedia.org/wiki/ISO_8601 ISO_8601]", "DataInclusao":"<Data Inclusão (opcional)>", "DataAtualizacao":"<Data Atualização (opcional)>", "TipoAplicacao": "<Tipo da Aplicação (F - Preço Fixo por Produto; P - Percentual; V - Valor)>", "ValorAplicado": < Valor aplicado para o Desconto > , "QuantidadeAplicada": < Aplicar somente sobre a quantidade de produtos indicada EX: Para uma unidade do departamento (elétrico) aplicar o valor de R$ 0.01 (opcional)> , "AplicadaSobreMultiplos": < Aplicação realizada sobre múltiplos ? (true ou false) > , "CodigoDepartamentoChave":"<Código do Departamento (opcional)>", "CodigoClasse1Chave":"<Código do Classe 1 (opcional)>", "CodigoClasse2Chave":"<Código do Classe 2 (opcional)>" "CodigoClasse3Chave":"<Código do Classe 3 (opcional)>", "CodigoClasse4Chave":"<Código do Classe 4 (opcional)>", "ProdutoServicoChave":"<Código do Produto (EX: FILMAT || CODMAT) (opcional)>", "GradeProdutoServicoChave":"<Código da Grade (EX: FILMAT || CODMAT || - || CODCOR || - || CODTAM) (opcional)>", "DivisaoChave":"<Código da Divisão (EX: CODCOR) (opcional)", "SubDivisaoChave":"<Código da Sub-Divisão (EX: CODTAM) (opcional)" } ] } ], "Cupom": { "__comment__": "<Lista de Cupom (opcional)>", "Chave": "<Chave do cupom [TT_CUP.CODFIL || TT_CUP.SEQUEN]>", "Filial":"<Filial [TT_CUP.CODFIL] (opcional)>", "Sequen":"<Sequenciador [TT_CUP.SEQUEN] (opcional)>", "Numero": "<Número do cupom [TT_CUP.NUMERO]>", "Ativo": < Ativo ? true ou false [TT_CUP.CUPATI] (opcional)> , "__comment__":"OBS: Para o campo (DataInclusao - DataAtualizacao - DataInicioVigencia - DataFinalVigencia) utilizar Encode: ISO_8601", "DataInclusao":"", "DataAtualizacao":"<Data Atualização [TT_CUP.ATU_EM] (opcional)>", "DataInicioVigencia":"<Data Início da Vigência [TT_CUP.DATINI] (opcional)>", "DataFinalVigencia":"<Data Final da Vigência [TT_CUP.DATFIM](opcional)>", "NumeroMaximoDeUso": "<Número máximo de uso (número máximo de compras para todos os clientes) [TT_CUP.USOMAX] (opcional)>", "NumeroMaximoDeUsoPorCliente": "<Número máximo de uso por cliente (número máximo de compras com o cupom por cliente) [TT_CUP.USOCLI] (opcional)>", "Usos":[{ "Cliente": { "Chave": "<Chave do Parceiro (opcional)>", "FilCli": "<Filial do Parceiro [TT_CLI.FILCLI] (opcional) - Campo deve ser informado em conjunto com CodCli> [TT_CUPXUSO.FILCLI]", "CodCli": "<Código do Parceiro [TT_CLI.CODCLI] (opcional) - Campo deve ser informado em conjunto com FilCli> [TT_CUPXUSO.CODCLI]" }, "ChaveVenda": "<Chave da Venda [TT_CUPXUSO.FILVEN || TT_CUPXUSO.SEQVEN]> (opcional)", "FilialVenda": "<Filial da Venda [TT_CUPXUSO.FILVEN]> (opcional)", "SequenVenda": "<Sequenciador da Venda [TT_CUPXUSO.SEQVEN] (opcional)>" } ] } } ] }

  • Parâmetros de Saída:

Exemplo de retorno com erro

{ "result": { "controle": { "err": true, "cod": "", "msg": "Mensagem de erro" } } } ou { "error": "Mensagem de erro" }

Exemplo de retorno com sucesso

{ "result": { "controle": { "err": false, "cod": 0, "msg": "" }, "conteudo": { "livre": { "Itens": [{ "__comment__": "<Lista de Itens>", "NumeroItem": <Número do item [TT_IOR.NUMITE] (Sequencial do item)>, "ValorDescontoAcrescimoAplicados": <Valor Desconto Aplicado>, "QuantidadeAtendida": <Quantidade Total Atendida do item>, "ItensCampanha": [{ "__comment__": "<Lista de Campanhas utilizadas>", "CampanhaDescontoChave":"<Chave da Campanha [TT_CPR.CODFIL || TT_CPR.SEQUEN]>", "CampanhaDeDesconto": { "__comment__": "<Campanha utilizada>", "Chave": "<Chave da Campanha [TT_CPR.CODFIL || TT_CPR.SEQUEN]>", "Filial": "<Filial [TT_CPR.CODFIL]>", "Sequen": "<Sequenciador [TT_CPR.SEQUEN]>" }, "ValorTotalDesconto": <Valor Total de Desconto aplicado>, "QuantidadeAtendida": <Quantidade sobre o qual o Desconto foi aplicado>, "SolicitaPermissaoDeDescontoAcimaDoPermitido": <Indicador de para solicitar permissão devido ao valor do item ficar abaixo do custo de reposição após desconto aplicado>, }] }], "CuponsUtilizados": [{ "__comment__": "<Lista de Cupons utilizados. (opcional)>", "Chave": "<Chave do Cupom [TT_CUP.CODFIL || TT_CUP.SEQUEN]>", "Numero": "<Número do cupom [TT_CUP.NUMERO]>" } ], "CuponsNaoUtilizados": [{ "__comment__": "<Lista de Cupons não utilizados. Motivos (Campanha vinculada no cupom não atende aos requisitos mínimos>", "__comment2__": "<(Valor de venda, Filial de aplicação, Tabela de Preço, Canal de Venda). Cupom ou Campanha vinculada fora da validade. Cupom já atingiu o Limite de Uso) (opcional)>", "Chave": "<Chave do Cupom [TT_CUP.CODFIL || TT_CUP.SEQUEN]>", "Numero": "<Número do cupom [TT_CUP.NUMERO]>" } ], "CampanhasFuturas": [{ "__comment__": "<Lista de Campanha Futuras disponível para geração de Cupom (opcional)>", "Chave": "<Chave da Campanha [TT_CPR.CODFIL || TT_CPR.SEQUEN]>", "Filial": "<Filial [TT_CPR.CODFIL]>", "Sequen": "<Sequenciador [TT_CPR.SEQUEN]>" } ], "TemCampanhaAplicada": "<Indicador se houve campanhas aplicadas sobre a venda>" } } } }

Exemplo ​

  • Chamada e Retorno

Parâmetros de Entrada:

{ "Parametros": { "Id": 1, "Dados": { "__comment__": "<JSON de (Parâmetros de Entrada) do serviço>" } }, "Assinatura": "DAD4E878F1AFEAA196F0F15963AD289F" }

Parâmetros de Saída:

{ "result": { "controle": { "err": false, "cod": 0, "msg": "" }, "conteudo": { "livre": { "<Objeto JSON>" } } } }