RES: [firebase-br] Campos Calculados

Adilson B. Cápua Jr. juniorcapua em yahoo.com.br
Ter Mar 15 23:55:32 -03 2005


Grande Joelson...

Valeu mesmo! Sua mensagem foi de grande valia e ajuda para mim...

Mais uma vez, obrigadão mesmo! E tamos aí...

[]'s

________________________________
Adilson Bragança Cápua Jr.
Linhares - ES             Brasil

mailto: juniorcapua em yahoo.com.br
        juniorcapua em gmail.com
  
http://www.dellas.rg3.net

"Save a tree. Send an e-mail"

-----Mensagem original-----
De: lista-bounces em firebase.com.br [mailto:lista-bounces em firebase.com.br] Em
nome de Joelson - Souzamark
Enviada em: terça-feira, 15 de março de 2005 08:19
Para: FireBase
Assunto: Re: [firebase-br] Campos Calculados

Opa, se vc passar a controlar pelo banco com toda certeza fica melhor ;-), e
quanto ao calculo vc pode fazer isso através de SP's ou campos calculados eu
particularmente prefiro as SP's e tb uso numa rotina parecida...
quanto ao campo calculado com condição é possível sim eis a sintaxe do campo
que calcula os dias em atraso:
COMPUTED BY (CASE WHEN "PAGO" = 'N' AND "VENCIMENTO" < CURRENT_DATE THEN
CURRENT_DATE - "VENCIMENTO" ELSE 0 END)

e como eu to muito bonzinho hj lá vai a SP que atualiza os juros... da pra
vc analisar e adaptar pra vc....

CREATE PROCEDURE ATUALIZA_CONTA_RECEBER (
    PS INTEGER, /*aqui vai o codigo da pessoa que vc vai calcular*/
    JURO CHAR(1))/*e aqui se vai cobrar juro ou não "S" ou "N"*/ AS DECLARE
VARIABLE J_D NUMERIC(2,2); DECLARE VARIABLE T_D INTEGER; DECLARE VARIABLE I
INTEGER; DECLARE VARIABLE VLR NUMERIC(15,2); DECLARE VARIABLE VLR_J
NUMERIC(15,2); DECLARE VARIABLE D_ATR INTEGER; DECLARE VARIABLE CD INTEGER;
begin
    SELECT FIRST 1 JURO_DIARIO, TOLERANCIA FROM PARAMETROS INTO J_D, T_D;

    FOR SELECT CODIGO, VALOR, DIAS_ATRASO FROM CONTA_RECEBER
    WHERE PESSOA = :PS AND PAGO = 'N' INTO :CD, :VLR, :D_ATR DO
    IF (JURO='S') THEN /*se tiver habilitado pra cobrar juro*/
    BEGIN
        I = 0;
        VLR_J = 0.00;
        WHILE (I <= D_ATR) DO
        BEGIN
            VLR_J = VLR_J + (J_D * (VLR + VLR_J) / 100);
            I = I + 1;
        END
        IF (:D_ATR <= :T_D) THEN
        VLR_J = 0.00;
        UPDATE CONTA_RECEBER SET
        VALOR_JURO = :VLR_J,
        VALOR_REAL = VALOR + :VLR_J
        WHERE CODIGO = :CD;
    END
    ELSE /*se não for cobrar juro*/
        UPDATE CONTA_RECEBER SET
        VALOR_JURO = 0.00,
        VALOR_REAL = VALOR
        WHERE CODIGO = :CD;
END


sem mais

Joelson 


______________________________________________
FireBase-BR (www.firebase.com.br) - Hospedado em www.bavs.com.br Para editar
sua configuração na lista, use o endereço
http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br







Mais detalhes sobre a lista de discussão lista