-
+
@@ -5096,138 +5101,224 @@
-
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- <%--
+
+
+
+
+
+
+
+
+
+ <%----%>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <%--
@@ -5237,61 +5328,61 @@
--%>
- <%--
+ <%--
--%>
- <%--
+ <%--
--%>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
+
+
-
-
-
+
+
+
diff --git a/Nomina/Nomina.aspx.cs b/Nomina/Nomina.aspx.cs
index 34b16d180..89721786b 100644
--- a/Nomina/Nomina.aspx.cs
+++ b/Nomina/Nomina.aspx.cs
@@ -40,6 +40,16 @@ public partial class Nomina_Nomina2 : ClsPaginas
}
set { ViewState["DtNomOcultarMostrar"] = value; }
}
+
+ private DataTable DtNomPersonalizarxls
+ {
+ get
+ {
+ if (ViewState["DtNomPersonalizarxls"] == null) { return null; }
+ else { return (DataTable)ViewState["DtNomPersonalizarxls"]; }
+ }
+ set { ViewState["DtNomPersonalizarxls"] = value; }
+ }
private DateTime FechaInicioPeriodo
{
get
@@ -349,6 +359,11 @@ public partial class Nomina_Nomina2 : ClsPaginas
DtNomOcultarMostrar.Columns.Add("TipoDB");
DtNomOcultarMostrar.Columns.Add("ColumnaDB");
+ DtNomPersonalizarxls = new DataTable();
+ DtNomPersonalizarxls.Columns.Add("Columna");
+ DtNomPersonalizarxls.Columns.Add("Tipo");
+ DtNomPersonalizarxls.Columns.Add("TipoDB");
+ DtNomPersonalizarxls.Columns.Add("ColumnaDB");
}
TxtEjercicioFiltroVacaciones.Text = "2023";
@@ -677,6 +692,7 @@ public partial class Nomina_Nomina2 : ClsPaginas
LnkAsistenciaIncidencias.Visible = true;
LnkFormatoTabular.Visible = true;
+ LnkPersonalizarNomina.Visible = true;
LnkFormatoFiscal.Visible = (UsuarioActual.CveEmpresa == 141 || UsuarioActual.CveRol == 1);
HypPDFSTimbrados.Visible = true;
if (objnom.GetNominaEmpleado(FiltCveProyecto, FiltCveSubProyecto, FiltCveTurno, FiltCvePeriodo, CveEmpresa, FiltAgrupador,
@@ -4812,6 +4828,418 @@ public partial class Nomina_Nomina2 : ClsPaginas
}
#endregion
+
+ protected void LnkPersonalizarNomina_Click(object sender, EventArgs e)
+ {
+
+ DtNomPersonalizarxls.Rows.Clear();
+ DataTable dtColumnas = GetTablaColumnasConceptos();
+ DdlMOPXColumna.DataSource = dtColumnas;
+ DdlMOPXColumna.DataBind();
+
+
+ {
+ addcoltopersonalizar("Codigo", "0", "Codigo", "");
+ addcoltopersonalizar("Nombre", "0", "Empleado", "");
+ addcoltopersonalizar("Sueldo Mensual", "0", "", "");
+ addcoltopersonalizar("Sueldo diario", "0", "", "");
+ addcoltopersonalizar("Dias Pen Pago", "0", "", "");
+
+
+ foreach (DataRow row in dtConceptos.FiltraParametros("Tipo ='P' AND EsPadre = 1 AND SoloVisible =0").Rows)
+ {
+ if (!(dtempleados.SUM(string.Format("[V_{0}]", row["CveConcepto"].ToString())) == 0))
+ {
+ addcoltopersonalizar(row["Concepto"].ToString(), "1", string.Format("[V_{0}]", row["CveConcepto"].ToString()), row["Codigo"].ToString());
+ }
+
+ }
+ //addcoltopersonalizar("Percepciones", "1", "Percepciones", "");
+ addcoltopersonalizar("Incapacidad Permisos Faltas", "0", "", "");
+
+
+ foreach (DataRow row in dtConceptos.FiltraParametros("Tipo = 'D' AND EsPadre = 1 AND SoloVisible =0").Rows)//
+ {
+ if (!(dtempleados.SUM(string.Format("[V_{0}]", row["CveConcepto"].ToString())) == 0))
+ {
+ addcoltopersonalizar(row["Concepto"].ToString(), "1", string.Format("[V_{0}]", row["CveConcepto"].ToString()), row["Codigo"].ToString());
+ }
+
+ }
+ //addcoltopersonalizar("Deducciones", "1", "Deducciones", "");
+ addcoltopersonalizar("Neto a Pagar", "1", "Total", "");
+
+
+
+ //foreach (DataRow row in dtConceptos.FiltraParametros("Tipo = 'O' AND EsPadre = 1 AND SoloVisible =0").Rows)//SoloVisible =0
+ //{
+ // if (!(dtempleados.SUM(string.Format("[V_{0}]", row["CveConcepto"].ToString())) == 0))
+ // {
+ // addcoltopersonalizar(row["Concepto"].ToString(), "1", string.Format("[V_{0}]", row["CveConcepto"].ToString()), row["Codigo"].ToString());
+ // }
+
+ //}
+ //addcoltopersonalizar("Obligaciones", "1", "Obligaciones", "");
+ }
+
+
+ GvPersonalizarExcel.DataSource = DtNomPersonalizarxls;
+ GvPersonalizarExcel.DataBind();
+ UpPersonalizarxls.Update();
+
+
+
+ RegistraScript(string.Format("$('#divPersonalizarNomina').modal();"));
+ //
+ }
+ public void addcoltopersonalizar(string Columna, string Tipo, string ColumnaDB, string TipoDB)
+ {
+ DataRow drorden = DtNomPersonalizarxls.NewRow();
+ drorden["Columna"] = Columna;
+ drorden["Tipo"] = Tipo;
+ drorden["ColumnaDB"] = ColumnaDB;
+ drorden["TipoDB"] = TipoDB;
+ DtNomPersonalizarxls.Rows.Add(drorden);
+
+ }
+ protected void LnkMoPXAgregar_Click(object sender, EventArgs e)
+ {
+
+ {
+ DataRow drorden = DtNomPersonalizarxls.NewRow();
+ drorden["Columna"] = DdlMOPXColumna.SelectedItem.Text;
+ drorden["Tipo"] = "0";
+ drorden["ColumnaDB"] = DdlMOPXColumna.SelectedItem.Value;
+ //drorden["TipoDB"] = DdlMOTipo.SelectedItem.Value;
+ DtNomPersonalizarxls.Rows.Add(drorden);
+ }
+
+ GvPersonalizarExcel.DataSource = DtNomPersonalizarxls;
+ GvPersonalizarExcel.DataBind();
+ UpPersonalizarxls.Update();
+ }
+
+
+ protected void LnkEliminarPersonalizar_Click(object sender, EventArgs e)
+ {
+ GridViewRow gvRow = (GridViewRow)((LinkButton)sender).NamingContainer;
+ string Columna = gvRow.DataKey("Columna");
+ string ColumnaDB = gvRow.DataKey("ColumnaDB");
+ string TipoDB = gvRow.DataKey("TipoDB");
+ DataRow dr = null;
+ foreach (DataRow item in DtNomPersonalizarxls.Rows)
+ {
+ if (item["ColumnaDB"].ToString() == ColumnaDB && item["Columna"].ToString() == Columna)
+ {
+ dr = item;
+ }
+ }
+ if (dr != null)
+ {
+ dr.Delete();
+ DtNomPersonalizarxls.AcceptChanges();
+ }
+ GvPersonalizarExcel.DataSource = DtNomPersonalizarxls;
+ GvPersonalizarExcel.DataBind();
+ UpPersonalizarxls.Update();
+
+ }
+ protected void LnkFormatoPersonalizado_Click(object sender, EventArgs e)
+ {
+ try
+ {
+ ClosedXML.Excel.XLWorkbook wb = new ClosedXML.Excel.XLWorkbook();
+ var libro = wb.AddWorksheet("Nomina");
+ int column = 1;
+ int filainicio = 3;
+ libro.Cell(filainicio + 1, column).Value = " ";
+ libro.Cell(filainicio + 2, column).Value = "Codigo";
+ libro.Cell(filainicio + 3, column).Value = " ";
+ column++;
+ libro.Cell(filainicio + 1, column).Value = " ";
+ libro.Cell(filainicio + 2, column).Value = "Empleado";
+ libro.Cell(filainicio + 3, column).Value = " ";
+ libro.Column(column).Width = 35;
+ libro.Cell(1, 1).Value = "Empresa";
+ libro.Range(1, 2, 1, 4).Merge().Value = UsuarioActual.Empresa.Empresa;
+ libro.Cell(2, 1).Value = "período";
+ string periodo = DdlPeriodo.SelectedItem.Text;
+ periodo = periodo.Substring(0, (periodo.Length > 27 ? 27 : periodo.Length));
+ libro.Range(2, 2, 2, 4).Merge().Value = periodo;
+
+ int iniciotipe = column;
+
+ column++;
+ libro.Range(filainicio + 2, column, filainicio + 2, column).Merge().Value = "Mensual";
+ libro.Range(filainicio + 3, column, filainicio + 3, column).Merge().Value = "Sueldo";
+ libro.Column(column).Width = 15;
+
+ column++;
+ libro.Range(filainicio + 2, column, filainicio + 2, column).Merge().Value = "Sueldo";
+ libro.Range(filainicio + 3, column, filainicio + 3, column).Merge().Value = "diario";
+ libro.Column(column).Width = 15;
+
+ column++;
+ libro.Range(filainicio + 2, column, filainicio + 2, column).Merge().Value = "dias Pen";
+ libro.Range(filainicio + 3, column, filainicio + 3, column).Merge().Value = "Pago";
+ libro.Column(column).Width = 15;
+ foreach (DataRow row in dtConceptos.FiltraParametros("Tipo ='P' AND EsPadre = 1 AND SoloVisible =0").Rows)
+ {
+
+ column++;
+ libro.Cell(filainicio + 2, column).Value = row["Concepto"].ToString();
+ libro.Cell(filainicio + 3, column).Value = row["Codigo"].ToString();
+ libro.Column(column).Width = 15;
+ if ((dtempleados.SUM(string.Format("[V_{0}]", row["CveConcepto"].ToString())) == 0))
+ {
+ libro.Column(column).Hide();
+ }
+
+ }
+ //column++;
+ //libro.Range(filainicio + 2, column, filainicio + 3, column).Merge().Value = "Percepciones";
+ //libro.Column(column).Width = 15;
+ //if (iniciotipe < column)
+ //{
+ // libro.Range(filainicio + 1, iniciotipe + 1, filainicio + 1, column).Style.Alignment.Horizontal = ClosedXML.Excel.XLAlignmentHorizontalValues.Center;
+ // libro.Range(filainicio + 1, iniciotipe + 1, filainicio + 1, column).Merge().Value = "Percepciones";
+ //}
+ iniciotipe = column;
+
+
+ column++;
+ libro.Range(filainicio + 2, column, filainicio + 2, column).Merge().Value = "Incapacidad";
+ libro.Range(filainicio + 3, column, filainicio + 3, column).Merge().Value = "Perm. Faltas";
+ libro.Column(column).Width = 15;
+ foreach (DataRow row in dtConceptos.FiltraParametros("Tipo = 'D' AND EsPadre = 1 AND SoloVisible =0").Rows)
+ {
+ column++;
+ libro.Cell(filainicio + 2, column).Value = row["Concepto"].ToString();
+ libro.Cell(filainicio + 3, column).Value = row["Codigo"].ToString();
+ libro.Column(column).Width = 15;
+ if ((dtempleados.SUM(string.Format("[V_{0}]", row["CveConcepto"].ToString())) == 0))
+ {
+ libro.Column(column).Hide();
+ }
+
+ }
+
+ //column++;
+ //libro.Range(filainicio + 2, column, filainicio + 3, column).Merge().Value = "Deducciones";
+ //libro.Column(column).Width = 15;
+
+ //if (iniciotipe < column)
+ //{
+ // libro.Range(filainicio + 1, iniciotipe + 1, filainicio + 1, column).Style.Alignment.Horizontal = ClosedXML.Excel.XLAlignmentHorizontalValues.Center;
+ // libro.Range(filainicio + 1, iniciotipe + 1, filainicio + 1, column).Merge().Value = "Deducciones";
+ //}
+
+ //column++;
+ //libro.Cell(filainicio + 1, column).Value = " ";
+ //libro.Range(filainicio + 2, column, filainicio + 3, column).Merge().Value = "Despensa";
+ //libro.Column(column).Width = 15;
+ column++;
+ libro.Cell(filainicio + 1, column).Value = " ";
+ libro.Range(filainicio + 2, column, filainicio + 3, column).Merge().Value = "Total";
+ libro.Column(column).Width = 15;
+ iniciotipe = column;
+
+
+
+ //if (iniciotipe < column)
+ //{
+ // libro.Range(filainicio + 1, iniciotipe + 1, filainicio + 1, column).Style.Alignment.Horizontal = ClosedXML.Excel.XLAlignmentHorizontalValues.Center;
+ // libro.Range(filainicio + 1, iniciotipe + 1, filainicio + 1, column).Merge().Value = "Obligaciones";
+ //}
+
+ //libro.Row(1).CellsUsed().Style.Font.FontColor = ClosedXML.Excel.XLColor.White;
+ //libro.Row(2).CellsUsed().Style.Font.FontColor = ClosedXML.Excel.XLColor.White;
+ //libro.Row(3).CellsUsed().Style.Font.FontColor = ClosedXML.Excel.XLColor.White;
+ //libro.Row(1).CellsUsed().Style.Fill.SetBackgroundColor(ClosedXML.Excel.XLColor.FromArgb(177, 160, 199));
+ //libro.Row(2).CellsUsed().Style.Fill.SetBackgroundColor(ClosedXML.Excel.XLColor.FromArgb(79, 129, 189));
+ //libro.Row(3).Cell(1).Style.Fill.SetBackgroundColor(ClosedXML.Excel.XLColor.FromArgb(79, 129, 189));
+ //libro.Row(3).CellsUsed().Style.Fill.SetBackgroundColor(ClosedXML.Excel.XLColor.FromArgb(79, 129, 189));
+ int maxnocolumn = column;
+
+ int Fila = filainicio + 3;
+ int cveSupProyecto = -5;
+ string subproyecto = "";
+ string oldsubproyecto = "";
+ int oldcveSupProyecto = -5;
+ bool newsubproyecto = false;
+ bool newsubproyectoTitulo = false;
+ List
filasborrar= new List();
+ DataTable dtsr = dtempleados.FiltraParametros("", "CveSubProyecto");
+ dtsr.Rows.Add(dtsr.NewRow());
+ foreach (DataRow erow in dtsr.Rows)
+ {
+ Fila++;
+ newsubproyecto = false; newsubproyectoTitulo = false;
+ if (cveSupProyecto != erow["CveSubProyecto"].ToString().ToEntero())
+ {
+
+ if (oldcveSupProyecto != -5) { Fila += 2; newsubproyecto = true; }
+ oldcveSupProyecto = cveSupProyecto;
+ cveSupProyecto = erow["CveSubProyecto"].ToString().ToEntero();
+ subproyecto = erow["SubProyecto"].ToString();
+ if (cveSupProyecto != -5 && oldcveSupProyecto != -5) { Fila++; newsubproyectoTitulo = true; }
+ }
+ column = 1;
+ libro.Cell(Fila, column).Value = string.Format("'{0}", erow["Codigo"]);
+ column++;
+ if (newsubproyectoTitulo)
+ {
+ filasborrar.Add(Fila - 1);
+ libro.Cell(Fila - 1, column).Value = subproyecto;
+ libro.Range(Fila - 1, 1, Fila - 1, maxnocolumn).Style.Fill.SetBackgroundColor(ClosedXML.Excel.XLColor.FromArgb(155, 194, 230));
+ }
+ if (newsubproyecto)
+ {
+ libro.Cell(Fila - 3, column).Value = string.Format("Total {0}", oldsubproyecto);
+ libro.Range(Fila - 3, 1, Fila - 3, maxnocolumn).Style.Fill.SetBackgroundColor(ClosedXML.Excel.XLColor.FromArgb(155, 194, 230));
+ }
+ oldsubproyecto = subproyecto;
+ libro.Cell(Fila, column).Value = erow["Nombre"];
+
+
+ column++;
+ libro.Cell(Fila, column).Value = "";
+
+ column++;
+ libro.Cell(Fila, column).Value = erow["SalarioDiario"];
+
+ column++;
+ libro.Cell(Fila, column).Value = "";
+ foreach (DataRow row in dtConceptos.FiltraParametros("Tipo = 'P' AND EsPadre = 1 AND SoloVisible =0").Rows)
+ {
+ column++;
+ string Concepto = string.Format("V_{0}", row["CveConcepto"]);
+ libro.Cell(Fila, column).Value = erow[Concepto];
+
+
+ if (newsubproyecto)
+ {
+ libro.Cell(Fila - 3, column).Value = dtempleados.SUM(Concepto, string.Format("CveSubProyecto ={0} AND CvePersonal > 0 ", oldcveSupProyecto));
+ }
+
+ }
+
+ //column++;
+ //libro.Cell(Fila, column).Style.Fill.SetBackgroundColor(ClosedXML.Excel.XLColor.FromArgb(166, 166, 166));
+ //libro.Cell(Fila, column).Value = erow["SumaPercepciones"];
+ //if (newsubproyecto)
+ //{
+ // libro.Cell(Fila - 3, column).Value = dtempleados.SUM("SumaPercepciones", string.Format("CveSubProyecto ={0} AND CvePersonal > 0 ", oldcveSupProyecto));
+ //}
+
+
+ column++;
+ libro.Cell(Fila, column).Value = "";
+ foreach (DataRow row in dtConceptos.FiltraParametros("Tipo = 'D' AND EsPadre = 1 AND SoloVisible =0").Rows)
+ {
+ column++;
+ string Concepto = string.Format("V_{0}", row["CveConcepto"]);
+ libro.Cell(Fila, column).Value = erow[Concepto];
+
+ if (newsubproyecto)
+ {
+ libro.Cell(Fila - 3, column).Value = dtempleados.SUM(Concepto, string.Format("CveSubProyecto ={0} AND CvePersonal > 0 ", oldcveSupProyecto));
+ }
+ }
+
+ //column++;
+ //libro.Cell(Fila, column).Style.Fill.SetBackgroundColor(ClosedXML.Excel.XLColor.FromArgb(166, 166, 166));
+ //libro.Cell(Fila, column).Value = erow["SumaDeducciones"];
+ //if (newsubproyecto)
+ //{
+ // libro.Cell(Fila - 3, column).Value = dtempleados.SUM("SumaDeducciones", string.Format("CveSubProyecto ={0} AND CvePersonal > 0 ", oldcveSupProyecto));
+ //}
+ //column++;
+ //libro.Cell(Fila, column).Style.Fill.SetBackgroundColor(ClosedXML.Excel.XLColor.FromArgb(166, 166, 166));
+ //libro.Cell(Fila, column).Value = erow["SumaEspecie"];
+ //if (newsubproyecto)
+ //{
+ // libro.Cell(Fila - 3, column).Value = dtempleados.SUM("SumaEspecie", string.Format("CveSubProyecto ={0} AND CvePersonal > 0 ", oldcveSupProyecto));
+ //}
+ column++;
+ libro.Cell(Fila, column).Style.Fill.SetBackgroundColor(ClosedXML.Excel.XLColor.FromArgb(166, 166, 166));
+ libro.Cell(Fila, column).Value = erow["Total"];
+ if (newsubproyecto)
+ {
+ libro.Cell(Fila - 3, column).Value = dtempleados.SUM("Total", string.Format("CveSubProyecto ={0} AND CvePersonal > 0 ", oldcveSupProyecto));
+ }
+
+ //foreach (DataRow row in dtConceptos.FiltraParametros("Tipo = 'O' AND EsPadre = 1 ").Rows)
+ //{
+ // column++;
+ // string Concepto = string.Format("V_{0}", row["CveConcepto"]);
+ // libro.Cell(Fila, column).Value = erow[Concepto];
+
+ // if (newsubproyecto)
+ // {
+ // libro.Cell(Fila - 3, column).Value = dtempleados.SUM(Concepto, string.Format("CveSubProyecto ={0} AND CvePersonal > 0 ", oldcveSupProyecto));
+ // }
+ //}
+
+ //column++;
+ //libro.Cell(Fila, column).Style.Fill.SetBackgroundColor(ClosedXML.Excel.XLColor.FromArgb(166, 166, 166));
+ //libro.Cell(Fila, column).Value = erow["SumaObligaciones"];
+ //if (newsubproyecto)
+ //{
+ // libro.Cell(Fila - 3, column).Value = dtempleados.SUM("SumaObligaciones", string.Format("CveSubProyecto ={0} AND CvePersonal > 0 ", oldcveSupProyecto));
+ //}
+ }
+
+
+ libro.Range(filainicio + 1, 1, filainicio + 4, maxnocolumn).Style.Font.FontColor = ClosedXML.Excel.XLColor.White;
+ libro.Range(filainicio + 1, 1, filainicio + 4, maxnocolumn).Style.Fill.SetBackgroundColor(ClosedXML.Excel.XLColor.FromArgb(79, 129, 189));
+ {
+ var columnsToDelete = new List();
+ foreach (var columnx in libro.Columns())
+ {
+ if (columnx.IsHidden)
+ {
+ columnsToDelete.Add(columnx.ColumnNumber());
+ }
+ }
+
+ // Eliminar columnas de mayor a menor para evitar conflictos de índice
+ columnsToDelete.Sort();
+ columnsToDelete.Reverse();
+ foreach (var columnNumber in columnsToDelete)
+ {
+ libro.Column(columnNumber).Delete();
+ }
+ }
+ filasborrar.Reverse();
+ foreach (int rownumber in filasborrar)
+ {
+ libro.Rows(rownumber, rownumber).Delete();
+ }
+ 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", "Nomina tabular", periodo));
+ Response.BinaryWrite(memoryStream.ToArray());
+ Response.End();
+ }
+ catch (Exception ex)
+ {
+ Alert("Ocurrio un error al generar el Formato de nominas" + ex.ToString());
+ }
+ }
protected void LnkFormatoTabular_Click(object sender, EventArgs e)
{
try
diff --git a/Ventas/PVCobranza.aspx b/Ventas/PVCobranza.aspx
index 8eee61c26..35db02691 100644
--- a/Ventas/PVCobranza.aspx
+++ b/Ventas/PVCobranza.aspx
@@ -1007,9 +1007,9 @@