Página 1 de 1

somar do retorno de uma stored procedure

Enviado: 27 Mai 2022 13:55
por JoséQuintas
contabil.png
Queria somar uma das colunas retornadas pela stored procedure.
Tem como?

somar do retorno de uma stored procedure

Enviado: 27 Mai 2022 14:12
por JoséQuintas
contabil.png
0.171 segundos
- Somar lançamentos, débitos e créditos
- Apurar lucro/prejuízo
- Atualizar contas sintéticas
São apenas perto de 1.000 lançamentos, mas vém prontinho do servidor.

Por enquanto debugando pra encontrar um cálculo errado. janeiro saiu ok mas fevereiro não.

somar do retorno de uma stored procedure

Enviado: 27 Mai 2022 20:55
por JoséQuintas
Pelo menos achei o motivo da diferença de valor.
Esqueci de configurar a conta de lucro/prejuízo, pra onde vai o resultado do fechamento.

somar do retorno de uma stored procedure

Enviado: 27 Mai 2022 21:05
por JoséQuintas
A procedure do balancete, por curiosidade.

Código: Selecionar todos

CREATE PROCEDURE ze_ContabilBalancete( dInicial DATE, dFinal DATE, nFechamento INT(11), nGrau INT(11 ) )

BEGIN

DECLARE dFechamento DATE;
DECLARE nAno, nMes, nFechaOficial INT(11);

SET nFechaOficial := ( SELECT GREATEST( COALESCE( EMFECHA, 12 ), 1 ) FROM JPEMPRESA WHERE IDEMPRESA = 1 );

SET nAno := YEAR( dInicial );

SET dFechamento := CONCAT( LPAD( nAno - 1, 4, '0' ), '-12-31' );
IF nFechamento != 12 THEN
   SET nMes := MONTH( dInicial );
   SET nMes := FLOOR( ( nMes - 1 ) / nFechaOficial ) * nFechaOficial;
   IF nMes <> 0 THEN
      SET dFechamento := CONCAT( LPAD( nAno, 4, '0' ), '-', LPAD( nMes, 2, '0' ), '-01' );
      SET dFechamento := LAST_DAY( dFechamento );
   END IF;
END IF;

SELECT
   JPCTCONTA.IDCTCONTA, JPCTCONTA.CPCODIGO, JPCTCONTA.CPGRAU, JPCTCONTA.CPTIPO, JPCTCONTA.CPGRUPO,
	JPCTCONTA.CPNOME, SUM( b.saldo ) AS anterior, SUM( b.deb ) as entrada, SUM( b.cred ) AS saida,
   nFechaOficial, nFechamento, dFechamento
FROM JPCTCONTA
LEFT JOIN
( SELECT A.CPCODIGO as analitica,
  ze_ContabilSaldoExercicio( A.IDCTCONTA, DATE( DATE_ADD( dInicial, INTERVAL -1 DAY ) ), dFechamento ) AS saldo,
  ze_ContabilSaldoDebito( A.IDCTCONTA, dInicial, dFinal ) AS deb,
  ze_ContabilSaldoCredito( A.IDCTCONTA, dInicial, dFinal ) AS cred
  FROM JPCTCONTA AS A
  WHERE A.CPTIPO = 'A'
) AS b ON TRIM( JPCTCONTA.CPCODIGO ) = SUBSTR( b.analitica, 1, LENGTH( TRIM( JPCTCONTA.CPCODIGO ) ) )
WHERE JPCTCONTA.CPGRAU <= nGrau
GROUP BY JPCTCONTA.IDCTCONTA
HAVING anterior != 0 OR entrada != 0 OR saida != 0
ORDER BY CPCODIGO;

END
que usa esta função:

Código: Selecionar todos

CREATE FUNCTION ze_ContabilSaldoDebito( nIdCtConta INT(11), dInicial DATE, dFinal DATE )
RETURNS DECIMAL(16,2)

BEGIN

DECLARE nSaldo DECIMAL(16,2);

SELECT COALESCE( SUM( CTVALOR ), 0 )
   FROM JPCONTABIL
   WHERE CTCTADEB = nIdCtConta
      AND DATE( CTDATA ) BETWEEN DATE( dInicial ) AND DATE( dFinal )
INTO nSaldo;

RETURN nSaldo;

END
e esta outra

Código: Selecionar todos

CREATE FUNCTION ze_ContabilSaldoCredito( nIdCtConta INT(11), dInicial DATE, dFinal DATE )
RETURNS DECIMAL(16,2)

BEGIN

DECLARE nSaldo DECIMAL(16,2);

SELECT COALESCE( SUM( CTVALOR ), 0 )
   FROM JPCONTABIL
   WHERE CTCTACRE = nIdCtConta
      AND DATE( CTDATA ) BETWEEN DATE( dInicial ) AND DATE( dFinal )
INTO nSaldo;

RETURN nSaldo;

END
As outras não vou mostrar.

E executa tudo em 0.171 segundos.
Não sei como o MySQL/MariaDB fazem, mas ..... é rápido.

somar do retorno de uma stored procedure

Enviado: 27 Mai 2022 21:08
por JoséQuintas
Esqueci de dizer:

Estou tendo que terminar a contabilidade na marra.
Preciso do SPED Contábil funcionando, e ele precisa de tudo funcionando.

somar do retorno de uma stored procedure

Enviado: 29 Mai 2022 20:05
por JoséQuintas
Precisava do que perguntei pra debugar as informações.
Mas resolvido: eu não tinha configurado a conta de lucro/prejuízo, e o cálculo ia para o espaço, gerando a diferença.

Acabei adicionando variáveis na resposta da stored procedure.