From 596a7a7791506bcbab7ceed3601c9e99bd437deb Mon Sep 17 00:00:00 2001 From: rrene Date: Thu, 8 Feb 2024 09:09:32 -0700 Subject: [PATCH 01/11] -- Recolecciones de usados --- Acumuladores/RepRecolecciones.aspx | 20 ++++- Acumuladores/RepRecolecciones.aspx.vb | 124 ++++++++++++++++++++------ 2 files changed, 115 insertions(+), 29 deletions(-) diff --git a/Acumuladores/RepRecolecciones.aspx b/Acumuladores/RepRecolecciones.aspx index b32a3beae..fe1de6735 100644 --- a/Acumuladores/RepRecolecciones.aspx +++ b/Acumuladores/RepRecolecciones.aspx @@ -178,8 +178,25 @@
P + +
+
+
+
+ A. Origen +
+
+ +
+
+ A. Destino +
+
+ +
+

@@ -225,7 +242,7 @@
- +
@@ -246,6 +263,7 @@
+
diff --git a/Acumuladores/RepRecolecciones.aspx.vb b/Acumuladores/RepRecolecciones.aspx.vb index 8c50eb36d..92fbef024 100644 --- a/Acumuladores/RepRecolecciones.aspx.vb +++ b/Acumuladores/RepRecolecciones.aspx.vb @@ -1,6 +1,7 @@ Imports System.Data Imports CrystalDecisions.Shared.Json Imports Extensiones +Imports Modelos Partial Class Acumuladores_RepRecolecciones @@ -62,22 +63,24 @@ Partial Class Acumuladores_RepRecolecciones TxtFechaI.Text = NowADS().AddDays(-1).ToShortDateString TxtFechaF.Text = NowADS().AddDays(3).ToShortDateString CargarCentrosDeCosto(Nothing, DdlSubProyecto, Nothing, LblSubProyecto) + DdlAlmacenOrigen.DataSource = GlobalDTAlmacenUsuarios(UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1).FiltraParametros("CveTipoAlmacen IN (4)") + DdlAlmacenOrigen.DataBind() + DdlAlmacenDestino.DataSource = GlobalDTAlmacenUsuarios(UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1).FiltraParametros("CveTipoAlmacen IN (21) and Almacen like '%sado%'") + DdlAlmacenDestino.DataBind() + End Sub Private Sub CargaDatos() Dim ObjGeneral As New ClsGenerales - If (ObjGeneral.GetInvEntregaAlmacenRuta(-1, Now.AddMonths(-1), Now.AddMonths(1), UsuarioActual.CveEmpresa, 2, -1)) Then GvR.DataSource = ObjGeneral.DtResultados End If - ObjGeneral.Dispose() UPGv.DataBind() UpGral.Update() - End Sub Protected Sub gvR_RowDataBound(ByVal sender As Object, ByVal e As GridViewRowEventArgs) @@ -128,16 +131,18 @@ Partial Class Acumuladores_RepRecolecciones Private Sub CargaDatosRecoleccionDetallePS() Dim ObjGenerales As New ClsGenerales() - Dim Str As New StringBuilder - Str.Append("Productos Definidos
") - If ObjGenerales.GetEntregaAlmacenRutaDetalle(CveEntregaAlmacen) Then - For Each dr As DataRow In ObjGenerales.DtResultados.Rows - Str.AppendFormat(" {0} - {1}
", dr("Cantidad"), dr("CodigoPS")) - Next - LblProductosCargados.Text = Str.ToString - End If + Dim Str As New StringBuilder + Str.Append("Productos Definidos
") + If ObjGenerales.GetEntregaAlmacenRutaDetalle(CveEntregaAlmacen) Then + For Each dr As DataRow In ObjGenerales.DtResultados.Rows + Str.AppendFormat(" {0} - {1}
", dr("Cantidad"), dr("CodigoPS")) + HdnPSRecoleccion.Value = dr("CvePS").ToString + HdnCantidadRecoleccion.Value = dr("Cantidad").ToString + Next + LblProductosCargados.Text = Str.ToString + End If - ObjGenerales.Dispose() + ObjGenerales.Dispose() GvModalPSRecoleccion.DataSource = DTRecoleccion GvModalPSRecoleccion.DataBind() @@ -158,43 +163,38 @@ Partial Class Acumuladores_RepRecolecciones End Function Private Sub CargaPS() - Dim ObjAcum As New ClsAcumuladores + Dim lista As New List(Of String) Dim Filtro As String = "" For Each drow As DataRow In GlobalDTAcumTamaños(UsuarioActual.CveEmpresa).Rows - If drow("CvePSCargo").ToString.ToEntero > 0 Then lista.Add(drow("CvePSCargo").ToString) End If Next If lista.Count > 0 Then - Filtro = "CvePS in(" & String.Join(",", lista) & ")" - DdlProducto2.DataSource = GlobalDTPSSimplificado(UsuarioActual.CveEmpresa).FiltraParametros(Filtro) DdlProducto2.DataBind() DdlProducto2.Items.Insert(0, New ListItem("Seleccione", "-1")) End If - ObjAcum.Dispose() End Sub Protected Sub LnkModalAgregarPS_Click(ByVal sender As Object, ByVal e As EventArgs) Dim dRow As DataRow = DTRecoleccion.NewRow() - dRow("CveEntregaAlmacenDetalle") = -1 - dRow("CveEntregaAlmacen") = CveEntregaAlmacen - dRow("CvePS") = DdlProducto2.SelectedValue.ToEntero() - dRow("Cantidad") = TxtModalRecoleccionCantidad.Text.ToEntero() - dRow("CveUnidadMedida") = DdlModalRecoleccionUnidad.SelectedValue.ToEntero() - dRow("CveUsuario") = UsuarioActual.CveUsuario - dRow("FechaIng") = NowADS() - dRow("CodigoPS") = DdlProducto2.SelectedItem.Text - dRow("Abreviatura") = DdlModalRecoleccionUnidad.SelectedItem.Text - DTRecoleccion.Rows.Add(dRow) - + dRow("CveEntregaAlmacenDetalle") = -1 + dRow("CveEntregaAlmacen") = CveEntregaAlmacen + dRow("CvePS") = DdlProducto2.SelectedValue.ToEntero() + dRow("Cantidad") = TxtModalRecoleccionCantidad.Text.ToEntero() + dRow("CveUnidadMedida") = DdlModalRecoleccionUnidad.SelectedValue.ToEntero() + dRow("CveUsuario") = UsuarioActual.CveUsuario + dRow("FechaIng") = NowADS() + dRow("CodigoPS") = DdlProducto2.SelectedItem.Text + dRow("Abreviatura") = DdlModalRecoleccionUnidad.SelectedItem.Text + DTRecoleccion.Rows.Add(dRow) LimpiarControlesPS() CargaDatosRecoleccionDetallePS() @@ -208,5 +208,73 @@ Partial Class Acumuladores_RepRecolecciones UpModalRecoleccion.Update() End Sub + Private Sub BtnModalRecoleccionGuardar_Click(sender As Object, e As EventArgs) Handles BtnModalRecoleccionGuardar.Click + Dim ObjInventario As New ClsInventarios + Dim ObjConta As New ClsContabilidad(ObjInventario.IniciaTransacSQL) + Dim ErrorMovInv As Boolean = False + Dim Fecha As DateTime = NowADS() + Dim Concepto As String = "Traspaso Recolección" + Dim CveMovimientoSalida As Integer = ObjInventario.AddMovimiento(DdlAlmacenOrigen.SelectedValue.ToEntero, 26, 1, Fecha, -1, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1, -1, -1, -1) + Dim FolioSalida As Integer = ObjInventario.Folio + Dim CveMovimientoEntrada As Integer = ObjInventario.AddMovimiento(DdlAlmacenDestino.SelectedValue.ToEntero, 27, 1, Fecha, -1, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1, -1, -1, -1, CveMovimientoRelacionado:=CveMovimientoSalida) + Dim CveUM As Integer = GlobalDTPSSimplificado(UsuarioActual.CveEmpresa, CvePS:=HdnPSRecoleccion.Value.ToEntero).FiltroPrimeroValor("CveUnidadMedida", "").ToEntero + If Not ObjInventario.AddMovimientoDetalle(CveMovimientoSalida, HdnCantidadRecoleccion.Value.ToDecimal, CveUM, HdnPSRecoleccion.Value.ToEntero, 0) Then + ErrorMovInv = True + End If + 'HdnPSRecoleccion + For Each gvr As GridViewRow In GvModalPSRecoleccion.Rows + Dim CveMovtoDetalle As Integer + If ObjInventario.AddMovimientoDetalle(CveMovimientoEntrada, gvr.DataKey("Cantidad").ToDecimal, gvr.DataKey("CveUnidadMedida").ToEntero, gvr.DataKey("CvePS").ToEntero, 0) Then + CveMovtoDetalle = ObjInventario.CveMovimientoDetalle + Else + ErrorMovInv = True + End If + Next + If ObjInventario.GetMovimientosDetalle(CveMovimientoSalida, UsuarioActual.CveEmpresa) Then + Dim Cont As Integer = 0 + Dim dttSalida As DataTable = ObjInventario.DtResultados + + If Not ErrorMovInv Then + Dim CvePrePoliza As Integer = ObjConta.AddPrePolizas("Inventario/TraspasoAlmacen", 53, 0, 0, 1, Fecha, Concepto, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa) + Dim importe As Decimal = dttSalida.SUMD("Total").RoundSQL + Dim Contabilizable As Boolean = False + + If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, importe, importe, 68, Concepto, Concepto, CveMovimientoAlmacen:=CveMovimientoSalida, Contabilizable:=Contabilizable) Then + ErrorMovInv = True + End If + + If Not ErrorMovInv AndAlso Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, importe, importe, 68, Concepto, Concepto, CveMovimientoAlmacen:=CveMovimientoEntrada, Contabilizable:=Contabilizable) Then + ErrorMovInv = True + End If + + If Not ErrorMovInv Then + If ObjConta.ValidacionesPrePoliza(CvePrePoliza, UsuarioActual) Then + If ObjConta.ValorPolizaDescuadre > 0 Then + 'MsgError = ObjMov.MensajePolizaDescuadre + ErrorMovInv = True + 'GuardaLogAD($"Bancos/Transferencias | Error:{ObjMov.MensajePolizaDescuadre} Diferencia:{ObjMov.ValorDiferencia} | CvePrePoliza:{CvePrePoliza}", "LogPrePolizas") + End If + Else + ErrorMovInv = True + End If + End If + End If + End If + + If Not ErrorMovInv Then + ObjInventario.Commit() + + Dim MensajeAlert As New StringBuilder + + MensajeAlert.Append("Se realizó con éxito el traspaso.") + + MensajeAlert.AppendFormat("
Folio de Salida: {0}", FolioSalida, CveMovimientoSalida) + 'MensajeAlert.AppendFormat("
Imprimir Reporte", Encripta(String.Format("OP=Alm&CveMovimiento={0}", CveMovimientoSalida))) + Alert(MensajeAlert.ToString) + Else + ObjInventario.RollBack() + End If + + End Sub End Class From 8494df34fc0c68f5ed7ffbbc58d3cb9175114a48 Mon Sep 17 00:00:00 2001 From: rrene Date: Thu, 8 Feb 2024 09:09:52 -0700 Subject: [PATCH 02/11] =?UTF-8?q?--=20liga=20a=20prep=C3=B3lizas?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Inventarios/RecepcionAlmacen.aspx.vb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Inventarios/RecepcionAlmacen.aspx.vb b/Inventarios/RecepcionAlmacen.aspx.vb index 544982725..2bb004a3f 100644 --- a/Inventarios/RecepcionAlmacen.aspx.vb +++ b/Inventarios/RecepcionAlmacen.aspx.vb @@ -3330,6 +3330,7 @@ Partial Class Inventarios_RecepcionAlmacen Dim CveConceptoContableCostoME As Integer = -1 Dim CveConceptoContableCostoComplementaria As Integer = -1 Dim UsaComplementariaFleteImportaciones As Boolean = True + If UsuarioActual.CveEmpresa = 119 Then UsaComplementariaFleteImportaciones = False If DtCostos.Rows.Count > 0 Then If CveCompraSurtir > 0 Then @@ -3356,7 +3357,6 @@ Partial Class Inventarios_RecepcionAlmacen CveConceptoContableCosto = 176 CveConceptoContableCostoME = 228 CveConceptoContableCostoComplementaria = 229 - UsaComplementariaFleteImportaciones = True Else @@ -3456,7 +3456,7 @@ Partial Class Inventarios_RecepcionAlmacen If UsuarioActual.Empresa.Funcionalidad(200) = "1" Then If ObjConta.ContabilizarPrePoliza(CvePrePoliza, UsuarioActual.CveUsuario, UsuarioActual.Empresa) Then - MensajeContabilidad = $"
Movimiento contabilizado en el folio: {ObjConta.ContaFolio}
" + MensajeContabilidad = $"
Movimiento contabilizado en el folio: {ObjConta.ContaFolio}
" Else ErrorMovInv = True MensajeError = "Error al contabilizar los conceptos contables" From 550ae176d9c71c1a10eaae61ba0d6bcb669d4dfe Mon Sep 17 00:00:00 2001 From: rrene Date: Thu, 8 Feb 2024 09:10:04 -0700 Subject: [PATCH 03/11] -- mejora --- Inventarios/EntradasSalidas.aspx.vb | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Inventarios/EntradasSalidas.aspx.vb b/Inventarios/EntradasSalidas.aspx.vb index 23e2e03a7..3eff34079 100644 --- a/Inventarios/EntradasSalidas.aspx.vb +++ b/Inventarios/EntradasSalidas.aspx.vb @@ -83,7 +83,7 @@ Partial Class Inventarios_EntradasSalidas End Property Public Property CveConcepto() As Integer Get - Return ViewState("CveConcepto").ToString.ToEntero + Return IfNull(ViewState("CveConcepto"), "").ToString.ToEntero End Get Set(value As Integer) ViewState("CveConcepto") = value @@ -1249,6 +1249,8 @@ Partial Class Inventarios_EntradasSalidas DdlAlmacen.Items.Insert(0, New ListItem("Seleccione", "-1")) DdlAlmacen.DataBind() DdlAlmacen.SelectedIndex = 1 'toma el primer renglón + DdlConcepto.Items.Insert(0, New ListItem("Entrada Usados", "42")) + DdlConcepto.SelectedValue = "42" Dim ObjGenerales As New ClsGenerales() From bf9780514cc1f8dbfa90ca69f24ef8fea9c6a511 Mon Sep 17 00:00:00 2001 From: rrene Date: Thu, 8 Feb 2024 09:10:29 -0700 Subject: [PATCH 04/11] =?UTF-8?q?-=20correcci=C3=B3n=20de=20cveempresa?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Transportes/RepContratos.aspx.vb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Transportes/RepContratos.aspx.vb b/Transportes/RepContratos.aspx.vb index a74708db4..df3b0b9d1 100644 --- a/Transportes/RepContratos.aspx.vb +++ b/Transportes/RepContratos.aspx.vb @@ -28,7 +28,7 @@ Partial Class ListadoContratos DdlTipoAF.Items.Insert(0, New ListItem("Seleccione", "")) 'Lista Chofer' - DdlChofer.DataSource = GlobalDTRHPersonal(185) + DdlChofer.DataSource = GlobalDTRHPersonal(UsuarioActual.CveEmpresa) 'solo puesto operador.y activos DdlChofer.DataBind() DdlChofer.Items.Insert(0, New ListItem("Seleccione", "")) From bf9fd0425c2f169051ca0d211f989de51e677a00 Mon Sep 17 00:00:00 2001 From: rakcsle Date: Thu, 8 Feb 2024 15:36:34 -0700 Subject: [PATCH 05/11] =?UTF-8?q?Definici=C3=B3n=20de=20empresa,=20poner?= =?UTF-8?q?=20la=20etiqueta=20de=20Descripci=C3=B3nVenta?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Sistemas/DefinicionEmpresa.aspx | 7 +++++-- Ventas/Clientes.aspx.vb | 20 ++++++++++++++++++++ Ventas/Ventas.aspx.vb | 11 +++++++++++ 3 files changed, 36 insertions(+), 2 deletions(-) diff --git a/Sistemas/DefinicionEmpresa.aspx b/Sistemas/DefinicionEmpresa.aspx index f020e0434..741dd2086 100644 --- a/Sistemas/DefinicionEmpresa.aspx +++ b/Sistemas/DefinicionEmpresa.aspx @@ -1025,15 +1025,18 @@
diff --git a/Ventas/Clientes.aspx.vb b/Ventas/Clientes.aspx.vb index 6f61c20e7..6542dd47e 100644 --- a/Ventas/Clientes.aspx.vb +++ b/Ventas/Clientes.aspx.vb @@ -2193,6 +2193,8 @@ Partial Class Clientes Cuerpo = Cuerpo.Replace("{""Vigencia""}", Dr("Vigencia").ToString()) Cuerpo = Cuerpo.Replace("{""AtencionA""}", Dr("AtencionA").ToString()) Cuerpo = Cuerpo.Replace("{""Sucursal""}", Dr("SubProyecto").ToString()) + Cuerpo = Cuerpo.Replace("{""DescripcionVenta""}", Dr("DescripcionVenta").ToString()) + Cuerpo = Cuerpo.Replace("{""AtencionA""}", Dr("AtencionA").ToString()) End If @@ -2212,6 +2214,8 @@ Partial Class Clientes Asunto = Asunto.Replace("{""Vigencia""}", Dr("Vigencia").ToString()) Asunto = Asunto.Replace("{""AtencionA""}", Dr("AtencionA").ToString()) Asunto = Asunto.Replace("{""Sucursal""}", Dr("SubProyecto").ToString()) + Asunto = Asunto.Replace("{""DescripcionVenta""}", Dr("DescripcionVenta").ToString()) + Asunto = Asunto.Replace("{""AtencionA""}", Dr("AtencionA").ToString()) End If End If @@ -2231,6 +2235,8 @@ Partial Class Clientes Cuerpo = Cuerpo.Replace("{""Vigencia""}", Dr("Vigencia").ToString()) Cuerpo = Cuerpo.Replace("{""AtencionA""}", Dr("AtencionA").ToString()) Cuerpo = Cuerpo.Replace("{""Sucursal""}", Dr("SubProyecto").ToString()) + Cuerpo = Cuerpo.Replace("{""DescripcionVenta""}", Dr("DescripcionVenta").ToString()) + Cuerpo = Cuerpo.Replace("{""AtencionA""}", Dr("AtencionA").ToString()) End If End If @@ -2247,6 +2253,9 @@ Partial Class Clientes Asunto = Asunto.Replace("{""Vigencia""}", Dr("Vigencia").ToString()) Asunto = Asunto.Replace("{""AtencionA""}", Dr("AtencionA").ToString()) Asunto = Asunto.Replace("{""Sucursal""}", Dr("SubProyecto").ToString()) + Asunto = Asunto.Replace("{""DescripcionVenta""}", Dr("DescripcionVenta").ToString()) + Asunto = Asunto.Replace("{""AtencionA""}", Dr("AtencionA").ToString()) + End If End If End If @@ -5614,6 +5623,10 @@ Partial Class Clientes Cuerpo = Cuerpo.Replace("{""Vigencia""}", Dr("Vigencia").ToString()) Cuerpo = Cuerpo.Replace("{""AtencionA""}", Dr("AtencionA").ToString()) Cuerpo = Cuerpo.Replace("{""Sucursal""}", Dr("SubProyecto").ToString()) + Cuerpo = Cuerpo.Replace("{""DescripcionVenta""}", Dr("DescripcionVenta").ToString()) + Cuerpo = Cuerpo.Replace("{""AtencionA""}", Dr("AtencionA").ToString()) + + End If End If @@ -5632,6 +5645,8 @@ Partial Class Clientes Asunto = Asunto.Replace("{""Vigencia""}", Dr("Vigencia").ToString()) Asunto = Asunto.Replace("{""AtencionA""}", Dr("AtencionA").ToString()) Asunto = Asunto.Replace("{""Sucursal""}", Dr("SubProyecto").ToString()) + Asunto = Asunto.Replace("{""DescripcionVenta""}", Dr("DescripcionVenta").ToString()) + Asunto = Asunto.Replace("{""AtencionA""}", Dr("AtencionA").ToString()) End If End If @@ -5650,6 +5665,8 @@ Partial Class Clientes Cuerpo = Cuerpo.Replace("{""Vigencia""}", Dr("Vigencia").ToString()) Cuerpo = Cuerpo.Replace("{""AtencionA""}", Dr("AtencionA").ToString()) Cuerpo = Cuerpo.Replace("{""Sucursal""}", Dr("SubProyecto").ToString()) + Cuerpo = Cuerpo.Replace("{""DescripcionVenta""}", Dr("DescripcionVenta").ToString()) + Cuerpo = Cuerpo.Replace("{""AtencionA""}", Dr("AtencionA").ToString()) End If End If @@ -5667,6 +5684,9 @@ Partial Class Clientes Asunto = Asunto.Replace("{""Vigencia""}", Dr("Vigencia").ToString()) Asunto = Asunto.Replace("{""AtencionA""}", Dr("AtencionA").ToString()) Asunto = Asunto.Replace("{""Sucursal""}", Dr("SubProyecto").ToString()) + Asunto = Asunto.Replace("{""DescripcionVenta""}", Dr("DescripcionVenta").ToString()) + Asunto = Asunto.Replace("{""AtencionA""}", Dr("AtencionA").ToString()) + End If End If diff --git a/Ventas/Ventas.aspx.vb b/Ventas/Ventas.aspx.vb index a17c40d89..df7f915bc 100644 --- a/Ventas/Ventas.aspx.vb +++ b/Ventas/Ventas.aspx.vb @@ -21095,6 +21095,7 @@ Partial Class Ventas Cuerpo = Cuerpo.Replace("{""Vigencia""}", TxtFechaVencimientoCotizacion.Text) Cuerpo = Cuerpo.Replace("{""AtencionA""}", TxtAtencionA.Text) Cuerpo = Cuerpo.Replace("{""Sucursal""}", DdlSubProyectoDatos.SelectedItem.Text) + Cuerpo = Cuerpo.Replace("{""DescripcionVenta""}", TxtDescripcionVenta.Text) End If If UsuarioActual.Empresa.AsuntoPlantillaMailVentaCotizacion.Trim.Length > 0 Then @@ -21109,6 +21110,7 @@ Partial Class Ventas Asunto = Asunto.Replace("{""Vigencia""}", TxtFechaVencimientoCotizacion.Text) Asunto = Asunto.Replace("{""AtencionA""}", TxtAtencionA.Text) Asunto = Asunto.Replace("{""Sucursal""}", DdlSubProyectoDatos.SelectedItem.Text) + Asunto = Asunto.Replace("{""DescripcionVenta""}", TxtDescripcionVenta.Text) End If Else @@ -21123,6 +21125,7 @@ Partial Class Ventas Cuerpo = Cuerpo.Replace("{""SerieFolio""}", SerieFolio) Cuerpo = Cuerpo.Replace("{""AtencionA""}", TxtAtencionA.Text) Cuerpo = Cuerpo.Replace("{""Sucursal""}", DdlSubProyectoDatos.SelectedItem.Text) + Cuerpo = Cuerpo.Replace("{""DescripcionVenta""}", TxtDescripcionVenta.Text) End If If UsuarioActual.Empresa.AsuntoPlantillaMailVenta.Trim.Length > 0 Then @@ -21136,6 +21139,7 @@ Partial Class Ventas Asunto = Asunto.Replace("{""SerieFolio""}", SerieFolio) Asunto = Asunto.Replace("{""AtencionA""}", TxtAtencionA.Text) Asunto = Asunto.Replace("{""Sucursal""}", DdlSubProyectoDatos.SelectedItem.Text) + Asunto = Asunto.Replace("{""DescripcionVenta""}", TxtDescripcionVenta.Text) End If End If @@ -36312,6 +36316,10 @@ Partial Class Ventas RegistraScript("$('#DvModalTipoVenta').modal('hide');") End Select + + LblDvModalTipoVentaTitulo.Text = RBLTipoVenta.SelectedItem.Text + + End If UpDvModalTipoVenta.Update() End Sub @@ -36402,6 +36410,9 @@ Partial Class Ventas GvProductosProcedimiento.DataBind() DVGvProductosProcedimiento.Visible = False + + LblDvModalTipoVentaTitulo.Text = "Tipo de Venta" + UpDvModalTipoVenta.Update() End Sub From 52838030ad0603038a9098015c8240aa5a55dbe3 Mon Sep 17 00:00:00 2001 From: rakcsle Date: Thu, 8 Feb 2024 19:35:36 -0700 Subject: [PATCH 06/11] SMS 2024.02.08 Paquetes valiad existencia, calendario --- Inventarios/PaquetesArmadoDesarmado.aspx | 58 +++++++- Inventarios/PaquetesArmadoDesarmado.aspx.vb | 153 +++++++++++++++++--- 2 files changed, 186 insertions(+), 25 deletions(-) diff --git a/Inventarios/PaquetesArmadoDesarmado.aspx b/Inventarios/PaquetesArmadoDesarmado.aspx index d623ae77c..8cdfba283 100644 --- a/Inventarios/PaquetesArmadoDesarmado.aspx +++ b/Inventarios/PaquetesArmadoDesarmado.aspx @@ -3,6 +3,16 @@ + + + Paquetes | Armado - Desarmado @@ -186,7 +196,9 @@
- + @@ -210,7 +222,8 @@ -
+ +<%--
@@ -220,7 +233,24 @@ -
+
--%> + +
+ + + + + + + + + + +
+ + +
@@ -477,7 +507,22 @@ -
+ +
+ + + + + + + + + + +
+ + <%--
@@ -487,7 +532,8 @@ -
+
--%> +
@@ -679,5 +725,7 @@ } + + diff --git a/Inventarios/PaquetesArmadoDesarmado.aspx.vb b/Inventarios/PaquetesArmadoDesarmado.aspx.vb index 5c31e2e4e..3c43cfe9d 100644 --- a/Inventarios/PaquetesArmadoDesarmado.aspx.vb +++ b/Inventarios/PaquetesArmadoDesarmado.aspx.vb @@ -490,6 +490,91 @@ Partial Class Inventarios_PaquetesArmadoDesarmado End If + Dim TextoError As New StringBuilder + If Tipo = 1 Then + Dim ObjInventarioVal As New ClsInventarios + Dim StrXML As New StringBuilder + StrXML.Append("") + Dim FechaCaducidad As Date + Dim Lote As String = "" + + Dim TieneErrorExistencia As Boolean = False + + For Each GvRow As GridViewRow In GvDatosArmado.Rows + + FechaCaducidad = If(CBool(GvRow.DataKey("AplicaCaducidad")) AndAlso GvRow.FCTextBox("TxtCaducidad").ToString().ToDate > MinFecha, GvRow.FCTextBox("TxtCaducidad").Text.ToDate, MinFecha) + Lote = If(CBool(GvRow.DataKey("AplicaLote")), GvRow.FCTextBox("TxtLote").Text.Trim, "-1") + + Dim Existencia As Decimal = ObjInventarioVal.GetExistenciasPS(GvRow.DataKey("CvePS").ToEntero, GvRow.DataKey("CveUM").ToEntero, UsuarioActual.CveEmpresa, CveAlmacen:=DdlAlmacenArmado.SelectedValue.ToEntero(), FechaMovto:=TxtFechaArmado.Text.ToDateTime.ToString("yyyy/MM/dd HH:mm"), Serie:="-1", Lote:=Lote, FechaCaducidad:=FechaCaducidad) + + + If GvRow.DataKey("Cantidad").ToDecimal > Existencia Then + TieneErrorExistencia = True + + TextoError.AppendFormat(" - {0} Existencia: {1:#,##0.##}
", GvRow.DataKey("CodigoPS"), Existencia) + + End If + + ''If Dr("CantidadGV").ToString().ToDecimal > 0 Then + 'If CBool(GvRow.DataKey("AplicaSerie")) Then + ' Alert("Aplica serie ") + ' TieneErrorExistencia = True + ' ' StrXML.AppendFormat("", GvRow.DataKey("CvePS"), GvRow.DataKey("CveUM"), 1, IfNull(Dr("CveSeccion"), -1), Dr1("Serie"), Lote, FechaCaducidad.ToString("yyyy/MM/dd")) + + 'Else + ' StrXML.AppendFormat("", GvRow.DataKey("CvePS"), GvRow.DataKey("CveUM"), GvRow.DataKey("Cantidad"), -1, "-1", Lote, FechaCaducidad.ToString("yyyy/MM/dd")) + 'End If + + 'End If + Next + + 'For Each Dr As DataRow In DtDatos.Rows + ' 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 Dr("CantidadGV").ToString().ToDecimal > 0 Then + ' If CBool(Dr("AplicaSerie")) Then + ' DtDetalle = DtDatosDetalle.FiltraParametros(String.Format("ConsecId = {0}", Dr("Consec"))) + ' For Each Dr1 As DataRow In DtDetalle.Rows + ' StrXML.AppendFormat("", Dr1("CvePS"), Dr1("CveUM"), 1, IfNull(Dr("CveSeccion"), -1), Dr1("Serie"), Lote, FechaCaducidad.ToString("yyyy/MM/dd")) + ' Next + ' Else + ' StrXML.AppendFormat("", Dr("CvePS"), Dr("CveUM"), Dr("CantidadGV"), IfNull(Dr("CveSeccion"), -1), "-1", Lote, FechaCaducidad.ToString("yyyy/MM/dd")) + ' End If + ' End If + 'Next + + 'StrXML.Append("
") + + + 'If ObjInventarioVal.GetExistenciasPSXML(StrXML.ToString(), DdlAlmacenArmado.SelectedValue.ToEntero(), TxtFechaArmado.Text.ToDateTime.ToString("yyyy/MM/dd HH:mm"), -1, CveVendedor, If(UsuarioActual.Empresa.Funcionalidad(146) = "1", -1, CveCliente), If(Tipo = 2, 1, -1), UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa) Then + ' If ObjInventarioVal.DtResultados.Rows.Count > 0 Then + ' TieneErrorExistencia = True + ' For Each Dr As DataRow In ObjInventarioVal.DtResultados.Rows + ' TextoError.AppendFormat(" - {0} Existencia: {1:#,##0.##}
", Dr("CodigoPS"), Dr("Existencia")) + ' Next + ' End If + 'Else + ' TieneErrorExistencia = True + 'End If + + If TieneErrorExistencia Then + 'ObjInventarioVal.RollBack() + ObjInventarioVal.Dispose() + + If TextoError.Length > 0 Then + Alert($" Lo(s) siguiente(s) Productos no tienen existencia suficiente:

{TextoError}", TipoMensaje.MsgAdvertencia) + End If + RegistraScript("playsonidito('142608__autistic-lucario__error.wav')") + Exit Sub + End If + + End If + + + Exit Sub + + Dim ObjInventario As New ClsInventarios Dim ObjConta As New ClsContabilidad(ObjInventario.IniciaTransacSQL()) @@ -864,20 +949,25 @@ Partial Class Inventarios_PaquetesArmadoDesarmado CargaSeccionesAlmacen(e.Row.FCDropDownList("DdlSeccionAlmacen"), DdlAlmacenArmado.SelectedValue.ToEntero, e.Row.DBCampo("CvePS").ToEntero, UsuarioActual.CveEmpresa) End If + + Dim DvFechaCaducidad As HtmlGenericControl = TryCast(e.Row.FindControl("DvFechaCaducidad"), HtmlGenericControl) + If e.Row.DataKey("AplicaCaducidad") = "True" Then - e.Row.FCTextBox("TxtCaducidad").Visible = True - e.Row.FCLinkButton("LnkCaducidad").Visible = True + 'e.Row.FCTextBox("TxtCaducidad").Visible = True + 'e.Row.FCLinkButton("LnkCaducidad").Visible = True - e.Row.FCTextBox("TxtCaducidad").ReadOnly = False - CType(e.Row.FindControl("RFVCaducidad"), RequiredFieldValidator).Enabled = True - e.Row.FCTextBox("TxtCaducidad").Enabled = True + 'e.Row.FCTextBox("TxtCaducidad").ReadOnly = False + ''CType(e.Row.FindControl("RFVCaducidad"), RequiredFieldValidator).Enabled = True + 'e.Row.FCTextBox("TxtCaducidad").Enabled = True + DvFechaCaducidad.Visible = True Else - e.Row.FCTextBox("TxtCaducidad").Visible = False - e.Row.FCLinkButton("LnkCaducidad").Visible = False - e.Row.FCTextBox("TxtCaducidad").Enabled = True + 'e.Row.FCTextBox("TxtCaducidad").Visible = False + 'e.Row.FCLinkButton("LnkCaducidad").Visible = False + 'e.Row.FCTextBox("TxtCaducidad").Enabled = True - e.Row.FCTextBox("TxtCaducidad").ReadOnly = True - CType(e.Row.FindControl("RFVCaducidad"), RequiredFieldValidator).Enabled = False + 'e.Row.FCTextBox("TxtCaducidad").ReadOnly = True + ''CType(e.Row.FindControl("RFVCaducidad"), RequiredFieldValidator).Enabled = False + DvFechaCaducidad.Visible = False End If e.Row.FCTextBox("TxtLote").Visible = e.Row.DataKey("AplicaLote") = "True" @@ -1019,21 +1109,44 @@ Partial Class Inventarios_PaquetesArmadoDesarmado CargaSeccionesAlmacen(e.Row.FCDropDownList("DdlSeccionAlmacen"), DdlAlmacenDesarmado.SelectedValue.ToEntero, e.Row.DBCampo("CvePS").ToEntero, UsuarioActual.CveEmpresa) End If + Dim DvFechaCaducidad As HtmlGenericControl = TryCast(e.Row.FindControl("DvFechaCaducidad"), HtmlGenericControl) + If e.Row.DataKey("AplicaCaducidad") = "True" Then - e.Row.FCTextBox("TxtCaducidad").Visible = True - e.Row.FCLinkButton("LnkCaducidad").Visible = True + 'e.Row.FCTextBox("TxtCaducidad").Visible = True + 'e.Row.FCLinkButton("LnkCaducidad").Visible = True - e.Row.FCTextBox("TxtCaducidad").ReadOnly = False - CType(e.Row.FindControl("RFVCaducidad"), RequiredFieldValidator).Enabled = True - e.Row.FCTextBox("TxtCaducidad").Enabled = True + 'e.Row.FCTextBox("TxtCaducidad").ReadOnly = False + ''CType(e.Row.FindControl("RFVCaducidad"), RequiredFieldValidator).Enabled = True + 'e.Row.FCTextBox("TxtCaducidad").Enabled = True + DvFechaCaducidad.Visible = True Else - e.Row.FCTextBox("TxtCaducidad").Visible = False - e.Row.FCLinkButton("LnkCaducidad").Visible = False - e.Row.FCTextBox("TxtCaducidad").Enabled = True + 'e.Row.FCTextBox("TxtCaducidad").Visible = False + 'e.Row.FCLinkButton("LnkCaducidad").Visible = False + 'e.Row.FCTextBox("TxtCaducidad").Enabled = True - e.Row.FCTextBox("TxtCaducidad").ReadOnly = True - CType(e.Row.FindControl("RFVCaducidad"), RequiredFieldValidator).Enabled = False + 'e.Row.FCTextBox("TxtCaducidad").ReadOnly = True + ''CType(e.Row.FindControl("RFVCaducidad"), RequiredFieldValidator).Enabled = False + DvFechaCaducidad.Visible = False End If + + + + 'If e.Row.DataKey("AplicaCaducidad") = "True" Then + ' e.Row.FCTextBox("TxtCaducidad").Visible = True + ' e.Row.FCLinkButton("LnkCaducidad").Visible = True + + ' e.Row.FCTextBox("TxtCaducidad").ReadOnly = False + ' CType(e.Row.FindControl("RFVCaducidad"), RequiredFieldValidator).Enabled = True + ' e.Row.FCTextBox("TxtCaducidad").Enabled = True + 'Else + ' e.Row.FCTextBox("TxtCaducidad").Visible = False + ' e.Row.FCLinkButton("LnkCaducidad").Visible = False + ' e.Row.FCTextBox("TxtCaducidad").Enabled = True + + ' e.Row.FCTextBox("TxtCaducidad").ReadOnly = True + ' CType(e.Row.FindControl("RFVCaducidad"), RequiredFieldValidator).Enabled = False + 'End If + e.Row.FCTextBox("TxtLote").Visible = e.Row.DataKey("AplicaLote") = "True" e.Row.FCTextBox("TxtCosto").Attributes.Add("onkeyup", "SumaValores();") From 9986c4b5a56ea8e03e1a84381f0abfd4f551da3a Mon Sep 17 00:00:00 2001 From: rrene Date: Thu, 8 Feb 2024 21:24:02 -0700 Subject: [PATCH 07/11] =?UTF-8?q?--=20aplicaci=C3=B3n=20de=20pago=20con=20?= =?UTF-8?q?anticipos=20en=20d=C3=B3lares?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- App_Code/ClsPaginas.vb | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/App_Code/ClsPaginas.vb b/App_Code/ClsPaginas.vb index dbba3a3cd..332020f3c 100644 --- a/App_Code/ClsPaginas.vb +++ b/App_Code/ClsPaginas.vb @@ -9327,17 +9327,17 @@ Public Class ClsPaginas Pago.AplicaTraslado = False Contabilizable = False - If Pago.CveMonedaPago > 1 Then + If VentaActual.CveMoneda > 1 Then 'Agregamos la Extranjera - If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, Pago.ImportePago, Pago.ImportePago, 295, Pago.Referencia, Concepto, CveVenta:=VentaActual.CveVenta, CveCliente:=VentaActual.CveCliente, CveIE:=Pago.CveIE, ImporteME:=Pago.ImportePago, TipoCambio:=TCValuacionPago, CveSubProyecto:=VentaActual.CveSubProyecto) Then ErrorMovtos = True - ImporteMN = (Pago.ImportePago * TCValuacionPago - Pago.ImportePago).RoundSQL - If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, Pago.ImportePago, ImporteMN, 227, Pago.Referencia, Concepto, CveVenta:=VentaActual.CveVenta, CveCliente:=VentaActual.CveCliente, CveIE:=Pago.CveIE, ImporteME:=Pago.ImportePago, TipoCambio:=TCValuacionPago, CveSubProyecto:=VentaActual.CveSubProyecto) Then ErrorMovtos = True + If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, Pago.ImportePago, Pago.ImportePago, 295, Pago.Referencia, Concepto, CveVenta:=VentaActual.CveVenta, CveCliente:=VentaActual.CveCliente, CveIE:=Pago.CveIE, ImporteME:=Pago.ImportePago, TipoCambio:=TCValuacionVenta, CveSubProyecto:=VentaActual.CveSubProyecto) Then ErrorMovtos = True + ImporteMN = (Pago.ImportePago * TCValuacionVenta - Pago.ImportePago).RoundSQL + If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, Pago.ImportePago, ImporteMN, 227, Pago.Referencia, Concepto, CveVenta:=VentaActual.CveVenta, CveCliente:=VentaActual.CveCliente, CveIE:=Pago.CveIE, ImporteME:=Pago.ImportePago, TipoCambio:=TCValuacionVenta, CveSubProyecto:=VentaActual.CveSubProyecto) Then ErrorMovtos = True Else 'Agregamos Nacional If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, Pago.ImportePago, Pago.ImportePago, 3, Pago.Referencia, Concepto, CveVenta:=VentaActual.CveVenta, CveCliente:=VentaActual.CveCliente, CveIE:=Pago.CveIE, CvePersonal:=Pago.CvePersonal, TipoCambioPago:=Pago.TCPago) Then ErrorMovtos = True End If - If Not ErrorMovtos AndAlso Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, Pago.ImportePago, (Pago.ImportePago * TCValuacionPago).RoundSQL, 95, VentaActual.SerieFolio, VentaActual.SerieFolio, CveIE:=Pago.CveIE, CveVenta:=VentaActual.CveVenta, CveSubProyecto:=VentaActual.CveSubProyecto, CveCliente:=VentaActual.CveCliente, TipoCambio:=TCValuacionVenta, TipoCambioPago:=Pago.TCPago, PorcentajeImpuesto:=VentaActual.PorcentajeIVA, Contabilizable:=False) Then + If Not ErrorMovtos AndAlso Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, Pago.ImportePago, (Pago.ImportePago * TCValuacionVenta).RoundSQL, 95, VentaActual.SerieFolio, VentaActual.SerieFolio, CveIE:=Pago.CveIE, CveVenta:=VentaActual.CveVenta, CveSubProyecto:=VentaActual.CveSubProyecto, CveCliente:=VentaActual.CveCliente, TipoCambio:=TCValuacionVenta, TipoCambioPago:=Pago.TCPago, PorcentajeImpuesto:=VentaActual.PorcentajeIVA, Contabilizable:=False) Then ErrorMovtos = True End If End If From 6ace79edec77ad4aecdb98e289348a75a2100670 Mon Sep 17 00:00:00 2001 From: rrene Date: Thu, 8 Feb 2024 21:24:12 -0700 Subject: [PATCH 08/11] -- limpieza de renglones --- App_Code/ClsBancos.vb | 17 ----------------- 1 file changed, 17 deletions(-) diff --git a/App_Code/ClsBancos.vb b/App_Code/ClsBancos.vb index e2d59310b..be580aea7 100644 --- a/App_Code/ClsBancos.vb +++ b/App_Code/ClsBancos.vb @@ -977,12 +977,10 @@ Public Class ClsBancos Public Function GeneraTimbrePago(CveIE As Integer, CveVenta As Integer, UsuarioActual As Usuario, Optional CveCliente As Integer = -1, Optional CFDIRelacionado As String = "-1", Optional EsRegeneracion As Boolean = False, Optional CvePrePoliza As Integer = -1, Optional FechaTimbrado As DateTime = MinFecha) As Boolean - Dim Serie As String = "Pag" Dim Folio As Integer = -1 Dim Retorno As Boolean = False Dim Estatus As Integer = 1 - Dim dttpagos As DataTable = Nothing Dim dttpagosimpuestos As DataTable = Nothing Dim dr As Data.DataRow = Nothing @@ -996,7 +994,6 @@ Public Class ClsBancos If FechaTimbrado = MinFecha Then Dim RowFiltro As DataRow = Nothing - RowFiltro = dttpagos.FiltroPrimero("") If RowFiltro IsNot Nothing Then @@ -1018,10 +1015,8 @@ Public Class ClsBancos Else FechaTimbrado = ClsPaginas.NowADS() End If - End If - Dim tCveComplementoPago As Integer = AddComplementoPago(If(CvePrePoliza > 0, CveIE, dr("CveIE").ToString.ToEntero), -1, Serie, Folio, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, CvePrePoliza:=CvePrePoliza, Estatus:=Estatus) If tCveComplementoPago > 0 Then 'Dim drr As Data.DataRow = dtt.Rows(0) @@ -1042,7 +1037,6 @@ Public Class ClsBancos If Cuentapago <> "" AndAlso Not Cuentapago.Length.Contiene(11, 18) Then Mensaje = $"La cuenta ordenante {Cuentapago} no cumple con el formato esperado 11, 18 caracteres." End If - If CuentaBeneficiario <> "" AndAlso Not (CuentaBeneficiario.Length.Contiene(10, 11, 15, 16, 18, 50)) Then Mensaje = $"{Mensaje} La Cuenta Beneficiario {CuentaBeneficiario} no cumple con el formato esperado 10, 11, 15, 16, 18, 50 caracteres." End If @@ -1058,7 +1052,6 @@ Public Class ClsBancos If Cuentapago <> "" AndAlso Not Cuentapago.Length.Contiene(16) Then Mensaje = $"La cuenta ordenante {Cuentapago} no cumple con el formato esperado 16 caracteres." End If - If CuentaBeneficiario <> "" AndAlso Not (CuentaBeneficiario.Length.Contiene(10, 11, 15, 16, 18, 50)) Then Mensaje = $"{Mensaje} La Cuenta Beneficiario {CuentaBeneficiario} no cumple con el formato esperado 10, 11, 15, 16, 18, 50 caracteres." End If @@ -1067,7 +1060,6 @@ Public Class ClsBancos If Cuentapago <> "" AndAlso Not Cuentapago.Length.Contiene(10, 11, 15, 16, 18, 50) Then Mensaje = $"La cuenta ordenante {Cuentapago} no cumple con el formato esperado 10, 11, 15, 16, 18, 50 caracteres." End If - If CuentaBeneficiario <> "" AndAlso Not (CuentaBeneficiario.Length.Contiene(10, 11, 15, 16, 18, 50)) Then Mensaje = $"{Mensaje} La Cuenta Beneficiario {CuentaBeneficiario} no cumple con el formato esperado 10, 11, 15, 16, 18, 50 caracteres." End If @@ -1075,13 +1067,11 @@ Public Class ClsBancos If Cuentapago <> "" AndAlso Not Cuentapago.Length.Contiene(10) Then Mensaje = $"La cuenta ordenante {Cuentapago} no cumple con el formato esperado 10 caracteres." End If - CuentaBeneficiario = "" Case "28" If Cuentapago <> "" AndAlso Not Cuentapago.Length.Contiene(16) Then Mensaje = $"La cuenta ordenante {Cuentapago} no cumple con el formato esperado 16 caracteres." End If - If CuentaBeneficiario <> "" AndAlso Not (CuentaBeneficiario.Length.Contiene(10, 11, 15, 16, 18, 50)) Then Mensaje = $"{Mensaje} La Cuenta Beneficiario {CuentaBeneficiario} no cumple con el formato esperado 10, 11, 15, 16, 18, 50 caracteres." End If @@ -1089,13 +1079,10 @@ Public Class ClsBancos If Cuentapago <> "" AndAlso Not Cuentapago.Length.Contiene(15, 16) Then Mensaje = $"La cuenta ordenante {Cuentapago} no cumple con el formato esperado 15, 16 caracteres." End If - If CuentaBeneficiario <> "" AndAlso Not (CuentaBeneficiario.Length.Contiene(10, 11, 15, 16, 18, 50)) Then Mensaje = $"{Mensaje} La Cuenta Beneficiario {CuentaBeneficiario} no cumple con el formato esperado 10, 11, 15, 16, 18, 50 caracteres." End If - Case Else - CuentaBeneficiario = "" Cuentapago = "" 'RFCCliente = "" @@ -1103,10 +1090,6 @@ Public Class ClsBancos End Select - 'If EsCancelacion AndAlso (CFDIRelacionado = "-1" OrElse CFDIRelacionado = "") Then - ' Mensaje += " La cancelación debe de tener documento relacionado" - 'End If - If Not Mensaje.Length = 0 Then GuardaLog(Mensaje) Return False From d7fb2b0c0d9b08b48463ba25b71c7e11d0d3ac73 Mon Sep 17 00:00:00 2001 From: rrene Date: Thu, 8 Feb 2024 22:06:46 -0700 Subject: [PATCH 09/11] =?UTF-8?q?--=20solo=20t=C3=A9cnicos=20activos?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- OS/OrdenesServicios.aspx.vb | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/OS/OrdenesServicios.aspx.vb b/OS/OrdenesServicios.aspx.vb index 31d94fb18..cfb0e1c7d 100644 --- a/OS/OrdenesServicios.aspx.vb +++ b/OS/OrdenesServicios.aspx.vb @@ -2933,7 +2933,7 @@ Partial Class OS_OrdenesServicios If DtOSSubProyectos IsNot Nothing Then If ObjOS.GetSubProyectosEstatusInicial(-1, 3, UsuarioActual.CveEmpresa) Then - TecnicosSubProyectos = ObjOS.DtResultados + TecnicosSubProyectos = ObjOS.DtResultados.FiltraParametros("Estatus = True") 'solo usuario activos End If For Each SubProyecto As DataRow In DtOSSubProyectos.Rows @@ -2946,8 +2946,6 @@ Partial Class OS_OrdenesServicios End If Next End If - - ObjOS.Dispose() DdlUsuarioAtendio.DataSource = TecnicosResultado.FiltraParametros("", "Nombre") From 7bd655bedc67b24b5f069882d257e7ab10f8c826 Mon Sep 17 00:00:00 2001 From: rrene Date: Thu, 8 Feb 2024 22:45:05 -0700 Subject: [PATCH 10/11] =?UTF-8?q?--=20complemento=20de=20pago=20Revisi?= =?UTF-8?q?=C3=B3n=20B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- App_Code/Timbrado.vb | 222 +++++++++++++++++++++---------------------- Bin/GoCfdi.dll | Bin 539648 -> 540160 bytes 2 files changed, 106 insertions(+), 116 deletions(-) diff --git a/App_Code/Timbrado.vb b/App_Code/Timbrado.vb index 3841c4f79..899d3d43a 100644 --- a/App_Code/Timbrado.vb +++ b/App_Code/Timbrado.vb @@ -654,134 +654,131 @@ Public Class Timbrado Return retorno End Function - Public Function PreparaTimbrePago(EmisorRFC As String, EmisorNombre As String, EmisorRegimenFiscal As String, - ReceptorRFC As String, ReceptorNombre As String, Serie As String, Folio As String, FechaTimbrado As DateTime, - CuentaPago As String, FechaPago As DateTime, FormaPago As String, MonedaPago As String, Monto As Decimal, LugarExpedicion As String, - CuentaBeneficiario As String, TipoCambioP As Decimal, dttpagos As Data.DataTable, - Optional UsoCFDI As String = "P01", Optional CFDIRelacionado As String = "", Optional EsCancelacion As Boolean = False) As CFDITimbre - ' validación extra para cuando es cancelación requiere el folio relacionado - If EsCancelacion AndAlso CFDIRelacionado = "" Then - Return Nothing - End If + 'Public Function PreparaTimbrePago(EmisorRFC As String, EmisorNombre As String, EmisorRegimenFiscal As String, + ' ReceptorRFC As String, ReceptorNombre As String, Serie As String, Folio As String, FechaTimbrado As DateTime, + ' CuentaPago As String, FechaPago As DateTime, FormaPago As String, MonedaPago As String, Monto As Decimal, LugarExpedicion As String, + ' CuentaBeneficiario As String, TipoCambioP As Decimal, dttpagos As Data.DataTable, + ' Optional UsoCFDI As String = "P01", Optional CFDIRelacionado As String = "", Optional EsCancelacion As Boolean = False) As CFDITimbre + ' ' validación extra para cuando es cancelación requiere el folio relacionado + ' If EsCancelacion AndAlso CFDIRelacionado = "" Then + ' Return Nothing + ' End If - Dim Timbre As New CFDITimbre + ' Dim Timbre As New CFDITimbre - Timbre.Comprobante.TipoComprobante = "P" - Timbre.Comprobante.Folio = Folio - Timbre.Comprobante.Serie = Serie - Timbre.Comprobante.Fecha = FechaTimbrado - Timbre.Comprobante.FormadePago = "" - Timbre.Comprobante.CondicionesdePago = "" - Timbre.Comprobante.MetodoPago = "" - Timbre.Comprobante.SubTotal = 0 - Timbre.Comprobante.Descuentos = 0 - Timbre.Comprobante.Moneda = "XXX" - Timbre.Comprobante.TipoCambio = "" - Timbre.Comprobante.Total = 0 + ' Timbre.Comprobante.TipoComprobante = "P" + ' Timbre.Comprobante.Folio = Folio + ' Timbre.Comprobante.Serie = Serie + ' Timbre.Comprobante.Fecha = FechaTimbrado + ' Timbre.Comprobante.FormadePago = "" + ' Timbre.Comprobante.CondicionesdePago = "" + ' Timbre.Comprobante.MetodoPago = "" + ' Timbre.Comprobante.SubTotal = 0 + ' Timbre.Comprobante.Descuentos = 0 + ' Timbre.Comprobante.Moneda = "XXX" + ' Timbre.Comprobante.TipoCambio = "" + ' Timbre.Comprobante.Total = 0 - Timbre.Comprobante.LugarExpedicion = LugarExpedicion + ' Timbre.Comprobante.LugarExpedicion = LugarExpedicion + ' Timbre.Emisor.RegimenFiscal = EmisorRegimenFiscal + ' Timbre.Emisor.Nombre = EmisorNombre + ' Timbre.Emisor.RFC = EmisorRFC - Timbre.Emisor.RegimenFiscal = EmisorRegimenFiscal - Timbre.Emisor.Nombre = EmisorNombre - Timbre.Emisor.RFC = EmisorRFC + ' Timbre.Receptor.RFC = ReceptorRFC + ' Timbre.Receptor.Nombre = ReceptorNombre + ' Timbre.Receptor.UsoCFDI = UsoCFDI - Timbre.Receptor.RFC = ReceptorRFC - Timbre.Receptor.Nombre = ReceptorNombre - Timbre.Receptor.UsoCFDI = UsoCFDI + ' If CFDIRelacionado <> "-1" And CFDIRelacionado <> "" Then + ' Timbre.CFDIRelacionados.TipoRelacion = "04" + ' Timbre.CFDIRelacionados.UUID.Add(CFDIRelacionado) + ' End If - If CFDIRelacionado <> "-1" And CFDIRelacionado <> "" Then - Timbre.CFDIRelacionados.TipoRelacion = "04" - Timbre.CFDIRelacionados.UUID.Add(CFDIRelacionado) - End If + ' 'detalles + ' Dim concepto As New CFDIConceptos With {.Cantidad = 1, + ' .Descripcion = "Pago", + ' .ValorUnitario = 0, + ' .Importe = 0, + ' .Unidad = "", + ' .ClaveUnidad = "ACT", + ' .ClaveProdServ = "84111506", + ' .Noidentificacion = ""} + ' Timbre.Conceptos.Add(concepto) - 'detalles + ' Select Case FormaPago + ' Case "01" + ' CuentaPago = "" + ' CuentaBeneficiario = "" + ' End Select - Dim concepto As New CFDIConceptos With {.Cantidad = 1, - .Descripcion = "Pago", - .ValorUnitario = 0, - .Importe = 0, - .Unidad = "", - .ClaveUnidad = "ACT", - .ClaveProdServ = "84111506", - .Noidentificacion = ""} - Timbre.Conceptos.Add(concepto) - - Select Case FormaPago - Case "01" - CuentaPago = "" - CuentaBeneficiario = "" - - End Select - - Dim ImporteCancelacion As Decimal = 1 - Dim MonedaCancelacion As String = "MXN" - Dim TipoCambioCancelacion As Decimal = 1 - If EsCancelacion Then MonedaPago = MonedaCancelacion - 'como registra un peso por cada fatura que se cancele, se tiene que multiplicar por el numero de facturas, para que se pueda emitir el timbre - If dttpagos IsNot Nothing AndAlso dttpagos.Rows.Count > 0 Then ImporteCancelacion = ImporteCancelacion * dttpagos.Rows.Count - Timbre.ComplementoPagos.CtaOrdenante = CuentaPago - Timbre.ComplementoPagos.CtaBeneficiario = CuentaBeneficiario - Timbre.ComplementoPagos.FechaPago = FechaPago - Timbre.ComplementoPagos.FormaDePagoP = FormaPago - Timbre.ComplementoPagos.MonedaP = MonedaPago - Timbre.ComplementoPagos.Monto = If(EsCancelacion, ImporteCancelacion, Monto).RoundSQL - Timbre.ComplementoPagos.TipoCambioP = If(EsCancelacion, TipoCambioCancelacion, TipoCambioP) + ' Dim ImporteCancelacion As Decimal = 1 + ' Dim MonedaCancelacion As String = "MXN" + ' Dim TipoCambioCancelacion As Decimal = 1 + ' If EsCancelacion Then MonedaPago = MonedaCancelacion + ' 'como registra un peso por cada fatura que se cancele, se tiene que multiplicar por el numero de facturas, para que se pueda emitir el timbre + ' If dttpagos IsNot Nothing AndAlso dttpagos.Rows.Count > 0 Then ImporteCancelacion = ImporteCancelacion * dttpagos.Rows.Count + ' Timbre.ComplementoPagos.CtaOrdenante = CuentaPago + ' Timbre.ComplementoPagos.CtaBeneficiario = CuentaBeneficiario + ' Timbre.ComplementoPagos.FechaPago = FechaPago + ' Timbre.ComplementoPagos.FormaDePagoP = FormaPago + ' Timbre.ComplementoPagos.MonedaP = MonedaPago + ' Timbre.ComplementoPagos.Monto = If(EsCancelacion, ImporteCancelacion, Monto).RoundSQL + ' Timbre.ComplementoPagos.TipoCambioP = If(EsCancelacion, TipoCambioCancelacion, TipoCambioP) - Dim VentaFolioFiscal, VentaSerie, VentaFolio, VentaAbreviaturaSAT, VentaMetodoPago As String - Dim VentaImportePago, VentaImporteSaldoInsoluto, VentaImporteSaldoAnterior, VentaTipoCambio, PorcentajeIVA, PorcentajeIEPS As Decimal - Dim VentaNumParcialidad As Integer + ' Dim VentaFolioFiscal, VentaSerie, VentaFolio, VentaAbreviaturaSAT, VentaMetodoPago As String + ' Dim VentaImportePago, VentaImporteSaldoInsoluto, VentaImporteSaldoAnterior, VentaTipoCambio, PorcentajeIVA, PorcentajeIEPS As Decimal + ' Dim VentaNumParcialidad As Integer - If dttpagos IsNot Nothing AndAlso dttpagos.Rows.Count > 0 Then + ' If dttpagos IsNot Nothing AndAlso dttpagos.Rows.Count > 0 Then - For Each dr As Data.DataRow In dttpagos.Rows - VentaFolioFiscal = dr("FolioFiscal").ToString - VentaSerie = dr("VentaSerie").ToString - VentaFolio = dr("VentaFolio").ToString - VentaAbreviaturaSAT = dr("VentaAbreviaturaSAT").ToString - VentaMetodoPago = dr("MetodoPago").ToString - VentaImportePago = dr("VentaImportePagado").ToString.ToDecimal - VentaImporteSaldoInsoluto = dr("ImpSaldoInsoluto").ToString.ToDecimal - VentaImporteSaldoAnterior = dr("ImpSaldoAnterior").ToString.ToDecimal - VentaTipoCambio = dr("TipoCambio").ToString.ToDecimal - VentaNumParcialidad = dr("NumParcialidad").ToString.ToEntero - PorcentajeIVA = dr("PorcentajeIVA").ToString.ToDecimal - PorcentajeIEPS = dr("PorcentajeIEPS").ToString.ToDecimal - ' si la moneda es igual, se omite el tipo de cambio de la venta - If MonedaPago = VentaAbreviaturaSAT Then VentaTipoCambio = 0 + ' For Each dr As Data.DataRow In dttpagos.Rows + ' VentaFolioFiscal = dr("FolioFiscal").ToString + ' VentaSerie = dr("VentaSerie").ToString + ' VentaFolio = dr("VentaFolio").ToString + ' VentaAbreviaturaSAT = dr("VentaAbreviaturaSAT").ToString + ' VentaMetodoPago = dr("MetodoPago").ToString + ' VentaImportePago = dr("VentaImportePagado").ToString.ToDecimal + ' VentaImporteSaldoInsoluto = dr("ImpSaldoInsoluto").ToString.ToDecimal + ' VentaImporteSaldoAnterior = dr("ImpSaldoAnterior").ToString.ToDecimal + ' VentaTipoCambio = dr("TipoCambio").ToString.ToDecimal + ' VentaNumParcialidad = dr("NumParcialidad").ToString.ToEntero + ' PorcentajeIVA = dr("PorcentajeIVA").ToString.ToDecimal + ' PorcentajeIEPS = dr("PorcentajeIEPS").ToString.ToDecimal + ' ' si la moneda es igual, se omite el tipo de cambio de la venta + ' If MonedaPago = VentaAbreviaturaSAT Then VentaTipoCambio = 0 - 'condiciones especiales para el pago en pesos, facturas en moneda extranjera - If MonedaPago = "MXN" AndAlso VentaAbreviaturaSAT <> "MXN" Then - VentaTipoCambio = 1 / VentaTipoCambio - End If + ' 'condiciones especiales para el pago en pesos, facturas en moneda extranjera + ' If MonedaPago = "MXN" AndAlso VentaAbreviaturaSAT <> "MXN" Then + ' VentaTipoCambio = 1 / VentaTipoCambio + ' End If - ' For Each drr As Data.DataRow In DtFacturasPagadas.Rows - Dim doc As New CFDIComplementoPagosDocsRelacionados With {.IdDocumento = VentaFolioFiscal, - .Serie = VentaSerie, - .Folio = VentaFolio, - .MonedaDR = VentaAbreviaturaSAT, - .MetodoDePagoDR = VentaMetodoPago, - .ImpPagado = If(EsCancelacion, 1, VentaImportePago), - .ImpSaldoInsoluto = If(EsCancelacion, VentaImporteSaldoAnterior - 1, VentaImporteSaldoInsoluto), - .ImpSaldoAnt = VentaImporteSaldoAnterior, - .TipoCambioDR = VentaTipoCambio, - .NumParcialidad = VentaNumParcialidad} 'If(drr("MetodoPago").ToString = "PUE", 0, drr("NumParcialidad").ToString.ToEntero)} - Timbre.ComplementoPagos.DocumentosRelacionados.Add(doc) + ' ' For Each drr As Data.DataRow In DtFacturasPagadas.Rows + ' Dim doc As New CFDIComplementoPagosDocsRelacionados With {.IdDocumento = VentaFolioFiscal, + ' .Serie = VentaSerie, + ' .Folio = VentaFolio, + ' .MonedaDR = VentaAbreviaturaSAT, + ' .MetodoDePagoDR = VentaMetodoPago, + ' .ImpPagado = If(EsCancelacion, 1, VentaImportePago), + ' .ImpSaldoInsoluto = If(EsCancelacion, VentaImporteSaldoAnterior - 1, VentaImporteSaldoInsoluto), + ' .ImpSaldoAnt = VentaImporteSaldoAnterior, + ' .TipoCambioDR = VentaTipoCambio, + ' .NumParcialidad = VentaNumParcialidad} 'If(drr("MetodoPago").ToString = "PUE", 0, drr("NumParcialidad").ToString.ToEntero)} + ' Timbre.ComplementoPagos.DocumentosRelacionados.Add(doc) - Next - End If - 'If drr("IVA").ToString.ToDouble > 0 Then - If PorcentajeIVA > 0 Then Timbre.ComplementoPagos.Impuestos.Add(New CFDIConceptosImpuestos With {.TrasladooRetencion = "T", .Base = VentaImportePago * PorcentajeIVA, .TasaOCuota = PorcentajeIVA, .Impuesto = "002"}) - 'Timbre.ComplementoPagos.Impuestos.Add(New CFDIConceptosImpuestos With {.TrasladooRetencion = "R", .Base = 0, .TasaOCuota = 0, .Impuesto = "002"}) + ' Next + ' End If + ' 'If drr("IVA").ToString.ToDouble > 0 Then + ' If PorcentajeIVA > 0 Then Timbre.ComplementoPagos.Impuestos.Add(New CFDIConceptosImpuestos With {.TrasladooRetencion = "T", .Base = VentaImportePago * PorcentajeIVA, .TasaOCuota = PorcentajeIVA, .Impuesto = "002"}) + ' 'Timbre.ComplementoPagos.Impuestos.Add(New CFDIConceptosImpuestos With {.TrasladooRetencion = "R", .Base = 0, .TasaOCuota = 0, .Impuesto = "002"}) - If PorcentajeIEPS > 0 Then Timbre.ComplementoPagos.Impuestos.Add(New CFDIConceptosImpuestos With {.Base = VentaImportePago * PorcentajeIEPS, .TasaOCuota = PorcentajeIEPS, .Impuesto = "003"}) + ' If PorcentajeIEPS > 0 Then Timbre.ComplementoPagos.Impuestos.Add(New CFDIConceptosImpuestos With {.Base = VentaImportePago * PorcentajeIEPS, .TasaOCuota = PorcentajeIEPS, .Impuesto = "003"}) - 'Next + ' 'Next - Return Timbre + ' Return Timbre - End Function + 'End Function Public Function PreparaTimbrePago40(EmisorRFC As String, EmisorNombre As String, EmisorRegimenFiscal As String, ReceptorRFC As String, ReceptorNombre As String, ReceptorDomicilioFiscal As String, ReceptorRegimenFiscal As String, @@ -2732,8 +2729,8 @@ Public Class Timbrado doc.ImpPagado, doc.ImpSaldoInsoluto, doc.ObjetoImpuesto) - If doc.Impuestos IsNot Nothing Then + If doc.Impuestos IsNot Nothing Then ''retenciones If (doc.Impuestos).Where(Function(x) x.TrasladooRetencion = "R").Count > 0 Then Dim j As Integer = 0 @@ -2744,7 +2741,6 @@ Public Class Timbrado j += 1 Next End If - ''traslados If (doc.Impuestos).Where(Function(x) x.TrasladooRetencion = "T").Count > 0 Then Dim j As Integer = 0 @@ -2756,7 +2752,6 @@ Public Class Timbrado Next End If End If - Next If (docp.Retenciones).Count > 0 Then @@ -2974,8 +2969,6 @@ Public Class Timbrado Alert($"Error al leer la llave privada: {ex.Message}", TipoMensaje.MsgError) Return "Error al leer la llave privada" End Try - - Try certByte = System.IO.File.ReadAllBytes(ArchivoCertificado) certBase64 = Convert.ToBase64String(certByte) @@ -2986,13 +2979,11 @@ Public Class Timbrado End Try #End Region - sw.Stop() swTiempo.AppendFormat("Verificado : ({0}) {1} ", sw.ElapsedMilliseconds - swmili, sw.ElapsedMilliseconds) swmili = sw.ElapsedMilliseconds sw.Start() - Dim RespGeneracionXML As String = GenerarXMLGoCFDIv40(cfdi, EmisorRFC, ArchivoCertificado, llaveBase64, Clave, Ventas, UsuarioActual, CvePACEspecial) sw.Stop() @@ -3012,7 +3003,6 @@ Public Class Timbrado 'Verifica el error If cfdi.Mensaje = "" Then Dim SelloCfdi As String - UUID = cfdi.CfdiInfo.UUID SelloCfdi = cfdi.CfdiInfo.SelloCfdi diff --git a/Bin/GoCfdi.dll b/Bin/GoCfdi.dll index 37c940d76d754754e5e0ec36b31fedefe1603bbc..12e6171e5814bbb44a33955cd8c6655e6fa15ddc 100644 GIT binary patch delta 61048 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 NNkn_+YooZi{C|@;ek=e0 delta 61565 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%0DTh>i$&6DVj8bwa?WKpVf$ zm=69HAU>|5&fshnUBD>^3OYhv!FgMB1Lqx}pre?wZQ3TfgR>nd=v(RmJcj98V8_7U z%+~@6s%>P#Uk50tZcU>fh)AHIYmNT!U+16KSj5QdjiDe$``0p&V`PCC>)+m3WXPM0 z91u7A>&Aod8B;(M`bWo$4Zg>XVu)F5ECH@JmH|r*Kk#K^1@JZFA>bBcC2+g(C~%jt z3iyff81Pf$aR~Y+P|#lE3HbK`1xc|6ej6yrBi6zn1Qf7gPs1MqMD4^nV7)P7J)A4V zbHI4<0x(&W0$YgPk<%jQ{bP)UL<=Ahyf%j;C~zl zy%Y!FUk4QQtoRrF>w$t^6rThCE)Ie75>U`a@g@8(0|osczJmX_zqAQ@5QGZ-eRkr@h1GHU=^nBl-wGXmJjtPRXC>jHb5 zY{L4R(ZGRb3~-Qn1q2NS;;SpO0dT0<2sq4)2VQM90bYaWs8Ad;8F-!9447rM0FJ_A zRD8YYKY&8Wu_m5!(>Q-bl1Pe}Y-WI%1jI`=vj_Y)`3EM6&EuAuIUtq*aqo>e4*ump zK@XU@@UH-(am{@A9|8(mX%@i$2vE?Y<|Oz_fM|4c3jB`&(dg#Q@IMa3XO-ry@IU9D z*;GvNm75DdybToirLcwY?*u|4&3oYg04VU|O!vY61yJAzmx|#(40O?WqX{haVc@IQ z(wuT{OuFM$Nj0~he@C*2XgULL!Kz2!>2*y$llSx}zc)oB)ELoAr&lEl_xDHV zXvS-Q-t*vrXS(0tV0BS;|Az0E{?gXAjhZddc$I&B*&kQjppHl%>Tll8Ztfq`&VHuU V+rj?H6eHV|hNs)#7{x8+{{xonQh@*f From a1f4ce00ceb57abf233d01f3c529b46cb885bce9 Mon Sep 17 00:00:00 2001 From: rrene Date: Thu, 8 Feb 2024 22:46:19 -0700 Subject: [PATCH 11/11] - --- Acumuladores/RepRecolecciones.aspx.vb | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Acumuladores/RepRecolecciones.aspx.vb b/Acumuladores/RepRecolecciones.aspx.vb index 92fbef024..44e8fccab 100644 --- a/Acumuladores/RepRecolecciones.aspx.vb +++ b/Acumuladores/RepRecolecciones.aspx.vb @@ -60,8 +60,8 @@ Partial Class Acumuladores_RepRecolecciones Private Sub InicializaCombos() CargaPS() - TxtFechaI.Text = NowADS().AddDays(-1).ToShortDateString - TxtFechaF.Text = NowADS().AddDays(3).ToShortDateString + TxtFechaI.Text = NowADS().AddMonths(-1).ToShortDateString + TxtFechaF.Text = NowADS().AddMonths(1).ToShortDateString CargarCentrosDeCosto(Nothing, DdlSubProyecto, Nothing, LblSubProyecto) DdlAlmacenOrigen.DataSource = GlobalDTAlmacenUsuarios(UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1).FiltraParametros("CveTipoAlmacen IN (4)") DdlAlmacenOrigen.DataBind() @@ -73,7 +73,7 @@ Partial Class Acumuladores_RepRecolecciones Private Sub CargaDatos() Dim ObjGeneral As New ClsGenerales - If (ObjGeneral.GetInvEntregaAlmacenRuta(-1, Now.AddMonths(-1), Now.AddMonths(1), UsuarioActual.CveEmpresa, 2, -1)) Then + If (ObjGeneral.GetInvEntregaAlmacenRuta(-1, TxtFechaI.Text.ToDate, TxtFechaF.Text.ToDate, UsuarioActual.CveEmpresa, 2, -1)) Then GvR.DataSource = ObjGeneral.DtResultados End If ObjGeneral.Dispose()