
/****** Object:  StoredProcedure [dbo].[Provincias_GetDatos]    Script Date: 10/17/2012 19:27:21 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*
==================================================
-- Autor:       Francis Antonio Bolaños Arias
-- Fecha:       27/02/2012 16:17:31
-- Descripción: Consultas de Plan de Cuentas
-- @vOpcion: 0 = Todo,1 = Filtrado, 2 = Elemento, 
-- ===============================================
*/
DROP PROCEDURE [dbo].[DSS_PlanCuentasCuXEd_GetDatos]
GO

CREATE PROCEDURE [dbo].[DSS_PlanCuentasCuXEd_GetDatos]
(
    @vOpcion TINYINT, @vPagina SMALLINT, @vFiltro NVARCHAR(30),
    @PorCobrar INT, @Empresa INT 
)
AS

BEGIN
    SET NOCOUNT ON;

DECLARE @vPagInicial SMALLINT,@vPagFinal SMALLINT,
        @TotMostrar TINYINT = 8
DECLARE @vSql NVARCHAR(3000) = SPACE(1), @vWhere1 NVARCHAR(1000) = SPACE(1),
        @vWhere2 NVARCHAR(1000) = SPACE(1), @vWhereP NVARCHAR(1000) = SPACE(1)     

/*  Crea un tabla temporal para obtener los datos */
CREATE TABLE #TempPlan
(
    Item       INT IDENTITY(1,1),
    id_cuenta  INT,
    cuenta     CHAR(20),
    tit_cta    VARCHAR(150),
    id_empr    INT,
    activa     BIT,
    cuenta_est CHAR(20),
    id_tcta    TINYINT,
    desc_tcta  VARCHAR(30),
    cto_gto    CHAR(4),
    Total      INT
)

/* Obtiene desde y hasta cual registro debe mostrar */
----------------------------------------------------
IF @vPagina > 1 
BEGIN
	SET @vPagInicial = ((@vPagina - 1) * 8) + 1 
	SET @vPagFinal   = @vPagInicial + 7
END 

IF @vPagina = 1 
BEGIN
	SET @vPagInicial = @vPagina
	SET @vPagFinal   = @vPagInicial + 7
END
----------------------------------------------------

/* 
 * Filtra el IdAcreedor de los acreedores, si recibe como id acreedor 0
 * no realiza ninguna filtrado
 */
----------------------------------------------------
IF @PorCobrar = 0  
BEGIN
   SELECT @vWhere1 = ' AND id_tcta = 2 '
END
ELSE
BEGIN
	SELECT @vWhere1 = ' AND (id_tcta = 3 OR id_tcta = 20)'
END

/* Filtra el nombre del acreedores */
----------------------------------------------------
IF LEN(@vFiltro) >= 1
BEGIN 
      SELECT @vWhere2 = ' AND (tit_cta LIKE ' + CHAR(39) + '%' + @vFiltro + '%' + CHAR(39) + ' '
							+ ' OR cuenta LIKE ' + CHAR(39) + '%' + @vFiltro + '%' + CHAR(39) + ' '
							+ ' OR cto_gto LIKE ' + CHAR(39) + '%' + @vFiltro + '%' + CHAR(39) + ' '
							+ ')'
END

-- Concatena la instrucción
SELECT @vSql = 'SELECT 
					id_cuenta,
                    cuenta,
                    tit_cta,
                    id_empr,
                    activa,
                    cuenta_est,
                    id_tcta,
                    desc_tcta,
                    cto_gto
                FROM VST_DSS_PlanCuentas WHERE activa = 1 ' + @vWhere1 + @vWhere2 + ' AND id_empr = ' + CONVERT(VARCHAR(15), @Empresa) +
                ' ORDER BY cuenta ASC '

-- Inserta en la tabla temporal
INSERT INTO #TempPlan(
    id_cuenta,
    cuenta,
	tit_cta,
	id_empr,
	activa,
	cuenta_est,
	id_tcta,
	desc_tcta,
	cto_gto
)
EXEC (@vSql)

-- Obtener el total de registros
DECLARE @Total INT = CEILING((SELECT COUNT(*) FROM #TempPlan) / 8.0) 
UPDATE #TempPlan SET Total = @Total

-- Filtra la información de acuerdo con la paginación
SELECT * FROM #TempPlan
    WHERE Item between @vPagInicial and @vPagFinal
    
END
