From 5fa1c88708fc2d884a6cb291bd044af52f7bf4cb Mon Sep 17 00:00:00 2001 From: Jonathan Alexis Perez Morales Date: Fri, 12 Aug 2022 15:28:00 -0700 Subject: [PATCH 01/54] Solo buscar existencia en los almacenes tipo material en el punto de venta --- Ventas/PV.aspx.vb | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/Ventas/PV.aspx.vb b/Ventas/PV.aspx.vb index c45973ddb..b3b17aef3 100644 --- a/Ventas/PV.aspx.vb +++ b/Ventas/PV.aspx.vb @@ -5211,7 +5211,12 @@ Partial Class PV 'SOLO VALIDA EXISTENCIAS Y COSTO: SI USA INVENTARIOS, SOLO PRODUCTOS TIPO PRODUCTO, SOLO REMISIONES E INGRESOS If UsuarioActual.Empresa.UsaInventarios AndAlso CveTipoPS = 2 AndAlso (DdlTipoComprobante.SelectedValue.Contiene("Rem", "Ing", "PA") Or (DdlTipoComprobante.SelectedValue.Contiene("Cot") And UsuarioActual.CveEmpresa.Contiene(119, 140))) Then Dim ObjInventarios As New ClsInventarios - Dim Existencia As Decimal = ObjInventarios.GetExistenciasPS(CvePS, CveUM, UsuarioActual.CveEmpresa, -1, FechaMovto:=DateTime.Today.AddDays(1).ToString("yyyy/MM/dd HH:mm"), CveSubProyecto:=DdlSubProyectoDatos.SelectedValue.ToEntero, CveVendedor:=DdlVendedor.SelectedValue.ToEntero, CveCliente:=If(UsuarioActual.Empresa.Funcionalidad(146) = "1", -1, CveCliente), ExcluyeAdelantado:=1, PendientePorSurtir:=1, RestringirAlmacenes:=1, ExcluyeApartados:=-1) + Dim CveTipoAlmacen As Integer = 1 + If ChkServicioDomicilio.Checked Then + CveTipoAlmacen = 29 + End If + + Dim Existencia As Decimal = ObjInventarios.GetExistenciasPS(CvePS, CveUM, UsuarioActual.CveEmpresa, -1, CveTipoAlmacen:=CveTipoAlmacen, FechaMovto:=DateTime.Today.AddDays(1).ToString("yyyy/MM/dd HH:mm"), CveSubProyecto:=DdlSubProyectoDatos.SelectedValue.ToEntero, CveVendedor:=DdlVendedor.SelectedValue.ToEntero, CveCliente:=If(UsuarioActual.Empresa.Funcionalidad(146) = "1", -1, CveCliente), ExcluyeAdelantado:=1, PendientePorSurtir:=1, RestringirAlmacenes:=1, ExcluyeApartados:=1) Dim Costo As Decimal = ObjInventarios.GetCostoPS(CvePS, TxtCantidad.Text.Trim.ToDouble, -1, "-1", TxtFecha.Text.ToDate, DdlSubProyectoDatos.SelectedValue.ToEntero) ObjInventarios.Dispose() Dim PrecioMinimo As Decimal = 0 From 79691a0747969ca9b086f5fb58e1b9b96157f965 Mon Sep 17 00:00:00 2001 From: rrene Date: Tue, 16 Aug 2022 22:05:48 -0700 Subject: [PATCH 02/54] =?UTF-8?q?--=20E119-=20se=20quit=C3=B3=20la=20fucni?= =?UTF-8?q?onalidad=20para=20limitar=20el=20uso=20de=20=20lote/cad=20por?= =?UTF-8?q?=20sucursal?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Inventarios/EntradasSalidas.aspx.vb | 15 --------------- Inventarios/EntregaAlmacen.aspx.vb | 11 ----------- Inventarios/RecepcionAlmacen.aspx.vb | 10 ---------- Inventarios/TraspasoAlmacen.aspx.vb | 14 ++------------ 4 files changed, 2 insertions(+), 48 deletions(-) diff --git a/Inventarios/EntradasSalidas.aspx.vb b/Inventarios/EntradasSalidas.aspx.vb index c57e02d42..5cb82bd97 100644 --- a/Inventarios/EntradasSalidas.aspx.vb +++ b/Inventarios/EntradasSalidas.aspx.vb @@ -1411,12 +1411,6 @@ Partial Class Inventarios_EntradasSalidas tCveSubProyecto = drA2("CveSubProyecto").ToString.ToEntero End If - If UsuarioActual.CveEmpresa = 119 AndAlso Not tCveSubProyecto.ToString.Contiene(UsuarioActual.Empresa.Funcionalidad(347).Split(","c)) Then - FechaCaducidadVal = MinFecha - FechaCaducidad = MinFecha - Lote = "" - End If - 'salida If Valido AndAlso DdlConcepto.SelectedValue.Contiene({"3", "5", "7", "8", "11", "12", "13", "15", "16", "17", "20", "21", "30", "31"}) Then ' salida de almacen @@ -4682,11 +4676,6 @@ Partial Class Inventarios_EntradasSalidas Dim CveSubProyectoAlmacen As Integer = GlobalDTAlmacen(UsuarioActual.CveEmpresa, CveAlmacen:=DdlAlmacenInventarioFisico.SelectedValue.ToEntero).FiltroPrimeroValor("CveSubProyecto").ToString.ToEntero - If UsuarioActual.CveEmpresa = 119 AndAlso Not CveSubProyectoAlmacen.ToString.Contiene(UsuarioActual.Empresa.Funcionalidad(347).Split(","c)) Then - AplicaLote = False - AplicaCaducidad = False - End If - 'activa seccion ThSeccionEntrada.Visible = AplicaSeccion TrSeccionEntrada.Visible = AplicaSeccion @@ -4724,10 +4713,6 @@ Partial Class Inventarios_EntradasSalidas Dim CveSubProyectoAlmacen As Integer = GlobalDTAlmacen(UsuarioActual.CveEmpresa, CveAlmacen:=DdlAlmacenInventarioFisico.SelectedValue.ToEntero).FiltroPrimeroValor("CveSubProyecto").ToString.ToEntero - If UsuarioActual.CveEmpresa = 119 AndAlso Not CveSubProyectoAlmacen.ToString.Contiene(UsuarioActual.Empresa.Funcionalidad(347).Split(","c)) Then - AplicaLote = False - AplicaCaducidad = False - End If 'activa seccion ThSeccionSalida.Visible = AplicaSeccion TrSeccionSalida.Visible = AplicaSeccion diff --git a/Inventarios/EntregaAlmacen.aspx.vb b/Inventarios/EntregaAlmacen.aspx.vb index 66162fb19..bab5eb6ef 100644 --- a/Inventarios/EntregaAlmacen.aspx.vb +++ b/Inventarios/EntregaAlmacen.aspx.vb @@ -665,17 +665,6 @@ Partial Class Inventarios_EntregaAlmacen End If End If - If UsuarioActual.CveEmpresa = 119 Then - Dim CveSubProyectoAlmacen As Integer = GlobalDTAlmacen(UsuarioActual.CveEmpresa, CveAlmacen:=CveAlmacen).FiltroPrimeroValor("CveSubProyecto", "").ToEntero - - If CveSubProyectoAlmacen.ToString.Contiene(UsuarioActual.Empresa.Funcionalidad(347).Split(","c)) Then - ValidaLoteCaducidad = True - Else - ValidaLoteCaducidad = False - End If - - End If - If Not DtDatos.Columns.Contains("Serie") Then DtDatos.Columns.Add("Serie", GetType(String)) If Not DtDatos.Columns.Contains("Lote") Then DtDatos.Columns.Add("Lote", GetType(String)) diff --git a/Inventarios/RecepcionAlmacen.aspx.vb b/Inventarios/RecepcionAlmacen.aspx.vb index c6c6fc156..81721ec42 100644 --- a/Inventarios/RecepcionAlmacen.aspx.vb +++ b/Inventarios/RecepcionAlmacen.aspx.vb @@ -606,21 +606,11 @@ Partial Class Inventarios_RecepcionAlmacen Dim drr As DataRow = GlobalDTAlmacen(UsuarioActual.CveEmpresa, CveAlmacen:=DdlAlmacen.SelectedValue.ToEntero).FiltroPrimero("") If drr IsNot Nothing Then - '("CveSubProyecto").ToEntero - Dim CveSubProyecto As Integer = drr("CveSubProyecto").ToString.ToEntero - 'RMF condición temporal - If UsuarioActual.CveEmpresa = 119 AndAlso CveSubProyecto.ToString.Contiene(UsuarioActual.Empresa.Funcionalidad(347).Split(","c)) Then - ValidaLoteCaducidad = True - Else - ValidaLoteCaducidad = False - End If CveTipoAlmacen = drr("CveTipoAlmacen").ToString.ToEntero End If - - CargaGVInv() 'For Each Gvr As GridViewRow In GvInv.Rows ' If Gvr.FCDropDownList("DdlSeccionAlmacen").SelectedValue = "-1" Then diff --git a/Inventarios/TraspasoAlmacen.aspx.vb b/Inventarios/TraspasoAlmacen.aspx.vb index f4ea14462..4e5b5d322 100644 --- a/Inventarios/TraspasoAlmacen.aspx.vb +++ b/Inventarios/TraspasoAlmacen.aspx.vb @@ -597,14 +597,14 @@ Partial Class Inventarios_TraspasoAlmacen 'codigo provisional. Dim CveSubP As Integer = GlobalDTAlmacen(UsuarioActual.CveEmpresa, CveAlmacen:=DdlAlmacenOrigen.SelectedValue.ToEntero).FiltroPrimeroValor("CveSubProyecto", "").ToEntero - If DrPS("AplicaCaducidad").ToString = "True" AndAlso CveSubP.ToString.Contiene(UsuarioActual.Empresa.Funcionalidad(347).Split(","c)) Then + If DrPS("AplicaCaducidad").ToString = "True" Then If Not ChkSugiereFechaCaducidad.Checked AndAlso (TxtnFechaCaducidad.Text = "" OrElse TxtnLote.Text = "") Then Alert("Falta Especificar lote/Fecha del producto", TipoMensaje.MsgAdvertencia) Exit Sub End If End If - If DrPS("AplicaCaducidad").ToString = "True" AndAlso ChkSugiereFechaCaducidad.Checked And CveSubP.ToString.Contiene(UsuarioActual.Empresa.Funcionalidad(347).Split(","c)) Then + If DrPS("AplicaCaducidad").ToString = "True" AndAlso ChkSugiereFechaCaducidad.Checked Then Dim ObjInventarios As New ClsInventarios If ObjInventarios.GetExistenciasCaducidad(CveProducto, DdlAlmacenOrigen.SelectedValue.ToEntero, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, DdlAlmacenOrigen.SelectedValue) Then @@ -641,11 +641,6 @@ Partial Class Inventarios_TraspasoAlmacen tLote = If(TxtnLote.Visible, TxtnLote.Text, "-1") tCaducidad = If(TxtnFechaCaducidad.Visible, TxtnFechaCaducidad.Text.ToDate, MinFecha) - If Not CveSubP.ToString.Contiene(UsuarioActual.Empresa.Funcionalidad(347).Split(","c)) Then - tLote = "-1" - tCaducidad = MinFecha - End If - Dim tSerie As String = If(TxtnSerie.Visible, TxtnSerie.Text, "-1") Dim Valido = ValidaExistencia(Cantidad, CveProducto, DdlUnidad.SelectedValue.ToEntero, DdlSeccionAlmacen.SelectedValue.ToEntero, tSerie, tLote, tCaducidad) @@ -2127,11 +2122,6 @@ Partial Class Inventarios_TraspasoAlmacen Dim tSerie As String = gvr.FCTextBox("TxtSerie").Text 'gvr.DataKey("Serie").ToString Dim tFechaCaducidad As Date = gvr.DataKey("FechaCaducidad").ToDate - If CveSubProyectoRecibe.ToString.Contiene(UsuarioActual.Empresa.Funcionalidad(347).Split(","c)) Then - tLote = gvr.FCTextBox("TxtLote").Text - tFechaCaducidad = gvr.FCTextBox("TxtCaducidad").Text.ToDate - End If - If Not ObjInventario.AddMovimientoDetalle(CveMovimientoEntrada, gvr.FCTextBox("TxtCantidad").Text.ToString.ToDecimal, gvr.DataKey("CveUM").ToString.ToEntero, gvr.DataKey("CvePS").ToString.ToEntero, PrecioEntrada, CveAF:=gvr.DataKey("CveAF").ToString.ToEntero, CveSeccionAlmacen:=gvr.FCDropDownList("DdlSeccionAlmacen").SelectedValue.ToEntero, Serie:=tSerie, Lote:=tLote, FechaCaducidad:=tFechaCaducidad, CveMovimientoDetalleEntrada:=CveMovimientoDetalleEntrada) Then ErrorMovInv = True TextoError = "Ocurrió un error al guardar los movimientos de salida" From 4ab11944a91a892be1b2ba245b07e46bb09b082e Mon Sep 17 00:00:00 2001 From: rrene Date: Tue, 16 Aug 2022 22:38:31 -0700 Subject: [PATCH 03/54] -- cambio en el nombre oc a oc_oc --- OC/OC.aspx | 2 +- OC/OC.aspx.vb | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/OC/OC.aspx b/OC/OC.aspx index 0f3e4323b..65afc2c17 100644 --- a/OC/OC.aspx +++ b/OC/OC.aspx @@ -1,4 +1,4 @@ -<%@ Page Title="" Language="VB" MasterPageFile="~/Site.master" AutoEventWireup="false" CodeFile="OC.aspx.vb" EnableEventValidation="false" Inherits="OC" %> +<%@ Page Title="" Language="VB" MasterPageFile="~/Site.master" AutoEventWireup="false" CodeFile="OC.aspx.vb" EnableEventValidation="false" Inherits="OC_OC" %> diff --git a/OC/OC.aspx.vb b/OC/OC.aspx.vb index 5348222a8..09e76310d 100644 --- a/OC/OC.aspx.vb +++ b/OC/OC.aspx.vb @@ -6,7 +6,7 @@ Imports Extensiones Imports GemBox.Spreadsheet Imports Newtonsoft.Json -Partial Class OC +Partial Class OC_OC Inherits ClsPaginas Private Shared missing As Object = System.Reflection.Missing.Value From cf7baa8aa5fc8f88c89efe4f592c875279e274ff Mon Sep 17 00:00:00 2001 From: rrene Date: Wed, 17 Aug 2022 10:33:37 -0700 Subject: [PATCH 04/54] -- mejora en titulo --- Inventarios/RepProductosPorCaducar.aspx.cs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Inventarios/RepProductosPorCaducar.aspx.cs b/Inventarios/RepProductosPorCaducar.aspx.cs index 18fc44e5a..3fbb2a6d8 100644 --- a/Inventarios/RepProductosPorCaducar.aspx.cs +++ b/Inventarios/RepProductosPorCaducar.aspx.cs @@ -57,11 +57,11 @@ public partial class Inventarios_RepProductosPorCaducar : ClsPaginas DTDatos = ObjInventarios.DtResultados; if (DdlOpcion.SelectedValue == "1") { - GvDatos.Columns[4].HeaderText = "F.Elaboración"; + GvDatos.Columns[5].HeaderText = "F.Elaboración"; } else { - GvDatos.Columns[4].HeaderText = "F.Caducidad"; + GvDatos.Columns[5].HeaderText = "F.Caducidad"; } } @@ -230,11 +230,11 @@ public partial class Inventarios_RepProductosPorCaducar : ClsPaginas { if (ChkTiempoCaducidad.Checked) { - GvDatos.Columns[5].Visible = true; + GvDatos.Columns[6].Visible = true; } else { - GvDatos.Columns[5].Visible = false; + GvDatos.Columns[6].Visible = false; } CargarDatos();//Si no se recarga no se muestran los valores dela la columna de tiempo caducindad laprimera vez que pasa de oculta a mostrarse UpDatos.Update(); From 6fad705558aaf33c76569c64714c3080a5d138a5 Mon Sep 17 00:00:00 2001 From: rrene Date: Wed, 17 Aug 2022 10:33:49 -0700 Subject: [PATCH 05/54] =?UTF-8?q?--=20correcci=C3=B3n=20manejo=20de=20lote?= =?UTF-8?q?/cad=20por=20sucursal?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Inventarios/EntregaAlmacen.aspx.vb | 70 +++++++++++----------------- Inventarios/RecepcionAlmacen.aspx.vb | 27 ++--------- 2 files changed, 31 insertions(+), 66 deletions(-) diff --git a/Inventarios/EntregaAlmacen.aspx.vb b/Inventarios/EntregaAlmacen.aspx.vb index bab5eb6ef..749ad971a 100644 --- a/Inventarios/EntregaAlmacen.aspx.vb +++ b/Inventarios/EntregaAlmacen.aspx.vb @@ -269,14 +269,6 @@ Partial Class Inventarios_EntregaAlmacen End Set End Property - Private Property ValidaLoteCaducidad As Boolean - Get - Return CType(ViewState("ValidaLoteCaducidad"), Boolean) - End Get - Set(value As Boolean) - ViewState("ValidaLoteCaducidad") = value - End Set - End Property #End Region @@ -997,39 +989,36 @@ Partial Class Inventarios_EntregaAlmacen e.Row.FCDropDownList("DdlSeccionAlmacen").Visible = False End If - If (ValidaLoteCaducidad) OrElse (UsuarioActual.CveEmpresa <> 119) Then - If CBool(e.Row.DBCampo("AplicaCaducidad")) Then - e.Row.FCTextBox("TxtCaducidad").Visible = True - e.Row.FCLinkButton("LnkCaducidad").Visible = True - e.Row.FCTextBox("TxtCaducidad").ReadOnly = True - CType(e.Row.FindControl("RFVCaducidad"), RequiredFieldValidator).Enabled = False + If CBool(e.Row.DBCampo("AplicaCaducidad")) Then + e.Row.FCTextBox("TxtCaducidad").Visible = True + e.Row.FCLinkButton("LnkCaducidad").Visible = True + e.Row.FCTextBox("TxtCaducidad").ReadOnly = True + CType(e.Row.FindControl("RFVCaducidad"), RequiredFieldValidator).Enabled = False - 'si aplica caducidad y viene vacía (posible por venta anterior), que se active su registro - If e.Row.FCTextBox("TxtCaducidad").Text = "" OrElse e.Row.FCTextBox("TxtCaducidad").Text.ToDate <= MinFecha Then - e.Row.FCTextBox("TxtCaducidad").ReadOnly = False - CType(e.Row.FindControl("RFVCaducidad"), RequiredFieldValidator).Enabled = True - e.Row.FCTextBox("TxtCaducidad").Enabled = True - End If - Else - e.Row.FCTextBox("TxtCaducidad").Visible = False - e.Row.FCLinkButton("LnkCaducidad").Visible = False + 'si aplica caducidad y viene vacía (posible por venta anterior), que se active su registro + If e.Row.FCTextBox("TxtCaducidad").Text = "" OrElse e.Row.FCTextBox("TxtCaducidad").Text.ToDate <= MinFecha Then + e.Row.FCTextBox("TxtCaducidad").ReadOnly = False + CType(e.Row.FindControl("RFVCaducidad"), RequiredFieldValidator).Enabled = True e.Row.FCTextBox("TxtCaducidad").Enabled = True End If + Else + e.Row.FCTextBox("TxtCaducidad").Visible = False + e.Row.FCLinkButton("LnkCaducidad").Visible = False + e.Row.FCTextBox("TxtCaducidad").Enabled = True + End If - If CBool(e.Row.DBCampo("AplicaLote")) Then - e.Row.FCTextBox("TxtLote").Visible = True - 'si aplica caducidad y viene vacía (posible por venta anterior), que se active su registro - If e.Row.FCTextBox("TxtLote").Text = "" Then - e.Row.FCTextBox("TxtLote").ReadOnly = False - e.Row.FCTextBox("TxtLote").Enabled = True - Else - e.Row.FCTextBox("TxtLote").ReadOnly = True - End If - + If CBool(e.Row.DBCampo("AplicaLote")) Then + e.Row.FCTextBox("TxtLote").Visible = True + 'si aplica caducidad y viene vacía (posible por venta anterior), que se active su registro + If e.Row.FCTextBox("TxtLote").Text = "" Then + e.Row.FCTextBox("TxtLote").ReadOnly = False + e.Row.FCTextBox("TxtLote").Enabled = True Else - e.Row.FCTextBox("TxtLote").Visible = False + e.Row.FCTextBox("TxtLote").ReadOnly = True End If + Else + e.Row.FCTextBox("TxtLote").Visible = False End If e.Row.FCButton("BtnDividir").Attributes.Add("onclick", String.Format("Dividir('{0}');", e.Row.FCTextBox("TxtDividir").ClientID)) @@ -1708,11 +1697,9 @@ Partial Class Inventarios_EntregaAlmacen Next - If (Not ValidaLoteCaducidad) OrElse (UsuarioActual.CveEmpresa <> 119) Then - ValidaSeccion = False - ValidaCaducidad = False - ValidaLote = False - End If + ValidaSeccion = False + ValidaCaducidad = False + ValidaLote = False If ValidaSeccion Then Alert("La sección de almacen no ha sido especificada en todos los productos.", TipoMensaje.MsgAdvertencia) @@ -1855,11 +1842,6 @@ Partial Class Inventarios_EntregaAlmacen FechaCaducidad = If(CBool(Dr("AplicaCaducidad")) AndAlso Dr("FechaCaducidad").ToString() <> "", Dr("FechaCaducidad").ToString().ToDate, MinFecha) Lote = If(CBool(Dr("AplicaLote")), Dr("Lote").ToString().Trim, "-1") - If Not ValidaLoteCaducidad Then - FechaCaducidad = MinFecha - Lote = "-1" - End If - If Dr("CantidadGV").ToString().ToDecimal > 0 Then If CBool(Dr("AplicaSerie")) Then DtDetalle = DtDatosDetalle.FiltraParametros(String.Format("ConsecId = {0}", Dr("Consec"))) diff --git a/Inventarios/RecepcionAlmacen.aspx.vb b/Inventarios/RecepcionAlmacen.aspx.vb index 81721ec42..d533f8438 100644 --- a/Inventarios/RecepcionAlmacen.aspx.vb +++ b/Inventarios/RecepcionAlmacen.aspx.vb @@ -28,14 +28,6 @@ Partial Class Inventarios_RecepcionAlmacen End Set End Property - Private Property ValidaLoteCaducidad As Boolean - Get - Return CType(ViewState("ValidaLoteCaducidad"), Boolean) - End Get - Set(value As Boolean) - ViewState("ValidaLoteCaducidad") = value - End Set - End Property Private Property CveTipoAlmacen As Integer Get Return CType(ViewState("CveTipoAlmacen"), Integer) @@ -1537,8 +1529,7 @@ Partial Class Inventarios_RecepcionAlmacen e.Row.FCDropDownList("DdlSeccionAlmacen").Visible = False End If - If (ValidaLoteCaducidad) OrElse (UsuarioActual.CveEmpresa <> 119) Then - If CBool(e.Row.DBCampo("AplicaCaducidad")) Then + If CBool(e.Row.DBCampo("AplicaCaducidad")) Then e.Row.FCTextBox("TxtCaducidad").Visible = True e.Row.FCLinkButton("LnkCaducidad").Visible = True e.Row.FCTextBox("TxtCaducidad").Text = Now.ToShortDateString @@ -1548,12 +1539,10 @@ Partial Class Inventarios_RecepcionAlmacen e.Row.FCLinkButton("LnkCaducidad").Visible = False End If - If CBool(e.Row.DBCampo("AplicaLote")) Then - e.Row.FCTextBox("TxtLote").Visible = True - Else - e.Row.FCTextBox("TxtLote").Visible = False - End If - + If CBool(e.Row.DBCampo("AplicaLote")) Then + e.Row.FCTextBox("TxtLote").Visible = True + Else + e.Row.FCTextBox("TxtLote").Visible = False End If e.Row.FCButton("BtnDividir").Attributes.Add("onclick", String.Format("Dividir('{0}');", e.Row.FCTextBox("TxtDividir").ClientID)) @@ -2271,12 +2260,6 @@ Partial Class Inventarios_RecepcionAlmacen Index += 1 Next - If (Not ValidaLoteCaducidad) OrElse (UsuarioActual.CveEmpresa <> 119) Then - ValidaSeccion = False - ValidaCaducidad = False - ValidaLote = False - End If - If ValidaSeccion Then Alert("La sección de almacen no ha sido especificada en todos los productos.", TipoMensaje.MsgAdvertencia) Return False From ea672ce3f3d2d9dbd011dea97e6d890752f97e55 Mon Sep 17 00:00:00 2001 From: rrene Date: Thu, 18 Aug 2022 09:56:43 -0700 Subject: [PATCH 06/54] -- nuevo concepto de pago a clientes por NC ME --- App_Code/ClsPaginas.vb | 4 +++- Contabilidad/PopUpAuxiliar.aspx.vb | 4 ++-- Ventas/Ventas.aspx.vb | 11 +++++------ 3 files changed, 10 insertions(+), 9 deletions(-) diff --git a/App_Code/ClsPaginas.vb b/App_Code/ClsPaginas.vb index ffee09df2..b945bee87 100644 --- a/App_Code/ClsPaginas.vb +++ b/App_Code/ClsPaginas.vb @@ -9751,7 +9751,9 @@ Public Class ClsPaginas Pago.CveConceptoPago = If(Pago.CveConceptoPago = -1, 2, Pago.CveConceptoPago) 'si viene en parametro lo toma com primera opcion, sino el 2 - If VentaActual.CveMoneda <> 1 Then Pago.CveConceptoPago = 292 + If VentaActual.CveMoneda <> 1 Then + If Pago.TipoPago = "NC" Then Pago.CveConceptoPago = 301 : Pago.CveConceptoPago = 292 + End If Dim Concepto As String = String.Format("{0} F:{1}", VentaActual.ClienteNombre, VentaActual.SerieFolio) Dim FuncionalidadFluctuacionImpuestos As Boolean = If(UsuarioActual.Empresa.Funcionalidad(159) = "1", True, False) diff --git a/Contabilidad/PopUpAuxiliar.aspx.vb b/Contabilidad/PopUpAuxiliar.aspx.vb index b324091bd..250bd30f0 100644 --- a/Contabilidad/PopUpAuxiliar.aspx.vb +++ b/Contabilidad/PopUpAuxiliar.aspx.vb @@ -210,11 +210,11 @@ 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") Then 'desaplicar NC + If e.Row.DBCampo("CveConceptoContable").Contiene("91", "251", "301") Then 'desaplicar NC e.Row.FCLinkButton("LnkDesAplicar").Visible = True e.Row.FCLinkButton("imgD").Visible = False - If e.Row.DBCampo("CveConceptoContable").Contiene("251") Then + If e.Row.DBCampo("CveConceptoContable").Contiene("251", "301") Then e.Row.FCLinkButton("LnkDesAplicar").CommandArgument = String.Format("{0}|{1}|{2}", e.Row.DBCampo("CvePrePoliza"), e.Row.DBCampo("CveVenta"), e.Row.DBCampo("CveVentaAmortizacion")) Else e.Row.FCLinkButton("LnkDesAplicar").CommandArgument = String.Format("{0}|{1}|{2}", e.Row.DBCampo("CvePrePoliza"), e.Row.DBCampo("CveVentaAmortizacion"), e.Row.DBCampo("CveVenta")) diff --git a/Ventas/Ventas.aspx.vb b/Ventas/Ventas.aspx.vb index ec39ffe05..26d9255ef 100644 --- a/Ventas/Ventas.aspx.vb +++ b/Ventas/Ventas.aspx.vb @@ -15615,16 +15615,12 @@ Partial Class Ventas Dim TipoMovimiento As Boolean = True Dim Concepto As String = VentaActual.SerieFolio Dim Referencia As String = VentaActual.SerieFolio + CveIEAnticipo = gvr.DataKey("CveIE").ToEntero() Select Case gvr.DataKey("CveConceptoContable").ToString() Case "3" - CveIEAnticipo = gvr.DataKey("CveIE").ToEntero() - importeMovimiento = gvr.FCTextBox("TxtAnticipo" & gvr.RowIndex).Text.ToDecimal - ((gvr.FCTextBox("TxtAnticipo" & gvr.RowIndex).Text.ToDecimal / gvr.DataKey("TotalAnticipo").ToDecimal) * gvr.DataKey("IVAAnticipo").ToDecimal) - ' TipoCambioGeneral = tipoCambioPago - ' IdCtaContable = IdCtaContAnticipos - If importeMovimiento <> 0 Then Dim Pago As New VentaPago @@ -15682,6 +15678,8 @@ Partial Class Ventas Pago.TipoPago = "NC" Pago.CveVentaAmortizacion = gvr.DataKey("CveVenta").ToEntero() Pago.AplicaTraslado = gvr.DataKey("RegresarImpuesto") = "1" + Pago.Referencia = gvr.DataKey("Folio") + Pago.CveConceptoPago = 251 ErrorConta = AplicaPrePolizaPagoVenta(VentaActual, Pago, CvePrePoliza, ObjConta) SimplificaPrePoliza = False @@ -15689,7 +15687,7 @@ Partial Class Ventas Case "66" If gvr.DataKey("CveIE").ToEntero() > 0 Then - CveIEAnticipo = gvr.DataKey("CveIE").ToEntero() + importeMovimiento = gvr.FCTextBox("TxtAnticipo" & gvr.RowIndex).Text.ToDecimal IdCtaContable = IdCtaContClientes @@ -15702,6 +15700,7 @@ Partial Class Ventas Pago.TipoPago = "A" Pago.CveVentaAmortizacion = gvr.DataKey("CveVenta").ToEntero() Pago.AplicaTraslado = gvr.DataKey("RegresarImpuesto") = "1" + Pago.Referencia = gvr.DataKey("Folio") ErrorConta = AplicaPrePolizaPagoVenta(VentaActual, Pago, CvePrePoliza, ObjConta) From f2e156088f791f33f5273b3cf35f45bb72ec8164 Mon Sep 17 00:00:00 2001 From: rrene Date: Thu, 18 Aug 2022 09:56:56 -0700 Subject: [PATCH 07/54] =?UTF-8?q?--=20mejora=20en=20registro=20de=20prep?= =?UTF-8?q?=C3=B3liza=20cuando=20es=20*C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Inventarios/EntregaAlmacen.aspx.vb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Inventarios/EntregaAlmacen.aspx.vb b/Inventarios/EntregaAlmacen.aspx.vb index 749ad971a..17f8a1462 100644 --- a/Inventarios/EntregaAlmacen.aspx.vb +++ b/Inventarios/EntregaAlmacen.aspx.vb @@ -2055,7 +2055,7 @@ Partial Class Inventarios_EntregaAlmacen ErrorMovInv = True End If - If Not ObjConta.AddPrePolizasDetalle(CvePrePolizaSinCosto, False, 0, 0, 68, TxtObservaciones.Text, TxtObservaciones.Text, -1, -1, CveMovimientoAlmacen:=CveMovimientoEntrada, Contabilizable:=False) Then + If Not ObjConta.AddPrePolizasDetalle(CvePrePolizaSinCosto, False, 0, 0, 68, TxtObservaciones.Text, TxtObservaciones.Text, -1, -1, CveMovimientoAlmacen:=CveMovimientoEntradaApartado, Contabilizable:=False) Then ErrorMovInv = True End If From 18b5cd358e66d7ad9c6232fa97ca71d33823435c Mon Sep 17 00:00:00 2001 From: rrene Date: Thu, 18 Aug 2022 09:57:14 -0700 Subject: [PATCH 08/54] =?UTF-8?q?--=20correci=C3=B3n=20de=20visualizacion?= =?UTF-8?q?=20de=20facturas,=20cuando=20no=20son=20refacturas?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Ventas/RepCancelacionesPorRespuesta.aspx.cs | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/Ventas/RepCancelacionesPorRespuesta.aspx.cs b/Ventas/RepCancelacionesPorRespuesta.aspx.cs index a2f74d2bd..977fb4f16 100644 --- a/Ventas/RepCancelacionesPorRespuesta.aspx.cs +++ b/Ventas/RepCancelacionesPorRespuesta.aspx.cs @@ -62,9 +62,9 @@ public partial class Ventas_RepCancelacionesPorRespuesta : ClsPaginas } ObjVentas.Dispose(); - GvDatos.DataSource = DtVentas.FiltraParametros("(CveEstatusFactura = 20 AND CveEstatusRefacturacion IN (0,4))"); + GvDatos.DataSource = DtVentas.FiltraParametros("(CveEstatusFactura IN (20,23) AND CveEstatusRefacturacion IN (0,4))"); - var DtRefacturar = DtVentas.FiltraParametros("CveEstatusRefacturacion IN (1,3) OR (CveEstatusFactura = 20 AND CveEstatusRefacturacion IN (1,2,3)) OR CveEstatusFactura = 23"); + var DtRefacturar = DtVentas.FiltraParametros("CveEstatusRefacturacion IN (1,3) OR (CveEstatusFactura IN (20,23) AND CveEstatusRefacturacion IN (1,2,3))"); if (DtRefacturar != null && DtRefacturar.Rows.Count > 0) { DivRefacturar.Visible = true; @@ -595,15 +595,10 @@ public partial class Ventas_RepCancelacionesPorRespuesta : ClsPaginas // - //if (e.Row.DBCampo("PuedeRefacturar").ToString().ToEntero() == 1 && e.Row.DBCampo("CveEstatusFactura").ToString().ToEntero() == 23) - //{ - // e.Row.FCLinkButton("LnkValidarRefac").Visible = false; - //} - - if (e.Row.DBCampo("CveEstatusFactura").ToEntero() == 23) + if (e.Row.DBCampo("PuedeRefacturar").ToString().ToEntero() == 1 && e.Row.DBCampo("CveEstatusFactura").ToString().ToEntero() == 23) { e.Row.FCLinkButton("LnkValidarRefac").Visible = false; - } + } if (e.Row.DBCampo("PuedeRefacturar") == "0" && e.Row.DBCampo("CveEstatusFactura") == "23" && e.Row.DBCampo("CveVentaSustitucion").ToEntero() > 0) { From a814d6d2773e54df7d172854570116d71b81670e Mon Sep 17 00:00:00 2001 From: rrene Date: Thu, 18 Aug 2022 09:57:28 -0700 Subject: [PATCH 09/54] -- nuevo filtro --- Inicio.aspx.vb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Inicio.aspx.vb b/Inicio.aspx.vb index 0c46cefdd..90e21f9fc 100644 --- a/Inicio.aspx.vb +++ b/Inicio.aspx.vb @@ -357,7 +357,7 @@ Partial Class Inicio Dim ObjInventarios As New ClsInventarios - If ObjInventarios.RepCompuestosVigencia(-1, -1, MinFecha, Now.AddDays(30), 1, UsuarioActual.CveEmpresa, True) Then + If ObjInventarios.RepCompuestosVigencia(-1, -1, MinFecha, Now.AddDays(30), 1, UsuarioActual.CveEmpresa, -1, UsuarioActual.CveUsuario, True) Then If ObjInventarios.DtResultados.Rows.Count > 0 Then GvModalRSCOPorCaducar.DataSource = ObjInventarios.DtResultados From 583fec9cc64410eea6b0de38ce95103fa8130ee3 Mon Sep 17 00:00:00 2001 From: rrene Date: Thu, 18 Aug 2022 22:30:12 -0700 Subject: [PATCH 10/54] -- mejora comercio ext --- Ventas/Ventas.aspx.vb | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Ventas/Ventas.aspx.vb b/Ventas/Ventas.aspx.vb index 26d9255ef..7ec63c062 100644 --- a/Ventas/Ventas.aspx.vb +++ b/Ventas/Ventas.aspx.vb @@ -29292,8 +29292,9 @@ Partial Class Ventas Private Sub CargaEstado() DdlComExtEstado.Items.Clear() If DdlComExtPais.SelectedValue.ToEntero() > 0 Then - DdlComExtEstado.DataSource = GlobalDTGralEstados("-1", CvePais:=DdlComExtPais.SelectedValue.ToEntero)(0)("ClaveSATPais").ToString() + DdlComExtEstado.DataSource = GlobalDTGralEstados("-1", CvePais:=DdlComExtPais.SelectedValue.ToEntero) '(0)("ClaveSATPais").ToString() End If + DdlComExtEstado.Visible = True DdlComExtEstado.Items.Insert(0, New ListItem("Seleccione", "-1")) DdlComExtEstado.DataBind() End Sub From e17695186220a93fb6d47eebd24d4795bb86a37b Mon Sep 17 00:00:00 2001 From: Oscar Irigoyen Date: Fri, 19 Aug 2022 10:38:10 -0700 Subject: [PATCH 11/54] Cat Usaurios se agrega filtro estatus, RegPrePolizas Carga excel validacion de naturaleza bancos, traspaso almacen prepoliza inconsistencias --- App_Code/ClsSisUsuarios.vb | 5 +- Contabilidad/RegPrePolizaS.aspx.vb | 12 ++++- Contabilidad2/RepAnexoCatalogoAnual.aspx.vb | 5 ++ Inventarios/TraspasoAlmacen.aspx | 2 +- Inventarios/TraspasoAlmacen.aspx.vb | 56 ++++++++++++++++++--- Sistemas/Usuarios.aspx | 22 +++++++- Sistemas/Usuarios.aspx.vb | 2 +- 7 files changed, 90 insertions(+), 14 deletions(-) diff --git a/App_Code/ClsSisUsuarios.vb b/App_Code/ClsSisUsuarios.vb index fb2337fa3..613bc8b9a 100644 --- a/App_Code/ClsSisUsuarios.vb +++ b/App_Code/ClsSisUsuarios.vb @@ -720,7 +720,7 @@ Public Class ClsSisUsuarios #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) As Boolean + 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 DataAdapter("PA_Sis_UsuariosGet") @@ -731,6 +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 + + End With Try diff --git a/Contabilidad/RegPrePolizaS.aspx.vb b/Contabilidad/RegPrePolizaS.aspx.vb index af366386b..cd96ee540 100644 --- a/Contabilidad/RegPrePolizaS.aspx.vb +++ b/Contabilidad/RegPrePolizaS.aspx.vb @@ -2417,7 +2417,7 @@ Partial Class ContabilidadC_RegPrePolizaS End If TipoMov = GlobalDTTipoTransacciones.FiltroPrimeroValor("CveTipoTransaccion", String.Format("TipoTransaccion = '{0}' ", Row("TipoTransferencia"))).ToEntero - TipoNaturaleza = GlobalDTTipoTransacciones.FiltroPrimeroValor("Tipo", String.Format("TipoTransaccion = '{0}' ", Row("TipoTransferencia"))).ToEntero + TipoNaturaleza = GlobalDTTipoTransacciones.FiltroPrimeroValor("Tipo", String.Format("TipoTransaccion = '{0}' ", Row("TipoTransferencia"))) FolioExcel = Row("Folio").ToString.ToEntero CveTipoTransaccion = TipoMov @@ -2438,11 +2438,19 @@ Partial Class ContabilidadC_RegPrePolizaS Exit Sub End If - If Row("Abono").ToString.ToDecimal > 0 And TipoNaturaleza = "Ing" Or Row("Cargo").ToString.ToDecimal > 0 And TipoNaturaleza = "Egs" Then + + If Not (TipoNaturaleza = "Ing" And ((TipoMovto = False And ImporteDocumento >= 0) Or (TipoMovto = True And ImporteDocumento <= 0)) Or + TipoNaturaleza = "Egs" And ((TipoMovto = True And ImporteDocumento >= 0) Or (TipoMovto = False And ImporteDocumento <= 0))) Then Alert($"El movimiento con cuenta: {NombreCuenta} , importe: {ImporteDocumento.ToString("###,###,###.00")} (registro {ContadorRegistros}), no tiene la naturaleza correcta", TipoMensaje.MsgAdvertencia) Exit Sub + End If + 'If Row("Abono").ToString.ToDecimal > 0 And TipoNaturaleza = "Ing" Or Row("Cargo").ToString.ToDecimal > 0 And TipoNaturaleza = "Egs" Then + ' Alert($"El movimiento con cuenta: {NombreCuenta} , importe: {ImporteDocumento.ToString("###,###,###.00")} (registro {ContadorRegistros}), no tiene la naturaleza correcta", TipoMensaje.MsgAdvertencia) + ' Exit Sub + 'End If + End If If Row("Abono").ToString.ToDecimal > 0 And Row("Cargo").ToString.ToDecimal > 0 Then diff --git a/Contabilidad2/RepAnexoCatalogoAnual.aspx.vb b/Contabilidad2/RepAnexoCatalogoAnual.aspx.vb index a4fcaef1c..ef64e84a7 100644 --- a/Contabilidad2/RepAnexoCatalogoAnual.aspx.vb +++ b/Contabilidad2/RepAnexoCatalogoAnual.aspx.vb @@ -181,6 +181,11 @@ Partial Class Contabilidad2_RepAnexoCatalogoAnual Private Sub CargaDatos() + If CveCuenta <= -1 Then + Alert("No hay una cuenta expecificada.", TipoMensaje.MsgAdvertencia) + Exit Sub + End If + DTHeaders = New DataTable DTDatos = New DataTable diff --git a/Inventarios/TraspasoAlmacen.aspx b/Inventarios/TraspasoAlmacen.aspx index dc13d3ed7..f38825243 100644 --- a/Inventarios/TraspasoAlmacen.aspx +++ b/Inventarios/TraspasoAlmacen.aspx @@ -657,7 +657,7 @@
- + <%-- diff --git a/Inventarios/TraspasoAlmacen.aspx.vb b/Inventarios/TraspasoAlmacen.aspx.vb index 4e5b5d322..4d6a181ee 100644 --- a/Inventarios/TraspasoAlmacen.aspx.vb +++ b/Inventarios/TraspasoAlmacen.aspx.vb @@ -1834,6 +1834,8 @@ Partial Class Inventarios_TraspasoAlmacen Dim TextoError As String = "" Dim Fecha As Date = TxtFechaRecepcion.Text.ToDate Dim CveMovimientoVirtualEntrada As Integer = 0 + Dim CveMovimientoVirtualSalida As Integer = 0 + Dim CveMovimientoSalidaTransitorio As Integer = 0 Dim FolioVirtualEntrada As Integer = 0 @@ -1917,6 +1919,7 @@ Partial Class Inventarios_TraspasoAlmacen If UsuarioActual.Empresa.Funcionalidad(573) = "1" Then Dim CveAlmacenVirtual As Integer = GlobalDTAlmacen(UsuarioActual.CveEmpresa, CveAlmacen:=GvDatosRecepcion.Rows(0).DataKey("CveAlmacenSalida").ToEntero).FiltroPrimeroValor("CveAlmacenVirtual", "").ToEntero() + Dim CveAlmacenVirtualSalida As Integer = GlobalDTAlmacen(UsuarioActual.CveEmpresa, CveAlmacen:=GvDatosRecepcion.Rows(0).DataKey("CveAlmacenDestino").ToEntero).FiltroPrimeroValor("CveAlmacenVirtual", "").ToEntero() 'SI EL ALMACEN ORIGEN ES DE APOPYO LOGISTICO EL ALMACEN VIRTUAL DEBE SER DE APOYO LOGISTICO 'Dim CveAlmacenVirtual As Integer = -1 @@ -1927,15 +1930,21 @@ Partial Class Inventarios_TraspasoAlmacen 'End If 'VERIFICA SI TIENE ALMACEN VIRTUAL ASIGNADA - If CveAlmacenVirtual > 0 Then + If CveAlmacenVirtual > 0 And CveAlmacenVirtualSalida > 0 Then Dim dtvirtual As DataTable = Nothing + Dim importePoliza As Decimal = 0 If ObjInventario.GetMovimientosDetalleVirtual(CveMovimientoEntrada, UsuarioActual.CveEmpresa, CveMovimientoRelacionado:=CveMovimientoSalida) Then dtvirtual = ObjInventario.DtResultados If dtvirtual.Rows.Count > 0 Then + CveMovimientoVirtualEntrada = ObjInventario.AddMovimiento(CveAlmacenVirtual, 36, 1, TxtFecha.Text.ToDate, -1, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1, -1, -1, -1, Observaciones:=TxtObservacionesRecepcion.Text.Trim, CveMovimientoRelacionado:=CveMovimientoEntrada, Modulo:="TA/C2") + + CveMovimientoVirtualSalida = ObjInventario.AddMovimiento(CveAlmacenVirtualSalida, 37, 1, TxtFecha.Text.ToDate, -1, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1, -1, -1, -1, Observaciones:=TxtObservacionesRecepcion.Text.Trim, CveMovimientoRelacionado:=CveMovimientoSalidaTransitorio, Modulo:="TA/C3") + FolioVirtualEntrada = ObjInventario.Folio + For Each RowVirtual As DataRow In dtvirtual.Rows Dim CvePS = RowVirtual("CvePS").ToString().ToEntero() Dim CantidadUsado As Decimal = RowVirtual("Cantidad").ToString().ToDecimal() @@ -1943,21 +1952,54 @@ Partial Class Inventarios_TraspasoAlmacen Dim CveUM As Integer = RowVirtual("CveUM").ToString().ToEntero() Dim CostoIndirecto As Decimal = RowVirtual("CostoIndirecto").ToString().ToDecimal() + + importePoliza = importePoliza + (CantidadUsado * PU) + If Not ObjInventario.AddMovimientoDetalle(CveMovimientoVirtualEntrada, CantidadUsado, CveUM, CvePS, PU, -1, CostoIndirecto:=CostoIndirecto, CveUsuarioModifico:=UsuarioActual.CveUsuario) Then ErrorMovInv = True Exit For End If + + If Not ObjInventario.AddMovimientoDetalle(CveMovimientoVirtualSalida, CantidadUsado, CveUM, CvePS, PU, -1, CostoIndirecto:=CostoIndirecto, CveUsuarioModifico:=UsuarioActual.CveUsuario) Then + ErrorMovInv = True + Exit For + End If + Next End If - Else - TextoError = "No se pudo registrar el movimiento virtual" - ErrorMovInv = True + 'Else + ' TextoError = "No se pudo registrar el movimiento virtual" + ' ErrorMovInv = True End If - 'Else - ' TextoError = "La Sucursal no tiene creado un almacen virtual" - ' ErrorMovInv = True + + + If Not ErrorMovInv AndAlso (CveMovimientoSalida > 0 And CveMovimientoVirtualEntrada > 0) Then + + Dim CvePrePolizaMovVirtual As Integer = ObjConta.AddPrePolizas("TA/C2|TA/C3", 53, importePoliza, importePoliza, 1, TxtFecha.Text.ToDate, "TA/C2|TA/C3", UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa) + If CvePrePolizaMovVirtual > 0 Then + If Not ErrorMovInv AndAlso Not ObjConta.AddPrePolizasDetalle(CvePrePolizaMovVirtual, True, importePoliza, importePoliza, 68, TxtObservacionesRecepcion.Text, TxtObservacionesRecepcion.Text, -1, -1, CveMovimientoAlmacen:=CveMovimientoVirtualSalida, Contabilizable:=False) Then + ErrorMovInv = True + End If + + If Not ObjConta.AddPrePolizasDetalle(CvePrePolizaMovVirtual, False, importePoliza, importePoliza, 68, TxtObservacionesRecepcion.Text, TxtObservacionesRecepcion.Text, -1, -1, CveMovimientoAlmacen:=CveMovimientoVirtualEntrada, Contabilizable:=False) Then + ErrorMovInv = True + End If + Else + ErrorMovInv = True + End If + + End If + + + Else + TextoError = "La Sucursal no tiene creado un almacen virtual" + ErrorMovInv = True End If + + + + End If If Not ErrorMovInv Then diff --git a/Sistemas/Usuarios.aspx b/Sistemas/Usuarios.aspx index 734b666dc..5e27abb3f 100644 --- a/Sistemas/Usuarios.aspx +++ b/Sistemas/Usuarios.aspx @@ -42,16 +42,34 @@ +
+
+ Empresa: +
+
+ +
+
+ + - - + +
Empresa: + Empresa: + Estatus: + + + + + +
diff --git a/Sistemas/Usuarios.aspx.vb b/Sistemas/Usuarios.aspx.vb index 3bc9a29e5..77a00c22f 100644 --- a/Sistemas/Usuarios.aspx.vb +++ b/Sistemas/Usuarios.aspx.vb @@ -70,7 +70,7 @@ Partial Class Sistemas_Usuarios Public Sub CargaDatos() Dim Usuario As New ClsSisUsuarios - If Usuario.GetUsuarios(-1, -1) Then + If Usuario.GetUsuarios(-1, -1, Estatus:=DdlEsatus.SelectedValue.ToEntero) Then If UsuarioActual.CveRol <> 1 Then DtUsuarios = Usuario.DtResultados.FiltraParametros(String.Format("CveEmpresa = {0} AND CveRol <> 1", DdlEmpresa.SelectedValue)) 'DtUsuarios = Usuario.DtResultados.FiltraParametros("CveEmpresa = " & UsuarioActual.CveEmpresa) From 2da9b4b78b6b0a42bc2de3f89798a683bc2c4de0 Mon Sep 17 00:00:00 2001 From: Jonathan Alexis Perez Morales Date: Fri, 19 Aug 2022 11:22:05 -0700 Subject: [PATCH 12/54] BDH. Verificar si tiene credito restante aun si la autorizacion no es suficiente --- Ventas/Ventas.aspx.vb | 34 +++++++++++++++++++++++++++++----- 1 file changed, 29 insertions(+), 5 deletions(-) diff --git a/Ventas/Ventas.aspx.vb b/Ventas/Ventas.aspx.vb index 6980c1b5f..bdd3a5681 100644 --- a/Ventas/Ventas.aspx.vb +++ b/Ventas/Ventas.aspx.vb @@ -8591,17 +8591,41 @@ Partial Class Ventas If TipoDocumentoAutorizacion = "Ing" Then If TipoAutorizacion = 1 Then - If ImporteAutorizacion < TxtTotal.Text.ToDecimal() Then - CveAutorizacion = -1 - Alert($"El crédito autorizado es insuficiente. Crédito Disponible:{ImporteAutorizacion:N2}", TipoMensaje.MsgAdvertencia) - Exit Sub - End If If TieneDiasVencidos Then CveAutorizacion = -1 Alert($"El crédito no esta autorizado. El cliente tiene días vencidos", TipoMensaje.MsgAdvertencia) Exit Sub End If + + If ImporteAutorizacion < TxtTotal.Text.ToDecimal() Then + Dim BloquearCredito As Boolean = True + CveAutorizacion = -1 + + 'VERIFICA SI TIENE CREDITO DISPONIBLE DENTRO DEL CLIENTE + Dim ObjCred As New ClsVentas + If ObjCred.ObtenerCreditoRestante(CveCliente, DdlSucursalCliente.SelectedValue.ToEntero()) AndAlso ObjCred.DtResultados.Rows.Count > 0 Then + 'SI TIENE CREDITO DISPONIBLE NO BLOQUEAR AUNQUE LA AUTORIZACION NO TENGA EL IMPORTE DEL DOCUMENTO + If DdlSucursalCliente.SelectedValue.ToEntero() > 0 Then + If (ObjCred.DtResultados(0)("LimiteRestanteSucursal").ToString().ToDecimal - If(TxtTipoCambio.Visible, TxtTotal.Text.ToDecimal * TxtTipoCambio.Text.ToDecimal, TxtTotal.Text.ToDecimal)) > 0 Then + BloquearCredito = False + End If + Else + If (ObjCred.DtResultados(0)("LimiteRestanteCliente").ToString().ToDecimal - If(TxtTipoCambio.Visible, TxtTotal.Text.ToDecimal * TxtTipoCambio.Text.ToDecimal, TxtTotal.Text.ToDecimal)) > 0 Then + BloquearCredito = False + End If + End If + End If + ObjCred.Dispose() + + + If BloquearCredito Then + Alert($"El crédito autorizado es insuficiente. Crédito Disponible:{ImporteAutorizacion:N2}", TipoMensaje.MsgAdvertencia) + Exit Sub + End If + + End If + End If 'If TipoAutorizacion = 2 Then From daa1b59028eec27e00360dabaabe96a35a652221 Mon Sep 17 00:00:00 2001 From: Jonathan Alexis Perez Morales Date: Fri, 19 Aug 2022 11:24:12 -0700 Subject: [PATCH 13/54] Permiso para cargar la cantidad completa al recibir --- Inventarios/RecepcionAlmacen.aspx.vb | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/Inventarios/RecepcionAlmacen.aspx.vb b/Inventarios/RecepcionAlmacen.aspx.vb index c6c6fc156..6fe656328 100644 --- a/Inventarios/RecepcionAlmacen.aspx.vb +++ b/Inventarios/RecepcionAlmacen.aspx.vb @@ -1490,6 +1490,10 @@ Partial Class Inventarios_RecepcionAlmacen e.Row.FCButton("BtnSerie").Visible = False e.Row.FCTextBox("TbCantidadF").Enabled = True e.Row.FCCheckBox("cbInv").Enabled = True + + If UsuarioActual.TienePermisoProceso(345) Then 'carga la cantidad con el rol AD + e.Row.FCTextBox("TbCantidadF").Text = e.Row.DBCampo("CantidadF").FormatoNumero + End If End If End If @@ -1517,7 +1521,7 @@ Partial Class Inventarios_RecepcionAlmacen e.Row.FCTextBox("TbCantidadF").Text = e.Row.DBCampo("CantidadF").FormatoNumero e.Row.FCTextBox("TbCantidadF").Enabled = False End If - If UsuarioActual.CveRol = 1 Then 'carga la cantidad con el rol AD + If UsuarioActual.TienePermisoProceso(345) Then 'carga la cantidad con el rol AD e.Row.FCTextBox("TbCantidadF").Text = e.Row.DBCampo("CantidadF").FormatoNumero End If End If From 7e255cc50e6578e4a3a512d037a591b4ded47e63 Mon Sep 17 00:00:00 2001 From: Jonathan Alexis Perez Morales Date: Fri, 19 Aug 2022 11:24:39 -0700 Subject: [PATCH 14/54] Validar cantidades al recibir usados --- Ashx/SIGWeb.ashx | 26 +++++++++++++------------- Inventarios/RecepcionUsados.aspx.vb | 2 +- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/Ashx/SIGWeb.ashx b/Ashx/SIGWeb.ashx index 9afe72256..f8cb7fa91 100644 --- a/Ashx/SIGWeb.ashx +++ b/Ashx/SIGWeb.ashx @@ -278,19 +278,19 @@ Public Class SIGWeb : Implements IHttpHandler, IRequiresSessionState Return retorno End Function Private Function GetTokenAngular(context As HttpContext) As String - Dim usuario As Usuario = UsuarioActual(context) - Dim tokenDescriptor = New Microsoft.IdentityModel.Tokens.SecurityTokenDescriptor With { - .Subject = New System.Security.Claims.ClaimsIdentity(New System.Security.Claims.Claim() {New System.Security.Claims.Claim("CvePlataforma", usuario.CvePlataforma.ToString()), - New System.Security.Claims.Claim("CveUsuario", usuario.CveUsuario.ToString()), New System.Security.Claims.Claim("CveEmpresa", usuario.CveEmpresa.ToString()), - New System.Security.Claims.Claim("CveRol", usuario.CveRol.ToString()), New System.Security.Claims.Claim("Fecha", Date.Now.ToLongDateString())}), - .Expires = Date.UtcNow.AddHours(3), - .SigningCredentials = New Microsoft.IdentityModel.Tokens.SigningCredentials( - New Microsoft.IdentityModel.Tokens.SymmetricSecurityKey(Encoding.ASCII.GetBytes("*_AsistenciaDesarrolloSistemas-SIGAPI_*17-06-2020")), - Microsoft.IdentityModel.Tokens.SecurityAlgorithms.HmacSha256Signature)} - Dim tokenHandler = New System.IdentityModel.Tokens.Jwt.JwtSecurityTokenHandler() - Dim newtoken = tokenHandler.CreateToken(tokenDescriptor) - Dim stokenn As String = tokenHandler.WriteToken(newtoken) - Return stokenn + 'Dim usuario As Usuario = UsuarioActual(context) + 'Dim tokenDescriptor = New Microsoft.IdentityModel.Tokens.SecurityTokenDescriptor With { + '.Subject = New System.Security.Claims.ClaimsIdentity(New System.Security.Claims.Claim() {New System.Security.Claims.Claim("CvePlataforma", usuario.CvePlataforma.ToString()), + 'New System.Security.Claims.Claim("CveUsuario", usuario.CveUsuario.ToString()), New System.Security.Claims.Claim("CveEmpresa", usuario.CveEmpresa.ToString()), + 'New System.Security.Claims.Claim("CveRol", usuario.CveRol.ToString()), New System.Security.Claims.Claim("Fecha", Date.Now.ToLongDateString())}), + '.Expires = Date.UtcNow.AddHours(3), + '.SigningCredentials = New Microsoft.IdentityModel.Tokens.SigningCredentials( + 'New Microsoft.IdentityModel.Tokens.SymmetricSecurityKey(Encoding.ASCII.GetBytes("*_AsistenciaDesarrolloSistemas-SIGAPI_*17-06-2020")), + 'Microsoft.IdentityModel.Tokens.SecurityAlgorithms.HmacSha256Signature)} + 'Dim tokenHandler = New System.IdentityModel.Tokens.Jwt.JwtSecurityTokenHandler() + 'Dim newtoken = tokenHandler.CreateToken(tokenDescriptor) + 'Dim stokenn As String = tokenHandler.WriteToken(newtoken) + Return "" End Function Private Function sendMailLPM(context As HttpContext) As String diff --git a/Inventarios/RecepcionUsados.aspx.vb b/Inventarios/RecepcionUsados.aspx.vb index 7850ebe3f..17cc978e4 100644 --- a/Inventarios/RecepcionUsados.aspx.vb +++ b/Inventarios/RecepcionUsados.aspx.vb @@ -1082,7 +1082,7 @@ Partial Class Inventarios_RecepcionUsados If Valido And AgregarUsado Then If ObjFactura IsNot Nothing AndAlso Me.CveRemisionRecibida > 0 Then - Dim RowDetalle As DataRow = ObjFactura.DtDetalle.FiltroPrimero($"CvePS={CvePS}") + Dim RowDetalle As DataRow = ObjFactura.DtDetalle.FiltroPrimero($"CveVentaDetalle={CveVentaDetalle}") If RowDetalle IsNot Nothing Then From daed5effc7a0c9e1c87a6038dce12837eb1d4b12 Mon Sep 17 00:00:00 2001 From: Jonathan Alexis Perez Morales Date: Fri, 19 Aug 2022 11:26:55 -0700 Subject: [PATCH 15/54] version actual goCFDi --- Ashx/SIGWeb.ashx | 26 +++++++++++++------------- Bin/GoCfdi.dll | Bin 552448 -> 564736 bytes 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/Ashx/SIGWeb.ashx b/Ashx/SIGWeb.ashx index f8cb7fa91..9afe72256 100644 --- a/Ashx/SIGWeb.ashx +++ b/Ashx/SIGWeb.ashx @@ -278,19 +278,19 @@ Public Class SIGWeb : Implements IHttpHandler, IRequiresSessionState Return retorno End Function Private Function GetTokenAngular(context As HttpContext) As String - 'Dim usuario As Usuario = UsuarioActual(context) - 'Dim tokenDescriptor = New Microsoft.IdentityModel.Tokens.SecurityTokenDescriptor With { - '.Subject = New System.Security.Claims.ClaimsIdentity(New System.Security.Claims.Claim() {New System.Security.Claims.Claim("CvePlataforma", usuario.CvePlataforma.ToString()), - 'New System.Security.Claims.Claim("CveUsuario", usuario.CveUsuario.ToString()), New System.Security.Claims.Claim("CveEmpresa", usuario.CveEmpresa.ToString()), - 'New System.Security.Claims.Claim("CveRol", usuario.CveRol.ToString()), New System.Security.Claims.Claim("Fecha", Date.Now.ToLongDateString())}), - '.Expires = Date.UtcNow.AddHours(3), - '.SigningCredentials = New Microsoft.IdentityModel.Tokens.SigningCredentials( - 'New Microsoft.IdentityModel.Tokens.SymmetricSecurityKey(Encoding.ASCII.GetBytes("*_AsistenciaDesarrolloSistemas-SIGAPI_*17-06-2020")), - 'Microsoft.IdentityModel.Tokens.SecurityAlgorithms.HmacSha256Signature)} - 'Dim tokenHandler = New System.IdentityModel.Tokens.Jwt.JwtSecurityTokenHandler() - 'Dim newtoken = tokenHandler.CreateToken(tokenDescriptor) - 'Dim stokenn As String = tokenHandler.WriteToken(newtoken) - Return "" + Dim usuario As Usuario = UsuarioActual(context) + Dim tokenDescriptor = New Microsoft.IdentityModel.Tokens.SecurityTokenDescriptor With { + .Subject = New System.Security.Claims.ClaimsIdentity(New System.Security.Claims.Claim() {New System.Security.Claims.Claim("CvePlataforma", usuario.CvePlataforma.ToString()), + New System.Security.Claims.Claim("CveUsuario", usuario.CveUsuario.ToString()), New System.Security.Claims.Claim("CveEmpresa", usuario.CveEmpresa.ToString()), + New System.Security.Claims.Claim("CveRol", usuario.CveRol.ToString()), New System.Security.Claims.Claim("Fecha", Date.Now.ToLongDateString())}), + .Expires = Date.UtcNow.AddHours(3), + .SigningCredentials = New Microsoft.IdentityModel.Tokens.SigningCredentials( + New Microsoft.IdentityModel.Tokens.SymmetricSecurityKey(Encoding.ASCII.GetBytes("*_AsistenciaDesarrolloSistemas-SIGAPI_*17-06-2020")), + Microsoft.IdentityModel.Tokens.SecurityAlgorithms.HmacSha256Signature)} + Dim tokenHandler = New System.IdentityModel.Tokens.Jwt.JwtSecurityTokenHandler() + Dim newtoken = tokenHandler.CreateToken(tokenDescriptor) + Dim stokenn As String = tokenHandler.WriteToken(newtoken) + Return stokenn End Function Private Function sendMailLPM(context As HttpContext) As String diff --git a/Bin/GoCfdi.dll b/Bin/GoCfdi.dll index 0148216cc2cc9ed76fa78ad6a51597a147df71f1..ee10c6e4d3579a562e4d720bbcc7877067ce51f5 100644 GIT binary patch delta 95431 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 Ut@VPIp5H5xal3cYsq2yYzc(H6yZ`_I delta 93131 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 Ktu>2sWB(0XRTLZm From f12f047b27e817559cb3c9342b7995206fc67119 Mon Sep 17 00:00:00 2001 From: Jonathan Alexis Perez Morales Date: Fri, 19 Aug 2022 16:48:23 -0700 Subject: [PATCH 16/54] BDH. CveAlmacenVirtual correcto al realizar traspaso --- Inventarios/TraspasoAlmacen.aspx.vb | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/Inventarios/TraspasoAlmacen.aspx.vb b/Inventarios/TraspasoAlmacen.aspx.vb index 4d6a181ee..67b6f6e60 100644 --- a/Inventarios/TraspasoAlmacen.aspx.vb +++ b/Inventarios/TraspasoAlmacen.aspx.vb @@ -1124,6 +1124,7 @@ Partial Class Inventarios_TraspasoAlmacen dtvirtual = ObjInventario.DtResultados If dtvirtual.Rows.Count > 0 Then + 'SALIDA VIRTUAL CveMovimientoVirtualSalida = ObjInventario.AddMovimiento(CveAlmacenVirtualSalida, 37, 1, Fecha, -1, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1, -1, -1, -1, Observaciones:=TxtObservaciones.Text.Trim, Modulo:="TA/V", CveMovimientoRelacionado:=CveMovimientoSalida, CveAlmacenDestino:=CveAlmacenVirtualEntrada) FolioVirtualSalida = ObjInventario.Folio Dim Contabilizable As Boolean = False @@ -1143,9 +1144,9 @@ Partial Class Inventarios_TraspasoAlmacen End If Next - 'SALIDA VIRTUAL + 'ENTRADA VIRTUAL Dim importevirtual As Decimal = 0 - CveMovimientoVirtualEntrada = ObjInventario.AddMovimiento(CveAlmacenVirtualSalida, 36, 1, Fecha, -1, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1, -1, -1, -1, Observaciones:=TxtObservaciones.Text.Trim, Modulo:="TA/S3", CveMovimientoRelacionado:=CveMovimientoEntrada, CveAlmacenDestino:=CveAlmacenVirtualEntrada) + CveMovimientoVirtualEntrada = ObjInventario.AddMovimiento(CveAlmacenVirtualEntrada, 36, 1, Fecha, -1, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1, -1, -1, -1, Observaciones:=TxtObservaciones.Text.Trim, Modulo:="TA/S3", CveMovimientoRelacionado:=CveMovimientoEntrada, CveAlmacenDestino:=CveAlmacenVirtualEntrada) FolioVirtualEntrada = ObjInventario.Folio If CveMovimientoVirtualEntrada > 0 Then Dim DtCostosVirtual As DataTable From fbcffa35fd184cfe74ef20dd4e6b9ffa1e418f06 Mon Sep 17 00:00:00 2001 From: Oscar Irigoyen Date: Sun, 21 Aug 2022 12:32:03 -0700 Subject: [PATCH 17/54] Comercio Exterior 4.0 --- App_Code/Timbrado.vb | 130 +++++++++++++-------------- Ventas/Ventas.aspx | 15 +++- Ventas/Ventas.aspx.vb | 200 ++++++++++++++++++++++++------------------ 3 files changed, 193 insertions(+), 152 deletions(-) diff --git a/App_Code/Timbrado.vb b/App_Code/Timbrado.vb index 09b82768c..dfd23df1c 100644 --- a/App_Code/Timbrado.vb +++ b/App_Code/Timbrado.vb @@ -4919,81 +4919,81 @@ Public Class Timbrado #End Region - #Region "Comercio Exterior" - 'If Ventas.Cliente.AplicaComercioExterior And ObjCFDITimbre.Complementos.ComercioExterior11.AplicaComercioExteriorSubProyecto Then - ' If ObjCFDITimbre.Complementos.ComercioExterior11 IsNot Nothing Then + If Ventas.Cliente.AplicaComercioExterior And ObjCFDITimbre.Complementos.ComercioExterior11.AplicaComercioExteriorSubProyecto Then + If ObjCFDITimbre.Complementos.ComercioExterior11 IsNot Nothing Then - ' 'DATOS GENERALES - ' cfdi.ComercioExterior11(ObjCFDITimbre.Complementos.ComercioExterior11.MotivoTraslado, - ' ObjCFDITimbre.Complementos.ComercioExterior11.TipoOperacion, - ' ObjCFDITimbre.Complementos.ComercioExterior11.ClavedePedimento, - ' ObjCFDITimbre.Complementos.ComercioExterior11.CertificadoOrigen, - ' ObjCFDITimbre.Complementos.ComercioExterior11.NumCertificadoOrigen, - ' ObjCFDITimbre.Complementos.ComercioExterior11.NumeroExportadorConfiable, - ' ObjCFDITimbre.Complementos.ComercioExterior11.Incoterm, - ' ObjCFDITimbre.Complementos.ComercioExterior11.Subdivision, - ' ObjCFDITimbre.Complementos.ComercioExterior11.Observaciones, - ' ObjCFDITimbre.Complementos.ComercioExterior11.TipoCambioUSD, - ' ObjCFDITimbre.Complementos.ComercioExterior11.TotalUSD) - ' 'EMISOR - ' cfdi.ComercioExterior11Emisor(If(EmisorRFC.Length >= 12, "", ObjCFDITimbre.Complementos.ComercioExterior11.Emisor.CURP)) - ' cfdi.ComercioExterior11Domicilio(ObjCFDITimbre.Complementos.ComercioExterior11.Emisor.Calle, - ' ObjCFDITimbre.Complementos.ComercioExterior11.Emisor.NumeroExterior, - ' ObjCFDITimbre.Complementos.ComercioExterior11.Emisor.NumeroInterior, - ' ObjCFDITimbre.Complementos.ComercioExterior11.Emisor.Colonia, - ' ObjCFDITimbre.Complementos.ComercioExterior11.Emisor.Localidad, - ' ObjCFDITimbre.Complementos.ComercioExterior11.Emisor.Referencia, - ' ObjCFDITimbre.Complementos.ComercioExterior11.Emisor.Municipio, - ' ObjCFDITimbre.Complementos.ComercioExterior11.Emisor.Estado, - ' ObjCFDITimbre.Complementos.ComercioExterior11.Emisor.Pais, - ' ObjCFDITimbre.Complementos.ComercioExterior11.Emisor.CP) - ' 'RECEPTOR - ' cfdi.ComercioExterior11Receptor(ObjCFDITimbre.Complementos.ComercioExterior11.Receptor.NumRegIdTrib) - ' cfdi.ComercioExterior11DomicilioReceptor(ObjCFDITimbre.Complementos.ComercioExterior11.Receptor.Calle, - ' ObjCFDITimbre.Complementos.ComercioExterior11.Receptor.NumeroExterior, - ' ObjCFDITimbre.Complementos.ComercioExterior11.Receptor.NumeroInterior, - ' ObjCFDITimbre.Complementos.ComercioExterior11.Receptor.Colonia, - ' ObjCFDITimbre.Complementos.ComercioExterior11.Receptor.Localidad, - ' ObjCFDITimbre.Complementos.ComercioExterior11.Receptor.Referencia, - ' ObjCFDITimbre.Complementos.ComercioExterior11.Receptor.Municipio, - ' 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) - ' '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 - ' cfdi.ComercioExterior11Mercancia(concep.NoIdentificacion, concep.FraccionArancelaria, concep.CantidadAduana, concep.UnidadAduana, concep.ValorUnitarioAduana, concep.ValorDolares) - ' If concep.DescripcionesEspecificas.Marca <> "" Then - ' cfdi.ComercioExterior11MercanciaDescripcionesEspeciales(concep.DescripcionesEspecificas.Marca, - ' concep.DescripcionesEspecificas.Modelo, - ' concep.DescripcionesEspecificas.SubModelo, - ' concep.DescripcionesEspecificas.NumeroSerie) - ' End If - ' Next + 'DATOS GENERALES + cfdi.ComercioExterior11(ObjCFDITimbre.Complementos.ComercioExterior11.MotivoTraslado, + ObjCFDITimbre.Complementos.ComercioExterior11.TipoOperacion, + ObjCFDITimbre.Complementos.ComercioExterior11.ClavedePedimento, + ObjCFDITimbre.Complementos.ComercioExterior11.CertificadoOrigen, + ObjCFDITimbre.Complementos.ComercioExterior11.NumCertificadoOrigen, + ObjCFDITimbre.Complementos.ComercioExterior11.NumeroExportadorConfiable, + ObjCFDITimbre.Complementos.ComercioExterior11.Incoterm, + ObjCFDITimbre.Complementos.ComercioExterior11.Subdivision, + ObjCFDITimbre.Complementos.ComercioExterior11.Observaciones, + ObjCFDITimbre.Complementos.ComercioExterior11.TipoCambioUSD, + ObjCFDITimbre.Complementos.ComercioExterior11.TotalUSD) + 'EMISOR + cfdi.ComercioExterior11Emisor(If(EmisorRFC.Length >= 12, "", ObjCFDITimbre.Complementos.ComercioExterior11.Emisor.CURP)) + cfdi.ComercioExterior11Domicilio(ObjCFDITimbre.Complementos.ComercioExterior11.Emisor.Calle, + ObjCFDITimbre.Complementos.ComercioExterior11.Emisor.NumeroExterior, + ObjCFDITimbre.Complementos.ComercioExterior11.Emisor.NumeroInterior, + ObjCFDITimbre.Complementos.ComercioExterior11.Emisor.Colonia, + ObjCFDITimbre.Complementos.ComercioExterior11.Emisor.Localidad, + ObjCFDITimbre.Complementos.ComercioExterior11.Emisor.Referencia, + ObjCFDITimbre.Complementos.ComercioExterior11.Emisor.Municipio, + ObjCFDITimbre.Complementos.ComercioExterior11.Emisor.Estado, + ObjCFDITimbre.Complementos.ComercioExterior11.Emisor.Pais, + ObjCFDITimbre.Complementos.ComercioExterior11.Emisor.CP) + 'RECEPTOR + cfdi.ComercioExterior11Receptor(ObjCFDITimbre.Complementos.ComercioExterior11.Receptor.NumRegIdTrib) + cfdi.ComercioExterior11DomicilioReceptor(ObjCFDITimbre.Complementos.ComercioExterior11.Receptor.Calle, + ObjCFDITimbre.Complementos.ComercioExterior11.Receptor.NumeroExterior, + ObjCFDITimbre.Complementos.ComercioExterior11.Receptor.NumeroInterior, + ObjCFDITimbre.Complementos.ComercioExterior11.Receptor.Colonia, + ObjCFDITimbre.Complementos.ComercioExterior11.Receptor.Localidad, + ObjCFDITimbre.Complementos.ComercioExterior11.Receptor.Referencia, + ObjCFDITimbre.Complementos.ComercioExterior11.Receptor.Municipio, + 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) + '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 + cfdi.ComercioExterior11Mercancia(concep.NoIdentificacion, concep.FraccionArancelaria, concep.CantidadAduana, concep.UnidadAduana, concep.ValorUnitarioAduana, concep.ValorDolares) + If concep.DescripcionesEspecificas.Marca <> "" Then + cfdi.ComercioExterior11MercanciaDescripcionesEspeciales(concep.DescripcionesEspecificas.Marca, + concep.DescripcionesEspecificas.Modelo, + concep.DescripcionesEspecificas.SubModelo, + concep.DescripcionesEspecificas.NumeroSerie) + End If + Next - ' End If + End If - ' End If - 'End If + End If + End If #End Region + End If diff --git a/Ventas/Ventas.aspx b/Ventas/Ventas.aspx index 07dd3e8e0..24d824ff0 100644 --- a/Ventas/Ventas.aspx +++ b/Ventas/Ventas.aspx @@ -2406,8 +2406,7 @@
- - +
@@ -2429,6 +2430,16 @@
+ + + <%--
+ +
+ +
+
+
--%> +
diff --git a/Ventas/Ventas.aspx.vb b/Ventas/Ventas.aspx.vb index ae0e648f8..c05bf1b78 100644 --- a/Ventas/Ventas.aspx.vb +++ b/Ventas/Ventas.aspx.vb @@ -6334,6 +6334,10 @@ Partial Class Ventas LblTipoOperacion.Text = ObjCliente.ClaveSATTipoOperacionDescripcion LblClavePedimento.Text = ObjCliente.ClaveSATPedimentoDescripcion + If ObjCliente.AplicaComercioExterior Then + ChkEmitirComercioExterior.Checked = True + End If + If ObjCliente.AplicaComercioExterior Then DdlSATMotivoTraslado.DataSource = GlobalDTSATMotivoTraslado DdlSATMotivoTraslado.DataBind() @@ -11759,6 +11763,10 @@ Partial Class Ventas Private Function PreParaTimbre(Obj As Modelos.Factura) As CFDITimbre Dim Timbre As New CFDITimbre + + + Timbre.Comprobante.Version = If(UsuarioActual.Empresa.Funcionalidad(350) = "1", "4.0", "3.3") + Timbre.Comprobante.TipoComprobante = If(Obj.TipoDocto.Contiene("Ing", "Ant"), "I", If(Obj.TipoDocto.Contiene("Egs", "Dev"), "E", "")) Timbre.Comprobante.Folio = Obj.Folio.ToString() Timbre.Comprobante.Serie = Obj.Serie @@ -11967,104 +11975,121 @@ Partial Class Ventas i += 1 Next - Dim AplicaComercioExteriorSubProyecto As Boolean = If(GlobalDTSubProyectos(-1, Obj.CveSubProyecto, CveEmpresa:=UsuarioActual.CveEmpresa)(0)("AplicaComercioExterior").ToString() = "True", True, False) - Timbre.Complementos.ComercioExterior11.AplicaComercioExteriorSubProyecto = AplicaComercioExteriorSubProyecto - If Obj.Cliente.AplicaComercioExterior And AplicaComercioExteriorSubProyecto Then - 'DATOS GENERALES - Timbre.Complementos.ComercioExterior11.TipoOperacion = GlobalDTTipoOperacion().FiltraParametros($"CveTipoOperacion={CveTipoOperacion}")(0)("ClaveSATTipoOperacion").ToString() - Timbre.Complementos.ComercioExterior11.ClavedePedimento = GlobalDTClavePedimento().FiltraParametros($"CvePedimento={CvePedimento}")(0)("ClaveSATPedimento").ToString() - 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.MotivoTraslado = GlobalDTSATMotivoTraslado.FiltroPrimeroValor("ClaveSATMotivoTraslado", $"CveMotivoTraslado={DdlSATMotivoTraslado.SelectedValue}") + Dim AplicaComercioExteriorSubProyecto As Boolean + + If ChkEmitirComercioExterior.Checked Then + AplicaComercioExteriorSubProyecto = If(GlobalDTSubProyectos(-1, Obj.CveSubProyecto, CveEmpresa:=UsuarioActual.CveEmpresa)(0)("AplicaComercioExterior").ToString() = "True", True, False) + Timbre.Complementos.ComercioExterior11.AplicaComercioExteriorSubProyecto = AplicaComercioExteriorSubProyecto + + If Obj.Cliente.AplicaComercioExterior And AplicaComercioExteriorSubProyecto Then + 'DATOS GENERALES + + Timbre.Comprobante.Exportacion = "02" + Timbre.Complementos.ComercioExterior11.TipoOperacion = GlobalDTTipoOperacion().FiltraParametros($"CveTipoOperacion={CveTipoOperacion}")(0)("ClaveSATTipoOperacion").ToString() + Timbre.Complementos.ComercioExterior11.ClavedePedimento = GlobalDTClavePedimento().FiltraParametros($"CvePedimento={CvePedimento}")(0)("ClaveSATPedimento").ToString() + 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.MotivoTraslado = GlobalDTSATMotivoTraslado.FiltroPrimeroValor("ClaveSATMotivoTraslado", $"CveMotivoTraslado={DdlSATMotivoTraslado.SelectedValue}") - 'EMISOR - Dim Dr As DataRow - Dr = Nothing - If GlobalDTSubProyectos(-1, DdlSubProyectoDatos.SelectedValue.ToEntero(), CveEmpresa:=UsuarioActual.CveEmpresa).Rows.Count > 0 Then - Dr = GlobalDTSubProyectos(-1, DdlSubProyectoDatos.SelectedValue.ToEntero(), CveEmpresa:=UsuarioActual.CveEmpresa)(0) - End If - Timbre.Complementos.ComercioExterior11.Emisor.CURP = UsuarioActual.Empresa.CURP - Timbre.Complementos.ComercioExterior11.Emisor.Calle = Dr("Calle").ToString() - Timbre.Complementos.ComercioExterior11.Emisor.NumeroExterior = Dr("NoExt").ToString() - Timbre.Complementos.ComercioExterior11.Emisor.NumeroInterior = Dr("NoInt").ToString() - Timbre.Complementos.ComercioExterior11.Emisor.Colonia = Dr("ClaveSATColonia").ToString() - Timbre.Complementos.ComercioExterior11.Emisor.Localidad = "" - Timbre.Complementos.ComercioExterior11.Emisor.Municipio = Dr("ClaveSATMunicipio").ToString() - Timbre.Complementos.ComercioExterior11.Emisor.Estado = Dr("ClaveSATEstado").ToString() - Timbre.Complementos.ComercioExterior11.Emisor.Pais = Dr("ClaveSATPais").ToString() - Timbre.Complementos.ComercioExterior11.Emisor.CP = Dr("ClaveSATCP").ToString() - 'RECEPTOR - Timbre.Complementos.ComercioExterior11.Receptor.NumRegIdTrib = "" ' EN LA VERSION 3.3 NO DEBE DE REGISTRARSE ESTE VALOR - Timbre.Complementos.ComercioExterior11.Receptor.Calle = Obj.Cliente.Direccion - Timbre.Complementos.ComercioExterior11.Receptor.NumeroExterior = Obj.Cliente.NoExt - Timbre.Complementos.ComercioExterior11.Receptor.NumeroInterior = Obj.Cliente.NoInt - Timbre.Complementos.ComercioExterior11.Receptor.Colonia = Obj.Cliente.ClaveSATColonia - Timbre.Complementos.ComercioExterior11.Receptor.Localidad = "" - Timbre.Complementos.ComercioExterior11.Receptor.Referencia = Obj.Cliente.ReferenciaFiscal - Timbre.Complementos.ComercioExterior11.Receptor.Municipio = Obj.Cliente.Ciudad - Timbre.Complementos.ComercioExterior11.Receptor.CP = Obj.Cliente.CP - Timbre.Complementos.ComercioExterior11.Receptor.Estado = Obj.Cliente.ClaveSATEstado - Timbre.Complementos.ComercioExterior11.Receptor.Pais = Obj.Cliente.ClaveSATPais - Timbre.Receptor.ResidenciaFiscal = Obj.Cliente.ClaveSATPais - Timbre.Receptor.NumeroRegistroTributario = Obj.Cliente.NumRegIdTrib + 'EMISOR + Dim Dr As DataRow + Dr = Nothing + If GlobalDTSubProyectos(-1, DdlSubProyectoDatos.SelectedValue.ToEntero(), CveEmpresa:=UsuarioActual.CveEmpresa).Rows.Count > 0 Then + Dr = GlobalDTSubProyectos(-1, DdlSubProyectoDatos.SelectedValue.ToEntero(), CveEmpresa:=UsuarioActual.CveEmpresa)(0) + End If + Timbre.Complementos.ComercioExterior11.Emisor.CURP = UsuarioActual.Empresa.CURP + Timbre.Complementos.ComercioExterior11.Emisor.Calle = Dr("Calle").ToString() + Timbre.Complementos.ComercioExterior11.Emisor.NumeroExterior = Dr("NoExt").ToString() + Timbre.Complementos.ComercioExterior11.Emisor.NumeroInterior = Dr("NoInt").ToString() + Timbre.Complementos.ComercioExterior11.Emisor.Colonia = Dr("ClaveSATColonia").ToString() + Timbre.Complementos.ComercioExterior11.Emisor.Localidad = "" + Timbre.Complementos.ComercioExterior11.Emisor.Municipio = Dr("ClaveSATMunicipio").ToString() + Timbre.Complementos.ComercioExterior11.Emisor.Estado = Dr("ClaveSATEstado").ToString() + Timbre.Complementos.ComercioExterior11.Emisor.Pais = Dr("ClaveSATPais").ToString() + Timbre.Complementos.ComercioExterior11.Emisor.CP = Dr("ClaveSATCP").ToString() - Dim ComExtPais, ComExtEstado, ComExtMunicipio, ComExtColonia, ComExtCalle, ComExtNumero, ComExtCP As String - ComExtColonia = "" : ComExtMunicipio = "" - ComExtPais = GlobalDTGralPaises.FiltroPrimeroValor("ClaveSATPais", $"CvePais={DdlComExtPais.SelectedValue}") - ComExtCalle = TxtComExtCalle.Text.Trim - ComExtNumero = TxtComExtNumero.Text.Trim - ComExtCP = TxtComExtCP.Text.Trim - If ComExtPais = "MEX" Then - ComExtEstado = GlobalDTGralEstados(ComExtPais).FiltroPrimeroValor("ClaveSATEstado", $"CveEstado={DdlComExtEstado.SelectedValue}") - ComExtMunicipio = GlobalDTGralMunicipios(ComExtEstado).FiltroPrimeroValor("ClaveSATMunicipio", $"CveMunicipio={DdlComExtMunicipio.SelectedValue}") - ComExtColonia = GlobalDTGralColonias("-1", "-1", "-1", CveColonia:=DdlComExtColonia.SelectedValue.ToEntero).FiltroPrimeroValor("ClaveSATColonia", "") - Else - If ComExtPais.Contiene("USA", "CAN") Then + 'RECEPTOR + Timbre.Complementos.ComercioExterior11.Receptor.NumRegIdTrib = If(Timbre.Comprobante.Version = "4.0", Obj.Cliente.NumRegIdTrib, "") ' EN LA VERSION 3.3 NO DEBE DE REGISTRARSE ESTE VALOR + Timbre.Complementos.ComercioExterior11.Receptor.Calle = Obj.Cliente.Direccion + Timbre.Complementos.ComercioExterior11.Receptor.NumeroExterior = Obj.Cliente.NoExt + Timbre.Complementos.ComercioExterior11.Receptor.NumeroInterior = Obj.Cliente.NoInt + Timbre.Complementos.ComercioExterior11.Receptor.Colonia = Obj.Cliente.ClaveSATColonia + Timbre.Complementos.ComercioExterior11.Receptor.Localidad = "" + Timbre.Complementos.ComercioExterior11.Receptor.Referencia = Obj.Cliente.ReferenciaFiscal + Timbre.Complementos.ComercioExterior11.Receptor.Municipio = Obj.Cliente.Ciudad + Timbre.Complementos.ComercioExterior11.Receptor.CP = Obj.Cliente.CP + Timbre.Complementos.ComercioExterior11.Receptor.Estado = Obj.Cliente.ClaveSATEstado + Timbre.Complementos.ComercioExterior11.Receptor.Pais = Obj.Cliente.ClaveSATPais + Timbre.Receptor.ResidenciaFiscal = Obj.Cliente.ClaveSATPais + Timbre.Receptor.NumeroRegistroTributario = Obj.Cliente.NumRegIdTrib + + Dim ComExtPais, ComExtEstado, ComExtMunicipio, ComExtColonia, ComExtCalle, ComExtNumero, ComExtCP As String + ComExtColonia = "" : ComExtMunicipio = "" + ComExtPais = GlobalDTGralPaises.FiltroPrimeroValor("ClaveSATPais", $"CvePais={DdlComExtPais.SelectedValue}") + ComExtCalle = TxtComExtCalle.Text.Trim + ComExtNumero = TxtComExtNumero.Text.Trim + ComExtCP = TxtComExtCP.Text.Trim + + If ComExtPais = "MEX" Then ComExtEstado = GlobalDTGralEstados(ComExtPais).FiltroPrimeroValor("ClaveSATEstado", $"CveEstado={DdlComExtEstado.SelectedValue}") + ComExtMunicipio = GlobalDTGralMunicipios(ComExtEstado).FiltroPrimeroValor("ClaveSATMunicipio", $"CveMunicipio={DdlComExtMunicipio.SelectedValue}") + ComExtColonia = GlobalDTGralColonias("-1", "-1", "-1", CveColonia:=DdlComExtColonia.SelectedValue.ToEntero).FiltroPrimeroValor("ClaveSATColonia", "") Else - ComExtEstado = TxtComExtEstado.Text.Trim + If ComExtPais.Contiene("USA", "CAN") Then + ComExtEstado = GlobalDTGralEstados(ComExtPais).FiltroPrimeroValor("ClaveSATEstado", $"CveEstado={DdlComExtEstado.SelectedValue}") + Else + ComExtEstado = TxtComExtEstado.Text.Trim + End If + ComExtMunicipio = TxtComExtMunicipio.Text.Trim + ComExtColonia = TxtComExtColonia.Text.Trim End If - ComExtMunicipio = TxtComExtMunicipio.Text.Trim - ComExtColonia = TxtComExtColonia.Text.Trim + + 'DESTINATARIO + Timbre.Complementos.ComercioExterior11.Destinatario.Nombre = TxtDestinatarioNombre.Text.Trim + Timbre.Complementos.ComercioExterior11.Destinatario.Calle = ComExtCalle + Timbre.Complementos.ComercioExterior11.Destinatario.NumeroExterior = ComExtNumero + Timbre.Complementos.ComercioExterior11.Destinatario.NumeroInterior = "" + Timbre.Complementos.ComercioExterior11.Destinatario.Colonia = ComExtColonia + Timbre.Complementos.ComercioExterior11.Destinatario.Localidad = "" + Timbre.Complementos.ComercioExterior11.Destinatario.Referencia = Obj.Cliente.ReferenciaFiscal + Timbre.Complementos.ComercioExterior11.Destinatario.Municipio = ComExtMunicipio + Timbre.Complementos.ComercioExterior11.Destinatario.CP = ComExtCP + Timbre.Complementos.ComercioExterior11.Destinatario.Estado = ComExtEstado + Timbre.Complementos.ComercioExterior11.Destinatario.Pais = ComExtPais + Timbre.Complementos.ComercioExterior11.Destinatario.NumRegIdTrib = TxtNumRegIdTrib.Text.Trim + + + 'MERCANCIAS + For Each Gvr As GridViewRow In GvComercioExterior.Rows + Dim mercancia As New CFDIComercioExterior11Mercancias With {.CantidadAduana = Gvr.FCTextBox("TxtCantidad").Text.ToDecimal, + .FraccionArancelaria = Gvr.DataKey("ClaveSATFraccionArancelaria").ToString(), + .UnidadAduana = Gvr.DataKey("ClaveSATUnidadAduana").ToString(), + .ValorDolares = Math.Round(Gvr.FCTextBox("TxtCantidad").Text.ToDecimal * Gvr.FCTextBox("TxtValorUnitario").Text.ToDecimal, 2), + .ValorUnitarioAduana = Gvr.FCTextBox("TxtValorUnitario").Text.ToDecimal, + .NoIdentificacion = Gvr.DataKey("Codigo")} + If Gvr.FCTextBox("TxtMarca").Text <> "" Then + mercancia.DescripcionesEspecificas.Marca = Gvr.FCTextBox("TxtMarca").Text + End If + + Timbre.Complementos.ComercioExterior11.Mercancias.Add(mercancia) + i += 1 + Next End If - 'DESTINATARIO - Timbre.Complementos.ComercioExterior11.Destinatario.Nombre = TxtDestinatarioNombre.Text.Trim - Timbre.Complementos.ComercioExterior11.Destinatario.Calle = ComExtCalle - Timbre.Complementos.ComercioExterior11.Destinatario.NumeroExterior = ComExtNumero - Timbre.Complementos.ComercioExterior11.Destinatario.NumeroInterior = "" - Timbre.Complementos.ComercioExterior11.Destinatario.Colonia = ComExtColonia - Timbre.Complementos.ComercioExterior11.Destinatario.Localidad = "" - Timbre.Complementos.ComercioExterior11.Destinatario.Referencia = Obj.Cliente.ReferenciaFiscal - Timbre.Complementos.ComercioExterior11.Destinatario.Municipio = ComExtMunicipio - Timbre.Complementos.ComercioExterior11.Destinatario.CP = ComExtCP - Timbre.Complementos.ComercioExterior11.Destinatario.Estado = ComExtEstado - Timbre.Complementos.ComercioExterior11.Destinatario.Pais = ComExtPais - Timbre.Complementos.ComercioExterior11.Destinatario.NumRegIdTrib = TxtNumRegIdTrib.Text.Trim - - 'MERCANCIAS - For Each Gvr As GridViewRow In GvComercioExterior.Rows - Dim mercancia As New CFDIComercioExterior11Mercancias With {.CantidadAduana = Gvr.FCTextBox("TxtCantidad").Text.ToDecimal, - .FraccionArancelaria = Gvr.DataKey("ClaveSATFraccionArancelaria").ToString(), - .UnidadAduana = Gvr.DataKey("ClaveSATUnidadAduana").ToString(), - .ValorDolares = Math.Round(Gvr.FCTextBox("TxtCantidad").Text.ToDecimal * Gvr.FCTextBox("TxtValorUnitario").Text.ToDecimal, 2), - .ValorUnitarioAduana = Gvr.FCTextBox("TxtValorUnitario").Text.ToDecimal, - .NoIdentificacion = Gvr.DataKey("Codigo")} - If Gvr.FCTextBox("TxtMarca").Text <> "" Then - mercancia.DescripcionesEspecificas.Marca = Gvr.FCTextBox("TxtMarca").Text - End If - - Timbre.Complementos.ComercioExterior11.Mercancias.Add(mercancia) - i += 1 - Next + Else + Timbre.Complementos.ComercioExterior11.AplicaComercioExteriorSubProyecto = False End If + + + + Return Timbre End Function @@ -35005,5 +35030,10 @@ Partial Class Ventas End Function + Protected Sub ChkEmitirComercioExterior_CheckedChanged(sender As Object, e As EventArgs) + + End Sub + + End Class From 4435ceec29b4f0f6a17f863addce19be63f5596d Mon Sep 17 00:00:00 2001 From: rrene Date: Mon, 22 Aug 2022 08:22:25 -0700 Subject: [PATCH 18/54] - --- Inventarios/RepRSCO.aspx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Inventarios/RepRSCO.aspx b/Inventarios/RepRSCO.aspx index ae968ebcf..1f68826c3 100644 --- a/Inventarios/RepRSCO.aspx +++ b/Inventarios/RepRSCO.aspx @@ -13,7 +13,7 @@ - Rep RSCO + Reporte RSCO From 580ef7fbe79fa48777fd17b8f62980e4b474c428 Mon Sep 17 00:00:00 2001 From: rrene Date: Mon, 22 Aug 2022 22:29:54 -0700 Subject: [PATCH 19/54] - filtro de vista, en comparativo ingresos --- App_Code/ClsNominas.vb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/App_Code/ClsNominas.vb b/App_Code/ClsNominas.vb index a2d3ffa62..22921dad9 100644 --- a/App_Code/ClsNominas.vb +++ b/App_Code/ClsNominas.vb @@ -3218,8 +3218,7 @@ Public Class ClsNominas End Function - Public Function SATSolicitudTimbreIngresosRep(CveEmpresa As Integer, FechaInicio As Date, FechaFin As DateTime, Opcion As Integer) As Boolean - + Public Function SATSolicitudTimbreIngresosRep(CveEmpresa As Integer, FechaInicio As Date, FechaFin As DateTime, Opcion As Integer, Vista As Integer) As Boolean Dim retorno As Boolean = False Try @@ -3229,6 +3228,7 @@ Public Class ClsNominas .Add("@FechaInicio", SqlDbType.Date).Value = FechaInicio .Add("@FechaFin", SqlDbType.DateTime).Value = FechaFin .Add("@Opcion", SqlDbType.Int).Value = Opcion + .Add("@Vista", SqlDbType.Int).Value = Vista End With SqlAdapter.Fill(Data) From 34046f7b080980a55fdd7b08c4ffc14459eda4e2 Mon Sep 17 00:00:00 2001 From: rrene Date: Tue, 23 Aug 2022 15:03:04 -0700 Subject: [PATCH 20/54] -- mejora pago compra --- App_Code/ClsPaginas.vb | 67 +++++++++++++++++--------------- Bancos/ProveedoresAbonar.aspx.vb | 1 + 2 files changed, 37 insertions(+), 31 deletions(-) diff --git a/App_Code/ClsPaginas.vb b/App_Code/ClsPaginas.vb index 2e28fafa2..5e87d8307 100644 --- a/App_Code/ClsPaginas.vb +++ b/App_Code/ClsPaginas.vb @@ -9625,21 +9625,21 @@ Public Class ClsPaginas Public ReadOnly Property ConceptoPrePolizaRetIVA As ConceptosRetenciones Get Dim Ret As New ConceptosRetenciones - Dim Funcionalidad As Integer + Dim Funcionalidad, FuncionalidadxAcred As Integer If CveConceptoRetIVA = 1 Then - Funcionalidad = 308 + Funcionalidad = 308 : FuncionalidadxAcred = 307 Ret.CveConceptoAcreditable = 22 Ret.CveConceptoxAcreditar = 15 ElseIf CveConceptoRetIVA = 2 Then - Funcionalidad = 310 + Funcionalidad = 310 : FuncionalidadxAcred = 309 Ret.CveConceptoAcreditable = 184 Ret.CveConceptoxAcreditar = 183 ElseIf CveConceptoRetIVA = 3 Then - Funcionalidad = 312 + Funcionalidad = 312 : FuncionalidadxAcred = 311 Ret.CveConceptoAcreditable = 186 Ret.CveConceptoxAcreditar = 185 ElseIf CveConceptoRetIVA = 4 Then - Funcionalidad = 314 + Funcionalidad = 314 : FuncionalidadxAcred = 313 Ret.CveConceptoAcreditable = 249 Ret.CveConceptoxAcreditar = 248 ElseIf CveConceptoRetIVA = 5 Then @@ -9653,22 +9653,24 @@ Public Class ClsPaginas End If If UsuarioActual.Empresa.TipoContabilidad = 2 Then - If UsuarioActual.Empresa.Funcionalidad(Funcionalidad).ToEntero > 0 Then - Ret.IdCtaContablexAcreditar = UsuarioActual.Empresa.Funcionalidad(Funcionalidad).ToEntero + + Dim ObjConta As New ClsContabilidad + If UsuarioActual.Empresa.Funcionalidad(FuncionalidadxAcred).ToEntero > 0 Then + Ret.IdCtaContablexAcreditar = UsuarioActual.Empresa.Funcionalidad(FuncionalidadxAcred).ToEntero Else - Dim ObjConta As New ClsContabilidad - If ObjConta.GetRetCuenta(Ret.CveConceptoAcreditable, UsuarioActual.CveEmpresa) Then - If ObjConta.DtResultados.Rows.Count > 0 Then - Ret.IdCtaContablexAcreditar = ObjConta.DtResultados.Rows(0)("IdCuentaRetIVACirculacion").ToString.ToEntero - End If - End If If ObjConta.GetRetCuenta(Ret.CveConceptoxAcreditar, UsuarioActual.CveEmpresa) Then - If ObjConta.DtResultados.Rows.Count > 0 Then - Ret.IdCtaContableAcreditable = ObjConta.DtResultados.Rows(0)("IdCuentaRetIVACirculacion").ToString.ToEntero - End If + If ObjConta.DtResultados.Rows.Count > 0 Then Ret.IdCtaContablexAcreditar = ObjConta.DtResultados.Rows(0)("IdCuentaRetIVACirculacion").ToString.ToEntero End If - ObjConta.Dispose() End If + + If UsuarioActual.Empresa.Funcionalidad(Funcionalidad).ToEntero > 0 Then + Ret.IdCtaContableAcreditable = UsuarioActual.Empresa.Funcionalidad(Funcionalidad).ToEntero + Else + If ObjConta.GetRetCuenta(Ret.CveConceptoAcreditable, UsuarioActual.CveEmpresa) Then + If ObjConta.DtResultados.Rows.Count > 0 Then Ret.IdCtaContableAcreditable = ObjConta.DtResultados.Rows(0)("IdCuentaRetIVACirculacion").ToString.ToEntero + End If + End If + ObjConta.Dispose() End If Return Ret @@ -9677,38 +9679,41 @@ Public Class ClsPaginas Public ReadOnly Property ConceptoPrePolizaRetISR As ConceptosRetenciones Get Dim Ret As New ConceptosRetenciones - Dim Funcionalidad As Integer + Dim Funcionalidad, FuncionalidadxAcred As Integer If CveConceptoRetISR = 1 Then - Funcionalidad = 316 + Funcionalidad = 316 : FuncionalidadxAcred = 315 Ret.CveConceptoAcreditable = 23 Ret.CveConceptoxAcreditar = 16 ElseIf CveConceptoRetISR = 2 Then - Funcionalidad = 318 + Funcionalidad = 318 : FuncionalidadxAcred = 317 Ret.CveConceptoAcreditable = 244 Ret.CveConceptoxAcreditar = 243 ElseIf CveConceptoRetISR = 3 Then - Funcionalidad = 348 + Funcionalidad = 349 : FuncionalidadxAcred = 348 Ret.CveConceptoAcreditable = 328 Ret.CveConceptoxAcreditar = 327 End If If UsuarioActual.Empresa.TipoContabilidad = 2 Then + + Dim ObjConta As New ClsContabilidad + If UsuarioActual.Empresa.Funcionalidad(FuncionalidadxAcred).ToEntero > 0 Then + Ret.IdCtaContablexAcreditar = UsuarioActual.Empresa.Funcionalidad(FuncionalidadxAcred).ToEntero + Else + If ObjConta.GetRetCuenta(Ret.CveConceptoxAcreditar, UsuarioActual.CveEmpresa) Then + If ObjConta.DtResultados.Rows.Count > 0 Then Ret.IdCtaContablexAcreditar = ObjConta.DtResultados.Rows(0)("IdCuentaRetISRCirculacion").ToString.ToEntero + End If + End If + If UsuarioActual.Empresa.Funcionalidad(Funcionalidad).ToEntero > 0 Then Ret.IdCtaContableAcreditable = UsuarioActual.Empresa.Funcionalidad(Funcionalidad).ToEntero Else - Dim ObjConta As New ClsContabilidad - If ObjConta.GetRetCuenta(Ret.CveConceptoxAcreditar, UsuarioActual.CveEmpresa) Then - If ObjConta.DtResultados.Rows.Count > 0 Then - Ret.IdCtaContablexAcreditar = ObjConta.DtResultados.Rows(0)("IdCuentaRetISRCirculacion").ToString.ToEntero - End If - End If If ObjConta.GetRetCuenta(Ret.CveConceptoAcreditable, UsuarioActual.CveEmpresa) Then - If ObjConta.DtResultados.Rows.Count > 0 Then - Ret.IdCtaContableAcreditable = ObjConta.DtResultados.Rows(0)("IdCuentaRetISRCirculacion").ToString.ToEntero - End If + If ObjConta.DtResultados.Rows.Count > 0 Then Ret.IdCtaContableAcreditable = ObjConta.DtResultados.Rows(0)("IdCuentaRetISRCirculacion").ToString.ToEntero End If - ObjConta.Dispose() End If + ObjConta.Dispose() + End If Return Ret diff --git a/Bancos/ProveedoresAbonar.aspx.vb b/Bancos/ProveedoresAbonar.aspx.vb index dcd828b1a..22b33443f 100644 --- a/Bancos/ProveedoresAbonar.aspx.vb +++ b/Bancos/ProveedoresAbonar.aspx.vb @@ -835,6 +835,7 @@ Partial Class Bancos_ProveedoresAbonar CompraActual.EsImportacion = gvr.DataKey("EsImportacion") = "True" CompraActual.UsuarioActual = UsuarioActual CompraActual.CveSubProyecto = gvr.DataKey("CveSubProyecto").ToEntero + CompraActual.IdCtaContableProv = CtaProveedor 'Importe de pago Pago.ImportePago = gvr.FCTextBox("TxtAbonar").Text.ToDecimal From eee07b09d53b5ea6f77e82aa860330f4dd7307c4 Mon Sep 17 00:00:00 2001 From: rrene Date: Tue, 23 Aug 2022 16:08:54 -0700 Subject: [PATCH 21/54] =?UTF-8?q?--=20correcci=C3=B3n?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Bancos/ProveedoresAbonar.aspx.vb | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/Bancos/ProveedoresAbonar.aspx.vb b/Bancos/ProveedoresAbonar.aspx.vb index 22b33443f..09722705d 100644 --- a/Bancos/ProveedoresAbonar.aspx.vb +++ b/Bancos/ProveedoresAbonar.aspx.vb @@ -851,6 +851,8 @@ Partial Class Bancos_ProveedoresAbonar If gvr.FCTextBox("TxtComision").Text.ToDecimal <> 0 Then Pago.OtroGastoIngreso = gvr.FCTextBox("TxtComision").Text.ToDecimal + Else + Pago.OtroGastoIngreso = 0 End If If AplicaPrePolizaPago(CompraActual, Pago, CvePrePoliza, ObjMov) Then @@ -868,7 +870,8 @@ Partial Class Bancos_ProveedoresAbonar Dim UsaComplementariaBancos As Boolean = Not UsuarioActual.CveEmpresa.Contiene(7, 11, 122, 145) Dim ConceptoMovimiento As String = $"{TxtPagueseA.Text.Trim} - {TxtObservaciones.Text} {If(Pago.TCPago > 1, $" TC:{Pago.TCPago}", "")}" Dim Referencia As String = $"{HdnTipoTransaccionAbreviatura.Value}: {TxtFolio.Text.Trim}" - Dim tImporteMN As Decimal = Pago.ImportePago + Dim tImporteMN As Decimal = TxtImporte.Text.ToDecimal + Pago.ImportePago = tImporteMN If DivTarjeta.Visible AndAlso DdlTarjeta.SelectedValue.ToEntero > 0 Then Dim ObjCreditos As New ClsBancos @@ -892,7 +895,7 @@ Partial Class Bancos_ProveedoresAbonar MsgError = "No se pudo insertar la póliza" End If - If UsaComplementariaBancos Then + If CveMoneda = 2 AndAlso UsaComplementariaBancos Then If MsgError = "" AndAlso Not ObjMov.AddPrePolizasDetalle(CvePrePoliza, True, Pago.ImportePago, (Pago.ImportePago * Pago.TCPago - Pago.ImportePago).RoundSQL, 204, Referencia, ConceptoMovimiento, IdCuentaBancariaComplementaria, CveIE:=CveIE, CveProveedor:=CveProveedor, ImporteME:=Pago.ImportePago, TipoCambio:=Pago.TCPago, CveSubProyecto:=CveSubProyecto) Then MsgError = "No se pudo insertar la póliza" End If From 9bd9e534f80272f21bcbaf7897f7449d959de2c1 Mon Sep 17 00:00:00 2001 From: Jonathan Alexis Perez Morales Date: Thu, 25 Aug 2022 12:16:54 -0700 Subject: [PATCH 22/54] Correcion en traspaso de almacenes virtuales --- Inventarios/TraspasoAlmacen.aspx.vb | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/Inventarios/TraspasoAlmacen.aspx.vb b/Inventarios/TraspasoAlmacen.aspx.vb index 67b6f6e60..eba50dc53 100644 --- a/Inventarios/TraspasoAlmacen.aspx.vb +++ b/Inventarios/TraspasoAlmacen.aspx.vb @@ -897,6 +897,11 @@ Partial Class Inventarios_TraspasoAlmacen RealizarMovimientoVirtual = True End If + 'SI VA PASAR POR EL ALMACEN TRANSITORIO, DEBE TRASPASAR LOS VIRTUALES AHI PRIMERO + If ChkTransitorio.Checked Then + CveAlmacenVirtualEntrada = GlobalDTAlmacen(UsuarioActual.CveEmpresa, CveAlmacen:=DdlAlmacenTransitorio.SelectedValue.ToEntero).FiltroPrimero("")("CveAlmacenVirtual").ToString().ToEntero() + End If + 'VALIDA ALMACEN DISTINTA SUCURSAL DEBE SER TRANSITORIO If Not UsuarioActual.CveEmpresa.Contiene(7, 140) Then '[IPP] EMPRESA VIGILANCIA NO OCUPA TRANSITORIOS - TIENEN MIL SUCURSALES Xd If Not ChkTransitorio.Checked Then @@ -1920,7 +1925,7 @@ Partial Class Inventarios_TraspasoAlmacen If UsuarioActual.Empresa.Funcionalidad(573) = "1" Then Dim CveAlmacenVirtual As Integer = GlobalDTAlmacen(UsuarioActual.CveEmpresa, CveAlmacen:=GvDatosRecepcion.Rows(0).DataKey("CveAlmacenSalida").ToEntero).FiltroPrimeroValor("CveAlmacenVirtual", "").ToEntero() - Dim CveAlmacenVirtualSalida As Integer = GlobalDTAlmacen(UsuarioActual.CveEmpresa, CveAlmacen:=GvDatosRecepcion.Rows(0).DataKey("CveAlmacenDestino").ToEntero).FiltroPrimeroValor("CveAlmacenVirtual", "").ToEntero() + Dim CveAlmacenVirtualSalida As Integer = GlobalDTAlmacen(UsuarioActual.CveEmpresa, CveAlmacen:=CveAlmacenTransitorio).FiltroPrimeroValor("CveAlmacenVirtual", "").ToEntero() 'SI EL ALMACEN ORIGEN ES DE APOPYO LOGISTICO EL ALMACEN VIRTUAL DEBE SER DE APOYO LOGISTICO 'Dim CveAlmacenVirtual As Integer = -1 @@ -1993,9 +1998,9 @@ Partial Class Inventarios_TraspasoAlmacen End If - Else - TextoError = "La Sucursal no tiene creado un almacen virtual" - ErrorMovInv = True + 'Else + ' TextoError = "La Sucursal no tiene creado un almacen virtual" + ' ErrorMovInv = True End If From 11ee82d3d45f8865e5d6e73f245256ed83194a0e Mon Sep 17 00:00:00 2001 From: Jonathan Alexis Perez Morales Date: Thu, 25 Aug 2022 19:14:55 -0700 Subject: [PATCH 23/54] Regenerar al editar pdf y editar partidas al crear a partir de --- Ventas/Ventas.aspx.vb | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/Ventas/Ventas.aspx.vb b/Ventas/Ventas.aspx.vb index ae0e648f8..e72bd615b 100644 --- a/Ventas/Ventas.aspx.vb +++ b/Ventas/Ventas.aspx.vb @@ -7772,6 +7772,11 @@ Partial Class Ventas e.Row.FCLiteral("LtCantidadFacturada").Text = e.Row.DBCampo("CantidadFacturadaPed2").ToDecimal.ToString("#,##0.##") End Select + If EsCreaApartirDe Then + e.Row.FCLinkButton("imgD").Visible = True + e.Row.FCLinkButton("imgE").Visible = True + End If + 'If GvInv.Rows.Count > 0 AndAlso ModalidadEdicion AndAlso DdlTipoComprobante.SelectedValue = "Rem" AndAlso e.Row.DataKey("CveVentaDetalle").ToString().ToEntero() > 0 Then ' e.Row.FCLinkButton("imgE").Enabled = False ' e.Row.FCLinkButton("imgE").ToolTip = "No se puede editar debido a que ya hay un movimiento de almacen." @@ -33175,6 +33180,15 @@ Partial Class Ventas UpFacturar.Update() End If ObjVentas.Dispose() + + 'REGENERAR EL PDF + Try + Dim strURLHOST = String.Format("{0}://{1}:{2}", HttpContext.Current.Request.Url.Scheme, HttpContext.Current.Request.Url.Host, HttpContext.Current.Request.Url.Port) + Dim Hilo As New System.Threading.Thread(Sub() RegenerarPDF(CveVenta, UsuarioActual.CveEmpresa, UsuarioActual.CveUsuario, strURLHOST)) + Hilo.Start() + Catch ex As Exception + OnError("Ocurrió un error al regenerar el PDF", ex) + End Try End Sub Private Function DeshabilitarAplicarNotaDeCredito(RFC As String) As Boolean From e259c12294725f98761534ad32c33753bee485d9 Mon Sep 17 00:00:00 2001 From: Jonathan Alexis Perez Morales Date: Thu, 25 Aug 2022 19:15:38 -0700 Subject: [PATCH 24/54] Emitir nota de credito por descuento pronto pago en cobro de clientes --- Ventas/ClientesAbonar.aspx.vb | 499 +++++++++++++++++++++++----------- 1 file changed, 337 insertions(+), 162 deletions(-) diff --git a/Ventas/ClientesAbonar.aspx.vb b/Ventas/ClientesAbonar.aspx.vb index d31a60e0f..a81854fc4 100644 --- a/Ventas/ClientesAbonar.aspx.vb +++ b/Ventas/ClientesAbonar.aspx.vb @@ -783,7 +783,7 @@ Partial Class Ventas_ClientesAbonar Dim SeriesPago As New List(Of String) Dim MsgError As String = "" - Dim NCGeneradas As New List(Of Modelos.Factura.MMensajeFactura) + Dim NCGeneradas As New List(Of RespuestaNotaCredrito) Dim ListaFacturasGenerarNC As New List(Of Modelos.Factura) Dim ImporteSeleccionado As Decimal = 0 @@ -1560,13 +1560,14 @@ Partial Class Ventas_ClientesAbonar If UsuarioActual.Empresa.Funcionalidad(531) = "1" AndAlso MsgError = "" Then If MsgError = "" Then If ListaFacturasGenerarNC.Count > 0 Then + For Each Fac As Modelos.Factura In ListaFacturasGenerarNC Dim ListaNC As New List(Of Modelos.Factura) ListaNC.Add(Fac) - Dim Resp As Modelos.Factura.MMensajeFactura = GenerarNC(ObjIE.IniciaTransacSQL(), ObjConta, ListaNC) + Dim Resp = GenerarNC(ObjIE.IniciaTransacSQL(), ObjConta, ListaNC) - If Resp.CveVenta > 0 Then + If Resp IsNot Nothing AndAlso Resp.Respuesta IsNot Nothing AndAlso Resp.Respuesta.CveVenta > 0 Then NCGeneradas.Add(Resp) Else MsgError = "No se pudo generar la nota de crédito" @@ -1688,8 +1689,20 @@ Partial Class Ventas_ClientesAbonar Dim TextoComplementoPago = EmitirComplementoPago(CveIE, CveVentasPago, SeriesPago) - For Each NC In NCGeneradas - StrMsg.AppendFormat("Nota de crédito generada correctamente.

Folio: {1}
", NC.CveVenta, NC.SerieFolio) + For Each RespuestaNotaCredito In NCGeneradas + If RespuestaNotaCredito IsNot Nothing AndAlso RespuestaNotaCredito.Respuesta IsNot Nothing Then + Try + Dim ObjTimbradoNC As New Timbrado + Dim TimbroNC = ObjTimbradoNC.TimbrarFactura(UsuarioActual, RespuestaNotaCredito.ObjFacturaNC) + If Not TimbroNC Then + Alert(ObjTimbradoNC.MensajeErrorCFDI, TipoMensaje.MsgError) + End If + ObjTimbradoNC = Nothing + Catch ex As Exception + OnError("Ocurrió un error al timbrar la NC.", ex) + End Try + StrMsg.AppendFormat("Nota de crédito generada correctamente.

Folio: {1}
", RespuestaNotaCredito.Respuesta.CveVenta, RespuestaNotaCredito.Respuesta.SerieFolio) + End If Next Alert($"{StrMsg.ToString}

{TextoComplementoPago}", TipoMensaje.MsgInformacion, If(ChkSeguirRegistrando.Checked, "location.href =""#""", "location.href =""/Bancos/RepCxCCliente.aspx""")) @@ -1738,177 +1751,335 @@ Partial Class Ventas_ClientesAbonar End Function #Region " N O T A - D E - C R E D I T O" + Private Class RespuestaNotaCredrito + Public Property ObjFacturaNC As Modelos.Factura + Public Property Respuesta As Modelos.Factura.MMensajeFactura + End Class - Private Function GenerarNC(SqlTransaccion As SqlClient.SqlTransaction, ObjConta As ClsContPAQi, ListaVentasGenerarNC As List(Of Modelos.Factura)) As Modelos.Factura.MMensajeFactura - Dim ObjFacturaDevolucion = New Modelos.Factura(UsuarioActual) - ObjFacturaDevolucion.TipoMensajeRespuesta = Modelos.TipoMensajeRespuesta.HTML - ObjFacturaDevolucion.CveUsuario = UsuarioActual.CveUsuario - ObjFacturaDevolucion.UsuarioCreo = UsuarioActual.Usuario + Private Function GenerarNC(SqlTransaccion As SqlClient.SqlTransaction, ObjConta As ClsContPAQi, ListaVentasGenerarNC As List(Of Modelos.Factura)) As RespuestaNotaCredrito + Dim Retorno As New RespuestaNotaCredrito() + Try - Dim CveSubProyecto As Integer = Me.CveSubProyecto - Dim CveMoneda As Integer = Me.CveMoneda - Dim CveCliente As Integer = Me.CveCliente + Dim ObjFacturaDevolucion = New Modelos.Factura(UsuarioActual) + ObjFacturaDevolucion.TipoMensajeRespuesta = Modelos.TipoMensajeRespuesta.HTML + ObjFacturaDevolucion.CveUsuario = UsuarioActual.CveUsuario + ObjFacturaDevolucion.UsuarioCreo = UsuarioActual.Usuario - If CveSubProyecto <= 0 Then - CveSubProyecto = ListaVentasGenerarNC(0).CveSubProyecto - End If - - If CveMoneda <= 0 Then - CveMoneda = ListaVentasGenerarNC(0).CveMoneda - End If - - If CveCliente <= 0 Then - CveCliente = ListaVentasGenerarNC(0).CveCliente - End If - - Dim Folio As Integer = -1 - Dim Serie As String = "-1" - - - ObjFacturaDevolucion.CveEmpresa = UsuarioActual.CveEmpresa - ObjFacturaDevolucion.TipoCambio = If(Me.CveMoneda = 1, 1, GlobalTipoCambio(Now).FormatoNumero(4).ToDecimal()) - ObjFacturaDevolucion.ConvertirPesos = False - ObjFacturaDevolucion.CveMoneda = CveMoneda - ObjFacturaDevolucion.Moneda = GlobalDTMonedas.FiltroPrimeroValor("Moneda", $"CveMoneda = {CveMoneda}") - ObjFacturaDevolucion.MonedaSAT = GlobalDTMonedas.FiltroPrimeroValor("AbreviaturaSAT", $"CveMoneda = {CveMoneda}") - ObjFacturaDevolucion.Serie = Serie - ObjFacturaDevolucion.Folio = Folio - ObjFacturaDevolucion.Fecha = Now - ObjFacturaDevolucion.CvePrePoliza = -1 - ObjFacturaDevolucion.CveMetodoPago = 0 - ObjFacturaDevolucion.CondicionesPago = 0 ' 0 - Contado, 1 - Credito (CHECAR) - ObjFacturaDevolucion.FormaPago = 0 - - ObjFacturaDevolucion.TipoDocto = "Egs" - ObjFacturaDevolucion.Fecha = Now - - ObjFacturaDevolucion.Version = "3.3" - ObjFacturaDevolucion.CveMetodoPago33 = 1 - ObjFacturaDevolucion.MetodoPago33 = "Pago en una sola exhibición" - ObjFacturaDevolucion.ClaveMetodoPagoSAT = "PUE" - - ObjFacturaDevolucion.CveFormaPago33 = 21 - ObjFacturaDevolucion.FormaPago33 = "Aplicación de anticipos" - ObjFacturaDevolucion.FormaPagoSAT33 = "30" - - ObjFacturaDevolucion.MetodoPago = "" - ObjFacturaDevolucion.ClaveMetodoPagoSAT = GlobalDTMetodosPago.FiltroPrimeroValor("ClaveSAT", $"CveMetodoPago = {ObjFacturaDevolucion.CveMetodoPago33}") - - ObjFacturaDevolucion.CveSubProyecto = CveSubProyecto - ObjFacturaDevolucion.SetSubProyecto() - - ObjFacturaDevolucion.CveCliente = CveCliente - ObjFacturaDevolucion.SetCliente() - - Dim ObjCliente As New ClsClientes - If ObjCliente.GetClientes(ObjFacturaDevolucion.CveCliente, "-1", "-1", "-1", "-1", "-1", "-1", -1, UsuarioActual.CveEmpresa, -1, TipoCliente:=-1) Then - If ObjCliente.DtResultados.Rows.Count > 0 Then - - ObjFacturaDevolucion.CveUsoCFDI = ObjCliente.CveUsoCFDI - ObjFacturaDevolucion.UsoCFDI = GlobalDTSATUsosCFDI.FiltroPrimeroValor("Descripcion", String.Format("CveUsoCFDI = {0}", ObjCliente.CveUsoCFDI)) - ObjFacturaDevolucion.ClaveUsoCFDI = GlobalDTSATUsosCFDI.FiltroPrimeroValor("UsoCFDI", String.Format("CveUsoCFDI = {0}", ObjCliente.CveUsoCFDI)) - - ObjFacturaDevolucion.DtDetalle = CreaDTDetalleNC() - - CargaImpuestos(ObjFacturaDevolucion, ListaVentasGenerarNC, ObjCliente.DesglosaIEPS, ObjCliente.RetIVA, ObjCliente.RetISR) + Dim CveSubProyecto As Integer = Me.CveSubProyecto + Dim CveMoneda As Integer = Me.CveMoneda + Dim CveCliente As Integer = Me.CveCliente + If CveSubProyecto <= 0 Then + CveSubProyecto = ListaVentasGenerarNC(0).CveSubProyecto End If - End If - If ObjCliente.GetSucursales(CveCliente) Then - If ObjCliente.DtResultados.Rows.Count > 0 Then - ObjFacturaDevolucion.CveClienteSucursal = If(String.IsNullOrEmpty(ObjCliente.DtResultados.FiltroPrimeroValor("CveClienteSucursal", "Estatus = 'Activo'")), -1, ObjCliente.DtResultados.FiltroPrimeroValor("CveClienteSucursal", "Estatus = 'Activo'").ToEntero()) + If CveMoneda <= 0 Then + CveMoneda = ListaVentasGenerarNC(0).CveMoneda + End If + + If CveCliente <= 0 Then + CveCliente = ListaVentasGenerarNC(0).CveCliente + End If + + Dim Folio As Integer = -1 + Dim Serie As String = "-1" + + ObjFacturaDevolucion.CveEmpresa = UsuarioActual.CveEmpresa + ObjFacturaDevolucion.TipoCambio = If(Me.CveMoneda = 1, 1, GlobalTipoCambio(Now).FormatoNumero(4).ToDecimal()) + ObjFacturaDevolucion.ConvertirPesos = False + ObjFacturaDevolucion.CveMoneda = CveMoneda + ObjFacturaDevolucion.Moneda = GlobalDTMonedas.FiltroPrimeroValor("Moneda", $"CveMoneda = {CveMoneda}") + ObjFacturaDevolucion.MonedaSAT = GlobalDTMonedas.FiltroPrimeroValor("AbreviaturaSAT", $"CveMoneda = {CveMoneda}") + ObjFacturaDevolucion.Serie = Serie + ObjFacturaDevolucion.Folio = Folio + ObjFacturaDevolucion.Fecha = Now + ObjFacturaDevolucion.CvePrePoliza = -1 + ObjFacturaDevolucion.CveMetodoPago = 0 + ObjFacturaDevolucion.CondicionesPago = 0 ' 0 - Contado, 1 - Credito (CHECAR) + ObjFacturaDevolucion.FormaPago = 0 + + ObjFacturaDevolucion.TipoDocto = "Egs" + ObjFacturaDevolucion.Fecha = Now + + If UsuarioActual.Empresa.Funcionalidad(350) = "1" Then + ObjFacturaDevolucion.Version = "4.0" + + 'If ObjFacturaDevolucion.Cliente Is Nothing Then + ' ObjFacturaDevolucion.Cliente = New Modelos.ClienteModel + 'End If + + 'ObjFacturaDevolucion.Cliente.CodigoRegimenFiscal = ClienteCodigoRegimenFiscal + 'ObjFacturaDevolucion.Cliente.RegimenFiscal = ClienteRegimenFiscal Else - ObjFacturaDevolucion.CveClienteSucursal = -1 + ObjFacturaDevolucion.Version = "3.3" End If + + ObjFacturaDevolucion.CveMetodoPago33 = 1 + ObjFacturaDevolucion.MetodoPago33 = "PUE - Pago en una sola exhibición" + ObjFacturaDevolucion.ClaveMetodoPagoSAT = "PUE" + + ObjFacturaDevolucion.CveFormaPago33 = 21 + ObjFacturaDevolucion.FormaPago33 = "30 - Aplicación de anticipos" + ObjFacturaDevolucion.FormaPagoSAT33 = "30" + + ObjFacturaDevolucion.CveSubProyecto = CveSubProyecto + ObjFacturaDevolucion.SetSubProyecto() + + ObjFacturaDevolucion.CveCliente = CveCliente + ObjFacturaDevolucion.SetCliente() + + Dim ObjCliente As New ClsClientes + If ObjCliente.GetClientes(ObjFacturaDevolucion.CveCliente, "-1", "-1", "-1", "-1", "-1", "-1", -1, UsuarioActual.CveEmpresa, -1, TipoCliente:=-1) Then + If ObjCliente.DtResultados.Rows.Count > 0 Then + + ObjFacturaDevolucion.CveUsoCFDI = ObjCliente.CveUsoCFDI + ObjFacturaDevolucion.UsoCFDI = GlobalDTSATUsosCFDI.FiltroPrimeroValor("Descripcion", String.Format("CveUsoCFDI = {0}", ObjCliente.CveUsoCFDI)) + ObjFacturaDevolucion.ClaveUsoCFDI = GlobalDTSATUsosCFDI.FiltroPrimeroValor("UsoCFDI", String.Format("CveUsoCFDI = {0}", ObjCliente.CveUsoCFDI)) + + ObjFacturaDevolucion.DtDetalle = CreaDTDetalleNC() + + CargaImpuestos(ObjFacturaDevolucion, ListaVentasGenerarNC, ObjCliente.DesglosaIEPS, ObjCliente.RetIVA, ObjCliente.RetISR) + + End If + End If + + If ObjCliente.GetSucursales(CveCliente) Then + If ObjCliente.DtResultados.Rows.Count > 0 Then + ObjFacturaDevolucion.CveClienteSucursal = If(String.IsNullOrEmpty(ObjCliente.DtResultados.FiltroPrimeroValor("CveClienteSucursal", "Estatus = 'Activo'")), -1, ObjCliente.DtResultados.FiltroPrimeroValor("CveClienteSucursal", "Estatus = 'Activo'").ToEntero()) + Else + ObjFacturaDevolucion.CveClienteSucursal = -1 + End If + End If + ObjCliente.Dispose() + + ObjFacturaDevolucion.CveTipoRelacion = 1 + ObjFacturaDevolucion.TipoRelacion = "01" + ObjFacturaDevolucion.DtVentasRelacionadas = New DataTable + ObjFacturaDevolucion.DtVentasRelacionadas.Columns.Add("CveVenta", GetType(Integer)) + + Dim Fol As New List(Of String) + For Each Fac In ListaVentasGenerarNC + Fol.Add(Fac.FolioFiscal) + + Dim RowVenta As DataRow = ObjFacturaDevolucion.DtVentasRelacionadas.NewRow + RowVenta("CveVenta") = Fac.CveVenta + + ObjFacturaDevolucion.DtVentasRelacionadas.Rows.Add(RowVenta) + Next + + ObjFacturaDevolucion.UUIDRelacionados = Fol + + Select Case ObjFacturaDevolucion.TipoDocto + Case "Ing" + ObjFacturaDevolucion.TipoDocumento = "Factura" + Case "REM" + ObjFacturaDevolucion.TipoDocumento = "Remision" + Case "Cot" + ObjFacturaDevolucion.TipoDocumento = "Cotizacion" + Case "Egs" + ObjFacturaDevolucion.TipoDocumento = "Nota de Crédito" + Case "Dev" + ObjFacturaDevolucion.TipoDocumento = "Nota de Devolución" + Case Else + ObjFacturaDevolucion.TipoDocumento = "" + End Select + + ObjFacturaDevolucion.FechaPago = Now + + ObjFacturaDevolucion.CveCorte = -1 + ObjFacturaDevolucion.CveMesa = -1 + ObjFacturaDevolucion.NumeroPersonas = 0 + ObjFacturaDevolucion.CveContrato = -1 + ObjFacturaDevolucion.DescripcionContrato = "" + ObjFacturaDevolucion.CveClienteSucursal = -1 + ObjFacturaDevolucion.Entrega = "" + ObjFacturaDevolucion.CveAlmacen = -1 + + Dim DtVentasNC = InicializaDTVentasNC() + + Dim TotalImporte As Decimal = ObjFacturaDevolucion.DtDetalle.SUMD("TotalImporte") + Dim ImporteIVA As Decimal = ObjFacturaDevolucion.DtDetalle.SUMD("ImporteIVA") + Dim ImporteRetIVA As Decimal = ObjFacturaDevolucion.DtDetalle.SUMD("ImporteRetIVA") + Dim ImporteRetISR As Decimal = ObjFacturaDevolucion.DtDetalle.SUMD("ImporteRetISR") + Dim ImporteIEPS As Decimal = ObjFacturaDevolucion.DtDetalle.SUMD("ImporteIEPS") + Dim Descuento As Decimal = ObjFacturaDevolucion.DtDetalle.SUMD("Descuento") + Dim Amortizacion As Decimal = 0 + + Dim Total As Decimal = (TotalImporte + ImporteIVA + ImporteIEPS) - (ImporteRetIVA + ImporteRetISR + Descuento + Amortizacion) + + 'DETALLES + ObjFacturaDevolucion.SubTotal = TotalImporte + ObjFacturaDevolucion.Descuento = Descuento + ObjFacturaDevolucion.Amortizacion = Amortizacion + ObjFacturaDevolucion.IVA = ImporteIVA + ObjFacturaDevolucion.RetIVA = ImporteRetIVA + ObjFacturaDevolucion.RetISR = ImporteRetISR + ObjFacturaDevolucion.IEPS = ImporteIEPS + ObjFacturaDevolucion.Total = Total + ObjFacturaDevolucion.TotalOtrosConceptos = 0 + + For Each Fac In ListaVentasGenerarNC + Dim Drt = DtVentasNC.NewRow + Drt("CveVenta") = Fac.CveVenta + Drt("Importe") = Fac.DescuentoProntoPago + Drt("FolioFiscal") = Fac.FolioFiscal + DtVentasNC.Rows.Add(Drt) + Next + + DtVentasNC.AcceptChanges() + + ObjFacturaDevolucion.DtVentasNC = DtVentasNC + + ObjFacturaDevolucion.Timbre = PreParaTimbre(ObjFacturaDevolucion, ListaVentasGenerarNC) + + Try + Dim Resp = ObjFacturaDevolucion.EmitirFactura(False, Transac:=SqlTransaccion, ObjContPaqTransac:=ObjConta) + Retorno.Respuesta = Resp + Catch ex As Exception + OnError("Ocurrió un error al guardar la NC de pronto pago", ex) + Retorno.Respuesta = Nothing + End Try + Retorno.ObjFacturaNC = ObjFacturaDevolucion + + Catch ex As Exception + OnError("Ocurrió un error al generar la NC de pronto pago", ex) + Retorno = Nothing + End Try + + Return Retorno + + End Function + + Private Function PreParaTimbre(Obj As Modelos.Factura, ListaVentasGenerarNC As List(Of Modelos.Factura)) As CFDITimbre + Dim Timbre As New CFDITimbre + Timbre.Comprobante.TipoComprobante = If(Obj.TipoDocto.Contiene("Ing", "Ant"), "I", If(Obj.TipoDocto.Contiene("Egs", "Dev"), "E", "")) + Timbre.Comprobante.Folio = Obj.Folio.ToString() + Timbre.Comprobante.Serie = Obj.Serie + Timbre.Comprobante.Fecha = Obj.FechaCP + Timbre.Comprobante.FormadePago = Obj.FormaPagoSAT33 + Timbre.Comprobante.CondicionesdePago = Obj.FormaPago33 + Timbre.Comprobante.MetodoPago = Obj.ClaveMetodoPagoSAT + Timbre.Comprobante.SubTotal = Obj.SubTotal + Timbre.Comprobante.Descuentos = Obj.Descuento + Timbre.Comprobante.Moneda = Obj.MonedaSAT + Timbre.Comprobante.TipoCambio = If(Obj.CveMoneda = 1, "1", Obj.TipoCambio.ToString()) + Timbre.Comprobante.Total = Obj.Total + + Timbre.Comprobante.LugarExpedicion = Obj.SubProyecto.CP + If Timbre.Comprobante.LugarExpedicion = "" Then + Dim aa As String = "no se guardo lugar de expedicion" + aa.GuardaLog() End If - ObjCliente.Dispose() - ObjFacturaDevolucion.CveTipoRelacion = 7 - ObjFacturaDevolucion.TipoRelacion = "07" - ObjFacturaDevolucion.DtVentasRelacionadas = New DataTable - ObjFacturaDevolucion.DtVentasRelacionadas.Columns.Add("CveVenta", GetType(Integer)) + Timbre.Comprobante.Confirmacion = "" - Dim Fol As New List(Of String) - For Each Fac In ListaVentasGenerarNC - Fol.Add(Fac.FolioFiscal) + If Obj.FacturarSucursal Then + Timbre.Receptor.RFC = Obj.ClienteSucursal.RFC + Timbre.Receptor.Nombre = Obj.ClienteSucursal.Nombre + Timbre.Receptor.DomicilioFiscalReceptor = Obj.ClienteSucursal.CP + Else + Timbre.Receptor.RFC = Obj.Cliente.RFC + If UsuarioActual.Empresa.Funcionalidad(350) = "1" Then + Timbre.Receptor.Nombre = Obj.Cliente.Nombre + Else + Timbre.Receptor.Nombre = Obj.Cliente.Nombre + " " + Obj.Cliente.RegimenSociedad + End If + Timbre.Receptor.DomicilioFiscalReceptor = Obj.Cliente.CP + End If - Dim RowVenta As DataRow = ObjFacturaDevolucion.DtVentasRelacionadas.NewRow - RowVenta("CveVenta") = Fac.CveVenta + Timbre.Receptor.RegimenFiscalReceptor = Obj.Cliente.CodigoRegimenFiscal - ObjFacturaDevolucion.DtVentasRelacionadas.Rows.Add(RowVenta) + Timbre.Receptor.ResidenciaFiscal = "" + Timbre.Receptor.NumeroRegistroTributario = "" + Timbre.Receptor.UsoCFDI = Obj.ClaveUsoCFDI + + If ListaVentasGenerarNC IsNot Nothing Then + Timbre.CFDIRelacionados.UUID.Clear() + + Dim RowTipoRelacion As DataRow = GlobalDTVtaTiposRelacion().FiltroPrimero($"CveTipoRelacion = {Obj.CveTipoRelacion}") + + Timbre.CFDIRelacionados.TipoRelacion = RowTipoRelacion("SATClaveTipoRelacion").ToString() + Timbre.CFDIRelacionados.TipoRelacionTexto = RowTipoRelacion("SATTipoRelacion").ToString() + + For Each Fac In ListaVentasGenerarNC + Timbre.CFDIRelacionados.UUID.Add(Fac.FolioFiscal) + Next + End If + + Dim totSubTotal As Decimal = If(UsuarioActual.Empresa.CvePAC = 3, Obj.DtDetalle.SUMD("Total"), Obj.SubTotal) 'Obj.SubTotal + Dim totIVA As Decimal = Obj.IVA + Dim totRetIVA As Decimal = Obj.RetIVA + Dim totRetISR As Decimal = Obj.RetISR + + Dim i As Integer = 1 + + 'detalles + Dim tPS As String = "" + + For Each drr As DataRow In Obj.DtDetalle.Rows + If drr("PS").ToString().Length = 1 Then + tPS = drr("Obs").ToString() + Else + If drr("PS").ToString().Length = 0 Then + tPS = "" + Else + tPS = String.Format("{0} {1}", drr("PS"), drr("Obs")) + End If + End If + + tPS = tPS.Replace("|", " ") + + If tPS.Length >= 1000 Then + Dim tPSRecortado = tPS.Remove(999, tPS.Length - 999) + tPS = tPSRecortado + End If + + 'condicionante, especial + If UsuarioActual.CveEmpresa = 15 Then drr("UM") = "" ' les comentan que no debe de ir la etiqueta de "unidad" en el producto + + Dim concepto As New CFDIConceptos With {.Cantidad = drr("Cantidad").ToString().ToDecimal, + .Descripcion = tPS, + .ValorUnitario = drr("PU").ToString().ToDecimal, + .Importe = If(UsuarioActual.Empresa.CvePAC = 3, drr("Total").ToString().ToDecimal.RoundSQL(2), drr("TotalImporte").ToString().ToDecimal), + .Descuento = drr("Descuento").ToString().ToDecimal.RoundSQL(2), + .Unidad = drr("UM").ToString(), + .ClaveUnidad = drr("SATClaveUM").ToString(), + .ClaveProdServ = drr("SATClaveProdServ").ToString(), + .Noidentificacion = drr("Noidentificacion").ToString(), + .CuentaPredial = drr("CuentaPredial").ToString(), + .ImporteGravaIVAAdicional = drr("ImporteIEPS").ToString().ToDecimal, + .ObjetoImpuesto = drr("CodigoObjetoImpuesto").ToString()} + 'verifica suma subtotales + If i = Obj.DtDetalle.Rows.Count AndAlso totSubTotal.RoundSQL(2) <> concepto.Importe.RoundSQL(2) AndAlso Math.Abs(totSubTotal.RoundSQL(2) - concepto.Importe.RoundSQL(2)) <= 0.01 Then 'proceso de ajusta de decimales + concepto.Importe = totSubTotal + End If + totSubTotal = totSubTotal - concepto.Importe + + 'siempre estaremos agregando el iva, auqnue sea en importe cero o tasa cero, para que se emita la factura + ' If drr("ImporteIVA").ToString().ToDouble > 0 Then + + 'si es ingreso amortizado por la totalidad, y arroja el valor total de cero, no debe de impuestos, y si la BASE de calculo es mayor a cero + If Timbre.Comprobante.Total > 0 AndAlso concepto.Importe - concepto.Descuento + concepto.ImporteGravaIVAAdicional > 0 Then + concepto.Impuestos.Add(New CFDIConceptosImpuestos With {.TrasladooRetencion = "T", .Base = (concepto.Importe - concepto.Descuento + concepto.ImporteGravaIVAAdicional).RoundSQL(6), .TasaOCuota = drr("PorcentajeIVA").ToString().ToDecimal, .Impuesto = "002", .Importe = drr("ImporteIVA").ToString().ToDecimal}) + End If + + If drr("ImporteIEPS").ToString().ToDouble > 0 Then + concepto.Impuestos.Add(New CFDIConceptosImpuestos With {.TrasladooRetencion = "T", .Base = (concepto.Importe - concepto.Descuento).RoundSQL(6), .TasaOCuota = drr("PorcentajeIEPS").ToString().ToDecimal, .Impuesto = "003", .Importe = drr("ImporteIEPS").ToString().ToDecimal}) + End If + + If drr("ImporteRetIVA").ToString().ToDouble > 0 Then 'si hay retenciones + concepto.Impuestos.Add(New CFDIConceptosImpuestos With {.TrasladooRetencion = "R", .Base = (concepto.Importe - concepto.Descuento).RoundSQL(6), .TasaOCuota = drr("PorcentajeRetIVA").ToString().ToDecimal, .Impuesto = "002", .Importe = drr("ImporteRetIVA").ToString().ToDecimal}) + End If + + If drr("ImporteRetISR").ToString().ToDouble > 0 Then 'retención de ISR + concepto.Impuestos.Add(New CFDIConceptosImpuestos With {.TrasladooRetencion = "R", .Base = (concepto.Importe - concepto.Descuento).RoundSQL(6), .TasaOCuota = drr("PorcentajeRetISR").ToString().ToDecimal, .Impuesto = "001", .Importe = drr("ImporteRetISR").ToString().ToDecimal}) + End If + + Timbre.Conceptos.Add(concepto) + i += 1 Next - ObjFacturaDevolucion.UUIDRelacionados = Fol - - Select Case ObjFacturaDevolucion.TipoDocto - Case "Ing" - ObjFacturaDevolucion.TipoDocumento = "Factura" - Case "REM" - ObjFacturaDevolucion.TipoDocumento = "Remision" - Case "Cot" - ObjFacturaDevolucion.TipoDocumento = "Cotizacion" - Case "Egs" - ObjFacturaDevolucion.TipoDocumento = "Nota de Crédito" - Case "Dev" - ObjFacturaDevolucion.TipoDocumento = "Nota de Devolución" - Case Else - ObjFacturaDevolucion.TipoDocumento = "" - End Select - - ObjFacturaDevolucion.FechaPago = Now - - ObjFacturaDevolucion.CveCorte = -1 - ObjFacturaDevolucion.CveMesa = -1 - ObjFacturaDevolucion.NumeroPersonas = 0 - ObjFacturaDevolucion.CveContrato = -1 - ObjFacturaDevolucion.DescripcionContrato = "" - ObjFacturaDevolucion.CveClienteSucursal = -1 - ObjFacturaDevolucion.Entrega = "" - ObjFacturaDevolucion.CveAlmacen = -1 - - Dim DtVentasNC = InicializaDTVentasNC() - - Dim TotalImporte As Decimal = ObjFacturaDevolucion.DtDetalle.SUMD("TotalImporte") - Dim ImporteIVA As Decimal = ObjFacturaDevolucion.DtDetalle.SUMD("ImporteIVA") - Dim ImporteRetIVA As Decimal = ObjFacturaDevolucion.DtDetalle.SUMD("ImporteRetIVA") - Dim ImporteRetISR As Decimal = ObjFacturaDevolucion.DtDetalle.SUMD("ImporteRetISR") - Dim ImporteIEPS As Decimal = ObjFacturaDevolucion.DtDetalle.SUMD("ImporteIEPS") - Dim Descuento As Decimal = ObjFacturaDevolucion.DtDetalle.SUMD("Descuento") - Dim Amortizacion As Decimal = 0 - - Dim Total As Decimal = (TotalImporte + ImporteIVA + ImporteIEPS) - (ImporteRetIVA + ImporteRetISR + Descuento + Amortizacion) - - 'DETALLES - ObjFacturaDevolucion.SubTotal = TotalImporte - ObjFacturaDevolucion.Descuento = Descuento - ObjFacturaDevolucion.Amortizacion = Amortizacion - ObjFacturaDevolucion.IVA = ImporteIVA - ObjFacturaDevolucion.RetIVA = ImporteRetIVA - ObjFacturaDevolucion.RetISR = ImporteRetISR - ObjFacturaDevolucion.IEPS = ImporteIEPS - ObjFacturaDevolucion.Total = Total - ObjFacturaDevolucion.TotalOtrosConceptos = 0 - - For Each Fac In ListaVentasGenerarNC - Dim Drt = DtVentasNC.NewRow - Drt("CveVenta") = Fac.CveVenta - Drt("Importe") = Fac.DescuentoProntoPago - Drt("FolioFiscal") = Fac.FolioFiscal - DtVentasNC.Rows.Add(Drt) - Next - - DtVentasNC.AcceptChanges() - - ObjFacturaDevolucion.DtVentasNC = DtVentasNC - - Dim Resp = ObjFacturaDevolucion.EmitirFactura(False, Transac:=SqlTransaccion, ObjContPaqTransac:=ObjConta) - - ObjFacturaDevolucion.Dispose() - - - Return Resp - + Return Timbre End Function @@ -1975,7 +2146,10 @@ Partial Class Ventas_ClientesAbonar Row("CveOrdenCompraDetalle") = CveOrdenCompraDetalle Row("CveVentaDetalleRemision") = CveVentaDetalleRemision Row("CveVentaDetalleCotizacion") = CveVentaDetalleCotizacion - + Dim DrPS As DataRow = GlobalDTPS(UsuarioActual.CveEmpresa, CvePS:=CvePS).FiltroPrimero("") + If DrPS IsNot Nothing Then + Row("CodigoObjetoImpuesto") = DrPS("CodigoObjetoImpuesto") + End If TmpDT.Rows.Add(Row) End Sub @@ -2193,6 +2367,7 @@ Partial Class Ventas_ClientesAbonar TmpDT.Columns.Add("ClaveSATUnidadAduanaDescripcion", GetType(String)) TmpDT.Columns.Add("CveTamaño", GetType(Integer)) TmpDT.Columns.Add("EsCargo", GetType(Boolean)) + TmpDT.Columns.Add("CodigoObjetoImpuesto", GetType(String)) Return TmpDT End Function From e5ec7e0ce5ce66256e8f31d3e696f9c0101bf52e Mon Sep 17 00:00:00 2001 From: rrene Date: Thu, 25 Aug 2022 19:23:54 -0700 Subject: [PATCH 25/54] -- mejora --- Compras/Compras.aspx.vb | 56 +++++++++++++---------------------------- 1 file changed, 17 insertions(+), 39 deletions(-) diff --git a/Compras/Compras.aspx.vb b/Compras/Compras.aspx.vb index fe2fe1bfd..3bb8ba23b 100644 --- a/Compras/Compras.aspx.vb +++ b/Compras/Compras.aspx.vb @@ -5385,7 +5385,7 @@ Partial Class Compras_Compras End If - 'agregamos la salida gasto + 'agregamos la salida folio = ObjInventario.GetFolioSiguiente(3, UsuarioActual.CveEmpresa) cvemovimientosalidagasto = ObjInventario.AddMovimiento(tcvealmacen, 3, DdlMoneda.SelectedValue.ToEntero, fecha.AddSeconds(1), folio, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, CveCompra, -1, -1, -1, Modulo:="Comp/G3") If cvemovimientosalidagasto <= 0 Then @@ -6157,7 +6157,7 @@ Partial Class Compras_Compras funcionalidad = 317 ConceptoContable = 243 ElseIf DdlRetISRConcepto.SelectedValue.ToEntero = 3 Then - funcionalidad = 348 + funcionalidad = 349 ConceptoContable = 327 End If importeMovimiento = CompraActual.RetISR @@ -6269,10 +6269,12 @@ Partial Class Compras_Compras DT = TmpDT.FiltraParametros("ISNULL(TipoAF,0) <> 2 And ISNULL(CveAlmacen,0) > 0", "", {"CveAlmacen"}) 'RECORREMOS PARA DETECTAR LA MODALIDAD DEL ALMACEN, EN CASO DE SER SOLO EXISTENCIA LIMPIAMOS CVEALMACEN 'SI LA COMPRA ES DE TIPO GASTO CON ALMACEN DEBE REGISTRAR MOVIMIENTO + Dim AlmacenSoloExistencia As Boolean = False If DdlTipoCompra.SelectedValue <> "10" Then For Each Dr As DataRow In DT.Rows If DtAlmacenes.FiltroPrimeroValor("Modalidad", $"CveAlmacen = {Dr("CveAlmacen").ToString.ToEntero}").ToString = "Solo Existencia" Then Dr("CveAlmacen") = 0 + AlmacenSoloExistencia = True End If Dr.AcceptChanges() Next @@ -6296,7 +6298,6 @@ Partial Class Compras_Compras End If End If - If importeMN <> 0 Then If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, TipoMovimiento, importeMN, Referencia, 6, Concepto, FechaMovimiento, IdCtaContable, -1, CveCompra:=CveCompra, CveProveedor:=CveProveedorConcepto, CveIE:=CveIE, CvePersonal:=CvePersonal, CveCreditoDetalle:=CveCreditoDetalle, ImporteMX:=importeMN, ImporteME:=If(tipoCambioActual = 1, 0, importeMovimiento), TipoCambio:=tipoCambioActual, CveClasificacion:=RowDetalle("CveClasificacion").ToString().ToEntero(), CveSubProyecto:=RowDetalle("CveSubProyecto").ToString().ToEntero(), Contabilizable:=SeContabiliza) Then @@ -6317,15 +6318,14 @@ Partial Class Compras_Compras IdCtaContable = ObjConta.DtResultados.Rows(0)("IdCtaContable").ToString.ToEntero End If End If - End If - - - If importeMN <> 0 Then 'Conta ContPAQ If IdCtaContable = 0 Then CuentasContablesInvalidas.Append("
" & GlobalDTContaConceptosContables(-1).FiltroPrimero(String.Format("CveConceptoContable = {0}", 68))("ConceptoContable").ToString) idCuentaContabilizacion = 0 End If + End If + + If importeMN <> 0 Then 'SI ES GASTO CON ALMACEN NO DEBE CONTABILIZAR CONCEPTO 68 If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, TipoMovimiento, importeMN, Referencia, 68, Concepto, FechaMovimiento, IdCtaContable, -1, CveCompra:=CveCompra, CveProveedor:=CveProveedorConcepto, CveIE:=CveIE, CvePersonal:=CvePersonal, CveMovimientoAlmacen:=CveMovimientoInventario, CveCreditoDetalle:=CveCreditoDetalle, ImporteMX:=importeMN, ImporteME:=If(tipoCambioActual = 1, 0, importeMovimiento), TipoCambio:=tipoCambioActual, Contabilizable:=If(DdlTipoCompra.SelectedValue = "10", False, SeContabiliza)) Then @@ -6349,9 +6349,6 @@ Partial Class Compras_Compras importeMovimiento = 0 IdCtaContable = 0 - ''FLETES - 'If UsuarioActual.CveEmpresa.Contiene(119) And UsuarioActual.Empresa.UsaInventarios And DdlTipoComprobante.SelectedValue <> "NC" And Not UsuarioActual.Empresa.Funcionalidad(126) = "1" And CveConceptoContableAlmacen.Contiene(237, 240) Then - 'End If Dim CostoIndirectoAcum176 As Decimal = 0 'INV [MERCANCIA RECIBIDA POR ADELANTADO (OC) | MERCANCIA PENDIENTE POR RECIBIR (COMPRA) ] @@ -8983,16 +8980,6 @@ Partial Class Compras_Compras End If - '[IPP] COMENTADO PORQUE REUNIFICABA AMORTIZACIÓN NC 27/Agosto/2018 - 'If Not CompraUnificada Then - ' 'Unificacion de PrePolizas - ' If UsuarioActual.Empresa.Funcionalidad(219) = "1" Then - ' If Not ObjConta.PrePolizaUnificacion(gvr.DataKey("CvePrePoliza").ToEntero, CvePrepolizaPadre) Then - ' ErrorMovtosCxP = 1 - ' Alert("No se pudo unificar la prepoliza", TipoMensaje.MsgError) - ' End If - ' End If - 'End If End If Next @@ -9011,8 +8998,6 @@ Partial Class Compras_Compras ErrorMovtosCxP = 1 End If End If - - End If End If @@ -10055,17 +10040,17 @@ Partial Class Compras_Compras If UsuarioActual.Empresa.UsaInventarios AndAlso Not UsuarioActual.Empresa.Funcionalidad(126) = "1" And ConceptoContabilizacionAlmacen = 0 Then DT = TmpDT.FiltraParametros("ISNULL(TipoAF,0) <> 2 AND ISNULL(CveAlmacen,0) > 0", "", {"CveAlmacen"}) 'RECORREMOS PARA DETECTAR LA MODALIDAD DEL ALMACEN, EN CASO DE SER SOLO EXISTENCIA LIMPIAMOS CVEALMACEN - If DdlTipoCompra.SelectedValue <> "10" Then - For Each Dr As DataRow In DT.Rows - If DtAlmacenes.FiltroPrimeroValor("Modalidad", $"CveAlmacen = {Dr("CveAlmacen").ToString.ToEntero}").ToString = "Solo Existencia" Then - Dr("CveAlmacen") = 0 - End If - Dr.AcceptChanges() - Next - End If + + 'For Each Dr As DataRow In DT.Rows + ' If DtAlmacenes.FiltroPrimeroValor("Modalidad", $"CveAlmacen = {Dr("CveAlmacen").ToString.ToEntero}").ToString = "Solo Existencia" Then + ' Dr("CveAlmacen") = 0 + ' End If + ' Dr.AcceptChanges() + 'Next + DT.AcceptChanges() DT = DT.FiltraParametros("ISNULL(CveAlmacen,0) > 0") - If DT.Rows.Count > 0 AndAlso Not DdlTipoComprobante.SelectedValue.Contiene("NC", "DEV", "Ant") Then + If (DT.Rows.Count > 0) AndAlso Not DdlTipoComprobante.SelectedValue.Contiene("NC", "DEV", "Ant") Then For Each Row2 As DataRow In DT.Rows importeMovimiento = TmpDT.SUM("Total", $"CveAlmacen = {Row2("CveAlmacen")}").ToString.ToDecimal + TmpDT.SUM("CostoIndirectoAlmacen", $"CveAlmacen = {Row2("CveAlmacen")}").ToString.ToDecimal 'Row2("Total").ToString.ToDecimal + Row2("CostoIndirectoAlmacen").ToString.ToDecimal @@ -10186,17 +10171,10 @@ Partial Class Compras_Compras End If End If - ''SEGMENTO DE NEGOCIO - Dim IdSegmentoNegocio As Integer = -1 - 'Dim drT As DataRow = GlobalDTSubProyectos(-1, CveSubProyecto:=Row2("CveSubProyecto").ToString.ToEntero).FiltroPrimero(String.Format("CveSubProyecto = {0} ", Row2("CveSubProyecto").ToString.ToEntero)) - 'If drT IsNot Nothing Then - ' IdSegmentoNegocio = drT("IdSegNeg").ToString.ToEntero - 'End If - 'AGREGA MOVIMIENTO If importeMovimiento <> 0 AndAlso Not DdlTipoComprobante.SelectedValue.Contiene("NC", "DEV", "Ant") Then Concepto = $"{NombreProveedor} {TxtSerie.Text} - {TxtFolio.Text}" - If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, TipoMovimiento, importeMovimiento, Referencia, 6, Concepto, FechaMovimiento, IdCtaContable, IdSegmentoNegocio, CveCompra:=CveCompra, CveProveedor:=CveProveedorConcepto, CveIE:=CveIE, CveCreditoDetalle:=CveCreditoDetalle, CveClasificacion:=Row2("CveClasificacion").ToString.ToEntero, CveSubProyecto:=Row2("CveSubProyecto").ToString.ToEntero, ImporteMX:=importeMN, ImporteME:=If(tipoCambioActual = 1, 0, importeMovimiento), CveTipoGasto:=Row2("CveTipoGasto").ToString.ToEntero) Then + If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, TipoMovimiento, importeMovimiento, Referencia, 6, Concepto, FechaMovimiento, IdCtaContable, -1, CveCompra:=CveCompra, CveProveedor:=CveProveedorConcepto, CveIE:=CveIE, CveCreditoDetalle:=CveCreditoDetalle, CveClasificacion:=Row2("CveClasificacion").ToString.ToEntero, CveSubProyecto:=Row2("CveSubProyecto").ToString.ToEntero, ImporteMX:=importeMN, ImporteME:=If(tipoCambioActual = 1, 0, importeMovimiento), CveTipoGasto:=Row2("CveTipoGasto").ToString.ToEntero) Then ErrorPrepoliza = True End If End If From 9328dab7438f4daa852cbe2d615420fd022a3612 Mon Sep 17 00:00:00 2001 From: rrene Date: Thu, 25 Aug 2022 19:24:11 -0700 Subject: [PATCH 26/54] -- mejora alta cuentas --- General/SaldosIniciales.aspx.vb | 48 ++++++++++++++++++--------------- 1 file changed, 26 insertions(+), 22 deletions(-) diff --git a/General/SaldosIniciales.aspx.vb b/General/SaldosIniciales.aspx.vb index b0ec4c360..74362e4c2 100644 --- a/General/SaldosIniciales.aspx.vb +++ b/General/SaldosIniciales.aspx.vb @@ -1559,38 +1559,42 @@ Partial Class General_SaldosIniciales For Each Row As DataRow In dt.Rows - NombreCuenta = Row("NombreCuenta").ToString - CuentaPadre = Row("CuentaPadre").ToString - Dim Cuenta As String = Row("Cuenta").ToString - Dim TipoCuenta As String = Row("TipoCuenta").ToString - Dim AgrupadorSAT As String = Row("AgrupadorSAT").ToString - Dim CveCuentaPadre As Integer = -1 - Dim CveAgrupadorSAT As Integer = If(AgrupadorSAT = "0", -1, AgrupadoresSAT.FiltroPrimeroValor("CveAgrupadorSAT", String.Format("CodigoNombre LIKE '%{0}%'", AgrupadorSAT)).ToEntero) + Dim Cuenta As String = Row("Cuenta").ToString.Trim + If Cuenta <> "" Then + NombreCuenta = Row("NombreCuenta").ToString.Trim + CuentaPadre = Row("CuentaPadre").ToString.Trim - If Not CuentaPadre = "" Then - If ObjConta.GetCuentas(-1, CuentaPadre.Replace("-", ""), -1, UsuarioActual.CveEmpresa) Then - If ObjConta.DtResultados.Rows.Count > 0 Then - CveCuentaPadre = ObjConta.DtResultados().FiltroPrimeroValor("Id").ToEntero + Dim TipoCuenta As String = Row("TipoCuenta").ToString.Trim + Dim AgrupadorSAT As String = Row("AgrupadorSAT").ToString.Trim + Dim CveCuentaPadre As Integer = -1 + Dim CveAgrupadorSAT As Integer = If(AgrupadorSAT = "0", -1, AgrupadoresSAT.FiltroPrimeroValor("CveAgrupadorSAT", String.Format("CodigoNombre LIKE '%{0}%'", AgrupadorSAT)).ToEntero) + + If Not CuentaPadre = "" Then + If ObjConta.GetCuentas(-1, CuentaPadre.Replace("-", ""), -1, UsuarioActual.CveEmpresa) Then + If ObjConta.DtResultados.Rows.Count > 0 Then + CveCuentaPadre = ObjConta.DtResultados().FiltroPrimeroValor("Id").ToEntero + Else + TieneError = True + Exit For + End If Else TieneError = True Exit For End If + Else + CveCuentaPadre = -2 + End If + + Dim IdNew = ObjConta.AddCuenta(CveCuentaPadre, Cuenta.Replace("-", ""), NombreCuenta, TipoCuenta, 1, 1, CveEmpresaParam:=UsuarioActual.CveEmpresa, CveAgrupadorSAT:=CveAgrupadorSAT) + If IdNew > 0 Then + ContadorUpdate = ContadorUpdate + 1 Else TieneError = True + ContadorError = ContadorError + 1 Exit For End If - Else - CveCuentaPadre = -2 End If - Dim IdNew = ObjConta.AddCuenta(CveCuentaPadre, Cuenta.Replace("-", ""), NombreCuenta, TipoCuenta, 1, 1, CveEmpresaParam:=UsuarioActual.CveEmpresa, CveAgrupadorSAT:=CveAgrupadorSAT) - If IdNew > 0 Then - ContadorUpdate = ContadorUpdate + 1 - Else - TieneError = True - ContadorError = ContadorError + 1 - Exit For - End If Next Else Alert("No se tienen asociados Agrupadores para esta empresa") @@ -1598,12 +1602,12 @@ Partial Class General_SaldosIniciales End If If Not TieneError Then ObjConta.Commit() + Alert($"Se agregaron {ContadorUpdate} Cuentas Correctamente y se omitieron: {ContadorError} cuentas.") Else Alert($"No pudimos agregar la cuenta en ContaSIG: {NombreCuenta} - Cuenta Padre: {CuentaPadre}", TipoMensaje.MsgError) ObjConta.RollBack() End If - Alert($"Se agregaron {ContadorUpdate} Cuentas Correctamente y se omitieron: {ContadorError} cuentas.") Catch ex As Exception ObjConta.RollBack() From 171ae4cb1fff74270aa1b7bc368ab3c293c2d954 Mon Sep 17 00:00:00 2001 From: rrene Date: Thu, 25 Aug 2022 19:24:21 -0700 Subject: [PATCH 27/54] -- prepoliza de *C --- Inventarios/EntregaAlmacen.aspx.vb | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) diff --git a/Inventarios/EntregaAlmacen.aspx.vb b/Inventarios/EntregaAlmacen.aspx.vb index 17f8a1462..f14e37152 100644 --- a/Inventarios/EntregaAlmacen.aspx.vb +++ b/Inventarios/EntregaAlmacen.aspx.vb @@ -2047,15 +2047,14 @@ Partial Class Inventarios_EntregaAlmacen Next End If - If Not ErrorMovInv AndAlso CveMovimientoSalida > 0 Then + If Not ErrorMovInv AndAlso CveMovimientoSalida > 0 AndAlso TipoDocto.Contiene("Rem") Then Dim CvePrePolizaSinCosto As Integer = ObjConta.AddPrePolizas("EA/SinCost", 53, 0, 0, 1, TxtFecha.Text.ToDate, "Entrega", UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa) If CvePrePolizaSinCosto > 0 Then If Not ErrorMovInv AndAlso Not ObjConta.AddPrePolizasDetalle(CvePrePolizaSinCosto, True, 0, 0, 68, TxtObservaciones.Text, TxtObservaciones.Text, -1, -1, CveMovimientoAlmacen:=CveMovimientoSalida, Contabilizable:=False) Then ErrorMovInv = True End If - - If Not ObjConta.AddPrePolizasDetalle(CvePrePolizaSinCosto, False, 0, 0, 68, TxtObservaciones.Text, TxtObservaciones.Text, -1, -1, CveMovimientoAlmacen:=CveMovimientoEntradaApartado, Contabilizable:=False) Then + If Not ErrorMovInv AndAlso Not ObjConta.AddPrePolizasDetalle(CvePrePolizaSinCosto, False, 0, 0, 68, TxtObservaciones.Text, TxtObservaciones.Text, -1, -1, CveMovimientoAlmacen:=CveMovimientoEntradaApartado, Contabilizable:=False) Then ErrorMovInv = True End If @@ -2123,12 +2122,6 @@ Partial Class Inventarios_EntregaAlmacen CantidadPendiente = 1 - 'If CBool(Dr("AplicaSeccion")) Then - ' CveSeccionAlmacen = GlobalDTInvPSSeccionesAlmacen(UsuarioActual.CveEmpresa, Dr2("CveAlmacen").ToString().ToEntero(), Dr("CvePS").ToString().ToEntero()).FiltroPrimeroValor("CveSeccionAlmacen").ToEntero() - ' Dim a As String = String.Format("CveAlmacen={0}-CvePS:{1}-CveseccionAlmacen={2}", Dr2("CveAlmacen"), Dr("CvePS"), CveSeccionAlmacen) - 'Else - ' CveSeccionAlmacen = -1 - 'End If CveSeccionAlmacen = -3 If Not ObjInventario.AddMovimientoDetalle(CveMovimientoSalida, CantidadPendiente.ToString().ToDecimal, Dr("CveUM").ToString().ToEntero(), Dr("CvePS").ToString().ToEntero(), 0, Serie:=Dr1("Serie").ToString(), CveVentaDetalle:=Dr("CveVentaDetalle").ToString().ToEntero(), FechaCaducidad:=If(CBool(Dr("AplicaCaducidad")), Dr("FechaCaducidad").ToString().ToDate, MinFecha), Lote:=If(CBool(Dr("AplicaLote")), Dr("Lote").ToString(), "-1"), CveSeccionAlmacen:=CveSeccionAlmacen) Then From 9c66c816c609368098e95dd7158d3bca001cd57a Mon Sep 17 00:00:00 2001 From: rrene Date: Thu, 25 Aug 2022 19:25:34 -0700 Subject: [PATCH 28/54] =?UTF-8?q?--remisi=C3=B3n?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- OC/OC.aspx.vb | 46 +++++++++++++--------------------------------- 1 file changed, 13 insertions(+), 33 deletions(-) diff --git a/OC/OC.aspx.vb b/OC/OC.aspx.vb index 09e76310d..224a1c223 100644 --- a/OC/OC.aspx.vb +++ b/OC/OC.aspx.vb @@ -820,12 +820,11 @@ Partial Class OC_OC DdlSubProyectoContrato.DataBind() DdlSubProyectoContrato.Items.Insert(0, New ListItem("Seleccione", "-1")) - - If UsuarioActual.Empresa.Funcionalidad(590).ToString.ToEntero = 1 Then + If UsuarioActual.Empresa.Funcionalidad(590) = "1" Then DVCultivosCuadro.Visible = True DdlSubProyecto.AutoPostBack = True - DdlCultivosCuadro.DataSource = GlobalDTCultivosCuadro(UsuarioActual.CveEmpresa).FiltraParametros($"CveSubProyecto = {DdlSubProyecto.SelectedValue} AND Estatus =1") + DdlCultivosCuadro.DataSource = GlobalDTCultivosCuadro(UsuarioActual.CveEmpresa).FiltraParametros($"CveSubProyecto = {DdlSubProyecto.SelectedValue} And Estatus =1") DdlCultivosCuadro.DataBind() DdlCultivosCuadro.Items.Insert(0, New ListItem("Seleccione uno", "-1")) @@ -896,17 +895,17 @@ Partial Class OC_OC UPPDetalle.Update() PermisosPagina() - RegistraScript("$get('HdnWidth').value = $('#C_Tab_TabC_DivConceptosContenido').width();") + RegistraScript("$Get('HdnWidth').value = $('#C_Tab_TabC_DivConceptosContenido').width();") 'NO MOSTRAR LA OPCION DE ENTREGA DIRECTA (ECONOLLANTAS) If UsuarioActual.CveEmpresa = 141 Then - DivEntregaDirecta.Visible = False - ChkEntregaDirecta.Enabled = False - ChkEntregaDirecta.Checked = False - End If + DivEntregaDirecta.Visible = False + ChkEntregaDirecta.Enabled = False + ChkEntregaDirecta.Checked = False + End If - End If - MostrarUsuarioAsignado() + End If + MostrarUsuarioAsignado() Me.Form.DefaultButton = "" End Sub @@ -8728,35 +8727,20 @@ Partial Class OC_OC - Private Function ValidaNumRemision(NumRemision As String, TipoOC As String, CveProveedor As Integer, Optional OcTranasaccion As System.Data.SqlClient.SqlTransaction = Nothing, Optional CveOrdenCompraValida As Integer = -1) As Boolean + Private Function ValidaNumRemision(NumRemision As String, TipoOC As String, CveProveedor As Integer, Optional OcTransaccion As SqlClient.SqlTransaction = Nothing, Optional CveOrdenCompraValida As Integer = -1) As Boolean Dim NumRemisionValida As Boolean = False - - If NumRemision.Trim.Length > 0 Then - If UsuarioActual.Empresa.Funcionalidad(590).ToString.ToEntero = 1 AndAlso UsuarioActual.CveRol = 1 Then - - Dim ObjOC As ClsOC - - If OcTranasaccion IsNot Nothing Then - ObjOC = New ClsOC(OcTranasaccion) - Else - ObjOC = New ClsOC - End If - + If UsuarioActual.Empresa.Funcionalidad(590) = "1" AndAlso UsuarioActual.CveRol = 1 Then + Dim ObjOC As New ClsOC(OcTransaccion) If ObjOC.GetVerificaNumRemision(CveProveedor, TipoOC, NumRemision, UsuarioActual.CveEmpresa, CveOrdenCompraValida) Then - If ObjOC.DtResultados.Rows.Count > 0 Then - Alert($"La remision ya se encuentra asiganada a la { If(TipoOC = "OC", "Orden de compra", "Requisición")} {ObjOC.DtResultados.Rows(0)("Folio").ToString() }", TipoMensaje.MsgAdvertencia) + Alert($"La remision ya se encuentra asignada a la { If(TipoOC = "OC", "Orden de compra", "Requisición")} {ObjOC.DtResultados.Rows(0)("Folio").ToString() }", TipoMensaje.MsgAdvertencia) Else NumRemisionValida = True End If - End If - - - Else NumRemisionValida = True End If @@ -8764,10 +8748,6 @@ Partial Class OC_OC NumRemisionValida = True End If - - - - Return NumRemisionValida End Function From 547a4ff1409055bf1dfead14cdf84cf347fd0faa Mon Sep 17 00:00:00 2001 From: rrene Date: Thu, 25 Aug 2022 19:28:57 -0700 Subject: [PATCH 29/54] -- mejora AC --- Bancos/ProveedoresAbonar.aspx.vb | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Bancos/ProveedoresAbonar.aspx.vb b/Bancos/ProveedoresAbonar.aspx.vb index 09722705d..c139578d4 100644 --- a/Bancos/ProveedoresAbonar.aspx.vb +++ b/Bancos/ProveedoresAbonar.aspx.vb @@ -488,7 +488,7 @@ Partial Class Bancos_ProveedoresAbonar If e.Row.DBCampo("Saldo").ToDouble < 0 Then e.Row.Cells(7).ForeColor = Drawing.Color.Red If e.Row.DBCampo("DiasVencidos").ToDouble > 0 AndAlso CType(sender, GridView).ID = "GvCxC" Then e.Row.Cells(4).ForeColor = Drawing.Color.Red - If e.Row.DBCampo("Original").ToDouble = 0 Then DirectCast(e.Row.FindControl("LtlSaldoOriginal"), Literal).Text = "" + If e.Row.DBCampo("TotalOriginal").ToDouble = 0 Then DirectCast(e.Row.FindControl("LtlSaldoOriginal"), Literal).Text = "" If e.Row.DBCampo("Abonado").ToDouble = 0 Then DirectCast(e.Row.FindControl("LtlAbonado"), Literal).Text = "" If e.Row.DBCampo("Saldo").ToDouble = 0 Then DirectCast(e.Row.FindControl("LtlSaldo"), Literal).Text = "" @@ -895,7 +895,7 @@ Partial Class Bancos_ProveedoresAbonar MsgError = "No se pudo insertar la póliza" End If - If CveMoneda = 2 AndAlso UsaComplementariaBancos Then + If Pago.CveMonedaPago = 2 AndAlso UsaComplementariaBancos Then If MsgError = "" AndAlso Not ObjMov.AddPrePolizasDetalle(CvePrePoliza, True, Pago.ImportePago, (Pago.ImportePago * Pago.TCPago - Pago.ImportePago).RoundSQL, 204, Referencia, ConceptoMovimiento, IdCuentaBancariaComplementaria, CveIE:=CveIE, CveProveedor:=CveProveedor, ImporteME:=Pago.ImportePago, TipoCambio:=Pago.TCPago, CveSubProyecto:=CveSubProyecto) Then MsgError = "No se pudo insertar la póliza" End If @@ -1005,7 +1005,7 @@ Partial Class Bancos_ProveedoresAbonar For Each gvr As GridViewRow In GvCxP.Rows If gvr.FCCheckBox("Chk").Checked Then 'obtengo su poliza para ver que presupuestos afecto - If gvr.DataKey("Original").ToDouble > 0 Then PorcentajePago = gvr.FCTextBox("TxtAbonar").Text.ToDouble / gvr.DataKey("Original").ToDouble Else PorcentajePago = 1 + If gvr.DataKey("TotalOriginal").ToDouble > 0 Then PorcentajePago = gvr.FCTextBox("TxtAbonar").Text.ToDouble / gvr.DataKey("TotalOriginal").ToDouble Else PorcentajePago = 1 If ObjComp.GetPresupuestosCompras(gvr.DataKey("CveCompra").ToEntero) Then dtAC.Merge(ObjComp.DtResultados) @@ -1894,7 +1894,7 @@ Partial Class Bancos_ProveedoresAbonar End If End If - Dim PorcentajePago As Decimal = gr.DataKey("Saldo").ToDecimal / gr.DataKey("Original").ToDecimal + Dim PorcentajePago As Decimal = gr.DataKey("Saldo").ToDecimal / gr.DataKey("TotalOriginal").ToDecimal If MsgError = "" AndAlso gr.DataKey("IVA").ToDecimal > 0 Then Dim PorcentajeImpuesto As Decimal = gr.DataKey("PorcentajeIVA").ToDecimal From 594347d3ded298a8fcb08aab12ab50f23de1250b Mon Sep 17 00:00:00 2001 From: rrene Date: Thu, 25 Aug 2022 19:29:42 -0700 Subject: [PATCH 30/54] - --- Bancos/DepositosCaja.aspx.vb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Bancos/DepositosCaja.aspx.vb b/Bancos/DepositosCaja.aspx.vb index 97b6df623..069a5dd6c 100644 --- a/Bancos/DepositosCaja.aspx.vb +++ b/Bancos/DepositosCaja.aspx.vb @@ -314,7 +314,7 @@ Partial Class Bancos_DepositosCaja CveIEDestino = ObjBancos.AddBancos_IE(DdlCajaChica.SelectedValue.ToEntero, 2, Fecha, FolioIE.ToString, String.Format("Depósito Bancario: {0}", SerieFolio), Importe, CveMoneda, 1, TxtObservaciones.Text, "", False, False, -1, NuevaCvePrePoliza, "-1", UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa) - If Not ObjContabilidad.AddPrePolizasDetalle(NuevaCvePrePoliza, True, Importe, SerieFolio, 30, String.Format("Depósito Bancario: {0}", SerieFolio), Fecha, IdCuentaBancariaDestino, -1, CveClasificacion:=CveClasificacion, CveSubProyecto:=CveSubProyecto, CveVenta:=CveVenta, CveIE:=CveIEDestino, ImporteMX:=Importe * TipoCambio, CveCuenta:=CveCuentaBancariaDestino) Then + If Not ObjContabilidad.AddPrePolizasDetalle(NuevaCvePrePoliza, True, Importe, SerieFolio, 30, String.Format("Depósito Bancario: {0}", SerieFolio), Fecha, IdCuentaBancariaDestino, -1, CveClasificacion:=CveClasificacion, CveSubProyecto:=CveSubProyecto, CveVenta:=CveVenta, CveIE:=CveIEDestino, ImporteMX:=Importe * TipoCambio) Then OcurrioError = True Exit For End If From e6cdb2065bed96e85f4eddb966775a67510caa1f Mon Sep 17 00:00:00 2001 From: rrene Date: Thu, 25 Aug 2022 19:30:14 -0700 Subject: [PATCH 31/54] - desactivar excedente --- Compras/ReembolsosComprobaciones.aspx.vb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Compras/ReembolsosComprobaciones.aspx.vb b/Compras/ReembolsosComprobaciones.aspx.vb index a682a10fd..3db91de51 100644 --- a/Compras/ReembolsosComprobaciones.aspx.vb +++ b/Compras/ReembolsosComprobaciones.aspx.vb @@ -376,7 +376,7 @@ Partial Class Compras_ReembolsosComprobaciones ChkOtrosIngresosCheque.Visible = True - If UsuarioActual.TienePermisoProceso(113) Then TrChequeExcedente.Visible = True + 'If UsuarioActual.TienePermisoProceso(113) Then TrChequeExcedente.Visible = True CargaDatos(DDlCheques.SelectedValue.ToEntero) @@ -392,7 +392,7 @@ Partial Class Compras_ReembolsosComprobaciones ChkOtrosIngresosCheque.Visible = False - If UsuarioActual.TienePermisoProceso(113) Then TableExpedirCheque.Visible = True + 'If UsuarioActual.TienePermisoProceso(113) Then TableExpedirCheque.Visible = True LimpiaDatos() From ddc0d3766016e8ac13a07ae3c8f3f0d40ab4b6d4 Mon Sep 17 00:00:00 2001 From: rrene Date: Thu, 25 Aug 2022 19:30:56 -0700 Subject: [PATCH 32/54] -- mostrar bdh cuentas de caja chica --- Ventas/ClientesAbonar.aspx.vb | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/Ventas/ClientesAbonar.aspx.vb b/Ventas/ClientesAbonar.aspx.vb index d31a60e0f..3b5a20ef5 100644 --- a/Ventas/ClientesAbonar.aspx.vb +++ b/Ventas/ClientesAbonar.aspx.vb @@ -319,7 +319,10 @@ Partial Class Ventas_ClientesAbonar Private Sub CargaCuentas() DdlCuenta.Items.Clear() - Dim dt As DataTable = GlobalDTBancosCuentas(UsuarioActual.CveUsuario, CveEmpresa:=UsuarioActual.CveEmpresa, CveTipoCuenta:=2) + Dim CveTipoCuenta As Integer = 2 + If UsuarioActual.Empresa.Funcionalidad(531) = "1" Then CveTipoCuenta = -1 'que se muestren todas, para empresa acumuladores + + Dim dt As DataTable = GlobalDTBancosCuentas(UsuarioActual.CveUsuario, CveEmpresa:=UsuarioActual.CveEmpresa, CveTipoCuenta:=CveTipoCuenta) If ChkPagarPesos.Checked Then dt = dt.FiltraParametros(String.Format("CveMoneda = {0}", 1)) From f6af3cab6c2efb36320e48f31eb78f19c7172288 Mon Sep 17 00:00:00 2001 From: rrene Date: Thu, 25 Aug 2022 19:31:44 -0700 Subject: [PATCH 33/54] -- mejoras comercio exterior --- Ventas/Ventas.aspx.vb | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Ventas/Ventas.aspx.vb b/Ventas/Ventas.aspx.vb index c05bf1b78..e2f241f6b 100644 --- a/Ventas/Ventas.aspx.vb +++ b/Ventas/Ventas.aspx.vb @@ -5148,7 +5148,6 @@ Partial Class Ventas 'ESTATUS FACTURA If Not (CveRemision > 0 Or CveCotizacion > 0) Then CveEstatus = DbRowVenta("CveEstatusFactura").ToString().ToEntero() - End If TxtTipoCambio.Text = DbRowVenta("TipoCambio").ToString() @@ -6369,6 +6368,8 @@ Partial Class Ventas TxtComExtCalle.Text = ObjCliente.Direccion TxtComExtNumero.Text = ObjCliente.NoExt TxtComExtCP.Text = ObjCliente.CP + 'en comercio exterior como regla de timbrado se utiliza el TC del día anterior + TxtTipoCambio.Text = GlobalTipoCambio(TxtFecha.Text.ToDate.AddDays(-1)).ToString() End If From af2e7555d48bcde9204dc63f88c0c5f4ca2ae729 Mon Sep 17 00:00:00 2001 From: rrene Date: Thu, 25 Aug 2022 19:55:43 -0700 Subject: [PATCH 34/54] =?UTF-8?q?--=20retenci=C3=B3n=20isr,=20al=20pago,?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- App_Code/ClsPaginas.vb | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/App_Code/ClsPaginas.vb b/App_Code/ClsPaginas.vb index 5e87d8307..1e743cf35 100644 --- a/App_Code/ClsPaginas.vb +++ b/App_Code/ClsPaginas.vb @@ -9470,14 +9470,18 @@ Public Class ClsPaginas ImporteMovimiento = (PorcentajePago * CompraActual.RetISR).RoundSQL ImporteMN = (ImporteMovimiento * CompraActual.TC).RoundSQL If CompraActual.CveMoneda > 1 Then ImporteME = ImporteMovimiento + Dim ContabilizableISR As Boolean = False + If UsuarioActual.CveEmpresa = 140 Then + ContabilizableISR = True + End If Dim Ret As ConceptosRetenciones = CompraActual.ConceptoPrePolizaRetISR - If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, ImporteMovimiento, ImporteMN, Ret.CveConceptoxAcreditar, CompraActual.SerieFolio, Concepto, Ret.IdCtaContablexAcreditar, CveCompra:=CompraActual.CveCompra, CveProveedor:=CompraActual.CveProveedor, CveIE:=Pago.CveIE, CvePersonal:=Pago.CvePersonal, TipoCambioPago:=Pago.TCPago, ImporteME:=ImporteME) Then ErrorMovtos = True + If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, ImporteMovimiento, ImporteMN, Ret.CveConceptoxAcreditar, CompraActual.SerieFolio, Concepto, Ret.IdCtaContablexAcreditar, CveCompra:=CompraActual.CveCompra, CveProveedor:=CompraActual.CveProveedor, CveIE:=Pago.CveIE, CvePersonal:=Pago.CvePersonal, TipoCambioPago:=Pago.TCPago, ImporteME:=ImporteME, Contabilizable:=ContabilizableISR) Then ErrorMovtos = True 'si tiene funcionalidad para tomar el TC de pago. se recalcula el importe If FuncionalidadFluctuacionImpuestos Then ImporteMN = (ImporteMovimiento * Pago.TCPago).RoundSQL - If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, ImporteMovimiento, ImporteMN, Ret.CveConceptoAcreditable, CompraActual.SerieFolio, Concepto, Ret.IdCtaContableAcreditable, CveCompra:=CompraActual.CveCompra, CveProveedor:=CompraActual.CveProveedor, CveIE:=Pago.CveIE, CvePersonal:=Pago.CvePersonal, TipoCambioPago:=Pago.TCPago, ImporteME:=ImporteME) Then ErrorMovtos = True + If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, ImporteMovimiento, ImporteMN, Ret.CveConceptoAcreditable, CompraActual.SerieFolio, Concepto, Ret.IdCtaContableAcreditable, CveCompra:=CompraActual.CveCompra, CveProveedor:=CompraActual.CveProveedor, CveIE:=Pago.CveIE, CvePersonal:=Pago.CvePersonal, TipoCambioPago:=Pago.TCPago, ImporteME:=ImporteME, Contabilizable:=ContabilizableISR) Then ErrorMovtos = True End If From fc3b03eeb91ade44877837aef55086eb2b1a888b Mon Sep 17 00:00:00 2001 From: rrene Date: Thu, 25 Aug 2022 19:56:50 -0700 Subject: [PATCH 35/54] =?UTF-8?q?--=20RSCO=20-=20un=20a=C3=B1o?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Inicio.aspx.vb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Inicio.aspx.vb b/Inicio.aspx.vb index 90e21f9fc..971d81b2e 100644 --- a/Inicio.aspx.vb +++ b/Inicio.aspx.vb @@ -357,7 +357,7 @@ Partial Class Inicio Dim ObjInventarios As New ClsInventarios - If ObjInventarios.RepCompuestosVigencia(-1, -1, MinFecha, Now.AddDays(30), 1, UsuarioActual.CveEmpresa, -1, UsuarioActual.CveUsuario, True) Then + If ObjInventarios.RepCompuestosVigencia(-1, -1, MinFecha, Now.AddYears(1), 1, UsuarioActual.CveEmpresa, -1, UsuarioActual.CveUsuario, True) Then If ObjInventarios.DtResultados.Rows.Count > 0 Then GvModalRSCOPorCaducar.DataSource = ObjInventarios.DtResultados From 5b981eb685fe758f012c89418de748d926306b67 Mon Sep 17 00:00:00 2001 From: Jonathan Alexis Perez Morales Date: Fri, 26 Aug 2022 18:30:03 -0700 Subject: [PATCH 36/54] =?UTF-8?q?Cambios=20en=20formato=20de=20pagar=C3=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Ventas/Clientes.aspx.vb | 991 ++++++++++++++++++++-------------------- 1 file changed, 508 insertions(+), 483 deletions(-) diff --git a/Ventas/Clientes.aspx.vb b/Ventas/Clientes.aspx.vb index c126a59cd..7a7a9a74b 100644 --- a/Ventas/Clientes.aspx.vb +++ b/Ventas/Clientes.aspx.vb @@ -12,9 +12,9 @@ Imports Newtonsoft.Json Imports Newtonsoft.Json.Linq Partial Class Clientes - Inherits ClsPaginas - - 'Configuración + Inherits ClsPaginas + + 'Configuración #Region "P R O P I E D A D E S" Private Const NumeroDecimales As Integer = 2 Private CveVentaDeduccion As Integer @@ -499,10 +499,10 @@ Partial Class Clientes Set(value As String) ViewState("linkDescargaPagare") = value End Set - End Property - + End Property + #End Region - + #Region "Documentacion" Private Property DTDocumentacion As DataTable Get @@ -613,21 +613,21 @@ Partial Class Clientes Set(value As String) ViewState("AdjuntoDocumentacion") = value End Set - End Property - 'Private ReadOnly Property CvePersonal As Integer - ' Get - ' If ViewState("CvePersonal") Is Nothing Then - ' Return -1 - ' Else - ' Return ViewState("CvePersonal").ToString().Toentero() - ' End If - ' End Get - 'End Property - + End Property + 'Private ReadOnly Property CvePersonal As Integer + ' Get + ' If ViewState("CvePersonal") Is Nothing Then + ' Return -1 + ' Else + ' Return ViewState("CvePersonal").ToString().Toentero() + ' End If + ' End Get + 'End Property + #End Region - - - + + + #Region " A C U M U L A D O R E S" Property CveVentaNota As Integer Get @@ -667,10 +667,10 @@ Partial Class Clientes Set(value As String) ViewState("SerieNotaAcumulador") = 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 @@ -751,10 +751,10 @@ Partial Class Clientes If UsuarioActual.Empresa.Funcionalidad(350).Contiene("1", "2") Then divRegimen.Visible = True - End If - - If UsuarioActual.CveEmpresa.Contiene(1) Or UsuarioActual.Empresa.Funcionalidad(531) = "1" Then - DivRepresentanteLegal.Visible = True + End If + + If UsuarioActual.CveEmpresa.Contiene(1) Or UsuarioActual.Empresa.Funcionalidad(531) = "1" Then + DivRepresentanteLegal.Visible = True End If If Request("CveCliente") IsNot Nothing AndAlso IsNumeric(Request("CveCliente")) AndAlso Request("CveCliente").ToEntero() > 0 Then @@ -924,10 +924,10 @@ Partial Class Clientes ChkPermiso5.Enabled = False ChkPermiso6.Enabled = False - End Sub - + End Sub + #Region " PERMISOS PAGINAS " - + Private Sub MostrarTxtDireccionesClienteEnvio() If UsuarioActual.CveEmpresa.Contiene(72, 80, 146) Then @@ -964,18 +964,18 @@ Partial Class Clientes If Not ChkEsDistribuidor.Checked Then BtnGuardar.Visible = PermiteEditar() End If - End Sub - - + End Sub + + #End Region - - + + #Region "C A R G A S" - - - - - + + + + + Private Sub CreaDtPago() DtPagos = New DataTable DtPagos.Columns.Add("CveTipoMovimiento", GetType(String)) @@ -1093,13 +1093,13 @@ Partial Class Clientes End Sub - Private Sub CargaSubProyectosSuscursales() - - - CargarCentrosDeCosto(Nothing, DdlSubProyectoClienteSucursal, Nothing, LblSubProyectoClienteSucursal) - - - + Private Sub CargaSubProyectosSuscursales() + + + CargarCentrosDeCosto(Nothing, DdlSubProyectoClienteSucursal, Nothing, LblSubProyectoClienteSucursal) + + + End Sub @@ -1169,9 +1169,9 @@ Partial Class Clientes Select Case HdnCuenta.Value Case "1" - CargaDdlCuentasContables(DdlCtaContableClientes, 1)'UsuarioActual.Empresa.Funcionalidad(246).Toentero() + CargaDdlCuentasContables(DdlCtaContableClientes, 1)'UsuarioActual.Empresa.Funcionalidad(246).Toentero() Case "2" - CargaDdlCuentasContables(DdlCtaContableAnticipos, 1)' UsuarioActual.Empresa.Funcionalidad(237).Toentero() + CargaDdlCuentasContables(DdlCtaContableAnticipos, 1)' UsuarioActual.Empresa.Funcionalidad(237).Toentero() Case "3" CargaDdlCuentasContables(DdlCtaContableRetIVA, -1) Case "4" @@ -1179,11 +1179,11 @@ Partial Class Clientes Case "5" CargaDdlCuentasContables(DdlCtaContableFondoGarantia, -1) Case "6" - CargaDdlCuentasContables(DdlCtaContableCompClientes, 1)'UsuarioActual.Empresa.Funcionalidad(248).Toentero() + CargaDdlCuentasContables(DdlCtaContableCompClientes, 1)'UsuarioActual.Empresa.Funcionalidad(248).Toentero() Case "7" CargaDdlCuentasContables(DdlCtaContableCompAnticipos, -1) Case "8" - CargaDdlCuentasContables(DdlMonedaExtranjeraClientes, 1)'UsuarioActual.Empresa.Funcionalidad(247).Toentero() + CargaDdlCuentasContables(DdlMonedaExtranjeraClientes, 1)'UsuarioActual.Empresa.Funcionalidad(247).Toentero() Case "9" CargaDdlCuentasContables(DdlMonedaExtranjeraAnticipos, 1) 'UsuarioActual.Empresa.Funcionalidad(542).Toentero() End Select @@ -1460,14 +1460,14 @@ Partial Class Clientes ' CargaDocs() CargaCombos() CargaDocumentacionCliente() - CargaSubProyectosSuscursales() - 'CargaMetodosPago33() - 'CargaFormaPago33() - 'CargaComboCFDI() - 'CargarPagosNoBancarios() - - - + CargaSubProyectosSuscursales() + 'CargaMetodosPago33() + 'CargaFormaPago33() + 'CargaComboCFDI() + 'CargarPagosNoBancarios() + + + If UsuarioActual.Empresa.Funcionalidad(531) = "1" Then LnkPorcentajeMarcas.Visible = True LnkPorcentajePrecios.Visible = True @@ -1874,11 +1874,11 @@ Partial Class Clientes End If - RdTipoPersona.SelectedValue = If(ObjClientes.TipoPersona, "1", "0") - RdTipoPersona_SelectedIndexChanged(Nothing, Nothing) - - TxtRepresentanteLegal.Text = ObjClientes.RepresentanteLegal - + RdTipoPersona.SelectedValue = If(ObjClientes.TipoPersona, "1", "0") + RdTipoPersona_SelectedIndexChanged(Nothing, Nothing) + + TxtRepresentanteLegal.Text = ObjClientes.RepresentanteLegal + End If UpActivacionPortal.Update() UpModalPersonaFisica.Update() @@ -2079,31 +2079,31 @@ Partial Class Clientes DdlSucursalFormaPago33.DataSource = GlobalDTVtaFormaPago DdlSucursalFormaPago33.DataBind() End Sub - Private Sub CargaComboCFDI() - Dim RegimenFiscalCliente = DdlRegimenFiscal.SelectedValue.ToString() - If Not UsuarioActual.Empresa.Funcionalidad(350).Contiene("1", "2") Then - RegimenFiscalCliente = "-1" - End If + Private Sub CargaComboCFDI() + Dim RegimenFiscalCliente = DdlRegimenFiscal.SelectedValue.ToString() + If Not UsuarioActual.Empresa.Funcionalidad(350).Contiene("1", "2") Then + RegimenFiscalCliente = "-1" + End If DdlUsoCFDI.Items.Clear() - If UsuarioActual.Empresa.Funcionalidad(350) = "1" Then - Dim EsPersonaMoral As Boolean = (RdTipoPersona.SelectedValue = "1") - DdlUsoCFDI.DataSource = GlobalDTSATUsosCFDI(If(Not EsPersonaMoral, 1, 0), RegimenFiscalReceptor:=RegimenFiscalCliente) - Else - DdlUsoCFDI.DataSource = GlobalDTSATUsosCFDI(UsuarioActual.Empresa.EsPersonaFisica, RegimenFiscalReceptor:=RegimenFiscalCliente) - End If - + If UsuarioActual.Empresa.Funcionalidad(350) = "1" Then + Dim EsPersonaMoral As Boolean = (RdTipoPersona.SelectedValue = "1") + DdlUsoCFDI.DataSource = GlobalDTSATUsosCFDI(If(Not EsPersonaMoral, 1, 0), RegimenFiscalReceptor:=RegimenFiscalCliente) + Else + DdlUsoCFDI.DataSource = GlobalDTSATUsosCFDI(UsuarioActual.Empresa.EsPersonaFisica, RegimenFiscalReceptor:=RegimenFiscalCliente) + End If + DdlUsoCFDI.DataBind() DdlUsoCFDI.Items.Insert(0, New ListItem("Seleccione", "-1")) DdlSucursalUsoCFDI.Items.Clear() DdlSucursalUsoCFDI.DataSource = GlobalDTSATUsosCFDI(UsuarioActual.Empresa.EsPersonaFisica, RegimenFiscalReceptor:=RegimenFiscalCliente) DdlSucursalUsoCFDI.DataBind() - End Sub + End Sub #End Region - + #Region "V E R M Á S" - + Protected Sub BtnVerMasVentas_Click(sender As Object, e As EventArgs) If BtnVerMasVentas.Text = "Ver Más" Then CargaHistorial(-1) @@ -2133,12 +2133,12 @@ Partial Class Clientes CargaBancos(51) BtnVerMasBancos.Text = "Ver Más" End If - End Sub - + End Sub + #End Region - + #Region "B A N C O S" - 'CuentasxCobrar Activas (Pagos Recibidos) + 'CuentasxCobrar Activas (Pagos Recibidos) Private Sub CargaBancos(Optional SelectTop As Integer = 51, Optional CveClienteSucursal As Integer = -1) Dim ObjMovtos As New ClsMovimientos() 'CxC Activas @@ -2201,9 +2201,9 @@ Partial Class Clientes TxtParaMail.Text = TxtCobranzaCorreo.Text UpSendMail.Update() RegistraScript("$('#ModalDivMail').modal('show');") - End Sub + End Sub #End Region - + #Region "B T N ´ S" Protected Sub BtnEliminar_Click(sender As Object, e As System.EventArgs) Handles BtnEliminar.Click Dim ObjClientes As New ClsClientes() @@ -2487,34 +2487,34 @@ Partial Class Clientes If UsuarioActual.Empresa.Funcionalidad(350).Contiene("1", "2") Then - If TxtRFC.Text.ToUpper.Contiene("XAXX010101000", "XEXX010101000") AndAlso DdlRegimenFiscal.SelectedValue <> "11" Then - - Alert("El Regimen fiscal del cliente debe ser '616 - Sin obligaciones fiscales' cuando se utiliza el RFC genérico.", TipoMensaje.MsgAdvertencia) - Exit Sub - - End If - - 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) - Exit Sub - - End If - - - End If - - 'CargaSucursal() - 'If UsuarioActual.TienePermisoProceso(170) AndAlso TxtCodigo.Text.Trim = "" Then - ' Alert("Es necesario ingresar un Código", TipoMensaje.MsgAdvertencia) - ' Exit Sub - 'End If - - 'Dim rowcodigo As DataTable = GlobalDTCliente.FiltraParametros(String.Format("Codigo='{0}' AND CveEmpresa={1} ", TxtCodigo.Text.Trim, UsuarioActual.CveEmpresa)) - 'If (Not IsNothing(rowcodigo)) AndAlso (rowcodigo.Rows.Count > 0) AndAlso (rowcodigo.Rows(0)("CveCliente").ToString().Toentero() <> CveCliente) Then - ' Alert(String.Format("ya existe un Cliente Con este Codigo '{0}'", TxtCodigo.Text.Trim), TipoMensaje.MsgAdvertencia) - ' Exit Sub - 'End If + If TxtRFC.Text.ToUpper.Contiene("XAXX010101000", "XEXX010101000") AndAlso DdlRegimenFiscal.SelectedValue <> "11" Then + + Alert("El Regimen fiscal del cliente debe ser '616 - Sin obligaciones fiscales' cuando se utiliza el RFC genérico.", TipoMensaje.MsgAdvertencia) + Exit Sub + + End If + + 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) + Exit Sub + + End If + + + End If + + 'CargaSucursal() + 'If UsuarioActual.TienePermisoProceso(170) AndAlso TxtCodigo.Text.Trim = "" Then + ' Alert("Es necesario ingresar un Código", TipoMensaje.MsgAdvertencia) + ' Exit Sub + 'End If + + 'Dim rowcodigo As DataTable = GlobalDTCliente.FiltraParametros(String.Format("Codigo='{0}' AND CveEmpresa={1} ", TxtCodigo.Text.Trim, UsuarioActual.CveEmpresa)) + 'If (Not IsNothing(rowcodigo)) AndAlso (rowcodigo.Rows.Count > 0) AndAlso (rowcodigo.Rows(0)("CveCliente").ToString().Toentero() <> CveCliente) Then + ' Alert(String.Format("ya existe un Cliente Con este Codigo '{0}'", TxtCodigo.Text.Trim), TipoMensaje.MsgAdvertencia) + ' Exit Sub + 'End If Dim ObjClientes As New ClsClientes() Dim objDoc As New ClsEdocumentacion(ObjClientes.IniciaTransacSQL()) Dim MsgCuentaContable As String = "" @@ -2545,85 +2545,85 @@ Partial Class Clientes Dim errorContPaq As Boolean = False Dim IdContPaqi As Integer = 0 - Dim CodigoPersona As Integer = 0 - - + Dim CodigoPersona As Integer = 0 + + #Region "comentado" - 'If UsuarioActual.Empresa.Funcionalidad(522).ToString() = "1" Then - - ' Dim ObjContPaqi As New ClsContPAQi(UsuarioActual.Empresa) - - ' If ObjContPaqi.GetPersona(TxtRFC.Text) Then - - ' If ObjContPaqi.DtResultados.Rows.Count > 0 Then - - ' IdContPaqi = ObjContPaqi.DtResultados.Rows(0)("Id").ToString().Toentero() - ' CodigoPersona = ObjContPaqi.DtResultados.Rows(0)("Codigo").ToString().Toentero() - - ' Dim Cont_EsProveedor As Integer = If(Boolean.Parse(ObjContPaqi.DtResultados.Rows(0)("EsProveedor").ToString()), 1, 0) - ' Dim Cont_Nombre As String = ObjContPaqi.DtResultados(0)("Nombre").ToString() - ' Dim Cont_RFC As String = ObjContPaqi.DtResultados(0)("RFC").ToString() - - ' If ObjContPaqi.UpdatePersona(IdContPaqi, Cont_Nombre, Cont_RFC, 1, Cont_EsProveedor) Then - ' errorContPaq = False - ' Else - ' errorContPaq = True - ' End If - - ' Else - ' If ObjContPaqi.AddPersona(TxtNombre.Text.Trim, TxtRFC.Text.Trim, 1, 0) Then - - ' IdContPaqi = ObjContPaqi.DtResultados.Rows(0)("IdContPaqiPersona").ToString().Toentero() - ' CodigoPersona = ObjContPaqi.DtResultados.Rows(0)("Codigo").ToString().Toentero() - ' errorContPaq = False - ' Else - ' errorContPaq = True - ' End If - ' End If - ' End If - - - ' If Not errorContPaq Then - ' Dim IdContPaqiCliente As Integer - - ' If ObjContPaqi.GetCliente(-1, CodigoPersona) Then - - ' If ObjContPaqi.DtResultados.Rows.Count > 0 Then - - ' IdContPaqiCliente = ObjContPaqi.DtResultados.Rows(0)("IdContPaqiClient").ToString().Toentero() - - ' If ObjContPaqi.UpdateCliente(IdContPaqiCliente, CodigoPersona, CodigoPersona, "", "") Then - ' errorContPaq = False - ' Else - ' errorContPaq = True - ' End If - ' Else - ' If ObjContPaqi.AddCliente(CodigoPersona, CodigoPersona, "", "") Then - ' errorContPaq = False - ' Else - ' errorContPaq = True - ' End If - ' End If - ' Else - ' errorContPaq = True - ' End If - ' End If - - - ' If Not errorContPaq Then - ' ObjContPaqi.Commit() - ' ObjContPaqi.Dispose() - ' Else - ' ObjContPaqi.RollBack() - ' ObjContPaqi.Dispose() - ' Alert("Se presento un error al guardar en ContPAQi", TipoMensaje.MsgError) - ' Exit Sub - ' End If - - - 'End If + 'If UsuarioActual.Empresa.Funcionalidad(522).ToString() = "1" Then + + ' Dim ObjContPaqi As New ClsContPAQi(UsuarioActual.Empresa) + + ' If ObjContPaqi.GetPersona(TxtRFC.Text) Then + + ' If ObjContPaqi.DtResultados.Rows.Count > 0 Then + + ' IdContPaqi = ObjContPaqi.DtResultados.Rows(0)("Id").ToString().Toentero() + ' CodigoPersona = ObjContPaqi.DtResultados.Rows(0)("Codigo").ToString().Toentero() + + ' Dim Cont_EsProveedor As Integer = If(Boolean.Parse(ObjContPaqi.DtResultados.Rows(0)("EsProveedor").ToString()), 1, 0) + ' Dim Cont_Nombre As String = ObjContPaqi.DtResultados(0)("Nombre").ToString() + ' Dim Cont_RFC As String = ObjContPaqi.DtResultados(0)("RFC").ToString() + + ' If ObjContPaqi.UpdatePersona(IdContPaqi, Cont_Nombre, Cont_RFC, 1, Cont_EsProveedor) Then + ' errorContPaq = False + ' Else + ' errorContPaq = True + ' End If + + ' Else + ' If ObjContPaqi.AddPersona(TxtNombre.Text.Trim, TxtRFC.Text.Trim, 1, 0) Then + + ' IdContPaqi = ObjContPaqi.DtResultados.Rows(0)("IdContPaqiPersona").ToString().Toentero() + ' CodigoPersona = ObjContPaqi.DtResultados.Rows(0)("Codigo").ToString().Toentero() + ' errorContPaq = False + ' Else + ' errorContPaq = True + ' End If + ' End If + ' End If + + + ' If Not errorContPaq Then + ' Dim IdContPaqiCliente As Integer + + ' If ObjContPaqi.GetCliente(-1, CodigoPersona) Then + + ' If ObjContPaqi.DtResultados.Rows.Count > 0 Then + + ' IdContPaqiCliente = ObjContPaqi.DtResultados.Rows(0)("IdContPaqiClient").ToString().Toentero() + + ' If ObjContPaqi.UpdateCliente(IdContPaqiCliente, CodigoPersona, CodigoPersona, "", "") Then + ' errorContPaq = False + ' Else + ' errorContPaq = True + ' End If + ' Else + ' If ObjContPaqi.AddCliente(CodigoPersona, CodigoPersona, "", "") Then + ' errorContPaq = False + ' Else + ' errorContPaq = True + ' End If + ' End If + ' Else + ' errorContPaq = True + ' End If + ' End If + + + ' If Not errorContPaq Then + ' ObjContPaqi.Commit() + ' ObjContPaqi.Dispose() + ' Else + ' ObjContPaqi.RollBack() + ' ObjContPaqi.Dispose() + ' Alert("Se presento un error al guardar en ContPAQi", TipoMensaje.MsgError) + ' Exit Sub + ' End If + + + 'End If #End Region - + Dim LT As String = If(HDLT.Value.ToDouble <> 0, HDLT.Value, "0") Dim LG As String = If(HDLG.Value.ToDouble <> 0, HDLG.Value, "0") @@ -2874,11 +2874,11 @@ Partial Class Clientes ObjClientes.Dispose() objDoc.Dispose() RecargaGlobal() - End Sub - + End Sub + #End Region - - + + #Region "G L O B L A L" Private Sub RecargaGlobal() 'Dim Hilo As New System.Threading.Thread(AddressOf GeneraGlobalDT) @@ -2892,10 +2892,10 @@ Partial Class Clientes ' Application("GlobalDTCliente") = Objclientes.DtResultados 'End If 'Objclientes.Dispose() - End Sub + End Sub #End Region - - + + #Region "G R I D V I E W S" Protected Sub GVHistorial_RowDataBound(sender As Object, e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles GVHistorial.RowDataBound If e.Row.RowType = DataControlRowType.DataRow Then @@ -3056,11 +3056,11 @@ Partial Class Clientes End If End If - End Sub + End Sub #End Region - + #Region "R H" - + Private Sub CargaPersonalAsignado() Dim ObjPersonal As New ClsRH If ObjPersonal.GetPersonal(-1, "-1", "-1", "-1", "-1", -1, -1, -1, -1, -1, -1, -1, -1, -1, CveCliente, "-1", -1, -1, -1, -1, -1, -1, "-1", "-1", "-1", "-1", UsuarioActual.CveEmpresa) Then @@ -3133,9 +3133,9 @@ Partial Class Clientes End If End If - End Sub + End Sub #End Region - + #Region "S U C U R S A L E S" Private Sub LbAgregarSucursal_Click(sender As Object, e As EventArgs) Handles LbAgregarSucursal.Click ChkEstatusSucursal.Checked = True @@ -3267,7 +3267,7 @@ Partial Class Clientes UpModalDivMapa.Update() - End Sub + End Sub #Region "G V S U C U R S A L E S" Protected Sub GvDatos_RowDataBound(sender As Object, e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles GVSucursales.RowDataBound @@ -3389,9 +3389,9 @@ Partial Class Clientes Else CargaGrid("", 0) End If - End Sub + End Sub #End Region - + #Region "G V U S U A R I O S P O R T A L" Protected Sub GvUsuariosPortal_RowCommand(sender As Object, e As GridViewCommandEventArgs) Handles GvUsuariosPortal.RowCommand If e.CommandName = "RestablecerContraseña" Then @@ -3543,9 +3543,9 @@ Partial Class Clientes CargaGrid("", 1) End If - End Sub + End Sub #End Region - + #Region "O R D E N A M I E N T O" Private Sub CargaGrid(Orden As String, gvi As Integer) If gvi = 0 Then @@ -3577,12 +3577,12 @@ Partial Class Clientes UPPUsuarios.Update() End If - End Sub + End Sub #End Region - - + + #End Region - + #Region "U S U A R I O S" Protected Sub LbSolicitudPortal_Click(sender As Object, e As EventArgs) Handles LbEnviarActivacionPortal.Click Dim ObjUsuario As New ClsSisUsuarios @@ -3764,9 +3764,9 @@ Partial Class Clientes ChkPermiso5.Checked = False ChkPermiso6.Checked = False ChkPermiso7.Checked = False - End Sub + End Sub #End Region - + #Region "E V E N T O - B I T A C O R A" Protected Sub GVEventoBitacora_RowDataBound(sender As Object, e As GridViewRowEventArgs) Handles GvEB.RowDataBound If e.Row.RowType = DataControlRowType.DataRow Then @@ -3913,17 +3913,17 @@ Partial Class Clientes IdCtaContableRetISR = IdCuentaContable End Select - If CveCliente > 0 Then - Dim ObjClientes As New ClsClientes - If Not ObjClientes.VincularCuentasContables(IdCtaContableClientes, IdCtaContableAnticipos, IdCtaContableRetIVA, IdCtaContableRetISR, CveCliente) Then - TieneError = True - End If - - ObjClientes.Dispose() - End If - - - + If CveCliente > 0 Then + Dim ObjClientes As New ClsClientes + If Not ObjClientes.VincularCuentasContables(IdCtaContableClientes, IdCtaContableAnticipos, IdCtaContableRetIVA, IdCtaContableRetISR, CveCliente) Then + TieneError = True + End If + + ObjClientes.Dispose() + End If + + + Else TieneError = True End If @@ -3975,11 +3975,11 @@ Partial Class Clientes BtnActivaRegistroISR.Visible = True End If - End Sub + End Sub #End Region - + #Region " I M P R I M I R P D F" - + Protected Sub ChkAntIXCNC_CheckedChanged(sender As Object, e As EventArgs) DdlTipoDocto.ClearSelection() If ChkAntIXCNC.Checked Then @@ -4216,20 +4216,20 @@ Partial Class Clientes
Gracias por la atención brindada al presente.
Reciba un cordial saludo.

- ESTE CORREO SE GENERO EN FORMA AUTOMATICA.", TxtNombreComercial.Text, UsuarioActual.Empresa.Empresa) - - If UsuarioActual.CveEmpresa = 140 Then + ESTE CORREO SE GENERO EN FORMA AUTOMATICA.", TxtNombreComercial.Text, UsuarioActual.Empresa.Empresa) + + If UsuarioActual.CveEmpresa = 140 Then Cuerpo = String.Format("Estimado cliente {0}, se anexa su estado de cuenta con adeudo actual en {1}.

Quedamos a sus ordenes para cualquier duda o aclaración: con su asesor comercial, al teléfono celular del área de Crédito y Cobranza 6624 52 99 64 o a los correos:

- credito@bdhbaterias.com
+ credito@bdhbaterias.com
cobranza@bdhbaterias.com

Gracias por la atención brindada al presente.
Reciba un cordial saludo.

- ESTE CORREO SE GENERO EN FORMA AUTOMATICA, FAVOR DE NO RESPONDERLO.", TxtNombreComercial.Text, UsuarioActual.Empresa.Empresa) + ESTE CORREO SE GENERO EN FORMA AUTOMATICA, FAVOR DE NO RESPONDERLO.", TxtNombreComercial.Text, UsuarioActual.Empresa.Empresa) End If Dim Hilo As New System.Threading.Thread(Sub() MandaCorreoEstadoCuenta(UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, Me.CveCliente, File, TxtCobranzaCorreo.Text, $"Estado Actual de Cartera en {UsuarioActual.Empresa.Empresa}", Cuerpo, GuardarBitacora:=True)) Hilo.Start() @@ -4315,9 +4315,9 @@ Partial Class Clientes End Using End If - End Sub + End Sub #End Region - + #Region "E N V I O C O R R E O" Private Sub EnviaCorreo(Liga As String, LigaActivar As String) @@ -4385,11 +4385,11 @@ Partial Class Clientes a.GuardaLog() Dim Mail As New ClsSisMail() Mail.SendMail(ClsPaginas.EmpresaNotificaciones, Para, Asunto, Body) - End Sub + End Sub #End Region - + #Region " COTIZACIONES " - + Protected Sub BtnVerMasCot_Click(sender As Object, e As EventArgs) If BtnVerMasCot.Text = "Ver Más" Then CargaCotizaciones(-1) @@ -4459,11 +4459,11 @@ Partial Class Clientes HLFacturar.HRef = $"/Ventas/Ventas.aspx?CveCotizacion={e.Row.DBCampo("CveVenta")}" End If End If - End Sub + End Sub #End Region - + #Region "D I R E C C I O N E N V I O " - + Private Sub CargaCombosDirecionesClientesSAT() CargaDirClientePais() CargaDirClienteEstado() @@ -4577,32 +4577,32 @@ Partial Class Clientes CargaDirClienteEstado() DdlDirClienteEstado.SelectedValueExist(GvRow.DataKey("CveEstado")) CargaDirClienteMunicipio() - DdlDirClienteMunicipio.SelectedValueExist(GvRow.DataKey("CveMunicipio")) - - + DdlDirClienteMunicipio.SelectedValueExist(GvRow.DataKey("CveMunicipio")) + + CargaDirClienteLocalidad() - DdlDirClienteLocalidad.SelectedValueExist(GvRow.DataKey("CveLocalidad")) - - - CargaDirClienteColonia() + DdlDirClienteLocalidad.SelectedValueExist(GvRow.DataKey("CveLocalidad")) + + + CargaDirClienteColonia() DdlDirClienteColonia.SelectedValueExist(GvRow.DataKey("CveColonia")) - ChkEstatus.Checked = If(GvRow.DataKey("Estatus").ToString() = "True", True, False) - - If GvRow.DataKey("CveClienteSucursal").ToEntero() > 0 Then - DdlClienteSucursalEnvio.SelectedValueExist(GvRow.DataKey("CveClienteSucursal")) - Else + ChkEstatus.Checked = If(GvRow.DataKey("Estatus").ToString() = "True", True, False) + + If GvRow.DataKey("CveClienteSucursal").ToEntero() > 0 Then + DdlClienteSucursalEnvio.SelectedValueExist(GvRow.DataKey("CveClienteSucursal")) + Else DdlClienteSucursalEnvio.SelectedValueExist("-1") - End If - - - Dim CveSubProyectoClienteSucursal As Integer = GvRow.DataKey("CveSubProyecto").ToEntero - - DdlSubProyectoClienteSucursal.SelectedValueExist("-1") - If CveSubProyectoClienteSucursal > 0 Then - DdlSubProyectoClienteSucursal.SelectedValueExist(CveSubProyectoClienteSucursal) - End If - + End If + + + Dim CveSubProyectoClienteSucursal As Integer = GvRow.DataKey("CveSubProyecto").ToEntero + + DdlSubProyectoClienteSucursal.SelectedValueExist("-1") + If CveSubProyectoClienteSucursal > 0 Then + DdlSubProyectoClienteSucursal.SelectedValueExist(CveSubProyectoClienteSucursal) + End If + UpAddDireccion.Update() RegistraScript("$('#divAddDireccionEnvio').modal();") End Sub @@ -4648,7 +4648,7 @@ Partial Class Clientes TxtEnvioTel.Text = "" DdlClienteSucursalEnvio.SelectedValue = "-1" - CargaCombosDirecionesClientesSAT() + CargaCombosDirecionesClientesSAT() DdlSubProyectoClienteSucursal.SelectedValueExist("-1") 'DdlDirClientePais.SelectedValueExist(-1) @@ -4678,12 +4678,12 @@ Partial Class Clientes End If CargaDireccionesEnvio() - End Sub - + End Sub + #End Region - + #Region " IMPORTAR SALDOS " - + Private Sub HLImportarSaldos_Click(sender As Object, e As EventArgs) Handles HLImportarSaldos.Click CargaClientesImportarSaldos() RegistraScript(String.Format("$('#{0}').modal();", "DivImportarSaldos")) @@ -4787,9 +4787,9 @@ Partial Class Clientes e.Row.FCCheckBox("Chk").Attributes.Add("onclick", String.Format("ChkSaldo(this,{0},{1});", e.Row.FCTextBox("TxtImporte").ClientID, e.Row.DBCampo("Saldo"))) e.Row.FCTextBox("TxtImporte").Attributes.Add("onKeyUp", String.Format("CambiaSaldo({0},this,{1});", e.Row.FCCheckBox("Chk").ClientID, e.Row.DBCampo("Saldo"))) End If - End Sub + End Sub #End Region - + #Region "Cuentas/Equipos" Public Sub BtnAgregarCtaEquipo_Click(sender As Object, e As EventArgs) HdnModalidad.Value = "I" @@ -5377,9 +5377,9 @@ Partial Class Clientes End If Return Retorno - End Function + End Function #End Region - + #Region "GPS" Protected Sub btnCargaArrayDisp_Click(sender As Object, e As EventArgs) Handles btnCargaArrayDisp.Click If hdnArrayDispositivo.Value.Length > 0 Then @@ -5520,10 +5520,10 @@ Partial Class Clientes UpMoverDispositivo.Update() RegistraScript($"CargaModalMoverDispositivo({GvRow.DataKey("CveDispositivo")});") - End Sub - + End Sub + #End Region - + #Region "Sucursales" Public Sub CreaDTSucursales() @@ -5757,14 +5757,14 @@ Partial Class Clientes End If End If End If - End Sub - + End Sub + #End Region - + #Region "G P S" - - - + + + Private Sub EnviaCorreoGPS(Liga As String, LigaActivar As String) Try @@ -5835,16 +5835,16 @@ Partial Class Clientes End If ObjClientes.Dispose() - End Sub - - + End Sub + + #End Region - + #Region "C O N T R A T O S" - - - - + + + + Private Sub CargaDatosContrato() If CveCliente <= 0 Then Exit Sub @@ -5889,10 +5889,10 @@ Partial Class Clientes e.Row.CssClass = "Totales white" End If End If - End Sub - + End Sub + #End Region - + #Region "M E T O D O S " Protected Sub RblTipo_SelectedIndexChanged(sender As Object, e As EventArgs) Handles RblTipo.SelectedIndexChanged If DTHistorialVentas IsNot Nothing AndAlso RblTipo.SelectedValue <> "-1" Then @@ -6302,13 +6302,13 @@ Partial Class Clientes End If - End Sub - + End Sub + #End Region - + #Region "IMPRIMIR GVHistorial" - - + + Protected Sub BtnExcelHistorial_Click(sender As Object, e As EventArgs) Dim retorno As Byte() = Nothing Dim Imagen As New System.IO.FileInfo(String.Format("{0}/Logo.png", UsuarioActual.Empresa.Ruta)) @@ -6391,18 +6391,18 @@ Partial Class Clientes ObjClientes.Dispose() Return retorno - End Function - - + End Function + + #End Region - + #Region "C O B R A N Z A" Public Sub Visitas_Click(sender As Object, e As EventArgs) RegistraScript(String.Format("$('#{0}').modal();", "DivVisitas")) - End Sub - + End Sub + #End Region - + #Region "Usuarios" Protected Sub GvUsuarios_RowDeleting(sender As Object, e As System.Web.UI.WebControls.GridViewDeleteEventArgs) Handles GvUsuarios.RowDeleting Dim CveUsuario As Integer = GvUsuarios.Rows(e.RowIndex).DataKey("CveUsuario").ToEntero() @@ -6437,12 +6437,12 @@ Partial Class Clientes e.Row.Cells(5).Visible = False End If End If - End Sub + End Sub #End Region - - + + #Region "C U E N T A S - B A N C A R I A S" - + Private Sub CargaCuentasBancarias(Optional RecargaGlobal As Boolean = False) If CveCliente <= 0 Then Exit Sub @@ -6615,8 +6615,8 @@ Partial Class Clientes TxtNumeroCuenta2.Text = "" TxtConvenioCIE2.Text = "" TxtReferencia2.Text = "" - End Sub - + End Sub + #Region "GRIDVIEW - CUENTAS BANCARIAS" Protected Sub GvBancosCuentas_RowDataBound(sender As Object, e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles GvBancosCuentas.RowDataBound If e.Row.RowType = DataControlRowType.DataRow Then @@ -6672,10 +6672,10 @@ Partial Class Clientes GlobalDTCuentasDepositosClientes(UsuarioActual.CveEmpresa, -1, True) = Nothing End If - End Sub - + End Sub + #End Region - + Private Sub CargaPSGridCuentasBancos() If CveCliente > 0 Then GvBancosCuentas.DataSource = DTCuentasBancos @@ -6733,9 +6733,9 @@ Partial Class Clientes divestatus.Visible = True UpAddBancos.Update() RegistraScript(String.Format("$('#{0}').modal('show');", "DivAddCuentasBancarias")) - End Sub + End Sub #End Region - + #Region "C L I E N T E S P A G O S R E A L I Z A D O S I M P R I M I R P D F/Excel" Private Sub LnkExportar_Click(sender As Object, e As EventArgs) Handles LnkPagosClientesBancosExcel.Click GenerarPDF("Excel") @@ -6761,11 +6761,11 @@ Partial Class Clientes ImprimirPDF("Empresas\Grales\Formatos\RepClientesPagosBancos.rdlc", DTCobrosRealizados, params, "RepClientesPagosBancos_" & Now.ToString("yyyyMMddhhmmss"), Formato:=Formato) - End Sub + End Sub #End Region - + #Region "VENTAS" - + Public Function imprimirFacturaVenta(CveVenta As Integer) As Byte() Dim ObjVentas As New ClsVentas Dim Vta As Modelos.Factura = Nothing @@ -6996,10 +6996,10 @@ Partial Class Clientes ObjVentas.Dispose() Return PdfFactura(Vta) - End Function - + End Function + #End Region - + #Region "COMERCIO EXTERIOR" Public Sub CargaCombosComercioExterior() @@ -7123,12 +7123,12 @@ Partial Class Clientes End Sub Protected Sub DdlMunicipio_SelectedIndexChanged(sender As Object, e As EventArgs) CargaColonia() - End Sub - + End Sub + #End Region - + #Region "D O C U M E N T A C I O N " - + Private Sub CargaDocumentacionCliente() Dim objRH As New ClsEdocumentacion() @@ -7423,9 +7423,9 @@ Partial Class Clientes Dim stringDescargaDocumento As String = "" - If GvRow.DataKey("Documentacion") = "Pagaré" AndAlso UsuarioActual.CveEmpresa = 140 Then - - + If GvRow.DataKey("Documentacion") = "Pagaré" AndAlso UsuarioActual.CveEmpresa = 140 Then + + stringDescargaDocumento = UsuarioActual.Empresa.Ruta & "Formatos\Pagaré.docx" linkDescargaPagare = stringDescargaDocumento TxtDireccionAval.Text = "" @@ -7462,64 +7462,89 @@ Partial Class Clientes Protected Sub ImprimirPagare(sender As Object, e As EventArgs) Handles BtnAgregarPagare.Click Dim memoryStreamDoc As New System.IO.MemoryStream - Dim objGemBoxDocument As New clsGemBoxDocument(linkDescargaPagare) - Dim Tags As New List(Of TagsDocumentos) - Dim ObjClientes As New ClsClientes - Dim monto As String = "" - Dim razonSocial As String = "" - Dim direccion As String = "" - Dim ciudad As String = "" - Dim Telefono As String = "" - Dim mesArray = New String() {"Enero", "Febrero", "Marzo", "Abril", "Mayo", "Junio", "Julio", "Agosto", "Septiembre", "Octubre", "Noviembre", "Diciembre"} - Dim hoy As DateTime = DateTime.Now - Dim fechaConFormato As String = String.Format("{0} de {1} del {2}", hoy.Day, mesArray(hoy.Month), hoy.Year) - - If ObjClientes.GetClientes(CveCliente, "-1", "-1", "-1", "-1", "-1", "-1", -1, UsuarioActual.CveEmpresa) Then - monto = ObjClientes.DtResultados.FiltroPrimeroValor("LimiteCredito").ToDouble.ToString("N") - razonSocial = ObjClientes.DtResultados.FiltroPrimeroValor("NombreComercial") - direccion = ObjClientes.DtResultados.FiltroPrimeroValor("Direccion") - ciudad = ObjClientes.DtResultados.FiltroPrimeroValor("Ciudad") - Telefono = ObjClientes.DtResultados.FiltroPrimeroValor("Telefono") - End If - - Tags.Add(New TagsDocumentos("{Monto}", monto)) - Tags.Add(New TagsDocumentos("{Fecha}", fechaConFormato)) - Tags.Add(New TagsDocumentos("{FechaConFormato}", fechaConFormato)) - Tags.Add(New TagsDocumentos("{CantidadLetra}", monto.ToDouble.Texto2Letras(1))) - Tags.Add(New TagsDocumentos("{RazonSocial}", razonSocial)) - Tags.Add(New TagsDocumentos("{Direccion}", direccion)) - Tags.Add(New TagsDocumentos("{Ciudad}", ciudad)) - Tags.Add(New TagsDocumentos("{Telefono}", Telefono)) - Tags.Add(New TagsDocumentos("{RazonSocialAval}", TxtAval.Text)) - Tags.Add(New TagsDocumentos("{DireccionAval}", TxtDireccionAval.Text)) - Tags.Add(New TagsDocumentos("{CiudadAval}", TxtCiudadAval.Text)) - Tags.Add(New TagsDocumentos("{TelefonoAval}", TxtTelefonoAval.Text)) - Tags.Add(New TagsDocumentos("{RepresentanteLegal}", TxtRepresentanteLegal.Text)) - - - - If Not ObjClientes.AddClientePagare(CveCliente, UsuarioActual.CveEmpresa, TxtAval.Text, TxtDireccionAval.Text) Then - Alert("no se pudo registrar el pagare") + If Not File.Exists(linkDescargaPagare) Then + Alert("No existe el formato", TipoMensaje.MsgAdvertencia) Exit Sub End If + Dim objGemBoxDocument As New clsGemBoxDocument(linkDescargaPagare) + Dim Tags As New List(Of TagsDocumentos) + + Dim ObjClientes As New ClsClientes + Dim TieneError As Boolean = False + + Try + Dim monto As String = "" + Dim razonSocial As String = "" + Dim direccion As String = "" + Dim colonia As String = "" + Dim noInt As String = "" + Dim noExt As String = "" + Dim ciudad As String = "" + Dim estado As String = "" + Dim Telefono As String = "" + Dim mesArray = New String() {"Enero", "Febrero", "Marzo", "Abril", "Mayo", "Junio", "Julio", "Agosto", "Septiembre", "Octubre", "Noviembre", "Diciembre"} + Dim hoy As DateTime = DateTime.Now + Dim fechaConFormato As String = String.Format("{0} de {1} del {2}", hoy.Day, mesArray(hoy.Month), hoy.Year) + + If ObjClientes.GetClientes(CveCliente, "-1", "-1", "-1", "-1", "-1", "-1", -1, UsuarioActual.CveEmpresa) Then + monto = ObjClientes.DtResultados.FiltroPrimeroValor("LimiteCredito").ToDouble.ToString("N") + razonSocial = ObjClientes.DtResultados.FiltroPrimeroValor("NombreComercial") + direccion = ObjClientes.DtResultados.FiltroPrimeroValor("Direccion") + colonia = ObjClientes.DtResultados.FiltroPrimeroValor("Colonia") + noInt = ObjClientes.DtResultados.FiltroPrimeroValor("NoInt") + noExt = ObjClientes.DtResultados.FiltroPrimeroValor("NoExt") + ciudad = ObjClientes.DtResultados.FiltroPrimeroValor("Ciudad") + estado = ObjClientes.DtResultados.FiltroPrimeroValor("Estado") + Telefono = ObjClientes.DtResultados.FiltroPrimeroValor("Telefono") + End If + + Tags.Add(New TagsDocumentos("{Monto}", monto)) + Tags.Add(New TagsDocumentos("{Fecha}", fechaConFormato)) + Tags.Add(New TagsDocumentos("{FechaConFormato}", fechaConFormato)) + Tags.Add(New TagsDocumentos("{CantidadLetra}", monto.ToDouble.Texto2Letras(1))) + Tags.Add(New TagsDocumentos("{RazonSocial}", razonSocial)) + Tags.Add(New TagsDocumentos("{Direccion}", String.Format("{0} #{1} {2}, COL.{3}", direccion, noInt, noExt, colonia).ToUpper())) + Tags.Add(New TagsDocumentos("{Ciudad}", String.Format("{0}, {1}", ciudad, estado).ToUpper())) + Tags.Add(New TagsDocumentos("{Telefono}", Telefono)) + Tags.Add(New TagsDocumentos("{RazonSocialAval}", TxtAval.Text)) + Tags.Add(New TagsDocumentos("{DireccionAval}", TxtDireccionAval.Text)) + Tags.Add(New TagsDocumentos("{CiudadAval}", TxtCiudadAval.Text)) + Tags.Add(New TagsDocumentos("{TelefonoAval}", TxtTelefonoAval.Text)) + Tags.Add(New TagsDocumentos("{RepresentanteLegal}", TxtRepresentanteLegal.Text)) + + If Not ObjClientes.AddClientePagare(CveCliente, UsuarioActual.CveEmpresa, TxtAval.Text, TxtDireccionAval.Text) Then + Alert("no se pudo registrar el pagare") + TieneError = True + End If + + If Not TieneError Then + Alert("Pagaré registrado con exito") + End If + Catch ex As Exception + OnError("Ocurrió un error al registrar el pagare", ex) + End Try + ObjClientes.Dispose() + 'objGemBoxDocument.AgregarImagen(RutaLogo, 61.0, 53.0) RegistraScript("$('#ModalDivPagare').modal('hide')") - Alert("Pagaré registrado con exito") - objGemBoxDocument.SustituirTags(Tags) - objGemBoxDocument.GuardarStream() - Dim memoryStream As New System.IO.MemoryStream(objGemBoxDocument.GetBytesDocumento()) - objGemBoxDocument.Dispose() - ObjClientes.Dispose() - Response.Clear() - Response.ContentType = "application/text" - Response.AddHeader("content-disposition", "attachment;filename=pagare.docx") - Response.Buffer = True - memoryStream.WriteTo(Response.OutputStream) - Response.End() - memoryStream.Dispose() + If Not TieneError Then + objGemBoxDocument.SustituirTags(Tags) + objGemBoxDocument.GuardarStream() + Dim memoryStream As New System.IO.MemoryStream(objGemBoxDocument.GetBytesDocumento()) + objGemBoxDocument.Dispose() + + Response.Clear() + Response.ContentType = "application/text" + Response.AddHeader("content-disposition", "attachment;filename=pagare.docx") + Response.Buffer = True + memoryStream.WriteTo(Response.OutputStream) + Response.End() + memoryStream.Dispose() + End If + End Sub @@ -7626,19 +7651,19 @@ Partial Class Clientes End If End Sub - Public Sub DownLoadFormato_ClickDocumentacion(sender As Object, e As EventArgs) - - + Public Sub DownLoadFormato_ClickDocumentacion(sender As Object, e As EventArgs) + + Dim GvRow As GridViewRow = DirectCast(DirectCast(sender, LinkButton).NamingContainer, GridViewRow) Dim Adjunto As String = GvRow.DataKey("Adjunto") Dim stringDescargaDocumento As String = "" - Dim asdasd = GvRow.DataKey("Documentacion") - - If GvRow.DataKey("Documentacion").ToUpper = "Pagaré".ToUpper AndAlso UsuarioActual.CveEmpresa = 140 Then - - + Dim asdasd = GvRow.DataKey("Documentacion") + + If GvRow.DataKey("Documentacion").ToUpper = "Pagaré".ToUpper AndAlso UsuarioActual.CveEmpresa = 140 Then + + stringDescargaDocumento = UsuarioActual.Empresa.Ruta & "Formatos\Pagaré.docx" linkDescargaPagare = stringDescargaDocumento TxtDireccionAval.Text = "" @@ -7648,30 +7673,30 @@ Partial Class Clientes RegistraScript("$('#ModalDivPagare').modal('show')") - Else - - - Dim CveDocumentacion As Integer = GvRow.DataKey("CveDocumentacion").ToString().ToEntero() - Dim DocumentacionFormato As String = CveDocumentacion & "_" & GvRow.DataKey("DocumentacionFormato") - + Else + + + Dim CveDocumentacion As Integer = GvRow.DataKey("CveDocumentacion").ToString().ToEntero() + Dim DocumentacionFormato As String = CveDocumentacion & "_" & GvRow.DataKey("DocumentacionFormato") + DescarFormato(DocumentacionFormato) - End If - - - - - - + End If + + + + + + End Sub Public Sub DescarFormato(documento As String) Dim PathRoot As String = Server.MapPath("/") Dim PathSource As String Dim pathDesti As String - Dim fname As String = "" - - - + Dim fname As String = "" + + + PathSource = UsuarioActual.Empresa.Ruta & "Formatos\" & documento pathDesti = PathRoot & "Temp\" & CveCliente & documento @@ -7720,20 +7745,20 @@ Partial Class Clientes End If - End Sub - - - + End Sub + + + Private Sub RegistraDescargaJavaScript(baseUrl As String) RegistraScript("Download('" & baseUrl & "')") - End Sub - + End Sub + #End Region - + #Region "D O C U M E N T O S V E N T A S" - + Private Sub CargaDocumentosVenta(tCveCliente As Integer) Dim objInv As New ClsEdocumentacion @@ -7904,11 +7929,11 @@ Partial Class Clientes objRH.Dispose() - End Sub - - + End Sub + + #End Region - + #Region "PERSONA FISICA" Protected Sub LnkPersonaFisica_Click(sender As Object, e As EventArgs) RegistraScript("$('#DivModalPersonaFisica').modal();") @@ -7933,9 +7958,9 @@ Partial Class Clientes ObjCliente.Dispose() UpDatos.Update() - End Sub + End Sub #End Region - + #Region "USUARIOS PLATAFORMA CLIENTE - 6 " Protected Sub CargaUsuariosPortalCliente() Dim objUsuario As ClsSisUsuarios = New ClsSisUsuarios @@ -7944,19 +7969,19 @@ Partial Class Clientes GvUsuarios.DataBind() End If objUsuario.Dispose() - End Sub + End Sub #End Region - + #Region " DEVOLVER DINERO ANT/NC " Private Sub InicializaDevolverDinero() If UsuarioActual.TienePermisoProceso(247) Then GVAnticipos.Columns(6).Visible = True End If - End Sub + End Sub #End Region - + #Region "MODAL GRAFICA/PEDIDOS" - + Protected Sub LnkVerGrafica_Click(sender As Object, e As EventArgs) If CargaDatatables() Then RegistraScript("$('#DivModalGrafica').modal('show')") @@ -8293,13 +8318,13 @@ Partial Class Clientes RegistraScript($"CargaGraficaCompratamientoSaldoMensual({Dt5.ToJson},{Dt6.ToJson.Replace($"{Chr(34)}True{Chr(34)}", "true").Replace($"{Chr(34)}False{Chr(34)}", "false")})", "55") UPModalProd.Update() - End Sub - - + End Sub + + #End Region - + #Region "TAB - COMPORTAMIENTO DE VENTAS" - + Private Sub CargaGrupo() DdlGrupo.Items.Insert(0, New ListItem("Categoria", "3")) DdlGrupo.Items.Insert(1, New ListItem("Clasificacion", "4")) @@ -8483,12 +8508,12 @@ Partial Class Clientes ObjVentas.Dispose() GvComportamientoVenta.DataBind() UpDatosComportamientoVenta.Update() - End Sub - + End Sub + #End Region - + #Region "DISPOSITIVOS" - + Protected Sub LnkMoverDispositivo_Click(sender As Object, e As EventArgs) Dim CveDispositivo As Integer = HdnCveDispositivoMover.Value.ToEntero() Dim CveCliente As Integer = DdlClienteDispositivo.SelectedValue.ToEntero() @@ -8526,10 +8551,10 @@ Partial Class Clientes CargaEventoBitacora() NombreDispositivo = "" RegistraScript("$('#DivMoverDispositivo').modal('hide');") - End Sub - + End Sub + #End Region - + #Region "CRM" Protected Sub CargaDatosCRM() Dim ObjCRM = New ClsCRM() @@ -8629,9 +8654,9 @@ Partial Class Clientes Alert("Se Unificó correctamente al Cliente con la Empresa CRM.") End If End If - End Sub + End Sub #End Region - + #Region "PORCENTAJE PRECIO DE MARCAS" Private Sub LnkPorcentajeMarcas_Click(sender As Object, e As EventArgs) Handles LnkPorcentajeMarcas.Click RegistraScript(String.Format("$('#{0}').modal();", "DivPorcentajeMarcas")) @@ -8855,9 +8880,9 @@ Partial Class Clientes ObjPS.Dispose() - End Sub + End Sub #End Region - + #Region "PORCENTAJE PRECIO DE PRODUCTOS" Private Sub LnkPorcentajePrecios_Click(sender As Object, e As EventArgs) Handles LnkPorcentajePrecios.Click RegistraScript(String.Format("$('#{0}').modal();", "DivPorcentajePrecios")) @@ -9093,12 +9118,12 @@ Partial Class Clientes Protected Sub BtnCambiaPorcentaje_Click(sender As Object, e As EventArgs) DdlProducto2IndexChange(DdlProducto2.SelectedValue.ToEntero(), DdlProducto2) - End Sub + End Sub #End Region - + #Region " A C U M U L A D O R E S" - - + + Protected Sub LnkFacturaUsadosCargos_Click(sender As Object, e As EventArgs) 'CveVentaNota = 0 @@ -9270,8 +9295,8 @@ Partial Class Clientes e.Row.FCCheckBox("ChkBonificacion").Visible = False End If - If e.Row.DBCampo("ImporteBonificacion").ToDecimal() = 0 Then - e.Row.FCCheckBox("ChkBonificacion").Visible = False + If e.Row.DBCampo("ImporteBonificacion").ToDecimal() = 0 Then + e.Row.FCCheckBox("ChkBonificacion").Visible = False End If End If @@ -9741,11 +9766,11 @@ Partial Class Clientes ' ObjFactura.Timbre = PreParaTimbre(ObjFactura) - End Sub - - + End Sub + + #End Region - + #Region "C L I E N T E S G R I D S I M P R I M I R P D F/Excel" Private Sub LnkCotizacionesPDF_Click(sender As Object, e As EventArgs) Handles LnkCotizacionesPDF.Click ImprimeGridsProveedores("PDF", DtCotizaciones, "RepClientesCotizaciones") @@ -9820,7 +9845,7 @@ Partial Class Clientes End If Acum.Dispose() - End Sub + End Sub #End Region Protected Sub DdlTipoRetencion_SelectedIndexChanged(sender As Object, e As EventArgs) If UsuarioActual.Empresa.Funcionalidad(579) = "1" Then @@ -10249,39 +10274,39 @@ Partial Class Clientes Alert("Los cambios se guardaron satisfactoriamente.") End Using - End Sub - - Protected Sub RdTipoPersona_SelectedIndexChanged(sender As Object, e As EventArgs) - - DVRegimenSociedad.Visible = False - DivRazonSocial2.Attributes.Add("class", "col-md-12") - - If RdTipoPersona.SelectedValue.ToEntero = 1 And UsuarioActual.Empresa.Funcionalidad(350).Contiene("1", "2") Then - DivRazonSocial2.Attributes.Add("class", "col-md-8") - DVRegimenSociedad.Visible = True - TxtNombreComercial.Enabled = False - Else - TxtNombreComercial.Enabled = True - End If - ' DdlRegimenFiscal.SelectedIndex = -1 - - Dim dt As DataTable = GlobalDTRegimenesFiscales(RdTipoPersona.SelectedValue.ToEntero).FiltraParametros("", "CodigoRegimenFiscal") - Dim Val As String - - If dt IsNot Nothing AndAlso dt.Rows.Count > 0 Then - 'verifico que sino existe el valor. lo limpie - Val = dt.FiltroPrimeroValor("CveRegimenFiscal", "CveRegimenFiscal = " & DdlRegimenFiscal.SelectedValue) - If Val = "" Then 'sino encuentra valor, lo limpia - DdlRegimenFiscal.Items.Clear() - DdlRegimenFiscal.SelectedValue = Nothing - End If - End If - - DdlRegimenFiscal.DataSource = dt - DdlRegimenFiscal.DataBind() - DdlRegimenFiscal.SelectedValueExist(Val) - UpDatos.Update() - End Sub - + End Sub + + Protected Sub RdTipoPersona_SelectedIndexChanged(sender As Object, e As EventArgs) + + DVRegimenSociedad.Visible = False + DivRazonSocial2.Attributes.Add("class", "col-md-12") + + If RdTipoPersona.SelectedValue.ToEntero = 1 And UsuarioActual.Empresa.Funcionalidad(350).Contiene("1", "2") Then + DivRazonSocial2.Attributes.Add("class", "col-md-8") + DVRegimenSociedad.Visible = True + TxtNombreComercial.Enabled = False + Else + TxtNombreComercial.Enabled = True + End If + ' DdlRegimenFiscal.SelectedIndex = -1 + + Dim dt As DataTable = GlobalDTRegimenesFiscales(RdTipoPersona.SelectedValue.ToEntero).FiltraParametros("", "CodigoRegimenFiscal") + Dim Val As String + + If dt IsNot Nothing AndAlso dt.Rows.Count > 0 Then + 'verifico que sino existe el valor. lo limpie + Val = dt.FiltroPrimeroValor("CveRegimenFiscal", "CveRegimenFiscal = " & DdlRegimenFiscal.SelectedValue) + If Val = "" Then 'sino encuentra valor, lo limpia + DdlRegimenFiscal.Items.Clear() + DdlRegimenFiscal.SelectedValue = Nothing + End If + End If + + DdlRegimenFiscal.DataSource = dt + DdlRegimenFiscal.DataBind() + DdlRegimenFiscal.SelectedValueExist(Val) + UpDatos.Update() + End Sub + End Class From 4fafd9d3e696f26ae23eef95995dde350a62db88 Mon Sep 17 00:00:00 2001 From: Jonathan Alexis Perez Morales Date: Fri, 26 Aug 2022 18:32:03 -0700 Subject: [PATCH 37/54] Correcion de PU en 0 al aplicar devolicion de almacen --- Inventarios/EntregaAlmacen.aspx.vb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Inventarios/EntregaAlmacen.aspx.vb b/Inventarios/EntregaAlmacen.aspx.vb index f14e37152..47477ca47 100644 --- a/Inventarios/EntregaAlmacen.aspx.vb +++ b/Inventarios/EntregaAlmacen.aspx.vb @@ -2493,7 +2493,7 @@ Partial Class Inventarios_EntregaAlmacen If TipoMovimiento = 2 AndAlso DtExistencias IsNot Nothing Then 'CveSeccionAlmacen = DtExistencias.FiltroPrimeroValor("CveSeccionAlmacen", $"ISNULL(CveTipoAlmacenDevolucion,0) <> 26 AND CvePS = {Dr("CvePS")} AND CveUM = {Dr("CveUM").ToString().ToEntero()} AND Serie = '{Dr1("Serie").ToString()}'").ToString().ToEntero - PU = DtExistencias.FiltroPrimeroValor("PU", $"CveTipoAlmacenDevolucion <> 26 AND CvePS = {Dr("CvePS")} AND CveUM = {Dr("CveUM").ToString().ToEntero()} AND Serie = '{Dr1("Serie").ToString()}'").ToString().ToDecimal + PU = DtExistencias.FiltroPrimeroValor("PU", $"ISNULL(CveTipoAlmacenDevolucion,-1) <> 26 AND CvePS = {Dr("CvePS")} AND CveUM = {Dr("CveUM").ToString().ToEntero()} AND Serie = '{Dr1("Serie").ToString()}'").ToString().ToDecimal End If If Not ObjInventario.AddMovimientoDetalle(CveMovimiento, 1, Dr("CveUM").ToString().ToEntero(), Dr("CvePS").ToString().ToEntero(), PU, Serie:=Dr1("Serie").ToString(), CveVentaDetalle:=Dr("CveVentaDetalle").ToString().ToEntero(), CveVentaDetalleRemision:=Dr("CveVentaDetalleRemision").ToString().ToEntero(), FechaCaducidad:=If(CBool(Dr("AplicaCaducidad")), Dr("FechaCaducidad").ToString().ToDate, MinFecha), Lote:=If(CBool(Dr("AplicaLote")), Dr("Lote").ToString(), "-1"), CveSeccionAlmacen:=-3) Then From 18ed7e7f5473f9495f4fde1bfaa33ee49f4b8852 Mon Sep 17 00:00:00 2001 From: Jonathan Alexis Perez Morales Date: Fri, 26 Aug 2022 18:33:11 -0700 Subject: [PATCH 38/54] Error de compilacion --- Bancos/PagoDeudor.aspx.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Bancos/PagoDeudor.aspx.cs b/Bancos/PagoDeudor.aspx.cs index c4e0bac4f..611b02810 100644 --- a/Bancos/PagoDeudor.aspx.cs +++ b/Bancos/PagoDeudor.aspx.cs @@ -365,7 +365,7 @@ public partial class Bancos_PagoDeudor : ClsPaginas { MsgError = "No se pudo insertar concepto de bancos complementaria"; } - s + // BANCOS if (!ObjMov.AddPrePolizasDetalle(CvePrePoliza, true, TxtImportePrestamo.Text.ToDecimal(), Ref, CveConceptoContableBanco, Conc, IDCtaContableBancosPrestamo, CveIE, CveProveedor: DdlProveedorPrestamo.SelectedValue.ToEntero(), ImporteMX: TxtImportePrestamo.Text.ToDecimal(), ImporteME: TxtImportePrestamo.Text.ToDecimal(), TipoCambio: tipoCambio, CveSubProyecto: DdlSubProyecto.SelectedValue.ToEntero())) { From 6b8ce06103dae419eef6903617c8322bc7dfd607 Mon Sep 17 00:00:00 2001 From: rrene Date: Mon, 29 Aug 2022 12:11:29 -0700 Subject: [PATCH 39/54] mejora en funcionalidad 132 --- Inventarios/EntregaAlmacen.aspx | 42 ++-------------------------- Inventarios/EntregaAlmacen.aspx.vb | 18 ++++++------ Inventarios/RecepcionAlmacen.aspx.vb | 25 +++++++++-------- Inventarios/TraspasoAlmacen.aspx.vb | 23 ++++++--------- 4 files changed, 32 insertions(+), 76 deletions(-) diff --git a/Inventarios/EntregaAlmacen.aspx b/Inventarios/EntregaAlmacen.aspx index f9af8792f..9fc5391cf 100644 --- a/Inventarios/EntregaAlmacen.aspx +++ b/Inventarios/EntregaAlmacen.aspx @@ -66,40 +66,10 @@
  • Cliente: - - - - - - - - - - - - - - - <%----%>
  • Serie-Folio: - - - - - - - - - - - - - - - @@ -108,25 +78,17 @@
- <%----%> +
- - -
-
<%--DATOS DE LA VENTA--%> diff --git a/Inventarios/EntregaAlmacen.aspx.vb b/Inventarios/EntregaAlmacen.aspx.vb index f14e37152..467aed0f9 100644 --- a/Inventarios/EntregaAlmacen.aspx.vb +++ b/Inventarios/EntregaAlmacen.aspx.vb @@ -598,7 +598,7 @@ Partial Class Inventarios_EntregaAlmacen CveContrato = drE("CveContrato").ToString().ToEntero() CveVendedor = drE("CveVendedor").ToString().ToEntero() CveCliente = drE("CveCliente").ToString().ToEntero() - ClienteEntregaPersonal(CveCliente) + 'ClienteEntregaPersonal(CveCliente) CveSubProyecto = drE("CveSubProyecto").ToString().ToEntero() EsInterno = CBool(DtDatos.Rows(0)("EsInterno").ToString()) CveDireccionEnvio = drE("CveDireccionEnvio").ToString.ToEntero @@ -1118,9 +1118,9 @@ Partial Class Inventarios_EntregaAlmacen DtDatosDetalle.Columns.Add("FueTraspaso", GetType(Integer)) End If End Sub - Private Sub CargaSerie(Optional CerrarCompletado As Boolean = False) - RegistraScript("$('#DivSerie').modal('show')", "show") + Private Sub CargaSerie(Optional CerrarCompletado As Boolean = False, Optional CargaMasivo As Boolean = False) + If Not CargaMasivo Then RegistraScript("$('#DivSerie').modal('show')", "show") Dim AplicaCaducidad = False If GlobalDTPS(UsuarioActual.CveEmpresa, ).FiltraParametros("").Rows(0) IsNot Nothing Then @@ -1174,7 +1174,7 @@ Partial Class Inventarios_EntregaAlmacen Dim Mensaje As New StringBuilder Mensaje.AppendFormat("Serie Recomendado: {0}", DtSerie.Rows(0)("Serie")) - If AplicaCaducidad Then Mensaje.AppendFormat(", Caducicdad: {0}", DtSerie.Rows(0)("FechaCaducidad").ToString().ToDate.ToShortDateString) + If AplicaCaducidad Then Mensaje.AppendFormat(", Caducidad: {0}", DtSerie.Rows(0)("FechaCaducidad").ToString().ToDate.ToShortDateString) LbSerieRecomendado.Text = Mensaje.ToString() 'String.Format("Serie / Lote Recomendado: {0}, Caducicdad: {1}", ObjInventarios.DtResultados.Rows(0)("SerieLote"), ObjInventarios.DtResultados.Rows(0)("FechaCaducidad").ToString().ToDate.ToShortDateString) Else LbSerieRecomendado.Text = "No se encontro ningun Serie/Lote." @@ -1228,7 +1228,7 @@ Partial Class Inventarios_EntregaAlmacen End If End Sub - Private Sub AgregaSerie(Serie As String, Tipo As Integer) + Private Sub AgregaSerie(Serie As String, Tipo As Integer, Optional CargaMasivo As Boolean = False) If Serie.Trim = "" Then Alert("El campo Serie es obligatorio. Por favor rectifique y vuelva a intentar.", TipoMensaje.MsgAdvertencia) @@ -1290,7 +1290,7 @@ Partial Class Inventarios_EntregaAlmacen End If If Tipo < 3 Then - CargaSerie(True) + CargaSerie(True, cargaMasivo) End If End Sub @@ -1548,8 +1548,7 @@ Partial Class Inventarios_EntregaAlmacen End If End If - - If Gvr.DataKey("AplicaSerieLote") = "True" Then + If Gvr.DataKey("AplicaSerie") = "True" Then TdSeriePS.Visible = True TxtSeriePS.Focus() @@ -1560,7 +1559,6 @@ Partial Class Inventarios_EntregaAlmacen Exit Sub End If - Dim CantidadEspecial = Gvr.DataKey("CveClasificacion").ToString().ToEntero().Contiene(17601, 17881) OrElse Gvr.DataKey("CvePS").ToString().ToEntero().Contiene(343032, 343033) If CantidadEspecial Then @@ -1614,7 +1612,7 @@ Partial Class Inventarios_EntregaAlmacen End If End Sub Protected Sub BtnSeriePS_Click(sender As Object, e As EventArgs) - AgregaSerie(TxtSeriePS.Text.Trim, 2) + AgregaSerie(TxtSeriePS.Text.Trim, 2, True) TdSeriePS.Visible = False TxtSeriePS.Text = "" diff --git a/Inventarios/RecepcionAlmacen.aspx.vb b/Inventarios/RecepcionAlmacen.aspx.vb index e48ec5fd5..7cb4c4781 100644 --- a/Inventarios/RecepcionAlmacen.aspx.vb +++ b/Inventarios/RecepcionAlmacen.aspx.vb @@ -1606,7 +1606,7 @@ Partial Class Inventarios_RecepcionAlmacen Dim TxtCantidad = GvInv.Rows(Gvr.RowIndex).FCTextBox("TbCantidadF") If Gvr.DataKey("CantidadF").ToDecimal - TxtCantidad.Text.ToDecimal - 1 >= 0 Then - If Gvr.DataKey("AplicaSerieLote") = "True" Then + If Gvr.DataKey("AplicaSerie") = "True" Then TdSeriePS.Visible = True TxtSeriePS.Focus() @@ -1673,11 +1673,14 @@ Partial Class Inventarios_RecepcionAlmacen End Sub Protected Sub BtnSeriePS_Click(sender As Object, e As EventArgs) - AgregaSerie(TxtSeriePS.Text.Trim, 2) + AgregaSerie(TxtSeriePS.Text.Trim, 2, CargaMasivaSeries:=True) TdSeriePS.Visible = False TxtSeriePS.Text = "" TxtCodigoPS.Text = "" TxtCodigoPS.Focus() + UPInv.Update() + GvInv.DataSource = DtInv + GvInv.DataBind() End Sub Protected Sub BtnGuardarCantidadEspecial_Click(sender As Object, e As EventArgs) AgregaCantidadEspecial() @@ -1775,7 +1778,6 @@ Partial Class Inventarios_RecepcionAlmacen DtInv.AcceptChanges() Next - UPInv.Update() UpSerie.Update() TxtSerie.Text = "" @@ -1814,7 +1816,7 @@ Partial Class Inventarios_RecepcionAlmacen End If 'PARA VALIDAR SI LA SERIE ES IGUAL AL CODIGO O CODIGOBARRAS - If Serie.ToUpper = dr("Codigo").ToString.ToUpper Or Serie.ToUpper = dr("CodigoBarras").ToString.ToUpper Then + If Serie.ToUpper = dr("Codigo").ToString.ToUpper OrElse Serie.ToUpper = dr("CodigoBarras").ToString.ToUpper Then MensajeAlert.Append($"
El numero de Serie {Serie} coincide con el codigo o codigo de barras del producto. Por favor rectifique y vuelva a intentar.") Continue For End If @@ -1829,20 +1831,21 @@ Partial Class Inventarios_RecepcionAlmacen Dim MensajeSinExistencias As New StringBuilder Dim ObjInventarios As New ClsInventarios Dim Index = 0 + Dim Cantidad As Integer = LbCantidad.Text.ToEntero + + If CargaMasivaSeries Then Cantidad = DtInv.FiltroPrimeroValor("CantidadF", "Consec = " & CveConsecSerie).ToEntero + 'DtInv For Each Serie In SeriesArreglo If Serie <> "" Then - - Dim Row = DtDatosDetalle.NewRow + Dim Row = DtDatosDetalle.NewRow Index = Index + 1 - If Index > LbCantidad.Text.ToEntero Then - Exit For - End If + If Index > Cantidad Then Exit For 'VALIDA QUE SIGA AGREGANDO - If Not DtDatosDetalle.FiltraParametros(String.Format("ConsecId = {0}", CveConsecSerie)).Rows.Count < LbCantidad.Text.ToEntero Then - Exit For + If Not DtDatosDetalle.FiltraParametros(String.Format("ConsecId = {0}", CveConsecSerie)).Rows.Count < Cantidad Then + MensajeAlert.Append("series cargadas en su totalidad") : Exit For End If 'VERIFICA EXISTENCIAS diff --git a/Inventarios/TraspasoAlmacen.aspx.vb b/Inventarios/TraspasoAlmacen.aspx.vb index eba50dc53..f773900d0 100644 --- a/Inventarios/TraspasoAlmacen.aspx.vb +++ b/Inventarios/TraspasoAlmacen.aspx.vb @@ -720,14 +720,12 @@ Partial Class Inventarios_TraspasoAlmacen Dim DrPS As DataRow = GlobalDTPS(UsuarioActual.CveEmpresa, CvePS:=CvePS).FiltroPrimero("") - If ChkEmitirTimbrado.Checked AndAlso ChkEmitirCartaPorte.Checked Then If Not ValidaPSSAT(DrPS) Then Exit Sub End If End If - If DrPS IsNot Nothing Then CveClasificacion = DrPS("CveClasificacion").ToString.ToEntero Dim DrUM = GlobalDTUnidadesMedida(UsuarioActual.CveEmpresa).FiltroPrimero($"CveUnidadMedida = {CveUnidadMedida}") @@ -2362,9 +2360,7 @@ Partial Class Inventarios_TraspasoAlmacen #Region " AGREGA CON TXT | CODIGO - SERIE " Protected Sub BtnCodigoPS_Click(sender As Object, e As EventArgs) - If TxtCodigoPS.Text = "" Then - Exit Sub - End If + If TxtCodigoPS.Text = "" Then Exit Sub TdSeriePS.Visible = False @@ -2376,30 +2372,27 @@ Partial Class Inventarios_TraspasoAlmacen Exit Sub End If - If DrPS("Inv_CveMetodoInventario").ToString.ToEntero = 5 Then + If DrPS("AplicaSerie").ToString = "True" Then TdSeriePS.Visible = True TxtSeriePS.Focus() CvePSSerie = DrPS("CvePS").ToString.ToEntero CveUMSerie = DrPS("CveUnidadMedida").ToString.ToEntero Exit Sub + Else + AgregarPS(1, DrPS("CvePS").ToString.ToEntero, DrPS("CveUnidadMedida").ToString.ToEntero) + + TxtCodigoPS.Text = "" End If - AgregarPS(1, DrPS("CvePS").ToString.ToEntero, DrPS("CveUnidadMedida").ToString.ToEntero) - - TxtCodigoPS.Text = "" - End Sub Protected Sub BtnSeriePS_Click(sender As Object, e As EventArgs) - If TxtSeriePS.Text.Trim = "" Then - Exit Sub - End If + If TxtSeriePS.Text.Trim = "" Then Exit Sub txtCantidad.Text = "1" - Dim Valido = ValidaExistencia(1, CvePSSerie, CveUMSerie, -1, TxtSeriePS.Text.Trim, "-1", MinFecha) If Valido Then - AgregarPS(1, CvePSSerie, CveUMSerie, TxtSeriePS.Text.Trim) + AgregarPS(1, CvePSSerie, CveUMSerie, Serie:=TxtSeriePS.Text.Trim) Else TxtSeriePS.Text = "" TxtSeriePS.Focus() From 2ecf4ab17fd6c08e6acb2a765db09094ac37203d Mon Sep 17 00:00:00 2001 From: rakcsle Date: Mon, 29 Aug 2022 18:02:19 -0700 Subject: [PATCH 40/54] =?UTF-8?q?Rempleazar=20saltos=20de=20linea=20en=20a?= =?UTF-8?q?signaciones=20de=20funciones=20onblur=20de=20=20vinculaci=C3=B3?= =?UTF-8?q?n=20de=20OC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Compras/Compras.aspx.vb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Compras/Compras.aspx.vb b/Compras/Compras.aspx.vb index 3bb8ba23b..48467fe5e 100644 --- a/Compras/Compras.aspx.vb +++ b/Compras/Compras.aspx.vb @@ -15005,7 +15005,7 @@ Partial Class Compras_Compras Dim Cont As Integer = 0 For Each gvr As GridViewRow In GvOC1.Rows - RegistraScript($"CalculaTotalOCEdit('{gvr.DataKey("PS").Replace("'", "")}', {gvr.DataKey("Cantidad").ToString.ToDouble}, {gvr.FCTextBox("TxtCantidad").ClientID}, {gvr.FCTextBox("TxtPU").ClientID}, {gvr.FCTextBox("TxtTotalOC1").ClientID}, {gvr.DataKey("IEPSPS").ToString.ToDouble},{gvr.FCHiddenField("HdnOC1IEPSImporte").ClientID}, {gvr.DataKey("IVA").ToString.ToDouble},{gvr.FCHiddenField("HdnOC1IVA").ClientID},{gvr.DataKey("RetIVA").ToString.ToDouble},{gvr.FCHiddenField("HdnOC1RetIVA").ClientID},{gvr.DataKey("RetISR").ToString.ToDouble},{gvr.FCHiddenField("HdnOC1RetISR").ClientID},{gvr.DataKey("IEPSPS").ToString.ToDouble},{gvr.FCHiddenField("HdnOC1IEPSIVA").ClientID},{gvr.DataKey("Descuento")},{gvr.FCHiddenField("HdnOC1Descuento").ClientID},{gvr.DataKey("IVAPorcentaje").ToString.ToDouble},{gvr.DataKey("RetIVAPorcentaje").ToString.ToDouble},{gvr.DataKey("RetISRPorcentaje").ToString.ToDouble},{gvr.DataKey("IEPSPSPorcentaje").ToString.ToDouble},{gvr.DataKey("IEPSPSIVAPorcentaje").ToString.ToDouble});", $"Gv{Cont}") + RegistraScript($"CalculaTotalOCEdit('{ gvr.DataKey("PS").Replace("'", "").Replace(vbLf, " ").Replace(vbCrLf, " ") }', {gvr.DataKey("Cantidad").ToString.ToDouble}, {gvr.FCTextBox("TxtCantidad").ClientID}, {gvr.FCTextBox("TxtPU").ClientID}, {gvr.FCTextBox("TxtTotalOC1").ClientID}, {gvr.DataKey("IEPSPS").ToString.ToDouble},{gvr.FCHiddenField("HdnOC1IEPSImporte").ClientID}, {gvr.DataKey("IVA").ToString.ToDouble},{gvr.FCHiddenField("HdnOC1IVA").ClientID},{gvr.DataKey("RetIVA").ToString.ToDouble},{gvr.FCHiddenField("HdnOC1RetIVA").ClientID},{gvr.DataKey("RetISR").ToString.ToDouble},{gvr.FCHiddenField("HdnOC1RetISR").ClientID},{gvr.DataKey("IEPSPS").ToString.ToDouble},{gvr.FCHiddenField("HdnOC1IEPSIVA").ClientID},{gvr.DataKey("Descuento")},{gvr.FCHiddenField("HdnOC1Descuento").ClientID},{gvr.DataKey("IVAPorcentaje").ToString.ToDouble},{gvr.DataKey("RetIVAPorcentaje").ToString.ToDouble},{gvr.DataKey("RetISRPorcentaje").ToString.ToDouble},{gvr.DataKey("IEPSPSPorcentaje").ToString.ToDouble},{gvr.DataKey("IEPSPSIVAPorcentaje").ToString.ToDouble});", $"Gv{Cont}") Cont += 1 Next @@ -15021,7 +15021,7 @@ Partial Class Compras_Compras Protected Sub GvOC1_RowDataBound(sender As Object, e As GridViewRowEventArgs) Handles GvOC1.RowDataBound If e.Row.RowType = DataControlRowType.DataRow Then - Dim JSCambiaScript = $"CalculaTotalOCEdit('{e.Row.DBCampo("PS").Replace("'", "")}', {e.Row.DBCampo("Cantidad").ToString.ToDouble}, {e.Row.FCTextBox("TxtCantidad").ClientID}, {e.Row.FCTextBox("TxtPU").ClientID}, {e.Row.FCTextBox("TxtTotalOC1").ClientID}, {e.Row.DBCampo("IEPSPS").ToString.ToDouble},{e.Row.FCHiddenField("HdnOC1IEPSImporte").ClientID}, {e.Row.DBCampo("IVA").ToString.ToDouble},{e.Row.FCHiddenField("HdnOC1IVA").ClientID},{e.Row.DBCampo("RetIVA").ToString.ToDouble},{e.Row.FCHiddenField("HdnOC1RetIVA").ClientID},{e.Row.DBCampo("RetISR").ToString.ToDouble},{e.Row.FCHiddenField("HdnOC1RetISR").ClientID},{e.Row.DBCampo("IEPSPS").ToString.ToDouble},{e.Row.FCHiddenField("HdnOC1IEPSIVA").ClientID},{e.Row.DBCampo("Descuento")},{e.Row.FCHiddenField("HdnOC1Descuento").ClientID},{e.Row.DBCampo("IVAPorcentaje").ToString.ToDouble},{e.Row.DBCampo("RetIVAPorcentaje").ToString.ToDouble},{e.Row.DBCampo("RetISRPorcentaje").ToString.ToDouble},{e.Row.DBCampo("IEPSPSPorcentaje").ToString.ToDouble},{e.Row.DBCampo("IEPSPSIVAPorcentaje").ToString.ToDouble});" + Dim JSCambiaScript = $"CalculaTotalOCEdit('{e.Row.DBCampo("PS").Replace("'", "").Replace(vbLf, " ").Replace(vbCrLf, " ")}', {e.Row.DBCampo("Cantidad").ToString.ToDouble}, {e.Row.FCTextBox("TxtCantidad").ClientID}, {e.Row.FCTextBox("TxtPU").ClientID}, {e.Row.FCTextBox("TxtTotalOC1").ClientID}, {e.Row.DBCampo("IEPSPS").ToString.ToDouble},{e.Row.FCHiddenField("HdnOC1IEPSImporte").ClientID}, {e.Row.DBCampo("IVA").ToString.ToDouble},{e.Row.FCHiddenField("HdnOC1IVA").ClientID},{e.Row.DBCampo("RetIVA").ToString.ToDouble},{e.Row.FCHiddenField("HdnOC1RetIVA").ClientID},{e.Row.DBCampo("RetISR").ToString.ToDouble},{e.Row.FCHiddenField("HdnOC1RetISR").ClientID},{e.Row.DBCampo("IEPSPS").ToString.ToDouble},{e.Row.FCHiddenField("HdnOC1IEPSIVA").ClientID},{e.Row.DBCampo("Descuento")},{e.Row.FCHiddenField("HdnOC1Descuento").ClientID},{e.Row.DBCampo("IVAPorcentaje").ToString.ToDouble},{e.Row.DBCampo("RetIVAPorcentaje").ToString.ToDouble},{e.Row.DBCampo("RetISRPorcentaje").ToString.ToDouble},{e.Row.DBCampo("IEPSPSPorcentaje").ToString.ToDouble},{e.Row.DBCampo("IEPSPSIVAPorcentaje").ToString.ToDouble});" e.Row.FCTextBox("TxtCantidad").Attributes.Add("onkeyup", $"LimitaCantidadOC({e.Row.DBCampo("CantidadPendienteVincular")}, this);{JSCambiaScript}") e.Row.FCTextBox("TxtPU").Attributes.Add("onkeyup", JSCambiaScript) From 8889321c01c237949d58a32bb59d762bbce11ec6 Mon Sep 17 00:00:00 2001 From: rakcsle Date: Mon, 29 Aug 2022 19:16:07 -0700 Subject: [PATCH 41/54] Recibo de pago RDLC Empresa 70 --- Empresas/70/Formatos/ReciboDePago.rdlc | 2661 ++++++++++++++++++++++-- vwd.webinfo | 4 + 2 files changed, 2534 insertions(+), 131 deletions(-) diff --git a/Empresas/70/Formatos/ReciboDePago.rdlc b/Empresas/70/Formatos/ReciboDePago.rdlc index 472016663..2d298c914 100644 --- a/Empresas/70/Formatos/ReciboDePago.rdlc +++ b/Empresas/70/Formatos/ReciboDePago.rdlc @@ -906,7 +906,16 @@ - 5.35332cm + 2.06136cm + + + 1.81754cm + + + 1.87029cm + + + 1.59989cm 1.8cm @@ -914,9 +923,6 @@ 1.8cm - - 1.99576cm - 1.8cm @@ -990,8 +996,12 @@ 2pt + 4 + + + @@ -1108,64 +1118,6 @@ - - - - true - true - - - - - Método Pago - - - - - - - Textbox13 - - - - #eb831f - - 1pt - - - #eb831f - - 1pt - - - #eb831f - - 1pt - - - #eb831f - - 1pt - - #eb831f - 2pt - 2pt - 2pt - 2pt - - - - @@ -1454,8 +1406,12 @@ 2pt + 4 + + + @@ -1562,59 +1518,6 @@ - - - - true - true - - - - - =Fields!MetodoDePagoDR.Value - - - - - - - #eb831f - - 1pt - - - #eb831f - - 1pt - - - #eb831f - - 1pt - - - #eb831f - - 1pt - - 2pt - 2pt - 2pt - 2pt - - - - @@ -1833,6 +1736,2351 @@ + + 0.23979cm + + + + + true + true + + + + + Impuesto + + + + + + + Textbox108 + + =Microsoft.VisualBasic.Interaction.IIF(Fields!Tra001BaseDR.Value > 0 Or Fields!Tra002BaseDR.Value > 0 Or Fields!Tra003BaseDR.Value > 0 Or Fields!Ret001BaseDR.Value > 0 Or Fields!Ret002BaseDR.Value > 0 Or Fields!Ret003BaseDR.Value > 0, False, True) + + + + + #eb831f + + Top + + + true + + + + + + true + true + + + + + Tipo + + + + + + + Textbox109 + + =Microsoft.VisualBasic.Interaction.IIF(Fields!Tra001BaseDR.Value > 0 Or Fields!Tra002BaseDR.Value > 0 Or Fields!Tra003BaseDR.Value > 0 Or Fields!Ret001BaseDR.Value > 0 Or Fields!Ret002BaseDR.Value > 0 Or Fields!Ret003BaseDR.Value > 0, False, True) + + + + Top + + + true + + + + + + true + true + + + + + Base + + + + + + + Textbox110 + + =Microsoft.VisualBasic.Interaction.IIF(Fields!Tra001BaseDR.Value > 0 Or Fields!Tra002BaseDR.Value > 0 Or Fields!Tra003BaseDR.Value > 0 Or Fields!Ret001BaseDR.Value > 0 Or Fields!Ret002BaseDR.Value > 0 Or Fields!Ret003BaseDR.Value > 0, False, True) + + + + Top + + + true + + + + + + true + true + + + + + Tipo Factor + + + + + + + Textbox111 + + =Microsoft.VisualBasic.Interaction.IIF(Fields!Tra001BaseDR.Value > 0 Or Fields!Tra002BaseDR.Value > 0 Or Fields!Tra003BaseDR.Value > 0 Or Fields!Ret001BaseDR.Value > 0 Or Fields!Ret002BaseDR.Value > 0 Or Fields!Ret003BaseDR.Value > 0, False, True) + + + + Top + + + true + + + + + + true + true + + + + + Tasa/Cuota + + + + + + + Textbox112 + + =Microsoft.VisualBasic.Interaction.IIF(Fields!Tra001BaseDR.Value > 0 Or Fields!Tra002BaseDR.Value > 0 Or Fields!Tra003BaseDR.Value > 0 Or Fields!Ret001BaseDR.Value > 0 Or Fields!Ret002BaseDR.Value > 0 Or Fields!Ret003BaseDR.Value > 0, False, True) + + + + Top + + + true + + + + + + true + true + + + + + Importe + + + + + + + Textbox113 + + =Microsoft.VisualBasic.Interaction.IIF(Fields!Tra001BaseDR.Value > 0 Or Fields!Tra002BaseDR.Value > 0 Or Fields!Tra003BaseDR.Value > 0 Or Fields!Ret001BaseDR.Value > 0 Or Fields!Ret002BaseDR.Value > 0 Or Fields!Ret003BaseDR.Value > 0, False, True) + + + + Top + + + true + + + + + + true + true + + + + + + + + + + + + #eb831f + + 1pt + + + White + + 1pt + + + White + + 1pt + + + #eb831f + + 1pt + + 2pt + 2pt + 2pt + 2pt + + + 4 + + + + + + + + + 0.07938cm + + + + + true + true + + + + + ISR + + + + + + + Textbox61 + + =Microsoft.VisualBasic.Interaction.IIF(Fields!Tra001BaseDR.Value > 0, False, True) + + + + + + + + + + + #eb831f + + + + + + + + + + + + + true + true + + + + + Traslado + + + + + + + Textbox204 + + =Microsoft.VisualBasic.Interaction.IIF(Fields!Tra001BaseDR.Value > 0, False, True) + + + + + + + + + + + + + + + + + + + + + + + true + true + + + + + =Fields!ImpPagado.Value + + + + + + + ImpPagado + + =Microsoft.VisualBasic.Interaction.IIF(Fields!Tra001BaseDR.Value > 0, False, True) + + + + + + + + + + + + + + + + + + + + + + + true + true + + + + + =Fields!Tra001TipoFactorDR.Value + + + + + + + ImpPagado + + =Microsoft.VisualBasic.Interaction.IIF(Fields!Tra001BaseDR.Value > 0, False, True) + + + + + + + + + + + + + + + + + + + + + + + true + true + + + + + =Fields!Tra001TasaOCuotaDR.Value + + + + + + + ImpPagado + + =Microsoft.VisualBasic.Interaction.IIF(Fields!Tra001BaseDR.Value > 0, False, True) + + + + + + + + + + + + + + + + + + + + + + + true + true + + + + + =Fields!Tra001ImporteDR.Value + + + + + + + ImpPagado + + =Microsoft.VisualBasic.Interaction.IIF(Fields!Tra001BaseDR.Value > 0, False, True) + + + + + + + + + + + + + + + + + + + + + + + true + true + + + + + + + + + + + + White + + 1pt + + + #eb831f + + 1pt + + + White + + 1pt + + + #eb831f + + 1pt + + 2pt + 2pt + 2pt + 2pt + + + 4 + + + + + + + + + 0.07938cm + + + + + true + true + + + + + IVA + + + + + + + Textbox61 + + =Microsoft.VisualBasic.Interaction.IIF(Fields!Tra002BaseDR.Value > 0, False, True) + + + + + + + + + + + #eb831f + + + + + + + + + + + + + true + true + + + + + Traslado + + + + + + + Textbox204 + + =Microsoft.VisualBasic.Interaction.IIF(Fields!Tra002BaseDR.Value > 0, False, True) + + + + + + + + + + + + + + + + + + + + + + + true + true + + + + + =Fields!ImpPagado.Value + + + + + + + ImpPagado + + =Microsoft.VisualBasic.Interaction.IIF(Fields!Tra002BaseDR.Value > 0, False, True) + + + + + + + + + + + + + + + + + + + + + + + true + true + + + + + =Fields!Tra002TipoFactorDR.Value + + + + + + + ImpPagado + + =Microsoft.VisualBasic.Interaction.IIF(Fields!Tra002BaseDR.Value > 0, False, True) + + + + + + + + + + + + + + + + + + + + + + + true + true + + + + + =Fields!Tra002TasaOCuotaDR.Value + + + + + + + ImpPagado + + =Microsoft.VisualBasic.Interaction.IIF(Fields!Tra002BaseDR.Value > 0, False, True) + + + + + + + + + + + + + + + + + + + + + + + true + true + + + + + =Fields!Tra002ImporteDR.Value + + + + + + + ImpPagado + + =Microsoft.VisualBasic.Interaction.IIF(Fields!Tra002BaseDR.Value > 0, False, True) + + + + + + + + + + + + + + + + + + + + + + + true + true + + + + + + + + + + + + White + + 1pt + + + #eb831f + + 1pt + + + White + + 1pt + + + #eb831f + + 1pt + + 2pt + 2pt + 2pt + 2pt + + + 4 + + + + + + + + + 0.07938cm + + + + + true + true + + + + + IEPS + + + + + + + Textbox61 + + =Microsoft.VisualBasic.Interaction.IIF(Fields!Tra003BaseDR.Value > 0, False, True) + + + + + + + + + + + #eb831f + + + + + + + + + + + + + true + true + + + + + Traslado + + + + + + + Textbox204 + + =Microsoft.VisualBasic.Interaction.IIF(Fields!Tra003BaseDR.Value > 0, False, True) + + + + + + + + + + + + + + + + + + + + + + + true + true + + + + + =Fields!ImpPagado.Value + + + + + + + ImpPagado + + =Microsoft.VisualBasic.Interaction.IIF(Fields!Tra003BaseDR.Value > 0, False, True) + + + + + + + + + + + + + + + + + + + + + + + true + true + + + + + =Fields!Tra003TipoFactorDR.Value + + + + + + + ImpPagado + + =Microsoft.VisualBasic.Interaction.IIF(Fields!Tra003BaseDR.Value > 0, False, True) + + + + + + + + + + + + + + + + + + + + + + + true + true + + + + + =Fields!Tra003TasaOCuotaDR.Value + + + + + + + ImpPagado + + =Microsoft.VisualBasic.Interaction.IIF(Fields!Tra003BaseDR.Value > 0, False, True) + + + + + + + + + + + + + + + + + + + + + + + true + true + + + + + =Fields!Tra003ImporteDR.Value + + + + + + + ImpPagado + + =Microsoft.VisualBasic.Interaction.IIF(Fields!Tra003BaseDR.Value > 0, False, True) + + + + + + + + + + + + + + + + + + + + + + + true + true + + + + + + + + + + + + White + + 1pt + + + #eb831f + + 1pt + + + White + + 1pt + + + #eb831f + + 1pt + + 2pt + 2pt + 2pt + 2pt + + + 4 + + + + + + + + + 0.07938cm + + + + + true + true + + + + + ISR + + + + + + + Textbox61 + + =Microsoft.VisualBasic.Interaction.IIF(Fields!Ret001BaseDR.Value > 0, False, True) + + + + + + + + + + + #eb831f + + + + + + + + + + + + + true + true + + + + + Retención + + + + + + + Textbox207 + + =Microsoft.VisualBasic.Interaction.IIF(Fields!Ret001BaseDR.Value > 0, False, True) + + + + + + + + + + + + + + + + + + + + + + + true + true + + + + + =Fields!ImpPagado.Value + + + + + + + ImpPagado + + =Microsoft.VisualBasic.Interaction.IIF(Fields!Ret001BaseDR.Value > 0, False, True) + + + + + + + + + + + + + + + + + + + + + + + true + true + + + + + =Fields!Ret001TipoFactorDR.Value + + + + + + + ImpPagado + + =Microsoft.VisualBasic.Interaction.IIF(Fields!Ret001BaseDR.Value > 0, False, True) + + + + + + + + + + + + + + + + + + + + + + + true + true + + + + + =Fields!Ret001TasaOCuotaDR.Value + + + + + + + ImpPagado + + =Microsoft.VisualBasic.Interaction.IIF(Fields!Ret001BaseDR.Value > 0, False, True) + + + + + + + + + + + + + + + + + + + + + + + true + true + + + + + =Fields!Ret001ImporteDR.Value + + + + + + + ImpPagado + + =Microsoft.VisualBasic.Interaction.IIF(Fields!Ret001BaseDR.Value > 0, False, True) + + + + + + + + + + + + + + + + + + + + + + + true + true + + + + + + + + + + + + White + + 1pt + + + #eb831f + + 1pt + + + White + + 1pt + + + #eb831f + + 1pt + + 2pt + 2pt + 2pt + 2pt + + + 4 + + + + + + + + + 0.07938cm + + + + + true + true + + + + + IVA + + + + + + + Textbox61 + + =Microsoft.VisualBasic.Interaction.IIF(Fields!Ret002BaseDR.Value > 0, False, True) + + + + + + + + + + + #eb831f + + + + + + + + + + + + + true + true + + + + + Retención + + + + + + + Textbox207 + + =Microsoft.VisualBasic.Interaction.IIF(Fields!Ret002BaseDR.Value > 0, False, True) + + + + + + + + + + + + + + + + + + + + + + + true + true + + + + + =Fields!ImpPagado.Value + + + + + + + ImpPagado + + =Microsoft.VisualBasic.Interaction.IIF(Fields!Ret002BaseDR.Value > 0, False, True) + + + + + + + + + + + + + + + + + + + + + + + true + true + + + + + =Fields!Ret002TipoFactorDR.Value + + + + + + + ImpPagado + + =Microsoft.VisualBasic.Interaction.IIF(Fields!Ret002BaseDR.Value > 0, False, True) + + + + + + + + + + + + + + + + + + + + + + + true + true + + + + + =Fields!Ret002TasaOCuotaDR.Value + + + + + + + ImpPagado + + =Microsoft.VisualBasic.Interaction.IIF(Fields!Ret002BaseDR.Value > 0, False, True) + + + + + + + + + + + + + + + + + + + + + + + true + true + + + + + =Fields!Ret002ImporteDR.Value + + + + + + + ImpPagado + + =Microsoft.VisualBasic.Interaction.IIF(Fields!Ret002BaseDR.Value > 0, False, True) + + + + + + + + + + + + + + + + + + + + + + + true + true + + + + + + + + + + + + White + + 1pt + + + #eb831f + + 1pt + + + White + + 1pt + + + #eb831f + + 1pt + + 2pt + 2pt + 2pt + 2pt + + + 4 + + + + + + + + + 0.09729cm + + + + + true + true + + + + + IEPS + + + + + + + Textbox59 + + =Microsoft.VisualBasic.Interaction.IIF(Fields!Ret003BaseDR.Value > 0, False, True) + + + + + White + + + + #eb831f + + + + #eb831f + + + + White + + + + + + + + + + true + true + + + + + Retención + + + + + + + Textbox207 + + =Microsoft.VisualBasic.Interaction.IIF(Fields!Ret003BaseDR.Value > 0, False, True) + + + + + White + + + + #eb831f + + + + White + + + + White + + + + + + + + + + true + true + + + + + =Fields!ImpPagado.Value + + + + + + + ImpPagado + + =Microsoft.VisualBasic.Interaction.IIF(Fields!Ret003BaseDR.Value > 0, False, True) + + + + + White + + + + #eb831f + + + + White + + + + White + + + + + + + + + + true + true + + + + + =Fields!Ret003TipoFactorDR.Value + + + + + + + ImpPagado + + =Microsoft.VisualBasic.Interaction.IIF(Fields!Ret003BaseDR.Value > 0, False, True) + + + + + White + + + + #eb831f + + + + White + + + + White + + + + + + + + + + true + true + + + + + =Fields!Ret003TasaOCuotaDR.Value + + + + + + + ImpPagado + + =Microsoft.VisualBasic.Interaction.IIF(Fields!Ret003BaseDR.Value > 0, False, True) + + + + + White + + + + #eb831f + + + + White + + + + White + + + + + + + + + + true + true + + + + + =Fields!Ret003ImporteDR.Value + + + + + + + ImpPagado + + =Microsoft.VisualBasic.Interaction.IIF(Fields!Ret003BaseDR.Value > 0, False, True) + + + + + White + + + + #eb831f + + + + White + + + + White + + + es-MX + + + + + + + + true + true + + + + + + + + + + + + White + + 1pt + + + #eb831f + + 1pt + + + White + + 1pt + + + #eb831f + + 1pt + + 2pt + 2pt + 2pt + 2pt + + + 4 + + + + + + + @@ -1845,6 +4093,8 @@ + + @@ -1854,12 +4104,22 @@ + + + + + + + + + + DataSet2 5.05cm - 1.09cm + 1.82396cm 20.5314cm 1 - 16.1771cm + 16.62701cm @@ -4510,6 +6769,134 @@ TipoCambioDR System.String + + RetIVA + System.Float + + + RetISR + System.Float + + + Tra001ImpuestoDR + System.String + + + Tra001TipoFactorDR + System.String + + + Tra001TasaOCuotaDR + System.String + + + Tra001ImporteDR + System.Float + + + Tra002ImpuestoDR + System.String + + + Tra002TipoFactorDR + System.String + + + Tra002TasaOCuotaDR + System.String + + + Tra002ImporteDR + System.Float + + + Tra003ImpuestoDR + System.String + + + Tra003TipoFactorDR + System.String + + + Tra003TasaOCuotaDR + System.String + + + Tra003ImporteDR + System.Float + + + Ret001ImpuestoDR + System.String + + + Ret001TipoFactorDR + System.String + + + Ret001TasaOCuotaDR + System.String + + + Ret001ImporteDR + System.Float + + + Ret002ImpuestoDR + System.String + + + Ret002TipoFactorDR + System.String + + + Ret002TasaOCuotaDR + System.String + + + Ret002ImporteDR + System.Float + + + Ret003ImpuestoDR + System.String + + + Ret003TipoFactorDR + System.String + + + Ret003TasaOCuotaDR + System.String + + + Ret003ImporteDR + System.Float + + + Tra001BaseDR + System.Float + + + Tra002BaseDR + System.Float + + + Tra003BaseDR + System.Float + + + Ret001BaseDR + System.Float + + + Ret002BaseDR + System.Float + + + Ret003BaseDR + System.Float + DataSet @@ -4816,6 +7203,18 @@ true ReportParameter1 + + String + true + true + ReportParameter1 + + + String + true + true + ReportParameter1 + diff --git a/vwd.webinfo b/vwd.webinfo index 2e4bdf3e2..bd3dbe60c 100644 --- a/vwd.webinfo +++ b/vwd.webinfo @@ -542,6 +542,10 @@ + + + + From dcd4db994abaef2456fd80e68c14b066228ff333 Mon Sep 17 00:00:00 2001 From: rakcsle Date: Mon, 29 Aug 2022 19:24:29 -0700 Subject: [PATCH 42/54] Correcion logo recibo de pago e 70 --- Empresas/70/Formatos/ReciboDePago.rdlc | 337 ++----------------------- 1 file changed, 24 insertions(+), 313 deletions(-) diff --git a/Empresas/70/Formatos/ReciboDePago.rdlc b/Empresas/70/Formatos/ReciboDePago.rdlc index 2d298c914..aaa6da6e0 100644 --- a/Empresas/70/Formatos/ReciboDePago.rdlc +++ b/Empresas/70/Formatos/ReciboDePago.rdlc @@ -318,7 +318,7 @@ - 0.52062cm + 0.49541cm @@ -595,285 +595,6 @@ - - 0.16cm - - - - - true - true - - - - - - - - - - - - #eb831f - - 1pt - - - #eb831f - - 1pt - - - #eb831f - - 1pt - - - #eb831f - - 1pt - - #eb831f - 2pt - 2pt - 2pt - 2pt - - - - - - - - true - true - - - - - - - - - - - - #eb831f - - 1pt - - - #eb831f - - 1pt - - - #eb831f - - 1pt - - - #eb831f - - 1pt - - #eb831f - 2pt - 2pt - 2pt - 2pt - - - - - - - - true - true - - - - - - - - - - - - #eb831f - - 1pt - - - #eb831f - - 1pt - - - #eb831f - - 1pt - - - #eb831f - - 1pt - - #eb831f - 2pt - 2pt - 2pt - 2pt - - - - - - - - true - true - - - - - - - - - - - - Textbox23 - - - - #eb831f - - 1pt - - - #eb831f - - 1pt - - - #eb831f - - 1pt - - - #eb831f - - 1pt - - #eb831f - 2pt - 2pt - 2pt - 2pt - - - - - - - - true - true - - - - - - - - - - - - Textbox33 - - - - #eb831f - - 1pt - - - #eb831f - - 1pt - - - #eb831f - - 1pt - - - #eb831f - - 1pt - - #eb831f - 2pt - 2pt - 2pt - 2pt - - - - - - @@ -889,12 +610,11 @@ - DataSet2 3.16535cm - 1.17062cm + 0.98541cm 20.53564cm - true @@ -1809,7 +1528,6 @@ Top - true @@ -1844,7 +1562,6 @@ Top - true @@ -1879,7 +1596,6 @@ Top - true @@ -1914,7 +1630,6 @@ Top - true @@ -1949,7 +1664,6 @@ Top - true @@ -1984,17 +1698,17 @@ White - + 1pt White - + 1pt #eb831f - + 1pt 2pt @@ -4118,8 +3832,8 @@ DataSet2 - 5.05cm - 1.82396cm + 4.8595cm + 1.82398cm 20.5314cm 1 - 16.62701cm + 16.43651cm @@ -6329,7 +6043,7 @@ FitProportional 0.10737cm 1.5776cm - 2.88998cm + 2.74887cm 2.5499cm 4 - 0.84667cm + 0.41981cm true true @@ -6538,7 +6252,6 @@ Textbox35 - 0.17639cm 17.56289cm 0.41981cm 2.94979cm @@ -6585,7 +6298,6 @@ Textbox29 - 0.21343cm 0.01844cm 0.41981cm 6.8491cm @@ -6634,7 +6346,6 @@ Textbox31 - 0.21343cm 9.17244cm 0.41981cm 6.02198cm From 6e2c52945303f093d9e618fa9b03a531c40a870d Mon Sep 17 00:00:00 2001 From: Jonathan Alexis Perez Morales Date: Tue, 30 Aug 2022 11:42:05 -0700 Subject: [PATCH 43/54] BDH. solo mostrar codigo de barras en acumuladores, RecepcionAlmacen.aspx --- Inventarios/RecepcionAlmacen.aspx.vb | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/Inventarios/RecepcionAlmacen.aspx.vb b/Inventarios/RecepcionAlmacen.aspx.vb index e48ec5fd5..9a5fefa07 100644 --- a/Inventarios/RecepcionAlmacen.aspx.vb +++ b/Inventarios/RecepcionAlmacen.aspx.vb @@ -1394,6 +1394,9 @@ Partial Class Inventarios_RecepcionAlmacen If Not TmDT.Columns.Contains("CantidadSeleccionada") Then TmDT.Columns.Add("CantidadSeleccionada", GetType(Decimal)) End If + If Not TmDT.Columns.Contains("CveCategoria") Then + TmDT.Columns.Add("CveCategoria", GetType(Integer)) + End If GvInv.Columns(2).Visible = False @@ -1557,6 +1560,11 @@ Partial Class Inventarios_RecepcionAlmacen 'FUNCIONALIDAD PISTOLA DE CODIGOS If UsuarioActual.Empresa.Funcionalidad(132) = "1" And e.Row.DBCampo("CodigoBarras").Trim <> "" And Not UsuarioActual.TienePermisoProceso(174) Then e.Row.FCTextBox("TbCantidadF").Enabled = False + If UsuarioActual.Empresa.Funcionalidad(531) = "1" Then 'acumuladoras + If e.Row.DBCampo("CveCategoria") <> "249" Then + e.Row.FCTextBox("TbCantidadF").Enabled = True + End If + End If End If If e.Row.DBCampo("CantidadF").ToDecimal = 0 Then @@ -1606,7 +1614,7 @@ Partial Class Inventarios_RecepcionAlmacen Dim TxtCantidad = GvInv.Rows(Gvr.RowIndex).FCTextBox("TbCantidadF") If Gvr.DataKey("CantidadF").ToDecimal - TxtCantidad.Text.ToDecimal - 1 >= 0 Then - If Gvr.DataKey("AplicaSerieLote") = "True" Then + If Gvr.DataKey("AplicaSerie") = "True" Then TdSeriePS.Visible = True TxtSeriePS.Focus() From 53cb2bbbc8a84c93042e610a9e6670c46c78bb26 Mon Sep 17 00:00:00 2001 From: rakcsle Date: Thu, 1 Sep 2022 08:18:09 -0700 Subject: [PATCH 44/54] RepServicioDomicilio base --- App_Code/ClsPaginas.vb | 53 ++- Ashx/CargaEventos.ashx | 65 ++- Compras/Compras.aspx | 4 +- Empresas/1/Formatos/Factura.rdlc | 498 ++++++++++++++++++++- OS/Asignaciones.aspx | 2 +- OS/Asignaciones.aspx.vb | 27 ++ OS/OrdenesServicios.aspx.vb | 13 +- OS/RepServicioDomicilio.aspx | 742 +++++++++++++++++++++++++++++++ OS/RepServicioDomicilio.aspx.vb | 272 +++++++++++ 9 files changed, 1657 insertions(+), 19 deletions(-) create mode 100644 OS/RepServicioDomicilio.aspx create mode 100644 OS/RepServicioDomicilio.aspx.vb diff --git a/App_Code/ClsPaginas.vb b/App_Code/ClsPaginas.vb index 1e743cf35..241098fd9 100644 --- a/App_Code/ClsPaginas.vb +++ b/App_Code/ClsPaginas.vb @@ -5606,7 +5606,7 @@ Public Class ClsPaginas PaginaDict.Add("/Contabilidad/OCDetalleAlmacen.aspx".ToUpper(), -1) PaginaDict.Add("/Agropecuaria/CierreCultivo.aspx".ToUpper(), 1326) - + PaginaDict.Add("/Inventarios/RepRSCO.aspx".ToUpper(), 1328) @@ -5641,6 +5641,9 @@ Public Class ClsPaginas PaginaDict.Add("/Contabilidad2/RepBalanceGeneralHorizontal.aspx".ToUpper(), -1) + PaginaDict.Add("/OS/RepServicioDomicilio.aspx".ToUpper(), -1) + + 'ECOMMERCE @@ -7041,6 +7044,9 @@ Public Class ClsPaginas Vta.SelloCFDi = "Sin Timbrar" Vta.SelloSAT = "Sin Timbrar" + Dim CETipoOperacion = "", CEClavePedimento As String = "", CEIncoterm As String = "", CEId As String = "", CEMotivoTraslado As String = "", CETipoCambio As String = "" + Dim RCETipoOperacion As String = "", RCEClavePedimento As String = "", RCEIncoterm As String = "", RCEMotivoTraslado As String = "" + 'SI ESTA TIMBRADA - CON XML If File.Exists(PathXML) AndAlso Vta.Serie <> "VistaPrevia" Then 'Cuando es vista previe y coincide la serie y folio se ponen los datos fiscales Dim XmlDoc As New System.Xml.XmlDocument @@ -7077,6 +7083,38 @@ Public Class ClsPaginas Vta.SelloCFDi = XmlDoc.DocumentElement("cfdi:Complemento").ChildNodes(i).Attributes("SelloCFD").InnerText Vta.SelloSAT = XmlDoc.DocumentElement("cfdi:Complemento").ChildNodes(i).Attributes("SelloSAT").InnerText End If + + If XmlDoc.DocumentElement("cfdi:Complemento").ChildNodes(i).Name = "cce11:ComercioExterior" Then + + CETipoOperacion = XmlDoc.DocumentElement("cfdi:Complemento").ChildNodes(i).Attributes("TipoOperacion").InnerText + CEClavePedimento = XmlDoc.DocumentElement("cfdi:Complemento").ChildNodes(i).Attributes("ClaveDePedimento").InnerText + CEIncoterm = XmlDoc.DocumentElement("cfdi:Complemento").ChildNodes(i).Attributes("Incoterm").InnerText + + + Dim namespaces As XmlNamespaceManager = New XmlNamespaceManager(XmlDoc.NameTable) + namespaces.AddNamespace("cce11", "http://www.sat.gob.mx/ComercioExterior11") + + CEId = "" + Try + CEId = XmlDoc.DocumentElement("cfdi:Complemento").ChildNodes(i).SelectSingleNode("//cce11:Destinatario", namespaces).Attributes("NumRegIdTrib").InnerText 'XmlDoc.SelectNodes("//cfdi:Complemento/tfd:TimbreFiscalDigital/cce11:Destinatario") + Catch ex As Exception + + End Try + + + CEMotivoTraslado = XmlDoc.DocumentElement("cfdi:Complemento").ChildNodes(i).Attributes("MotivoTraslado").InnerText + CETipoCambio = XmlDoc.DocumentElement("cfdi:Complemento").ChildNodes(i).Attributes("TipoCambioUSD").InnerText + + + + + RCETipoOperacion = GlobalDTTipoOperacion.FiltroPrimeroValor("Descripcion", $"ClaveSATTipoOperacion = '{CETipoOperacion}'") + RCEClavePedimento = GlobalDTClavePedimento.FiltroPrimeroValor("Descripcion", $"ClaveSATPedimento = '{CEClavePedimento}'") + RCEIncoterm = GlobalDTIncoterm.FiltroPrimeroValor("Descripcion", $"ClaveSATIncoterm = '{CEIncoterm}'") + RCEMotivoTraslado = GlobalDTSATMotivoTraslado.FiltroPrimeroValor("MotivoTraslado", $"ClaveSATMotivoTraslado = '{CEMotivoTraslado}'") + 'RCETipoCambio = {RCETipoCambio + End If + Next End If @@ -7191,6 +7229,17 @@ Public Class ClsPaginas Dim params As New List(Of ReportParameter) + + If RCETipoOperacion.Trim.Length > 0 Then + params.Add(New ReportParameter("CETipoOperacion", RCETipoOperacion)) + params.Add(New ReportParameter("CEClavePedimento", RCEClavePedimento)) + params.Add(New ReportParameter("CEIncoterm", RCEIncoterm)) + params.Add(New ReportParameter("CEId", CEId)) + params.Add(New ReportParameter("CEMotivoTraslado", RCEMotivoTraslado)) + params.Add(New ReportParameter("CETipoCamvio", CETipoCambio)) + End If + + If UsuarioActual.Empresa.Funcionalidad(350) = "1" Then params.Add(New ReportParameter("CFDIVersion", Vta.Version)) If Vta.Cliente.CodigoRegimenFiscal.ToString.Length > 0 Then @@ -7915,7 +7964,7 @@ Public Class ClsPaginas Dim payload As New JObject( New JProperty("formato", Formato), New JProperty("ruta", RutaReporte), - New JProperty("UsarFormatoCompilado", false), + New JProperty("UsarFormatoCompilado", False), New JProperty("parametros", paramsArray), New JProperty("dataSource", dataSourceArray) ) diff --git a/Ashx/CargaEventos.ashx b/Ashx/CargaEventos.ashx index f74549f7e..9c23b4c77 100644 --- a/Ashx/CargaEventos.ashx +++ b/Ashx/CargaEventos.ashx @@ -22,22 +22,60 @@ Public Class CargaEventos : Implements IHttpHandler, IRequiresSessionState Dim FI As Date Dim FF As Date - If context.Request("U").ToEntero > 0 Then - CveUsuario = context.Request("U").ToEntero - CveEmpresa = context.Request("E").ToEntero - FI = context.Request("start").ToDate + If context.Request("METODO") IsNot Nothing Then - FF = context.Request("end").ToDate - If Not GetEventos(CveUsuario, CveEmpresa, FI, FF) Then - 'Convierte el objeto de Eventos en JSON - 'Dim oSerializer As System.Web.Script.Serialization.JavaScriptSerializer = New System.Web.Script.Serialization.JavaScriptSerializer - Dim sJSON As String = Newtonsoft.Json.JsonConvert.SerializeObject(events) + Select Case context.Request("METODO") + Case "servicio_domicilio" + + If context.Request("U").ToEntero > 0 Then + + CveUsuario = context.Request("U").ToEntero + CveEmpresa = context.Request("E").ToEntero + FI = context.Request("start").ToDate + FF = context.Request("end").ToDate + + If Not GetEventos(CveUsuario, CveEmpresa, FI, FF, CveOS:=-2) Then + 'Convierte el objeto de Eventos en JSON + 'Dim oSerializer As System.Web.Script.Serialization.JavaScriptSerializer = New System.Web.Script.Serialization.JavaScriptSerializer + Dim sJSON As String = Newtonsoft.Json.JsonConvert.SerializeObject(events) + + context.Response.Write(sJSON) + End If + + End If + + + Exit Select + Case Else + Exit Select + End Select + + + + Else + If context.Request("U").ToEntero > 0 Then + CveUsuario = context.Request("U").ToEntero + CveEmpresa = context.Request("E").ToEntero + FI = context.Request("start").ToDate + + FF = context.Request("end").ToDate + If Not GetEventos(CveUsuario, CveEmpresa, FI, FF) Then + 'Convierte el objeto de Eventos en JSON + 'Dim oSerializer As System.Web.Script.Serialization.JavaScriptSerializer = New System.Web.Script.Serialization.JavaScriptSerializer + Dim sJSON As String = Newtonsoft.Json.JsonConvert.SerializeObject(events) + + context.Response.Write(sJSON) + End If - context.Response.Write(sJSON) End If - End If + + + + + + End Sub Public ReadOnly Property IsReusable() As Boolean Implements IHttpHandler.IsReusable @@ -47,14 +85,15 @@ Public Class CargaEventos : Implements IHttpHandler, IRequiresSessionState End Property - Private Function GetEventos(CveUsuario As Integer, CveEmpresa As Integer, pFI As Date, pFF As Date) As Boolean + Private Function GetEventos(CveUsuario As Integer, CveEmpresa As Integer, pFI As Date, pFF As Date, Optional CveOS As Integer = -1) As Boolean Dim ObjEventos As New ClsOIEventos Dim ErrorEventos = False Dim CveEmpresaCRM As Integer = 0 - If ObjEventos.GetEventos(-1, -1, -1, "-1", "-1", -1, CveUsuario, CveUsuario, -1, -1, -1, "-1", -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, CveUsuario, CveUsuario, CveUsuario, CveEmpresa, pFI, pFF) Then + If ObjEventos.GetEventos(-1, -1, -1, "-1", "-1", -1, CveUsuario, CveUsuario, -1, -1, -1, "-1", -1, -1, -1, -1, CveOS, -1, -1, -1, -1, -1, CveUsuario, CveUsuario, CveUsuario, CveEmpresa, pFI, pFF) Then If ObjEventos.DtResultados.Rows.Count > 0 Then events = New List(Of CalendarEvent) + Try For Each dr As DataRow In ObjEventos.DtResultados.Rows Dim cevent As CalendarEvent = New CalendarEvent() diff --git a/Compras/Compras.aspx b/Compras/Compras.aspx index f0da08cbc..a55268f82 100644 --- a/Compras/Compras.aspx +++ b/Compras/Compras.aspx @@ -6246,7 +6246,9 @@ }); $('input[name*=HdnOC1IVA]').each(function () { - SumaIVA += ToDouble($(this).val()); + + let tmpiva = (ToDouble($(this).val())).toFixed(2) + SumaIVA += ToDouble(tmpiva); }); $('input[name*=HdnOC1RetIVA]').each(function () { diff --git a/Empresas/1/Formatos/Factura.rdlc b/Empresas/1/Formatos/Factura.rdlc index 677f609ca..4ad240d0e 100644 --- a/Empresas/1/Formatos/Factura.rdlc +++ b/Empresas/1/Formatos/Factura.rdlc @@ -3173,8 +3173,468 @@ + + + + true + true + + + + + Tipo Operación: + + + + + + 2pt + 2pt + 2pt + 2pt + + + + true + true + + + + + =Parameters!CETipoOperacion.Value + + + + + + 2pt + 2pt + 2pt + 2pt + + + + true + true + + + + + Incoterm + + + + + + 2pt + 2pt + 2pt + 2pt + + + + true + true + + + + + =Parameters!CEIncoterm.Value + + + + + + 2pt + 2pt + 2pt + 2pt + + + + true + true + + + + + Motivo Traslado + + + + + + 2pt + 2pt + 2pt + 2pt + + + + true + true + + + + + =Parameters!CEMotivoTraslado.Value + + + + + + 2pt + 2pt + 2pt + 2pt + + + + true + true + + + + + Clave Pedimento + + + + + + 2pt + 2pt + 2pt + 2pt + + + + true + true + + + + + =Parameters!CEClavePedimento.Value + + + + + + 2pt + 2pt + 2pt + 2pt + + + + true + true + + + + + Num Reg Id Trib + + + + + + 2pt + 2pt + 2pt + 2pt + + + + true + true + + + + + =Parameters!CEId.Value + + + + + + 2pt + 2pt + 2pt + 2pt + + + + true + true + + + + + Tipo Cambio + + + + + + 2pt + 2pt + 2pt + 2pt + + + + true + true + + + + + =Parameters!CETipoCamvio.Value + + + + + + + Textbox80 + 2.73506cm + 2.46012cm + 0.36214cm + 13.59648cm + 11 + + + 2pt + 2pt + 2pt + 2pt + + + + true + true + + + + + COMPLEMENTO COMERCIO EXTERIOR + + + + + + 2pt + 2pt + 2pt + 2pt + + + + true + 16.99253cm + 0.53823cm + 3.0972cm + 19.06642cm + 47 + + = IIF( LEN(Parameters!CETipoOperacion.Value) > 0, False, True) + + + + + - 16.79496cm + 20.08973cm + + + + + + + + + + Reporte Servicios a Domicilio + + + + + + +
+
+ +
+
+
+ + Servicios a Domicilio +
+
+
+ +
+
+ + + + + + + + +
+
+
+
+ + + + +
+ + + + + + + + diff --git a/OS/RepServicioDomicilio.aspx.vb b/OS/RepServicioDomicilio.aspx.vb new file mode 100644 index 000000000..ffb346f99 --- /dev/null +++ b/OS/RepServicioDomicilio.aspx.vb @@ -0,0 +1,272 @@ +Option Explicit On +Option Strict On + +Imports Extensiones +Imports System.Data +Imports Microsoft.Reporting.WebForms +Imports System.Web.Services + +Partial Class OS_RepServicioDomicilio + Inherits ClsPaginas + +#Region "PROPIEDADES" + + + Private Property DtDatos As DataTable + Get + DtDatos = DirectCast(ViewState("DtDatos"), DataTable) + End Get + + Set(ByVal value As DataTable) + ViewState("DtDatos") = value + End Set + End Property + + Private Property DtColor As DataTable + Get + Return DirectCast(ViewState("DtColor"), DataTable) + End Get + Set(value As DataTable) + ViewState("DtColor") = value + End Set + End Property + Private Property Agrupador As String + Get + Return ViewState("Agrupador").ToString + End Get + + Set(value As String) + ViewState("Agrupador") = value + End Set + End Property + Private Property TCEspecifico As Double + Get + Return ViewState("TCEspecifico").ToString.ToDouble + End Get + + Set(value As Double) + ViewState("TCEspecifico") = value + End Set + End Property + Private Property TipoCambio As Integer + Get + Return ViewState("TipoCambio").ToString.ToEntero + End Get + + Set(value As Integer) + ViewState("TipoCambio") = value + End Set + End Property + + +#End Region + + Protected Sub Page_Load(sender As Object, e As System.EventArgs) Handles Me.Load + If Not IsPostBack Then + InicializaCalendar() + End If + End Sub + +#Region "CARGAS" + + Private Sub SetValues() + + + + End Sub + + + Private Sub CargaDatos() + + + End Sub + +#End Region + +#Region " FULL CALENDAR " + Private Sub InicializaCalendar() + RegistraScript("InitCalendar();") + + HdnU.Value = UsuarioActual.CveUsuario.ToString + HdnE.Value = UsuarioActual.CveEmpresa.ToString + + DirectCast(Master.FindControl("TSM"), ScriptManager).EnablePageMethods = True + CargaTiposAgenda() + CheckRecurrencia.Attributes.Add("onclick", "CheckAdd(this);") + End Sub + Private Sub CargaTiposAgenda() + Dim ObjEventos As New ClsOIEventos + + If ObjEventos.GetAgendaTipo() Then + DdlAgedaTipo.DataSource = ObjEventos.DtResultados + DdlAgedaTipo.DataBind() + DdlAgedaTipo.Items.Insert(0, New ListItem("Seleccione", "-1")) + Else + Alert("Ocurrió un error al obtener los tipos de agenda. Por favor recargue la página", TipoMensaje.MsgError) + End If + + ObjEventos.Dispose() + End Sub + Protected Sub BtnGuardar_Click(sender As Object, e As EventArgs) + Dim ObjEventos As New ClsOIEventos + + Dim FechaInicio = TxtFechaInicioAgenda.Text.ToDateTime() + Dim FechaFin = TxtFechaFinAgenda.Text.ToDateTime() + + RegistraScript("GetView();") + + Dim RecurrenciaTipo = 0, Frecuencia = -1, DiasSemana = "-1", Dias = -1, Mes = -1, RecurrenciaFin = "-1" + If CheckRecurrencia.Checked Then + RecurrenciaTipo = RBLRecurrencia.SelectedValue.ToEntero + Frecuencia = TxtFrecuencia.Text.ToEntero + + 'OBTENEMOS LOS DIAS SELECCIONADOS EN LA OPCION DE RECURRENCIA POR SEMANA + Select Case RecurrenciaTipo + Case 3 + Dim StringDias = "" + For Each item As ListItem In CheckDiasSemana.Items + If item.Selected Then + If StringDias.Length > 0 Then + StringDias += "," + End If + StringDias += item.Value + End If + Next + If StringDias.Length > 0 Then + DiasSemana = StringDias + End If + End Select + + + 'If RBSinFechaFinAdd.Checked Then + ' RecurrenciaFin = "-1" + 'Else + If RBNumeroOcurrencias.Checked Then + RecurrenciaFin = TxtNumeroOcurrencias.Text + ElseIf RBFechaFin.Checked Then + RecurrenciaFin = TxtFechaFinRecurrencia.Text + Else + RecurrenciaFin = "-1" + End If + Else + If HdnCveEvento.Value.ToEntero > 0 Then + Frecuencia = -2 : DiasSemana = "-2" : Dias = -2 : Mes = -2 : RecurrenciaFin = "-2" + End If + End If + + '11/05/2018 - GASTO RECURRENTE + Dim CveTipoEvento As Integer = IIf(ChkGastoRecurrente.Checked, 10, 2).ToString().ToEntero() + Dim Importe As Double = Convert.ToDouble(IIf(ChkGastoRecurrente.Checked, TxtImporteGastoRecurrente.Text, "-1")) + + If HdnCveEvento.Value.ToEntero > 0 Then + If ObjEventos.UpdateEvento(TxtAsuntoAgenda.Text, TxtDescripcionAgenda.Text, DdlPrioridad.SelectedValue.ToEntero, DdlAgedaTipo.SelectedValue.ToEntero, -1, FechaInicio, FechaFin, -1, "-1", HdnCveEvento.Value.ToEntero, "-1", + RecurrenciaTipo, Frecuencia, DiasSemana, Dias, Mes, RecurrenciaFin, Importe:=Importe) Then + Alert("El Evento se actualizó correctamente", TipoMensaje.MsgInformacion) + Else + Alert("Ocurrió un error al actualizar el evento", TipoMensaje.MsgAdvertencia) + End If + Else + If ObjEventos.AddEventoAgenda(DdlAgedaTipo.SelectedValue.ToEntero, TxtAsuntoAgenda.Text, TxtDescripcionAgenda.Text, DdlPrioridad.SelectedValue.ToEntero, FechaInicio, FechaFin, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, + RecurrenciaTipo:=RecurrenciaTipo, Frecuencia:=Frecuencia, DiasSemana:=DiasSemana, Dia:=Dias, Mes:=Mes, RecurrenciaFin:=RecurrenciaFin, CveTipoEvento:=CveTipoEvento, Importe:=Importe) Then + + Alert("El Evento se guardó correctamente", TipoMensaje.MsgInformacion) + Else + Alert("Ocurrió un error al Guardar el evento", TipoMensaje.MsgAdvertencia) + End If + End If + + ObjEventos.Dispose() + RegistraScript("Calendario();SetView();$('#ModalAgenda').modal('hide');", "1234") + LimpiaModalAgenda() + + End Sub + Private Sub LimpiaModalAgenda() + TxtDescripcionAgenda.Text = "" + TxtAsuntoAgenda.Text = "" + DdlPrioridad.SelectedValue = "1" + TxtNumeroOcurrencias.Text = "" + TxtFechaFinRecurrencia.Text = "" + RBFechaFin.Checked = False + RBNumeroOcurrencias.Checked = False + RBLRecurrencia.SelectedValue = "1" + CheckDiasSemana.ClearSelection() + RBLRecurrencia_SelectedIndexChanged(RBLRecurrencia, EventArgs.Empty) + TxtFrecuencia.Text = "1" + LblEmpresaCRM.Text = "" + End Sub + + Protected Sub BtnEliminar_Click(sender As Object, e As EventArgs) + + Dim ObjEventos As New ClsOIEventos + RegistraScript("GetView();") + + If ObjEventos.RemoveEvento(HdnCveEvento.Value.ToEntero, UsuarioActual.CveEmpresa) Then + RegistraScript("Calendario();SetView();$('#ModalAgenda').modal('hide');", "1234") + Alert("El evento se eliminó correctamente", TipoMensaje.MsgInformacion) + Else + Alert("Ocurrió un error al eliminar el evento, por favor intente de nuevo.", TipoMensaje.MsgError) + End If + + ObjEventos.Dispose() + End Sub + + + Public Shared Function EliminaEvento(CveEvento As Integer, CveEmpresa As Integer) As String + Dim ObjEventos As New ClsOIEventos + + ObjEventos.RemoveEvento(CveEvento, CveEmpresa) + + ObjEventos.Dispose() + Return CveEvento.ToString + End Function + + + Public Shared Function ActualizaEvento(ClsEvent As CalendarEvent) As String + Dim ObjEventos As New ClsOIEventos + + Dim FechaInicio = DateTimeOffset.Parse(ClsEvent.start).DateTime + Dim FechaFin = DateTimeOffset.Parse(ClsEvent.end).DateTime + + If ObjEventos.UpdateEvento("-1", "-1", -1, -1, -1, FechaInicio, FechaFin, -1, "-1", ClsEvent.id) Then + End If + + ObjEventos.Dispose() + Return "a" + End Function + Protected Sub RBLRecurrencia_SelectedIndexChanged(sender As Object, e As EventArgs) + Select Case RBLRecurrencia.SelectedValue.ToEntero + Case 1 + LblTextoFrecuencia.Text = "Hora(s)" + TrDiasSemanaAdd.Style("display") = "none" + Case 2 + LblTextoFrecuencia.Text = "Dia(s)" + TrDiasSemanaAdd.Style("display") = "none" + Case 3 + LblTextoFrecuencia.Text = "Semana(s)" + TrDiasSemanaAdd.Style("display") = "block" + + 'Chequea los dias seleccionados en la recurrencia + For Each item As ListItem In CheckDiasSemana.Items + If HdnDiasSemanaAgendar.Value.Contains(item.Value) Then + item.Selected = True + Else + item.Selected = False + End If + Next + Case 4 + LblTextoFrecuencia.Text = "Mes(es)" + TrDiasSemanaAdd.Style("display") = "none" + Case 5 + LblTextoFrecuencia.Text = "Año(s)" + TrDiasSemanaAdd.Style("display") = "none" + Case Else + End Select + UpRecurrencia.Update() + End Sub + Protected Sub BtnActualizaAdd_Click(sender As Object, e As EventArgs) + RBLRecurrencia_SelectedIndexChanged(RBLRecurrencia, EventArgs.Empty) + End Sub +#End Region + + +End Class From 094a8b3b042d0c3745e937a5aed4ee372b6ec6a5 Mon Sep 17 00:00:00 2001 From: rrene Date: Thu, 1 Sep 2022 13:43:55 -0700 Subject: [PATCH 45/54] -- proceso para cierr ejercicio --- Contabilidad2/RepSituacionFinanciera.aspx | 6 +++--- Contabilidad2/RepSituacionFinanciera.aspx.vb | 1 + 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/Contabilidad2/RepSituacionFinanciera.aspx b/Contabilidad2/RepSituacionFinanciera.aspx index f44b3bb98..448192f6a 100644 --- a/Contabilidad2/RepSituacionFinanciera.aspx +++ b/Contabilidad2/RepSituacionFinanciera.aspx @@ -20,7 +20,7 @@ <%-- --%>
  • - Cerrar Ejercicio + Cerrar Ejercicio
  • @@ -603,8 +603,8 @@
    -
    - +
    +
    diff --git a/Contabilidad2/RepSituacionFinanciera.aspx.vb b/Contabilidad2/RepSituacionFinanciera.aspx.vb index fb092acf1..ebb573ad5 100644 --- a/Contabilidad2/RepSituacionFinanciera.aspx.vb +++ b/Contabilidad2/RepSituacionFinanciera.aspx.vb @@ -173,6 +173,7 @@ Partial Class AC2_SituacionFinanciera DdlSubproyecto.DataSource = GlobalDTSubProyectos(-1, -1, UsuarioActual.CveEmpresa, -1) DdlSubproyecto.DataBind() + If UsuarioActual.TienePermisoProceso(346) Then LnkCerrar.Visible = True 'DdlEjercicio.SelectedValueExist(UsuarioActual.Empresa.EjercicioActual.ToString) DdlPeriodo.SelectedValue = Now.Month.ToString From 6f66c2f4f601b60d8f151a7d475d935308b31185 Mon Sep 17 00:00:00 2001 From: rrene Date: Thu, 1 Sep 2022 15:35:10 -0700 Subject: [PATCH 46/54] --fecha/hora dev --- Inventarios/RecepcionAlmacen.aspx.vb | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/Inventarios/RecepcionAlmacen.aspx.vb b/Inventarios/RecepcionAlmacen.aspx.vb index 7cb4c4781..f022c0db1 100644 --- a/Inventarios/RecepcionAlmacen.aspx.vb +++ b/Inventarios/RecepcionAlmacen.aspx.vb @@ -2307,7 +2307,7 @@ Partial Class Inventarios_RecepcionAlmacen End If End If - Dim Existencia = ObjInventarios.GetExistenciasPS(gvr.DataKey("CvePS").ToEntero, gvr.DataKey("CveUM").ToEntero, UsuarioActual.CveEmpresa, DdlAlmacen.SelectedValue.ToEntero, FechaMovto:=TxtFecha.Text.ToDateTime.ToString("yyyy/MM/dd HH:mm")) + Dim Existencia = ObjInventarios.GetExistenciasPS(gvr.DataKey("CvePS").ToEntero, gvr.DataKey("CveUM").ToEntero, UsuarioActual.CveEmpresa, DdlAlmacen.SelectedValue.ToEntero, FechaMovto:= (TxtFecha.Text & " " & Now.ToShortTimeString).ToDateTime.ToString("yyyy/MM/dd HH:mm")) If Existencia < ExistenciaActual Then MensajeExistencias.Append($"Producto: {GlobalDTPS(UsuarioActual.CveEmpresa, CvePS:=gvr.DataKey("CvePS").ToString.ToEntero).FiltroPrimeroValor("PSCodigo")}.
    ") Continue For @@ -3234,6 +3234,12 @@ Partial Class Inventarios_RecepcionAlmacen End If Else + + Dim CveTipoAlmacen As Integer = GlobalDTAlmacen(UsuarioActual.CveEmpresa, CveAlmacen:=DdlAlmacen.SelectedValue.ToEntero()).FiltroPrimeroValor("CveTipoAlmacen").ToEntero() + If CveTipoAlmacen = 21 Then 'tipo: devs a proveedore + RealizarMovimientoVirtual = False + End If + If RealizarMovimientoVirtual Then Dim DtPSVirtual As New DataTable("DtTamanios") From 9ed8701677fe5305062f463f2e429f727511e816 Mon Sep 17 00:00:00 2001 From: rrene Date: Thu, 1 Sep 2022 15:36:05 -0700 Subject: [PATCH 47/54] cambio nombre aplicapgo compra --- App_Code/ClsPaginas.vb | 13 ++++----- App_Code/Timbrado.vb | 2 +- Compras/Compras.aspx.vb | 34 ++++++------------------ Compras/ReembolsosComprobaciones.aspx.vb | 8 +++--- 4 files changed, 21 insertions(+), 36 deletions(-) diff --git a/App_Code/ClsPaginas.vb b/App_Code/ClsPaginas.vb index 1e743cf35..0fe4be43f 100644 --- a/App_Code/ClsPaginas.vb +++ b/App_Code/ClsPaginas.vb @@ -9363,8 +9363,7 @@ Public Class ClsPaginas #Region "P A G O D E C O M P R A S " - - Public Function AplicaPrePolizaPago(CompraActual As Compra, Pago As CompraPago, CvePrePoliza As Integer, ByRef ObjConta As ClsContabilidad) As Boolean + Public Function AplicaPrePolizaPagoCompra(CompraActual As Compra, Pago As CompraPago, CvePrePoliza As Integer, ByRef ObjConta As ClsContabilidad) As Boolean Dim ErrorMovtos As Boolean = False Dim PorcentajePago As Decimal = Pago.ImportePago / CompraActual.Total Dim ImporteMovimiento As Decimal = 0 @@ -9513,15 +9512,17 @@ Public Class ClsPaginas If Not ErrorMovtos AndAlso ImporteMovimiento <> 0 Then Dim tOtCveCon As Integer = 211 Dim tOtTipoMovto As Boolean = False + Dim IdCta As Integer = If(UsuarioActual.Empresa.TipoContabilidad = 2, UsuarioActual.Empresa.Funcionalidad(266).ToEntero(), 0) If ImporteMovimiento < 0 Then tOtTipoMovto = True : tOtCveCon = 78 ImporteMovimiento = Math.Abs(ImporteMovimiento) + IdCta = If(UsuarioActual.Empresa.TipoContabilidad = 2, UsuarioActual.Empresa.IdCuentaOtrosIngresos, 0) End If - If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, tOtTipoMovto, ImporteMovimiento, ImporteMovimiento, tOtCveCon, CompraActual.SerieFolio, Concepto, 0, CveCompra:=CompraActual.CveCompra, CveProveedor:=CompraActual.CveProveedor, CveIE:=Pago.CveIE, CvePersonal:=Pago.CvePersonal, CveSubProyecto:=CompraActual.CveSubProyecto, TipoCambioPago:=Pago.TCPago, ImporteME:=ImporteME) Then ErrorMovtos = True + If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, tOtTipoMovto, ImporteMovimiento, ImporteMovimiento, tOtCveCon, CompraActual.SerieFolio, Concepto, IdCta, CveCompra:=CompraActual.CveCompra, CveProveedor:=CompraActual.CveProveedor, CveIE:=Pago.CveIE, CvePersonal:=Pago.CvePersonal, CveSubProyecto:=CompraActual.CveSubProyecto, TipoCambioPago:=Pago.TCPago, ImporteME:=ImporteME) Then ErrorMovtos = True End If - If Not ErrorMovtos AndAlso CompraActual.TC <> Pago.TCPago Then + If Not ErrorMovtos AndAlso TCValuacion <> Pago.TCPago Then Dim ConceptoContable, IdCtaContable As Integer Dim TipoMovimiento As Boolean Dim Diferencia As Decimal = 0 @@ -9647,11 +9648,11 @@ Public Class ClsPaginas Ret.CveConceptoAcreditable = 249 Ret.CveConceptoxAcreditar = 248 ElseIf CveConceptoRetIVA = 5 Then - Funcionalidad = 578 + Funcionalidad = 578 : FuncionalidadxAcred = 578 Ret.CveConceptoAcreditable = 286 Ret.CveConceptoxAcreditar = 285 ElseIf CveConceptoRetIVA = 6 Then - Funcionalidad = 578 + Funcionalidad = 578 : FuncionalidadxAcred = 578 Ret.CveConceptoAcreditable = 333 Ret.CveConceptoxAcreditar = 334 End If diff --git a/App_Code/Timbrado.vb b/App_Code/Timbrado.vb index dfd23df1c..9dc3d44bd 100644 --- a/App_Code/Timbrado.vb +++ b/App_Code/Timbrado.vb @@ -4832,7 +4832,7 @@ Public Class Timbrado If ObjCFDITimbre.Conceptos IsNot Nothing AndAlso ObjCFDITimbre.Conceptos.Count > 0 Then For Each concep As CFDIConceptos In ObjCFDITimbre.Conceptos - cfdi.Concepto(concep.ClaveProdServ, concep.Noidentificacion, concep.Cantidad.ToString("0.00####").ToDouble(), concep.ClaveUnidad, concep.Unidad, concep.Descripcion, concep.ValorUnitario.ToString("0.00####").ToDouble(), concep.Importe, concep.Descuento, concep.ObjetoImpuesto) + cfdi.Concepto(concep.ClaveProdServ, concep.Noidentificacion, concep.Cantidad.ToString("0.00####"), concep.ClaveUnidad, concep.Unidad, concep.Descripcion, concep.ValorUnitario.ToString("0.00####"), concep.Importe, concep.Descuento, concep.ObjetoImpuesto) For Each imp As CFDIConceptosImpuestos In concep.Impuestos If imp.TrasladooRetencion = "T" Then cfdi.ConceptoTraslado(imp.Base, imp.Impuesto, imp.TipoFactor, imp.TasaOCuota, imp.Importe) diff --git a/Compras/Compras.aspx.vb b/Compras/Compras.aspx.vb index 3bb8ba23b..5109a613a 100644 --- a/Compras/Compras.aspx.vb +++ b/Compras/Compras.aspx.vb @@ -5965,7 +5965,7 @@ Partial Class Compras_Compras Pago.CveCompraAmortizacion = -1 Pago.CveCreditoDetalle = CveCreditoDetalle - ErrorMovtosCxP = AplicaPrePolizaPago(CompraActual, Pago, CvePrePoliza, ObjConta) + ErrorMovtosCxP = AplicaPrePolizaPagoCompra(CompraActual, Pago, CvePrePoliza, ObjConta) End If @@ -6036,7 +6036,7 @@ Partial Class Compras_Compras Pago.CveCompraAmortizacion = -1 'Pago.CveConceptoPago = CveConceptoPago - ErrorMovtosCxP = AplicaPrePolizaPago(CompraActual, Pago, CvePrePoliza, ObjConta) + ErrorMovtosCxP = AplicaPrePolizaPagoCompra(CompraActual, Pago, CvePrePoliza, ObjConta) End If Case 14 'IVA X Acreditar @@ -6091,14 +6091,6 @@ Partial Class Compras_Compras End If End If - 'Case 224 'Otros impuestos - ' If Not DdlTipoComprobante.SelectedValue.Contiene("Ant") Then - ' importeMovimiento = OtrosImpuestos - ' importeMN = Math.Round(importeMovimiento, 2) * tipoCambioActual * Multiplicador - ' If tipoCambioActual > 1 Then Concepto += $" TC{tipoCambioActual} ${importeMovimiento.FormatoNumero(2)}" - ' IdCtaContable = If(UsuarioActual.CveEmpresa = 119, 1171, -1) - ' End If - Case 15 'RetIVA X Acreditar Honorarios/Serv. Prof. If Not DdlTipoComprobante.SelectedValue.Contiene("Ant") Then If DdlRetIVAConcepto.Items.Count > 0 AndAlso DdlRetIVAConcepto.SelectedValue.ToEntero() > 0 Then @@ -7044,7 +7036,6 @@ Partial Class Compras_Compras End If End If End If - End If Next @@ -7093,7 +7084,7 @@ Partial Class Compras_Compras Pago.CveIE = -1 Pago.CvePersonal = CvePersonal - ErrorPrepoliza = AplicaPrePolizaPago(CompraActual, Pago, CvePrePoliza, ObjConta) + ErrorPrepoliza = AplicaPrePolizaPagoCompra(CompraActual, Pago, CvePrePoliza, ObjConta) End If @@ -7247,7 +7238,7 @@ Partial Class Compras_Compras Pago.CveIE = Ant.CveIE Pago.CveMonedaPago = 1 - ErrorMovtosCxP = AplicaPrePolizaPago(CompraActual, Pago, CvePrePoliza, ObjConta) + ErrorMovtosCxP = AplicaPrePolizaPagoCompra(CompraActual, Pago, CvePrePoliza, ObjConta) End If @@ -7290,7 +7281,7 @@ Partial Class Compras_Compras Pago.TCPago = Ant.TCCompra Pago.CveMonedaPago = If(Ant.TCCompra > 1, 2, 1) - ErrorPrepoliza = AplicaPrePolizaPago(CompraActual, Pago, CvePrePoliza, ObjConta) + ErrorPrepoliza = AplicaPrePolizaPagoCompra(CompraActual, Pago, CvePrePoliza, ObjConta) End If @@ -7402,9 +7393,6 @@ Partial Class Compras_Compras End If End If - - - '' A N T I C I P O S If UsuarioActual.Empresa.UsaAC Then If ArrAnticipos.Count > 0 Then @@ -7472,7 +7460,6 @@ Partial Class Compras_Compras End If End If - '' F U N C I O N A R I O S Y E M P L E A D O S If RBLContado.SelectedValue = "2" AndAlso DdlFuncionarioEmpleado.SelectedValue.ToEntero > 0 Then TxtDocumentoImporte.Text = TxtDocumentoImporteFE.Text @@ -7486,25 +7473,20 @@ Partial Class Compras_Compras 'se agrego un movimiento de pago If CveIE > 0 Then - If ImporteCompra <> 0 Then 'inserto los movimientos de la conta para abonar al saldo Dim Pago As New CompraPago Pago.ImportePago = ImporteCompra Pago.CveIE = CveIE Pago.CveMonedaPago = 1 - - ErrorMovtosCxP = AplicaPrePolizaPago(CompraActual, Pago, CvePrePoliza, ObjConta) + ErrorMovtosCxP = AplicaPrePolizaPagoCompra(CompraActual, Pago, CvePrePoliza, ObjConta) End If - Else ErrorMovtosIE = True End If - End If - 'movimiento de compra '[IPP] PARCHE PROVISIONAL DE CLASIFICACION Y SUBPROYECTO [CveClasificacion:=TmpDT.FiltroPrimeroValor("CveClasificacion").ToString.ToEntero] [CveSubProyecto:=TmpDT.FiltroPrimeroValor("CveSubProyecto").ToString.ToEntero] If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, TipoMovimientoCompra, TxtSubTotal2.Text.ToDecimal, " ", CveConceptoCompra, " ", TxtFechaPago.Text.ToDate, 0, -1, CveClasificacion:=TmpDT.FiltroPrimeroValor("CveClasificacion").ToString.ToEntero, CveSubProyecto:=TmpDT.FiltroPrimeroValor("CveSubProyecto").ToString.ToEntero, CveCompra:=CveCompra, CveProveedor:=CveProveedorLocal, CveIE:=CveIE, CveCreditoDetalle:=CveCreditoDetalle, ImporteMX:=TxtSubTotal2.Text.ToDecimal) Then @@ -7619,7 +7601,7 @@ Partial Class Compras_Compras Pago.CveCompraAmortizacion = CveCompraNC Pago.CveConceptoPago = CveConceptoPago - ErrorMovtosCxP = AplicaPrePolizaPago(CompraActual, Pago, CvePrePoliza, ObjConta) + ErrorMovtosCxP = AplicaPrePolizaPagoCompra(CompraActual, Pago, CvePrePoliza, ObjConta) Else ErrorMovtosCxP = True @@ -7727,7 +7709,7 @@ Partial Class Compras_Compras Pago.CveIE = CveIE Pago.CveMonedaPago = 1 - ErrorMovtosCxP = AplicaPrePolizaPago(CompraActual, Pago, CvePrePoliza, ObjConta) + ErrorMovtosCxP = AplicaPrePolizaPagoCompra(CompraActual, Pago, CvePrePoliza, ObjConta) Else ErrorMovtosCxP = True diff --git a/Compras/ReembolsosComprobaciones.aspx.vb b/Compras/ReembolsosComprobaciones.aspx.vb index 3db91de51..103f9c9a0 100644 --- a/Compras/ReembolsosComprobaciones.aspx.vb +++ b/Compras/ReembolsosComprobaciones.aspx.vb @@ -113,6 +113,7 @@ Partial Class Compras_ReembolsosComprobaciones CveCuentaBancaria = -1 ViewState("CveMoneda") = 1 CveMonedaPago = 1 + TipoCambioPago = 1 Folio = "" 'Cargar Filtros @@ -547,7 +548,7 @@ Partial Class Compras_ReembolsosComprobaciones End If Else If drp IsNot Nothing Then - If drp("IdPoliza").ToString.ToEntero > 0 Then + If drp("FolioPoliza").ToString.ToEntero > 0 Then CvePrePolizaIERegistrado = ObjMov.AddPrePolizas("Compras/Comprobaciones2", 9, TxtImporteVinculado.Text.ToDecimal, TxtImporteVinculado.Text.ToDecimal, CveMoneda, TxtFechaPrePoliza.Text.ToDate, If(TxtObservaciones.Text.Trim = "", concepto, TxtObservaciones.Text.Trim), UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa) IdPoliza = drp("IdPoliza").ToString.ToEntero Else @@ -749,7 +750,7 @@ Partial Class Compras_ReembolsosComprobaciones End If End If - If AplicaPrePolizaPago(CompraActual, Pago, CvePrePolizaPago, ObjMov) Then + If AplicaPrePolizaPagoCompra(CompraActual, Pago, CvePrePolizaPago, ObjMov) Then MsgError = "Detalle" End If End If @@ -798,6 +799,7 @@ Partial Class Compras_ReembolsosComprobaciones CveIEPago = 0 Dim FolioIENew = ObjIE.GetNextFolio(CveCajaChica, 6).ToString CveIEPago = ObjIE.AddBancos_IE(CveCajaChica, 6, TxtFechaPrePoliza.Text.ToDate, FolioIENew, gvr.DataKey("Proveedor"), ImporteMovto, CveMoneda, 0.0, $"{gvr.DataKey("Proveedor")} F:{gvr.DataKey("SerieFolio")} {If(DdlPersonal.Visible, DdlPersonal.SelectedItem.Text, DdlCajaChica.SelectedItem.Text)}", "", False, True, -1, CvePrePolizaPago, "", UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, FueConciliado:=If(ChkReembolsarSinBancos.Checked Or CveCajaChica > 0, True, False)) + TipoCambioPago = 1 End If End If @@ -811,7 +813,7 @@ Partial Class Compras_ReembolsosComprobaciones MsgError = "no se pudo insertar el detalle de la poliza" End If - If Not AplicaPrePolizaPago(CompraActual, Pago, CvePrePolizaPago, ObjMov) Then + If Not AplicaPrePolizaPagoCompra(CompraActual, Pago, CvePrePolizaPago, ObjMov) Then MsgError = "Detalle" End If From 6b6bf81599e3dd035f3dcbb626ff020019335315 Mon Sep 17 00:00:00 2001 From: rrene Date: Thu, 1 Sep 2022 15:36:17 -0700 Subject: [PATCH 48/54] - mejora --- OC/OC.aspx | 30 ++++++++---------------------- OC/OC.aspx.vb | 34 +++++++++++++++++++++++++--------- 2 files changed, 33 insertions(+), 31 deletions(-) diff --git a/OC/OC.aspx b/OC/OC.aspx index 65afc2c17..9071c6e29 100644 --- a/OC/OC.aspx +++ b/OC/OC.aspx @@ -255,7 +255,7 @@ <%--linea 5--%>
    - +
    @@ -284,25 +284,19 @@
    <%--linea 6--%> - +
    - <%-- - - --%> - - <%-- - --%> - +
    +
    -
    @@ -326,10 +320,7 @@
    - -
    -
    @@ -438,16 +429,11 @@ - - - - - - + + - - - + +
    diff --git a/OC/OC.aspx.vb b/OC/OC.aspx.vb index 224a1c223..d9b4a082b 100644 --- a/OC/OC.aspx.vb +++ b/OC/OC.aspx.vb @@ -2218,9 +2218,18 @@ Partial Class OC_OC End If End If - 'Si es Proveedor Extranjero el IVA es 0% - If GlobalDTCompProveedores(CveEmpresaActual).FiltraParametros($"CveProveedor = {DdlProveedores.SelectedValue} AND RFC = 'XEXX010101000'").Rows.Count = 1 Then - IvaPS = 0 + If DdlProveedores.SelectedValue.ToEntero > 0 Then + 'Si es Proveedor Extranjero el IVA es 0% + Dim drProv As DataRow = GlobalDTCompProveedores(CveEmpresaActual, CveProveedor:=DdlProveedores.SelectedValue.ToEntero).FiltroPrimero("") + + If drProv IsNot Nothing Then + If drProv("RFC").ToString = "XEXX010101000" Then + IvaPS = 0 + End If + If drProv("CodigoRegimenFiscal").ToString = "626" Then 'simplificado lleva retencion de 1.25 de isr + RetISR = 0.0125 + End If + End If End If AddPS(TxtCant.Text, DdlP2.SelectedValue.ToEntero, DdlP2.SelectedText, TxtObsPS.Text, ImportePS, TxtDescuentoAdd.Text.ToDecimal, TotalPS, @@ -4026,7 +4035,19 @@ Partial Class OC_OC ' IEPSPSIVA = If(DrPS("IEPSGrabaIVA").ToString = "True", DrPS("IEPSPorcentaje").ToString.ToDecimal, 0) End If + If DdlProveedores.SelectedValue.ToEntero > 0 Then + 'Si es Proveedor Extranjero el IVA es 0% + Dim drProv As DataRow = GlobalDTCompProveedores(CveEmpresaActual, CveProveedor:=DdlProveedores.SelectedValue.ToEntero).FiltroPrimero("") + If drProv IsNot Nothing Then + If drProv("RFC").ToString = "XEXX010101000" Then + IvaPS = 0 + End If + If drProv("CodigoRegimenFiscal").ToString = "626" Then 'simplificado lleva retencion de 1.25 de isr + RetISR = 0.0125 + End If + End If + End If CveSubProyecto = gvr.FCDropDownList("DdlSubProyectoEdit").SelectedValue.ToEntero SubProyecto = gvr.FCDropDownList("DdlSubProyectoEdit").SelectedItem.Text @@ -4038,8 +4059,6 @@ Partial Class OC_OC Cuadro = gvr.FCDropDownList("DdlCultivosCuadroEdit").SelectedItem.Text End If - - If UsuarioActual.Empresa.Tipo_CentroCosto = 1 Or UsuarioActual.Empresa.Tipo_CentroCosto = 2 Then CveProyecto = -1 Proyecto = "Seleccione" @@ -4082,9 +4101,6 @@ Partial Class OC_OC End If End If - - - 'Agarra el nuevo AF si se modifico o deja el pasado CveActivoFijo = If(gvr.FCHiddenField("HdnCveActivoFijo").Value.ToEntero > 0, gvr.FCHiddenField("HdnCveActivoFijo").Value.ToEntero, HdnEditCveActivoFijo.Value.ToEntero) Codigo = If(gvr.FCHiddenField("HdnCodigoAF").Value <> "-1", gvr.FCHiddenField("HdnCodigoAF").Value, HdnEditCodigo.Value) @@ -6959,7 +6975,7 @@ Partial Class OC_OC #End Region #Region " ACTUALIZA OC " - Protected Sub ImgCambiaProv_Click(sender As Object, e As ImageClickEventArgs) Handles ImgCambiaProv.Click + Private Sub ImgCambiaProv_Click(sender As Object, e As EventArgs) Handles ImgCambiaProv.Click Dim OC As New ClsOC If OC.UpdateProveedorOrdenCompra(DdlProveedores.SelectedValue.ToEntero, CveOrdenCompra, UsuarioActual.CveUsuario, CveEmpresaActual) Then CargaHistorial() From ef9eae9c101f750d848267613bcc12748be6cf53 Mon Sep 17 00:00:00 2001 From: rrene Date: Fri, 2 Sep 2022 12:51:00 -0700 Subject: [PATCH 49/54] -- FUnc132 --- Inventarios/EntregaAlmacen.aspx | 2 +- Inventarios/EntregaAlmacen.aspx.vb | 26 ++++++++++++-------------- 2 files changed, 13 insertions(+), 15 deletions(-) diff --git a/Inventarios/EntregaAlmacen.aspx b/Inventarios/EntregaAlmacen.aspx index 9fc5391cf..d23155cc2 100644 --- a/Inventarios/EntregaAlmacen.aspx +++ b/Inventarios/EntregaAlmacen.aspx @@ -518,7 +518,7 @@ <%--GV DATOS--%> + DataKeyNames="Consec,CvePS,Codigo,CodigoBarras,CveUM,CantidadC,CantidadF,UM,PS,CveClasificacion,CveCategoria,CveVentaDetalle,CveTamaño,AplicaSeccion, AplicaSerie,AplicaLote,AplicaCaducidad" HeaderStyle-CssClass="Titulos" CssClass="table table-striped table-hover Widthall ScrollAD gvInventario mysmallbtn" data-heighterror="450" data-freezerows="1" GridLines="None"> diff --git a/Inventarios/EntregaAlmacen.aspx.vb b/Inventarios/EntregaAlmacen.aspx.vb index a11886ad0..f4b716677 100644 --- a/Inventarios/EntregaAlmacen.aspx.vb +++ b/Inventarios/EntregaAlmacen.aspx.vb @@ -938,7 +938,6 @@ Partial Class Inventarios_EntregaAlmacen e.Row.FCTextBox("TbCantidadF").Text = "0" End If - If TipoDocto = "DPe" Then CveConsecSerie = e.Row.DBCampo("Consec").ToString().ToEntero() PSSerie = e.Row.DBCampo("PS").ToString() @@ -976,15 +975,7 @@ Partial Class Inventarios_EntregaAlmacen e.Row.FCDropDownList("DdlSeccionAlmacen").Visible = True If DdlAlmacen.SelectedValue.ToEntero() > 0 Then CargaSeccionesAlmacen(e.Row.FCDropDownList("DdlSeccionAlmacen"), DdlAlmacen.SelectedValue.ToEntero(), e.Row.DBCampo("CvePS").ToEntero(), UsuarioActual.CveEmpresa, True) - 'Dim dtt As DataTable = GlobalDTInvPSSeccionesAlmacen(UsuarioActual.CveEmpresa, DdlAlmacen.SelectedValue.ToEntero(), e.Row.DBCampo("CvePS").ToEntero()) - 'e.Row.FCDropDownList("DdlSeccionAlmacen").DataSource = dtt - 'e.Row.FCDropDownList("DdlSeccionAlmacen").DataBind() - 'If dtt.Rows.Count > 1 Then - ' e.Row.FCDropDownList("DdlSeccionAlmacen").Items.Insert(0, New ListItem("Seleccione", "-1")) - 'End If - 'dtt.Dispose() End If - Else e.Row.FCDropDownList("DdlSeccionAlmacen").Visible = False End If @@ -1027,19 +1018,27 @@ Partial Class Inventarios_EntregaAlmacen 'FUNCIONALIDAD PISTOLA DE CODIGOS - If UsuarioActual.Empresa.Funcionalidad(132) = "1" And e.Row.DBCampo("CodigoBarras").Trim <> "" Then - e.Row.FCTextBox("TbCantidadF").Text = "0" + If e.Row.DBCampo("CodigoBarras").Trim <> "" AndAlso UsuarioActual.Empresa.Funcionalidad(132) = "1" Then + 'NO BLOQUEA PARA ROL AD If UsuarioActual.CveRol = 1 Then If AplicaSerie Then e.Row.FCTextBox("TbCantidadF").Enabled = False + e.Row.FCTextBox("TbCantidadF").Text = "0" Else e.Row.FCTextBox("TbCantidadF").Text = e.Row.DBCampo("CantidadF").ToDecimal.ToString("#,##0.######") End If End If - If Not UsuarioActual.CveRol = 1 Then - e.Row.FCTextBox("TbCantidadF").Enabled = False + If UsuarioActual.Empresa.Funcionalidad(531) = "1" Then 'acumuladoras + If e.Row.DBCampo("CveCategoria") <> "249" Then + e.Row.FCTextBox("TbCantidadF").Enabled = True + End If + Else + If Not UsuarioActual.CveRol = 1 Then + e.Row.FCTextBox("TbCantidadF").Enabled = False + e.Row.FCTextBox("TbCantidadF").Text = "0" + End If End If End If @@ -1048,7 +1047,6 @@ Partial Class Inventarios_EntregaAlmacen e.Row.FCCheckBox("cbInv").Enabled = False End If - End If End Sub From 9a107dc8aac67f251f3c037fd187a203a439fe13 Mon Sep 17 00:00:00 2001 From: rrene Date: Fri, 2 Sep 2022 12:51:16 -0700 Subject: [PATCH 50/54] - --- Inventarios/RecepcionAlmacen.aspx.vb | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/Inventarios/RecepcionAlmacen.aspx.vb b/Inventarios/RecepcionAlmacen.aspx.vb index ec1650b20..6d6a5c989 100644 --- a/Inventarios/RecepcionAlmacen.aspx.vb +++ b/Inventarios/RecepcionAlmacen.aspx.vb @@ -1537,14 +1537,14 @@ Partial Class Inventarios_RecepcionAlmacen End If If CBool(e.Row.DBCampo("AplicaCaducidad")) Then - e.Row.FCTextBox("TxtCaducidad").Visible = True - e.Row.FCLinkButton("LnkCaducidad").Visible = True - e.Row.FCTextBox("TxtCaducidad").Text = Now.ToShortDateString - e.Row.FCTextBox("TxtDividir").Visible = True - Else - e.Row.FCTextBox("TxtCaducidad").Visible = False - e.Row.FCLinkButton("LnkCaducidad").Visible = False - End If + e.Row.FCTextBox("TxtCaducidad").Visible = True + e.Row.FCLinkButton("LnkCaducidad").Visible = True + e.Row.FCTextBox("TxtCaducidad").Text = Now.ToShortDateString + e.Row.FCTextBox("TxtDividir").Visible = True + Else + e.Row.FCTextBox("TxtCaducidad").Visible = False + e.Row.FCLinkButton("LnkCaducidad").Visible = False + End If If CBool(e.Row.DBCampo("AplicaLote")) Then e.Row.FCTextBox("TxtLote").Visible = True From 152132d13041996178267e09cd0ae776353579fc Mon Sep 17 00:00:00 2001 From: rrene Date: Fri, 2 Sep 2022 12:51:37 -0700 Subject: [PATCH 51/54] -- mejras --- Inventarios/TraspasoAlmacen.aspx.vb | 38 +++++++++++++---------------- 1 file changed, 17 insertions(+), 21 deletions(-) diff --git a/Inventarios/TraspasoAlmacen.aspx.vb b/Inventarios/TraspasoAlmacen.aspx.vb index f773900d0..771a5a7f4 100644 --- a/Inventarios/TraspasoAlmacen.aspx.vb +++ b/Inventarios/TraspasoAlmacen.aspx.vb @@ -365,7 +365,7 @@ Partial Class Inventarios_TraspasoAlmacen Private Sub CargaMovimientoGarantia(CveFolioGarantia As Integer) Using ObjAcum As New ClsAcumuladores - If ObjAcum.GetFoliosGarantiasDetalle(CveFolioGarantia) Then + If ObjAcum.GetFoliosGarantiasDetalle(CveFolioGarantia, CveEstatusConsecutivo:=1) Then ''carga Dim dra As DataRow = ObjAcum.DtResultados(0) DivMov.Visible = True @@ -572,7 +572,7 @@ Partial Class Inventarios_TraspasoAlmacen If TxtnSerie.Visible Then Cantidad = 1 If String.IsNullOrEmpty(TxtnSerie.Text.Trim()) OrElse String.IsNullOrWhiteSpace(TxtnSerie.Text.Trim()) Then - Alert("Serie es necesario", TipoMensaje.MsgAdvertencia) + Alert("Serie es necesario.", TipoMensaje.MsgAdvertencia) RegistraScript("playsonidito(''142608__autistic-lucario__error.wav'')") Exit Sub End If @@ -641,7 +641,7 @@ Partial Class Inventarios_TraspasoAlmacen tLote = If(TxtnLote.Visible, TxtnLote.Text, "-1") tCaducidad = If(TxtnFechaCaducidad.Visible, TxtnFechaCaducidad.Text.ToDate, MinFecha) - Dim tSerie As String = If(TxtnSerie.Visible, TxtnSerie.Text, "-1") + Dim tSerie As String = If(TxtnSerie.Visible, TxtnSerie.Text, "-1").Trim Dim Valido = ValidaExistencia(Cantidad, CveProducto, DdlUnidad.SelectedValue.ToEntero, DdlSeccionAlmacen.SelectedValue.ToEntero, tSerie, tLote, tCaducidad) @@ -738,7 +738,7 @@ Partial Class Inventarios_TraspasoAlmacen registro.Item("CvePS") = CvePS registro.Item("PS") = DrPS("PSCodigo") registro.Item("Observaciones") = Observaciones - registro.Item("Serie") = Serie + registro.Item("Serie") = Serie.Trim registro.Item("Lote") = Lote If FechaCaducidad > MinFecha Then registro.Item("FechaCaducidad") = FechaCaducidad registro.Item("CveClasificacion") = CveClasificacion @@ -1486,7 +1486,7 @@ Partial Class Inventarios_TraspasoAlmacen Private Sub CargaGvDatos() EscondeColumnasGVM(DtMovimientos) - GvDatos.DataSource = DtMovimientos + GvDatos.DataSource = DtMovimientos.FiltraParametros("", "No desc") GvDatos.DataBind() UpDatos.Update() End Sub @@ -1798,13 +1798,6 @@ Partial Class Inventarios_TraspasoAlmacen If CBool(e.Row.DBCampo("AplicaSeccion")) AndAlso DdlAlmacenRecepcion.SelectedValue.ToEntero > 0 Then CargaSeccionesAlmacen(e.Row.FCDropDownList("DdlSeccionAlmacen"), DdlAlmacenRecepcion.SelectedValue.ToEntero, e.Row.DBCampo("CvePS").ToEntero, UsuarioActual.CveEmpresa) - 'Dim dtt As DataTable = GlobalDTInvPSSeccionesAlmacen(UsuarioActual.CveEmpresa, DdlAlmacenRecepcion.SelectedValue.ToEntero, e.Row.DBCampo("CvePS").ToEntero) - 'e.Row.FCDropDownList("DdlSeccionAlmacen").DataSource = dtt - 'e.Row.FCDropDownList("DdlSeccionAlmacen").DataBind() - 'If dtt.Rows.Count > 1 Then - ' e.Row.FCDropDownList("DdlSeccionAlmacen").Items.Insert(0, New ListItem("Seleccione", "-1")) - 'End If - 'dtt.Dispose() End If @@ -1821,9 +1814,12 @@ Partial Class Inventarios_TraspasoAlmacen 'FUNCIONALIDAD PISTOLA DE CODIGOS If UsuarioActual.Empresa.Funcionalidad(132) = "1" And e.Row.DBCampo("CodigoBarras").Trim <> "" Then e.Row.FCTextBox("TxtCantidad").Enabled = False + If e.Row.DBCampo("CveCategoria") <> "249" Then + e.Row.FCTextBox("TxtCantidad").Enabled = True + End If End If - End If + End If End Sub Protected Sub BtnCancelarTraspaso_Click(sender As Object, e As EventArgs) @@ -2364,9 +2360,9 @@ Partial Class Inventarios_TraspasoAlmacen TdSeriePS.Visible = False - Dim DrPS = GlobalDTPS(UsuarioActual.CveEmpresa).FiltroPrimero($"CodigoBarras = '{TxtCodigoPS.Text}'") + Dim DrPS = GlobalDTPS(UsuarioActual.CveEmpresa).FiltroPrimero($"CodigoBarras = '{TxtCodigoPS.Text.Trim}'") If DrPS Is Nothing Then - Alert($"No se ha encontrado un producto del Codigo ""{TxtCodigoPS.Text}"". ", TipoMensaje.MsgAdvertencia, "window.setTimeout(Focus,200);") + Alert($"No se ha encontrado un producto del Código: ""{TxtCodigoPS.Text}"". ", TipoMensaje.MsgAdvertencia, "window.setTimeout(Focus,200);") RegistraScript("playsonidito('142608__autistic-lucario__error.wav')") TxtCodigoPS.Text = "" Exit Sub @@ -2392,7 +2388,7 @@ Partial Class Inventarios_TraspasoAlmacen Dim Valido = ValidaExistencia(1, CvePSSerie, CveUMSerie, -1, TxtSeriePS.Text.Trim, "-1", MinFecha) If Valido Then - AgregarPS(1, CvePSSerie, CveUMSerie, Serie:=TxtSeriePS.Text.Trim) + AgregarPS(1, CvePSSerie, CveUMSerie, Serie:=TxtSeriePS.Text.Trim.ToUpper) Else TxtSeriePS.Text = "" TxtSeriePS.Focus() @@ -2444,7 +2440,7 @@ Partial Class Inventarios_TraspasoAlmacen If Existe Then Alert($"Ya se ha cargado la totalidad del Producto ""{PSTemp}"" con el Codigo ""{TxtCodigoPSRecepcion.Text}"".", TipoMensaje.MsgAdvertencia, "window.setTimeout(Focus1,200);") Else - Alert($"No se ha encontrado un producto para surtir con el Codigo ""{TxtCodigoPSRecepcion.Text}"". ", TipoMensaje.MsgAdvertencia, "window.setTimeout(Focus1,200);") + Alert($"No se ha encontrado un producto para surtir con el Código: ""{TxtCodigoPSRecepcion.Text}"".", TipoMensaje.MsgAdvertencia, "window.setTimeout(Focus1,200);") End If RegistraScript("playsonidito('142608__autistic-lucario__error.wav')") @@ -2458,7 +2454,7 @@ Partial Class Inventarios_TraspasoAlmacen End If For Each Gvr As GridViewRow In GvDatosRecepcion.Rows - If Gvr.DataKey("CodigoBarras") = TxtCodigoPSRecepcion.Text.Trim And Gvr.DataKey("Serie") = TxtSeriePSRecepcion.Text.Trim Then + If Gvr.DataKey("CodigoBarras") = TxtCodigoPSRecepcion.Text.Trim And Gvr.DataKey("Serie") = TxtSeriePSRecepcion.Text.Trim.ToUpper Then Dim TxtCantidad = GvDatosRecepcion.Rows(Gvr.RowIndex).FCTextBox("TxtCantidad") If Gvr.DataKey("Cantidad").ToDecimal - TxtCantidad.Text.ToDecimal - 1 >= 0 Then @@ -2470,15 +2466,15 @@ Partial Class Inventarios_TraspasoAlmacen Exit Sub End If - Alert($"Ya se ha cargado la totalidad del Producto ""{Gvr.DataKey("PS").ToString}"" con el Codigo ""{TxtCodigoPSRecepcion.Text}"".", TipoMensaje.MsgAdvertencia, "window.setTimeout(Focus1,200);") + Alert($"Ya se ha cargado la totalidad del Producto ""{Gvr.DataKey("PS").ToString}"" con el Código ""{TxtCodigoPSRecepcion.Text}"".", TipoMensaje.MsgAdvertencia, "window.setTimeout(Focus1,200);") RegistraScript("playsonidito(''142608__autistic-lucario__error.wav'')") End If Next - Alert($"No se ha encontrado un producto para surtir con el Codigo ""{TxtCodigoPSRecepcion.Text}"". ", TipoMensaje.MsgAdvertencia, "window.setTimeout(Focus1,200);") + Alert($"No se ha encontrado un producto para surtir con el Codigo ""{TxtCodigoPSRecepcion.Text}"". Serie:{TxtSeriePSRecepcion.Text.Trim} ", TipoMensaje.MsgAdvertencia, "window.setTimeout(Focus1,200);") RegistraScript("playsonidito(''142608__autistic-lucario__error.wav'')") - 'Alert($"Ya se han cargado todos los productos o no se ha encontrado un producto de la Serie ""{TxtSeriePSRecepcion.Text}"". ", TipoMensaje.MsgAdvertencia, "window.setTimeout(Focus2,200);") + TxtSeriePSRecepcion.Text = "" End Sub #End Region From 1a75d635a6668388db88920cd6e3a64a3a941d53 Mon Sep 17 00:00:00 2001 From: rrene Date: Fri, 2 Sep 2022 12:51:59 -0700 Subject: [PATCH 52/54] =?UTF-8?q?visualizar=20m=C3=B3dulo=20Rol=201?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Contabilidad/RegPrePolizaS.aspx.vb | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Contabilidad/RegPrePolizaS.aspx.vb b/Contabilidad/RegPrePolizaS.aspx.vb index cd96ee540..2b6a245a2 100644 --- a/Contabilidad/RegPrePolizaS.aspx.vb +++ b/Contabilidad/RegPrePolizaS.aspx.vb @@ -434,6 +434,10 @@ Partial Class ContabilidadC_RegPrePolizaS ' TxtEstatus.Text = If(Boolean.Parse(dr("Estatus").ToString), "Activa", "Inactiva") CvePlantillaPoliza = dr("CvePlantillaPoliza").ToString + If UsuarioActual.CveRol = 1 Then + TxtUsuarioElaboro.ToolTip = dr("Modulo").ToString + End If + If UsuarioActual.CveRol = 1 OrElse UsuarioActual.TienePermisoProceso(221) Then 'DivAgregarConceptos.Visible = True LnkAddConcepto.Visible = True From 724bc4c06da4bf8f4d5944caab89ec41fc49e653 Mon Sep 17 00:00:00 2001 From: rakcsle Date: Sat, 3 Sep 2022 01:00:37 -0700 Subject: [PATCH 53/54] =?UTF-8?q?Rep=20Servicios=20a=20Domicilio,=20impres?= =?UTF-8?q?i=C3=B3n=20CE=20en=20factura=20,=20=20ProveedopresAbonar=20envi?= =?UTF-8?q?ar=20parametro=20CveSubProyecto?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- App_Code/CalendarEvent.vb | 2 + App_Code/ClsMovimientos.vb | 3 +- App_Code/ClsOIEventos.vb | 9 +- App_Code/ClsPaginas.vb | 117 +++++++++++++++++- Ashx/CargaEventos.ashx | 2 + Bancos/ProveedoresAbonar.aspx.vb | 18 ++- Bancos/RepProveedoresPagos.aspx.vb | 3 +- Empresas/1/Formatos/Factura.rdlc | 114 ++++++++--------- Empresas/15/Formatos/Factura.rdlc | 190 +++++++++++++++++++++++++++-- OS/Asignaciones.aspx.vb | 3 +- OS/OrdenesServicios.aspx.vb | 31 +++++ OS/RepServicioDomicilio.aspx | 44 ++++--- OS/RepServicioDomicilio.aspx.vb | 1 + 13 files changed, 442 insertions(+), 95 deletions(-) diff --git a/App_Code/CalendarEvent.vb b/App_Code/CalendarEvent.vb index 58abbdf3b..b9d3ff484 100644 --- a/App_Code/CalendarEvent.vb +++ b/App_Code/CalendarEvent.vb @@ -23,5 +23,7 @@ Public Class CalendarEvent Public Property CveTipoEvento As Integer Public Property Importe As Double Public Property EmpresaCRM As String + Public Property SubProyecto As String + Public Property CveSubProyecto As Integer End Class diff --git a/App_Code/ClsMovimientos.vb b/App_Code/ClsMovimientos.vb index 7553f2d76..4b90021f3 100644 --- a/App_Code/ClsMovimientos.vb +++ b/App_Code/ClsMovimientos.vb @@ -613,7 +613,7 @@ Public Class ClsMovimientos 'CveAplicaNC Public Function GetCxPProveedor(CveProveedor As Integer, FechaI As String, FechaF As String, CveUsuarioProgramo As Integer, CveUsuarioRegistro As Integer, CveUsuarioResponsable As Integer, CveClasificacionProveedor As Integer, CveMoneda As Integer, CveEstatus As Integer, CveProveedorSucursal As Integer, CveAplicaNC As Integer, - Optional FechaVI As String = "-1", Optional FechaVF As String = "-1", Optional CodigoProgramacion As String = "-1") As Boolean + Optional FechaVI As String = "-1", Optional FechaVF As String = "-1", Optional CodigoProgramacion As String = "-1", Optional CveSubProyecto As Integer = -1) As Boolean Dim Retorno As Boolean = False DataAdapter("PA_Comp_ProveedorCxP") With SqlAdapter.SelectCommand.Parameters @@ -631,6 +631,7 @@ Public Class ClsMovimientos .Add("@FechaVI", SqlDbType.VarChar).Value = FechaVI .Add("@FechaVF", SqlDbType.VarChar).Value = FechaVF .Add("@CodigoProgramacion", SqlDbType.VarChar).Value = CodigoProgramacion + .Add("@CveSubProyecto", SqlDbType.SmallInt).Value = CveSubProyecto End With diff --git a/App_Code/ClsOIEventos.vb b/App_Code/ClsOIEventos.vb index 41770f405..05ec2309d 100644 --- a/App_Code/ClsOIEventos.vb +++ b/App_Code/ClsOIEventos.vb @@ -1853,7 +1853,7 @@ Public Class ClsOIEventos Return Retorno End Function - Public Function FinalizaEvento(FechaFin As DateTime, CveEventoEstatus As Integer, Geom As String, CveEvento As Integer) As Boolean + Public Function FinalizaEvento(FechaFin As DateTime, CveEventoEstatus As Integer, Geom As String, CveEvento As Integer, Optional CveOS As Integer = -1, Optional CveUsuario As Integer = -1) As Boolean Dim Retorno As Boolean = False DataAdapter("PA_OI_EventoFinalizar") @@ -1863,6 +1863,8 @@ Public Class ClsOIEventos .Add("@Geom", SqlDbType.VarChar).Value = Geom .Add("@FechaFin", SqlDbType.DateTime).Value = FechaFin .Add("@CveEvento", SqlDbType.Int).Value = CveEvento + .Add("@CveOS", SqlDbType.Int).Value = CveOS + .Add("@CveUsuario", SqlDbType.Int).Value = CveUsuario End With Try @@ -2432,12 +2434,13 @@ Public Class ClsOIEventos Optional CveOS As Integer = -1, Optional CveOC As Integer = -1, Optional CvePersonal As Integer = -1, Optional CveProveedor As Integer = -1, Optional CveEventoPadre As Integer = -1, Optional RecurrenciaTipo As Integer = -1, Optional Frecuencia As Integer = -1, Optional DiasSemana As String = "-1", Optional Dia As Integer = -1, Optional Mes As Integer = -1, Optional RecurrenciaFin As String = "-1", Optional CveTipoEvento As Integer = 2, Optional Importe As Double = -1, - Optional CveEmpresaCRM As Integer = -1, Optional CveContactoCRM As Integer = -1, Optional CveAcercamientoCRM As Integer = -1, Optional CveTipoProcesoCRM As Integer = -1, Optional CveEtapaProcesoCRM As Integer = -1) As Boolean + Optional CveEmpresaCRM As Integer = -1, Optional CveContactoCRM As Integer = -1, Optional CveAcercamientoCRM As Integer = -1, Optional CveTipoProcesoCRM As Integer = -1, Optional CveEtapaProcesoCRM As Integer = -1, + Optional CveSubProyecto As Integer = -1) As Boolean Dim Retorno As Boolean = False Retorno = AddEvento(CveTipoEvento, CveAgendaTipo, Asunto, Descripcion, Prioridad, -1, CveUsuarioIng, FechaInicio, FechaFin, -1, -1, "-1", CveUsuarioIng, CveEmpresa, CveActivoFijo, CveIE, CveProspecto, CveCliente, CveOS, CveOC, CvePersonal, CvePersonal, CveEventoPadre:=CveEventoPadre, RecurrenciaTipo:=RecurrenciaTipo, Frecuencia:=Frecuencia, DiasSemana:=DiasSemana, Dia:=Dia, Mes:=Mes, RecurrenciaFin:=RecurrenciaFin, Importe:=Importe, - CveEmpresaCRM:=CveEmpresaCRM, CveContactoCRM:=CveContactoCRM, CveAcercamientoCRM:=CveAcercamientoCRM, CveTipoProcesoCRM:=CveTipoProcesoCRM, CveEtapaProcesoCRM:=CveEtapaProcesoCRM) + CveEmpresaCRM:=CveEmpresaCRM, CveContactoCRM:=CveContactoCRM, CveAcercamientoCRM:=CveAcercamientoCRM, CveTipoProcesoCRM:=CveTipoProcesoCRM, CveEtapaProcesoCRM:=CveEtapaProcesoCRM, CveSubProyecto:=CveSubProyecto) Return Retorno End Function diff --git a/App_Code/ClsPaginas.vb b/App_Code/ClsPaginas.vb index 241098fd9..8d8564f38 100644 --- a/App_Code/ClsPaginas.vb +++ b/App_Code/ClsPaginas.vb @@ -5195,6 +5195,7 @@ Public Class ClsPaginas PaginaDict.Add("/OS/PopUpOS_PS_Especificaciones.aspx".ToUpper(), 135) PaginaDict.Add("/OS/PopUpMateriales.aspx".ToUpper(), 135) PaginaDict.Add("/OS/Asignaciones.aspx".ToUpper(), 125) + PaginaDict.Add("/OS/RepServicioDomicilio.aspx".ToUpper(), 1330) #End Region 'OC #Region "OC" @@ -5641,7 +5642,7 @@ Public Class ClsPaginas PaginaDict.Add("/Contabilidad2/RepBalanceGeneralHorizontal.aspx".ToUpper(), -1) - PaginaDict.Add("/OS/RepServicioDomicilio.aspx".ToUpper(), -1) + @@ -7044,9 +7045,31 @@ Public Class ClsPaginas Vta.SelloCFDi = "Sin Timbrar" Vta.SelloSAT = "Sin Timbrar" + +#Region "COMERCIO EXTERIOR VARIABLES Y TABLAS" Dim CETipoOperacion = "", CEClavePedimento As String = "", CEIncoterm As String = "", CEId As String = "", CEMotivoTraslado As String = "", CETipoCambio As String = "" Dim RCETipoOperacion As String = "", RCEClavePedimento As String = "", RCEIncoterm As String = "", RCEMotivoTraslado As String = "" + Dim CE_DT_Direcciones As New DataTable + CE_DT_Direcciones.Columns.Add("Calle") + CE_DT_Direcciones.Columns.Add("NumeroExterior") + CE_DT_Direcciones.Columns.Add("Colonia") + CE_DT_Direcciones.Columns.Add("Municipio") + CE_DT_Direcciones.Columns.Add("Estado") + CE_DT_Direcciones.Columns.Add("Pais") + CE_DT_Direcciones.Columns.Add("CodigoPostal") + CE_DT_Direcciones.Columns.Add("Tipo", GetType(Integer)) + + Dim CE_DT_Mercancias As New DataTable + CE_DT_Mercancias.Columns.Add("NoIdentificacion") + CE_DT_Mercancias.Columns.Add("FraccionArancelaria") + CE_DT_Mercancias.Columns.Add("CantidadAduana") + CE_DT_Mercancias.Columns.Add("UnidadAduana") + CE_DT_Mercancias.Columns.Add("ValorUnitarioAduana") + CE_DT_Mercancias.Columns.Add("ValorDolares") +#End Region + + 'SI ESTA TIMBRADA - CON XML If File.Exists(PathXML) AndAlso Vta.Serie <> "VistaPrevia" Then 'Cuando es vista previe y coincide la serie y folio se ponen los datos fiscales Dim XmlDoc As New System.Xml.XmlDocument @@ -7084,14 +7107,29 @@ Public Class ClsPaginas Vta.SelloSAT = XmlDoc.DocumentElement("cfdi:Complemento").ChildNodes(i).Attributes("SelloSAT").InnerText End If + +#Region "COMERCIO EXTERIOR LECTURA DATOS XML" If XmlDoc.DocumentElement("cfdi:Complemento").ChildNodes(i).Name = "cce11:ComercioExterior" Then CETipoOperacion = XmlDoc.DocumentElement("cfdi:Complemento").ChildNodes(i).Attributes("TipoOperacion").InnerText CEClavePedimento = XmlDoc.DocumentElement("cfdi:Complemento").ChildNodes(i).Attributes("ClaveDePedimento").InnerText CEIncoterm = XmlDoc.DocumentElement("cfdi:Complemento").ChildNodes(i).Attributes("Incoterm").InnerText + Dim nodo As XmlNode = XmlDoc.DocumentElement + Dim VersionCFDI As String = ValorXML(nodo, "version") + + Dim cfdVer As String = "" + If VersionCFDI = "3.2" Then + cfdVer = "http://www.sat.gob.mx/cfd/2" + ElseIf VersionCFDI = "3.3" Then + cfdVer = "http://www.sat.gob.mx/cfd/3" + Else ' se considera que es la version 4.0 + cfdVer = "http://www.sat.gob.mx/cfd/4" + End If Dim namespaces As XmlNamespaceManager = New XmlNamespaceManager(XmlDoc.NameTable) + + namespaces.AddNamespace("cfdi", cfdVer) namespaces.AddNamespace("cce11", "http://www.sat.gob.mx/ComercioExterior11") CEId = "" @@ -7106,14 +7144,76 @@ Public Class ClsPaginas CETipoCambio = XmlDoc.DocumentElement("cfdi:Complemento").ChildNodes(i).Attributes("TipoCambioUSD").InnerText - - RCETipoOperacion = GlobalDTTipoOperacion.FiltroPrimeroValor("Descripcion", $"ClaveSATTipoOperacion = '{CETipoOperacion}'") RCEClavePedimento = GlobalDTClavePedimento.FiltroPrimeroValor("Descripcion", $"ClaveSATPedimento = '{CEClavePedimento}'") RCEIncoterm = GlobalDTIncoterm.FiltroPrimeroValor("Descripcion", $"ClaveSATIncoterm = '{CEIncoterm}'") RCEMotivoTraslado = GlobalDTSATMotivoTraslado.FiltroPrimeroValor("MotivoTraslado", $"ClaveSATMotivoTraslado = '{CEMotivoTraslado}'") - 'RCETipoCambio = {RCETipoCambio + + + Dim CENodosEmisor As XmlNodeList = XmlDoc.DocumentElement.SelectNodes("//cfdi:Complemento/cce11:ComercioExterior/cce11:Emisor", namespaces) 'XmlDoc.SelectNodes("cfdi:Complemento/{0}:Traslados", "") + Dim CENodosReceptor As XmlNodeList = XmlDoc.DocumentElement.SelectNodes("//cfdi:Complemento/cce11:ComercioExterior/cce11:Receptor", namespaces) + Dim CEnodosDestinatario As XmlNodeList = XmlDoc.DocumentElement.SelectNodes("//cfdi:Complemento/cce11:ComercioExterior/cce11:Destinatario", namespaces) + Dim CEnodosMercancias As XmlNodeList = XmlDoc.DocumentElement.SelectNodes("//cfdi:Complemento/cce11:ComercioExterior/cce11:Mercancias", namespaces) + + + For Each node As XmlNode In CENodosEmisor + Dim nRowEmisor As DataRow = CE_DT_Direcciones.NewRow + nRowEmisor("Calle") = ValorXML(node, "Calle") + nRowEmisor("NumeroExterior") = ValorXML(node, "NumeroExterior") + nRowEmisor("Colonia") = ValorXML(node, "Colonia") + nRowEmisor("Municipio") = ValorXML(node, "Municipio") + nRowEmisor("Estado") = ValorXML(node, "Estado") + nRowEmisor("Pais") = ValorXML(node, "Pais") + nRowEmisor("CodigoPostal") = ValorXML(node, "CodigoPostal") + nRowEmisor("Tipo") = 1 + CE_DT_Mercancias.Rows.Add(nRowEmisor) + Exit For + Next + + For Each node As XmlNode In CENodosReceptor + Dim nRowReceptor As DataRow = CE_DT_Direcciones.NewRow + nRowReceptor("Calle") = ValorXML(node, "Calle") + nRowReceptor("NumeroExterior") = ValorXML(node, "NumeroExterior") + nRowReceptor("Colonia") = ValorXML(node, "Colonia") + nRowReceptor("Municipio") = ValorXML(node, "Municipio") + nRowReceptor("Estado") = ValorXML(node, "Estado") + nRowReceptor("Pais") = ValorXML(node, "Pais") + nRowReceptor("CodigoPostal") = ValorXML(node, "CodigoPostal") + nRowReceptor("Tipo") = 2 + CE_DT_Mercancias.Rows.Add(nRowReceptor) + Exit For + Next + + For Each node As XmlNode In CEnodosDestinatario + Dim nRowDestinatario As DataRow = CE_DT_Direcciones.NewRow + nRowDestinatario("Calle") = ValorXML(node, "Calle") + nRowDestinatario("NumeroExterior") = ValorXML(node, "NumeroExterior") + nRowDestinatario("Colonia") = ValorXML(node, "Colonia") + nRowDestinatario("Municipio") = ValorXML(node, "Municipio") + nRowDestinatario("Estado") = ValorXML(node, "Estado") + nRowDestinatario("Pais") = ValorXML(node, "Pais") + nRowDestinatario("CodigoPostal") = ValorXML(node, "CodigoPostal") + nRowDestinatario("Tipo") = 3 + CE_DT_Mercancias.Rows.Add(nRowDestinatario) + Exit For + Next + + For Each node As XmlNode In CEnodosMercancias + Dim nRowMercancias As DataRow = CE_DT_Mercancias.NewRow + nRowMercancias("NoIdentificacion") = ValorXML(node, "NoIdentificacion") + nRowMercancias("FraccionArancelaria") = ValorXML(node, "FraccionArancelaria") + nRowMercancias("CantidadAduana") = ValorXML(node, "CantidadAduana") + nRowMercancias("UnidadAduana") = ValorXML(node, "UnidadAduana") + nRowMercancias("ValorUnitarioAduana") = ValorXML(node, "ValorUnitarioAduana") + nRowMercancias("ValorDolares") = ValorXML(node, "ValorDolares") + CE_DT_Mercancias.Rows.Add(nRowMercancias) + Next + Dim asddd As String = "" + End If +#End Region + + Next @@ -7825,6 +7925,15 @@ Public Class ClsPaginas Dim rds5 As New ReportDataSource With {.Name = "DataSet5", .Value = If(Vta.DtNCVinculadas IsNot Nothing, Vta.DtNCVinculadas, New DataTable)} ' sino esta creado el objeto, lo creamos, para que no truene el reporte lrds.Add(rds5) + + If RCETipoOperacion.Trim.Length > 0 Then + Dim rds6 As New ReportDataSource With {.Name = "CE_DT_Direcciones", .Value = CE_DT_Direcciones} + lrds.Add(rds6) + Dim rds7 As New ReportDataSource With {.Name = "CE_DT_Mercancias", .Value = CE_DT_Mercancias} + lrds.Add(rds7) + End If + + If UsuarioActual.CveEmpresa.Contiene(141, 152, 159, 160, 161, 162, 163) AndAlso (RutaFormato.Contains("Factura") Or RutaFormato.Contains("Cotizacion")) Then params.Add(New ReportParameter("Kilometraje", Vta.Kilometraje.ToString)) End If diff --git a/Ashx/CargaEventos.ashx b/Ashx/CargaEventos.ashx index 9c23b4c77..b25e72291 100644 --- a/Ashx/CargaEventos.ashx +++ b/Ashx/CargaEventos.ashx @@ -117,6 +117,8 @@ Public Class CargaEventos : Implements IHttpHandler, IRequiresSessionState cevent.Prospecto = dr("Prospecto").ToString cevent.CveTipoEvento = dr("Prospecto").ToString.ToEntero cevent.EmpresaCRM = dr("EmpresaCRM").ToString + cevent.SubProyecto = dr("SubProyecto").ToString + cevent.CveSubProyecto = dr("CveSubProyecto").ToString.ToEntero '11/05/2018 - Evento Gasto Recurrente cevent.CveTipoEvento = dr("CveTipoEvento").ToString.ToEntero diff --git a/Bancos/ProveedoresAbonar.aspx.vb b/Bancos/ProveedoresAbonar.aspx.vb index c139578d4..b552cb479 100644 --- a/Bancos/ProveedoresAbonar.aspx.vb +++ b/Bancos/ProveedoresAbonar.aspx.vb @@ -203,6 +203,21 @@ Partial Class Bancos_ProveedoresAbonar End Set End Property + + Private Property CveSubProyectoFiltro As Integer + Get + If ViewState("CveSubProyectoFiltro") Is Nothing Then + ViewState("CveSubProyectoFiltro") = -1 + End If + Return ViewState("CveSubProyectoFiltro").ToString.ToEntero + + End Get + Set(value As Integer) + ViewState("CveSubProyectoFiltro") = value + End Set + End Property + + Private Property DtDatos As DataTable Get Return DirectCast(ViewState("DtDatos"), DataTable) @@ -278,6 +293,7 @@ Partial Class Bancos_ProveedoresAbonar CveAplicaNC = IfNull(Request("CveAplicaNC"), "-1").ToString.ToEntero CveProveedorSucursal = IfNull(Request("CveProveedorSucursal"), "-1").ToString.ToEntero CodigoProgramacion = IfNull(Request("CodigoProgramacion"), "-1").ToString + CveSubProyectoFiltro = IfNull(Request("CveSubProyecto"), -1).ToString.ToEntero TxtOtrosImportes.Attributes.Add("onKeyUp", String.Format("FnSuma(this,{0},{1});", "TxtTotal", 0)) @@ -382,7 +398,7 @@ Partial Class Bancos_ProveedoresAbonar TxtImporte.Text = "" TxtTotal.Text = "" - If Mov.GetCxPProveedor(CveProveedor, FechaI, FechaF, CveUsuarioProgramo, CveUsuarioRegistro, CveUsuarioResponsable, CveClasificacionProveedor, tCveMoneda, CveEstatus, CveProveedorSucursal, CveAplicaNC, "-1", "-1", CodigoProgramacion) Then + If Mov.GetCxPProveedor(CveProveedor, FechaI, FechaF, CveUsuarioProgramo, CveUsuarioRegistro, CveUsuarioResponsable, CveClasificacionProveedor, tCveMoneda, CveEstatus, CveProveedorSucursal, CveAplicaNC, "-1", "-1", CodigoProgramacion, CveSubProyecto:=CveSubProyectoFiltro) Then DtDatos = Mov.DtResultados.FiltraParametros("Saldo > 0", "Fecha,SerieFolio") GvCxP.DataSource = DtDatos DtDatos.Columns.Add("Movimiento") diff --git a/Bancos/RepProveedoresPagos.aspx.vb b/Bancos/RepProveedoresPagos.aspx.vb index c8562b697..cae394bf3 100644 --- a/Bancos/RepProveedoresPagos.aspx.vb +++ b/Bancos/RepProveedoresPagos.aspx.vb @@ -162,7 +162,8 @@ Partial Class Bancos_RepProveedoresPagos CveUsuarioProgramo = DdlUsuarioProgramo.SelectedValue.ToEntero End If - e.Row.FCHyperLink("ImgAbonar").NavigateUrl = String.Format("/Bancos/ProveedoresAbonar.aspx?CveProveedor={0}&FechaI={1}&FechaF={2}&CveUsuarioProgramo={3}&TipoPago={4}&CveUsuarioRegistro={5}&CveUsuarioResponsable={6}&CveClasificacion={7}&CveMoneda={8}&CveEstatus={9}&CveProveedorSucursal={10}&CveAplicaNC={11}&CodigoProgramacion={12}", e.Row.DBCampo("CveProveedor"), If(txtFechaI.Text <> "", txtFechaI.Text, "-1"), If(txtFechaF.Text <> "", txtFechaF.Text, "-1"), CveUsuarioProgramo, -1, DdlUsuarioRegistro.SelectedValue, DdlUsuarioResponsable.SelectedValue, DdlProveedoresClasificaciones.SelectedValue, e.Row.DBCampo("CveMoneda"), DdlEstatusCompra.SelectedValue, e.Row.DBCampo("CveProveedorSucursal"), AplicaNC.SelectedValue, DdlCodigoProgramacion.SelectedValue) + e.Row.FCHyperLink("ImgAbonar").NavigateUrl = String.Format("/Bancos/ProveedoresAbonar.aspx?CveProveedor={0}&FechaI={1}&FechaF={2}&CveUsuarioProgramo={3}&TipoPago={4}&CveUsuarioRegistro={5}&CveUsuarioResponsable={6}&CveClasificacion={7}&CveMoneda={8}&CveEstatus={9}&CveProveedorSucursal={10}&CveAplicaNC={11}&CodigoProgramacion={12}&CveSubProyecto={13}", e.Row.DBCampo("CveProveedor"), If(txtFechaI.Text <> "", txtFechaI.Text, "-1"), If(txtFechaF.Text <> "", txtFechaF.Text, "-1"), CveUsuarioProgramo, -1, DdlUsuarioRegistro.SelectedValue, DdlUsuarioResponsable.SelectedValue, DdlProveedoresClasificaciones.SelectedValue, e.Row.DBCampo("CveMoneda"), DdlEstatusCompra.SelectedValue, e.Row.DBCampo("CveProveedorSucursal"), AplicaNC.SelectedValue, DdlCodigoProgramacion.SelectedValue, DdlSubProyecto.SelectedValue) + End If End Sub diff --git a/Empresas/1/Formatos/Factura.rdlc b/Empresas/1/Formatos/Factura.rdlc index 4ad240d0e..384c546de 100644 --- a/Empresas/1/Formatos/Factura.rdlc +++ b/Empresas/1/Formatos/Factura.rdlc @@ -3185,7 +3185,7 @@ Tipo Operación: @@ -3195,10 +3195,10 @@ Textbox80 - 0.44458cm - 0.12081cm + 0.34933cm + 0.58711cm 0.36214cm - 2.29375cm + 2.49541cm @@ -3219,7 +3219,7 @@ =Parameters!CETipoOperacion.Value @@ -3227,10 +3227,10 @@ Textbox80 - 0.44458cm - 2.46012cm + 0.34933cm + 3.08252cm 0.36214cm - 13.59648cm + 13.44038cm 1 @@ -3262,10 +3262,10 @@ Textbox80 - 0.91255cm - 0.12081cm + 0.72205cm + 0.58711cm 0.36214cm - 2.29375cm + 2.49541cm 2 @@ -3295,10 +3295,10 @@ Textbox80 - 0.87728cm - 2.46012cm + 0.71853cm + 3.08252cm 0.36214cm - 13.59648cm + 13.44038cm 3 @@ -3330,10 +3330,10 @@ Textbox80 - 1.35583cm - 0.12081cm + 1.10183cm + 0.58711cm 0.36214cm - 2.29375cm + 2.49541cm 4 @@ -3363,10 +3363,10 @@ Textbox80 - 1.35583cm - 2.46012cm + 1.10183cm + 3.08252cm 0.36214cm - 13.59648cm + 13.44038cm 5 @@ -3398,10 +3398,10 @@ Textbox80 - 1.78853cm - 0.12081cm + 1.50278cm + 0.58711cm 0.36214cm - 2.29375cm + 2.49541cm 6 @@ -3431,10 +3431,10 @@ Textbox80 - 1.78853cm - 2.46012cm + 1.50278cm + 3.08252cm 0.36214cm - 13.59648cm + 13.44038cm 7 @@ -3466,10 +3466,10 @@ Textbox80 - 2.26356cm - 0.12081cm + 1.88256cm + 0.58711cm 0.36214cm - 2.29375cm + 2.49541cm 8 @@ -3499,10 +3499,10 @@ Textbox80 - 2.26356cm - 2.46012cm + 1.88256cm + 3.08252cm 0.36214cm - 13.59648cm + 13.44038cm 9 @@ -3569,10 +3569,10 @@ Textbox80 - 2.73506cm - 2.46012cm + 2.29056cm + 3.08252cm 0.36214cm - 13.59648cm + 13.44038cm 11 - 20.08973cm + 19.64523cm + + + + + + Textbox22 + + + #c4d79b + 2pt + 2pt + 2pt + 2pt + + + + @@ -1847,6 +1890,44 @@ + + + + true + true + + + + + =Fields!CodigoObjetoImpuesto.Value + + + + + + + + + + + + 2pt + 2pt + 2pt + 2pt + + + + @@ -2049,7 +2130,7 @@ - 4.44265cm + 3.47821cm @@ -2195,7 +2276,7 @@ - 6.28682cm + 4.82589cm @@ -2337,6 +2418,44 @@ + + + + true + true + + + + + + + + + + + + + + + + + 2pt + 2pt + 2pt + 2pt + + + + @@ -2598,6 +2717,42 @@ + + + + true + true + + + + + + + + + + + + + + 2pt + 2pt + 2pt + 2pt + + + + @@ -2683,6 +2838,7 @@ + @@ -2708,7 +2864,7 @@ 4.14415cm 0.11516cm 2.29418cm - 19.97108cm + 19.94648cm 11 + + + + + + Black + + + + Black + + + White + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + Numero Exterior + + + + + + + Black + + + + Black + + + White + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + Colonia + + + + + + + Black + + + + Black + + + White + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + Municipio + + + + + + + Black + + + + Black + + + White + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + Estado + + + + + + + Black + + + + Black + + + White + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + Pais + + + + + + + Black + + + + Black + + + White + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + CP + + + + + + + Black + + + + Black + + + White + 2pt + 2pt + 2pt + 2pt + + + + + + + + 0.41479cm + + + + + true + true + + + + + =Fields!Calle.Value + + + + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + =Fields!NumeroExterior.Value + + + + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + =Fields!Colonia.Value + + + + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + =Fields!Municipio.Value + + + + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + =Fields!Estado.Value + + + + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + =Fields!Pais.Value + + + + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + =Fields!CodigoPostal.Value + + + + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + + + + + + + + + + + + + + + + After + + + + + + + CE_DT_Emisor + 2.41413cm + 0.10658cm + 0.8825cm + 19.64985cm + + + + + + + + + 1.19894cm + + + 2.31479cm + + + 2.19123cm + + + 2.5cm + + + 2.79104cm + + + 2.5cm + + + 2.5cm + + + 2.25801cm + + + 2.19045cm + + + + + 0.49417cm + + + + + true + true + + + + + Version + + + + + + + Black + + + + Black + + + White + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + Motivo Traslado + + + + + + + Black + + + + Black + + + White + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + Tipo Operacion + + + + + + + Black + + + + Black + + + White + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + Clave De Pedimento + + + + + + + Black + + + + Black + + + White + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + Certificado Origen + + + + + + + Black + + + + Black + + + White + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + Incoterm + + + + + + + Black + + + + Black + + + White + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + Sub Division + + + + + + + Black + + + + Black + + + White + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + Tipo Cambio + + + + + + + Black + + + + Black + + + White + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + Total + + + + + + + Black + + + + Black + + + White + 2pt + 2pt + 2pt + 2pt + + + + + + + + 0.41479cm + + + + + true + true + + + + + =Fields!Version.Value + + + + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + =Fields!MotivoTraslado.Value + + + + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + =Fields!TipoOperacion.Value + + + + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + =Fields!ClaveDePedimento.Value + + + + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + =Fields!CertificadoOrigen.Value + + + + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + =Fields!Incoterm.Value + + + + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + =Fields!Subdivision.Value + + + + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + =Fields!TipoCambioUSD.Value + + + + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + =Fields!TotalUSD.Value + + + + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + + + + + + + + + + + + + + + + + + After + + + + + + + CE_DT_Cabecera + 0.75784cm + 0.07193cm + 0.90896cm + 20.44446cm + 1 + + + + + + + + + 2.5cm + + + 3.13031cm + + + 2.5cm + + + 2.5cm + + + 3.31794cm + + + 2.5cm + + + + + 0.41479cm + + + + + true + true + + + + + No Identificacion + + + + + + + Black + + + + Black + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + Fraccion Arancelaria + + + + + + + Black + + + + Black + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + Cantidad Aduana + + + + + + + Black + + + + Black + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + Unidad Aduana + + + + + + + Black + + + + Black + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + Valor Unitario Aduana + + + + + + + Black + + + + Black + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + Valor Dolares + + + + + + + Black + + + + Black + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + 0.38834cm + + + + + true + true + + + + + =Fields!NoIdentificacion.Value + + + + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + =Fields!FraccionArancelaria.Value + + + + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + =Fields!CantidadAduana.Value + + + + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + =Fields!UnidadAduana.Value + + + + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + =Fields!ValorUnitarioAduana.Value + + + + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + =Fields!ValorDolares.Value + + + + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + + + + + + + + + + + + + + + After + + + + + + + CE_DT_Mercancias + 6.856cm + 0.10658cm + 0.80313cm + 16.44825cm + 2 + + + + + + + + true + true + + + + + Dirección Emisor + + + + + + + Textbox16 + 0.46316cm + 19.64985cm + + + + Black + + + + Black + + + White + 2pt + 2pt + 2pt + 2pt + + + + true + 1.90158cm + 0.10658cm + 0.46316cm + 19.64985cm + 3 + + + + + + + + + 2.5cm + + + 2.5cm + + + 3.82884cm + + + 3.01563cm + + + 2.64663cm + + + 2.65875cm + + + 2.5cm + + + + + 0.41479cm + + + + + true + true + + + + + Calle + + + + + + + Black + + + + Black + + + White + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + Numero Exterior + + + + + + + Black + + + + Black + + + White + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + Colonia + + + + + + + Black + + + + Black + + + White + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + Municipio + + + + + + + Black + + + + Black + + + White + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + Estado + + + + + + + Black + + + + Black + + + White + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + Pais + + + + + + + Black + + + + Black + + + White + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + CP + + + + + + + Black + + + + Black + + + White + 2pt + 2pt + 2pt + 2pt + + + + + + + + 0.41479cm + + + + + true + true + + + + + =Fields!Calle.Value + + + + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + =Fields!NumeroExterior.Value + + + + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + =Fields!Colonia.Value + + + + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + =Fields!Municipio.Value + + + + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + =Fields!Estado.Value + + + + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + =Fields!Pais.Value + + + + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + =Fields!CodigoPostal.Value + + + + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + + + + + + + + + + + + + + + + After + + + + + + + CE_DT_Receptor + 3.9195cm + 0.10658cm + 0.82958cm + 19.64985cm + 4 + + + + + + + + true + true + + + + + Dirección Receptor + + + + + + + Textbox16 + 0.46316cm + 19.64985cm + + + + Black + + + + Black + + + White + 2pt + 2pt + 2pt + 2pt + + + + true + 3.40695cm + 0.10658cm + 0.46316cm + 19.64985cm + 5 + + + + + + + + + 2.5cm + + + 2.5cm + + + 3.82884cm + + + 3.01563cm + + + 2.64663cm + + + 2.65875cm + + + 2.5cm + + + + + 0.46771cm + + + + + true + true + + + + + Calle + + + + + + + Black + + + + Black + + + White + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + Numero Exterior + + + + + + + Black + + + + Black + + + White + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + Colonia + + + + + + + Black + + + + Black + + + White + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + Municipio + + + + + + + Black + + + + Black + + + White + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + Estado + + + + + + + Black + + + + Black + + + White + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + Pais + + + + + + + Black + + + + Black + + + White + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + CP + + + + + + + Black + + + + Black + + + White + 2pt + 2pt + 2pt + 2pt + + + + + + + + 0.41479cm + + + + + true + true + + + + + =Fields!Calle.Value + + + + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + =Fields!NumeroExterior.Value + + + + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + =Fields!Colonia.Value + + + + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + =Fields!Municipio.Value + + + + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + =Fields!Estado.Value + + + + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + =Fields!Pais.Value + + + + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + =Fields!CodigoPostal.Value + + + + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + + + + + + + + + + + + + + + + After + + + + + + + CE_DT_Destinatario + 5.36923cm + 0.10658cm + 0.8825cm + 19.64985cm + 6 + + + + + + + + true + true + + + + + Dirección Destinatario + + + + + + + Textbox16 + 0.46316cm + 19.64985cm + + + + Black + + + + Black + + + White + 2pt + 2pt + 2pt + 2pt + + + + true + 4.85668cm + 0.10658cm + 0.46316cm + 19.64985cm + 7 + + + + + true true - Tipo Operación: + Complemento Comercio Exterior - - Textbox80 - 0.34933cm - 0.58711cm - 0.36214cm - 2.49541cm + Textbox16 + 0.07193cm + 0.72256cm + 20.37753cm + 8 + + Black + + + + Black + + + White 2pt 2pt 2pt @@ -3216,401 +6490,39 @@ - =Parameters!CETipoOperacion.Value + Mercancia - - - - - 2pt - 2pt - 2pt - 2pt - - - - true - true - - - - - Incoterm: - - - - 2pt - 2pt - 2pt - 2pt - - - - true - true - - - - - =Parameters!CEIncoterm.Value - - - - - - 2pt - 2pt - 2pt - 2pt - - - - true - true - - - - - Motivo Traslado: - - - - - - 2pt - 2pt - 2pt - 2pt - - - - true - true - - - - - =Parameters!CEMotivoTraslado.Value - - - - - - 2pt - 2pt - 2pt - 2pt - - - - true - true - - - - - Clave Pedimento: - - - - - - 2pt - 2pt - 2pt - 2pt - - - - true - true - - - - - =Parameters!CEClavePedimento.Value - - - - - - 2pt - 2pt - 2pt - 2pt - - - - true - true - - - - - Num Reg Id Trib: - - - - - - 2pt - 2pt - 2pt - 2pt - - - - true - true - - - - - =Parameters!CEId.Value - - - - - - 2pt - 2pt - 2pt - 2pt - - - - true - true - - - - - Tipo Cambio: - - - - - - 2pt - 2pt - 2pt - 2pt - - - - true - true - - - - - =Parameters!CETipoCamvio.Value - - - - Textbox80 - 2.29056cm - 3.08252cm - 0.36214cm - 13.44038cm - 11 + Textbox16 + 6.39284cm + 0.10658cm + 0.46316cm + 16.44825cm + 9 - 2pt - 2pt - 2pt - 2pt - - - - true - true - - - - - COMPLEMENTO COMERCIO EXTERIOR - - - - - + + + Black + + + White 2pt 2pt 2pt @@ -3620,9 +6532,8 @@ true 16.99253cm - 0.07193cm - 2.6527cm - 20.23608cm + 7.7575cm + 20.51639cm 47 = IIF( LEN(Parameters!CETipoOperacion.Value) > 0, False, True) @@ -3634,7 +6545,7 @@ - 19.64523cm + 24.75003cm