Fórum Stored Procedure #417261
22/05/2012
0
CREATE PROCEDURE SP_CTARECEBER_MOVTO (
nfilial integer,
ncodigo integer,
ncliente varchar(30),
acao char(1),
chk_caixa char(1),
chk_banco char(1))
returns (
valorpago double precision)
as
begin
/* ----------------------------------------------------------------------- */
/* BAIXAR */
If (ACAO=B) then
Begin
/* BAIXAR DOCUMENTO */
UPDATE cta_receber SET
/* Quitado=[S]sim */
cta_receber.quitado = S,
/* Saldo restante */
cta_receber.saldo_restante = (cta_receber.valor - cta_receber.valor_pago),
cta_receber.valor_pago = coalesce(cta_receber.valor_pago,0) +
coalesce(cta_receber.acrescimo,0) +
coalesce(cta_receber.despesas,0) -
coalesce(cta_receber.desconto,0)
WHERE
cta_receber.FILIAL=:nFILIAL
AND
cta_receber.CODIGO=:nCODIGO
AND
cta_receber.CLIENTE=:nCLIENTE;
/* verificar se no parametro do sistema está definido que toda baixa
contas a receber deve lançar no caixa */
/*select CAIXA_CTARECEBER from parametros
where
filial=:nfilial
into :CHK_CAIXA;*/
if (CHK_CAIXA=S) then
Begin
insert into ctrl_caixa (codigo, filial, documento, departamento,
PLN_CONTA_CLASSE,
pln_conta, dc, data, historico,
vlr_credito, vlr_debito, FORMA_PAGTO, efetivado)
values (
(select max(codigo)+1 from ctrl_caixa where filial=:nfilial),
:nfilial,
CTR-||(select CODIGO from cta_receber where filial=:nfilial and codigo=:nCODIGO and CLIENTE=:nCLIENTE),
(select CODIGO from departamentos where filial=:nfilial),
(select P_CONTA_CTARECEBER0 from parametros where filial=:nfilial),
(select P_CONTA_CTARECEBER from parametros where filial=:nfilial),
CREDITO,
(select DATA_PAGTO from cta_receber where filial=:nfilial and codigo=:nCODIGO and CLIENTE=:nCLIENTE),
TITULO BAIXADO ||(select historico from cta_receber where filial=:nfilial and codigo=:nCODIGO and CLIENTE=:nCLIENTE),
(select valor_pago from cta_receber where filial=:nfilial and codigo=:nCODIGO and CLIENTE=:nCLIENTE),
0,
(select fpagto from cta_receber where filial=:nfilial and codigo=:nCODIGO and CLIENTE=:nCLIENTE),
N
);
end -- If (CHK_CAIXA=S) Then (...)
/* verificar se no parametro do sistema está definido que toda baixa
contas a receber deve lançar no movimento bancário */
/*select CAIXA_BANCO from parametros
where
filial=:nfilial
into :CHK_BANCO;*/
if (CHK_BANCO=S) then
Begin
insert into CTRL_BANCARIO (codigo,
filial,
documento,
CTA_CORRENTE,
DEPARTAMENTO,
PLN_CONTA_CLASSE,
PLN_CONTA,
DC,
DATA,
HISTORICO,
VLR_CREDITO,
VLR_DEBITO)
values (
(select max(codigo)+1 from ctrl_bancario where filial=:nfilial),
:nfilial,
CTR-||(select CODIGO from cta_receber where filial=:nfilial and codigo=:nCODIGO and CLIENTE=:nCLIENTE),
(select conta_c from cta_receber where filial=:nfilial and codigo=:nCODIGO and CLIENTE=:nCLIENTE),
(select codigo from departamentos where filial=:nfilial),
(select P_CONTA_CTARECEBER0 from parametros where filial=:nfilial),
(select P_CONTA_CTARECEBER from parametros where filial=:nfilial),
CREDITO,
(select DATA_PAGTO from cta_receber where filial=:nfilial and codigo=:nCODIGO and CLIENTE=:nCLIENTE),
TITULO BAIXADO ||(select historico from cta_receber where filial=:nfilial and codigo=:nCODIGO and CLIENTE=:nCLIENTE),
(select valor_pago from cta_receber where filial=:nfilial and codigo=:nCODIGO and CLIENTE=:nCLIENTE),
0
);
end -- If (CHK_BANCO=S) Then (...)
end -- If ACAO=BAIXAR) Then (...)
/* ------------------------------------------------------------------ */
/* ESTORNAR */
If (ACAO=E) then
Begin
/* BAIXAR DOCUMENTO */
UPDATE cta_receber SET
/* Quitado=[S]sim */
cta_receber.quitado = N,
cta_receber.data_pagto = NULL,
cta_receber.valor_pago = 0,
cta_receber.saldo_restante = 0,
cta_receber.desconto = 0,
cta_receber.acrescimo = 0,
cta_receber.despesas = 0,
cta_receber.historico = NULL,
cta_receber.conta_c = NULL
WHERE
cta_receber.FILIAL=:nfilial
AND
cta_receber.CODIGO=:nCODIGO
AND
cta_receber.CLIENTE=:nCLIENTE;
/* EXCLUIR LANÇAMENTO DO SALDO CAIXA */
DELETE FROM ctrl_caixa_saldo
WHERE
FILIAL=:nFILIAL
AND
CODIGO=(select CODIGO from ctrl_caixa where filial=:nfilial and
DOCUMENTO=CTR-||(select CODIGO from cta_receber where filial=:nfilial and codigo=:nCODIGO and CLIENTE=:nCLIENTE));
/* EXCLUIR LANÇAMENTO DO CONTROLE DE CAIXA */
DELETE FROM ctrl_caixa
WHERE
FILIAL=:nFILIAL
AND
DOCUMENTO=CTR-||(select CODIGO from cta_receber where filial=:nfilial and codigo=:nCODIGO and CLIENTE=:nCLIENTE);
/* EXCLUIR LANÇAMENTO DO SALDO BANCARIO */
DELETE FROM ctrl_bancario_saldo
WHERE
FILIAL=:nFILIAL
AND
CODIGO=(select CODIGO from ctrl_bancario where filial=:nfilial and
DOCUMENTO=CTR-||(select CODIGO from cta_receber where filial=:nfilial and codigo=:nCODIGO and CLIENTE=:nCLIENTE));
/* EXCLUIR LANÇAMENTO DO CONTROLE BANCARIO */
DELETE FROM ctrl_bancario
WHERE
FILIAL=:nFILIAL
AND
DOCUMENTO=CTR-||(select CODIGO from cta_receber where filial=:nfilial and codigo=:nCODIGO and CLIENTE=:nCLIENTE);
End -- If ACAO=ESTORNAR) Then (...)
Fico no aguardo.
Att
Iramar Junior
Curtir tópico
+ 0Posts
22/05/2012
Joel Rodrigues
Bom, não sei se é esse o problema, mas essa é minha opinião sobre sua colocação.
Boa sorte.
Gostei + 0
22/05/2012
Iramar Junior
Bom, não sei se é esse o problema, mas essa é minha opinião sobre sua colocação.
Boa sorte.
Gostei + 0
23/05/2012
William
Gostei + 0
07/06/2012
Emerson Nascimento
assim, ao efetuar uma nova baixa, o sistema já poderia sugerir como valor a baixar o saldo atual do título.
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)