def storedata(): global wins global nawins saleswin = wins.pop(0) custwin = wins.pop(0) SALESMAN = saleswin.sgetcontents().upper() CUSTOMER = custwin.sgetcontents().upper() PAYMETHOD = nawins[0].sgetcontents().upper() ITEMS = [] # a list of dicts # dice the list into sets of 5 itemblock = [wins[x:x + 5] for x in range(0, len(wins), 5)] for line in itemblock: itemattributes = ["QTY", "CODE", "DESC", "RATE", "TOTAL"] item = {} for attribute in itemattributes: item.update({attribute: line.pop(0).sgetcontents().upper()}) ITEMS.append(item) wins.insert(0, custwin) wins.insert(0, saleswin) r = Sale(SALESMAN, CUSTOMER, ITEMS, PAYMETHOD, subtotal, taxes, total) saleid = r.insertintodb() r.rprint(saleid) resetinterface() del r
def test_add_adjustment(self): sale = Sale("product", value=10, amount=3) sale.add_adjustment("subtract", 40) expected_list = [ sale.Adjustment(operation="subtract", adjusted_amount=40) ] actual_list = sale.adjustments self.assertListEqual(expected_list, actual_list)
def sale(): logger.info('启动卖出定时任务') sale = Sale(cookie) try: sale.sale_all(100, 0) sale.sale_all(100, 1) except: traceback.print_exc() logger.info('卖出定时任务执行完成')
def test_to_dict(self): sale = Sale("product", value=10, amount=3) actual_dict = sale.to_dict() expected_dict = { 'product': 'product', 'amount': 3, 'adjusted_value': 10, 'original_value': 10, 'original_sale_total_value': 30, 'adjusted_total_value': 30 } self.assertDictEqual(expected_dict, actual_dict)
def create_test_sales_list(): sale = Sale("Product", value=10, amount=2) sale.applied_adjustments_dict ={ 'product':["Product"], 'value':[10], 'operation':["Add"], 'adjusted_amount':[2], 'new_price':[12], 'number_items':[2], 'total_adjusted_value':[24] } return [sale] * 10
def test__add_applied_adjustment_to_dict(self): sale = Sale("product", value=10, amount=3) sale._add_applied_adjustment_to_dict("Add", 2) expected_dict = { 'product': ['product'], 'value': [10], 'operation': ['Add'], 'adjusted_amount': [2], 'new_price': [10], 'number_items': [3], 'total_adjusted_value': [30] } actual_dict = sale.applied_adjustments_dict # self.assertDictEqual(expected_dict, actual_dict)
def execute_sale(): """Scan an item (from inventory) and sell it.""" sale = Sale() session = Session() scanned_items = session.query(Item).all() for item in scanned_items: sale.addItems(item) print(sale.getSoldItems()) print(f"\nTransaction Total: {sale.netTotal}\n") session.add(sale) session.commit() session.close()
def edit_sale(id): sale = Sale.find(id) if request.method == 'GET': return render_template('edit_sale.html', sale=sale, categories=Category.all()) elif request.method == 'POST': sale.name = request.form['name'] sale.model = request.form['model'] sale.condition = request.form['condition'] sale.price = request.form['price'] sale.mileage = request.form['mileage'] sale.year = request.form['year'] sale.horsepower = request.form['horsepower'] sale.category = Category.find(request.form['category_id']) images = request.files.getlist("file") shutil.rmtree(sale.file_path) letters = string.ascii_lowercase direc_path = random.choice(letters) direc = request.form['model'] os.mkdir("static/images/" + direc + User.find_by_id(session['USERNAME']) + direc_path) for img in images: img_path = 'static/images/' + direc + User.find_by_id( session['USERNAME']) + direc_path + "/" img.save(img_path + img.filename) sale.file_path = img_path sale.save() logging.info('%s with id: %s edited sale %s', User.find_by_id(session['USERNAME']), session['USERNAME'], sale.id) return redirect(url_for('show_sale', id=sale.id))
def my_active_sale_details(seller_id): connector = Dao.get_connection() cursor = connector.cursor(dictionary=True) now = datetime.now() query = "SELECT id, seller_id, startdate, enddate, address_line_one, address_line_two, city, state, country, pincode, start_price FROM sale " \ "WHERE endstart > %s AND seller_id = %s" cursor.execute(query, (now, seller_id)) sales_from_database = cursor.fetchall() sales = {} for row in sales_from_database: sale = Sale(row["seller_id"], row["startdate"], row["enddate"].strftime('%m/%d/%Y'), row["address_line_one"], row["address_line_two"], row["city"], row["state"], row["country"], row["pincode"], row["start_price"]) sales[row['id']] = sale cursor.close() connector.close() ''' { 1 : salesObj1, 2 : salesObj2, 4 : saledObj3 } ''' return sales
def new_sale(): if request.method == 'GET': return render_template('new_sale.html', categories=Category.all()) elif request.method == 'POST': letters = string.ascii_lowercase direc_path = random.choice(letters) direc = request.form['model'] images = request.files.getlist("file") os.mkdir("static/images/" + direc + User.find_by_id(session['USERNAME']) + direc_path) for img in images: img_path = 'static/images/' + direc + User.find_by_id( session['USERNAME']) + direc_path + "/" img.save(img_path + img.filename) category = Category.find(request.form['category_id']) values = (None, request.form['name'], request.form['model'], request.form['horsepower'], request.form['price'], request.form['year'], request.form['condition'], request.form['mileage'], category, img_path, session['USERNAME']) Sale(*values).create() logging.info('%s with id: %s added new sale', User.find_by_id(session['USERNAME']), session['USERNAME']) return redirect('/')
def get_sale_details(seller_id): # select max(bid_price) as max_price from bid where sale_id=3; connector = Dao.get_connection() cursor = connector.cursor(dictionary=True) query = ("SELECT id, seller_id, startdate, enddate, address_line_one, address_line_two, city, state, country, pincode, start_price" \ " FROM sale where seller_id = %s") cursor.execute(query, (seller_id, )) sales_from_database = cursor.fetchall() sales = {} for row in sales_from_database: sale = Sale(row["seller_id"], row["startdate"], row["enddate"].strftime('%m/%d/%Y'), row["address_line_one"], row["address_line_two"], row["city"], row["state"], row["country"], row["pincode"], row["start_price"]) sales[row['id']] = sale cursor.close() connector.close() ''' { 1 : salesObj1, 2 : salesObj2, 4 : saledObj3 } ''' return sales
def api_newSale(): global mySale req_data = request.get_json() idClient = req_data['idClient'] idProduct = req_data['idProduct'] amount = req_data['amount'] #price = req_data['price'] #total = req_data['total'] price = 0 total = 0 for elem in myProduct: if idProduct == elem.getProductId(): price = elem.getProductPrice() total = int(amount) * int(price) else: print("Produto não esta cadastrado!!") break #total = int(amount)*int(price) #total2 = str(total) new_sale = Sale(idClient, idProduct, amount, price, str(total)) mySale.append(new_sale) res = {'status': 'ok'} return jsonify(res)
def add_sale(): email = raw_input("Enter your email address:") password = getpass.getpass(stream=sys.stderr) seller_id = Dao.get_user_id(email, password) if seller_id == None: return startdate = datetime.now().date() enddate_input = raw_input("Please enter end date time in correct format mm/dd/yyyy: ") try: enddate = datetime.strptime(enddate_input, "%m/%d/%Y").date() except ValueError: print "Please enter date in the format mm/dd/yyyy" return address_line_one = raw_input("Enter address line one:") address_line_two = raw_input("Enter address line two:") city = raw_input("Enter city:") state = raw_input("Enter state:") country = raw_input("Enter country:") pincode = raw_input("Enter pincode:") match = re.match('^\\d{5}(-\\d{4})?$', pincode) if not match: print "\nInvalid pincode %s. It should be in the format xxxxxx-xxxx" % pincode return start_price = raw_input("Enter start price:") sale = Sale(seller_id, startdate, enddate, address_line_one, address_line_two, city, state, country, pincode, start_price) Dao.sale_by_user(sale)
def new_sale(): if request.method == 'GET': return render_template('new_sale.html', categories=Category.all()) elif request.method == 'POST': letters = string.ascii_lowercase direc_path = random.choice(letters) direc = request.form['model'] if request.files['file'].filename == '': flash('You forgot to upload in image!') return redirect('/sales/new') images = request.files.getlist("file") os.mkdir("static/images/" + direc + User.find_by_id(session['USERNAME']) + direc_path) for img in images: img_path = 'static/images/' + direc + User.find_by_id( session['USERNAME']) + direc_path + "/" img.save(img_path + img.filename) category = Category.find(request.form['category_id']) values = (None, request.form['name'], request.form['model'], request.form['horsepower'], request.form['price'], request.form['year'], request.form['condition'], request.form['mileage'], category, img_path, session['USERNAME']) Sale(*values).create() text = "user id: " + str( session['USERNAME']) + "with username: "******"made a post" i_logger(text) return redirect('/')
def user_sales(): sales = Sale.find_by_user_id(session['USERNAME']) images = {} for sale in sales: directory = os.listdir(sale.file_path) file_path = sale.file_path images.update({file_path: directory[0]}) return render_template('library.html', sales=sales, images=images)
def show_sale(id): sale = Sale.find(id) images = os.listdir(sale.file_path) sale.file_path = '/' + sale.file_path username = session['USERNAME'] return render_template('sale.html', sale=sale, images=images, username=username)
def del_comment(id): Comment.delete(id) sale = Sale.find(request.form['sale_id']) logging.info('%s with id: %s deleted comment on sale %s', User.find_by_id(session['USERNAME']), session['USERNAME'], sale.id) return redirect(url_for('show_sale', id=sale.id))
def test_full_sale(): customer = Customer("Annie Ro") customer.balance.add_balance(1_012_00, description="Monthly earnings") store = Store("Berkeley Bowl", StoreDatabase()) StoresManager().register_store(store) store.reward_coupons(customer, FiveForFive, 5) store.reward_coupons(customer, HalfOffHealthyPurchases, 1) sale = Sale(customer, store) sale.start_sale() BARCODES = ['7810', '9694', '7810', '7126', '9478', '7126', '8840', '8840', '7126', '7111'] for code in BARCODES: sale.scan_item(code) sale.use_coupons(customer.coupons) sale.finish_sale()
def list_sales(): if session.get('logged_in'): return redirect('/sales_logged_in') sales = Sale.all() images = {} for sale in sales: directory = os.listdir(sale.file_path) file_path = sale.file_path images.update({file_path: directory[0]}) return render_template('sales.html', sales=sales, images=images)
def del_comment(id): Comment.delete(id) sale = Sale.find(request.form['sale_id']) text = "user id: " + str( session['USERNAME']) + "with username: "******"edited a comment" i_logger(text) return redirect(url_for('show_sale', id=sale.id))
def test_basic_sale(): customer = Customer("Aivant Goyal") customer.balance.add_balance(10_00, description="This week's paycheck") store = Store("Corner Store #1", StoreDatabase()) StoresManager().register_store(store) store.reward_coupons(customer, HalfOffHealthyPurchases, 1) store.reward_coupons(customer, TenOffPromo, 1) sale = Sale(customer, store) sale.start_sale() BARCODES = ['4872', '2911', '2911', '1726', '2855', '5817'] for code in BARCODES: sale.scan_item(code) sale.use_coupons(customer.coupons) sale.finish_sale()
def delete_sale(id): sale = Sale.find(id) shutil.rmtree(sale.file_path) with DB() as db: db.execute('DELETE FROM comments WHERE sale_id = ?', (sale.id, )) sale.delete() logging.info('%s with id: %s deleted sale %s', User.find_by_id(session['USERNAME']), session['USERNAME'], sale.id) return redirect('/')
def process_sales(attributes): sale_id = attributes[0] salesman_name = attributes[2] data_list = attributes[1][1:-1].split(',') items_list = [SaleItem.from_list(x.split('-')) for x in data_list] sale = Sale(sale_id, salesman_name, items_list) for salesman in salesman_list: if salesman.name == salesman_name: salesman.add_sale(sale) break
def edit_comment(id): if not request.form['message']: Comment.delete(id) else: Comment.save(request.form['message'], id) sale = Sale.find(request.form['sale_id']) logging.info('%s with id: %s edited comment on sale %s with: %s', User.find_by_id(session['USERNAME']), session['USERNAME'], sale.id, request.form['message']) return redirect(url_for('show_sale', id=sale.id))
def load_sells(file): if os.access(file, os.R_OK) and os.path.isfile(file): sales = [] with open(file) as f: lines = csv.reader(f, dialect='excel') for line in lines: sale = Sale(*line) sales.append(sale) return sales else: raise ValueError("Inaccessible file '{}'".format(file))
def sales_logged_in(): sales = Sale.all() images = {} for sale in sales: directory = os.listdir(sale.file_path) file_path = sale.file_path images.update({file_path: directory[0]}) return render_template('sales_logged_in.html', sales=sales, username=User.find_by_id(session['USERNAME']), images=images, file_path=file_path)
def delete_sale(id): sale = Sale.find(id) shutil.rmtree(sale.file_path) with DB() as db: db.execute('DELETE FROM comments WHERE sale_id = ?', (sale.id, )) sale.delete() text = "user id: " + str( session['USERNAME']) + "with username: "******"deleted a post" i_logger(text) return redirect('/')
def test_apply_adjustments_mul(self): sale = Sale("product", value=2, amount=2) sale.add_adjustment("multiply", 3) expected_value = 6 expected_total_value = 12 sale.apply_adjustments() self.assertEqual(expected_value, sale.value) self.assertEqual(expected_total_value, sale.total_value)
def test_apply_adjustments_sub(self): sale = Sale("product", value=10, amount=3) sale.add_adjustment("subtract", 40) expected_value = -30 expected_total_value = -90 sale.apply_adjustments() self.assertEqual(expected_value, sale.value) self.assertEqual(expected_total_value, sale.total_value)
def test_apply_adjustments_add(self): sale = Sale("product", value=100, amount=2) sale.add_adjustment("add", 40) expected_value = 140 expected_total_value = 280 sale.apply_adjustments() self.assertEqual(expected_value, sale.value) self.assertEqual(expected_total_value, sale.total_value)