on 06-21-2014 3:28 PM
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.
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
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
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.
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
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.
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
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.
User | Count |
---|---|
99 | |
11 | |
10 | |
6 | |
5 | |
5 | |
4 | |
3 | |
3 | |
3 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.