|
From:
<car...@te...> - 2003-11-25 11:00:38
|
Hello:
Try this:
CREATE PROCEDURE GET_RECIBOS (
CLI_REFERENCIA VARCHAR(12))
RETURNS (
REC_CODIGO DOUBLE PRECISION,
REC_CLIENTE DOUBLE PRECISION,
REC_DATA DATE,
REC_DATA_LIMITE DATE,
REC_VALOR_ALUGUEL NUMERIC(15,2),
REC_VALOR_TAXA NUMERIC(15,2),
REC_VALOR_MULTA_DESCONTO NUMERIC(15,2),
VR_VALOR_LIQUIDO NUMERIC(15,2),
VR_VALOR_BRUTO NUMERIC(15,2),
REC_DESCRICAO_PERIODO VARCHAR(40),
REC_NUMERO_RECIBO INTEGER,
REC_NUMERO_BANCARIO VARCHAR(15))
AS
DECLARE VARIABLE VR_MULTA_DESCONTO CHAR(1);
DECLARE VARIABLE VR_CLIENTE DOUBLE PRECISION;
begin
/* Procedure Text */
SELECT CODIGO FROM get_codigo_cliente(:CLI_REFERENCIA)
INTO :VR_CLIENTE;
FOR SELECT REC_CODIGO,
REC_CLIENTE,
REC_DATA,
REC_DATA_LIMITE,
REC_VALOR_ALUGUEL,
REC_MULTA_DESCONTO,
REC_VALOR_MULTA_DESCONTO,
REC_DESCRICAO_PERIODO,
REC_NUMERO_RECIBO,
REC_NUMERO_BANCARIO
FROM RECIBO
WHERE REC_CLIENTE = :VR_CLIENTE
INTO :REC_CODIGO,
:REC_CLIENTE,
:REC_DATA,
:REC_DATA_LIMITE,
:REC_VALOR_ALUGUEL,
:VR_MULTA_DESCONTO,
:REC_VALOR_MULTA_DESCONTO,
:REC_DESCRICAO_PERIODO,
:REC_NUMERO_RECIBO,
:REC_NUMERO_BANCARIO
do
begin
IF (VR_MULTA_DESCONTO = 'D')
THEN BEGIN
VR_VALOR_BRUTO = :REC_VALOR_ALUGUEL
+ :REC_VALOR_TAXA;
VR_VALOR_LIQUIDO = VR_VALOR_BRUTO
- :REC_VALOR_MULTA_DESCONTO;
END
ELSE BEGIN
VR_VALOR_BRUTO = :REC_VALOR_ALUGUEL
+ :REC_VALOR_TAXA
+ :REC_VALOR_MULTA_DESCONTO;
VR_VALOR_LIQUIDO = VR_VALOR_BRUTO
- :REC_VALOR_MULTA_DESCONTO;
END
suspend;
end
end
--
Best regards
Carlos Guzmán Álvarez
Vigo-Spain
|