From aa597d955818daf8aa35ff2e76b76ea4590194c7 Mon Sep 17 00:00:00 2001 From: rrene Date: Mon, 31 Oct 2022 13:19:26 -0700 Subject: [PATCH 01/31] =?UTF-8?q?--=20cambio=20de=20filto=20de=20opci?= =?UTF-8?q?=C3=B3n,=20al=20segundo=20rengl=C3=B3n?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Contabilidad2/RepAnexoCatalogo.aspx | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/Contabilidad2/RepAnexoCatalogo.aspx b/Contabilidad2/RepAnexoCatalogo.aspx index 791b10d69..103b2fbd3 100644 --- a/Contabilidad2/RepAnexoCatalogo.aspx +++ b/Contabilidad2/RepAnexoCatalogo.aspx @@ -49,18 +49,7 @@ -
- Tipo Movto -
-
- - - - - - - -
+
Fecha Inicio:
@@ -100,6 +89,18 @@
>
+
+ Tipo Movto +
+
+ + + + + + + +
Tipo
From b7831dd350f79a0b9c147918a888e0d052375564 Mon Sep 17 00:00:00 2001 From: rrene Date: Fri, 4 Nov 2022 10:24:26 -0700 Subject: [PATCH 02/31] -- espacio texto2letra 00/100 --- App_Code/modExtensiones.vb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/App_Code/modExtensiones.vb b/App_Code/modExtensiones.vb index ee58149a8..ab81ea721 100644 --- a/App_Code/modExtensiones.vb +++ b/App_Code/modExtensiones.vb @@ -1004,11 +1004,11 @@ Namespace Extensiones '**********Une la parte entera y la parte decimal************* If dec <> "" Then - palabras.AppendFormat("{0} {1} /100 {2}", Moneda, dec, AbrevMoneda) + palabras.AppendFormat("{0} {1}/100 {2}", Moneda, dec, AbrevMoneda) Retorno = palabras.ToString Else - palabras.AppendFormat("{0} {1} /100 {2}", Moneda, dec, AbrevMoneda) + palabras.AppendFormat("{0} {1}/100 {2}", Moneda, dec, AbrevMoneda) Retorno = palabras.ToString End If From 49020688cda409aa69b53bf0af05fe10637edef3 Mon Sep 17 00:00:00 2001 From: rrene Date: Wed, 9 Nov 2022 13:30:53 -0700 Subject: [PATCH 03/31] -- mejora --- AF/RepDepreciacion.aspx.vb | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/AF/RepDepreciacion.aspx.vb b/AF/RepDepreciacion.aspx.vb index 03b7aaf75..c78d0f4e3 100644 --- a/AF/RepDepreciacion.aspx.vb +++ b/AF/RepDepreciacion.aspx.vb @@ -38,17 +38,16 @@ Partial Class AF_RepDepreciacion For Each RowsDt As GridViewRow In GvDatos.Rows CveActivoFijo = RowsDt.DataKey("CveActivoFijo").ToEntero - If RowsDt.FCLiteral("LtlDepreciacionMensual").Text.ToDouble > 0 And CveActivoFijo <> 0 Then - - Dim MontoDepreciacion As Double = RowsDt.FCLiteral("LtlDepreciacionMensual").Text.ToDouble + Dim MontoDepreciacion As Decimal = RowsDt.FCLiteral("LtlDepreciacionMensual").Text.ToDecimal + If MontoDepreciacion > 0 And CveActivoFijo <> 0 Then Dim ConceptoPolizaDetalle As String = String.Format("Depreciacion - {0} - {1}", txtFechaI.Text, RowsDt.FCLiteral("LtlDescripcion").Text) If CvePrePoliza > 0 Then - If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, MontoDepreciacion.ToDecimal, ConceptoPolizaDetalle, 101, ConceptoPolizaDetalle, txtFechaI.Text.ToDate, 0, -1, CveActivoFijo:=CveActivoFijo, ImporteMX:=MontoDepreciacion.ToDecimal, ImporteME:=MontoDepreciacion.ToDecimal, CveSubProyecto:=CveSubProyecto) Then + If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, -MontoDepreciacion, -MontoDepreciacion, 270, ConceptoPolizaDetalle, ConceptoPolizaDetalle, 0, CveActivoFijo:=CveActivoFijo, CveSubProyecto:=CveSubProyecto) Then ErrorMovInv = True Exit For End If - If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, MontoDepreciacion.ToDecimal, ConceptoPolizaDetalle, 51, ConceptoPolizaDetalle, txtFechaI.Text.ToDate, 0, -1, CveActivoFijo:=CveActivoFijo, ImporteMX:=MontoDepreciacion.ToDecimal, ImporteME:=MontoDepreciacion.ToDecimal, CveSubProyecto:=CveSubProyecto) Then + If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, MontoDepreciacion, MontoDepreciacion, 101, ConceptoPolizaDetalle, ConceptoPolizaDetalle, 0, CveActivoFijo:=CveActivoFijo, CveSubProyecto:=CveSubProyecto) Then ErrorMovInv = True Exit For End If From b057a9b3892078b64edb041426d9c02923fbe97c Mon Sep 17 00:00:00 2001 From: rrene Date: Wed, 9 Nov 2022 13:31:13 -0700 Subject: [PATCH 04/31] cambio tipo de dato --- App_Code/ClsContabilidad.vb | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/App_Code/ClsContabilidad.vb b/App_Code/ClsContabilidad.vb index d80321677..51d7d76b3 100644 --- a/App_Code/ClsContabilidad.vb +++ b/App_Code/ClsContabilidad.vb @@ -3378,10 +3378,10 @@ Public Class ClsContabilidad With SqlAdapter.SelectCommand.Parameters .Add("@CveCuenta", SqlDbType.Int).Value = CveCuenta .Add("@Codigo", SqlDbType.VarChar).Value = Codigo - .Add("@Afectable", SqlDbType.VarChar).Value = Afectable - .Add("@CveEmpresa", SqlDbType.VarChar).Value = CveEmpresa + .Add("@Afectable", SqlDbType.Int).Value = Afectable + .Add("@CveEmpresa", SqlDbType.Int).Value = CveEmpresa .Add("@Nombre", SqlDbType.VarChar).Value = Nombre - .Add("@RowNum", SqlDbType.VarChar).Value = RowNum + .Add("@RowNum", SqlDbType.Int).Value = RowNum .Add("@CvePadre", SqlDbType.Int).Value = CvePadre End With From 8ba46dd233d8eefe90d723844ec040b9c191dce7 Mon Sep 17 00:00:00 2001 From: rrene Date: Wed, 9 Nov 2022 13:31:43 -0700 Subject: [PATCH 05/31] -- globalDTmarcas --- Acumuladores/CatGarantiasMeses.aspx.vb | 32 +++++++++++++++----------- 1 file changed, 19 insertions(+), 13 deletions(-) diff --git a/Acumuladores/CatGarantiasMeses.aspx.vb b/Acumuladores/CatGarantiasMeses.aspx.vb index 3e71a5f47..0f204a538 100644 --- a/Acumuladores/CatGarantiasMeses.aspx.vb +++ b/Acumuladores/CatGarantiasMeses.aspx.vb @@ -72,15 +72,20 @@ Partial Class Acumuladores_CatFoliosGarantia Private Sub CargaCombos() - Dim ObjPS As New ClsProductosServicios + 'Dim ObjPS As New ClsProductosServicios - If ObjPS.GetMarcas(UsuarioActual.CveEmpresa) Then - DdlMarca.DataSource = ObjPS.DtResultados - DdlMarca.DataBind() - DdlMarca.Items.Insert(0, New ListItem("Todos", "-1")) - DdlMarca.SelectedValue = "-1" - End If - ObjPS.Dispose() + 'If ObjPS.GetMarcas(UsuarioActual.CveEmpresa) Then + ' DdlMarca.DataSource = ObjPS.DtResultados + ' DdlMarca.DataBind() + ' DdlMarca.Items.Insert(0, New ListItem("Todos", "-1")) + ' DdlMarca.SelectedValue = "-1" + 'End If + 'ObjPS.Dispose() + + DdlMarca.DataSource = GlobalDTGralMarcas(UsuarioActual.CveEmpresa) + DdlMarca.DataBind() + DdlMarca.Items.Insert(0, New ListItem("Todos", "-1")) + DdlMarca.SelectedValue = "-1" DdlTipoUso.DataSource = GlobalDTAcumTiposUso() DdlTipoUso.DataBind() @@ -109,13 +114,14 @@ Partial Class Acumuladores_CatFoliosGarantia Private Sub CargaCombosModal() - Dim ObjPS As New ClsProductosServicios + 'Dim ObjPS As New ClsProductosServicios - If ObjPS.GetMarcas(UsuarioActual.CveEmpresa) Then - DdlMarcaM.DataSource = ObjPS.DtResultados + 'If ObjPS.GetMarcas(UsuarioActual.CveEmpresa) Then + ' DdlMarcaM.DataSource = ObjPS.DtResultados - End If - ObjPS.Dispose() + 'End If + 'ObjPS.Dispose() + DdlMarca.DataSource = GlobalDTGralMarcas(UsuarioActual.CveEmpresa) DdlMarcaM.DataBind() DdlTipoUsoM.DataSource = GlobalDTAcumTiposUso() From 5bcc9e6f622469c7a0badb3f44dee9e3748a313d Mon Sep 17 00:00:00 2001 From: rrene Date: Wed, 9 Nov 2022 13:32:06 -0700 Subject: [PATCH 06/31] VISUAL --- Compras/Proveedores.aspx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Compras/Proveedores.aspx b/Compras/Proveedores.aspx index dad72b1e8..373264917 100644 --- a/Compras/Proveedores.aspx +++ b/Compras/Proveedores.aspx @@ -3101,7 +3101,7 @@ - + Archivo From 244d93e767a839cfe4c9b3e772b5e1580f27e52d Mon Sep 17 00:00:00 2001 From: rrene Date: Wed, 9 Nov 2022 13:32:24 -0700 Subject: [PATCH 07/31] - --- Contabilidad/PopUpAuxiliar.aspx.vb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Contabilidad/PopUpAuxiliar.aspx.vb b/Contabilidad/PopUpAuxiliar.aspx.vb index 153b14da1..7817aaf45 100644 --- a/Contabilidad/PopUpAuxiliar.aspx.vb +++ b/Contabilidad/PopUpAuxiliar.aspx.vb @@ -210,7 +210,7 @@ Partial Class PopUpAuxiliar e.Row.FCLiteral("LtlConcepto").Text = String.Format("{0}{1}", Liga, e.Row.DBCampo("ConceptoContable")) End If - If e.Row.DBCampo("CveConceptoContable").Contiene("91", "251", "301") Then 'desaplicar NC + If e.Row.DBCampo("CveConceptoContable").Contiene("91", "294", "251", "301") Then 'desaplicar NC e.Row.FCLinkButton("LnkDesAplicar").Visible = True e.Row.FCLinkButton("imgD").Visible = False From d52936750e0fd92cebfcd772a2b0f91dba8a3d60 Mon Sep 17 00:00:00 2001 From: rrene Date: Wed, 9 Nov 2022 13:33:20 -0700 Subject: [PATCH 08/31] -- mejora visual --- Inventarios/RepEntregaAlmacenRuta.aspx | 41 ++++++++++------------- Inventarios/RepEntregaAlmacenRuta.aspx.cs | 2 +- 2 files changed, 19 insertions(+), 24 deletions(-) diff --git a/Inventarios/RepEntregaAlmacenRuta.aspx b/Inventarios/RepEntregaAlmacenRuta.aspx index 489d0cbbe..201541830 100644 --- a/Inventarios/RepEntregaAlmacenRuta.aspx +++ b/Inventarios/RepEntregaAlmacenRuta.aspx @@ -103,49 +103,44 @@ DataKeyNames="CveSubProyecto, CveEntregaAlmacen,Estatus,CveCliente,CveDireccionOrigen,CveDireccionDestino,CveCamion,CveChofer,FechaEntrega,CveAlmacen,Tipo,AplicaCP,RFCReceptor,RFCEmisor,CveTimbre,CvePAC,FolioFiscal,TimbreTipoDocto,CveMovimiento,FechaLlegada,CveCamionRemolque1,CveCamionRemolque2,Distancia,CveConfigAutoTransporte,SerieFolio,DireccionOrigen,Direccion" AutoGenerateColumns="False" EmptyDataText="No se encontraron Registros con los filtros especificados" CssClass="table table-striped table-advance table-hover Widthall mysmallbtn ScrollAD" data-sort="true" GridLines="None" EmptyDataRowStyle-HorizontalAlign="Center" OnRowDataBound="GVDatos_RowDataBound"> - - - + + - - + - + - - + - - + - - + + - - - + - - + + - - - + + + - - + + + @@ -156,7 +151,7 @@ - + diff --git a/Inventarios/RepEntregaAlmacenRuta.aspx.cs b/Inventarios/RepEntregaAlmacenRuta.aspx.cs index c8c96d15f..3dc47a24d 100644 --- a/Inventarios/RepEntregaAlmacenRuta.aspx.cs +++ b/Inventarios/RepEntregaAlmacenRuta.aspx.cs @@ -619,7 +619,7 @@ public partial class General_RepEntregaAlmacenRuta : ClsPaginas { if (e.Row.RowType == DataControlRowType.DataRow) { - e.Row.Cells[11].Text = ""; + e.Row.Cells[13].Text = ""; LinkButton LnkEditar = e.Row.FCLinkButton("LnkEditar"); LinkButton LnkTimbrar = e.Row.FCLinkButton("LnkTimbrar"); LinkButton LnkCancelaTimbre = e.Row.FCLinkButton("LnkCancelaTimbre"); From ef94792d16e07997ce14d04d02662ff1c9cc8d32 Mon Sep 17 00:00:00 2001 From: rrene Date: Wed, 9 Nov 2022 13:33:53 -0700 Subject: [PATCH 09/31] =?UTF-8?q?--=20correci=C3=B3jn=20de=20par=C3=A1metr?= =?UTF-8?q?o=20cveie?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Ventas/ClientesAbonar.aspx.vb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Ventas/ClientesAbonar.aspx.vb b/Ventas/ClientesAbonar.aspx.vb index f1aa365e7..8fc0c6ed1 100644 --- a/Ventas/ClientesAbonar.aspx.vb +++ b/Ventas/ClientesAbonar.aspx.vb @@ -985,7 +985,7 @@ Partial Class Ventas_ClientesAbonar IdCtaContable = If(EsAnticipoEspecial, IdCtaContMonedaComplementariaAnticipo, IdCtaContComplementaria) If ImporteMovimiento <> 0 Then ImporteMN = ImporteMovimiento - If Not ObjMov.AddPrePolizasDetalle(CvePrePoliza, TipoMovimiento, 0, Referencia, If(gvr.DataKey("TipoDocto") = "Ant" AndAlso UsuarioActual.CveEmpresa.Contiene(119, 158), 226, 207), ConceptoMovimiento, FechaMovimiento, IdCtaContable, -1, -1, gvr.DataKey("CveVenta").ToEntero, -1, CveSubProyectoContabilizar, ViewState("CveCliente").ToString.ToEntero, ImporteMX:=(ImporteMovimiento * tipoCambioVentaValuacion - ImporteMovimiento).RoundSQL, ImporteME:=ImporteMovimiento, TipoCambio:=tipoCambioVentaValuacion) Then + If Not ObjMov.AddPrePolizasDetalle(CvePrePoliza, TipoMovimiento, 0, Referencia, If(gvr.DataKey("TipoDocto") = "Ant" AndAlso UsuarioActual.CveEmpresa.Contiene(119, 158), 226, 207), ConceptoMovimiento, FechaMovimiento, IdCtaContable, -1, CveIE, gvr.DataKey("CveVenta").ToEntero, -1, CveSubProyectoContabilizar, ViewState("CveCliente").ToString.ToEntero, ImporteMX:=(ImporteMovimiento * tipoCambioVentaValuacion - ImporteMovimiento).RoundSQL, ImporteME:=ImporteMovimiento, TipoCambio:=tipoCambioVentaValuacion) Then MsgError = "No se pudo insertar la póliza" End If End If From 4e9189f01a9d6d1fb91b2d694e83e6fa4d90abb1 Mon Sep 17 00:00:00 2001 From: rrene Date: Wed, 9 Nov 2022 13:34:07 -0700 Subject: [PATCH 10/31] -mejora --- Ventas/RepLineasAdicionales.aspx | 32 ++++++-------- Ventas/RepLineasAdicionales.aspx.cs | 66 ++++++++++++++--------------- 2 files changed, 45 insertions(+), 53 deletions(-) diff --git a/Ventas/RepLineasAdicionales.aspx b/Ventas/RepLineasAdicionales.aspx index 3b0946c5a..97e27ec8b 100644 --- a/Ventas/RepLineasAdicionales.aspx +++ b/Ventas/RepLineasAdicionales.aspx @@ -39,14 +39,14 @@
-
Proveedor:
+
Comercializador:
Cliente:
- +
Estatus:
@@ -54,7 +54,7 @@ <%-- --%> - +
@@ -95,8 +95,8 @@
- " style="display: inline-block; margin-right: -20px; width: 150px;" /> - " style="margin-top: -3px;" class="btn btn-circle btn-sm label-info"> + " style="display: inline-block; margin-right: -20px; width: 150px;" /> + " style="margin-top: -3px;" class="btn btn-circle btn-sm label-info">
@@ -117,29 +117,27 @@ - - + - + OnRowCommand="GvLAPO_RowCommand" + OnRowDataBound="GvLAPO_RowDataBound"> - + - + - - +
@@ -147,12 +145,10 @@ -
-
-
+
0) { @@ -167,19 +164,13 @@ public partial class Ventas_RepLineasAdicionales : ClsPaginas } else { - GvLineasAdicionalesPO.DataSource = null; + GvLAPO.DataSource = null; } - - } - - - + } objVentas.Dispose(); - GvLineasAdicionales.DataBind(); - GvLineasAdicionalesPO.DataBind(); - + GvLAPO.DataBind(); UpLineasAdicionales.Update(); } @@ -273,17 +264,15 @@ public partial class Ventas_RepLineasAdicionales : ClsPaginas if (!errorCargaComprobante) { ClsVentas objVentas = new ClsVentas(); - if (!objVentas.UpdateLineasAdicionales(CveLineaAdicional, "-1", -1, -1, -1, -1, -1, MinFecha, 100, -1, UsuarioActual.CveEmpresa, LineaAdicionalComprobante: $@"{CveVenta}{fiNuevo.Extension}",CveVenta:CveVenta)) + if (!objVentas.UpdateLineasAdicionales(CveLineaAdicional, "-1", -1, -1, -1, -1, -1, MinFecha, UsuarioActual.CveUsuario, -1, UsuarioActual.CveEmpresa, LineaAdicionalComprobante: $@"{CveVenta}{fiNuevo.Extension}",CveVenta:CveVenta)) { errorCargaComprobante = true; } objVentas.Dispose(); } } - } - - } - + } + } if (!errorCargaComprobante) { @@ -306,7 +295,7 @@ public partial class Ventas_RepLineasAdicionales : ClsPaginas ClsVentas objVentas = new ClsVentas(); - if (!objVentas.UpdateLineasAdicionales(CveLineaAdicionalActualzarEstatus, "-1", -1, -1, -1, -1, -1, MinFecha, 100, -1, UsuarioActual.CveEmpresa,CveVenta:CveVenta,CveLineaAdicionalEstatus:2)) + if (!objVentas.UpdateLineasAdicionales(CveLineaAdicionalActualzarEstatus, "-1", -1, -1, -1, -1, -1, MinFecha, UsuarioActual.CveUsuario, -1, UsuarioActual.CveEmpresa,CveVenta:CveVenta,CveLineaAdicionalEstatus:2)) { errorCambioEstatus = true; } @@ -325,21 +314,20 @@ public partial class Ventas_RepLineasAdicionales : ClsPaginas if(TipoLinea == 1) { GridView gvTemp = GvLineasAdicionales; - gvTemp.ExportToExcelx("RepLienasAdicionales"); + gvTemp.ExportToExcelx("RepLineasAdicionales" + DateTime.Now.ToShortDateString()); } else if(TipoLinea == 2) { - GridView gvTemp = GvLineasAdicionalesPO; - gvTemp.Columns[9].Visible = false; - gvTemp.ExportToExcelx( "RepPO"); + GridView gvTemp = GvLAPO; + gvTemp.Columns[8].Visible = false; + gvTemp.ExportToExcelx("ReportePO" + DateTime.Now.ToShortDateString()); } - - + } - protected void GvLineasAdicionalesPO_RowDataBound(object sender, GridViewRowEventArgs e) + protected void GvLAPO_RowDataBound(object sender, GridViewRowEventArgs e) { if (e.Row.RowType == DataControlRowType.DataRow) { @@ -349,9 +337,16 @@ public partial class Ventas_RepLineasAdicionales : ClsPaginas LinkButton LnkDescargaComprobante = e.Row.FCLinkButton("LnkDescargaComprobante"); - if (e.Row.DataKey("CveLineaAdicional").ToEntero() == 0) + if (e.Row.DataKey("CveLineaAdicional")=="") { - e.Row.CssClass = "SubTotales"; + if (e.Row.DataKey("CveLineaAdicional") == "" && e.Row.DataKey("CveCliente") == "") + { + e.Row.CssClass = "SubTotales2"; + } + else + { + e.Row.CssClass = "SubTotales"; + } LnkCambiarEstatus.Visible = false; LnkCargarComprobante.Visible = false; LnkDescargaComprobante.Visible = false; @@ -374,6 +369,7 @@ public partial class Ventas_RepLineasAdicionales : ClsPaginas ScriptManager.GetCurrent(this).RegisterPostBackControl(LnkDescargaComprobante); } } + } } } @@ -396,12 +392,12 @@ public partial class Ventas_RepLineasAdicionales : ClsPaginas } } - protected void GvLineasAdicionalesPO_RowCommand(object sender, GridViewCommandEventArgs e) + protected void GvLAPO_RowCommand(object sender, GridViewCommandEventArgs e) { if (e.CommandName == "Estatus") { GridViewRow GvRow = (GridViewRow)((LinkButton)e.CommandSource).NamingContainer; - int CveLineaAdicionalActualzarEstatus = GvRow.DataKey("CveLineaAdicional").ToString().ToEntero(); + int CveLineaAdicionalActualizarEstatus = GvRow.DataKey("CveLineaAdicional").ToString().ToEntero(); int CveVenta = GvRow.DataKey("CveVenta").ToString().ToEntero(); bool errorCambioEstatus = false; @@ -409,7 +405,7 @@ public partial class Ventas_RepLineasAdicionales : ClsPaginas ClsVentas objVentas = new ClsVentas(); - if (!objVentas.UpdateLineasAdicionales(CveLineaAdicionalActualzarEstatus, "-1", -1, -1, -1, -1, -1, MinFecha, 100, -1, UsuarioActual.CveEmpresa, CveVenta: CveVenta, CveLineaAdicionalEstatus: 2)) + if (!objVentas.UpdateLineasAdicionales(CveLineaAdicionalActualizarEstatus, "-1", -1, -1, -1, -1, -1, MinFecha, UsuarioActual.CveUsuario, -1, UsuarioActual.CveEmpresa, CveVenta: CveVenta, CveLineaAdicionalEstatus: 2)) { errorCambioEstatus = true; } From 33ca3da04adf65e0f0d82c4e71aa512a4fc823d0 Mon Sep 17 00:00:00 2001 From: rrene Date: Wed, 9 Nov 2022 13:34:31 -0700 Subject: [PATCH 11/31] --mejoras --- Ventas/Clientes.aspx.vb | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/Ventas/Clientes.aspx.vb b/Ventas/Clientes.aspx.vb index 444ff4848..8adeebce2 100644 --- a/Ventas/Clientes.aspx.vb +++ b/Ventas/Clientes.aspx.vb @@ -1858,7 +1858,8 @@ Partial Class Clientes 'Ocultamos la mayoria de informacion si es no-frecuente If ObjClientes.TipoCliente = 2 Then - TabFiscalContable.Visible = False + If UsuarioActual.CveEmpresa <> 141 Then TabFiscalContable.Visible = False + TabCxC.Visible = False 'TabAnticipos.Visible = False TabRetenciones.Visible = False @@ -2510,12 +2511,12 @@ Partial Class Clientes If DdlPais.SelectedValue.ToEntero() = 151 Then If Not DdlMunicipio.SelectedValue.ToEntero() > 0 Then - Alert("Tiene que seleccionar un municipio para comercio exterior si el pais es mexico.", TipoMensaje.MsgAdvertencia) + Alert("Tiene que seleccionar un municipio para comercio exterior si el pais es méxico.", TipoMensaje.MsgAdvertencia) Exit Sub End If If Not DdlColonia.SelectedValue.ToEntero() > 0 Then - Alert("Tiene que seleccionar una colonia para comercio exterior si el pais es mexico.", TipoMensaje.MsgAdvertencia) + Alert("Tiene que seleccionar una colonia para comercio exterior si el pais es méxico.", TipoMensaje.MsgAdvertencia) Exit Sub End If End If @@ -2533,7 +2534,7 @@ Partial Class Clientes If TxtRFC.Text.ToUpper.Contiene("XAXX010101000", "XEXX010101000") AndAlso DdlUsoCFDI.SelectedValue <> "23" Then - Alert("El Regimen fiscal del cliente debe ser 'S01 - Sin efectos fiscales' cuando se utiliza el RFC genérico.", TipoMensaje.MsgAdvertencia) + Alert("El uso del cfdi debe ser 'S01 - Sin efectos fiscales' cuando se utiliza el RFC genérico.", TipoMensaje.MsgAdvertencia) Exit Sub End If @@ -8739,10 +8740,11 @@ Partial Class Clientes DTPorcentajePrecios = DTPorcentajeTemp.Clone End Sub Private Sub CargaMarcas() - Dim ObjMarcas As New ClsProductosServicios - ObjMarcas.GetMarcas(UsuarioActual.CveEmpresa) - DdlMarcaPS.DataSource = ObjMarcas.DtResultados - ObjMarcas.Dispose() + 'Dim ObjMarcas As New ClsProductosServicios + 'ObjMarcas.GetMarcas(UsuarioActual.CveEmpresa) + 'DdlMarcaPS.DataSource = ObjMarcas.DtResultados + 'ObjMarcas.Dispose() + DdlMarcaPS.DataSource = GlobalDTGralMarcas(UsuarioActual.CveEmpresa) DdlMarcaPS.DataBind() DdlMarcaPS.Items.Insert(0, New ListItem("Seleccione", "-1")) From 9da96fe47346b336b933e9d6cbde1c433f88a487 Mon Sep 17 00:00:00 2001 From: rrene Date: Wed, 9 Nov 2022 13:34:59 -0700 Subject: [PATCH 12/31] -- globalDTmarcas --- Ventas/PV.aspx.vb | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/Ventas/PV.aspx.vb b/Ventas/PV.aspx.vb index bc04fa7e1..d48891c74 100644 --- a/Ventas/PV.aspx.vb +++ b/Ventas/PV.aspx.vb @@ -1375,16 +1375,17 @@ Partial Class PV Private Sub CargaMarcasFiltro() Using ObjMarcas As New ClsProductosServicios - If ObjMarcas.GetMarcas(UsuarioActual.CveEmpresa) Then - DdlMarcaPS.DataSource = ObjMarcas.DtResultados.Copy() - DdlMarcaPSAjuste.DataSource = ObjMarcas.DtResultados.Copy() - End If + 'If ObjMarcas.GetMarcas(UsuarioActual.CveEmpresa) Then + ' DdlMarcaPS.DataSource = ObjMarcas.DtResultados.Copy() + ' DdlMarcaPSAjuste.DataSource = ObjMarcas.DtResultados.Copy() + 'End If If ObjMarcas.GetMarcasUsados(UsuarioActual.CveEmpresa) Then DdlMarcaUsado.DataSource = ObjMarcas.DtResultados.Copy() End If End Using + DdlMarcaPS.DataSource = GlobalDTGralMarcas(UsuarioActual.CveEmpresa) DdlMarcaPS.DataBind() DdlMarcaPSAjuste.DataBind() DdlMarcaUsado.DataBind() @@ -6639,11 +6640,13 @@ Partial Class PV End If DdlMarca.Items.Clear() DdlMarcaPSDes.Items.Clear() - Dim ObjMarcas As New ClsProductosServicios - ObjMarcas.GetMarcas(UsuarioActual.CveEmpresa) - DdlMarca.DataSource = ObjMarcas.DtResultados - DdlMarcaPSDes.DataSource = ObjMarcas.DtResultados - ObjMarcas.Dispose() + 'Dim ObjMarcas As New ClsProductosServicios + 'ObjMarcas.GetMarcas(UsuarioActual.CveEmpresa) + 'DdlMarca.DataSource = ObjMarcas.DtResultados + 'DdlMarcaPSDes.DataSource = ObjMarcas.DtResultados + 'ObjMarcas.Dispose() + DdlMarca.DataSource = GlobalDTGralMarcas(UsuarioActual.CveEmpresa) + DdlMarcaPSDes.DataSource = GlobalDTGralMarcas(UsuarioActual.CveEmpresa) DdlMarca.DataBind() DdlMarcaPSDes.DataBind() End If From 34600292e02e4f91787b92c774b20810cf82c6b6 Mon Sep 17 00:00:00 2001 From: rrene Date: Wed, 9 Nov 2022 13:35:22 -0700 Subject: [PATCH 13/31] -- globalDTmarcas --- Inventarios/KardexAlmacenHorizontal.aspx.vb | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/Inventarios/KardexAlmacenHorizontal.aspx.vb b/Inventarios/KardexAlmacenHorizontal.aspx.vb index 87eee4512..044361971 100644 --- a/Inventarios/KardexAlmacenHorizontal.aspx.vb +++ b/Inventarios/KardexAlmacenHorizontal.aspx.vb @@ -39,11 +39,12 @@ Partial Class Inventarios_KardexAlmacen CargaFuncionalidad105() CargaPS() - Using ObjPS As New ClsProductosServicios - If ObjPS.GetMarcas(UsuarioActual.CveEmpresa) Then - DdlMarca.DataSource = ObjPS.DtResultados.Copy().FiltraParametros("", Orderby:="Marca") - End If - End Using + 'Using ObjPS As New ClsProductosServicios + ' If ObjPS.GetMarcas(UsuarioActual.CveEmpresa) Then + ' DdlMarca.DataSource = ObjPS.DtResultados.Copy().FiltraParametros("", Orderby:="Marca") + ' End If + 'End Using + DdlMarca.DataSource = GlobalDTGralMarcas(UsuarioActual.CveEmpresa) DdlMarca.DataBind() DdlMarca.Items.Insert(0, New ListItem("Todos", "-1")) From 27a7d5c2b19274986577467fdff9e46ae0cc6a59 Mon Sep 17 00:00:00 2001 From: rrene Date: Wed, 9 Nov 2022 13:35:53 -0700 Subject: [PATCH 14/31] -- globalDTmarcas --- Ventas/Ventas.aspx.vb | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/Ventas/Ventas.aspx.vb b/Ventas/Ventas.aspx.vb index 11be021c2..a5bb839c7 100644 --- a/Ventas/Ventas.aspx.vb +++ b/Ventas/Ventas.aspx.vb @@ -25003,11 +25003,13 @@ Partial Class Ventas End If DdlMarca.Items.Clear() DdlMarcaPSDes.Items.Clear() - Dim ObjMarcas As New ClsProductosServicios - ObjMarcas.GetMarcas(UsuarioActual.CveEmpresa) - DdlMarca.DataSource = ObjMarcas.DtResultados - DdlMarcaPSDes.DataSource = ObjMarcas.DtResultados - ObjMarcas.Dispose() + 'Dim ObjMarcas As New ClsProductosServicios + 'ObjMarcas.GetMarcas(UsuarioActual.CveEmpresa) + 'DdlMarca.DataSource = ObjMarcas.DtResultados + 'DdlMarcaPSDes.DataSource = ObjMarcas.DtResultados + 'ObjMarcas.Dispose() + DdlMarca.DataSource = GlobalDTGralMarcas(UsuarioActual.CveEmpresa) + DdlMarcaPSDes.DataSource = GlobalDTGralMarcas(UsuarioActual.CveEmpresa) DdlMarca.DataBind() DdlMarcaPSDes.DataBind() End If From 56b67054e47304352d44263ae207f3a464d42b3a Mon Sep 17 00:00:00 2001 From: rrene Date: Wed, 9 Nov 2022 13:36:12 -0700 Subject: [PATCH 15/31] -- globalDTmarcas --- Ventas/RepProductosServicios.aspx.vb | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/Ventas/RepProductosServicios.aspx.vb b/Ventas/RepProductosServicios.aspx.vb index fc946ccd4..810c4b237 100644 --- a/Ventas/RepProductosServicios.aspx.vb +++ b/Ventas/RepProductosServicios.aspx.vb @@ -340,12 +340,13 @@ Partial Class Ventas_RepProductosServicios DivMarca.Visible = True LblMarca.Visible = True - Using ObjMarcas As New ClsProductosServicios - If ObjMarcas.GetMarcas(UsuarioActual.CveEmpresa) Then - DdlMarcaPSDes.DataSource = ObjMarcas.DtResultados - DdlMarcaPSDes.DataBind() - End If - End Using + 'Using ObjMarcas As New ClsProductosServicios + ' If ObjMarcas.GetMarcas(UsuarioActual.CveEmpresa) Then + ' DdlMarcaPSDes.DataSource = ObjMarcas.DtResultados + ' DdlMarcaPSDes.DataBind() + ' End If + 'End Using + DdlMarcaPSDes.DataSource = GlobalDTGralMarcas(UsuarioActual.CveEmpresa) End If DdlMarcaPSDes.Items.Insert(0, New ListItem(" Todos ", "-1")) End Sub From 00b826977a6642139c0605bd6ba8ed2f3e387002 Mon Sep 17 00:00:00 2001 From: rrene Date: Wed, 9 Nov 2022 13:39:53 -0700 Subject: [PATCH 16/31] =?UTF-8?q?tipocontabilizaci=C3=B3n?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Ventas/CatClasificaciones.aspx.vb | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/Ventas/CatClasificaciones.aspx.vb b/Ventas/CatClasificaciones.aspx.vb index eab05b55b..bf140a196 100644 --- a/Ventas/CatClasificaciones.aspx.vb +++ b/Ventas/CatClasificaciones.aspx.vb @@ -225,7 +225,18 @@ Partial Class CatClasificaciones Private Sub CargaCuentasContables(Optional IdCuentaPadre As Integer = -1) - If UsuarioActual.Empresa.TipoContabilizacion = 1 Then + If UsuarioActual.Empresa.TipoContabilidad = 1 Then + + DdlCuentaGasto.DataValueField = "CveCuenta" + DdlCuentaGasto.DataTextField = "Cuenta" + Dim ObjContabilidad As New ClsContabilidad + If ObjContabilidad.GetCuentas(-1, "-1", 1, UsuarioActual.CveEmpresa) Then + DtCuentasContables = ObjContabilidad.DtResultados + 'Cuenta, CtaCodigo + DtCuentasContables.Columns("CtaCodigo").ColumnName = "Cuenta" + End If + ObjContabilidad.Dispose() + ElseIf UsuarioActual.Empresa.TipoContabilizacion = 1 Then Dim ObjEmpresa As New ClsSisEmpresas Dim Empresa As Empresa = Nothing @@ -238,9 +249,8 @@ Partial Class CatClasificaciones ObjContabilidad.Dispose() End If ObjEmpresa.Dispose() - ElseIf UsuarioActual.Empresa.TipoContabilizacion = 2 Then - DdlCuentaGasto.DataValueField = "CveCuenta" - DdlCuentaGasto.DataTextField = "Cuenta" + + End If From eb05e9d552d23d1d5df105c9155f16135eb673e1 Mon Sep 17 00:00:00 2001 From: rrene Date: Wed, 9 Nov 2022 13:40:12 -0700 Subject: [PATCH 17/31] mejora --- Inventarios/RecepcionAlmacen.aspx.vb | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/Inventarios/RecepcionAlmacen.aspx.vb b/Inventarios/RecepcionAlmacen.aspx.vb index 5be5719cd..f7a1e120d 100644 --- a/Inventarios/RecepcionAlmacen.aspx.vb +++ b/Inventarios/RecepcionAlmacen.aspx.vb @@ -4350,8 +4350,6 @@ Partial Class Inventarios_RecepcionAlmacen TipoCambio = 0 TipoMovimiento = 1 - - If ObjInventario.RecepcionAlmacenOCGet(CveOC, UsuarioActual.CveEmpresa) AndAlso ObjInventario.DtResultados.Rows.Count > 0 Then DtDatosDetalle = Nothing CreaDtDetalle() @@ -4359,7 +4357,10 @@ Partial Class Inventarios_RecepcionAlmacen CreaDtLoteDetalle() CreaDTInv(ObjInventario.DtResultados.FiltraParametros("CantidadCompra = 0")) BtnGuardar.Visible = True - + 'cuando están todos los detalles de la compra, nos indica que se va a recibir la totalidad de la compra + If DtDatosDetalle.Rows.Count = DtDatosDetalle.Rows(0)("NumDetalles").ToString.ToEntero Then + RecibidaCompleta = True + End If ''MONEDA DIFERENTE If CveMoneda <> 1 Then From b8274a1ea3ec8e08239ca300a95812464afeeb8d Mon Sep 17 00:00:00 2001 From: rrene Date: Wed, 9 Nov 2022 13:40:37 -0700 Subject: [PATCH 18/31] E83 --- Contabilidad/DiarioPagos.aspx.vb | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/Contabilidad/DiarioPagos.aspx.vb b/Contabilidad/DiarioPagos.aspx.vb index 54ffcf3c7..ec96f64eb 100644 --- a/Contabilidad/DiarioPagos.aspx.vb +++ b/Contabilidad/DiarioPagos.aspx.vb @@ -599,7 +599,7 @@ Partial Class Contabilidad_DiarioPagos Select Case UsuarioActual.CveEmpresa - Case 13 + Case 13, 83 Select Case gvr.DataKey("CveTipoTransaccion") Case "1" 'cheque Folio = gvr.DataKey("Folio") @@ -791,7 +791,7 @@ Partial Class Contabilidad_DiarioPagos End If 'registro los movimientos en proveedores, cuando es de contado que toque - If UsuarioActual.CveEmpresa = 13 AndAlso Not EsContabilizada AndAlso Opcion = 1 AndAlso Math.Abs(CargoProveedor) <= 1 AndAlso Math.Abs(AbonoProveedor) <= 1 Then + If UsuarioActual.CveEmpresa.Contiene(13, 83) AndAlso Not EsContabilizada AndAlso Opcion = 1 AndAlso Math.Abs(CargoProveedor) <= 1 AndAlso Math.Abs(AbonoProveedor) <= 1 Then CargoProveedor += CompraPagadoTotal AbonoProveedor += CompraPagadoTotal End If @@ -835,7 +835,7 @@ Partial Class Contabilidad_DiarioPagos End If Dim ttTipoCambioPago As Double = TipoCambioPago - If UsuarioActual.CveEmpresa = 13 Then ttTipoCambioPago = TipoCambioCompra + If UsuarioActual.CveEmpresa.Contiene(13, 83) Then ttTipoCambioPago = TipoCambioCompra If IVAAcreditable > 0 Then 'iva Acreditable @@ -927,8 +927,7 @@ Partial Class Contabilidad_DiarioPagos If SimplificaRetIVA = False Then CompraRetIVA = CompraPagadoRetIVA 'no registra la retencion de iva al pagar - If UsuarioActual.CveEmpresa = 13 Then IdCuentaRetIVACirculacion = 0 - + If UsuarioActual.CveEmpresa.Contiene(13, 83) Then IdCuentaRetIVACirculacion = 0 ConceptoTmp = If(CveMoneda = 2, String.Format("{0} TC {1}", ConceptoDetalle, TipoCambioFechaCompra), ConceptoDetalle) If CompraRetIVA > 0 AndAlso IdCuentaRetIVACirculacion > 0 AndAlso Not Conta.AddMovimiento(IDPoliza, IdCuentaRetIVACirculacion, False, CompraPagadoRetIVA * TipoCambioFechaCompra, gvrc.FCHiddenField("HdnSerieFolio").Value, ConceptoTmp, 0, Fecha, gvrc.FCHiddenField("HdnCveCompra").Value.ContaReferencia(TipoContaReferencia.Compra), If(MonExt, CompraRetIVA, 0.0)) Then MsgError = "No se pudo insertar movimiento contable" : Exit For From 59bf02d44751441f887f1463d8cdc564e34f1113 Mon Sep 17 00:00:00 2001 From: rrene Date: Wed, 9 Nov 2022 13:43:34 -0700 Subject: [PATCH 19/31] tipocontabilidad --- Contabilidad/PlantillasPolizasDetalle.aspx.vb | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/Contabilidad/PlantillasPolizasDetalle.aspx.vb b/Contabilidad/PlantillasPolizasDetalle.aspx.vb index ec1b8e94a..2b79f5b48 100644 --- a/Contabilidad/PlantillasPolizasDetalle.aspx.vb +++ b/Contabilidad/PlantillasPolizasDetalle.aspx.vb @@ -61,7 +61,7 @@ Partial Class Contabilidad_PlantillasPolizasDetalle ObjPlantillaPolizasTipo.Dispose() Dim dt As DataTable = Nothing - If UsuarioActual.Empresa.UsaContabilidad Then + If UsuarioActual.Empresa.TipoContabilidad = 2 Then Dim Conta As New ClsContPAQi(UsuarioActual.Empresa) If Conta.GetCuentas(-1, "-1", 1) Then @@ -257,13 +257,12 @@ Partial Class Contabilidad_PlantillasPolizasDetalle DdlPorcentajeImpuesto.SelectedValue.ToDecimal, CveCuenta:=DdlCuentas.SelectedValue.ToEntero) Then TxtOrden.Text = "" If Not ChkSeguirAgregando.Checked Then - updatatos() Alert("El nuevo Registro se guardó correctamente.", TipoMensaje.MsgInformacion) Else RegistraScript(String.Format("$('#{0}').modal();", "divAgregarSucursal")) UpModal.Update() End If - + updatatos() Else ErrorDetalle = True End If From 811ec77e0c56e5e28f4b14716853ddd47f9e80c4 Mon Sep 17 00:00:00 2001 From: rrene Date: Wed, 9 Nov 2022 13:44:07 -0700 Subject: [PATCH 20/31] -- visual temporal --- Inventarios/Kardex.aspx | 3 +-- Inventarios/Kardex.aspx.vb | 2 ++ 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/Inventarios/Kardex.aspx b/Inventarios/Kardex.aspx index d08f6290c..3d498a255 100644 --- a/Inventarios/Kardex.aspx +++ b/Inventarios/Kardex.aspx @@ -164,13 +164,12 @@
- Producto:
- +
<%----%> diff --git a/Inventarios/Kardex.aspx.vb b/Inventarios/Kardex.aspx.vb index fa4336ed0..8beae4fb0 100644 --- a/Inventarios/Kardex.aspx.vb +++ b/Inventarios/Kardex.aspx.vb @@ -54,6 +54,7 @@ Partial Class Inventarios_Kardex If UsuarioActual.CveUsuario = 100 Then LblPS.ToolTip = ddlProducto2.SelectedValue + lblAlm.InnerText = ddlProducto2.SelectedValue End If End If @@ -180,6 +181,7 @@ Partial Class Inventarios_Kardex If UsuarioActual.CveUsuario = 100 Then LblPS.ToolTip = ddlProducto2.SelectedValue + lblAlm.InnerText = ddlProducto2.SelectedValue End If TxtSerie.Text = "" From 1f22f28f4f9888ccd30ed13471dcab08cb2dd380 Mon Sep 17 00:00:00 2001 From: rrene Date: Wed, 9 Nov 2022 13:44:28 -0700 Subject: [PATCH 21/31] --limpieza texto --- Inicio.aspx.vb | 4 ---- 1 file changed, 4 deletions(-) diff --git a/Inicio.aspx.vb b/Inicio.aspx.vb index 8c54882f4..199440435 100644 --- a/Inicio.aspx.vb +++ b/Inicio.aspx.vb @@ -152,10 +152,6 @@ Partial Class Inicio Response.Redirect("/PortalProveedor/PortalProveedor.aspx") End If - If UsuarioActual.CveEmpresa = 66 Then - LtlTitulo.Text = "Sistema Integral de Información Gluyas" - End If - If UsuarioActual.Empresa.TipoContabilidad = 2 AndAlso UsuarioActual.Empresa.UsaContabilidad Then Dim ObjPolizas As New ClsContPAQi(UsuarioActual.Empresa) If ObjPolizas.GetPolizasCuadre() And ObjPolizas.DtResultados.Rows.Count > 0 Then From d178c21eda30c4e53c5956c5c0c4dabb95175908 Mon Sep 17 00:00:00 2001 From: rrene Date: Wed, 9 Nov 2022 13:44:52 -0700 Subject: [PATCH 22/31] --mejora en combos --- Contabilidad2/CatCuentasAsignaciones.aspx | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/Contabilidad2/CatCuentasAsignaciones.aspx b/Contabilidad2/CatCuentasAsignaciones.aspx index 2c8963058..59e0d8c68 100644 --- a/Contabilidad2/CatCuentasAsignaciones.aspx +++ b/Contabilidad2/CatCuentasAsignaciones.aspx @@ -60,7 +60,7 @@
- +
@@ -134,11 +134,11 @@
- +
- +
@@ -147,7 +147,7 @@
- +
@@ -165,11 +165,11 @@
- +
- +
@@ -178,11 +178,11 @@
- +
- +
@@ -249,7 +249,7 @@
- +
From 91de030782e70c5351b8f6f1c041d50713ba1c2a Mon Sep 17 00:00:00 2001 From: rrene Date: Wed, 9 Nov 2022 14:43:53 -0700 Subject: [PATCH 23/31] =?UTF-8?q?--=20cambios=20en=20prep=C3=B3liza=20de?= =?UTF-8?q?=20pago=20compra=20--=20registro=20en=20bit=C3=A1cora=20por=20p?= =?UTF-8?q?=C3=A1gina?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- App_Code/ClsPaginas.vb | 108 +++++++++++++++++++++++++++++++++++------ 1 file changed, 93 insertions(+), 15 deletions(-) diff --git a/App_Code/ClsPaginas.vb b/App_Code/ClsPaginas.vb index 495f72b8c..b90afc4fa 100644 --- a/App_Code/ClsPaginas.vb +++ b/App_Code/ClsPaginas.vb @@ -4712,7 +4712,6 @@ Public Class ClsPaginas PaginaDict.Add("/Compras/RepCxP.aspx".ToUpper(), 168) PaginaDict.Add("/Compras/RepCxPDetalle.aspx".ToUpper(), 168) PaginaDict.Add("/Compras/CatProveedoresClasificaciones.aspx".ToUpper(), 186) - PaginaDict.Add("/Compras/CatAcreedores.aspx".ToUpper(), 303) PaginaDict.Add("/Compras/Acreedores.aspx".ToUpper(), 303) PaginaDict.Add("/Compras/RepComprasG.aspx".ToUpper(), 286) PaginaDict.Add("/Compras/Compras2.aspx".ToUpper(), -1) @@ -5778,11 +5777,11 @@ Public Class ClsPaginas If sw IsNot Nothing AndAlso Not (Not User.Identity.IsAuthenticated OrElse UsuarioActual Is Nothing) Then sw.Stop() - 'If Not Page.IsPostBack Then - ' Using ObjUsuario As New ClsSisUsuarios - ' ObjUsuario.AddBitacora(CveModulo, "", "", UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, Request.Url.PathAndQuery.ToString(), sw.ElapsedMilliseconds) - ' End Using - 'End If + If Not Page.IsPostBack Then + Using ObjUsuario As New ClsSisUsuarios + ObjUsuario.AddBitacora(CveModulo, "", "", UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, Request.Url.PathAndQuery.ToString(), sw.ElapsedMilliseconds) + End Using + End If End If If Not IsNothing(ViewState("strToastMsglargonoreplace")) AndAlso ViewState("strToastMsglargonoreplace").ToString.Length > 0 Then @@ -9622,6 +9621,8 @@ Public Class ClsPaginas Dim ImporteMN As Decimal = 0 Dim ImporteME As Decimal = 0 Dim TCValuacion As Decimal = CompraActual.TC + Dim TCValuacionPago As Decimal = Pago.TCPago + Dim tFechaUltimaFluctuacion As Date Dim tImportePago, tImporteCompra As Decimal Dim CveConceptoContableComplementaria As Integer = 206 @@ -9639,16 +9640,15 @@ Public Class ClsPaginas Dim FuncionalidadFluctuacionImpuestos As Boolean = If(UsuarioActual.Empresa.Funcionalidad(159) = "1", True, False) Dim tFecha As Date = Pago.Fecha + Dim UltimaFluctuacion As MTipoCambioFluctuacion = GlobalTipoCambioUltimaFluctuacion(tFecha) - If CompraActual.CveMoneda <> 1 OrElse Pago.CveMonedaPago <> 1 Then - Dim UltimaFluctuacion As MTipoCambioFluctuacion = GlobalTipoCambioUltimaFluctuacion(tFecha) - - If UsuarioActual.Empresa.Funcionalidad(703) = "1" AndAlso UltimaFluctuacion IsNot Nothing Then - If UltimaFluctuacion.FechaFluctuacion <= tFecha AndAlso CompraActual.Fecha <= UltimaFluctuacion.FechaFluctuacion Then - 'FechaUltimaFluctuacion = UltimaFluctuacion.FechaFluctuacion - TCValuacion = UltimaFluctuacion.TCFluctuacion - End If + If UsuarioActual.Empresa.Funcionalidad(703) = "1" AndAlso UltimaFluctuacion IsNot Nothing Then + If UltimaFluctuacion.FechaFluctuacion <= tFecha Then + tFechaUltimaFluctuacion = UltimaFluctuacion.FechaFluctuacion + TCValuacion = UltimaFluctuacion.TCFluctuacion End If + If CompraActual.Fecha < tFechaUltimaFluctuacion Then TCValuacion = TCValuacion + If Pago.Fecha < tFechaUltimaFluctuacion Then TCValuacionPago = TCValuacion End If If CompraActual.CveMoneda = 1 And Pago.CveMonedaPago <> 1 Then 'factura pesos, pago en dolares @@ -9782,6 +9782,82 @@ Public Class ClsPaginas End If + 'concepto pago + Concepto = String.Format("{0} NC:{1}", CompraActual.ProveedorNombre, Pago.Referencia) + + If Pago.TipoPago = "Egsc" AndAlso Not ErrorMovtos Then ' A N T I C I P O / E G R E S O S X C O M P R O B A R + Dim Ret As New ConceptosRetenciones + If Pago.CveMonedaPago > 1 Then + 'Agregamos la Extranjera + If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, Pago.ImportePago, Pago.ImportePago, 21, Pago.Referencia, Concepto, CompraActual.IdCtaContableAnticipoProv, CveCompra:=CompraActual.CveCompra, CveProveedor:=CompraActual.CveProveedor, CveIE:=Pago.CveIE, ImporteME:=Pago.ImportePago, TipoCambio:=TCValuacionPago, CveSubProyecto:=CompraActual.CveSubProyecto) Then ErrorMovtos = True + + ImporteMN = (Pago.ImportePago * TCValuacionPago - Pago.ImportePago).RoundSQL + If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, Pago.ImportePago, ImporteMN, 266, Pago.Referencia, Concepto, CompraActual.IdCtaContableAnticipoProvComplementaria, CveCompra:=CompraActual.CveCompra, CveProveedor:=CompraActual.CveProveedor, CveIE:=Pago.CveIE, ImporteME:=Pago.ImportePago, TipoCambio:=TCValuacionPago, CveSubProyecto:=CompraActual.CveSubProyecto) Then ErrorMovtos = True + Else + 'Agregamos Nacional + If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, Pago.ImportePago, Pago.ImportePago, 21, Pago.Referencia, Concepto, CompraActual.IdCtaContableAnticipoProv, CveCompra:=CompraActual.CveCompra, CveProveedor:=CompraActual.CveProveedor, CveIE:=Pago.CveIE, CvePersonal:=Pago.CvePersonal, TipoCambioPago:=Pago.TCPago) Then ErrorMovtos = True + + End If + + End If + + If Pago.TipoPago.Contiene("NC", "DEV") AndAlso Not ErrorMovtos Then ' N O T A D E C R E D I T O + Dim Ret As New ConceptosRetenciones + If Pago.CveMonedaPago > 1 Then + 'Agregamos la Extranjera + If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, Pago.ImportePago, Pago.ImportePago, 60, Pago.Referencia, Concepto, CompraActual.IdCtaContableProv, CveCompra:=Pago.CveCompraAmortizacion, CveCompraAmortizacion:=CompraActual.CveCompra, CveProveedor:=CompraActual.CveProveedor, CveIE:=Pago.CveIE, ImporteME:=Pago.ImportePago, TipoCambio:=TCValuacionPago, CveSubProyecto:=CompraActual.CveSubProyecto) Then ErrorMovtos = True + + ImporteMN = (Pago.ImportePago * TCValuacionPago - Pago.ImportePago).RoundSQL + If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, Pago.ImportePago, ImporteMN, 235, Pago.Referencia, Concepto, CompraActual.IdCtaContableProvComplementaria, CveCompra:=Pago.CveCompraAmortizacion, CveVentaAmortizacion:=CompraActual.CveCompra, CveProveedor:=CompraActual.CveProveedor, CveIE:=Pago.CveIE, ImporteME:=Pago.ImportePago, TipoCambio:=TCValuacionPago, CveSubProyecto:=CompraActual.CveSubProyecto) Then ErrorMovtos = True + Else + 'Agregamos Nacional + If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, Pago.ImportePago, Pago.ImportePago, 60, Pago.Referencia, Concepto, CompraActual.IdCtaContableProv, CveCompra:=Pago.CveCompraAmortizacion, CveVentaAmortizacion:=CompraActual.CveCompra, CveProveedor:=CompraActual.CveProveedor, CveIE:=Pago.CveIE, CvePersonal:=Pago.CvePersonal) Then ErrorMovtos = True + + End If + + End If + + If Pago.TipoPago = "DD" AndAlso Not ErrorMovtos Then ' D E U D O R D I V E R S O + Dim Ret As New ConceptosRetenciones + If UsuarioActual.Empresa.TipoContabilidad = 2 Then + If ObjConta.GetRetCuenta(66, UsuarioActual.CveEmpresa) AndAlso ObjConta.DtResultados.Rows.Count > 0 Then Ret.IdCtaContableAcreditable = ObjConta.DtResultados.Rows(0)("IdCuentaIEPSAcreditable").ToString.ToEntero + If Pago.CveMonedaPago > 1 AndAlso ObjConta.GetRetCuenta(207, UsuarioActual.CveEmpresa) AndAlso ObjConta.DtResultados.Rows.Count > 0 Then Ret.IdCtaContablexAcreditar = ObjConta.DtResultados.Rows(0)("IdCuentaIEPSxAcreditar").ToString.ToEntero + End If + + If Pago.CveMonedaPago > 1 Then + 'Agregamos la Extranjera + If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, Pago.ImportePago, Pago.ImportePago, 92, Pago.Referencia, Concepto, CompraActual.IdCtaContableProv, CveCompra:=Pago.CveCompraAmortizacion, CveCompraAmortizacion:=CompraActual.CveCompra, CveProveedor:=CompraActual.CveProveedor, CveIE:=Pago.CveIE, ImporteME:=Pago.ImportePago, TipoCambio:=TCValuacionPago, CveSubProyecto:=CompraActual.CveSubProyecto, CvePersonal:=Pago.CvePersonal) Then ErrorMovtos = True + + ImporteMN = (Pago.ImportePago * TCValuacionPago - Pago.ImportePago).RoundSQL + If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, Pago.ImportePago, ImporteMN, 207, Pago.Referencia, Concepto, CompraActual.IdCtaContableProvComplementaria, CveCompra:=Pago.CveCompraAmortizacion, CveProveedor:=CompraActual.CveProveedor, CveIE:=Pago.CveIE, ImporteME:=Pago.ImportePago, TipoCambio:=TCValuacionPago, CveSubProyecto:=CompraActual.CveSubProyecto, CvePersonal:=Pago.CvePersonal) Then ErrorMovtos = True + Else + 'Agregamos Nacional + If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, Pago.ImportePago, Pago.ImportePago, 92, Pago.Referencia, Concepto, CompraActual.IdCtaContableProv, CveVenta:=Pago.CveCompraAmortizacion, CveProveedor:=CompraActual.CveProveedor, CveIE:=Pago.CveIE, CveSubProyecto:=CompraActual.CveSubProyecto, CvePersonal:=Pago.CvePersonal) Then ErrorMovtos = True + + End If + End If + + 'If Pago.TipoPago = "Egsc" AndAlso Not ErrorMovtos Then ' I N G R E S O S X C O M P R O B A R + ' Dim Ret As New ConceptosRetenciones + ' If UsuarioActual.Empresa.TipoContabilidad = 2 Then + ' If ObjConta.GetRetCuenta(66, UsuarioActual.CveEmpresa) AndAlso ObjConta.DtResultados.Rows.Count > 0 Then Ret.IdCtaContableAcreditable = ObjConta.DtResultados.Rows(0)("IdCuentaIEPSAcreditable").ToString.ToEntero + ' If Pago.CveMonedaPago > 1 AndAlso ObjConta.GetRetCuenta(207, UsuarioActual.CveEmpresa) AndAlso ObjConta.DtResultados.Rows.Count > 0 Then Ret.IdCtaContablexAcreditar = ObjConta.DtResultados.Rows(0)("IdCuentaIEPSxAcreditar").ToString.ToEntero + + ' End If + + ' If Pago.CveMonedaPago > 1 Then + ' 'Agregamos la Extranjera + ' If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, Pago.ImportePago, Pago.ImportePago, 92, Pago.Referencia, Concepto, VentaActual.IdCtaContableClienteAnticipo, CveVenta:=VentaActual.CveVenta, CveCliente:=VentaActual.CveCliente, CveIE:=Pago.CveIE, ImporteME:=Pago.ImportePago, TipoCambio:=TCValuacionPago, CveSubProyecto:=VentaActual.CveSubProyecto, CvePersonal:=Pago.CvePersonal) Then ErrorMovtos = True + + ' ImporteMN = (Pago.ImportePago * TCValuacionPago - Pago.ImportePago).RoundSQL + ' If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, Pago.ImportePago, ImporteMN, 207, Pago.Referencia, Concepto, VentaActual.IdCtaContableClienteAnticipoComplementaria, CveVenta:=VentaActual.CveVenta, CveCliente:=VentaActual.CveCliente, CveIE:=Pago.CveIE, ImporteME:=Pago.ImportePago, TipoCambio:=TCValuacionPago, CveSubProyecto:=VentaActual.CveSubProyecto, CvePersonal:=Pago.CvePersonal) Then ErrorMovtos = True + ' Else + ' 'Agregamos Nacional + ' If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, Pago.ImportePago, Pago.ImportePago, 92, Pago.Referencia, Concepto, VentaActual.IdCtaContableClienteAnticipoExtranjera, CveVenta:=VentaActual.CveVenta, CveCliente:=VentaActual.CveCliente, CveIE:=Pago.CveIE, CveSubProyecto:=VentaActual.CveSubProyecto, CvePersonal:=Pago.CvePersonal) Then ErrorMovtos = True + + ' End If + 'End If + If Not ErrorMovtos AndAlso TCValuacion <> Pago.TCPago Then Dim ConceptoContable, IdCtaContable As Integer Dim TipoMovimiento As Boolean @@ -9833,6 +9909,7 @@ Public Class ClsPaginas Public Property OtroGastoIngreso As Decimal = 0 Public Property CveConceptoPago As Integer = -1 'no definido de inicio Public Property CveCreditoDetalle As Integer = -1 + Public Property Referencia As String = "" Public Property AplicaAcreditable As Boolean = True End Class @@ -9859,9 +9936,10 @@ Public Class ClsPaginas Public Property CveConceptoRetISR As Integer Public Property CveSubProyecto As Integer Public Property UsuarioActual As Usuario - Public Property IdCtaContableProv As Integer Public Property IdCtaContableProvComplementaria As Integer + Public Property IdCtaContableAnticipoProv As Integer + Public Property IdCtaContableAnticipoProvComplementaria As Integer Public ReadOnly Property ConceptoPrePolizaIVA As ConceptosRetenciones Get Dim Ret As New ConceptosRetenciones From 11ff85ce7bccdfc4f0ba52093f5a4fc0acee18eb Mon Sep 17 00:00:00 2001 From: rrene Date: Wed, 9 Nov 2022 14:44:43 -0700 Subject: [PATCH 24/31] -- poner hms, en fecha registro compra --- Compras/Compras.aspx | 13 +++++-------- Compras/Compras.aspx.vb | 3 ++- 2 files changed, 7 insertions(+), 9 deletions(-) diff --git a/Compras/Compras.aspx b/Compras/Compras.aspx index ab47bc026..0fce0f8df 100644 --- a/Compras/Compras.aspx +++ b/Compras/Compras.aspx @@ -505,7 +505,7 @@
F. Captura
- +
@@ -5925,12 +5925,9 @@ if (!isNaN(txtComision.value)) { txtComisionImporte = ToDouble(txtComision.value); } - } - - - - var txtvalue = ToDouble(txt.value); + } + var txtvalue = ToDouble(txt.value); if (txtComisionImporte != 0 && txtComisionImporte > txtvalue) { @@ -5941,7 +5938,7 @@ return; } - + debugger; if (CveMonedaAnticipo == 1 && CveMonedaOriginal == 2) { txtvalue = ToDouble(txtvalue / TCAnticipo); } else if (CveMonedaAnticipo == 2 && CveMonedaOriginal == 1) { @@ -5949,7 +5946,7 @@ } var SaldoCompra = (TotalSaldo - FnSumaValoresAnt() + ToDouble(txtvalue)).toFixed(2); // le agrego lo del valor actual para validarlo //parseFloat(parseFloat($get('HdnCompraSaldo').value).toFixed(2)); - + alert(txtvalue); if (SaldoCompra < 0) txt.value = SaldoCompra - txtvalue; //minimo entre saldocompra y el saldoanticipo if (SaldoCompra < saldo) saldo = SaldoCompra; diff --git a/Compras/Compras.aspx.vb b/Compras/Compras.aspx.vb index a53bd63c7..98199c58b 100644 --- a/Compras/Compras.aspx.vb +++ b/Compras/Compras.aspx.vb @@ -2625,6 +2625,7 @@ Partial Class Compras_Compras TxtObsFact.Text = dr("Observaciones").ToString LblUsuarioCaptura.Text = dr("Usuario").ToString LitFechCaptura.Text = dr("FechaIng").ToString.ToDate.ToShortDateString + LitFechCaptura.ToolTip = dr("FechaIng").ToString LblRetIVA.Text = Math.Round((dr("RetIVA").ToString.ToDouble / TxtSubTotal2.Text.ToDouble) * 100, 4).FormatoNumero(3) + "%" LblRetISR.Text = Math.Round((dr("RetISR").ToString.ToDouble / TxtSubTotal2.Text.ToDouble) * 100, 4).FormatoNumero(3) If dr("TipoFactura").ToString <> "CFDi" Then LblTipoFact.Text = dr("TipoFactura").ToString : divTipoFactura.Visible = True @@ -4757,7 +4758,7 @@ Partial Class Compras_Compras 'End If 'METODO DE PREPOLIZA DE ALMACEN - If UsuarioActual.CveEmpresa.Contiene(1, 119, 72, 80, 140, 141, 145, 152, 153, 154, 158, 159, 160, 161, 162, 163) And UsuarioActual.Empresa.UsaInventarios And Not UsuarioActual.Empresa.Funcionalidad(126) = "1" Then + If UsuarioActual.CveEmpresa.Contiene(1, 119, 72, 80, 140, 141, 145, 152, 153, 154, 158, 159, 160, 161, 162, 163, 172, 173) And UsuarioActual.Empresa.UsaInventarios And Not UsuarioActual.Empresa.Funcionalidad(126) = "1" Then Dim ImporteAlmacen = TmpDT.SUM(If(ListaDocumentos IsNot Nothing AndAlso ListaDocumentos.Count > 0 AndAlso ArrAnticipos IsNot Nothing AndAlso ArrAnticipos.Count > 0, "ImporteSinImpuestos", "Total"), $"ISNULL(TipoAF,0) <> 2 AND ISNULL(CveAlmacen,0) = 0 AND ISNULL(AplicaCostoIndirecto,0) <> 1 AND CveTipoPS = 2").ToString.ToDecimal If ImporteAlmacen > 0 Then If Not DdlTipoComprobante.SelectedValue.Contiene("NC", "DEV", "Ant") Then From da412a3701b438cdaa567c376c07b0f4d426cd5f Mon Sep 17 00:00:00 2001 From: Jonathan Alexis Perez Morales Date: Wed, 9 Nov 2022 16:27:02 -0700 Subject: [PATCH 25/31] Tipo de cambio para comercio exterior --- Ventas/Ventas.aspx.vb | 47 +++++++++++++++++++++++++++++++++---------- 1 file changed, 36 insertions(+), 11 deletions(-) diff --git a/Ventas/Ventas.aspx.vb b/Ventas/Ventas.aspx.vb index aae7589be..e71bdf7eb 100644 --- a/Ventas/Ventas.aspx.vb +++ b/Ventas/Ventas.aspx.vb @@ -6413,6 +6413,7 @@ Partial Class Ventas If ObjCliente.AplicaComercioExterior Then ChkEmitirComercioExterior.Checked = True + ChkEmitirComercioExterior_CheckedChanged(ChkEmitirComercioExterior, EventArgs.Empty) End If If ObjCliente.AplicaComercioExterior Then @@ -8577,6 +8578,10 @@ Partial Class Ventas Exit Sub End If End If + If ChkEmitirComercioExterior.Checked AndAlso DdlMoneda.SelectedValue.ToEntero() <> 2 Then + Alert("La moneda de la factura debe ser dolares cuando aplica comercio exterior.", TipoMensaje.MsgAdvertencia) + Exit Sub + End If If UsuarioActual.Empresa.Funcionalidad(350) = "1" AndAlso DdlTipoComprobante.SelectedValue.Contiene("Ing", "Ant", "Egs", "Dev") Then @@ -12201,15 +12206,14 @@ Partial Class Ventas Timbre.Complementos.ComercioExterior11.CertificadoOrigen = "0" Timbre.Complementos.ComercioExterior11.Incoterm = GlobalDTIncoterm.FiltroPrimeroValor("ClaveSATIncoterm", $"CveIncoterm={DdlIncoterm.SelectedValue}") Timbre.Complementos.ComercioExterior11.Subdivision = "0" - Timbre.Complementos.ComercioExterior11.TipoCambioUSD = If(Obj.CveMoneda = 1, 1, Obj.TipoCambio.ToString().ToDecimal) + + Timbre.Complementos.ComercioExterior11.TipoCambioUSD = If(Obj.CveMoneda = 1, 1, Obj.TipoCambio) If Timbre.Comprobante.TipoComprobante = "T" Then Timbre.Complementos.ComercioExterior11.MotivoTraslado = GlobalDTSATMotivoTraslado.FiltroPrimeroValor("ClaveSATMotivoTraslado", $"CveMotivoTraslado={DdlSATMotivoTraslado.SelectedValue}") Else Timbre.Complementos.ComercioExterior11.MotivoTraslado = "" End If - - 'EMISOR Dim Dr As DataRow Dr = Nothing @@ -13293,7 +13297,12 @@ Partial Class Ventas If UsuarioActual.CveEmpresa.Contiene(13, 83) Then tipoCambio = GlobalTipoCambio(ObjFactura.Fecha.AddDays(-1)).ToString().ToDecimal Else - tipoCambio = GlobalTipoCambio(ObjFactura.Fecha).ToString().ToDecimal + If ChkEmitirComercioExterior.Checked Then + tipoCambio = GlobalTipoCambio(ObjFactura.Fecha.AddDays(-1)).ToString().ToDecimal + Else + tipoCambio = GlobalTipoCambio(ObjFactura.Fecha).ToString().ToDecimal + End If + End If Else tipoCambio = 1 @@ -16951,7 +16960,7 @@ Partial Class Ventas If UsuarioActual.TienePermisoProceso(68) AndAlso Not PSCodigoSAT.Contiene("84111506", "80141610") Then TxtPrecio.Enabled = False - If TmpDT IsNot Nothing AndAlso TmpDT.Rows.Count = 0 Then + If TmpDT IsNot Nothing AndAlso TmpDT.Rows.Count = 0 AndAlso Not ChkEmitirComercioExterior.Checked Then DdlMoneda.SelectedValueExist(drPS("CveMoneda").ToString()) CambiaMoneda() End If @@ -21760,7 +21769,7 @@ Partial Class Ventas ChkConvertirDolares.Enabled = Not UsuarioActual.TienePermisoProceso(324) Case "2" TxtTipoCambioDlls.Text = "1" - If UsuarioActual.CveEmpresa.Contiene(13, 83) Then + If UsuarioActual.CveEmpresa.Contiene(13, 83) OrElse ChkEmitirComercioExterior.Checked Then TxtTipoCambio.Text = GlobalTipoCambio(TxtFecha.Text.ToDate.AddDays(-1)).ToString() Else TxtTipoCambio.Text = GlobalTipoCambio(TxtFecha.Text.ToDate).ToString() @@ -21769,7 +21778,7 @@ Partial Class Ventas ChkConvertirDoctoPesos.Enabled = Not UsuarioActual.TienePermisoProceso(324) Case Else - If UsuarioActual.CveEmpresa.Contiene(13, 83) Then + If UsuarioActual.CveEmpresa.Contiene(13, 83) OrElse ChkEmitirComercioExterior.Checked Then TxtTipoCambio.Text = GlobalTipoCambio(TxtFecha.Text.ToDate.AddDays(-1)).ToString() Else TxtTipoCambio.Text = GlobalTipoCambio(TxtFecha.Text.ToDate).ToString() @@ -24303,6 +24312,10 @@ Partial Class Ventas ChkDevAlm.Checked = True End If + If UsuarioActual.Empresa.Funcionalidad(567) = "1" AndAlso ObjFacturaCancelacion.TipoDocto = "Rem" Then + ChkDevAlm.Checked = True + End If + resp = ObjFacturaCancelacion.CancelarFactura(ChkDevAlm.Checked, ListaRemisionesCancelar, CveMotivoCancelacion:=DdlMotivoCancelacion.SelectedValue.ToEntero(), Motivo:=TxtMotivoCancelacion.Text.Trim(), CveEstadoCancelacion:=Me.CveEstadoCancelacion) strMensaje.Append(resp.Mensaje) Dim DtBonificaciones As DataTable = Nothing @@ -28360,7 +28373,7 @@ Partial Class Ventas If DdlMoneda.SelectedValue <> "1" Then - If UsuarioActual.CveEmpresa.Contiene(13, 83) Then + If UsuarioActual.CveEmpresa.Contiene(13, 83) OrElse ChkEmitirComercioExterior.Checked Then TxtTipoCambio.Text = GlobalTipoCambio(Now.AddDays(-1)).ToString() Else TxtTipoCambio.Text = GlobalTipoCambio(Now).ToString() @@ -28454,7 +28467,7 @@ Partial Class Ventas 'verifica el tipo de cambio que se actualice If DdlMoneda.SelectedValue <> "1" Then - If UsuarioActual.CveEmpresa.Contiene(13, 83) Then + If UsuarioActual.CveEmpresa.Contiene(13, 83) OrElse ChkEmitirComercioExterior.Checked Then TxtTipoCambio.Text = GlobalTipoCambio(Now.AddDays(-1)).ToString() Else TxtTipoCambio.Text = GlobalTipoCambio(Now).ToString() @@ -29571,7 +29584,7 @@ Partial Class Ventas End If - If UsuarioActual.CveEmpresa.Contiene(13, 83) Then + If UsuarioActual.CveEmpresa.Contiene(13, 83) OrElse ChkEmitirComercioExterior.Checked Then TxtTipoCambio.Text = GlobalTipoCambio(Now.AddDays(-1)).ToString() Else TxtTipoCambio.Text = GlobalTipoCambio(Now).ToString() @@ -33294,7 +33307,7 @@ Partial Class Ventas End If ObjFactura.SetSubProyecto() - EnviarPolizaVentaWS(obj, CvePolizaVirtual, ObjFactura.SubProyecto.Acum_PortalUsuario, ObjFactura.SubProyecto.Acum_PortalContrasena) + 'EnviarPolizaVentaWS(obj, CvePolizaVirtual, ObjFactura.SubProyecto.Acum_PortalUsuario, ObjFactura.SubProyecto.Acum_PortalContrasena) End If Next @@ -35512,6 +35525,18 @@ Partial Class Ventas End Function Protected Sub ChkEmitirComercioExterior_CheckedChanged(sender As Object, e As EventArgs) + If CveVenta <= 0 OrElse EsCreaApartirDe Then + If ChkEmitirComercioExterior.Checked Then + DdlMoneda.SelectedValueExist("2") + CambiaMoneda() + TxtTipoCambio.Text = GlobalTipoCambio(TxtFecha.Text.ToDate.AddDays(-1)).ToString() + Alert("El tipo de cambio va ser el del dia anterior a la fecha de la factura cuando se utiliza comercio exterior") + Else + TxtTipoCambio.Text = GlobalTipoCambio(TxtFecha.Text.ToDate).ToString() + End If + + UpPS.Update() + End If End Sub From 6caf851fa0e4a31c71f80f3bf34ca5cf0c9ec18d Mon Sep 17 00:00:00 2001 From: Jonathan Alexis Perez Morales Date: Wed, 9 Nov 2022 16:28:44 -0700 Subject: [PATCH 26/31] Filtros de fechas en bitacora de usuario --- App_Code/ClsSisUsuarios.vb | 288 +++++++++++++------------- Sistemas/UsuarioDetalle.aspx | 41 +++- Sistemas/UsuarioDetalle.aspx.vb | 345 ++++++++++++++++++-------------- 3 files changed, 377 insertions(+), 297 deletions(-) diff --git a/App_Code/ClsSisUsuarios.vb b/App_Code/ClsSisUsuarios.vb index 2d74edb22..352595214 100644 --- a/App_Code/ClsSisUsuarios.vb +++ b/App_Code/ClsSisUsuarios.vb @@ -5,12 +5,12 @@ Imports System.Data Imports System.Data.SqlClient Imports Extensiones Public Class ClsSisUsuarios - Implements IDisposable - - + Implements IDisposable + + #Region "Campos" - - 'SQL + + 'SQL Private SqlConexion As SqlConnection Private SqlAdapter As SqlDataAdapter Private SqlTransacc As SqlTransaction @@ -21,12 +21,12 @@ Public Class ClsSisUsuarios Private disposedValue As Boolean = False ' Para detectar llamadas redundantes 'PARA REGISTRAR CONEXION - Private CveConexion As Integer = 0 - + Private CveConexion As Integer = 0 + #End Region - + #Region "Propiedades" - + Public ReadOnly Property DtResultados() As DataTable Get DtResultados = Data @@ -60,9 +60,9 @@ Public Class ClsSisUsuarios Public Property CveSubProyecto As Integer Public Property AsignarAutomaticamenteSubProyecto As Boolean Public Property AsignarAutomaticamenteOC As Boolean - Public Property DescuentoAutorizado As Double + Public Property DescuentoAutorizado As Double #End Region - + Sub New(Optional TransaccionCompartida As SqlTransaction = Nothing) If TransaccionCompartida Is Nothing Then @@ -90,9 +90,9 @@ Public Class ClsSisUsuarios End With If Not SqlTransacc Is Nothing Then SqlAdapter.SelectCommand.Transaction = SqlTransacc Data = New DataTable - End Sub + End Sub #Region "Conexiones" - + Private Sub ConexionAdd() If ConfigurationManager.AppSettings("RegistraConexion") IsNot Nothing AndAlso ConfigurationManager.AppSettings("RegistraConexion").ToString() = "1" Then @@ -127,7 +127,7 @@ Public Class ClsSisUsuarios End If - End Sub + End Sub #End Region Private Sub DataCommand(pStrSQL As String, Optional TipoComando As CommandType = CommandType.StoredProcedure) With SqlCommand @@ -237,9 +237,9 @@ Public Class ClsSisUsuarios '* Retorno.NombreAbreviatura = Data.Rows(0)("NombreAbreviatura").ToString() - Retorno.DescuentoAutorizado = Data.Rows(0)("DescuentoAutorizado").ToString().ToDouble() - - Retorno.PorcentajeMaximoAutorizacion = Data.Rows(0)("PorcentajeMaximoAutorizacion").ToString().ToDecimal() + Retorno.DescuentoAutorizado = Data.Rows(0)("DescuentoAutorizado").ToString().ToDouble() + + Retorno.PorcentajeMaximoAutorizacion = Data.Rows(0)("PorcentajeMaximoAutorizacion").ToString().ToDecimal() Retorno.DiasMaximoAutorizacion = Data.Rows(0)("DiasMaximoAutorizacion").ToString().ToEntero() Retorno.CodigoAutorizado = Data.Rows(0)("CodigoAutorizado").ToString() @@ -415,8 +415,8 @@ Public Class ClsSisUsuarios End Try Return Retorno - End Function - + End Function + Public Function ValidaUsuarioCodigoAcceso(CodigoAcceso As String, CveEmpresa As Integer) As Integer Dim Retorno As Integer = Nothing @@ -429,7 +429,7 @@ Public Class ClsSisUsuarios Try SqlAdapter.Fill(Data) - If Data.Rows.Count > 0 Then + If Data.Rows.Count > 0 Then Retorno = Data.Rows(0)("CveUsuario").ToString.ToEntero End If @@ -439,7 +439,7 @@ Public Class ClsSisUsuarios End Try Return Retorno - End Function + End Function Public Function ValidaUsuarioPortalCliente(CveCliente As Integer, Usuario As String, Password As String) As Usuario Dim Retorno As Usuario = Nothing @@ -467,7 +467,7 @@ Public Class ClsSisUsuarios 'Retorno.NombreEmpresa = Data.Rows(0)("Empresa").ToString Retorno.CveEmpresa = Data.Rows(0)("CveEmpresa").ToString.ToEntero Retorno.CveCliente = CveCliente - Retorno.ClienteGPS = False + Retorno.ClienteGPS = False Retorno.Portal = True Retorno.Referencia = Data.Rows(0)("Referencia").ToString Retorno.EsSupervisorRH = If(Data.Rows(0)("EsSupervisorRH").ToString = "1", True, False) @@ -495,8 +495,8 @@ Public Class ClsSisUsuarios End Try Return Retorno - End Function - + End Function + Public Function ValidaUsuarioPortalProveedor(CveProveedor As Integer, Usuario As String, Password As String) As Usuario Dim Retorno As Usuario = Nothing @@ -524,7 +524,7 @@ Public Class ClsSisUsuarios 'Retorno.NombreEmpresa = Data.Rows(0)("Empresa").ToString Retorno.CveEmpresa = Data.Rows(0)("CveEmpresa").ToString.ToEntero Retorno.CveProveedor = CveProveedor - Retorno.ClienteGPS = False + Retorno.ClienteGPS = False Retorno.Portal = True Retorno.Referencia = Data.Rows(0)("Referencia").ToString Retorno.EsSupervisorRH = If(Data.Rows(0)("EsSupervisorRH").ToString = "1", True, False) @@ -553,9 +553,9 @@ Public Class ClsSisUsuarios End Try Return Retorno - End Function - - + End Function + + #Region "U S U A R I O - I N D I C A D O R E S" Public Function getUsuarioIndicadores(_CveUsuario As Integer, _CveEmpresa As Integer, _CveRol As Integer) As DataTable @@ -576,9 +576,9 @@ Public Class ClsSisUsuarios Return dTable - End Function + End Function #End Region - + #Region "U S U A R I O - E M P R E S A S " Public Function AddUsuariosEmpresas(CveUsuario As Integer, CveEmpresa As Integer, Optional CveUsuarioModifico As Integer = -1) As Boolean Dim Retorno As Boolean = False @@ -716,9 +716,9 @@ Public Class ClsSisUsuarios End Try Return Retorno - End Function + End Function #End Region - + #Region "U S U A R I O S" Public Function GetUsuarios(CveUsuario As Integer, Optional CveRol As Integer = -1, Optional CveUsuarioControlado As Integer = -1, Optional Estatus As Integer = -1) As Boolean Dim Retorno As Boolean = False @@ -731,9 +731,9 @@ Public Class ClsSisUsuarios .Add("@Usuario", SqlDbType.VarChar).Value = "-1" .Add("@Contraseña", SqlDbType.VarChar).Value = "-1" .Add("@EsLogIn", SqlDbType.Bit).Value = 0 - .Add("@Estatus", SqlDbType.Int).Value = Estatus - - + .Add("@Estatus", SqlDbType.Int).Value = Estatus + + End With Try @@ -825,7 +825,7 @@ Public Class ClsSisUsuarios Public Function AddUsuario(Usuario As String, Contraseña As String, Nombre As String, CveRol As Integer, Correo As String, CvePersonal As Integer, CveVendedor As Integer, CambiarContraseña As Boolean, CveUsuarioIng As Integer, CveEmpresa As Integer, CveSubProyecto As Integer, Optional Rol As String = "-1", Optional CveAlmacenAsignado As Integer = -1, Optional AsignarSubProyecto As Boolean = False, Optional AsignarOC As Boolean = False, - Optional CvePlataforma As Integer = -1, Optional CveClientePlataforma As Integer = -1, Optional CveProveedorPlataforma As Integer = -1, Optional DescuentoAutorizado As Double = 0, Optional CodigoAcceso As String = "-1", + Optional CvePlataforma As Integer = -1, Optional CveClientePlataforma As Integer = -1, Optional CveProveedorPlataforma As Integer = -1, Optional DescuentoAutorizado As Double = 0, Optional CodigoAcceso As String = "-1", Optional LimiteCreditoAutorizado As Decimal = 0, Optional PorcentajeMaximoAutorizacion As Decimal = 0, Optional DiasMaximoAutorizacion As Integer = 0) As Integer Dim Retorno = -1 DataAdapter("PA_Sis_UsuarioAdd") @@ -848,10 +848,10 @@ Public Class ClsSisUsuarios .Add("@DescuentoAutorizado", SqlDbType.Float).Value = DescuentoAutorizado .Add("@CodigoAcceso", SqlDbType.VarChar).Value = CodigoAcceso .Add("@LimiteCreditoAutorizado", SqlDbType.Money).Value = LimiteCreditoAutorizado - .Add("@PorcentajeMaximoAutorizacion", SqlDbType.Money).Value = PorcentajeMaximoAutorizacion + .Add("@PorcentajeMaximoAutorizacion", SqlDbType.Money).Value = PorcentajeMaximoAutorizacion .Add("@DiasMaximoAutorizacion", SqlDbType.Int).Value = DiasMaximoAutorizacion - .Add("@CveUsuario", SqlDbType.Int).Direction = ParameterDirection.Output + .Add("@CveUsuario", SqlDbType.Int).Direction = ParameterDirection.Output End With Try @@ -970,8 +970,8 @@ Public Class ClsSisUsuarios .Add("@AsignarOC", SqlDbType.Bit).Value = AsignarOC .Add("@DescuentoAutorizado", SqlDbType.Float).Value = DescuentoAutorizado .Add("@CodigoAcceso", SqlDbType.VarChar).Value = CodigoAcceso - .Add("@LimiteCreditoAutorizado", SqlDbType.Money).Value = LimiteCreditoAutorizado - .Add("@PorcentajeMaximoAutorizacion", SqlDbType.Money).Value = PorcentajeMaximoAutorizacion + .Add("@LimiteCreditoAutorizado", SqlDbType.Money).Value = LimiteCreditoAutorizado + .Add("@PorcentajeMaximoAutorizacion", SqlDbType.Money).Value = PorcentajeMaximoAutorizacion .Add("@DiasMaximoAutorizacion", SqlDbType.Int).Value = DiasMaximoAutorizacion End With @@ -1061,16 +1061,18 @@ Public Class ClsSisUsuarios End Try Return Retorno - End Function + End Function #End Region - + #Region "B I T A C O R A D E U S A R I O S" - Public Function GetBitacora(CveUsuario As Integer) As Boolean + Public Function GetBitacora(CveUsuario As Integer, Optional FechaI As DateTime = ModExtensiones.MinFecha, Optional FechaF As DateTime = ModExtensiones.MaxFecha) As Boolean Dim Retorno As Boolean = False DataAdapter("PA_Sis_UsuariosBitacoraGet") With SqlAdapter.SelectCommand.Parameters .Add("@CveUsuario", SqlDbType.Int).Value = CveUsuario + .Add("@FechaI", SqlDbType.DateTime).Value = FechaI + .Add("@FechaF", SqlDbType.DateTime).Value = FechaF End With Try @@ -1105,14 +1107,14 @@ Public Class ClsSisUsuarios End Try Return Retorno - End Function + End Function #End Region - + #Region "R O L E S" - - ''' - ''' Consulta para generar las opciones del MENU, Modulos que tiene un ususario - ''' + + ''' + ''' Consulta para generar las opciones del MENU, Modulos que tiene un ususario + ''' Public Function GetUsuariosRolesModulos(ByVal pCveUsuario As Integer, CveEmpresa As Integer) As DataTable DataAdapter("PA_Sis_UsuariosRolesModulosGet") @@ -1144,9 +1146,9 @@ Public Class ClsSisUsuarios End Try Return Data - End Function + End Function #End Region - + #Region "U S U A R I O S - M O D U L O S" Public Function GetUsuariosModulos(CveUsuario As Integer, CveEmpresa As Integer, Optional CveUsuarioActual As Integer = -1, Optional CvePlataforma As Integer = -1) As Boolean Dim Retorno As Boolean = False @@ -1235,9 +1237,9 @@ Public Class ClsSisUsuarios End Try Return Retorno - End Function + End Function #End Region - + #Region "U S U A R I O S - D I S P O S I T I V O S" Public Function UpdateUsuariosDispositivos(CveUsuario As Integer, CveDispositivo As Integer, Permitir As Boolean) As Boolean Dim Retorno As Boolean = False @@ -1262,9 +1264,9 @@ Public Class ClsSisUsuarios End Try Return Retorno - End Function + End Function #End Region - + #Region "U S U A R I O S - C O M A N D O S" Public Function UpdateUsuariosComandos(CveUsuario As Integer, CveUsuarioAsigno As Integer, CveComando As Integer, Permitir As Boolean, EsFavorito As Boolean) As Boolean Dim Retorno As Boolean = False @@ -1291,10 +1293,10 @@ Public Class ClsSisUsuarios End Try Return Retorno - End Function + End Function #End Region - - + + #Region "U S U A R I O S - P R O C E S O S " Public Function GetUsuariosProcesos(CveUsuario As Integer, Optional CveUsuarioActual As Integer = -1) As Boolean Dim Retorno As Boolean = False @@ -1382,11 +1384,11 @@ Public Class ClsSisUsuarios End Try Return Retorno - End Function + End Function #End Region - + #Region "U S U A R I O S - P O R T AL " - + Public Function GetUsuariosPortal(pCveUsuarioPortal As Integer, pCveCliente As Integer, pCveProveedor As Integer) As Boolean Dim Retorno As Boolean = False @@ -1488,12 +1490,12 @@ Public Class ClsSisUsuarios End Try Return Retorno - End Function - - + End Function + + #End Region - - + + #Region " S U B - P R O Y E C T O S " Public Function GetSubProyectos(CveUsuario As Integer, Optional CveSubProyecto As Integer = -1) As Boolean Dim Retorno As Boolean = False @@ -1576,10 +1578,10 @@ Public Class ClsSisUsuarios End Try Return Retorno - End Function - + End Function + #End Region - + #Region " E S T A T U S O C " Public Function GetEstatusOC(CveUsuario As Integer) As Boolean Dim Retorno As Boolean = False @@ -1656,8 +1658,8 @@ Public Class ClsSisUsuarios End Try Return Retorno - End Function - + End Function + #End Region #Region "C L A S I F I C A C I O N E S" Public Function AddUsuariosClasificaciones(CveUsuario As Integer, CveClasificacion As Integer, CveUsuarioIng As Integer, CveUsuarioModifico As Integer) As Boolean @@ -1721,8 +1723,8 @@ Public Class ClsSisUsuarios End Try Return Retorno - End Function - + End Function + #End Region #Region " A L M A C E N " Public Function GetAlmacen(CveUsuario As Integer, CveEmpresa As Integer) As Boolean @@ -1805,9 +1807,9 @@ Public Class ClsSisUsuarios End Try Return Retorno - End Function + End Function #End Region - + Private Function GeneraMenu(CveUsuario As Integer, dtMenu As DataTable, Optional CvePlataforma As Integer = 1) As Boolean Dim Retorno As Boolean = False dtMenu.TableName = "UsuariosModulos" @@ -1836,10 +1838,10 @@ Public Class ClsSisUsuarios Return Retorno - End Function - - - + End Function + + + #Region " CLONAR USUARIOS " Public Function ClonarUsuario(CveUsuario As Integer, CveUsuarioClonado As Integer, UsuariosEmpresas As Boolean, UsuariosModulos As Boolean, UsuariosProcesos As Boolean, UsuariosSubProyectos As Boolean, UsuariosAlmacenes As Boolean, UsuariosOC As Boolean, UsuariosOS As Boolean) As Boolean Dim Retorno As Boolean = False @@ -1884,12 +1886,12 @@ Public Class ClsSisUsuarios End Try Return Retorno - End Function + End Function #End Region - - + + #Region " RESTRICCIONES ACCESO " - + Public Function UsuariosRestriccionesAccesoAdd(CveUsuario As Integer, IP As String, MAC As String, HI1 As String, HF1 As String, HI2 As String, HF2 As String, HI3 As String, HF3 As String, HI4 As String, HF4 As String, HI5 As String, HF5 As String, HI6 As String, HF6 As String, HI7 As String, HF7 As String, Optional CveUsuarioModifico As Integer = -1) As Boolean Dim Retorno As Boolean = False @@ -2016,10 +2018,10 @@ Public Class ClsSisUsuarios End Try Return Retorno - End Function + End Function #End Region - - + + #Region "ACTUALIZAR USUARIO RESPONSABLE MASIVAMENTE" Public Function UpdateUsuarioResponsableMasivo(CveUsuario As Integer, CveUsuarioResponsable As Integer) As Boolean Dim Retorno As Boolean = False @@ -2035,13 +2037,13 @@ Public Class ClsSisUsuarios OnError("Ocurrio un error al actualizar el Usuario Responsable.", ex) End Try Return Retorno - End Function - + End Function + #End Region - - + + #Region " ASIGNAR " - + #Region " ALMACEN ASIGNAR " Public Function GetAlmacenAsignar(CveUsuario As Integer) As Boolean Dim Retorno As Boolean = False @@ -2098,9 +2100,9 @@ Public Class ClsSisUsuarios End Try Return Retorno - End Function + End Function #End Region - + #Region " SUBPROYECTOS ASIGNAR " Public Function GetSubProyectosAsignar(CveUsuario As Integer) As Boolean Dim Retorno As Boolean = False @@ -2157,10 +2159,10 @@ Public Class ClsSisUsuarios End Try Return Retorno - End Function - + End Function + #End Region - + #Region " CUENTAS BANCARIAS " Public Function GetCuentasBancariasAsignar(CveUsuario As Integer) As Boolean Dim Retorno As Boolean = False @@ -2217,10 +2219,10 @@ Public Class ClsSisUsuarios End Try Return Retorno - End Function - + End Function + #End Region - + #Region " MODULOS " Public Function GetModulosAsignar(CveUsuario As Integer, CveEmpresa As Integer) As Boolean Dim Retorno As Boolean = False @@ -2278,10 +2280,10 @@ Public Class ClsSisUsuarios End Try Return Retorno - End Function - + End Function + #End Region - + #Region " PERMISOS " Public Function GetPermisosAsignar(CveUsuario As Integer, CveEmpresa As Integer) As Boolean Dim Retorno As Boolean = False @@ -2338,10 +2340,10 @@ Public Class ClsSisUsuarios End Try Return Retorno - End Function - + End Function + #End Region - + #Region " EMPRESAS " Public Function GetEmpresasAsignar(CveUsuario As Integer) As Boolean Dim Retorno As Boolean = False @@ -2398,10 +2400,10 @@ Public Class ClsSisUsuarios End Try Return Retorno - End Function - + End Function + #End Region - + #Region " ROLES " Public Function GetRolesAsignar(CveUsuario As Integer) As Boolean Dim Retorno As Boolean = False @@ -2458,10 +2460,10 @@ Public Class ClsSisUsuarios End Try Return Retorno - End Function - + End Function + #End Region - + #Region " PERMISOS " Public Function GetIndicadoresAsignar(CveUsuario As Integer, CveEmpresa As Integer) As Boolean Dim Retorno As Boolean = False @@ -2518,12 +2520,12 @@ Public Class ClsSisUsuarios End Try Return Retorno - End Function - + End Function + #End Region - + #End Region - + Public Function GetClienteGPSRolesModulos(ByVal pCveUsuario As Integer, CveCliente As Integer) As DataTable DataAdapter("PA_Sis_ClienteGPSRolesModulosGet") @@ -2539,11 +2541,11 @@ Public Class ClsSisUsuarios End Try Return Data - End Function - - + End Function + + #Region "U S U A R I O S - GPS " - + Public Function ValidaUsuarioGPS(Clave As String, Usuario As String, Password As String) As Usuario Dim Retorno As Usuario = Nothing @@ -2825,8 +2827,8 @@ Public Class ClsSisUsuarios End Try Return Retorno - End Function - + End Function + Public Function GetUsuarioCliente(CveUsuario As Integer, CveCliente As Integer) As Boolean Dim Retorno As Boolean = False DataAdapter("PA_Sis_UsuariosClienteGet") @@ -2849,8 +2851,8 @@ Public Class ClsSisUsuarios End Try Return Retorno - End Function - + End Function + Public Function AddUsuarioProveedor(CveUsuario As Integer, CveProveedor As Integer) As Boolean Dim Retorno As Boolean = False DataAdapter("PA_Sis_UsuariosProveedoresAdd") @@ -2873,7 +2875,7 @@ Public Class ClsSisUsuarios End Try Return Retorno - End Function + End Function Public Function GetUsuarioProveedor(CveUsuario As Integer, CveProveedor As Integer) As Boolean Dim Retorno As Boolean = False DataAdapter("PA_Sis_UsuariosProveedorGet") @@ -2896,13 +2898,13 @@ Public Class ClsSisUsuarios End Try Return Retorno - End Function - + End Function + #End Region - - + + #Region "U S U A R I O S - PyME" - + Public Function AddUsuariosModulosPyMe(CveUsuario As Integer, Rol As String) As Boolean Dim Retorno As Boolean = False @@ -2941,22 +2943,22 @@ Public Class ClsSisUsuarios End Try Return Retorno - End Function - - + End Function + + #End Region - + #Region "IDisposable Support" Protected Overridable Sub Dispose(disposing As Boolean) If Not Me.disposedValue Then - If disposing Then - - - If Not Data Is Nothing Then Data.Dispose() : Data = Nothing - If Not SqlAdapter Is Nothing Then SqlAdapter.Dispose() : SqlAdapter = Nothing - If Not SqlCommand Is Nothing Then SqlCommand.Dispose() : SqlCommand = Nothing - If Not SqlTransacc Is Nothing Then SqlTransacc.Dispose() : SqlTransacc = Nothing - If SqlConexion.State <> ConnectionState.Closed Then SqlConexion.Close() + If disposing Then + + + If Not Data Is Nothing Then Data.Dispose() : Data = Nothing + If Not SqlAdapter Is Nothing Then SqlAdapter.Dispose() : SqlAdapter = Nothing + If Not SqlCommand Is Nothing Then SqlCommand.Dispose() : SqlCommand = Nothing + If Not SqlTransacc Is Nothing Then SqlTransacc.Dispose() : SqlTransacc = Nothing + If SqlConexion.State <> ConnectionState.Closed Then SqlConexion.Close() If Not SqlConexion Is Nothing Then SqlConexion.Dispose() : SqlConexion = Nothing End If @@ -2967,9 +2969,9 @@ Public Class ClsSisUsuarios ConexionClose() Dispose(True) GC.SuppressFinalize(Me) - End Sub + End Sub #End Region - + End Class diff --git a/Sistemas/UsuarioDetalle.aspx b/Sistemas/UsuarioDetalle.aspx index c6e3e9dc6..3be2a8771 100644 --- a/Sistemas/UsuarioDetalle.aspx +++ b/Sistemas/UsuarioDetalle.aspx @@ -2563,19 +2563,51 @@
+
- -
+
+
+
+ +
+
+
+
Fecha Inicio:
+
+
+ + + + +
+ + +
+
Fecha Fin:
+
+
+ + + + +
+ + +
+
+
+
+
" style="display: inline-block; margin-right: -20px; width: 150px;" /> " style="margin-top: -3px;" class="btn btn-circle btn-sm label-info">
-
+
@@ -2592,6 +2624,9 @@
+ + + diff --git a/Sistemas/UsuarioDetalle.aspx.vb b/Sistemas/UsuarioDetalle.aspx.vb index f8e068c35..a4f9dbb0b 100644 --- a/Sistemas/UsuarioDetalle.aspx.vb +++ b/Sistemas/UsuarioDetalle.aspx.vb @@ -3,10 +3,11 @@ Option Strict On Imports System.Data Imports Extensiones - +Imports Microsoft.Reporting.WebForms + Partial Class Sistemas_UsuarioDetalle - Inherits ClsPaginas - + Inherits ClsPaginas + #Region "P R O P I E D A D E S" Private Property DTEstatusSubProyectos As DataTable Get @@ -403,10 +404,10 @@ Partial Class Sistemas_UsuarioDetalle Set(value As Integer) ViewState("CveEmpresaAnterior") = value End Set - End Property + End Property #End Region - - + + Protected Sub Page_Load(sender As Object, e As System.EventArgs) Handles Me.Load If Not IsPostBack Then @@ -419,6 +420,8 @@ Partial Class Sistemas_UsuarioDetalle Exit Sub End If + TxtFechaIBitacora.Text = Now.AddMonths(-1).ToString("dd/MM/yyyy") + TxtFechaFBitacora.Text = Now.ToString("dd/MM/yyyy") ViewState("CveUsuario") = PreviousPage.CurrentUsuario ViewState("CveRol") = -1 @@ -482,17 +485,17 @@ Partial Class Sistemas_UsuarioDetalle End Using End If - End Sub - - 'DOCUMENTACION - 'LOS CAMPOS DE DATATABLE "ACCION" SE REFIERE AL ESTATUS DE LOS CAMBIOS QUE OCURRIERON ANTES DE DARLE GUARDAR - ' 0/NULL/VACIO = ORIGINAL (SIN CAMBIO) - ' 1 = AGREGADO - ' 2 = ELIMINADO - ' 3 = NADA (AGREGADO Y ELIMINADO): CUANDO AGREGA UN REGISTRO Y LO ELIMINA, ES DECIR, NO SE GUARDA NADA - ' 4 = UPDATE - - + End Sub + + 'DOCUMENTACION + 'LOS CAMPOS DE DATATABLE "ACCION" SE REFIERE AL ESTATUS DE LOS CAMBIOS QUE OCURRIERON ANTES DE DARLE GUARDAR + ' 0/NULL/VACIO = ORIGINAL (SIN CAMBIO) + ' 1 = AGREGADO + ' 2 = ELIMINADO + ' 3 = NADA (AGREGADO Y ELIMINADO): CUANDO AGREGA UN REGISTRO Y LO ELIMINA, ES DECIR, NO SE GUARDA NADA + ' 4 = UPDATE + + #Region " C A R G A R - D A T O S " Private Sub CargaDatos() @@ -756,7 +759,7 @@ Partial Class Sistemas_UsuarioDetalle Public Sub CargaBitacora() Dim ObjUsuario As New ClsSisUsuarios - If ObjUsuario.GetBitacora(CveUsuario) Then + If ObjUsuario.GetBitacora(CveUsuario, TxtFechaIBitacora.Text.ToDateTime(), TxtFechaFBitacora.Text.ToDateTime()) Then GVBitacora.DataSource = ObjUsuario.DtResultados Else GVBitacora.DataSource = Nothing @@ -782,23 +785,23 @@ Partial Class Sistemas_UsuarioDetalle If CveTipoDocumentoAsignado <> "-1" Then DdlTipoDocumento.SelectedValueExist(CveTipoDocumentoAsignado) UpFiltrosAsignarPermiso.Update() - End Sub + End Sub #End Region - - 'Private Sub CargaSucursal() - ' DtSubProyectos2 = GlobalDTSubProyectos(-1, CveEmpresa:=UsuarioActual.CveEmpresa).FiltraParametros("CveSubProyecto =" & DdlSubProyectos.SelectedValue.ToEntero) - ' If DtSubProyectos2.Rows.Count > 0 Then - ' Dim dr As DataRow - ' dr = DtSubProyectos2(0) - ' CveSucursal = dr("CveSucursal").ToString.ToEntero - ' Else - ' CveSucursal = -1 - ' End If - - 'End Sub - + + 'Private Sub CargaSucursal() + ' DtSubProyectos2 = GlobalDTSubProyectos(-1, CveEmpresa:=UsuarioActual.CveEmpresa).FiltraParametros("CveSubProyecto =" & DdlSubProyectos.SelectedValue.ToEntero) + ' If DtSubProyectos2.Rows.Count > 0 Then + ' Dim dr As DataRow + ' dr = DtSubProyectos2(0) + ' CveSucursal = dr("CveSucursal").ToString.ToEntero + ' Else + ' CveSucursal = -1 + ' End If + + 'End Sub + #Region " G U A R D A R - U P D A T E " - + Private Function ValidaUsername(Username As String, Correo As String) As Boolean Dim Retorno As Boolean = True 'If CveUsuario = -1 Then @@ -1441,10 +1444,10 @@ Partial Class Sistemas_UsuarioDetalle Catch ex As Exception OnError("Ocurrió error al mandar MAIL", ex) End Try - End Sub + End Sub #End Region - - + + #Region " E L I M I N A R - U S U A R I O " Protected Sub BtnEliminar_Click(sender As Object, e As System.EventArgs) Handles BtnEliminar.Click ''DENTRO DEL PROCEDIMIENTO ELIMINA TODO LO RELACIONADO CON EL USUARIO (ALMACENES, SUBPROYECTOS, ACCESO A EMPRESAS...) @@ -1456,10 +1459,10 @@ Partial Class Sistemas_UsuarioDetalle Alert("Ocurrió un error al eliminar el usuario. Por favor vuelva a intentar", TipoMensaje.MsgError) End If ObjUsuario.Dispose() - End Sub + End Sub #End Region - - + + #Region " CONTRASEÑA " Protected Sub LnkRestablecer_Click(sender As Object, e As EventArgs) Handles LnkRestablecer.Click Dim Usuario As New ClsSisUsuarios @@ -1476,12 +1479,12 @@ Partial Class Sistemas_UsuarioDetalle End Sub Protected Sub LnkVerCodigoAcceso_Click(sender As Object, e As EventArgs) Handles LnkVerCodigoAcceso.Click Alert(CodigoAcceso) - End Sub - - + End Sub + + #End Region - - + + #Region "TAB - ASIGNACIONES" Protected Sub DdlEmpresaAsignaciones_SelectedIndexChanged(sender As Object, e As EventArgs) Handles DdlEmpresaAsignaciones.SelectedIndexChanged @@ -1543,8 +1546,8 @@ Partial Class Sistemas_UsuarioDetalle DtAsignacionesMultiEmpresa.Columns.Add("CveSucursal", GetType(Integer)) DtAsignacionesMultiEmpresa.Columns.Add("CveAlmacen", GetType(Integer)) DtAsignacionesMultiEmpresa.Columns.Add("CveTipoDocumento", GetType(String)) - End Sub - + End Sub + #Region " PROYECTOS-SUBPROYECTOS " Private Sub CargaProyectos() DdlProyecto.Items.Clear() @@ -1932,8 +1935,8 @@ Partial Class Sistemas_UsuarioDetalle End If End If ChkAsignarAllProyectos.Checked = False - End Sub - + End Sub + #Region "GV SUBPROYECTOS" Protected Sub GvSubProyectos_RowDataBound(sender As Object, e As GridViewRowEventArgs) Handles GvSubProyectos.RowDataBound If e.Row.RowType = DataControlRowType.DataRow Then @@ -2035,14 +2038,14 @@ Partial Class Sistemas_UsuarioDetalle GvSubProyectos.EditIndex = -1 CargaGvSubProyectos() - End Sub - + End Sub + #End Region - + #End Region - + #Region " ALMACENES " - + Private Function GetAlmacenesSinGV() As String Dim SB As New StringBuilder Dim prefix As String = "" @@ -2151,8 +2154,8 @@ Partial Class Sistemas_UsuarioDetalle Private Sub CargaGVAlmacen() GvAlmacenes.DataSource = DtAlmacenes.FiltraParametros(String.Format("CveEmpresa = {0} And (isnull(Accion,0) < 2 Or Accion = 4)", DdlEmpresaAsignaciones.SelectedValue.ToEntero)) GvAlmacenes.DataBind() - End Sub - + End Sub + #Region "GV ALMACENES" Protected Sub GvAlmacenes_RowDataBound(sender As Object, e As GridViewRowEventArgs) Handles GvAlmacenes.RowDataBound If e.Row.RowType = DataControlRowType.DataRow Then @@ -2239,11 +2242,11 @@ Partial Class Sistemas_UsuarioDetalle GvAlmacenes.EditIndex = -1 CargaGVAlmacen() - End Sub + End Sub #End Region - + #End Region - + #Region " CUENTAS BANCARIAS " Private Sub CargaCuentasBancarias() DdlCuentasBancarias.Items.Clear() @@ -2306,9 +2309,9 @@ Partial Class Sistemas_UsuarioDetalle DtCuentasBancarias.AcceptChanges() CargaGvCuentasBancarias() - End Sub + End Sub #End Region - + #Region " ESTATUS DE ÓRDENES DE COMPRA" Private Sub CargaEstatusOrdenesCompra() ' Exit Sub @@ -2537,9 +2540,9 @@ Partial Class Sistemas_UsuarioDetalle Else CargaGridEstatusUsuarioOC("OC") End If - End Sub + End Sub #Region "GRIDVIEW" - + Protected Sub GvEstatusUsuariosREQ_RowDataBound(sender As Object, e As GridViewRowEventArgs) Handles GvEstatusUsuariosREQ.RowDataBound If e.Row.RowType = DataControlRowType.Header Then For i As Integer = 2 To GvEstatusUsuariosREQ.Columns.Count - 1 @@ -2816,13 +2819,13 @@ Partial Class Sistemas_UsuarioDetalle End If Next End If - End Sub - - + End Sub + + #End Region - + #End Region - + #Region "ESTATUS DE ORDENES DE SERVICIO" Private Sub CargaEstatusOS() CreaGridEstatusOS() @@ -2975,9 +2978,9 @@ Partial Class Sistemas_UsuarioDetalle End If Next Next - End Sub + End Sub #End Region - + #Region " ESTATUS ORDENES DE COMPRA - CLASIFICACIONES USUARIO OC " Private Sub InicializaEstasClasificacionesOC() @@ -3039,15 +3042,15 @@ Partial Class Sistemas_UsuarioDetalle ObjOC.Dispose() CargaGVOCClasificaciones() - End Sub - - - + End Sub + + + #End Region - + #End Region - - + + #Region "TAB - ACCESO MODULOS" Public Sub CargaModulosAcceso() Dim ObjPermisos As New ClsSisUsuarios @@ -3133,10 +3136,10 @@ Partial Class Sistemas_UsuarioDetalle Alert("Los Permisos se eliminaron correctamente.", TipoMensaje.MsgInformacion, "window.location.href=""/Sistemas/Usuarios.aspx""") End If ObjUsuario.Dispose() - End Sub + End Sub #End Region - - + + #Region "TAB - PERMISO MODULOS" Public Sub CargaModulosPermisos() Dim ObjProcesos As New ClsSisUsuarios @@ -3236,10 +3239,10 @@ Partial Class Sistemas_UsuarioDetalle Alert("Los Procesos se eliminaron correctamente.", TipoMensaje.MsgInformacion, "window.location.href=""/Sistemas/Usuarios.aspx""") End If ObjUsuario.Dispose() - End Sub + End Sub #End Region - - + + #Region "TAB - ACCESO EMPRESAS" Private Sub CargaEmpresas() Dim ClsUsuarios As New ClsSisUsuarios @@ -3429,10 +3432,10 @@ Partial Class Sistemas_UsuarioDetalle Private Sub LnkRenviaCorreo_Click(sender As Object, e As EventArgs) Handles LnkRenviaCorreo.Click EnviaCorreo() Alert("Correo enviado con exito.", TipoMensaje.MsgInformacion) - End Sub + End Sub #End Region - - + + #Region "TAB - RESTRICCIONES ACCESO " Private Sub InicializaRestricciones() CargaDtRestricciones() @@ -3645,8 +3648,8 @@ Partial Class Sistemas_UsuarioDetalle CargaGvRestricciones() RegistraScript("$('#DivAgregarRestricción').modal('hide')") - End Sub - + End Sub + #Region " GV " Private Sub GvRestricciones_RowCommand(sender As Object, e As GridViewCommandEventArgs) Handles GvRestricciones.RowCommand @@ -3736,13 +3739,13 @@ Partial Class Sistemas_UsuarioDetalle End If CargaGvRestricciones() - End Sub + End Sub #End Region - - + + #End Region - - + + #Region "TAB - INDICADORES" Public Sub CargaGridIndicadores() Dim Objeto As New ClsIndicadores @@ -3759,11 +3762,11 @@ Partial Class Sistemas_UsuarioDetalle e.Row.FCCheckBox("chkIndicador").Checked = True End If End If - End Sub - + End Sub + #End Region - - + + #Region " CLONAR USUARIO " Private Sub InicializaClonarUsuario() DdlUsuarioClonar.DataSource = GlobalDTUsuarios(-1, UsuarioActual.CveEmpresa) @@ -3849,12 +3852,12 @@ Partial Class Sistemas_UsuarioDetalle 'CargaDatos() Return Retorno - End Function - - + End Function + + #End Region - - + + #Region " MANDA CORREO " Private Sub MandaCorreo(Asunto As String, Para As String, Body As String) Dim a As String = String.Format("{0} -- {1} ---- -->", Asunto, Para) @@ -3862,13 +3865,13 @@ Partial Class Sistemas_UsuarioDetalle Dim Mail As New ClsSisMail() 'Mail.MandaCorreo(ClsPaginas.EmpresaNotificaciones, Para, Asunto, "", "", Nothing, Body) Mail.SendMail(ClsPaginas.EmpresaNotificaciones, Para, Asunto, Body) - End Sub - - - + End Sub + + + #End Region - - + + #Region " ASIGNACIONES DE PERMISOS " Protected Sub DdlEmpresaAsignarPermiso_SelectedIndexChanged(sender As Object, e As EventArgs) Handles DdlEmpresaAsignarPermiso.SelectedIndexChanged CargaAsignaciones() @@ -3892,8 +3895,8 @@ Partial Class Sistemas_UsuarioDetalle CargaDtEstatusOC() CargaGvEstatusOC() - End Sub - + End Sub + #Region " EMPRESAS " Public Sub CargaDTEmpresasAsignar() Dim ObjPermisos As New ClsSisUsuarios @@ -3952,10 +3955,10 @@ Partial Class Sistemas_UsuarioDetalle CargaAsignaciones() - End Sub - + End Sub + #End Region - + #Region " ROLES " Private Sub CargaDtRolesAsignar() Dim ClsUsuarios As New ClsSisUsuarios @@ -4044,9 +4047,9 @@ Partial Class Sistemas_UsuarioDetalle DTRolesAsignar.AcceptChanges() CargaGVRolesAsignar() - End Sub + End Sub #End Region - + #Region " ALMACENES " Private Sub CargaDtAlmacenAsignar() Dim ClsUsuarios As New ClsSisUsuarios @@ -4137,11 +4140,11 @@ Partial Class Sistemas_UsuarioDetalle DtAlmacenesAsignar.AcceptChanges() CargaGVAlmacenAsignar() - End Sub - - + End Sub + + #End Region - + #Region " PROYECTOS-SUBPROYECTOS " Private Sub CargaDtSubProyectosAsignar() Dim ClsUsuarios As New ClsSisUsuarios @@ -4252,10 +4255,10 @@ Partial Class Sistemas_UsuarioDetalle DtSubProyectosAsignar.AcceptChanges() CargarGvSubProyectosAsignar() - End Sub - + End Sub + #End Region - + #Region " CUENTAS BANCARIAS " Private Sub CargaCuentasBancariasAsignar() DdlCuentasBancariasAsignar.Items.Clear() @@ -4340,9 +4343,9 @@ Partial Class Sistemas_UsuarioDetalle DtCuentasBancariasAsignar.AcceptChanges() CargaGvCuentasBancariasAsignar() - End Sub + End Sub #End Region - + #Region " MODULOS " Public Sub CargaDTModulosAsignar() Dim ObjPermisos As New ClsSisUsuarios @@ -4377,10 +4380,10 @@ Partial Class Sistemas_UsuarioDetalle End If End If - End Sub - + End Sub + #End Region - + #Region " PERMISOS " Public Sub CargaDTPermisosAsignar() Dim ObjPermisos As New ClsSisUsuarios @@ -4415,9 +4418,9 @@ Partial Class Sistemas_UsuarioDetalle End If End If - End Sub + End Sub #End Region - + #Region " INDICADORES " Public Sub CargaDTIndicadoresAsignar() Dim ObjIndicadores As New ClsSisUsuarios @@ -4445,13 +4448,13 @@ Partial Class Sistemas_UsuarioDetalle End If End If - End Sub + End Sub #End Region - - + + #End Region - - + + #Region " USUARIO CONTROLADO " Private Sub InicializaUsuarioControlado() Dim ClsUsuarios As New ClsSisUsuarios @@ -4501,12 +4504,12 @@ Partial Class Sistemas_UsuarioDetalle End If ClsUsuarios.Dispose() - End Sub + End Sub #End Region - - + + #Region "C O N T O L E S DE U S U A R I O S" - + #Region "ESTATUS DE ÓRDENES DE COMPRA" Private Sub CargaDtEstatusOCPermisos() Dim ClsUsuarios As New ClsSisUsuarios @@ -4627,10 +4630,10 @@ Partial Class Sistemas_UsuarioDetalle DTEstatusOC = dt DTEstatusOCAsignar = dt - End Sub + End Sub #End Region - - + + #Region "GV ESTATUS DE OC" Protected Sub GvEstatusOC_RowDataBound(sender As Object, e As GridViewRowEventArgs) Handles GvEstatusOC.RowDataBound If e.Row.RowType = DataControlRowType.DataRow Then @@ -4741,11 +4744,11 @@ Partial Class Sistemas_UsuarioDetalle GvEstatusUsuariosOC.Columns(i).Visible = (dtValida IsNot Nothing AndAlso dtValida.Rows.Count = 1) End If Next - End Sub - + End Sub + #End Region #End Region - + Protected Sub LnkAgregarClasificacion_Click(sender As Object, e As EventArgs) If DtClasificaciones IsNot Nothing Then Dim CveClasificacion As Integer = DdlClasificacion.SelectedValue.ToEntero @@ -4872,10 +4875,10 @@ Partial Class Sistemas_UsuarioDetalle - End Sub - + End Sub + #Region "USUARIO RESPONSABLE" - + Protected Sub BtnUpdateUsuarioResponsable_Click(sender As Object, e As EventArgs) Dim ObjUsuarios As New ClsSisUsuarios If ObjUsuarios.UpdateUsuarioResponsableMasivo(CveUsuario, DdlUsuarioResponsable.SelectedValue.ToEntero) Then @@ -4883,10 +4886,10 @@ Partial Class Sistemas_UsuarioDetalle RegistraScript("$('#DivUpdateUsuarioResponsable').modal('hide')") End If ObjUsuarios.Dispose() - End Sub - + End Sub + #End Region - + Protected Sub LnkAutorizarEquipo_Click(sender As Object, e As EventArgs) 'CveUsuario Dim AdsCodex As String = Encripta(String.Format("{0}_{1}_{2}", CveUsuario, DateTime.Now.Ticks, UsuarioActual.CveUsuario)) @@ -4957,6 +4960,46 @@ Partial Class Sistemas_UsuarioDetalle LblClonarMensaje.Text = "" UpClonarUsuario.Update() - End Sub - + End Sub + + Protected Sub BtnConsultarBitacora_Click(sender As Object, e As EventArgs) + CargaBitacora() + + UpSistema.Update() + End Sub + Protected Sub LnkExportarBitacora_Click(sender As Object, e As EventArgs) + Dim DtDatos As DataTable = Nothing + Dim ObjUsuario As New ClsSisUsuarios + If ObjUsuario.GetBitacora(CveUsuario, TxtFechaIBitacora.Text.ToDateTime(), TxtFechaFBitacora.Text.ToDateTime()) Then + DtDatos = ObjUsuario.DtResultados.Copy() + End If + ObjUsuario.Dispose() + + Dim StrFiltro As New StringBuilder + + If TxtFechaIBitacora.Text <> "" Then StrFiltro.AppendFormat(" Fecha Inicio : {0}", TxtFechaIBitacora.Text.ToDate.ToShortDateString) + If TxtFechaFBitacora.Text <> "" Then StrFiltro.AppendFormat(" Fecha Fin : {0}", TxtFechaFBitacora.Text.ToDate.ToShortDateString) + + + Dim Imagen As New System.IO.FileInfo(String.Format("{0}/Logo.png", UsuarioActual.Empresa.Ruta)) + + Dim FechaI, FechaF As String + FechaI = TxtFechaIBitacora.Text + FechaF = TxtFechaFBitacora.Text + + Dim params As New List(Of ReportParameter) + params.Add(New ReportParameter("NombreEmpresa", UsuarioActual.Empresa.Empresa)) + params.Add(New ReportParameter("FechaInicio", FechaI)) + params.Add(New ReportParameter("FechaFin", FechaF)) + params.Add(New ReportParameter("UsuarioImprimio", UsuarioActual.Nombre)) + params.Add(New ReportParameter("FechaImpresion", Now.ToDateTime.ToShortDateString)) + params.Add(New ReportParameter("Filtros", StrFiltro.ToString)) + + If Imagen.Exists Then + params.Add(New ReportParameter("LogoPath", $"file://{Imagen.FullName}")) + Else + params.Add(New ReportParameter("LogoPath", "")) + End If + ImprimirPDF("Empresas/Grales/Formatos/BitacoraLogin.rdlc", DtDatos, params, String.Format("BitacoraRegistro-{0}", Now.ToDateTime.ToShortDateString)) + End Sub End Class From 5bcd52ecad760025884d4057faebd34b9900a181 Mon Sep 17 00:00:00 2001 From: Jonathan Alexis Perez Morales Date: Wed, 9 Nov 2022 16:30:55 -0700 Subject: [PATCH 27/31] Filtro de impresion en cxp --- Compras/RepCxP.aspx.vb | 49 +++++++++++++++++++++++++++++++++--------- 1 file changed, 39 insertions(+), 10 deletions(-) diff --git a/Compras/RepCxP.aspx.vb b/Compras/RepCxP.aspx.vb index 9a3504bbc..cc90a744c 100644 --- a/Compras/RepCxP.aspx.vb +++ b/Compras/RepCxP.aspx.vb @@ -163,7 +163,7 @@ Partial Class Compras_RepCxP If lItem.Value.ToEntero = 9 Then lItem.Text = LblSubProyectofiltro.Text & "-Sucursal" End If - Next + Next End Sub @@ -1426,7 +1426,24 @@ Partial Class Compras_RepCxP TCEspecifico = -1 End If - Dim Sucursal = If(DdlSubProyecto.SelectedValue = "-1", "", $" Sucursal: {DdlSubProyecto.SelectedItem.Text}") + Dim Proyecto = "" + Dim Sucursal = "" + + Select Case UsuarioActual.Empresa.Tipo_CentroCosto + Case 1 + Sucursal = If(DdlSubProyecto.SelectedValue = "-1", "", $" Centro de costo: {DdlSubProyecto.SelectedItem.Text}") + Case 2 + Sucursal = If(DdlSubProyecto.SelectedValue = "-1", "", $" Sucursal: {DdlSubProyecto.SelectedItem.Text}") + Case 3 + Sucursal = If(DdlSubProyecto.SelectedValue = "-1", "", $" Proyecto: {DdlSubProyecto.SelectedItem.Text}") + Case 4 + Proyecto = If(DdlProyecto.SelectedValue = "-1", "", $" Proyecto: {DdlProyecto.SelectedItem.Text}") + Sucursal = If(DdlSubProyecto.SelectedValue = "-1", "", $" Sub Proyecto: {DdlSubProyecto.SelectedItem.Text}") + Case 5 + Proyecto = If(DdlProyecto.SelectedValue = "-1", "", $" Proyecto: {DdlProyecto.SelectedItem.Text}") + Sucursal = If(DdlSubProyecto.SelectedValue = "-1", "", $" Sucursal: {DdlSubProyecto.SelectedItem.Text}") + End Select + Dim Proveedor = If(DdlProveedor.SelectedValue = "-1", "", $" Proveedor: {DdlProveedor.SelectedText}") Dim Clasificacion = If(DdlProveedoresClasificaciones.SelectedValue = "-1", "", $" Clasificación: {DdlProveedoresClasificaciones.SelectedItem.Text}") Dim Grupo = If(DdlGrupo.SelectedValue = "-1", "", $" Grupo: {DdlGrupo.SelectedItem.Text}") @@ -1465,7 +1482,7 @@ Partial Class Compras_RepCxP params.Add(New ReportParameter("UsuarioImprimio", UsuarioActual.Nombre)) params.Add(New ReportParameter("FechaImpresion", Now.ToDateTime.ToShortDateString)) params.Add(New ReportParameter("Grupo", DdlGrupo.SelectedItem.Text)) - params.Add(New ReportParameter("AgrupadoPor", $"{Grupo}{Proveedor}{Clasificacion}{FechaIn}{FechaFn}{Registro}{Responsable}{Sucursal}{TipoMoneda}{FVI}{FVF}")) + params.Add(New ReportParameter("AgrupadoPor", $"{Grupo}{Proveedor}{Clasificacion}{FechaIn}{FechaFn}{Registro}{Responsable}{Proyecto}{Sucursal}{TipoMoneda}{FVI}{FVF}")) params.Add(New ReportParameter("CantColumnas", CantidadColumnas)) If Imagen.Exists Then @@ -1531,23 +1548,34 @@ Partial Class Compras_RepCxP UpPersonalizarRango.Update() End Sub - Protected Sub LnkEliminar_Click(sender As Object, e As EventArgs) Dim gvRow As GridViewRow = DirectCast((DirectCast(sender, LinkButton)).NamingContainer, GridViewRow) - DtPersonalizarRango.Rows.RemoveAt(gvRow.RowIndex) DtPersonalizarRango.AcceptChanges() CargaGv() End Sub + Protected Sub LnkEliminar_Click(sender As Object, e As EventArgs) + Dim gvRow As GridViewRow = DirectCast((DirectCast(sender, LinkButton)).NamingContainer, GridViewRow) + DtPersonalizarRango.Rows.RemoveAt(gvRow.RowIndex) + DtPersonalizarRango.AcceptChanges() + CargaGv() + End Sub - Protected Sub LnkEditar_Click(sender As Object, e As EventArgs) Dim gvRow As GridViewRow = DirectCast((DirectCast(sender, LinkButton)).NamingContainer, GridViewRow) + Protected Sub LnkEditar_Click(sender As Object, e As EventArgs) + Dim gvRow As GridViewRow = DirectCast((DirectCast(sender, LinkButton)).NamingContainer, GridViewRow) Index = gvRow.RowIndex Modalidad = "U" - DdlTipo.SelectedValueExist(gvRow.DataKey("Tipo")) TxtRI.Text = gvRow.DataKey("RangoInicial") TxtRF.Text = gvRow.DataKey("RangoFinal") If Not TxtRF.Text.ToDouble > 0 Then + DdlTipo.SelectedValueExist(gvRow.DataKey("Tipo")) + TxtRI.Text = gvRow.DataKey("RangoInicial") + TxtRF.Text = gvRow.DataKey("RangoFinal") + If Not TxtRF.Text.ToDouble > 0 Then ChkMayor.Checked = True TxtRF.Enabled = False Else ChkMayor.Checked = False End If - RegistraScript("$('#DivPersonalizarRangoEditar').modal()") UpPersonalizarRangoEditar.Update() End Sub + RegistraScript("$('#DivPersonalizarRangoEditar').modal()") + UpPersonalizarRangoEditar.Update() + End Sub Private Sub LimpiaPersonalizarColumna() DdlTipo.SelectedIndex = 0 - TxtRI.Text = "" TxtRF.Text = "" + TxtRI.Text = "" + TxtRF.Text = "" ChkMayor.Checked = False SoloNumeros2.Enabled = True TxtRF.Enabled = True @@ -1670,7 +1698,8 @@ Partial Class Compras_RepCxP Protected Sub BtnAgregarRango_Click(sender As Object, e As EventArgs) Modalidad = "A" LimpiaPersonalizarColumna() - RegistraScript("$('#DivPersonalizarRangoEditar').modal()") UpPersonalizarRangoEditar.Update() + RegistraScript("$('#DivPersonalizarRangoEditar').modal()") + UpPersonalizarRangoEditar.Update() End Sub Protected Sub BtnPersonalizarRango_Click(sender As Object, e As EventArgs) From 1523566f56b6c3ae8a7cc98d0804af5df4a79ad2 Mon Sep 17 00:00:00 2001 From: Jonathan Alexis Perez Morales Date: Wed, 9 Nov 2022 16:32:40 -0700 Subject: [PATCH 28/31] Correciones en reportes --- Ventas/RepProductosServicios.aspx | 2 +- Ventas/RepProductosServicios.aspx.vb | 14 +++++--------- Ventas/RepProductosServiciosDetalle.aspx | 4 ++-- Ventas/RepVentas.aspx | 4 ++-- Ventas/RepVentas.aspx.vb | 3 ++- 5 files changed, 12 insertions(+), 15 deletions(-) diff --git a/Ventas/RepProductosServicios.aspx b/Ventas/RepProductosServicios.aspx index 3a06a76df..690c163f3 100644 --- a/Ventas/RepProductosServicios.aspx +++ b/Ventas/RepProductosServicios.aspx @@ -358,7 +358,7 @@
Servicio Domicilio: -
+
Todos Si diff --git a/Ventas/RepProductosServicios.aspx.vb b/Ventas/RepProductosServicios.aspx.vb index fc946ccd4..a57a5133c 100644 --- a/Ventas/RepProductosServicios.aspx.vb +++ b/Ventas/RepProductosServicios.aspx.vb @@ -62,14 +62,6 @@ Partial Class Ventas_RepProductosServicios CargarMarcas() SetValues() - If UsuarioActual.Empresa.Funcionalidad(531) = "1" Then - - LblServicioDomicilioFiltro.Visible = True - DVServicioDomicilio.Visible = True - - End If - - End If End Sub @@ -191,7 +183,11 @@ Partial Class Ventas_RepProductosServicios divClasif2texto.Visible = True divClasif2.Visible = True - DdlGrupo.Items.Add(New ListItem("Clasificacion2", "25")) + DdlGrupo.Items.Add(New ListItem("Clasificacion2", "25")) + + + LblServicioDomicilioFiltro.Visible = True + DVServicioDomicilio.Visible = True End If diff --git a/Ventas/RepProductosServiciosDetalle.aspx b/Ventas/RepProductosServiciosDetalle.aspx index 4f5f6374e..04f1c7e1c 100644 --- a/Ventas/RepProductosServiciosDetalle.aspx +++ b/Ventas/RepProductosServiciosDetalle.aspx @@ -372,8 +372,8 @@
Servicio Domicilio: -
- +
+ Todos Si No diff --git a/Ventas/RepVentas.aspx b/Ventas/RepVentas.aspx index 78134bf6e..013dd566b 100644 --- a/Ventas/RepVentas.aspx +++ b/Ventas/RepVentas.aspx @@ -312,8 +312,8 @@
- -
+ +
diff --git a/Ventas/RepVentas.aspx.vb b/Ventas/RepVentas.aspx.vb index 21fc6d4cb..3d2aadb94 100644 --- a/Ventas/RepVentas.aspx.vb +++ b/Ventas/RepVentas.aspx.vb @@ -130,7 +130,8 @@ Partial Class Ventas_RepVentas LblServicioDomicilioFiltro.Visible = True DVServicioDomicilio.Visible = True - + DivLblDistr.Visible = True + DivDistr.Visible = True End If End If From 264a89984ec3ae6c34d382ede3864f3acb05ed5a Mon Sep 17 00:00:00 2001 From: Jonathan Alexis Perez Morales Date: Wed, 9 Nov 2022 16:33:04 -0700 Subject: [PATCH 29/31] Correcion de nombres --- App_Code/ClsClientes.vb | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/App_Code/ClsClientes.vb b/App_Code/ClsClientes.vb index 2fa90b6e1..04db900ee 100644 --- a/App_Code/ClsClientes.vb +++ b/App_Code/ClsClientes.vb @@ -1427,7 +1427,7 @@ Public Class ClsClientes Alert("La Clasificación ya existe en el Catálogo.", TipoMensaje.MsgError) End If Catch ex As Exception - OnError("Ocurrió un error al Actualizar la Clasificación.", ex, SqlAdapter.SelectCommand.Parameters.ParametrosInfo) + OnError("Ocurrió un error al actualizar el giro.", ex, SqlAdapter.SelectCommand.Parameters.ParametrosInfo) End Try Return Retorno @@ -1448,10 +1448,10 @@ Public Class ClsClientes Retorno = True Catch Ex1 As SqlException If Ex1.Message.Contains("Número: 2627;") Then - Alert("La Clasificación ya existe en el Catálogo.", TipoMensaje.MsgError) + Alert("Eñ giro ya existe en el catálogo.", TipoMensaje.MsgError) End If Catch ex As Exception - OnError("Ocurrió un error al Guardar una Clasificación.", ex, SqlAdapter.SelectCommand.Parameters.ParametrosInfo) + OnError("Ocurrió un error al guardar un giro.", ex, SqlAdapter.SelectCommand.Parameters.ParametrosInfo) End Try Return Retorno End Function @@ -1467,7 +1467,7 @@ Public Class ClsClientes SqlAdapter.Fill(Data) Retorno = True Catch ex As Exception - OnError("Ocurrió un error al obtener las Clasificaciones de los Clientes.", ex, SqlAdapter.SelectCommand.Parameters.ParametrosInfo()) + OnError("Ocurrió un error al obtener los giros de los clientes.", ex, SqlAdapter.SelectCommand.Parameters.ParametrosInfo()) End Try Return Retorno End Function @@ -1483,7 +1483,7 @@ Public Class ClsClientes SqlAdapter.Fill(Data) Retorno = True Catch ex As Exception - OnError("Ocurrió un error eliminar la Clasificación.", ex, SqlAdapter.SelectCommand.Parameters.ParametrosInfo()) + OnError("Ocurrió un error eliminar el giro.", ex, SqlAdapter.SelectCommand.Parameters.ParametrosInfo()) End Try Return Retorno End Function From de645bbb578a150e3c032296e33ad8ebf6dd3511 Mon Sep 17 00:00:00 2001 From: Jonathan Alexis Perez Morales Date: Wed, 9 Nov 2022 16:33:37 -0700 Subject: [PATCH 30/31] E141. Marca de agua en cotizaciones --- Empresas/141/Formatos/Cotizacion.rdlc | 85 ++++++++++++++++++++++++++- 1 file changed, 84 insertions(+), 1 deletion(-) diff --git a/Empresas/141/Formatos/Cotizacion.rdlc b/Empresas/141/Formatos/Cotizacion.rdlc index 0bbd2ad0f..41f929b25 100644 --- a/Empresas/141/Formatos/Cotizacion.rdlc +++ b/Empresas/141/Formatos/Cotizacion.rdlc @@ -2808,7 +2808,15 @@ 15.93202cm - + + + Embedded + wmc2 + + 21.16666cm @@ -3517,6 +3525,16 @@ true ReportParameter1 + + String + true + true + ReportParameter1 + + + String + ReportParameter1 + @@ -3727,6 +3745,71 @@ kw04jeTN9mSHt75hjwr1e+/o5W4kjQR4u3XCiH2feFfN/+qjp8XG/Czo4tF6yzQacHcX99sS7pswYF4Y rmIcXIrb1g1O2+CwGDx+2Wv+V4R9FjTs4GmBAfFS5DtFGZqMB9+FAfcPD4UObxUwQOw9+meb30Lqp2KEtfWE4W5DqOf2ExHG/dCt0E3QzYMQvN0u4wjSemg6BrItglw/0OAyHtyPCFcq6cD1Rp73w90e0K+gU3iuhgpJjxH+jHvMx3qQcA/j3Yg86IbDxIRzILwfbeJZJ9NV/rifyfNXcZ+T7ROJyQaVbUMq9D1NcwRqyuLzYxnSSCQSEwMaxNfSkM7oNf8reld+oTEQ3vpG8D+z1/wvjTN0wR+ajp7h+yroiNvaGnoNCPg/BP0svAzBoTLcOBR5t+66/dbJ7xoL3O/eFE947ImMjXsY1kndphuNJa+DkEcMoTN/idwLRrAV4Lss7/9AGjzkNhMOFbalh+Fq0JYeMtNd3spV3BhX9bLf4/25XHcijBdFkD2hAYafQ0mTVgPMMIK/JwL8Ed7rhvdEIjGZUIFR8c7orviFYujxL1Te/BtKJOYhqI9b05DO0QiysW4itzLAzafDy0Cgnn8SPfCwRkET7/IeOXYLL0PYudN5Ku83dq8sDcRuv5IGCbLdi7uPh7dhcLiM73votk2GQhqaYTTsg8yLBQvj8Cx4nO8QYJsc4yVl03girC0j2GFQVxLH7ZHrRGS5WSPMnfSVt994mcemlzoZuhI+x8JzR2iVCKYvmKbI4+rKR9Tx+K9IY0y5NP54duTD7TB2Is0mbJVnIpEYBVS+7angc1QopXIWspJSMe/he550n0jMY9BA7gxdTJ28lOsIop5Oo85eMLPTeWN4GQjw2GQWl26+hQh3OtfToHeHlyE4fMl7e8mnI0ejf3TMZVxP4vty4W0E+LYkuudEwnIX/0Y+hYwvV4fLNoeqnqgZj+/ifzLxUNZGf+MlDJnpGF8nkNZvqoRugdtlkBcesbQrbg/gegL+HWb8VzfPoEv45vCuk/WP5Ppz3u0Mj/dhmP13sB0Y8HorfK7VONew0+hyVAP+ t5DOJ3DVsBt1ODORSEwgUCLLQ5f7J0QFHEZU2jJfY49+Vh0lEonJBXXyNdRNt21Yq4XWxs0b7QUKLwPhsk5nKfyu28C3IgyBt8P/DU364NFOZyHlm4abJr8S/t+hcXhKp7NAeGsEMiwNrYnR0sinTqYH9A5kqnaE535RDJ/VlLXJ/UQQYbwd+VZye4lK4D5BfF5gGuN/te64+Wyckfu17jKPm2eHt3HjMdKbMDaB9/4aXOSTvWk/IrxP5o72icQ8gEqQSuiqxsa5EvaIUWlnolAnbJl2IpFIJOYdMMKehxGWP9SJxLwEf0F2S9/Y1vuFYfYI95tjqA2bZJpIJBKJRCKRGAMu73SehXF1tEYWNML4cuI9xtnRGGd52HYikUgkEonERACja2MMrMbzxq55nNzjZrVwnkgkEolEIpEYD1yZg/F1pj1f9nbVja/S+8X1+/aShZdEIpFIJBKJxFjxWKfzVAyvrez96t52QoPMPWowvs7j/sXhJZFIJBKJRCIxHrh7NcbWvhhgD7vFhBv/uSeMG/7Z84XhNZ3vq4fzRCKRSCQSicR4oQGG8XWQuy1f1ek8gLFVNhQ8hutvZ3Y6bw2niUQikUgkEomJgMeFYHitj+F1BIbYt9LgSiQSiUQikUgkEolEIpFIJBKJRCKRSCQSiUQikUgkEolEIpFIJBKJRCKRSCQSiUQikUgkEolEIpFIJBKJRCKRSCQSiUQikUgkEolEIpFIJBKJRCKRSCQSiUQikUgkEolEIpFIJBKJRCKRSCQSiUQikUgkEolEIpFIJBKJRCKRSCQSiUQikUgkEolEIpFIJBKJRCKRSCQSiUQikUgkEolEIpFIJBKJRCKRSCQSiUQikUgkEolEYtLQ6fx/uM6PpN5jBU0AAAAASUVORK5CYII= + + image/png + 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 +ynCm6XsvzXiEGaBtOt9q7DR9j/pKIt+LeubPRWk+zZIehaFAJ+h4c0q5HnANjpcyyz1WDxpvE+l2R5g1gVrloF260ef7SecJkmLQWFTVIvge/q+Y8kpkFUMGaJMutDPW2nNQBTQdulIMGg+pexczegEzQHt0QQwvKDdMShIwh24qkqf4Vsrym8weL5u8bgAadEOMSudIx2ShwcjEoyIV8Cpl72JGTjBkgLboihheND+OmtSSZZZzoDjAlLL8JrOme/2+gj6nS2LIYP4xqiVbS54KXixt+U0HNWhBW3RLDC8u/xqVBWS0EC7kmbL8JiN/IQZoh66J4QXmw5jR0ylV8pT8645m276KXMsQA7RD98SobFqv6tXqCN3wR+8Ua/Bb7d7FzJ7s9RsL+ptuihGuSqtthip5Si5bVnUf3Doj371+Z0Ff01UxKqf6ZgzX4OHkKfm3M83exU7xo9fvLOhruixGyrVBqxqq5Cku3mf19sELid1eAYih22J44XmnvTYIDBpLX4o1+K5O9q5TeO/1Owv6mq6LkW5t4FeDDl8p1uDXxeRlizP81et3FvQ1vyBGmrVBwAzH2uLhQeNjOnEEQrYUaI/fEKOyNpgzWoNHJE+tJVXSsWZ7/caC/uZ3xPCC+cAxenCr6F1Rrb0W+1NkA2tv0A6/JIYXpo8TaQ9WVGLcJfMfYTP+xprByDHEAO3wW2JU2uNtGq7Bi+fhQWMndtHioCICaIvfE6NysGLIbA1O10qhQI/rbIa1N2iTXxTD4GBFc2o0Fqg8xcWf6AU4I9sYMEBb/KoYBgcr6qFuW1ul1hQRLtZjnkzZDxADtMXvipH6YEXTDDloXDWLzpbFRzGyezKz5nr9toJ+55fFaCd5yqbLr/UStKI0HT3wMHqJAQO0x6+Lke5ghX/QoGy7ljT7NB7jhTXT63cV9D2/L0Y7yVMuKaxfvbxcr8fVIGEW6jqDdumFGObJU96TW+q6NK5wNCPr8AK0S0/EME+e +cis9WGN7FNsjP71+U0H/0yMxzJOnErFuMWCAtumVGObJUwkDCtmHF6B9eiZGG8lTsV6s9PodBQNBD8Xw7uyXRslT0V5QnMMAHaGXYlSSpxbN1uARXkyWMJECnaC3YpgnT6m9mPiGF6Aj9FiMSvLUVGcGDUanfuAF6Ay9FqN6UNWo+nPQCzJfhhegQ/ReDC+Y78fbHTSYt+ENL0CnyIAYlQe323ZbKw3mWAfwAnSOTIhRKVc40cagwazCVa//HcBAkQ0xPDX4rmmKiJxGTaPpPegoWRHDi+unWbNuGra1jWkU6CyZEaPaTWM49XxKDhejN/ACdJgMieEF9/eWQ1MlFjLL2sTuBeg4WRKjosbzomVpq8FsMn2H4QJ0nmyJUYnxmxmqpwZzyMgJtADdIGtiVArkXEwlq8HkaDF88AMvQFfInBjVSL+YsWjMCVb5FUrHD6EF6BYZFKMa7bfLLrFVbjD5OYuwxUsOLUDXyKQY1Yh/3Zu0ieWwKm7t/x2bUjZ3+CagBegiGRWjutbgD3uzRYsQalm2bVsWJcQqTG6cvQsRbHUMQEfJrBj10P+8O95enp2aGJ+YmlvePr59b/kaAN0iw2KI1vjnrR/2+mWBwSfbYnjwphMtHwLQVbIvBgA9AGIAoABiAKAAYgCgAGIAoABiAKAAYgCgAGIAoABiAKAAYgCgAGIAoABiAKAAYgCgAGIAoABiAKAAYgCgAGIAoABiAKAAYgCgAGIAoABiAKAAYgCgAGIAoABiAKAAYgCgAGIAoABiAKAAYgCgAGIAoABiAKAAYgCgAGIAoABiAKAAYgCgAGIAoABiAKAAYgCgAGIAoABiAKAAYgCgAGIAoABiAKAAYgCgAGIAoABiAKAAYgCgAGIAoABiAKAAYgCgAGIAoABiAKAAYgCgAGIAoABiAKAAYgCgAGIAoABiAKAAYgCgAGIAoABiAKAAYgCgAGIAoABiAKAAYgCgAGIAoABiAKAAYgCgAGIAoABi +AKAAYgCgAGIAoABiAKAAYgCgAGIAoABiAKAAYgCgAGIAoABiAKAAYgCgAGIAoABiAKAAYgCgAGIAoABiAKAAYgCgAGIAoABiAKAAYgCgAGIAoABiAKAAYgCgAGIAoABiAKAAYgCgAGIAoABiAKAAYgCgAGIAoABiAKAAYgCgAGIAoABiAKAAYgCgAGIAoABiAKAAYgCgAGIAoABiAKAAYgCgAGIAoABiAKAAYgCgAGIAoABiAKAAYgCgAGIAoABiAKAAYgCgAGIAoABiAKAAYgCgAGIAoOD/AzsaINq0C5nlAAAAJXRFWHRkYXRlOmNyZWF0ZQAyMDIyLTExLTA1VDE2OjI5OjUyKzAwOjAwrPx6lwAAACV0RVh0ZGF0ZTptb2RpZnkAMjAyMi0xMS0wNVQxNjoyOTo1MiswMDowMN2hwisAAAAASUVORK5CYII= + + + image/png + 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 + es-MX true From de9ba7acd145ad8b5a3ce14f429455a9a0a5902e Mon Sep 17 00:00:00 2001 From: Jonathan Alexis Perez Morales Date: Fri, 11 Nov 2022 02:07:22 -0700 Subject: [PATCH 31/31] Correciones de comercio exterior --- App_Code/ClsClientes.vb | 10 +- App_Code/ClsPaginas.vb | 5 +- App_Code/Timbrado.vb | 29 ++-- Ventas/Clientes.aspx | 341 ++++++++++++++++++++++------------------ Ventas/Clientes.aspx.vb | 8 +- Ventas/Ventas.aspx | 189 +++++++++------------- Ventas/Ventas.aspx.vb | 65 ++++---- 7 files changed, 327 insertions(+), 320 deletions(-) diff --git a/App_Code/ClsClientes.vb b/App_Code/ClsClientes.vb index 04db900ee..14f390bd5 100644 --- a/App_Code/ClsClientes.vb +++ b/App_Code/ClsClientes.vb @@ -589,7 +589,7 @@ Public Class ClsClientes Optional CveMotivoTraslado As Integer = 0, Optional NumRegIdTrib As String = "", Optional ComExtEstado As String = "-1", Optional ComExtMunicipio As String = "-1", Optional ComExtColonia As String = "-1", Optional RequiereOC As Boolean = False, Optional LT As String = "0", Optional LG As String = "0", Optional EsDistribuidor As Boolean = False, Optional TipoCliente As Integer = 1, Optional CargoUsado As Boolean = False, Optional BonificacionUsado As Boolean = False, Optional CveTipoRetencion As Integer = 0, Optional CorreoEntregaCompras As String = "-1", Optional CorreoEntregaAlmacen As String = "-1", Optional CveSATEstado As Integer = -1, Optional CveAdminTrayecto As Integer = -1, Optional CveRegimenFiscal As Integer = 0, Optional RegimenSociedad As String = "-1", Optional TipoPersona As Boolean = False, - Optional RepresentanteLegal As String = "", Optional FechaLimiteCredito As Date = MinFecha) As Boolean + Optional RepresentanteLegal As String = "", Optional FechaLimiteCredito As Date = MinFecha, Optional ComExtCalle As String = "-1", Optional ComExtNumExt As String = "-1", Optional ComExtCP As String = "-1") As Boolean Dim Retorno As Boolean = False @@ -737,6 +737,9 @@ Public Class ClsClientes .Add("@RepresentanteLegal", SqlDbType.VarChar).Value = RepresentanteLegal .Add("@FechaLimiteCredito", SqlDbType.Date).Value = FechaLimiteCredito + .Add("@ComExtCalle", SqlDbType.VarChar).Value = ComExtCalle + .Add("@ComExtNumExt", SqlDbType.VarChar).Value = ComExtNumExt + .Add("@ComExtCP", SqlDbType.VarChar).Value = ComExtCP End With Try SqlAdapter.Fill(Data) @@ -785,7 +788,7 @@ Public Class ClsClientes Optional ApellidoPaternoPF As String = "-1", Optional ApellidoMaternoPF As String = "-1", Optional NombresPF As String = "-1", Optional RequiereOC As Boolean = False, Optional LT As String = "0", Optional LG As String = "0", Optional EsDistribuidor As Boolean = False, Optional TipoCliente As Integer = 1, Optional CargoUsado As Boolean = False, Optional BonificacionUsado As Boolean = False, Optional CveTipoRetencion As Integer = 0, Optional CorreoEntregaCompras As String = "-1", Optional CorreoEntregaAlmacen As String = "-1", Optional CveSATEstado As Integer = -1, Optional CveAdminTrayecto As Integer = -1, Optional NoDesglosaIVA As Boolean = False, Optional CveRegimenFiscal As Integer = 0, Optional RegimenSociedad As String = "-1", Optional TipoPersona As Boolean = False, - Optional RepresentanteLegal As String = "", Optional FechaLimiteCredito As Date = MinFecha) As Boolean + Optional RepresentanteLegal As String = "", Optional FechaLimiteCredito As Date = MinFecha, Optional ComExtCalle As String = "-1", Optional ComExtNumExt As String = "-1", Optional ComExtCP As String = "-1") As Boolean Dim Retorno As Boolean = False @@ -949,6 +952,9 @@ Public Class ClsClientes .Add("@RepresentanteLegal", SqlDbType.VarChar).Value = RepresentanteLegal .Add("@FechaLimiteCredito", SqlDbType.Date).Value = FechaLimiteCredito + .Add("@ComExtCalle", SqlDbType.VarChar).Value = ComExtCalle + .Add("@ComExtNumExt", SqlDbType.VarChar).Value = ComExtNumExt + .Add("@ComExtCP", SqlDbType.VarChar).Value = ComExtCP diff --git a/App_Code/ClsPaginas.vb b/App_Code/ClsPaginas.vb index 4441ae54c..7bb89b66e 100644 --- a/App_Code/ClsPaginas.vb +++ b/App_Code/ClsPaginas.vb @@ -8015,7 +8015,7 @@ Public Class ClsPaginas End If 'TEMPORAL, DEBE CAMBIARSE A FUNCIONALIDAD - If Vta.CveEmpresa.Contiene(172, 173) Then + If UsuarioActual.Empresa.Funcionalidad(707) = "1" Then Dim ArchivoStimulsfot As New System.IO.FileInfo(RutaFormato.Replace(".rdlc", ".mrt")) If ArchivoStimulsfot.Exists Then UsarStimulsoft = True @@ -8069,8 +8069,7 @@ Public Class ClsPaginas RutaFormato = RutaFormato.Replace(".rdlc", ".mrt") retorno = StreamBytesStimulsoft("Facturas", RutaFormato, lrds, params, NombreArchivo:=NombreArchivo, Formato:="PDF") - 'TEMPORAL, EMPRESAS EN LAS QUE SE UTILIZARA PRIMERO STIMULSOFT - If Vta.CveEmpresa.Contiene(172, 173) Then + If UsuarioActual.Empresa.Funcionalidad(707) = "1" Then Dim ArchivoPDF As New System.IO.FileInfo(String.Format("{0}PDF\{1}\{2}.pdf", UsuarioActual.Empresa.Ruta, Vta.TipoDocto, Vta.SerieFolio)) If Guardar Then If Not ArchivoPDF.Exists Then diff --git a/App_Code/Timbrado.vb b/App_Code/Timbrado.vb index abe6d4e94..0ca7bf273 100644 --- a/App_Code/Timbrado.vb +++ b/App_Code/Timbrado.vb @@ -4960,18 +4960,23 @@ Public Class Timbrado ObjCFDITimbre.Complementos.ComercioExterior11.Receptor.Estado, ObjCFDITimbre.Complementos.ComercioExterior11.Receptor.Pais, ObjCFDITimbre.Complementos.ComercioExterior11.Receptor.CP) - cfdi.ComercioExterior11Destinatario(ObjCFDITimbre.Complementos.ComercioExterior11.Destinatario.NumRegIdTrib, - ObjCFDITimbre.Complementos.ComercioExterior11.Destinatario.Nombre, - ObjCFDITimbre.Complementos.ComercioExterior11.Destinatario.Calle, - ObjCFDITimbre.Complementos.ComercioExterior11.Destinatario.NumeroExterior, - ObjCFDITimbre.Complementos.ComercioExterior11.Destinatario.NumeroInterior, - ObjCFDITimbre.Complementos.ComercioExterior11.Destinatario.Colonia, - ObjCFDITimbre.Complementos.ComercioExterior11.Destinatario.Localidad, - ObjCFDITimbre.Complementos.ComercioExterior11.Destinatario.Referencia, - ObjCFDITimbre.Complementos.ComercioExterior11.Destinatario.Municipio, - ObjCFDITimbre.Complementos.ComercioExterior11.Destinatario.Estado, - ObjCFDITimbre.Complementos.ComercioExterior11.Destinatario.Pais, - ObjCFDITimbre.Complementos.ComercioExterior11.Destinatario.CP) + + If ObjCFDITimbre.Complementos.ComercioExterior11.Destinatario IsNot Nothing Then + cfdi.ComercioExterior11Destinatario(ObjCFDITimbre.Complementos.ComercioExterior11.Destinatario.NumRegIdTrib, + ObjCFDITimbre.Complementos.ComercioExterior11.Destinatario.Nombre, + ObjCFDITimbre.Complementos.ComercioExterior11.Destinatario.Calle, + ObjCFDITimbre.Complementos.ComercioExterior11.Destinatario.NumeroExterior, + ObjCFDITimbre.Complementos.ComercioExterior11.Destinatario.NumeroInterior, + ObjCFDITimbre.Complementos.ComercioExterior11.Destinatario.Colonia, + ObjCFDITimbre.Complementos.ComercioExterior11.Destinatario.Localidad, + ObjCFDITimbre.Complementos.ComercioExterior11.Destinatario.Referencia, + ObjCFDITimbre.Complementos.ComercioExterior11.Destinatario.Municipio, + ObjCFDITimbre.Complementos.ComercioExterior11.Destinatario.Estado, + ObjCFDITimbre.Complementos.ComercioExterior11.Destinatario.Pais, + ObjCFDITimbre.Complementos.ComercioExterior11.Destinatario.CP) + End If + + 'MERCANCIAS If ObjCFDITimbre.Complementos.ComercioExterior11.Mercancias IsNot Nothing AndAlso ObjCFDITimbre.Complementos.ComercioExterior11.Mercancias.Count > 0 Then For Each concep As CFDIComercioExterior11Mercancias In ObjCFDITimbre.Complementos.ComercioExterior11.Mercancias diff --git a/Ventas/Clientes.aspx b/Ventas/Clientes.aspx index 7c74ab75d..ae60cc84c 100644 --- a/Ventas/Clientes.aspx +++ b/Ventas/Clientes.aspx @@ -308,16 +308,16 @@ - + -
  • +
  • - +
    - - + + @@ -358,43 +358,43 @@
    -
    -
    - -
    - - - Física - Moral +
    +
    + +
    + + + Física + Moral - - - -
    - -
    -
    + + + +
    + +
    +
    -
    - - - - +
    + + + +
    -
    -
    - - <%----%> - - +
    +
    + + <%----%> + +
    - +
    @@ -424,7 +424,7 @@
    -
    +
    @@ -480,8 +480,8 @@
    - -
    + +
    @@ -504,9 +504,9 @@
    -
    +
    + -
    @@ -514,7 +514,7 @@
    - +
    @@ -527,11 +527,11 @@
    -
    +
    - + @@ -618,50 +618,50 @@
    - - + +
    -
    +
    -
    +
    - +
    -
    - - +
    + + +
    -
    -
    -
    -
    - - - - +
    +
    +
    + + + + +
    -
    -
    -
    - - - +
    +
    + + + +
    -
    -
    -
    +
    +
    @@ -681,8 +681,8 @@
    - -
    + +
    @@ -691,7 +691,7 @@
    - +
    Frecuente @@ -699,33 +699,33 @@
    - -
    + +
    - - + +
    -
    +
    -
    -
    +
    +
    -
    -
    -
    +
    +
    +
    @@ -1107,8 +1107,8 @@ - - + +
    @@ -2557,7 +2557,7 @@ - + Archivos @@ -3058,6 +3058,35 @@
    +
    +
    +
    +
    + +
    +
    + +
    +
    +
    +
    +
    +
    + +
    +
    + +
    +
    + +
    +
    + +
    +
    +
    +
    +
    @@ -4164,7 +4193,7 @@
    - +
    @@ -4193,7 +4222,7 @@ - +
    @@ -4222,13 +4251,13 @@
    - - + +
    +
    -
    @@ -4488,16 +4517,16 @@ - - + + -
    <%# Eval("CodigoPS") %>
    +
    <%# Eval("CodigoPS") %>
    - - + + @@ -4505,18 +4534,18 @@ <%-- --%> - + - + -
    <%# Eval("Usuario") %>
    +
    <%# Eval("Usuario") %>
    - + @@ -4551,11 +4580,11 @@ - + - +
    @@ -4569,7 +4598,7 @@
    -
    +
    @@ -4579,25 +4608,25 @@ CssClass="table table-striped table-advance table-hover ScrollAD " ShowHeader="True" EmptyDataText="No se encontraron resultados." ShowHeaderWhenEmpty="true" AutoGenerateColumns="False" AllowPaging="False" ShowFooter="False"> - - - + + + - - - - + + + + - + - - + + - + @@ -4711,7 +4740,7 @@
    -
    +
    @@ -4719,10 +4748,10 @@
    -
    +
    - +
    @@ -4857,8 +4886,8 @@ Agregar
    --%> -
    -
    +
    +
    @@ -5110,7 +5139,7 @@ - +
    @@ -5363,14 +5392,15 @@
    -
    +
    - +
    - +
    @@ -6364,7 +6394,7 @@ <%--table table-striped table-advance table-hover Widthall ScrollAD tabla_correcto grides Widthall mysmallbtn--%> - + @@ -6700,7 +6730,7 @@
    -