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
Beispiel #12
0
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
Beispiel #13
0
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()