Duplicidade de Lançamento de Caixa ao fazer Recebimento no PDV em sistema SQL
Software: PDV - Softshop Caixa | Grupo: PDV
Solução
IMPORTANTE: Esse FAQ foi criado para normalizar o SOFTSHOP SQL (com versão inferior a 8.16.2) para os requisitos da versão 8.7.4 ou superior do PDV. Essa ação corrige a duplicidade de lançamento de Caixa ao fazer Recebimentos no PDV.
MOTIVO: O PDV com versão inferior a 8.7.4 não preenche o campo [contas a pagar2].Sequencia e o campo [contas a receber].OrigemBaixa.
Alterar o campo "BancoVersao" na tabela Empresa para 43, caso esteja menor;
Criar o campo "OrigemBaixa" na tabela Contas a receber com o seguinte padrão: Tipo: TEXTO | Tamanho: 30;
Adicionar o campo "OrigemBaixa" na view "A_CAIXA_RECEBER";
Usar o script abaixo para recriar a trigger "TR_Receber_Update_DeletarLancamentosDasContas", para concluir fazer um teste de recebimento no PDV:
--INÍCIO--
/****** Object: Trigger [TR_Receber_Update_DeletarLancamentosDasContas] Script Date: 22/07/2020 10:51:47 ******/
DROP TRIGGER [dbo].[TR_Receber_Update_DeletarLancamentosDasContas]
GO
/****** Object: Trigger [dbo].[TR_Receber_Update_DeletarLancamentosDasContas] Script Date: 22/07/2020 10:51:47 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TRIGGER [dbo].[TR_Receber_Update_DeletarLancamentosDasContas] /* NOME DA TRIGGER/GATILHO */
ON [dbo].[contas a receber] /* NOME DA TABELA */
FOR UPDATE /* NOME DA AÇÃO - DELETE, INSERT OU UPDATE */
AS
DECLARE @Registro AS INT;
DECLARE @ContaOld AS VARCHAR(80);
DECLARE @Conta AS VARCHAR(80);
DECLARE @DataPag AS datetime;
SELECT @ContaOld=[Conta] FROM deleted;
SELECT @Conta=[Conta] FROM inserted;
SELECT @DataPag=[DataPag] FROM inserted;
SELECT @Registro=[Registro] FROM deleted;
--- Deletar Lançamentos de Caixa/Banco - Início ---
IF UPDATE(Conta) OR UPDATE([DataPag])
BEGIN
SET NOCOUNT ON;
IF @ContaOld ='CAIXA'
DELETE FROM [Contas a pagar2] WHERE [Contas a pagar2].Sequencia=@Registro AND SerieECF is NULL
ELSE
DELETE FROM [registro] WHERE [registro].ChaveaReceber=@Registro
--- Deletar Lançamentos de Caixa/Banco - Fim ---
--- Inserir Lançamentos de Caixa/Banco - Início ---
--- Conta = Caixa
IF @Conta ='CAIXA' AND @DataPag IS NOT NULL
INSERT INTO [contas a pagar2] ( Sequencia, LojaOrigem, Tipo, [Data de Pagamento], Histórico, [Valor Pago], Lacrar, ChaveConciliacao, Usuario)
SELECT [contas a receber].Registro, [contas a receber].LojaOrigem, [contas a receber].Pagto2, [contas a receber].DataPag AS DataPagamento, CONCAT([cadastro de clientes].[Nome do Cliente], ' - Pedido: ', cast([bloquete] as varchar(10)), ' - NF: ', cast([Nota Fiscal] as varchar(10))) AS Historico, [contas a receber].[Valor Pago], 1 AS Lacrar, [contas a receber].ChaveConciliacao, (SELECT [Código do Vendedor] FROM [Cadastro de Vendedores] WHERE [Nome] LIKE [contas a receber].Baixa_Usuario)
FROM [Cadastro de Clientes]
INNER JOIN [contas a receber] ON [Cadastro de Clientes].[Código do Cliente] = [contas a receber].[Código do Cliente]
LEFT JOIN [Contas a pagar2] ON [contas a receber].Registro = [Contas a pagar2].Sequencia
WHERE [contas a receber].Registro=@Registro AND [Contas a pagar2].Sequencia IS NULL
AND [contas a receber].OrigemBaixa<>'PDV'
--- Conta <> Caixa
IF @Conta <>'CAIXA' AND @DataPag IS NOT NULL
INSERT INTO registro ( ChaveaReceber, LojaOrigem, Histórico, Datas, Valor, [Tipo Doc], Conta, [D/C], Compensado, ChaveConciliacao)
SELECT [contas a receber].Registro, [contas a receber].LojaOrigem, CONCAT([cadastro de clientes].[Nome do Cliente], ' - Pedido: ', cast([bloquete] as varchar(10)), ' - NF: ', cast([Nota Fiscal] as varchar(10))) AS Historico, [contas a receber].DataPag AS Datas, [contas a receber].[Valor Pago], [contas a receber].Pagto2, [contas a receber].Conta, 'C' AS [D/C], 1 AS Compensado, [contas a receber].ChaveConciliacao
FROM [Cadastro de Clientes] INNER JOIN [contas a receber] ON [Cadastro de Clientes].[Código do Cliente] = [contas a receber].[Código do Cliente]
WHERE Registro=@Registro
--- Inserir Lançamentos de Caixa/Banco - Fim ---
END
GO
--FIM--
Tags: caixa, duplicidade, sql, recebimento, pdv