Remove access right tests in scenario

The access rights are now only a configuration matter.
This commit is contained in:
Cédric Krier
2025-03-30 15:22:07 +02:00
parent 854562ad6e
commit 716b0b2ed6
27 changed files with 113 additions and 879 deletions
@@ -13,8 +13,7 @@ Imports::
>>> from trytond.modules.account.tests.tools import (
... create_chart, create_fiscalyear, get_accounts)
>>> from trytond.modules.company.tests.tools import create_company
>>> from trytond.tests.tools import (
... activate_modules, assertEqual, assertTrue, set_user)
>>> from trytond.tests.tools import activate_modules, assertEqual, assertTrue
>>> today = datetime.date.today()
@@ -22,39 +21,6 @@ Activate modules::
>>> config = activate_modules('account_dunning', create_company, create_chart)
Create account admin user::
>>> User = Model.get('res.user')
>>> Group = Model.get('res.group')
>>> account_admin_user = User()
>>> account_admin_user.name = 'Account Admin'
>>> account_admin_user.login = 'account_admin'
>>> account_admin_group, = Group.find([
... ('name', '=', 'Accounting Administration'),
... ])
>>> account_admin_user.groups.append(account_admin_group)
>>> account_admin_user.save()
Create account user::
>>> account_user = User()
>>> account_user.name = 'Account'
>>> account_user.login = 'account'
>>> account_group, = Group.find([
... ('name', '=', 'Accounting'),
... ])
>>> account_user.groups.append(account_group)
>>> account_user.save()
Create dunning user::
>>> dunning_user = User()
>>> dunning_user.name = 'Dunning'
>>> dunning_user.login = 'dunning'
>>> dunning_group, = Group.find([('name', '=', 'Dunning')])
>>> dunning_user.groups.append(dunning_group)
>>> dunning_user.save()
Create fiscal year::
>>> fiscalyear = create_fiscalyear()
@@ -70,7 +36,6 @@ Get accounts::
Create dunning procedure::
>>> set_user(account_admin_user)
>>> Procedure = Model.get('account.dunning.procedure')
>>> procedure = Procedure(name='Procedure')
>>> level = procedure.levels.new()
@@ -93,7 +58,6 @@ Create parties::
Create some moves::
>>> set_user(account_user)
>>> Journal = Model.get('account.journal')
>>> Move = Model.get('account.move')
>>> journal_revenue, = Journal.find([
@@ -148,7 +112,6 @@ Create some moves::
Create dunnings on 4 days::
>>> set_user(dunning_user)
>>> Dunning = Model.get('account.dunning')
>>> create_dunning = Wizard('account.dunning.create')
>>> create_dunning.form.date = period.start_date + relativedelta(days=4)
@@ -224,7 +187,6 @@ Create dunnings on 30 days::
Pay dunning::
>>> set_user(account_user)
>>> MoveLine = Model.get('account.move.line')
>>> move = Move()
>>> move.period = period
@@ -241,13 +203,11 @@ Pay dunning::
>>> reconcile2, = [l for l in move.lines if l.account == receivable]
>>> reconcile_lines = Wizard('account.move.reconcile_lines',
... [MoveLine(dunning.line.id), reconcile2])
>>> set_user(dunning_user)
>>> Dunning.find([])
[]
Create dunnings on 50 days::
>>> set_user(dunning_user)
>>> create_dunning = Wizard('account.dunning.create')
>>> create_dunning.form.date = period.start_date + relativedelta(days=50)
>>> create_dunning.execute('create_')
@@ -11,50 +11,13 @@ Imports::
>>> from trytond.modules.account.tests.tools import (
... create_chart, create_fiscalyear, get_accounts)
>>> from trytond.modules.company.tests.tools import create_company
>>> from trytond.tests.tools import activate_modules, set_user
>>> from trytond.tests.tools import activate_modules
Activate modules::
>>> config = activate_modules(
... 'account_dunning_letter', create_company, create_chart)
Reload the context::
>>> User = Model.get('res.user')
>>> Group = Model.get('res.group')
>>> config._context = User.get_preferences(True, config.context)
Create account admin user::
>>> account_admin_user = User()
>>> account_admin_user.name = 'Account Admin'
>>> account_admin_user.login = 'account_admin'
>>> account_admin_group, = Group.find([
... ('name', '=', 'Accounting Administration'),
... ])
>>> account_admin_user.groups.append(account_admin_group)
>>> account_admin_user.save()
Create account user::
>>> account_user = User()
>>> account_user.name = 'Account'
>>> account_user.login = 'account'
>>> account_group, = Group.find([
... ('name', '=', 'Accounting'),
... ])
>>> account_user.groups.append(account_group)
>>> account_user.save()
Create dunning user::
>>> dunning_user = User()
>>> dunning_user.name = 'Dunning'
>>> dunning_user.login = 'dunning'
>>> dunning_group, = Group.find([('name', '=', 'Dunning')])
>>> dunning_user.groups.append(dunning_group)
>>> dunning_user.save()
Create fiscal year::
>>> fiscalyear = create_fiscalyear()
@@ -70,7 +33,6 @@ Get accounts::
Create dunning procedure::
>>> set_user(account_admin_user)
>>> Procedure = Model.get('account.dunning.procedure')
>>> procedure = Procedure(name='Procedure')
>>> level = procedure.levels.new()
@@ -88,7 +50,6 @@ Create parties::
Create some moves::
>>> set_user(account_user)
>>> Journal = Model.get('account.journal')
>>> Move = Model.get('account.move')
>>> journal_revenue, = Journal.find([
@@ -164,7 +125,6 @@ Add partial payment of 50::
Create dunnings::
>>> set_user(dunning_user)
>>> Dunning = Model.get('account.dunning')
>>> create_dunning = Wizard('account.dunning.create')
>>> create_dunning.form.date = period.start_date + dt.timedelta(days=5)
@@ -17,7 +17,7 @@ Imports::
>>> from trytond.modules.account_stock_continental.tests.tools import (
... add_stock_accounts)
>>> from trytond.modules.company.tests.tools import create_company
>>> from trytond.tests.tools import activate_modules, set_user
>>> from trytond.tests.tools import activate_modules
>>> today = dt.date.today()
@@ -30,38 +30,6 @@ Activate modules::
... ],
... create_company, create_chart)
Create the required users::
>>> User = Model.get('res.user')
>>> Group = Model.get('res.group')
>>> accountant = User()
>>> accountant.name = 'Accountant'
>>> accountant.login = 'accountant'
>>> account_group, = Group.find([('name', '=', 'Accounting')])
>>> accountant.groups.append(account_group)
>>> accountant.save()
>>> product_user = User()
>>> product_user.name = 'Product User'
>>> product_user.login = 'product_user'
>>> product_group, = Group.find([('name', '=', 'Account Product Administration')])
>>> product_user.groups.append(product_group)
>>> product_user.save()
>>> purchase_user = User()
>>> purchase_user.name = 'Purchase User'
>>> purchase_user.login = 'purchase_user'
>>> purchase_group, = Group.find([('name', '=', 'Purchase')])
>>> purchase_user.groups.append(purchase_group)
>>> purchase_user.save()
>>> stock_user = User()
>>> stock_user.name = 'Sale User'
>>> stock_user.login = 'stock_user'
>>> stock_group, = Group.find([('name', '=', 'Stock')])
>>> stock_user.groups.append(stock_group)
>>> stock_user.save()
Create fiscal year::
>>> fiscalyear = set_fiscalyear_invoice_sequences(
@@ -303,7 +271,6 @@ Now create a supplier invoice with an accountant::
>>> purchase.state
'processing'
>>> set_user(accountant)
>>> for invoice in purchase.invoices:
... invoice.invoice_date = today
>>> Invoice.save(purchase.invoices)
@@ -331,7 +298,6 @@ Create customer invoice with negative quantity::
Now we will use a product with different unit of measure::
>>> set_user(product_user)
>>> UomCategory = Model.get('product.uom.category')
>>> unit_category, = UomCategory.find([('name', '=', 'Units')])
>>> unit_5 = ProductUom(name='5', symbol='5', category=unit_category,
@@ -355,7 +321,6 @@ Now we will use a product with different unit of measure::
>>> template_by5.save()
>>> product_by5, = template_by5.products
>>> set_user(purchase_user)
>>> purchase = Purchase()
>>> purchase.party = supplier
>>> purchase.payment_term = payment_term
@@ -367,7 +332,6 @@ Now we will use a product with different unit of measure::
>>> purchase.click('quote')
>>> purchase.click('confirm')
>>> set_user(stock_user)
>>> shipment = ShipmentIn(supplier=supplier)
>>> move = Move(purchase.moves[0].id)
>>> move.in_anglo_saxon_quantity
@@ -376,7 +340,6 @@ Now we will use a product with different unit of measure::
>>> shipment.click('receive')
>>> shipment.click('do')
>>> set_user(accountant)
>>> purchase.reload()
>>> invoice, = purchase.invoices
>>> invoice.invoice_date = today
@@ -384,7 +347,6 @@ Now we will use a product with different unit of measure::
>>> invoice.state
'posted'
>>> set_user(stock_user)
>>> move = Move(purchase.moves[0].id)
>>> move.in_anglo_saxon_quantity
1.0
@@ -17,7 +17,7 @@ Imports::
>>> from trytond.modules.account_stock_continental.tests.tools import (
... add_stock_accounts)
>>> from trytond.modules.company.tests.tools import create_company
>>> from trytond.tests.tools import activate_modules, set_user
>>> from trytond.tests.tools import activate_modules
>>> today = dt.date.today()
@@ -31,47 +31,6 @@ Activate modules::
... ],
... create_company, create_chart)
Create sale user::
>>> User = Model.get('res.user')
>>> Group = Model.get('res.group')
>>> sale_user = User()
>>> sale_user.name = 'Sale'
>>> sale_user.login = 'sale'
>>> sale_group, = Group.find([('name', '=', 'Sales')])
>>> sale_user.groups.append(sale_group)
>>> sale_user.save()
Create purchase user::
>>> purchase_user = User()
>>> purchase_user.name = 'Purchase'
>>> purchase_user.login = 'purchase'
>>> purchase_group, = Group.find([('name', '=', 'Purchase')])
>>> purchase_user.groups.append(purchase_group)
>>> purchase_request_group, = Group.find(
... [('name', '=', 'Purchase Request')])
>>> purchase_user.groups.append(purchase_request_group)
>>> purchase_user.save()
Create stock user::
>>> stock_user = User()
>>> stock_user.name = 'Stock'
>>> stock_user.login = 'stock'
>>> stock_group, = Group.find([('name', '=', 'Stock')])
>>> stock_user.groups.append(stock_group)
>>> stock_user.save()
Create account user::
>>> account_user = User()
>>> account_user.name = 'Account'
>>> account_user.login = 'account'
>>> account_group, = Group.find([('name', '=', 'Accounting')])
>>> account_user.groups.append(account_group)
>>> account_user.save()
Create fiscal year::
>>> fiscalyear = set_fiscalyear_invoice_sequences(
@@ -147,7 +106,6 @@ Create payment term::
Sale 50 products::
>>> set_user(sale_user)
>>> Sale = Model.get('sale.sale')
>>> sale = Sale()
>>> sale.party = customer
@@ -162,7 +120,6 @@ Sale 50 products::
Create Purchase from Request::
>>> set_user(purchase_user)
>>> Purchase = Model.get('purchase.purchase')
>>> PurchaseRequest = Model.get('purchase.request')
>>> purchase_request, = PurchaseRequest.find()
@@ -176,7 +133,6 @@ Create Purchase from Request::
>>> purchase.click('confirm')
>>> purchase.state
'processing'
>>> set_user(sale_user)
>>> sale.reload()
>>> sale.shipments
[]
@@ -184,12 +140,10 @@ Create Purchase from Request::
Receive 50 products::
>>> set_user(stock_user)
>>> shipment.click('ship')
>>> shipment.click('do')
>>> shipment.state
'done'
>>> set_user(account_user)
>>> stock_in.reload()
>>> stock_in.debit
Decimal('0.00')
@@ -208,10 +162,8 @@ Receive 50 products::
Open supplier invoice::
>>> set_user(purchase_user)
>>> purchase.reload()
>>> invoice, = purchase.invoices
>>> set_user(account_user)
>>> invoice.invoice_date = today
>>> invoice.click('post')
>>> invoice.state
@@ -234,10 +186,8 @@ Open supplier invoice::
Open customer invoice::
>>> set_user(sale_user)
>>> sale.reload()
>>> invoice, = sale.invoices
>>> set_user(account_user)
>>> invoice.click('post')
>>> invoice.state
'posted'
@@ -12,23 +12,12 @@ Imports::
>>> from trytond.modules.account_invoice.tests.tools import (
... create_payment_term, set_fiscalyear_invoice_sequences)
>>> from trytond.modules.company.tests.tools import create_company
>>> from trytond.tests.tools import activate_modules, assertEqual, set_user
>>> from trytond.tests.tools import activate_modules, assertEqual
Activate modules::
>>> config = activate_modules('analytic_purchase', create_company, create_chart)
Create purchase user::
>>> User = Model.get('res.user')
>>> Group = Model.get('res.group')
>>> purchase_user = User()
>>> purchase_user.name = 'Purchase'
>>> purchase_user.login = 'purchase'
>>> purchase_group, = Group.find([('name', '=', 'Purchase')])
>>> purchase_user.groups.append(purchase_group)
>>> purchase_user.save()
Create fiscal year::
>>> fiscalyear = set_fiscalyear_invoice_sequences(
@@ -87,7 +76,6 @@ Create payment term::
Purchase with analytic accounts::
>>> set_user(purchase_user)
>>> Purchase = Model.get('purchase.purchase')
>>> purchase = Purchase()
>>> purchase.party = supplier
@@ -115,7 +103,6 @@ Check invoice analytic accounts::
Purchase with an empty analytic account::
>>> set_user(purchase_user)
>>> Purchase = Model.get('purchase.purchase')
>>> purchase = Purchase()
>>> purchase.party = supplier
@@ -12,23 +12,12 @@ Imports::
>>> from trytond.modules.account_invoice.tests.tools import (
... create_payment_term, set_fiscalyear_invoice_sequences)
>>> from trytond.modules.company.tests.tools import create_company
>>> from trytond.tests.tools import activate_modules, assertEqual, set_user
>>> from trytond.tests.tools import activate_modules, assertEqual
Activate modules::
>>> config = activate_modules('analytic_sale', create_company, create_chart)
Create sale user::
>>> User = Model.get('res.user')
>>> Group = Model.get('res.group')
>>> sale_user = User()
>>> sale_user.name = 'Sale'
>>> sale_user.login = 'sale'
>>> sale_group, = Group.find([('name', '=', 'Sales')])
>>> sale_user.groups.append(sale_group)
>>> sale_user.save()
Create fiscal year::
>>> fiscalyear = set_fiscalyear_invoice_sequences(
@@ -87,7 +76,6 @@ Create payment term::
Sale with analytic accounts::
>>> set_user(sale_user)
>>> Sale = Model.get('sale.sale')
>>> SaleLine = Model.get('sale.line')
>>> sale = Sale()
@@ -115,7 +103,6 @@ Check analytic accounts on invoice::
Sale with an empty analytic account::
>>> set_user(sale_user)
>>> Sale = Model.get('sale.sale')
>>> SaleLine = Model.get('sale.line')
>>> sale = Sale()
@@ -140,7 +127,6 @@ Check invoice analytic accounts::
Return sales using the wizard::
>>> set_user(sale_user)
>>> return_sale = Wizard('sale.return_sale', [sale])
>>> return_sale.execute('return_')
>>> returned_sale, = Sale.find([
@@ -17,10 +17,21 @@ Activate modules::
>>> config = activate_modules('production_work', create_company)
>>> Employee = Model.get('company.employee')
>>> Group = Model.get('res.group')
>>> Party = Model.get('party.party')
>>> User = Model.get('res.user')
>>> Party = Model.get('party.party')
>>> Employee = Model.get('company.employee')
Set employee::
>>> employee_party = Party(name="Employee")
>>> employee_party.save()
>>> employee = Employee(party=employee_party)
>>> employee.save()
>>> user = User(config.user)
>>> user.employees.append(employee)
>>> user.employee = employee
>>> user.save()
>>> set_user(user.id)
Create product::
@@ -145,24 +156,6 @@ Create an Inventory::
>>> inventory.state
'done'
Create production user::
>>> production_user = User()
>>> production_user.name = "Production"
>>> production_user.login = 'production'
>>> production_user.groups.extend(Group.find([
... ('name', '=', 'Production'),
... ]))
>>> employee_party = Party(name="Employee")
>>> employee_party.save()
>>> employee = Employee(party=employee_party)
>>> employee.save()
>>> production_user.employees.append(employee)
>>> production_user.employee = employee
>>> production_user.save()
>>> set_user(production_user)
Make a production::
>>> Production = Model.get('production')
@@ -11,35 +11,12 @@ Imports::
>>> from trytond.modules.account.tests.tools import create_chart, get_accounts
>>> from trytond.modules.account_invoice.tests.tools import create_payment_term
>>> from trytond.modules.company.tests.tools import create_company
>>> from trytond.tests.tools import activate_modules, set_user
>>> from trytond.tests.tools import activate_modules
Activate modules::
>>> config = activate_modules('project_invoice', create_company, create_chart)
Create project user::
>>> User = Model.get('res.user')
>>> Group = Model.get('res.group')
>>> project_user = User()
>>> project_user.name = 'Project'
>>> project_user.login = 'project'
>>> project_group, = Group.find([('name', '=', 'Project Administration')])
>>> timesheet_group, = Group.find([('name', '=', 'Timesheet Administration')])
>>> project_user.groups.extend([project_group, timesheet_group])
>>> project_user.save()
Create project invoice user::
>>> project_invoice_user = User()
>>> project_invoice_user.name = 'Project Invoice'
>>> project_invoice_user.login = 'project_invoice'
>>> project_invoice_group, = Group.find([('name', '=', 'Project Invoice')])
>>> project_group, = Group.find([('name', '=', 'Project Administration')])
>>> project_invoice_user.groups.extend(
... [project_invoice_group, project_group])
>>> project_invoice_user.save()
Get accounts::
>>> accounts = get_accounts()
@@ -101,7 +78,6 @@ Create products::
Create a Project::
>>> set_user(project_user)
>>> ProjectWork = Model.get('project.work')
>>> project = ProjectWork()
>>> project.name = 'Test effort'
@@ -150,7 +126,6 @@ Check project amounts::
Invoice project::
>>> set_user(project_invoice_user)
>>> project.click('invoice')
>>> project.amount_to_invoice
Decimal('0.00')
@@ -159,7 +134,6 @@ Invoice project::
Do project::
>>> set_user(project_user)
>>> task_no_effort.progress = 1
>>> task_no_effort.save()
>>> task_fixed.progress = 1
@@ -177,7 +151,6 @@ Check project amounts::
Invoice again project::
>>> set_user(project_invoice_user)
>>> project.click('invoice')
>>> project.amount_to_invoice
Decimal('0.00')
@@ -186,7 +159,6 @@ Invoice again project::
Try to change invoice line quantity::
>>> set_user(1)
>>> ProjectWork = Model.get('project.work')
>>> task = ProjectWork(task.id)
>>> task.invoice_line.quantity = 1
@@ -11,35 +11,12 @@ Imports::
>>> from trytond.modules.account.tests.tools import create_chart, get_accounts
>>> from trytond.modules.account_invoice.tests.tools import create_payment_term
>>> from trytond.modules.company.tests.tools import create_company
>>> from trytond.tests.tools import activate_modules, set_user
>>> from trytond.tests.tools import activate_modules
Activate modules::
>>> config = activate_modules('project_invoice', create_company, create_chart)
Create project user::
>>> User = Model.get('res.user')
>>> Group = Model.get('res.group')
>>> project_user = User()
>>> project_user.name = 'Project'
>>> project_user.login = 'project'
>>> project_group, = Group.find([('name', '=', 'Project Administration')])
>>> timesheet_group, = Group.find([('name', '=', 'Timesheet Administration')])
>>> project_user.groups.extend([project_group, timesheet_group])
>>> project_user.save()
Create project invoice user::
>>> project_invoice_user = User()
>>> project_invoice_user.name = 'Project Invoice'
>>> project_invoice_user.login = 'project_invoice'
>>> project_invoice_group, = Group.find([('name', '=', 'Project Invoice')])
>>> project_group, = Group.find([('name', '=', 'Project Administration')])
>>> project_invoice_user.groups.extend(
... [project_invoice_group, project_group])
>>> project_invoice_user.save()
Get accounts::
>>> accounts = get_accounts()
@@ -104,7 +81,6 @@ Create product::
Create a Project::
>>> set_user(project_user)
>>> ProjectWork = Model.get('project.work')
>>> TimesheetWork = Model.get('timesheet.work')
>>> project = ProjectWork()
@@ -152,7 +128,6 @@ Check project amounts::
Invoice project::
>>> set_user(project_invoice_user)
>>> project.click('invoice')
>>> project.amount_to_invoice
Decimal('0.00')
@@ -161,7 +136,6 @@ Invoice project::
Do 75% and 90% of tasks and 80% of project::
>>> set_user(project_user)
>>> task.progress = 0.75
>>> task.save()
>>> task_fixed.progress = 0.9
@@ -179,7 +153,6 @@ Check project amounts::
Invoice again project::
>>> set_user(project_invoice_user)
>>> project.click('invoice')
>>> project.amount_to_invoice
Decimal('0.00')
@@ -188,7 +161,6 @@ Invoice again project::
Try to change invoice line quantity::
>>> set_user(1)
>>> ProjectWork = Model.get('project.work')
>>> task = ProjectWork(task.id)
>>> invoice_line = task.invoiced_progress[0].invoice_line
@@ -11,7 +11,7 @@ Imports::
>>> from trytond.modules.account.tests.tools import create_chart, get_accounts
>>> from trytond.modules.account_invoice.tests.tools import create_payment_term
>>> from trytond.modules.company.tests.tools import create_company
>>> from trytond.tests.tools import activate_modules, set_user
>>> from trytond.tests.tools import activate_modules
>>> today = dt.date.today()
>>> yesterday = today - dt.timedelta(days=1)
@@ -20,30 +20,6 @@ Activate modules::
>>> config = activate_modules('project_invoice', create_company, create_chart)
Create project user::
>>> User = Model.get('res.user')
>>> Group = Model.get('res.group')
>>> project_user = User()
>>> project_user.name = 'Project'
>>> project_user.login = 'project'
>>> project_group, = Group.find([('name', '=', 'Project Administration')])
>>> timesheet_group, = Group.find([('name', '=', 'Timesheet Administration')])
>>> project_user.groups.extend([project_group, timesheet_group])
>>> project_user.save()
Create project invoice user::
>>> project_invoice_user = User()
>>> project_invoice_user.name = 'Project Invoice'
>>> project_invoice_user.login = 'project_invoice'
>>> project_invoice_group, = Group.find([('name', '=', 'Project Invoice')])
>>> project_group, = Group.find([('name', '=', 'Project Administration')])
>>> invoice_group, = Group.find([('name', '=', 'Accounting')])
>>> project_invoice_user.groups.extend(
... [project_invoice_group, project_group, invoice_group])
>>> project_invoice_user.save()
Get accounts::
>>> accounts = get_accounts()
@@ -95,7 +71,6 @@ Create product::
Create a Project::
>>> set_user(project_user)
>>> ProjectWork = Model.get('project.work')
>>> project = ProjectWork()
>>> project.name = 'Test timesheet'
@@ -146,10 +121,8 @@ Check project amounts::
Invoice project up to yesterday::
>>> set_user(project_user)
>>> project.project_invoice_timesheet_up_to = yesterday
>>> project.save()
>>> set_user(project_invoice_user)
>>> project.click('invoice')
>>> project.amount_to_invoice
Decimal('0.00')
@@ -161,7 +134,6 @@ Invoice project up to yesterday::
>>> project.amount_to_invoice
Decimal('40.00')
>>> set_user(project_invoice_user)
>>> Invoice = Model.get('account.invoice')
>>> invoice, = Invoice.find([])
>>> invoice.total_amount
@@ -169,24 +141,20 @@ Invoice project up to yesterday::
Invoice all project::
>>> set_user(project_user)
>>> project.project_invoice_timesheet_up_to = None
>>> project.save()
>>> set_user(project_invoice_user)
>>> project.click('invoice')
>>> project.amount_to_invoice
Decimal('0.00')
>>> project.invoiced_amount
Decimal('100.00')
>>> set_user(project_invoice_user)
>>> _, invoice = Invoice.find([], order=[('id', 'ASC')])
>>> invoice.total_amount
Decimal('40.00')
Create more timesheets::
>>> set_user(project_user)
>>> TimesheetLine = Model.get('timesheet.line')
>>> line = TimesheetLine()
>>> line.employee = employee
@@ -204,21 +172,18 @@ Check project amounts::
Invoice again project::
>>> set_user(project_invoice_user)
>>> project.click('invoice')
>>> project.amount_to_invoice
Decimal('0.00')
>>> project.invoiced_amount
Decimal('180.00')
>>> set_user(project_invoice_user)
>>> _, _, invoice = Invoice.find([], order=[('id', 'ASC')])
>>> invoice.total_amount
Decimal('80.00')
Try to change invoice line quantity::
>>> set_user(1)
>>> TimesheetLine = Model.get('timesheet.line')
>>> line = TimesheetLine(line.id)
>>> line.invoice_line.quantity = 5
+4 -3
View File
@@ -21,11 +21,12 @@ Activate modules::
>>> config = activate_modules('purchase', create_company, create_chart)
>>> Employee = Model.get('company.employee')
>>> Party = Model.get('party.party')
>>> User = Model.get('res.user')
Set employee::
>>> User = Model.get('res.user')
>>> Party = Model.get('party.party')
>>> Employee = Model.get('company.employee')
>>> employee_party = Party(name="Employee")
>>> employee_party.save()
>>> employee = Employee(party=employee_party)
@@ -12,24 +12,13 @@ Imports::
>>> from trytond.modules.account_invoice.tests.tools import (
... create_payment_term, set_fiscalyear_invoice_sequences)
>>> from trytond.modules.company.tests.tools import create_company
>>> from trytond.tests.tools import activate_modules, set_user
>>> from trytond.tests.tools import activate_modules
Activate modules::
>>> current_config = activate_modules(
... 'purchase_invoice_line_standalone', create_company, create_chart)
Create an accountant user::
>>> User = Model.get('res.user')
>>> Group = Model.get('res.group')
>>> accountant = User()
>>> accountant.name = 'Accountant'
>>> accountant.login = 'accountant'
>>> account_group, = Group.find([('name', '=', 'Accounting')])
>>> accountant.groups.append(account_group)
>>> accountant.save()
Create fiscal year::
>>> fiscalyear = set_fiscalyear_invoice_sequences(create_fiscalyear())
@@ -139,7 +128,6 @@ Create a supplier invoice::
Create a supplier invoice with an accountant::
>>> set_user(accountant)
>>> Invoice = Model.get('account.invoice')
>>> Partner = Model.get('party.party')
>>> supplier, = Partner.find([('name', '=', 'Supplier')])
@@ -16,7 +16,6 @@ Activate modules::
>>> config = activate_modules(
... ['purchase_product_quantity', 'purchase_request'],
... create_company, create_chart)
>>> user = config.user
>>> Location = Model.get('stock.location')
>>> Party = Model.get('party.party')
@@ -77,7 +76,7 @@ Create the purchase request below minimal::
... 'unit': gr,
... 'warehouse': warehouse_loc.id,
... }], ctx)
>>> set_user(user)
>>> set_user()
>>> purchase_request = PurchaseRequest(pr_id)
Create purchase::
@@ -103,7 +102,7 @@ Create the purchase request wrong rounding::
... 'unit': gr,
... 'warehouse': warehouse_loc.id,
... }], ctx)
>>> set_user(user)
>>> set_user()
>>> purchase_request = PurchaseRequest(pr_id)
Create purchase::
@@ -33,50 +33,6 @@ Create parties::
>>> supplier = Party(name='Supplier')
>>> supplier.save()
Create stock admin user::
>>> User = Model.get('res.user')
>>> Group = Model.get('res.group')
>>> stock_admin_user = User()
>>> stock_admin_user.name = 'Stock Admin'
>>> stock_admin_user.login = 'stock_admin'
>>> stock_admin_group, = Group.find([('name', '=', 'Stock Administration')])
>>> stock_admin_user.groups.append(stock_admin_group)
>>> stock_admin_user.save()
Create stock user::
>>> stock_user = User()
>>> stock_user.name = 'Stock'
>>> stock_user.login = 'stock'
>>> stock_group, = Group.find([('name', '=', 'Stock')])
>>> stock_group_admin, = Group.find([('name', '=', 'Stock Administration')])
>>> stock_user.groups.extend([stock_group, stock_group_admin])
>>> stock_user.save()
Create product user::
>>> product_admin_user = User()
>>> product_admin_user.name = 'Product'
>>> product_admin_user.login = 'product'
>>> product_admin_group, = Group.find([
... ('name', '=', "Account Product Administration")
... ])
>>> product_admin_user.groups.append(product_admin_group)
>>> product_admin_user.save()
Create purchase user::
>>> purchase_user = User()
>>> purchase_user.name = 'Purchase'
>>> purchase_user.login = 'purchase'
>>> purchase_groups = Group.find(['OR',
... ('name', '=', "Purchase"),
... ('name', '=', "Purchase Request"),
... ])
>>> purchase_user.groups.extend(purchase_groups)
>>> purchase_user.save()
Create account category::
>>> ProductCategory = Model.get('product.category')
@@ -87,7 +43,6 @@ Create account category::
Create product::
>>> set_user(product_admin_user)
>>> ProductUom = Model.get('product.uom')
>>> ProductTemplate = Model.get('product.template')
>>> unit, = ProductUom.find([('name', '=', 'Unit')])
@@ -106,7 +61,6 @@ Create product::
Get stock locations::
>>> set_user(stock_admin_user)
>>> Location = Model.get('stock.location')
>>> warehouse_loc, = Location.find([('code', '=', 'WH')])
>>> supplier_loc, = Location.find([('code', '=', 'SUP')])
@@ -116,7 +70,6 @@ Get stock locations::
Create a need for missing product::
>>> set_user(stock_user)
>>> ShipmentOut = Model.get('stock.shipment.out')
>>> shipment_out = ShipmentOut()
>>> shipment_out.planned_date = today
@@ -136,20 +89,17 @@ Create a need for missing product::
There is no purchase request::
>>> set_user(purchase_user)
>>> PurchaseRequest = Model.get('purchase.request')
>>> PurchaseRequest.find([])
[]
Create the purchase request::
>>> set_user(stock_user)
>>> create_pr = Wizard('stock.supply')
>>> create_pr.execute('create_')
There is now a draft purchase request::
>>> set_user(purchase_user)
>>> pr, = PurchaseRequest.find([('state', '=', 'draft')])
>>> assertEqual(pr.product, product)
>>> pr.quantity
@@ -199,7 +149,6 @@ Handle again the exception::
Re-create the purchase request::
>>> set_user(stock_user)
>>> create_pr = Wizard('stock.supply')
>>> create_pr.execute('create_')
@@ -214,11 +163,11 @@ Create a second purchase request manually::
... 'warehouse': warehouse_loc.id,
... 'origin': 'stock.order_point,-1',
... }], ctx)
>>> set_user()
>>> pr = PurchaseRequest(pr_id)
There is now 2 draft purchase requests::
>>> set_user(purchase_user)
>>> prs = PurchaseRequest.find([('state', '=', 'draft')])
>>> len(prs)
2
@@ -248,6 +197,7 @@ Create a purchase request without product::
... 'quantity': 1,
... 'origin': 'stock.order_point,-1',
... }], ctx)
>>> set_user()
>>> pr = PurchaseRequest(pr_id)
>>> pr.save()
@@ -20,40 +20,27 @@ Activate purchase_request_quotation Module::
... ['purchase_request_quotation', 'purchase_requisition'],
... create_company, create_chart)
>>> Employee = Model.get('company.employee')
>>> Party = Model.get('party.party')
>>> User = Model.get('res.user')
Set employee::
>>> employee_party = Party(name="Employee")
>>> employee_party.save()
>>> employee = Employee(party=employee_party)
>>> employee.save()
>>> user = User(config.user)
>>> user.employees.append(employee)
>>> user.employee = employee
>>> user.save()
>>> set_user(user.id)
Get accounts::
>>> accounts = get_accounts()
>>> expense = accounts['expense']
Create purchase user which is also in requisition approval group::
>>> User = Model.get('res.user')
>>> Group = Model.get('res.group')
>>> Party = Model.get('party.party')
>>> Employee = Model.get('company.employee')
>>> purchase_user = User()
>>> purchase_user.name = 'Purchase'
>>> purchase_user.login = 'purchase'
>>> purchase_group, = Group.find([('name', '=', 'Purchase')])
>>> purchase_user.groups.append(purchase_group)
>>> purchase_request_group, = Group.find(
... [('name', '=', 'Purchase Request')])
>>> purchase_user.groups.append(purchase_request_group)
>>> requisition_group, = Group.find([
... ('name', '=', 'Purchase Requisition')])
>>> purchase_user.groups.append(requisition_group)
>>> requisition_approval_group, = Group.find([
... ('name', '=', 'Purchase Requisition Approval')])
>>> purchase_user.groups.append(requisition_approval_group)
>>> employee_party = Party(name='Employee')
>>> employee_party.save()
>>> employee = Employee(party=employee_party)
>>> employee.save()
>>> purchase_user.employees.append(employee)
>>> purchase_user.employee = employee
>>> purchase_user.save()
Create suppliers::
>>> supplier = Party(name='Supplier')
@@ -90,7 +77,6 @@ Create product::
Create purchase requisition::
>>> set_user(purchase_user)
>>> Location = Model.get('stock.location')
>>> warehouse_loc, = Location.find([('code', '=', 'WH')])
>>> PurchaseRequisition = Model.get('purchase.requisition')
@@ -181,7 +167,7 @@ with a quotation not having the minimum price unit::
>>> set_user(0)
>>> prequest2, = prequest.duplicate()
>>> set_user(purchase_user)
>>> set_user()
>>> prequest2.preferred_quotation_line = sorted(
... prequest2.quotation_lines, key=lambda q: q.unit_price)[-1]
>>> prequest2.preferred_quotation_line.unit_price
@@ -10,7 +10,7 @@ Imports::
>>> from proteus import Model, Wizard
>>> from trytond.modules.account.tests.tools import create_chart, get_accounts
>>> from trytond.modules.company.tests.tools import create_company
>>> from trytond.tests.tools import activate_modules, assertEqual, set_user
>>> from trytond.tests.tools import activate_modules, assertEqual
>>> today = dt.date.today()
@@ -18,62 +18,21 @@ Activate purchase_requisition Module::
>>> config = activate_modules('purchase_requisition', create_company, create_chart)
>>> Employee = Model.get('company.employee')
>>> Party = Model.get('party.party')
Create employee::
>>> employee_party = Party(name="Employee")
>>> employee_party.save()
>>> employee = Employee(party=employee_party)
>>> employee.save()
Get accounts::
>>> accounts = get_accounts()
>>> expense = accounts['expense']
Create purchase requisition user::
>>> User = Model.get('res.user')
>>> Group = Model.get('res.group')
>>> Party = Model.get('party.party')
>>> Employee = Model.get('company.employee')
>>> requisition_user = User()
>>> requisition_user.name = 'Requisition'
>>> requisition_user.login = 'requisition'
>>> requisition_group, = Group.find([
... ('name', '=', 'Purchase Requisition')])
>>> requisition_user.groups.append(requisition_group)
>>> employee_party = Party(name='Employee')
>>> employee_party.save()
>>> employee = Employee(party=employee_party)
>>> employee.save()
>>> requisition_user.employees.append(employee)
>>> requisition_user.employee = employee
>>> requisition_user.save()
>>> party_approval, = Party.duplicate([employee_party], {
... 'name': 'Employee Approval',
... })
>>> employee_approval, = Employee.duplicate([employee], {
... 'party': party_approval.id,
... })
>>> requisition_approval_user, = User.duplicate([requisition_user], {
... 'name': 'Requisition Approval',
... 'login': 'requisition_approval',
... })
>>> requisition_approval_group, = Group.find([
... ('name', '=', 'Purchase Requisition Approval')])
>>> requisition_approval_user.groups.append(requisition_approval_group)
>>> _ = requisition_approval_user.employees.pop()
>>> requisition_approval_user.employees.append(employee_approval)
>>> requisition_approval_user.employee = employee_approval
>>> requisition_approval_user.save()
Create purchase user::
>>> purchase_user = User()
>>> purchase_user.name = 'Purchase'
>>> purchase_user.login = 'purchase'
>>> purchase_group, = Group.find([('name', '=', 'Purchase')])
>>> purchase_user.groups.append(purchase_group)
>>> purchase_request_group, = Group.find(
... [('name', '=', 'Purchase Request')])
>>> purchase_user.groups.append(purchase_request_group)
>>> purchase_user.save()
Create supplier::
>>> supplier = Party(name='Supplier')
@@ -116,7 +75,6 @@ Create product::
Create purchase requisition without product and description::
>>> set_user(requisition_user)
>>> PurchaseRequisition = Model.get('purchase.requisition')
>>> requisition = PurchaseRequisition()
>>> requisition.description = 'Description'
@@ -160,27 +118,8 @@ Create purchase requisition with supplier and price::
>>> requisition.state
'waiting'
Approve workflow by requisition user raise an exception because he's not in
approval_group::
>>> set_user(requisition_user)
>>> requisition.click('approve')
Traceback (most recent call last):
...
AccessButtonError: ...
Approve workflow by purchaser raise an exception because he's not in
approval_group::
>>> set_user(purchase_user)
>>> requisition.click('approve')
Traceback (most recent call last):
...
AccessButtonError: ...
Approve workflow with user in approval_group::
>>> set_user(requisition_approval_user)
>>> requisition.click('approve')
>>> requisition.state
'processing'
@@ -189,7 +128,6 @@ Approve workflow with user in approval_group::
Create Purchase order from Request::
>>> set_user(purchase_user)
>>> PurchaseRequest = Model.get('purchase.request')
>>> pr, = PurchaseRequest.find([('state', '=', 'draft')])
>>> pr.state
@@ -259,7 +197,6 @@ Confirm the purchase order::
Try to delete requisition done::
>>> set_user(requisition_user)
>>> PurchaseRequisition.delete([requisition])
Traceback (most recent call last):
...
@@ -275,7 +212,6 @@ Delete draft requisition::
Create purchase requisition with two different suppliers::
>>> set_user(requisition_user)
>>> requisition = PurchaseRequisition()
>>> requisition.description = 'Description'
>>> requisition.employee = employee
@@ -290,10 +226,8 @@ Create purchase requisition with two different suppliers::
>>> requisition_line.supplier = supplier2
>>> requisition.click('wait')
>>> set_user(requisition_approval_user)
>>> requisition.click('approve')
>>> set_user(purchase_user)
>>> pr = PurchaseRequest.find([('state', '=', 'draft')])
>>> len(pr)
2
@@ -333,7 +267,6 @@ Create purchase requisition with two different suppliers::
Create purchase requisition then cancel::
>>> set_user(requisition_user)
>>> requisition = PurchaseRequisition()
>>> requisition.description = 'Description'
>>> requisition.employee = employee
@@ -347,7 +280,6 @@ Create purchase requisition then cancel::
Create purchase requisition, wait then reject::
>>> set_user(requisition_user)
>>> requisition = PurchaseRequisition()
>>> requisition.description = 'Description'
>>> requisition.employee = employee
@@ -359,7 +291,6 @@ Create purchase requisition, wait then reject::
>>> requisition.state
'waiting'
>>> set_user(requisition_approval_user)
>>> requisition.click('reject')
>>> requisition.state
'rejected'
+4 -3
View File
@@ -18,11 +18,12 @@ Activate modules::
>>> config = activate_modules('sale', create_company, create_chart)
>>> Employee = Model.get('company.employee')
>>> Party = Model.get('party.party')
>>> User = Model.get('res.user')
Set employee::
>>> User = Model.get('res.user')
>>> Party = Model.get('party.party')
>>> Employee = Model.get('company.employee')
>>> employee_party = Party(name="Employee")
>>> employee_party.save()
>>> employee = Employee(party=employee_party)
@@ -12,33 +12,13 @@ Imports::
>>> from trytond.modules.account_invoice.tests.tools import (
... create_payment_term, set_fiscalyear_invoice_sequences)
>>> from trytond.modules.company.tests.tools import create_company
>>> from trytond.tests.tools import activate_modules, set_user
>>> from trytond.tests.tools import activate_modules
Activate modules::
>>> config = activate_modules(
... 'sale_invoice_grouping', create_company, create_chart)
Create sale user::
>>> User = Model.get('res.user')
>>> Group = Model.get('res.group')
>>> sale_user = User()
>>> sale_user.name = 'Sale'
>>> sale_user.login = 'sale'
>>> sale_group, = Group.find([('name', '=', 'Sales')])
>>> sale_user.groups.append(sale_group)
>>> sale_user.save()
Create account user::
>>> account_user = User()
>>> account_user.name = 'Account'
>>> account_user.login = 'account'
>>> account_group, = Group.find([('name', '=', 'Accounting')])
>>> account_user.groups.append(account_group)
>>> account_user.save()
Create fiscal year::
>>> fiscalyear = set_fiscalyear_invoice_sequences(create_fiscalyear())
@@ -91,7 +71,6 @@ Create payment term::
Sale some products::
>>> set_user(sale_user)
>>> Sale = Model.get('sale.sale')
>>> sale = Sale()
>>> sale.party = customer
@@ -115,7 +94,6 @@ Make another sale::
Check the invoices::
>>> set_user(account_user)
>>> Invoice = Model.get('account.invoice')
>>> invoices = Invoice.find([('party', '=', customer.id)])
>>> len(invoices)
@@ -129,7 +107,6 @@ Check the invoices::
Now we'll use the same scenario with the grouped customer::
>>> set_user(sale_user)
>>> sale = Sale()
>>> sale.party = customer_grouped
>>> sale.payment_term = payment_term
@@ -158,7 +135,6 @@ Make another sale::
Check the invoices::
>>> set_user(account_user)
>>> invoices = Invoice.find([
... ('party', '=', customer_grouped.id),
... ('state', '=', 'draft'),
@@ -185,7 +161,6 @@ Create a manual invoice::
Check that a new sale won't be grouped with the manual invoice::
>>> set_user(sale_user)
>>> sale = Sale()
>>> sale.party = customer_grouped
>>> sale.payment_term = payment_term
@@ -200,7 +175,6 @@ Check that a new sale won't be grouped with the manual invoice::
Check the invoices::
>>> set_user(account_user)
>>> invoices = Invoice.find([
... ('party', '=', customer_grouped.id),
... ('state', '=', 'draft'),
@@ -11,13 +11,22 @@ Imports::
... create_chart, create_tax, get_accounts)
>>> from trytond.modules.account_invoice.tests.tools import create_payment_term
>>> from trytond.modules.company.tests.tools import create_company
>>> from trytond.tests.tools import activate_modules, assertEqual, set_user
>>> from trytond.tests.tools import activate_modules, assertEqual
Activate modules::
>>> config = activate_modules('sale_opportunity', create_company, create_chart)
>>> Sale = Model.get('sale.sale')
>>> Employee = Model.get('company.employee')
>>> Party = Model.get('party.party')
Create employee::
>>> employee_party = Party(name="Employee")
>>> employee_party.save()
>>> employee = Employee(party=employee_party)
>>> employee.save()
Get accounts::
@@ -29,37 +38,6 @@ Create tax::
>>> tax = create_tax(Decimal('.10'))
>>> tax.save()
Create sale opportunity user::
>>> User = Model.get('res.user')
>>> Group = Model.get('res.group')
>>> sale_opportunity_user = User()
>>> sale_opportunity_user.name = 'Sale Opportunity'
>>> sale_opportunity_user.login = 'sale_opportunity'
>>> sale_opportunity_group, = Group.find(
... [('name', '=', 'Sale Opportunity')])
>>> sale_opportunity_user.groups.append(sale_opportunity_group)
>>> Employee = Model.get('company.employee')
>>> Party = Model.get('party.party')
>>> employee_party = Party(name='Employee')
>>> employee_party.save()
>>> employee = Employee(party=employee_party)
>>> employee.save()
>>> sale_opportunity_user.employees.append(employee)
>>> sale_opportunity_user.employee = employee
>>> sale_opportunity_user.save()
Create sale user::
>>> sale_user = User()
>>> sale_user.name = 'Sale'
>>> sale_user.login = 'sale'
>>> sale_group, = Group.find([('name', '=', 'Sales')])
>>> sale_user.groups.append(sale_group)
>>> sale_user.save()
Create party::
>>> Party = Model.get('party.party')
@@ -98,7 +76,6 @@ Create payment term::
Create an lead::
>>> set_user(sale_opportunity_user)
>>> Opportunity = Model.get('sale.opportunity')
>>> opportunity = Opportunity()
>>> opportunity.description = 'Opportunity'
@@ -126,7 +103,6 @@ Add a line::
Convert to sale::
>>> set_user(sale_user)
>>> sale, = opportunity.click('convert')
>>> opportunity.state
'converted'
@@ -147,7 +123,6 @@ Quote different quantity::
Check opportunity amount updated::
>>> set_user(sale_opportunity_user)
>>> opportunity.reload()
>>> opportunity.amount
Decimal('90.00')
@@ -156,7 +131,6 @@ Check opportunity amount updated::
Add a second quotation::
>>> set_user(sale_user)
>>> second_sale = Sale()
>>> second_sale.origin = opportunity
>>> second_sale.party = customer
@@ -168,7 +142,6 @@ Add a second quotation::
Check opportunity amount updated::
>>> set_user(sale_opportunity_user)
>>> opportunity.reload()
>>> opportunity.amount
Decimal('100.00')
@@ -177,14 +150,12 @@ Check opportunity amount updated::
Cancel second quotation::
>>> set_user(sale_user)
>>> second_sale.click('cancel')
>>> second_sale.state
'cancelled'
Check opportunity amount updated::
>>> set_user(sale_opportunity_user)
>>> opportunity.reload()
>>> opportunity.amount
Decimal('90.00')
@@ -193,16 +164,13 @@ Check opportunity amount updated::
Won opportunity::
>>> set_user(sale_user)
>>> sale.click('confirm')
>>> set_user(sale_opportunity_user)
>>> opportunity.reload()
>>> opportunity.state
'won'
Check opportunity state updated::
>>> set_user(sale_opportunity_user)
>>> opportunity.reload()
>>> opportunity.state
'won'
@@ -12,33 +12,12 @@ Imports::
>>> from trytond.modules.account_invoice.tests.tools import (
... create_payment_term, set_fiscalyear_invoice_sequences)
>>> from trytond.modules.company.tests.tools import create_company
>>> from trytond.tests.tools import activate_modules, assertEqual, set_user
>>> from trytond.tests.tools import activate_modules, assertEqual
Activate modules::
>>> config = activate_modules('sale_price_list', create_company, create_chart)
Create sale user::
>>> User = Model.get('res.user')
>>> Group = Model.get('res.group')
>>> sale_user = User()
>>> sale_user.name = 'Sale'
>>> sale_user.login = 'sale'
>>> sale_group, = Group.find([('name', '=', 'Sales')])
>>> sale_user.groups.append(sale_group)
>>> sale_user.save()
>>> sale_admin = User()
>>> sale_admin.name = 'Sale Admin'
>>> sale_admin.login = 'sale_admin'
>>> sale_admin_group, = Group.find([('name', '=', 'Sales Administrator')])
>>> sale_admin.groups.append(sale_admin_group)
>>> product_admin_group, = Group.find(
... [('name', '=', 'Product Administration')])
>>> sale_admin.groups.append(product_admin_group)
>>> sale_admin.save()
Create fiscal year::
>>> fiscalyear = set_fiscalyear_invoice_sequences(create_fiscalyear())
@@ -117,7 +96,6 @@ Create a price List and assign it to customer::
Use the price list on sale::
>>> set_user(sale_user)
>>> Sale = Model.get('sale.sale')
>>> sale = Sale()
>>> sale.party = customer
@@ -140,7 +118,6 @@ Use the price list on sale::
Create a sale price List and assign to configuration::
>>> set_user(sale_admin)
>>> sale_price_list = PriceList(name='Sale price List')
>>> sale_price_list_line = sale_price_list.lines.new()
>>> sale_price_list_line.formula = 'unit_price * 0.5'
@@ -152,6 +129,5 @@ Create a sale price List and assign to configuration::
Use the sale price list on sale::
>>> set_user(sale_user)
>>> sale.party = customer_without_price_list
>>> assertEqual(sale.price_list, sale_price_list)
@@ -12,33 +12,13 @@ Imports::
>>> from trytond.modules.account_invoice.tests.tools import (
... create_payment_term, set_fiscalyear_invoice_sequences)
>>> from trytond.modules.company.tests.tools import create_company
>>> from trytond.tests.tools import activate_modules, set_user
>>> from trytond.tests.tools import activate_modules
Activate modules::
>>> config = activate_modules(
... 'sale_shipment_grouping', create_company, create_chart)
Create sale user::
>>> User = Model.get('res.user')
>>> Group = Model.get('res.group')
>>> sale_user = User()
>>> sale_user.name = 'Sale'
>>> sale_user.login = 'sale'
>>> sale_group, = sale_user.groups.find([('name', '=', 'Sales')])
>>> sale_user.groups.append(sale_group)
>>> sale_user.save()
Create stock user::
>>> stock_user = User()
>>> stock_user.name = 'Stock'
>>> stock_user.login = 'stock'
>>> stock_group, = Group.find([('name', '=', 'Stock')])
>>> stock_user.groups.append(stock_group)
>>> stock_user.save()
Create fiscal year::
>>> fiscalyear = set_fiscalyear_invoice_sequences(create_fiscalyear())
@@ -91,7 +71,6 @@ Create payment term::
Create an inventory::
>>> set_user(stock_user)
>>> Inventory = Model.get('stock.inventory')
>>> InventoryLine = Model.get('stock.inventory.line')
>>> Location = Model.get('stock.location')
@@ -110,7 +89,6 @@ Create an inventory::
Sell some products::
>>> set_user(sale_user)
>>> Sale = Model.get('sale.sale')
>>> sale = Sale()
>>> sale.party = customer
@@ -134,7 +112,6 @@ Make another sale::
Check the shipments::
>>> set_user(stock_user)
>>> ShipmentOut = Model.get('stock.shipment.out')
>>> shipments = ShipmentOut.find([('customer', '=', customer.id)])
>>> len(shipments)
@@ -147,7 +124,6 @@ Check the shipments::
Now we'll use the same scenario with the grouped customer::
>>> set_user(sale_user)
>>> sale = Sale()
>>> sale.party = customer_grouped
>>> sale.payment_term = payment_term
@@ -176,7 +152,6 @@ Make another sale::
Check the shipments::
>>> set_user(stock_user)
>>> shipments = ShipmentOut.find([
... ('customer', '=', customer_grouped.id),
... ('state', '=', 'waiting'),
@@ -12,7 +12,7 @@ Imports::
>>> from trytond.modules.account_invoice.tests.tools import (
... create_payment_term, set_fiscalyear_invoice_sequences)
>>> from trytond.modules.company.tests.tools import create_company
>>> from trytond.tests.tools import activate_modules, set_user
>>> from trytond.tests.tools import activate_modules
Activate modules::
@@ -20,39 +20,6 @@ Activate modules::
... ['sale_supply', 'sale', 'purchase'],
... create_company, create_chart)
Create sale user::
>>> User = Model.get('res.user')
>>> Group = Model.get('res.group')
>>> admin_user, = User.find([('login', '=', 'admin')])
>>> sale_user = User()
>>> sale_user.name = 'Sale'
>>> sale_user.login = 'sale'
>>> sale_group, = Group.find([('name', '=', 'Sales')])
>>> sale_user.groups.append(sale_group)
>>> sale_user.save()
Create purchase user::
>>> purchase_user = User()
>>> purchase_user.name = 'Purchase'
>>> purchase_user.login = 'purchase'
>>> purchase_group, = Group.find([('name', '=', 'Purchase')])
>>> purchase_user.groups.append(purchase_group)
>>> purchase_request_group, = Group.find(
... [('name', '=', 'Purchase Request')])
>>> purchase_user.groups.append(purchase_request_group)
>>> purchase_user.save()
Create stock user::
>>> stock_user = User()
>>> stock_user.name = 'Stock'
>>> stock_user.login = 'stock'
>>> stock_group, = Group.find([('name', '=', 'Stock')])
>>> stock_user.groups.append(stock_group)
>>> stock_user.save()
Create fiscal year::
>>> fiscalyear = set_fiscalyear_invoice_sequences(create_fiscalyear())
@@ -106,7 +73,6 @@ Create payment term::
Sale 250 products::
>>> set_user(sale_user)
>>> Sale = Model.get('sale.sale')
>>> sale = Sale()
>>> sale.party = customer
@@ -128,7 +94,6 @@ Sale 250 products::
Delete Purchase Request::
>>> set_user(purchase_user)
>>> PurchaseRequest = Model.get('purchase.request')
>>> purchase_request, = PurchaseRequest.find()
>>> purchase_request.quantity
@@ -140,7 +105,6 @@ Delete Purchase Request::
Create Purchase from Request::
>>> set_user(purchase_user)
>>> Purchase = Model.get('purchase.purchase')
>>> purchase_request, = PurchaseRequest.find()
>>> purchase_request.quantity
@@ -157,7 +121,6 @@ Create Purchase from Request::
>>> purchase.click('confirm')
>>> purchase.state
'processing'
>>> set_user(sale_user)
>>> sale.reload()
>>> shipment, = sale.shipments
>>> move, = shipment.outgoing_moves
@@ -169,7 +132,6 @@ Create Purchase from Request::
Receive 100 products::
>>> set_user(stock_user)
>>> ShipmentIn = Model.get('stock.shipment.in')
>>> Move = Model.get('stock.move')
>>> shipment = ShipmentIn(supplier=supplier)
@@ -180,7 +142,6 @@ Receive 100 products::
>>> shipment.click('do')
>>> shipment.state
'done'
>>> set_user(sale_user)
>>> sale.reload()
>>> shipment, = sale.shipments
>>> move, = [x for x in shipment.inventory_moves
@@ -195,7 +156,6 @@ Receive 100 products::
Switching from not supplying on sale to supplying on sale for product should
not create a new purchase request::
>>> set_user(admin_user)
>>> changing_template = ProductTemplate()
>>> changing_template.name = 'product'
@@ -209,7 +169,6 @@ not create a new purchase request::
>>> changing_template.save()
>>> changing_product, = changing_template.products
>>> set_user(sale_user)
>>> Sale = Model.get('sale.sale')
>>> sale = Sale()
>>> sale.party = customer
@@ -222,7 +181,6 @@ not create a new purchase request::
>>> sale.state
'processing'
>>> shipment, = sale.shipments
>>> set_user(stock_user)
>>> Inventory = Model.get('stock.inventory')
>>> Location = Model.get('stock.location')
>>> storage, = Location.find([
@@ -243,12 +201,9 @@ not create a new purchase request::
>>> shipment.click('pick')
>>> shipment.click('pack')
>>> set_user(admin_user)
>>> changing_template.supply_on_sale = 'always'
>>> changing_template.save()
>>> set_user(stock_user)
>>> shipment.click('do')
>>> set_user(purchase_user)
>>> len(PurchaseRequest.find([('product', '=', changing_product.id)]))
0
@@ -13,7 +13,7 @@ Imports::
>>> from trytond.modules.account_invoice.tests.tools import (
... create_payment_term, set_fiscalyear_invoice_sequences)
>>> from trytond.modules.company.tests.tools import create_company
>>> from trytond.tests.tools import activate_modules, assertEqual, set_user
>>> from trytond.tests.tools import activate_modules, assertEqual
>>> today = dt.date.today()
@@ -26,55 +26,6 @@ Activate modules::
... ],
... create_company, create_chart)
Create sale user::
>>> User = Model.get('res.user')
>>> Group = Model.get('res.group')
>>> sale_user = User()
>>> sale_user.name = 'Sale'
>>> sale_user.login = 'sale'
>>> sale_group, = Group.find([('name', '=', 'Sales')])
>>> sale_user.groups.append(sale_group)
>>> sale_user.save()
Create purchase user::
>>> purchase_user = User()
>>> purchase_user.name = 'Purchase'
>>> purchase_user.login = 'purchase'
>>> purchase_group, = Group.find([('name', '=', 'Purchase')])
>>> purchase_user.groups.append(purchase_group)
>>> purchase_request_group, = Group.find(
... [('name', '=', 'Purchase Request')])
>>> purchase_user.groups.append(purchase_request_group)
>>> purchase_user.save()
Create stock user::
>>> stock_user = User()
>>> stock_user.name = 'Stock'
>>> stock_user.login = 'stock'
>>> stock_group, = Group.find([('name', '=', 'Stock')])
>>> stock_force_group, = Group.find([
... ('name', '=', 'Stock Force Assignment'),
... ])
>>> product_admin_group, = Group.find([
... ('name', '=', "Product Administration"),
... ])
>>> stock_user.groups.append(stock_group)
>>> stock_user.groups.append(stock_force_group)
>>> stock_user.groups.append(product_admin_group)
>>> stock_user.save()
Create account user::
>>> account_user = User()
>>> account_user.name = "Account"
>>> account_user.login = 'account'
>>> account_group, = Group.find([('name', '=', "Accounting")])
>>> account_user.groups.append(account_group)
>>> account_user.save()
Create fiscal year::
>>> fiscalyear = set_fiscalyear_invoice_sequences(
@@ -138,7 +89,6 @@ Create payment term::
Sale 250 products::
>>> set_user(sale_user)
>>> Sale = Model.get('sale.sale')
>>> sale = Sale()
>>> sale.party = customer
@@ -157,7 +107,6 @@ Sale 250 products::
Create Purchase from Request::
>>> set_user(purchase_user)
>>> Purchase = Model.get('purchase.purchase')
>>> PurchaseRequest = Model.get('purchase.request')
>>> purchase_request, = PurchaseRequest.find()
@@ -176,7 +125,6 @@ Create Purchase from Request::
>>> purchase.state
'processing'
>>> set_user(sale_user)
>>> sale.reload()
>>> sale.shipments
[]
@@ -184,7 +132,6 @@ Create Purchase from Request::
Receiving only 100 products::
>>> set_user(stock_user)
>>> move, = shipment.supplier_moves
>>> move.quantity = 100
>>> move.unit_price
@@ -196,7 +143,6 @@ Receiving only 100 products::
>>> move.unit_price
Decimal('10.0000')
>>> move.cost_price
>>> set_user(sale_user)
>>> sale.reload()
>>> sale.shipments
[]
@@ -205,14 +151,12 @@ Receiving only 100 products::
>>> shipment, = [s for s in sale.drop_shipments
... if s.state == 'shipped']
>>> set_user(stock_user)
>>> shipment.click('do')
>>> shipment.state
'done'
>>> move, = shipment.customer_moves
>>> move.cost_price
Decimal('3.0000')
>>> set_user(sale_user)
>>> sale.reload()
>>> sale.shipments
[]
@@ -221,7 +165,6 @@ Receiving only 100 products::
The purchase is now waiting for his new drop shipment::
>>> set_user(purchase_user)
>>> purchase.reload()
>>> purchase.shipment_state
'partially shipped'
@@ -239,10 +182,8 @@ The purchase is now waiting for his new drop shipment::
Let's cancel the shipment and handle the issue on the purchase.
As a consequence the sale order is now in exception::
>>> set_user(stock_user)
>>> shipment.click('cancel')
>>> set_user(purchase_user)
>>> purchase.reload()
>>> purchase.shipment_state
'exception'
@@ -254,21 +195,18 @@ As a consequence the sale order is now in exception::
>>> purchase.shipment_state
'received'
>>> set_user(sale_user)
>>> sale.reload()
>>> sale.shipment_state
'exception'
Receive purchase invoice at different price::
>>> set_user(account_user)
>>> invoice, = purchase.invoices
>>> invoice_line, = invoice.lines
>>> invoice_line.unit_price = Decimal('4.0000')
>>> invoice.invoice_date = today
>>> invoice.click('post')
>>> set_user(stock_user)
>>> recompute = Wizard('product.recompute_cost_price', [product])
>>> recompute.execute('recompute')
@@ -284,7 +222,6 @@ Receive purchase invoice at different price::
Cancelling the workflow on the purchase step::
>>> set_user(sale_user)
>>> sale = Sale()
>>> sale.party = customer
>>> sale.payment_term = payment_term
@@ -301,7 +238,6 @@ Cancelling the workflow on the purchase step::
>>> sale.drop_shipments
[]
>>> set_user(purchase_user)
>>> purchase_request, = PurchaseRequest.find([('purchase_line', '=', None)])
>>> purchase_request.quantity
125.0
@@ -341,7 +277,6 @@ the sale::
The sale is then in exception::
>>> set_user(sale_user)
>>> sale.reload()
>>> sale.shipment_state
'exception'
@@ -358,13 +293,11 @@ from stock::
>>> shipment, = sale.shipments
>>> set_user(stock_user)
>>> shipment.click('assign_force')
>>> shipment.click('pick')
>>> shipment.click('pack')
>>> shipment.click('do')
>>> set_user(sale_user)
>>> sale.reload()
>>> sale.shipment_state
'sent'
@@ -20,6 +20,22 @@ Activate modules::
>>> config = activate_modules('stock', create_company)
>>> Employee = Model.get('company.employee')
>>> Party = Model.get('party.party')
>>> User = Model.get('res.user')
Set employee::
>>> employee_party = Party(name="Employee")
>>> employee_party.save()
>>> employee = Employee(party=employee_party)
>>> employee.save()
>>> user = User(config.user)
>>> user.employees.append(employee)
>>> user.employee = employee
>>> user.save()
>>> set_user(user.id)
Create product::
>>> ProductUom = Model.get('product.uom')
@@ -43,28 +59,8 @@ Get stock locations::
... name="Internal", type='storage', parent=storage_loc.parent)
>>> internal_loc.save()
Create stock user::
>>> User = Model.get('res.user')
>>> Group = Model.get('res.group')
>>> Party = Model.get('party.party')
>>> Employee = Model.get('company.employee')
>>> stock_user = User()
>>> stock_user.name = 'Stock'
>>> stock_user.login = 'stock'
>>> stock_group, = Group.find([('name', '=', 'Stock')])
>>> stock_user.groups.append(stock_group)
>>> employee_party = Party(name="Employee")
>>> employee_party.save()
>>> employee = Employee(party=employee_party)
>>> employee.save()
>>> stock_user.employees.append(employee)
>>> stock_user.employee = employee
>>> stock_user.save()
Create Internal Shipment::
>>> set_user(stock_user)
>>> Shipment = Model.get('stock.shipment.internal')
>>> StockMove = Model.get('stock.move')
>>> shipment = Shipment()
@@ -136,7 +132,6 @@ Reschedule shipment::
>>> shipment_copy.planned_date = yesterday
>>> shipment_copy.click('wait')
>>> set_user(1)
>>> Cron = Model.get('ir.cron')
>>> cron = Cron(method='stock.shipment.internal|reschedule')
>>> cron.interval_number = 1
@@ -20,6 +20,22 @@ Activate modules::
>>> config = activate_modules('stock', create_company)
>>> Employee = Model.get('company.employee')
>>> Party = Model.get('party.party')
>>> User = Model.get('res.user')
Set employee::
>>> employee_party = Party(name="Employee")
>>> employee_party.save()
>>> employee = Employee(party=employee_party)
>>> employee.save()
>>> user = User(config.user)
>>> user.employees.append(employee)
>>> user.employee = employee
>>> user.save()
>>> set_user(user.id)
Get currency::
>>> currency = get_currency()
@@ -44,27 +60,6 @@ Create product::
>>> template.save()
>>> product, = template.products
Create stock user::
>>> User = Model.get('res.user')
>>> Group = Model.get('res.group')
>>> Employee = Model.get('company.employee')
>>> stock_user = User()
>>> stock_user.name = "Stock"
>>> stock_user.login = 'stock'
>>> stock_user.groups.extend(Group.find([
... ('name', '=', 'Stock'),
... ]))
>>> employee_party = Party(name="Employee")
>>> employee_party.save()
>>> employee = Employee(party=employee_party)
>>> employee.save()
>>> stock_user.employees.append(employee)
>>> stock_user.employee = employee
>>> stock_user.save()
>>> set_user(stock_user)
Get stock locations::
>>> Location = Model.get('stock.location')
@@ -280,7 +275,6 @@ Reschedule shipment::
>>> shipment_copy, = shipment_out.duplicate()
>>> shipment_copy.planned_date = yesterday
>>> shipment_copy.click('wait')
>>> set_user(1)
>>> Cron = Model.get('ir.cron')
>>> cron = Cron(method='stock.shipment.out|reschedule')
>>> cron.interval_number = 1
@@ -8,46 +8,14 @@ Imports::
>>> from proteus import Model, Wizard
>>> from trytond.modules.company.tests.tools import create_company
>>> from trytond.tests.tools import activate_modules, set_user
>>> from trytond.tests.tools import activate_modules
Activate modules::
>>> config = activate_modules('stock_supply', create_company)
Create stock admin user::
>>> User = Model.get('res.user')
>>> Group = Model.get('res.group')
>>> stock_admin_user = User()
>>> stock_admin_user.name = 'Stock Admin'
>>> stock_admin_user.login = 'stock_admin'
>>> stock_admin_group, = Group.find([('name', '=', 'Stock Administration')])
>>> stock_admin_user.groups.append(stock_admin_group)
>>> stock_admin_user.save()
Create stock user::
>>> stock_user = User()
>>> stock_user.name = 'Stock'
>>> stock_user.login = 'stock'
>>> stock_group, = Group.find([('name', '=', 'Stock')])
>>> stock_user.groups.append(stock_group)
>>> stock_user.save()
Create product user::
>>> product_admin_user = User()
>>> product_admin_user.name = 'Product'
>>> product_admin_user.login = 'product'
>>> product_admin_group, = Group.find([
... ('name', '=', 'Product Administration')
... ])
>>> product_admin_user.groups.append(product_admin_group)
>>> product_admin_user.save()
Create product::
>>> set_user(product_admin_user)
>>> ProductUom = Model.get('product.uom')
>>> ProductTemplate = Model.get('product.template')
>>> unit, = ProductUom.find([('name', '=', 'Unit')])
@@ -62,7 +30,6 @@ Create product::
Get stock locations::
>>> set_user(stock_admin_user)
>>> Location = Model.get('stock.location')
>>> warehouse_loc, = Location.find([('code', '=', 'WH')])
>>> supplier_loc, = Location.find([('code', '=', 'SUP')])
@@ -103,7 +70,6 @@ Create internal order point::
Create inventory to add enough quantity in Provisioning Location::
>>> set_user(stock_user)
>>> Inventory = Model.get('stock.inventory')
>>> inventory = Inventory()
>>> inventory.location = provisioning_loc
@@ -117,9 +83,7 @@ Create inventory to add enough quantity in Provisioning Location::
Execute internal supply::
>>> ShipmentInternal = Model.get('stock.shipment.internal')
>>> set_user(stock_admin_user)
>>> Wizard('stock.supply').execute('create_')
>>> set_user(stock_user)
>>> shipment, = ShipmentInternal.find([])
>>> shipment.state
'request'
@@ -149,9 +113,7 @@ Create negative quantity in Second Storage::
Execute internal supply::
>>> set_user(stock_admin_user)
>>> Wizard('stock.supply').execute('create_')
>>> set_user(stock_user)
>>> shipment, = ShipmentInternal.find(
... [('to_location', '=', sec_storage_loc.id)])
>>> shipment.state
@@ -171,8 +133,6 @@ Execute internal supply::
Create stock_supply cron and execute it::
>>> Cron = Model.get('ir.cron')
>>> admin_user, = User.find([('login', '=', 'admin')])
>>> set_user(admin_user)
>>> shipment.delete()
>>> cron = Cron(method='stock.order_point|supply_stock')
>>> cron.interval_number = 1
@@ -11,7 +11,7 @@ Imports::
>>> from trytond.modules.account.tests.tools import create_chart, get_accounts
>>> from trytond.modules.company.tests.tools import create_company
>>> from trytond.modules.currency.tests.tools import get_currency
>>> from trytond.tests.tools import activate_modules, assertEqual, set_user
>>> from trytond.tests.tools import activate_modules, assertEqual
>>> today = dt.date.today()
@@ -39,50 +39,6 @@ Configure supply period::
>>> purchase_config.supply_period = dt.timedelta(days=30)
>>> purchase_config.save()
Create stock admin user::
>>> User = Model.get('res.user')
>>> Group = Model.get('res.group')
>>> stock_admin_user = User()
>>> stock_admin_user.name = 'Stock Admin'
>>> stock_admin_user.login = 'stock_admin'
>>> stock_admin_group, = Group.find([('name', '=', 'Stock Administration')])
>>> stock_admin_user.groups.append(stock_admin_group)
>>> stock_admin_user.save()
Create stock user::
>>> stock_user = User()
>>> stock_user.name = 'Stock'
>>> stock_user.login = 'stock'
>>> stock_group, = Group.find([('name', '=', 'Stock')])
>>> stock_user.groups.append(stock_group)
>>> stock_user.save()
Create product user::
>>> product_admin_user = User()
>>> product_admin_user.name = 'Product'
>>> product_admin_user.login = 'product'
>>> product_admin_group, = Group.find([
... ('name', '=', 'Account Product Administration'),
... ])
>>> product_admin_user.groups.append(product_admin_group)
>>> product_admin_user.save()
Create purchase user::
>>> purchase_user = User()
>>> purchase_user.name = 'Purchase'
>>> purchase_user.login = 'purchase'
>>> purchase_groups = Group.find(['OR',
... ('name', '=', "Purchase"),
... ('name', '=', "Purchase Request"),
... ])
>>> purchase_user.groups.extend(purchase_groups)
>>> purchase_user.save()
Create account category::
>>> ProductCategory = Model.get('product.category')
@@ -93,7 +49,6 @@ Create account category::
Create product::
>>> set_user(product_admin_user)
>>> ProductUom = Model.get('product.uom')
>>> ProductTemplate = Model.get('product.template')
>>> unit, = ProductUom.find([('name', '=', 'Unit')])
@@ -110,7 +65,6 @@ Create product::
Define a product supplier::
>>> set_user(purchase_user)
>>> ProductSupplier = Model.get('purchase.product_supplier')
>>> product_supplier = ProductSupplier(template=template)
>>> product_supplier.party = supplier
@@ -119,7 +73,6 @@ Define a product supplier::
Get stock locations::
>>> set_user(stock_admin_user)
>>> Location = Model.get('stock.location')
>>> warehouse_loc, = Location.find([('code', '=', 'WH')])
>>> supplier_loc, = Location.find([('code', '=', 'SUP')])
@@ -129,7 +82,6 @@ Get stock locations::
Create needs for missing product::
>>> set_user(stock_user)
>>> ShipmentOut = Model.get('stock.shipment.out')
>>> shipment_out = ShipmentOut()
>>> shipment_out.planned_date = today
@@ -153,19 +105,16 @@ Create needs for missing product::
There is no purchase request::
>>> PurchaseRequest = Model.get('purchase.request')
>>> set_user(purchase_user)
>>> PurchaseRequest.find([])
[]
Create the purchase request::
>>> set_user(stock_admin_user)
>>> create_pr = Wizard('stock.supply')
>>> create_pr.execute('create_')
There is now a draft purchase request::
>>> set_user(purchase_user)
>>> pr, = PurchaseRequest.find([('state', '=', 'draft')])
>>> assertEqual(pr.product, product)
>>> pr.quantity
@@ -173,7 +122,6 @@ There is now a draft purchase request::
Create an order point with negative minimal quantity::
>>> set_user(stock_admin_user)
>>> OrderPoint = Model.get('stock.order_point')
>>> order_point = OrderPoint()
>>> order_point.type = 'purchase'
@@ -190,13 +138,11 @@ Create purchase request::
There is no more purchase request::
>>> set_user(purchase_user)
>>> PurchaseRequest.find([])
[]
Set a positive minimal quantity on order point create purchase request::
>>> set_user(stock_admin_user)
>>> order_point.min_quantity = 5
>>> order_point.save()
>>> create_pr = Wizard('stock.supply')
@@ -204,7 +150,6 @@ Set a positive minimal quantity on order point create purchase request::
There is now a draft purchase request::
>>> set_user(purchase_user)
>>> pr, = PurchaseRequest.find([('state', '=', 'draft')])
>>> assertEqual(pr.product, product)
>>> pr.quantity
@@ -212,7 +157,6 @@ There is now a draft purchase request::
Using zero as minimal quantity on order point also creates purchase request::
>>> set_user(stock_admin_user)
>>> order_point.min_quantity = 0
>>> order_point.save()
>>> create_pr = Wizard('stock.supply')
@@ -220,7 +164,6 @@ Using zero as minimal quantity on order point also creates purchase request::
There is now a draft purchase request::
>>> set_user(purchase_user)
>>> pr, = PurchaseRequest.find([('state', '=', 'draft')])
>>> assertEqual(pr.product, product)
>>> pr.quantity
@@ -232,10 +175,8 @@ Re-run with purchased request::
>>> pr.state
'purchased'
>>> set_user(stock_admin_user)
>>> create_pr = Wizard('stock.supply')
>>> create_pr.execute('create_')
>>> set_user(purchase_user)
>>> len(PurchaseRequest.find([('state', '=', 'draft')]))
0