Árvore de páginas

01. DADOS GERAIS


Produto:

TOTVS CRM Automação da Força de Vendas

Linha de Produto:

Linha TOTVS CRM SFA

Módulo:Venda
Função:Pedido
Ticket:
Requisito/Story/Issue:

TSFAFSWE-3539 - Obtendo detalhes do item... STATUS TSFAFSWE-3540 - Obtendo detalhes do item... STATUS

Status do DocumentoComprometido

02. ESCOPO FUNCIONAL

Novas opções para pedidos com PIX

Atualmente as transações PIX são geradas com o tempo padrão de expiração de 1 hora. Não é possível via SFA, configurar um tempo maior para expiração de cada transação, de acordo com a necessidade de cada cliente.

O SFA também não permite nenhuma ação de edição ou reabertura dos pedidos com PIX cujas transações tenham sido canceladas ou que expiraram.

Com a melhoria proposta neste escopo, será possível configurar o tempo desejado para que cada transação PIX expire caso não haja confirmação do pagamento.

Também será possível configurar qual ação deve ser aplicada automaticamente sobre o pedido, no momento em que o serviço de atualização de status identificar que a transação vinculada a tal pedido expirou ou foi cancelada.

Será permitido optar pela ação de reabrir o pedido e permitir a edição por parte do usuário gerador, ou então a ação de cancelar o pedido obrigando que um novo pedido seja gerado caso uma nova transação tenha que ser gerada.

03. ESCOPO TÉCNICO

APLICAÇÃO

  • Alterar via Tools opção 3, a tabela PEDIDOPAGAMENTO:

    Alter Table PEDIDOPAGAMENTO
    alter table pedidopagamento add column dataexpiracao timestamp;
  • Adicionar na tela do plugin de Pagamento PIX, os campos conforme protótipo abaixo:



    Novos Campos
    Campo "Duração máxima transação PIX antes de expirar"
    	idpluginintegracao: select idpluginintegracao from pluginintegracao where codigo = 'TPI',
    	codigoelemento: TPI,
    	agrupador: 0,
    	sglcampo: TPI_EXPIRATIONDATE
    	valor: {padrão 1440}
    Campo "Ação automática sobre o pedido quando o serviço de atualização de status identificar que a transação expirou"
    	idpluginintegracao: select idpluginintegracao from pluginintegracao where codigo = 'TPI',
    	codigoelemento: TPI,
    	agrupador: 0,
    	sglcampo: TPI_OPEN
    	valor: {O ou 1, padrão 1}
    
    Campo "Ação automática sobre o pedido quando o serviço de atualização de status identificar que a transação expirou"
    	idpluginintegracao: select idpluginintegracao from pluginintegracao where codigo = 'TPI',
    	codigoelemento: TPI,
    	agrupador: 0,
    	sglcampo: TPI_CANCEL
    	valor: {0 ou 1, padrão 0}


    • Para o campo referente a ação que deve ser executada, somente uma opção pode estar selecionada pelo usuário.

  • Alterar a tela Pagamentos do Pedido, para incluir a nota coluna referente a data para expirar da transação:



    • A informação para essa nova coluna virá de PEDIDOPAGAMENTO.DATAEXPIRACAO.

INTEGRAÇÃO

  • Alterar o Job TPIGENERATEPAYMENT para calcular a data e hora para obter a data para expirar da transação PIX;
     
    • Utilizar o script abaixo para obter a data e hora para expirar da transação:

      Busca Tempo
      SELECT current_timestamp +(SELECT cast(valor as integer) FROM pluginintconfig WHERE sglcampo = 'TPI_EXPIRATIONDATE' AND codigoelemento = 'TPI') * interval '1 minute' AS data_expirar;
    • Somar a data e hora do momento em que a transação é gerada com o tempo cadastrado pelo cliente, e incluir dentro do JSON de requisição:

      "expirationDate": "YYYY-MM-DD HH:MM:SS"

    • O retorno se a data e hora foi aceita pela TPI estará na tag "expiresAt" no JSON de RESPONSE;

    • O valor retornado na tag "expiresAt" deve ser persistido em PEDIDOPAGAMENTO.DATAEXPIRACAO.

  • Adicionar no Job TPIUPDATESTATUS, a validação da ação que deve ser tomada automaticamente quando a transação PIX ter expirado sem a confirmação do pagamento;

    • Usar o script abaixo para obter qual ação foi cadastrada pelo usuário:

      Busca Ação
      select case when sglcampo ='TPI_OPEN' then valor end as REABRIR, case when sglcampo ='TPI_CANCEL' then valor end as CANCELAR from pluginintconfig p where sglcampo in('TPI_OPEN','TPI_CANCEL')


      • Se o plugin estiver configurado para REABRIR, pedido cuja transação tenha expirado devem ter a situação alterada para NÃO FINALIZADO - NF;

      • Se o plugin estiver configurado para CANCELAR, pedido cuja transação tenha expirado devem ter a situação alterada para CANCELADO - PC;

        • Utilizar a consulta abaixo para identificar os pedidos que devem ter a situação atualizada:

          Busca Ação
          SELECT p.idpedido
          FROM   pedido p
                 INNER JOIN pedidopagamento pp
                         ON p.idpedido = pp.idpedido
                 INNER JOIN tiposituacaopagamento t
                         ON t.idtiposituacaopagamento = pp.idtiposituacaopagamento
                 INNER JOIN tiposituacaopedido tp
                         ON tp.idtiposituacaopedido = p.idtiposituacaopedido
          WHERE  t.sgltiposituacaopagamento = 'EXP'
                 AND (SELECT Count(idpedido)
                      FROM   pedidopagamento p2
                             INNER JOIN tiposituacaopagamento t2
                                     ON
                             t2.idtiposituacaopagamento = p2.idtiposituacaopagamento
                      WHERE  t2.sgltiposituacaopagamento in ('PEND', 'APR')
                             AND p2.idpedido = p.idpedido) = 0
                 AND p.idnexportadoerp = 0
                 AND tp.sgltiposituacaopedido = 'PP';
    • Se não houver uma configuração definida, o comportamento atual deve ser mantido e a situação do pedido não deve ser alterada.