From 6d5879cdb3c5cd0f14c61e7fc006a3e53cf2c135 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Fri, 27 Sep 2024 19:28:27 +0200 Subject: [PATCH] Add test scenario to defer invoice all at once #13547 --- .../scenario_account_invoice_defer_once.rst | 112 ++++++++++++++++++ 1 file changed, 112 insertions(+) create mode 100644 modules/account_invoice_defer/tests/scenario_account_invoice_defer_once.rst diff --git a/modules/account_invoice_defer/tests/scenario_account_invoice_defer_once.rst b/modules/account_invoice_defer/tests/scenario_account_invoice_defer_once.rst new file mode 100644 index 0000000000..c1d420bd08 --- /dev/null +++ b/modules/account_invoice_defer/tests/scenario_account_invoice_defer_once.rst @@ -0,0 +1,112 @@ +=================================== +Account Invoice Defer Once Scenario +=================================== + +Imports:: + + >>> import datetime as dt + >>> from decimal import Decimal + + >>> from proteus import Model, Wizard + >>> 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.account_invoice_defer.tests.tools import ( + ... add_deferred_accounts) + >>> from trytond.modules.company.tests.tools import create_company, get_company + >>> from trytond.tests.tools import activate_modules, assertEqual + + >>> today = dt.date.today() + +Activate modules:: + + >>> config = activate_modules('account_invoice_defer') + + >>> Invoice = Model.get('account.invoice') + >>> InvoiceDeferred = Model.get('account.invoice.deferred') + >>> Party = Model.get('party.party') + >>> ProductCategory = Model.get('product.category') + >>> ProductUom = Model.get('product.uom') + +Create company:: + + >>> _ = create_company() + >>> company = get_company() + +Create fiscal year:: + + >>> fiscalyear = set_fiscalyear_invoice_sequences( + ... create_fiscalyear(company, today)) + >>> fiscalyear.click('create_period') + >>> period = fiscalyear.periods[0] + + >>> renew_fiscalyear = Wizard('account.fiscalyear.renew') + >>> renew_fiscalyear.execute('create_') + >>> new_fiscalyear, = renew_fiscalyear.actions[0] + +Create chart of accounts:: + + >>> _ = create_chart(company) + >>> accounts = add_deferred_accounts(get_accounts(company)) + +Create party:: + + >>> party = Party(name="Insurer") + >>> party.save() + +Create account category:: + + >>> account_category = ProductCategory(name="Account Category") + >>> account_category.accounting = True + >>> account_category.account_expense = accounts['expense'] + >>> account_category.account_revenue = accounts['revenue'] + >>> account_category.save() + +Create product:: + + >>> unit, = ProductUom.find([('name', '=', 'Unit')]) + >>> ProductTemplate = Model.get('product.template') + >>> template = ProductTemplate() + >>> template.name = "Insurance" + >>> template.default_uom = unit + >>> template.type = 'service' + >>> template.list_price = Decimal('1000') + >>> template.account_category = account_category + >>> template.save() + >>> product, = template.products + +Create invoice:: + + >>> invoice = Invoice(type='in') + >>> invoice.party = party + >>> line = invoice.lines.new() + >>> line.product = product + >>> line.quantity = 1 + >>> line.unit_price = Decimal('1000') + >>> line.defer_from = period.start_date + >>> line.defer_to = line.defer_from + dt.timedelta(days=499) + >>> invoice.invoice_date = today + >>> invoice.click('post') + >>> invoice_line, = invoice.lines + +Check invoice deferred and run it:: + + >>> deferral, = InvoiceDeferred.find([]) + >>> assertEqual(deferral.invoice_line, invoice_line) + >>> deferral.amount + Decimal('1000.00') + >>> assertEqual(deferral.start_date, invoice_line.defer_from) + >>> assertEqual(deferral.end_date, invoice_line.defer_to) + >>> deferral.click('run') + +Check moves on invoice deferred:: + + >>> deferral.reload() + >>> deferral.state + 'closed' + >>> len(deferral.moves) + 18 + >>> accounts['deferred_expense'].reload() + >>> accounts['deferred_expense'].balance + Decimal('0.00')