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 agregarArticulo():
    codigoDeBarras = ingreso_de_datos.ingresoCodigoDeBarras()
    validacionParaAgregarRegistro = verificarQueNoExistaElArticulo(codigoDeBarras)

    if(validacionParaAgregarRegistro):
        nombreDelArticulo = ingreso_de_datos.ingresoNombre("Articulo")
        nombreDeLaMarcaDelArticulo = ingreso_de_datos.ingresoNombre("Marca")
        precioDelArticulo = ingreso_de_datos.ingresoDePrecio()
        numeroDeAreaDelArticulo = ingreso_de_datos.ingresoDeArea()
        existeMarca = verificarSiExisteMarca(nombreDeLaMarcaDelArticulo)

        if (existeMarca):
            numeroDeMarcaDelArticulo = ingreso_de_datos.determinarNumeroDeMarcaDelArticulo(nombreDeLaMarcaDelArticulo)
        else:
            comandoSQL = 'INSERT INTO MARCAS (NOMBRE_MARCA,ALTA_BAJA) VALUES("{}",1)'.format(nombreDeLaMarcaDelArticulo)
            funciones_SQLite.ejecutarComandoSQL(comandoSQL, cursorBaseDeDatos)
            funciones_SQLite.guardarBaseDeDatos(baseDeDatos)

        numeroDeMarcaDelArticulo = ingreso_de_datos.determinarNumeroDeMarcaDelArticulo(nombreDeLaMarcaDelArticulo)
        stockDelArticulo = ingreso_de_datos.ingresoCantidadDeStock()

        comandoSQL = 'INSERT INTO ARTICULOS (CODIGO_DE_BARRA, NOMBRE_ARTICULO,PRECIO,ARTICULO_MARCA,ARTICULO_AREA,STOCK,ALTA_BAJA)' \
                 'VALUES({},"{}",{},{},{},{},{});'\
        .format(codigoDeBarras,nombreDelArticulo,precioDelArticulo,numeroDeMarcaDelArticulo,numeroDeAreaDelArticulo,stockDelArticulo,str(1))
        funciones_SQLite.ejecutarComandoSQL(comandoSQL,cursorBaseDeDatos)
        funciones_SQLite.guardarBaseDeDatos(baseDeDatos)
    else:
        print("Ya existe ese articulo ")
def modificarArticulo():
    tablaDatosDelArticulo = extraerDatosDelArticuloAModificar()

    antiguoNombre = tablaDatosDelArticulo[0][0] #OK
    antiguoPrecio = tablaDatosDelArticulo[0][1] #OK
    antiguoIDMarca = tablaDatosDelArticulo[0][2]#OK
    antiguoIDArea = tablaDatosDelArticulo[0][3]#OK
    antiguoStock = tablaDatosDelArticulo[0][4]#OK
    codigoDeBarras = tablaDatosDelArticulo[0][5]#OK

    mensaje = "¿Que campos desea modificar?"

    nombreNuevo = funciones_para_modificar_articulo.modificarNombre(antiguoNombre)
    nombreDeMarcaNuevo = funciones_para_modificar_articulo.modificarMarca(antiguoIDMarca)#Ver futuros problemas
    precioNuevo = funciones_para_modificar_articulo.modificarPrecio(antiguoPrecio)
    stockNuevo = funciones_para_modificar_articulo.modificarStock(antiguoStock)#Ver futuros problemas
    areaNueva = funciones_para_modificar_articulo.modificarArea(antiguoIDArea)#Ver futuros problemas

    numeroDeIDDeLaMarcaNueva = ingreso_de_datos.determinarNumeroDeMarcaDelArticulo(nombreDeMarcaNuevo)
    if (numeroDeIDDeLaMarcaNueva == None):
        comandoSQL = 'INSERT INTO MARCAS (NOMBRE_MARCA,ALTA_BAJA) VALUES("{}",1)'.format(nombreDeMarcaNuevo)
        funciones_SQLite.ejecutarComandoSQL(comandoSQL, cursorBaseDeDatos)
        funciones_SQLite.guardarBaseDeDatos(baseDeDatos)
        numeroDeIDDeLaMarcaNueva = ingreso_de_datos.determinarNumeroDeMarcaDelArticulo(nombreDeMarcaNuevo)


    comandoSQL = 'UPDATE ARTICULOS SET NOMBRE_ARTICULO = "{}", PRECIO = {} ,ARTICULO_MARCA = {},ARTICULO_AREA = {} ,STOCK = {} WHERE CODIGO_DE_BARRA = {} ;'.format(nombreNuevo,str(precioNuevo),numeroDeIDDeLaMarcaNueva,str(areaNueva),str(stockNuevo),str(codigoDeBarras))
    funciones_SQLite.ejecutarComandoSQL(comandoSQL,cursorBaseDeDatos)
    funciones_SQLite.guardarBaseDeDatos(baseDeDatos)
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 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 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
예제 #8
0
def extraerIDDeLaUltimaFactura():
    comandoSQL = 'SELECT MAX(ID_FACTURA) FROM FACTURAS;'
    funciones_SQLite.ejecutarComandoSQL(comandoSQL, cursorBaseDeDatos)
    idDeUltimaFactura = funciones_SQLite.extraerElemento(cursorBaseDeDatos)
    if (idDeUltimaFactura[0] == None):
        idDeUltimaFactura = 1
    else:
        idDeUltimaFactura = idDeUltimaFactura[0] + 1
    return idDeUltimaFactura
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
예제 #10
0
def verificarQueExistaElArticulo(codigoDeBarra):
    comandoSQL = 'SELECT * FROM ARTICULOS WHERE CODIGO_DE_BARRA = {}'.format(
        codigoDeBarra)
    funciones_SQLite.ejecutarComandoSQL(comandoSQL, cursorBaseDeDatos)
    articuloBuscado = funciones_SQLite.extraerElemento(cursorBaseDeDatos)
    if (articuloBuscado == None):
        return False
    else:
        return True
def eliminarCliente():
    nombreCliente = ingreso_de_datos.ingresoNombre("Cliente")
    existeCliente = verificarSiExisteCliente(nombreCliente)
    if (existeCliente):
        comandoSQL = 'UPDATE CLIENTES SET ALTA_BAJA = 0 WHERE NOMBRE = "{}"'.format(
            nombreCliente)
        funciones_SQLite.ejecutarComandoSQL(comandoSQL, cursorBaseDeDatos)
        funciones_SQLite.guardarBaseDeDatos(baseDeDatos)
    else:
        print("No existe el cliente")
def agregarMarca():
    nombreDeLaMarca = ingreso_de_datos.ingresoNombre("Marca")
    numeroDeIDDeLaMarca = ingreso_de_datos.determinarNumeroDeMarcaDelArticulo(nombreDeLaMarca)

    if(numeroDeIDDeLaMarca == None):
        comandoSQL = 'INSERT INTO MARCAS (NOMBRE_MARCA,ALTA_BAJA) VALUES("{}",1)'.format(nombreDeLaMarca)
        funciones_SQLite.ejecutarComandoSQL(comandoSQL,cursorBaseDeDatos)
        funciones_SQLite.guardarBaseDeDatos(baseDeDatos)
    else:
        print("Ya existe la marca ")
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 eliminarMarca():
    nombreMarca = ingreso_de_datos.ingresoNombre("Marca")
    existeMarca = verificarSiExisteMarca(nombreMarca)
    if (existeMarca):
        comandoSQL = 'UPDATE MARCAS SET ALTA_BAJA = 0 WHERE NOMBRE_MARCA = "{}"'.format(
            nombreMarca)
        funciones_SQLite.ejecutarComandoSQL(comandoSQL, cursorBaseDeDatos)
        funciones_SQLite.guardarBaseDeDatos(baseDeDatos)
    else:
        print("No existe el cliente")
예제 #15
0
def verificarStockDisponible(codigoDeBarra, stockDeseado):
    comandoSQL = 'SELECT STOCK FROM ARTICULOS WHERE CODIGO_DE_BARRA = {};'.format(
        codigoDeBarra)
    funciones_SQLite.ejecutarComandoSQL(comandoSQL, cursorBaseDeDatos)
    stockDisponible = funciones_SQLite.extraerElemento(cursorBaseDeDatos)
    stockDisponible = stockDisponible[0]
    if (stockDisponible < stockDeseado):
        print("Solo quedan disponibles {} unidades".format(stockDisponible))
        return False
    else:
        return True
def modificarMarca():
    nombreAModificar = ingreso_de_datos.ingresoNombre("Marca a modificar")
    existeMarca = verificarSiExisteMarca(nombreAModificar)
    if (existeMarca):
        IDMarcaAntiguo = ingreso_de_datos.determinarNumeroDeMarcaDelArticulo(nombreAModificar)
        nombreNuevo = ingreso_de_datos.ingresoNombre("Nueva Marca")
        comandoSQL = 'UPDATE MARCAS SET NOMBRE_MARCA = "{}" WHERE ID_MARCA = {} '.format(nombreNuevo,IDMarcaAntiguo)
        funciones_SQLite.ejecutarComandoSQL(comandoSQL, cursorBaseDeDatos)
        funciones_SQLite.guardarBaseDeDatos(baseDeDatos)
    else:
        print("No existe ese cliente")
def agregarCliente():
    nombreDelCliente = ingreso_de_datos.ingresoNombre("Cliente")
    noExisteCliente = verificarQueNoExistaElCliente(nombreDelCliente)

    if(noExisteCliente):
        numeroDeTelefonoDelCliente = ingreso_de_datos.ingresoNumeroDelCliente()
        comandoSQL = 'INSERT INTO CLIENTES(NOMBRE,NUMERO_TELEFONO,ALTA_BAJA) VALUES("{}",{},1);'.format(nombreDelCliente,numeroDeTelefonoDelCliente)
        funciones_SQLite.ejecutarComandoSQL(comandoSQL,cursorBaseDeDatos)
        funciones_SQLite.guardarBaseDeDatos(baseDeDatos)
    else:
        print("Ya existe el cliente")
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 modificarCliente():
    nombreAModificar = ingreso_de_datos.ingresoNombre("Cliente a modificar")
    existeCliente = verificarSiExisteCliente(nombreAModificar)
    if(existeCliente):
        tablaDatosDelCliente = extraerDatosDelClienteAModificar(nombreAModificar)
        antiguoNombre = tablaDatosDelCliente[0]
        antiguoNumero = tablaDatosDelCliente[1]
        nuevoNombre = funciones_para_modificar_cliente.modificarNombre(antiguoNombre)
        nuevoNumero = funciones_para_modificar_cliente.modificarNumero(antiguoNumero)
        comandoSQL = 'UPDATE CLIENTES SET NOMBRE = "{}",NUMERO_TELEFONO = {} ;'.format(nuevoNombre,nuevoNumero)
        funciones_SQLite.ejecutarComandoSQL(comandoSQL,cursorBaseDeDatos)
        funciones_SQLite.guardarBaseDeDatos(baseDeDatos)
    else:
        print("No existe ese cliente")
예제 #20
0
def crearFacturaVersion2():
    articulosFacturados = []
    contador = 0
    idDeUltimaFactura = extraerIDDeLaUltimaFactura()
    nombreDelCliente = ingreso_de_datos.ingresoNombre("Cliente")
    existeCliente = verificarSiExisteCliente(nombreDelCliente)
    if (not existeCliente):
        print("No existe el cliente, debe agregarlo")
        agregarRegistros.agregarCliente()

    validacionSeguirFacturando = True
    while (validacionSeguirFacturando):
        codigoDeBarras = ingreso_de_datos.ingresoCodigoDeBarras()
        existeArticulo = verificarQueExistaElArticulo(codigoDeBarras)
        if (not existeArticulo):
            agregarRegistros.agregarArticulo()

        print("Ingrese stock deseado")
        stockDeseadoDelArticulo = ingreso_de_datos.ingresoCantidadDeStock()
        stockDeseadoDelArticulo = int(stockDeseadoDelArticulo)
        sePoseeElStockDeseado = verificarStockDisponible(
            codigoDeBarras, stockDeseadoDelArticulo)

        if (sePoseeElStockDeseado):
            articulosFacturados.append(
                (codigoDeBarras, stockDeseadoDelArticulo))
            validacionSeguirFacturando = deseaSeguirIngresandoArticulosALaFactura(
            )
        else:
            validacionSeguirFacturando = deseaSeguirIngresandoArticulosALaFactura(
            )

    if (len(articulosFacturados) == 0):
        print("No se realizo factura alguna")
    else:
        while (contador < (len(articulosFacturados))):
            comandoSQL = 'SELECT ARTICULOS.CODIGO_DE_BARRA,ARTICULOS.NOMBRE_ARTICULO,MARCAS.ID_MARCA, ARTICULOS.PRECIO FROM ARTICULOS,MARCAS WHERE ARTICULOS.CODIGO_DE_BARRA = {}'.format(
                codigoDeBarras)
            funciones_SQLite.ejecutarComandoSQL(comandoSQL, cursorBaseDeDatos)
            articuloConsultado = funciones_SQLite.extraerElemento(
                cursorBaseDeDatos)
            codigoDeBarrasDelArticulo = articuloConsultado[0]
            precioDelArticulo = articuloConsultado[3]

            comandoSQL = 'INSERT INTO ART_FACT(ID_ART,ID_FACT,CANTIDAD,PRECIO) VALUES({},{},{},{});'.format(
                codigoDeBarrasDelArticulo, str(idDeUltimaFactura),
                stockDeseadoDelArticulo, str(precioDelArticulo))
            funciones_SQLite.ejecutarComandoSQL(comandoSQL, cursorBaseDeDatos)

            comandoSQL = 'INSERT INTO FACTURAS (ID_CLIENTE) VALUES ((SELECT ID_CLIENTE FROM CLIENTES WHERE NOMBRE = "{}"));'.format(
                nombreDelCliente)
            funciones_SQLite.ejecutarComandoSQL(comandoSQL, cursorBaseDeDatos)
            funciones_SQLite.guardarBaseDeDatos(baseDeDatos)

            comandoSQL = 'UPDATE ARTICULOS SET STOCK = (SELECT STOCK FROM ARTICULOS WHERE CODIGO_DE_BARRA = {})-{} WHERE CODIGO_DE_BARRA = {}'.format(
                codigoDeBarras, stockDeseadoDelArticulo, codigoDeBarras)
            funciones_SQLite.ejecutarComandoSQL(comandoSQL, cursorBaseDeDatos)
            funciones_SQLite.guardarBaseDeDatos(baseDeDatos)
            contador = contador + 1
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]))
예제 #23
0
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
예제 #24
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
        """
예제 #25
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
def buscarPrecioDeUnArticulo():
    codigoDeBarrasDelArticuloBuscado = ingreso_de_datos.ingresoCodigoDeBarras()
    comandoSQL = 'SELECT ARTICULOS.CODIGO_DE_BARRA, ARTICULOS.NOMBRE_ARTICULO, ARTICULOS.PRECIO,ARTICULOS.STOCK, MARCAS.NOMBRE_MARCA FROM (ARTICULOS) INNER JOIN MARCAS ON ARTICULO_MARCA = ID_MARCA WHERE CODIGO_DE_BARRA ={};'.format(
        codigoDeBarrasDelArticuloBuscado)
    funciones_SQLite.ejecutarComandoSQL(comandoSQL, cursorBaseDeDatos)
    articuloBuscado = funciones_SQLite.extraerElemento(cursorBaseDeDatos)
    if (articuloBuscado == None):
        print("No se encuentra registrado el articulo!!!")
    else:
        encabezado = [
            "Codigo de Producto", "Nombre/Descripcion", "Precio Por Unidad",
            "Cantidad ", "Marca"
        ]
        print('|{:<20} '.format(encabezado[0]) +
              '|{:<30} '.format(encabezado[1]) +
              '|{:<20} '.format(encabezado[2]) +
              '|{:<9} '.format(encabezado[3]) +
              '|{:<20}|'.format(encabezado[4]))
        print('|{:<20} '.format(articuloBuscado[0]) +
              '|{:<30} '.format(articuloBuscado[1]) +
              '|{:<20} '.format(articuloBuscado[2]) +
              '|{:<9} '.format(articuloBuscado[3]) +
              '|{:<20}|'.format(articuloBuscado[4]))
def extraerDatosDelClienteAModificar(nombreAModificar):
    comandoSQL = 'SELECT NOMBRE,NUMERO_TELEFONO FROM CLIENTES WHERE NOMBRE = "{}";'.format(nombreAModificar)
    funciones_SQLite.ejecutarComandoSQL(comandoSQL,cursorBaseDeDatos)
    tablaDatosDelCliente = funciones_SQLite.extraerElemento(cursorBaseDeDatos)
    return tablaDatosDelCliente
def eliminarArticulo():
    codigoDeBarras = ingreso_de_datos.ingresoCodigoDeBarras()
    comandoSQL = 'UPDATE ARTICULOS SET ALTA_BAJA = 0 WHERE CODIGO_DE_BARRA = {} '.format(
        str(codigoDeBarras))
    funciones_SQLite.ejecutarComandoSQL(comandoSQL, cursorBaseDeDatos)
    funciones_SQLite.guardarBaseDeDatos(baseDeDatos)
예제 #29
0
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()