Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- --Alinea4
- /**
- 4. Implementar um procedimento designado proc_faturas_nao_liquidadas, para realizar uma listagem
- com as faturas, de um dado perÃodo de tempo, que ainda não foram liquidadas. O procedimento tem
- como parâmetro o perÃodo (data de inÃcio e de fim) e no caso de não ser indicada uma das datas
- serão analisadas todas as faturas não liquidadas. Deve ser apresentada informação (identificador,
- data de faturação e valor total) das faturas em falta de cada cliente, ordenada pela data de faturação,
- bem como, o subtotal a liquidar por cliente. De igual forma deve ser apresentado o total de todas as
- faturas, de todos os que clientes, que faltam ser liquidadas à IsepBricolage.
- **/
- SET SERVEROUTPUT ON;
- CREATE OR REPLACE PROCEDURE proc_faturas_nao_liquidadas(data_inicio IN OUT fatura.data_emissao%TYPE, data_fim IN OUT fatura.data_emissao%TYPE)
- Is
- data_inicio_valor fatura.data_emissao%TYPE;
- data_fim_valor fatura.data_emissao%TYPE;
- valor_total Integer :=0;
- valor_intermedio Integer;
- cliente_valor cliente%ROWTYPE;
- id_cliente_valor Integer;
- Cursor cliente_cursor is
- Select c.cod_cliente from Cliente c;
- Begin
- If(data_inicio Is Null) Then
- Select Min(data_emissao) into data_inicio_valor from Fatura;
- data_fim_valor:=data_fim;
- End if;
- If(data_fim Is Null) Then
- Select Max(data_emissao) into data_fim_valor from Fatura;
- data_inicio_valor:=data_inicio;
- End if;
- If(data_fim Is Null And data_inicio Is Null) Then
- Select Max(data_emissao) into data_fim_valor from Fatura;
- Select Min(data_emissao) into data_inicio_valor from Fatura;
- End if;
- End if;
- If(data_fim Is Not Null And data_inicio Is Not Null) Then
- data_inicio_valor:=data_inicio;
- data_fim_valor:=data_fim;
- End if;
- Open cliente_cursor;
- Loop
- Fetch cliente_cursor into cliente_valor;
- 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;
- valor_intermedio:=0;
- 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
- lower(estado) LIKE ( 'nao liquidada' )
- AND f.cod_cliente = cliente_valor.cod_cliente
- AND f.data_emissao BETWEEN data_fim_valor AND data_fim_valor
- ORDER BY
- f.data_emissao;
- dbms_output.put_line('Cliente:' || cliente_valor.cod_cliente);
- dbms_output.put_line('Valor:' || valor_intermedio);
- valor_total:=valor_total + valor_intermedio;
- End Loop;
- Close cliente_cursor;
- dbms_output.put_line('Valor total por liquidar :' || valor_total);
- End;
- /
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement