--Hash:91D8521BBD2FD4619044098A7EF1D257
SET XACT_ABORT ON
BEGIN TRANSACTION;

GO

SET DATEFORMAT mdy;

--Validar que no existan scripts que no se hayan ejecutado
--//
IF EXISTS
(
	SELECT a.NumVersion + 1 AS HuecoInicio
	FROM ZiurVersiones a
	LEFT JOIN ZiurVersiones b ON a.NumVersion + 1 = b.NumVersion
	WHERE a.NumVersion>830 AND b.NumVersion IS NULL
	AND a.NumVersion + 1 < 894
)
RAISERROR('Error : hay un script que no se ejecuto , debe ejecutarlo manualmente.', 20, -1) with log
--//

/*
 Plantilla de script anterior a la implementación							
--------------------------------------------------------------------------------------
 Este archivo contiene instrucciones de SQL que se ejecutarán antes del script de compilación	
 Use la sintaxis de SQLCMD para incluir un archivo en el script anterior a la implementación			
 Ejemplo:      :r .\miArchivo.sql								
 Use la sintaxis de SQLCMD para hacer referencia a una variable en el script anterior a la implementación		
 Ejemplo:      :setvar TableName miTabla							
               SELECT * FROM [$(TableName)]					
--------------------------------------------------------------------------------------
*/
GO

GO
PRINT N'Modificando Tabla [dbo].[FacturacionElectronica_Proveedores_Estados]...';


GO
ALTER TABLE [dbo].[FacturacionElectronica_Proveedores_Estados]
    ADD [EsEnviado] BIT CONSTRAINT [DF_FacturacionElectronica_Proveedores_Estados_EsEnviado] DEFAULT 0 NOT NULL;


GO
PRINT N'Modificando Tabla [dbo].[Nomina_Contratos]...';


GO
ALTER TABLE [dbo].[Nomina_Contratos]
    ADD [IdTipoSalario] INT NULL;


GO
PRINT N'Modificando Tabla [dbo].[Nomina_TiposContratos]...';


GO
ALTER TABLE [dbo].[Nomina_TiposContratos]
    ADD [EsSistema] BIT CONSTRAINT [DF_Nomina_TiposContratos_EsSistema] DEFAULT ((0)) NOT NULL;


GO
PRINT N'Creando Tabla [dbo].[Nomina_Contratos_TipoSalario]...';


GO
CREATE TABLE [dbo].[Nomina_Contratos_TipoSalario] (
    [IdTipoSalario]  INT           NOT NULL,
    [DesTipoSalario] NVARCHAR (50) NOT NULL,
    [PreTipoSalario] NVARCHAR (50) NOT NULL,
    CONSTRAINT [PK_TiposSalario] PRIMARY KEY CLUSTERED ([IdTipoSalario] ASC)
);


GO
PRINT N'Creando Tabla [dbo].[Nomina_NE_Detalles]...';


GO
CREATE TABLE [dbo].[Nomina_NE_Detalles] (
    [IdDetalle]                   INT             IDENTITY (1, 1) NOT NULL,
    [IdNomina]                    INT             NOT NULL,
    [IdPrefijo]                   NVARCHAR (10)   NULL,
    [NumDocumento]                INT             NOT NULL,
    [IdCliente]                   INT             NOT NULL,
    [IdContrato]                  INT             NOT NULL,
    [NeIdEstadoDian]              INT             NULL,
    [NeFechaAutorizacion]         DATETIME        NULL,
    [NeUUID]                      NVARCHAR (100)  NULL,
    [NeMensRespuesta]             NVARCHAR (1000) NULL,
    [Dev_DiasTrabajados]          NUMERIC (28, 6) NULL,
    [Dev_SueldoTrabajado]         NUMERIC (28, 6) NULL,
    [DevTRANS_AuxilioTransporte]  NUMERIC (28, 6) NULL,
    [DevTRANS_ViaticoManuAlojS]   NUMERIC (28, 6) NULL,
    [DevTRANS_ViaticoManuAlojNS]  NUMERIC (28, 6) NULL,
    [DevHED_Cantidad]             NUMERIC (28, 6) NULL,
    [DevHED_Porcentaje]           NUMERIC (28, 6) NULL,
    [DevHED_Valor]                NUMERIC (28, 6) NULL,
    [DevHEN_Cantidad]             NUMERIC (28, 6) NULL,
    [DevHEN_Porcentaje]           NUMERIC (28, 6) NULL,
    [DevHEN_Valor]                NUMERIC (28, 6) NULL,
    [DevHRN_Cantidad]             NUMERIC (28, 6) NULL,
    [DevHRN_Porcentaje]           NUMERIC (28, 6) NULL,
    [DevHRN_Valor]                NUMERIC (28, 6) NULL,
    [DevHEDDF_Cantidad]           NUMERIC (28, 6) NULL,
    [DevHEDDF_Porcentaje]         NUMERIC (28, 6) NULL,
    [DevHEDDF_Valor]              NUMERIC (28, 6) NULL,
    [DevHRDDF_Cantidad]           NUMERIC (28, 6) NULL,
    [DevHRDDF_Porcentaje]         NUMERIC (28, 6) NULL,
    [DevHRDDF_Valor]              NUMERIC (28, 6) NULL,
    [DevHENDF_Cantidad]           NUMERIC (28, 6) NULL,
    [DevHENDF_Porcentaje]         NUMERIC (28, 6) NULL,
    [DevHENDF_Valor]              NUMERIC (28, 6) NULL,
    [DevHRNDF_Cantidad]           NUMERIC (28, 6) NULL,
    [DevHRNDF_Porcentaje]         NUMERIC (28, 6) NULL,
    [DevHRNDF_Valor]              NUMERIC (28, 6) NULL,
    [DevVACN_FechaInicio]         DATETIME        NULL,
    [DevVACN_FechaFin]            DATETIME        NULL,
    [DevVACN_Cantidad]            NUMERIC (28, 6) NULL,
    [DevVACN_Pago]                NUMERIC (28, 6) NULL,
    [DevVACD_Cantidad]            NUMERIC (28, 6) NULL,
    [DevVACD_Pago]                NUMERIC (28, 6) NULL,
    [DevPRIM_Cantidad]            NUMERIC (28, 6) NULL,
    [DevPRIM_Pago]                NUMERIC (28, 6) NULL,
    [DevPRIM_PagoNS]              NUMERIC (28, 6) NULL,
    [DevCES_Pago]                 NUMERIC (28, 6) NULL,
    [DevCES_Porcentaje]           NUMERIC (28, 6) NULL,
    [DevCES_PagoIntereses]        NUMERIC (28, 6) NULL,
    [DevINC_FechaInicio]          DATETIME        NULL,
    [DevINC_FechaFin]             DATETIME        NULL,
    [DevINC_Cantidad]             NUMERIC (28, 6) NULL,
    [DevINC_Tipo]                 INT             NULL,
    [DevINC_Pago]                 NUMERIC (28, 6) NULL,
    [DevLICMP_FechaInicio]        DATETIME        NULL,
    [DevLICMP_FechaFin]           DATETIME        NULL,
    [DevLICMP_Cantidad]           NUMERIC (28, 6) NULL,
    [DevLICMP_Pago]               NUMERIC (28, 6) NULL,
    [DevLICR_FechaInicio]         DATETIME        NULL,
    [DevLICR_FechaFin]            DATETIME        NULL,
    [DevLICR_Cantidad]            NUMERIC (28, 6) NULL,
    [DevLICR_Pago]                NUMERIC (28, 6) NULL,
    [DevLICNR_FechaInicio]        DATETIME        NULL,
    [DevLICNR_FechaFin]           DATETIME        NULL,
    [DevLICNR_Cantidad]           NUMERIC (28, 6) NULL,
    [DevLICNR_Pago]               NUMERIC (28, 6) NULL,
    [DevBONIF_BonificacionS]      NUMERIC (28, 6) NULL,
    [DevBONIF_BonificacionNS]     NUMERIC (28, 6) NULL,
    [DevAUX_AuxilioS]             NUMERIC (28, 6) NULL,
    [DevAUX_AuxilioNS]            NUMERIC (28, 6) NULL,
    [DevHLG_FechaInicio]          DATETIME        NULL,
    [DevHLG_FechaFIn]             DATETIME        NULL,
    [DevHLG_Cantidad]             NUMERIC (28, 6) NULL,
    [DevOCON_DescripcionConcepto] NVARCHAR (100)  NULL,
    [DevOCON_ConceptoS]           NUMERIC (28, 6) NULL,
    [DevOCON_ConceptoNS]          NUMERIC (28, 6) NULL,
    [DevCOMP_CompensacionO]       NUMERIC (28, 6) NULL,
    [DevCOMP_CompensacionE]       NUMERIC (28, 6) NULL,
    [DevBONO_PagoS]               NUMERIC (28, 6) NULL,
    [DevBONO_PagoNS]              NUMERIC (28, 6) NULL,
    [DevBONO_PagoAlimentacionS]   NUMERIC (28, 6) NULL,
    [DevBONO_PagoAlimentacionNS]  NUMERIC (28, 6) NULL,
    [DevCOMIS_Comision]           NUMERIC (28, 6) NULL,
    [DevPTER_PagoTercero]         NUMERIC (28, 6) NULL,
    [DevANTIC_Anticipo]           NUMERIC (28, 6) NULL,
    [Dev_Dotacion]                NUMERIC (28, 6) NULL,
    [Dev_ApoyoSost]               NUMERIC (28, 6) NULL,
    [Dev_Teletrabajo]             NUMERIC (28, 6) NULL,
    [Dev_BonifRetiro]             NUMERIC (28, 6) NULL,
    [Dev_Indemnizacion]           NUMERIC (28, 6) NULL,
    [Dev_Reintegro]               NUMERIC (28, 6) NULL,
    [DedSALUD_Porcentaje]         NUMERIC (28, 6) NULL,
    [DedSALUD_Deduccion]          NUMERIC (28, 6) NULL,
    [DedFPEN_Porcentaje]          NUMERIC (28, 6) NULL,
    [DedFPEN_Deduccion]           NUMERIC (28, 6) NULL,
    [DedFSP_Porcentaje]           NUMERIC (28, 6) NULL,
    [DedFSP_DeduccionSP]          NUMERIC (28, 6) NULL,
    [DedFSP_PorcentajeSub]        NUMERIC (28, 6) NULL,
    [DedFSP_DeduccionSub]         NUMERIC (28, 6) NULL,
    [DedSIND_Porcentaje]          NUMERIC (28, 6) NULL,
    [DedSIND_Deduccion]           NUMERIC (28, 6) NULL,
    [DedSANC_SancionPublic]       NUMERIC (28, 6) NULL,
    [DedSANC_SancionPriv]         NUMERIC (28, 6) NULL,
    [DedLIBR_Descripcion]         NVARCHAR (100)  NULL,
    [DedLIBR_Deduccion]           NUMERIC (28, 6) NULL,
    [DedPTER_PagoTercero]         NUMERIC (28, 6) NULL,
    [DedANTIC_Anticipo]           NUMERIC (28, 6) NULL,
    [DedODED_OtraDeduccion]       NUMERIC (28, 6) NULL,
    [Ded_PensionVoluntaria]       NUMERIC (28, 6) NULL,
    [Ded_RetencionFuente]         NUMERIC (28, 6) NULL,
    [Ded_AFC]                     NUMERIC (28, 6) NULL,
    [Ded_Cooperativa]             NUMERIC (28, 6) NULL,
    [Ded_EmbargoFiscal]           NUMERIC (28, 6) NULL,
    [Ded_PlanComplementarios]     NUMERIC (28, 6) NULL,
    [Ded_Educacion]               NUMERIC (28, 6) NULL,
    [Ded_Reintegro]               NUMERIC (28, 6) NULL,
    [Ded_Deuda]                   NUMERIC (28, 6) NULL,
    [DevTOT_Total]                NUMERIC (28, 6) NULL,
    [DedTOT_Total]                NUMERIC (28, 6) NULL,
    CONSTRAINT [PK_Nomina_NE_Detalles] PRIMARY KEY CLUSTERED ([IdDetalle] ASC)
);


GO
PRINT N'Creando Tabla [dbo].[Nomina_NE_Encabezados]...';


GO
CREATE TABLE [dbo].[Nomina_NE_Encabezados] (
    [IdNomina]     INT             IDENTITY (1, 1) NOT NULL,
    [CodNomina]    INT             NOT NULL,
    [NomNomina]    NVARCHAR (100)  NOT NULL,
    [Fecha]        DATE            NOT NULL,
    [FechaIni]     DATE            NOT NULL,
    [FechaFin]     DATE            NOT NULL,
    [IdEmpresa]    INT             NOT NULL,
    [IdPrefijo]    NVARCHAR (10)   NULL,
    [NumDocumento] INT             NOT NULL,
    [IdTipo]       INT             NOT NULL,
    [IdPeriodo]    INT             NOT NULL,
    [IdMoneda]     INT             NULL,
    [ValorTRM]     NUMERIC (28, 6) NOT NULL,
    [FechaPago]    DATE            NOT NULL,
    [IdMedPago]    INT             NULL,
    [IdFormaPago]  INT             NULL,
    [NeIdVersion]  SMALLINT        NULL,
    CONSTRAINT [PK_Nomina_NE_Encabezados] PRIMARY KEY CLUSTERED ([IdNomina] ASC)
);


GO
PRINT N'Creando Tabla [dbo].[Nomina_NE_Periodos]...';


GO
CREATE TABLE [dbo].[Nomina_NE_Periodos] (
    [IdPeriodo]  INT            NOT NULL,
    [NomPeriodo] NVARCHAR (100) NOT NULL,
    [EsActivo]   BIT            NOT NULL,
    PRIMARY KEY CLUSTERED ([IdPeriodo] ASC)
);


GO
PRINT N'Creando Tabla [dbo].[Nomina_NE_Tipos]...';


GO
CREATE TABLE [dbo].[Nomina_NE_Tipos] (
    [IdTipo]   INT            NOT NULL,
    [CodTipo]  INT            NOT NULL,
    [NomTipo]  NVARCHAR (100) NOT NULL,
    [EsActivo] BIT            NOT NULL,
    PRIMARY KEY CLUSTERED ([IdTipo] ASC)
);


GO
PRINT N'Creando Índice [dbo].[Nomina_Movimientos].[IX_IdEncabIdItem]...';


GO
IF NOT EXISTS(SELECT * FROM sys.indexes WHERE object_id = OBJECT_ID('[dbo].[Nomina_Movimientos]') AND name='IX_IdEncabIdItem')
CREATE NONCLUSTERED INDEX [IX_IdEncabIdItem]
    ON [dbo].[Nomina_Movimientos]([IdEncab] ASC, [IdItem] ASC);


GO
PRINT N'Creando Índice [dbo].[Nomina_Movimientos].[IX_IdEncabNomMovBase]...';


GO
IF NOT EXISTS(SELECT * FROM sys.indexes WHERE object_id = OBJECT_ID('[dbo].[Nomina_Movimientos]') AND name='IX_IdEncabNomMovBase')
CREATE NONCLUSTERED INDEX [IX_IdEncabNomMovBase]
    ON [dbo].[Nomina_Movimientos]([IdEncabNomMovBase] ASC);


GO
PRINT N'Creando Restricción DEFAULT restricción sin nombre en [dbo].[Nomina_NE_Detalles]...';


GO
ALTER TABLE [dbo].[Nomina_NE_Detalles]
    ADD DEFAULT 0 FOR [NumDocumento];


GO
PRINT N'Creando Restricción DEFAULT [dbo].[DF_Nomina_NE_Encabezados_NumDocumento]...';


GO
ALTER TABLE [dbo].[Nomina_NE_Encabezados]
    ADD CONSTRAINT [DF_Nomina_NE_Encabezados_NumDocumento] DEFAULT 0 FOR [NumDocumento];


GO
PRINT N'Creando Restricción DEFAULT [dbo].[DF_Nomina_NE_Encabezados_ValorTRM]...';


GO
ALTER TABLE [dbo].[Nomina_NE_Encabezados]
    ADD CONSTRAINT [DF_Nomina_NE_Encabezados_ValorTRM] DEFAULT 0 FOR [ValorTRM];


GO
PRINT N'Creando Restricción DEFAULT restricción sin nombre en [dbo].[Nomina_NE_Periodos]...';


GO
ALTER TABLE [dbo].[Nomina_NE_Periodos]
    ADD DEFAULT 0 FOR [EsActivo];


GO
PRINT N'Creando Restricción DEFAULT restricción sin nombre en [dbo].[Nomina_NE_Tipos]...';


GO
ALTER TABLE [dbo].[Nomina_NE_Tipos]
    ADD DEFAULT 0 FOR [EsActivo];


GO
PRINT N'Creando Clave externa [dbo].[FK_Nomina_NE_Detalles_Encabezados]...';


GO
ALTER TABLE [dbo].[Nomina_NE_Detalles] WITH NOCHECK
    ADD CONSTRAINT [FK_Nomina_NE_Detalles_Encabezados] FOREIGN KEY ([IdNomina]) REFERENCES [dbo].[Nomina_NE_Encabezados] ([IdNomina]);


GO
PRINT N'Creando Clave externa [dbo].[FK_Nomina_NE_Detalles_Contratos]...';


GO
ALTER TABLE [dbo].[Nomina_NE_Detalles] WITH NOCHECK
    ADD CONSTRAINT [FK_Nomina_NE_Detalles_Contratos] FOREIGN KEY ([IdContrato]) REFERENCES [dbo].[Nomina_Contratos] ([IdContrato]);


GO
PRINT N'Creando Clave externa [dbo].[FK_Nomina_NE_Encabezados_Tipos]...';


GO
ALTER TABLE [dbo].[Nomina_NE_Encabezados] WITH NOCHECK
    ADD CONSTRAINT [FK_Nomina_NE_Encabezados_Tipos] FOREIGN KEY ([IdTipo]) REFERENCES [dbo].[Nomina_NE_Tipos] ([IdTipo]);


GO
PRINT N'Creando Clave externa [dbo].[FK_Nomina_NE_Encabezados_Periodos]...';


GO
ALTER TABLE [dbo].[Nomina_NE_Encabezados] WITH NOCHECK
    ADD CONSTRAINT [FK_Nomina_NE_Encabezados_Periodos] FOREIGN KEY ([IdPeriodo]) REFERENCES [dbo].[Nomina_NE_Periodos] ([IdPeriodo]);


GO
PRINT N'Creando Clave externa [dbo].[FK_Nomina_NE_Encabezados_MediosPago]...';


GO
ALTER TABLE [dbo].[Nomina_NE_Encabezados] WITH NOCHECK
    ADD CONSTRAINT [FK_Nomina_NE_Encabezados_MediosPago] FOREIGN KEY ([IdMedPago]) REFERENCES [dbo].[FacturacionElectronica_MediosPagoContado] ([IdMedPago]);


GO
PRINT N'Creando Clave externa [dbo].[FK_Nomina_NE_Encabezados_FormasPago]...';


GO
ALTER TABLE [dbo].[Nomina_NE_Encabezados] WITH NOCHECK
    ADD CONSTRAINT [FK_Nomina_NE_Encabezados_FormasPago] FOREIGN KEY ([IdFormaPago]) REFERENCES [dbo].[FormasPago] ([IdFormaPago]);


GO
PRINT N'Creando Clave externa [dbo].[FK_Nomina_Contratos_Nomina_TipoSalario]...';


GO
ALTER TABLE [dbo].[Nomina_Contratos] WITH NOCHECK
    ADD CONSTRAINT [FK_Nomina_Contratos_Nomina_TipoSalario] FOREIGN KEY ([IdTipoSalario]) REFERENCES [dbo].[Nomina_Contratos_TipoSalario] ([IdTipoSalario]);


GO
PRINT N'Creando Desencadenador [dbo].[TRG_Numeracion_Nomina_NE_Detalles]...';


GO

CREATE TRIGGER [dbo].[TRG_Numeracion_Nomina_NE_Detalles] 
ON  [dbo].[Nomina_NE_Detalles]
AFTER INSERT
AS 
BEGIN

-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;

DECLARE @IdDetalle int
DECLARE @IdEmp int
DECLARE @Pref nvarchar(100)
DECLARE @NumNuevo int
DECLARE @NumAntiguo int

DECLARE curNums CURSOR FOR 
SELECT a.IdDetalle, IdEmpresa, a.IdPrefijo, a.NumDocumento 
FROM INSERTED a join Nomina_NE_Encabezados b on a.IdNomina = b.IdNomina

OPEN curNums
FETCH FROM curNums INTO @IdDetalle, @IdEmp , @Pref , @NumAntiguo

WHILE @@FETCH_STATUS = 0
BEGIN
	IF @NumAntiguo =0
	BEGIN
		SELECT @NumNuevo = COALESCE(MAX(b.NumDocumento+1),1)
		FROM Nomina_NE_Encabezados a INNER JOIN Nomina_NE_Detalles b ON a.IdNomina = b.IdNomina
		WHERE a.IdEmpresa = @IdEmp AND b.IdPrefijo= @Pref

		UPDATE Nomina_NE_Detalles SET NumDocumento = @NumNuevo where IdDetalle = @IdDetalle
	END

    FETCH NEXT FROM curNums INTO @IdDetalle, @IdEmp , @Pref , @NumAntiguo
END

CLOSE curNums
DEALLOCATE curNums

END
GO
PRINT N'Actualizando Vista [dbo].[VClientes]...';


GO
EXECUTE sp_refreshsqlmodule N'[dbo].[VClientes]';


GO
PRINT N'Actualizando Vista [dbo].[VNomina_Contabilizacion_00]...';


GO
EXECUTE sp_refreshsqlmodule N'[dbo].[VNomina_Contabilizacion_00]';


GO
PRINT N'Modificando Vista [dbo].[VNominaContratos]...';


GO
ALTER VIEW dbo.VNominaContratos
AS
SELECT        dbo.Nomina_Contratos.IdContrato, dbo.Nomina_Contratos.IdCliente, dbo.Nomina_Contratos.IdCargo, dbo.Nomina_Contratos.FechaIni, dbo.Nomina_Contratos.FechaFin, dbo.Nomina_Contratos.FechaFinPrueba, 
                         dbo.Nomina_Contratos.FechaRetiro, dbo.Nomina_Contratos.SueldoIni, dbo.Nomina_Contratos.Nota, dbo.Nomina_Contratos.EsActivo, dbo.Nomina_Contratos.IdTipo, dbo.Nomina_Contratos.IdGrupo, 
                         dbo.Nomina_Contratos.IdPlantilla, dbo.Nomina_Contratos.IdPlantillaQuincena, dbo.Nomina_Contratos.IdPlantillaMensual,  dbo.Clientes_Empleados.IdCli_Eps, dbo.Clientes_Empleados.IdCli_Pension, dbo.Clientes_Empleados.IdCli_Arp, dbo.Clientes_Empleados.IdCli_Cesantia, 
                         dbo.Clientes_Empleados.IdCli_Caja, dbo.Clientes_Empleados.ARPTarifa, dbo.Clientes_Empleados.IdCli_Sena, dbo.Clientes_Empleados.IdCli_ICBF, dbo.Clientes_Empleados.IdCentroCosto, 
                         dbo.Nomina_Contratos.IdEmpresa, COALESCE (cliEmp.Nombre1, N'') + N' ' + COALESCE (cliEmp.Nombre2, N'') + N' ' + COALESCE (cliEmp.Apellido1, N'') + N' ' + COALESCE (cliEmp.Apellido2, N'') 
                         AS NombreEmpleado, cliEmp.Identificacion AS IdentiEmpleado, dbo.Nomina_Cargos.NomCargo, dbo.Nomina_TiposContratos.NomTipo, COALESCE (cliEps.Nombre1, N'') + N' ' + COALESCE (cliEps.Nombre2, N'') 
                         + N' ' + COALESCE (cliEps.Apellido1, N'') + N' ' + COALESCE (cliEps.Apellido2, N'') AS NombreEps, cliEps.Identificacion AS IdentiEps, COALESCE (cliArp.Nombre1, N'') + N' ' + COALESCE (cliArp.Nombre2, N'') 
                         + N' ' + COALESCE (cliArp.Apellido1, N'') + N' ' + COALESCE (cliArp.Apellido2, N'') AS NombreArp, cliArp.Identificacion AS IdentiArp, COALESCE (cliPen.Nombre1, N'') + N' ' + COALESCE (cliPen.Nombre2, N'') 
                         + N' ' + COALESCE (cliPen.Apellido1, N'') + N' ' + COALESCE (cliPen.Apellido2, N'') AS NombrePension, cliPen.Identificacion AS IdentiPension, COALESCE (cliCaja.Nombre1, N'') 
                         + N' ' + COALESCE (cliCaja.Nombre2, N'') + N' ' + COALESCE (cliCaja.Apellido1, N'') + N' ' + COALESCE (cliCaja.Apellido2, N'') AS NombreCaja, cliCaja.Identificacion AS IdentiCaja, COALESCE (cliCesant.Nombre1, 
                         N'') + N' ' + COALESCE (cliCesant.Nombre2, N'') + N' ' + COALESCE (cliCesant.Apellido1, N'') + N' ' + COALESCE (cliCesant.Apellido2, N'') AS NombreCesant, cliCesant.Identificacion AS IdentiCesant, 
                         COALESCE (cliSena.Nombre1, N'') + N' ' + COALESCE (cliSena.Nombre2, N'') + N' ' + COALESCE (cliSena.Apellido1, N'') + N' ' + COALESCE (cliSena.Apellido2, N'') AS NombreSena, 
                         cliSena.Identificacion AS IdentiSena, COALESCE (cliIcbf.Nombre1, N'') + N' ' + COALESCE (cliIcbf.Nombre2, N'') + N' ' + COALESCE (cliIcbf.Apellido1, N'') + N' ' + COALESCE (cliIcbf.Apellido2, N'') AS NombreIcbf, 
                         cliIcbf.Identificacion AS IdentiIcbf, dbo.Empresas.EmpresaNombre, dbo.CentroCostos.NomCentroCosto, dbo.Nomina_Grupos.NomGrupo, dbo.Nomina_Plantillas.NomPlantilla, dbo.Clientes_Empleados.IdTipoExt, 
                         dbo.Nomina_Contratos.IdTipoCot, dbo.Nomina_Contratos.IdSubTipoCot, cliPen.CodigoInterno AS CodAFP, cliEps.CodigoInterno AS CodEPS, cliCaja.CodigoInterno AS CodCCF, ciu.IdDpto AS IdDptoCaja, 
                         ciu.CodMunicipio AS CodMunicipioCaja, dbo.Nomina_Contratos.EsDistribuirCC, dbo.Nomina_Contratos.IdProcReteFte, dbo.Nomina_Contratos.EsAltoRiesgo, dbo.Nomina_Contratos.IdMovRetiro, 
                         dbo.Clientes_Empleados.IdArpTarifa, dbo.Nomina_Contratos.EsExoneradoAportes, dbo.Nomina_Contratos_TipoSalario.IdTipoSalario, dbo.Nomina_Contratos_TipoSalario.DesTipoSalario, dbo.Nomina_Contratos_TipoSalario.PreTipoSalario

FROM             Nomina_Plantillas RIGHT OUTER JOIN
                         Nomina_Contratos_TipoSalario RIGHT OUTER JOIN
                         Nomina_Contratos ON Nomina_Contratos_TipoSalario.IdTipoSalario = Nomina_Contratos.IdTipoSalario LEFT OUTER JOIN
                         Nomina_Grupos ON Nomina_Contratos.IdGrupo = Nomina_Grupos.IdGrupo ON Nomina_Plantillas.IdPlantilla = Nomina_Contratos.IdPlantilla LEFT OUTER JOIN
                         Nomina_TiposContratos ON Nomina_Contratos.IdTipo = Nomina_TiposContratos.IdTipo LEFT OUTER JOIN
                         Nomina_Cargos ON Nomina_Contratos.IdCargo = Nomina_Cargos.IdCargo LEFT OUTER JOIN
                         Clientes cliEmp RIGHT OUTER JOIN
                         Clientes_Empleados ON cliEmp.IdCliente = Clientes_Empleados.IdCliente LEFT OUTER JOIN
                         CentroCostos ON Clientes_Empleados.IdCentroCosto = CentroCostos.IdCentroCosto LEFT OUTER JOIN
                         Clientes cliIcbf ON Clientes_Empleados.IdCli_ICBF = cliIcbf.IdCliente LEFT OUTER JOIN
                         Clientes cliSena ON Clientes_Empleados.IdCli_Sena = cliSena.IdCliente LEFT OUTER JOIN
                         Clientes cliCesant ON Clientes_Empleados.IdCli_Cesantia = cliCesant.IdCliente LEFT OUTER JOIN
                         Clientes cliEps ON Clientes_Empleados.IdCli_Eps = cliEps.IdCliente LEFT OUTER JOIN
                         Clientes cliPen ON Clientes_Empleados.IdCli_Pension = cliPen.IdCliente LEFT OUTER JOIN
                         Clientes cliArp ON Clientes_Empleados.IdCli_Arp = cliArp.IdCliente LEFT OUTER JOIN
                         Clientes cliCaja ON Clientes_Empleados.IdCli_Caja = cliCaja.IdCliente ON Nomina_Contratos.IdCliente = Clientes_Empleados.IdCliente LEFT OUTER JOIN
                         Empresas ON Nomina_Contratos.IdEmpresa = Empresas.IdEmpresa LEFT OUTER JOIN
                         Ciudades ciu ON cliCaja.IdCiudad = ciu.IdCiudad
GO

ALTER VIEW VEmpleadosBancos
AS
SELECT       0 as IdAuto, emp.IdCliente, BancoTipoCuenta AS TipoCuenta, BancoNumCuenta AS Cuenta, BancoIdCliente AS IdBanco, cli.Nombre1 + COALESCE (' - ' + Nomtipo, '') AS Detalle, NomTipo, cli.Nombre1 as NomBanco
FROM            Clientes_Empleados emp INNER JOIN
                         clientes cli ON emp.BancoIdCliente = cli.IdCliente LEFT JOIN
                         [dbo].[Clientes_Bancos_Tipos_Productos] tipo ON emp.BancoTipoCuenta = tipo.IdTipo
UNION ALL
SELECT      IdAuto,  emp.IdCliente, BancoTipoCuenta AS TipoCuenta, BancoNumCuenta AS Cuenta, BancoIdCliente AS IdBanco, cli.Nombre1 + COALESCE (' - ' + Nomtipo, '') AS Detalle, NomTipo, cli.Nombre1 as NomBanco
FROM            Clientes_Empleados_Bancos emp INNER JOIN
                         clientes cli ON emp.BancoIdCliente = cli.IdCliente LEFT JOIN
                         [dbo].[Clientes_Bancos_Tipos_Productos] tipo ON emp.BancoTipoCuenta = tipo.IdTipo
GO
PRINT N'Creando Vista [dbo].[VEmpleadosBancos_PorCliente]...';


GO
CREATE VIEW [dbo].[VEmpleadosBancos_PorCliente]
AS
SELECT IdCliente, TipoCuenta, Cuenta, IdBanco, Detalle, NomTipo, NomBanco
FROM
(
   SELECT ROW_NUMBER() OVER (PARTITION BY IdCliente ORDER BY IdAuto DESC) as RowNum, IdAuto, IdCliente, TipoCuenta, Cuenta, IdBanco, Detalle, NomTipo, NomBanco
   FROM VEmpleadosBancos
) t
WHERE RowNum = 1
GO
PRINT N'Creando Vista [dbo].[VNomina_NE_Detalles]...';


GO
CREATE VIEW [dbo].[VNomina_NE_Detalles] 
AS

SELECT NomDet.IdDetalle,
       NomDet.IdNomina,
       NomDet.IdPrefijo,
       NomDet.NumDocumento,
       NomDet.NeIdEstadoDian,
       FEEstados.NomEstado,
       NomDet.NeFechaAutorizacion,
       NomDet.NeUUID,
       NomDet.NeMensRespuesta,
       CliEmp.Identificacion AS EmplNumIdentificacion,
       CliEmp.DVCliente AS EmplDV,
       CliEmp.IdTipoIdent AS EmplTipoIdentificacion,
       CliEmp.Nombre1 AS EmplNombre1,
       CliEmp.Nombre2 AS EmplNombre2,
       CliEmp.Apellido1 AS EmplApellido1,
       CliEmp.Apellido2 AS EmplApellido2,
       vCliDirEmp.Direccion AS EmplDireccion,
       vCliDirEmp.CodPais AS EmplCodPais,
       vCliDirEmp.IdCiudad AS EmplCodMunicipio,
       vCliDirEmp.IdDpto AS EmplCodDepartamento,
       NomDet.IdCliente,
       NomDet.IdContrato,
       NomContr.IdTipo,
       NomContr.IdTipoCot,
       NomContr.IdSubTipoCot,
       NomContr.SueldoIni,
       NomContr.FechaIni,
       NomContr.FechaFin,
       NomContr.EsAltoRiesgo,
       Cta.Cuenta AS CtaCuenta,
       Cta.NomTipo AS CtaNomTipo,
       Cta.NomBanco AS CtaNomBanco,
       NomEnc.IdMedPago,
       MedPago.CodMedPago,
       NomDet.Dev_DiasTrabajados,
       NomDet.Dev_SueldoTrabajado,
       NomDet.DevTRANS_AuxilioTransporte,
       NomDet.DevTRANS_ViaticoManuAlojS,
       NomDet.DevTRANS_ViaticoManuAlojNS,
       NomDet.DevHED_Cantidad,
       NomDet.DevHED_Porcentaje,
       NomDet.DevHED_Valor,
       NomDet.DevHEN_Cantidad,
       NomDet.DevHEN_Porcentaje,
       NomDet.DevHEN_Valor,
       NomDet.DevHRN_Cantidad,
       NomDet.DevHRN_Porcentaje,
       NomDet.DevHRN_Valor,
       NomDet.DevHEDDF_Cantidad,
       NomDet.DevHEDDF_Porcentaje,
       NomDet.DevHEDDF_Valor,
       NomDet.DevHRDDF_Cantidad,
       NomDet.DevHRDDF_Porcentaje,
       NomDet.DevHRDDF_Valor,
       NomDet.DevHENDF_Cantidad,
       NomDet.DevHENDF_Porcentaje,
       NomDet.DevHENDF_Valor,
       NomDet.DevHRNDF_Cantidad,
       NomDet.DevHRNDF_Porcentaje,
       NomDet.DevHRNDF_Valor,
       NomDet.DevVACN_FechaInicio,
       NomDet.DevVACN_FechaFin,
       NomDet.DevVACN_Cantidad,
       NomDet.DevVACN_Pago,
       NomDet.DevVACD_Cantidad,
       NomDet.DevVACD_Pago,
       NomDet.DevPRIM_Cantidad,
       NomDet.DevPRIM_Pago,
       NomDet.DevPRIM_PagoNS,
       NomDet.DevCES_Pago,
       NomDet.DevCES_Porcentaje,
       NomDet.DevCES_PagoIntereses,
       NomDet.DevINC_FechaInicio,
       NomDet.DevINC_FechaFin,
       NomDet.DevINC_Cantidad,
       NomDet.DevINC_Tipo,
       NomDet.DevINC_Pago,
       NomDet.DevLICMP_FechaInicio,
       NomDet.DevLICMP_FechaFin,
       NomDet.DevLICMP_Cantidad,
       NomDet.DevLICMP_Pago,
       NomDet.DevLICR_FechaInicio,
       NomDet.DevLICR_FechaFin,
       NomDet.DevLICR_Cantidad,
       NomDet.DevLICR_Pago,
       NomDet.DevLICNR_FechaInicio,
       NomDet.DevLICNR_FechaFin,
       NomDet.DevLICNR_Cantidad,
       NomDet.DevLICNR_Pago,
       NomDet.DevBONIF_BonificacionS,
       NomDet.DevBONIF_BonificacionNS,
       NomDet.DevAUX_AuxilioS,
       NomDet.DevAUX_AuxilioNS,
       NomDet.DevHLG_FechaInicio,
       NomDet.DevHLG_FechaFIn,
       NomDet.DevHLG_Cantidad,
       NomDet.DevOCON_DescripcionConcepto,
       NomDet.DevOCON_ConceptoS,
       NomDet.DevOCON_ConceptoNS,
       NomDet.DevCOMP_CompensacionO,
       NomDet.DevCOMP_CompensacionE,
       NomDet.DevBONO_PagoS,
       NomDet.DevBONO_PagoNS,
       NomDet.DevBONO_PagoAlimentacionS,
       NomDet.DevBONO_PagoAlimentacionNS,
       NomDet.DevCOMIS_Comision,
       NomDet.DevPTER_PagoTercero,
       NomDet.DevANTIC_Anticipo,
       NomDet.Dev_Dotacion,
       NomDet.Dev_ApoyoSost,
       NomDet.Dev_Teletrabajo,
       NomDet.Dev_BonifRetiro,
       NomDet.Dev_Indemnizacion,
       NomDet.Dev_Reintegro,
       NomDet.DedSALUD_Porcentaje,
       NomDet.DedSALUD_Deduccion,
       NomDet.DedFPEN_Porcentaje,
       NomDet.DedFPEN_Deduccion,
       NomDet.DedFSP_Porcentaje,
       NomDet.DedFSP_DeduccionSP,
       NomDet.DedFSP_PorcentajeSub,
       NomDet.DedFSP_DeduccionSub,
       NomDet.DedSIND_Porcentaje,
       NomDet.DedSIND_Deduccion,
       NomDet.DedSANC_SancionPublic,
       NomDet.DedSANC_SancionPriv,
       NomDet.DedLIBR_Descripcion,
       NomDet.DedLIBR_Deduccion,
       NomDet.DedPTER_PagoTercero,
       NomDet.DedANTIC_Anticipo,
       NomDet.DedODED_OtraDeduccion,
       NomDet.Ded_PensionVoluntaria,
       NomDet.Ded_RetencionFuente,
       NomDet.Ded_AFC,
       NomDet.Ded_Cooperativa,
       NomDet.Ded_EmbargoFiscal,
       NomDet.Ded_PlanComplementarios,
       NomDet.Ded_Educacion,
       NomDet.Ded_Reintegro,
       NomDet.Ded_Deuda,
       NomDet.DevTOT_Total,
       NomDet.DedTOT_Total
FROM dbo.Nomina_NE_Detalles AS NomDet
INNER JOIN dbo.Clientes AS CliEmp ON NomDet.IdCliente = CliEmp.IdCliente
INNER JOIN dbo.VClientesDir AS vCliDirEmp ON CliEmp.IdCliente = vCliDirEmp.IdCliente
INNER JOIN dbo.Nomina_Contratos AS NomContr ON NomDet.IdContrato = NomContr.IdContrato
INNER JOIN dbo.Nomina_NE_Encabezados AS NomEnc ON NomDet.IdNomina = NomEnc.IdNomina
LEFT OUTER JOIN dbo.FacturacionElectronica_Proveedores_Estados AS FEEstados ON NomDet.NeIdEstadoDian = FEEstados.IdEstado
LEFT OUTER JOIN dbo.VEmpleadosBancos_PorCliente AS Cta ON NomDet.IdCliente = Cta.IdCliente
LEFT OUTER JOIN dbo.FacturacionElectronica_MediosPagoContado AS MedPago ON NomEnc.IdMedPago = MedPago.IdMedPago
GO
PRINT N'Creando Vista [dbo].[VNomina_NE_Detalles_Totales]...';


GO
CREATE VIEW [dbo].[VNomina_NE_Detalles_Totales]
AS

SELECT dbo.Nomina_NE_Detalles.IdNomina,
       COUNT(*) AS NumEmpleados,
       SUM(CASE WHEN NeIdEstadoDian IS NULL THEN 1 ELSE 0 END) AS NumPorEnviar,
       SUM(CASE WHEN COALESCE (EsEnviado, 0) = 1 THEN 1 ELSE 0 END) AS NumEnviados,
       SUM(CASE WHEN NeIdEstadoDian IS NOT NULL AND COALESCE (EsEnviado, 0) = 0 THEN 1 ELSE 0 END) AS NumRechazados
FROM dbo.Nomina_NE_Detalles
LEFT OUTER JOIN dbo.FacturacionElectronica_Proveedores_Estados AS FEEstados ON dbo.Nomina_NE_Detalles.NeIdEstadoDian = FEEstados.IdEstado
GROUP BY dbo.Nomina_NE_Detalles.IdNomina
GO
PRINT N'Creando Vista [dbo].[VNomina_NE_Encabezados]...';


GO
CREATE VIEW [dbo].[VNomina_NE_Encabezados]
AS

SELECT VEnc.IdNomina,
       VEnc.CodNomina,
       VEnc.NomNomina,
       VEnc.Fecha,
       VEnc.FechaIni,
       VEnc.FechaFin,
       VEnc.IdEmpresa,
       Emp.EmpresaNombre,
       VEnc.IdPrefijo,
       Pre.NomPrefijo,
       VEnc.NumDocumento,
       VEnc.IdTipo,
       Tip.CodTipo,
       Tip.NomTipo,
       VEnc.IdPeriodo,
       Per.NomPeriodo,
       Mon.Abrev,
       VEnc.ValorTRM,
       VEnc.FechaPago,
       VEnc.IdMedPago,
       MPago.CodMedPago,
       MPago.NomMedPago,
       VEnc.IdFormaPago,
       FPago.NomFormaPago,
       VEnc.NeIdVersion,
       Emp.NeTokenDian,
       Emp.NeTokenPassword,
       Emp.NeVersion AS EmprNeVersion,
       CliEmp.Identificacion AS EmprNumIdentificacion,
       CliEmp.DVCliente AS EmprDV,
       CliEmp.IdTipoIdent AS EmprTipoIdentificacion,
       CliEmp.Nombre1 AS EmprNombre1,
       CliEmp.Nombre2 AS EmprNombre2,
       CliEmp.Apellido1 AS EmprApellido1,
       CliEmp.Apellido2 AS EmprApellido2,
       vCliDirEmp.Direccion AS EmprDireccion,
       vCliDirEmp.CodPais AS EmprCodPais,
       vCliDirEmp.IdCiudad AS EmprCodMunicipio,
       vCliDirEmp.IdDpto AS EmprCodDepartamento,
       FE_TipoEnvio.IdProveedor,
       FE_TipoEnvio.EsEnvioProd,
       COALESCE(VEncTot.NumEmpleados,0) AS NumEmpleados,
       COALESCE(VEncTot.NumEnviados,0) AS NumEnviados,
       COALESCE(VEncTot.NumPorEnviar,0) AS NumPorEnviar,
       COALESCE(VEncTot.NumRechazados,0) AS NumRechazados
FROM dbo.Nomina_NE_Periodos AS Per
INNER JOIN dbo.Nomina_NE_Encabezados AS VEnc
INNER JOIN dbo.Empresas AS Emp ON VEnc.IdEmpresa = Emp.IdEmpresa ON Per.IdPeriodo = VEnc.IdPeriodo
INNER JOIN dbo.Nomina_NE_Tipos AS Tip ON VEnc.IdTipo = Tip.IdTipo
LEFT OUTER JOIN dbo.VNomina_NE_Detalles_Totales AS VEncTot ON VEnc.IdNomina = VEncTot.IdNomina
LEFT OUTER JOIN dbo.FormasPago AS FPago ON VEnc.IdFormaPago = FPago.IdFormaPago
LEFT OUTER JOIN dbo.FacturacionElectronica_MediosPagoContado AS MPago ON VEnc.IdMedPago = MPago.IdMedPago
LEFT OUTER JOIN dbo.FacturacionElectronica_TipoEnvio AS FE_TipoEnvio ON VEnc.NeIdVersion = FE_TipoEnvio.IdTipoEnvio
LEFT OUTER JOIN dbo.VClientesDir AS vCliDirEmp
RIGHT OUTER JOIN dbo.Clientes AS CliEmp ON vCliDirEmp.IdCliente = CliEmp.IdCliente ON Emp.IdCliente = CliEmp.IdCliente
LEFT OUTER JOIN dbo.Prefijos AS Pre ON VEnc.IdPrefijo = Pre.IdPrefijo
LEFT OUTER JOIN dbo.Monedas AS Mon ON COALESCE (VEnc.IdMoneda,1) = Mon.IdMoneda
GO

ALTER PROCEDURE [dbo].[GetDocumentosCierre]

@IdDocs NVARCHAR(1000),
@FechaFin datetime,
@IdSucursal int,
@IdVend int

AS
BEGIN

DECLARE
@tIdDocs NVARCHAR(1000),
@tFechaFin datetime,
@tIdSucursal int,
@tIdVend int

SET @tIdDocs = @IdDocs
SET @tFechaFin = @FechaFin
SET @tIdSucursal = @IdSucursal
SET @tIdVend = @IdVend

--Se ejecuto en GUSTAVO NEIRA OSORIO y en FERRETERIA en GOLD
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED

;WITH tempEncabezados(IdEncab)
as
(
	select distinct IdEncab
	FROM
	(
		select distinct IdEncab
		from
		[dbo].[Encabezados_Cierres_Docs] as cierre inner join
		Encabezados_Mov as encMov on cierre.IdEncabMov=encMov.IdEncabMov

		UNION ALL 

		select distinct IdEncab
		from
		[dbo].[Encabezados_Cierres_Docs_Cont] as cierre inner join
		Encabezados_Cont as encCont on cierre.IdEncabCont=encCont.IdEncabCont
	)AS q
)
        

select VEnc.IdEncab,VEnc.Fecha,RTRIM(LTRIM(VEnc.CodDocumento + ' ' + ISNULL(IdPrefijo,''))) + ' ' + CAST(NumDocumento AS NVARCHAR(200)) AS DescripDoc,NumDocumento,
ISNULL(VEnc.Cantidad,0)Cantidad,ISNULL(SubIVA,0)SubIVA,ISNULL(SubTotal+SubIVA,ISNULL(Debito,0)) as Total, VEnc.CodDocumento,  VEnc.NomDocumento, EsMov, VEnc.NombreVend
from
tempEncabezados as encMov
right join VEncabezados VEnc on encMov.IdEncab=VEnc.IdEncab INNER JOIN
Documentos Doc ON VEnc.IdDocumento = Doc.IdDocumento
where encMov.IdEncab IS NULL AND
VEnc.IdDocumento IN(select number from iter$simple_intlist_to_tbl(@tIdDocs)) AND
VEnc.Fecha<=@tFechaFin AND
(@tIdSucursal is null OR @tIdSucursal=VEnc.IdSucursal)
AND(isnull(SubTotal,0)>0 OR isnull(Debito,0)>0)
AND (@tIdVend IS NULL OR @tIdVend = VEnc.IdClienteVend)

END
GO
PRINT N'Modificando Procedimiento [dbo].[GetPagoSeguridadSocial]...';


GO

ALTER PROCEDURE [dbo].[GetPagoSeguridadSocial]

@IdEmpresa INT,
@FechaIni NVARCHAR(10) = '',
@FechaFin NVARCHAR(10) = ''

AS
BEGIN

DECLARE
@FechaIniT DATETIME,
@FechaFinT DATETIME,
@salarioMin NUMERIC(28,6)

SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED

SET NOCOUNT ON;	

SET @FechaIniT = CAST(CONVERT(DATETIME, @FechaIni, 103) + ' 00:00:00' AS DATETIME)
SET @FechaFinT = CAST(CONVERT(DATETIME, @FechaFin, 103) + ' 23:59:59' AS DATETIME)

-- Salario Mínimo
	SET @salarioMin=(SELECT top(1) Valor FROM dbo.Nomina_Valores WHERE IdTipo=1 AND EsActivo=1)

;WITH tmpIBC(IdEncab, IdContrato, IdCliente, 
IBC_SALUD_EMPRESA, 
IBC_SALUD_EMPLEADO, 
NUM_DIAS_SALUD_EMPRESA, NUM_DIAS_SALUD_EMPLEADO, 
VALOR_SALUD_EMPRESA, 
VALOR_SALUD_EMPLEADO, 
IBC_PENSION, 
NUM_DIAS_PENSION, 
VALOR_PENSION_EMPRESA, 
VALOR_PENSION_EMPLEADO, 
IBC_RIESGOS, 
NUM_DIAS_RIESGOS, 
VALOR_RIESGOS, 
IBC_CCF, 
NUM_DIAS_CCF, 
VALOR_CCF, APV_AFIL, AVP_APORT,
AVP,
INTEGRAL, 
APORT_FONDO_SOLID,IdItem,IdItem1,
FechaIni,FechaFin,Cantidad

)
AS
(
SELECT  nomMov1.IdEncab, nomMov1.IdContrato, nomMov1.IdCliente, 
CASE WHEN nomMov.iditem = 201 THEN nomMov1.Cantidad * nomMov1.ValorUnit / nomMov1.ValorUnitInferior ELSE 0 END AS IBC_SALUD_EMPRESA, 
CASE WHEN nomMov.iditem = 202 THEN nomMov1.Cantidad * nomMov1.ValorUnit / nomMov1.ValorUnitInferior ELSE 0 END AS IBC_SALUD_EMPLEADO, 
CASE WHEN nomMov.iditem = 201 AND idclasif = 1 THEN nomMov1.cantidad ELSE 0 END AS NUM_DIAS_SALUD_EMPRESA, 
CASE WHEN nomMov.iditem = 202 AND idclasif = 1 THEN nomMov1.cantidad ELSE 0 END AS NUM_DIAS_SALUD_EMPLEADO, 
CASE WHEN nomMov.iditem = 201 THEN nomMov.ValorUnit ELSE 0 END AS VALOR_SALUD_EMPRESA, 
CASE WHEN nomMov.iditem = 202 THEN nomMov.ValorUnit ELSE 0 END AS VALOR_SALUD_EMPLEADO, 
CASE WHEN nomMov.iditem = 203 THEN nomMov1.Cantidad * nomMov1.ValorUnit / nomMov1.ValorUnitInferior ELSE 0 END AS IBC_PENSION, 
CASE WHEN nomMov.iditem = 203 AND idclasif = 1 THEN nomMov1.cantidad ELSE 0 END AS NUM_DIAS_PENSION, 
CASE WHEN nomMov.iditem = 203 THEN nomMov.ValorUnit ELSE 0 END AS VALOR_PENSION_EMPRESA, 
CASE WHEN nomMov.iditem = 204 THEN nomMov.ValorUnit ELSE 0 END AS VALOR_PENSION_EMPLEADO, 
CASE WHEN nomMov.iditem = 200 THEN nomMov1.Cantidad * nomMov1.ValorUnit / nomMov1.ValorUnitInferior ELSE 0 END AS IBC_RIESGOS, 
CASE WHEN nomMov.iditem = 200 AND idclasif = 1 THEN nomMov1.cantidad ELSE 0 END AS NUM_DIAS_RIESGOS, 
CASE WHEN nomMov.iditem = 200 THEN nomMov.ValorUnit ELSE 0 END AS VALOR_RIESGOS, 
CASE WHEN nomMov.iditem = 205 THEN nomMov1.Cantidad * nomMov1.ValorUnit / nomMov1.ValorUnitInferior ELSE 0 END AS IBC_CCF, 
CASE WHEN nomMov.iditem = 205 AND idclasif = 1 THEN nomMov1.cantidad ELSE 0 END AS NUM_DIAS_CCF, 
CASE WHEN nomMov.iditem = 205 THEN nomMov.ValorUnit ELSE 0 END AS VALOR_CCF, 
CASE WHEN nomMov.iditem = 223 OR nomMov1.iditem = 223 THEN nomMov.ValorUnit ELSE 0 END AS APV_AFIL, 
CASE WHEN nomMov.iditem = 224 OR nomMov1.iditem = 224 THEN nomMov.ValorUnit ELSE 0 END AS AVP_APORT,
CASE WHEN nomMov.iditem = 223 OR nomMov1.iditem = 223 OR nomMov1.iditem = 224 OR nomMov.iditem = 224 THEN 1 ELSE 0 END AS AVP,
CASE WHEN nomMov1.iditem = 100 THEN 1 ELSE 0 END AS INTEGRAL, 
CASE WHEN nomMov1.iditem = 199 THEN nomMov1.ValorUnit ELSE 0 END AS APORT_FONDO_SOLID, 
nomMov.IdItem, 
nomMov1.IdItem,nomMov1.
FechaIniVac,
nomMov1.FechaFinVac,
nomMov1.Cantidad as Cantidad

FROM dbo.Nomina_Movimientos AS nomMov INNER JOIN
dbo.Encabezados AS enc ON nomMov.IdEncab = enc.IdEncab RIGHT OUTER JOIN
dbo.Nomina_Movimientos AS nomMov1 ON nomMov.IdEncabNomMovBase = nomMov1.IdEncabNomMov INNER JOIN
dbo.Nomina_Items AS item ON nomMov1.IdItem = item.IdItem
                                                       
),

tmpIBC1
(IdEncab, IdContrato, IdCliente, 
IBC_SALUD_EMPRESA, 
IBC_SALUD_EMPLEADO, 
NUM_DIAS_SALUD_EMPRESA, NUM_DIAS_SALUD_EMPLEADO, 
VALOR_SALUD_EMPRESA, 
VALOR_SALUD_EMPLEADO, 
IBC_PENSION, 
NUM_DIAS_PENSION, 
VALOR_PENSION_EMPRESA, 
VALOR_PENSION_EMPLEADO, 
IBC_RIESGOS, 
NUM_DIAS_RIESGOS, 
VALOR_RIESGOS, 
IBC_CCF, 
NUM_DIAS_CCF, 
VALOR_CCF, APV_AFIL, AVP_APORT,
AVP,
INTEGRAL, 
APORT_FONDO_SOLID,IdItem,IdItem1,
FechaIni,FechaFin,Cantidad,
IRP,FechaIniIRP,FechaFinIRP,
IGE,FechaIniIGE, FechaFinIGE,
LMA,FechaIniLMA,FechaFinLMA,
VAC,FechaIniVAC,FechaFinVAC,
SLN,FechaIniSLN, FechaFinSLN,
TipoRow1
)
as
(
select 
qBase.*,
0 as IRP,Null as FechaIniIRP,Null as FechaFinIRP,
0 as IGE,Null as FechaIniIGE,Null as FechaFinIGE,
0 as LMA,Null as FechaIniLMA,Null as FechaFinLMA,
'' as VAC,Null as FechaIniVAC,Null as FechaFinVAC,
0 as SLN,Null as FechaIniSLN,Null as FechaFinSLN,
1 as TipoRow1
from tmpIBC as qBase
where qBase.IdItem1 not in(225,112,222,226,220,221,219,218)

union all

select
qBase.*,
qBase.Cantidad AS IRP, FechaIni as FechaIniIRP,FechaFin as FechaFinIRP,
0 as IGE,Null as FechaIniIGE,Null as FechaFinIGE,
0 as LMA,Null as FechaIniLMA,Null as FechaFinLMA,
'' as VAC,Null as FechaIniVAC,Null as FechaFinVAC,
0 as SLN,Null as FechaIniSLN,Null as FechaFinSLN,
2 as TipoRow1
from tmpIBC as qBase
where qBase.IdItem1 in(225)

union all

select
qBase.*,
0 as IRP,Null as FechaIniIRP,Null as FechaFinIRP,
1 as IGE,FechaIni as FechaIniIGE,FechaFin as FechaFinIGE,
0 as LMA,Null as FechaIniLMA,Null as FechaFinLMA,
'' as VAC,Null as FechaIniVAC,Null as FechaFinVAC,
0 as SLN,Null as FechaIniSLN,Null as FechaFinSLN,
3 as TipoRow1
from tmpIBC as qBase
where qBase.IdItem1 in(112)

union all

select
qBase.*,
0 as IRP,Null as FechaIniIRP,Null as FechaFinIRP,
0 as IGE,Null as FechaIniIGE,Null as FechaFinIGE,
1 as LMA,FechaIni as FechaIniLMA,FechaFin as FechaFinLMA,
'' as VAC,Null as FechaIniVAC,Null as FechaFinVAC,
0 as SLN,Null as FechaIniSLN,Null as FechaFinSLN,
4 as TipoRow1
from tmpIBC as qBase
where qBase.IdItem1 in(222,226)



union all

select
qBase.*,
0 as IRP,Null as FechaIniIRP,Null as FechaFinIRP,
0 as IGE,Null as FechaIniIGE,Null as FechaFinIGE,
0 as LMA,Null as FechaIniLMA,Null as FechaFinLMA,
case when IdItem1=218 THEN 'L' ELSE 'X' END as VAC,FechaIni as FechaIniVAC,FechaFin as FechaFinVAC,
0 as SLN,Null as FechaIniSLN,null as FechaFinSLN,
5 as TipoRow1
from tmpIBC as qBase
where qBase.IdItem1 in(220,221,218)


union all

select
qBase.*,
0 as IRP,Null as FechaIniIRP,Null as FechaFinIRP,
0 as IGE,Null as FechaIniIGE,Null as FechaFinIGE,
0 as LMA,Null as FechaIniLMA,Null as FechaFinLMA,
'' as VAC,Null as FechaIniVAC,Null as FechaFinVAC,
1 as SLN,FechaIni as FechaIniSLN,FechaFin as FechaFinSLN,
6 as TipoRow1
from tmpIBC as qBase
where qBase.IdItem1 in(219)

),


tmpIBCFin(
 IdEncab, IdCliente, IdContrato, VALOR_SALUD, VALOR_PENSION, IBC_RIESGOS, IBC_SALUD, 
                        IBC_PENSION,NUM_DIAS_SALUD, NUM_DIAS_PENSION, 
                        NUM_DIAS_RIESGOS, VALOR_RIESGOS, IBC_CCF, NUM_DIAS_CCF, VALOR_CCF, APV_AFIL, AVP_APORT, IRP, IGE, LMA, VAC, AVP, INTEGRAL, APORT_FONDO_SOLID, SLN,
						FechaIniIRP,FechaFinIRP,FechaIniIGE, FechaFinIGE,FechaIniLMA,FechaFinLMA,FechaIniVAC,FechaFinVAC,FechaIniSLN, FechaFinSLN,TipoRow1
)
as(

SELECT        IdEncab, IdCliente, IdContrato, VALOR_SALUD, VALOR_PENSION, 
						 CASE WHEN IBC_RIESGOS = 0 AND TipoRow1 != 1 THEN IBC_PENSION ELSE IBC_CCF END AS IBC_RIESGOS, 
						 CASE WHEN IBC_SALUD = 0 AND TipoRow1 != 1 THEN IBC_PENSION ELSE IBC_SALUD END AS IBC_SALUD, 
                         CASE WHEN IBC_PENSION = 0 AND TipoRow1 != 1 THEN IBC_SALUD ELSE IBC_PENSION END AS IBC_PENSION, CASE WHEN NUM_DIAS_SALUD = 0 AND 
                         TipoRow1 != 1 THEN Cantidad ELSE NUM_DIAS_SALUD END AS NUM_DIAS_SALUD, CASE WHEN NUM_DIAS_PENSION = 0 AND TipoRow1 != 1 THEN Cantidad ELSE NUM_DIAS_PENSION END AS NUM_DIAS_PENSION, 
                         CASE WHEN NUM_DIAS_RIESGOS = 0 AND TipoRow1 != 1 THEN Cantidad ELSE NUM_DIAS_RIESGOS END AS NUM_DIAS_RIESGOS, VALOR_RIESGOS, 
						 CASE WHEN IBC_CCF = 0 AND TipoRow1 != 1 THEN IBC_PENSION ELSE IBC_CCF END AS IBC_CCF, CASE WHEN NUM_DIAS_CCF = 0 AND 
                         TipoRow1 != 1 THEN Cantidad ELSE NUM_DIAS_CCF END AS NUM_DIAS_CCF, VALOR_CCF, APV_AFIL, AVP_APORT, IRP, IGE, LMA, VAC, AVP, INTEGRAL, APORT_FONDO_SOLID, SLN,
						  FechaIniIRP,FechaFinIRP,FechaIniIGE, FechaFinIGE,FechaIniLMA,FechaFinLMA,FechaIniVAC,FechaFinVAC,FechaIniSLN, FechaFinSLN,TipoRow1

FROM
(


SELECT        IdEncab, IdCliente, IdContrato, CASE WHEN IBC_SALUD_EMPRESA = 0 THEN IBC_SALUD_EMPLEADO ELSE IBC_SALUD_EMPRESA END AS IBC_SALUD, 
                                                    CASE WHEN NUM_DIAS_SALUD_EMPRESA = 0 THEN NUM_DIAS_SALUD_EMPLEADO ELSE NUM_DIAS_SALUD_EMPRESA END AS NUM_DIAS_SALUD, VALOR_SALUD, IBC_PENSION, 
                                                    NUM_DIAS_PENSION, VALOR_PENSION, IBC_RIESGOS, NUM_DIAS_RIESGOS, VALOR_RIESGOS, IBC_CCF, NUM_DIAS_CCF, VALOR_CCF, APV_AFIL, AVP_APORT, IRP, IGE, LMA, VAC, AVP, 
                                                    INTEGRAL, APORT_FONDO_SOLID, SLN, Cantidad, FechaIniIRP,FechaFinIRP,FechaIniIGE, FechaFinIGE,FechaIniLMA,FechaFinLMA,FechaIniVAC,FechaFinVAC,FechaIniSLN, FechaFinSLN,TipoRow1

FROM 

(

SELECT    IdEncab, IdCliente, MAX(IdContrato) AS IdContrato, SUM(IBC_SALUD_EMPRESA) AS IBC_SALUD_EMPRESA, SUM(IBC_SALUD_EMPLEADO) AS IBC_SALUD_EMPLEADO, 
                                                                              SUM(NUM_DIAS_SALUD_EMPRESA) AS NUM_DIAS_SALUD_EMPRESA, SUM(NUM_DIAS_SALUD_EMPLEADO) AS NUM_DIAS_SALUD_EMPLEADO, SUM(VALOR_SALUD_EMPRESA) 
                                                                              + SUM(VALOR_SALUD_EMPLEADO) AS VALOR_SALUD, SUM(IBC_PENSION) AS IBC_PENSION, SUM(NUM_DIAS_PENSION) AS NUM_DIAS_PENSION, SUM(VALOR_PENSION_EMPRESA) 
                                                                              + SUM(VALOR_PENSION_EMPLEADO) AS VALOR_PENSION, SUM(IBC_RIESGOS) AS IBC_RIESGOS, SUM(NUM_DIAS_RIESGOS) AS NUM_DIAS_RIESGOS, SUM(VALOR_RIESGOS) 
                                                                              AS VALOR_RIESGOS, SUM(IBC_CCF) AS IBC_CCF, SUM(NUM_DIAS_CCF) AS NUM_DIAS_CCF, SUM(VALOR_CCF) AS VALOR_CCF, SUM(APV_AFIL) AS APV_AFIL, SUM(AVP_APORT) 
                                                                              AS AVP_APORT, SUM(IRP) AS IRP, MAX(IGE) AS IGE, MAX(LMA) AS LMA, MAX(VAC) AS VAC, MAX(AVP) AS AVP, MAX(INTEGRAL) AS INTEGRAL, SUM(APORT_FONDO_SOLID) 
                                                                              AS APORT_FONDO_SOLID, MAX(SLN) AS SLN, MAX(Cantidad) AS Cantidad,
																			  FechaIniIRP,FechaFinIRP,FechaIniIGE, FechaFinIGE,FechaIniLMA,FechaFinLMA,FechaIniVAC,FechaFinVAC,FechaIniSLN, FechaFinSLN,TipoRow1
from tmpIBC1
GROUP BY IdEncab, IdCliente,TipoRow1,FechaIniIRP,FechaFinIRP,FechaIniIGE, FechaFinIGE,FechaIniLMA,FechaFinLMA,FechaIniVAC,FechaFinVAC,FechaIniSLN,FechaFinSLN
)AS q
)AS q1
)


	
	select ROW_NUMBER() OVER(PARTITION BY q.IdCliente ORDER BY q.IdContrato asc) AS Row, q.IdCliente,tipo.CodMiPlanilla as NomTipoIdent,cli.Identificacion,coalesce(vnom.IdTipoCot,1)TipoCot,
	coalesce(vnom.IdSubTipoCot,0)SubTipoCot,case when vnom.IdTipoExt=1 then cast(1 as bit) else cast(0 as bit) end Extranjero,
	case when vnom.IdTipoExt=2 then cast(1 as bit) else cast(0 as bit) end Col_Ext, 
	cast(apellido1 as varchar(max)) collate SQL_Latin1_General_Cp1251_CS_AS as Apellido1, 
	cast(Apellido2 as varchar(max)) collate SQL_Latin1_General_Cp1251_CS_AS as Apellido2,
	cast(Nombre1 as varchar(max)) collate SQL_Latin1_General_Cp1251_CS_AS as Nombre1,
	cast(Nombre2 as varchar(max)) collate SQL_Latin1_General_Cp1251_CS_AS as Nombre2,
	case when vnom.FechaIni between @FechaIniT and @FechaFinT and ROW_NUMBER() OVER(PARTITION BY q.IdCliente ORDER BY q.IdContrato asc)=1 then cast(1 as bit) else cast(0 as bit) end ING,
	case when vnom.FechaRetiro between @FechaIniT and @FechaFinT and ROW_NUMBER() OVER(PARTITION BY q.IdCliente ORDER BY q.IdContrato asc)=1 then cast(1 as bit) else cast(0 as bit) end RET,
	cast(0 as bit) TDE,cast(0 as bit) TAE,cast(0 as bit) TDP, cast(0 as bit) TAP, cast(0 as bit) VSP,
	cast(0 as bit) VTE, cast(0 as bit) VST, 
	cast(SLN as bit)SLN,
	cast(q.IGE as bit)IGE, 
	cast(q.LMA as bit)LMA, 
	VAC,
	cast(q.AVP as bit)AVP,
	cast(0 as bit)VCT, 
	q.IRP
	,CodAFP AS COD_AFP,'' COD_AFP_TRANS,CodEPS AS COD_EPS,
	'' COD_EPS_TRANS,CodCCF AS COD_CCF, NUM_DIAS_PENSION,NUM_DIAS_SALUD,NUM_DIAS_RIESGOS,NUM_DIAS_CCF, vnom.SueldoIni SALARIO_BASICO,q.INTEGRAL,
	IBC_PENSION,IBC_SALUD,IBC_RIESGOS,IBC_CCF,TARIFA_AFP, q.APV_AFIL,q.AVP_APORT,CAST (NULL  AS NUMERIC(28,6)) VALOR_NO_RETE,CAST (0 AS NUMERIC(28,6)) UPC_ADIC,
	CASE WHEN SLN=1 AND (q.EsExoneradoAportes=1 or VNom.EsExoneradoAportes = 1) THEN 0 ELSE TARIFA_EPS END TARIFA_EPS,
	CASE WHEN TipoRow1!=1 THEN 0 ELSE vnom.ARPTarifa END TARIFA_RIESGO,
	TARIFA_CCF,TARIFA_SENA,TARIFA_ICBF, CAST(0 AS  NUMERIC(28,6)) TARIFA_ESAP,CAST(0 AS NUMERIC(28,6)) TARIFA_MISNIS,
	CEILING(q.VALOR_RIESGOS/100)*100 AS COTIZACION_RIESGOS,ceiling(q.VALOR_CCF/100)*100 AS COTIZACION_CAJA, ceiling(VALOR_PENSION/100)*100 AporteObligatorioAFP,round(APORT_FONDO_SOLID/2,-2)APORT_FONDO_SOLID,round(APORT_FONDO_SOLID/2,-2)APORT_FONDO_SUBCUENTA,
	ceiling(VALOR_SALUD/100)*100 AporteObligatorioSalud, '' as NumIncap, 0 as ValorIncap,'' as NumMat, 0 as ValorMat, 0 as CodigoCT,round((IBC_CCF*TARIFA_SENA/100),-2)VALOR_SENA,
	round((IBC_CCF*TARIFA_ICBF/100),-2)VALOR_ICBF, cast(0 AS  numeric(28,6)) VALOR_ESAP,cast(0 AS numeric(28,6)) VALOR_MISNIS,[IdDptoCaja]Dpto,[CodMunicipioCaja]Municipio,
	case when (q.EsExoneradoAportes=1 or VNom.EsExoneradoAportes = 1) then 'S' else 'N' end  Exonerado,CodTarifa,
	case when vnom.FechaIni between @FechaIniT and @FechaFinT then vnom.FechaIni else null end FechaIng,
	case when vnom.FechaRetiro between @FechaIniT and @FechaFinT then FechaRetiro else null end FechaRet,
	null as FechaVsp,FechaIniSLN,FechaFinSLN,FechaIniIGE, FechaFinIGE,FechaIniLMA,FechaFinLMA,FechaIniVAC,FechaFinVAC,
	null as FechaIniVCT ,null as FechaFinVCT,FechaIniIRP,FechaFinIRP, IBC_CCF IBC_Diferente_CCF,NUM_DIAS_SALUD*8 as HorasLabor, VNom.PreTipoSalario
    
	from
	(
	select vIBC.IdCliente,vIBC.IdContrato as IdContrato,
	case when SUM(vIBC.IBC_SALUD)> @salarioMin OR SLN =1 then ceiling(SUM(vIBC.IBC_SALUD))  else ceiling(SUM(vIBC.IBC_SALUD))  end IBC_SALUD, 
	SUM(vIBC.NUM_DIAS_SALUD)NUM_DIAS_SALUD,SUM(vIBC.VALOR_SALUD)VALOR_SALUD,
	case when SUM(vIBC.IBC_PENSION) > @salarioMin OR SLN =1 then ceiling(SUM(vIBC.IBC_PENSION)) else ceiling(SUM(vIBC.IBC_PENSION)) end IBC_PENSION,
	SUM(vIBC.NUM_DIAS_PENSION)NUM_DIAS_PENSION,SUM(vIBC.VALOR_PENSION)VALOR_PENSION,
	case when SUM(vIBC.IBC_RIESGOS) > @salarioMin  OR TipoRow1 !=1then ceiling(SUM(vIBC.IBC_RIESGOS)) else  ceiling(SUM(vIBC.IBC_RIESGOS)) end  IBC_RIESGOS,
	SUM(vIBC.NUM_DIAS_RIESGOS)NUM_DIAS_RIESGOS,SUM(vIBC.VALOR_RIESGOS)VALOR_RIESGOS,
	case when SUM(vIBC.IBC_CCF) > @salarioMin   OR TipoRow1 !=1 then  ceiling(SUM(vIBC.IBC_CCF)) else ceiling(SUM(vIBC.IBC_CCF)) end IBC_CCF,
	SUM(vIBC.NUM_DIAS_CCF)NUM_DIAS_CCF,SUM(vIBC.VALOR_CCF)VALOR_CCF,	
	SUM(vIBC.APV_AFIL)APV_AFIL,SUM(vIBC.AVP_APORT)AVP_APORT,SUM(vIBC.IRP)IRP,max(IGE)IGE,max(LMA)LMA,max(VAC)VAC,max(AVP)AVP,max(INTEGRAL)INTEGRAL,SLN,
	max(nomTar.TARIFA_EPS)TARIFA_EPS,max(nomTar.TARIFA_AFP)TARIFA_AFP,
	case when SLN =1 then 0 else max(nomTar.TARIFA_CCF)end TARIFA_CCF,
	max(nomTar.TARIFA_SENA)TARIFA_SENA,max(nomTar.TARIFA_ICBF)TARIFA_ICBF,
	SUM(vIBC.APORT_FONDO_SOLID)APORT_FONDO_SOLID,
	Emp.EsExoneradoAportes, FechaIniIRP,FechaFinIRP,FechaIniIGE, FechaFinIGE,FechaIniLMA,FechaFinLMA,FechaIniVAC,FechaFinVAC,FechaIniSLN, FechaFinSLN,TipoRow1
	from tmpIBCFin vIBC inner join [dbo].[Encabezados] enc
	on vIBC.IdEncab=enc.IdEncab left join [dbo].[VNominaTarifas] nomTar on vIBC.IdEncab=nomTar.IdEncab and vIBC.IdContrato=nomTar.IdContrato
	inner join Empresas Emp on emp.IdEmpresa=enc.IdEmpresa
	where enc.IdEmpresa=@IdEmpresa and FechaIni between @FechaIniT and @FechaFinT
	group by  vIBC.IdCliente,vIBC.IdContrato,SLN,Emp.EsExoneradoAportes,TipoRow1, FechaIniIRP,FechaFinIRP,FechaIniIGE, FechaFinIGE,FechaIniLMA,FechaFinLMA,FechaIniVAC,FechaFinVAC,FechaIniSLN, FechaFinSLN
	) as q inner join VClientes2 cli on q.IdCliente=cli.IdCliente
	inner join VNominaContratos VNom on VNom.IdContrato=q.IdContrato
	inner join [dbo].[Clientes_TiposIdent] tipo on tipo.IdTipoIdent=cli.IdTipoIdent 
	left join [dbo].[Clientes_ArpTarifas] arpTarifa on arpTarifa.IdTarifa=VNom.IdArpTarifa
	order by q.IdContrato
END
GO
PRINT N'Creando Procedimiento [dbo].[GetNominaElectronica]...';


GO
CREATE PROCEDURE [dbo].[GetNominaElectronica]
@IdNomina int

AS
BEGIN

DECLARE

@IdNom  INT = NULL

SET NOCOUNT ON;	
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED

SET @IdNom = @IdNomina

SELECT IdNomina, CodNomina, NomNomina, Fecha, FechaIni, FechaFin, IdEmpresa, IdEmpresas, 0 as NumEmpleados, 0 as NumEnviados, 0 as NumPorEnviar, 0 as NumRechazados
FROM NominaElectr_Encabezados
	
END
GO
PRINT N'Creando Procedimiento [dbo].[NominaElectronicaInsertarEmpleados]...';


GO
CREATE PROCEDURE [dbo].[NominaElectronicaInsertarEmpleados] 
      @IdEmpresa INT,
      @FechaIni NVARCHAR(10) = '',
      @FechaFin NVARCHAR(10) = '',
      @IdNomina int= 0,
      @Exito INT = 0 output
AS

BEGIN


DECLARE
	@IdPref INT,
    @FechaIniT DATETIME,
    @FechaFinT DATETIME

SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
	
    SET @Exito = 1

	--Procedimiento para Usuario Auditoria
    --exec CrearContextoUsuario @InfoUsuario
    SET @FechaIniT = CAST(CONVERT(DATETIME, @FechaIni, 103) + ' 00:00:00' AS DATETIME)
    SET @FechaFinT = CAST(CONVERT(DATETIME, @FechaFin, 103) + ' 23:59:59' AS DATETIME)

    SELECT @IdPref = IdPrefijo FROM Nomina_NE_Encabezados where IdNomina  = @IdNomina

	INSERT INTO Nomina_NE_Detalles (IdNomina, IdPrefijo, NumDocumento, IdCliente, IdContrato, Dev_DiasTrabajados, Dev_SueldoTrabajado, DevTRANS_AuxilioTransporte, DevTOT_Total, DedTOT_Total)
    SELECT      @IdNomina, @IdPref,0, Mov.IdCliente, Mov.IdContrato, 0, 0, 0, 0, 0
    FROM         dbo.Encabezados AS Enc INNER JOIN
                 dbo.Nomina_Movimientos AS Mov ON Enc.IdEncab = Mov.IdEncab
    WHERE        Enc.Fecha BETWEEN @FechaIniT AND @FechaFinT
    GROUP BY Mov.IdCliente, Mov.IdContrato


    IF @@error <> 0 GOTO ERR_HANDLER

    RETURN

ERR_HANDLER:

  SET @Exito = 0
  
END
GO

/*
Plantilla de script posterior a la implementación							
--------------------------------------------------------------------------------------
	Este archivo contiene instrucciones de SQL que se anexarán al script de compilación.		
	Use la sintaxis de SQLCMD para incluir un archivo en el script posterior a la implementación.			
	Ejemplo:      :r .\miArchivo.sql								
	Use la sintaxis de SQLCMD para hacer referencia a una variable en el script posterior a la implementación.		
	Ejemplo:      :setvar TableName miTabla							
				SELECT * FROM [$(TableName)]					
--------------------------------------------------------------------------------------
*/


--Datos de Nomina Electronica
--//
IF (NOT EXISTS(select * from Permisos_Interfaces where IdInterface = 664))
insert into dbo.Permisos_Interfaces (IdInterface, NomInterface, EsActivo, NomClase, EsSistema, IdInterfaceParent)
values(664,'Basic Nomina Electronica',1,'BasicNominaElectronica',0,664)
GO

IF (NOT EXISTS(select * from Permisos_Interfaces where IdInterface = 665))
insert into dbo.Permisos_Interfaces (IdInterface, NomInterface, EsActivo, NomClase, EsSistema, IdInterfaceParent)
values(665,'Find Nomina Electronica',1,'FindNominaElectronica',0,665)
GO

IF (NOT EXISTS(select * from Permisos_InterfacesPorUsuario where IdInterface = 664))
begin
	insert into dbo.Permisos_InterfacesPorUsuario (IdUsuario, IdInterface, EsConsultar, EsInsertar, EsActualizar, EsEliminar, EsConsultarDenegar, EsInsertarDenegar, EsActualizarDenegar, EsEliminarDenegar)
	values (2,664,1,1,1,1,0,0,0,0)

	insert into dbo.Permisos_InterfacesPorUsuario (IdUsuario, IdInterface, EsConsultar, EsInsertar, EsActualizar, EsEliminar, EsConsultarDenegar, EsInsertarDenegar, EsActualizarDenegar, EsEliminarDenegar)
	values (22,664,1,1,1,1,0,0,0,0)

	insert into dbo.Permisos_InterfacesPorUsuario (IdUsuario, IdInterface, EsConsultar, EsInsertar, EsActualizar, EsEliminar, EsConsultarDenegar, EsInsertarDenegar, EsActualizarDenegar, EsEliminarDenegar)
	values (-103,664,1,1,1,1,0,0,0,0)

	insert into dbo.Permisos_InterfacesPorUsuario (IdUsuario, IdInterface, EsConsultar, EsInsertar, EsActualizar, EsEliminar, EsConsultarDenegar, EsInsertarDenegar, EsActualizarDenegar, EsEliminarDenegar)
	values (-104,664,1,1,1,1,0,0,0,0)

	insert into dbo.Permisos_InterfacesPorUsuario (IdUsuario, IdInterface, EsConsultar, EsInsertar, EsActualizar, EsEliminar, EsConsultarDenegar, EsInsertarDenegar, EsActualizarDenegar, EsEliminarDenegar)
	values (-105,664,1,1,1,1,0,0,0,0)

	insert into dbo.Permisos_InterfacesPorUsuario (IdUsuario, IdInterface, EsConsultar, EsInsertar, EsActualizar, EsEliminar, EsConsultarDenegar, EsInsertarDenegar, EsActualizarDenegar, EsEliminarDenegar)
	values (-106,664,1,1,1,1,0,0,0,0)

	insert into dbo.Permisos_InterfacesPorUsuario (IdUsuario, IdInterface, EsConsultar, EsInsertar, EsActualizar, EsEliminar, EsConsultarDenegar, EsInsertarDenegar, EsActualizarDenegar, EsEliminarDenegar)
	values (-107,664,1,1,1,1,0,0,0,0)
end
GO

IF (NOT EXISTS(select * from Permisos_InterfacesPorUsuario where IdInterface = 665))
begin
	insert into dbo.Permisos_InterfacesPorUsuario (IdUsuario, IdInterface, EsConsultar, EsInsertar, EsActualizar, EsEliminar, EsConsultarDenegar, EsInsertarDenegar, EsActualizarDenegar, EsEliminarDenegar)
	values (2,665,1,1,1,1,0,0,0,0)

	insert into dbo.Permisos_InterfacesPorUsuario (IdUsuario, IdInterface, EsConsultar, EsInsertar, EsActualizar, EsEliminar, EsConsultarDenegar, EsInsertarDenegar, EsActualizarDenegar, EsEliminarDenegar)
	values (22,665,1,1,1,1,0,0,0,0)

	insert into dbo.Permisos_InterfacesPorUsuario (IdUsuario, IdInterface, EsConsultar, EsInsertar, EsActualizar, EsEliminar, EsConsultarDenegar, EsInsertarDenegar, EsActualizarDenegar, EsEliminarDenegar)
	values (-103,665,1,1,1,1,0,0,0,0)

	insert into dbo.Permisos_InterfacesPorUsuario (IdUsuario, IdInterface, EsConsultar, EsInsertar, EsActualizar, EsEliminar, EsConsultarDenegar, EsInsertarDenegar, EsActualizarDenegar, EsEliminarDenegar)
	values (-104,665,1,1,1,1,0,0,0,0)

	insert into dbo.Permisos_InterfacesPorUsuario (IdUsuario, IdInterface, EsConsultar, EsInsertar, EsActualizar, EsEliminar, EsConsultarDenegar, EsInsertarDenegar, EsActualizarDenegar, EsEliminarDenegar)
	values (-105,665,1,1,1,1,0,0,0,0)

	insert into dbo.Permisos_InterfacesPorUsuario (IdUsuario, IdInterface, EsConsultar, EsInsertar, EsActualizar, EsEliminar, EsConsultarDenegar, EsInsertarDenegar, EsActualizarDenegar, EsEliminarDenegar)
	values (-106,665,1,1,1,1,0,0,0,0)

	insert into dbo.Permisos_InterfacesPorUsuario (IdUsuario, IdInterface, EsConsultar, EsInsertar, EsActualizar, EsEliminar, EsConsultarDenegar, EsInsertarDenegar, EsActualizarDenegar, EsEliminarDenegar)
	values (-107,665,1,1,1,1,0,0,0,0)
end
GO

IF (NOT EXISTS(SELECT * FROM Menu WHERE IdMenu = 911389))
INSERT INTO [dbo].[Menu]
		    ([IdMenu]
           ,[NumPantalla]
           ,[NomMenu]
           ,[EsGrupo]
           ,[IdMenuPadre]
           ,[Orden]
           ,[AyudaTexto]
           ,[Opcion]
           ,[NomForm]
           ,[IdImageNormal]
           ,[IdImageMouseOver]
           ,[IdImageMouseDown]
           ,[IdImageMouseDrag]
           ,[IdInterface]
           ,[EsActivo]
           ,[xxxRevisado])
VALUES 
(911389,1,'Crear Nomina Electronica',1,10016,1,'Crear Nomina Electronica',1,'BasicNominaElectronica',11104,11104,11104,11104,664,0,0)
GO

IF (NOT EXISTS(SELECT * FROM Menu WHERE IdMenu = 911390))
INSERT INTO [dbo].[Menu]
		    ([IdMenu]
           ,[NumPantalla]
           ,[NomMenu]
           ,[EsGrupo]
           ,[IdMenuPadre]
           ,[Orden]
           ,[AyudaTexto]
           ,[Opcion]
           ,[NomForm]
           ,[IdImageNormal]
           ,[IdImageMouseOver]
           ,[IdImageMouseDown]
           ,[IdImageMouseDrag]
           ,[IdInterface]
           ,[EsActivo]
           ,[xxxRevisado])
VALUES
(911390,1,'Buscar Nomina Electronica',1,10035,1,'Buscar Nomina Electronica',1,'FindNominaElectronica',11104,11104,11104,11104,665,0,0)
GO

IF (NOT EXISTS(select * from Nomina_NE_Tipos where IdTipo = 1))
INSERT INTO Nomina_NE_Tipos (IdTipo, CodTipo, NomTipo, EsActivo) VALUES (1, 102, 'Nomina Normal', 1)
GO

IF (NOT EXISTS(select * from Nomina_NE_Tipos where IdTipo = 2))
INSERT INTO Nomina_NE_Tipos (IdTipo, CodTipo,NomTipo,EsActivo) VALUES (2, 103, 'Nomina Ajuste', 1)
GO

IF (NOT EXISTS(select * from Nomina_NE_Periodos where IdPeriodo = 1))
insert into Nomina_NE_Periodos (IdPeriodo, NomPeriodo, EsActivo) values (1, 'Semanal', 1)
GO

IF (NOT EXISTS(select * from Nomina_NE_Periodos where IdPeriodo = 2))
insert into Nomina_NE_Periodos (IdPeriodo, NomPeriodo, EsActivo) values (2,	'Decenal',1)
GO

IF (NOT EXISTS(select * from Nomina_NE_Periodos where IdPeriodo = 3))
insert into Nomina_NE_Periodos (IdPeriodo, NomPeriodo, EsActivo) values (3,	'Catorcenal',1)
GO

IF (NOT EXISTS(select * from Nomina_NE_Periodos where IdPeriodo = 4))
insert into Nomina_NE_Periodos (IdPeriodo, NomPeriodo, EsActivo) values (4,	'Quincenal',1)
GO

IF (NOT EXISTS(select * from Nomina_NE_Periodos where IdPeriodo = 5))
insert into Nomina_NE_Periodos (IdPeriodo, NomPeriodo, EsActivo) values (5,	'Mensual',1)
GO

IF (NOT EXISTS(select * from Nomina_NE_Periodos where IdPeriodo = 6))
insert into Nomina_NE_Periodos (IdPeriodo, NomPeriodo, EsActivo) values (6,	'Otro', 1)
GO

if not exists(select * from Nomina_TiposContratos where IdTipo=1)
   insert into Nomina_TiposContratos (IdTipo, NomTipo, EsSistema) values (1,'Termino Fijo',1)
else
   update Nomina_TiposContratos set NomTipo = 'Termino Fijo', EsSistema = 1 where IdTipo=1
GO

if not exists(select * from Nomina_TiposContratos where IdTipo=2)
   insert into Nomina_TiposContratos (IdTipo, NomTipo, EsSistema) values (2,'Término Indefinido',1)
else
   update Nomina_TiposContratos set NomTipo = 'Término Indefinido', EsSistema = 1 where IdTipo=2
GO

if not exists(select * from Nomina_TiposContratos where IdTipo=3)
   insert into Nomina_TiposContratos (IdTipo, NomTipo, EsSistema) values (3,'Obra o Labor',1)
else
   update Nomina_TiposContratos set NomTipo = 'Obra o Labor', EsSistema = 1 where IdTipo=3
GO

if not exists(select * from Nomina_TiposContratos where IdTipo=4)
   insert into Nomina_TiposContratos (IdTipo, NomTipo, EsSistema) values (4,'Aprendizaje',1)
else
   update Nomina_TiposContratos set NomTipo = 'Aprendizaje', EsSistema = 1 where IdTipo=4
GO

if not exists(select * from Nomina_TiposContratos where IdTipo=5)
   insert into Nomina_TiposContratos (IdTipo, NomTipo, EsSistema) values (5,'Practicas o Pasantias',1)
else
   update Nomina_TiposContratos set NomTipo = 'Practicas o Pasantias', EsSistema = 1 where IdTipo=5
GO

if not exists(select * from Nomina_Tipos_Cotizantes where IdTipoCot = 23)
  insert into dbo.Nomina_Tipos_Cotizantes (IdTipoCot, NomTipoCot, Nota, EsActivo)
  values (23, N'Estudiantes aportes solo riesgos laborales', N'Estudiantes aportes solo riesgos laborales', 1)
GO

if not exists(select * from Nomina_Tipos_Cotizantes where IdTipoCot = 56)
  insert into dbo.Nomina_Tipos_Cotizantes (IdTipoCot, NomTipoCot, Nota, EsActivo)
  values (56, N'Pre pensionado con aporte voluntario a salud', N'Pre pensionado con aporte voluntario a salud', 1)
GO

if not exists(select * from Nomina_Tipos_Cotizantes where IdTipoCot = 58)
  insert into dbo.Nomina_Tipos_Cotizantes (IdTipoCot, NomTipoCot, Nota, EsActivo)
  values (58, N'Estudiantes de prácticas laborales en el sector público', N'Estudiantes de prácticas laborales en el sector público', 1)
GO

if not exists(select * from Nomina_SubTipos_Cotizantes where IdSubTipoCot = 0)
  insert into dbo.Nomina_SubTipos_Cotizantes(IdSubTipoCot, NomSubTipoCot, EsActivo)
  values (0, N'No Aplica', 1)

if not exists(select * from Permisos_Controles where IdControl = 1019)
   insert into Permisos_Controles (IdControl, NomControl)
   values(1019,'btnNomElectronica')

if not exists(select * from Permisos_Controles where IdControl = 1020)
   insert into Permisos_Controles (IdControl, NomControl)
   values(1020,'btnNeActualizar')

if not exists(select * from Permisos_Controles where IdControl = 1021)
   insert into Permisos_Controles (IdControl, NomControl)
   values(1021,'btnNeEnviar')

if not exists(select * from Permisos_Controles where IdControl = 1022)
   insert into Permisos_Controles (IdControl, NomControl)
   values(1022,'btnNeCargar')
--//

update FacturacionElectronica_Proveedores_Estados set EsEnviado = 1 where IdEstado IN(1,4)
GO

--Caso de reenvio de documentos
update Parametros set ValParametro='2,3,5,15,13,36,37' where CodParametro = 246
GO

--Video de CE que estaba desactualizado y otros
--//
UPDATE Permisos_Interfaces SET VideoURL = 'https://youtu.be/Jlm4noL4s0U' WHERE IdInterface = 13
UPDATE Permisos_Interfaces SET VideoURL = 'https://youtu.be/gZFGBchhuA0' WHERE IdInterface = 47
UPDATE Permisos_Interfaces SET VideoURL = 'https://youtu.be/2FeL3C3V8nQ' WHERE IdInterface = 115
UPDATE Permisos_Interfaces SET VideoURL = 'https://youtu.be/D9AsmwiX4GA' WHERE IdInterface = 316
UPDATE Permisos_Interfaces SET VideoURL = 'https://youtu.be/AFWcL2cJv5w' WHERE IdInterface = 321
UPDATE Permisos_Interfaces SET VideoURL = 'https://youtu.be/4XxM_5CNHMY' WHERE IdInterface = 322
UPDATE Permisos_Interfaces SET VideoURL = 'https://youtu.be/huPzJM-1sXk' WHERE IdInterface = 323
UPDATE Permisos_Interfaces SET VideoURL = 'https://youtu.be/2_IZpVLnMH4' WHERE IdInterface = 326
UPDATE Permisos_Interfaces SET VideoURL = 'https://youtu.be/GIYgmpepPIc' WHERE IdInterface = 333
UPDATE Permisos_Interfaces SET VideoURL = 'https://youtu.be/pviAWL40LYM' WHERE IdInterface = 335
UPDATE Permisos_Interfaces SET VideoURL = 'https://youtu.be/D9GS3ngFUDk' WHERE IdInterface = 356
UPDATE Permisos_Interfaces SET VideoURL = 'https://youtu.be/foIsZ_IXkMc' WHERE IdInterface = 500
UPDATE Permisos_Interfaces SET VideoURL = 'https://youtu.be/yuYiBQgaf9I' WHERE IdInterface = 608
UPDATE Permisos_Interfaces SET VideoURL = 'https://youtu.be/wC99kgOHE80' WHERE IdInterface = 609
UPDATE Permisos_Interfaces SET VideoURL = 'https://youtu.be/JPhUI97geo4' WHERE IdInterface = 612
UPDATE Permisos_Interfaces SET VideoURL = 'https://youtu.be/Lu9QAjnf7ZI' WHERE IdInterface = 633
UPDATE Permisos_Interfaces SET VideoURL = 'https://youtu.be/0tWDk3auvGs' WHERE IdInterface = 648
UPDATE Permisos_Interfaces SET VideoURL = 'https://youtu.be/eQsKjZatfH8' WHERE IdInterface = 661
GO
--//

IF (NOT EXISTS(select * from Nomina_Contratos_TipoSalario where IdTipoSalario = 1))
insert into Nomina_Contratos_TipoSalario (IdTipoSalario, DesTipoSalario, PreTipoSalario) values (1,'Salario Integral', 'X')
GO

IF (NOT EXISTS(select * from Nomina_Contratos_TipoSalario where IdTipoSalario = 2))
insert into Nomina_Contratos_TipoSalario (IdTipoSalario, DesTipoSalario, PreTipoSalario) values (2,'Salario Fijo', 'F')
GO

IF (NOT EXISTS(select * from Nomina_Contratos_TipoSalario where IdTipoSalario = 3))
insert into Nomina_Contratos_TipoSalario (IdTipoSalario, DesTipoSalario, PreTipoSalario) values (3,'Salario Variable', 'V')
GO

INSERT INTO ZiurVersiones (IdVersion, NumVersion, Descripcion)
VALUES (304,894,'Cambios de Nomina Electronica')
GO

COMMIT;
GO
