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 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 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 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 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)