Пример #1
0
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
Пример #2
0
 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)
Пример #3
0
def sale():
    logger.info('启动卖出定时任务')
    sale = Sale(cookie)
    try:
        sale.sale_all(100, 0)
        sale.sale_all(100, 1)
    except:
        traceback.print_exc()
    logger.info('卖出定时任务执行完成')
Пример #4
0
 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)
Пример #5
0
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
Пример #6
0
 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)
Пример #7
0
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()
Пример #8
0
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))
Пример #9
0
    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
Пример #10
0
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('/')
Пример #11
0
    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
Пример #12
0
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)
Пример #13
0
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)
Пример #14
0
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('/')
Пример #15
0
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)
Пример #16
0
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)
Пример #17
0
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()
Пример #19
0
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)
Пример #20
0
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()
Пример #22
0
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('/')
Пример #23
0
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
Пример #24
0
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))
Пример #25
0
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))
Пример #26
0
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)
Пример #27
0
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('/')
Пример #28
0
 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)
Пример #29
0
 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)
Пример #30
0
 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)