Exemple #1
0
def new_invoice_post():
    invoice_number = request.form['invoice_number']
    received_date = us_to_sql_date(request.form['date_received']),
    part_numbers = filter(None, request.form.getlist('part_numbers[]'))
    part_numbers = [x.upper() for x in part_numbers]
    assoc_pos = request.form.getlist('assoc_pos[]')
    shelf_locations = request.form.getlist('shelf_locations[]')
    if Invoice.query.get(invoice_number):
        flash("The invoice number has already existed", 'alert-danger')
        return redirect(url_for('new_invoice'))
    invoice = Invoice(
        invoice_number=invoice_number,
        received_date=received_date
    )
    for idx, x in enumerate(part_numbers):
        invoice_detail = InvoiceDetail(
            purchase_order_number=assoc_pos[idx],
            shelf_location=shelf_locations[idx],
        )
        part = Part.get_or_create(x, db.session)
        invoice_detail.part = part
        invoice.parts.append(invoice_detail)
    db.session.add(invoice)
    db.session.commit()
    flash('Invoice created successfully', 'alert-success')
    return redirect(url_for('invoices'))
Exemple #2
0
def new_invoice_excel():
    excel_file = request.get_dict(field_name='invoice_file')
    samsung_keys = (
        'Shipped Parts', 'Qty', 'Amount', 'Delivery No',
        'P/O No', 'Description', 'Tracking No',
    )
    # Check for valid Samsung invoice format
    if all(k in excel_file for k in samsung_keys):
        invoice_number = excel_file['Delivery No'][0]
        if Invoice.query.get(invoice_number):
            flash('This invoice already exists', 'alert-danger')
            return redirect(url_for('invoices'))
        invoice = Invoice(invoice_number=invoice_number)
        for idx, part_number in enumerate(excel_file['Shipped Parts']):
            qty = int(excel_file['Qty'][idx])
            purchase_order_number = excel_file['P/O No'][idx]
            description = excel_file['Description'][idx].strip()
            price = float(excel_file['Amount'][idx]) / qty
            part = Part.get_or_create(part_number, db.session)
            part.description = description
            part.price = price
            for _ in range(qty):
                invoice_detail = InvoiceDetail(
                    invoice_number=invoice_number,
                    purchase_order_number=purchase_order_number,
                )
                invoice_detail.part = part
                invoice.parts.append(invoice_detail)
        db.session.add(invoice)
        db.session.commit()
        flash('Imported excel file successfully', 'alert-success')
    else:
        flash('Invalid file, try again', 'alert-danger')
    return redirect(url_for('invoices'))
Exemple #3
0
def update_invoice(invoice_number):
    invoice = Invoice.query.get(invoice_number)
    if not invoice:
        flash('The invoice number does not exist', 'alert-danger')
        return redirect(url_for('invoices'))
    received_date = us_to_sql_date(request.form['date_received'])
    invoice_detail_id = request.form.getlist('invoice_detail_id[]')
    part_numbers = filter(None, request.form.getlist('part_numbers[]'))
    part_numbers = [x.upper() for x in part_numbers]
    assoc_pos = request.form.getlist('assoc_pos[]')
    shelf_locations = request.form.getlist('locations[]')
    statuses = request.form.getlist('statuses[]')
    invoice.received_date = received_date
    for idx, x in enumerate(part_numbers):
        invoice_detail = InvoiceDetail.query.get(invoice_detail_id[idx])
        part = Part.get_or_create(x, db.session)
        if not invoice_detail:
            invoice_detail = InvoiceDetail(
                purchase_order_number=assoc_pos[idx],
                shelf_location=shelf_locations[idx],
            )
            invoice_detail.part = part
            invoice_detail.purchase_order_number = assoc_pos[idx]
            invoice_detail.status = statuses[idx]
            invoice_detail.shelf_location = shelf_locations[idx]
            invoice.parts.append(invoice_detail)
        else:
            if statuses[idx] == 'Remove':
                db.session.delete(invoice_detail)
            else:
                if (statuses[idx] in ('In Stock - Claimed', 'Used - Claimed')
                        and statuses[idx] != invoice_detail.status):
                    invoice_detail.claimed = True
                    invoice_detail.claimed_date = datetime.date.today()
                elif statuses[idx] == 'New':
                    invoice_detail.claimed = False
                    invoice_detail.claimed_date = None
                invoice_detail.part = part
                invoice_detail.purchase_order_number = assoc_pos[idx]
                invoice_detail.status = statuses[idx]
                invoice_detail.shelf_location = shelf_locations[idx]
    db.session.commit()
    flash('Change(s) saved', 'alert-success')
    return redirect(url_for('invoices'))
Exemple #4
0
def update_invoice(invoice_number):
    invoice = Invoice.query.get(invoice_number)
    if not invoice:
        flash('The invoice number does not exist', 'alert-danger')
        return redirect(url_for('invoices'))
    received_date = us_to_sql_date(request.form['date_received'])
    invoice_detail_id = request.form.getlist('invoice_detail_id[]')
    part_numbers = filter(None, request.form.getlist('part_numbers[]'))
    part_numbers = [x.upper() for x in part_numbers]
    assoc_pos = request.form.getlist('assoc_pos[]')
    shelf_locations = request.form.getlist('locations[]')
    statuses = request.form.getlist('statuses[]')
    invoice.received_date = received_date
    for idx, x in enumerate(part_numbers):
        invoice_detail = InvoiceDetail.query.get(invoice_detail_id[idx])
        part = Part.get_or_create(x, db.session)
        if not invoice_detail:
            invoice_detail = InvoiceDetail(
                purchase_order_number=assoc_pos[idx],
                shelf_location=shelf_locations[idx],
            )
            invoice_detail.part = part
            invoice_detail.purchase_order_number = assoc_pos[idx]
            invoice_detail.status = statuses[idx]
            invoice_detail.shelf_location = shelf_locations[idx]
            invoice.parts.append(invoice_detail)
        else:
            if statuses[idx] == 'Remove':
                db.session.delete(invoice_detail)
            else:
                if (statuses[idx] in ('In Stock - Claimed', 'Used - Claimed')
                        and statuses[idx] != invoice_detail.status):
                    invoice_detail.claimed = True
                    invoice_detail.claimed_date = datetime.date.today()
                elif statuses[idx] == 'New':
                    invoice_detail.claimed = False
                    invoice_detail.claimed_date = None
                invoice_detail.part = part
                invoice_detail.purchase_order_number = assoc_pos[idx]
                invoice_detail.status = statuses[idx]
                invoice_detail.shelf_location = shelf_locations[idx]
    db.session.commit()
    flash('Change(s) saved', 'alert-success')
    return redirect(url_for('invoices'))
Exemple #5
0
def new_invoice_excel():
    excel_file = request.get_dict(field_name='invoice_file')
    samsung_keys = (
        'Shipped Parts',
        'Qty',
        'Amount',
        'Delivery No',
        'P/O No',
        'Description',
        'Tracking No',
    )
    # Check for valid Samsung invoice format
    if all(k in excel_file for k in samsung_keys):
        invoice_number = excel_file['Delivery No'][0]
        if Invoice.query.get(invoice_number):
            flash('This invoice already exists', 'alert-danger')
            return redirect(url_for('invoices'))
        invoice = Invoice(invoice_number=invoice_number)
        for idx, part_number in enumerate(excel_file['Shipped Parts']):
            qty = int(excel_file['Qty'][idx])
            purchase_order_number = excel_file['P/O No'][idx]
            description = excel_file['Description'][idx].strip()
            price = float(excel_file['Amount'][idx]) / qty
            part = Part.get_or_create(part_number, db.session)
            part.description = description
            part.price = price
            for _ in range(qty):
                invoice_detail = InvoiceDetail(
                    invoice_number=invoice_number,
                    purchase_order_number=purchase_order_number,
                )
                invoice_detail.part = part
                invoice.parts.append(invoice_detail)
        db.session.add(invoice)
        db.session.commit()
        flash('Imported excel file successfully', 'alert-success')
    else:
        flash('Invalid file, try again', 'alert-danger')
    return redirect(url_for('invoices'))
Exemple #6
0
def new_invoice_post():
    invoice_number = request.form['invoice_number']
    received_date = us_to_sql_date(request.form['date_received']),
    part_numbers = filter(None, request.form.getlist('part_numbers[]'))
    part_numbers = [x.upper() for x in part_numbers]
    assoc_pos = request.form.getlist('assoc_pos[]')
    shelf_locations = request.form.getlist('shelf_locations[]')
    if Invoice.query.get(invoice_number):
        flash("The invoice number has already existed", 'alert-danger')
        return redirect(url_for('new_invoice'))
    invoice = Invoice(invoice_number=invoice_number,
                      received_date=received_date)
    for idx, x in enumerate(part_numbers):
        invoice_detail = InvoiceDetail(
            purchase_order_number=assoc_pos[idx],
            shelf_location=shelf_locations[idx],
        )
        part = Part.get_or_create(x, db.session)
        invoice_detail.part = part
        invoice.parts.append(invoice_detail)
    db.session.add(invoice)
    db.session.commit()
    flash('Invoice created successfully', 'alert-success')
    return redirect(url_for('invoices'))