diff --git a/App_Code/Modelos.vb b/App_Code/Modelos.vb index 20b07a50d..283f93c50 100644 --- a/App_Code/Modelos.vb +++ b/App_Code/Modelos.vb @@ -347,6 +347,12 @@ Namespace Modelos #Region " OBJETOS Ventas" + Public Enum OpcionesCancelacionPagos + SinPagos = 1 + ConPagos_CancelarIE = 2 + ConPagos_GenerarIxC = 3 + End Enum + Public Class MPrecioSugerido Public Property CvePrecioLista As Integer @@ -3062,9 +3068,10 @@ Namespace Modelos Optional ValorMultiplicador As Integer = 1, ByRef Optional ObjBancos As ClsBancos = Nothing, ByRef Optional ObjVentas As ClsVentas = Nothing, ByRef Optional ObjEventos As ClsOIEventos = Nothing, Optional ByRef DtRemisionesRelacionadas As DataTable = Nothing, Optional SeCancelaRemisionProceso As Boolean = False, Optional CancelarRemisiones As Boolean = False, Optional ListaRemisionesCancelar As List(Of Integer) = Nothing, Optional CveEstatusRefacturacion As Integer = 0, Optional ByRef ObjInventario As ClsInventarios = Nothing, Optional FechaCancelacion As DateTime = MinFecha, Optional ObjClientes As ClsClientes = Nothing, - Optional AplicaCancelacionConPagos As Boolean = False, Optional GeneraIxCconPago As Boolean = False) As Boolean + Optional CancelacionPagos As OpcionesCancelacionPagos = OpcionesCancelacionPagos.SinPagos) As Boolean Dim ErrorPrepoliza As Boolean = False Try + Dim AplicaCancelacionConPagos As Boolean = (CancelacionPagos = OpcionesCancelacionPagos.ConPagos_CancelarIE OrElse CancelacionPagos = OpcionesCancelacionPagos.ConPagos_GenerarIxC) If ObjFactura.TipoDocto.Contiene("Ing", "Rem") AndAlso AplicaCancelacionConPagos AndAlso ValorMultiplicador = -1 Then Dim DtPagosVenta As DataTable = Nothing @@ -3088,21 +3095,27 @@ Namespace Modelos 'SI ES PAGO DE BANCOS, CANCELAR EL IE If DrPago("TipoPago").ToString() = "B" Then - If GeneraIxCconPago Then - 'RESTAR SALDOS APLICADOS - Dim ImporteIxC As Decimal = DrPago("Importe").ToString().ToDecimal() - Dim ImportePago As Decimal = ImporteIxC * -1 - If Not ObjConta.AddPrePolizasDetalle(ObjFactura.CvePrePoliza, True, ImportePago, ImportePago, 2, DrPago("Folio").ToString(), DrPago("Folio").ToString(), CveVenta:=ObjFactura.CveVenta, CveCliente:=ObjFactura.CveCliente, CveIE:=DrPago("CveIE").ToString().ToEntero(), ImporteME:=If(ObjFactura.TipoCambio = 1, 0, ImportePago), Contabilizable:=True, CveSubProyecto:=ObjFactura.CveSubProyecto) Then - ErrorPrepoliza = True - End If + 'RESTAR SALDOS APLICADOS + Select Case CancelacionPagos + Case OpcionesCancelacionPagos.ConPagos_GenerarIxC + Dim ImporteIxC As Decimal = DrPago("Importe").ToString().ToDecimal() + Dim ImportePago As Decimal = ImporteIxC * -1 - If Not ObjConta.AddPrePolizasDetalle(ObjFactura.CvePrePoliza, True, ImporteIxC, ImporteIxC, 66, DrPago("Folio").ToString(), DrPago("Folio").ToString(), CveVenta:=ObjFactura.CveVenta, CveCliente:=ObjFactura.CveCliente, CveIE:=DrPago("CveIE").ToString().ToEntero(), ImporteME:=If(ObjFactura.TipoCambio = 1, 0, ImporteIxC), Contabilizable:=True, CveSubProyecto:=ObjFactura.CveSubProyecto) Then + If Not ObjConta.AddPrePolizasDetalle(ObjFactura.CvePrePoliza, True, ImportePago, ImportePago, 2, DrPago("Folio").ToString(), DrPago("Folio").ToString(), CveVenta:=ObjFactura.CveVenta, CveCliente:=ObjFactura.CveCliente, CveIE:=DrPago("CveIE").ToString().ToEntero(), ImporteME:=If(ObjFactura.TipoCambio = 1, 0, ImportePago), Contabilizable:=True, CveSubProyecto:=ObjFactura.CveSubProyecto) Then + ErrorPrepoliza = True + End If + + If Not ObjConta.AddPrePolizasDetalle(ObjFactura.CvePrePoliza, True, ImporteIxC, ImporteIxC, 66, DrPago("Folio").ToString(), DrPago("Folio").ToString(), CveVenta:=ObjFactura.CveVenta, CveCliente:=ObjFactura.CveCliente, CveIE:=DrPago("CveIE").ToString().ToEntero(), ImporteME:=If(ObjFactura.TipoCambio = 1, 0, ImporteIxC), Contabilizable:=True, CveSubProyecto:=ObjFactura.CveSubProyecto) Then + ErrorPrepoliza = True + End If + + Case OpcionesCancelacionPagos.ConPagos_CancelarIE + ErrorPrepoliza = ObjBancos.CancelarBancos_IE(UsuarioActual.CveUsuario, DrPago("CveIE").ToString().ToEntero(), False, -1, -1, Now) <= 0 + Case OpcionesCancelacionPagos.SinPagos ErrorPrepoliza = True - End If - Else - ErrorPrepoliza = ObjBancos.CancelarBancos_IE(UsuarioActual.CveUsuario, DrPago("CveIE").ToString().ToEntero(), False, -1, -1, Now) <= 0 - End If + End Select + Else 'RESTAR SALDOS APLICADOS Dim Importe As Decimal = DrPago("Importe").ToString().ToDecimal() * -1 @@ -5639,7 +5652,7 @@ Namespace Modelos ''' ''' ''' - Public Function EjecutarCancelacionPendiente(CveEstatus As Integer, FechaCancelacion As DateTime, AcuseCancelacion As String, Optional ValidarSAT As Boolean = True, Optional AplicaCancelacionConPagos As Boolean = False) As MCancelacionVentaMensaje + Public Function EjecutarCancelacionPendiente(CveEstatus As Integer, FechaCancelacion As DateTime, AcuseCancelacion As String, Optional ValidarSAT As Boolean = True, Optional CancelacionPagos As OpcionesCancelacionPagos = OpcionesCancelacionPagos.SinPagos) As MCancelacionVentaMensaje Dim ListaRemisionesCancelar As New List(Of Integer) Dim ObjVentas As New ClsVentas() If ObjVentas.GetRemisionesXCancelar(Me.CveVenta) Then @@ -5649,7 +5662,7 @@ Namespace Modelos End If ObjVentas.Dispose() - Return CancelarVenta(Me, Me.UsuarioActual, RealizarDevolucionAlmacen:=Me.RealizarDevolucionAlmacen, ListaRemisionesCancelar:=ListaRemisionesCancelar, CveEstatusFacturaAsignado:=CveEstatus, FechaCancelacion:=FechaCancelacion.ToString("dd/MM/yyyy hh:mm:ss"), AcuseCancelacion:=AcuseCancelacion, CveMotivoCancelacion:=Me.CveMotivoCancelacion, MotivoCancelacion:=Me.MotivoCancelacion, ValidarSAT:=ValidarSAT, AplicaCancelacionConPagos:=AplicaCancelacionConPagos) + Return CancelarVenta(Me, Me.UsuarioActual, RealizarDevolucionAlmacen:=Me.RealizarDevolucionAlmacen, ListaRemisionesCancelar:=ListaRemisionesCancelar, CveEstatusFacturaAsignado:=CveEstatus, FechaCancelacion:=FechaCancelacion.ToString("dd/MM/yyyy hh:mm:ss"), AcuseCancelacion:=AcuseCancelacion, CveMotivoCancelacion:=Me.CveMotivoCancelacion, MotivoCancelacion:=Me.MotivoCancelacion, ValidarSAT:=ValidarSAT, CancelacionPagos:=CancelacionPagos) End Function ''' ''' Cancela la factura para poder realizar la refacturacion @@ -5664,16 +5677,16 @@ 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 AplicaCancelacionConPagos As Boolean = False, Optional GeneraIxCconPago As Boolean = False, Optional ForzarDevolucion As Boolean = False) 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) 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, AplicaCancelacionConPagos:=AplicaCancelacionConPagos, GeneraIxCconPago:=GeneraIxCconPago, ForzarDevolucion:=ForzarDevolucion) + Return CancelarVenta(Me, Me.UsuarioActual, RealizarDevolucionAlmacen:=RealizarDevolucionAlmacen, ListaRemisionesCancelar:=ListaRemisionesCancelar, CveMotivoCancelacion:=CveMotivoCancelacion, MotivoCancelacion:=Motivo, CveEstadoCancelacion:=CveEstadoCancelacion, CancelarBoletos:=CancelarBoletos, ForzarDevolucion:=ForzarDevolucion, CancelacionPagos:=CancelacionPagos) End Function Private Function CancelarVenta(ObjFactura As Modelos.Factura, UsuarioActual As Usuario, Optional EsRefacturacion As Boolean = False, Optional RealizarDevolucionAlmacen As Integer = 0, 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, - Optional CancelarBoletos As Boolean = False, Optional AplicaCancelacionConPagos As Boolean = False, Optional GeneraIxCconPago As Boolean = False, Optional ForzarDevolucion As Boolean = False) As MCancelacionVentaMensaje + Optional CancelarBoletos As Boolean = False, Optional ForzarDevolucion As Boolean = False, Optional CancelacionPagos As OpcionesCancelacionPagos = OpcionesCancelacionPagos.SinPagos) As MCancelacionVentaMensaje Dim Retorno As New MCancelacionVentaMensaje() Dim ErrorList As New List(Of String) @@ -5731,6 +5744,8 @@ Namespace Modelos AplicaRefacturacionConPagos = False End If + Dim AplicaCancelacionConPagos As Boolean = (CancelacionPagos = OpcionesCancelacionPagos.ConPagos_CancelarIE OrElse CancelacionPagos = OpcionesCancelacionPagos.ConPagos_GenerarIxC) + 'VALIDA QUE LA FACTURA NO TENGA PAGOS If Not AplicaRefacturacionConPagos AndAlso Not AplicaCancelacionConPagos AndAlso ObjFactura.TipoDocto.Contiene("Ing", "Rem") AndAlso ObjFactura.Pagado > 0 Then Retorno.Mensaje = "La factura no se puede cancelar debido a que tiene pagos vinculados." @@ -6173,7 +6188,7 @@ Namespace Modelos If Not ErrorCancelar Then ErrorCancelar = ProcesoPrepolizas(ObjFactura, ObjConta, -1, ObjFactura.DtDetalle, -1, ObjBancos, ObjVentas, ObjEventos, DtRemisionesRelacionadas:=DtRemisionesRelacionadas, SeCancelaRemisionProceso:=SeCancelaRemisionProceso, CancelarRemisiones:=CancelarRemisiones, ListaRemisionesCancelar:=ListaRemisionesCancelar, CveEstatusRefacturacion:=CveEstatusRefacturacion, ObjInventario:=ObjInventario, FechaCancelacion:=CancelacionFecha, - ObjClientes:=ObjClientes, AplicaCancelacionConPagos:=AplicaCancelacionConPagos, GeneraIxCconPago:=GeneraIxCconPago) + ObjClientes:=ObjClientes, CancelacionPagos:=CancelacionPagos) MensajeError = "Ocurrió un error al generar la prepoliza de cancelación." End If diff --git a/Ventas/RepCancelacionesPorRespuesta.aspx.cs b/Ventas/RepCancelacionesPorRespuesta.aspx.cs index ebbb2a994..62b89ba26 100644 --- a/Ventas/RepCancelacionesPorRespuesta.aspx.cs +++ b/Ventas/RepCancelacionesPorRespuesta.aspx.cs @@ -627,13 +627,19 @@ public partial class Ventas_RepCancelacionesPorRespuesta : ClsPaginas } } - bool AplicaCancelacionConPagos = false; - if (UsuarioActual.Empresa.Funcionalidad(382) == "1" || UsuarioActual.Empresa.Funcionalidad(109) == "1") + var CancelacionPagos = Modelos.OpcionesCancelacionPagos.SinPagos; + + if (UsuarioActual.Empresa.Funcionalidad(109) == "1") { - AplicaCancelacionConPagos = true; + CancelacionPagos = Modelos.OpcionesCancelacionPagos.ConPagos_CancelarIE; } - retorno = factura.EjecutarCancelacionPendiente(CveEstatus, CancelacionFecha, CancelacionAcuse, AplicaCancelacionConPagos: AplicaCancelacionConPagos); + if (UsuarioActual.Empresa.Funcionalidad(382) == "1") + { + CancelacionPagos = Modelos.OpcionesCancelacionPagos.ConPagos_GenerarIxC; + } + + retorno = factura.EjecutarCancelacionPendiente(CveEstatus, CancelacionFecha, CancelacionAcuse, CancelacionPagos: CancelacionPagos); } @@ -722,11 +728,6 @@ public partial class Ventas_RepCancelacionesPorRespuesta : ClsPaginas // if (e.Row.FCLinkButton("LnkCancelarFolioSustitucion") != null) e.Row.FCLinkButton("LnkCancelarFolioSustitucion").Visible = true; //} } - - if (string.IsNullOrEmpty(e.Row.DBCampo("FolioFiscal"))) - { - e.Row.FCLinkButton("LnkValidarRefac").Visible = false; - } } } diff --git a/Ventas/Ventas.aspx b/Ventas/Ventas.aspx index c62834433..c8aefa58c 100644 --- a/Ventas/Ventas.aspx +++ b/Ventas/Ventas.aspx @@ -8174,11 +8174,6 @@ -
-
- -
-