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