Jump to content

Relatório Financeiro


Leozinho

Recommended Posts

 Bom dia pessoal do Forum, tudo bom?

 

Por favor, se alquem pode me ajudar.

Tenho duas tabelas no SQL: Plano de Contas e Lançamentos(povoado com alguns registros guardados como exemplo).

Gostaria de construir um balanço na estrutuda desejada com dois parametros, conforme descrito abaixo.

Na tabela plano de contas tem uma coluna chamada 'tipo' que tem 'S' = contas totalizadoras e 'A'=contas analíticas que recebem lançamento, conforme a tabela ' lançamentos'

Como poderia criar o relatório balamço com base nas tabelas e parametros informados?

Muito obrigado.

 

 

   Parametros dois textbox:

TxtDataInicial='01/02/2017' e  TxtDataFinal='28/02/2017'                              

Resultado desejado no relatório(pode ser report viewer):

                                       Saldo Anteior     Debito      Credito  Saldo Actual

1         Ativo                      20,00                10,00         -10,00     20,00

11       Ativo Corrente        20,00                10,00         -10,00     20,00

111     Caixa                      20,00                10,00         -10,00     20,00

11100 Caxa A                    10,00                10,00         0,00        20,00

11101 Caixa B                   10,00                0,00         -10,00       0,00

Plano de Contas(Tabela no SQL):

Conta Denominação      Tipo

1         Ativo                      S              

11       Ativo Corrente        S                

111     Caixa                      S               

11100 Caxa A                    A               

11101 Caixa B                   A          

Lançamentos(tabela no SQL)

Data              Conta       DC     Debito      Credito 

08/02/2017    11100       D         10,00    

08/02/2017    11101       C                      10,00     

Link to comment
Share on other sites

Em 21/02/2017 às 14:11, M6 disse:

Diria que tens de fazer um somatório dos valores.

Muito obrigado M6 pela resposta.

Porém, achei este codigo sql e funciona bem. 

Gostaria de mostrar esse resultado no report viewer, como faria por favor?

SELECT pcx.Conta
       , pcx.Denominação
       , sum(xx.saldo_inicial) AS saldo_inicial
       , sum(xx.Debito)       AS Debito
       , sum(xx.Credito)         AS Credito
       , sum(xx.saldo_final)   AS saldo_final
    FROM
       (
        SELECT x.Conta
             , coalesce(
               (
                SELECT sum
                       (
                        CASE WHEN DC = 'D' THEN
                                  Debito
                             WHEN DC = 'C' THEN
                                  Credito * -1
                             ELSE
                                  0.00
                        END
                       )
                  FROM GL
                 WHERE Fecha <'2017-02-28'--data deve ser igual data final
                   AND Conta  = x.Conta
               ),0)  AS saldo_inicial
             , sum(x.Debito) AS Debito
             , sum(x.Credito)   AS Credito
             , coalesce(
               (
                 SELECT sum
                        (
                         CASE WHEN DC = 'D' THEN
                                   Debito
                              WHEN DC = 'C' THEN
                                   Credito * -1
                              ELSE
                                   0.00
                         END
                        )
                   FROM GL
                  WHERE fecha <=  '2017-02-28'
                    AND Conta  = x.Conta
               ),0)  AS saldo_final
          FROM
             (
               SELECT lan.Conta
                    , CASE WHEN lan.DC = 'D' THEN
                                lan.Debito
                           ELSE
                                0.00
                      END AS Debito
                    , CASE WHEN lan.DC = 'C' THEN
                                Lan.Credito
                           ELSE
                                0.00
                      END AS Credito
                 FROM GL AS lan
                WHERE lan.Fecha >= '2017-02-01'-- data inicial
                  AND lan.Fecha <= '2017-02-28'---data final
                --AND lan.id_plano_conta  = '2.2.2'
             ) AS x
      GROUP BY x.Conta
       ) AS xx
    JOIN PlanCuenta pcx
      ON xx.Conta LIKE pcx.Conta + '%'
GROUP BY pcx.Conta
       , pcx.Denominação
ORDER BY pcx.Conta ASC
       ;


   
 

Link to comment
Share on other sites

  • 2 weeks later...
Em 22/02/2017 às 21:19, Leozinho disse:

M6, Muito obrigado, vou verificar esta questão...qualquer coisa irei lhe informar como fiz.

Boa tarde, muito obrigado M6.

Ainda estou a verificar o problema em questão.

Mas tenho outro problema, por favor de podem me ajudar. 

Grava tudo certo, porém na tabela sql tem campos valor e total de tipo money.

Quando grava, os valore estão assim 1854700, quero que grave assim 185,47, ou eja, não grava a vígula(,)  

Já tentei mudar para int, mas nada.

 

Eis meu codigo:

 

Sub btnSalvar_Click(sender As Object, e As EventArgs) Handles btnSalvar.Click


        If TxtTotalDiferença.Text = "0,00" Then

            conexion = New SqlConnection("data source=PC1\SQLEXPRESS;initial catalog=GLSQL1;integrated security=SSPI")

            comandos = New SqlCommand("INSERT INTO GL VALUES (@produto,@valor,@total)", conexion)

            conexion.Open()

           
            Try
              

                For Each fila In DataGridViewRegistros.Rows
                    comandos.Parameters.Clear()

                    comandos.Parameters.AddWithValue("@produto", Convert.ToString(fila.Cells("produto").Value)) 
                   
                    comandos.Parameters.AddWithValue("@valor", Convert.ToString(fila.Cells("valor").Value)) ' o campo no sql é tipo money
                    comandos.Parameters.AddWithValue("@total", Convert.ToString(fila.Cells("total").Value)) '' o campo no sql é tipo money

                    
                    DataGridViewRegistros.AllowUserToAddRows = False
                    
                    comandos.ExecuteNonQuery()
                 
                Next


                Me.LabelConfir_Gravado.Visible = True

                LabelConfir_Gravado.Text = " Documento" & TxtLote.Text

                conexion.Close()

                DataGridViewRegistros = Nothing

            Catch ex As Exception

                
                MsgBox("Erro : " & ex.Message)
                
            End Try

        ElseIf TxtTotalDiferença.Text <> "0" Then
            MsgBox("há diferença")
        End If

    End Sub
 

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.