Curso de Software de Ventas Pt 42 Factura de Ticket 2

Para terminar de configurar la Factura de Ticket nos falta algunas modificaciones.

El sistema hay que cargarle la configuración de archivo INI para eso hay que crear el siguiente procedimiento:

Sub CargarArchivoConfiguracion()
    
    glob_conf_ImpreFacturacion = Leer_Ini(Path_Archivo_Ini, "ImpreFacturacion", "")
    glob_conf_ImpreInformes = Leer_Ini(Path_Archivo_Ini, "ImpreInformes", "")
    glob_conf_ImpreCierreCaja = Leer_Ini(Path_Archivo_Ini, "ImpreCierreCaja", "")
    glob_conf_ImpresoraTikets = Leer_Ini(Path_Archivo_Ini, "ImpresoraTicket", 0)
    
End Sub

Este procedimiento va en el formulario principal frmPrincipal, con esto ya el sistema va a tener cargada las variables con las configuraciones que tenemos.

Nos falta indicarle a la ventana de ventas que si escogimos que imprima con la impresora de Ticket use el procedimiento que creamos para eso:

Para indicarle esto debemos ir al formulario de ventas y irnos al procedimiento Sub Finalizar_Guardado_Factura()

Vamos a modificar la siguientes lineas:

If glob_conf_ImpresoraTikets = 0 Then
   Call ImprimirFactura_carta(Num_Factura)
Else
   Call ImprimirFactura_Ticket(Num_Factura)
End If

Si glob_conf_ImpresoraTikets es igual a cero entonces imprime con la impreso normal pero si es 1 entonces con la de ticket.

El procedimiento completo queda de la siguiente manera:

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
    
        'Se guarda en la tabla ventas
    
    Sql = "Insert Into tblVentas (Num_Factura, FechaHora, TipoFact, Dias, TotalFactura, EstadoFact, Comentario, Efectivo, Cambio, IdCliente, IdUsuario) " _
        & " VALUES (" & Num_Factura & ",'" & FechaHora & "'," & Me.cmdTipoFact.ListIndex & "," & txtDias.Text & ",'" & CCur(txtTotalFactura) & "',1,'" & Comentario & "','" & CCur(txtVECambio.Text) & "','" & CCur(txtCambio.Text) & "'," & CodigoCliente & "," & Glo_IdUsuario & ")"
    
    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

Corrección de Errores

Mientras hice pruebas al sistema note algunos errores por corregir y pego el código ya corregido para que ustedes lo corrijan:

Sub BuscarProductoCodigo()
    Dim Sql As String
    
    Sql = "Select * From tblProductos Where CodigoPro = '" & txtCodigoPro.Text & "'"
    Set RecordSet_Producto = ConexionADO.Execute(Sql)
        
    If RecordSet_Producto.RecordCount > 0 Then
       Call DatosProducto(RecordSet_Producto("IdProducto"))
       txtCant_Pro.SetFocus
    End If
    
End Sub

En lo anterior agregue un condicional que valida que el producto exista If RecordSet_Producto.RecordCount > 0 Then

Luego:

Sub DatosProducto(Id_Producto)
    IdProducto = Id_Producto
    RecordSet_Producto.Filter = " IdProducto = " & Id_Producto
    If RecordSet_Producto.RecordCount > 0 Then
       With RecordSet_Producto
            txtCodigoPro.Text = !CodigoPro
            txtNombrePro.Text = !NombrePro
            txtPrecioV_Pro.Text = !PVenta1Pro
            If cmbPrecios.ListIndex = 0 Then
               txtPrecioV_Pro.Text = !PVenta1Pro
            ElseIf cmbPrecios.ListIndex = 1 Then
               txtPrecioV_Pro.Text = Format(!PVenta2Pro, "currency")
            Else
               txtPrecioV_Pro.Text = Format(!PVenta3Pro, "currency")
            End If
            PrecioVentaGlob = txtPrecioV_Pro.Text
            txtPrecioMinimoPro.Text = Format(!PMinimoPro, "currency")
            txtExistPro.Text = !ExistPro
            Precio2_Producto = !PVenta2Pro
            Precio3_Producto = !PVenta3Pro
            PrecioC_Pro = !PCostoPro
       End With
    End If
End Sub

Agregue la linea IdProducto = Id_Producto porque no tomaba el producto cuando buscaba por código

Private Sub txtCodigoPro_KeyUp(KeyCode As Integer, Shift As Integer)
    If KeyCode = 13 And txtCodigoPro.Text <> "" Then
       Call BuscarProductoCodigo
       Exit Sub
    End If
    If msGrid.Rows > 0 And KeyCode = 13 Then
       Call cmdGuardarFact_Click
    End If
    
End Sub

Existía otro error al dar Enter al buscar por código en ves de buscar el producto me salia la ventana de cobro esto se solucion agregando:

txtCant_Pro.SetFocus y Exit Sub

Private Sub cmdGuardarFact_Click()
    If cmdTipoFact.ListIndex = 0 Then 'contado
        Call AbrirVentanaCambio
        Call DesactivarBotones
    ElseIf cmdTipoFact.ListIndex = 1 Then 'crédito
      If txtAbonoFact.Text <> "" Then
            If CCur(txtAbonoFact.Text) > 0 Then
                Call AbrirVentanaCambio
                Call DesactivarBotones
            Else
                Call Finalizar_Guardado_Factura
            End If
      End If
      
    End If
End Sub

En este procedimiento agregue el codicional If txtAbonoFact.Text <> «» Then para que valide si el campo abono no esta vació al guardar una venta a crédito.

En El formulario de Buscar Cliente debemos corregir la función que selecciona al cliente:

Private Sub cmdSeleccionar_Click()
    Dim Codigo As Long
    Dim Identifi As String
    Dim Nombre As String
    Dim Telefono As String
    Dim Cupo  As Currency
    Dim PrecioVenta  As Integer
    
    'If msGrid.Row > 0 Then
    '   IdTipoUsuario = msGrid.TextMatrix(msGrid.Row, 1)
    '   Call frmAdministacionUsuarios.LlenarUsuario(IdTipoUsuario)
    '   Unload Me
    'End If
    Codigo = msGrid.TextMatrix(msGrid.Row, 1)
    If Codigo <> 0 Then
        If glob_FormularioSolicBuscarCli = "frmVentas" Then
           Nombre = msGrid.TextMatrix(msGrid.Row, 2)
           Identifi = msGrid.TextMatrix(msGrid.Row, 3)
           Telefono = msGrid.TextMatrix(msGrid.Row, 4)
           Cupo = msGrid.TextMatrix(msGrid.Row, 5)
           PrecioVenta = Val(msGrid.TextMatrix(msGrid.Row, 6))
           If IsNull(PrecioVenta) = True Then
              PrecioVenta = 0
           End If
           Call frmVentas.SeleccionarCliente(Codigo, Identifi, Nombre, Telefono, Cupo, PrecioVenta, "")
           Unload Me
        End If
    End If
    
End Sub

Corregí la linea Call frmVentas.SeleccionarCliente(Codigo, Identifi, Nombre, Telefono, Cupo, PrecioVenta, «») le faltaba el parametro final

Comentarios de Facebook

Deja un comentario