Files
tradon/modules/commission/tests/scenario_agent_selection.rst
2026-03-14 09:42:12 +00:00

107 lines
2.6 KiB
ReStructuredText

========================
Agent Selection Scenario
========================
Imports::
>>> import datetime as dt
>>> from proteus import Model
>>> from trytond.modules.account.tests.tools import create_chart, get_accounts
>>> from trytond.modules.company.tests.tools import create_company, get_company
>>> from trytond.tests.tools import activate_modules, assertEqual, set_user
>>> today = dt.date.today()
>>> yesterday = today - dt.timedelta(days=1)
Activate modules::
>>> config = activate_modules(['commission', 'sale'], create_company, create_chart)
Get company::
>>> company = get_company()
Get accounts::
>>> accounts = get_accounts()
Create employee::
>>> Party = Model.get('party.party')
>>> Employee = Model.get('company.employee')
>>> employee = Employee()
>>> party = Party(name='Employee')
>>> party.save()
>>> employee.party = party
>>> employee.company = company
>>> employee.save()
Create customers::
>>> customer = Party(name='Customer')
>>> customer.save()
>>> other_customer = Party(name='Other Customer')
>>> other_customer.save()
Create agent::
>>> Agent = Model.get('commission.agent')
>>> agent_party = Party(name='Agent')
>>> agent_party.save()
>>> agent = Agent(party=agent_party)
>>> agent.type_ = 'agent'
>>> agent.currency = company.currency
>>> selection = agent.selections.new()
>>> selection.start_date = today
>>> selection.party = customer
>>> selection = agent.selections.new()
>>> selection.employee = employee
>>> agent.save()
Create sale::
>>> Sale = Model.get('sale.sale')
>>> sale = Sale()
>>> sale.party = customer
>>> sale.save()
The agent is assigned on quotation::
>>> sale.agent
>>> sale.click('quote')
>>> sale.state
'quotation'
>>> assertEqual(sale.agent, agent)
Agent is not set for yesterday sales::
>>> Sale = Model.get('sale.sale')
>>> sale = Sale()
>>> sale.sale_date = yesterday
>>> sale.party = customer
>>> sale.click('quote')
>>> sale.state
'quotation'
>>> sale.agent
Link user to employee::
>>> User = Model.get('res.user')
>>> user = User(config.user)
>>> user.employees.append(employee)
>>> user.employee = employee
>>> user.save()
>>> set_user(user.id)
Creating a sale and test agent is assigned::
>>> sale = Sale()
>>> sale.party = other_customer
>>> sale.agent
>>> sale.click('quote')
>>> sale.state
'quotation'
>>> assertEqual(sale.quoted_by, employee)
>>> assertEqual(sale.agent, agent)