152 lines
4.3 KiB
ReStructuredText
152 lines
4.3 KiB
ReStructuredText
================================
|
|
Account Receivable Rule Scenario
|
|
================================
|
|
|
|
Imports::
|
|
|
|
>>> from decimal import Decimal
|
|
|
|
>>> from proteus import Model
|
|
>>> 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
|
|
|
|
Activate modules::
|
|
|
|
>>> config = activate_modules(
|
|
... 'account_receivable_rule', create_company, create_chart)
|
|
|
|
>>> Journal = Model.get('account.journal')
|
|
>>> Party = Model.get('party.party')
|
|
>>> Move = Model.get('account.move')
|
|
>>> ReceivableRule = Model.get('account.account.receivable.rule')
|
|
|
|
Create fiscal year::
|
|
|
|
>>> fiscalyear = create_fiscalyear()
|
|
>>> fiscalyear.click('create_period')
|
|
>>> period = fiscalyear.periods[0]
|
|
|
|
Get accounts::
|
|
|
|
>>> accounts = get_accounts()
|
|
|
|
Create multiple receivable::
|
|
|
|
>>> receivable1, = accounts['receivable'].duplicate()
|
|
>>> receivable2, = accounts['receivable'].duplicate()
|
|
|
|
Setup journals::
|
|
|
|
>>> journal_general = Journal(name="General", type='general')
|
|
>>> journal_general.save()
|
|
>>> journal_revenue, = Journal.find([('code', '=', "REV")])
|
|
>>> journal_cash, = Journal.find([('code', '=', "CASH")])
|
|
|
|
Create a receivable rule::
|
|
|
|
>>> receivable_rule = ReceivableRule()
|
|
>>> receivable_rule.account = accounts['receivable']
|
|
>>> receivable_rule.journal = journal_general
|
|
>>> receivable_rule.priorities = 'maturity_date|account'
|
|
>>> account_rule1 = receivable_rule.accounts.new()
|
|
>>> account_rule1.account = receivable1
|
|
>>> account_rule2 = receivable_rule.accounts.new()
|
|
>>> account_rule2.account = receivable2
|
|
>>> account_rule2.only_reconcile = False
|
|
>>> receivable_rule.save()
|
|
|
|
Create parties::
|
|
|
|
>>> customer = Party(name="Customer")
|
|
>>> customer.save()
|
|
|
|
Create receivable lines for 100::
|
|
|
|
>>> move = Move()
|
|
>>> move.period = period
|
|
>>> move.journal = journal_revenue
|
|
>>> move.date = period.start_date
|
|
>>> line = move.lines.new()
|
|
>>> line.account = accounts['revenue']
|
|
>>> line.credit = Decimal('50.00')
|
|
>>> line = move.lines.new()
|
|
>>> line.account = receivable1
|
|
>>> line.party = customer
|
|
>>> line.debit = Decimal('50.00')
|
|
>>> line.maturity_date = period.start_date
|
|
>>> move.click('post')
|
|
|
|
>>> move = Move()
|
|
>>> move.period = period
|
|
>>> move.journal = journal_revenue
|
|
>>> move.date = period.start_date
|
|
>>> line = move.lines.new()
|
|
>>> line.account = accounts['revenue']
|
|
>>> line.credit = Decimal('20.00')
|
|
>>> line = move.lines.new()
|
|
>>> line.account = receivable2
|
|
>>> line.party = customer
|
|
>>> line.debit = Decimal('20.00')
|
|
>>> line.maturity_date = period.start_date
|
|
>>> move.click('post')
|
|
|
|
>>> move = Move()
|
|
>>> move.period = period
|
|
>>> move.journal = journal_revenue
|
|
>>> move.date = period.start_date
|
|
>>> line = move.lines.new()
|
|
>>> line.account = accounts['revenue']
|
|
>>> line.credit = Decimal('30.00')
|
|
>>> line = move.lines.new()
|
|
>>> line.account = receivable2
|
|
>>> line.party = customer
|
|
>>> line.debit = Decimal('30.00')
|
|
>>> line.maturity_date = period.end_date
|
|
>>> move.click('post')
|
|
|
|
Receive 80::
|
|
|
|
>>> move = Move()
|
|
>>> move.period = period
|
|
>>> move.journal = journal_cash
|
|
>>> move.date = period.start_date
|
|
>>> line = move.lines.new()
|
|
>>> line.account = accounts['cash']
|
|
>>> line.debit = Decimal('80.00')
|
|
>>> line = move.lines.new()
|
|
>>> line.account = accounts['receivable']
|
|
>>> line.party = customer
|
|
>>> line.credit = Decimal('80.00')
|
|
>>> move.click('post')
|
|
|
|
Check balance of accounts::
|
|
|
|
>>> accounts['receivable'].reload()
|
|
>>> accounts['receivable'].balance
|
|
Decimal('-80.00')
|
|
>>> receivable1.reload()
|
|
>>> receivable1.balance
|
|
Decimal('50.00')
|
|
>>> receivable2.reload()
|
|
>>> receivable2.balance
|
|
Decimal('50.00')
|
|
|
|
|
|
Apply receivable rule::
|
|
|
|
>>> receivable_rule.click('apply')
|
|
|
|
Check balance of accounts::
|
|
|
|
>>> accounts['receivable'].reload()
|
|
>>> accounts['receivable'].balance
|
|
Decimal('0.00')
|
|
>>> receivable1.reload()
|
|
>>> receivable1.balance
|
|
Decimal('0.00')
|
|
>>> receivable2.reload()
|
|
>>> receivable2.balance
|
|
Decimal('20.00')
|