Buenas Tardes
Un nuevo caso a postear Agradezco sus comentarios,
Realice un SP, para generar el reporte de Libro de mayor Detallado con un formato especifico para mi compañia, pero esta demasiado lento pasan aproximada 2 horas para generarlo.
Existe algún proceso que pueda implementar para optimizar dicho reporte?
Agradezco sus comentarios
============================================================
USE [ULTRACI]
GO
/****** Object: StoredProcedure [dbo].[_SBOSP_RPT_Libro_Mayor_Detallado] Script Date: 4/08/2017 09:06:51 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER proc [dbo].[_SBOSP_RPT_Libro_Mayor_Detallado]
@FechaInicial Datetime,
@FechaFinal Datetime,
@IncluirCuentasSaldoCero BIT,
@IncluirCuentasSinMovimiento BIT
AS
begin
Declare @Transacciones
table(CuentaContableCodigo nvarchar(50),
NoAsientoContable int,
FechaContabilizacion datetime,
TransaccionTipo nvarchar(20),
TransaccionAbreviatura nvarchar(10),
TransaccionTipoDescripcion nvarchar(100),
Comentarios nvarchar(254),
Referencia1 nvarchar(100),
Referencia2 nvarchar(100),
Referencia3 nvarchar(100),
ReferenciaUnificada nvarchar(100),
Debito numeric(19,6),
Credito numeric(19,6))
Declare @CuentasYMovimientos
table(CuentaContableN1 nvarchar(100),
CuentaContableN1Nombre nvarchar(100),
CuentaContableN2 nvarchar(100),
CuentaContableN2Nombre nvarchar(100),
CuentaContableN3 nvarchar(100),
CuentaContableN3Nombre nvarchar(100),
CuentaContableN4 nvarchar(100),
CuentaContableN4Nombre nvarchar(100),
CuentaContable nvarchar(100),
CuentaContableFormateada nvarchar(100),
CuentaContableNombre nvarchar(254),
SaldoActual numeric(19,6),
SaldoInicial numeric(19,6),
SaldoFinal numeric(19,6),
CuentaContableCodigo nvarchar(50),
NoAsientoContable int,
FechaContabilizacion datetime,
TransaccionTipo nvarchar(20),
TransaccionTipoAbreviatura nvarchar(10),
TransaccionTipoDescripcion nvarchar(100),
Comentarios nvarchar(254),
Referencia1 nvarchar(100),
Referencia2 nvarchar(100),
Referencia3 nvarchar(100),
ReferenciaUnificada nvarchar(100),
Debito numeric(19,6),
Credito numeric(19,6))
Insert into @Transacciones
SELECT T2.AcctCode,
T0.TransId,
T0.[RefDate],
T0.[TransType],
T3.Abreviatura,
T3.Descripcion,
T0.Memo,
T0.Ref1, T0.Ref2, T0.Ref3,
(Case When ISNULL(T0.Ref1,'')<>''
Then T0.Ref1
Else (Case When ISNULL(T0.Ref2,'')<>''
Then T0.Ref2
Else ISNULL(T0.Ref3,'')
End)
End),
T1.[Debit],
T1.Credit
FROM OJDT T0
Inner Join JDT1 T1 ON T0.TransId = T1.TransId --Detalle de Asientos
Inner Join OACT T2 ON T1.Account = T2.AcctCode --Catalogo de Cuentas
Inner Join [dbo].[_SBOF_Tipos_Documento]() T3 On T3.ObjType= T0.TransType
WHERE T0.[RefDate] Between @FechaInicial AND @FechaFinal
Insert into @CuentasYMovimientos
Select T4.AcctCode as 'Cuenta N1',
T4.AcctName as 'Nombre Cuenta N1',
T3.AcctCode as 'Cuenta N2',
T3.AcctName as 'Nombre Cuenta N2',
T2.AcctCode as 'Cuenta N3',
T2.AcctName as 'Nombre Cuenta N3',
T1.AcctCode as 'Cuenta N4',
T1.AcctName as 'Nombre Cuenta N4',
T0.[FormatCode],
ISNULL([dbo].[_SBOF_UTILS_CodigoCuentaFormateado] (T0.Segment_0, T0.Segment_1, T0.Segment_2, T0.Segment_3, T0.Segment_4,
T0.Segment_5, T0.Segment_6, T0.Segment_7, T0.Segment_8, T0.Segment_9),T0.FormatCode),
T0.[AcctName],
T0.CurrTotal,0.00,0.00,
T5.*
From OACT T0
Inner Join OACT T1 On T0.FatherNum=T1.AcctCode --Cuenta Padre Nivel 4
Inner Join OACT T2 On T1.FatherNum=T2.AcctCode --Cuenta Padre Nivel 3
Inner Join OACT T3 On T2.FatherNum=T3.AcctCode --Cuenta Padre Nivel 2
Inner Join OACT T4 On T3.FatherNum=T4.AcctCode --Cuenta Padre Nivel 1
Left Join @Transacciones T5 On T0.AcctCode=T5.CuentaContableCodigo --Movimientos
Where T0.Levels=5
Update @CuentasYMovimientos
Set SaldoInicial=(SaldoActual-ISNULL(( Select SUM(S0T1.Debit-S0T1.Credit)
From OJDT S0T0
Inner Join JDT1 S0T1 On S0T0.TransId=S0T1.TransId
Where S0T1.Account=[@CuentasYMovimientos].CuentaContableCodigo
And S0T0.RefDate>=@FechaInicial
Group By S0T1.Account),0)),
SaldoFinal=(SaldoActual-ISNULL((Select SUM(S0T1.Debit-S0T1.Credit)
From OJDT S0T0
Inner Join JDT1 S0T1 On S0T0.TransId=S0T1.TransId
Where S0T1.Account=[@CuentasYMovimientos].CuentaContableCodigo
And S0T0.RefDate>@FechaFinal
Group By S0T1.Account),0))
Select T0.*
From @CuentasYMovimientos T0
Where (T0.SaldoFinal<>0.00 OR @IncluirCuentasSaldoCero=1)
And ((T0.Debito<>0.00 OR T0.Credito<>0.00) OR @IncluirCuentasSinMovimiento=1)
Order By CuentaContableFormateada, FechaContabilizacion, NoAsientoContable
end
=============================================================
=============================================================
Resultado despues de 2 horas