示例#1
0
def create():
    if request.method == 'POST':
        cedula = request.form['cedula']
        nombre = request.form['nombre']
        direccion = request.form['direccion']
        telefono = request.form['telefono']
        foto = request.files['foto'].read()
        size = len(foto)
        error = None

        if not cedula:
            error = 'Debe ingresar la cédula.'
        elif not nombre:
            error = 'Debe ingresar el nombre.'
        elif not direccion:
            error = 'Debe ingresar la dirección.'
        elif not telefono:
            error = 'Debe ingresar el teléfono.'
        elif size <= 0:
            error = 'Debe seleccionar una foto.'
            
        # client validation
        clientRegistered = Client.query.filter_by(cedula=cedula).first()
        if clientRegistered is not None:
            error = 'El cliente {} ya se encuentra registrado.'.format(cedula)

        if error is not None:
            flash(error)
        else:
            newClient = Client(cedula, nombre, direccion, telefono, foto)
            db_session.add(newClient)
            db_session.commit()
            return redirect(url_for('client.index'))

    return render_template('client/create.html')
示例#2
0
def update(id):
    client = Client.query.filter_by(id=id).first()

    if request.method == 'POST':
        cedula = request.form['cedula']
        nombre = request.form['nombre']
        direccion = request.form['direccion']
        telefono = request.form['telefono']
        foto = request.files['foto'].read()
        size = len(foto)
        error = None

        if not cedula:
            error = 'Debe ingresar la cédula.'
        elif not nombre:
            error = 'Debe ingresar el nombre.'
        elif not direccion:
            error = 'Debe ingresar la dirección.'
        elif not telefono:
            error = 'Debe ingresar el teléfono.'
        
        if error is not None:
            flash(error)
        else:
            client.cedula = cedula
            client.nombre = nombre
            client.direccion = direccion
            client.telefono = telefono
            if size > 0:
                client.foto = foto
            db_session.commit()
            return redirect(url_for('client.index'))
    return render_template('client/update.html', client=client)
示例#3
0
def addproduct(id):
    products = Product.query.all()

    if request.method == 'POST':
        producto_id = request.form['producto_id']
        cantidad = request.form['cantidad']

        error = None

        if not producto_id:
            error = 'Debe seleccionar un producto'
        elif not cantidad:
            error = 'Debe ingresar una cantidad'
        elif int(cantidad) < 0:
            error = 'Debe ingresar un valor mayor a cero'

        product = Product.query.filter_by(id=producto_id).first()

        if product.cantidad_en_bodega < int(cantidad):
            error = 'La cantidad requerida del producto no se encuentra en bodega'

        if error is not None:
            flash(error)
        else:
            billdetail = BillDetail(id, producto_id, product.precio, cantidad)
            db_session.add(billdetail)
            product.cantidad_en_bodega = product.cantidad_en_bodega - int(
                cantidad)
            db_session.commit()
            return redirect(url_for('bill.detail', id=id))

    return render_template('bill/addproduct.html',
                           products=products,
                           bill_id=id)
示例#4
0
def delete(id):
    billdetails = BillDetail.query.filter_by(factura_id=id)

    for billdetail in billdetails:
        product = Product.query.filter_by(id=billdetail.producto_id).first()
        product.cantidad_en_bodega = product.cantidad_en_bodega + billdetail.cantidad
        db_session.commit()

    bill = BillHeader.query.filter_by(id=id).first()
    BillDetail.query.filter_by(factura_id=id).delete()
    db_session.delete(bill)
    db_session.commit()

    bills = BillHeader.query.all()
    return render_template('bill/index.html', bills=bills)
示例#5
0
def deletedetail(id):

    billdetail = BillDetail.query.filter_by(id=id).first()

    product = Product.query.filter_by(id=billdetail.producto_id).first()
    product.cantidad_en_bodega = product.cantidad_en_bodega + billdetail.cantidad

    bill = BillHeader.query.filter_by(id=billdetail.factura_id).first()

    db_session.delete(billdetail)
    db_session.commit()

    billdetails = BillDetail.query.filter_by(factura_id=bill.id).all()
    return render_template('bill/detail.html',
                           bill=bill,
                           billdetails=billdetails)
示例#6
0
def create():
    categories = Category.query.all()

    if request.method == 'POST':

        codigo = request.form['codigo']
        categoria_id = request.form['categoria_id']
        nombre = request.form['nombre']
        precio = request.form['precio']
        cantidad_en_bodega = request.form['cantidad_en_bodega']
        if request.form['estado'] == "True":
            estado = True
        else:
            estado = False

        error = None

        if not codigo:
            error = 'Debe ingresar el código del producto.'
        elif not categoria_id:
            error = 'Debe seleccionar la categoría del producto.'
        elif not nombre:
            error = 'Debe ingresar el nombre.'
        elif not precio:
            error = 'Debe ingresar el precio.'
        elif not cantidad_en_bodega:
            error = 'Debe seleccionar la cantidad disponible en bodega.'
        elif not estado:
            error = 'Debe seleccionar un estado.'

        # client validation
        productRegistered = Product.query.filter_by(codigo=codigo).first()
        if productRegistered is not None:
            error = 'El producto {} ya se encuentra registrado.'.format(codigo)

        if error is not None:
            flash(error)
        else:
            newProduct = Product(codigo, categoria_id, nombre, precio,
                                 cantidad_en_bodega, estado)
            db_session.add(newProduct)
            db_session.commit()
            return redirect(url_for('product.index'))

    return render_template('product/create.html', categories=categories)
示例#7
0
def update(id):
    product = Product.query.filter_by(id=id).first()
    categories = Category.query.all()

    if request.method == 'POST':
        codigo = request.form['codigo']
        categoria_id = request.form['categoria_id']
        nombre = request.form['nombre']
        precio = request.form['precio']
        cantidad_en_bodega = request.form['cantidad_en_bodega']
        if request.form['estado'] == "True":
            estado = True
        else:
            estado = False

        error = None

        if not codigo:
            error = 'Debe ingresar el código del producto.'
        elif not categoria_id:
            error = 'Debe seleccionar la categoría del producto.'
        elif not nombre:
            error = 'Debe ingresar el nombre.'
        elif not precio:
            error = 'Debe ingresar el precio.'
        elif not cantidad_en_bodega:
            error = 'Debe seleccionar la cantidad disponible en bodega.'
        elif not estado:
            error = 'Debe seleccionar un estado.'

        if error is not None:
            flash(error)
        else:
            product.codigo = codigo
            product.categoria_id = categoria_id
            product.nombre = nombre
            product.precio = precio
            product.cantidad_en_bodega = cantidad_en_bodega
            db_session.commit()
            return redirect(url_for('product.index'))
    return render_template('product/update.html',
                           product=product,
                           categories=Category.query.all())
示例#8
0
def create():
    clients = Client.query.all()
    paymentmethods = PaymentMethod.query.all()

    if request.method == 'POST':
        codigo = request.form['codigo']
        cliente_id = request.form['cliente_id']
        array_fecha_compra = request.form['fecha_compra'].split('-')
        fecha_compra = datetime.datetime(int(array_fecha_compra[0]),
                                         int(array_fecha_compra[1]),
                                         int(array_fecha_compra[2]))
        metodo_pago_id = request.form['metodo_pago_id']

        error = None

        if not codigo:
            error = 'Debe ingresar el código de la factura.'
        elif not cliente_id:
            error = 'Debe seleccionar un cliente.'
        elif not fecha_compra:
            error = 'Debe ingresar la fecha de compra.'
        elif not metodo_pago_id:
            error = 'Debe seleccionar un metodo de pago.'

        # client validation
        billRegistered = BillHeader.query.filter_by(codigo=codigo).first()
        if billRegistered is not None:
            error = 'La Factura {} ya se encuentra registrada.'.format(codigo)

        if error is not None:
            flash(error)
        else:
            newBill = BillHeader(codigo, cliente_id, fecha_compra,
                                 metodo_pago_id)
            db_session.add(newBill)
            db_session.commit()
            return redirect(url_for('bill.index'))

    return render_template('bill/create.html',
                           paymentmethods=paymentmethods,
                           clients=clients)
示例#9
0
def update(id):
    bill = BillHeader.query.filter_by(id=id).first()
    clients = Client.query.all()
    paymentmethods = PaymentMethod.query.all()

    if request.method == 'POST':
        codigo = request.form['codigo']
        cliente_id = request.form['cliente_id']
        array_fecha_compra = request.form['fecha_compra'].split('-')
        fecha_compra = datetime.datetime(int(array_fecha_compra[0]),
                                         int(array_fecha_compra[1]),
                                         int(array_fecha_compra[2]))
        metodo_pago_id = request.form['metodo_pago_id']

        error = None

        if not codigo:
            error = 'Debe ingresar el código de la factura.'
        elif not cliente_id:
            error = 'Debe seleccionar un cliente.'
        elif not fecha_compra:
            error = 'Debe ingresar la fecha de compra.'
        elif not metodo_pago_id:
            error = 'Debe seleccionar un metodo de pago.'

        if error is not None:
            flash(error)
        else:
            bill.codigo = codigo
            bill.cliente_id = cliente_id
            bill.fecha_compra = fecha_compra
            bill.metodo_pago_id = metodo_pago_id
            db_session.commit()
            return redirect(url_for('bill.index'))
    return render_template('bill/update.html',
                           bill=bill,
                           clients=clients,
                           paymentmethods=paymentmethods)
示例#10
0
def register():
    if request.method == 'POST':
        username = request.form['username']
        password = request.form['password']
        error = None

        if not username:
            error = 'El nombre de usuario es requerido.'
        elif not password:
            error = 'La Contraseña es requerida.'
        else:
            userRegistered = User.query.filter_by(username=username).first()
            if userRegistered is not None:
                error = '{} ya se encuentra registrado.'.format(username)

        if error is None:
            newUser = User(username, generate_password_hash(password))
            db_session.add(newUser)
            db_session.commit()
            return redirect(url_for('auth.login'))

        flash(error)

    return render_template('auth/register.html')
示例#11
0
def delete(id):
    product = Product.query.filter_by(id=id).first()
    product.estado = False
    db_session.commit()
    return redirect(url_for('product.index'))
示例#12
0
def delete(id):
    client = Client.query.filter_by(id=id).first()
    db_session.delete(client)
    db_session.commit()
    return redirect(url_for('client.index'))