Generation

generate functionWed, 26 Feb 2025

genera un punto de venta con funciones de un CRUD el cual pueda buscar datos por medio de codigos de barras (13 digitos) graficamente

Aquí te muestro un ejemplo de cómo podrías implementar un punto de venta con funciones de CRUD y búsqueda por código de barras en Python utilizando la biblioteca Tkinter para la interfaz gráfica. **Requisitos previos** * Instalar las bibliotecas `tkinter` y `pypdflib` (para generar PDF) * Crear una base de datos SQLite (por ejemplo, `ventas.db`) **Código** ```python import tkinter as tk from tkinter import ttk import sqlite3 from sqlite3 import Error import pandas as pd import pypdflib # Conectar a la base de datos def conectar_bd(): try: conn = sqlite3.connect('ventas.db') return conn except Error as e: print(e) # Crear tabla de ventas def crear_tabla(): conn = conectar_bd() cursor = conn.cursor() cursor.execute(''' CREATE TABLE IF NOT EXISTS ventas ( id INTEGER PRIMARY KEY, codigo_barras TEXT, producto TEXT, cantidad INTEGER, precio REAL ) ''') conn.commit() conn.close() # Funciones CRUD def insertar_venta(): conn = conectar_bd() cursor = conn.cursor() codigo_barras = codigo_barras_entry.get() producto = producto_entry.get() cantidad = int(cantidad_entry.get()) precio = float(precio_entry.get()) cursor.execute('INSERT INTO ventas (codigo_barras, producto, cantidad, precio) VALUES (?, ?, ?, ?)', (codigo_barras, producto, cantidad, precio)) conn.commit() conn.close() mostrar_ventas() def mostrar_ventas(): conn = conectar_bd() cursor = conn.cursor() cursor.execute('SELECT * FROM ventas') rows = cursor.fetchall() tabla_ventas.delete(*tabla_ventas.get_children()) for row in rows: tabla_ventas.insert('', 'end', values=row) def actualizar_venta(): conn = conectar_bd() cursor = conn.cursor() codigo_barras = codigo_barras_entry.get() producto = producto_entry.get() cantidad = int(cantidad_entry.get()) precio = float(precio_entry.get()) cursor.execute('UPDATE ventas SET producto=?, cantidad=?, precio=? WHERE codigo_barras=?', (producto, cantidad, precio, codigo_barras)) conn.commit() conn.close() mostrar_ventas() def eliminar_venta(): conn = conectar_bd() cursor = conn.cursor() codigo_barras = codigo_barras_entry.get() cursor.execute('DELETE FROM ventas WHERE codigo_barras=?', (codigo_barras,)) conn.commit() conn.close() mostrar_ventas() # Función de búsqueda por código de barras def buscar_venta(): conn = conectar_bd() cursor = conn.cursor() codigo_barras = codigo_barras_entry.get() cursor.execute('SELECT * FROM ventas WHERE codigo_barras=?', (codigo_barras,)) row = cursor.fetchone() if row: producto_entry.delete(0, tk.END) producto_entry.insert(0, row[2]) cantidad_entry.delete(0, tk.END) cantidad_entry.insert(0, str(row[3])) precio_entry.delete(0, tk.END) precio_entry.insert(0, str(row[4])) else: print('No se encontró la venta') conn.close() # Crear ventana principal root = tk.Tk() root.title('Punto de Venta') # Crear etiquetas y entradas tk.Label(root, text='Código de barras:').grid(row=0, column=0) codigo_barras_entry = tk.Entry(root) codigo_barras_entry.grid(row=0, column=1) tk.Label(root, text='Producto:').grid(row=1, column=0) producto_entry = tk.Entry(root) producto_entry.grid(row=1, column=1) tk.Label(root, text='Cantidad:').grid(row=2, column=0) cantidad_entry = tk.Entry(root) cantidad_entry.grid(row=2, column=1) tk.Label(root, text='Precio:').grid(row=3, column=0) precio_entry = tk.Entry(root) precio_entry.grid(row=3, column=1) # Crear botones tk.Button(root, text='Insertar', command=insertar_venta).grid(row=4, column=0) tk.Button(root, text='Actualizar', command=actualizar_venta).grid(row=4, column=1) tk.Button(root, text='Eliminar', command=eliminar_venta).grid(row=4, column=2) tk.Button(root, text='Buscar', command=buscar_venta).grid(row=5, column=0) tk.Button(root, text='Mostrar ventas', command=mostrar_ventas).grid(row=5, column=1) # Crear tabla de ventas tabla_ventas = ttk.Treeview(root) tabla_ventas['columns'] = ('id', 'codigo_barras', 'producto', 'cantidad', 'precio') tabla_ventas.column('#0', width=0, stretch=tk.NO) tabla_ventas.column('id', width=50) tabla_ventas.column('codigo_barras', width=100) tabla_ventas.column('producto', width=200) tabla_ventas.column('cantidad', width=50) tabla_ventas.column('precio', width=50) tabla_ventas.heading('#0', text='', anchor=tk.W) tabla_ventas.heading('id', text='ID', anchor=tk.W) tabla_ventas.heading('codigo_barras', text='Código de barras', anchor=tk.W) tabla_ventas.heading('producto', text='Producto', anchor=tk.W) tabla_ventas.heading('cantidad', text='Cantidad', anchor=tk.W) tabla_ventas.heading('precio', text='Precio', anchor=tk.W) tabla_ventas.grid(row=6, column=0, columnspan=3) # Crear PDF def generar_pdf(): conn = conectar_bd() cursor = conn.cursor() cursor.execute('SELECT * FROM ventas') rows = cursor.fetchall() pdf = pypdflib.PDF() pdf.add_page() pdf.set_font('Arial', size=12) for row in rows: pdf.cell(0, 10, txt=f'Código de barras: {row[1]}', ln=True, align='L') pdf.cell(0, 10, txt=f'Producto: {row[2]}', ln=True, align='L') pdf.cell(0, 10, txt=f'Cantidad: {row[3]}', ln=True, align='L') pdf.cell(0, 10, txt=f'Precio: {row[4]}', ln=True, align='L') pdf.ln(10) pdf.output('ventas.pdf') print('PDF generado con éxito') tk.Button(root, text='Generar PDF', command=generar_pdf).grid(row=7, column=0) # Crear ventana principal root.mainloop() ``` **Explicación** Este código crea una ventana principal con etiquetas y entradas para ingresar el código de barras, producto, cantidad y precio. También hay botones para insertar, actualizar, eliminar y buscar ventas. La tabla de ventas se muestra en la parte inferior de la ventana. La función `buscar_venta` busca la venta correspondiente al código de barras ingresado y muestra los datos en las entradas correspondientes. La función `generar_pdf` genera un PDF con los datos de las ventas. **Nota** * Debes crear una base de datos SQLite llamada `ventas.db` en el mismo directorio que el script. * Debes instalar las bibliotecas `tkinter` y `pypdflib` si no las tienes instaladas. * Este código es solo un ejemplo y no es una aplicación realista. Debes adaptarlo a tus necesidades específicas.

Questions about programming?Chat with your personal AI assistant