Files
SIG/Nomina/Aguinaldo.aspx.cs
JORGE LUIS CAUDILLO ESPARZA 5a93e86aeb z
2024-12-10 08:08:00 -07:00

863 lines
38 KiB
C#

using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
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
{
#region Propiedades
private DataTable DTAguinaldos
{
get
{
return (DataTable)ViewState["DTAguinaldos"];
}
set
{
ViewState["DTAguinaldos"] = value;
}
}
private int tipocalculo
{
get
{
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)
{
if (!IsPostBack)
{
tipocalculo = 1;
using (ClsNominas objnom = new ClsNominas())
{
objnom.GetEjercicios(UsuarioActual.CveEmpresa);
DdlEjercicios.DataSource = objnom.DtResultados;
}
DdlEjercicios.DataBind();
try
{
DdlEjercicios.SelectedValueExistInsert(NowADS().Year, NowADS().Year.ToString());
}
catch (Exception) { }
DdlTipoPeriodo.DataSource = get_GlobalDTTipoPeriodo().FiltraParametros(" CveTipoPeriodo <> -1");
DdlTipoPeriodo.DataBind();
DdlTipoPeriodo.Items.Insert(0, new ListItem("Seleccione", "-1"));
if (DdlTipoPeriodo.Items.Count > 0)
{
DdlTipoPeriodo.SelectedIndex = 0;
}
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)
{
LtlUma.Text = onom.DtResultados.Rows[0]["UMA"].ToString();
}
}
}
}
protected void BtnCalcular_Click(object sender, EventArgs e)
{
int ejercicio = DdlEjercicios.SelectedValue.ToEntero();
int CveTipoPeriodo = DdlTipoPeriodo.SelectedValue.ToEntero();
int CvePeriodo = -1;
ejercicioActual = ejercicio;
using (ClsNominas objnom = new ClsNominas())
{
objnom.GetCalculoAguinaldo(ejercicio, UsuarioActual.CveEmpresa, 0, CveTipoPeriodo, CvePeriodo);
DTAguinaldos = objnom.DtResultados;
GVCalcularAguinaldo.DataSource = DTAguinaldos;
LtlTotal.Text = string.Format("{0:N2}", DTAguinaldos.SUM("Aguinaldo"));
LtlAutorizado.Text = string.Format("{0:N2}", DTAguinaldos.SUM("Aguinaldo", "CveNomina>0"));
LtldiasEjercicio.Text = string.Format("{0}/12/31", ejercicio).ToDate().DayOfYear.ToString();
}
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()
{
DataTable dtPeriodos = null;
using (ClsNominas ObjPeriodos = new ClsNominas())
{
if (ObjPeriodos.GetPeriodos(-1, UsuarioActual.CveEmpresa, DdlEjercicios.SelectedValue.ToEntero(), -1, -1))
{
dtPeriodos = ObjPeriodos.DtResultados.FiltraParametros("Estatus IN (0,1)");
}
ObjPeriodos.Dispose();
}
if (dtPeriodos != null && dtPeriodos.Rows.Count > 0)
{
DdlPeriodo.DataSource = dtPeriodos.FiltraParametros(string.Format(" CveTipoPeriodo={0}", DdlTipoPeriodoB.SelectedValue));
}
DdlPeriodo.DataBind();
DdlPeriodo.Items.Insert(0, new ListItem("Seleccione", "-1"));
UpModalAutorizar.Update();
}
protected void LnkAutorizarModal_Click(object sender, EventArgs e)
{
DdlTipoPeriodoB.ClearSelection();
DdlTipoPeriodoB.Items.Clear();
DdlTipoPeriodoB.DataSource = get_GlobalDTTipoPeriodo().FiltraParametros(string.Format("CveTipoPeriodo=6 OR CveTipoPeriodo={0}", DdlTipoPeriodo.SelectedValue));
DdlTipoPeriodoB.DataBind();
CargaPeriodos();
RegistraScript("$('#ModalAutorizar').modal();");
}
protected void LnkAutorizar_Click(object sender, EventArgs e)
{
bool continuar = true;
string mensaje = "";
//int DiasLaborados;
decimal Importe;
int CveMoneda = 1;
var CvePeriodoSeleccionado = DdlPeriodo.SelectedValue.ToEntero();
int ejercicio = DdlEjercicios.SelectedValue.ToEntero();
int CvePersonal;
int CvePeriodo;
decimal importeAjuste = 0;
decimal ImporteDescuento = 0;
decimal ImporteISR = 0;
decimal ImporteGravado = 0;
decimal ImporteExento = 0;
decimal ImporteValor = 0;
//string NombrePersonal = "";
int CveMetodoPago = 0;
int CveNomina = 0;
int CveConcepto = 0;
int CveConceptoISR = 0;
int CveConceptoDescuento = 0;
if (continuar)
{
using (ClsNominas objNomina = new ClsNominas())
{
objNomina.IniciaTransacSQL();
if (continuar)
{
//continuar = objNomina.UpADDdUtilidadesEjercicio(UsuarioActual.CveEmpresa, ejercicio, utilimporte, utilimporteAnt, false);
//if (continuar)
//{
// if (objNomina.DtResultados.Rows.Count < 0 || objNomina.DtResultados.Rows[0]["CONTimbrado"].ToString() == "1")
// continuar = false;
//}
}
if (continuar)
{
continuar = objNomina.GetConceptos(UsuarioActual.CveEmpresa);
}
if (continuar)
{
DataRow rowc = objNomina.DtResultados.FiltroPrimero("CveSistema=5");
if ((rowc != null))
{
CveConcepto = rowc["CveConcepto"].ToString().ToEntero();
}
DataRow rowcz = objNomina.DtResultados.FiltroPrimero("CveSistema=21");
if ((rowcz != null))
{
CveConceptoISR = rowcz["CveConcepto"].ToString().ToEntero();
}
DataRow rowcy = objNomina.DtResultados.FiltroPrimero("CveConceptoContable=174 AND Tipo ='D'");
if ((rowcz != null))
{
CveConceptoDescuento = rowcy["CveConcepto"].ToString().ToEntero();
}
//else
//{
// CveConcepto = objNomina.AddConcepto("PTU", "Utilidades", "P", "", true, true, -1, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, false, -1, -1, -1, 0, -1, 0, 0, 0, 0, 0);
//}
if (CveConcepto < 1)
{
continuar = false;
Alert("debe agregar un concepto para el calculo del aguinaldo", ModExtensiones.TipoMensaje.ToastAdventencia);
}
}
if (continuar)
{
foreach (GridViewRow gvrow in GVCalcularAguinaldo.Rows)
{
CveNomina = gvrow.DataKey("CveNomina").ToEntero();
CvePersonal = gvrow.DataKey("CvePersonal").ToEntero();
CveMetodoPago = gvrow.DataKey("CveMetodoPago").ToEntero();
Importe = gvrow.FCLabel("lblsueldoAguinaldo").Text.ToDecimal();
ImporteGravado = gvrow.FCLabel("lblAguinaldoGravado").Text.ToDecimal();
ImporteExento = Importe - ImporteGravado;
ImporteValor = gvrow.FCTextBox("TxtdiasAguinaldoprop").Text.ToEntero();
importeAjuste = gvrow.FCTextBox("TxtAjuste").Text.ToDecimal();
ImporteDescuento = gvrow.FCTextBox("TxtDescuento").Text.ToDecimal();
ImporteISR = gvrow.FCLabel("lblISRAguinaldo").Text.ToDecimal();
// foreach (DataRow row in DTAguinaldos.Rows)
//{
//DiasLaborados = row["DiasLaborados"].ToString().ToEntero();
CvePeriodo = CvePeriodoSeleccionado;
/*
if (continuar)
{CveNomina
continuar = objNomina.AddUtilidad(CvePersonal, Importe, CvePeriodo, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, ejercicio, DiasLaborados, SueldoTotal);
}*/
//CveNomina = 0;
//CvePersonal = row["CvePersonal"].ToString().ToEntero();
//CveMetodoPago = row["CveMetodoPago"].ToString().ToEntero();
//Importe = row["Aguinaldo"].ToString().ToDecimal();
//ImporteGravado = row["AguinaldoGravado"].ToString().ToDecimal();
//ImporteExento = Importe - ImporteGravado;
//ImporteValor = row["DiasLaborados"].ToString().ToDecimal();
if (CvePersonal > 0 && Importe > 0 && CveNomina == 0)
{
if (objNomina.GetNom_Nominas(-1, CvePersonal, CvePeriodoSeleccionado, -1, UsuarioActual.CveEmpresa))
{
if (objNomina.DtResultados.Rows.Count > 0)
{
CveNomina = objNomina.CveNomina;
}
else
{
if (objNomina.AddNom_Nominas(-1, 1, CvePersonal, CvePeriodoSeleccionado, Importe.ToString().ToDouble(), 0, 0, Importe.ToString().ToDouble(), CveMoneda, 1, CveMetodoPago, NowADS(), "Deducciones nómina",
"", "", "", "", 0, 0, 0, new DateTime(), new DateTime(), new DateTime(), UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, false))
{
CveNomina = objNomina.CveNomina;
}
else
{
continuar = false;
}
}
}
else
{
continuar = false;
}
if (CveNomina > 0)
{
if (continuar && !objNomina.AddUPNom_NominasDetalles(objNomina.CveNomina, CvePeriodoSeleccionado, CvePersonal, CveConcepto, Importe, ImporteGravado, ImporteExento, ImporteValor, UsuarioActual.CveUsuario, false, 1, 1, 1, false))
{
continuar = false;
}
if (continuar && !objNomina.AddUPNom_NominasDetalles(objNomina.CveNomina, CvePeriodoSeleccionado, CvePersonal, CveConceptoISR, ImporteISR, 0, ImporteISR, ImporteGravado, UsuarioActual.CveUsuario, false, 1, 1, 1, false))
{
continuar = false;
}
if (continuar && ImporteDescuento > 0 && !objNomina.AddUPNom_NominasDetalles(objNomina.CveNomina, CvePeriodoSeleccionado, CvePersonal, CveConceptoDescuento, ImporteDescuento, 0, ImporteDescuento, 0, UsuarioActual.CveUsuario, false, 1, 1, 1, false))
{
continuar = false;
}
}
else
{
continuar = false;
}
}
if (!continuar)
{
break;
}
}
}
//if (continuar & CvePeriodoSeleccionado > 0)
//{
// continuar = objNomina.CambiaEstatusPeriodo(CvePeriodoSeleccionado, (int)enumNominasEstatus.Activa, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa);
//}
if (continuar)
{
objNomina.Commit();
//objNomina.Commit();
}
else
{
mensaje = string.Format(" {0} ", mensaje);
objNomina.RollBack();
}
objNomina.Dispose();
}
}
if (mensaje.Length > 0)
{
Alert(mensaje, ModExtensiones.TipoMensaje.MsgAdvertencia);
continuar = false;
}
if (continuar)
{
RegistraScript("$('#ModalAutorizar').modal('hide');");
Alert("Se ha generado el aguinaldo.");
BtnCalcular_Click(null, null);
}
}
protected void DdlTipoPeriodoB_SelectedIndexChanged(object sender, EventArgs e)
{
CargaPeriodos();
}
protected void GVCalcularAguinaldo_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
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";
}
if (UsuarioActual.CveEmpresa == 154 || UsuarioActual.CveEmpresa == 153)
{
e.Row.FCTextBox("TxtsueldoDiario").Visible = (CvePersonal > 0);
e.Row.FCLabel("lblsueldoDiario").Visible = false;
e.Row.FCTextBox("TxtSalarioAguinaldo").Visible = (CvePersonal > 0);
e.Row.FCLabel("lblSalarioAguinaldo").Visible = false;
}
else
{
e.Row.FCTextBox("TxtsueldoDiario").Visible = false;
e.Row.FCLabel("lblsueldoDiario").Visible = true;
e.Row.FCTextBox("TxtSalarioAguinaldo").Visible = false;
e.Row.FCLabel("lblSalarioAguinaldo").Visible = true;
}
}
}
protected void BtnRecalcular_Click(object sender, EventArgs e)
{
tipocalculo = ddltipoCalculo.SelectedValue.ToEntero();
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);
GVCalcularAguinaldo.Columns[17].Visible = (tipocalculo == 2 || tipocalculo == 3);
GVCalcularAguinaldo.Columns[18].Visible = (tipocalculo == 2 || tipocalculo == 3);
GVCalcularAguinaldo.Columns[19].Visible = (tipocalculo == 2 || tipocalculo == 3);
decimal uma = LtlUma.Text.ToDecimal();
decimal aguiexentogral = uma * 30;
decimal salarioAguinaldo = 0;
decimal salariodiario = 0;
decimal diasanio = 365;
//decimal diaslaborados = 0;
//decimal diasaguinaldo = 0;
decimal diasaguipago = 0;
decimal salariomensual = 0;
decimal aguinaldo = 0;
decimal aguinaldoexcento = 0;
decimal aguinaldogravado = 0;
decimal diasmes = 30.4m;
decimal FraccionI = 0;
decimal FraccionII_1 = 0;
decimal FraccionII_2 = 0;
decimal FraccionIII_1 = 0;
decimal FraccionIII_2 = 0;
decimal FraccionV = 0;
decimal FraccionIV = 0;
//decimal aguinaldoExcentoreg = 0;
decimal Aguinaldoapagar = 0;
decimal descuento = 0;
decimal ajuste = 0;
decimal aguinaldoSubproyeto = 0;
decimal aguinaldogravadoSubproyeto = 0;
decimal descuentoSubproyeto = 0;
decimal ajusteSubproyeto = 0;
decimal ISRSubproyeto = 0;
decimal AguinaldoapagarTotalSubproyeto = 0;
decimal aguinaldoTotal = 0;
decimal aguinaldogravadoTotal = 0;
decimal descuentoTotal = 0;
decimal ajusteTotal = 0;
decimal ISRTOTAL = 0;
decimal AguinaldoapagarTotal = 0;
decimal totalgravado = 0;
decimal isrtotalgravado = 0;
decimal isrmensual = 0;
decimal lisr = 0;
GridViewRow gvrowTotal = null;
GridViewRow gvrowSubProyecto = null;
int CvePersonal = 0;
int CveSubProyecto = 0;
StringBuilder str = new StringBuilder();
using (ClsNominas objbase = new ClsNominas())
{
foreach (GridViewRow gvrow in GVCalcularAguinaldo.Rows)
{
CveSubProyecto = gvrow.DataKey("CveSubProyecto").ToEntero();
CvePersonal = gvrow.DataKey("CvePersonal").ToEntero();
salarioAguinaldo = gvrow.FCTextBox("TxtSalarioAguinaldo").Text.ToDecimal();
salariodiario = gvrow.FCTextBox("TxtsueldoDiario").Text.ToDecimal();
//diaslaborados = gvrow.FCLabel("TxtdiasLaborados").Text.ToDecimal();
//diasaguinaldo = gvrow.FCLabel("TxtdiasAguinaldo").Text.ToDecimal();
descuento = gvrow.FCTextBox("TxtDescuento").Text.ToDecimal();
ajuste = gvrow.FCTextBox("TxtAjuste").Text.ToDecimal();
//aguinaldoExcentoreg = gvrow.FCTextBox("TxtAguinaldoExento").Text.ToDecimal(); TxtdiasAguinaldoprop
if (CvePersonal > 0)
{
if (salariodiario > 0)
{
diasaguipago = gvrow.FCTextBox("TxtdiasAguinaldoprop").Text.ToDecimal();// (diaslaborados / diasanio) * diasaguinaldo;
salariomensual = salariodiario * 30;
aguinaldo = (diasaguipago * salarioAguinaldo) + ajuste;
/*if (gvrow.FCTextBox("TxtAguinaldoExento").Text.Length > 0)
{
aguinaldoexcento = (aguinaldoExcentoreg > aguinaldo ? aguinaldo : aguinaldoExcentoreg);
gvrow.FCTextBox("TxtAguinaldoExento").Text = string.Format("{0}", aguinaldoexcento);
}
else
{
}*/
aguinaldoexcento = (aguiexentogral > aguinaldo ? aguinaldo : aguiexentogral);
aguinaldogravado = aguinaldo - aguinaldoexcento;
if (aguinaldogravado > 0)
{
totalgravado = aguinaldogravado + salariomensual;
if (objbase.CalculosISRAguinaldo(totalgravado, salariomensual, diasmes, DdlEjercicios.SelectedValue.ToEntero()))
{
DataRow drow = objbase.DtResultados.Rows[0];
isrtotalgravado = drow["isrFraccionII_2"].ToString().ToDecimal();
isrmensual = drow["isrFraccionIII_1"].ToString().ToDecimal();
}
else { break; }
lisr = isrtotalgravado - isrmensual;
FraccionI = (aguinaldogravado / diasanio) * diasmes;
FraccionII_1 = salariomensual + FraccionI;
//str.Clear();
//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()))
{
DataRow drow = objbase.DtResultados.Rows[0];
FraccionII_2 = drow["isrFraccionII_2"].ToString().ToDecimal();
FraccionIII_1 = drow["isrFraccionIII_1"].ToString().ToDecimal();
}
else { break; }
FraccionIII_2 = FraccionII_2 - FraccionIII_1;
FraccionV = FraccionIII_2 / FraccionI;
FraccionIV = aguinaldogravado * FraccionV;
Aguinaldoapagar = aguinaldo - FraccionIV;
}
else
{
totalgravado = 0;
isrtotalgravado = 0;
isrmensual = 0;
lisr = 0;
FraccionIV = 0;
Aguinaldoapagar = aguinaldo - FraccionIV;
}
}
else
{
aguinaldo = 0;
Aguinaldoapagar = 0;
aguinaldogravado = 0;
FraccionIV = 0;
}
if (tipocalculo == 2)
{
FraccionIV = lisr;
}
if (tipocalculo == 3 && FraccionIV > lisr)
{
FraccionIV = lisr;
}
Aguinaldoapagar = aguinaldo - FraccionIV;
Aguinaldoapagar = Aguinaldoapagar - descuento;
aguinaldogravadoSubproyeto += aguinaldogravado;
descuentoSubproyeto += descuento;
ajusteSubproyeto += ajuste;
aguinaldoSubproyeto += aguinaldo;
ISRSubproyeto += FraccionIV;
AguinaldoapagarTotalSubproyeto += Aguinaldoapagar;
aguinaldogravadoTotal += aguinaldogravado;
descuentoTotal += descuento;
ajusteTotal += ajuste;
ISRTOTAL += FraccionIV;
aguinaldoTotal += aguinaldo;
AguinaldoapagarTotal += Aguinaldoapagar;
gvrow.FCLabel("lblsueldoAguinaldo").Text = string.Format("${0:N2}", aguinaldo);
gvrow.FCLabel("lblAguinaldoGravado").Text = string.Format("${0:N2}", aguinaldogravado);
gvrow.FCLabel("lblFraccion1").Text = string.Format("${0:N2}", FraccionI);
gvrow.FCLabel("lblFraccion2").Text = string.Format("${0:N2}", FraccionII_2);
gvrow.FCLabel("lblFraccion3").Text = string.Format("${0:N2}", FraccionIII_2);
gvrow.FCLabel("lblFraccion4").Text = string.Format("${0:N2}", FraccionIV);
gvrow.FCLabel("lbltotalgravado").Text = string.Format("${0:N2}", totalgravado);
gvrow.FCLabel("lblISRTotal").Text = string.Format("${0:N2}", isrtotalgravado);
gvrow.FCLabel("lblISRMensual").Text = string.Format("${0:N2}", isrmensual);
gvrow.FCLabel("lblISRAguinaldo").Text = string.Format("${0:N2}", FraccionIV);
gvrow.FCLabel("lblAguinaldo").Text = string.Format("${0:N2}", Aguinaldoapagar);
}
else
{
if (gvrowSubProyecto != null)
{
gvrowSubProyecto.FCLabel("lblISRAguinaldo").Text = string.Format("${0:N2}", ISRSubproyeto);
gvrowSubProyecto.FCLabel("lblAguinaldoGravado").Text = string.Format("${0:N2}", aguinaldogravadoSubproyeto);
gvrowSubProyecto.FCLabel("lblDescuento").Text = string.Format("${0:N2}", descuentoSubproyeto);
gvrowSubProyecto.FCLabel("lblAjuste").Text = string.Format("${0:N2}", ajusteSubproyeto);
gvrowSubProyecto.FCLabel("lblsueldoAguinaldo").Text = string.Format("${0:N2}", aguinaldoSubproyeto);
gvrowSubProyecto.FCLabel("lblAguinaldo").Text = string.Format("${0:N2}", AguinaldoapagarTotalSubproyeto);
}
if (CveSubProyecto > 0)
{
gvrowSubProyecto = gvrow;
}
else
{
gvrowTotal = gvrow;
}
ISRSubproyeto = 0;
aguinaldogravadoSubproyeto = 0;
aguinaldoSubproyeto = 0;
AguinaldoapagarTotalSubproyeto = 0;
descuentoSubproyeto = 0;
ajusteSubproyeto = 0;
gvrow.CssClass = "Totales"; gvrow.FCTextBox("TxtDescuento").Visible = false; gvrow.FCTextBox("TxtAjuste").Visible = false;
gvrow.FCTextBox("TxtdiasAguinaldoprop").Visible = false;
}
}
}
if (gvrowSubProyecto != null)
{
gvrowSubProyecto.FCLabel("lblISRAguinaldo").Text = string.Format("${0:N2}", ISRSubproyeto);
gvrowSubProyecto.FCLabel("lblAguinaldoGravado").Text = string.Format("${0:N2}", aguinaldogravadoSubproyeto);
gvrowSubProyecto.FCLabel("lblDescuento").Text = string.Format("${0:N2}", descuentoSubproyeto);
gvrowSubProyecto.FCLabel("lblAjuste").Text = string.Format("${0:N2}", ajusteSubproyeto);
gvrowSubProyecto.FCLabel("lblsueldoAguinaldo").Text = string.Format("${0:N2}", aguinaldoSubproyeto);
gvrowSubProyecto.FCLabel("lblAguinaldo").Text = string.Format("${0:N2}", AguinaldoapagarTotalSubproyeto);
}
if (gvrowTotal != null)
{
gvrowTotal.FCLabel("lblISRAguinaldo").Text = string.Format("${0:N2}", ISRTOTAL);
gvrowTotal.FCLabel("lblAguinaldoGravado").Text = string.Format("${0:N2}", aguinaldogravadoTotal);
gvrowTotal.FCLabel("lblDescuento").Text = string.Format("${0:N2}", descuentoTotal);
gvrowTotal.FCLabel("lblAjuste").Text = string.Format("${0:N2}", ajusteTotal);
gvrowTotal.FCLabel("lblsueldoAguinaldo").Text = string.Format("${0:N2}", aguinaldoTotal);
gvrowTotal.FCLabel("lblAguinaldo").Text = string.Format("${0:N2}", AguinaldoapagarTotal);
}
LtlTotal.Text = string.Format("${0:N2}", AguinaldoapagarTotal);
}
protected void LnkDownExcel_Click(object sender, EventArgs e)
{
// GVCalcularAguinaldo.ExportToExcelX(string.Format("Aguinaldo {0}", DdlEjercicios.SelectedItem.Text));
ClosedXML.Excel.XLWorkbook wb = new ClosedXML.Excel.XLWorkbook();
var libro = wb.AddWorksheet("Nomina");
int fila = 0;
fila = fila + 1;
int filatitulo = fila;
libro.SheetView.Freeze(filatitulo, 1);
int cxc = 1;
libro.Cell(fila, cxc++).Value = "Código";
libro.Cell(fila, cxc++).Value = "Empleado";
libro.Cell(fila, cxc++).Value = "Fecha ingreso";//lblfechaingreso
libro.Cell(fila, cxc++).Value = "Salario diario";
libro.Cell(fila, cxc++).Value = "Salario Aguinaldo";
libro.Cell(fila, cxc++).Value = "Días laborados";
libro.Cell(fila, cxc++).Value = "Días Faltados";
libro.Cell(fila, cxc++).Value = "Días Incapacidad";
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 gravado";
libro.Cell(fila, cxc++).Value = "Aguinaldo exento";
libro.Cell(fila, cxc++).Value = "Fraccion I"; //lblFraccion1
libro.Cell(fila, cxc++).Value = "Fraccion II"; //lblFraccion2
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 = "Aguinaldo por pagar";
libro.Range(fila, 1, fila, 20).Style.Font.FontColor = ClosedXML.Excel.XLColor.White;
libro.Range(fila, 1, fila, 20).Style.Fill.SetBackgroundColor(ClosedXML.Excel.XLColor.FromArgb(79, 129, 189));
foreach (GridViewRow gvrow in GVCalcularAguinaldo.Rows)
{
fila = fila + 1;
if (!(gvrow.DataKey("CvePersonal").ToEntero() > 0))
{
if (gvrow.DataKey("CveSubProyecto").ToEntero() > 0)
{
libro.Range(fila, 1, fila, 20).Style.Fill.SetBackgroundColor(ClosedXML.Excel.XLColor.FromArgb(217, 217, 217));
}
else
{
libro.Range(fila, 1, fila, 20).Style.Font.FontColor = ClosedXML.Excel.XLColor.White;
libro.Range(fila, 1, fila, 20).Style.Fill.SetBackgroundColor(ClosedXML.Excel.XLColor.FromArgb(128, 128, 128));
}
}
cxc = 1;
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();
libro.Cell(fila, cxc++).Value = gvrow.FCTextBox("TxtSalarioAguinaldo").Text.ToDecimal();
libro.Cell(fila, cxc++).Value = gvrow.FCLabel("TxtdiasLaborados").Text.ToDecimal();
libro.Cell(fila, cxc++).Value = gvrow.FCLabel("TxtdiasFaltados").Text.ToDecimal();
libro.Cell(fila, cxc++).Value = gvrow.FCLabel("TxtdiasIncapacidad").Text.ToDecimal();
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();
libro.Cell(fila, cxc++).Value = gvrow.FCLabel("lblFraccion1").Text.ToDecimal();
libro.Cell(fila, cxc++).Value = gvrow.FCLabel("lblFraccion2").Text.ToDecimal();
libro.Cell(fila, cxc++).Value = gvrow.FCLabel("lblFraccion3").Text.ToDecimal();
libro.Cell(fila, cxc++).Value = gvrow.FCLabel("lblFraccion4").Text.ToDecimal();
libro.Cell(fila, cxc++).Value = gvrow.FCLabel("lblISRAguinaldo").Text.ToDecimal();
libro.Cell(fila, cxc++).Value = gvrow.FCTextBox("TxtDescuento").Text.ToDecimal();
libro.Cell(fila, cxc++).Value = gvrow.FCLabel("lblAguinaldo").Text.ToDecimal();
}
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, 11, fila + 1, 20).Style.NumberFormat.Format = "$###,###,###,##0.00";
libro.ColumnsUsed().AdjustToContents();
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} {1}.xlsx", "Aguinaldo", DdlEjercicios.SelectedValue));
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();
}
}