ALTER PROCEDURE [dbo].[sp_remDatosLibroRemuneraciones]
(@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, 
            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, 
			CASE  YEAR(T.fechaTermino)
				WHEN 1900 THEN ''
				ELSE CONVERT(VARCHAR,T.fechaTermino,103)
			END 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, 
            CASE T.segcesantia 
				WHEN 3
				THEN 1
				WHEN 1
				THEN 1
				WHEN 0
				THEN 0 END AS 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, 
            conUnidadNegocio.descripcion AS uninegdesc, 
            remDepartamentos.descripcion AS despartamentodesc, 
            remSecciones.descripcion AS secciondesc, 
            remCargos.descripcion AS cargodesc, 
            remProfesiones.descripcion AS profesiondesc, 
            remPrevisiones.descripcion AS nomprevision, 
            remPrevisiones.cotizacion AS cotizacion, 
            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, 
            remCargos.descripcion AS desccargo, 
            remProfesiones.descripcion AS descprofesion, 
            remDepartamentos.descripcion AS descdepartamento, 
            remSecciones.descripcion AS descseccion, 
            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 '0'
			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,
			ISNULL(priComuna.codComunaLibroRem, 0) AS codComunaLibroRem,
			ISNULL(priRegion.codRegionLibroRem, 0) AS 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,
			isnull((SELECT remCaja.idLibroRem FROM remCaja INNER JOIN remParametros ON remCaja.id = remParametros.caja),0) 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 1
			ELSE
			0
			END as apv_lre,
			 
			CASE 
				WHEN T.idApvc1 > 0 THEN 1
			ELSE
			0
			END as apvc_lre,
			CASE 
				WHEN @periodo < 2022 THEN isnull((select dbo.RemTotalAportesEmpleador (T.ficha,@periodo,@mes)),0)
				WHEN @periodo >= 2022 THEN isnull((select dbo.RemTotalAportesEmpleador (T.ficha,@periodo,@mes)),0)
				ELSE 0
			END 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, 
            remEncFormula.descripcion, 
            remEncFormula.IdConcepto, 
            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, 
            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
     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);

	--FINIQUITO NUEVO
	SELECT F.ficha
	  ,F.numfiniquito
      ,F.fechaemision
      ,F.fechafiniquito
      ,F.causal as CausalLRE
      ,F.cantidadañosservicios
      ,F.totalañosservicios
      ,F.mesaviso
      ,F.mutuoacuerdo
      ,F.totalindemnizacion
      ,F.tipopagovacaciones
      ,F.sueldobasevacaciones
      ,F.diashabiles
      ,F.montodiashabiles
      ,F.diasprogresivos
      ,F.montodiasprogresivos
      ,F.totaldiaspendiente
      ,F.montototaldiaspendiente
      ,F.diasinhabiles
      ,F.montodiasinhabiles
      ,F.totaldiasvacaciones
      ,F.montototalvacaciones
      ,F.montoafc
      ,F.otrosbonos
      ,F.otrosbonos2
      ,F.otrosbonos3
      ,F.totalbonos
      ,F.otrosdescuentos
      ,F.otrosdescuentos2
      ,F.otrosdescuentos3
      ,F.totalotrosdescuentos
      ,F.totalotros
      ,F.totalpagar
	  FROM remFiniquitoNuevo F
	  INNER JOIN #REMTRABAJADORES remTrabajadores ON F.periodo = remTrabajadores.periodo
                                                         AND F.mes = remTrabajadores.mes
                                                         AND F.ficha = remTrabajadores.ficha
	  WHERE F.periodo = @periodo
	  AND   F.mes = @mes