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 @@
@@ -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 @@