cancel
Showing results for 
Search instead for 
Did you mean: 

Query Movimiento de Cuenta

Former Member
0 Kudos

Buenos dias Expertos;

Como puedo realizar un Query que me de el movimiento de cuenta, similar al que muestra SAP, cuando damos clic en la flechita en Chart Account.

He intentado con este varios query pero he tenido problemas en cuanto al orden de los documentos y fechas, no se como lo hara SAP.

asi que no se si alguno tiene ese query, para simular el movimiento de cuenta de SAP.



Accepted Solutions (0)

Answers (1)

Answers (1)

Former Member
0 Kudos

Buen dia douglas,

Revisa si este query te ayuda,

El trabajo de ordenamiento lo haces en Crystal por cuenta, y el saldo tambien  lo puedes hacer en crystal.

Yo lo hice primero con este query creandolo como una vista, despues hice otro llamando la vista, prueba si este te sirve sino te envió el otro query que llama a este como una vista.

Toma en cuenta que utilizo formatcode porque es una BD con segmentacion de cuentas.

SELECT     TOP (100) PERCENT tipo, Account, FormatCode, AcctName, TransId, RefDate, debit, credit, SYSdebit, SYScredit, LineMemo, TransType, Project

FROM         (SELECT     O.GroupMask AS tipo, O.AcctCode AS Account, O.FormatCode, O.AcctName, J.TransId, J.RefDate,

                                              CASE WHEN J.credit < 0 THEN J.credit * - 1 ELSE CASE WHEN isnull(J.debit, 0) < 0 THEN 0 ELSE isnull(J.debit, 0) END END AS debit,

                                              CASE WHEN isnull(J.debit, 0) < 0 THEN J.debit * - 1 ELSE CASE WHEN isnull(J.credit, 0) < 0 THEN 0 ELSE isnull(J.credit, 0) END END AS credit,

                                              CASE WHEN isnull(J.SYScred, 0) < 0 THEN isnull(J.SYScred, 0) * - 1 ELSE CASE WHEN isnull(J.SYSdeb, 0) < 0 THEN 0 ELSE isnull(J.SYSdeb, 0)

                                              END END AS SYSdebit, CASE WHEN isnull(J.SYSDeb, 0) < 0 THEN isnull(J.SYSdeb, 0) * - 1 ELSE CASE WHEN isnull(J.SYScred, 0)

                                              < 0 THEN 0 ELSE isnull(j.SYScred, 0) END END AS SYScredit, J.LineMemo, J.TransType, J.Project

                       FROM          dbo.JDT1 AS J INNER JOIN

                                              dbo.OACT AS O ON J.Account = O.AcctCode) AS A

ORDER BY tipo, FormatCode

Saludos,

Wuilmer Venegas

Former Member
0 Kudos

Probe el Query, pero no maneja el saldo acumulado de la transaccion, algo asi.

En realidad lo que requiero es este query para poder ver los movimientos de las ciertas cuentas, le comento un poco. Necesito identificar los deposito en caja por factura, luego cuenta paso de caja a otra cuenta que se llama Valores en Transito y luego de Valores en Transito al Banco.

Necesito mostrar 3 barras en un grafico mostrando el movimiento de estas cuentas diario, con su saldo inicial.

En espera de su ayuda.

Former Member
0 Kudos

Douglas,

Yo tengo un report igual al que necesitas y lo hice de esta manera, el primer query que te envie cree una vista con ese query llamada comprobante,

luego hice este SP.

USE [SBO]

GO

/****** Object:  StoredProcedure [dbo].[SBO_SP_LIBRO]   

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

ALTER PROCEDURE [dbo].[SBO_SP_LIBRO]

(@Cuenta_Desde nvarchar(210), @cuenta_hasta nvarchar(120),

@fecha_desde  date, @fecha_hasta  date ) AS

declare @fecha_ini_ejercicio nvarchar(20)

declare @Fecha_saldo_ini date

declare @fechaini nvarchar(20)

set @fecha_ini_ejercicio=YEAR(@fecha_hasta)

set @Fecha_saldo_ini = DATEADD(DAY,-1,@fecha_desde )

  set @fechaini='01'+'-'+'01'+'-'+@fecha_ini_ejercicio

if exists (select * from tempdb..sysobjects where name= '##TGASTOS')

   begin   

      DROP TABLE ##TGASTOS

   end

IF (SELECT TOP 1 FormatCode  FROM Comprobantes where TransType = -2 and Year(RefDate) = Year(@fecha_desde)) IS NULL

BEGIN

SELECT * INTO ##TGASTOS FROM  (Select OACT.FormatCode as Cuenta, OACT.AcctName As Nombre, 00 as Comprob,@Fecha_saldo_ini as taxdate,

isnull(Comprobantes.LineMemo,'Saldo Anterior') as Glosa, isnull(Comprobantes.Refdate,@Fecha_saldo_ini) as Fecha,

sum(isnull((round(comprobantes.debit,0)),0)) as Débito, sum(isnull((round(comprobantes.credit,0)),0)) as Crédito, Max(comprobantes.TransType) as TransType,'' as Proyecto

from

(select comprobantes.FOrmatCode,comprobantes.AcctName, 00 as Comprob,@Fecha_saldo_ini as taxdate, 'Saldo Anterior' as LineMemo, @Fecha_saldo_ini as refdate,

sum(round(comprobantes.debit,0)) as Debit, sum(round(comprobantes.credit,0)) as Credit, Max(comprobantes.TransType) as Transtype,'' as Proyecto

from Comprobantes inner join OJDT on comprobantes.transid=ojdt.number where comprobantes.refdate>=@fechaini and comprobantes.Refdate < @fecha_desde and

comprobantes.formatcode is not null group by comprobantes.FOrmatCode,comprobantes.AcctName) as Comprobantes right join OACT on

Comprobantes.FOrmatcode = OACT.formatcode where OACT.Postable = 'Y' AND OACT.formatcode is not null

AND OACT.formatcode BETWEEN @Cuenta_Desde and @cuenta_hasta  and oact.FormatCode!='610141416'group by

OACT.Formatcode,OACT.AcctName,Comprobantes.Refdate,Comprobantes.LineMemo

UNION ALL Select comprobantes.FormatCode,comprobantes.AcctName,OJDT.ref2,OJDT.taxdate,

case when comprobantes.transtype='19' then isnull((select cardname from ORPC where docnum=OJDT.BaseRef),COMPROBANTES.LINEMEMO) else isnull((select cardname from OPCH where docnum=OJDT.baseref),COMPROBANTES.LINEMEMO) end as linememo,

comprobantes.refdate, (round(comprobantes.debit,0)) as debit, (round(comprobantes.credit,0)) as credit, comprobantes.TransType ,comprobantes.Project as Proyecto

From Comprobantes inner join OJDT on comprobantes.transid=ojdt.number

where ((comprobantes.refdate > @Fecha_desde and comprobantes.refdate < @fecha_hasta ) OR (comprobantes.refdate = @Fecha_desde and comprobantes.TransType <> -2 ) OR ( comprobantes.refdate = @fecha_hasta  and comprobantes.TransType <> -3))

and ( formatcode BETWEEN @Cuenta_desde and  @cuenta_hasta) and FormatCode!='610141416') as a  order by 1,5,3

END ELSE

SELECT * INTO ##GASTOS FROM  (Select OACT.FormatCode as Cuenta, OACT.AcctName As Nombre, 00 as Comprob, @Fecha_saldo_ini as taxdate,

isnull(Comprobantes.LineMemo,'Saldo Anterior') as Glosa, isnull(Comprobantes.Refdate,@Fecha_saldo_ini) as Fecha,

sum(isnull((round(debit,0)),0)) as Débito, sum(isnull((round(credit,0)),0)) as Crédito, isnull(Max(TransType),0) as TransType ,'' as Proyecto

from

(select comprobantes.FOrmatCode,comprobantes.AcctName,00 as Comprob,@Fecha_saldo_ini as Fechadoc,'Saldo Anterior' as LineMemo,@Fecha_saldo_ini as refdate,

sum(round(ISNULL(comprobantes.debit,0),0)) as Debit, sum(round(ISNULL(comprobantes.credit,0),0)) as Credit, isnull(Max(comprobantes.TransType),0) as Transtype ,'' as Proyecto

from Comprobantes inner join OJDT on comprobantes.transid=ojdt.number where 

((comprobantes.Refdate >= @fecha_ini_ejercicio and comprobantes.refdate < @Fecha_desde  and comprobantes.Transtype  <> -2 AND comprobantes.formatcode is not null ) OR

(comprobantes.Refdate  = @fecha_ini_ejercicio and comprobantes.Transtype  = -2) and  comprobantes.formatcode is not null)

group by comprobantes.FOrmatCode,comprobantes.AcctName) as Comprobantes right join OACT on

Comprobantes.FOrmatcode = OACT.formatcode where OACT.Postable = 'Y' AND OACT.formatcode is not null

AND  OACT.formatcode BETWEEN @Cuenta_Desde and @cuenta_hasta and oact.FormatCode!='610141416' group by

OACT.Formatcode, OACT.AcctName, Comprobantes.Refdate, Comprobantes.LineMemo

UNION ALL

Select comprobantes.FormatCode, comprobantes.AcctName,OJDT.refdate,OJDT.taxdate, comprobantes.LineMemo, comprobantes.refdate, (round( comprobantes.debit,0)) AS debit, (round( comprobantes.credit,0)) AS credit,  comprobantes.TransType ,comprobantes.Project as Proyecto

From Comprobantes inner join OJDT on comprobantes.transid=ojdt.number

where (( comprobantes.refdate > @Fecha_desde and  comprobantes.refdate < @fecha_hasta ) OR ( comprobantes.refdate = @Fecha_desde and  comprobantes.TransType <> -2 )

OR (  comprobantes.refdate = @fecha_hasta  and  comprobantes.TransType <> -3))

and ( formatcode BETWEEN @Cuenta_desde and  @cuenta_hasta) and FormatCode!='610141416') as a  order by 1,5,3

SELECT * FROM ##TGASTOS

Luego en crystal tienes es que hacer un grupo por cuenta y sumatorias por grupo para que te de el saldo acumulado por cuenta.

Saludos,

Wuilmer Venegas

Former Member
0 Kudos

Ya cree la vista pero cuando quiero crear el store procedure me muestra error.?

Como debo crear el store procedure?

ingreso normal clic derecho, nuevo SP, copio y pego el codigo y me muestra error.

Former Member
0 Kudos
Former Member
0 Kudos

Cambia el date por DateTime y ya funciona pero ahora me arroja:}

Mens 208, Nivel 16, Estado 6, Procedimiento SBO_SP_LIBRO, Línea 63

El nombre de objeto 'dbo.SBO_SP_LIBRO' no es válido.

Gracias por tu ayuda.

Former Member
0 Kudos

Logre realizar el SP, pero me muestra el siguiente error:

Mens 512, Nivel 16, Estado 1, Procedimiento EMECO_LIBROS, Línea 25

La subconsulta ha devuelto más de un valor, lo que no es correcto cuando va a continuación de =, !=, <, <=, >, >= o cuando se utiliza como expresión.

Se terminó la instrucción.

Advertencia: valor NULL eliminado por el agregado u otra operación SET.

(0 filas afectadas)

El codigo como lo ejecuto fue el siguiente:

execute EMECO_LIBROS @Cuenta_desde='111001000100',@Cuenta_Hasta='111002000800',@Fecha_Desde='01/01/2000',@Fecha_hasta='01/06/2014'

En espera de su ayuda.

Former Member
0 Kudos

Hola douglas,

El error que tenias es que tenia que cambiar el ALTER PROCEDURE por CREATE PROCEDURE.

Debes verificar cual es el nombre del SP.

Prueba con esto

USE [EMECO]

GO

DECLARE @return_value int

EXEC @return_value = [dbo].[SBO_SP_LIBROS](NOMBRE COMO CREASTE EL SP)

  @Cuenta_Desde = N'111001000100',

  @cuenta_hasta = N'11002000800',

  @fecha_desde = '01-05-2014',

  @fecha_hasta = '15-05-2014'

SELECT 'Return Value' = @return_value

GO

Recuerda que en los querys trabajo con Formatcode en vez de acctcode debido que tengo configurado mi BD con segmentacion de cuentas.

Si no manejas esa configuracion debes cambiar los formatcode por acctcode.

Saludos,


Wuilmer Venegas

Former Member
0 Kudos

Ya lo hice como me dijiste y me muestra el siguiente error:

Mens 245, Nivel 16, Estado 1, Procedimiento EMECO_LIBROS, Línea 25

Error de conversión al convertir el valor nvarchar '92/9999' al tipo de datos int.

Advertencia: valor NULL eliminado por el agregado u otra operación SET.

Former Member
0 Kudos

Debe ser algún error con el tipo de datos de las fechas  y los valores que se están enviando.

Si dejas las variables DATE te da error?.

Saludos

Former Member
0 Kudos

no me reconoce el tipo de dato Date, que SQL tienes tu? yo tengo el 2005, solo en datetime me funciona.

Former Member
0 Kudos

pero es que el error que tira, es de un campo proyecto, ese 92/9999 es el proyecto el campo prjcode.

Former Member
0 Kudos

Tendria que convertir el valor datetime a Date algo asi:

SELECT DATEADD(dd, 0, DATEDIFF(dd, 0, GETDATE()))


crear nuevas variables.

Former Member
0 Kudos

Tengo sql server 2008,,

Si dentro del query selecciono el proyecto pero es un campo mas no es una variable, te recomiendo que pruebes el query solo, no como un SP, es decir coloca tus valores de las cuentas  y las fechas donde en el query te aparece la variable.

Esto para que descartes cual es el error.

Puedes buscar el campo proyecto  y colocar '' para que no te traiga ningun valor.

Saludos.

Former Member
0 Kudos

Hola douglas,

Probaste el reporte sin las variables solo el query te funciono?

Saludos.

Former Member
0 Kudos

Todavía nop, quiero probarlo en SQL 2008 tal como lo enviaste para ver si muestra error