using System; using System.Collections.Generic; using System.Data; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using Extensiones; public partial class RH_CalculoSBC : ClsPaginas { //private DataTable dtPeriodos //{ // get // { // if (ViewState["dtPeriodos"] == null) { return null; } // else { return (DataTable)ViewState["dtPeriodos"]; } // } // set { ViewState["dtPeriodos"] = value; } //} protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { ADSNetLibrary.SIGAPI.Services.Agropecuaria.IAgropecuariaService servicioAgro = new ADSNetLibrary.SIGAPI.Services.Agropecuaria.AgropecuariaService(System.Configuration.ConfigurationManager.ConnectionStrings["Conexion"].ConnectionString); ADSNetLibrary.SIGAPI.Models.Agropecuaria.Request.ActividadGET acmo = new ADSNetLibrary.SIGAPI.Models.Agropecuaria.Request.ActividadGET(); acmo.cveEmpresa = UsuarioActual.CveEmpresa; acmo.cveActividad = -1; var obj = servicioAgro.ActividadesGet(acmo); GVDetalleParteVariable.DataSource = obj.Result; GVDetalleParteVariable.DataBind(); } } protected void LnkCalcular_Click(object sender, EventArgs e) { using (ClsNominas objnom = new ClsNominas()) { if (objnom.GetCalculoSBC(UsuarioActual.CveEmpresa, DdlTipo.SelectedValue.ToEntero(), TxtFechaPago.Text)) { GVCalculosSBC.DataSource = objnom.DTSetResultados.Tables[0]; GVCFija.DataSource = objnom.DTSetResultados.Tables[0]; GVPV.DataSource = objnom.DTSetResultados.Tables[0]; if (objnom.DTSetResultados.Tables.Count >1) { GVDetalleParteVariable.DataSource = objnom.DTSetResultados.Tables[1]; GVDetalleParteVariable.DataBind(); } } } GVCalculosSBC.DataBind(); GVCFija.DataBind(); GVPV.DataBind(); } protected void LnkDownArchivosSua_Click(object sender, EventArgs e) { string concater = ""; //string MovtosAfil = ""; string MovtosmodSalario = ""; //string movtosBajas = ""; using (ClsRH ObjPersonal = new ClsRH()) { if (ObjPersonal.GetMovimientosToSUA(UsuarioActual.CveEmpresa, "2021-03-01", "2021-03-03")) { ////01: MovtosAfil //concater = ""; //foreach (var item in ObjPersonal.DtResultados.Select("Tipo=1")) //{ // MovtosAfil = string.Format("{0}{1}{2}", MovtosAfil, concater, item["Movtotxt"]); // concater = "\\r\\n"; //} //02: MovtosmodSalario GVCalculosSBC concater = ""; int contador = 0; //foreach (var item in ObjPersonal.DtResultados.Select("Tipo=2")) //{ // MovtosmodSalario = string.Format("{0}{1}{2}", MovtosmodSalario, concater, item["Movtotxt"]); // concater = "\\r\\n"; // contador++; //} foreach (GridViewRow item in GVCalculosSBC.Rows) { double SalarioDiarioSSNuevo = Math.Round(item.DataKey("SalarioDiarioSSNuevo").ToDouble(), 2); double SalarioDiarioSS = Math.Round(item.DataKey("SalarioDiarioSS").ToDouble(), 2); if (SalarioDiarioSSNuevo != SalarioDiarioSS) { MovtosmodSalario = string.Format("{0}{1}{2}", MovtosmodSalario, concater, item.DataKey("Movtotxt")); concater = "\\r\\n"; contador++; } } MovtosmodSalario = string.Format("{0}{1}{2}", MovtosmodSalario, concater, $"************* 00{(contador < 1000 ? "0" : "")}{(contador < 100 ? "0" : "")}{(contador < 10 ? "0" : "")}{contador} 00001 9"); ////03: movtosBajas //concater = ""; //foreach (var item in ObjPersonal.DtResultados.Select("Tipo=3")) //{ // movtosBajas = string.Format("{0}{1}{2}", movtosBajas, concater, item["Movtotxt"]); // concater = "\\r\\n"; //} } RegistraScript(string.Format("SaveCsv(\"MovtosmodSalario{1:ddMMMyyyy}.txt\", '{0}');", MovtosmodSalario, TxtFechaPago.Text.ToDateTimeExcat("dd/MM/yyyy"))); //RegistraScript(string.Format("SaveCsv(\"MovtosAfil.txt\", '{0}');SaveCsv(\"MovtosmodSalario.txt\", '{1}');SaveCsv(\"movtosBajas.txt\", '{2}');", MovtosAfil.Replace("'", "\\'"), MovtosmodSalario.Replace("'", "\\'"), movtosBajas.Replace("'", "\\'"))); //RegistraScript("$('#DmodalGetSua').modal('hide');"); } } protected void LnkGuardarCambios_Click(object sender, EventArgs e) { string fecha = TxtFechaPago.Text.ToDateTimeExcat("dd/MM/yyyy").ToString("yyyy/MM/dd"); bool continuar = true; using (ClsRH objrh = new ClsRH()) { foreach (GridViewRow item in GVCalculosSBC.Rows) { int CvePersonal = item.DataKey("CvePersonal").ToEntero();//,,, double SalarioDiario = item.DataKey("SalarioDiario").ToDouble(); double SDINuevo = item.DataKey("SDINuevo").ToDouble(); double SalarioDiarioSSNuevo = Math.Round(item.DataKey("SalarioDiarioSSNuevo").ToDouble(), 2); double SalarioVariableNuevo = item.DataKey("SalarioVariableNuevo").ToDouble(); double SalarioDiarioSS = Math.Round(item.DataKey("SalarioDiarioSS").ToDouble(), 2); if (continuar && SalarioDiarioSSNuevo != SalarioDiarioSS && (continuar = objrh.UpdateSalarios(CvePersonal, fecha, UsuarioActual.CveEmpresa, SalarioDiario, SDINuevo, SalarioDiarioSSNuevo, SalarioDiario))) { } } } if (continuar) { Alert("Se registro la modificación de salario correctamente."); LnkDownArchivosSua_Click(null, null); } else { } /* Using ObjPersonal As ClsRH = New ClsRH() If ObjPersonal.UpdateSalarios(CvePersonal, TxtFechamodSalario.Text.ToDate().ToString("yyyy/MM/dd"), UsuarioActual.CveEmpresa, TxtSalarioDiarioM.Text.ToDecimal(), TxtFISalarioDiarioIntegrado.Text.ToDecimal(), TxtFISalarioDiarioIntegrado.Text.ToDecimal(), TxtSalarioDiarioM.Text.ToDecimal()) Then * */ } protected void LnkDescargar_Click(object sender, EventArgs e) { DataTable dt = GVToDT(GVCalculosSBC,"Salario"); DataTable dtPF = GVToDT(GVCFija, "Parte fija"); DataTable dtPV = GVToDT(GVPV, "Parte variable"); DataTable dtPVD = GVToDT(GVDetalleParteVariable, "Detalle parte variable"); ClosedXML.Excel.XLWorkbook wb = new ClosedXML.Excel.XLWorkbook(); var libro = wb.AddWorksheet(dt); var libroPF = wb.AddWorksheet(dtPF); var libroPV = wb.AddWorksheet(dtPV); var libroPVD = wb.AddWorksheet(dtPVD); libro.ColumnsUsed().AdjustToContents(); libroPF.ColumnsUsed().AdjustToContents(); libroPV.ColumnsUsed().AdjustToContents(); libroPVD.ColumnsUsed().AdjustToContents(); libro.ColumnsUsed().AdjustToContents(); libro.Row(1).InsertRowsAbove(5); libro.Range(1, 2, 1, 6).Merge().Value = UsuarioActual.Empresa.Empresa; libro.Range(2, 2, 2, 6).Merge().Value = $"Reporte de calculo de sbc {TxtFechaPago.Text}."; libro.Range(1, 2, 2, 6).Style.Font.SetBold(true); libro.Range(1, 2, 2, 6).Style.Font.SetFontSize(16); libro.Range(2, 2, 2, 6).Style.Font.SetFontSize(14); libro.Range(1, 2, 2, 6).Style.Alignment.Horizontal = ClosedXML.Excel.XLAlignmentHorizontalValues.Center; //libro.Range(3, 2, 3, 6).Merge().Value = $"del {fechai:dd/MM/yyyy} al {fechaf:dd/MM/yyyy}"; libro.Range(2, 7, 2, 9).Merge().Value = $"Fecha:{DateTime.Now:dd/MM/yyyy}"; libro.Range(3, 7, 3, 9).Merge().Value = $"Hora:{DateTime.Now:HH:mm}"; libro.Range(5, 6, 5, 9).Merge().Value = "Actual"; libro.Range(5, 10, 5, 12).Merge().Value = "Nuevo"; libro.Range(5, 1, 6, 14).Style.Alignment.Horizontal = ClosedXML.Excel.XLAlignmentHorizontalValues.Center; libro.Range(5, 1, 6, 13).Style.Fill.SetBackgroundColor(ClosedXML.Excel.XLColor.FromArgb(79, 129, 189)); libro.Range(5, 1, 5, 13).Style.Border.BottomBorder = ClosedXML.Excel.XLBorderStyleValues.None; libro.Range(5, 6, 6, 9).Style.Fill.SetBackgroundColor(ClosedXML.Excel.XLColor.FromArgb(128, 100, 162)); libro.Range(5, 6, 6, 9).Style.Font.FontColor = ClosedXML.Excel.XLColor.White; libro.Range(5, 10, 6, 12).Style.Fill.SetBackgroundColor(ClosedXML.Excel.XLColor.FromArgb(136, 214, 205)); libro.Range(5, 10, 6, 12).Style.Font.FontColor = ClosedXML.Excel.XLColor.White; libro.Range(7, 6, 7 + dt.Rows.Count, 12).Style.Alignment.Horizontal = ClosedXML.Excel.XLAlignmentHorizontalValues.Right; libro.Range(7, 6, 7+ dt.Rows.Count, 12).Style.NumberFormat.Format = "$##,###,###,0.00"; System.IO.Stream fs = new System.IO.MemoryStream(); wb.SaveAs(fs); fs.Position = 0; System.IO.MemoryStream memoryStream = new System.IO.MemoryStream(); using (System.IO.Stream input = fs) { input.CopyTo(memoryStream); } memoryStream.Position = 0; Response.Clear(); Response.Buffer = true; Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"; Response.AddHeader("content-disposition", string.Format("attachment;filename={0}.xlsx", "Salario")); Response.BinaryWrite(memoryStream.ToArray()); Response.End(); } public string limpiarcelda( string celdatext) { celdatext = celdatext.Replace("
", "\r\n").Replace(" ", " "); while (celdatext.Contains(" ")){ celdatext = celdatext.Replace(" ", " "); } celdatext = celdatext.Replace("\n ", " "); celdatext = celdatext.Replace("\r ", " "); return celdatext; } public DataTable GVToDT(GridView GridView, string NombreArchivoXLSX) { DataTable dt = new DataTable(NombreArchivoXLSX); if (GridView != null && GridView.Rows.Count > 0) { int i = 0; List ArrColumnasVisibles = new List(); // solo recorro las columnas visibles foreach (TableCell cell in GridView.HeaderRow.Cells) { string titulo = HttpUtility.HtmlDecode(Extensiones.ModExtensiones.TextoCelda(cell)).Trim(); titulo = limpiarcelda( titulo); if (GridView.Columns.Count > i && GridView.Columns[i].Visible && titulo.Length > 0) { if (dt.Columns.Contains(titulo)) titulo = titulo + i; dt.Columns.Add(titulo); ArrColumnasVisibles.Add(i); } i += 1; } i = 0; foreach (GridViewRow row in GridView.Rows) { dt.Rows.Add(); i = 0; foreach (int j in ArrColumnasVisibles) { dt.Rows[dt.Rows.Count - 1][i] = limpiarcelda(Extensiones.ModExtensiones.TextoCelda(row.Cells[j]).Replace("
", "\r\n")); i = i + 1; } } } return dt; } }