================
Invoice 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.account_invoice.tests.tools import (
    ...     set_fiscalyear_invoice_sequences)
    >>> from trytond.modules.company.tests.tools import create_company
    >>> from trytond.tests.tools import activate_modules, assertEqual

Activate modules::

    >>> config = activate_modules(['account_consolidation', 'account_invoice'])

    >>> Company = Model.get('company.company')
    >>> Invoice = Model.get('account.invoice')
    >>> Party = Model.get('party.party')

Create companies::

    >>> party = Party(name="Dunder Mifflin")
    >>> party.save()
    >>> _ = create_company(party)
    >>> dunder_mifflin, = Company.find([('party', '=', party.id)], limit=1)

    >>> party = Party(name="Saber")
    >>> party.save()
    >>> _ = create_company(party)
    >>> saber, = Company.find([('party', '=', party.id)], limit=1)

Create fiscal year::

    >>> fiscalyear = set_fiscalyear_invoice_sequences(
    ...     create_fiscalyear(dunder_mifflin))
    >>> fiscalyear.click('create_period')
    >>> period_ids = [p.id for p in fiscalyear.periods]

Create chart of accounts::

    >>> _ = create_chart(dunder_mifflin)
    >>> accounts = get_accounts(dunder_mifflin)

Create invoice::

    >>> invoice = Invoice()
    >>> invoice.party = saber.party
    >>> line = invoice.lines.new()
    >>> line.account = accounts['revenue']
    >>> line.quantity = 5
    >>> line.unit_price = Decimal('10.0000')
    >>> invoice.click('post')
    >>> invoice.state
    'posted'

Check consolidation company::

    >>> assertEqual(invoice.consolidation_company, saber)
    >>> assertEqual(invoice.move.consolidation_company, saber)
