Curso Software de Ventas Parte 22, Inventario Modificar Producto

En este vídeo explico como modificar un producto del inventario.

Después de tener ingresado los producto se crea la necesidad de querer modificar datos de un producto en especifico por ejemplo el precios, la existencia, o la descripción del producto.

Para modificar un producto se debe seleccionar de la lista del msGrid y luego dar clic en el botón modificar o dar doble clic sobre el producto para que abra la ventana de Producto y nos muestre todos los datos del producto seleccionado.

Primero vamos a crear una variable global en el modulo Conexiones llamada glob_ModificarPro de tipo Boolean:

glob_ModificarPro

Luego creamos el código en el botón modificar de la ventana inventario:

Private Sub cmdModificar_Click()
    IdProducto = msGrid.TextMatrix(msGrid.Row, 1)
    If IdProducto <> "" Then
       glob_ModificarPro = True
       frmProducto.Show
    End If
End Sub

Luego en la ventana de Producto nos vamos al evento Load del formulario:

Private Sub Form_Load()
    CodigoProducto = 0
    Call LimpiarTextos
    Call LlenarProveedores
    Call LlenarCategorias
    
    'Lineas para modificar el producto
    If glob_ModificarPro = True Then
       CodigoProducto = frmInventario.msGrid.TextMatrix(frmInventario.msGrid.Row, 1)
       Call LlenarDatosProducto
    End If

End Sub

En el código anterior estamos llamando al procedimiento LlenarDatosProducto cuyo código es el siguiente:

Sub LlenarDatosProducto()
    Dim RecordsetTemp As New ADODB.Recordset
    Dim Sql As String
    
    Sql = "SELECT tblProductos.IdProducto, tblProductos.CodigoPro, tblProductos.NombrePro, tblProductos.NombreCortoPro, tblProductos.ExistPro, tblProductos.ExistMinPro, tblProductos.PCostoPro, tblProductos.PVenta1Pro, tblProductos.PVenta2Pro, tblProductos.PVenta3Pro, tblProductos.PMinimoPro, tblProductos.EstantePro, tblProductos.IdCategoria, tblProductos.IdProveedor, tblProductos.Impuesto, tblProveedores.NombreEmpresaPro, tblCategorias.NombreCategoria " _
        & " FROM (tblProductos INNER JOIN tblProveedores ON tblProductos.IdProveedor = tblProveedores.IdProveedor) INNER JOIN tblCategorias ON tblProductos.IdCategoria = tblCategorias.Idcategoria WHERE  tblProductos.IdProducto = " & CodigoProducto
    
    RecordsetTemp.Open Sql, ConexionADO
    
    If RecordsetTemp.RecordCount > 0 Then
        txtCodigoPro.Text = RecordsetTemp("CodigoPro")
        txtNombrePro.Text = RecordsetTemp("NombrePro")
        txtNombreCort.Text = RecordsetTemp("NombreCortoPro")
        cmdProveedor.Text = RecordsetTemp("NombreEmpresaPro")
        cmbCategorias.Text = RecordsetTemp("NombreCategoria")
        txtEstante.Text = RecordsetTemp("EstantePro")
        txtExistencia = RecordsetTemp("ExistPro")
        txtExistMinima = RecordsetTemp("ExistMinPro")
        txtPrecioCosto = RecordsetTemp("PCostoPro")
        txtImpuesto = RecordsetTemp("Impuesto")
        txtPrecioV1 = RecordsetTemp("PVenta1Pro")
        txtPrecioV2 = RecordsetTemp("PVenta2Pro")
        txtPrecioV3 = RecordsetTemp("PVenta3Pro")
        txtPrecioVMinim = RecordsetTemp("PMinimoPro")
        
        Call CalcularImpuesto
        Call PorcentajeUtilidad(txtPrecioV1, txtProcV1, txtUtilidadP1)
        Call PorcentajeUtilidad(txtPrecioV2, txtProcV2, txtUtilidadP2)
        Call PorcentajeUtilidad(txtPrecioV3, txtProcV3, txtUtilidadP3)
        Call PorcentajeUtilidad(txtPrecioVMinim, txtProcVMinim, txtUtilidadP4)
        
    End If
End Sub

Para guardar el producto validamos que la variable CodigoProducto sea mayo a cero para hacer la actualización:

CodCategoria = cmbCategorias.ItemData(cmbCategorias.ListIndex) 'mov
    CodProv = cmdProveedor.ItemData(cmdProveedor.ListIndex)
    
    If CodigoProducto = 0 Then 'erro
        
        IdProducto = UltimoIdTabla("tblProductos", "IdProducto")
        Sql = "Insert Into tblProductos (IdProducto, CodigoPro, NombrePro, NombreCortoPro,EstantePro, ExistPro, ExistMinPro, PCostoPro,PVenta1Pro, PVenta2Pro, PVenta3Pro, PMinimoPro, IdCategoria, IdProveedor) Values (" & IdProducto & ",'" & txtCodigoPro & "','" & txtNombrePro & "','" & txtNombreCort & "','" & txtEstante & "','" & txtExistencia & "','" & txtExistMinima & "','" & txtPrecioCosto & "','" & txtPrecioV1 & "','" & txtPrecioV2 & "','" & txtPrecioV3 & "', '" & txtPrecioVMinim & "', " & CodCategoria & ", " & CodProv & ") "
        
    Else
        Sql = "Update tblProductos SET CodigoPro = '" & txtCodigoPro & "', NombrePro = '" & txtNombrePro & "',NombreCortoPro = '" & txtNombreCort & "',EstantePro = '" & txtEstante & "',ExistPro = '" & txtExistencia & "',ExistMinPro = '" & txtExistMinima & "', PCostoPro = '" & txtPrecioCosto & "', PVenta1Pro = '" & txtPrecioV1 & "', PVenta2Pro = '" & txtPrecioV2 & "', PVenta3Pro = '" & txtPrecioV3 & "', PMinimoPro = '" & txtPrecioVMinim & "', IdCategoria = '" & CodCategoria & "', IdProveedor = '" & CodProv & "' Where IdProducto = " & CodigoProducto
        
    End If

El código completo de el sub procedimiento guardar es el siguiente:

Sub GuardarProducto()


    If txtCodigoPro.Text = "" Then
       MsgBox "Debe llenar el Campo Código", vbExclamation, "Error"
       Exit Sub
    End If
    If txtNombrePro.Text = "" Then
       MsgBox "Debe llenar el Campo Nombre del Producto", vbExclamation, "Error"
       Exit Sub
    End If
    If txtNombreCort.Text = "" Then
       MsgBox "Debe llenar el Campo Nombre Corto", vbExclamation, "Error"
       Exit Sub
    End If
    If txtEstante.Text = "" Then
       MsgBox "Debe llenar el Campo Estante", vbExclamation, "Error"
       Exit Sub
    End If
    
    If txtPrecioCosto.Text = "" Then
       MsgBox "Debe llenar el Campo Precio Costo", vbExclamation, "Error"
       Exit Sub
    End If
    If txtPrecioV1.Text = "" Then
       MsgBox "Debe llenar el Campo Precio Venta 1", vbExclamation, "Error"
       Exit Sub
    End If
    If txtImpuesto.Text = "" Then
       MsgBox "Debe llenar el Campo Impuesto", vbExclamation, "Error"
       Exit Sub
    End If
    
    CodCategoria = cmbCategorias.ItemData(cmbCategorias.ListIndex) 'mov
    CodProv = cmdProveedor.ItemData(cmdProveedor.ListIndex)
    
    If CodigoProducto = 0 Then 'erro
        
        IdProducto = UltimoIdTabla("tblProductos", "IdProducto")
        Sql = "Insert Into tblProductos (IdProducto, CodigoPro, NombrePro, NombreCortoPro,EstantePro, ExistPro, ExistMinPro, PCostoPro,PVenta1Pro, PVenta2Pro, PVenta3Pro, PMinimoPro, IdCategoria, IdProveedor) Values (" & IdProducto & ",'" & txtCodigoPro & "','" & txtNombrePro & "','" & txtNombreCort & "','" & txtEstante & "','" & txtExistencia & "','" & txtExistMinima & "','" & txtPrecioCosto & "','" & txtPrecioV1 & "','" & txtPrecioV2 & "','" & txtPrecioV3 & "', '" & txtPrecioVMinim & "', " & CodCategoria & ", " & CodProv & ") "
        
    Else
        Sql = "Update tblProductos SET CodigoPro = '" & txtCodigoPro & "', NombrePro = '" & txtNombrePro & "',NombreCortoPro = '" & txtNombreCort & "',EstantePro = '" & txtEstante & "',ExistPro = '" & txtExistencia & "',ExistMinPro = '" & txtExistMinima & "', PCostoPro = '" & txtPrecioCosto & "', PVenta1Pro = '" & txtPrecioV1 & "', PVenta2Pro = '" & txtPrecioV2 & "', PVenta3Pro = '" & txtPrecioV3 & "', PMinimoPro = '" & txtPrecioVMinim & "', IdCategoria = '" & CodCategoria & "', IdProveedor = '" & CodProv & "' Where IdProducto = " & CodigoProducto
        
    End If
    ConexionADO.Execute Sql
    MsgBox "Producto Guardado", vbInformation, "Guardar"
    Call LimpiarTextos
    txtCodigoPro.SetFocus
End Sub

Siguiente Lección Curso Software de Ventas Parte 23, Kardex Parte 1

Comentarios de Facebook

Deja un comentario