public bool UpdatePeriodoPago(NOM_PeriodosPago updatedModel) { using (var context = new RHEntities()) { //Validar periodo var itemPeriodo = context.NOM_PeriodosPago.FirstOrDefault(x => x.IdPeriodoPago == updatedModel.IdPeriodoPago); //Si el periodo ya esta autorizado, ya no se podrá hacer cambios if (itemPeriodo.Autorizado == true) { return(false); } var old = GetPeriodoPagoById(updatedModel.IdPeriodoPago); if (old == null) { return(false); } updatedModel.Fecha_Pago = updatedModel.Fecha_Fin; updatedModel.FechaMod = DateTime.Now; context.Entry(old).CurrentValues.SetValues(updatedModel); var result = context.SaveChanges(); return(result > 0 ? true : false); } }
//private void GetPermisos() //{ // var permisos = ctx.Permisos.Where(x => x.IdEmpleado == IdEmpleado && // ((x.FechaInicio >= Periodo.Fecha_Inicio && x.FechaInicio <= Periodo.Fecha_Fin) || (x.FechaFin >= Periodo.Fecha_Inicio && x.FechaFin <= Periodo.Fecha_Fin)) // ).ToList(); // foreach (var permiso in permisos) // { // var tipo = "PC"; // if (permiso.ConGoce == false) // { // tipo = "PS"; // NumDias = NumDias - (int)permiso.Dias; // } // SetIncidencias(permiso.FechaInicio, permiso.FechaFin, tipo, permiso.IdPermiso); // } //} private void GetPermisos2(List <Permisos> listaPermisos, int idEmpl, NOM_PeriodosPago periodosPago) { var fechaInicioPeriodo = periodosPago.Fecha_Inicio; var fechaFinPeriodo = periodosPago.Fecha_Fin; bool pagarPermiso = false; var permisos = listaPermisos.Where(x => x.IdEmpleado == idEmpl).ToList(); foreach (var permiso in permisos) { var tipo = "PC"; if (permiso.ConGoce == false) { var fechaInicioPermiso = permiso.FechaInicio; var fechaFinPermiso = permiso.FechaFin; var diasPermisos = Utils.GetDiasByPeriodoRange(fechaInicioPermiso, fechaFinPermiso, fechaInicioPeriodo, fechaFinPeriodo); NumDias -= diasPermisos; tipo = "PS"; // NumDias = NumDias - (int)permiso.Dias; pagarPermiso = false; } else { pagarPermiso = true; } SetIncidencias(permiso.FechaInicio, permiso.FechaFin, tipo, permiso.IdPermiso, pagarDia: pagarPermiso); } }
public bool CrearPeriodo(NOM_PeriodosPago model) { using (var context = new RHEntities()) { context.NOM_PeriodosPago.Add(model); var result = context.SaveChanges(); return(result > 0 ? true : false); } }
public static async Task <int> GenerarXMLSintimbre(int[] idNominas, NOM_PeriodosPago periodosPago, int idEjercicio, int idPeriodo, int idUsuario, bool isCfdi33 = false) { //TimbradoCore tcCore = new TimbradoCore(); //var rxml = await tcCore.GenerarXmlAsync(idNominas, periodosPago, idEjercicio, idPeriodo, idUsuario,fromProcesando: true,isCfdi33:isCfdi33); TimbradoCoreV2 tcv2 = new TimbradoCoreV2(); var res = await tcv2.CrearXmlDesdeElProcesado(idUsuario, periodosPago, null, idNominas, true); return(1); }
private void GetDiasFestivos2(List <C_DiasFestivos> lista, NOM_PeriodosPago periodoP) { foreach (var diaF in lista) { var dias = Utils.GetDiasByPeriodoRange(diaF.Fecha, diaF.Fecha, periodoP.Fecha_Inicio, periodoP.Fecha_Fin); if (dias > 0) { SetIncidencias(diaF.Fecha, diaF.Fecha, "DF", diaF.IdDiaFestivo, pagarDia: true); } } }
public void UpdateCfdiEstatus(NOM_PeriodosPago pp, GenerarCfdiEstatus estatus) { using (var context = new RHEntities()) { var item = context.NOM_PeriodosPago.FirstOrDefault(x => x.IdPeriodoPago == pp.IdPeriodoPago); if (item != null) { item.CfdiGenerado = (int)estatus; } context.SaveChangesAsync(); } }
public int GetFaltasByIdEmpleado(NOM_PeriodosPago ppPago, int idE) { try { //Faltas - tipo 7 var faltas = _ctx.Inasistencias.Where(x => x.IdTipoInasistencia == 7 && x.IdEmpleado == idE && x.Fecha >= ppPago.Fecha_Inicio && x.Fecha <= ppPago.Fecha_Fin).Select(e => e.IdEmpleado).Sum(); return(faltas); } catch (Exception) { return(0); } }
public static async Task <int> GenerarXMLFiniquitoSintimbre(int idFiniquito, NOM_PeriodosPago periodosPago, int idEjercicio, int idPeriodo, int idUsuario, bool isCfdi33 = false) { //TimbradoCore tcCore = new TimbradoCore(); //var rxml = await tcCore.GenerarXmlFiniquitoAsync(idFiniquito, periodosPago, idEjercicio, idPeriodo, // idUsuario, fromProcesando: true, isCfdi33: isCfdi33); TimbradoCoreV2 tcv2 = new TimbradoCoreV2(); int[] arrayId = new[] { idFiniquito }; var res = await tcv2.CrearXmlDesdeElProcesado(idUsuario, periodosPago, null, arrayId, true); return(1); }
public static async Task <string> GetRecibosComplemento(int[] listNominas, NOM_PeriodosPago ppago, int idUsuario, string path, bool incluirDetalles) { //Se generan los recibos sin timbrado del sat if (listNominas != null) { PDFCore pcCore = new PDFCore(); var recibo = await pcCore.GetRecibosComplemento(listNominas, ppago.IdEjercicio, ppago, idUsuario, path, incluirDetalles); return(recibo); } else { return(null); } }
public static void GetHorasExtras() { int[] empleados = new[] { 62, 65, 72 }; NOM_PeriodosPago pp = new NOM_PeriodosPago(); pp.Fecha_Fin = new DateTime(2018, 01, 31); pp.Fecha_Inicio = new DateTime(2018, 01, 16); HorasExtrasClass ob = new HorasExtrasClass(); var lista = ob.GetHotasExtrasParaNomina(empleados, pp); foreach (var item in lista) { Console.WriteLine($" {item.IdEmpleado} {item.Fecha} {item.HorasTotales}"); } }
//public List<ProcesoNominaViewModel> GetNominasByPeriodo(int idPeriodo) //{ // return (from n in ctx.NOM_Nomina // join e in ctx.Empleado on n.IdEmpleado equals e.IdEmpleado // where n.IdPeriodo == idPeriodo // select new ProcesoNominaViewModel // { // IdEmpleado = e.IdEmpleado, // Empleado = e.APaterno + " " + e.AMaterno + " " + e.Nombres, // IdNomina = n.IdNomina, // IdPeriodo = idPeriodo, // Percepciones = n.TotalPercepciones, // Deducciones = n.TotalDeducciones, // Total = n.TotalNomina, // TotalComplemento = n.TotalComplemento, // Seleccionado = true // } // ).ToList(); //} public static async Task <string> GetRecibosSinTimbre(int[] listNominas, NOM_PeriodosPago ppago, int idUsuario, string path, bool isCfdi33 = false) { //Se generan los recibos sin timbrado del sat if (listNominas != null) { PDFCore pcCore = new PDFCore(); var recibo = await pcCore.GetRecibosSintimbre(listNominas, ppago.IdEjercicio, ppago.IdPeriodoPago, idUsuario, path, isCfdi33); return(recibo); } else { return(null); } }
public int GetInasistenciasByIdEmpleado(NOM_PeriodosPago ppPago, int idE) { //Fechas Periodo var FPI = ppPago.Fecha_Inicio; var FPF = ppPago.Fecha_Fin; //Faltas - tipo 9 var faltas = _ctx.Inasistencias.Where(x => x.IdTipoInasistencia == 7 && x.IdEmpleado == idE).Select(e => e.IdEmpleado).Sum(); //Permiso sin Goce var ps = _ctx.Permisos.Where(x => x.ConGoce == false && x.IdEmpleado == idE).Select(e => e.IdEmpleado).Sum(); //Incapacidad - var incapacidad = _ctx.Incapacidades.Where(x => x.IdEmpleado == idE).Select(e => e.IdEmpleado).Sum(); var totalInasistencias = faltas + ps + incapacidad; return(totalInasistencias); }
// GET: Ajustes public PartialViewResult Index() { int idPeriodoPago = 0; NOM_PeriodosPago periodoPago = null; if (Session["periodo"] != null) { periodoPago = Session["periodo"] as NOM_PeriodosPago; idPeriodoPago = periodoPago.IdPeriodoPago; ViewBag.IdPeriodo = periodoPago.IdPeriodoPago; } ViewBag.PeriodoPago = periodoPago; DatoAjustesNomina da = new DatoAjustesNomina(); var modelo = da.GetDatosAjuste(idPeriodoPago); return(PartialView(modelo)); }
public List <EmpleadosHoras> GetHotasExtrasParaNomina(int[] idEmpleados, NOM_PeriodosPago ppago) { List <HorasExtrasEmpleado> listaGeneral; using (var context = new RHEntities()) { listaGeneral = (from t in context.HorasExtrasEmpleado where idEmpleados.Contains(t.IdEmpleado) && t.Fecha >= ppago.Fecha_Inicio && t.Fecha <= ppago.Fecha_Fin select t).ToList(); } var listaGr = (from l in listaGeneral group l by new { l.IdEmpleado, l.Fecha } into gp select new EmpleadosHoras() { IdEmpleado = gp.Key.IdEmpleado, Fecha = gp.Key.Fecha, StrFecha = gp.Key.Fecha.ToString("ddMM"), HorasTotales = gp.Sum(s => s.Horas) }).ToList(); //from c in input //group c by new //{ // c.ProductGroup, // c.BusinessDate.Year, // c.BusinessDate.Month, //} into grp //select new ResultType() //{ // ProductGroup = grp.Key.ProductGroup, // Month = new DateTime(grp.Key.Year, grp.Key.Month, 1), // Sum = grp.Sum(s => s.Price), //}; return(listaGr); }
/// <summary> /// Metodo que filtra la lista o depura el array de IdNominas a Timbrar /// con las nominas que no hayan sido timbrado anteriormente. /// </summary> /// <param name="arrayIds"></param> /// <param name="idSucusal"></param> /// <param name="idEjercicio"></param> /// <param name="idPeriodo"></param> /// <param name="pp"></param> /// <returns></returns> private int[] ValidarRecibosTimbrados(int[] arrayIds, int idSucusal, int idEjercicio, NOM_PeriodosPago pp) { //Buscamos en la Tabla las nominas contenidas en el array //pero que no esten timbrados correctamente int[] listaTimbrados = { }; if (pp.IdTipoNomina != 11) { using (var context = new RHEntities()) { listaTimbrados = (from t in context.NOM_CFDI_Timbrado where arrayIds.Contains(t.IdNomina) && t.IdSucursal == idSucusal && t.IdEjercicio == idEjercicio && t.IdPeriodo == pp.IdPeriodoPago && t.Cancelado == false && t.IsPrueba == false && t.ErrorTimbrado == false && t.IdPeriodo == pp.IdPeriodoPago && t.FolioFiscalUUID != null select t.IdNomina).ToArray(); } } else if (pp.IdTipoNomina == 11) //finiquito { using (var context = new RHEntities()) { listaTimbrados = (from t in context.NOM_CFDI_Timbrado where arrayIds.Contains(t.IdFiniquito) && t.IdSucursal == idSucusal && t.IdEjercicio == idEjercicio && t.IdPeriodo == pp.IdPeriodoPago && t.Cancelado == false && t.IsPrueba == false && t.ErrorTimbrado == false && t.IdPeriodo == pp.IdPeriodoPago && t.FolioFiscalUUID != null select t.IdFiniquito).ToArray(); } } //Si la lista timbrados no contiene elementos, entonces //retornamos el array inicial para que se timbren nuevamente if (listaTimbrados.Length <= 0) { return(arrayIds); } //Filtra ambas lista para que solo se retorne los id de nominas que no esten timbrados var nuevoArray = arrayIds.Where(x => !listaTimbrados.Contains(x)).ToArray(); return(nuevoArray); //retorna un nuevo array de nominas filtradas }
public string crearExcel(int idusuario, string ruta, int IdSucursal, NOM_PeriodosPago pperiodo) { //Variables NOM_Finiquito finiquito; Empleado empleado; Empleado_Contrato empleadoC; string empresaF; string empresaC; NOM_FacturacionF_Finiquito factura; NOM_FacturacionC_Finiquito facturaC; DatosBancarios datosbancarios; C_Banco_SAT banco = new C_Banco_SAT(); using (var context = new RHEntities()) { finiquito = context.NOM_Finiquito.FirstOrDefault(x => x.IdPeriodo == pperiodo.IdPeriodoPago); empleado = context.Empleado.FirstOrDefault(x => x.IdEmpleado == finiquito.IdEmpleado); //var empleadoC = ctx.Empleado_Contrato.Where(x => x.IdEmpleado == empleado.IdEmpleado && x.Status == true).FirstOrDefault(); empleadoC = context.Empleado_Contrato.FirstOrDefault(x => x.IdEmpleado == empleado.IdEmpleado); empresaF = context.Empresa.Where(x => x.IdEmpresa == empleadoC.IdEmpresaFiscal) .Select(x => x.RazonSocial) .FirstOrDefault(); empresaC = context.Empresa.Where(x => x.IdEmpresa == empleadoC.IdEmpresaComplemento) .Select(x => x.RazonSocial) .FirstOrDefault(); if (empresaC == null) { empresaC = context.Empresa.Where(x => x.IdEmpresa == empleadoC.IdEmpresaSindicato) .Select(x => x.RazonSocial) .FirstOrDefault(); } factura = context.NOM_FacturacionF_Finiquito .FirstOrDefault(x => x.IdFiniquito == finiquito.IdFiniquito && x.IdPeriodo == pperiodo.IdPeriodoPago); facturaC = context.NOM_FacturacionC_Finiquito .FirstOrDefault(x => x.IdFiniquito == finiquito.IdFiniquito && x.IdPeriodo == pperiodo.IdPeriodoPago); datosbancarios = context.DatosBancarios.FirstOrDefault(x => x.IdEmpleado == empleado.IdEmpleado); if (datosbancarios == null) { banco = null; } else { banco = context.C_Banco_SAT.FirstOrDefault(x => x.IdBanco == datosbancarios.IdBanco); } } var newruta = ValidarFolderUsuario(idusuario, ruta); //string[] arrayEmpresaF = empresaF.Split(' '); //string[] arrayEmpresaC = empresaC.Split(' '); int contadorHojas = 0; string Nombre; string NombreF; int nosiga = 0; newruta = $"{newruta} Dispersion {empleado?.APaterno} {empleado?.AMaterno} {empleado?.Nombres} - Finiquito.xlsx"; var wb = new XLWorkbook(); while (contadorHojas < 2) { int i = 6; if (contadorHojas == 0) { //Nombre = arrayEmpresaF[0]+" " +arrayEmpresaF[1] + " " +arrayEmpresaF[2]; NombreF = empresaF; nosiga = datosbancarios == null ? 0 : datosbancarios.NoSigaF.Value; } else { //Nombre = arrayEmpresaC[0] + " " + arrayEmpresaC[1] + " " + arrayEmpresaC[2]; NombreF = empresaC; nosiga = datosbancarios == null ? 0 : datosbancarios.NoSigaC.Value; } if (NombreF.Length > 30) { NombreF = NombreF.Substring(0, 29); } var ws = wb.Worksheets.Add(NombreF); ws.Cell("C2").Value = NombreF; ws.Cell("C3").Value = "Dispersion"; ws.Cell("C4").Value = pperiodo.Fecha_Inicio.ToString("dd/MM/yyyy") + " - " + pperiodo.Fecha_Fin.ToString("dd/MM/yyyy"); ws.Range("C2:F2").Merge(); ws.Cell("C2").Style .Alignment.SetHorizontal(XLAlignmentHorizontalValues.Center) .Font.SetBold(); ws.Range("C3:F3").Merge(); ws.Cell("C3").Style.Alignment.SetHorizontal(XLAlignmentHorizontalValues.Center); ws.Range("C4:F4").Merge(); ws.Cell("C4").Style.Alignment.SetHorizontal(XLAlignmentHorizontalValues.Center); ws.Cell("C" + i).Value = banco == null ? "no tiene asignado banco" : banco.Descripcion; ws.Range("C" + i + ":F" + i).Merge(); ws.Cell("C" + i).Style.Alignment.SetHorizontal(XLAlignmentHorizontalValues.Center); i++; ws.Cell("C" + i).Value = "NOMBRE DEL COLABORADOR"; ws.Cell("D" + i).Value = "IMPORTE TOTAL"; ws.Cell("E" + i).Value = "NoSiga"; ws.Cell("F" + i).Value = "Cuenta"; i++; ws.Cell("C" + i).Value = empleado.APaterno + " " + empleado.AMaterno + " " + empleado.Nombres; if (contadorHojas == 0) { ws.Cell("D" + i).Value = finiquito.TOTAL_total; ws.Cell("D" + i).Style.NumberFormat.Format = "$ #,##0.00"; } else { ws.Cell("D" + i).Value = 0; ws.Cell("D" + i).Style.NumberFormat.Format = "$ #,##0.00"; } ws.Cell("E" + i).Value = nosiga; ws.Cell("F" + i).Value = datosbancarios == null ? "Sin datos bancarios" : datosbancarios.CuentaBancaria; i = i + 4; ws.Cell("C" + i).Value = contadorHojas == 0 ? "RELATIVOS" : "FACTURA"; ws.Range("C" + i + ":F" + i).Merge(); ws.Cell("C" + i).Style .Alignment.SetHorizontal(XLAlignmentHorizontalValues.Center) .Font.SetBold(); i++; if (contadorHojas == 0) { ws.Cell("C" + i).Value = "CUOTAS IMSS - INFONAVIT"; ws.Cell("D" + i).Value = factura?.F_Cuota_IMSS_Infonavit ?? 0; ws.Cell("D" + i).Style.NumberFormat.Format = "$ #,##0.00"; i++; ws.Cell("C" + i).Value = "IMPUESTO SOBRE NOMINAS"; ws.Cell("D" + i).Value = factura?.F_ImpuestoNomina ?? 0; ws.Cell("D" + i).Style.NumberFormat.Format = "$ #,##0.00"; i++; ws.Cell("C" + i).Value = "AMORTIZACION INFONAVIT"; ws.Cell("D" + i).Value = factura?.F_Amortizacion_Infonavit ?? 0; ws.Cell("D" + i).Style.NumberFormat.Format = "$ #,##0.00"; i++; ws.Cell("C" + i).Value = "FONACOT"; ws.Cell("D" + i).Value = factura?.F_Fonacot ?? 0; ws.Cell("D" + i).Style.NumberFormat.Format = "$ #,##0.00"; i++; ws.Cell("C" + i).Value = "PENSION ALIMENTICIA"; ws.Cell("D" + i).Value = factura?.F_Pension_Alimenticia ?? 0; ws.Cell("D" + i).Style.NumberFormat.Format = "$ #,##0.00"; i++; ws.Cell("C" + i).Value = "RELATIVOS"; ws.Cell("D" + i).Value = factura?.F_Relativo ?? 0; ws.Cell("D" + i).Style.NumberFormat.Format = "$ #,##0.00"; i++; ws.Cell("C" + i).Value = "TOTAL DISPERSION"; ws.Cell("D" + i).Value = factura?.F_Total_Nomina ?? 0; ws.Cell("D" + i).Style.NumberFormat.Format = "$ #,##0.00"; i++; ws.Cell("C" + i).Value = "TOTAL GENERAL"; ws.Cell("D" + i).Value = factura?.F_Total_Fiscal ?? 0; ws.Cell("D" + i).Style.NumberFormat.Format = "$ #,##0.00"; i++; } else { ws.Cell("C" + i).Value = "PERCEPCIONES"; ws.Cell("D" + i).Value = facturaC?.C_Percepciones ?? 0; ws.Cell("D" + i).Style.NumberFormat.Format = "$ #,##0.0000"; i++; ws.Cell("C" + i).Value = "SERVICIOS" + facturaC?.C_Porcentaje_Servicio ?? "0"; ws.Cell("D" + i).Value = facturaC?.C_Total_Servicio ?? 0; ws.Cell("D" + i).Style.NumberFormat.Format = "$ #,##0.0000"; i++; ws.Cell("C" + i).Value = "RELATIVOS"; ws.Cell("D" + i).Value = facturaC?.C_Relativos ?? 0; ws.Cell("D" + i).Style.NumberFormat.Format = "$ #,##0.0000"; i++; ws.Cell("C" + i).Value = "DESCUENTO"; ws.Cell("D" + i).Value = facturaC?.C_Descuentos ?? 0; ws.Cell("D" + i).Style.NumberFormat.Format = "$ #,##0.0000"; i++; ws.Cell("C" + i).Value = "OTROS"; ws.Cell("D" + i).Value = facturaC?.C_Otros ?? 0; ws.Cell("D" + i).Style.NumberFormat.Format = "$ #,##0.0000"; i++; ws.Cell("C" + i).Value = "SUB TOTAL"; ws.Cell("D" + i).Value = facturaC?.C_Subtotal ?? 0; ws.Cell("D" + i).Style.NumberFormat.Format = "$ #,##0.0000"; i++; ws.Cell("C" + i).Value = "IVA"; ws.Cell("D" + i).Value = facturaC?.C_Total_IVA ?? 0; ws.Cell("D" + i).Style.NumberFormat.Format = "$ #,##0.0000"; i++; ws.Cell("C" + i).Value = "TOTAL DISPERSION COMPLEMENTO"; ws.Cell("D" + i).Value = facturaC?.C_Total_Complemento ?? 0; ws.Cell("D" + i).Style.NumberFormat.Format = "$ #,##0.0000"; i++; } ws.Columns("7,3").AdjustToContents(); ws.Columns("7,4").AdjustToContents(); ws.Columns("7,5").AdjustToContents(); ws.Columns("7,6").AdjustToContents(); contadorHojas++; } wb.SaveAs(newruta); return(newruta); }
public string ExportarExcelReporteNomina(int idusuario, string ruta, NOM_PeriodosPago periodoPago) { List <DatosReporteNominas> datos; List <NOM_Nomina_Detalle> listaDetalles; List <NOM_Nomina> listaNominas; List <NOM_Cuotas_IMSS> listaCuotasImsss; using (var context = new RHEntities()) { datos = (from emp in context.Empleado join empPer in context.NOM_Empleado_PeriodoPago on emp.IdEmpleado equals empPer.IdEmpleado //join nom in ctx.NOM_Nomina //on emp_per.IdPeriodoPago equals nom.IdPeriodo where empPer.IdPeriodoPago == periodoPago.IdPeriodoPago select new DatosReporteNominas { IdEmpleado = emp.IdEmpleado, //IdNomina = nom.IdNomina, Nombres = emp.Nombres, Paterno = emp.APaterno, Materno = emp.AMaterno }).ToList(); listaNominas = context.NOM_Nomina.Where(x => x.IdPeriodo == periodoPago.IdPeriodoPago).ToList(); var arrayIdNominas = listaNominas.Select(x => x.IdNomina).ToArray(); listaDetalles = (from d in context.NOM_Nomina_Detalle where arrayIdNominas.Contains(d.IdNomina) select d).ToList(); listaCuotasImsss = (from c in context.NOM_Cuotas_IMSS where arrayIdNominas.Contains(c.IdNomina) select c).ToList(); } var newruta = ValidarFolderUsuario(idusuario, ruta); newruta = newruta + "ReporteNomina_" + periodoPago.Descripcion + "_.xlsx"; var wb = new XLWorkbook(); var ws = wb.Worksheets.Add("Reporte Nominas "); ws.Cell("A1").Value = "ID EMPLEADO"; ws.Cell("B1").Value = "EMPLEADO"; ws.Cell("C1").Value = "PERCEPCIONES"; ws.Cell("D1").Value = "DEDUCCIONES"; ws.Cell("E1").Value = "COMPLEMENTO"; ws.Cell("F1").Value = "SUELDOS"; ws.Cell("G1").Value = "SALARIO DIARIO"; ws.Cell("H1").Value = "SALARIO DIARIO I"; ws.Cell("I1").Value = "SALARIO BASE C"; ws.Cell("J1").Value = "SALARIO REAL"; ws.Cell("K1").Value = "PENSION ALIMENTICIA"; ws.Cell("L1").Value = "SUBSIDIO AL EMPLEO"; ws.Cell("M1").Value = "IMPUESTO NOMINAS"; ws.Cell("N1").Value = "CUOTA PATRONAL"; ws.Cell("O1").Value = "CUOTA OBRERA"; ws.Cell("P1").Value = "ISR"; ws.Cell("Q1").Value = "INFONAVIT"; ws.Cell("R1").Value = "FONACOT"; ws.Cell("S1").Value = "TOTAL"; int i = 2; foreach (var emp in datos) { if (emp == null) { continue; } // var nomina = ctx.NOM_Nomina.Where(x => x.IdPeriodo == idPeriodo && x.IdEmpleado == emp.IdEmpleado).FirstOrDefault(); var nomina = listaNominas.FirstOrDefault(x => x.IdEmpleado == emp.IdEmpleado); if (nomina == null) { continue; } decimal totalPatron = 0; decimal totalObrero = 0; //var pension = ctx.NOM_Nomina_Detalle.Where(x => x.IdNomina == nomina.IdNomina && x.IdConcepto == 48).FirstOrDefault(); var pension = listaDetalles.FirstOrDefault(x => x.IdNomina == nomina.IdNomina && x.IdConcepto == 48); //var imss = ctx.NOM_Nomina_Detalle.Where(x => x.IdNomina == nomina.IdNomina && x.IdConcepto == 42).FirstOrDefault(); var imss = listaDetalles.FirstOrDefault(x => x.IdNomina == nomina.IdNomina && x.IdConcepto == 42); //var isr = ctx.NOM_Nomina_Detalle.Where(x => x.IdNomina == nomina.IdNomina && x.IdConcepto == 43).FirstOrDefault(); var isr = listaDetalles.FirstOrDefault(x => x.IdNomina == nomina.IdNomina && x.IdConcepto == 43); //var infonavit = ctx.NOM_Nomina_Detalle.Where(x => x.IdNomina == nomina.IdNomina && x.IdConcepto == 51).FirstOrDefault(); var infonavit = listaDetalles.FirstOrDefault(x => x.IdNomina == nomina.IdNomina && x.IdConcepto == 51); //var fonacot = ctx.NOM_Nomina_Detalle.Where(x => x.IdNomina == nomina.IdNomina && x.IdConcepto == 52).FirstOrDefault(); var fonacot = listaDetalles.FirstOrDefault(x => x.IdNomina == nomina.IdNomina && x.IdConcepto == 52); //var sueldo = ctx.NOM_Nomina_Detalle.Where(x => x.IdNomina == nomina.IdNomina && x.IdConcepto == 1).FirstOrDefault(); var sueldo = listaDetalles.FirstOrDefault(x => x.IdNomina == nomina.IdNomina && x.IdConcepto == 1); var itemCuota = listaCuotasImsss.FirstOrDefault(x => x.IdNomina == nomina.IdNomina); if (itemCuota != null) { totalPatron = itemCuota.TotalPatron; totalObrero = itemCuota.TotalObrero; } ws.Cell($"A{i}").Value = emp.IdEmpleado; ws.Cell($"B{i}").Value = emp.Paterno + emp.Materno + emp.Nombres; if (nomina != null) { ws.Cell($"C{i}").Value = nomina.TotalPercepciones; ws.Cell($"D{i}").Value = nomina.TotalDeducciones; ws.Cell($"E{i}").Value = nomina.TotalComplemento; ws.Cell($"F{i}").Value = sueldo == null ? 0 : sueldo.Total; ws.Cell($"G{i}").Value = nomina.SD; ws.Cell($"H{i}").Value = nomina.SDI; ws.Cell($"I{i}").Value = nomina.SBC; ws.Cell($"J{i}").Value = nomina.SDReal; ws.Cell($"K{i}").Value = pension == null ? 0 : pension.Total; ws.Cell($"L{i}").Value = nomina.SubsidioEntregado; ws.Cell($"M{i}").Value = nomina.TotalImpuestoSobreNomina; ws.Cell($"N{i}").Value = totalPatron; ws.Cell($"O{i}").Value = totalObrero; ws.Cell($"P{i}").Value = isr == null ? 0 : isr.Total; ws.Cell($"Q{i}").Value = infonavit == null ? 0 : infonavit.Total; ws.Cell($"R{i}").Value = fonacot == null ? 0 : fonacot.Total; ws.Cell($"S{i}").Value = nomina.TotalNomina; i++; } else { ws.Range($"C{i}:R{i}").Value = 0; i++; } } ws.Cell($"C{i}").FormulaA1 = $"=SUM(C2:C{i - 1})"; ws.Cell($"D{i}").FormulaA1 = $"=SUM(D2:D{i - 1})"; ws.Cell($"E{i}").FormulaA1 = $"=SUM(E2:E{i - 1})"; ws.Cell($"F{i}").FormulaA1 = $"=SUM(F2:F{i - 1})"; ws.Cell($"K{i}").FormulaA1 = $"=SUM(K2:K{i - 1})"; ws.Cell($"L{i}").FormulaA1 = $"=SUM(L2:L{i - 1})"; ws.Cell($"M{i}").FormulaA1 = $"=SUM(M2:M{i - 1})"; ws.Cell($"N{i}").FormulaA1 = $"=SUM(N2:N{i - 1})"; ws.Cell($"O{i}").FormulaA1 = $"=SUM(O2:O{i - 1})"; ws.Cell($"P{i}").FormulaA1 = $"=SUM(P2:P{i - 1})"; ws.Cell($"Q{i}").FormulaA1 = $"=SUM(Q2:Q{i - 1})"; ws.Cell($"R{i}").FormulaA1 = $"=SUM(R2:R{i - 1})"; ws.Cell($"S{i}").FormulaA1 = $"=SUM(S2:S{i - 1})"; ws.Range($"C2:S{i}").Style.NumberFormat.Format = "$ #,##0.00"; ws.Range("A1:S1").Style.Font.SetBold(); ws.Range($"A{i}:S{i}").Style.Font.SetBold(); ws.Columns("1:19").AdjustToContents(); wb.SaveAs(newruta); return(newruta); }
private static NOM_Nomina_Detalle CalculoDeInfonavit(NOM_Nomina nomina, NOM_PeriodosPago periodoPago, int dias = -1) { decimal totalADescontar = 0; // DateTime fechaServidor = DateTime.Now; int diasDeDescuento = 0; if (dias >= 0) { diasDeDescuento = dias; } else { diasDeDescuento = nomina.Dias_Laborados; } //1) Obtener el prestamo infonavit de la tabla Prestamos pasando el Id del contrato var prestamoInfonavit = NominasDao.GetPrestamoInfonavitByIdContrato(nomina.IdContrato); //Infonavit no maneja saldo if (prestamoInfonavit == null) { return(null); } //Validar Fecha de inicio del descuento if (periodoPago.Fecha_Inicio < prestamoInfonavit.FechaInicio && periodoPago.Fecha_Fin < prestamoInfonavit.FechaInicio) { return(null); } //if (fechaServidor >= prestamoInfonavit.FechaInicio) //Validar Fecha suspension //if (prestamoInfonavit.FechaSuspension != null) //{ // if (prestamoInfonavit.FechaSuspension > fechaServidor) // return null; //} //Validar Fecha de Suspension del descuentos //if (fechaServidor < prestamoInfonavit.FechaSuspension) //{ RH.BLL.Infonavit inf = new RH.BLL.Infonavit(); if (diasDeDescuento > 0) { //CALCULO DEL CREDITO - var calculo = inf.GetInfonavitById(prestamoInfonavit.Id); totalADescontar = diasDeDescuento * calculo.DescuentoDiario; } //Se guarda como detalle de la nomina //GuardarConcepto(nomina.IdNomina, 51, totalADescontar, 0, totalADescontar, 0, 0, false, prestamoInfonavit.Id); NOM_Nomina_Detalle item = new NOM_Nomina_Detalle() { Id = 0, IdNomina = nomina.IdNomina, IdConcepto = 51, Total = Utils.TruncateDecimales(totalADescontar), GravadoISR = 0, ExentoISR = Utils.TruncateDecimales(totalADescontar), IntegraIMSS = 0, ImpuestoSobreNomina = 0, Complemento = false, IdPrestamo = prestamoInfonavit?.Id ?? 0 }; return(item); //} }
public bool guardarPeriodo(int[] arrayE, string[] periodoDatos, int idsucursal, int idCliente, int idUsuario) { try { //validacion if (periodoDatos == null) { return(false); } if (Convert.ToInt32(periodoDatos[1]) == 0) { return(false); } using (var context = new RHEntities()) { var fechaInicio = Convert.ToDateTime(periodoDatos[3]); var anio = fechaInicio.Year.ToString(); int mes = fechaInicio.Month; var fechaActual = DateTime.Now; double calc = (double)mes / (double)2; var bim = (int)Math.Ceiling(calc); var esSindicato = false; int tipoNomina = 0; List <Empleado_Contrato> listaContratos = new List <Empleado_Contrato>(); var ejercicio = context.NOM_Ejercicio_Fiscal.Where(x => x.Anio == anio).Select(x => x.IdEjercicio).FirstOrDefault(); if (arrayE != null)//Para crear un periodo vacio donde no hay empleado seleccionados { listaContratos = (from c in context.Empleado_Contrato where arrayE.Contains(c.IdEmpleado) select c).ToList(); } bool soloComplemento = false; if (periodoDatos.Length == 9) { soloComplemento = Convert.ToBoolean(periodoDatos[8]); } //Get tipo de Nomina del periodo tipoNomina = Convert.ToInt32(periodoDatos[0]); if (tipoNomina == 17) //Sindicato { esSindicato = true; } var item = new NOM_PeriodosPago { IdTipoNomina = tipoNomina, // Convert.ToInt32(periodoDatos[0]), DiasPeriodo = Convert.ToInt32(periodoDatos[1]), Descripcion = periodoDatos[2], Fecha_Inicio = Convert.ToDateTime(periodoDatos[3]), Fecha_Fin = Convert.ToDateTime(periodoDatos[4]), Fecha_Pago = Convert.ToDateTime(periodoDatos[4]), IdEjercicio = ejercicio, Bimestre = bim, IdSucursal = idsucursal, Ultimo = Convert.ToBoolean(periodoDatos[5]), Especial = Convert.ToBoolean(periodoDatos[6]), IdTipoNominaSat = Convert.ToInt32(periodoDatos[7]), SoloComplemento = soloComplemento, Sindicato = esSindicato, FechaReg = DateTime.Now, IdCliente = idCliente, IdUsuario = idUsuario }; if (tipoNomina == 16) //Asimilado { item.IdTipoNominaSat = 2; //E - extraordinaria } if (item.IdTipoNomina <= 0) { return(false); } context.NOM_PeriodosPago.Add(item); var t = context.SaveChanges(); int idperiodo = item.IdPeriodoPago; List <NOM_Empleado_PeriodoPago> listaEmpleadosPerio = new List <NOM_Empleado_PeriodoPago>(); if (arrayE != null) { foreach (var p in arrayE) { var itemContrato = listaContratos.OrderByDescending(x => x.IdContrato) .FirstOrDefault(x => x.IdEmpleado == p); var itemEp = new NOM_Empleado_PeriodoPago { IdEmpleado = p, IdPeriodoPago = idperiodo, DiasDescuentoInfonavit = -1, IdContrato = itemContrato?.IdContrato ?? 0 }; listaEmpleadosPerio.Add(itemEp); } //guardamos la lista context.NOM_Empleado_PeriodoPago.AddRange(listaEmpleadosPerio); context.SaveChanges(); } } return(true); } catch (Exception e) { return(false); } }
//private static List<int> CalcularAguinaldo(Dictionary<int, int> datosEmpleado, int idEjercicio, int idPeriodo, DateTime fechaUltimoDia, int idSucursal, int idUsuario) //{ // //PARAMETROS CON LA LISTA DE LAS FALTAS MODIFICADAS - // //PARA APLICARLO AL CALCULO // //Variables - // int faltas = 0; // int diasEjercicioFiscal = 365;//Obtener desde la BD // List<int> aguinaldosGenerados = new List<int>();//guarda los registros de aguinaldos generados // var listaKey = datosEmpleado.Select(x => x.Key).ToArray(); // //Contratos de los emplados - activos // var listaContratos = _NominasDao.GetContratoEmpleados(listaKey, idSucursal); // //Zona Salarial // var zonaSalarial = _NominasDao.GetZonaSalario(); //Zona de Salario 73.04 // //Dias del Ejercicio // var ejercicioFiscal = _NominasDao.GetEjercicioFiscal(idEjercicio); // diasEjercicioFiscal = ejercicioFiscal.Dias; // //Por cada Empleado // foreach (var contrato in listaContratos) // { // //fecha inicial // var fechaInicialFiscal = contrato.FechaAlta; // var fechaInicialReal = contrato.FechaReal; // //Si fecha Inicial Fiscal es menor a 01-01-del Año Actual se pondra 01-01-del año actual = 01-01-2016 // //dias laborados del año // decimal diasLaboradosFiscal = Utils.GetDiasEntreDosFechas(fechaInicialFiscal, fechaUltimoDia); // decimal diasLaboradosComplemento = Utils.GetDiasEntreDosFechas(fechaInicialReal, fechaUltimoDia); // //Dias aguinaldo de la Tabla Factor de Integracion // var añosAntiguedad = fechaUltimoDia.Year - contrato.FechaAlta.Year; // var añosAntiguedadReal = fechaUltimoDia.Year - contrato.FechaReal.Year; // var factorIntegracion = NominasDao.GetFactoresIntegracionByAntiguedad(añosAntiguedad); // var diasAguinaldoCorrespondiente = factorIntegracion.DiasAguinaldo;//obtener desde la BD // // Faltas e inasistencias -- ?? - OBTENERLAS DESDE LA VISTA - PARA RECIBIRLO COMO PARAMETRO // var faltasDescontar = datosEmpleado.Where(x => x.Key == contrato.IdEmpleado).Select(p => p.Value).FirstOrDefault(); // faltas = faltasDescontar; // //Dias proporcional de pago de los 15 dias correspondientes del año // var diasCorrespondienteFiscal = ((diasLaboradosFiscal - faltas) * diasAguinaldoCorrespondiente) / diasEjercicioFiscal; // var diasCorrespondienteReal = ((diasLaboradosComplemento - faltas) * diasAguinaldoCorrespondiente) / diasEjercicioFiscal; // //Total Fiscal // var TotalFiscal = diasCorrespondienteFiscal * contrato.SD; // //Total Real // var totalReal = diasCorrespondienteReal * contrato.SalarioReal; // //Tope Fiscal // var TopeFiscal = 30 * zonaSalarial.SMG; // //Excento // var exento = TotalFiscal > TopeFiscal ? TopeFiscal : TotalFiscal; // //Gravado // var Gravado = TopeFiscal > TotalFiscal ? (TotalFiscal - TopeFiscal) : 0; // //Complemento // var TotalComplemento = totalReal - TotalFiscal; // //Total Aguinaldo // var TotalAguinaldo = TotalComplemento + TotalFiscal; // //Guardar el registro en la Base de Datos // NOM_Aguinaldo itemAguinaldo = new NOM_Aguinaldo() // { // IdAguinaldo = 0, // IdPeriodo = idPeriodo, // IdContrato = contrato.IdContrato, // IdEmpleado = contrato.IdEmpleado, // DiasAguinaldoFiscal = diasAguinaldoCorrespondiente, // DiasAguinaldoReal = diasAguinaldoCorrespondiente, // SD = contrato.SD, // SDReal = contrato.SalarioReal, // SalarioMinimo = zonaSalarial.SMG, // FechaAlta = contrato.FechaAlta, // FechaAntiguedad = contrato.FechaReal, // FechaUltimoDia = fechaUltimoDia, // FechaInicialFiscal = fechaInicialFiscal, // FechaInicialReal = fechaInicialReal, // TotalFaltas = faltas, // Incapacidades = 0, // FaltasInjustificadas = 0, // PermisoSinGose = 0, // DiasEjercicioFiscal = diasEjercicioFiscal, // DiasLaboradosFiscal = (int)diasLaboradosFiscal, // DiasLaboradosComplemento = (int)diasLaboradosComplemento, // DiasCorrespondientesFiscal = diasCorrespondienteFiscal, // DiasCorrespondientesComplemento = diasCorrespondienteReal, // TotalFiscal = TotalFiscal, // TopeFiscal = TopeFiscal, // Excento = exento, // Gravado = Gravado, // TotalReal = totalReal, // Complemento = TotalComplemento, // TotalAguinaldoNeto = TotalAguinaldo // }; // _NominasDao.AddAguinaldo(itemAguinaldo); // aguinaldosGenerados.Add(itemAguinaldo.IdAguinaldo); // } // return aguinaldosGenerados; //} private static List <NotificationSummary> CalcularAguinaldoA(int[] arrayIdEmpleado, string[] faltasCapturadas, bool[] generarPensionAlimenticia, int idPeriodo, int idCliente, int idSucursal, int idUsuario, bool anual) { List <NotificationSummary> summaryList = new List <NotificationSummary>(); //VARIABLES decimal sm = 0; int dias = 30; decimal sd = 0; decimal sdi = 0; int diasAguinaldo = 15;//default int diasEjercicio = 365; DateTime primerDia; DateTime fechaUltimoDia; DateTime fechaIngreso = DateTime.Now; int faltas = 0; int faltaPersonalizada = -1; int diasTrabajados = 0; decimal sueldoMensual = 0; decimal proporcion = 0; decimal topeExento = 0; decimal aguinaldo = 0; decimal parteExento = 0; decimal parteGravado = 0; decimal neto = 0; // decimal complemento = 0; decimal total = 0; decimal iSobreNomina = 0; decimal factor = 0; decimal antiguedad = 0; decimal IngresoGravable = 0; decimal IngresoGravable304 = 0; decimal parteComplemento = 0; List <NOM_Nomina> listaNominasGeneradas = new List <NOM_Nomina>(); //Obtenemos los contratos List <Empleado_Contrato> listaContratos = new List <Empleado_Contrato>(); List <C_FactoresIntegracion> listaFactorIntegracion = new List <C_FactoresIntegracion>(); ZonaSalario itemZonaSalario = new ZonaSalario(); ParametrosConfig itemConfigISN = new ParametrosConfig(); NOM_PeriodosPago periodoPago = new NOM_PeriodosPago(); List <Incapacidades> listaIncapacidades = new List <Incapacidades>(); List <Inasistencias> listaInasistencias = new List <Inasistencias>(); List <Permisos> listaPermisos = new List <Permisos>(); List <NOM_Empleado_Complemento> listaDatosComplementosDelPeriodo = null; Sucursal itemSucursal = new Sucursal(); if (arrayIdEmpleado == null) { return(null); } if (arrayIdEmpleado.Length <= 0) { return(null); } //VALIDACION TIMBRADOS #region VALIDA QUE EL EMPLEADO YA TENGA SU NOMINA TIMBRADA EN ESTE PERIODO - para no conciderar en el procesado estas nominas NominasDao _nominasDao = new NominasDao(); var arrayidEmpleadosCfdiGenerados = _nominasDao.GetEmpleadosIdCfdiGenerados(arrayIdEmpleado, idPeriodo); if (arrayidEmpleadosCfdiGenerados.Length > 0) { var idEmpSumm = string.Join(",", arrayidEmpleadosCfdiGenerados); summaryList.Add(new NotificationSummary() { Reg = 0, Msg1 = $"Los empleados con id: {idEmpSumm} tienen su nominas timbradas en este periodo. \n Ya no se pueden volver a procesar.", Msg2 = "" }); //Filtra los empleados que ya se timbraron var arrayFiltro = Utils.ElimarEnArrarDeOtroArray(arrayIdEmpleado, arrayidEmpleadosCfdiGenerados); arrayIdEmpleado = arrayFiltro; } #endregion if (arrayIdEmpleado.Length <= 0) { return(null); } //Buscamos los id de la nomina de los empleados, //para eliminar las nominas que hayan sido procesadas con ese id de empleado en el mismo periodo #region SE ELIMINA LOS REGISTROS DEL PROCESADO ANTERIOR var arrayIdNominas = _nominasDao.GetNominasIdByEmpleados(arrayIdEmpleado, idPeriodo); //si la nomina fue procesada anteriormente, se eliminan sus registros, para guardar sus nuevos valores. if (arrayIdNominas.Length > 0) { NominasDao.EliminarAguinaldosProcesados(arrayIdNominas); } #endregion #region GET DATA using (var context = new RHEntities()) { periodoPago = context.NOM_PeriodosPago.FirstOrDefault(x => x.IdPeriodoPago == idPeriodo); //VALIDACIONES if (periodoPago == null) { summaryList.Add(new NotificationSummary() { Reg = idPeriodo, Msg1 = $"No se encontró el periodo {idPeriodo}.", Msg2 = "" }); return(null); } itemSucursal = context.Sucursal.FirstOrDefault(x => x.IdSucursal == periodoPago.IdSucursal); listaDatosComplementosDelPeriodo = _nominasDao.GetDatosComplementoDelPeriodo(idPeriodo); var fechaInicial = new DateTime(periodoPago.Fecha_Inicio.Year, periodoPago.Fecha_Inicio.Month, periodoPago.Fecha_Inicio.Day, 05, 00, 0); var fechaFinal = new DateTime(periodoPago.Fecha_Fin.Year, periodoPago.Fecha_Fin.Month, periodoPago.Fecha_Fin.Day, 23, 50, 0); listaContratos = (from c in context.Empleado_Contrato where arrayIdEmpleado.Contains(c.IdEmpleado) && c.Status == true select c).ToList(); listaIncapacidades = (from i in context.Incapacidades where arrayIdEmpleado.Contains(i.IdEmpleado) && i.FechaInicio >= fechaInicial && i.FechaInicio <= fechaFinal && (i.IdIncapacidadesSat == 2 || i.IdIncapacidadesSat == 3) select i).ToList(); //tipo 2,3 - idEmpleado - fi y ff listaInasistencias = (from i in context.Inasistencias where arrayIdEmpleado.Contains(i.IdEmpleado) && i.Fecha >= fechaInicial && i.Fecha <= fechaFinal && (i.IdTipoInasistencia == 3 || i.IdTipoInasistencia == 4 || i.IdTipoInasistencia == 5 || i.IdTipoInasistencia == 8 || i.IdTipoInasistencia == 9 || i.IdTipoInasistencia == 10 || i.IdTipoInasistencia == 11 || i.IdTipoInasistencia == 16) select i).ToList(); // tipo 3,4,5,8,9,10,11,16 - idEmpleado - fecha-fechafin listaPermisos = (from p in context.Permisos where arrayIdEmpleado.Contains(p.IdEmpleado) && p.FechaInicio >= fechaInicial && p.FechaInicio <= fechaFinal select p).ToList(); // id Empleado - FechaInicio-Fechafin itemZonaSalario = context.ZonaSalario.FirstOrDefault(x => x.Status == true); listaFactorIntegracion = context.C_FactoresIntegracion.ToList(); // var strNumerador = ((ParametrosDeConfiguracion)intNumerador).ToString().ToUpper(); int idConfig = (int)ParametrosDeConfiguracion.ISN; itemConfigISN = context.ParametrosConfig.FirstOrDefault(x => x.IdConfig == idConfig); } #endregion //primerDia = periodoPago.Fecha_Inicio; fechaUltimoDia = periodoPago.Fecha_Fin; if (itemZonaSalario != null) { sm = itemZonaSalario.UMA; } diasEjercicio = Utils.GetDiasDelAño(fechaUltimoDia); topeExento = sm * dias; //Listas List <NOM_Nomina_Detalle> listaDetalles = new List <NOM_Nomina_Detalle>(); List <NOM_Aguinaldo> listaAguinaldos = new List <NOM_Aguinaldo>(); //Por cada empleado int index = 0; foreach (var idArrayEmpleado in arrayIdEmpleado) { CalculoAnual Canual = new CalculoAnual(); bool anualOK = false; decimal isr = 0, saldo = 0; bool calcularPensionA = true; decimal pensionAlimenticia = 0; primerDia = periodoPago.Fecha_Inicio; var itemContrato = listaContratos.OrderByDescending(x => x.IdContrato).FirstOrDefault(x => x.IdEmpleado == idArrayEmpleado); //Validar si el contrato es null if (itemContrato == null) { summaryList.Add(new NotificationSummary() { Reg = idArrayEmpleado, Msg1 = $"No se encontró contrato para el empleado: {idArrayEmpleado}.", Msg2 = "" }); index++; continue; } //Valida que el SD o SDI sea mayor a cero if (itemContrato.SD == 0 || itemContrato.SDI == 0) { summaryList.Add(new NotificationSummary() { Reg = idArrayEmpleado, Msg1 = $"El contrato {itemContrato.IdContrato} tiene los valores SD: {itemContrato.SD}, SDI:{itemContrato.SDI}", Msg2 = "" }); // index++; // continue; } if (itemContrato.FechaIMSS != null) { fechaIngreso = itemContrato.FechaIMSS.Value; if (itemContrato.FechaIMSS > periodoPago.Fecha_Inicio) { primerDia = itemContrato.FechaIMSS.Value; } if (anual == true && fechaIngreso < new DateTime(DateTime.Now.Year, 1, 1)) { anualOK = true; } } #region PROCESO CALCULO sd = itemContrato.SD; sdi = itemContrato.SDI; sueldoMensual = 0; diasTrabajados = 0; //obtenemos los años de antiguedad antiguedad = fechaIngreso.Year - fechaUltimoDia.Year; if (antiguedad == 0) { antiguedad = 1; } //buscamos en la lista de factores los dias de aguinaldo var itemFactorIntegracion = listaFactorIntegracion.FirstOrDefault(x => x.Antiguedad == antiguedad); if (itemFactorIntegracion != null) { diasAguinaldo = itemFactorIntegracion.DiasAguinaldo; } //FALTAS faltas = 0; faltaPersonalizada = GetFaltaPersonalizada(faltasCapturadas[index]); faltas = faltaPersonalizada >= 0 ? faltaPersonalizada : GetFaltas(idArrayEmpleado, listaIncapacidades, listaInasistencias, listaPermisos); diasTrabajados = Utils.GetDiasEntreDosFechas(primerDia, fechaUltimoDia) - faltas; // diasEjercicio - faltas; sueldoMensual = dias * sd; proporcion = ((decimal)diasAguinaldo * (decimal)diasTrabajados) / (decimal)diasEjercicio; aguinaldo = sd * proporcion; if (aguinaldo <= topeExento) { parteExento = aguinaldo; parteGravado = 0; } else { parteExento = topeExento; parteGravado = aguinaldo - topeExento; } IngresoGravable = sueldoMensual; IngresoGravable304 = ((parteGravado / diasTrabajados) * (decimal)30.40) + sueldoMensual; if (parteGravado > 0 && !anualOK) { var IsrAguinaldo = MNominas.CalculoIsrSubsidio174(parteGravado, sd); isr = IsrAguinaldo.ResultadoIsrOSubsidio; } if (anualOK) { if (arrayIdNominas.Length > 0) { NominasDao.EliminarCalculosAnuales(arrayIdNominas); } Canual = MNominas.GetCalculoAnualconPrevision(idArrayEmpleado, periodoPago.IdEjercicio, sd, sdi, itemContrato.IdEmpresaFiscal, parteGravado, 0); isr = Canual.ResultadoIsrOSubsidio > 0 ? Math.Abs(Canual.ResultadoIsrOSubsidio) : 0; saldo = Canual.ResultadoIsrOSubsidio < 0 ? Math.Abs(Canual.ResultadoIsrOSubsidio) : 0; } neto = aguinaldo - isr; //PENSION ALIMENTICIA if (generarPensionAlimenticia != null) { calcularPensionA = generarPensionAlimenticia[index]; } if (calcularPensionA) { if (itemContrato.PensionAlimenticiaPorcentaje != null) { decimal porcentaje = 0; porcentaje = itemContrato.PensionAlimenticiaPorcentaje.Value; if (porcentaje > 0) { pensionAlimenticia = (neto * (porcentaje / 100)); //Se le descuenta al neto if (pensionAlimenticia > 0) { neto = (neto - pensionAlimenticia); } } } } //parte de complemento //complemento = 0; var porcentajeSobreNomina = (decimal)0.03; if (itemConfigISN != null) { porcentajeSobreNomina = itemConfigISN.ValorDecimal; } //iSobreNomina = (sd * diasAguinaldo) * porcentajeSobreNomina; // mty iSobreNomina = aguinaldo * porcentajeSobreNomina; //cancun iSobreNomina = iSobreNomina.TruncateDecimal(2); //COMPLEMENTO parteComplemento = 0; #region NUEVO CÁLCULO DE COMPLEMENTO //Busca en la lista de Datos de Complemento lo correspondiente al colaborador //Obtenemos una lista con los concentos de complemento var complementoEmpleado = listaDatosComplementosDelPeriodo.Where(x => x.IdEmpleado == itemContrato.IdEmpleado) .ToList(); //valida que la lista no este vacia if (complementoEmpleado?.Count > 0) { //Complemento que se subio en el Layout var sumaTotalComplemento = complementoEmpleado.Select(x => x.Cantidad).Sum(); //Regla se aplico en monterrey por causa de descuento de lado de complemento //donde el complemento se queda menor que el fiscal y eso genera negativo //para no aplicar negativo se pondra cero if (neto > sumaTotalComplemento) { parteComplemento = 0; } else { parteComplemento = (sumaTotalComplemento - neto.TruncateDecimal(2)); } } #endregion total = parteComplemento + neto; #endregion #region item Nomina //1.-Crear un item para Nominas //1) Crear el registro de nomina -------------------------------------------- NOM_Nomina itemNomina = new NOM_Nomina(); itemNomina.IdNomina = 0; itemNomina.IdCliente = idCliente; itemNomina.IdSucursal = idSucursal; itemNomina.IdEjercicio = periodoPago.IdEjercicio; itemNomina.IdPeriodo = idPeriodo; itemNomina.IdEmpleado = itemContrato.IdEmpleado; itemNomina.IdContrato = itemContrato.IdContrato; itemNomina.FechaReg = DateTime.Now; itemNomina.IdUsuario = idUsuario; itemNomina.CFDICreado = false; itemNomina.TotalNomina = neto; itemNomina.TotalPercepciones = 0; itemNomina.TotalDeducciones = 0; itemNomina.TotalOtrosPagos = 0; itemNomina.TotalComplemento = parteComplemento; itemNomina.TotalImpuestoSobreNomina = iSobreNomina; itemNomina.TotalImpuestoSobreNomina_Complemento = 0; itemNomina.TotalObligaciones = 0; itemNomina.TotalCuotasIMSS = 0; itemNomina.TotalCuotasIMSSComplemento = 0; itemNomina.SubsidioCausado = 0; itemNomina.SubsidioEntregado = 0; itemNomina.ISRantesSubsidio = isr; itemNomina.SD = itemContrato.SD; itemNomina.SDI = itemContrato.SDI; itemNomina.SBC = itemContrato.SBC; itemNomina.SDReal = itemContrato.SalarioReal; itemNomina.IdEmpresaFiscal = itemContrato.IdEmpresaFiscal; itemNomina.IdEmpresaComplemento = itemContrato.IdEmpresaComplemento; itemNomina.IdEmpresaAsimilado = itemContrato.IdEmpresaAsimilado; itemNomina.IdEmpresaSindicato = itemContrato.IdEmpresaSindicato; itemNomina.IdMetodo_Pago = itemContrato.FormaPago; itemNomina.Dias_Laborados = diasTrabajados; itemNomina.Faltas = faltas; itemNomina.Prima_Riesgo = 0; itemNomina.TipoTarifa = 5;//mensual itemNomina.SBCotizacionDelProcesado = 0; itemNomina.XMLSinTimbre = null; itemNomina.SMGV = itemZonaSalario.SMG; itemNomina.UMA = itemZonaSalario.UMA; _NominasDao.CrearNomina(itemNomina); listaNominasGeneradas.Add(itemNomina); #endregion #region item Detalle Nomina //2.- Crear un item para Detalle de nomina NOM_Nomina_Detalle itemNominaDetalle = new NOM_Nomina_Detalle(); itemNominaDetalle.Id = 0; itemNominaDetalle.IdNomina = itemNomina.IdNomina; itemNominaDetalle.IdConcepto = 2; itemNominaDetalle.Total = aguinaldo; itemNominaDetalle.GravadoISR = parteGravado; itemNominaDetalle.ExentoISR = parteExento; itemNominaDetalle.IntegraIMSS = 0; itemNominaDetalle.ExentoIMSS = 0; itemNominaDetalle.ImpuestoSobreNomina = iSobreNomina; itemNominaDetalle.Complemento = false; itemNominaDetalle.IdPrestamo = 0; listaDetalles.Add(itemNominaDetalle); if (isr > 0) { NOM_Nomina_Detalle itemDetalleIsr = new NOM_Nomina_Detalle(); itemDetalleIsr.Id = 0; itemDetalleIsr.IdNomina = itemNomina.IdNomina; itemDetalleIsr.IdConcepto = 43; itemDetalleIsr.Total = isr; itemDetalleIsr.GravadoISR = 0; itemDetalleIsr.ExentoISR = 0; itemDetalleIsr.IntegraIMSS = 0; itemDetalleIsr.ExentoIMSS = 0; itemDetalleIsr.ImpuestoSobreNomina = 0; itemDetalleIsr.Complemento = false; itemDetalleIsr.IdPrestamo = 0; listaDetalles.Add(itemDetalleIsr); } // datos anual /* if (anualOK) * { * NOM_Nomina_Detalle itemanual = new NOM_Nomina_Detalle() * { * Id = 0, * IdNomina = itemNomina.IdNomina, * IdConcepto = Canual.ResultadoIsrOSubsidio < 0 ? 143 : 43, * Total = Math.Abs(Canual.ResultadoIsrOSubsidio), * GravadoISR = 0, * ExentoISR = 0, * IntegraIMSS = 0, * ImpuestoSobreNomina = 0, * Complemento = false * * }; * * listaDetalles.Add(itemanual); * * }*/ if (pensionAlimenticia > 0) { NOM_Nomina_Detalle itemPension = new NOM_Nomina_Detalle() { Id = 0, IdNomina = itemNomina.IdNomina, IdConcepto = 48, Total = pensionAlimenticia, GravadoISR = pensionAlimenticia, ExentoISR = 0, IntegraIMSS = 0, ImpuestoSobreNomina = 0, Complemento = false }; listaDetalles.Add(itemPension); } #endregion #region item Aguinaldo //3.- Creo un item para Aguinaldo NOM_Aguinaldo itemAguinaldo = new NOM_Aguinaldo(); itemAguinaldo.IdAguinaldo = 0; itemAguinaldo.IdEjercicio = periodoPago.IdEjercicio; itemAguinaldo.IdPeriodo = periodoPago.IdPeriodoPago; itemAguinaldo.IdContrato = itemContrato.IdContrato; itemAguinaldo.IdEmpleado = itemContrato.IdEmpleado; itemAguinaldo.IdNomina = itemNomina.IdNomina; itemAguinaldo.SD = sd; itemAguinaldo.SDI = sdi; itemAguinaldo.SalarioMinimo = sm; itemAguinaldo.DiasAguinaldo = diasAguinaldo; itemAguinaldo.DiasEjercicioFiscal = diasEjercicio; itemAguinaldo.FechaIngreso = fechaIngreso; itemAguinaldo.FechaPrimerDia = primerDia; itemAguinaldo.FechaUltimoDia = fechaUltimoDia; itemAguinaldo.TotalFaltas = faltas; int?personalF = null; if (faltaPersonalizada >= 0) { personalF = faltaPersonalizada; } itemAguinaldo.FaltasPersonalizadas = personalF; itemAguinaldo.Incapacidades = 0; itemAguinaldo.FaltasInjustificadas = 0; itemAguinaldo.PermisoSinGose = 0; itemAguinaldo.DiasTrabajados = diasTrabajados; itemAguinaldo.SueldoMensual = sueldoMensual; itemAguinaldo.Proporcion = proporcion; itemAguinaldo.TopeExcento = topeExento; itemAguinaldo.Aguinaldo = aguinaldo; itemAguinaldo.Exento = parteExento; itemAguinaldo.Gravado = parteGravado; itemAguinaldo.ISR = isr; itemAguinaldo.Neto = neto; itemAguinaldo.Complemento = parteComplemento; itemAguinaldo.Total = total; itemAguinaldo.ISN3 = iSobreNomina; itemAguinaldo.Factor = factor; itemAguinaldo.FechaReg = DateTime.Now; itemAguinaldo.CalcularPensionAlimenticia = calcularPensionA; itemAguinaldo.PensionAlimenticia = pensionAlimenticia; itemAguinaldo.SaldoAnual = saldo; listaAguinaldos.Add(itemAguinaldo); #endregion index++; } //-> fin for NominasDao.GuardarDetallesNomina(listaDetalles, null, 0); //Aguinaldo - no aplica agregar incapacidades _NominasDao.AddRangeAguinaldos(listaAguinaldos); //Obtener las empresas fiscales var listaNominaA = _nominasDao.GetDatosNominas(idPeriodo); var listaAguinaldo = _nominasDao.GetAguinaldosByIdPeriodo(idPeriodo); var empresaFiscal = listaNominaA.Where(x => x.IdEmpresaFiscal != null).Select(x => x.IdEmpresaFiscal).Distinct().ToArray(); var empresaComplemento = listaNominaA.Select(x => x.IdEmpresaComplemento).Distinct().ToArray(); empresaFiscal = empresaFiscal.Distinct().ToArray(); empresaComplemento = empresaComplemento.Distinct().ToArray(); var porcentajeIva = _nominasDao.PorcentajeIVA(); foreach (var itemFiscal in empresaFiscal) { decimal isn = 0; decimal totalPercepcion = 0; decimal totalFiscal = 0; decimal totalPension = 0; decimal relativo = 0; isn = listaNominaA.Where(x => x.IdEmpresaFiscal == itemFiscal).Sum(x => x.TotalImpuestoSobreNomina); totalPercepcion = listaNominaA.Where(x => x.IdEmpresaFiscal == itemFiscal).Sum(x => x.TotalNomina); var arrayIdNom = listaNominaA.Select(x => x.IdNomina).ToArray(); var listaA = (from p in listaAguinaldo where arrayIdNom.Contains(p.IdNomina) select p).ToList(); totalPension = listaA.Sum(x => x.PensionAlimenticia); relativo = isn + totalPension; totalFiscal = relativo + totalPercepcion; _nominasDao.CrearFactura(idPeriodo, itemFiscal.Value, 0, isn, 0, 0, totalPension, relativo, totalPercepcion, totalFiscal, porcentajeIva); } foreach (var itemComp in empresaComplemento) { if (itemComp == null) { continue; } decimal totalPercepcionesC = 0; decimal relativoC = 0; decimal subTotalC = 0; decimal totalIVAC = 0; decimal totalComple = 0; decimal porcentajeServicio = 0; decimal totalServicio = 0; decimal isn = 0; isn = listaNominaA.Where(x => x.IdEmpresaComplemento == itemComp).Sum(x => x.TotalImpuestoSobreNomina); totalPercepcionesC = listaNominaA.Where(x => x.IdEmpresaComplemento == itemComp).Sum(x => x.TotalComplemento); //resultado complemento de la factura porcentajeServicio = itemSucursal.PorcentajeServicio; // _nominasDao.PorcentajeServicioHold(ppago.IdSucursal); porcentajeServicio = porcentajeServicio / 100; totalServicio = totalPercepcionesC * porcentajeServicio; relativoC = isn; subTotalC = relativoC + totalPercepcionesC + totalServicio; totalIVAC = (porcentajeIva / 100) * subTotalC; totalComple = totalIVAC + subTotalC; _nominasDao.CrearFacturaComplemento(idPeriodo, itemComp.Value, totalPercepcionesC, porcentajeServicio, totalServicio, 0, isn, relativoC, subTotalC, totalIVAC, totalComple); } return(summaryList); }
private static List <NOM_Nomina_Detalle> CalculoDeFonacot(NOM_Nomina nomina, NOM_PeriodosPago periodoPago) { decimal totalDescuento = 0; DateTime fechaServidor = DateTime.Now; List <NOM_Nomina_Detalle> listaFonacot = new List <NOM_Nomina_Detalle>(); //1) Obtener los creditos fonacot var prestamosFonacot = NominasDao.GetPrestamosFonacotByIdContrato(nomina.IdContrato); if (prestamosFonacot.Count > 0) { //2) Por cada prestamo se obtiene su monto de descuento y se guarda en el detalle de la nomina con el id del Prestamo fonacot foreach (var prestamo in prestamosFonacot) { //validar Saldo > 0 if (prestamo.Saldo <= 0) { continue; // nueva iteracion del for } //validar Fecha de Inicio del Descuento //if (fechaServidor < prestamo.FechaInicioDescuento) continue; //if ( periodoPago.Fecha_Inicio > prestamo.FechaInicioDescuento || periodoPago.Fecha_Fin > prestamo.FechaInicioDescuento) continue; if (periodoPago.Fecha_Inicio < prestamo.FechaInicioDescuento && periodoPago.Fecha_Fin < prestamo.FechaInicioDescuento) { continue; } //validar FechaSuspension //if (!(fechaServidor < prestamo.FechaSuspension)) continue; //validar que la retencion no sea mayor que el saldo var cantidadDescuento = prestamo.Retencion > prestamo.Saldo ? prestamo.Saldo : prestamo.Retencion; //Guardar en el detalle de la nomina //GuardarConcepto(nomina.IdNomina, 52, cantidadDescuento, 0, cantidadDescuento, 0, 0,false, prestamo.Id); NOM_Nomina_Detalle item = new NOM_Nomina_Detalle() { Id = 0, IdNomina = nomina.IdNomina, IdConcepto = 52, Total = Utils.TruncateDecimales(cantidadDescuento), GravadoISR = 0, ExentoISR = Utils.TruncateDecimales(cantidadDescuento), IntegraIMSS = 0, ImpuestoSobreNomina = 0, Complemento = false, IdPrestamo = prestamo.Id }; //return item; listaFonacot.Add(item); //Guarda el total de todos los prestamos fonacot activos totalDescuento += cantidadDescuento; } return(listaFonacot); } return(null); }
public string crearexcel(int idusuario, string ruta, int idSucursal, NOM_PeriodosPago Periodo, bool complemento, DateTime FechaIni, DateTime FechaFin) { using (var context = new RHEntities()) { var cliente = (from c in context.Cliente join s in context.Sucursal on c.IdCliente equals s.IdCliente where s.IdSucursal == idSucursal select c.Nombre).FirstOrDefault(); var sucursal = context.Sucursal.FirstOrDefault(x => x.IdSucursal == idSucursal); List <SucursalesEmpresa> ListaEmpresas = new List <SucursalesEmpresa>(); ReportesDAO rep = new ReportesDAO(); List <int> lista = new List <int>(); List <NOM_Nomina> nominas = new List <NOM_Nomina>(); ReportesDAO banemp = new ReportesDAO(); bool spei, bnte; int CountTotal = 0; if (complemento == false) // pregunta si la sesion esta en modo complemento o no { ListaEmpresas = rep.ListSucursalEmpresaFiscales(idSucursal); // si no esta en modo complemento solo trae el listado de las empresas fiscales } else { if (Periodo.Sindicato == false) // si la sesion esta en modo complemento , pregunta si el periodo es sindicato o no { ListaEmpresas = rep.ListaSucursalesEmpresasConComplemento(idSucursal, Periodo); // si es solo complemento /trae las empresas fiscales y complemento } else { ListaEmpresas = rep.ListaSucursalesEmpresasConSindicato(idSucursal); // si es sindicato trae las empresas fiscales , complemento y sindicato } } var idempelados = rep.GetIdEmpleadosProcesados(Periodo.IdPeriodoPago); if (idempelados == null) { return("No se encontró datos en este periodo"); } var newruta = ValidarFolderUsuario(idusuario, ruta); var nombre = "Dispersion " + cliente + " del Periodo " + Periodo.Descripcion; newruta = newruta + nombre + ".xlsx"; var wb = new XLWorkbook(); foreach (var emp in ListaEmpresas) { List <RegistroEmpleados> pago_efectivo = new List <RegistroEmpleados>(); spei = false; bnte = false; decimal total = 0, totale = 0, totalS = 0, totalB = 0, totalisr = 0; if (Periodo.IdTipoNomina == 16) { nominas = context.NOM_Nomina.Where( x => x.IdPeriodo == Periodo.IdPeriodoPago && x.IdEmpresaAsimilado == emp.IdTabla) .ToList(); } else if (Periodo.SoloComplemento == false && Periodo.Sindicato == false) { nominas = context.NOM_Nomina.Where( x => x.IdPeriodo == Periodo.IdPeriodoPago && (x.IdEmpresaFiscal == emp.IdTabla || x.IdEmpresaComplemento == emp.IdTabla)) .ToList(); } else if (Periodo.SoloComplemento == true) { nominas = context.NOM_Nomina.Where( x => x.IdPeriodo == Periodo.IdPeriodoPago && x.IdEmpresaComplemento == emp.IdTabla) .ToList(); } else if (Periodo.IdTipoNomina == 17 || Periodo.Sindicato == true) { nominas = context.NOM_Nomina.Where( x => x.IdPeriodo == Periodo.IdPeriodoPago && x.IdEmpresaSindicato == emp.IdTabla) .ToList(); } int count = 0; int aux = 1; if (emp.RP != null) { CountTotal = nominas.Count(x => x.IdEmpresaFiscal == emp.IdTabla || x.IdEmpresaAsimilado == emp.IdTabla); } else { CountTotal = nominas.Count( x => x.IdEmpresaComplemento == emp.IdTabla || x.IdEmpresaSindicato == emp.IdTabla); } string[] nombreEmpresa; int i = 7; int j = 0; if (CountTotal >= 0) { if (Periodo.IdTipoNomina == 16) { var lista_idnomina = nominas.Select(x => x.IdNomina).ToList(); totalisr = context.NOM_Nomina_Detalle.Where( x => x.IdConcepto == 43 && lista_idnomina.Contains(x.IdNomina)) .Select(x => x.Total) .Sum(); } nombreEmpresa = emp.Nombre.Split(' '); var nombreHoja = "Dispersion " + nombreEmpresa[0]; if (nombreHoja.Length > 30) { nombreHoja = nombreHoja.Substring(0, 30); } var ws = wb.Worksheets.Add(nombreHoja); ws.Cell("A3").Value = $"{cliente} - {sucursal.Ciudad}"; //mty ws.Cell("A4").Value = emp.Nombre; ws.Cell("A5").Value = "Dispersion"; ws.Cell("A6").Value = FechaIni.ToString("dd-MM-yyyy") + " al " + FechaFin.ToString("dd-MM-yyyy"); foreach (var em in nominas) { var listbank = banemp.datosBancariosByEmpresa(em.IdEmpleado); if (!lista.Contains(listbank.IdBanco)) { lista.Add(listbank.IdBanco); } } List <ListadoBancoEmpleados> listadoRegistros = new List <ListadoBancoEmpleados>(); foreach (var b in lista) { var datos = rep.datosBancoEmpleados(b, nominas, emp.IdTabla); listadoRegistros.Add(datos); } if (emp.RP != null) { foreach (var r in listadoRegistros) { if (r.IdBanco == 2) { if (!bnte) { ws.Cell("A" + i).Value = r.NombreBanco; ws.Range("A" + i + ":E" + i).Merge(); ws.Cell("A" + i) .Style.Alignment.SetHorizontal(XLAlignmentHorizontalValues.Center); ws.Cell("A" + i).Style.Fill.BackgroundColor = XLColor.FromTheme(XLThemeColor.Accent1); i++; ws.Cell("A" + i).Value = "NoSiga"; ws.Cell("A" + i).Style.Fill.BackgroundColor = XLColor.FromTheme(XLThemeColor.Accent1, 0.5); ws.Cell("B" + i).Value = "NOMBRE DEL COLABORADOR"; ws.Cell("B" + i).Style.Fill.BackgroundColor = XLColor.FromTheme(XLThemeColor.Accent1, 0.5); ws.Cell("C" + i).Value = "IMPORTE TOTAL"; ws.Cell("C" + i).Style.Fill.BackgroundColor = XLColor.FromTheme(XLThemeColor.Accent1, 0.5); ws.Cell("D" + i).Value = "Cuenta"; ws.Cell("D" + i).Style.Fill.BackgroundColor = XLColor.FromTheme(XLThemeColor.Accent1, 0.5); ws.Cell("E" + i).Value = "Metodo De Pago"; ws.Cell("E" + i).Style.Fill.BackgroundColor = XLColor.FromTheme(XLThemeColor.Accent1, 0.5); i++; bnte = true; } foreach (var e in r.empleados.OrderBy(x => x.NoSigaF).ThenBy(im => im.Importe)) { if (e.tipocuenta != "Efectivo") { if (e.NoSigaF > 0) { ws.Cell("A" + i).Value = e.NoSigaF; } else { ws.Cell("A" + i).Value = 0; } ws.Cell("B" + i).Value = e.Empleado; ws.Cell("C" + i).Value = Utils.TruncateDecimales(e.Importe); ws.Cell("C" + i).Style.NumberFormat.Format = "$ #,##0.00"; ws.Cell("D" + i).Value = e.cuenta; ws.Cell("D" + i).DataType = XLCellValues.Text; ws.Cell("E" + i).Value = e.tipocuenta; total = total + e.Importe; totalB = totalB + e.Importe; i++; } else { pago_efectivo.Add(e); } } ws.Cell("B" + i).Value = "Suma"; ws.Cell("B" + i).Style.Font.Bold = true; ws.Cell("C" + i).Value = totalB; ws.Cell("C" + i).Style.NumberFormat.Format = "$ #,##0.00"; ws.Cell("C" + i).Style.Font.Bold = true; i++; } else { if (!spei) { ws.Cell("A" + i).Value = "SPEI"; ws.Range("A" + i + ":E" + i).Merge(); ws.Cell("A" + i) .Style.Alignment.SetHorizontal(XLAlignmentHorizontalValues.Center); ws.Cell("A" + i).Style.Fill.BackgroundColor = XLColor.FromTheme(XLThemeColor.Accent1); i++; ws.Cell("A" + i).Value = "NoSiga"; ws.Cell("A" + i).Style.Fill.BackgroundColor = XLColor.FromTheme(XLThemeColor.Accent1, 0.5); ws.Cell("B" + i).Value = "NOMBRE DEL COLABORADOR"; ws.Cell("B" + i).Style.Fill.BackgroundColor = XLColor.FromTheme(XLThemeColor.Accent1, 0.5); ws.Cell("C" + i).Value = "IMPORTE TOTAL"; ws.Cell("C" + i).Style.Fill.BackgroundColor = XLColor.FromTheme(XLThemeColor.Accent1, 0.5); ws.Cell("D" + i).Value = "Cuenta"; ws.Cell("D" + i).Style.Fill.BackgroundColor = XLColor.FromTheme(XLThemeColor.Accent1, 0.5); ws.Cell("E" + i).Value = "Metodo De Pago"; ws.Cell("E" + i).Style.Fill.BackgroundColor = XLColor.FromTheme(XLThemeColor.Accent1, 0.5); i++; spei = true; } foreach (var e in r.empleados.OrderBy(x => x.NoSigaF).ThenBy(im => im.Importe)) { if (e.tipocuenta != "Efectivo") { if (e.NoSigaF > 0) { ws.Cell("A" + i).Value = e.NoSigaF; } else { ws.Cell("A" + i).Value = 0; } ws.Cell("B" + i).Value = e.Empleado; ws.Cell("C" + i).Value = Utils.TruncateDecimales(e.Importe); ws.Cell("C" + i).Style.NumberFormat.Format = "$ #,##0.00"; ws.Cell("D" + i).Value = e.cuenta; ws.Cell("D" + i).DataType = XLCellValues.Text; ws.Cell("E" + i).Value = e.tipocuenta; total = total + e.Importe; totalS = totalS + e.Importe; i++; } else { pago_efectivo.Add(e); } } count++; aux++; } } if (spei) { ws.Cell("B" + i).Value = "Suma"; ws.Cell("B" + i).Style.Font.Bold = true; ws.Cell("C" + i).Value = totalS; ws.Cell("C" + i).Style.NumberFormat.Format = "$ #,##0.00"; ws.Cell("C" + i).Style.Font.Bold = true; } } else { foreach (var r in listadoRegistros) { if (r.IdBanco == 2) { if (!bnte) { ws.Cell("A" + i).Value = r.NombreBanco; ws.Range("A" + i + ":E" + i).Merge(); ws.Cell("A" + i) .Style.Alignment.SetHorizontal(XLAlignmentHorizontalValues.Center); ws.Cell("A" + i).Style.Fill.BackgroundColor = XLColor.FromTheme(XLThemeColor.Accent1); i++; ws.Cell("A" + i).Value = "NoSiga"; ws.Cell("A" + i).Style.Fill.BackgroundColor = XLColor.FromTheme(XLThemeColor.Accent1, 0.5); ws.Cell("B" + i).Value = "NOMBRE DEL COLABORADOR"; ws.Cell("B" + i).Style.Fill.BackgroundColor = XLColor.FromTheme(XLThemeColor.Accent1, 0.5); ws.Cell("C" + i).Value = "IMPORTE TOTAL"; ws.Cell("C" + i).Style.Fill.BackgroundColor = XLColor.FromTheme(XLThemeColor.Accent1, 0.5); ws.Cell("D" + i).Value = "Cuenta"; ws.Cell("D" + i).Style.Fill.BackgroundColor = XLColor.FromTheme(XLThemeColor.Accent1, 0.5); ws.Cell("E" + i).Value = "Metodo De Pago"; ws.Cell("E" + i).Style.Fill.BackgroundColor = XLColor.FromTheme(XLThemeColor.Accent1, 0.5); i++; bnte = true; } foreach (var e in r.empleados.OrderBy(x => x.NoSigaC).ThenBy(im => im.Importe)) { if (e.tipocuenta != "Efectivo") { if (e.NoSigaC > 0) { ws.Cell("A" + i).Value = e.NoSigaC; } else { ws.Cell("A" + i).Value = 0; } ws.Cell("B" + i).Value = e.Empleado; ws.Cell("C" + i).Value = Utils.TruncateDecimales(e.Importe); ws.Cell("C" + i).Style.NumberFormat.Format = "$ #,##0.00"; ws.Cell("D" + i).Value = e.cuenta; ws.Cell("D" + i).DataType = XLCellValues.Text; ws.Cell("E" + i).Value = e.tipocuenta; total = total + e.Importe; totalB = totalB + e.Importe; i++; } else { pago_efectivo.Add(e); } } ws.Cell("B" + i).Value = "Suma"; ws.Cell("B" + i).Style.Font.Bold = true; ws.Cell("C" + i).Value = totalB; ws.Cell("C" + i).Style.NumberFormat.Format = "$ #,##0.00"; ws.Cell("C" + i).Style.Font.Bold = true; i++; } else { if (!spei) { ws.Cell("A" + i).Value = "SPEI"; ws.Range("A" + i + ":E" + i).Merge(); ws.Cell("A" + i) .Style.Alignment.SetHorizontal(XLAlignmentHorizontalValues.Center); ws.Cell("A" + i).Style.Fill.BackgroundColor = XLColor.FromTheme(XLThemeColor.Accent1); i++; ws.Cell("A" + i).Value = "NoSiga"; ws.Cell("A" + i).Style.Fill.BackgroundColor = XLColor.FromTheme(XLThemeColor.Accent1, 0.5); ws.Cell("B" + i).Value = "NOMBRE DEL COLABORADOR"; ws.Cell("B" + i).Style.Fill.BackgroundColor = XLColor.FromTheme(XLThemeColor.Accent1, 0.5); ws.Cell("C" + i).Value = "IMPORTE TOTAL"; ws.Cell("C" + i).Style.Fill.BackgroundColor = XLColor.FromTheme(XLThemeColor.Accent1, 0.5); ws.Cell("D" + i).Value = "Cuenta"; ws.Cell("D" + i).Style.Fill.BackgroundColor = XLColor.FromTheme(XLThemeColor.Accent1, 0.5); ws.Cell("E" + i).Value = "Metodo De Pago"; ws.Cell("E" + i).Style.Fill.BackgroundColor = XLColor.FromTheme(XLThemeColor.Accent1, 0.5); i++; spei = true; } foreach (var e in r.empleados.OrderBy(x => x.NoSigaC).ThenBy(im => im.Importe)) { if (e.tipocuenta != "Efectivo") { if (e.NoSigaC > 0) { ws.Cell("A" + i).Value = e.NoSigaC; } else { ws.Cell("A" + i).Value = 0; } ws.Cell("B" + i).Value = e.Empleado; ws.Cell("C" + i).Value = Utils.TruncateDecimales(e.Importe); ws.Cell("C" + i).Style.NumberFormat.Format = "$ #,##0.00"; ws.Cell("D" + i).Value = e.cuenta; ws.Cell("D" + i).DataType = XLCellValues.Text; ws.Cell("E" + i).Value = e.tipocuenta; total = total + e.Importe; totalS = totalS + e.Importe; i++; } else { pago_efectivo.Add(e); } } aux++; } } if (spei) { ws.Cell("B" + i).Value = "Suma"; ws.Cell("B" + i).Style.Font.Bold = true; ws.Cell("C" + i).Value = totalS; ws.Cell("C" + i).Style.NumberFormat.Format = "$ #,##0.00"; ws.Cell("C" + i).Style.Font.Bold = true; } } ////////////////////////////////////////////////////////////////////////////// i++; ws.Cell("A" + i).Value = "EFECTIVO"; ws.Range("A" + i + ":E" + i).Merge(); ws.Cell("A" + i).Style.Alignment.SetHorizontal(XLAlignmentHorizontalValues.Center); ws.Cell("A" + i).Style.Fill.BackgroundColor = XLColor.FromTheme(XLThemeColor.Accent1); i++; ws.Cell("A" + i).Value = "NoSiga"; ws.Cell("A" + i).Style.Fill.BackgroundColor = XLColor.FromTheme(XLThemeColor.Accent1, 0.5); ws.Cell("B" + i).Value = "NOMBRE DEL COLABORADOR"; ws.Cell("B" + i).Style.Fill.BackgroundColor = XLColor.FromTheme(XLThemeColor.Accent1, 0.5); ws.Cell("C" + i).Value = "IMPORTE TOTAL"; ws.Cell("C" + i).Style.Fill.BackgroundColor = XLColor.FromTheme(XLThemeColor.Accent1, 0.5); ws.Cell("D" + i).Value = "Cuenta"; ws.Cell("D" + i).Style.Fill.BackgroundColor = XLColor.FromTheme(XLThemeColor.Accent1, 0.5); ws.Cell("E" + i).Value = "Metodo De Pago"; ws.Cell("E" + i).Style.Fill.BackgroundColor = XLColor.FromTheme(XLThemeColor.Accent1, 0.5); i++; foreach (var e in pago_efectivo.OrderBy(x => x.NoSigaC).ThenBy(im => im.Importe)) { if (e.NoSigaC > 0) { ws.Cell("A" + i).Value = e.NoSigaC; } else { ws.Cell("A" + i).Value = 0; } ws.Cell("B" + i).Value = e.Empleado; ws.Cell("C" + i).Value = Utils.TruncateDecimales(e.Importe); ws.Cell("C" + i).Style.NumberFormat.Format = "$ #,##0.00"; ws.Cell("D" + i).Value = e.cuenta; ws.Cell("D" + i).DataType = XLCellValues.Text; ws.Cell("E" + i).Value = e.tipocuenta; total = total + e.Importe; totale = totale + e.Importe; i++; } ws.Cell("B" + i).Value = "Suma"; ws.Cell("B" + i).Style.Font.Bold = true; ws.Cell("C" + i).Value = totale; ws.Cell("C" + i).Style.NumberFormat.Format = "$ #,##0.00"; ws.Cell("C" + i).Style.Font.Bold = true; i++; ///////////////////////////////////////////////////// ws.Cell("B" + i).Value = "Total Dispersion:"; ws.Cell("B" + i).Style.Font.Bold = true; ws.Cell("C" + i).Value = total; ws.Cell("C" + i).Style.NumberFormat.Format = "$ #,##0.00"; ws.Cell("C" + i).Style.Font.Bold = true; ws.Cell("C" + i).Style.Font.FontSize = 13; ws.Cell("C" + i).Style.Border.TopBorder = XLBorderStyleValues.Medium; ws.Cell("C" + i).Style.Border.TopBorderColor = XLColor.Black; ///////////////////////////////////////////////////// if (emp.RP != null) { var factura = context.NOM_Facturacion.Where( x => x.IdEmpresaFi_As == emp.IdTabla && x.IdPeriodo == Periodo.IdPeriodoPago) .FirstOrDefault(); if (factura != null) { #region FACTURA i = i + 2; ws.Cell("B" + i).Value = "Relativos"; ws.Range("B" + i + ":F" + i).Merge(); ws.Cell("B" + i).Style .Alignment.SetHorizontal(XLAlignmentHorizontalValues.Center) .Font.SetBold(); i = i + 1; ws.Cell("B" + i).Value = "CUOTAS IMSS E INFONAVIT"; ws.Cell("B" + i).Style .Alignment.SetHorizontal(XLAlignmentHorizontalValues.Left) .Font.SetBold(); ws.Cell("C" + i).Value = factura.F_Cuota_IMSS_Infonavit; ws.Cell("C" + i).Style.NumberFormat.Format = "$ #,##0.00"; i = i + 1; ws.Cell("B" + i).Value = "IMPUESTO SOBRE NOMINAS"; ws.Cell("B" + i).Style .Alignment.SetHorizontal(XLAlignmentHorizontalValues.Left) .Font.SetBold(); ws.Cell("C" + i).Value = factura.F_Impuesto_Nomina; ws.Cell("C" + i).Style.NumberFormat.Format = "$ #,##0.00"; i = i + 1; ws.Cell("B" + i).Value = "AMORTIZACION INFONAVIT"; ws.Cell("B" + i).Style .Alignment.SetHorizontal(XLAlignmentHorizontalValues.Left) .Font.SetBold(); ws.Cell("C" + i).Value = factura.F_Amortizacion_Infonavit; ws.Cell("C" + i).Style.NumberFormat.Format = "$ #,##0.00"; i = i + 1; ws.Cell("B" + i).Style .Alignment.SetHorizontal(XLAlignmentHorizontalValues.Left) .Font.SetBold(); if (Periodo.IdTipoNomina == 16) { ws.Cell("B" + i).Value = "ISR"; ws.Cell("C" + i).Value = totalisr; } else { ws.Cell("B" + i).Value = "FONACOT"; ws.Cell("C" + i).Value = factura.F_Fonacot; } ws.Cell("C" + i).Style.NumberFormat.Format = "$ #,##0.00"; i = i + 1; if (factura.F_Pension_Alimenticia > 0) { ws.Cell("B" + i).Value = "PENSION ALIMENTICIA"; ws.Cell("B" + i).Style .Alignment.SetHorizontal(XLAlignmentHorizontalValues.Left) .Font.SetBold(); ws.Cell("C" + i).Value = factura.F_Pension_Alimenticia; ws.Cell("C" + i).Style.NumberFormat.Format = "$ #,##0.00"; i = i + 1; } ws.Cell("B" + i).Value = "RELATIVO"; ws.Cell("B" + i).Style .Alignment.SetHorizontal(XLAlignmentHorizontalValues.Left) .Font.SetBold(); ws.Cell("C" + i).Value = factura.F_Relativo + totalisr; ws.Cell("C" + i).Style.NumberFormat.Format = "$ #,##0.00"; i = i + 1; ws.Cell("B" + i).Value = "TOTAL PERCEPCIONES"; ws.Cell("B" + i).Style .Alignment.SetHorizontal(XLAlignmentHorizontalValues.Left) .Font.SetBold(); ws.Cell("C" + i).Value = factura.F_Total_Nomina; ws.Cell("C" + i).Style.NumberFormat.Format = "$ #,##0.00"; i = i + 1; ws.Cell("B" + i).Value = "TOTAL NETO"; ws.Cell("B" + i).Style .Alignment.SetHorizontal(XLAlignmentHorizontalValues.Left) .Font.SetBold(); ws.Cell("C" + i).Value = factura.F_Total_Fiscal + totalisr; ws.Cell("C" + i).Style.NumberFormat.Format = "$ #,##0.00"; i = i + 1; #endregion } } else { var factura = context.NOM_FacturacionComplemento.Where( x => x.IdPeriodo == Periodo.IdPeriodoPago && x.IdEmpresaC == emp.IdTabla) .FirstOrDefault(); var facturaS = context.NOM_FacturacionSindicato.Where( x => x.IdPeriodo == Periodo.IdPeriodoPago && x.IdEmpresaS == emp.IdTabla) .FirstOrDefault(); if (factura != null) { #region FACTURA i = i + 2; ws.Cell("B" + i).Value = "FACTURACION"; ws.Range("B" + i + ":F" + i).Merge(); ws.Cell("B" + i).Style .Alignment.SetHorizontal(XLAlignmentHorizontalValues.Center) .Font.SetBold(); i = i + 1; ws.Cell("B" + i).Value = "PERCEPCIONES"; ws.Cell("B" + i).Style .Alignment.SetHorizontal(XLAlignmentHorizontalValues.Left) .Font.SetBold(); ws.Cell("C" + i).Value = factura.C_Percepciones; ws.Cell("C" + i).Style.NumberFormat.Format = "$ #,##0.00"; i = i + 1; ws.Cell("B" + i).Value = "SERVICIOS " + factura.C_Porcentaje_Servicio; ws.Cell("B" + i).Style .Alignment.SetHorizontal(XLAlignmentHorizontalValues.Left) .Font.SetBold(); ws.Cell("C" + i).Value = factura.C_Total_Servicio; ws.Cell("C" + i).Style.NumberFormat.Format = "$ #,##0.00"; i = i + 1; ws.Cell("B" + i).Value = "RELATIVO"; ws.Cell("B" + i).Style .Alignment.SetHorizontal(XLAlignmentHorizontalValues.Left) .Font.SetBold(); ws.Cell("C" + i).Value = factura.C_Relativos; ws.Cell("C" + i).Style.NumberFormat.Format = "$ #,##0.00"; i = i + 1; ws.Cell("B" + i).Value = "DESCUENTOS"; ws.Cell("B" + i).Style .Alignment.SetHorizontal(XLAlignmentHorizontalValues.Left) .Font.SetBold(); ws.Cell("C" + i).Value = factura.C_Descuentos; ws.Cell("C" + i).Style.NumberFormat.Format = "$ #,##0.00"; i = i + 1; ws.Cell("B" + i).Value = "OTROS"; ws.Cell("B" + i).Style .Alignment.SetHorizontal(XLAlignmentHorizontalValues.Left) .Font.SetBold(); ws.Cell("C" + i).Value = factura.C_Otros; ws.Cell("C" + i).Style.NumberFormat.Format = "$ #,##0.00"; i = i + 1; ws.Cell("B" + i).Value = "SUBTOTAL"; ws.Cell("B" + i).Style .Alignment.SetHorizontal(XLAlignmentHorizontalValues.Left) .Font.SetBold(); ws.Cell("C" + i).Value = factura.C_Subtotal; ws.Cell("C" + i).Style.NumberFormat.Format = "$ #,##0.00"; i = i + 1; ws.Cell("B" + i).Value = "IVA"; ws.Cell("B" + i).Style .Alignment.SetHorizontal(XLAlignmentHorizontalValues.Left) .Font.SetBold(); ws.Cell("C" + i).Value = factura.C_Total_IVA; ws.Cell("C" + i).Style.NumberFormat.Format = "$ #,##0.00"; i = i + 1; ws.Cell("B" + i).Value = "TOTAL NETO"; ws.Cell("B" + i).Style .Alignment.SetHorizontal(XLAlignmentHorizontalValues.Left) .Font.SetBold(); ws.Cell("C" + i).Value = factura.C_Total_Complemento; ws.Cell("C" + i).Style.NumberFormat.Format = "$ #,##0.00"; i = i + 1; #endregion } else if (facturaS != null) // facturacion de sindicato { #region FACTURA S i = i + 2; ws.Cell("B" + i).Value = "FACTURACION"; ws.Range("B" + i + ":F" + i).Merge(); ws.Cell("B" + i).Style .Alignment.SetHorizontal(XLAlignmentHorizontalValues.Center) .Font.SetBold(); i = i + 1; ws.Cell("B" + i).Value = "PERCEPCIONES SINDICATO"; ws.Cell("B" + i).Style .Alignment.SetHorizontal(XLAlignmentHorizontalValues.Left) .Font.SetBold(); ws.Cell("C" + i).Value = facturaS.S_Percepcion_Sindicato; ws.Cell("C" + i).Style.NumberFormat.Format = "$ #,##0.00"; i = i + 1; ws.Cell("B" + i).Value = "SERVICIOS " + facturaS.S_Porcentaje_Comision; ws.Cell("B" + i).Style .Alignment.SetHorizontal(XLAlignmentHorizontalValues.Left) .Font.SetBold(); ws.Cell("C" + i).Value = facturaS.S_Total_Comision; ws.Cell("C" + i).Style.NumberFormat.Format = "$ #,##0.00"; i = i + 1; ws.Cell("B" + i).Value = "PERCEPCIONES FISCAL"; ws.Cell("B" + i).Style .Alignment.SetHorizontal(XLAlignmentHorizontalValues.Left) .Font.SetBold(); ws.Cell("C" + i).Value = facturaS.S_Percepcion_Fiscal; ws.Cell("C" + i).Style.NumberFormat.Format = "$ #,##0.00"; i = i + 1; ws.Cell("B" + i).Value = "IVA PERCEPCION FISCAL"; ws.Cell("B" + i).Style .Alignment.SetHorizontal(XLAlignmentHorizontalValues.Left) .Font.SetBold(); ws.Cell("C" + i).Value = facturaS.S_IVA_Percepcion_Fiscal; ws.Cell("C" + i).Style.NumberFormat.Format = "$ #,##0.00"; i = i + 1; ws.Cell("B" + i).Value = "DIFERENCIA EMPRESA"; ws.Cell("B" + i).Style .Alignment.SetHorizontal(XLAlignmentHorizontalValues.Left) .Font.SetBold(); ws.Cell("C" + i).Value = facturaS.S_Dif_Montvde; ws.Cell("C" + i).Style.NumberFormat.Format = "$ #,##0.00"; i = i + 1; ws.Cell("B" + i).Value = "CUOTA LEGADO"; ws.Cell("B" + i).Style .Alignment.SetHorizontal(XLAlignmentHorizontalValues.Left) .Font.SetBold(); ws.Cell("C" + i).Value = facturaS.S_Cuota_Legado; ws.Cell("C" + i).Style.NumberFormat.Format = "$ #,##0.00"; i = i + 1; ws.Cell("B" + i).Value = "COSTO IMSS"; ws.Cell("B" + i).Style .Alignment.SetHorizontal(XLAlignmentHorizontalValues.Left) .Font.SetBold(); ws.Cell("C" + i).Value = facturaS.S_Costo_IMSS; ws.Cell("C" + i).Style.NumberFormat.Format = "$ #,##0.00"; i = i + 1; ws.Cell("B" + i).Value = "IVA COSTO IMSS"; ws.Cell("B" + i).Style .Alignment.SetHorizontal(XLAlignmentHorizontalValues.Left) .Font.SetBold(); ws.Cell("C" + i).Value = facturaS.S_IVA_Costo_IMSS; ws.Cell("C" + i).Style.NumberFormat.Format = "$ #,##0.00"; i = i + 1; ws.Cell("B" + i).Value = "IMPUESTO SOBRE NOMINA"; ws.Cell("B" + i).Style .Alignment.SetHorizontal(XLAlignmentHorizontalValues.Left) .Font.SetBold(); ws.Cell("C" + i).Value = facturaS.S_Total_Porcentaje_Nomina; ws.Cell("C" + i).Style.NumberFormat.Format = "$ #,##0.00"; i = i + 1; ws.Cell("B" + i).Value = "IVA IMPUESTO SOBRE NOMINA"; ws.Cell("B" + i).Style .Alignment.SetHorizontal(XLAlignmentHorizontalValues.Left) .Font.SetBold(); ws.Cell("C" + i).Value = facturaS.S_IVA_Porcentaje_Nomina; ws.Cell("C" + i).Style.NumberFormat.Format = "$ #,##0.00"; i = i + 1; ws.Cell("B" + i).Value = "TOTAL FACTURA"; ws.Cell("B" + i).Style .Alignment.SetHorizontal(XLAlignmentHorizontalValues.Left) .Font.SetBold(); ws.Cell("C" + i).Value = facturaS.S_Total_Sindicato; ws.Cell("C" + i).Style.NumberFormat.Format = "$ #,##0.00"; i = i + 1; #endregion } } //ESTILOS DE LAS CELDAS #region ESTILOS ws.Range("A3:E3").Merge(); ws.Cell("A3").Style .Alignment.SetHorizontal(XLAlignmentHorizontalValues.Center) .Font.SetBold(); ws.Range("A4:E4").Merge(); ws.Cell("A4").Style .Alignment.SetHorizontal(XLAlignmentHorizontalValues.Center) .Font.SetBold(); ws.Range("A5:E5").Merge(); ws.Cell("A5").Style.Alignment.SetHorizontal(XLAlignmentHorizontalValues.Center); ws.Range("A6:E6").Merge(); ws.Cell("A6").Style.Alignment.SetHorizontal(XLAlignmentHorizontalValues.Center); ws.Columns("8,1").AdjustToContents(); ws.Columns("8,2").AdjustToContents(); ws.Columns("8,3").AdjustToContents(); ws.Columns("8,4").AdjustToContents(); ws.Columns("8,5").AdjustToContents(); #endregion } } wb.SaveAs(newruta); //Guardar como, y aqui ponemos la ruta de nuestro archivo return(newruta); } }
public List <EmpleadoIncidencias> GetIncidenciasByPeriodo(NOM_PeriodosPago ppago, int[] idEmpleados = null) { int[] empleadosArray; //Generar Array de IdEmpleados if (idEmpleados == null) { //Obtiene el id de todos los empleados que estan asignado al periodo empleadosArray = ctx.NOM_Empleado_PeriodoPago.Where(x => x.IdPeriodoPago == ppago.IdPeriodoPago) .Select(x => x.IdEmpleado) .ToArray(); } else { //id de empleados especificos empleadosArray = idEmpleados; } //var empleados = ctx.NOM_Empleado_PeriodoPago.Where(x => x.IdPeriodoPago == ppago.IdPeriodoPago).ToList(); var lista = new List <EmpleadoIncidencias>(); Periodo = ppago; Empleados emp = new Empleados(); foreach (var item in empleadosArray) { IncXEmpleado = new List <Incidencia>(); IdEmpleado = item; // string nombreEmpleado = emp.GetNombreCompleto(IdEmpleado); NumDias = Periodo.DiasPeriodo; var empComp = ctx.Empleado.FirstOrDefault(x => x.IdEmpleado == item); EmpleadoIncidencias empIn = new EmpleadoIncidencias(); empIn.IdEmpleado = IdEmpleado; //empIn.NombreEmpleado = nombreEmpleado; empIn.Paterno = empComp.APaterno; empIn.Materno = empComp.AMaterno; empIn.Nombres = empComp.Nombres; var fecha = Periodo.Fecha_Inicio; while (fecha <= Periodo.Fecha_Fin) { var inc = new Incidencia { Fecha = fecha, TipoIncidencia = "X", SePaga = true }; IncXEmpleado.Add(inc); //incrementa la fecha en uno fecha = fecha.AddDays(1); } //GetDiasFestivos(); GetDiasDescanso(); //GetVacaciones(); //GetPermisos(); //GetInasistencias(); //GetIncapacidades(); GetNuevoIngreso(); GetBajas(); empIn.Incidencias = IncXEmpleado; empIn.DiasAPagar = NumDias; empIn.idPeriodo = Periodo.IdPeriodoPago; lista.Add(empIn); } return(lista); }
/// <summary> /// Prestamo Infonavit = 25 /// </summary> /// <param name="nomina"></param> /// <param name="periodoPago"></param> /// <returns></returns> public static NOM_Nomina_Detalle PrestamoInfonavit(NOM_Nomina nomina, NOM_PeriodosPago periodoPago, int dias) { return(CalculoDeInfonavit(nomina, periodoPago, dias)); }
//private void GetVacaciones() //{ // var vacaciones = (from v in ctx.Vacaciones // join pv in ctx.PeriodoVacaciones on v.IdPeridoVacaciones equals pv.IdPeridoVacaciones // join con in ctx.Empleado_Contrato on pv.IdEmpleado_Contrato equals con.IdContrato // where con.IdEmpleado == IdEmpleado && // ((v.FechaInicio >= Periodo.Fecha_Inicio && v.FechaInicio <= Periodo.Fecha_Fin) || (v.FechaFin >= Periodo.Fecha_Inicio && v.FechaFin <= Periodo.Fecha_Fin)) // select v // ).ToList(); // foreach (var vacacion in vacaciones) // { // SetIncidencias(vacacion.FechaInicio, vacacion.FechaFin, "V", vacacion.Id); // } //} private void GetVacaciones2(List <Vacaciones> listaV, List <PeriodoVacaciones> listaPV, List <Empleado_Contrato> listaC, NOM_PeriodosPago periodoP, int idEmpleado) { var listaVac = (from v in listaV join pv in listaPV on v.IdPeridoVacaciones equals pv.IdPeridoVacaciones join con in listaC on pv.IdEmpleado_Contrato equals con.IdContrato where con.IdEmpleado == idEmpleado && //((v.FechaInicio >= periodoP.Fecha_Inicio && v.FechaInicio <= periodoP.Fecha_Fin) || (v.FechaFin >= periodoP.Fecha_Inicio && v.FechaFin <= periodoP.Fecha_Fin)) //((periodoP.Fecha_Inicio >= v.FechaInicio && periodoP.Fecha_Inicio <= v.FechaFin)||(periodoP.Fecha_Fin >= v.FechaInicio && periodoP.Fecha_Fin <= v.FechaFin)) ((periodoP.Fecha_Inicio >= v.FechaInicio && periodoP.Fecha_Inicio <= v.FechaFin) || (periodoP.Fecha_Fin >= v.FechaInicio)) select v).ToList(); foreach (var vacacion in listaVac) { var dias = Utils.GetDiasByPeriodoRange(vacacion.FechaInicio, vacacion.FechaFin, periodoP.Fecha_Inicio, periodoP.Fecha_Fin); if (dias > 0) { SetIncidencias(vacacion.FechaInicio, vacacion.FechaFin, "V", vacacion.Id, pagarDia: true); } } }
public void UpdatePeriodoPago(NOM_PeriodosPago updatedModel) { PeriodosPago p = new PeriodosPago(); p.UpdatePeriodoPago(updatedModel); }
private void GetInasistencias2Nominas(List <Inasistencias> listaInasistenciasNomina, int idEmpleado, int diasDelPeriodo, NOM_PeriodosPago periodoP) { var inas = listaInasistenciasNomina.Where(x => x.IdEmpleado == idEmpleado).ToList(); foreach (var inasistencia in inas) { var tipoInasistencia = ctx.C_TiposInasistencia.FirstOrDefault(x => x.IdTipoInasistencia == inasistencia.IdTipoInasistencia); if (!tipoInasistencia.DerechoPago) { if (inasistencia.FechaFin != null) { var dias = Utils.GetDiasByPeriodoRange(inasistencia.Fecha, inasistencia.FechaFin.Value.Date, periodoP.Fecha_Inicio, periodoP.Fecha_Fin); //if (dias > 0) //{ // NumDias = NumDias - inasistencia.Dias; //SetIncidencias(inasistencia.Fecha, inasistencia.FechaFin.Value.Date, tipoInasistencia.Clave, inasistencia.IdInasistencia, pagarDia: false); if (SetIncidenciasInasistencia(inasistencia.Fecha, inasistencia.FechaFin.Value.Date, tipoInasistencia.Clave, inasistencia.IdInasistencia, derechoPago: false)) { if (dias > 0) { NumDias = NumDias - inasistencia.Dias; } } // } } } else { //Valida si esa fecha ya la tiene como asistencia // si lo tiene como falta lo cambia a asistencia e incrementa los dias if (SetIncidenciasInasistencia(inasistencia.Fecha, inasistencia.FechaFin.Value.Date, tipoInasistencia.Clave, inasistencia.IdInasistencia, derechoPago: true)) { NumDias = NumDias + inasistencia.Dias; } } } //Esto es para el caso que si RH agrego como faltas //Pero nomina agrega las mismas fechas pero como asistencias if (NumDias > diasDelPeriodo) { NumDias = diasDelPeriodo; } }
/// <summary> /// Prestamo Fonacot = 26 /// </summary> /// <param name="nomina"></param> /// <returns></returns> public static List <NOM_Nomina_Detalle> PrestamoFonacot(NOM_Nomina nomina, NOM_PeriodosPago periodoPago) { return(CalculoDeFonacot(nomina, periodoPago)); }
//private void GetIncapacidades() //{ // var incapacidades = ctx.Incapacidades.Where(x => x.IdEmpleado == IdEmpleado && // ((x.FechaInicio >= Periodo.Fecha_Inicio && x.FechaInicio <= Periodo.Fecha_Fin) || (x.FechaFin >= Periodo.Fecha_Inicio && x.FechaFin <= Periodo.Fecha_Fin)) // ).ToList(); // foreach (var incapacidad in incapacidades) // { // if (incapacidad.IdIncapacidadesSat == 1) // { // SetIncidencias(incapacidad.FechaInicio, incapacidad.FechaFin, "IR", incapacidad.Id, isIncapaciodad: true); // } // else if (incapacidad.IdIncapacidadesSat == 2) // { // SetIncidencias(incapacidad.FechaInicio, incapacidad.FechaFin, "IE", incapacidad.Id, isIncapaciodad: true); // } // else // { // SetIncidencias(incapacidad.FechaInicio, incapacidad.FechaFin, "IM", incapacidad.Id, isIncapaciodad: true); // } // } //} private void GetIncapacidades2(List <Incapacidades> listaIncapacidades, int idEmpleado, NOM_PeriodosPago periodosPago) { var incapacidades = listaIncapacidades.Where(x => x.IdEmpleado == idEmpleado).ToList(); foreach (var incapacidad in incapacidades) { if (incapacidad.IdIncapacidadesSat == 1) { var dias = Utils.GetDiasByPeriodoRange(incapacidad.FechaInicio, incapacidad.FechaFin, periodosPago.Fecha_Inicio, periodosPago.Fecha_Fin); if (dias > 0) { NumDias -= dias; SetIncidencias(incapacidad.FechaInicio, incapacidad.FechaFin, "IR", incapacidad.Id, isIncapaciodad: true, pagarDia: false); } } else if (incapacidad.IdIncapacidadesSat == 2) { var dias = Utils.GetDiasByPeriodoRange(incapacidad.FechaInicio, incapacidad.FechaFin, periodosPago.Fecha_Inicio, periodosPago.Fecha_Fin); if (dias > 0) { NumDias -= dias; SetIncidencias(incapacidad.FechaInicio, incapacidad.FechaFin, "IE", incapacidad.Id, isIncapaciodad: true, pagarDia: false); } } else { var dias = Utils.GetDiasByPeriodoRange(incapacidad.FechaInicio, incapacidad.FechaFin, periodosPago.Fecha_Inicio, periodosPago.Fecha_Fin); if (dias > 0) { NumDias -= dias; SetIncidencias(incapacidad.FechaInicio, incapacidad.FechaFin, "IM", incapacidad.Id, isIncapaciodad: true, pagarDia: false); } } } }
public List <EmpleadoIncidencias> GetIncidenciasByPeriodo2(NOM_PeriodosPago ppago, int[] idEmpleados = null) { int[] empleadosArray; //Generar Array de IdEmpleados if (idEmpleados == null) { //Obtiene el id de todos los empleados que estan asignado al periodo using (var context = new RHEntities()) { empleadosArray = context.NOM_Empleado_PeriodoPago.Where(x => x.IdPeriodoPago == ppago.IdPeriodoPago) .Select(x => x.IdEmpleado) .ToArray(); } } else { //id de empleados especificos empleadosArray = idEmpleados; } var lista = new List <EmpleadoIncidencias>(); Periodo = ppago; Empleados emp = new Empleados(); //GET - Lista Empleados List <Empleado> listaEmpleados = new List <Empleado>(); List <C_DiasFestivos> listaDiasFestivos = new List <C_DiasFestivos>(); List <Empleado_Contrato> listaContratos = new List <Empleado_Contrato>(); List <Vacaciones> listaVacaciones = new List <Vacaciones>(); List <PeriodoVacaciones> listaPeriodoVacaciones = new List <PeriodoVacaciones>(); List <Permisos> listaPermisos = new List <Permisos>(); List <Inasistencias> listaInasistenciasNominas = new List <Inasistencias>(); List <Inasistencias> listaInasistenciasRH = new List <Inasistencias>(); List <Incapacidades> listaIncapacidades = new List <Incapacidades>(); using (var context = new RHEntities()) { listaEmpleados = (from e in context.Empleado where empleadosArray.Contains(e.IdEmpleado) select e).ToList(); listaContratos = (from c in context.Empleado_Contrato where empleadosArray.Contains(c.IdEmpleado) select c).ToList(); // listaDiasFestivos = context.C_DiasFestivos.Where(x => x.Fecha >= Periodo.Fecha_Inicio && x.Fecha <= Periodo.Fecha_Fin).ToList(); listaDiasFestivos = context.C_DiasFestivos.Where(x => Periodo.Fecha_Inicio >= x.Fecha && Periodo.Fecha_Inicio <= x.Fecha).ToList(); //Lista Vacaciones listaVacaciones = (from v in context.Vacaciones //where ((v.FechaInicio >= ppago.Fecha_Inicio && v.FechaInicio <= ppago.Fecha_Fin) || (v.FechaFin >= ppago.Fecha_Inicio && v.FechaFin <= ppago.Fecha_Fin)) // where ((ppago.Fecha_Inicio >= v.FechaInicio && ppago.Fecha_Inicio <= v.FechaFin) || (ppago.Fecha_Fin >= v.FechaInicio && ppago.Fecha_Fin <= v.FechaFin)) where ((ppago.Fecha_Inicio >= v.FechaInicio && ppago.Fecha_Inicio <= v.FechaFin) || (ppago.Fecha_Fin >= v.FechaInicio)) select v).ToList(); //Lista Periodo vacaciones listaPeriodoVacaciones = (from pv in context.PeriodoVacaciones // join c in listaContratos on pv.IdEmpleado_Contrato equals c.IdContrato select pv).ToList(); //Lista Permisos listaPermisos = (from per in context.Permisos where empleadosArray.Contains(per.IdEmpleado) //&& ((per.FechaInicio >= ppago.Fecha_Inicio && per.FechaInicio <= ppago.Fecha_Fin) || (per.FechaFin >= ppago.Fecha_Inicio && per.FechaFin <= ppago.Fecha_Fin)) //&& ((ppago.Fecha_Inicio >= per.FechaInicio && ppago.Fecha_Inicio <= per.FechaFin)||(ppago.Fecha_Fin >= per.FechaInicio && ppago.Fecha_Fin <= per.FechaFin)) && ((ppago.Fecha_Inicio >= per.FechaInicio && ppago.Fecha_Inicio <= per.FechaFin) || (ppago.Fecha_Fin >= per.FechaInicio)) select per).ToList(); //ListaInasistencias listaInasistenciasNominas = (from inaNom in context.Inasistencias where empleadosArray.Contains(inaNom.IdEmpleado) && inaNom.idPeriodo == ppago.IdPeriodoPago //&& ((inaNom.Fecha >= ppago.Fecha_Inicio && inaNom.Fecha <= ppago.Fecha_Fin) || (inaNom.FechaFin >= ppago.Fecha_Inicio && inaNom.FechaFin <= ppago.Fecha_Fin)) //&& ((ppago.Fecha_Inicio >= inaNom.Fecha && ppago.Fecha_Inicio <= inaNom.Fecha) || (ppago.Fecha_Fin >= inaNom.Fecha && ppago.Fecha_Fin <= inaNom.Fecha)) && ((ppago.Fecha_Inicio >= inaNom.Fecha && ppago.Fecha_Inicio <= inaNom.Fecha) || (ppago.Fecha_Fin >= inaNom.Fecha)) select inaNom).ToList(); listaInasistenciasRH = (from inaRh in context.Inasistencias where empleadosArray.Contains(inaRh.IdEmpleado) && inaRh.idPeriodo == 0 //&& ((inaRh.Fecha >= ppago.Fecha_Inicio && inaRh.Fecha <= ppago.Fecha_Fin) || (inaRh.FechaFin >= ppago.Fecha_Inicio && inaRh.FechaFin <= ppago.Fecha_Fin)) //&& ((ppago.Fecha_Inicio >= inaRh.Fecha && ppago.Fecha_Inicio <= inaRh.Fecha)||(ppago.Fecha_Fin >= inaRh.Fecha && ppago.Fecha_Fin <= inaRh.Fecha)) && ((ppago.Fecha_Inicio >= inaRh.Fecha && ppago.Fecha_Inicio <= inaRh.Fecha) || (ppago.Fecha_Fin >= inaRh.Fecha)) select inaRh).ToList(); listaIncapacidades = (from inca in context.Incapacidades where empleadosArray.Contains(inca.IdEmpleado) //&& ((inca.FechaInicio >= ppago.Fecha_Inicio && inca.FechaInicio <= ppago.Fecha_Fin) || (inca.FechaFin >= ppago.Fecha_Inicio && inca.FechaFin <= ppago.Fecha_Fin)) //&& ((ppago.Fecha_Inicio >= inca.FechaInicio && ppago.Fecha_Inicio <= inca.FechaFin)||(ppago.Fecha_Fin >= inca.FechaInicio && ppago.Fecha_Fin <= inca.FechaFin)) && ((ppago.Fecha_Inicio >= inca.FechaInicio && ppago.Fecha_Inicio <= inca.FechaFin) || (ppago.Fecha_Fin >= inca.FechaInicio)) select inca).ToList(); } foreach (var item in empleadosArray) { NumDias = Periodo.DiasPeriodo; IncXEmpleado = new List <Incidencia>(); IdEmpleado = item; var empComp = listaEmpleados.FirstOrDefault(x => x.IdEmpleado == item); //var empComp = ctx.Empleado.FirstOrDefault(x => x.IdEmpleado == item); if (empComp == null) { continue; } EmpleadoIncidencias empIn = new EmpleadoIncidencias(); empIn.IdEmpleado = IdEmpleado; //empIn.NombreEmpleado = nombreEmpleado; empIn.Paterno = empComp.APaterno; empIn.Materno = empComp.AMaterno; empIn.Nombres = empComp.Nombres; var fecha = Periodo.Fecha_Inicio; while (fecha <= Periodo.Fecha_Fin) { var inc = new Incidencia { Fecha = fecha, TipoIncidencia = "X", SePaga = true }; IncXEmpleado.Add(inc); //incrementa la fecha en uno fecha = fecha.AddDays(1); } GetDiasFestivos2(listaDiasFestivos, ppago); GetVacaciones2(listaVacaciones, listaPeriodoVacaciones, listaContratos, ppago, item); GetPermisos2(listaPermisos, item, ppago); GetInasistencias2Rh(listaInasistenciasRH, item, Periodo.DiasPeriodo, ppago); GetDiasDescanso2(listaContratos, item); GetIncapacidades2(listaIncapacidades, item, ppago); GetNuevoIngreso2(listaContratos, item); GetDiasDeBajaDelEmpleado(listaContratos, item); GetInasistencias2Nominas(listaInasistenciasNominas, item, Periodo.DiasPeriodo, ppago); empIn.Incidencias = IncXEmpleado; empIn.DiasAPagar = NumDias; empIn.idPeriodo = Periodo.IdPeriodoPago; lista.Add(empIn); } return(lista); }