From bd34bcb36388b0f33649d41293e97665aed10d67 Mon Sep 17 00:00:00 2001 From: Jonathan Alexis Perez Morales Date: Fri, 21 Jan 2022 00:26:55 -0700 Subject: [PATCH 01/15] Cancelacion de movimientos de usados en RNC --- App_Code/Modelos.vb | 83 +++++++++++++++++++++++++++++++++++---------- 1 file changed, 66 insertions(+), 17 deletions(-) diff --git a/App_Code/Modelos.vb b/App_Code/Modelos.vb index 7a03c7d0b..c11f1ae25 100644 --- a/App_Code/Modelos.vb +++ b/App_Code/Modelos.vb @@ -2182,6 +2182,39 @@ Namespace Modelos Return Resultado End Function + + Private Function CancelarInventarioUsado(factura As Modelos.Factura, CveAlmacenUsado As Integer, CveMovimientoEntrada As Integer, ByRef ObjInventario As ClsInventarios) As Integer + Dim CveMovimiento As Integer = -1 + Try + CveMovimiento = ObjInventario.AddMovimiento(CveAlmacenUsado, 3, 1, Now, -1, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1, factura.CveVenta, + factura.CveSubProyecto, CveActivoFijo:=-1, Guia:="", Observaciones:="", CvePersonal:=-1, CveCliente:=factura.CveCliente, CveClienteSucursal:=-1, Modulo:="M/CU") + If CveMovimiento <= 0 Then + CveMovimiento = -1 + Else + Dim DtMovimientosEntrada As DataTable = Nothing + If ObjInventario.GetMovimientosDetalle(CveMovimientoEntrada, factura.CveEmpresa) Then + DtMovimientosEntrada = ObjInventario.DtResultados.Copy() + End If + + If DtMovimientosEntrada IsNot Nothing Then + For Each Dr As DataRow In DtMovimientosEntrada.Rows + If Not ObjInventario.AddMovimientoDetalle(CveMovimiento, Dr("Cantidad").ToString.ToDouble, Dr("CveUM").ToString.ToEntero, Dr("CvePS").ToString.ToEntero, Dr("PU").ToString.ToDecimal, CveAF:=Dr("CveAF").ToString.ToEntero, Serie:=Dr("Serie").ToString, Lote:=Dr("Lote").ToString, FechaCaducidad:=Dr("FechaCaducidad").ToString.ToDate, Observaciones:=Dr("Observaciones").ToString, CveUsuarioModifico:=UsuarioActual.CveUsuario) Then + CveMovimiento = -1 + Exit For + End If + Next + + DtMovimientosEntrada.Dispose() + DtMovimientosEntrada = Nothing + End If + End If + Catch ex As Exception + OnError("Ocurrió un erro al cancelar el movimiento de usado", ex) + CveMovimiento = -1 + End Try + + Return CveMovimiento + End Function Private Function GuardarPolizasVirtuales(SqlTransaccion As SqlClient.SqlTransaction, ObjFactura As Modelos.Factura) As Boolean Dim Resultado As Boolean = True @@ -2405,28 +2438,44 @@ Namespace Modelos 'VERIFICA SI TIENE MOVIMIENTO DE ENTRADA DE USADO If CveMovimiento > 0 AndAlso CveAlmacen > 0 Then + Dim CveMovimientoReferencia As Integer = -1 + 'SI ES CANCELACION DEBE GENERAR EL MOVIMIENTO DE SALIDA DE USADOS + If ValorMultiplicador = -1 Then + CveMovimientoReferencia = CancelarInventarioUsado(ObjFactura, CveAlmacen, CveMovimiento, ObjInventario) - If ObjInventario.GetMovimientosDetalle(CveMovimiento, UsuarioActual.CveEmpresa) Then - Dim Importe68 As Decimal = ObjInventario.DtResultados.SUMD("Total").RoundSQL - - Dim IdCtaContable68 = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimeroValor("IdCtaContable", $"CveAlmacen={CveAlmacen}").ToEntero - - If Not ObjConta.AddPrePolizasDetalle(ObjFactura.CvePrePoliza, TipoMovimiento, Importe68, Referencia, 68, Concepto, FechaMovimiento, IdCtaContable68, -1, CveVenta:=CveVenta, CveMovimientoAlmacen:=CveMovimiento, ImporteMX:=Importe68, Contabilizable:=False) Then - ErrorPrepoliza = True - End If - - Dim Importe318 As Decimal = importeMovimiento - Importe68 - - If Not ObjConta.AddPrePolizasDetalle(ObjFactura.CvePrePoliza, TipoMovimiento, Importe318, Referencia, 318, Concepto, FechaMovimiento, IdCtaContable, -1, CveVenta:=ObjFactura.CveVenta, CveCliente:=ObjFactura.CveCliente, CveIE:=CveIE, ImporteMX:=Importe318, ImporteME:=If(tipoCambio = 1, 0, importeMovimiento), Contabilizable:=False, CveSubProyecto:=CveSubProyectoContabilizar) Then - ErrorPrepoliza = True - End If - - If Not ObjConta.AddPrePolizasDetalle(ObjFactura.CvePrePoliza, Not TipoMovimiento, importeMovimiento, Referencia, 277, Concepto, FechaMovimiento, IdCtaContable, -1, CveVenta:=ObjFactura.CveVenta, CveCliente:=ObjFactura.CveCliente, CveIE:=CveIE, ImporteMX:=importeMX, ImporteME:=If(tipoCambio = 1, 0, importeMovimiento), Contabilizable:=False, CveSubProyecto:=CveSubProyectoContabilizar) Then + If ObjConta.AddPrePolizasDetalle(ObjFactura.CvePrePoliza, TipoMovimiento, importeMovimiento, Referencia, 277, Concepto, FechaMovimiento, IdCtaContable, -1, CveVenta:=ObjFactura.CveVenta, CveCliente:=ObjFactura.CveCliente, CveIE:=CveIE, ImporteMX:=importeMX, ImporteME:=If(tipoCambio = 1, 0, importeMovimiento), Contabilizable:=False, CveSubProyecto:=CveSubProyectoContabilizar) Then + If Not ObjConta.AddPrePolizasDetalle(ObjFactura.CvePrePoliza, Not TipoMovimiento, importeMovimiento, Referencia, 278, Concepto, FechaMovimiento, IdCtaContable, -1, CveVenta:=ObjFactura.CveVenta, CveCliente:=ObjFactura.CveCliente, CveIE:=CveIE, ImporteMX:=importeMX, ImporteME:=If(tipoCambio = 1, 0, importeMovimiento), Contabilizable:=False, CveSubProyecto:=CveSubProyectoContabilizar) Then + ErrorPrepoliza = True + End If + Else ErrorPrepoliza = True End If Else - ErrorPrepoliza = True + CveMovimientoReferencia = CveMovimiento + + If ObjInventario.GetMovimientosDetalle(CveMovimientoReferencia, UsuarioActual.CveEmpresa) Then + Dim Importe68 As Decimal = ObjInventario.DtResultados.SUMD("Total").RoundSQL + + Dim IdCtaContable68 = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimeroValor("IdCtaContable", $"CveAlmacen={CveAlmacen}").ToEntero + + If Not ObjConta.AddPrePolizasDetalle(ObjFactura.CvePrePoliza, TipoMovimiento, Importe68, Referencia, 68, Concepto, FechaMovimiento, IdCtaContable68, -1, CveVenta:=CveVenta, CveMovimientoAlmacen:=CveMovimiento, ImporteMX:=Importe68, Contabilizable:=False) Then + ErrorPrepoliza = True + End If + + Dim Importe318 As Decimal = (Math.Abs(importeMovimiento) - Math.Abs(Importe68)) + + If Not ObjConta.AddPrePolizasDetalle(ObjFactura.CvePrePoliza, TipoMovimiento, Importe318, Referencia, 318, Concepto, FechaMovimiento, IdCtaContable, -1, CveVenta:=ObjFactura.CveVenta, CveCliente:=ObjFactura.CveCliente, CveIE:=CveIE, ImporteMX:=Importe318, ImporteME:=If(tipoCambio = 1, 0, importeMovimiento), Contabilizable:=False, CveSubProyecto:=CveSubProyectoContabilizar) Then + ErrorPrepoliza = True + End If + + If Not ObjConta.AddPrePolizasDetalle(ObjFactura.CvePrePoliza, Not TipoMovimiento, importeMovimiento, Referencia, 277, Concepto, FechaMovimiento, IdCtaContable, -1, CveVenta:=ObjFactura.CveVenta, CveCliente:=ObjFactura.CveCliente, CveIE:=CveIE, ImporteMX:=importeMX, ImporteME:=If(tipoCambio = 1, 0, importeMovimiento), Contabilizable:=False, CveSubProyecto:=CveSubProyectoContabilizar) Then + ErrorPrepoliza = True + End If + + Else + ErrorPrepoliza = True + End If End If Else From e184baa9361321fb52e4c2ee047a6ae49bbf0971 Mon Sep 17 00:00:00 2001 From: Jonathan Alexis Perez Morales Date: Fri, 21 Jan 2022 00:27:34 -0700 Subject: [PATCH 02/15] No calcular descuentos en productos con clasificacion "cambio de vigencia" --- Ventas/Ventas.aspx.vb | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/Ventas/Ventas.aspx.vb b/Ventas/Ventas.aspx.vb index 9ac36316a..b2f7fe442 100644 --- a/Ventas/Ventas.aspx.vb +++ b/Ventas/Ventas.aspx.vb @@ -17233,7 +17233,11 @@ Partial Class Ventas If CveClasifPS = 20636 Then ValidaCondicionesComerciales = False End If - + 'CAMBIO DE VIGENCIA NO SE APLICAN DESCUENTOS + If CveClasifPS = 20637 Then + ObjDescuento.ImporteDescuento = 0 + Return ObjDescuento + End If End If Dim dr As DataRow = Nothing From 80940f3b27013e572d2c12c165a573a6ca2f8ef3 Mon Sep 17 00:00:00 2001 From: Jonathan Alexis Perez Morales Date: Mon, 24 Jan 2022 17:27:55 -0700 Subject: [PATCH 03/15] Obtener el acuse de cancealcion al imprimir si no existe, salida de usados al cancelar RNC --- App_Code/ClsVentas.vb | 7 +++-- App_Code/Modelos.vb | 54 ++++++++++++++------------------- Compras/PopUpVerFactura.aspx.vb | 15 +++++++++ 3 files changed, 43 insertions(+), 33 deletions(-) diff --git a/App_Code/ClsVentas.vb b/App_Code/ClsVentas.vb index de1740aa1..bdde60a8d 100644 --- a/App_Code/ClsVentas.vb +++ b/App_Code/ClsVentas.vb @@ -242,13 +242,14 @@ Public Class ClsVentas Return Retorno End Function - Public Function GetVentasPendientesCancelacion(CveEmpresa As Integer, CveUsuarioConsulta As Integer) As Boolean + Public Function GetVentasPendientesCancelacion(CveEmpresa As Integer, CveUsuarioConsulta As Integer, Optional CveVenta As Integer = -1) As Boolean Dim Retorno As Boolean = False DataAdapter("PA_Vta_VentasPendientesCancelacionGet") With SqlAdapter.SelectCommand.Parameters .Add("@CveEmpresa", SqlDbType.Int).Value = CveEmpresa .Add("@CveUsuarioConsulta", SqlDbType.Int).Value = CveUsuarioConsulta + .Add("@CveVenta", SqlDbType.Int).Value = CveVenta End With Try @@ -5270,7 +5271,7 @@ Public Class ClsVentas Return Retorno End Function - Public Function GetAutorizacionLimite(CveEmpresa As Integer, CveCliente As Integer, CveVendedor As Integer, Optional CveEstatus As Integer = -1) As Boolean + Public Function GetAutorizacionLimite(CveEmpresa As Integer, CveCliente As Integer, CveVendedor As Integer, Optional CveEstatus As Integer = -1, Optional FechaI As DateTime = MinFecha, Optional FechaF As DateTime = MaxFecha) As Boolean Dim Retorno As Boolean = False DataAdapter("PA_Vta_AutorizacionLimitesGet") With SqlAdapter.SelectCommand.Parameters @@ -5278,6 +5279,8 @@ Public Class ClsVentas .Add("@CveCliente", SqlDbType.Int).Value = CveCliente .Add("@CveVendedor", SqlDbType.Int).Value = CveVendedor .Add("@CveEstatus", SqlDbType.Int).Value = CveEstatus + .Add("@FechaI", SqlDbType.Date).Value = FechaI + .Add("@FechaF", SqlDbType.Date).Value = FechaF End With Try SqlAdapter.Fill(Data) diff --git a/App_Code/Modelos.vb b/App_Code/Modelos.vb index c11f1ae25..cd903ab91 100644 --- a/App_Code/Modelos.vb +++ b/App_Code/Modelos.vb @@ -2186,7 +2186,8 @@ Namespace Modelos Private Function CancelarInventarioUsado(factura As Modelos.Factura, CveAlmacenUsado As Integer, CveMovimientoEntrada As Integer, ByRef ObjInventario As ClsInventarios) As Integer Dim CveMovimiento As Integer = -1 Try - CveMovimiento = ObjInventario.AddMovimiento(CveAlmacenUsado, 3, 1, Now, -1, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1, factura.CveVenta, + Dim CveConceptoSalidaUsado As Integer = 45 + CveMovimiento = ObjInventario.AddMovimiento(CveAlmacenUsado, CveConceptoSalidaUsado, 1, Now, -1, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1, factura.CveVenta, factura.CveSubProyecto, CveActivoFijo:=-1, Guia:="", Observaciones:="", CvePersonal:=-1, CveCliente:=factura.CveCliente, CveClienteSucursal:=-1, Modulo:="M/CU") If CveMovimiento <= 0 Then CveMovimiento = -1 @@ -2439,45 +2440,36 @@ Namespace Modelos 'VERIFICA SI TIENE MOVIMIENTO DE ENTRADA DE USADO If CveMovimiento > 0 AndAlso CveAlmacen > 0 Then Dim CveMovimientoReferencia As Integer = -1 + Dim TipoMovto68 = TipoMovimiento 'SI ES CANCELACION DEBE GENERAR EL MOVIMIENTO DE SALIDA DE USADOS If ValorMultiplicador = -1 Then CveMovimientoReferencia = CancelarInventarioUsado(ObjFactura, CveAlmacen, CveMovimiento, ObjInventario) + Else + CveMovimientoReferencia = CveMovimiento + End If - If ObjConta.AddPrePolizasDetalle(ObjFactura.CvePrePoliza, TipoMovimiento, importeMovimiento, Referencia, 277, Concepto, FechaMovimiento, IdCtaContable, -1, CveVenta:=ObjFactura.CveVenta, CveCliente:=ObjFactura.CveCliente, CveIE:=CveIE, ImporteMX:=importeMX, ImporteME:=If(tipoCambio = 1, 0, importeMovimiento), Contabilizable:=False, CveSubProyecto:=CveSubProyectoContabilizar) Then - If Not ObjConta.AddPrePolizasDetalle(ObjFactura.CvePrePoliza, Not TipoMovimiento, importeMovimiento, Referencia, 278, Concepto, FechaMovimiento, IdCtaContable, -1, CveVenta:=ObjFactura.CveVenta, CveCliente:=ObjFactura.CveCliente, CveIE:=CveIE, ImporteMX:=importeMX, ImporteME:=If(tipoCambio = 1, 0, importeMovimiento), Contabilizable:=False, CveSubProyecto:=CveSubProyectoContabilizar) Then - ErrorPrepoliza = True - End If - Else + If ObjInventario.GetMovimientosDetalle(CveMovimientoReferencia, UsuarioActual.CveEmpresa) Then + Dim Importe68 As Decimal = ObjInventario.DtResultados.SUMD("Total").RoundSQL * ValorMultiplicador + + Dim IdCtaContable68 = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimeroValor("IdCtaContable", $"CveAlmacen={CveAlmacen}").ToEntero + + If Not ObjConta.AddPrePolizasDetalle(ObjFactura.CvePrePoliza, TipoMovto68, Importe68, Referencia, 68, Concepto, FechaMovimiento, IdCtaContable68, -1, CveVenta:=CveVenta, CveMovimientoAlmacen:=CveMovimientoReferencia, ImporteMX:=Importe68, Contabilizable:=False) Then + ErrorPrepoliza = True + End If + + Dim Importe318 As Decimal = (Math.Abs(importeMovimiento) - Math.Abs(Importe68)) * ValorMultiplicador + + If Not ObjConta.AddPrePolizasDetalle(ObjFactura.CvePrePoliza, TipoMovimiento, Importe318, Referencia, 318, Concepto, FechaMovimiento, IdCtaContable, -1, CveVenta:=ObjFactura.CveVenta, CveCliente:=ObjFactura.CveCliente, CveIE:=CveIE, ImporteMX:=Importe318, ImporteME:=If(tipoCambio = 1, 0, importeMovimiento), Contabilizable:=False, CveSubProyecto:=CveSubProyectoContabilizar) Then + ErrorPrepoliza = True + End If + + If Not ObjConta.AddPrePolizasDetalle(ObjFactura.CvePrePoliza, Not TipoMovimiento, importeMovimiento, Referencia, 277, Concepto, FechaMovimiento, IdCtaContable, -1, CveVenta:=ObjFactura.CveVenta, CveCliente:=ObjFactura.CveCliente, CveIE:=CveIE, ImporteMX:=importeMX, ImporteME:=If(tipoCambio = 1, 0, importeMovimiento), Contabilizable:=False, CveSubProyecto:=CveSubProyectoContabilizar) Then ErrorPrepoliza = True End If Else - CveMovimientoReferencia = CveMovimiento - - If ObjInventario.GetMovimientosDetalle(CveMovimientoReferencia, UsuarioActual.CveEmpresa) Then - Dim Importe68 As Decimal = ObjInventario.DtResultados.SUMD("Total").RoundSQL - - Dim IdCtaContable68 = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimeroValor("IdCtaContable", $"CveAlmacen={CveAlmacen}").ToEntero - - If Not ObjConta.AddPrePolizasDetalle(ObjFactura.CvePrePoliza, TipoMovimiento, Importe68, Referencia, 68, Concepto, FechaMovimiento, IdCtaContable68, -1, CveVenta:=CveVenta, CveMovimientoAlmacen:=CveMovimiento, ImporteMX:=Importe68, Contabilizable:=False) Then - ErrorPrepoliza = True - End If - - Dim Importe318 As Decimal = (Math.Abs(importeMovimiento) - Math.Abs(Importe68)) - - If Not ObjConta.AddPrePolizasDetalle(ObjFactura.CvePrePoliza, TipoMovimiento, Importe318, Referencia, 318, Concepto, FechaMovimiento, IdCtaContable, -1, CveVenta:=ObjFactura.CveVenta, CveCliente:=ObjFactura.CveCliente, CveIE:=CveIE, ImporteMX:=Importe318, ImporteME:=If(tipoCambio = 1, 0, importeMovimiento), Contabilizable:=False, CveSubProyecto:=CveSubProyectoContabilizar) Then - ErrorPrepoliza = True - End If - - If Not ObjConta.AddPrePolizasDetalle(ObjFactura.CvePrePoliza, Not TipoMovimiento, importeMovimiento, Referencia, 277, Concepto, FechaMovimiento, IdCtaContable, -1, CveVenta:=ObjFactura.CveVenta, CveCliente:=ObjFactura.CveCliente, CveIE:=CveIE, ImporteMX:=importeMX, ImporteME:=If(tipoCambio = 1, 0, importeMovimiento), Contabilizable:=False, CveSubProyecto:=CveSubProyectoContabilizar) Then - ErrorPrepoliza = True - End If - - Else - ErrorPrepoliza = True - End If + ErrorPrepoliza = True End If - Else If ObjConta.AddPrePolizasDetalle(ObjFactura.CvePrePoliza, TipoMovimiento, importeMovimiento, Referencia, 277, Concepto, FechaMovimiento, IdCtaContable, -1, CveVenta:=ObjFactura.CveVenta, CveCliente:=ObjFactura.CveCliente, CveIE:=CveIE, ImporteMX:=importeMX, ImporteME:=If(tipoCambio = 1, 0, importeMovimiento), Contabilizable:=False, CveSubProyecto:=CveSubProyectoContabilizar) Then If Not ObjConta.AddPrePolizasDetalle(ObjFactura.CvePrePoliza, Not TipoMovimiento, importeMovimiento, Referencia, 278, Concepto, FechaMovimiento, IdCtaContable, -1, CveVenta:=ObjFactura.CveVenta, CveCliente:=ObjFactura.CveCliente, CveIE:=CveIE, ImporteMX:=importeMX, ImporteME:=If(tipoCambio = 1, 0, importeMovimiento), Contabilizable:=False, CveSubProyecto:=CveSubProyectoContabilizar) Then diff --git a/Compras/PopUpVerFactura.aspx.vb b/Compras/PopUpVerFactura.aspx.vb index 78d5d76c9..0ec920570 100644 --- a/Compras/PopUpVerFactura.aspx.vb +++ b/Compras/PopUpVerFactura.aspx.vb @@ -14,6 +14,8 @@ Imports Stimulsoft.Report.Components Imports Stimulsoft.Report.Dictionary Imports Stimulsoft.Report.Web Imports Newtonsoft.Json.Linq +Imports System +Imports Microsoft.VisualBasic Partial Class PopUpVerFactura Inherits ClsPaginas @@ -4830,6 +4832,19 @@ Partial Class PopUpVerFactura Dim Titulo As String = "Acuse de cancelación de CFDI" Dim EstadoCFDI As String = "Cancelado" + + 'SI NO TIENE EL SELLO BUSCA OBTNERLO DE NUEVO + If String.IsNullOrEmpty(SelloCancelacion) Then + Dim ObjCancelacion As New Timbrado + If ObjCancelacion.ObtenerAcuse(CveVenta, UsuarioActual) Then + SelloCancelacion = ObjCancelacion.CancelacionAcuse + + If FechaCancelacion = Nothing OrElse FechaCancelacion = MinFecha Then + FechaCancelacion = ObjCancelacion.CancelacionFecha + End If + End If + End If + If CveEstatusFactura = 20 Then Titulo = "Acuse de solicitud de cancelación de CFDI" EstadoCFDI = "Vigente" From 63b22e7f4f22671570f33b0868d3808e21a5a4e0 Mon Sep 17 00:00:00 2001 From: Jonathan Alexis Perez Morales Date: Mon, 24 Jan 2022 17:28:36 -0700 Subject: [PATCH 04/15] Funcion para obtener el acuse de cancelacion --- App_Code/Timbrado.vb | 77 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 77 insertions(+) diff --git a/App_Code/Timbrado.vb b/App_Code/Timbrado.vb index 191c38d6e..dd2d4be5d 100644 --- a/App_Code/Timbrado.vb +++ b/App_Code/Timbrado.vb @@ -51,6 +51,83 @@ Public Class Timbrado #End Region + Public Function ObtenerAcuse(CveVenta As Integer, UsuarioActual As Usuario) As Boolean + Dim Retorno As Boolean = False + Try + Dim RowVentas As DataRow = Nothing + Dim RFCEmisor = UsuarioActual.Empresa.RFC + Dim RFCReceptor As String = "" + Dim FolioFiscal As String = "" + Dim FolioSustitucion As String = "" + Dim CvePACCancelacion As Integer = -1 + Dim CveSATMotivoCancelacion As Integer = -1 + Dim CveMotivoCancelacion As Integer = -1 + Dim TotalT As Decimal = 0 + + Using ObjVentas As New ClsVentas + If ObjVentas.GetVentasPendientesCancelacion(UsuarioActual.CveEmpresa, 100, CveVenta) AndAlso ObjVentas.DtResultados.Rows.Count > 0 Then + RowVentas = ObjVentas.DtResultados.Rows(0) + End If + End Using + + If RowVentas IsNot Nothing Then + FolioFiscal = RowVentas("FolioFiscal").ToString() + RFCReceptor = RowVentas("RFCReceptor").ToString() + CvePACCancelacion = RowVentas("CvePAC").ToString().ToEntero() + CveMotivoCancelacion = RowVentas("CveMotivoCancelacion").ToString().ToEntero() + TotalT = RowVentas("Total").ToString().ToDecimal() + FolioSustitucion = RowVentas("FolioFiscalSustitucion").ToString() + End If + + If CveMotivoCancelacion > 0 Then + Dim Row As DataRow = ClsPaginas.GlobalDTMotivosCancelacionEmpresa(UsuarioActual.CveEmpresa, CveMotivoCancelacion:=CveMotivoCancelacion).FiltroPrimero("") + If Row IsNot Nothing Then + CveSATMotivoCancelacion = Row("CveSATMotivoCancelacion").ToString().ToEntero() + End If + End If + + + If CvePACCancelacion = 4 Then + Dim solicitud As New WSGF.Service1SoapClient + Dim resp As New WSGF.StructXml() + resp = solicitud.GetAcuse(RFCEmisor, "rene.molina@adsistemas.mx", "rene2018", FolioFiscal) + If (resp.Estado = 0) Then + + Dim xmlDoc As New System.Xml.XmlDocument() + xmlDoc.LoadXml(Encoding.UTF8.GetString(Convert.FromBase64String(resp.CfdiB64))) + Dim xpath As String = "Acuse/Folios" + Dim nodes = xmlDoc.SelectNodes(xpath) + CancelacionState = xmlDoc.GetElementsByTagName("EstatusUUID")(0).InnerText.ToEntero + + xpath = "Acuse/Signature" + nodes = xmlDoc.SelectNodes(xpath) + + Me.CancelacionAcuse = xmlDoc.GetElementsByTagName("SignatureValue")(0).InnerText + Me.CancelacionFecha = xmlDoc.SelectSingleNode("Acuse").Attributes("Fecha").Value.ToDate + Retorno = True + Else + CancelacionAcuse = resp.Descripcion + Retorno = False + End If + solicitud = Nothing + Else + If CFDICancelar(UsuarioActual.Empresa, FolioFiscal, TotalT, RFCReceptor, UsuarioActual.Empresa.RFC, CvePACCancelacion, CveSATMotivoCancelacion:=CveSATMotivoCancelacion, FolioSustitucion:=FolioSustitucion) Then + 'GENERAMOS EL ACUSE Y MANDAMOS MAIL DE CON EL ACUSE DE CANCELACIÓN + CancelacionFecha = Me.CancelacionFecha + CancelacionAcuse = Me.CancelacionAcuse + Retorno = True + End If + End If + + Catch ex As Exception + OnError("Ocurrió un error al intentar obtener el acuse", ex) + Retorno = False + End Try + + Return Retorno + End Function + + Public Shared Function VerificarVigenciaSAT(uuid As String, emisor As String, receptor As String, total As String, produccion As Boolean) As AcuseCancelacionSAT Dim Retorno As AcuseCancelacionSAT = Nothing Dim resp As Cancelacion2022.AcuseSat = New Cancelacion2022.AcuseSat() From d42a496be045c06532c45feb24dede929614b3ed Mon Sep 17 00:00:00 2001 From: Jonathan Alexis Perez Morales Date: Mon, 24 Jan 2022 17:29:58 -0700 Subject: [PATCH 05/15] Pantalla de bloqueo en ventas.aspx y pv.aspx, asignar forma de pago en base al pago mas alto --- Ventas/PV.aspx | 83 ++++++++++++++++++++++++++++++++++++++++++ Ventas/PV.aspx.vb | 44 +++++++++++++++++++--- Ventas/Ventas.aspx | 85 ++++++++++++++++++++++++++++++++++++++++++- Ventas/Ventas.aspx.vb | 61 ++++++++++++++++++++++++++----- 4 files changed, 256 insertions(+), 17 deletions(-) diff --git a/Ventas/PV.aspx b/Ventas/PV.aspx index e26c3d98f..ad071e15d 100644 --- a/Ventas/PV.aspx +++ b/Ventas/PV.aspx @@ -1891,12 +1891,89 @@