def totalDelDia(): fechaDeHoy = date.today() comandoSQL = 'SELECT ID_FACTURA FROM FACTURAS WHERE FECHA LIKE "%{}%";'.format( fechaDeHoy) funciones_SQLite.ejecutarComandoSQL(comandoSQL, cursorBaseDeDatos) tablaTotal = funciones_SQLite.extraerTabla(cursorBaseDeDatos) print(tablaTotal)
def verificarSiExisteMarca(nombreMarca): comandoSQL = "SELECT * FROM MARCAS;" funciones_SQLite.ejecutarComandoSQL(comandoSQL, cursorBaseDeDatos) tablaMarcas = funciones_SQLite.extraerTabla(cursorBaseDeDatos) for marca in tablaMarcas: if (marca[1] == nombreMarca): return True return False
def verificarSiExisteCliente(nombreCliente): comandoSQL = "SELECT * FROM CLIENTES;" funciones_SQLite.ejecutarComandoSQL(comandoSQL, cursorBaseDeDatos) tablaClientes = funciones_SQLite.extraerTabla(cursorBaseDeDatos) for cliente in tablaClientes: if (cliente[1] == nombreCliente): return True return False
def verificarQueNoExistaElArticulo(codigoDeBarras): comandoSQL = 'SELECT CODIGO_DE_BARRA FROM ARTICULOS;' funciones_SQLite.ejecutarComandoSQL(comandoSQL,cursorBaseDeDatos) tablaConCodigosDeBarra = funciones_SQLite.extraerTabla(cursorBaseDeDatos) for codigo in tablaConCodigosDeBarra: if(codigo[0] == int(codigoDeBarras)): return False return True
def verificarQueNoExistaElCliente(nombreDelCliente): comandoSQL = 'SELECT NOMBRE FROM CLIENTES;' funciones_SQLite.ejecutarComandoSQL(comandoSQL,cursorBaseDeDatos) tablaNombresDeClientes = funciones_SQLite.extraerTabla(cursorBaseDeDatos) for nombre in tablaNombresDeClientes: if(nombre[0] == nombreDelCliente): return False return True
def extraerDatosDelArticuloAModificar(): codigoDeBarras = ingreso_de_datos.ingresoCodigoDeBarras() comandoSQL = "SELECT NOMBRE_ARTICULO,PRECIO,ARTICULO_MARCA,ARTICULO_AREA,STOCK,CODIGO_DE_BARRA FROM ARTICULOS WHERE CODIGO_DE_BARRA = {}".format(str(codigoDeBarras)) funciones_SQLite.ejecutarComandoSQL(comandoSQL, cursorBaseDeDatos) tablaDatosDelArticulo = funciones_SQLite.extraerTabla(cursorBaseDeDatos) print("Los datos del articulo a modificar son: ") print(tablaDatosDelArticulo) return tablaDatosDelArticulo
def productosSinStock(): comandoSQL = 'SELECT CODIGO_DE_BARRA,NOMBRE_ARTICULO,PRECIO,ARTICULO_MARCA FROM ARTICULOS WHERE STOCK = 0;' funciones_SQLite.ejecutarComandoSQL(comandoSQL, cursorBaseDeDatos) tablaArticulosSinStock = funciones_SQLite.extraerTabla(cursorBaseDeDatos) encabezado = ["Codigo de barra", "Nombre/Descripcion", "Precio", "Marca"] print("{:<20}".format(encabezado[0]) + "{:<30}".format(encabezado[1]) + "{:<10}".format(encabezado[2]) + "{:<10}".format(encabezado[3])) for articulo in tablaArticulosSinStock: print("{:<20}".format(articulo[0]) + "{:<30}".format(articulo[1]) + "{:<10}".format(articulo[2]) + "{:<10}".format(articulo[3]))
def buscarPorArea(): numeroDeArea = ingreso_de_datos.ingresoDeArea() comandoSQL = 'SELECT ARTICULOS.CODIGO_DE_BARRA, ARTICULOS.NOMBRE_ARTICULO, ARTICULOS.PRECIO, MARCAS.NOMBRE_MARCA FROM ARTICULOS INNER JOIN MARCAS ON ARTICULO_MARCA = ID_MARCA WHERE ARTICULO_AREA = {};'.format( numeroDeArea) funciones_SQLite.ejecutarComandoSQL(comandoSQL, cursorBaseDeDatos) tablaArticulosDelArea = funciones_SQLite.extraerTabla(cursorBaseDeDatos) encabezado = ["Codigo de barra", "Nombre/Descripcion", "Precio", "Marca"] print("{:<20}".format(encabezado[0]) + "{:<30}".format(encabezado[1]) + "{:<10}".format(encabezado[2]) + "{:<10}".format(encabezado[3])) for articulo in tablaArticulosDelArea: print("{:<20}".format(articulo[0]) + "{:<30}".format(articulo[1]) + "{:<10}".format(articulo[2]) + "{:<10}".format(articulo[3]))
def buscarPorFechaDeActualizacion(): fechaDeIngreso = ingreso_de_datos.ingresoYValidacionDeFecha() formatter_string = "%Y-%m-%d" datetime_object = datetime.strptime(fechaDeIngreso, formatter_string) date_object = datetime_object.date() comandoSQL = 'SELECT CODIGO_DE_BARRA,NOMBRE_ARTICULO,PRECIO,ARTICULO_MARCA FROM ARTICULOS WHERE FECHA LIKE "%{}%";'.format( date_object) funciones_SQLite.ejecutarComandoSQL(comandoSQL, cursorBaseDeDatos) tablaArticulosPorFecha = funciones_SQLite.extraerTabla(cursorBaseDeDatos) encabezado = ["Codigo de barra", "Nombre/Descripcion", "Precio", "Marca"] print("{:<20}".format(encabezado[0]) + "{:<30}".format(encabezado[1]) + "{:<10}".format(encabezado[2]) + "{:<10}".format(encabezado[3])) for articulo in tablaArticulosPorFecha: print("{:<20}".format(articulo[0]) + "{:<30}".format(articulo[1]) + "{:<10}".format(articulo[2]) + "{:<10}".format(articulo[3]))
def buscarPorPalabraClave(): palabraClave = ingreso_de_datos.ingresoNombre("palabra clave") palabraClave = palabraClave.upper() comandoSQL = 'SELECT CODIGO_DE_BARRA,NOMBRE_ARTICULO,PRECIO FROM ARTICULOS WHERE NOMBRE_ARTICULO LIKE "%{}%";'.format( palabraClave, palabraClave, palabraClave) # funciones_SQLite.ejecutarComandoSQL(comandoSQL, cursorBaseDeDatos) tablaArticulosPorPalabraClave = funciones_SQLite.extraerTabla( cursorBaseDeDatos) encabezado = ["Codigo de barra", "Nombre/Descripcion", "Precio"] print("{:<20}".format(encabezado[0]) + "{:<30}".format(encabezado[1]) + "{:<10}".format(encabezado[2])) for articulo in tablaArticulosPorPalabraClave: print("{:<20}".format(articulo[0]) + "{:<30}".format(articulo[1]) + "{:<10}".format(articulo[2]))
def obtenerNumeroDeFacturaDeseada(): tablaNuevaDeNumerosDeFacturas = [] comandoSQL = 'SELECT ID_FACTURA,FECHA FROM FACTURAS;' funciones_SQLite.ejecutarComandoSQL(comandoSQL, cursorBaseDeDatos) numerosDeFacturas = funciones_SQLite.extraerTabla(cursorBaseDeDatos) for i in numerosDeFacturas: tablaNuevaDeNumerosDeFacturas.append(i[0]) print(i[0]) validacionNumeroDeFactura = False while (not validacionNumeroDeFactura): numeroDeFacturaDeseada = input( "Ingrese el numero de factura que desea imprimir ") if (int(numeroDeFacturaDeseada) <= max(tablaNuevaDeNumerosDeFacturas)): validacionNumeroDeFactura = True else: print("Error") return numeroDeFacturaDeseada
def ingresoDeArea(): validacionDeIngreso = False comandoSQL = 'SELECT * FROM AREAS;' funciones_SQLite.ejecutarComandoSQL(comandoSQL,cursorBaseDeDatos) tablaDeAreas = funciones_SQLite.extraerTabla(cursorBaseDeDatos) comandoSQL = 'SELECT MAX(ID_AREA) FROM AREAS ;' funciones_SQLite.ejecutarComandoSQL(comandoSQL,cursorBaseDeDatos) maximoIDdeArea = funciones_SQLite.extraerElemento(cursorBaseDeDatos) maximoIDdeArea = maximoIDdeArea[0] print(tablaDeAreas) while(not validacionDeIngreso): try: areaIngresada = int(input("Esperando ingreso de area...")) if(areaIngresada <= maximoIDdeArea and areaIngresada > 0): validacionDeIngreso = True else: print("ERROR!!") validacionDeIngreso = False except: print("ERROR!!") validacionDeIngreso = False return areaIngresada
def determinarNumeroDeMarcaDelArticulo(nombreDeLaMarca): existeMarcaEnBaseDeDatos = False comandoSQL = 'SELECT * FROM MARCAS;' funciones_SQLite.ejecutarComandoSQL(comandoSQL,cursorBaseDeDatos) tablaDeMarcas = funciones_SQLite.extraerTabla(cursorBaseDeDatos) for dato in tablaDeMarcas: try: if(dato[1] == nombreDeLaMarca): existeMarcaEnBaseDeDatos = True else: existeMarcaEnBaseDeDatos = False except: existeMarcaEnBaseDeDatos = False if(existeMarcaEnBaseDeDatos): comandoSQL = 'SELECT ID_MARCA FROM MARCAS WHERE NOMBRE_MARCA = "{}"'.format(nombreDeLaMarca) funciones_SQLite.ejecutarComandoSQL(comandoSQL,cursorBaseDeDatos) ID_Marca = funciones_SQLite.extraerElemento(cursorBaseDeDatos) return ID_Marca[0] else: return None """
def imprimirUltimaFactura(): comandoSQL = 'SELECT MAX(ID_FACTURA) FROM FACTURAS;' funciones_SQLite.ejecutarComandoSQL(comandoSQL, cursorBaseDeDatos) nroDeLaUltimaFactura = funciones_SQLite.extraerElemento(cursorBaseDeDatos) nroDeLaUltimaFactura = nroDeLaUltimaFactura[0] total = 0 #numeroDeFacturaDeseada = obtenerNumeroDeFacturaDeseada() comandoSQL = 'SELECT FECHA FROM FACTURAS WHERE ID_FACTURA={}'.format( str(nroDeLaUltimaFactura)) funciones_SQLite.ejecutarComandoSQL(comandoSQL, cursorBaseDeDatos) fechaDeLaFactura = funciones_SQLite.extraerElemento(cursorBaseDeDatos) fechaDeLaFactura = fechaDeLaFactura[0] fechaDeLaFactura = datetime.datetime.strptime(fechaDeLaFactura, "%Y-%m-%d %H:%M:%S") fechaDeLaFactura = fechaDeLaFactura.strftime("%d/%m/%y") comandoSQL = 'SELECT FACTURAS.ID_CLIENTE, CLIENTES.NOMBRE FROM FACTURAS INNER JOIN CLIENTES ON FACTURAS.ID_CLIENTE = CLIENTES.ID_CLIENTE WHERE FACTURAS.ID_FACTURA = {};'.format( nroDeLaUltimaFactura) funciones_SQLite.ejecutarComandoSQL(comandoSQL, cursorBaseDeDatos) tablaFechaYNumeroDeCliente = funciones_SQLite.extraerElemento( cursorBaseDeDatos) numeroDeCliente = tablaFechaYNumeroDeCliente[0] comandoSQL = 'SELECT ART_FACT.ID_ART,ARTICULOS.NOMBRE_ARTICULO,ART_FACT.CANTIDAD,ART_FACT.PRECIO FROM ART_FACT INNER JOIN ARTICULOS ON ARTICULOS.CODIGO_DE_BARRA = ART_FACT.ID_ART WHERE ID_FACT ={};'.format( str(nroDeLaUltimaFactura)) funciones_SQLite.ejecutarComandoSQL(comandoSQL, cursorBaseDeDatos) tablaArticulosFacturas = funciones_SQLite.extraerTabla(cursorBaseDeDatos) comandoSQL = 'SELECT NOMBRE, NUMERO_TELEFONO FROM CLIENTES WHERE ID_CLIENTE = {}'.format( numeroDeCliente) funciones_SQLite.ejecutarComandoSQL(comandoSQL, cursorBaseDeDatos) tablaCliente = funciones_SQLite.extraerElemento(cursorBaseDeDatos) print("FECHA:{:<20} ".format(fechaDeLaFactura) + "Cliente:{:<20} ".format(tablaCliente[0])) print( "---------------------------------------------------------------------------------------------------" ) encabezado = [ "Codigo de Producto", "Nombre/Descripcion", "Cantidad ", "Precio Por Unidad", "Total" ] print('|{:<20} '.format(encabezado[0]) + '|{:<20} '.format(encabezado[1]) + '|{:<20} '.format(encabezado[2]) + '|{:<20} '.format(encabezado[3]) + '|{:<9}|'.format(encabezado[4])) for i in tablaArticulosFacturas: print('|{:<20} '.format(i[0]) + '|{:<20} '.format(i[1]) + '|{:<20} '.format(i[2]) + '|{:<20} '.format(i[3]) + '|{}{:<8}|'.format("$", round(float(i[3]) * float(i[2]), 2))) print( "---------------------------------------------------------------------------------------------------" ) for i in tablaArticulosFacturas: total = float(i[3]) * float(i[2]) + total print("Subtotal:${0:.2f} ".format(round(total, 2))) print("IVA:${0:.2f}".format(round(total * 0.21, 2))) print("Total:${0:.2f}".format(round(total + total * 0.21, 2))) nombreDeArchivo = "factura{}.pdf".format(nroDeLaUltimaFactura) canvasDelPDF = canvas.Canvas(nombreDeArchivo, pagesize=A4) canvasDelPDF.setLineWidth(.3) canvasDelPDF.setFont('Helvetica', 10) canvasDelPDF.drawString(30, 750, 'NANO COTILLON') canvasDelPDF.drawString(30, 735, 'ELSA EDIS CORREA') canvasDelPDF.drawString(500, 750, 'Fecha: {}'.format(str(fechaDeLaFactura))) canvasDelPDF.line(480, 747, 580, 747) canvasDelPDF.drawString(400, 725, "Nombre de cliente:{}".format(tablaCliente[0])) canvasDelPDF.line(378, 723, 580, 723) canvasDelPDF.drawString(30, 703, 'Nro de factura:{}'.format(nroDeLaUltimaFactura)) canvasDelPDF.line(120, 700, 580, 700) canvasDelPDF.drawString( 30, 690, '-------------------------------------------------------------------------------------------------------------------------------------------' ) canvasDelPDF.drawString(30, 670, encabezado[0]) canvasDelPDF.drawString(150, 670, encabezado[1]) canvasDelPDF.drawString(280, 670, encabezado[2]) canvasDelPDF.drawString(350, 670, encabezado[3]) canvasDelPDF.drawString(470, 670, encabezado[4]) j = 0 contador = 0 ejeY = 670 ejeX = 30 for j in tablaArticulosFacturas: ejeY = ejeY - 25 ejeX = 30 canvasDelPDF.drawString(ejeX, ejeY, "{}".format(j[0])) ejeX = 150 canvasDelPDF.drawString(ejeX, ejeY, "{}".format(j[1])) ejeX = 280 canvasDelPDF.drawString(ejeX, ejeY, "{}".format(j[2])) ejeX = 350 canvasDelPDF.drawString(ejeX, ejeY, "{}".format(j[3])) ejeX = 470 canvasDelPDF.drawString(ejeX, ejeY, "${}".format(round(j[3] * j[2], 2))) ejeY = ejeY - 25 ejeX = 30 canvasDelPDF.drawString( ejeX, ejeY, '-----------------------------------------------------------------------------------------------------------------------------------------' ) ejeY = ejeY - 25 canvasDelPDF.drawString(ejeX, ejeY, "Subtotal: ${}".format(round(total, 2))) ejeY = ejeY - 25 canvasDelPDF.drawString(ejeX, ejeY, "IVA: ${}".format(round(total * 0.21, 2))) ejeY = ejeY - 25 canvasDelPDF.drawString( ejeX, ejeY, "Total: ${}".format(round(total + total * 0.21, 2))) canvasDelPDF.save()