Res: Re: [firebase-br] Dificuldade com Query - Ninguém pode me Ajudar ?

Ronaldo Cocuroci ronaldo em cocuroci.com
Ter Dez 21 17:35:43 -03 2004


Josauro,

Meu problema não é a mascará da conta e sim o relacionamento de duas tabelas
 uma com o plano de contas completo e outra com as contas aprovadas por
financiamento. A questão dos níveis é variável entre 2 e 5 níveis,
dependendo do orçamento em questão, eu não preciso mais do que isso.

Abraços, 
 
Ronaldo Cocuroci

-------Mensagem original-------
 
De: FireBase
Data: 12/21/04 16:30:45
Para: Josauro S.J.; FireBase
Assunto: Re: [firebase-br] Dificuldade com Query - Ninguém pode me Ajudar ?
 
 
Veja um modelo do que uso, mas so uso uma conta com qualquer numero de
niveis,    1.1.01.01.001
 
o resulta do é
 
1                    110.000,00     100.000,00
 
1.1                   70.000,00      70.000,00
 
1.1.01               50.000,00     20.000,00
1.1.01.001         10.000,00     10.000,00
1.1.01.002         40.000,00     10.000,00
 
1.1.02               20.000,00     50.000,00
1.1.02.001          5.000,00       5.000,00
1.1.02.002        15.000,00      45.000,00
 
1.2                   40.000,00     30.000,00
.
 
 
CREATE PROCEDURE GET_BALANCO_CONTAS (
    CONTA_INICIAL VARCHAR(13),
    CONTA_FINAL VARCHAR(13),
    DATA_INICIAL DATE,
    DATA_FINAL DATE,
)
RETURNS (
    TOTAL_CREDITO NUMERIC(18,2),
    TOTAL_DEBITO NUMERIC(18,2),
    TOTAL NUMERIC(18,2),
    SINTETICO_ANALITICO CHAR(1),
    TITULO VARCHAR(40),
    CONTA VARCHAR(13))
AS
DECLARE VARIABLE OPERACAO SMALLINT;
DECLARE VARIABLE VALOR NUMERIC(18,2);
DECLARE VARIABLE CONTA_CLASSE VARCHAR(13);
begin
  /* Procedure Text */
  FOR
    select c.cla_conta,
           c.cla_titulo,
           c.cla_sintetico_analitico,
           c.cla_codigo
           from PLANO_CONTA c
    where (c.cla_conta >= :CONTA_INICIAL AND
           c.cla_conta <= :CONTA_FINAL) OR
          (:CONTA_INICIAL = '' AND
           :CONTA_FINAL   = '')
    order by c.cla_conta
    INTO :CONTA,:TITULO,:SINTETICO_ANALITICO,:CLA_CODIGO
  DO BEGIN
    TOTAL = 0;
    TOTAL_DEBITO = 0;
    TOTAL_CREDITO = 0;
    if (SINTETICO_ANALITICO = 'A')
    then BEGIN
      FOR
        SELECT L.LCS_VALOR,
               L.LCS_OPERACAO,
               L.lcs_MOVIMENTO_VALOR,
               L.lcs_LANCAMENTO
        FROM VW_lancamento_CONTAS L
        WHERE L.CLASSE LIKE (:CONTA||'%') and
              ((L.classe >= :CONTA_INICIAL AND
                L.classe <= :CONTA_FINAL) OR
               (:CONTA_INICIAL = '' AND
               :CONTA_FINAL   = ''))
        INTO VALOR, :OPERACAO
      DO BEGIN
          TOTAL = TOTAL + (VALOR*OPERACAO);
          if (OPERACAO = -1)
          then TOTAL_DEBITO = TOTAL_DEBITO + (VALOR*OPERACAO);
          ELSE
          if (OPERACAO = 1)
          then TOTAL_CREDITO = TOTAL_CREDITO + (VALOR*OPERACAO);
      END
    END
    ELSE BEGIN
      FOR
        SELECT LCS_VALOR, LCS_OPERACAO, LCS_MOVIMENTO_VALOR, LCS_CLASSE,
LCS_LANCAMENTO
        FROM lancamento_CONTAS
        WHERE LCS_CLASSE = :CLA_CODIGO
        INTO :VALOR,:OPERACAO
      DO BEGIN
          TOTAL = TOTAL + (OPERACAO*VALOR);
          if (OPERACAO = -1)
          then TOTAL_DEBITO = TOTAL_DEBITO + (OPERACAO*VALOR);
          ELSE
          if (OPERACAO = 1)
          then TOTAL_CREDITO = TOTAL_CREDITO + (OPERACAO*VALOR);
      END
    END
    if ((TOTAL <> 0) OR
        (TOTAL_DEBITO <> 0) OR
        (TOTAL_CREDITO <> 0))
    then suspend;
  END
end
 
 
Josauro S.J.
Diretor
josauro em casasoft.inf.br
______________________________________________
FireBase-BR (www.firebase.com.br) - Hospedado em www.bavs.com.br
Para editar sua configuragco na lista, use o enderego http://mail.firebase
com.br/mailman/listinfo/lista_firebase.com.br
 
 


Mais detalhes sobre a lista de discussão lista