Advertisement
moreiramota

Untitled

Dec 2nd, 2018
144
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.06 KB | None | 0 0
  1. --Alinea4
  2. /**
  3. 4. Implementar um procedimento designado proc_faturas_nao_liquidadas, para realizar uma listagem
  4. com as faturas, de um dado período de tempo, que ainda não foram liquidadas. O procedimento tem
  5. como parâmetro o período (data de início e de fim) e no caso de não ser indicada uma das datas
  6. serão analisadas todas as faturas não liquidadas. Deve ser apresentada informação (identificador,
  7. data de faturação e valor total) das faturas em falta de cada cliente, ordenada pela data de faturação,
  8. bem como, o subtotal a liquidar por cliente. De igual forma deve ser apresentado o total de todas as
  9. faturas, de todos os que clientes, que faltam ser liquidadas à IsepBricolage.
  10. **/
  11.  
  12. SET SERVEROUTPUT ON;
  13. CREATE OR REPLACE PROCEDURE proc_faturas_nao_liquidadas(data_inicio IN OUT fatura.data_emissao%TYPE, data_fim IN OUT fatura.data_emissao%TYPE)
  14. Is
  15. data_inicio_valor fatura.data_emissao%TYPE;
  16. data_fim_valor fatura.data_emissao%TYPE;
  17. valor_total Integer :=0;
  18. valor_intermedio Integer;
  19. cliente_valor cliente%ROWTYPE;
  20. id_cliente_valor Integer;
  21. Cursor cliente_cursor is
  22. Select c.cod_cliente from Cliente c;
  23. Begin
  24. If(data_inicio Is Null) Then
  25. Select Min(data_emissao) into data_inicio_valor from Fatura;
  26. data_fim_valor:=data_fim;
  27. End if;
  28. If(data_fim Is Null) Then
  29. Select Max(data_emissao) into data_fim_valor from Fatura;
  30. data_inicio_valor:=data_inicio;
  31. End if;
  32. If(data_fim Is Null And data_inicio Is Null) Then
  33. Select Max(data_emissao) into data_fim_valor from Fatura;
  34. Select Min(data_emissao) into data_inicio_valor from Fatura;
  35. End if;
  36. End if;
  37. If(data_fim Is Not Null And data_inicio Is Not Null) Then
  38. data_inicio_valor:=data_inicio;
  39. data_fim_valor:=data_fim;
  40. End if;
  41. Open cliente_cursor;
  42. Loop
  43. Fetch cliente_cursor into cliente_valor;
  44. Select cod_cliente from Fatura f where lower(f.estado) like 'nao liquidada' and f.data_emissao between data_inicio_valor and data_fim_valor;
  45.  
  46. valor_intermedio:=0;
  47. Select SUM((1+fa.iva)*fa.valor_base-fa.desconto) into valor_intermedio from fatura_artigo fa inner Join Fatura f on fa.num_fatura=f.num_fatura WHERE
  48. lower(estado) LIKE ( 'nao liquidada' )
  49. AND f.cod_cliente = cliente_valor.cod_cliente
  50. AND f.data_emissao BETWEEN data_fim_valor AND data_fim_valor
  51. ORDER BY
  52. f.data_emissao;
  53. dbms_output.put_line('Cliente:' || cliente_valor.cod_cliente);
  54. dbms_output.put_line('Valor:' || valor_intermedio);
  55. valor_total:=valor_total + valor_intermedio;
  56. End Loop;
  57. Close cliente_cursor;
  58.  
  59. dbms_output.put_line('Valor total por liquidar :' || valor_total);
  60. End;
  61. /
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement