public JsonResult EliminarDescansoMedico(HorasTrabajadas obj) { var bussingLogic = new GP.BusinessLogic.BLHorasTrabajadas(); var response = bussingLogic.EliminarDescansoMedico(obj); return(Json(response)); }
public Response <int> EliminarDescansoMedico(HorasTrabajadas obj) { try { var result = repository.EliminarDescansoMedico(obj); return(new Response <int>(result)); } catch (Exception ex) { return(new Response <int>(ex)); } }
private void AddDoubleHours(int id, float h, DateTime dt) { var EmployeeDobleHours = Dobles.Where(x => x.ID == id).FirstOrDefault(); if (EmployeeDobleHours == null) { HorasTrabajadas ht = new HorasTrabajadas(id, h, dt); Dobles.Add(ht); } else { EmployeeDobleHours.HorasT += h; } }
public int EliminarDescansoMedico(HorasTrabajadas obj) { using (var connection = Factory.ConnectionFactory()) { connection.Open(); var parm = new DynamicParameters(); parm.Add("@Horas_Trabajadas_Id", obj.Horas_Trabajadas_Id); var result = connection.Execute( sql: "sp_Eliminar_Descanso_Medico", param: parm, commandType: CommandType.StoredProcedure); return(result); } }
private float AddOT(int id, float h, DateTime dt) { #region Monday to Thursday if (dt.DayOfWeek != DayOfWeek.Friday && dt.DayOfWeek != DayOfWeek.Saturday) { if (h > 9) { float delta = h - 9; var EmployeeExtras = Extras.Where(x => x.ID == id).FirstOrDefault(); if (EmployeeExtras == null) { HorasTrabajadas ht = new HorasTrabajadas(id, delta, dt); Extras.Add(ht); } else { #region Horas extras > 24hrs float tempTime = EmployeeExtras.HorasT + delta; if (tempTime > 24) { float delta2 = tempTime - 24; EmployeeExtras.HorasT = 24; AddDoubleHours(id, delta2, dt); } #endregion else { EmployeeExtras.HorasT += delta; } } h = 9; } } #endregion #region Saturday else if (dt.DayOfWeek == DayOfWeek.Saturday) { var EmployeeExtras = Extras.Where(x => x.ID == id).FirstOrDefault(); if (EmployeeExtras == null) { HorasTrabajadas ht = new HorasTrabajadas(id, h, dt); Extras.Add(ht); } else { #region Horas extras > 24hrs float tempTime = EmployeeExtras.HorasT + h; if (tempTime > 24) { float delta2 = tempTime - 24; EmployeeExtras.HorasT = 24; AddDoubleHours(id, delta2, dt); } #endregion else { EmployeeExtras.HorasT += h; } } } #endregion #region Friday else { if (h > 8) { float delta = h - 8; var EmployeeExtras = Extras.Where(x => x.ID == id).FirstOrDefault(); if (EmployeeExtras == null) { HorasTrabajadas ht = new HorasTrabajadas(id, delta, dt); Extras.Add(ht); } else { #region Horas extras > 24hrs float tempTime = EmployeeExtras.HorasT + delta; if (tempTime > 24) { float delta2 = tempTime - 24; EmployeeExtras.HorasT = 24; AddDoubleHours(id, delta2, dt); } #endregion else { EmployeeExtras.HorasT += delta; } } h = 8; } } #endregion return(h); }
public void Horas(int ID) { string Fecha1 = PrimeraFecha; string Fecha2 = SegundaFecha; TimeSpan dias = DateTime.Parse(Fecha2) - DateTime.Parse(Fecha1); for (int i = 0; dias.Days >= i; i++) { #region Local variables DateTime NuevaFecha = DateTime.Parse(Fecha1); NuevaFecha = NuevaFecha.AddDays(i); #region Dia feriado pa to el mundo if (metodos.EsDiaFeriado(NuevaFecha.ToShortDateString())) { float th = 9; if (NuevaFecha.DayOfWeek == DayOfWeek.Friday) { th = 8; } var EmployeeHours = WorkedTime.Where(x => x.ID == ID).FirstOrDefault(); if (EmployeeHours == null) { HorasTrabajadas ht = new HorasTrabajadas(ID, th, NuevaFecha); WorkedTime.Add(ht); } else { EmployeeHours.HorasT += th; } var DayExist = DayHours.Where(x => x.ID == ID && x.Fecha.ToShortDateString().Equals(NuevaFecha.ToShortDateString())).FirstOrDefault(); if (DayExist == null) { HorasTrabajadas dh = new HorasTrabajadas(ID, th, NuevaFecha); DayHours.Add(dh); } } #endregion DataTable UsuariosSeleccionados = metodos.HorasTrabajadasEmpleados(ID, NuevaFecha.ToShortDateString()); int count = UsuariosSeleccionados.Rows.Count; //TimeSpan horasT = new TimeSpan(); //no used anymore #endregion #region Ponches de menos de 2 minutos //another for, a neccesary evil for (int Z = 0; Z < count; Z++) // removes checktimes with less than 2 minutes timespan { if ((Z + 1) < count) { DateTime dateFrom = DateTime.Parse(UsuariosSeleccionados.Rows[Z]["CHECKTIME"].ToString()); DateTime dateTo = DateTime.Parse(UsuariosSeleccionados.Rows[Z + 1]["CHECKTIME"].ToString()); if ((dateTo - dateFrom).TotalMinutes < 2) { UsuariosSeleccionados.Rows.RemoveAt(Z + 1); count--; } } } #endregion int ret = 0; Math.DivRem(count, 2, out ret); #region Ponches huerfanos if (ret != 0) { DataRow r = UsuariosSeleccionados.NewRow(); r["USERID"] = UsuariosSeleccionados.Rows[count - 1]["USERID"]; r["CHECKTIME"] = UsuariosSeleccionados.Rows[count - 1]["CHECKTIME"]; UsuariosSeleccionados.Rows.Add(r); UsuariosSeleccionados.AcceptChanges(); //ponche huerfano } #endregion #region La suma //sums stuff up for (int Z = 0; Z < count; Z += 2) { if ((Z + 1) < count) { DateTime dateFrom = DateTime.Parse(UsuariosSeleccionados.Rows[Z]["CHECKTIME"].ToString()); DateTime dateTo = DateTime.Parse(UsuariosSeleccionados.Rows[Z + 1]["CHECKTIME"].ToString()); //horasT = (horasT + (dateTo.TimeOfDay - dateFrom.TimeOfDay)); //horasT = (horasT + (dateFrom.TimeOfDay - dateTo.TimeOfDay)); TimeSpan ts = (dateTo.TimeOfDay - dateFrom.TimeOfDay); //añadimos las horas separadas ya que estas seran divididas en dayHours y WorkedTime AddHoras(ID, NuevaFecha.ToShortDateString(), ts.ToString()); // tambien siempre es bueno mantener las tandas separadas, las tandas estaran guardadas en horasTrabajadas } } #endregion //AddHoras(ID, NuevaFecha.ToShortDateString(), horasT.ToString()); } }
private void AddHoras(int id, string fecha, string horas) { #region Tandas por cada empleado if (!metodos.EsDiaFeriado(fecha)) { DataRow r = horasTrabajadas.NewRow(); r["ID"] = id; r["Fecha"] = fecha; r["horasT"] = horas; horasTrabajadas.Rows.Add(r); horasTrabajadas.AcceptChanges(); } #endregion DateTime dt = DateTime.Parse(fecha); float th = (float)TimeSpan.Parse(horas).TotalHours; #region Day of the week if (dt.DayOfWeek != DayOfWeek.Saturday && dt.DayOfWeek != DayOfWeek.Sunday) { #region Display day hours HorasTrabajadas dhwoad = new HorasTrabajadas(id, th, dt); DayHoursWithOverTimeAndDobles.Add(dhwoad); #endregion #region Dias Feriados if (metodos.EsDiaFeriado(fecha)) { var EmployeeDobleHours = Dobles.Where(x => x.ID == id).FirstOrDefault(); if (EmployeeDobleHours == null) { HorasTrabajadas ht = new HorasTrabajadas(id, th, dt); Dobles.Add(ht); } else { EmployeeDobleHours.HorasT += th; } } #endregion #region Total de horas por empleado if (!metodos.EsDiaFeriado(fecha)) { var EmployeeHours = WorkedTime.Where(x => x.ID == id).FirstOrDefault(); if (EmployeeHours == null) { HorasTrabajadas ht = new HorasTrabajadas(id, th, dt); WorkedTime.Add(ht); } else { EmployeeHours.HorasT += th; } } #endregion #region Total de horas diarias por empleados if (!metodos.EsDiaFeriado(fecha)) { var DayExist = DayHours.Where(x => x.ID == id && x.Fecha.ToShortDateString().Equals(dt.ToShortDateString())).FirstOrDefault(); var LaHoraVacana = horaVacana.Where(x => x.ID == id).FirstOrDefault(); if (DayExist != null) { float h = DayExist.HorasT + th; #region TheOverTime //if (dt.DayOfWeek != DayOfWeek.Friday) //{ // if (h > 9) // { // float delta = h - 9; // var EmployeeExtras = Extras.Where(x => x.ID == id).FirstOrDefault(); // if (EmployeeExtras == null) // { // HorasTrabajadas ht = new HorasTrabajadas(id, delta, dt); // Extras.Add(ht); // } // else // { // EmployeeExtras.HorasT += delta; // } // h = 9; // } //} //else //{ // if (h > 8) // { // float delta = h - 8; // var EmployeeExtras = Extras.Where(x => x.ID == id).FirstOrDefault(); // if (EmployeeExtras == null) // { // HorasTrabajadas ht = new HorasTrabajadas(id, delta, dt); // Extras.Add(ht); // } // else // { // EmployeeExtras.HorasT += delta; // } // h = 8; // } //} #endregion h = AddOT(id, h, dt); DayExist.HorasT = h; if (LaHoraVacana != null) { LaHoraVacana.HorasT += h; } else { HorasTrabajadas hv = new HorasTrabajadas(id, h, dt); horaVacana.Add(hv); } } else { #region TheOverTime //if (dt.DayOfWeek != DayOfWeek.Friday) //{ // if (th > 9) // { // float delta = th - 9; // var EmployeeExtras = Extras.Where(x => x.ID == id).FirstOrDefault(); // if (EmployeeExtras == null) // { // HorasTrabajadas ht = new HorasTrabajadas(id, delta, dt); // Extras.Add(ht); // } // else // { // EmployeeExtras.HorasT += delta; // } // th = 9; // } //} //else //{ // if (th > 8) // { // float delta = th - 8; // var EmployeeExtras = Extras.Where(x => x.ID == id).FirstOrDefault(); // if (EmployeeExtras == null) // { // HorasTrabajadas ht = new HorasTrabajadas(id, delta, dt); // Extras.Add(ht); // } // else // { // EmployeeExtras.HorasT += delta; // } // th = 8; // } //} #endregion th = AddOT(id, th, dt); if (LaHoraVacana != null) { LaHoraVacana.HorasT += th; } else { HorasTrabajadas hv = new HorasTrabajadas(id, th, dt); horaVacana.Add(hv); } HorasTrabajadas dh = new HorasTrabajadas(id, th, dt); DayHours.Add(dh); } } #endregion } #endregion #region SabadoDomingo else if (dt.DayOfWeek == DayOfWeek.Saturday) { AddOT(id, th, dt); //var EmployeeExtras = Extras.Where(x => x.ID == id).FirstOrDefault(); //if (EmployeeExtras == null) //{ // HorasTrabajadas ht = new HorasTrabajadas(id, th, dt); // Extras.Add(ht); //} //else //{ // EmployeeExtras.HorasT += th; //} } else { var EmployeeDobleHours = Dobles.Where(x => x.ID == id).FirstOrDefault(); if (EmployeeDobleHours == null) { HorasTrabajadas ht = new HorasTrabajadas(id, th, dt); Dobles.Add(ht); } else { EmployeeDobleHours.HorasT += th; } } #endregion }
public Response <IEnumerable <BoletaPago> > GetTrabajadores(BoletaPago obj) { try { var result = repository.GetTrabajadores(obj); if (result.Any()) { string periodo = obj.HorasTrabajadas.Periodo; string body = CargarPlantilla(periodo); string nombrearchivo = "Boleta de Pago " + periodo; int i = 1; int?trabajadorid = 0; int contador = result.Count(); while (contador >= i) { trabajadorid = result.Where(x => x.Indicador == i).Select(y => y.Trabajador.Trabajador_Id).FirstOrDefault(); Trabajador trabajador = new Trabajador(); Empleador empleador = new Empleador(); HorasTrabajadas horasTrabajadas = new HorasTrabajadas(); IEnumerable <DetalleVacaciones> lstdetalleVacaiones; Beneficio beneficio = new Beneficio(); if (trabajadorid > 0) { trabajador = repository2.ObtenerTrabajador(trabajadorid); empleador = repository3.ObtenerEmpleador(); horasTrabajadas = repository4.CalculaHorasTrabajadas(periodo, trabajador); trabajador.HorasTrabajadas = new HorasTrabajadas { Periodo = periodo }; lstdetalleVacaiones = repository5.DetalleVacaciones(trabajador); beneficio = repository6.GetSeguro(trabajador); byte[] arraybytes = CrearBoletaPago(periodo, empleador, trabajador, horasTrabajadas, lstdetalleVacaiones.ToArray(), beneficio); EnvioCorreo.Send(trabajador.Correo, nombrearchivo, body, arraybytes, nombrearchivo + ".pdf"); } i++; } return(new Response <IEnumerable <BoletaPago> >(result)); } else { var rs = new Response <IEnumerable <BoletaPago> >(result); rs.InternalException = "No se encontraton boletas con esa fecha"; rs.InternalStatus = InternalStatus.Failed; return(rs); } } catch (Exception ex) { return(new Response <IEnumerable <BoletaPago> >(ex)); } }
public Response <BoletaPago> DescargarBoletaPago(int TrabajadorId, string Periodo) { Trabajador trabajador = new Trabajador(); Empleador empleador = new Empleador(); HorasTrabajadas horasTrabajadas = new HorasTrabajadas(); IEnumerable <DetalleVacaciones> lstdetalleVacaiones; Beneficio beneficio = new Beneficio(); BoletaPago boletaPago = new BoletaPago(); trabajador = repository2.ObtenerTrabajador(TrabajadorId); empleador = repository3.ObtenerEmpleador(); horasTrabajadas = repository4.CalculaHorasTrabajadas(Periodo, trabajador); trabajador.HorasTrabajadas = new HorasTrabajadas { Periodo = Periodo }; lstdetalleVacaiones = repository5.DetalleVacaciones(trabajador); beneficio = repository6.GetSeguro(trabajador); byte[] arraybytes = CrearBoletaPago(Periodo, empleador, trabajador, horasTrabajadas, lstdetalleVacaiones.ToArray(), beneficio); string nombrearchivo = "BoletaPago_" + string.Concat(trabajador.ApellidoPaterno, "_", trabajador.Nombres) + "_" + Periodo; boletaPago.Arraybytes = arraybytes; boletaPago.Nombrearchivo = nombrearchivo; return(new Response <BoletaPago>(boletaPago)); }
public byte[] CrearBoletaPago(string periodo, Empleador empleador, Trabajador trabajador, HorasTrabajadas horasTrabajadas, DetalleVacaciones[] arrayvacaciones, Beneficio beneficio) { Document doc = new Document(PageSize.LETTER); byte[] arraybytes = null; using (MemoryStream memoryStream = new MemoryStream()) { PdfWriter writer = PdfWriter.GetInstance(doc, memoryStream); doc.Open(); //pdfDoc = CrearBoletaPago(periodo); string titulo = "Boleta de Pago " + periodo; doc.AddTitle(titulo); doc.AddCreator("Enrique Velasquez"); // Abrimos el archivo doc.Open(); Font tituloFont = new Font(Font.FontFamily.HELVETICA, 10, Font.NORMAL, BaseColor.BLACK); Font subtituloFont = new Font(Font.FontFamily.HELVETICA, 15, Font.NORMAL, BaseColor.BLACK); Font subtituloFont2 = new Font(Font.FontFamily.HELVETICA, 10, Font.BOLD, BaseColor.BLACK); Font standardFont = new Font(Font.FontFamily.HELVETICA, 10, Font.NORMAL, BaseColor.BLACK); Font standardFont2 = new Font(Font.FontFamily.HELVETICA, 10, Font.BOLD, BaseColor.BLACK); // Escribimos el encabezamiento en el documento Paragraph rasonsocial = AddParagraph(empleador.Descripcion, Element.ALIGN_LEFT, tituloFont); doc.Add(new Paragraph(rasonsocial)); Paragraph ruc = AddParagraph("RUC: " + empleador.Ruc, Element.ALIGN_LEFT, tituloFont); doc.Add(new Paragraph(ruc)); doc.Add(Chunk.NEWLINE); Paragraph subtitulo = AddParagraph("BOLETA DE PAGO", Element.ALIGN_CENTER, subtituloFont); doc.Add(new Paragraph(subtitulo)); Paragraph rangofecha = AddParagraph(horasTrabajadas.PrimerDia.ToString("dd'/'MM'/'yyyy") + "-" + horasTrabajadas.UltimoDia.ToString("dd'/'MM'/'yyyy"), Element.ALIGN_CENTER, tituloFont); doc.Add(new Paragraph(rangofecha)); doc.Add(new Paragraph("\n")); //doc.Add(Chunk.NEWLINE); //Primera Parte PdfPTable tblElementos1 = new PdfPTable(6); tblElementos1.WidthPercentage = 100; string[] arrayElementos = { "Cod.Empleado:", "Nombre:", "DNI:", "Cargo:", "Fecha Ingreso", "Fecha de Cese", "Dias Trabajados", "Dias No Trabajados", "Dias vacaciones", "Sueldo", "Horas Trabajados", "Horas No Trabajados" }; string fechacierre = trabajador.FechaCese.ToString("dd'/'MM'/'yyyy"); fechacierre = fechacierre == "01/01/0001" ? "" : fechacierre; string[] arrayDatos = { trabajador.Trabajador_Id.ToString(), string.Concat(trabajador.Nombres, " ", trabajador.ApellidoPaterno), trabajador.NumeroDocumento, trabajador.Cargo.Descripcion, trabajador.FechaIngreso.ToString("dd'/'MM'/'yyyy"), fechacierre, horasTrabajadas.DiasTrabajados.ToString(), horasTrabajadas.DiasNoTrabajados.ToString(), "0", trabajador.Cargo.Sueldo.ToString("F2"), horasTrabajadas.Horas_Trabajadas.ToString(), horasTrabajadas.HorasNoTrabajados.ToString() }; for (int i = 0; i < arrayElementos.Length; i++) { float top = 0; if (i < 3) { top = 1; } else if (i >= 3) { top = 0; } PdfPCell pdfPCell = AddPdfPCell(arrayElementos[i].ToString(), standardFont, 0, 0, top, Element.ALIGN_LEFT); tblElementos1.AddCell(pdfPCell); PdfPCell pdfPCelldatos = AddPdfPCell(arrayDatos[i].ToString(), standardFont, 0, 0, top, Element.ALIGN_LEFT); tblElementos1.AddCell(pdfPCelldatos); } doc.Add(tblElementos1); doc.Add(new Paragraph("\n")); //Segunda Parte PdfPTable tblElementos2 = new PdfPTable(3); tblElementos2.WidthPercentage = 100; string[] arrayElementos2 = { "Ingresos", "Descuentos", "Aportes de Empleador" }; for (int i = 0; i < arrayElementos2.Length; i++) { PdfPCell pdfPCell = AddPdfPCell(arrayElementos2[i].ToString(), subtituloFont2, 1, 1, 1, Element.ALIGN_CENTER); tblElementos2.AddCell(pdfPCell); } doc.Add(tblElementos2); //Tercera Parte PdfPTable tblElementos3 = new PdfPTable(6); tblElementos3.WidthPercentage = 100; string[] arrayElementos3 = { "Remuneracion Basica:", "AFP Aporte:", "ESSALUD:", "Vacaciones:", "AFP Comision", "", "", "AFP Seguros", "" }; string[] arrayDatos3 = { trabajador.Cargo.Sueldo.ToString("F2"), beneficio.AFPAporte.ToString("F2"), beneficio.EsSalud.ToString("F2"), "0.00", beneficio.AFPComision.ToString("F2"), "", "", beneficio.AFPSeguro.ToString("F2"), "" }; for (int i = 0; i < arrayElementos3.Length; i++) { PdfPCell pdfPCell = AddPdfPCell(arrayElementos3[i].ToString(), standardFont, 0, 0, 0, Element.ALIGN_LEFT); tblElementos3.AddCell(pdfPCell); PdfPCell pdfPCelldatos = AddPdfPCell(arrayDatos3[i].ToString(), standardFont, 0, 0, 0, Element.ALIGN_RIGHT); tblElementos3.AddCell(pdfPCelldatos); } doc.Add(tblElementos3); doc.Add(new Paragraph("\n")); //Cuarta Parte PdfPTable tblElementos4 = new PdfPTable(6); tblElementos4.WidthPercentage = 100; string[] arrayElementos4 = { "Total Ingresos", "Total Descuentos", "Total Aportes", "Total Neto", "", "" }; string[] arrayDatos4 = { trabajador.Cargo.Sueldo.ToString("F2"), (beneficio.AFPAporte + beneficio.AFPComision + beneficio.AFPSeguro).ToString("F2"), beneficio.EsSalud.ToString("F2"), (trabajador.Cargo.Sueldo - (beneficio.AFPAporte + beneficio.AFPComision + beneficio.AFPSeguro)).ToString("F2"), "", "" }; for (int i = 0; i < arrayElementos4.Length; i++) { PdfPCell pdfPCell = AddPdfPCell(arrayElementos4[i].ToString(), standardFont2, 0, 0, 0, Element.ALIGN_LEFT); tblElementos4.AddCell(pdfPCell); PdfPCell pdfPCelldatos = AddPdfPCell(arrayDatos4[i].ToString(), standardFont, 0, 0, 0, Element.ALIGN_RIGHT); tblElementos4.AddCell(pdfPCelldatos); } doc.Add(tblElementos4); doc.Add(new Paragraph("\n")); Paragraph vacaciones = AddParagraph("Vacaciones", Element.ALIGN_LEFT, standardFont2); doc.Add(new Paragraph(vacaciones)); //Quinta Parte PdfPTable tblElementos5 = new PdfPTable(4); tblElementos5.WidthPercentage = 50; tblElementos5.HorizontalAlignment = Element.ALIGN_LEFT; string[] arrayElementos5 = { "Inicio", "Fin", "Dias", "Tipo" }; for (int i = 0; i < arrayElementos5.Length; i++) { PdfPCell pdfPCell = AddPdfPCell(arrayElementos5[i].ToString(), standardFont2, 1, 1, 1, Element.ALIGN_CENTER); tblElementos5.AddCell(pdfPCell); } doc.Add(tblElementos5); PdfPTable tblElementos6 = new PdfPTable(4); tblElementos6.WidthPercentage = 50; tblElementos6.HorizontalAlignment = Element.ALIGN_LEFT; List <string> lstElementos6 = new List <string>(); for (int j = 0; j < arrayvacaciones.Length; j++) { lstElementos6.Add(arrayvacaciones[j].FechaInicio.ToString("dd'/'MM'/'yyyy")); lstElementos6.Add(arrayvacaciones[j].FechaFin.ToString("dd'/'MM'/'yyyy")); lstElementos6.Add(CalcularVacacionesPeriodo(horasTrabajadas.UltimoDia, arrayvacaciones[j].FechaInicio, arrayvacaciones[j].FechaFin).ToString()); lstElementos6.Add("Trabajador"); } string[] arrayElementos6 = lstElementos6.ToArray(); for (int i = 0; i < arrayElementos6.Length; i++) { PdfPCell pdfPCell = AddPdfPCell(arrayElementos6[i].ToString(), standardFont, 0, 0, 0, Element.ALIGN_CENTER); tblElementos6.AddCell(pdfPCell); } doc.Add(tblElementos6); doc.Close(); arraybytes = memoryStream.ToArray(); memoryStream.Close(); } return(arraybytes); }