Curso de Software de Ventas Parte 38, Listado de Ventas 2

Que tal programadores siguiendo con el Listado de Ventas, esta ves vamos a trabajar la parte de Anular la factura.

Colabora y Suscribete a mi canal de   

Para hacer la anulación de una factura hay que hacer varios pasos que son los siguientes:

  • Hacer la devolución en el inventario de los productos (suma la existencia)
  • Hacer el Registro de este movimiento en el kardex de cada producto
  • Editar la Factura y cambiar el estado a 0 (Anulado)

En el evento clic de botón anular hacer la validación de si se quiere o no anular la factura para evitar un error de procedimiento que sin querer de de clic para esto se hace la confirmación de la acción.

Nfactura = msGrid.TextMatrix(msGrid.Row, 1)
If Nfactura <> "" Then
   Res = MsgBox("Está seguro de anular la factura No. " & Nfactura & " ?", vbYesNo, "Anular Factura")
   Call Anular_Factura(Nfactura)
End If

Los siguiente es crear el procedimiento para que haga el proceso de Anulación y lo llamaremos  Anular_Factura al cual le pasaremos el número de la factura.

Ya dentro del procedimiento el primer paso es hacer la devolución de cada producto en la tabla productos en pocas palabras sumar la existencia que se vendió.

Para eso hacer una sola consulta donde se relación la tabla producto y la tabla detalle_venta  y mediante un update.

  
'*************** Consulta que suma todos los articulos del detalle a inventario
Sql = "UPDATE tblProductos as ar INNER JOIN tblDetalle_Venta as d ON ar.IdProducto = d.IdProducto SET ar.ExistPro = (ar.ExistPro + d.Cantidad_dv) where d.Num_Factura = " & Num_Factura
ConexionADO.Execute Sql

El siguiente punto registrar este movimiento en el kardex, para eso se escribe un nuevo registro por cada producto donde se suma la cantidad que se vendió.

     '/*//*********************** crear el historial de cada articulo en el kardex
Sql = "INSERT INTO tblKardex (Fecha, IdProducto, Detalle, D_C, Cantidad, Costo,Cant_Saldo) Select Now, dt.IdProducto, 'Anulación de Venta Fra. N° " & Num_Factura & " '," _
        & Num_Factura & ", dt.Cantidad_dv, dt.P_Costo_dv, (Select ExistPro from tblProductos where IdProducto = dt.IdProducto) from tblDetalle_Venta as dt Where dt.Num_Factura = " & Num_Factura
   
ConexionADO.Execute Sql

La diferencia de esta consulta con la que se ejecuta cuando se hace la venta esta en dt.Cantidad_dv * -1 se quita la multiplicación para que no quede negativo quedando solamente  dt.Cantidad_dv y se coloque una función llamada Now de sql para la fecha actual en el select.

Y el ultimo paso es cambiar el estado de la factura para se hace un update y se cambia el estado de la factura a 0.

Sql = "Update tblVentas SET EstadoFact = 0 Where Num_Factura = " & Num_Factura
ConexionADO.Execute Sql

Para que nos refleje el cambio en el grid hay que llamar al procedimiento de listado de facturas:

Call ListarFacturasVenta

Hay que hacer unas modificaciones en el ListarFacturasVenta para que me muestre en rojo la factura anulada y para que no sume estas al mostrarnos el total de las ventas.

msGrid.Redraw = False
   SumaT = 0
   For I = 1 To msGrid.Rows - 1
       msGrid.Row = I
       msGrid.Col = 4
       msGrid.CellAlignment = flexAlignCenterCenter
       msGrid.Col = 6
       msGrid.CellAlignment = flexAlignCenterCenter
       msGrid.TextMatrix(I, 5) = Format(msGrid.TextMatrix(I, 5), "currency")
       msGrid.TextMatrix(I, 2) = Format(msGrid.TextMatrix(I, 2), "dd/mm/yyyy")
       If msGrid.TextMatrix(I, 4) = "1" Then
          msGrid.TextMatrix(I, 4) = "Crédito"
       Else
          msGrid.TextMatrix(I, 4) = "Contado"
       End If
       If msGrid.TextMatrix(I, 6) = "1" Then
          msGrid.TextMatrix(I, 6) = "Valida"
          SumaT = SumaT + msGrid.TextMatrix(I, 5)
       Else
          msGrid.TextMatrix(I, 6) = "Anulada"
          msGrid.Col = 6
          msGrid.CellBackColor = &HC0&   'color de fondo
          msGrid.CellForeColor = &H80000005  'color de la letra
       End If
       
   Next I
   msGrid.Redraw = True
   txtTotalLista.Text = Format(SumaT, "currency")

 

Subí dentro del condiciona la suma de la Factura solo si es 1 se suma la factura.

Y en la parte del else se cambia el color de fondo de la celada a rojo y la fuente de color blanco quedando de la siguiente manera al mostrar una factura anulada:

Suscribete a Youtube

Siguenos en Twitter

Siguenos en Facebook

Total Page Visits: 4474 - Today Page Visits: 1

Deja una respuesta