ALTER PROCEDURE [dbo].[sp_remImpresionFichas]
(

@periodo int = 0,
@mes int = 0,       
@fichaini int=1,
@fichafin int=999999999
)
AS

SET NOCOUNT ON


DECLARE @fecha DATE, @fechaf DATE
DECLARE @DayOfMonth TinyInt Set @DayOfMonth = 1 declare @Month TinyInt Set @Month = @mes Declare @Year Integer Set @Year = @periodo
DECLARE @diasmes AS INTEGER

SET   @fecha = DateAdd(day, @DayOfMonth - 1,    DateAdd(month, @Month - 1, DateAdd(Year, @Year-1900, 0)))
SET   @fechaf = (DATEADD(ms,-2,DATEADD(MONTH, DATEDIFF(MONTH,0,@fecha)+1,0))) 

--Select @fecha
--Select @fechaf


--select @fichaini=min(a.ficha) from
--(select top 10 ficha from remTrabajadores
--order by ficha asc) a

--select @fichafin=max(a.ficha) from
--(select top 10 ficha from remTrabajadores
--order by ficha asc) a
--END
--1 - PLAZO FIJO
--2 - PLAZO INDEFINIDO
--3 - POR FAENA

SELECT        T.periodo, T.mes, T.ficha, T.activo, T.rut,
RTRIM (T.rut) + ' - ' + RTRIM(T.dv) AS Rut_dv,
T.nombres, T.apePaterno, T.apeMaterno, T.fechaNac, 
--DESCRIPCION NACIONALIDAD
CASE T.extranjero WHEN 1 THEN 'CHILENA' WHEN 2 THEN 'EXTRANJERA' WHEN 3 THEN 'SIN ESPECIFICAR' ELSE '' END AS Naccionalidad,
--DESCRIPCION SEXO
CASE T.sexo WHEN 0 THEN 'FEMENINO' WHEN 1 THEN 'MASCULINO' END AS Descrip_Sexo,
C.idComuna, C.descripcion AS Descrip_Comuna,R.idRegion,R.descripcion AS Descrip_Region,
--DESCRIPCION ESTADO CIVIL
CASE T.estadoCivil WHEN 0 THEN 'SOLTERO(A)' WHEN 1 THEN 'CASADO(A)' ELSE 'VIUDO(A)'END AS Descrip_EstadoCivil,
T.cargo,T.profesion, T.direccion, T.comuna, T.ciudad, T.pais, T.telefonoPart, T.telefonoEmp, T.celularPart, T.celularEmp, T.correoPart, T.correoEmp,
T.seccion,
--SECCION NO DEFINICA
--CASE T.seccion WHEN 0 THEN 'NO DEFINIDA' ELSE 'NO DEFINIDA' END AS seccNoDef,
T.departamento, T.unidadNegocios,
DATENAME(month, T.fechaIngreso) + ' ' + CONVERT(varchar,YEAR(T.fechaIngreso)) as Fecingresomesaño,
T.fechaIngreso, T.fechaContrato, T.tipoContrato,
CASE T.tipoContrato when 1 then 'PLAZO FIJO' when 2 then 'PLAZO INDEFINIDO' WHEN 3 THEN 'POR FAENA' ELSE '' end as tipoContratoDescripcion,
T.fechaTermino, T.fechaTerminoExt, T.fechaFiniquito, T.tipoSueldo, T.sueldoBase, T.tipoJornada, T.cantidadHoras,
CASE T.tipoJornada WHEN 1 THEN 'ORDINARIA' WHEN 2 THEN 'EXTRAORDINARIAS'WHEN 3 THEN 'PROLONGADA'WHEN 4 THEN 'PARCIAL'WHEN 5 THEN 'BISEMINAL'ELSE 'NO DEFINIDO'END AS Descrip_TipoJornadaRem,
CASE T.tipoMovilizacion WHEN 1 THEN 'NINGUNA' WHEN 2 THEN 'MENSUAL' WHEN 3 THEN 'DÍA HÁBIL' WHEN 4 THEN 'DIARIA'WHEN 5 THEN 'FIJA' END AS desTipoMovi,
T.montoMovilizacion,
CASE T.tipoColacion WHEN 1 THEN 'NINGUNA' WHEN 2 THEN 'MENSUAL' WHEN 3 THEN 'DÍA HÁBIL' WHEN 4 THEN 'DIARIA'WHEN 5 THEN 'FIJA' END AS desTipoColacionRem, 
T.montoColacion, T.rentaPromedio, T.formaPago, T.numCuenta, T.banco, T.tipoTrabajador, 
T.regimenPrevisional, T.idPrevision, T.porcPrevision, T.tipoAhorroAFP,
CASE T.tipoAhorroAFP WHEN 1 THEN '%' WHEN 2 THEN 'UF' WHEN 3 THEN '$' END AS Cuenta2,
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,
--DESCRIPCION FORMAS DE PAGO
CASE T.formapagoApvi1 WHEN 1 THEN 'DIRECTA' WHEN 2 THEN 'INDIRECTA' ELSE 'NO DEFINIDO' END AS Descrip_FormaPago1,
CASE T.formapagoApvi2 WHEN 1 THEN 'DIRECTA' WHEN 2 THEN 'INDIRECTA' ELSE 'NO DEFINIDO' END AS Descrip_FormaPago2,
CASE T.formapagoApvi3 WHEN 1 THEN 'DIRECTA' WHEN 2 THEN 'INDIRECTA' ELSE 'NO DEFINIDO' END AS Descrip_FormaPago3,
CASE T.formapagoApvc1 WHEN 1 THEN 'DIRECTA' WHEN 2 THEN 'INDIRECTA' ELSE 'NO DEFINIDO' END AS Descrip_FormaPagoApvc,
--DESCRIPCION TIPOS DE PAGO
CASE T.modoApvi1 WHEN 1 THEN '%' WHEN 2 THEN 'UF' WHEN 3 THEN '$' END AS Descrip_TipPagoApvi1,
CASE T.modoApvi2 WHEN 1 THEN '%' WHEN 2 THEN 'UF' WHEN 3 THEN '$' END AS Descrip_TipPagoApvi2,
CASE T.modoApvi3 WHEN 1 THEN '%' WHEN 2 THEN 'UF' WHEN 3 THEN '$' END AS Descrip_TipPagoApvi3,
CASE T.modoApvc1 WHEN 1 THEN '%' WHEN 2 THEN 'UF' WHEN 3 THEN '$' END AS Descrip_TipPagoApvc1,
T.modoApvi1, T.montoApvi1, T.idApvi2, T.contratoApvi2,T.modoApvi2, T.montoApvi2, T.idApvi3, T.contratoApvi3,
T.modoApvi3, T.montoApvi3, T.idApvc1, T.contratoApvc1, T.modoApvi1, T.montoApvc1, T.saldoperiodoanterior, T.areconocidos, 
T.moneda, T.montoretencionJudicial, T.coment1,T.coment2, T.coment3, T.coment4,T.CargaNormal,t.CargaMaternal,
T.CargaInvalida,T.imagen, T.loging, T.fecing, T.logmod, T.fecmod, T.PrevisionCuenta2,U.descripcion AS uninegdesc, 
UPPER (C.descripcion) AS descComuna,
R.descripcion AS descRegion,
J.descripcion AS desJornada,
Ts.Descripcion AS descTipoSueldoRem,
Tra.descripcion AS tramodescripcion,
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.moneda WHEN 1 THEN 'PESO' WHEN 2 THEN 'UF' WHEN 3 THEN 'UF TOPE' END AS descrip_MonedaRem,
CASE T.monedaSalud WHEN 1 THEN '%' WHEN 2 THEN 'UF' WHEN 3 THEN '$' END AS nommonedaSalud,
Tra.descripcion AS descTramo,
--FORMAT(CONVERT(int, Tra.valor_hasta), '##,###,###', 'es-ES') AS formatvalor_hasta,
--+'('+FORMAT(CONVERT(int, factor), '##,###,###', 'es-ES')+')' AS formatfactor,


Tra.valor_hasta AS formatvalor_hasta,
factor AS formatfactor,

tramoasigfamiliar,tramoimpuesto,dbo.MontoaLetras(T.ficha,T.periodo,T.mes) AS liquidacionLetras,
CASE WHEN YEAR(T.fechacontrato) = YEAR(@fecha) AND MONTH(T.fechacontrato) = MONTH(@fecha) THEN (datediff(day,@fecha,T.fechacontrato)) + 1 ELSE 0 END as diascontrato,
CASE WHEN YEAR(T.fechaFiniquito) = YEAR(@fecha) AND MONTH(T.fechaFiniquito) = MONTH(@fecha) THEN (datediff(day,T.fechaFiniquito,@fechaf))  ELSE 0 END diasfiniquito,
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 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,
CASE T.previsionCuenta2
WHEN 3 THEN '3 - CUPRUM'WHEN 5 THEN '5 - HABITAT'WHEN 8 THEN '8 - PROVIDA'WHEN 29 THEN '29 - PLANVITAL'WHEN 33 THEN '33 - CAPITAL'WHEN 34 THEN '34 - MODELO'WHEN 101 THEN '101 - EMPART'WHEN 131 THEN '131 - SEGURITY SEGUROS DE VIDA PREVISION'ELSE 'CAJA DE COMPENSACIÓN' END AS DesPrevisionCuenta2,
CASE idIsapre WHEN 1 THEN '1 - BANMEDICA' WHEN 2 THEN '2 - CONSALUD' WHEN 3 THEN '3 - VIDA TRES' WHEN 4 THEN '4 - COLMENA' WHEN 5 THEN '5 - CRUZ BLANCA' WHEN 6 THEN '6 - NUEVA MASVIDA' WHEN 7 THEN '7 - FONASA' WHEN 10 THEN '10 - OPTIMA' ELSE 'NO DEFINIDO' END AS DesIsapre,

--DESCRIPCION APV
CASE T.idApvi1 WHEN 3 THEN '3 - CUPRUM' WHEN 5 THEN '5 - HABITAT' WHEN 8 THEN '8 - PROVIDA' WHEN 29 THEN '29 - PLANVITAL' WHEN 33 THEN '33 - CAPITAL' WHEN 34 THEN '34 - MODELO' WHEN 101 THEN '101 - EMPART' WHEN 131 THEN '131 - SEGURITY SEGUROS DE VIDA PREVISION' ELSE 'APV NO DEFINIDA' END AS DesidApvi1,
CASE T.idApvi2 WHEN 3 THEN '3 - CUPRUM' WHEN 5 THEN '5 - HABITAT' WHEN 8 THEN '8 - PROVIDA' WHEN 29 THEN '29 - PLANVITAL' WHEN 33 THEN '33 - CAPITAL' WHEN 34 THEN '34 - MODELO' WHEN 101 THEN '101 - EMPART' WHEN 131 THEN '131 - SEGURITY SEGUROS DE VIDA PREVISION' ELSE 'APV NO DEFINIDA' END AS DesidApvi2,
CASE T.idApvi3 WHEN 3 THEN '3 - CUPRUM' WHEN 5 THEN '5 - HABITAT' WHEN 8 THEN '8 - PROVIDA' WHEN 29 THEN '29 - PLANVITAL' WHEN 33 THEN '33 - CAPITAL' WHEN 34 THEN '34 - MODELO' WHEN 101 THEN '101 - EMPART' WHEN 131 THEN '131 - SEGURITY SEGUROS DE VIDA PREVISION' ELSE 'APV NO DEFINIDA' END AS DesidApvi3,
CASE T.idApvc1 WHEN 3 THEN '3 - CUPRUM' WHEN 5 THEN '5 - HABITAT' WHEN 8 THEN '8 - PROVIDA' WHEN 29 THEN '29 - PLANVITAL' WHEN 33 THEN '33 - CAPITAL' WHEN 34 THEN '34 - MODELO' WHEN 101 THEN '101 - EMPART' WHEN 131 THEN '131 - SEGURITY SEGUROS DE VIDA PREVISION' ELSE 'APV NO DEFINIDA' END AS DesidApvc1,

--DESCRIPCION INSTITUCION DE SALUD
CASE instSalud WHEN 1 THEN '1 - BANMEDICA' WHEN 2 THEN '2 - CONSALUD' WHEN 3 THEN '3 - VIDA TRES' WHEN 4 THEN '4 - COLMENA' WHEN 5 THEN '5 - CRUZ BLANCA' WHEN 6 THEN '6 - NUEVA MASVIDA' WHEN 7 THEN '7 - FONASA' WHEN 10 THEN '10 - OPTIMA' ELSE 'NO DEFINIDO' END AS DesinstSalud, 

--SECCIÓN NO DEFINIDA
CASE T.seccion WHEN 0 THEN 'NO DEFINIDA'END AS seccNoDef,

--DePARTAMENTO NO DEFINIDO
CASE T.departamento WHEN 0 THEN 'NO DEFINIDO' END AS deptoNoDef,
--COD. PREVISION (NO DEFINIDA)
CASE remPrevisiones.idPrevision  WHEN 0 THEN 'NO DEFINIDA' ELSE 'NO DEFINIDA' END AS prevNoDef

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 AS U ON T.unidadNegocios = U.idUniNeg LEFT OUTER JOIN
						 priComuna AS C ON T.comuna =C.idComuna LEFT OUTER JOIN
						 priRegion AS R ON C.idRegion=R.idRegion LEFT OUTER JOIN
						 remJornadas AS J ON T.tipoJornada=J.idJornada LEFT OUTER JOIN
						 remTipoSueldo AS Ts ON T.tipoSueldo=Ts.idTipoSueldo LEFT OUTER JOIN
						 remTramos AS Tra ON T.tramoasigfamiliar=Tra.tipo 



WHERE T.activo=1 
AND(t.periodo=@periodo and t.mes=@mes) 
AND (ficha BETWEEN @fichaini AND @fichafin)