ALTER PROCEDURE [dbo].[sp_remDatosLibro]
(@periodo  INT = 0, 
 @mes      INT = 0, 
 @fichaini INT = 0, 
 @fichafin INT = 0, 
 @unineg   INT = 0, 
 @dep      INT = 0, 
 @libro    INT = 0
)
AS
     SELECT T.periodo, 
            T.mes, 
            T.ficha, 
            T.activo, 
            T.rut, 
            T.dv, 
           
		    CASE T.extranjero
				WHEN 1 THEN 'CHILENA'
 				WHEN 2 THEN 'EXTRANJERA'				
				WHEN 3 THEN 'EXTRANJERA/NO COTIZA'
		   END AS nacionalidad, 
	
			T.nombres, 
			RTRIM(T.apePaterno) + ' ' + RTRIM(T.apeMaterno) AS apellidos,
            T.apePaterno, 
            T.apeMaterno, 
            CONVERT(VARCHAR,T.fechaNac,103) AS fechaNac, 
            case T.sexo
			WHEN 0 THEN 'Femenino'
			WHEN 1 THEN 'Masculino'	
			END AS sexo, 
            T.cargo, 
            T.profesion, 
            T.direccion, 
            isnull(priComuna.descripcion,'No definida') AS comuna, 
            T.ciudad, 

			T.dirSucursal,
            isnull(priComuna2.descripcion,'No definida') AS comSucursal, 
            T.ciuSucursal, 


			--isnull(priPaises.descripcion, 'No definido') AS pais,
            T.pais,
			


			T.telefonoPart, 
            T.telefonoEmp, 
            T.celularPart, 
            T.celularEmp, 
            T.correoPart, 
            T.correoEmp, 
            T.estadoCivil, 
			CASE T.estadoCivil
			WHEN 0 THEN 'SOLTERO(A)'
			WHEN 1 THEN 'CASADO(A)'
			WHEN 2 THEN 'VIUDO(A)'
			WHEN 3 THEN 'DIVORCIADO(A)'
			WHEN 4 THEN 'SEPARADO(A)'
			WHEN 5 THEN 'CONVIVIENTE'
			ELSE ''
			END AS estadoCivilDesc,
            T.seccion, 
            T.departamento, 
            T.unidadNegocios, 
            CONVERT(VARCHAR,T.fechaIngreso,103) AS fechaIngreso, 
            CONVERT(VARCHAR,T.fechaContrato,103) AS fechaContrato,
            
			case T.tipoContrato
			WHEN 1 THEN 'Plazo fijo'			
			WHEN 2 THEN 'Plazo Indefinido'
			WHEN 3 THEN 'Por faena'
			END AS tipoContrato,
			
            CONVERT(VARCHAR,T.fechaTermino,103) AS fechaTermino, 
            CONVERT(VARCHAR,T.fechaTerminoExt,103) AS fechaTerminoExt, 
            CONVERT(VARCHAR,T.fechaFiniquito,103) AS fechaFiniquito, 
           
		   CASE T.tipoSueldo
			WHEN 1 THEN 'Sueldo'
			WHEN 2 THEN 'Sobresueldo'
			WHEN 3 THEN 'Comisión'
			WHEN 4 THEN 'Participación'
			WHEN 5 THEN 'Gratificación'
			END AS tipoSueldo,

            T.sueldoBase,
			
            CASE T.tipoJornada 
				WHEN 1 THEN 'Bisemanal'
				WHEN 2 THEN 'Extraoridinaria'
				WHEN 3 THEN 'Ordinaria'
				WHEN 4 THEN 'Parcial'
				WHEN 4 THEN 'Prolongada'
				ELSE 'No definida'
			END AS tipoJornada,
			
			T.cantidadHoras, 
            T.tipoMovilizacion, 
            T.montoMovilizacion, 
            T.tipoColacion, 
            T.montoColacion, 
            T.rentaPromedio, 
            T.formaPago, 
            T.numCuenta, 
            T.banco, 
            T.regimenPrevisional, 
            T.idPrevision, 
            T.porcPrevision, 
            T.tipoAhorroAFP, 
            T.montoAhorroAFP, 
            T.segcesantia, 
            T.idDesahucio, 
            T.porcDesahucio, 
            T.regimenSalud, 
            T.instSalud, 
            T.monedaSalud, 
            T.pactadoSalud, 
            T.periodosRecon, 
            T.bienestar, 
            T.modoBienestar, 
            T.montoBienestar, 
            T.idSindicato, 
            T.modoSindicato, 
            T.montoSindicato, 
            T.servMedico, 
            T.smedicoNormal, 
            T.smedicoMaternal, 
            T.smedicoEspecial, 
            T.idApvi1, 
            T.contratoApvi1, 
            T.formapagoApvi1, 
            T.modoApvi1, 
            T.montoApvi1, 
            T.idApvi2, 
            T.contratoApvi2, 
            T.formapagoApvi2, 
            T.modoApvi2, 
            T.montoApvi2, 
            T.idApvi3, 
            T.contratoApvi3, 
            T.formapagoApvi3, 
            T.modoApvi3, 
            T.montoApvi3, 
            T.idApvc1, 
            T.contratoApvc1, 
            T.modoApvc1, 
            T.formapagoApvc1, 
            T.montoApvc1, 
            T.saldoperiodoanterior, 
            T.areconocidos, 
            T.moneda, 
            T.montoretencionJudicial, 
            T.coment1, 
            T.coment2, 
            T.coment3, 
            T.coment4, 
            T.CargaNormal, 
            T.CargaInvalida, 
            T.imagen, 
            T.loging, 
            T.fecing, 
            T.logmod, 
            T.fecmod, 
            ISNULL(conUnidadNegocio.descripcion,'') AS uninegdesc, 
            ISNULL(remDepartamentos.descripcion,'') AS despartamentodesc, 
            ISNULL(remSecciones.descripcion,'') AS secciondesc, 
            ISNULL(remCargos.descripcion,'') AS cargodesc, 
            ISNULL(remProfesiones.descripcion,'') AS profesiondesc, 
            ISNULL(remPrevisiones.descripcion,'') AS nomprevision, 
            ISNULL(remPrevisiones.cotizacion,0.00) AS cotizacion, 
            ISNULL(remIsapre.descripcion,'') AS nomIsapre, 
            DATENAME(month, DATEADD(month, T.mes, -1)) AS mesdesc, 
            dbo.RemDiasTrabajados(T.ficha, T.periodo, T.mes, T.fechaContrato, T.fechaFiniquito, T.tipoJornada) AS diastrabajados, 
            dbo.RemDiasMovPersonal(T.ficha, T.periodo, T.mes, 3) AS diassubsidios, 
            dbo.RemDiasMovPersonal(T.ficha, T.periodo, T.mes, 4) AS diaspermisos, 
            dbo.RemDiasMovPersonal(T.ficha, T.periodo, T.mes, 6) AS diasaccidentes, 
            dbo.RemDiasMovPersonal(T.ficha, T.periodo, T.mes, 11) AS diasausencia,
            CASE T.regimenPrevisional
                WHEN 1
                THEN 'AFP'
                WHEN 2
                THEN 'IPS(EX-INP)'
                WHEN 3
                THEN 'SIN INSTITUCIÓN PREVISIONAL'
            END AS nomregprevicional,
            CASE T.regimenSalud
                WHEN 1
                THEN 'FONASA'
                WHEN 2
                THEN 'ISAPRE'
            END AS nomregsalud,
            CASE T.monedaSalud
                WHEN 1
                THEN '%'
                WHEN 2
                THEN 'UF'
                WHEN 3
                THEN '$'
            END AS nommonedaSalud, 
            tramoasigfamiliar, 
            tramoimpuesto, 
            dbo.MontoaLetras(T.ficha, T.periodo, T.mes) AS liquidacionLetras,
            CASE T.tipotrabajador
                WHEN 0
                THEN 'ACTIVO'
                WHEN 1
                THEN 'PENSIONADO Y COTIZA'
                WHEN 2
                THEN 'PENSIONADO (NO COTIZA)'
                WHEN 3
                THEN 'ACTIVO > 65 AÑOS (NUNCA PENSIONADO)'
            END AS tipotrabajador, 
			   CASE T.tipotrabajador
                WHEN 0
                THEN 'ACTIVO'
                WHEN 1
                THEN 'PENSIONADO Y COTIZA'
                WHEN 2
                THEN 'PENSIONADO (NO COTIZA)'
                WHEN 3
                THEN 'ACTIVO > 65 AÑOS (NUNCA PENSIONADO)'
            END AS tipotrabajadordesc, 
            ISNULL(remCargos.descripcion, '') AS desccargo, 
            ISNULL(remProfesiones.descripcion, '') AS descprofesion, 
            ISNULL(remDepartamentos.descripcion, '') AS descdepartamento, 
            ISNULL(remSecciones.descripcion, '') AS descseccion, 
            ISNULL(remFormasPago.descripcion, '') AS descformapago, 
            COALESCE(conBancos.nombre, '') AS descbanco, 
            RTRIM(T.apePaterno) + ' ' + RTRIM(T.apeMaterno) + ' ' + RTRIM(T.nombres) AS nombrecompleto, 
            dbo.CalcEdad([fechaNac], GETDATE()) AS edad, 
            CargaMaternal, 
            CONVERT(VARCHAR, t.rut) + '-' + t.dv AS [rut-dv],
			CONVERT(VARCHAR, t.rut) +  t.dv AS [rutdv],
			CASE t.caja
			WHEN 0  THEN 'No definida'
			WHEN 1  THEN '1- Los Andes (www.cajalosandes.cl)'
        	WHEN 2  THEN '2- La Araucana (www.laaraucana.cl)'
        	WHEN 3  THEN '3- Los Héroes (www.losheroes.cl)'
        	WHEN 5  THEN '5- Gabriela Mistral (www.cajagabrielamistral.cl)'
        	WHEN 6  THEN '6- 18 de Septiembre (www.caja18.cl)'
		    ELSE
			'No definida'
			END AS caja,
			ISNULL(priRegion.descripcion, '') AS region,
			priComuna.codComunaLibroRem,
			priRegion.codRegionLibroRem,

			ISNULL(priRegion2.descripcion, '') AS regSucursal,
			ISNULL(priComuna2.codComunaLibroRem, 0) AS codComSucLibroRem,
			ISNULL(priRegion2.codRegionLibroRem, 0) AS codRegSucLibroRem,

			--isnull(remPrevisiones.idPrevisionLibroRem,100) as idPrevisionLibroRem_AFP
			CASE remPrevisiones.idRegimen
				WHEN 1 THEN 	isnull(remPrevisiones.idPrevisionLibroRem,100)
			ELSE
				100
			END AS idPrevisionLibroRem_AFP,
			CASE remPrevisiones.idRegimen
				WHEN 2 THEN 	isnull(remPrevisiones.idPrevisionLibroRem,0)
			ELSE
				0
			END AS idPrevisionLibroRem_IPS,

			remIsapre.idIsapreLibroRem as salud_lre,
			isnull(remCaja.idLibroRem,0) as idCaja_lre,
			(SELECT remMutual.idMutualLibroRem FROM remMutual INNER JOIN remParametros ON remMutual.idMutual = remParametros.mutual) as mutual_lre,
			(SELECT remCaja.idLibroRem FROM remCaja INNER JOIN remParametros ON remCaja.id = remParametros.caja) as caja_Parametro_lre,
			
			CASE  tramoasigfamiliar
				WHEN 1 THEN 'A'
				WHEN 2 THEN 'B'
				WHEN 3 THEN 'C'
				WHEN 4 THEN 'D'
			ELSE
				'S'
			END as tramoAsigFam_lre,
			
			CASE 
				WHEN T.idApvi1 > 0 THEN 'SI'
			ELSE
			'NO'
			END as apv_lre,
			 
			CASE 
				WHEN T.idApvc1 > 0 THEN 'SI'
			ELSE
			'NO'
			END as apvc_lre,
			(select dbo.RemTotalAportesEmpleador (T.ficha,@periodo,@mes)) as total_aportes_empleador,
			'0' as no_definido,
		--	T.fechaFiniquito as fecha_finiquito
		 -- CONVERT(VARCHAR,T.fechaFiniquito,103) AS fecha_finiquito
		    CASE  YEAR(T.fechaFiniquito)
				WHEN 1900 THEN ''
				ELSE CONVERT(VARCHAR,T.fechaFiniquito,103)
			END AS fecha_finiquito

INTO #REMTRABAJADORES
     FROM remTrabajadores AS T
          LEFT OUTER JOIN conBancos ON T.banco = conBancos.idBanco
          LEFT OUTER JOIN remFormasPago ON T.formaPago = remFormasPago.idFormaPago
          LEFT OUTER JOIN remIsapre ON T.periodo = remIsapre.periodo
                                       AND T.mes = remIsapre.mes
                                       AND T.instSalud = remIsapre.idIsapre
          LEFT OUTER JOIN remPrevisiones ON T.mes = remPrevisiones.mes
                                            AND T.periodo = remPrevisiones.periodo
                                            AND T.regimenPrevisional = remPrevisiones.idRegimen
                                            AND T.idPrevision = remPrevisiones.idPrevision
          LEFT OUTER JOIN remProfesiones ON T.profesion = remProfesiones.idProfesion
          LEFT OUTER JOIN remCargos ON T.cargo = remCargos.idCargo
          LEFT OUTER JOIN remSecciones ON T.departamento = remSecciones.idDepartamento
                                          AND T.seccion = remSecciones.idSeccion
          LEFT OUTER JOIN remDepartamentos ON T.departamento = remDepartamentos.idDepartamento
          LEFT OUTER JOIN conUnidadNegocio ON T.unidadNegocios = conUnidadNegocio.idUniNeg
		  LEFT OUTER JOIN priComuna ON T.comuna = PRICOMUNA.idComuna
		  LEFT OUTER JOIN priRegion ON priComuna.idRegion = priRegion.idRegion
		  LEFT OUTER JOIN priComuna priComuna2 ON T.comSucursal = priComuna2.idComuna
		  LEFT OUTER JOIN priRegion priRegion2 ON priComuna2.idRegion = priRegion2.idRegion
		  LEFT OUTER JOIN remCaja ON remCaja.id = T.caja




     WHERE(t.periodo = @periodo)
          AND (t.mes = @mes)
          AND (ficha BETWEEN @fichaini AND @fichafin)
          AND (unidadNegocios = @unineg
               OR @unineg = 0)
          AND (departamento = @dep
               OR @dep = 0)
          AND (T.activo = 1);

     --- TABLA TRABAJADORES
     SELECT *
     FROM #REMTRABAJADORES;
     SELECT remEncFormula.periodo, 
            remEncFormula.mes, 
            remEncFormula.codigo, 
            ISNULL(remEncFormula.descripcion, '') AS descripcion, 
            remEncFormula.IdConcepto, 
            ISNULL(remConceptos.descripcion, '') AS resultado, 
            COALESCE(decimales, 0) AS decimales
     FROM remEncFormula
          INNER JOIN remConceptos ON remEncFormula.periodo = remConceptos.periodo
                                     AND remEncFormula.mes = remConceptos.mes
                                     AND remEncFormula.IdConcepto = remConceptos.idConcepto
     WHERE(remConceptos.tipoConcepto = 'R')
          AND remEncFormula.periodo = @periodo
          AND remEncFormula.mes = @mes
     ORDER BY orden, 
              codigo;
     SELECT codigo, 
            descripcion, 
            tipodato, 
            valor, 
            loging, 
            fecing, 
            logmod, 
            fecmod
     FROM remFactores
     WHERE(periodo = @periodo)
          AND (mes = @mes);

     ---TRAMOS
     SELECT tipo, 
            codigo, 
            descripcion, 
            valor_hasta, 
            factor, 
            rebaja, 
            loging, 
            fecing, 
            logmod, 
            fecmod
     FROM remTramos
     WHERE(periodo = @periodo)
          AND (mes = @mes);

     ---CONCEPTOS
     SELECT tipoConcepto, 
            idConcepto, 
            descripcion, 
            idResultado, 
            libroDetalle, 
            tributableRebaja, 
            imponible, 
            aLiquidacion, 
            conCero, 
            ISNULL(enCuotas,0) AS enCuotas,
            ctaContable, 
            idclasificacion, 
            tipodato, 
            desde, 
            hasta, 
            tablavariable, 
            tipoarastre, 
            decimales, 
            fecing, 
            loging, 
            fecmod, 
            logmod
     FROM remConceptos
     WHERE(periodo = @periodo)
          AND (mes = @mes);
     ----DATOSPLANILLA
     SELECT codigo, 
            descripcion, 
            resultado, 
            valor
     FROM remDatosPlanilla
     WHERE(periodo = @periodo)
          AND (mes = @mes);

     ----HABERES 
     SELECT MOV.ficha, 
            MOV.idConcepto, 
            MOV.valor
     FROM remMovimientosHD MOV
          INNER JOIN #REMTRABAJADORES remTrabajadores ON MOV.periodo = remTrabajadores.periodo
                                                         AND MOV.mes = remTrabajadores.mes
                                                         AND MOV.ficha = remTrabajadores.ficha
     WHERE tipoConcepto = 'H'
           AND MOV.periodo = @PERIODO
           AND MOV.mes = @MES;

     ---DESCUENTOS
     SELECT MOV.ficha, 
            MOV.idConcepto, 
            MOV.valor
     FROM remMovimientosHD MOV
          INNER JOIN #REMTRABAJADORES remTrabajadores ON MOV.periodo = remTrabajadores.periodo
                                                         AND MOV.mes = remTrabajadores.mes
                                                         AND MOV.ficha = remTrabajadores.ficha
     WHERE tipoConcepto = 'D'
           AND MOV.periodo = @PERIODO
           AND MOV.mes = @MES;

     ---MENSUALES
     SELECT MOV.ficha, 
            MOV.idConcepto, 
            MOV.valor
     FROM remMovimientosRM MOV
          INNER JOIN #REMTRABAJADORES remTrabajadores ON MOV.periodo = remTrabajadores.periodo
                                                         AND MOV.mes = remTrabajadores.mes
                                                         AND MOV.ficha = remTrabajadores.ficha
     WHERE tipoConcepto = 'M'
           AND MOV.periodo = @PERIODO
           AND MOV.mes = @MES;

     ---RESULTADOS
     SELECT MOV.ficha, 
            MOV.idConcepto, 
            MOV.valor
     FROM remMovimientosRM MOV
          INNER JOIN #REMTRABAJADORES remTrabajadores ON MOV.periodo = remTrabajadores.periodo
                                                         AND MOV.mes = remTrabajadores.mes
                                                         AND MOV.ficha = remTrabajadores.ficha
     WHERE tipoConcepto = 'R'
           AND MOV.periodo = @PERIODO
           AND MOV.mes = @MES;

     ---DATOS FIJOS FICHA
     SELECT remDatosFijosFicha.ficha, 
            remDatosFijosFicha.idconcepto, 
            remDatosFijosFicha.valor, 
            remConceptos.tipodato AS tipo
     FROM remDatosFijosFicha
          INNER JOIN remConceptos ON remDatosFijosFicha.periodo = remConceptos.periodo
                                     AND remDatosFijosFicha.mes = remConceptos.mes
                                     AND remDatosFijosFicha.idconcepto = remConceptos.idConcepto
     WHERE tipoConcepto = 'F'
           AND (remDatosFijosFicha.periodo = @PERIODO)
           AND (remDatosFijosFicha.mes = @MES);