From 99b731ec4dd9178d9f5d5f6206a5214abf400832 Mon Sep 17 00:00:00 2001 From: Jonathan Alexis Perez Morales Date: Thu, 28 May 2020 17:15:53 -0700 Subject: [PATCH] =?UTF-8?q?Surtir=20refacturaci=C3=B3n=20parcial=20o=20tot?= =?UTF-8?q?al?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- App_Code/ClsInventarios.vb | 36 +++++++++++++++++++++++++++ App_Code/Modelos.vb | 16 ++++++++++-- Ventas/Ventas.aspx.vb | 50 ++++++++++++++++++++++---------------- 3 files changed, 79 insertions(+), 23 deletions(-) diff --git a/App_Code/ClsInventarios.vb b/App_Code/ClsInventarios.vb index ffbec5e23..c3e594665 100644 --- a/App_Code/ClsInventarios.vb +++ b/App_Code/ClsInventarios.vb @@ -2942,6 +2942,24 @@ Public Class ClsInventarios Return Retorno End Function + Public Function UpdateEstatusAlmacen(CveVentaDetalle As Integer, Valor As Integer) As Boolean + Dim Retorno As Boolean = False + DataAdapter("Vta_UpdateDevolucionVentaDetalle") + + With SqlAdapter.SelectCommand.Parameters + .Add("@CveVentaDetalle", SqlDbType.Int).Value = CveVenta + .Add("@Valor", SqlDbType.Int).Value = Valor + End With + + Try + SqlAdapter.Fill(Data) + Retorno = True + Catch ex As Exception + OnError("Ocurrió un error al actualizar la devolucion.", ex, SqlAdapter.SelectCommand.Parameters.ParametrosInfo) + End Try + + Return Retorno + End Function Public Function LimpiaEntregaDirecta(CveMovimiento As Integer) As Boolean Dim Retorno As Boolean = False DataAdapter("PA_Inv_LimpiaEntregaDirecta") @@ -3062,6 +3080,24 @@ Public Class ClsInventarios Return Retorno End Function + Public Function GetSaldoVentaDetalle(CveVenta As Integer, CveEmpresa As Integer) As Boolean + Dim Retorno As Boolean = False + DataAdapter("PA_Vta_VentaDetalleSaldo") + + With SqlAdapter.SelectCommand.Parameters + .Add("@CveVenta", SqlDbType.Int).Value = CveVenta + .Add("@CveEmpresa", SqlDbType.Int).Value = CveEmpresa + End With + + Try + SqlAdapter.Fill(Data) + Retorno = True + Catch ex As Exception + OnError("Ocurrió un error al obtener datos de almacen por detalle.", ex, SqlAdapter.SelectCommand.Parameters.ParametrosInfo) + End Try + + Return Retorno + End Function Public Function GetMovimientosDevoluciones(CveVenta As Integer, CveEmpresa As Integer) As Boolean Dim Retorno As Boolean = False DataAdapter("PA_Vta_VentaDetalleAlmacenDevolucion") diff --git a/App_Code/Modelos.vb b/App_Code/Modelos.vb index c3c7db3ce..4fae8a392 100644 --- a/App_Code/Modelos.vb +++ b/App_Code/Modelos.vb @@ -3201,12 +3201,12 @@ Namespace Modelos End If 'Factura - If Not ObjEventos.AddEventoBitacora($"Sustituye a: Folio Factura", "-1", UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, CveVenta:=ObjFactura.CveVenta) Then + If Not ObjEventos.AddEventoBitacora($"Remisión facturada: Folio Factura", "-1", UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, CveVenta:=ObjFactura.CveVenta) Then ErrorPrepoliza = True End If 'Remision - If Not ObjEventos.AddEventoBitacora($"Refacturacion en: {ObjFactura.Folio}", "-1", UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, CveVenta:=CveRemision) Then + If Not ObjEventos.AddEventoBitacora($"Facturación de remisión en: {ObjFactura.Folio}", "-1", UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, CveVenta:=CveRemision) Then ErrorPrepoliza = True End If @@ -4269,6 +4269,18 @@ Namespace Modelos Dim ObjE As New ClsOIEventos() ObjE.AddEventoBitacora(msgBitacora, "", UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, CveVenta:=CveVenta) ObjE.Dispose() + Else + + If CveEstatus = 5 Then + Dim ObjE As New ClsOIEventos() + ObjE.AddEventoBitacora("La cancelación de la factura fue aceptada en el SAT", "", UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, CveVenta:=CveVenta) + ObjE.Dispose() + ElseIf CveEstatus = 4 Then + Dim ObjE As New ClsOIEventos() + ObjE.AddEventoBitacora("No se pudo comprobar el estatus de factura ante el SAT, solo sera cancelada en el sistema", "", UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, CveVenta:=CveVenta) + ObjE.Dispose() + End If + End If 'SI ES CANCELACION EN PROCESO CANCELA EL PROCESO DE LAS REMISIONES diff --git a/Ventas/Ventas.aspx.vb b/Ventas/Ventas.aspx.vb index b775018f3..8e596627b 100644 --- a/Ventas/Ventas.aspx.vb +++ b/Ventas/Ventas.aspx.vb @@ -7003,28 +7003,36 @@ Partial Class Ventas Dim ObjNC As List(Of Object) = Nothing If ErrorList.Count = 0 Then If NuevaFactura = 1 Then - 'Si directamente como cancelada sin aceptación, debe de generar la cancelacion aquí - 'If Me.CveEstatusRefacturacion = 0 Then ' cuando es refacturación sin aceptación debe de cancelar y reducir saldo - ' ObjNC = generaNC(ObjVentas, ObjConta, ObjInventario, ObjContr, ObjContPaq, ObjFacturaDevolucion, ObjBancos, ObjEventos) - ' If ObjNC Is Nothing Then - ' ErrorList.Add("No se pudo Cancelar la Factura") - ' End If - 'End If - 'Esquema viejo, evitamos que aparezca por surtir - If ErrorList.Count = 0 Then - 'MARCAR VENTA ANTERIOR - If Not ObjInventario.ActualizarEsDevolucionVenta(CveDevolucion, 2) Then + 'SI YA ESTA MARCADA LA VENTA ANTERIOR + If DevolucionAlmacenNC = 2 Then + If Not ObjInventario.ActualizarEsDevolucionVenta(ObjFactura.CveVenta, 2) Then ErrorList.Add("No se pudo Cancelar el movimiento de almacen de la Factura") End If - - 'MARCAR VENTA ANTERIOR - If VentaSaldoAlmacenNC <> 0 OrElse DevolucionAlmacenNC = 2 Then - If Not ObjInventario.ActualizarEsDevolucionVenta(ObjFactura.CveVenta, 2) Then - ErrorList.Add("No se pudo Cancelar el movimiento de almacen de la Factura") - End If - End If - End If + + 'MARCAR VENTA ANTERIOR + If Not ObjInventario.ActualizarEsDevolucionVenta(CveDevolucion, 2) Then + ErrorList.Add("No se pudo Cancelar el movimiento de almacen de la Factura") + End If + + 'MARCA LO PENDIENTE A NIVEL DETALLE + Dim DtMovDetalles As DataTable = Nothing + If ObjInventario.GetSaldoVentaDetalle(ObjFactura.CveVenta, UsuarioActual.CveEmpresa) Then + DtMovDetalles = ObjInventario.DtResultados.Copy() + End If + + If DtMovDetalles IsNot Nothing Then + For Each Row As DataRow In DtMovDetalles.Rows + Dim SaldoAlmacen As Decimal = Row("SaldoAlmacen").ToString().ToEntero() + If SaldoAlmacen < 0 Then + ObjInventario.UpdateEstatusAlmacen(Row("CveVentaDetalle").ToString().ToEntero(), 1) + ElseIf SaldoAlmacen = 0 Then + ObjInventario.UpdateEstatusAlmacen(Row("CveVentaDetalle").ToString().ToEntero(), 0) + End If + Next + End If + + DtMovDetalles.Dispose() End If End If @@ -11104,12 +11112,12 @@ Partial Class Ventas End If 'Factura - If Not ObjEventos.AddEventoBitacora($"Sustituye a: Folio Factura", "-1", UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, CveVenta:=ObjFactura.CveVenta) Then + If Not ObjEventos.AddEventoBitacora($"Remisión facturada : {ObjFactura.Folio}", "-1", UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, CveVenta:=ObjFactura.CveVenta) Then ErrorPrepoliza = True End If 'Remision - If Not ObjEventos.AddEventoBitacora($"Refacturacion en: {ObjFactura.Folio}", "-1", UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, CveVenta:=CveRemision) Then + If Not ObjEventos.AddEventoBitacora($"Facturación de remisión en: {ObjFactura.Folio}", "-1", UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, CveVenta:=CveRemision) Then ErrorPrepoliza = True End If Next