Guardar estado de cancelacion al cancelar/refacturar

This commit is contained in:
2022-02-13 19:16:56 -07:00
parent 71ce48dc56
commit bc25b6eb97
3 changed files with 63 additions and 17 deletions

View File

@@ -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, 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 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 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 Dim Retorno As Boolean = False
DataAdapter("PA_VentasUpdateEstatus") DataAdapter("PA_VentasUpdateEstatus")
@@ -765,6 +766,7 @@ Public Class ClsVentas
.Add("@CveMotivoCancelacion", SqlDbType.Int).Value = CveMotivoCancelacion .Add("@CveMotivoCancelacion", SqlDbType.Int).Value = CveMotivoCancelacion
.Add("@MotivoCancelacion", SqlDbType.VarChar).Value = MotivoCancelacion .Add("@MotivoCancelacion", SqlDbType.VarChar).Value = MotivoCancelacion
.Add("@EstadoCancelacion", SqlDbType.VarChar).Value = EstadoCancelacion .Add("@EstadoCancelacion", SqlDbType.VarChar).Value = EstadoCancelacion
.Add("@CveEstadoCancelacion", SqlDbType.TinyInt).Value = CveEstadoCancelacion
End With End With
Try Try
@@ -855,7 +857,7 @@ Public Class ClsVentas
Return Retorno Return Retorno
End Function 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 Dim Retorno As Boolean = False
DataAdapter("PA_Vta_VentasCancelacion") DataAdapter("PA_Vta_VentasCancelacion")
@@ -868,6 +870,7 @@ Public Class ClsVentas
.Add("@CvePAC", SqlDbType.SmallInt).Value = CvePAC .Add("@CvePAC", SqlDbType.SmallInt).Value = CvePAC
.Add("@CveEstatusRefacturacion", SqlDbType.TinyInt).Value = CveEstatusRefacturacion .Add("@CveEstatusRefacturacion", SqlDbType.TinyInt).Value = CveEstatusRefacturacion
.Add("@EstadoCancelacion", SqlDbType.VarChar).Value = EstadoCancelacion .Add("@EstadoCancelacion", SqlDbType.VarChar).Value = EstadoCancelacion
.Add("@CveEstadoCancelacion", SqlDbType.TinyInt).Value = CveEstadoCancelacion
.Add("@Cancelada", SqlDbType.SmallInt).Direction = ParameterDirection.Output .Add("@Cancelada", SqlDbType.SmallInt).Direction = ParameterDirection.Output
End With End With

View File

@@ -4636,8 +4636,8 @@ Namespace Modelos
''' Cancela la factura para poder realizar la refacturacion ''' Cancela la factura para poder realizar la refacturacion
''' </summary> ''' </summary>
''' <returns></returns> ''' <returns></returns>
Public Function CancelarPorRefacturacion(CveMotivoCancelacion As Integer, Motivo As String, Optional FolioSustitucion As String = "", Optional ValidarSAT As Boolean = False) As MCancelacionVentaMensaje 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) Return CancelarVenta(Me, Me.UsuarioActual, EsRefacturacion:=True, CveMotivoCancelacion:=CveMotivoCancelacion, MotivoCancelacion:=Motivo, FolioSustitucion:=FolioSustitucion, ValidarSAT:=ValidarSAT, CveEstadoCancelacion:=CveEstadoCancelacion)
End Function End Function
''' <summary> ''' <summary>
''' Cancela la factura y realiza las operaciones correspondientes ''' Cancela la factura y realiza las operaciones correspondientes
@@ -4645,15 +4645,15 @@ Namespace Modelos
''' <param name="RealizarDevolucionAlmacen"></param> ''' <param name="RealizarDevolucionAlmacen"></param>
''' <param name="ListaRemisionesCancelar"></param> ''' <param name="ListaRemisionesCancelar"></param>
''' <returns></returns> ''' <returns></returns>
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 '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 End Function
Private Function CancelarVenta(ObjFactura As Modelos.Factura, UsuarioActual As Usuario, Optional EsRefacturacion As Boolean = False, Optional RealizarDevolucionAlmacen As Boolean = False, 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 ListaRemisionesCancelar As List(Of Integer) = Nothing, Optional CveEstatusFacturaAsignado As Integer = -1, Optional FechaCancelacion As String = "-1",
Optional FechaCancelacion As String = "-1", Optional AcuseCancelacion As String = "", Optional AcuseCancelacion As String = "", Optional CveMotivoCancelacion As Integer = -1, Optional MotivoCancelacion As String = "",
Optional CveMotivoCancelacion As Integer = -1, Optional MotivoCancelacion As String = "", Optional FolioSustitucion As String = "", Optional ValidarSAT As Boolean = True) As MCancelacionVentaMensaje Optional FolioSustitucion As String = "", Optional ValidarSAT As Boolean = True, Optional CveEstadoCancelacion As Integer = 0) As MCancelacionVentaMensaje
Dim Retorno As New MCancelacionVentaMensaje() Dim Retorno As New MCancelacionVentaMensaje()
Dim ErrorList As New List(Of String) Dim ErrorList As New List(Of String)
@@ -4801,6 +4801,7 @@ Namespace Modelos
Dim CveEstatusRefacturacion As Integer = If(ObjFactura.CveEstatusRefacturacion <= 0, 0, ObjFactura.CveEstatusRefacturacion) Dim CveEstatusRefacturacion As Integer = If(ObjFactura.CveEstatusRefacturacion <= 0, 0, ObjFactura.CveEstatusRefacturacion)
If Not EsRefacturacion Then If Not EsRefacturacion Then
CveEstatusRefacturacion = 0 CveEstatusRefacturacion = 0
End If End If
@@ -4828,7 +4829,7 @@ Namespace Modelos
Dim Continuar As Boolean = False Dim Continuar As Boolean = False
Dim ContinuarCancelacion As Boolean = False Dim ContinuarCancelacion As Boolean = False
Dim ObtenerAcuse As Boolean = False Dim ObtenerAcuse As Boolean = False
Dim RequiereAceptacion As Boolean = False Dim RequiereAceptacion As Boolean = True
Dim Mensaje As String = "" Dim Mensaje As String = ""
Dim CveSATMotivoCancelacion As Integer = -1 Dim CveSATMotivoCancelacion As Integer = -1
@@ -4845,6 +4846,14 @@ Namespace Modelos
CveEstatusFacturaAsignado = 23 CveEstatusFacturaAsignado = 23
End If 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 If CveEstatusFacturaAsignado <= 0 Then
Try Try
If ObjFactura.FolioFiscal <> "" AndAlso (UsuarioActual.Empresa.FacturaProduccion OrElse UsuarioActual.CveEmpresa = 1) Then 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 If Vigencia.EstatusCancelacion.ToUpper() = "EN PROCESO" Then
CveEstatus = 20 CveEstatus = 20
ContinuarCancelacion = False ContinuarCancelacion = False
RequiereAceptacion = True
ElseIf Vigencia.EsCancelable.ToUpper() = "CANCELABLE CON ACEPTACIÓN" Then ElseIf Vigencia.EsCancelable.ToUpper() = "CANCELABLE CON ACEPTACIÓN" Then
CveEstatus = 20 CveEstatus = 20
ContinuarCancelacion = True ContinuarCancelacion = True
RequiereAceptacion = True RequiereAceptacion = True
ElseIf Vigencia.EsCancelable.ToUpper() = "CANCELABLE SIN ACEPTACIÓN" Then ElseIf Vigencia.EsCancelable.ToUpper() = "CANCELABLE SIN ACEPTACIÓN" Then
ContinuarCancelacion = True ContinuarCancelacion = True
RequiereAceptacion = False
CveEstatus = 5 CveEstatus = 5
End If End If
Else Else
If Vigencia.EsCancelable.ToUpper() = "CANCELABLE SIN ACEPTACIÓN" Then If Vigencia.EsCancelable.ToUpper() = "CANCELABLE SIN ACEPTACIÓN" Then
ContinuarCancelacion = True ContinuarCancelacion = True
RequiereAceptacion = False
CveEstatus = 5 CveEstatus = 5
Else Else
CveEstatus = 20 CveEstatus = 20
ContinuarCancelacion = False ContinuarCancelacion = False
RequiereAceptacion = True
CancelacionFecha = Now.Date CancelacionFecha = Now.Date
CancelacionAcuse = "" CancelacionAcuse = ""
End If End If
@@ -4951,10 +4964,19 @@ Namespace Modelos
CancelacionFecha = Now.Date CancelacionFecha = Now.Date
CancelacionAcuse = "" 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 If ObjFactura.Total < 1000D OrElse diasTimbrado <= 1 OrElse ObjFactura.Cliente.RFC.Contiene("XAXX010101000", "XEXX010101000") Then
RequiereAceptacion = False RequiereAceptacion = False
End If
End If End If
End If End If
@@ -5596,13 +5618,14 @@ Namespace Modelos
If CveEstatus.Contiene(4, 5) Then 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 ErrorCancelar = True
MensajeError = "Ocurrió un error al guardar el estatus de cancelación." MensajeError = "Ocurrió un error al guardar el estatus de cancelación."
End If End If
Else Else
If Not ObjVentas.UpdateEstatusFactura(CveEstatus, FolioFiscal, CancelacionAcuse, CancelacionFecha, CveVenta, IDPoliza, CvePAC:=CvePACCancelacion, CveEstatusRefacturacion:=CveEstatusRefacturacion, 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 ErrorCancelar = True
MensajeError = "Ocurrió un error al guardar el estatus de cancelación." MensajeError = "Ocurrió un error al guardar el estatus de cancelación."
End If End If
@@ -6257,6 +6280,7 @@ Namespace Modelos
Public Property RFCReceptor As String = "" Public Property RFCReceptor As String = ""
Public Property ServicioDomicilio As Boolean Public Property ServicioDomicilio As Boolean
Public Property CveEstatusRefacturacion As Integer = 0 Public Property CveEstatusRefacturacion As Integer = 0
Public Property CveEstadoCancelacion As Integer = 0
Public Property NuevaFactura As Integer Public Property NuevaFactura As Integer
Public Property EnviarCorreo As Boolean = False Public Property EnviarCorreo As Boolean = False
Public Property ErrorList As List(Of String) Public Property ErrorList As List(Of String)

View File

@@ -1267,6 +1267,15 @@ Partial Class Ventas
End Set End Set
End Property 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 Private Property PermiteCredito As Boolean
Get Get
Return If(IsNothing(ViewState("PermiteCredito")), False, CBool(ViewState("PermiteCredito"))) Return If(IsNothing(ViewState("PermiteCredito")), False, CBool(ViewState("PermiteCredito")))
@@ -2253,6 +2262,7 @@ Partial Class Ventas
SeCancelaRemisionProceso = False SeCancelaRemisionProceso = False
TotalOriginal = 0 TotalOriginal = 0
CveAlmacenDevolucion = 0 CveAlmacenDevolucion = 0
Me.CveEstadoCancelacion = 0
txtFechaICot.Text = Now.AddMonths(-3).ToShortDateString txtFechaICot.Text = Now.AddMonths(-3).ToShortDateString
TxtFechaIRem.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 If Vigencia.EsCancelable = "Cancelable sin aceptación" Then
'script = "BtnRefacturacionConfirmarAceptacion();" 'script = "BtnRefacturacionConfirmarAceptacion();"
Me.CveEstadoCancelacion = 1
sb.AppendFormat("<b>{0}</b> <br/>", Vigencia.EsCancelable) sb.AppendFormat("<b>{0}</b> <br/>", Vigencia.EsCancelable)
sb.Append("Está seguro de realizar la refacturación?.") sb.Append("Está seguro de realizar la refacturación?.")
End If End If
If Vigencia.EsCancelable = "Cancelable con aceptación" OrElse String.IsNullOrEmpty(Vigencia.EsCancelable) Then If Vigencia.EsCancelable = "Cancelable con aceptación" OrElse String.IsNullOrEmpty(Vigencia.EsCancelable) Then
'script = "BtnRefacturacionConfirmar();" 'script = "BtnRefacturacionConfirmar();"
Me.CveEstadoCancelacion = 2
sb.AppendFormat("<b>{0}</b> <br/>", "Cancelable con aceptación") sb.AppendFormat("<b>{0}</b> <br/>", "Cancelable con aceptación")
sb.Append("Está seguro de cancelar el documento para realizar la refacturación?.") sb.Append("Está seguro de cancelar el documento para realizar la refacturación?.")
End If End If
@@ -23449,6 +23461,13 @@ Partial Class Ventas
sb.Append("<b>No encontrado</b> <br/>") sb.Append("<b>No encontrado</b> <br/>")
sb.Append("Está seguro de cancelar el documento?.") sb.Append("Está seguro de cancelar el documento?.")
Else 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("<b>{0}</b> <br/>", Vigencia.EsCancelable) sb.AppendFormat("<b>{0}</b> <br/>", Vigencia.EsCancelable)
If Vigencia.EsCancelable.ToUpper() <> "NO CANCELABLE" Then If Vigencia.EsCancelable.ToUpper() <> "NO CANCELABLE" Then
sb.Append("Está seguro de cancelar el documento?.") 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.AddEventoBitacora(msgBitacora, "", UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, CveVenta:=CveVenta)
'ObjE.Dispose() 'ObjE.Dispose()
resp = ObjFacturaCancelacion.CancelarPorRefacturacion(DdlMotivoRefacturacion.SelectedValue.ToEntero(), TxtMotivoRefac.Text.Trim()) resp = ObjFacturaCancelacion.CancelarPorRefacturacion(DdlMotivoRefacturacion.SelectedValue.ToEntero(), TxtMotivoRefac.Text.Trim(), CveEstadoCancelacion:=Me.CveEstadoCancelacion)
Else Else
Dim ListaRemisionesCancelar As New List(Of Integer) Dim ListaRemisionesCancelar As New List(Of Integer)
If ChkCanRem.Checked Then If ChkCanRem.Checked Then
@@ -23649,7 +23668,7 @@ Partial Class Ventas
ObjFacturaCancelacion.CveAlmacenDevolucion = CveAlmacenDevolucion 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 End If
SWatch.Stop() SWatch.Stop()