From 39297d00b3c690e34afa418060e10ec807a4750b Mon Sep 17 00:00:00 2001 From: rrene Date: Fri, 21 Mar 2025 18:04:56 -0700 Subject: [PATCH] =?UTF-8?q?--=20acumular=20importes=20en=20un=20rengl?= =?UTF-8?q?=C3=B3n=20cuando=20es=20prov=20global?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Contabilidad/RepIVA.aspx.cs | 89 ++++++++++++++++++++++++++++++++++++- 1 file changed, 87 insertions(+), 2 deletions(-) diff --git a/Contabilidad/RepIVA.aspx.cs b/Contabilidad/RepIVA.aspx.cs index 050e94adb..a15292e63 100644 --- a/Contabilidad/RepIVA.aspx.cs +++ b/Contabilidad/RepIVA.aspx.cs @@ -376,7 +376,12 @@ public partial class Contabilidad_RepIVA : ClsPaginas } else { - foreach (DataRow Drow in Objconta.DtResultados.FiltraParametros("CveCompra is null and CveProveedor > 0 AND ( ActosFN > 0 OR ActosFS > 0 OR Actos16 > 0 OR ActosImp16 > 0 OR ActosImpNotan16 > 0 OR DATasa0 > 0 OR DANoObjetoTN > 0 OR DANoObjetoNoTN > 0) ").Rows) // and(IVA > 1 OR IEPS > 0) + DataTable dtt = new DataTable(); + dtt = Objconta.DtResultados.FiltraParametros("CveCompra is null and CveProveedor > 0 AND ( ActosFN > 0 OR ActosFS > 0 OR Actos16 > 0 OR ActosImp16 > 0 OR ActosImpNotan16 > 0 OR DATasa0 > 0 OR DANoObjetoTN > 0 OR DANoObjetoNoTN > 0)"); + //acumula los prov, globales en un solo registro + dtt = AcumularYReemplazar(dtt); + + foreach (DataRow Drow in dtt.Rows) { SBDIOT.AppendLine( Drow["TipoTercero"].ToString() + "|" + @@ -475,6 +480,81 @@ public partial class Contabilidad_RepIVA : ClsPaginas Response.End(); } + static DataTable AcumularYReemplazar(DataTable dt) + { + if (dt.Rows.Count == 0) return dt; + + // 🔹 Crear una nueva fila con valores acumulados + DataRow nuevaFila = dt.NewRow(); + nuevaFila["TipoTercero"] = "15"; // Puedes definir un ID especial o NULL si no se usa. + nuevaFila["TipoOperacion"] = "87"; + nuevaFila["RFC_DIOT"] = "XAXX010101000"; + + var filasFiltradas = dt.AsEnumerable() + .Where(row => row.Field("TipoTercero") == "15") + .ToList(); + + // 🔹 Recorrer las filas y sumar valores + foreach (DataRow row in dt.FiltraParametros("TipoTercero = '15' ").Rows) + { + // 3.2 valor de los actos o actividades + nuevaFila["ActosFN"] = nuevaFila["ActosFN"].ToString().ToEntero() + row["ActosFN"].ToString().ToEntero(); // actos norte + nuevaFila["ActosFN"] = nuevaFila["ActosFN"].ToString().ToEntero() + row["ActosFN"].ToString().ToEntero(); + nuevaFila["ActosDevFN"] = nuevaFila["ActosDevFN"].ToString().ToEntero() + row["ActosDevFN"].ToString().ToEntero(); + nuevaFila["ActosFS"] = nuevaFila["ActosFS"].ToString().ToEntero() + row["ActosFS"].ToString().ToEntero(); + nuevaFila["ActosDevFS"] = nuevaFila["ActosDevFS"].ToString().ToEntero() + row["ActosDevFS"].ToString().ToEntero(); + nuevaFila["Actos16"] = nuevaFila["Actos16"].ToString().ToEntero() + row["Actos16"].ToString().ToEntero(); + nuevaFila["ActosDev16"] = nuevaFila["ActosDev16"].ToString().ToEntero() + row["ActosDev16"].ToString().ToEntero(); + nuevaFila["ActosImp16"] = nuevaFila["ActosImp16"].ToString().ToEntero() + row["ActosImp16"].ToString().ToEntero(); + nuevaFila["ActosImpDev16"] = nuevaFila["ActosImpDev16"].ToString().ToEntero() + row["ActosImpDev16"].ToString().ToEntero(); + nuevaFila["ActosImpNotan16"] = nuevaFila["ActosImpNotan16"].ToString().ToEntero() + row["ActosImpNotan16"].ToString().ToEntero(); + nuevaFila["ActosImpNotanDev16"] = nuevaFila["ActosImpNotanDev16"].ToString().ToEntero() + row["ActosImpNotanDev16"].ToString().ToEntero(); + + // 3.3 IVA Acreditable + nuevaFila["AcredFN"] = nuevaFila["AcredFN"].ToString().ToEntero() + row["AcredFN"].ToString().ToEntero(); + nuevaFila["AcreNoFN"] = nuevaFila["AcreNoFN"].ToString().ToEntero() + row["AcreNoFN"].ToString().ToEntero(); + nuevaFila["AcredFS"] = nuevaFila["AcredFS"].ToString().ToEntero() + row["AcredFS"].ToString().ToEntero(); + nuevaFila["AcredNoFS"] = nuevaFila["AcredNoFS"].ToString().ToEntero() + row["AcredNoFS"].ToString().ToEntero(); + nuevaFila["Acred16"] = nuevaFila["Acred16"].ToString().ToEntero() + row["Acred16"].ToString().ToEntero(); + nuevaFila["AcredIva16"] = nuevaFila["AcredIva16"].ToString().ToEntero() + row["AcredIva16"].ToString().ToEntero(); + nuevaFila["AcredImp16"] = nuevaFila["AcredImp16"].ToString().ToEntero() + row["AcredImp16"].ToString().ToEntero(); + nuevaFila["AcredNoImp16"] = nuevaFila["AcredNoImp16"].ToString().ToEntero() + row["AcredNoImp16"].ToString().ToEntero(); + nuevaFila["AcredImpIntan16"] = nuevaFila["AcredImpIntan16"].ToString().ToEntero() + row["AcredImpIntan16"].ToString().ToEntero(); + nuevaFila["AcredNoImpIntan16"] = nuevaFila["AcredNoImpIntan16"].ToString().ToEntero() + row["AcredNoImpIntan16"].ToString().ToEntero(); + + // 3.4 IVA NO Acreditable + nuevaFila["NoAcredFN"] = nuevaFila["NoAcredFN"].ToString().ToEntero() + row["NoAcredFN"].ToString().ToEntero(); + nuevaFila["NoAcredNoFN"] = nuevaFila["NoAcredNoFN"].ToString().ToEntero() + row["NoAcredNoFN"].ToString().ToEntero(); + nuevaFila["NoAcredExentaFN"] = nuevaFila["NoAcredExentaFN"].ToString().ToEntero() + row["NoAcredExentaFN"].ToString().ToEntero(); + nuevaFila["NoAcredNoObjetoFN"] = nuevaFila["NoAcredNoObjetoFN"].ToString().ToEntero() + row["NoAcredNoObjetoFN"].ToString().ToEntero(); + nuevaFila["NoAcredFS"] = nuevaFila["NoAcredFS"].ToString().ToEntero() + row["NoAcredFS"].ToString().ToEntero(); + nuevaFila["NoAcredNoFS"] = nuevaFila["NoAcredNoFS"].ToString().ToEntero() + row["NoAcredNoFS"].ToString().ToEntero(); + nuevaFila["NoAcredExentaFS"] = nuevaFila["NoAcredExentaFS"].ToString().ToEntero() + row["NoAcredExentaFS"].ToString().ToEntero(); + nuevaFila["NoAcredNoObjetoFS"] = nuevaFila["NoAcredNoObjetoFS"].ToString().ToEntero() + row["NoAcredNoObjetoFS"].ToString().ToEntero(); + nuevaFila["NoAcred16"] = nuevaFila["NoAcred16"].ToString().ToEntero() + row["NoAcred16"].ToString().ToEntero(); + nuevaFila["NoAcredNo16"] = nuevaFila["NoAcredNo16"].ToString().ToEntero() + row["NoAcredNo16"].ToString().ToEntero(); + nuevaFila["NoAcredExenta16"] = nuevaFila["NoAcredExenta16"].ToString().ToEntero() + row["NoAcredExenta16"].ToString().ToEntero(); + nuevaFila["NoAcredNoObjeto16"] = nuevaFila["NoAcredNoObjeto16"].ToString().ToEntero() + row["NoAcredNoObjeto16"].ToString().ToEntero(); + + // 3.5 Datos Adicionales + nuevaFila["DAIvaRetenido"] = nuevaFila["DAIvaRetenido"].ToString().ToEntero() + row["DAIvaRetenido"].ToString().ToEntero(); + nuevaFila["DAIvaExentoImpo"] = nuevaFila["DAIvaExentoImpo"].ToString().ToEntero() + row["DAIvaExentoImpo"].ToString().ToEntero(); + nuevaFila["DAIvaExento"] = nuevaFila["DAIvaExento"].ToString().ToEntero() + row["DAIvaExento"].ToString().ToEntero(); + nuevaFila["DATasa0"] = nuevaFila["DATasa0"].ToString().ToEntero() + row["DATasa0"].ToString().ToEntero(); + nuevaFila["DANoObjetoTN"] = nuevaFila["DANoObjetoTN"].ToString().ToEntero() + row["DANoObjetoTN"].ToString().ToEntero(); + nuevaFila["DANoObjetoNoTN"] = nuevaFila["DANoObjetoNoTN"].ToString().ToEntero() + row["DANoObjetoNoTN"].ToString().ToEntero(); + nuevaFila["DAManifiesto"] = "01"; + } + // 🔹 Eliminar filas originales filtradas + foreach (var row in filasFiltradas) + { + dt.Rows.Remove(row); + } + // 🔹 Agregar la nueva fila acumulada + dt.Rows.Add(nuevaFila); + return dt; + } + protected void LnkModalCompara_Click(object sender, EventArgs e) { @@ -718,7 +798,12 @@ public partial class Contabilidad_RepIVA : ClsPaginas TmpDIOT.Columns.Add("DANoObjetoTN", typeof(string)); TmpDIOT.Columns.Add("DANoObjetoNoTN", typeof(string)); TmpDIOT.Columns.Add("DAManifiesto", typeof(string)); - foreach (DataRow Drow in Objconta.DtResultados.FiltraParametros("CveCompra is null and CveProveedor > 0 AND ( ActosFN > 0 OR ActosFS > 0 OR Actos16 > 0 OR ActosImp16 > 0 OR ActosImpNotan16 > 0 OR DATasa0 > 0 OR DANoObjetoTN > 0 OR DANoObjetoNoTN > 0) ").Rows) // and(IVA > 1 OR IEPS > 0) + DataTable dtt = new DataTable(); + dtt = Objconta.DtResultados.FiltraParametros("CveCompra is null and CveProveedor > 0 AND ( ActosFN > 0 OR ActosFS > 0 OR Actos16 > 0 OR ActosImp16 > 0 OR ActosImpNotan16 > 0 OR DATasa0 > 0 OR DANoObjetoTN > 0 OR DANoObjetoNoTN > 0)"); + //acumula los prov, globales en un solo registro + dtt = AcumularYReemplazar(dtt); + + foreach (DataRow Drow in dtt.Rows) // and(IVA > 1 OR IEPS > 0) { DataRow dr = TmpDIOT.NewRow();