This commit is contained in:
JORGE LUIS CAUDILLO ESPARZA
2024-12-10 08:08:00 -07:00
parent 30e1550b63
commit 5a93e86aeb
5 changed files with 335 additions and 81 deletions

View File

@@ -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<GridViewRow>().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 = "<registros></registros>";
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<Archivo> 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();
}
}