Esempio n. 1
0
def create():
    if request.method == 'POST':
        provider_id = request.form['provider']
        product_id = request.form['product']
        quantity = request.form['quantity']
        amount = request.form['amount']
        expense_date = request.form['expense_date']

        error = None

        if not provider_id:
            error = 'Provider is required.'

        if not receipt:
            error = 'Receipt number is required.'

        if not product_id:
            error = 'Product is required.'

        if not amount:
            error = 'Amount is required.'

        if not expense_date:
            error = 'Expense date is required.'

        if error is not None:
            flash(error)
        else:
            db = get_db()
            db.execute(
                'INSERT INTO expense (provider_id, receipt_number, product_id, quantity, amount, expense_date)'
                ' VALUES (?, ?, ?, ?, ?)', (provider_id, receipt, product_id,
                                            quantity, amount, expense_date))
            db.commit()
            return redirect(url_for('expense.index'))

    db = get_db()
    providers = db.execute('SELECT id, name'
                           ' FROM provider'
                           ' ORDER BY name').fetchall()

    products = db.execute('SELECT id, description'
                          ' FROM product'
                          ' ORDER BY description').fetchall()

    return render_template('expense/create.html',
                           providers=providers,
                           products=products)
Esempio n. 2
0
def register():
    if request.method == 'POST':
        username = request.form['username']
        password = request.form['password']
        db = get_db()
        cursor = db.cursor()
        error = None

        if not username:
            error = 'Username is required.'
        elif not password:
            error = 'Password is required.'
        
        cursor.execute(
            "SELECT `id` FROM `user` WHERE `username` = %s", [username]
        )
        if cursor.fetchone() is not None:
            error = 'User {} is already registered.'.format(username)

        if error is None:
            cursor.execute(
                "INSERT INTO `user` (`username`, `password`) VALUES (%s, %s)",[username, generate_password_hash(password)]
            )
            db.commit()
            return redirect(url_for('auth.login'))

        flash(error)

    return render_template('auth/register.html')
Esempio n. 3
0
def register():
    # if method=GET take user to login page
    if request.method == 'GET':
        return render_template('login/register.html', page_header="Register")
    # if method=POST create a new username and password row in the users table
    elif request.method == 'POST':

        username = request.form.get('username')
        password = request.form.get('password')
        # do validation on page

        # check if user already exists
        cnx = get_db()
        cursor = cnx.cursor()
        query = '''
                SELECT login FROM users
                WHERE login = %s
                '''
        cursor.execute(query, (username, ))
        if cursor.fetchone() is not None:
            return render_template('login/register.html',
                                   page_header="Login",
                                   error_msg="Username already exits",
                                   username=request.form.get('username'))

        # if all good, insert new user into users table
        query = '''
                INSERT INTO users(login, password)
                VALUES (%s,%s)'''
        cursor.execute(query, (username, password))
        cnx.commit()

        return redirect(url_for('login'), code=307)
Esempio n. 4
0
def delete(id):
    ##payment = get_payment(id)
    db = get_db()
    db.execute('DELETE FROM payment WHERE id = ?', (id, ))
    db.commit()

    return redirect(url_for('payment.index'))
Esempio n. 5
0
def login():
    if request.method == 'POST':
        username = request.form['username']
        password = request.form['password']
        db = get_db()
        cursor = db.cursor()
        error = None
        cursor.execute(
            "SELECT * FROM `user` WHERE `username` = %s",
            [username]
        )
        user = cursor.fetchone()

        if user is None:
            error = 'Incorrect username.'
        elif not check_password_hash(user['password'], password):
            error = 'Incorrect password.'

        if error is None:
            session.clear()
            session['user_id'] = user['id']
            return redirect(url_for('index'))

        flash(error)

    return render_template('auth/login.html')
Esempio n. 6
0
def load_logged_in_user():
    user_id = session.get('user_id')

    if user_id is None:
        g.user = None
    else:
        g.user = get_db().execute('SELECT * FROM user WHERE id = ?',
                                  (user_id, )).fetchone()
Esempio n. 7
0
def amount():
    db = get_db()
    cursor = db.cursor()
    cursor.execute(
        "SELECT `type`, `name`, `model`, `amount` FROM `amount_count` ORDER BY `amount` DESC"
    )
    cursor.close()
    records = cursor.fetchall()
    return render_template('count/amount.html', records=records)
Esempio n. 8
0
def index():
    db = get_db()
    expenses = db.execute(
        'SELECT expense_date, receipt_number, amount, p.name as provider, pr.description as product'
        ' FROM expense e'
        '      JOIN provider p on e.provider_id = p.id'
        '      JOIN product pr on e.product_id = pr.id'
        ' ORDER BY expense_date DESC').fetchall()

    return render_template('expense/index.html', expenses=expenses)
Esempio n. 9
0
def delete(id):
    receipt = get_receipt(id)

    db = get_db()

    db.execute('DELETE FROM receipt WHERE id = ?', (id, ))

    db.commit()

    return redirect(url_for('receipt.index'))
Esempio n. 10
0
def update(id):
    if request.method == 'POST':
        ##issue_date = datetime.strptime(request.form['issue_date'], '%d/%m/%Y')
        issue_date = request.form['issue_date']
        ##iss_date = datetime.strptime(issue_date, '%d/%m/%Y')
        status = request.form['status']
        error = None

        if not issue_date:
            error = 'Issue date is required.'

        if error is not None:
            flash(error)
        else:
            db = get_db()

            db.execute(
                'UPDATE receipt SET issue_date = ?, status = ?'
                ' WHERE id = ?', (issue_date, status, id))

            db.commit()

            return redirect(url_for('receipt.index'))

    db = get_db()

    receipt = get_receipt(id)

    receivers = db.execute('SELECT id, prop_alias, name'
                           ' FROM occupant'
                           ' ORDER BY name').fetchall()

    concepts = db.execute('SELECT id, description'
                          ' FROM concept'
                          #' WHERE status = 1'
                          ' ORDER BY id').fetchall()

    return render_template('receipt/update.html',
                           receipt=receipt,
                           receivers=receivers,
                           concepts=concepts)
Esempio n. 11
0
def load_logged_in_user():
    user_id = session.get('user_id')

    if user_id is None:
        g.user = None
    else:
        db = get_db()
        cursor = db.cursor()
        cursor.execute(
            "SELECT * FROM `user` WHERE `id` = %s",
            [int(user_id)]
        )
        g.user = cursor.fetchone()
Esempio n. 12
0
def create():
    if request.method == 'POST':
        number = request.form['number']
        concept = request.form['concept']
        receiver = request.form['receiver']
        amount = request.form['amount']
        issue_date = request.form['issue_date']
        status = request.form['status']
        error = None

        if not number:
            error = 'Receipt number is required.'

        if error is not None:
            flash(error)
        else:
            db = get_db()
            db.execute(
                'INSERT INTO receipt (number, concept_id, person_id, amount, issue_date, status)'
                ' VALUES (?, ?, ?, ?, ?, ?)',
                (number, concept, receiver, amount, issue_date, status))
            db.commit()
            return redirect(url_for('receipt.index'))

    db = get_db()
    receivers = db.execute('SELECT *'
                           ' FROM occupant'
                           ' ORDER BY name').fetchall()

    concepts = db.execute('SELECT id, description'
                          ' FROM concept'
                          ' ORDER BY id').fetchall()

    current_app.logger.debug('found concepts: ' + str(len(receivers)))

    return render_template('receipt/create.html',
                           receivers=receivers,
                           concepts=concepts)
Esempio n. 13
0
def index():
    db = get_db()
    receipts = db.execute(
        'SELECT r.id, o.id as receiver_id,'
        '       o.name as receiver, o.prop_alias as property,'
        '       r.number, c.description concept, r.amount, r.issue_date, r.status'
        ' FROM receipt r'
        '       LEFT JOIN occupant o ON r.person_id = o.id'
        '       LEFT JOIN concept c ON r.concept_id = c.id'
        ' ORDER BY issue_date DESC').fetchall()

    current_app.logger.debug('receipts counter: ' + str(len(receipts)))

    return render_template('receipt/index.html', receipts=receipts)
Esempio n. 14
0
def index():
    db = get_db()
    payments = db.execute(
        'SELECT p.id, o.prop_alias property, o.name as receiver_name,'
        '       c.description as concept,'
        '       r.number, r.amount, r.issue_date receipt_date, p.payment_date, p.amount, r.status'
        '  FROM payment p'
        '       LEFT JOIN receipt r ON p.receipt_id = r.id'
        '       LEFT JOIN concept c ON r.concept_id = c.id'
        '       LEFT JOIN occupant o ON r.person_id = o.id'
        ' WHERE r.status = "C"'
        ' ORDER BY p.payment_date DESC').fetchall()

    return render_template('payment/index.html', payments=payments)
Esempio n. 15
0
def update(id):
    if request.method == 'POST':
        amount = request.form['amount']
        payment_date = request.form['payment_date']
        status = request.form['status']
        error = None

        if not payment_date:
            error = 'Issue date is required.'

        if error is not None:
            flash(error)
        else:
            db = get_db()
            db.execute(
                'UPDATE payment SET payment_date = ?, amount = ?'
                ' WHERE id = ?', (payment_date, amount, id))
            db.commit()
            return redirect(url_for('payment.index'))

    db = get_db()

    payment = get_payment(id)

    receivers = db.execute('SELECT id, name, prop_alias'
                           ' FROM occupant'
                           ' ORDER BY name').fetchall()

    concepts = db.execute('SELECT id, description'
                          ' FROM concept'
                          ' ORDER BY id').fetchall()
    #' WHERE status = 1'

    return render_template('payment/update.html',
                           payment=payment,
                           receivers=receivers,
                           concepts=concepts)
Esempio n. 16
0
def get_receipt(id, check_user=True):
    receipt = get_db().execute(
        'SELECT r.id, number, c.id as concept_id, c.description as concept_desc,'
        ' p.id as receiver_id, p.first_name || " " || p.last_name as receiver,'
        ' pr.description, amount, issue_date, r.status'
        '  FROM receipt r'
        ' JOIN person p on r.person_id = p.id'
        ' JOIN owner o on r.person_id = o.person_id'
        ' JOIN property pr on o.property_id = pr.id'
        ' JOIN concept c on r.concept_id = c.id'
        ' WHERE r.id = ?', (id, )).fetchone()

    if receipt is None:
        abort(404, "Receipt id {0} does not exist.".format(id))

    return receipt
Esempio n. 17
0
def populate_receipts():
    person_id = request.args.get('person_id', 0)

    current_app.logger.debug('person_id: ' + person_id)

    receipts = get_db().execute(
        'SELECT r.id, number || " - " || c.description as concept'
        '  FROM receipt r'
        '       JOIN concept c ON r.concept_id = c.id'
        ' WHERE r.person_id = ?', (person_id, )).fetchall()

    current_app.logger.debug('found receipts: ' + str(len(receipts)))

    #dict_receipts = [dict(rec) for rec in receipts]

    return jsonify(result=[dict(rec) for rec in receipts])
Esempio n. 18
0
def get_payment(id, check_user=True):
    payment = get_db().execute(
        'SELECT py.id, py.amount, py.payment_date,'
        ' c.id as concept_id, c.description as concept_desc,'
        ' o.id receiver_id, o.name as receiver_name, o.property,'
        ' r.id as receipt_id, r.number receipt_number, r.amount receipt_amount,'
        ' r.issue_date as receipt_date, r.status'
        '  FROM payment py'
        ' LEFT JOIN receipt r ON py.receipt_id = r.id'
        ' LEFT JOIN concept c ON r.concept_id = c.id'
        ' LEFT JOIN occupant o ON r.person_id = o.id'
        ' WHERE py.id = ?', (id, )).fetchone()

    if payment is None:
        abort(404, "Receipt id {0} does not exist.".format(id))

    return payment
Esempio n. 19
0
def get_pdf_receipt(id):
    receipt = get_db().execute(
        'SELECT r.id, number, c.description as concept,'
        ' p.first_name || " " || p.last_name as owner,'
        ' pr.description as property, pm.amount, payment_date,'
        ' pn.text as note, r.status'
        '  FROM receipt r'
        ' LEFT JOIN person p ON r.person_id = p.id'
        ' LEFT JOIN owner o ON r.person_id = o.person_id'
        ' LEFT JOIN tenant t ON r.person_id = t.person_id'
        ' LEFT JOIN property pr ON ( o.property_id = pr.id OR t.property_id = pr.id )'
        ' LEFT JOIN concept c ON r.concept_id = c.id'
        ' LEFT JOIN payment pm ON r.id = pm.receipt_id'
        ' LEFT JOIN payment_note pn ON pm.id = pn.payment_id'
        ' WHERE r.id = ?', (id, )).fetchone()

    current_app.logger.debug(receipt)

    if receipt is None:
        abort(404, "Receipt id {0} does not exist.".format(id))

    return receipt
Esempio n. 20
0
def register():
    if request.method == 'POST':
        username = request.form['username']
        password = request.form['password']
        db = get_db()
        error = None

        if not username:
            error = 'Username is required.'
        elif not password:
            error = 'Password is required.'
        elif db.execute('SELECT id FROM user WHERE username = ?',
                        (username, )).fetchone() is not None:
            error = 'User {} is already registered.'.format(username)

        if error is None:
            db.execute('INSERT INTO user (username, password) VALUES (?, ?)',
                       (username, generate_password_hash(password)))
            db.commit()
            return redirect(url_for('auth.login'))

        flash(error)

    return render_template('auth/register.html')
Esempio n. 21
0
def create():
    if request.method == 'POST':
        receipt_id = request.form['receipt']
        amount = request.form['amount']
        payment_date = request.form['payment_date']
        note = request.form['payment_note']

        error = None

        if not receipt_id:
            error = 'Receipt number is required.'

        if error is not None:
            flash(error)
        else:
            db = get_db()
            ##c = db.cursor()
            payment_id = db.execute(
                'INSERT INTO payment (receipt_id, amount, payment_date)'
                ' VALUES (?, ?, ?)',
                (receipt_id, amount, payment_date)).lastrowid
            ##payment_id = c.lastrowid
            db.commit()

            db.execute('UPDATE receipt SET status = ?'
                       ' WHERE id = ?', ('C', receipt_id))
            db.commit()

            current_app.logger.debug('Payment note: ' + note)

            if note:
                db.execute(
                    'INSERT INTO payment_note (payment_id, text)'
                    ' VALUES (?, ?)', (payment_id, note))
                db.commit()

            return redirect(url_for('payment.index'))

    db = get_db()

    receipt_id = request.args.get('receipt_id')

    if not receipt_id:
        receipts = db.execute(
            'SELECT r.id, number, c.description, amount, r.status'
            ' FROM receipt r'
            '      JOIN concept c ON r.concept_id = c.id'
            ' ORDER BY number').fetchall()
    else:
        receipts = db.execute(
            'SELECT r.id, number, c.description, amount, r.status'
            ' FROM receipt r'
            '      JOIN concept c ON r.concept_id = c.id'
            ' WHERE r.id = ?', (receipt_id, )).fetchall()

    receiver_id = request.args.get('receiver_id')

    if not receiver_id:
        receivers = db.execute('SELECT id, name, property'
                               ' FROM occupant o'
                               ' ORDER BY name').fetchall()
    else:
        current_app.logger.debug('receiver_id: ' + str(receiver_id))

        receivers = db.execute(
            'SELECT id, name, property'
            ' FROM occupant'
            ' WHERE id = ?', (receiver_id, )).fetchall()

    current_app.logger.debug('receivers: ' + str(len(receivers)))

    return render_template('payment/create.html',
                           receipts=receipts,
                           receivers=receivers)