49 lines
1.7 KiB
Python
49 lines
1.7 KiB
Python
# This file is part of Tryton. The COPYRIGHT file at the top level of
|
|||
|
|
# this repository contains the full copyright notices and license terms.
|
||
|
|
|
||
|
|
import datetime as dt
|
||
|
|
import random
|
||
|
|
|
||
|
|
from dateutil.relativedelta import relativedelta
|
||
|
|
|
||
|
|
from proteus import Model
|
||
|
|
|
||
|
|
|
||
|
|
def setup(config, modules, company, customers):
|
||
|
|
Sale = Model.get('sale.sale')
|
||
|
|
Product = Model.get('product.product')
|
||
|
|
|
||
|
|
all_products = Product.find([
|
||
|
|
('salable', '=', True),
|
||
|
|
])
|
||
|
|
today = dt.date.today()
|
||
|
|
sale_date = today + relativedelta(months=-2)
|
||
|
|
while sale_date <= today + relativedelta(days=10):
|
||
|
|
for _ in range(random.randint(1, 5)):
|
||
|
|
customer = random.choice(customers)
|
||
|
|
sale = Sale()
|
||
|
|
sale.party = customer
|
||
|
|
sale.sale_date = sale_date
|
||
|
|
products = random.sample(
|
||
|
|
all_products, random.randint(1, len(all_products)))
|
||
|
|
for product in products:
|
||
|
|
sale_line = sale.lines.new()
|
||
|
|
sale_line.product = product
|
||
|
|
sale_line.quantity = random.randint(1, 50)
|
||
|
|
sale.save()
|
||
|
|
if sale_date <= today:
|
||
|
|
threshold = 2. / 3.
|
||
|
|
else:
|
||
|
|
threshold = 1. / 3.
|
||
|
|
if random.random() <= threshold:
|
||
|
|
sale.click('quote')
|
||
|
|
if random.random() <= threshold:
|
||
|
|
sale.click('confirm')
|
||
|
|
if random.random() <= threshold:
|
||
|
|
sale.click('process')
|
||
|
|
elif random.random() >= threshold:
|
||
|
|
sale.click('cancel')
|
||
|
|
elif random.random() >= threshold:
|
||
|
|
sale.click('cancel')
|
||
|
|
sale_date += relativedelta(days=random.randint(1, 3))
|