diff --git a/account_payment_sale/__init__.py b/account_payment_sale/__init__.py index 9b4296142..2c9b3790d 100644 --- a/account_payment_sale/__init__.py +++ b/account_payment_sale/__init__.py @@ -1,2 +1,3 @@ from . import models from . import wizard +from . import tests diff --git a/account_payment_sale/__manifest__.py b/account_payment_sale/__manifest__.py index bc8340864..c0dfaea0d 100644 --- a/account_payment_sale/__manifest__.py +++ b/account_payment_sale/__manifest__.py @@ -4,7 +4,7 @@ { 'name': 'Account Payment Sale', - 'version': '11.0.1.0.0', + 'version': '11.0.1.0.1', 'category': 'Banking addons', 'license': 'AGPL-3', 'summary': "Adds payment mode on sale orders", diff --git a/account_payment_sale/tests/__init__.py b/account_payment_sale/tests/__init__.py new file mode 100644 index 000000000..55d111022 --- /dev/null +++ b/account_payment_sale/tests/__init__.py @@ -0,0 +1,2 @@ +from . import common +from . import test_sale_order diff --git a/account_payment_sale/tests/common.py b/account_payment_sale/tests/common.py new file mode 100644 index 000000000..2fb2ee119 --- /dev/null +++ b/account_payment_sale/tests/common.py @@ -0,0 +1,42 @@ +# Copyright 2018 Camptocamp +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo.tests.common import SavepointCase + + +class CommonTestCase(SavepointCase): + + @classmethod + def setUpClass(cls): + super().setUpClass() + + cls.bank = cls.env["res.partner.bank"].create({ + 'acc_number': 'test', + }) + cls.journal = cls.env["account.journal"].create({ + 'name': 'test journal', + 'code': '123', + 'type': 'bank', + 'company_id': cls.env.ref("base.main_company").id, + 'bank_account_id': cls.bank.id, + }) + cls.payment_mode = cls.env["account.payment.mode"].create({ + 'name': 'test_mode', + 'active': True, + 'payment_method_id': cls.env.ref( + "account.account_payment_method_manual_in" + ).id, + 'bank_account_link': 'fixed', + 'fixed_journal_id': cls.journal.id, + }) + cls.base_partner = cls.env["res.partner"].create({ + 'name': 'Dummy', + 'email': 'dummy@example.com', + 'customer_payment_mode_id': cls.payment_mode.id, + }) + cls.products = { + 'prod_order': cls.env.ref('product.product_order_01'), + 'prod_del': cls.env.ref('product.product_delivery_01'), + 'serv_order': cls.env.ref('product.service_order_01'), + 'serv_del': cls.env.ref('product.service_delivery'), + } diff --git a/account_payment_sale/tests/test_sale_order.py b/account_payment_sale/tests/test_sale_order.py new file mode 100644 index 000000000..4e35f911c --- /dev/null +++ b/account_payment_sale/tests/test_sale_order.py @@ -0,0 +1,61 @@ +# Copyright 2018 Camptocamp SA +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from .common import CommonTestCase + + +class TestSaleOrder(CommonTestCase): + + def create_sale_order(self): + so_lines = [(0, 0, { + 'name': p.name, + 'product_id': p.id, + 'product_uom_qty': 2, + 'product_uom': p.uom_id.id, + 'price_unit': p.list_price, + }) for (_, p) in self.products.items()] + so = self.env['sale.order'].create({ + 'partner_id': self.base_partner.id, + 'partner_invoice_id': self.base_partner.id, + 'partner_shipping_id': self.base_partner.id, + 'order_line': so_lines, + 'pricelist_id': self.env.ref('product.list0').id, + }) + self.assertFalse(so.payment_mode_id) + so.onchange_partner_id() + self.assertEqual( + so.payment_mode_id, + self.base_partner.customer_payment_mode_id + ) + return so + + def test_sale_to_invoice_payment_mode(self): + order = self.create_sale_order() + context = { + "active_model": 'sale.order', + "active_ids": [order.id], + "active_id": order.id, + } + order.with_context(context).action_confirm() + payment = self.env['sale.advance.payment.inv'].create({ + 'advance_payment_method': 'fixed', + 'amount': 5, + 'product_id': self.env.ref('sale.advance_product_0').id, + }) + vals = order._get_payment_mode_vals({}) + expected_vals = { + 'payment_mode_id': self.payment_mode.id, + 'partner_bank_id': self.bank.id, + } + self.assertEqual(vals, expected_vals) + payment.with_context(context).create_invoices() + invoice = order.invoice_ids + self.assertEqual(len(invoice), 1) + self.assertEqual( + invoice.payment_mode_id.id, + expected_vals["payment_mode_id"] + ) + self.assertEqual( + invoice.partner_bank_id.id, + expected_vals["partner_bank_id"] + )