diff --git a/App_Code/ClsNominas.vb b/App_Code/ClsNominas.vb index ea1675b67..d76b4e8bc 100644 --- a/App_Code/ClsNominas.vb +++ b/App_Code/ClsNominas.vb @@ -611,6 +611,29 @@ Public Class ClsNominas End Try Return retorno End Function + + Public Function GuardarAguinaldo(CveEmpresa As Integer, CveUsuario As Integer, registros As String, EJercicio As Integer) As Boolean + Dim retorno As Boolean = False + + Try + DataAdapter("PA_Nom_GuardarAguinaldo", CommandType.StoredProcedure) + With SqlAdapter.SelectCommand.Parameters + .Add("@CveEmpresa", SqlDbType.Int).Value = CveEmpresa + .Add("@CveUsuario", SqlDbType.Decimal).Value = CveUsuario + .Add("@registros", SqlDbType.Xml).Value = registros + .Add("@EJercicio", SqlDbType.Xml).Value = EJercicio + End With + SqlAdapter.Fill(Data) + retorno = True + Catch sqEx As SqlException + retorno = False + OnError("Ocurrió un error al guardar Aguinaldo.", sqEx, SqlAdapter.SelectCommand.Parameters.ParametrosInfo()) + Catch ex As Exception + retorno = False + OnError("Ocurrió un error al guardar Aguinaldo.", ex, SqlAdapter.SelectCommand.Parameters.ParametrosInfo()) + End Try + Return retorno + End Function Public Function RegistraProvision(CvePeriodo As Int32, CveUsuario As Int32, CveEmpresa As Int32) As Boolean Dim retorno As Boolean = False DataAdapter("PA_Nom_RegistraProvision", CommandType.StoredProcedure) diff --git a/Nomina/Aguinaldo.aspx b/Nomina/Aguinaldo.aspx index 590492fe9..294a3da55 100644 --- a/Nomina/Aguinaldo.aspx +++ b/Nomina/Aguinaldo.aspx @@ -1,4 +1,5 @@ <%@ Page Title="" Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true" CodeFile="Aguinaldo.aspx.cs" Inherits="Nomina_Aguinaldo" %> + <%@ Import Namespace="Extensiones" %> @@ -8,10 +9,12 @@ .dSala { width: 90px; } + .dSalaz input { width: 50px; text-align: right; } + .dlab { width: 50px; } @@ -38,6 +41,21 @@
  • Descargar excel
  • + + + +
  • + Autorizar + + +
  • +
  • + Cargar Excel + + +
  • +
    +
    @@ -71,7 +89,8 @@
    - + +
    @@ -138,8 +157,8 @@
    - - + <%----%> + " style="margin-top: -3px;" class="btn btn-circle btn-sm label-info">
    @@ -148,13 +167,14 @@ - - + + - + - Fecha
    ingreso + Fecha
    + ingreso
    @@ -163,7 +183,8 @@
    - Salario
    diario + Salario
    + diario
    @@ -173,7 +194,8 @@
    - Salario
    Aguinaldo + Salario
    + Aguinaldo
    @@ -181,27 +203,33 @@
    - + - Días
    laborados + Días +
    + laborados
    - + - Días
    Faltados + Días +
    + Faltados
    - + - Días
    Incapacidad + Días +
    + Incapacidad
    @@ -210,16 +238,20 @@
    - Días
    base + Días +
    + base
    - + - Días
    pago + Días +
    + pago
    @@ -227,9 +259,9 @@
    - + - Aguinaldo + Aguinaldo @@ -239,75 +271,79 @@ - + - + - Aguinaldo
    Por Pagar + Aguinaldo +
    + Por Pagar
    - <%-- + <%-- --%> - + - Aguinaldo
    gravado + Aguinaldo +
    + gravado
    - + - + - + - + - + - - + + - + - + - + @@ -321,7 +357,7 @@ - + @@ -356,7 +392,6 @@ - + + diff --git a/Nomina/Aguinaldo.aspx.cs b/Nomina/Aguinaldo.aspx.cs index fee5884ef..9d9486cf6 100644 --- a/Nomina/Aguinaldo.aspx.cs +++ b/Nomina/Aguinaldo.aspx.cs @@ -8,7 +8,9 @@ using System.Text; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; +using System.Xml.Linq; using Extensiones; +using static Stimulsoft.Report.StiOptions.Export; public partial class Nomina_Aguinaldo : ClsPaginas { @@ -28,14 +30,25 @@ public partial class Nomina_Aguinaldo : ClsPaginas { get { - return ViewState["tipocalculo"].ToString().ToEntero(); + return ViewState["tipocalculo"].ToString().ToEntero(); } set { ViewState["tipocalculo"] = value; } } - + private int ejercicioActual + { + get + { + return ViewState["ejercicioActual"].ToString().ToEntero(); + } + set + { + ViewState["ejercicioActual"] = value; + } + } + #endregion protected void Page_Load(object sender, EventArgs e) { @@ -66,7 +79,7 @@ public partial class Nomina_Aguinaldo : ClsPaginas LtlUma.Text = ""; int cveempresa = 1; if (UsuarioActual != null) { cveempresa = UsuarioActual.CveEmpresa; } - + using (ClsNominas onom = new ClsNominas()) { if (onom.UMAFechaGet(cveempresa, $"{NowADS():yyyy/MM/dd}") && onom.DtResultados.Rows.Count > 0) @@ -84,6 +97,7 @@ public partial class Nomina_Aguinaldo : ClsPaginas int ejercicio = DdlEjercicios.SelectedValue.ToEntero(); int CveTipoPeriodo = DdlTipoPeriodo.SelectedValue.ToEntero(); int CvePeriodo = -1; + ejercicioActual = ejercicio; using (ClsNominas objnom = new ClsNominas()) { @@ -98,8 +112,12 @@ public partial class Nomina_Aguinaldo : ClsPaginas GVCalcularAguinaldo.DataBind(); LnkAutorizarModal.Visible = true; + BtnGuardar.Visible = true; + BtnLimpiar.Visible = true; + LnkCargarExcel.Visible = true; BtnRecalcular_Click(sender, null); upDatosPA_N.Update(); + Upacciones.Update(); } private void CargaPeriodos() { @@ -266,7 +284,7 @@ public partial class Nomina_Aguinaldo : ClsPaginas if (CveNomina > 0) { - if (continuar && !objNomina.AddUPNom_NominasDetalles(objNomina.CveNomina, CvePeriodoSeleccionado, CvePersonal, CveConcepto, Importe, ImporteGravado, ImporteExento, ImporteValor, UsuarioActual.CveUsuario, false, 1, 1, 1,false)) + if (continuar && !objNomina.AddUPNom_NominasDetalles(objNomina.CveNomina, CvePeriodoSeleccionado, CvePersonal, CveConcepto, Importe, ImporteGravado, ImporteExento, ImporteValor, UsuarioActual.CveUsuario, false, 1, 1, 1, false)) { continuar = false; } @@ -337,6 +355,8 @@ public partial class Nomina_Aguinaldo : ClsPaginas { int CveNomina = e.Row.DBCampo("CveNomina").ToString().ToEntero(); int CvePersonal = e.Row.DBCampo("CvePersonal").ToString().ToEntero(); + e.Row.FCTextBox("TxtAjuste").Text = e.Row.DBCampo("Ajuste").ToString(); + e.Row.FCTextBox("TxtDescuento").Text = e.Row.DBCampo("descuento").ToString(); if (CveNomina > 0) { e.Row.CssClass = "success"; @@ -361,7 +381,7 @@ public partial class Nomina_Aguinaldo : ClsPaginas protected void BtnRecalcular_Click(object sender, EventArgs e) { tipocalculo = ddltipoCalculo.SelectedValue.ToEntero(); - GVCalcularAguinaldo.Columns[13].Visible = (tipocalculo ==1 || tipocalculo == 3); + GVCalcularAguinaldo.Columns[13].Visible = (tipocalculo == 1 || tipocalculo == 3); GVCalcularAguinaldo.Columns[14].Visible = (tipocalculo == 1 || tipocalculo == 3); GVCalcularAguinaldo.Columns[15].Visible = (tipocalculo == 1 || tipocalculo == 3); GVCalcularAguinaldo.Columns[16].Visible = (tipocalculo == 1 || tipocalculo == 3); @@ -392,7 +412,7 @@ public partial class Nomina_Aguinaldo : ClsPaginas decimal Aguinaldoapagar = 0; decimal descuento = 0; - decimal ajuste =0; + decimal ajuste = 0; decimal aguinaldoSubproyeto = 0; decimal aguinaldogravadoSubproyeto = 0; @@ -409,9 +429,9 @@ public partial class Nomina_Aguinaldo : ClsPaginas decimal ISRTOTAL = 0; decimal AguinaldoapagarTotal = 0; - decimal totalgravado= 0; + decimal totalgravado = 0; decimal isrtotalgravado = 0; - decimal isrmensual= 0; + decimal isrmensual = 0; decimal lisr = 0; GridViewRow gvrowTotal = null; @@ -442,7 +462,7 @@ public partial class Nomina_Aguinaldo : ClsPaginas diasaguipago = gvrow.FCTextBox("TxtdiasAguinaldoprop").Text.ToDecimal();// (diaslaborados / diasanio) * diasaguinaldo; salariomensual = salariodiario * 30; - aguinaldo = (diasaguipago * salarioAguinaldo)+ ajuste; + aguinaldo = (diasaguipago * salarioAguinaldo) + ajuste; /*if (gvrow.FCTextBox("TxtAguinaldoExento").Text.Length > 0) { aguinaldoexcento = (aguinaldoExcentoreg > aguinaldo ? aguinaldo : aguinaldoExcentoreg); @@ -456,7 +476,7 @@ public partial class Nomina_Aguinaldo : ClsPaginas if (aguinaldogravado > 0) { - totalgravado = aguinaldogravado + salariomensual; + totalgravado = aguinaldogravado + salariomensual; if (objbase.CalculosISRAguinaldo(totalgravado, salariomensual, diasmes, DdlEjercicios.SelectedValue.ToEntero())) { DataRow drow = objbase.DtResultados.Rows[0]; @@ -464,11 +484,11 @@ public partial class Nomina_Aguinaldo : ClsPaginas isrmensual = drow["isrFraccionIII_1"].ToString().ToDecimal(); } else { break; } - lisr = isrtotalgravado- isrmensual; + lisr = isrtotalgravado - isrmensual; + + + - - - @@ -478,7 +498,7 @@ public partial class Nomina_Aguinaldo : ClsPaginas //str.AppendFormat("SELECT dbo.Fnc_NomValues(40, 0, {2}, -1, {0}, {1}, {1}) isrFraccionII_2,", FraccionII_1, diasmes, DdlEjercicios.SelectedValue); //str.AppendFormat(" dbo.Fnc_NomValues(40, 0, {2}, -1, {0}, {1}, {1}) isrFraccionIII_1", salariomensual, diasmes, DdlEjercicios.SelectedValue); //if (objbase.runQuerystr(str.ToString())) - if(objbase.CalculosISRAguinaldo(FraccionII_1, salariomensual, diasmes, DdlEjercicios.SelectedValue.ToEntero())) + if (objbase.CalculosISRAguinaldo(FraccionII_1, salariomensual, diasmes, DdlEjercicios.SelectedValue.ToEntero())) { DataRow drow = objbase.DtResultados.Rows[0]; FraccionII_2 = drow["isrFraccionII_2"].ToString().ToDecimal(); @@ -494,9 +514,9 @@ public partial class Nomina_Aguinaldo : ClsPaginas else { - totalgravado = 0; - isrtotalgravado = 0; - isrmensual = 0; + totalgravado = 0; + isrtotalgravado = 0; + isrmensual = 0; lisr = 0; @@ -516,7 +536,7 @@ public partial class Nomina_Aguinaldo : ClsPaginas { FraccionIV = lisr; } - if (tipocalculo == 3 && FraccionIV > lisr) + if (tipocalculo == 3 && FraccionIV > lisr) { FraccionIV = lisr; } @@ -633,7 +653,7 @@ public partial class Nomina_Aguinaldo : ClsPaginas libro.Cell(fila, cxc++).Value = "Días base"; libro.Cell(fila, cxc++).Value = "Días aguinaldo"; libro.Cell(fila, cxc++).Value = "Ajuste";//TxtAjuste - libro.Cell(fila, cxc++).Value = "Aguinaldo completo"; + libro.Cell(fila, cxc++).Value = "Aguinaldo completo"; libro.Cell(fila, cxc++).Value = "Aguinaldo gravado"; libro.Cell(fila, cxc++).Value = "Aguinaldo exento"; libro.Cell(fila, cxc++).Value = "Fraccion I"; //lblFraccion1 @@ -641,7 +661,7 @@ public partial class Nomina_Aguinaldo : ClsPaginas libro.Cell(fila, cxc++).Value = "Fraccion III"; //lblFraccion3 libro.Cell(fila, cxc++).Value = "Fraccion IV"; //lblFraccion4 libro.Cell(fila, cxc++).Value = "I.S.R."; - libro.Cell(fila, cxc++).Value = "Descuento"; //TxtDescuento + libro.Cell(fila, cxc++).Value = "Descuento"; //TxtDescuento libro.Cell(fila, cxc++).Value = "Aguinaldo por pagar"; libro.Range(fila, 1, fila, 20).Style.Font.FontColor = ClosedXML.Excel.XLColor.White; @@ -666,7 +686,7 @@ public partial class Nomina_Aguinaldo : ClsPaginas } cxc = 1; - libro.Cell(fila, cxc++).Value = string.Format("'{0}",gvrow.DataKey("Codigo")); + libro.Cell(fila, cxc++).Value = string.Format("'{0}", gvrow.DataKey("Codigo")); libro.Cell(fila, cxc++).Value = gvrow.FCLabel("lblnombreCompleto").Text; libro.Cell(fila, cxc++).Value = gvrow.FCLabel("lblfechaingreso").Text; libro.Cell(fila, cxc++).Value = gvrow.FCTextBox("TxtsueldoDiario").Text.ToDecimal(); @@ -677,7 +697,7 @@ public partial class Nomina_Aguinaldo : ClsPaginas libro.Cell(fila, cxc++).Value = gvrow.FCLabel("TxtdiasAguinaldo").Text.ToDecimal(); libro.Cell(fila, cxc++).Value = gvrow.FCTextBox("TxtdiasAguinaldoprop").Text.ToDecimal(); libro.Cell(fila, cxc++).Value = gvrow.FCTextBox("TxtAjuste").Text.ToDecimal(); - + libro.Cell(fila, cxc++).Value = gvrow.FCLabel("lblsueldoAguinaldo").Text.ToDecimal(); libro.Cell(fila, cxc++).Value = gvrow.FCLabel("lblAguinaldoGravado").Text.ToDecimal(); libro.Cell(fila, cxc++).Value = gvrow.FCLabel("lblsueldoAguinaldo").Text.ToDecimal() - gvrow.FCLabel("lblAguinaldoGravado").Text.ToDecimal(); @@ -695,7 +715,7 @@ public partial class Nomina_Aguinaldo : ClsPaginas libro.Range(filatitulo, 1, fila, 18).Columns(); libro.Range(filatitulo + 1, 4, fila + 1, 20).DataType = ClosedXML.Excel.XLDataType.Number; - libro.Range(filatitulo + 1, 4, fila + 1,5).Style.NumberFormat.Format = "$###,###,###,##0.00"; + libro.Range(filatitulo + 1, 4, fila + 1, 5).Style.NumberFormat.Format = "$###,###,###,##0.00"; libro.Range(filatitulo + 1, 11, fila + 1, 20).Style.NumberFormat.Format = "$###,###,###,##0.00"; libro.ColumnsUsed().AdjustToContents(); @@ -718,4 +738,125 @@ public partial class Nomina_Aguinaldo : ClsPaginas Response.BinaryWrite(memoryStream.ToArray()); Response.End(); } + + protected void BtnGuardar_Click(object sender, EventArgs e) + { + + System.Xml.Linq.XDocument xmlregistros = null; + + xmlregistros = new System.Xml.Linq.XDocument( + new System.Xml.Linq.XElement("registros", + GVCalcularAguinaldo.Rows.Cast().Where(row => + { + // Obtener el valor de CvePersonal (por DataKeys o celda) + if (int.TryParse(GVCalcularAguinaldo.DataKeys[row.RowIndex]["CvePersonal"]?.ToString(), out var cvePersonal)) + { + return cvePersonal > 0; + } + return false; + }) + .Select(row => + { + // Obtener valores directamente desde las celdas o controles + var TxtdiasAguinaldoprop = ((TextBox)row.FindControl("TxtdiasAguinaldoprop"))?.Text; + var txtAjuste = ((TextBox)row.FindControl("TxtAjuste"))?.Text; + var txtDescuento = ((TextBox)row.FindControl("TxtDescuento"))?.Text; + + return new XElement("registro", + new XElement("EJercicio", ejercicioActual), + new XElement("CveSubProyecto", GVCalcularAguinaldo.DataKeys[row.RowIndex]["CveSubProyecto"]), + new XElement("CvePersonal", GVCalcularAguinaldo.DataKeys[row.RowIndex]["CvePersonal"]), + new XElement("diasAguinaldo", decimal.TryParse(TxtdiasAguinaldoprop, out var diasPropAgui) ? diasPropAgui : 0), + new XElement("Ajuste", decimal.TryParse(txtAjuste, out var ajuste) ? ajuste : 0), + new XElement("descuento", decimal.TryParse(txtDescuento, out var descuento) ? descuento : 0) + ); + } + ))); + string xml = xmlregistros.ToString(); + using (ClsNominas objnom = new ClsNominas()) + { + objnom.GuardarAguinaldo(UsuarioActual.CveEmpresa, UsuarioActual.CveUsuario, xml, ejercicioActual); + } + BtnCalcular_Click(null, null); + + } + + protected void BtnLimpiar_Click(object sender, EventArgs e) + { + + string xml = ""; + using (ClsNominas objnom = new ClsNominas()) + { + objnom.GuardarAguinaldo(UsuarioActual.CveEmpresa, UsuarioActual.CveUsuario, xml, ejercicioActual); + } + BtnCalcular_Click(null, null); + } + + protected void LnkCargarExcel_Click(object sender, EventArgs e) + { + RegistraScript("$('#Modalxls').modal();"); + + } + + protected void LnkProcesarXls_Click(object sender, EventArgs e) + { + + List Filesgral = TxtFileaguinaldo.getfiles().Archivos; + + bool continuar = Filesgral.Count > 0; + string stringError = ""; + Archivo fileItem = continuar ? Filesgral[0] : null; + if (continuar) + { + string FileExtension = fileItem.Extension.ToUpper(); + if (FileExtension == "XLS" | FileExtension == "XLSX" | FileExtension == "CSV") + { + } + else + { + continuar = false; + stringError = "No se inserto un archivo de tipo Excel"; + } + + } + else + { + stringError = "favor de ingresar el archivo y esperar a que cargue"; + + } + DataTable dtxz = Extensiones.ModExtensiones.ReadExcelFile(fileItem.FileUrl, true); + + + // Filtrar filas con longitud de "Concepto" > 0 + DataRow[] filteredRows = dtxz.Select("LEN(Código) > 0"); + + // Crear nuevo DataTable con las filas filtradas + DataTable filteredTable = dtxz.Clone(); // Clona la estructura del DataTable original + foreach (DataRow row in filteredRows) + { + filteredTable.ImportRow(row); + } + + foreach (GridViewRow gvrow in GVCalcularAguinaldo.Rows) + { + string Codigo = gvrow.DataKey("Codigo"); + string TxtdiasAguinaldoprop = ""; + string TxtAjuste = ""; + string TxtDescuento = ""; + DataRow drow = filteredTable.FiltroPrimero(string.Format(" Código='{0}'", Codigo)); + if (drow != null) + { + TxtdiasAguinaldoprop = drow["Días aguinaldo"].ToString(); + TxtAjuste = drow["Ajuste"].ToString(); + TxtDescuento = drow["Descuento"].ToString(); + ((TextBox)gvrow.FindControl("TxtdiasAguinaldoprop")).Text = TxtdiasAguinaldoprop; + ((TextBox)gvrow.FindControl("TxtAjuste")).Text = TxtAjuste; + ((TextBox)gvrow.FindControl("TxtDescuento")).Text = TxtDescuento; + } + } + + BtnRecalcular_Click(sender, null); + RegistraScript("$('#Modalxls').modal('hide');"); + upDatosPA_N.Update(); + } } diff --git a/Nomina/CalculoISRAnual.aspx b/Nomina/CalculoISRAnual.aspx index 85ad28de4..a9c40cd89 100644 --- a/Nomina/CalculoISRAnual.aspx +++ b/Nomina/CalculoISRAnual.aspx @@ -7,10 +7,11 @@ .GVCalculoISRAnual tr td:nth-child(n+6) { text-align: right; } - + .GVCalculoISRAnual tr td:nth-child(5) { white-space: nowrap; } + .GVCalculoISRAnual tr td:nth-child(6) { white-space: nowrap; } @@ -36,7 +37,7 @@
  • Descargar XLS
  • - +
  •  Constancia 37
  • @@ -134,25 +135,31 @@
    - + - Ingresos
    totales
    + Ingresos +
    + totales
    - + - Base
    gravada
    + Base +
    + gravada
    - + - Base
    exenta
    + Base +
    + exenta
    @@ -160,7 +167,9 @@
    - ISR
    retenido
    + ISR +
    + retenido
    @@ -174,9 +183,10 @@
    - + - Subs.
    correspondiente
    + Subs.
    + correspondiente
    @@ -184,7 +194,8 @@
    - Impuesto
    anual
    + Impuesto
    + anual
    @@ -251,18 +262,33 @@