diff --git a/App_Code/Modelos.vb b/App_Code/Modelos.vb
index 954c278f3..f64bb2cfd 100644
--- a/App_Code/Modelos.vb
+++ b/App_Code/Modelos.vb
@@ -2780,23 +2780,17 @@ Namespace Modelos
Next
- End If
-
- If DtRemisionesRelacionadas Is Nothing Then
- If ObjVentas.GetRemisionesRelacionadas(ObjFactura.CveVenta, ObjFactura.TipoDocto) AndAlso ObjVentas.DtResultados.Rows.Count > 0 Then
- DtRemisionesRelacionadas = ObjVentas.DtResultados.Copy()
- End If
+ End If
+
+ If ObjFactura.RemisionesLista.Count = 0 AndAlso (DtRemisionesRelacionadas IsNot Nothing AndAlso DtRemisionesRelacionadas.Rows.Count > 0) Then
+ For Each Row As DataRow In DtRemisionesRelacionadas.Rows
+ ObjFactura.RemisionesLista.Add(Row("CveVenta").ToString().ToEntero())
+ Next
End If
'Si es Facturacion de una remision cancelamos, traspasamos saldos y agregamos evento a la bitacora
If (DtRemisionesRelacionadas IsNot Nothing AndAlso DtRemisionesRelacionadas.Rows.Count > 0) OrElse ObjFactura.RemisionesLista.Count > 0 Then
- If ObjFactura.RemisionesLista.Count = 0 AndAlso (DtRemisionesRelacionadas IsNot Nothing AndAlso DtRemisionesRelacionadas.Rows.Count > 0) Then
- For Each Row As DataRow In DtRemisionesRelacionadas.Rows
- ObjFactura.RemisionesLista.Add(Row("CveVenta").ToString().ToEntero())
- Next
- End If
-
If ObjFactura.RemisionesLista.Count > 0 Then
For Each CveRemision As Integer In RemisionesLista
If Not ObjConta.TraspasarSaldosRemision(CveRemision, ObjFactura.CvePrePoliza, ObjFactura.CveVenta) Then
@@ -2817,25 +2811,30 @@ Namespace Modelos
Exit For
End If
Next
- End If
-
- 'REGRESA SALDO A LAS REMISIONES QUE SE FACTURARON EN EL INGRESO QUE SE ESTA CANCELANDO
- If ObjFactura.TipoDocto = "Ing" And ValorMultiplicador = -1 AndAlso NuevaFactura <> 1 AndAlso Not SeCancelaRemisionProceso Then ' se debe de excluir cuando es refacturación
- For Each Dr As DataRow In DtRemisionesRelacionadas.Rows
-
- Dim DebeCancelar As Boolean = CancelarRemisiones AndAlso ListaRemisionesCancelar.Any(Function(CveRemision) CveRemision = Dr("CveVenta").ToString.ToEntero())
-
- If Not DebeCancelar Then
- If Not ObjConta.TraspasarSaldosRemision(Dr("CveVenta").ToString.ToEntero, ObjFactura.CvePrePoliza, ObjFactura.CveVenta, 1) Then
- ErrorPrepoliza = True
- End If
- If Not ObjEventos.AddEventoBitacora($"Facturación cancelada en: {ObjFactura.Folio}", "-1", UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, CveVenta:=Dr("CveVenta").ToString.ToEntero) Then
- ErrorPrepoliza = True
- End If
- End If
- Next
End If
-
+ End If
+
+ If DtRemisionesRelacionadas Is Nothing Then
+ If ObjVentas.GetRemisionesRelacionadas(ObjFactura.CveVenta, ObjFactura.TipoDocto) AndAlso ObjVentas.DtResultados.Rows.Count > 0 Then
+ DtRemisionesRelacionadas = ObjVentas.DtResultados.Copy()
+ End If
+ End If
+
+ 'REGRESA SALDO A LAS REMISIONES QUE SE FACTURARON EN EL INGRESO QUE SE ESTA CANCELANDO
+ If ObjFactura.TipoDocto = "Ing" And ValorMultiplicador = -1 AndAlso NuevaFactura <> 1 AndAlso Not SeCancelaRemisionProceso AndAlso DtRemisionesRelacionadas IsNot Nothing Then ' se debe de excluir cuando es refacturación
+ For Each Dr As DataRow In DtRemisionesRelacionadas.Rows
+
+ Dim DebeCancelar As Boolean = CancelarRemisiones AndAlso ListaRemisionesCancelar.Any(Function(CveRemision) CveRemision = Dr("CveVenta").ToString.ToEntero())
+
+ If Not DebeCancelar Then
+ If Not ObjConta.TraspasarSaldosRemision(Dr("CveVenta").ToString.ToEntero, ObjFactura.CvePrePoliza, ObjFactura.CveVenta, 1) Then
+ ErrorPrepoliza = True
+ End If
+ If Not ObjEventos.AddEventoBitacora($"Facturación cancelada en: {ObjFactura.Folio}", "-1", UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, CveVenta:=Dr("CveVenta").ToString.ToEntero) Then
+ ErrorPrepoliza = True
+ End If
+ End If
+ Next
End If
@@ -3583,6 +3582,13 @@ Namespace Modelos
Dim TieneAlmacen As Boolean = False
+ If ObjFactura.SaldoAlmacen <> 0 Then
+ Retorno.Mensaje = "El pedido no se puede cancelar ya que tiene movimientos de almacén.
Nota: Primero hay que hacer la devolución al almacén."
+ Retorno.TipoMensaje = TipoMensaje.MsgAdvertencia
+
+ Return Retorno
+ End If
+
'VALIDA QUE LA FACTURA NO TENGA PAGOS
If ObjFactura.TipoDocto.Contiene("Ing", "Rem") AndAlso ObjFactura.Pagado > 0 Then
Retorno.Mensaje = "La factura no se puede cancelar debido a que tiene pagos vinculados."
@@ -3608,7 +3614,7 @@ Namespace Modelos
End If
'LA VALIDACION DE SALDOS CUANDO ES REFACTURACION SE HACE ANTES ASI QUE SI ES REFACTURACION IGNORAMOS ESTA CONDICION, SI ES ANTICIPO VERIFICA QUE NO ESTÉ APLICADO
- If ObjFactura.TipoDocto = "Ant" AndAlso ObjFactura.Pagado > 0 AndAlso DTDocumentosRelacionados.Rows.Count > 0 Then
+ If ObjFactura.TipoDocto.Contiene("Ing", "Ant", "Rem") AndAlso ObjFactura.Pagado > 0 AndAlso DTDocumentosRelacionados.Rows.Count > 0 Then
Retorno.Mensaje = "La factura no se puede cancelar debido a que tiene pagos vinculados."
Retorno.TipoMensaje = TipoMensaje.MsgAdvertencia
@@ -3670,7 +3676,7 @@ Namespace Modelos
Dim RevivirRemisiones = Not EsRefacturacion AndAlso ((TieneRemisionesRelacionadas AndAlso ListaRemisionesCancelar Is Nothing) OrElse (DtRemisionesRelacionadas.Rows.Count > ListaRemisionesCancelar.Count))
'REMISION YA SE DEBE HACER POR EL PROCESO DE DEVOLUCION DE ALMACEN
- If Not EsRefacturacion AndAlso (ObjFactura.SaldoAlmacen > 0 AndAlso ObjFactura.EsDevolucionVenta.Contiene(0, 1)) AndAlso Not RealizarDevolucionAlmacen And RevivirRemisiones = False Then
+ If Not EsRefacturacion AndAlso (ObjFactura.SaldoAlmacen <> 0 AndAlso ObjFactura.EsDevolucionVenta.Contiene(0, 1)) AndAlso Not RealizarDevolucionAlmacen And RevivirRemisiones = False Then
Retorno.Mensaje = "La factura no se puede cancelar debido a que tiene movimientos de inventario."
Retorno.TipoMensaje = TipoMensaje.MsgAdvertencia
@@ -4190,7 +4196,8 @@ Namespace Modelos
End If
- Dim CveEstatusRefacturacion As Integer = 0
+ Dim CveEstatusRefacturacion As Integer = If(ObjFactura.CveEstatusRefacturacion <= 0, 0, ObjFactura.CveEstatusRefacturacion)
+
'ACTUALIZA ESTATUS
If Not ErrorCancelar Then
Select Case ObjFactura.TipoDocto
@@ -4208,11 +4215,17 @@ Namespace Modelos
End If
End If
-
- 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")) Then
- ErrorCancelar = True
- MensajeError = "Ocurrió un error al guardar el estatus de cancelación."
+ If CveEstatus.Contiene(4, 5) Then
+ If Not ObjVentas.UpdateCancelaVenta(CveVenta, CancelacionFecha, CancelacionAcuse, UsuarioActual.CveEmpresa, CvePACCancelacion) 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")) Then
+ ErrorCancelar = True
+ MensajeError = "Ocurrió un error al guardar el estatus de cancelación."
+ End If
End If
If CancelarRemisiones Then
@@ -4701,8 +4714,8 @@ Namespace Modelos
#End Region
-#Region "P R O P I E D A D E S"
-
+#Region "P R O P I E D A D E S"
+ Public Property CveEstatusRefacturacion 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 e6643891b..f5bf8561c 100644
--- a/Ventas/Ventas.aspx.vb
+++ b/Ventas/Ventas.aspx.vb
@@ -17448,7 +17448,11 @@ Partial Class Ventas
If resp.CveEstatus = 5 Then
Alert(resp.Mensaje, resp.TipoMensaje, JSBtnAceptar:="BtnEnviarMailCancelacion();", TextoConfirmacion:=" Si ", TextoCancelacion:=" No> ")
Else
- Alert(resp.Mensaje, resp.TipoMensaje, JSBtnAceptar:="BtnRefrescarPagina();")
+ If Not EsRefacturacion Then
+ Alert(resp.Mensaje, resp.TipoMensaje, JSBtnAceptar:="BtnRefrescarPagina();")
+ Else
+ Response.Redirect($"/Ventas/RepCancelacionesPorRespuesta.aspx?CveVenta={Me.CveVenta}")
+ End If
End If
ObjFactura.CveAlmacen = -1