diff --git a/Ventas/RepCancelacionesPorRespuesta.aspx.cs b/Ventas/RepCancelacionesPorRespuesta.aspx.cs index e9cc454a2..f324421c8 100644 --- a/Ventas/RepCancelacionesPorRespuesta.aspx.cs +++ b/Ventas/RepCancelacionesPorRespuesta.aspx.cs @@ -600,11 +600,13 @@ public partial class Ventas_RepCancelacionesPorRespuesta : ClsPaginas // - if (e.Row.DBCampo("PuedeRefacturar").ToString().ToEntero() == 1 && e.Row.DBCampo("CveEstatusFactura").ToString().ToEntero() == 23) + if (e.Row.DBCampo("CveEstatusFactura").ToString().ToEntero() == 23) { e.Row.FCLinkButton("LnkValidarRefac").Visible = false; } + + if (e.Row.DBCampo("PuedeRefacturar") == "0" && e.Row.DBCampo("CveEstatusFactura") == "23" && e.Row.DBCampo("CveVentaSustitucion").ToEntero() > 0) { if (e.Row.FCLinkButton("LnkCancelar") != null) e.Row.FCLinkButton("LnkCancelar").Visible = true; diff --git a/Ventas/Ventas.aspx.vb b/Ventas/Ventas.aspx.vb index 4e6534939..9cdd0675a 100644 --- a/Ventas/Ventas.aspx.vb +++ b/Ventas/Ventas.aspx.vb @@ -18310,8 +18310,8 @@ Partial Class Ventas Return False End If - If PU <= 0 AndAlso UsuarioActual.Empresa.Funcionalidad(558) = "1" Then - Alert("El precio debe ser mayor a 0", TipoMensaje.MsgAdvertencia) + If PU <= 0 Then + Alert("No se puede vender a un importe de cero", TipoMensaje.MsgAdvertencia) Return False End If @@ -18323,10 +18323,10 @@ Partial Class Ventas ObjVentas.Dispose() 'VALIDA PRECIO CERO (0) - If UsuarioActual.Empresa.Funcionalidad(139).ToString().ToEntero() > 0 And PU = 0 And DtPromociones.FiltroPrimeroValor("PUPromocion", $"CvePS = {CvePS}").ToDecimal > 0 Then - Alert($"El producto {HdnPS.Value}. No se puede vender a un importe de cero ($0)", TipoMensaje.MsgAdvertencia) - Return False - End If + 'If UsuarioActual.Empresa.Funcionalidad(139).ToString().ToEntero() > 0 And PU = 0 And DtPromociones.FiltroPrimeroValor("PUPromocion", $"CvePS = {CvePS}").ToDecimal > 0 Then + ' Alert($"El producto {HdnPS.Value}. No se puede vender a un importe de cero ($0)", TipoMensaje.MsgAdvertencia) + ' Return False + 'End If 'SI NO TIENE LA FUNCIONALIDAD VALIDARA LAS MONEDAS If UsuarioActual.Empresa.Funcionalidad(524) <> "" Then @@ -23659,16 +23659,44 @@ Partial Class Ventas Protected Sub LBDevolucionAlmacen_Click(sender As Object, e As EventArgs) Dim SaldoAlmacen As Decimal = 0 - Dim ObjVentas As New ClsVentas - If ObjVentas.GetVenta(CveVenta, UsuarioActual.CveEmpresa, VerificaAlmacen:=True) Then - If ObjVentas.DtResultados.Rows.Count > 0 Then - Dim DbRowVenta As DataRow = ObjVentas.DtResultados.Rows(0) - Me.DevolucionAlmacen = DbRowVenta("EsDevolucionVenta").ToString().ToEntero() - SaldoAlmacen = DbRowVenta("SaldoAlmacen").ToString().ToDecimal() + Dim ErrorVerificacion As Boolean = False + + Using ObjInv As New ClsInventarios + If ObjInv.GetInv_Mov(CveVenta, UsuarioActual.CveEmpresa) Then + If ObjInv.DtResultados.Rows.Count > 0 Then + TieneAlmacen = True + End If + Else + ErrorVerificacion = True End If + End Using + + If ErrorVerificacion Then + Alert("No se pudieron verificar los movimientos de almacen del documento.", TipoMensaje.MsgError) + Exit Sub End If - If SaldoAlmacen >= 0 Then + If Not TieneAlmacen Then + Alert("El documento no tiene movimientos de almacen.", TipoMensaje.MsgAdvertencia) + Exit Sub + End If + + Using ObjVentas As New ClsVentas + If ObjVentas.GetVenta(CveVenta, UsuarioActual.CveEmpresa, VerificaAlmacen:=True) Then + If ObjVentas.DtResultados.Rows.Count > 0 Then + Dim DbRowVenta As DataRow = ObjVentas.DtResultados.Rows(0) + Me.DevolucionAlmacen = DbRowVenta("EsDevolucionVenta").ToString().ToEntero() + SaldoAlmacen = DbRowVenta("SaldoAlmacen").ToString().ToDecimal() + End If + End If + End Using + + If DdlTipoComprobante.SelectedValue.ToString() = "Rem" AndAlso SaldoAlmacen = 0 Then + Alert("El documento ya fue devuelto.", TipoMensaje.MsgAdvertencia) + Exit Sub + End If + + If DdlTipoComprobante.SelectedValue.ToString() = "Ing" AndAlso SaldoAlmacen = 0 Then Alert("El movimiento ya fue devuelto.", TipoMensaje.MsgAdvertencia) Exit Sub End If @@ -23676,17 +23704,17 @@ Partial Class Ventas If Me.DevolucionAlmacen.Contiene(2) Then InicializaDevolucionAlmacen() UpnTools.Update() - ObjVentas.Dispose() Alert("El movimiento ya fue devuelto.", TipoMensaje.MsgAdvertencia) Exit Sub End If Dim EstatusDevolucion = If(Me.DevolucionAlmacen = 0, 1, 0) - If ObjVentas.UpdateVentasDevolucionAlmacen(EstatusDevolucion, CveVenta) Then + Dim ObjV As New ClsVentas + If ObjV.UpdateVentasDevolucionAlmacen(EstatusDevolucion, CveVenta) Then Alert("La solicitud de Devolución de Almacén se guardó correctamente") End If - ObjVentas.Dispose() + ObjV.Dispose() Me.DevolucionAlmacen = EstatusDevolucion @@ -24678,28 +24706,9 @@ Partial Class Ventas End Sub Private Sub LbCancelarDocumento_Click(sender As Object, e As EventArgs) Handles LbCancelarDocumento.Click + Dim SaldoAlmacen As Decimal = 0 - If DdlTipoComprobante.SelectedValue.Contiene("Ing", "Ant", "Dev", "Egs") Then - - Dim sb As New StringBuilder() - Dim sbExtra As New StringBuilder() - sb.Append("La factura se encuentra en el siguiente estatus del SAT:
") - - Dim TotalT As Decimal = TxtTotal.Text.ToDecimal - Dim RFCReceptor As String = "" - - If String.IsNullOrEmpty(Me.RFCReceptorVenta) Then - RFCReceptor = LblRFC.Text.Trim - - 'SI SE FACTURO LA SUCURSAL DEL CLIENTE TOMA EL RFC DE ESTA - If FacturarSucursal AndAlso Me.ClienteSucursal IsNot Nothing Then - RFCReceptor = Me.ClienteSucursal.RFC - End If - Else - RFCReceptor = Me.RFCReceptorVenta - End If - - Dim SaldoAlmacen As Decimal = 0 + If DdlTipoComprobante.SelectedValue.Contiene("Ing", "Rem", "Dev") Then Dim PermiteCancelar As Boolean = True Using ObjVentas As New ClsVentas @@ -24722,12 +24731,41 @@ Partial Class Ventas Else PermiteCancelar = False End If + + If PermiteCancelar And SaldoVenta <> 0 Then + If UsuarioActual.TienePermisoProceso(269) AndAlso Not DevolucionAlmacen = 2 Then + DivDevAlm.Visible = True + TieneAlmacen = True + End If + End If + End Using If Not PermiteCancelar Then Alert("La venta no se puede cancelar si no ha sido surtida previamente", TipoMensaje.MsgAdvertencia) Exit Sub End If + End If + + If DdlTipoComprobante.SelectedValue.Contiene("Ing", "Ant", "Dev", "Egs") Then + + Dim sb As New StringBuilder() + Dim sbExtra As New StringBuilder() + sb.Append("La factura se encuentra en el siguiente estatus del SAT:
") + + Dim TotalT As Decimal = TxtTotal.Text.ToDecimal + Dim RFCReceptor As String = "" + + If String.IsNullOrEmpty(Me.RFCReceptorVenta) Then + RFCReceptor = LblRFC.Text.Trim + + 'SI SE FACTURO LA SUCURSAL DEL CLIENTE TOMA EL RFC DE ESTA + If FacturarSucursal AndAlso Me.ClienteSucursal IsNot Nothing Then + RFCReceptor = Me.ClienteSucursal.RFC + End If + Else + RFCReceptor = Me.RFCReceptorVenta + End If Dim SWatch As New Stopwatch @@ -25042,7 +25080,7 @@ Partial Class Ventas ' CancelarRefacturada() 'End If - Dim ObjFacturaCancelacion As New Modelos.Factura(UsuarioActual, CveVenta, UsuarioActual.CveEmpresa, EsCancelacion:=True) + Dim ObjFacturaCancelacion As New Modelos.Factura(UsuarioActual, CveVenta, UsuarioActual.CveEmpresa, EsCancelacion:=True, VerificaAlmacen:=True) Try Dim resp As Modelos.Factura.MCancelacionVentaMensaje = Nothing Dim strMensaje As New StringBuilder()