Advertisement
Guest User

Untitled

a guest
Dec 5th, 2019
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.24 KB | None | 0 0
  1. ALTER PROCEDURE REL_RETORNA_SALDO_CONTA_DATA(
  2. DATA DATE)
  3. RETURNS(
  4. CONTA_CODIGO INTEGER,
  5. CONTA_NOME VARCHAR(100) CHARACTER SET NONE,
  6. CONTA_NUMERO VARCHAR(50) CHARACTER SET NONE,
  7. CONTA_SITUACAO INTEGER,
  8. CONTA_SALDO NUMERIC(18, 5),
  9. CONTA_SALDO_BLOQUEADO NUMERIC(18, 5),
  10. CONTA_SALDO_DISPONIVEL NUMERIC(18, 5),
  11. CONTA_EMPRESA INTEGER)
  12. AS
  13. DECLARE VARIABLE VALOR NUMERIC(18, 5);
  14. DECLARE VARIABLE TOTAL NUMERIC(18, 5);
  15. DECLARE VARIABLE DATA_CONCILIACAO TIMESTAMP;
  16. BEGIN
  17.  
  18. /** RETORNA SALDO DAS CONTAS ATE A DATA **/
  19. for select con_codigo,con_nome,con_numero,
  20. con_saldo_inicial,emp_codigo,con_situacao
  21. from cai_conta
  22. order by 2,3
  23. into :conta_codigo,:conta_nome,:conta_numero,
  24. :conta_saldo,:conta_empresa,:conta_situacao do
  25. begin
  26.  
  27. valor = 0;
  28. total = 0;
  29.  
  30. --receitas
  31. select coalesce(sum(p.crg_valor),0)
  32. from cai_conta_receber_baixa r
  33. inner join cai_conta_receber_baixa_pgto p on p.crb_codigo=r.crb_codigo and p.crb_codigo_emp=r.emp_codigo
  34. inner join cai_tipo_pagamento f on f.tip_codigo=p.tip_codigo
  35. where r.crb_data_baixa<=:data
  36. and p.con_codigo=:conta_codigo
  37. and f.tip_controlar=0
  38. into :valor;
  39.  
  40. total = total + valor;
  41.  
  42. --receitas excluidas
  43. select coalesce(sum(p.crg_valor),0)
  44. from cai_conta_receber_baixa r
  45. inner join cai_conta_receber_baixa_pgto p on p.crb_codigo=r.crb_codigo and p.crb_codigo_emp=r.emp_codigo
  46. inner join cai_tipo_pagamento f on f.tip_codigo=p.tip_codigo
  47. where p.con_codigo_cancel=:conta_codigo
  48. and f.tip_controlar=0
  49. and r.crb_data_cancel is not null
  50. and cast(r.crb_data_baixa as date)<=:data
  51. into :valor;
  52.  
  53. total = total - valor;
  54.  
  55. --despesas
  56. select coalesce(sum(p.cpg_valor),0)
  57. from cai_conta_pagar_baixa r
  58. inner join cai_conta_pagar_baixa_pgto p on p.cpb_codigo=r.cpb_codigo and p.cpb_codigo_emp=r.emp_codigo
  59. inner join cai_tipo_pagamento f on f.tip_codigo=p.tip_codigo
  60. where r.cpb_data_baixa<=:data
  61. and p.con_codigo=:conta_codigo
  62. and (f.tip_controlar=0 or f.tip_repassa_terceiros=1)
  63. into :valor;
  64.  
  65. total = total - valor;
  66.  
  67. --despesas excluidas - dinheiro
  68. select coalesce(sum(p.cpg_valor),0)
  69. from cai_conta_pagar_baixa r
  70. inner join cai_conta_pagar_baixa_pgto p on p.cpb_codigo=r.cpb_codigo and p.cpb_codigo_emp=r.emp_codigo
  71. inner join cai_tipo_pagamento f on f.tip_codigo=p.tip_codigo
  72. where r.cpb_data_cancel is not null
  73. and cast(r.cpb_data_baixa as date)<=:data
  74. and p.con_codigo_cancel=:conta_codigo
  75. and f.tip_controlar=0
  76. into valor;
  77.  
  78. total = total + valor;
  79.  
  80. --despesas excluidas - cheques de terceiros
  81. select coalesce(sum(p.cpg_valor),0)
  82. from cai_conta_pagar_baixa r
  83. inner join cai_conta_pagar_baixa_pgto p on p.cpb_codigo=r.cpb_codigo and p.cpb_codigo_emp=r.emp_codigo
  84. inner join cai_tipo_pagamento f on f.tip_codigo=p.tip_codigo
  85. where r.cpb_data_cancel is not null
  86. and cast(r.cpb_data_baixa as date)<=:data
  87. and p.con_codigo=:conta_codigo
  88. and (f.tip_repassa_terceiros=1)
  89. into :valor;
  90.  
  91. total = total + valor;
  92.  
  93. --cheques emitidos compensados
  94. select coalesce(sum(che_valor),0)
  95. from cai_cheque
  96. where che_tipo=1
  97. and che_data_cancel is null
  98. and che_data_compensacao<=:data
  99. and con_codigo=:conta_codigo
  100. into :valor;
  101.  
  102. total = total - valor;
  103.  
  104. --cheques recebidos
  105. --pega o cadastro do cheque ou entao somente a primeira movimentacao
  106. --do cheque na conta
  107.  
  108. select coalesce(sum(che_valor),0)
  109. from cai_cheque c
  110. inner join
  111. (select d.che_codigo,
  112. coalesce((select first 1 f.con_codigo_origem
  113. from cai_movimentacao_cheque c
  114. inner join cai_movimentacao f on f.mov_codigo=c.mov_codigo
  115. where c.che_codigo=d.che_codigo
  116. order by f.mov_data,f.mov_hora,f.mov_data_inc),d.con_codigo) as origem
  117. from cai_cheque d
  118. where d.che_tipo=0
  119. and d.che_data_emissao<=:data) as x on x.che_codigo=c.che_codigo
  120. and x.origem is not null
  121. and x.origem=:conta_codigo
  122. into :valor;
  123.  
  124. total = :total + :valor;
  125.  
  126.  
  127. --cheques recebidos excluidos
  128. select coalesce(sum(che_valor),0)
  129. from cai_cheque
  130. where che_tipo=0
  131. and che_data_cancel is not null
  132. and con_codigo=:conta_codigo
  133. and cast(che_data_cancel as date)<=:data
  134. into :valor;
  135.  
  136. total = :total - :valor;
  137.  
  138. --movimentacoes financeiras
  139. --1. saque / transferencia de dinheiro
  140. select coalesce(sum(mov_valor),0)
  141. from cai_movimentacao
  142. where con_codigo_origem=:conta_codigo
  143. and mov_tipo_pagamento=0
  144. and (mov_tipo=1 or mov_tipo=2)
  145. and mov_data<=:data
  146. into :valor;
  147.  
  148. total = :total - :valor;
  149.  
  150. --2. deposito / transferencia de dinheiro
  151. select coalesce(sum(mov_valor),0)
  152. from cai_movimentacao
  153. where con_codigo_destino=:conta_codigo
  154. and mov_tipo_pagamento=0
  155. and (mov_tipo=0 or mov_tipo=2)
  156. and mov_data<=:data
  157. into :valor;
  158.  
  159. total = :total + :valor;
  160.  
  161.  
  162. --3. transferencia de saida - cheques
  163. select coalesce(sum(che_valor),0)
  164. from cai_movimentacao m
  165. inner join cai_movimentacao_cheque f on f.mov_codigo=m.mov_codigo
  166. inner join cai_cheque c on c.che_codigo=f.che_codigo
  167. where con_codigo_origem=:conta_codigo
  168. and mov_tipo_pagamento=1
  169. and mov_tipo=2
  170. and mov_data<=:data
  171. into :valor;
  172.  
  173. total = total - valor;
  174.  
  175. --3. transferencia de entrada - cheques
  176. select coalesce(sum(che_valor),0)
  177. from cai_movimentacao m
  178. inner join cai_movimentacao_cheque f on f.mov_codigo=m.mov_codigo
  179. inner join cai_cheque c on c.che_codigo=f.che_codigo
  180. where con_codigo_destino=:conta_codigo
  181. and mov_tipo_pagamento=1
  182. and mov_tipo=2
  183. and mov_data<=:data
  184. into :valor;
  185.  
  186. total = total + valor;
  187.  
  188.  
  189.  
  190. CONTA_SALDO = :CONTA_SALDO + :total;
  191.  
  192. data_conciliacao = cast(:data || ' '||current_Time as timestamp);
  193.  
  194. select coalesce(sum(che_valor),0)
  195. from cai_cheque f
  196. where che_tipo=0
  197. and f.con_codigo=:conta_codigo
  198. and cast(che_data_emissao || ' ' || che_hora_emissao as timestamp)<=:data_conciliacao
  199. and ((cast(che_data_compensacao || ' ' || che_hora_compensacao as timestamp) > :data_conciliacao)
  200. or ((che_data_compensacao is null) and (che_data_vencimento > cast(:data_conciliacao as date))))
  201. and ((che_data_cancel is null)
  202. or (che_data_cancel > :data_conciliacao))
  203. into :CONTA_SALDO_BLOQUEADO;
  204.  
  205. CONTA_SALDO_DISPONIVEL = :CONTA_SALDO - :CONTA_SALDO_BLOQUEADO;
  206.  
  207. suspend;
  208.  
  209. end
  210.  
  211. END;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement