diff --git a/account_loan/__manifest__.py b/account_loan/__manifest__.py
index c5ffbccae..7ff8b1757 100644
--- a/account_loan/__manifest__.py
+++ b/account_loan/__manifest__.py
@@ -2,7 +2,7 @@
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
{
"name": "Account Loan management",
- "version": "11.0.1.0.0",
+ "version": "11.0.1.1.0",
"author": "Creu Blanca,Odoo Community Association (OCA)",
"website": "http://github.com/OCA/account-financial-tools",
"license": "AGPL-3",
diff --git a/account_loan/i18n/account_loan.pot b/account_loan/i18n/account_loan.pot
index d95e500af..168c88036 100644
--- a/account_loan/i18n/account_loan.pot
+++ b/account_loan/i18n/account_loan.pot
@@ -285,6 +285,11 @@ msgstr ""
msgid "Invoices"
msgstr ""
+#. module: account_loan
+#: model:ir.model.fields,help:account_loan.field_account_loan_post_invoice
+msgid "Invoices will be posted automatically"
+msgstr ""
+
#. module: account_loan
#: model:ir.model.fields,field_description:account_loan.field_account_loan_is_leasing
#: model:ir.model.fields,field_description:account_loan.field_account_loan_line_is_leasing
@@ -530,6 +535,11 @@ msgstr ""
msgid "Post"
msgstr ""
+#. module: account_loan
+#: model:ir.model.fields,field_description:account_loan.field_account_loan_post_invoice
+msgid "Post Invoice"
+msgstr ""
+
#. module: account_loan
#: model:ir.actions.act_window,name:account_loan.account_loan_post_action
msgid "Post loan"
diff --git a/account_loan/model/account_loan.py b/account_loan/model/account_loan.py
index dfa3aad67..74550e9c2 100644
--- a/account_loan/model/account_loan.py
+++ b/account_loan/model/account_loan.py
@@ -241,6 +241,10 @@ class AccountLoan(models.Model):
string='Total interests payed',
compute='_compute_total_amounts',
)
+ post_invoice = fields.Boolean(
+ default=True,
+ help='Invoices will be posted automatically'
+ )
_sql_constraints = [
('name_uniq', 'unique(name, company_id)',
diff --git a/account_loan/model/account_loan_line.py b/account_loan/model/account_loan_line.py
index 169c8d3a3..50099e3cb 100644
--- a/account_loan/model/account_loan_line.py
+++ b/account_loan/model/account_loan_line.py
@@ -328,6 +328,8 @@ class AccountLoanLine(models.Model):
for line in invoice.invoice_line_ids:
line._set_taxes()
invoice.compute_taxes()
+ if record.loan_id.post_invoice:
+ invoice.action_invoice_open()
return res
@api.multi
diff --git a/account_loan/tests/test_loan.py b/account_loan/tests/test_loan.py
index 40b1bc08a..dba800944 100644
--- a/account_loan/tests/test_loan.py
+++ b/account_loan/tests/test_loan.py
@@ -223,6 +223,7 @@ class TestLoan(TransactionCase):
self.partner.property_account_payable_id = self.payable_account
self.assertEqual(loan.journal_type, 'general')
loan.is_leasing = True
+ loan.post_invoice = False
self.assertEqual(loan.journal_type, 'purchase')
loan.long_term_loan_account_id = self.lt_loan_account
loan.rate_type = 'real'
@@ -243,8 +244,6 @@ class TestLoan(TransactionCase):
}).run()
self.assertTrue(line.has_invoices)
self.assertFalse(line.has_moves)
- self.assertTrue(line.invoice_ids)
- self.assertFalse(line.move_ids)
self.assertIn(line.invoice_ids.id, action['domain'][0][2])
with self.assertRaises(UserError):
self.env['account.loan.pay.amount'].create({
@@ -299,6 +298,34 @@ class TestLoan(TransactionCase):
with self.assertRaises(UserError):
line.view_process_values()
+ def test_fixed_principal_loan_auto_post(self):
+ amount = 24000
+ periods = 24
+ loan = self.create_loan('fixed-principal', amount, 1, periods)
+ self.partner.property_account_payable_id = self.payable_account
+ self.assertEqual(loan.journal_type, 'general')
+ loan.is_leasing = True
+ self.assertEqual(loan.journal_type, 'purchase')
+ loan.long_term_loan_account_id = self.lt_loan_account
+ loan.rate_type = 'real'
+ loan.compute_lines()
+ self.assertTrue(loan.line_ids)
+ self.assertEqual(len(loan.line_ids), periods)
+ line = loan.line_ids.filtered(lambda r: r.sequence == 1)
+ self.assertEqual(amount / periods, line.principal_amount)
+ self.assertEqual(amount / periods, line.long_term_principal_amount)
+ self.post(loan)
+ line = loan.line_ids.filtered(lambda r: r.sequence == 1)
+ self.assertTrue(line)
+ self.assertFalse(line.has_invoices)
+ self.assertFalse(line.has_moves)
+ self.env['account.loan.generate.wizard'].create({
+ 'date': fields.date.today(),
+ 'loan_type': 'leasing',
+ }).run()
+ self.assertTrue(line.has_invoices)
+ self.assertTrue(line.has_moves)
+
def test_interests_on_end_loan(self):
amount = 10000
periods = 10
diff --git a/account_loan/views/account_loan_view.xml b/account_loan/views/account_loan_view.xml
index f520408cb..90ea9343a 100644
--- a/account_loan/views/account_loan_view.xml
+++ b/account_loan/views/account_loan_view.xml
@@ -114,6 +114,7 @@
attrs="{'required': [('is_leasing', '=', True)]}"/>
+