diff --git a/App_Code/ClsVentas.vb b/App_Code/ClsVentas.vb
index 26432a79f..1e17d5ae3 100644
--- a/App_Code/ClsVentas.vb
+++ b/App_Code/ClsVentas.vb
@@ -745,7 +745,8 @@ Public Class ClsVentas
Public Function UpdateEstatusFactura(Estatus As Integer, FolioFiscal As String, SelloSAT As String, FechaCancelacion As DateTime, CveVenta As Integer,
Optional IdPolizaCancelacion As Integer = -1, Optional CvePAC As Integer = -1, Optional CveEstatusRefacturacion As Integer = 0,
Optional CveUsuarioCambiaEstatus As Integer = -1, Optional FechaCambioEstatus As String = "-1", Optional RFCReceptor As String = "-1",
- Optional CveMotivoCancelacion As Integer = -1, Optional MotivoCancelacion As String = "", Optional EstadoCancelacion As String = "") As Boolean
+ Optional CveMotivoCancelacion As Integer = -1, Optional MotivoCancelacion As String = "", Optional EstadoCancelacion As String = "",
+ Optional CveEstadoCancelacion As Integer = 0) As Boolean
Dim Retorno As Boolean = False
DataAdapter("PA_VentasUpdateEstatus")
@@ -765,6 +766,7 @@ Public Class ClsVentas
.Add("@CveMotivoCancelacion", SqlDbType.Int).Value = CveMotivoCancelacion
.Add("@MotivoCancelacion", SqlDbType.VarChar).Value = MotivoCancelacion
.Add("@EstadoCancelacion", SqlDbType.VarChar).Value = EstadoCancelacion
+ .Add("@CveEstadoCancelacion", SqlDbType.TinyInt).Value = CveEstadoCancelacion
End With
Try
@@ -855,7 +857,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 = "") 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) As Boolean
Dim Retorno As Boolean = False
DataAdapter("PA_Vta_VentasCancelacion")
@@ -868,6 +870,7 @@ Public Class ClsVentas
.Add("@CvePAC", SqlDbType.SmallInt).Value = CvePAC
.Add("@CveEstatusRefacturacion", SqlDbType.TinyInt).Value = CveEstatusRefacturacion
.Add("@EstadoCancelacion", SqlDbType.VarChar).Value = EstadoCancelacion
+ .Add("@CveEstadoCancelacion", SqlDbType.TinyInt).Value = CveEstadoCancelacion
.Add("@Cancelada", SqlDbType.SmallInt).Direction = ParameterDirection.Output
End With
diff --git a/App_Code/Modelos.vb b/App_Code/Modelos.vb
index fcad20aec..087d8e134 100644
--- a/App_Code/Modelos.vb
+++ b/App_Code/Modelos.vb
@@ -4636,8 +4636,8 @@ Namespace Modelos
''' Cancela la factura para poder realizar la refacturacion
'''
'''
- Public Function CancelarPorRefacturacion(CveMotivoCancelacion As Integer, Motivo As String, Optional FolioSustitucion As String = "", Optional ValidarSAT As Boolean = False) As MCancelacionVentaMensaje
- Return CancelarVenta(Me, Me.UsuarioActual, EsRefacturacion:=True, CveMotivoCancelacion:=CveMotivoCancelacion, MotivoCancelacion:=Motivo, FolioSustitucion:=FolioSustitucion, ValidarSAT:=ValidarSAT)
+ Public Function CancelarPorRefacturacion(CveMotivoCancelacion As Integer, Motivo As String, Optional FolioSustitucion As String = "", Optional ValidarSAT As Boolean = False, Optional CveEstadoCancelacion As Integer = 0) As MCancelacionVentaMensaje
+ Return CancelarVenta(Me, Me.UsuarioActual, EsRefacturacion:=True, CveMotivoCancelacion:=CveMotivoCancelacion, MotivoCancelacion:=Motivo, FolioSustitucion:=FolioSustitucion, ValidarSAT:=ValidarSAT, CveEstadoCancelacion:=CveEstadoCancelacion)
End Function
'''
''' Cancela la factura y realiza las operaciones correspondientes
@@ -4645,15 +4645,15 @@ Namespace Modelos
'''
'''
'''
- Public Function CancelarFactura(RealizarDevolucionAlmacen As Boolean, Optional ListaRemisionesCancelar As List(Of Integer) = Nothing, Optional CveMotivoCancelacion As Integer = -1, Optional Motivo As String = "", Optional ValidarSAT As Boolean = True) As MCancelacionVentaMensaje
+ Public Function CancelarFactura(RealizarDevolucionAlmacen As Boolean, 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) As MCancelacionVentaMensaje
'Comprobante emitido con errores sin relación
- Return CancelarVenta(Me, Me.UsuarioActual, RealizarDevolucionAlmacen:=RealizarDevolucionAlmacen, ListaRemisionesCancelar:=ListaRemisionesCancelar, CveMotivoCancelacion:=CveMotivoCancelacion, MotivoCancelacion:=Motivo)
+ Return CancelarVenta(Me, Me.UsuarioActual, RealizarDevolucionAlmacen:=RealizarDevolucionAlmacen, ListaRemisionesCancelar:=ListaRemisionesCancelar, CveMotivoCancelacion:=CveMotivoCancelacion, MotivoCancelacion:=Motivo, CveEstadoCancelacion:=CveEstadoCancelacion)
End Function
Private Function CancelarVenta(ObjFactura As Modelos.Factura, UsuarioActual As Usuario, Optional EsRefacturacion As Boolean = False, Optional RealizarDevolucionAlmacen As Boolean = False,
- Optional ListaRemisionesCancelar As List(Of Integer) = Nothing, Optional CveEstatusFacturaAsignado As Integer = -1,
- Optional FechaCancelacion As String = "-1", Optional AcuseCancelacion As String = "",
- Optional CveMotivoCancelacion As Integer = -1, Optional MotivoCancelacion As String = "", Optional FolioSustitucion As String = "", Optional ValidarSAT As Boolean = True) As MCancelacionVentaMensaje
+ Optional ListaRemisionesCancelar As List(Of Integer) = Nothing, Optional CveEstatusFacturaAsignado As Integer = -1, Optional FechaCancelacion As String = "-1",
+ Optional AcuseCancelacion As String = "", Optional CveMotivoCancelacion As Integer = -1, Optional MotivoCancelacion As String = "",
+ Optional FolioSustitucion As String = "", Optional ValidarSAT As Boolean = True, Optional CveEstadoCancelacion As Integer = 0) As MCancelacionVentaMensaje
Dim Retorno As New MCancelacionVentaMensaje()
Dim ErrorList As New List(Of String)
@@ -4801,6 +4801,7 @@ Namespace Modelos
Dim CveEstatusRefacturacion As Integer = If(ObjFactura.CveEstatusRefacturacion <= 0, 0, ObjFactura.CveEstatusRefacturacion)
+
If Not EsRefacturacion Then
CveEstatusRefacturacion = 0
End If
@@ -4828,7 +4829,7 @@ Namespace Modelos
Dim Continuar As Boolean = False
Dim ContinuarCancelacion As Boolean = False
Dim ObtenerAcuse As Boolean = False
- Dim RequiereAceptacion As Boolean = False
+ Dim RequiereAceptacion As Boolean = True
Dim Mensaje As String = ""
Dim CveSATMotivoCancelacion As Integer = -1
@@ -4845,6 +4846,14 @@ Namespace Modelos
CveEstatusFacturaAsignado = 23
End If
+ 'SI NO SE ASIGNA EL ESTATUS DE CANCELACION, TOMA EL GUARADO DE LA FACTURA
+ CveEstadoCancelacion = If(CveEstadoCancelacion <= 0, ObjFactura.CveEstadoCancelacion, CveEstadoCancelacion)
+
+ 'SI YA SE CONOCE EL ESTADO DE CANCELACION, NO LO VERIFICA ANTE EL SAT
+ If CveEstadoCancelacion > 0 Then
+ ValidarSAT = False
+ End If
+
If CveEstatusFacturaAsignado <= 0 Then
Try
If ObjFactura.FolioFiscal <> "" AndAlso (UsuarioActual.Empresa.FacturaProduccion OrElse UsuarioActual.CveEmpresa = 1) Then
@@ -4919,22 +4928,26 @@ Namespace Modelos
If Vigencia.EstatusCancelacion.ToUpper() = "EN PROCESO" Then
CveEstatus = 20
ContinuarCancelacion = False
+ RequiereAceptacion = True
ElseIf Vigencia.EsCancelable.ToUpper() = "CANCELABLE CON ACEPTACIÓN" Then
CveEstatus = 20
ContinuarCancelacion = True
RequiereAceptacion = True
ElseIf Vigencia.EsCancelable.ToUpper() = "CANCELABLE SIN ACEPTACIÓN" Then
ContinuarCancelacion = True
+ RequiereAceptacion = False
CveEstatus = 5
End If
Else
If Vigencia.EsCancelable.ToUpper() = "CANCELABLE SIN ACEPTACIÓN" Then
ContinuarCancelacion = True
+ RequiereAceptacion = False
CveEstatus = 5
Else
CveEstatus = 20
ContinuarCancelacion = False
+ RequiereAceptacion = True
CancelacionFecha = Now.Date
CancelacionAcuse = ""
End If
@@ -4951,10 +4964,19 @@ Namespace Modelos
CancelacionFecha = Now.Date
CancelacionAcuse = ""
- Dim diasTimbrado As Decimal = DateDiff(DateInterval.Day, ObjFactura.FechaCP, Now)
+ 'VERICA SI YA SE TIENE EL ESTADO DE CANCELACION, PARA SABER SI REQUIERE ACEPTACION
+ If CveEstadoCancelacion > 0 Then
+ If CveEstadoCancelacion = 1 Then
+ RequiereAceptacion = False
+ ElseIf CveEstadoCancelacion = 2 Then
+ RequiereAceptacion = True
+ End If
+ Else
+ Dim diasTimbrado As Decimal = DateDiff(DateInterval.Day, ObjFactura.FechaCP, Now)
- If ObjFactura.Total < 5000D OrElse diasTimbrado <= 3 OrElse ObjFactura.Cliente.RFC.Contiene("XAXX010101000", "XEXX010101000") Then
- RequiereAceptacion = False
+ If ObjFactura.Total < 1000D OrElse diasTimbrado <= 1 OrElse ObjFactura.Cliente.RFC.Contiene("XAXX010101000", "XEXX010101000") Then
+ RequiereAceptacion = False
+ End If
End If
End If
@@ -5596,13 +5618,14 @@ Namespace Modelos
If CveEstatus.Contiene(4, 5) Then
- If Not ObjVentas.UpdateCancelaVenta(CveVenta, CancelacionFecha, CancelacionAcuse, UsuarioActual.CveEmpresa, CvePACCancelacion, CveEstatusRefacturacion, EstadoCancelacion:=EstadoCancelacion) Then
+ If Not ObjVentas.UpdateCancelaVenta(CveVenta, CancelacionFecha, CancelacionAcuse, UsuarioActual.CveEmpresa, CvePACCancelacion, CveEstatusRefacturacion, EstadoCancelacion:=EstadoCancelacion, CveEstadoCancelacion:=CveEstadoCancelacion) Then
ErrorCancelar = True
MensajeError = "Ocurrió un error al guardar el estatus de cancelación."
End If
Else
If Not ObjVentas.UpdateEstatusFactura(CveEstatus, FolioFiscal, CancelacionAcuse, CancelacionFecha, CveVenta, IDPoliza, CvePAC:=CvePACCancelacion, CveEstatusRefacturacion:=CveEstatusRefacturacion,
- CveUsuarioCambiaEstatus:=UsuarioActual.CveUsuario, FechaCambioEstatus:=Now.ToString("yyyy-MM-dd HH:mm:ss.mmm"), CveMotivoCancelacion:=CveMotivoCancelacion, MotivoCancelacion:=MotivoCancelacion, EstadoCancelacion:=EstadoCancelacion) Then
+ CveUsuarioCambiaEstatus:=UsuarioActual.CveUsuario, FechaCambioEstatus:=Now.ToString("yyyy-MM-dd HH:mm:ss.mmm"), CveMotivoCancelacion:=CveMotivoCancelacion,
+ MotivoCancelacion:=MotivoCancelacion, EstadoCancelacion:=EstadoCancelacion, CveEstadoCancelacion:=CveEstadoCancelacion) Then
ErrorCancelar = True
MensajeError = "Ocurrió un error al guardar el estatus de cancelación."
End If
@@ -6257,6 +6280,7 @@ Namespace Modelos
Public Property RFCReceptor As String = ""
Public Property ServicioDomicilio As Boolean
Public Property CveEstatusRefacturacion As Integer = 0
+ Public Property CveEstadoCancelacion As Integer = 0
Public Property NuevaFactura As Integer
Public Property EnviarCorreo As Boolean = False
Public Property ErrorList As List(Of String)
diff --git a/Ventas/Ventas.aspx.vb b/Ventas/Ventas.aspx.vb
index f8caef72b..5f9a1e79c 100644
--- a/Ventas/Ventas.aspx.vb
+++ b/Ventas/Ventas.aspx.vb
@@ -1267,6 +1267,15 @@ Partial Class Ventas
End Set
End Property
+ Private Property CveEstadoCancelacion As Integer
+ Get
+ Return If(IsNothing(ViewState("CveEstadoCancelacion")), 0, CType(ViewState("CveEstadoCancelacion"), Integer))
+ End Get
+ Set(value As Integer)
+ ViewState("CveEstadoCancelacion") = value
+ End Set
+ End Property
+
Private Property PermiteCredito As Boolean
Get
Return If(IsNothing(ViewState("PermiteCredito")), False, CBool(ViewState("PermiteCredito")))
@@ -2253,6 +2262,7 @@ Partial Class Ventas
SeCancelaRemisionProceso = False
TotalOriginal = 0
CveAlmacenDevolucion = 0
+ Me.CveEstadoCancelacion = 0
txtFechaICot.Text = Now.AddMonths(-3).ToShortDateString
TxtFechaIRem.Text = Now.AddMonths(-3).ToShortDateString
@@ -20724,12 +20734,14 @@ Partial Class Ventas
If Vigencia.EsCancelable = "Cancelable sin aceptación" Then
'script = "BtnRefacturacionConfirmarAceptacion();"
+ Me.CveEstadoCancelacion = 1
sb.AppendFormat("{0}
", Vigencia.EsCancelable)
sb.Append("Está seguro de realizar la refacturación?.")
End If
If Vigencia.EsCancelable = "Cancelable con aceptación" OrElse String.IsNullOrEmpty(Vigencia.EsCancelable) Then
'script = "BtnRefacturacionConfirmar();"
+ Me.CveEstadoCancelacion = 2
sb.AppendFormat("{0}
", "Cancelable con aceptación")
sb.Append("Está seguro de cancelar el documento para realizar la refacturación?.")
End If
@@ -23449,6 +23461,13 @@ Partial Class Ventas
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
sb.Append("Está seguro de cancelar el documento?.")
@@ -23636,7 +23655,7 @@ Partial Class Ventas
'ObjE.AddEventoBitacora(msgBitacora, "", UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, CveVenta:=CveVenta)
'ObjE.Dispose()
- resp = ObjFacturaCancelacion.CancelarPorRefacturacion(DdlMotivoRefacturacion.SelectedValue.ToEntero(), TxtMotivoRefac.Text.Trim())
+ resp = ObjFacturaCancelacion.CancelarPorRefacturacion(DdlMotivoRefacturacion.SelectedValue.ToEntero(), TxtMotivoRefac.Text.Trim(), CveEstadoCancelacion:=Me.CveEstadoCancelacion)
Else
Dim ListaRemisionesCancelar As New List(Of Integer)
If ChkCanRem.Checked Then
@@ -23649,7 +23668,7 @@ Partial Class Ventas
ObjFacturaCancelacion.CveAlmacenDevolucion = CveAlmacenDevolucion
- resp = ObjFacturaCancelacion.CancelarFactura(ChkDevAlm.Checked, ListaRemisionesCancelar, CveMotivoCancelacion:=DdlMotivoCancelacion.SelectedValue.ToEntero(), Motivo:=TxtMotivoCancelacion.Text.Trim())
+ resp = ObjFacturaCancelacion.CancelarFactura(ChkDevAlm.Checked, ListaRemisionesCancelar, CveMotivoCancelacion:=DdlMotivoCancelacion.SelectedValue.ToEntero(), Motivo:=TxtMotivoCancelacion.Text.Trim(), CveEstadoCancelacion:=Me.CveEstadoCancelacion)
End If
SWatch.Stop()