diff --git a/App_Code/ClsVentas.vb b/App_Code/ClsVentas.vb
index 60ced51bc..bb81bc959 100644
--- a/App_Code/ClsVentas.vb
+++ b/App_Code/ClsVentas.vb
@@ -1142,7 +1142,7 @@ Public Class ClsVentas
Return Retorno
End Function
- Public Function UpdateCancelaVenta(CveVenta As Integer, FechaCancelacion As DateTime, SelloCancelacionSAT As String, CveEmpresa As Integer, Optional CvePAC As Integer = -1, Optional CveEstatusRefacturacion As Integer = 0, Optional EstadoCancelacion As String = "", Optional CveEstadoCancelacion As Integer = 0) As Boolean
+ Public Function UpdateCancelaVenta(CveVenta As Integer, FechaCancelacion As DateTime, SelloCancelacionSAT As String, CveEmpresa As Integer, Optional CvePAC As Integer = -1, Optional CveEstatusRefacturacion As Integer = 0, Optional EstadoCancelacion As String = "", Optional CveEstadoCancelacion As Integer = 0, Optional CveEstatusFactura As Integer = 5) As Boolean
Dim Retorno As Boolean = False
DataAdapter("PA_Vta_VentasCancelacion")
@@ -1156,6 +1156,7 @@ Public Class ClsVentas
.Add("@CveEstatusRefacturacion", SqlDbType.TinyInt).Value = CveEstatusRefacturacion
.Add("@EstadoCancelacion", SqlDbType.VarChar).Value = EstadoCancelacion
.Add("@CveEstadoCancelacion", SqlDbType.TinyInt).Value = CveEstadoCancelacion
+ .Add("@CveEstatusFactura", SqlDbType.Int).Value = CveEstatusFactura
.Add("@Cancelada", SqlDbType.SmallInt).Direction = ParameterDirection.Output
End With
diff --git a/App_Code/Modelos.vb b/App_Code/Modelos.vb
index 196c9b331..4b0bd8b38 100644
--- a/App_Code/Modelos.vb
+++ b/App_Code/Modelos.vb
@@ -5681,9 +5681,9 @@ Namespace Modelos
'''
'''
'''
- Public Function CancelarFactura(RealizarDevolucionAlmacen As Integer, Optional ListaRemisionesCancelar As List(Of Integer) = Nothing, Optional CveMotivoCancelacion As Integer = -1, Optional Motivo As String = "", Optional ValidarSAT As Boolean = True, Optional CveEstadoCancelacion As Integer = 0, Optional CancelarBoletos As Boolean = False, Optional ForzarDevolucion As Boolean = False, Optional CancelacionPagos As OpcionesCancelacionPagos = OpcionesCancelacionPagos.SinPagos) As MCancelacionVentaMensaje
+ Public Function CancelarFactura(RealizarDevolucionAlmacen As Integer, Optional ListaRemisionesCancelar As List(Of Integer) = Nothing, Optional CveMotivoCancelacion As Integer = -1, Optional Motivo As String = "", Optional ValidarSAT As Boolean = True, Optional CveEstadoCancelacion As Integer = 0, Optional CancelarBoletos As Boolean = False, Optional ForzarDevolucion As Boolean = False, Optional CancelacionPagos As OpcionesCancelacionPagos = OpcionesCancelacionPagos.SinPagos, Optional CveEstatusFacturaAsignado As Integer = -1) As MCancelacionVentaMensaje
'Comprobante emitido con errores sin relación
- Return CancelarVenta(Me, Me.UsuarioActual, RealizarDevolucionAlmacen:=RealizarDevolucionAlmacen, ListaRemisionesCancelar:=ListaRemisionesCancelar, CveMotivoCancelacion:=CveMotivoCancelacion, MotivoCancelacion:=Motivo, CveEstadoCancelacion:=CveEstadoCancelacion, CancelarBoletos:=CancelarBoletos, ForzarDevolucion:=ForzarDevolucion, CancelacionPagos:=CancelacionPagos)
+ Return CancelarVenta(Me, Me.UsuarioActual, RealizarDevolucionAlmacen:=RealizarDevolucionAlmacen, ListaRemisionesCancelar:=ListaRemisionesCancelar, CveMotivoCancelacion:=CveMotivoCancelacion, MotivoCancelacion:=Motivo, CveEstadoCancelacion:=CveEstadoCancelacion, CancelarBoletos:=CancelarBoletos, ForzarDevolucion:=ForzarDevolucion, CancelacionPagos:=CancelacionPagos, CveEstatusFacturaAsignado:=CveEstatusFacturaAsignado, ValidarSAT:=ValidarSAT)
End Function
Private Function CancelarVenta(ObjFactura As Modelos.Factura, UsuarioActual As Usuario, Optional EsRefacturacion As Boolean = False, Optional RealizarDevolucionAlmacen As Integer = 0,
diff --git a/Ventas/Ventas.aspx.vb b/Ventas/Ventas.aspx.vb
index cdeeaa7fb..f407bcc48 100644
--- a/Ventas/Ventas.aspx.vb
+++ b/Ventas/Ventas.aspx.vb
@@ -26750,96 +26750,104 @@ Partial Class Ventas
RFCReceptor = Me.RFCReceptorVenta
End If
- Dim SWatch As New Stopwatch
- SWatch.Start()
- Dim Vigencia As Timbrado.AcuseCancelacionSAT = Timbrado.VerificarVigenciaSAT(FolioFiscal, UsuarioActual.Empresa.RFC, RFCReceptor, TotalT.ToString(), True)
+ If Not UsuarioActual.Empresa.Funcionalidad(529) = "1" Then
+ Dim SWatch As New Stopwatch
+ SWatch.Start()
+ Dim Vigencia As Timbrado.AcuseCancelacionSAT = Timbrado.VerificarVigenciaSAT(FolioFiscal, UsuarioActual.Empresa.RFC, RFCReceptor, TotalT.ToString(), True)
- SWatch.Stop()
+ SWatch.Stop()
- Dim SegundosRespuesta As Double = SWatch.ElapsedMilliseconds / 1000
- SegundosRespuesta = SegundosRespuesta.ToEntero
+ Dim SegundosRespuesta As Double = SWatch.ElapsedMilliseconds / 1000
+ SegundosRespuesta = SegundosRespuesta.ToEntero
- If SegundosRespuesta >= 5 Then
- Alert($"Los servicios de validacion del SAT presentan lentitud en la respuesta [{ SegundosRespuesta } s].", TipoMensaje.ToastAdventencia, "")
- End If
+ If SegundosRespuesta >= 5 Then
+ Alert($"Los servicios de validacion del SAT presentan lentitud en la respuesta [{ SegundosRespuesta } s].", TipoMensaje.ToastAdventencia, "")
+ End If
- If Vigencia IsNot Nothing Then
- If Vigencia.EsCancelable.ToUpper() = "NO CANCELABLE" Then
+ If Vigencia IsNot Nothing Then
+ If Vigencia.EsCancelable.ToUpper() = "NO CANCELABLE" Then
- DivRelacionadasCancelacion.Visible = True
- BtnCancelarDocumento.Visible = False
- DivMotivoCancelacion.Visible = False
- DivMotivoCancelacionTxt.Visible = False
- DivCanRem.Visible = False
- DivDevAlm.Visible = False
+ DivRelacionadasCancelacion.Visible = True
+ BtnCancelarDocumento.Visible = False
+ DivMotivoCancelacion.Visible = False
+ DivMotivoCancelacionTxt.Visible = False
+ DivCanRem.Visible = False
+ DivDevAlm.Visible = False
- Dim Relacionados As Timbrado.MRespUUIDRelacionados = Timbrado.ConsultarUUIDRelacionados(UsuarioActual.Empresa, FolioFiscal, UsuarioActual.Empresa.FacturaProduccion)
- If Relacionados IsNot Nothing Then
- If Relacionados.Codigo = 500 Then
- sbExtra.Append("El servicio de verificación de documentos relacionados no esta disponible.")
- Else
- sbExtra.Append(Relacionados.Mensaje)
- Dim SbHijos As New StringBuilder()
- Dim SbPadres As New StringBuilder()
+ Dim Relacionados As Timbrado.MRespUUIDRelacionados = Timbrado.ConsultarUUIDRelacionados(UsuarioActual.Empresa, FolioFiscal, UsuarioActual.Empresa.FacturaProduccion)
+ If Relacionados IsNot Nothing Then
+ If Relacionados.Codigo = 500 Then
+ sbExtra.Append("El servicio de verificación de documentos relacionados no esta disponible.")
+ Else
+ sbExtra.Append(Relacionados.Mensaje)
+ Dim SbHijos As New StringBuilder()
+ Dim SbPadres As New StringBuilder()
- 'If Relacionados.RelacionadosHijo IsNot Nothing Then
- ' For Each hijo In Relacionados.RelacionadosHijo
- ' SbHijos.AppendFormat("{0};", hijo.Uuid)
- ' Next
- ' If SbHijos.Length > 0 Then
- ' SbHijos.Remove(SbHijos.Length - 1, 1)
- ' End If
- 'End If
-
- If Relacionados.RelacionadosPadre IsNot Nothing Then
- For Each padre As Timbrado.RelacionadosPadre In Relacionados.RelacionadosPadre
- SbPadres.AppendFormat("{0};", padre.Uuid)
- Next
- If SbPadres.Length > 0 Then
- SbPadres.Remove(SbPadres.Length - 1, 1)
- End If
- End If
-
- Using ObjVentas As New ClsVentas
- 'If SbHijos.Length > 0 Then
- ' If ObjVentas.GetFacturasRelacionadasPorFolioFiscal(SbHijos.ToString(), UsuarioActual.CveEmpresa) Then
- ' GvFacturasHijosCancelar.DataSource = ObjVentas.DtResultados.Copy()
+ 'If Relacionados.RelacionadosHijo IsNot Nothing Then
+ ' For Each hijo In Relacionados.RelacionadosHijo
+ ' SbHijos.AppendFormat("{0};", hijo.Uuid)
+ ' Next
+ ' If SbHijos.Length > 0 Then
+ ' SbHijos.Remove(SbHijos.Length - 1, 1)
' End If
'End If
- If SbPadres.Length > 0 Then
- If ObjVentas.GetFacturasRelacionadasPorFolioFiscal(SbPadres.ToString(), UsuarioActual.CveEmpresa) Then
- GvFacturasPadreCancelar.DataSource = ObjVentas.DtResultados.FiltraParametros($"CveVenta <> {CveVenta}")
+
+ If Relacionados.RelacionadosPadre IsNot Nothing Then
+ For Each padre As Timbrado.RelacionadosPadre In Relacionados.RelacionadosPadre
+ SbPadres.AppendFormat("{0};", padre.Uuid)
+ Next
+ If SbPadres.Length > 0 Then
+ SbPadres.Remove(SbPadres.Length - 1, 1)
End If
End If
- End Using
- 'GvFacturasHijosCancelar.DataBind()
- GvFacturasPadreCancelar.DataBind()
+ Using ObjVentas As New ClsVentas
+ 'If SbHijos.Length > 0 Then
+ ' If ObjVentas.GetFacturasRelacionadasPorFolioFiscal(SbHijos.ToString(), UsuarioActual.CveEmpresa) Then
+ ' GvFacturasHijosCancelar.DataSource = ObjVentas.DtResultados.Copy()
+ ' End If
+ 'End If
+ If SbPadres.Length > 0 Then
+ If ObjVentas.GetFacturasRelacionadasPorFolioFiscal(SbPadres.ToString(), UsuarioActual.CveEmpresa) Then
+ GvFacturasPadreCancelar.DataSource = ObjVentas.DtResultados.FiltraParametros($"CveVenta <> {CveVenta}")
+ End If
+ End If
+
+ End Using
+ 'GvFacturasHijosCancelar.DataBind()
+ GvFacturasPadreCancelar.DataBind()
+ End If
End If
End If
- End If
- If String.IsNullOrEmpty(Vigencia.EsCancelable) Then
- If UsuarioActual.Empresa.FacturaProduccion AndAlso Not String.IsNullOrEmpty(FolioFiscal) Then
- Alert("No se pudo encontrar el estatus de la factura en el SAT.", TipoMensaje.MsgAdvertencia)
- Exit Sub
+ If String.IsNullOrEmpty(Vigencia.EsCancelable) Then
+ If UsuarioActual.Empresa.FacturaProduccion AndAlso Not String.IsNullOrEmpty(FolioFiscal) Then
+ Alert("No se pudo encontrar el estatus de la factura en el SAT.", TipoMensaje.MsgAdvertencia)
+ Exit Sub
+ End If
+ MostrarRemisionesCancelar()
+ sb.Append("No encontrado
")
+ sb.Append("Está seguro de cancelar el documento?.")
+ Else
+ 'GUARDA EL ESTADO DE CANCELACION
+ If Vigencia.EsCancelable.ToUpper() = "CANCELABLE CON ACEPTACIÓN" Then
+ Me.CveEstadoCancelacion = 2
+ ElseIf Vigencia.EsCancelable.ToUpper() = "CANCELABLE SIN ACEPTACIÓN" Then
+ Me.CveEstadoCancelacion = 1
+ End If
+
+ sb.AppendFormat("{0}
", Vigencia.EsCancelable)
+ If Vigencia.EsCancelable.ToUpper() <> "NO CANCELABLE" Then
+ MostrarRemisionesCancelar()
+ sb.Append("Está seguro de cancelar el documento?.")
+ End If
End If
+
+
+ Else
MostrarRemisionesCancelar()
sb.Append("No encontrado
")
sb.Append("Está seguro de cancelar el documento?.")
- Else
- 'GUARDA EL ESTADO DE CANCELACION
- If Vigencia.EsCancelable.ToUpper() = "CANCELABLE CON ACEPTACIÓN" Then
- Me.CveEstadoCancelacion = 2
- ElseIf Vigencia.EsCancelable.ToUpper() = "CANCELABLE SIN ACEPTACIÓN" Then
- Me.CveEstadoCancelacion = 1
- End If
-
- sb.AppendFormat("{0}
", Vigencia.EsCancelable)
- If Vigencia.EsCancelable.ToUpper() <> "NO CANCELABLE" Then
- MostrarRemisionesCancelar()
- sb.Append("Está seguro de cancelar el documento?.")
- End If
End If
Else
MostrarRemisionesCancelar()
@@ -27073,12 +27081,17 @@ Partial Class Ventas
If EsRefacturacion Then
+ Dim ValidarSAT As Boolean = True
+ If UsuarioActual.Empresa.Funcionalidad(529) = "1" Then
+ ValidarSAT = False
+ End If
+
'Dim msgBitacora As String = $"Motivo de refacturación: {TxtMotivoRefac.Text}"
'Dim ObjE As New ClsOIEventos()
'ObjE.AddEventoBitacora(msgBitacora, "", UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, CveVenta:=CveVenta)
'ObjE.Dispose()
- resp = ObjFacturaCancelacion.CancelarPorRefacturacion(DdlMotivoRefacturacion.SelectedValue.ToEntero(), TxtMotivoRefac.Text.Trim(), CveEstadoCancelacion:=Me.CveEstadoCancelacion)
+ resp = ObjFacturaCancelacion.CancelarPorRefacturacion(DdlMotivoRefacturacion.SelectedValue.ToEntero(), TxtMotivoRefac.Text.Trim(), CveEstadoCancelacion:=Me.CveEstadoCancelacion, ValidarSAT:=ValidarSAT)
strMensaje.Append(resp.Mensaje)
Else
Dim ListaRemisionesCancelar As New List(Of Integer)
@@ -27135,7 +27148,26 @@ Partial Class Ventas
End If
- resp = ObjFacturaCancelacion.CancelarFactura(If(ChkDevAlm.Checked, 1, 0), ListaRemisionesCancelar, CveMotivoCancelacion:=DdlMotivoCancelacion.SelectedValue.ToEntero(), Motivo:=TxtMotivoCancelacion.Text.Trim(), CveEstadoCancelacion:=Me.CveEstadoCancelacion, ForzarDevolucion:=GenerarDevolucionAnticipada, CancelacionPagos:=CancelacionPagos)
+ Dim ValidarSAT As Boolean = True
+ Dim CveEstatusFacturaAsignado As Integer = -1
+ If UsuarioActual.Empresa.Funcionalidad(529) = "1" Then
+ ValidarSAT = False
+
+ Dim diasTimbrado As Decimal = DateDiff(DateInterval.Day, ObjFacturaCancelacion.FechaCP, ClsPaginas.NowADS())
+
+ 'CANCELACION SIN ACEPTACION
+ Me.CveEstadoCancelacion = 2
+ 'CANCELACION CON ACEPTACION
+ If ObjFacturaCancelacion.Total < 1000D OrElse diasTimbrado <= 1 OrElse ObjFacturaCancelacion.Cliente.RFC.Contiene("XAXX010101000", "XEXX010101000") Then
+ Me.CveEstadoCancelacion = 1
+ End If
+
+ ObjFacturaCancelacion.CveEstadoCancelacion = Me.CveEstadoCancelacion
+
+ CveEstatusFacturaAsignado = 4
+ End If
+
+ resp = ObjFacturaCancelacion.CancelarFactura(If(ChkDevAlm.Checked, 1, 0), ListaRemisionesCancelar, CveMotivoCancelacion:=DdlMotivoCancelacion.SelectedValue.ToEntero(), Motivo:=TxtMotivoCancelacion.Text.Trim(), CveEstadoCancelacion:=Me.CveEstadoCancelacion, ForzarDevolucion:=GenerarDevolucionAnticipada, CancelacionPagos:=CancelacionPagos, ValidarSAT:=ValidarSAT, CveEstatusFacturaAsignado:=CveEstatusFacturaAsignado)
strMensaje.Append(resp.Mensaje)
Dim DtBonificaciones As DataTable = Nothing