Curso de Software de Ventas Pt 48 Ventas Editar Producto, Facturas Temporales 2

En esta lección mejorare el guardado de Facturas Temporales agregando los datos del cliente.

Al final encontrara el vídeo explicativo.

Lo primero es crear una tabla nueva llamada tblVentas_Temp que tendría los siguientes campos:

Los números en rojo es el tamaño del campo.

Luego se creas una consulta que se llamara cta_Listado_Fact_Temp la cual relacionamos ambas tablas tblDetalle_Ventas y tblVentas_Temp la consulta queda de la siguiente manera:

 

Esta es la consulta SQL.

SELECT tblVentas_Temp.IdVentTemp, tblVentas_Temp.nombre_cliente, Sum(((tblDetalle_Venta.Cantidad_dv*tblDetalle_Venta.P_Venta_dv)-tblDetalle_Venta.Descuento_dv)) AS Total, tblVentas_Temp.IdCliente, tblVentas_Temp.identificacion, tblVentas_Temp.telefono
FROM tblDetalle_Venta INNER JOIN tblVentas_Temp ON tblDetalle_Venta.Num_VentaTemp = tblVentas_Temp.IdVentTemp
GROUP BY tblVentas_Temp.IdVentTemp, tblVentas_Temp.nombre_cliente, tblVentas_Temp.IdCliente, tblVentas_Temp.identificacion, tblVentas_Temp.telefono;

Lo siguiente es modificar CrearFactura_Temp en el formulario de Ventas quedando de la siguiente manera:

Sub CrearFactura_Temp(IdVentTemp)
    
    Sql = "Insert into tblVentas_Temp (IdVentTemp, IdCliente, nombre_cliente, telefono, identificacion, total) " _
    & "Values (" & IdVentTemp & ", " & CodigoCliente & ", '" & txtNombre_Cli & "', '" & txtTelefono_cli & "', '" & txtIdentificacion_Cli & "', '" & CCur(txtTotalFactura) & "' )"
    
    ConexionADO.Execute Sql
    
End Sub

El Siguiente paso es modificar la el formulario de frmFacturasTemp todo el código para que les sea mas fácil queda de la siguiente manera:

Sub ListarTemporales()
    Dim Sql As String
    Dim Columnas As Integer
    
    Sql = "Select IdVentTemp, nombre_cliente, Total, IdCliente, identificacion, telefono from cta_Listado_Fact_Temp "
    Columnas = 6
    Call LlenarGrid(msGrid, Sql, Columnas)
    
    
    msGrid.ColWidth(0) = 0
    msGrid.ColWidth(1) = 1300
    msGrid.ColWidth(2) = 2800
    msGrid.ColWidth(3) = 1700
    msGrid.ColWidth(4) = 0 'idcliente
    msGrid.ColWidth(5) = 0 'identifi
    msGrid.ColWidth(6) = 0 'telefono
    
    
    msGrid.TextMatrix(0, 1) = "No. Factura"
    msGrid.TextMatrix(0, 2) = "Cliente"
    msGrid.TextMatrix(0, 3) = "Valor Total"
    
    With msGrid
        For I = 1 To .Rows - 1
                .TextMatrix(I, 3) = Format(.TextMatrix(I, 3), "currency")
        Next I
    End With
    
End Sub

Private Sub cmdBorrarPro_Click()
    If msGrid.Row > 0 Then
       Num_Factura = msGrid.TextMatrix(msGrid.Row, 1)
       If Num_Factura <> "" Then
          Res = MsgBox("¿Esta segúro de borrar la factura temporal No. " & Num_Factura & "? ", vbYesNo, "Borrar Producto")
          If Res = vbYes Then
             Sql = "Delete from tblDetalle_Venta Where Num_VentaTemp = " & Num_Factura
             ConexionADO.Execute Sql
             Call ListarTemporales
          End If
       End If
    End If
End Sub

Private Sub cmdCerrar_Click()
    Unload Me
End Sub

Private Sub cmdSeleccionar_Click()
    Num_Temp = msGrid.TextMatrix(msGrid.Row, 1)
    If Num_Temp <> "" Then
        nombre_cliente = msGrid.TextMatrix(msGrid.Row, 2)
        id_cliente = msGrid.TextMatrix(msGrid.Row, 4)
        idenfi_cliente = msGrid.TextMatrix(msGrid.Row, 5)
        telef_cliente = msGrid.TextMatrix(msGrid.Row, 6)
        Call frmVentas.CargarFactTemporal(Num_Temp, id_cliente, nombre_cliente, idenfi_cliente, telef_cliente)
        Unload Me
    End If
End Sub

Private Sub Form_Load()
    Call ListarTemporales
End Sub

Private Sub msGrid_DblClick()
    Call cmdSeleccionar_Click
End Sub

Y por ultimo se modifica el procedimiento que carga la factura temporal llamdo CargarFactTemporal en la tabla frmVentas

Sub CargarFactTemporal(Num_Temp, id_cliente, nombre_cliente, idenfi_cliente, telef_cliente)
    ConsecutivoTemp = Num_Temp
    CodigoCliente = id_cliente
    txtIdentificacion_Cli.Text = idenfi_cliente
    txtNombre_Cli.Text = nombre_cliente
    txtTelefono_cli = telef_cliente
    Call LlenarGridProductos
End Sub

Con lo anterior cuando se selecciona una factura temporal se carga los productos y la información del cliente.

Impuesto en Ventas

Las modificaciones para que funcione los impuestos en ventas son las siguientes:

Tabla tblVentas

Para guardar el valor del impuesto en la tabla se modifica la consulta de la siguiente manera:

  'Se guarda en la tabla ventas

Sql = "Insert Into tblVentas (Num_Factura, FechaHora, TipoFact, Dias, ImpuestoTotal, TotalFactura, EstadoFact, Comentario, Efectivo, Cambio, IdCliente, IdUsuario, SaldoFactura) " _
    & " VALUES (" & Num_Factura & ",'" & FechaHora & "'," & Me.cmdTipoFact.ListIndex & "," & txtDias.Text & ",'" & CCur(txtImpuestoFact) & "','" & CCur(txtTotalFactura) & "',1,'" & Comentario & "','" & CCur(txtVECambio.Text) & "','" & CCur(txtCambio.Text) & "'," & CodigoCliente & "," & Glo_IdUsuario & ", '" & SaldoFactura & "')"

ConexionADO.Execute Sql

El procedimiento completo queda así:

Sub Finalizar_Guardado_Factura()
    
    Num_Factura = Ultima_Factura_Venta() 'Ultima venta
     
    FechaHora = txtFechaApro.Text & " " & Time 'fecha y hora
    
    Comentario = "-"
    If txtObervacionesPro.Text <> "" Then  'comentario
       Comentario = txtObervacionesPro.Text
    End If
    
    'calcular saldo
    SaldoFactura = 0
    If cmdTipoFact.ListIndex = 1 Then
        If CCur(txtAbonoFact.Text) > 0 Then
           SaldoFactura = CCur(txtTotalFactura) - CCur(txtAbonoFact.Text)
        Else
           SaldoFactura = CCur(txtTotalFactura)
        End If
    End If

        'Se guarda en la tabla ventas
    
    Sql = "Insert Into tblVentas (Num_Factura, FechaHora, TipoFact, Dias, ImpuestoTotal, TotalFactura, EstadoFact, Comentario, Efectivo, Cambio, IdCliente, IdUsuario, SaldoFactura) " _
        & " VALUES (" & Num_Factura & ",'" & FechaHora & "'," & Me.cmdTipoFact.ListIndex & "," & txtDias.Text & ",'" & CCur(txtImpuestoFact) & "','" & CCur(txtTotalFactura) & "',1,'" & Comentario & "','" & CCur(txtVECambio.Text) & "','" & CCur(txtCambio.Text) & "'," & CodigoCliente & "," & Glo_IdUsuario & ", '" & SaldoFactura & "')"
    
    ConexionADO.Execute Sql
    
    'A los productos del detalle se les asigna el numero de factura
    Sql = "Update tblDetalle_Venta set Num_Factura = '" & Num_Factura & "', Num_VentaTemp = '0'  where Num_VentaTemp = " & ConsecutivoTemp
    ConexionADO.Execute Sql
    
    '*************** Consulta que resta todos los articulos de 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
   
      '/*//*********************** crear el historial de cada articulo en el kardex
   Sql = "INSERT INTO tblKardex (Fecha, IdProducto, Detalle, D_C, Cantidad, Costo,Cant_Saldo) Select '" & FechaHora & "', dt.IdProducto, 'Venta de Mercancia según Fra. N° " & Num_Factura & " '," _
        & Num_Factura & ", dt.Cantidad_dv * -1, 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

   If glob_conf_ImpresoraTikets = 0 Then
      Call ImprimirFactura_carta(Num_Factura)
   Else
      Call ImprimirFactura_Ticket(Num_Factura)
   End If
    
   ConsecutivoTemp = UltimaVentaTemp
   
   Call LlenarGridProductos
   
   MsgBox "Venta Guardada", vbInformation, "Guardar"
   
   Call LimpiarVenta
   
End Sub

Total Page Visits: 2307 - Today Page Visits: 2

Deja una respuesta