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

367 lines
10 KiB
ReStructuredText

========================
Account Reports Scenario
========================
Imports::
>>> import datetime as dt
>>> from decimal import Decimal
>>> from proteus import Model, Report
>>> from trytond.modules.account.tests.tools import (
... create_chart, create_fiscalyear, get_accounts)
>>> from trytond.modules.company.tests.tools import create_company, get_company
>>> from trytond.tests.tools import activate_modules
>>> today = dt.date.today()
Activate modules::
>>> config = activate_modules('account', create_company, create_chart)
>>> company = get_company()
Create fiscal year::
>>> fiscalyear = create_fiscalyear(today=today)
>>> fiscalyear.click('create_period')
>>> periods = fiscalyear.periods
>>> period_1, period_3, period_5 = periods[0], periods[2], periods[4]
Get accounts::
>>> accounts = get_accounts()
>>> receivable = accounts['receivable']
>>> revenue = accounts['revenue']
>>> expense = accounts['expense']
>>> cash = accounts['cash']
Create a child account::
>>> _ = revenue.childs.new()
>>> revenue.save()
>>> child_revenue, = revenue.childs
Create parties::
>>> Party = Model.get('party.party')
>>> party = Party(name='Party')
>>> party.save()
Create a moves::
>>> Journal = Model.get('account.journal')
>>> Move = Model.get('account.move')
>>> journal_revenue, = Journal.find([
... ('code', '=', 'REV'),
... ])
>>> journal_cash, = Journal.find([
... ('code', '=', 'CASH'),
... ])
>>> move = Move()
>>> move.period = period_3
>>> move.journal = journal_revenue
>>> move.date = period_3.start_date
>>> line = move.lines.new()
>>> line.account = child_revenue
>>> line.credit = Decimal(10)
>>> line = move.lines.new()
>>> line.account = receivable
>>> line.debit = Decimal(10)
>>> line.party = party
>>> move.save()
>>> move = Move()
>>> move.period = period_5
>>> move.journal = journal_cash
>>> move.date = period_5.start_date
>>> line = move.lines.new()
>>> line.account = cash
>>> line.debit = Decimal(10)
>>> line = move.lines.new()
>>> line.account = receivable
>>> line.credit = Decimal(10)
>>> line.party = party
>>> move.save()
Print some reports::
>>> GeneralLedgerAccount = Model.get('account.general_ledger.account')
>>> GeneralLedgerAccountParty = Model.get(
... 'account.general_ledger.account.party')
>>> gl_accounts = GeneralLedgerAccount.find([])
>>> _ = [(l.balance, l.party_required) for gl in gl_accounts
... for l in gl.lines]
>>> general_ledger = Report('account.general_ledger', context={
... 'company': company.id,
... 'fiscalyear': fiscalyear.id,
... })
>>> _ = general_ledger.execute(gl_accounts)
>>> context = {
... 'company': company.id,
... 'fiscalyear': fiscalyear.id,
... }
>>> with config.set_context(context):
... gl_child_revenue, = GeneralLedgerAccount.find([
... ('account', '=', child_revenue.id),
... ])
... gl_revenue, = GeneralLedgerAccount.find([
... ('account', '=', revenue.id),
... ])
... glp_receivable, = GeneralLedgerAccountParty.find([
... ('account', '=', receivable.id),
... ('party', '=', party.id),
... ])
>>> gl_child_revenue.start_balance
Decimal('0.00')
>>> gl_child_revenue.credit
Decimal('10.00')
>>> gl_child_revenue.debit
Decimal('0.00')
>>> gl_child_revenue.end_balance
Decimal('-10.00')
>>> gl_child_revenue.line_count
1
>>> gl_revenue.start_balance
Decimal('0.00')
>>> gl_revenue.credit
Decimal('0.00')
>>> gl_revenue.debit
Decimal('0.00')
>>> gl_revenue.end_balance
Decimal('-10.00')
>>> gl_revenue.line_count
0
>>> glp_receivable.start_balance
Decimal('0.00')
>>> glp_receivable.credit
Decimal('10.00')
>>> glp_receivable.debit
Decimal('10.00')
>>> glp_receivable.end_balance
Decimal('0.00')
>>> glp_receivable.line_count
2
>>> context = {
... 'company': company.id,
... 'fiscalyear': fiscalyear.id,
... 'from_date': period_1.start_date,
... 'to_date': period_3.end_date,
... }
>>> with config.set_context(context):
... gl_child_revenue, = GeneralLedgerAccount.find([
... ('account', '=', child_revenue.id),
... ])
... gl_revenue, = GeneralLedgerAccount.find([
... ('account', '=', revenue.id),
... ])
... glp_receivable, = GeneralLedgerAccountParty.find([
... ('account', '=', receivable.id),
... ('party', '=', party.id),
... ])
>>> gl_child_revenue.start_balance
Decimal('0.00')
>>> gl_child_revenue.credit
Decimal('10.00')
>>> gl_child_revenue.debit
Decimal('0.00')
>>> gl_child_revenue.end_balance
Decimal('-10.00')
>>> gl_child_revenue.line_count
1
>>> gl_revenue.start_balance
Decimal('0.00')
>>> gl_revenue.credit
Decimal('0.00')
>>> gl_revenue.debit
Decimal('0.00')
>>> gl_revenue.end_balance
Decimal('-10.00')
>>> gl_revenue.line_count
0
>>> glp_receivable.start_balance
Decimal('0.00')
>>> glp_receivable.credit
Decimal('0.00')
>>> glp_receivable.debit
Decimal('10.00')
>>> glp_receivable.end_balance
Decimal('10.00')
>>> glp_receivable.line_count
1
>>> context = {
... 'company': company.id,
... 'fiscalyear': fiscalyear.id,
... 'start_period': period_3.id,
... }
>>> with config.set_context(context):
... gl_child_revenue, = GeneralLedgerAccount.find([
... ('account', '=', child_revenue.id),
... ])
... gl_revenue, = GeneralLedgerAccount.find([
... ('account', '=', revenue.id),
... ])
>>> gl_child_revenue.start_balance
Decimal('0.00')
>>> gl_child_revenue.credit
Decimal('10.00')
>>> gl_child_revenue.debit
Decimal('0.00')
>>> gl_child_revenue.end_balance
Decimal('-10.00')
>>> gl_child_revenue.line_count
1
>>> gl_revenue.start_balance
Decimal('0.00')
>>> gl_revenue.credit
Decimal('0.00')
>>> gl_revenue.debit
Decimal('0.00')
>>> gl_revenue.end_balance
Decimal('-10.00')
>>> gl_revenue.line_count
0
>>> context = {
... 'company': company.id,
... 'fiscalyear': fiscalyear.id,
... 'start_period': period_5.id,
... }
>>> with config.set_context(context):
... gl_child_revenue, = GeneralLedgerAccount.find([
... ('account', '=', child_revenue.id),
... ])
... gl_revenue, = GeneralLedgerAccount.find([
... ('account', '=', revenue.id),
... ])
>>> gl_child_revenue.start_balance
Decimal('-10.00')
>>> gl_child_revenue.credit
Decimal('0.00')
>>> gl_child_revenue.debit
Decimal('0.00')
>>> gl_child_revenue.end_balance
Decimal('-10.00')
>>> gl_child_revenue.line_count
0
>>> gl_revenue.start_balance
Decimal('-10.00')
>>> gl_revenue.credit
Decimal('0.00')
>>> gl_revenue.debit
Decimal('0.00')
>>> gl_revenue.end_balance
Decimal('-10.00')
>>> gl_revenue.line_count
0
>>> context = {
... 'company': company.id,
... 'fiscalyear': fiscalyear.id,
... 'from_date': period_3.start_date,
... }
>>> with config.set_context(context):
... gl_child_revenue, = GeneralLedgerAccount.find([
... ('account', '=', child_revenue.id),
... ])
... gl_revenue, = GeneralLedgerAccount.find([
... ('account', '=', revenue.id),
... ])
>>> gl_child_revenue.start_balance
Decimal('0.00')
>>> gl_child_revenue.credit
Decimal('10.00')
>>> gl_child_revenue.debit
Decimal('0.00')
>>> gl_child_revenue.end_balance
Decimal('-10.00')
>>> gl_child_revenue.line_count
1
>>> gl_revenue.start_balance
Decimal('0.00')
>>> gl_revenue.credit
Decimal('0.00')
>>> gl_revenue.debit
Decimal('0.00')
>>> gl_revenue.end_balance
Decimal('-10.00')
>>> gl_revenue.line_count
0
>>> context = {
... 'company': company.id,
... 'fiscalyear': fiscalyear.id,
... 'from_date': period_5.start_date,
... }
>>> with config.set_context(context):
... gl_child_revenue, = GeneralLedgerAccount.find([
... ('account', '=', child_revenue.id),
... ])
... gl_revenue, = GeneralLedgerAccount.find([
... ('account', '=', revenue.id),
... ])
>>> gl_child_revenue.start_balance
Decimal('-10.00')
>>> gl_child_revenue.credit
Decimal('0.00')
>>> gl_child_revenue.debit
Decimal('0.00')
>>> gl_child_revenue.end_balance
Decimal('-10.00')
>>> gl_child_revenue.line_count
0
>>> gl_revenue.start_balance
Decimal('-10.00')
>>> gl_revenue.credit
Decimal('0.00')
>>> gl_revenue.debit
Decimal('0.00')
>>> gl_revenue.end_balance
Decimal('-10.00')
>>> gl_revenue.line_count
0
>>> trial_balance = Report('account.trial_balance', context={
... 'company': company.id,
... 'fiscalyear': fiscalyear.id,
... })
>>> _ = trial_balance.execute(gl_accounts)
>>> Type = Model.get('account.account.type')
>>> statement = Report('account.account.type.statement')
>>> _ = statement.execute(Type.find([]))
>>> AgedBalance = Model.get('account.aged_balance')
>>> context = {
... 'company': company.id,
... 'type': 'customer',
... 'date': today,
... 'term1': 30,
... 'term2': 60,
... 'term3': 90,
... 'unit': 'day',
... }
>>> with config.set_context(context):
... aged_balances = AgedBalance.find([])
>>> aged_balance = Report('account.aged_balance', context=context)
>>> _ = aged_balance.execute(aged_balances)
>>> general_journal = Report('account.move.general_journal')
>>> _ = general_journal.execute(Move.find([]))
>>> with config.set_context(
... start_date=period_5.start_date,
... end_date=period_5.end_date):
... journal_cash = Journal(journal_cash.id)
>>> journal_cash.credit
Decimal('0.00')
>>> journal_cash.debit
Decimal('10.00')
>>> journal_cash.balance
Decimal('10.00')