odoo-addon-account-loan 17.0.1.0.1__py3-none-any.whl → 17.0.1.1.1__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- odoo/addons/account_loan/README.rst +4 -1
- odoo/addons/account_loan/__manifest__.py +1 -1
- odoo/addons/account_loan/i18n/account_loan.pot +12 -5
- odoo/addons/account_loan/i18n/am.po +12 -5
- odoo/addons/account_loan/i18n/ar.po +12 -5
- odoo/addons/account_loan/i18n/bg.po +12 -5
- odoo/addons/account_loan/i18n/bs.po +12 -5
- odoo/addons/account_loan/i18n/ca.po +15 -5
- odoo/addons/account_loan/i18n/ca_ES.po +12 -5
- odoo/addons/account_loan/i18n/cs.po +12 -5
- odoo/addons/account_loan/i18n/da.po +12 -5
- odoo/addons/account_loan/i18n/de.po +15 -5
- odoo/addons/account_loan/i18n/el_GR.po +12 -5
- odoo/addons/account_loan/i18n/en_AU.po +12 -5
- odoo/addons/account_loan/i18n/en_GB.po +12 -5
- odoo/addons/account_loan/i18n/es.po +15 -5
- odoo/addons/account_loan/i18n/es_AR.po +15 -5
- odoo/addons/account_loan/i18n/es_CL.po +12 -5
- odoo/addons/account_loan/i18n/es_CO.po +12 -5
- odoo/addons/account_loan/i18n/es_CR.po +12 -5
- odoo/addons/account_loan/i18n/es_DO.po +12 -5
- odoo/addons/account_loan/i18n/es_EC.po +12 -5
- odoo/addons/account_loan/i18n/es_ES.po +12 -5
- odoo/addons/account_loan/i18n/es_MX.po +12 -5
- odoo/addons/account_loan/i18n/es_PE.po +12 -5
- odoo/addons/account_loan/i18n/es_PY.po +12 -5
- odoo/addons/account_loan/i18n/es_VE.po +12 -5
- odoo/addons/account_loan/i18n/et.po +12 -5
- odoo/addons/account_loan/i18n/eu.po +12 -5
- odoo/addons/account_loan/i18n/fa.po +12 -5
- odoo/addons/account_loan/i18n/fi.po +12 -5
- odoo/addons/account_loan/i18n/fr.po +12 -5
- odoo/addons/account_loan/i18n/fr_CA.po +12 -5
- odoo/addons/account_loan/i18n/fr_CH.po +12 -5
- odoo/addons/account_loan/i18n/fr_FR.po +12 -5
- odoo/addons/account_loan/i18n/gl.po +12 -5
- odoo/addons/account_loan/i18n/gl_ES.po +12 -5
- odoo/addons/account_loan/i18n/gu.po +12 -5
- odoo/addons/account_loan/i18n/he.po +12 -5
- odoo/addons/account_loan/i18n/hi.po +12 -5
- odoo/addons/account_loan/i18n/hr.po +12 -5
- odoo/addons/account_loan/i18n/hr_HR.po +12 -5
- odoo/addons/account_loan/i18n/hu.po +12 -5
- odoo/addons/account_loan/i18n/id.po +12 -5
- odoo/addons/account_loan/i18n/it.po +15 -5
- odoo/addons/account_loan/i18n/ja.po +12 -5
- odoo/addons/account_loan/i18n/ko.po +12 -5
- odoo/addons/account_loan/i18n/lo.po +12 -5
- odoo/addons/account_loan/i18n/lt.po +12 -5
- odoo/addons/account_loan/i18n/lt_LT.po +12 -5
- odoo/addons/account_loan/i18n/lv.po +12 -5
- odoo/addons/account_loan/i18n/mk.po +12 -5
- odoo/addons/account_loan/i18n/mn.po +12 -5
- odoo/addons/account_loan/i18n/nb.po +12 -5
- odoo/addons/account_loan/i18n/nb_NO.po +12 -5
- odoo/addons/account_loan/i18n/nl.po +12 -5
- odoo/addons/account_loan/i18n/nl_BE.po +12 -5
- odoo/addons/account_loan/i18n/nl_NL.po +12 -5
- odoo/addons/account_loan/i18n/pl.po +12 -5
- odoo/addons/account_loan/i18n/pt.po +12 -5
- odoo/addons/account_loan/i18n/pt_BR.po +15 -5
- odoo/addons/account_loan/i18n/pt_PT.po +12 -5
- odoo/addons/account_loan/i18n/ro.po +12 -5
- odoo/addons/account_loan/i18n/ru.po +12 -5
- odoo/addons/account_loan/i18n/sk.po +12 -5
- odoo/addons/account_loan/i18n/sk_SK.po +12 -5
- odoo/addons/account_loan/i18n/sl.po +12 -5
- odoo/addons/account_loan/i18n/sr.po +12 -5
- odoo/addons/account_loan/i18n/sr@latin.po +12 -5
- odoo/addons/account_loan/i18n/sv.po +15 -5
- odoo/addons/account_loan/i18n/th.po +12 -5
- odoo/addons/account_loan/i18n/tr.po +12 -5
- odoo/addons/account_loan/i18n/tr_TR.po +12 -5
- odoo/addons/account_loan/i18n/uk.po +12 -5
- odoo/addons/account_loan/i18n/vi.po +12 -5
- odoo/addons/account_loan/i18n/vi_VN.po +12 -5
- odoo/addons/account_loan/i18n/zh_CN.po +12 -5
- odoo/addons/account_loan/i18n/zh_TW.po +12 -5
- odoo/addons/account_loan/models/account_loan.py +21 -3
- odoo/addons/account_loan/models/account_loan_line.py +36 -12
- odoo/addons/account_loan/readme/CONTRIBUTORS.md +2 -0
- odoo/addons/account_loan/static/description/index.html +5 -1
- odoo/addons/account_loan/tests/test_loan.py +33 -0
- odoo/addons/account_loan/views/account_loan_lines_view.xml +12 -5
- odoo/addons/account_loan/views/account_loan_view.xml +1 -0
- odoo/addons/account_loan/wizards/account_loan_post.py +12 -0
- {odoo_addon_account_loan-17.0.1.0.1.dist-info → odoo_addon_account_loan-17.0.1.1.1.dist-info}/METADATA +5 -2
- odoo_addon_account_loan-17.0.1.1.1.dist-info/RECORD +114 -0
- odoo_addon_account_loan-17.0.1.0.1.dist-info/RECORD +0 -114
- {odoo_addon_account_loan-17.0.1.0.1.dist-info → odoo_addon_account_loan-17.0.1.1.1.dist-info}/WHEEL +0 -0
- {odoo_addon_account_loan-17.0.1.0.1.dist-info → odoo_addon_account_loan-17.0.1.1.1.dist-info}/top_level.txt +0 -0
|
@@ -864,11 +864,6 @@ msgstr ""
|
|
|
864
864
|
msgid "Sequence"
|
|
865
865
|
msgstr ""
|
|
866
866
|
|
|
867
|
-
#. module: account_loan
|
|
868
|
-
#: model:ir.model.constraint,message:account_loan.constraint_account_loan_line_sequence_loan
|
|
869
|
-
msgid "Sequence must be unique in a loan"
|
|
870
|
-
msgstr ""
|
|
871
|
-
|
|
872
867
|
#. module: account_loan
|
|
873
868
|
#: model:ir.model.fields,field_description:account_loan.field_account_loan__short_term_loan_account_id
|
|
874
869
|
#: model:ir.model.fields,field_description:account_loan.field_account_loan_line__short_term_loan_account_id
|
|
@@ -951,6 +946,13 @@ msgid ""
|
|
|
951
946
|
"Planned: Future activities."
|
|
952
947
|
msgstr ""
|
|
953
948
|
|
|
949
|
+
#. module: account_loan
|
|
950
|
+
#. odoo-python
|
|
951
|
+
#: code:addons/account_loan/wizards/account_loan_post.py:0
|
|
952
|
+
#, python-format
|
|
953
|
+
msgid "The total principal amount does not match the loan amount."
|
|
954
|
+
msgstr ""
|
|
955
|
+
|
|
954
956
|
#. module: account_loan
|
|
955
957
|
#: model:ir.model.fields,help:account_loan.field_account_loan_line__payment_amount
|
|
956
958
|
msgid "Total amount that will be payed (Annuity)"
|
|
@@ -1008,6 +1010,11 @@ msgstr ""
|
|
|
1008
1010
|
msgid "When checked, the first payment will be on start date"
|
|
1009
1011
|
msgstr ""
|
|
1010
1012
|
|
|
1013
|
+
#. module: account_loan
|
|
1014
|
+
#: model_terms:ir.ui.view,arch_db:account_loan.account_loan_line_tree
|
|
1015
|
+
msgid "principal_amount"
|
|
1016
|
+
msgstr ""
|
|
1017
|
+
|
|
1011
1018
|
#~ msgid "Last Modified on"
|
|
1012
1019
|
#~ msgstr "Остання модифікація"
|
|
1013
1020
|
|
|
@@ -863,11 +863,6 @@ msgstr ""
|
|
|
863
863
|
msgid "Sequence"
|
|
864
864
|
msgstr ""
|
|
865
865
|
|
|
866
|
-
#. module: account_loan
|
|
867
|
-
#: model:ir.model.constraint,message:account_loan.constraint_account_loan_line_sequence_loan
|
|
868
|
-
msgid "Sequence must be unique in a loan"
|
|
869
|
-
msgstr ""
|
|
870
|
-
|
|
871
866
|
#. module: account_loan
|
|
872
867
|
#: model:ir.model.fields,field_description:account_loan.field_account_loan__short_term_loan_account_id
|
|
873
868
|
#: model:ir.model.fields,field_description:account_loan.field_account_loan_line__short_term_loan_account_id
|
|
@@ -950,6 +945,13 @@ msgid ""
|
|
|
950
945
|
"Planned: Future activities."
|
|
951
946
|
msgstr ""
|
|
952
947
|
|
|
948
|
+
#. module: account_loan
|
|
949
|
+
#. odoo-python
|
|
950
|
+
#: code:addons/account_loan/wizards/account_loan_post.py:0
|
|
951
|
+
#, python-format
|
|
952
|
+
msgid "The total principal amount does not match the loan amount."
|
|
953
|
+
msgstr ""
|
|
954
|
+
|
|
953
955
|
#. module: account_loan
|
|
954
956
|
#: model:ir.model.fields,help:account_loan.field_account_loan_line__payment_amount
|
|
955
957
|
msgid "Total amount that will be payed (Annuity)"
|
|
@@ -1007,6 +1009,11 @@ msgstr ""
|
|
|
1007
1009
|
msgid "When checked, the first payment will be on start date"
|
|
1008
1010
|
msgstr ""
|
|
1009
1011
|
|
|
1012
|
+
#. module: account_loan
|
|
1013
|
+
#: model_terms:ir.ui.view,arch_db:account_loan.account_loan_line_tree
|
|
1014
|
+
msgid "principal_amount"
|
|
1015
|
+
msgstr ""
|
|
1016
|
+
|
|
1010
1017
|
#~ msgid "Last Modified on"
|
|
1011
1018
|
#~ msgstr "Sửa lần cuối vào"
|
|
1012
1019
|
|
|
@@ -864,11 +864,6 @@ msgstr ""
|
|
|
864
864
|
msgid "Sequence"
|
|
865
865
|
msgstr ""
|
|
866
866
|
|
|
867
|
-
#. module: account_loan
|
|
868
|
-
#: model:ir.model.constraint,message:account_loan.constraint_account_loan_line_sequence_loan
|
|
869
|
-
msgid "Sequence must be unique in a loan"
|
|
870
|
-
msgstr ""
|
|
871
|
-
|
|
872
867
|
#. module: account_loan
|
|
873
868
|
#: model:ir.model.fields,field_description:account_loan.field_account_loan__short_term_loan_account_id
|
|
874
869
|
#: model:ir.model.fields,field_description:account_loan.field_account_loan_line__short_term_loan_account_id
|
|
@@ -951,6 +946,13 @@ msgid ""
|
|
|
951
946
|
"Planned: Future activities."
|
|
952
947
|
msgstr ""
|
|
953
948
|
|
|
949
|
+
#. module: account_loan
|
|
950
|
+
#. odoo-python
|
|
951
|
+
#: code:addons/account_loan/wizards/account_loan_post.py:0
|
|
952
|
+
#, python-format
|
|
953
|
+
msgid "The total principal amount does not match the loan amount."
|
|
954
|
+
msgstr ""
|
|
955
|
+
|
|
954
956
|
#. module: account_loan
|
|
955
957
|
#: model:ir.model.fields,help:account_loan.field_account_loan_line__payment_amount
|
|
956
958
|
msgid "Total amount that will be payed (Annuity)"
|
|
@@ -1008,5 +1010,10 @@ msgstr ""
|
|
|
1008
1010
|
msgid "When checked, the first payment will be on start date"
|
|
1009
1011
|
msgstr ""
|
|
1010
1012
|
|
|
1013
|
+
#. module: account_loan
|
|
1014
|
+
#: model_terms:ir.ui.view,arch_db:account_loan.account_loan_line_tree
|
|
1015
|
+
msgid "principal_amount"
|
|
1016
|
+
msgstr ""
|
|
1017
|
+
|
|
1011
1018
|
#~ msgid "or"
|
|
1012
1019
|
#~ msgstr "hoặc"
|
|
@@ -865,11 +865,6 @@ msgstr ""
|
|
|
865
865
|
msgid "Sequence"
|
|
866
866
|
msgstr ""
|
|
867
867
|
|
|
868
|
-
#. module: account_loan
|
|
869
|
-
#: model:ir.model.constraint,message:account_loan.constraint_account_loan_line_sequence_loan
|
|
870
|
-
msgid "Sequence must be unique in a loan"
|
|
871
|
-
msgstr ""
|
|
872
|
-
|
|
873
868
|
#. module: account_loan
|
|
874
869
|
#: model:ir.model.fields,field_description:account_loan.field_account_loan__short_term_loan_account_id
|
|
875
870
|
#: model:ir.model.fields,field_description:account_loan.field_account_loan_line__short_term_loan_account_id
|
|
@@ -952,6 +947,13 @@ msgid ""
|
|
|
952
947
|
"Planned: Future activities."
|
|
953
948
|
msgstr ""
|
|
954
949
|
|
|
950
|
+
#. module: account_loan
|
|
951
|
+
#. odoo-python
|
|
952
|
+
#: code:addons/account_loan/wizards/account_loan_post.py:0
|
|
953
|
+
#, python-format
|
|
954
|
+
msgid "The total principal amount does not match the loan amount."
|
|
955
|
+
msgstr ""
|
|
956
|
+
|
|
955
957
|
#. module: account_loan
|
|
956
958
|
#: model:ir.model.fields,help:account_loan.field_account_loan_line__payment_amount
|
|
957
959
|
msgid "Total amount that will be payed (Annuity)"
|
|
@@ -1009,6 +1011,11 @@ msgstr ""
|
|
|
1009
1011
|
msgid "When checked, the first payment will be on start date"
|
|
1010
1012
|
msgstr ""
|
|
1011
1013
|
|
|
1014
|
+
#. module: account_loan
|
|
1015
|
+
#: model_terms:ir.ui.view,arch_db:account_loan.account_loan_line_tree
|
|
1016
|
+
msgid "principal_amount"
|
|
1017
|
+
msgstr ""
|
|
1018
|
+
|
|
1012
1019
|
#~ msgid "Last Modified on"
|
|
1013
1020
|
#~ msgstr "Last Modified on"
|
|
1014
1021
|
|
|
@@ -865,11 +865,6 @@ msgstr ""
|
|
|
865
865
|
msgid "Sequence"
|
|
866
866
|
msgstr ""
|
|
867
867
|
|
|
868
|
-
#. module: account_loan
|
|
869
|
-
#: model:ir.model.constraint,message:account_loan.constraint_account_loan_line_sequence_loan
|
|
870
|
-
msgid "Sequence must be unique in a loan"
|
|
871
|
-
msgstr ""
|
|
872
|
-
|
|
873
868
|
#. module: account_loan
|
|
874
869
|
#: model:ir.model.fields,field_description:account_loan.field_account_loan__short_term_loan_account_id
|
|
875
870
|
#: model:ir.model.fields,field_description:account_loan.field_account_loan_line__short_term_loan_account_id
|
|
@@ -952,6 +947,13 @@ msgid ""
|
|
|
952
947
|
"Planned: Future activities."
|
|
953
948
|
msgstr ""
|
|
954
949
|
|
|
950
|
+
#. module: account_loan
|
|
951
|
+
#. odoo-python
|
|
952
|
+
#: code:addons/account_loan/wizards/account_loan_post.py:0
|
|
953
|
+
#, python-format
|
|
954
|
+
msgid "The total principal amount does not match the loan amount."
|
|
955
|
+
msgstr ""
|
|
956
|
+
|
|
955
957
|
#. module: account_loan
|
|
956
958
|
#: model:ir.model.fields,help:account_loan.field_account_loan_line__payment_amount
|
|
957
959
|
msgid "Total amount that will be payed (Annuity)"
|
|
@@ -1009,6 +1011,11 @@ msgstr ""
|
|
|
1009
1011
|
msgid "When checked, the first payment will be on start date"
|
|
1010
1012
|
msgstr ""
|
|
1011
1013
|
|
|
1014
|
+
#. module: account_loan
|
|
1015
|
+
#: model_terms:ir.ui.view,arch_db:account_loan.account_loan_line_tree
|
|
1016
|
+
msgid "principal_amount"
|
|
1017
|
+
msgstr ""
|
|
1018
|
+
|
|
1012
1019
|
#~ msgid "Last Modified on"
|
|
1013
1020
|
#~ msgstr "最後修改:"
|
|
1014
1021
|
|
|
@@ -205,6 +205,22 @@ class AccountLoan(models.Model):
|
|
|
205
205
|
("name_uniq", "unique(name, company_id)", "Loan name must be unique"),
|
|
206
206
|
]
|
|
207
207
|
|
|
208
|
+
@api.onchange("line_ids")
|
|
209
|
+
def _onchange_line_ids_draft_manual(self):
|
|
210
|
+
if self.state == "draft":
|
|
211
|
+
self.line_ids = self.line_ids.sorted(key=lambda line: line.sequence)
|
|
212
|
+
previous_pending_principal = 0
|
|
213
|
+
previous_principal_amount = 0
|
|
214
|
+
for line in self.line_ids:
|
|
215
|
+
if line.sequence == 1:
|
|
216
|
+
line.pending_principal_amount = line.loan_id.loan_amount
|
|
217
|
+
else:
|
|
218
|
+
line.pending_principal_amount = (
|
|
219
|
+
previous_pending_principal - previous_principal_amount
|
|
220
|
+
)
|
|
221
|
+
previous_pending_principal = line.pending_principal_amount
|
|
222
|
+
previous_principal_amount = line.principal_amount
|
|
223
|
+
|
|
208
224
|
@api.depends("line_ids", "currency_id", "loan_amount")
|
|
209
225
|
def _compute_total_amounts(self):
|
|
210
226
|
for record in self:
|
|
@@ -319,7 +335,8 @@ class AccountLoan(models.Model):
|
|
|
319
335
|
self.ensure_one()
|
|
320
336
|
if not self.start_date:
|
|
321
337
|
self.start_date = fields.Date.today()
|
|
322
|
-
self.
|
|
338
|
+
if not self.line_ids:
|
|
339
|
+
self._compute_draft_lines()
|
|
323
340
|
self.write({"state": "posted"})
|
|
324
341
|
|
|
325
342
|
def close(self):
|
|
@@ -388,15 +405,16 @@ class AccountLoan(models.Model):
|
|
|
388
405
|
date = self.start_date
|
|
389
406
|
else:
|
|
390
407
|
date = datetime.today().date()
|
|
408
|
+
initial_date = date
|
|
391
409
|
delta = relativedelta(months=self.method_period)
|
|
392
410
|
if not self.payment_on_first_period:
|
|
393
|
-
date
|
|
411
|
+
date = initial_date + delta
|
|
394
412
|
for i in range(1, self.periods + 1):
|
|
395
413
|
line = self.env["account.loan.line"].create(
|
|
396
414
|
self._new_line_vals(i, date, amount)
|
|
397
415
|
)
|
|
398
416
|
line._check_amount()
|
|
399
|
-
date
|
|
417
|
+
date = initial_date + delta * i
|
|
400
418
|
amount -= line.payment_amount - line.interests_amount
|
|
401
419
|
if self.long_term_loan_account_id:
|
|
402
420
|
self._check_long_term_principal_amount()
|
|
@@ -70,12 +70,14 @@ class AccountLoanLine(models.Model):
|
|
|
70
70
|
)
|
|
71
71
|
rate = fields.Float(
|
|
72
72
|
required=True,
|
|
73
|
-
readonly=
|
|
73
|
+
readonly=False,
|
|
74
|
+
store=True,
|
|
74
75
|
digits=(8, 6),
|
|
76
|
+
compute="_compute_rate",
|
|
75
77
|
)
|
|
76
78
|
pending_principal_amount = fields.Monetary(
|
|
77
79
|
currency_field="currency_id",
|
|
78
|
-
readonly=
|
|
80
|
+
readonly=False,
|
|
79
81
|
help="Pending amount of the loan before the payment",
|
|
80
82
|
)
|
|
81
83
|
long_term_pending_principal_amount = fields.Monetary(
|
|
@@ -86,17 +88,22 @@ class AccountLoanLine(models.Model):
|
|
|
86
88
|
)
|
|
87
89
|
payment_amount = fields.Monetary(
|
|
88
90
|
currency_field="currency_id",
|
|
89
|
-
readonly=
|
|
91
|
+
readonly=False,
|
|
92
|
+
store=True,
|
|
93
|
+
compute="_compute_payment_amount",
|
|
90
94
|
help="Total amount that will be payed (Annuity)",
|
|
91
95
|
)
|
|
92
96
|
interests_amount = fields.Monetary(
|
|
93
97
|
currency_field="currency_id",
|
|
94
|
-
readonly=
|
|
98
|
+
readonly=False,
|
|
99
|
+
store=True,
|
|
100
|
+
compute="_compute_interests_amount",
|
|
95
101
|
help="Amount of the payment that will be assigned to interests",
|
|
96
102
|
)
|
|
97
103
|
principal_amount = fields.Monetary(
|
|
98
104
|
currency_field="currency_id",
|
|
99
|
-
compute="
|
|
105
|
+
compute="_compute_principal_amount",
|
|
106
|
+
store=True,
|
|
100
107
|
help="Amount of the payment that will reduce the pending loan amount",
|
|
101
108
|
)
|
|
102
109
|
long_term_principal_amount = fields.Monetary(
|
|
@@ -107,6 +114,7 @@ class AccountLoanLine(models.Model):
|
|
|
107
114
|
final_pending_principal_amount = fields.Monetary(
|
|
108
115
|
currency_field="currency_id",
|
|
109
116
|
compute="_compute_amounts",
|
|
117
|
+
store=True,
|
|
110
118
|
help="Pending amount of the loan after the payment",
|
|
111
119
|
)
|
|
112
120
|
move_ids = fields.One2many(
|
|
@@ -115,13 +123,20 @@ class AccountLoanLine(models.Model):
|
|
|
115
123
|
)
|
|
116
124
|
has_moves = fields.Boolean(compute="_compute_has_moves")
|
|
117
125
|
has_invoices = fields.Boolean(compute="_compute_has_invoices")
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
126
|
+
|
|
127
|
+
@api.depends("interests_amount")
|
|
128
|
+
def _compute_rate(self):
|
|
129
|
+
for record in self:
|
|
130
|
+
record.rate = (
|
|
131
|
+
record.interests_amount * 100
|
|
132
|
+
) / record.pending_principal_amount
|
|
133
|
+
|
|
134
|
+
@api.depends("rate")
|
|
135
|
+
def _compute_interests_amount(self):
|
|
136
|
+
for record in self:
|
|
137
|
+
record.interests_amount = (
|
|
138
|
+
record.pending_principal_amount * record.rate
|
|
139
|
+
) / 100
|
|
125
140
|
|
|
126
141
|
@api.depends("move_ids")
|
|
127
142
|
def _compute_has_moves(self):
|
|
@@ -138,12 +153,21 @@ class AccountLoanLine(models.Model):
|
|
|
138
153
|
for record in self:
|
|
139
154
|
record.name = "%s-%d" % (record.loan_id.name, record.sequence)
|
|
140
155
|
|
|
156
|
+
@api.depends("principal_amount", "interests_amount")
|
|
157
|
+
def _compute_payment_amount(self):
|
|
158
|
+
for rec in self:
|
|
159
|
+
rec.payment_amount = rec.principal_amount + rec.interests_amount
|
|
160
|
+
|
|
141
161
|
@api.depends("payment_amount", "interests_amount", "pending_principal_amount")
|
|
142
162
|
def _compute_amounts(self):
|
|
143
163
|
for rec in self:
|
|
144
164
|
rec.final_pending_principal_amount = (
|
|
145
165
|
rec.pending_principal_amount - rec.payment_amount + rec.interests_amount
|
|
146
166
|
)
|
|
167
|
+
|
|
168
|
+
@api.depends("pending_principal_amount")
|
|
169
|
+
def _compute_principal_amount(self):
|
|
170
|
+
for rec in self:
|
|
147
171
|
rec.principal_amount = rec.payment_amount - rec.interests_amount
|
|
148
172
|
|
|
149
173
|
def _compute_amount(self):
|
|
@@ -367,7 +367,7 @@ ul.auto-toc {
|
|
|
367
367
|
!! This file is generated by oca-gen-addon-readme !!
|
|
368
368
|
!! changes will be overwritten. !!
|
|
369
369
|
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
|
370
|
-
!! source digest: sha256:
|
|
370
|
+
!! source digest: sha256:64c6fa5e3a0b16d71144e17fa2a1df4504724e573bd68d30abb3a092a14ec771
|
|
371
371
|
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
|
|
372
372
|
<p><a class="reference external image-reference" href="https://odoo-community.org/page/development-status"><img alt="Beta" src="https://img.shields.io/badge/maturity-Beta-yellow.png" /></a> <a class="reference external image-reference" href="http://www.gnu.org/licenses/agpl-3.0-standalone.html"><img alt="License: AGPL-3" src="https://img.shields.io/badge/licence-AGPL--3-blue.png" /></a> <a class="reference external image-reference" href="https://github.com/OCA/account-financial-tools/tree/17.0/account_loan"><img alt="OCA/account-financial-tools" src="https://img.shields.io/badge/github-OCA%2Faccount--financial--tools-lightgray.png?logo=github" /></a> <a class="reference external image-reference" href="https://translation.odoo-community.org/projects/account-financial-tools-17-0/account-financial-tools-17-0-account_loan"><img alt="Translate me on Weblate" src="https://img.shields.io/badge/weblate-Translate%20me-F47D42.png" /></a> <a class="reference external image-reference" href="https://runboat.odoo-community.org/builds?repo=OCA/account-financial-tools&target_branch=17.0"><img alt="Try me on Runboat" src="https://img.shields.io/badge/runboat-Try%20me-875A7B.png" /></a></p>
|
|
373
373
|
<p>This module extends the functionality of accounting to support loans. It
|
|
@@ -453,6 +453,10 @@ If you spotted it first, help us to smash it by providing a detailed and welcome
|
|
|
453
453
|
<li>Enric Tobella <<a class="reference external" href="mailto:etobella@creublanca.es">etobella@creublanca.es</a>></li>
|
|
454
454
|
<li>Bhavesh Odedra <<a class="reference external" href="mailto:bodedra@opensourceintegrators.com">bodedra@opensourceintegrators.com</a>></li>
|
|
455
455
|
<li>Alberto Martín Cortada <<a class="reference external" href="mailto:alberto.martin@guadaltech.es">alberto.martin@guadaltech.es</a>></li>
|
|
456
|
+
<li><a class="reference external" href="https://www.tecnativa.com">Tecnativa</a>:<ul>
|
|
457
|
+
<li>Juan Carlos Oñate</li>
|
|
458
|
+
</ul>
|
|
459
|
+
</li>
|
|
456
460
|
</ul>
|
|
457
461
|
</div>
|
|
458
462
|
<div class="section" id="maintainers">
|
|
@@ -86,6 +86,39 @@ class TestLoan(BaseCommon):
|
|
|
86
86
|
action = self.partner.action_view_partner_lended_loans()
|
|
87
87
|
self.assertEqual(loan, self.env[action["res_model"]].search(action["domain"]))
|
|
88
88
|
|
|
89
|
+
@mute_logger("odoo.models.unlink")
|
|
90
|
+
@freeze_time("2025-01-31")
|
|
91
|
+
def test_loan_lines_custom_day(self):
|
|
92
|
+
loan = self.create_loan("fixed-annuity", 500000, 1, 60)
|
|
93
|
+
loan.long_term_loan_account_id = self.lt_loan_account
|
|
94
|
+
loan.compute_lines()
|
|
95
|
+
dates_by_sequence = {}
|
|
96
|
+
for line in loan.line_ids:
|
|
97
|
+
dates_by_sequence[line.sequence] = line.date
|
|
98
|
+
self.assertEqual(dates_by_sequence[1], fields.Date.from_string("2025-01-31"))
|
|
99
|
+
self.assertEqual(dates_by_sequence[2], fields.Date.from_string("2025-02-28"))
|
|
100
|
+
self.assertEqual(dates_by_sequence[3], fields.Date.from_string("2025-03-31"))
|
|
101
|
+
self.assertEqual(dates_by_sequence[4], fields.Date.from_string("2025-04-30"))
|
|
102
|
+
self.assertEqual(dates_by_sequence[5], fields.Date.from_string("2025-05-31"))
|
|
103
|
+
self.assertEqual(dates_by_sequence[6], fields.Date.from_string("2025-06-30"))
|
|
104
|
+
self.assertEqual(dates_by_sequence[7], fields.Date.from_string("2025-07-31"))
|
|
105
|
+
self.assertEqual(dates_by_sequence[8], fields.Date.from_string("2025-08-31"))
|
|
106
|
+
self.assertEqual(dates_by_sequence[9], fields.Date.from_string("2025-09-30"))
|
|
107
|
+
self.assertEqual(dates_by_sequence[10], fields.Date.from_string("2025-10-31"))
|
|
108
|
+
self.assertEqual(dates_by_sequence[11], fields.Date.from_string("2025-11-30"))
|
|
109
|
+
self.assertEqual(dates_by_sequence[12], fields.Date.from_string("2025-12-31"))
|
|
110
|
+
self.assertEqual(dates_by_sequence[13], fields.Date.from_string("2026-01-31"))
|
|
111
|
+
line_1 = loan.line_ids.filtered(lambda x: x.sequence == 1)
|
|
112
|
+
self.assertEqual(line_1.long_term_pending_principal_amount, 401989.15)
|
|
113
|
+
self.assertAlmostEqual(line_1.long_term_principal_amount, 8211.88)
|
|
114
|
+
line_2 = loan.line_ids.filtered(lambda x: x.sequence == 2)
|
|
115
|
+
self.assertEqual(line_2.long_term_pending_principal_amount, 393777.27)
|
|
116
|
+
line_13 = loan.line_ids.filtered(lambda x: x.sequence == 13)
|
|
117
|
+
self.assertEqual(line_13.pending_principal_amount, 401989.15)
|
|
118
|
+
self.assertEqual(
|
|
119
|
+
line_1.long_term_pending_principal_amount, line_13.pending_principal_amount
|
|
120
|
+
)
|
|
121
|
+
|
|
89
122
|
@mute_logger("odoo.models.unlink")
|
|
90
123
|
def test_round_on_end(self):
|
|
91
124
|
loan = self.create_loan("fixed-annuity", 500000, 1, 60)
|
|
@@ -6,21 +6,28 @@
|
|
|
6
6
|
<field name="model">account.loan.line</field>
|
|
7
7
|
<field name="priority">99</field>
|
|
8
8
|
<field name="arch" type="xml">
|
|
9
|
-
<tree
|
|
10
|
-
<field name="sequence" />
|
|
11
|
-
<field name="
|
|
9
|
+
<tree editable="bottom">
|
|
10
|
+
<field name="sequence" readonly="false" widget="handle" />
|
|
11
|
+
<field name="sequence" readonly="false" />
|
|
12
|
+
<field name="date" readonly="false" />
|
|
12
13
|
<field name="rate" />
|
|
13
|
-
<field name="pending_principal_amount" />
|
|
14
|
+
<field name="pending_principal_amount" readonly="True" force_save="1" />
|
|
14
15
|
<field name="payment_amount" sum="Total payments" />
|
|
15
|
-
<field
|
|
16
|
+
<field
|
|
17
|
+
name="principal_amount"
|
|
18
|
+
sum="principal_amount"
|
|
19
|
+
readonly="false"
|
|
20
|
+
/>
|
|
16
21
|
<field name="interests_amount" sum="Total interests" />
|
|
17
22
|
<field
|
|
18
23
|
name="long_term_pending_principal_amount"
|
|
19
24
|
column_invisible="not parent.long_term_loan_account_id"
|
|
25
|
+
readonly="false"
|
|
20
26
|
/>
|
|
21
27
|
<field
|
|
22
28
|
name="long_term_principal_amount"
|
|
23
29
|
column_invisible="not parent.long_term_loan_account_id"
|
|
30
|
+
readonly="false"
|
|
24
31
|
/>
|
|
25
32
|
<field name="long_term_loan_account_id" column_invisible="True" />
|
|
26
33
|
<field name="loan_state" column_invisible="True" />
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
from odoo import Command, _, api, fields, models
|
|
4
4
|
from odoo.exceptions import UserError
|
|
5
|
+
from odoo.tools import float_compare
|
|
5
6
|
|
|
6
7
|
|
|
7
8
|
class AccountLoanPost(models.TransientModel):
|
|
@@ -87,6 +88,17 @@ class AccountLoanPost(models.TransientModel):
|
|
|
87
88
|
|
|
88
89
|
def run(self):
|
|
89
90
|
self.ensure_one()
|
|
91
|
+
if self.loan_id.line_ids:
|
|
92
|
+
total_principal = sum(self.loan_id.line_ids.mapped("principal_amount"))
|
|
93
|
+
if (
|
|
94
|
+
float_compare(
|
|
95
|
+
self.loan_id.loan_amount, total_principal, precision_digits=2
|
|
96
|
+
)
|
|
97
|
+
!= 0
|
|
98
|
+
):
|
|
99
|
+
raise UserError(
|
|
100
|
+
_("The total principal amount does not match the loan amount.")
|
|
101
|
+
)
|
|
90
102
|
if self.loan_id.state != "draft":
|
|
91
103
|
raise UserError(_("Only loans in draft state can be posted"))
|
|
92
104
|
self.loan_id.post()
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: odoo-addon-account_loan
|
|
3
|
-
Version: 17.0.1.
|
|
3
|
+
Version: 17.0.1.1.1
|
|
4
4
|
Requires-Python: >=3.10
|
|
5
5
|
Requires-Dist: numpy-financial<=1.0.0
|
|
6
6
|
Requires-Dist: numpy>=1.15
|
|
@@ -24,7 +24,7 @@ Account Loan management
|
|
|
24
24
|
!! This file is generated by oca-gen-addon-readme !!
|
|
25
25
|
!! changes will be overwritten. !!
|
|
26
26
|
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
|
27
|
-
!! source digest: sha256:
|
|
27
|
+
!! source digest: sha256:64c6fa5e3a0b16d71144e17fa2a1df4504724e573bd68d30abb3a092a14ec771
|
|
28
28
|
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
|
29
29
|
|
|
30
30
|
.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png
|
|
@@ -121,6 +121,9 @@ Contributors
|
|
|
121
121
|
- Enric Tobella <etobella@creublanca.es>
|
|
122
122
|
- Bhavesh Odedra <bodedra@opensourceintegrators.com>
|
|
123
123
|
- Alberto Martín Cortada <alberto.martin@guadaltech.es>
|
|
124
|
+
- `Tecnativa <https://www.tecnativa.com>`__:
|
|
125
|
+
|
|
126
|
+
- Juan Carlos Oñate
|
|
124
127
|
|
|
125
128
|
Maintainers
|
|
126
129
|
-----------
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
odoo/addons/account_loan/README.rst,sha256=bTw_BCnQF3DPv2XrmM3zR0OiyOe1iXa2pU3fOGUsN6I,4864
|
|
2
|
+
odoo/addons/account_loan/__init__.py,sha256=o9EnCAU5AKoGmP2X6ytOhQFxVqIh5Y1itLUOmzxSUJY,113
|
|
3
|
+
odoo/addons/account_loan/__manifest__.py,sha256=aBt2eGUxMCZH_H20j5i7qaJ06M4jfcd_5QtwG8SiBVM,1083
|
|
4
|
+
odoo/addons/account_loan/data/ir_sequence_data.xml,sha256=bLydnK8X-0QWzFoBms4UpGYYle25C2DmbpVECEG4PMc,540
|
|
5
|
+
odoo/addons/account_loan/i18n/account_loan.pot,sha256=_7MOi8QU---Hmul8GCK4W1hvYWG8vjjaNaeu3OHwc5s,35253
|
|
6
|
+
odoo/addons/account_loan/i18n/am.po,sha256=uFav8c0Tyk-mOoPQYCqd2gqXCtx4AfL1-YunXvZasRk,35663
|
|
7
|
+
odoo/addons/account_loan/i18n/ar.po,sha256=pcKOygVuzAR5N-x4zIWzo-tjrESG2lirUxEMdpC7w4M,35939
|
|
8
|
+
odoo/addons/account_loan/i18n/bg.po,sha256=rvdgYUA4gU-CmwxzjdavetS8KiqmElQwnC0o57o262I,35870
|
|
9
|
+
odoo/addons/account_loan/i18n/bs.po,sha256=5nkvxxu_nzZJf9GCwNLwXQHYy2c0j6K7jm35zowDA3c,35839
|
|
10
|
+
odoo/addons/account_loan/i18n/ca.po,sha256=q6saYkCyyqPGcOQdiaDRP6_V0048G7vM02Yw0g8NnEs,40334
|
|
11
|
+
odoo/addons/account_loan/i18n/ca_ES.po,sha256=zQTrDcvPX9a3e9AOeJ4zHEoz57JmLnSSuQBZ3IEsUus,35591
|
|
12
|
+
odoo/addons/account_loan/i18n/cs.po,sha256=-xSE-9B2oDhmAv-e11TvUtEhbJzsGd0LAvsiUEXLcjk,35800
|
|
13
|
+
odoo/addons/account_loan/i18n/da.po,sha256=ZQSVb27ZT7RhF27f9ne67RGZpkc4rxIpcu6ZqArL2YA,35725
|
|
14
|
+
odoo/addons/account_loan/i18n/de.po,sha256=I2UGxdT5mxuqi4K4s44XXuZODSMQHj992RvvTF7Tbxg,39308
|
|
15
|
+
odoo/addons/account_loan/i18n/el_GR.po,sha256=6FdKqhxCOvJhjdivnQlh9hbULvGe1nkSxeDwrSAZ_1A,35841
|
|
16
|
+
odoo/addons/account_loan/i18n/en_AU.po,sha256=bsZZOvWZ1_rNGvClAEK9FzIMMyCjUWuKHoYDy5vSrOU,35612
|
|
17
|
+
odoo/addons/account_loan/i18n/en_GB.po,sha256=aQYykdmrwsWzLIYoELTO96exSaqK4aHgXdQswA8eEbc,35778
|
|
18
|
+
odoo/addons/account_loan/i18n/es.po,sha256=wt35ObXynN0iU5yqCMkjoO4esHIfYDmToLb3iCawy1c,40910
|
|
19
|
+
odoo/addons/account_loan/i18n/es_AR.po,sha256=9Wds1uDumkosXsJ-T61GQx0nS8rcEi2QMUvGEtXCY3Y,40680
|
|
20
|
+
odoo/addons/account_loan/i18n/es_CL.po,sha256=zKjZFM0vhDVTE8jUDCE5XBOE-gnEOzER6M8SLybmS3w,35779
|
|
21
|
+
odoo/addons/account_loan/i18n/es_CO.po,sha256=PQ4c7LTt25ivWNK086gAY_9XbucpVCQJP3DZFugUIQ8,35833
|
|
22
|
+
odoo/addons/account_loan/i18n/es_CR.po,sha256=oBYO5PgLMiBJz-szbu-uc9ExNdRAHTsg9EK-FdOj418,35730
|
|
23
|
+
odoo/addons/account_loan/i18n/es_DO.po,sha256=Kk55gwAYi5dZJ3_7IBxaVQCHuopCegblKIaR_4MrXV4,35774
|
|
24
|
+
odoo/addons/account_loan/i18n/es_EC.po,sha256=tZ2pJKBMEsSFjd2EIdIx7vCJJZ2mUiG1-PSyvSBI_jY,35833
|
|
25
|
+
odoo/addons/account_loan/i18n/es_ES.po,sha256=U42Nd9H9GuwCm0G54uyimRahuhhyD2B6dzyy5mi_sFI,35776
|
|
26
|
+
odoo/addons/account_loan/i18n/es_MX.po,sha256=C3fmbqWq-W6bbJ4Bvj14tCP-BfoaQAr8w9xahxfcgCE,35821
|
|
27
|
+
odoo/addons/account_loan/i18n/es_PE.po,sha256=BWn7R7r77Cuz6roba4Vt56XyyKEcedE-xshiICVz3co,35750
|
|
28
|
+
odoo/addons/account_loan/i18n/es_PY.po,sha256=wOKJlylNOmSrGT_ycOdBvB0iommEEWcf3uH3PsTc0EE,35653
|
|
29
|
+
odoo/addons/account_loan/i18n/es_VE.po,sha256=AZODhD7jtXv_gBP6_RoDnnD1DlFNzwPAYs0cUAFDR5g,35760
|
|
30
|
+
odoo/addons/account_loan/i18n/et.po,sha256=gwQd4urH40Y4yX9DIgdSvGkVw-MsT9uPavzrGnYB06w,35753
|
|
31
|
+
odoo/addons/account_loan/i18n/eu.po,sha256=ZPVDhkkHqQWBLvGKfBXTEzDcZ7klkT8e6R4RJxbhH2o,35659
|
|
32
|
+
odoo/addons/account_loan/i18n/fa.po,sha256=Yq6dL-0teRFRUZyeaYIFgIcjQYMP9BUIwzBjV6gIMK0,35830
|
|
33
|
+
odoo/addons/account_loan/i18n/fi.po,sha256=MJUaO7C4WmMRo7MBv30fIZuEDLBNUj3KtFacFaBpTcw,35739
|
|
34
|
+
odoo/addons/account_loan/i18n/fr.po,sha256=TG8InN-nq-86Q6bnYUB7__t9QzXh2UHm4cKuGn0mhM8,36798
|
|
35
|
+
odoo/addons/account_loan/i18n/fr_CA.po,sha256=XrAHlybTozNNpEpkV8luEqanhbypwCnpt7_PqOuIP_k,35720
|
|
36
|
+
odoo/addons/account_loan/i18n/fr_CH.po,sha256=AlMgbuU4B7cfwrKimfeUSPX7T1CpVKv4lVyt9fi97WA,35752
|
|
37
|
+
odoo/addons/account_loan/i18n/fr_FR.po,sha256=P4e5ztuaWdZB_-sN6TRTeBeESkZopaWL6Um4bjBkIjA,35684
|
|
38
|
+
odoo/addons/account_loan/i18n/gl.po,sha256=m0dN3MTTqxXlFv7IvufaAVutoJ7zKn0frmPUlonrLDo,35745
|
|
39
|
+
odoo/addons/account_loan/i18n/gl_ES.po,sha256=KUvw3q0VutT4FQFLeTsPg9EBCjaSW3Nvc-Bb4Sb4Lzo,35575
|
|
40
|
+
odoo/addons/account_loan/i18n/gu.po,sha256=03IvUKY-TOFAXP_p2y4vp4EtFkAEw_PQsG8dzP3qPUk,35596
|
|
41
|
+
odoo/addons/account_loan/i18n/he.po,sha256=DV6yPk-GJajb2w8BxF85ceK6lbR_zPvSpOa-43R_e-4,35790
|
|
42
|
+
odoo/addons/account_loan/i18n/hi.po,sha256=i8HSGqYAZ-55WXMJJZ8P2sdk1Gyvi7OREwbGqHwFiKI,35565
|
|
43
|
+
odoo/addons/account_loan/i18n/hr.po,sha256=Vy-ZphqqiCzM4GEd88zYUk8mTFcEp7b1gCXScokOrpo,35850
|
|
44
|
+
odoo/addons/account_loan/i18n/hr_HR.po,sha256=CWl8VToVA4jIOhwsTKbKd5IumHSQg08jxxGdVr_GS4A,35797
|
|
45
|
+
odoo/addons/account_loan/i18n/hu.po,sha256=t--UJfuwKyqEbhBVJ9jHOMocp-PoMCbGkK4_QzgX4io,35811
|
|
46
|
+
odoo/addons/account_loan/i18n/id.po,sha256=OAHGGY7skEHJpgyTb6MsamNaROfBoVgy5Z0TpnrCIYc,35765
|
|
47
|
+
odoo/addons/account_loan/i18n/it.po,sha256=PHm7Zf7muQzbqcIJpY8jhBJNdvHP82fYmhCSC8jEOIw,40412
|
|
48
|
+
odoo/addons/account_loan/i18n/ja.po,sha256=Unyza1AOuh_ktUqdyPbIKEfkrYeq9J2JETVOj_a1fHY,35768
|
|
49
|
+
odoo/addons/account_loan/i18n/ko.po,sha256=lc6IjC1pPp9GPMHuydxPY3vpxO3Kg5vElYSSOejUBOU,35718
|
|
50
|
+
odoo/addons/account_loan/i18n/lo.po,sha256=GGHgttDU02Cj6yU24aG0_qXRFT6wty3WCiCeBlfAx-Q,35605
|
|
51
|
+
odoo/addons/account_loan/i18n/lt.po,sha256=6xj0keatIs7IC6qCeH_RqffeATgRO6L0FCYrK-8X9Go,35892
|
|
52
|
+
odoo/addons/account_loan/i18n/lt_LT.po,sha256=4CIkZNxz-dPTcw9TSamtiAfH4SDSqK-ka5lzl6IAtvM,35758
|
|
53
|
+
odoo/addons/account_loan/i18n/lv.po,sha256=3B8kpV1vjlpWDzaLTiG8lB14Ab2dosoQEeOfpGOI0JM,35694
|
|
54
|
+
odoo/addons/account_loan/i18n/mk.po,sha256=GjIcVsO1zAcEF08cGz90O6X-w_x5mBCRL6qYwPK4lIU,35928
|
|
55
|
+
odoo/addons/account_loan/i18n/mn.po,sha256=-Nt1BV69TFiiGhTnc2YLZO6lNlgQ6J3ywsunFLAxvRQ,35919
|
|
56
|
+
odoo/addons/account_loan/i18n/nb.po,sha256=MtIn4-5P-yCtkRkzFNK3c7V3QHfcbPmEl-pryhiDJNk,35772
|
|
57
|
+
odoo/addons/account_loan/i18n/nb_NO.po,sha256=IPsxVhdMsSp9WRmwO6ZtRdXenyaADm2lBKILwwZ1ExU,35725
|
|
58
|
+
odoo/addons/account_loan/i18n/nl.po,sha256=n0u_5wZ_gaJ6KXdyKrUQrUGm61QQRAtbA6QJXc1gpEA,35780
|
|
59
|
+
odoo/addons/account_loan/i18n/nl_BE.po,sha256=6V9zOauzWzpE3bInG116RDDoRdSOvPMK02NynDif7zQ,35790
|
|
60
|
+
odoo/addons/account_loan/i18n/nl_NL.po,sha256=dhGKlC-_Itrw5Qjwtsr8nKgGTZ0pb6fGjIappdhPftA,35592
|
|
61
|
+
odoo/addons/account_loan/i18n/pl.po,sha256=VssP4FAPXmzWyfsaY2ERkCyyQx7Mi5Jwf-eR84sxp9M,35924
|
|
62
|
+
odoo/addons/account_loan/i18n/pt.po,sha256=9nA8e45yfPVLg17AioiHcN01H3rMriY6WeWe2FIbwF0,37704
|
|
63
|
+
odoo/addons/account_loan/i18n/pt_BR.po,sha256=RmTOhSYRo3uYi3NlMeLaGSTHL7mboYML_F_qz0Xpb9c,39000
|
|
64
|
+
odoo/addons/account_loan/i18n/pt_PT.po,sha256=dNk78C8ZzxMgkhrtUn4Aor0E88kjDiHpb0nGVsV7VnI,35824
|
|
65
|
+
odoo/addons/account_loan/i18n/ro.po,sha256=cY4AThH9MuNNzATCQH0Fd-PLZ0-eIFS595d5UBABM0Y,35826
|
|
66
|
+
odoo/addons/account_loan/i18n/ru.po,sha256=7a0xyxgzIPJICcg8ouZdHGy8i_qcThPPVzSTJBuUI2Y,35894
|
|
67
|
+
odoo/addons/account_loan/i18n/sk.po,sha256=d6lMVYjL-yXshaq-G-ma_3KKRmULpbPBXpKNJxeHFpI,35768
|
|
68
|
+
odoo/addons/account_loan/i18n/sk_SK.po,sha256=KJnVYSEcRLtaRNrxYumVIIte9YBLV3dwU95FZxGJwig,35618
|
|
69
|
+
odoo/addons/account_loan/i18n/sl.po,sha256=SoQuAZM71yf7S2fH3UTBZphYMOIkoL6jYDFBDv8NISo,35895
|
|
70
|
+
odoo/addons/account_loan/i18n/sr.po,sha256=wEyO-m3oW20dhyfYL8ThcbtfZh9AkG20HNJaxXzum3I,35648
|
|
71
|
+
odoo/addons/account_loan/i18n/sr@latin.po,sha256=g6h2ftBxBo_yXUJtTulWWLj_Fo0UiwUv22xH3Kml7iY,35820
|
|
72
|
+
odoo/addons/account_loan/i18n/sv.po,sha256=Avxjuxz1H_Tafnc3T2XvDej-HtmH0dirPZdOC9hD8u4,40346
|
|
73
|
+
odoo/addons/account_loan/i18n/th.po,sha256=vG38h1LC_5Zr5rkgXoFWHnXApOQekOMFXDNCJMLpRsw,36044
|
|
74
|
+
odoo/addons/account_loan/i18n/tr.po,sha256=9BGZo26ttfy_tmmZw4LIVlq5dR_LRRF1WL8RjA3pV1g,35762
|
|
75
|
+
odoo/addons/account_loan/i18n/tr_TR.po,sha256=mHR5a665xyOJkuQpbjni5RXYOsPCqvZzoG75Ufh9tY8,35822
|
|
76
|
+
odoo/addons/account_loan/i18n/uk.po,sha256=vsqhxlC8c6X2FeCTxc2Tv9uX5l6AefIAR2ki49yzLJ8,35912
|
|
77
|
+
odoo/addons/account_loan/i18n/vi.po,sha256=wevOkkAhJoho1xKNIheBaiejO0iB8t3scfrrDCUjg_U,35789
|
|
78
|
+
odoo/addons/account_loan/i18n/vi_VN.po,sha256=xIL-5TMMX2_wB2pcCtmp5W-Fh-uZOelpkIDH5crSKK4,35694
|
|
79
|
+
odoo/addons/account_loan/i18n/zh_CN.po,sha256=6dcyojksdX1sgf8CON8EEXoYlsE6l29XiSBGkGoBxLg,35770
|
|
80
|
+
odoo/addons/account_loan/i18n/zh_TW.po,sha256=IqTd4oYt78_0lCHKDuzEWSeB_LlnkhETjcPlX0FGt0I,35763
|
|
81
|
+
odoo/addons/account_loan/migrations/17.0.1.0.0/noupdate_changes.xml,sha256=bZbGut6mOAMZsniduY1yY2QA8W31LLNcBJFGjt1EFeE,398
|
|
82
|
+
odoo/addons/account_loan/migrations/17.0.1.0.0/post-migration.py,sha256=0XUOqdMYcrw_CbdeWHc5BgWUEhEG_Rxed6I1bdq9H3c,314
|
|
83
|
+
odoo/addons/account_loan/models/__init__.py,sha256=jwLlr4SgTaxqvv5CCJkgGwhwNus45E4E4e3pijuROJY,211
|
|
84
|
+
odoo/addons/account_loan/models/account_loan.py,sha256=4vNaYaMzx1WD0tx6j-T0SXSlaL4YxOsNcQSenf9ft1I,15813
|
|
85
|
+
odoo/addons/account_loan/models/account_loan_line.py,sha256=qd_vhO-ZujsmrwEVg9N7THxScx5LEmEYQkhkW9Grh9U,17959
|
|
86
|
+
odoo/addons/account_loan/models/account_move.py,sha256=8p2V854_J060o_yupWrGyVa5Ps44d8GpkY4azcAUz3k,937
|
|
87
|
+
odoo/addons/account_loan/models/res_partner.py,sha256=6NgoxHUstcHftmDGj9NWzxfb9MBDG6XATj_1OwMao84,995
|
|
88
|
+
odoo/addons/account_loan/readme/CONTRIBUTORS.md,sha256=w4frkcHOfPes7QOWbCyGpnNbYcxJhFM0A9x0qCxxQd4,227
|
|
89
|
+
odoo/addons/account_loan/readme/DESCRIPTION.md,sha256=tgKIF8E4LJiqio5knhWzXzUeop9VUvNXwc3fDV1bIz8,598
|
|
90
|
+
odoo/addons/account_loan/readme/HISTORY.md,sha256=JSQtr1egUJ0sGZB8KBTv4ksGWDVDoGf8c8b9VDlD8hE,158
|
|
91
|
+
odoo/addons/account_loan/readme/USAGE.md,sha256=pQ7Eb0xRbAdguo8JAxUQ-irEFkOdIeor3uxe-uX0rZo,726
|
|
92
|
+
odoo/addons/account_loan/security/account_loan_security.xml,sha256=je25Lct1hJDX_5Qz9vhmXWF9n3s47WSzN9Ic8l8mr2k,752
|
|
93
|
+
odoo/addons/account_loan/security/ir.model.access.csv,sha256=3RwBdFKlfSzAJCUWYxDBGUw0t0ZLuBphkZWYtNHGmlI,1009
|
|
94
|
+
odoo/addons/account_loan/static/description/icon.png,sha256=6xBPJauaFOF0KDHfHgQopSc28kKvxMaeoQFQWZtfZDo,9455
|
|
95
|
+
odoo/addons/account_loan/static/description/index.html,sha256=O_5PT4xNa04f3Bt07vUXYCDoEJMYdnOujmGxsZr7RCM,15392
|
|
96
|
+
odoo/addons/account_loan/tests/__init__.py,sha256=I1GwELsBL3FTRS0pVrE5q-qEk537mMnSOXpWkPVcBnY,94
|
|
97
|
+
odoo/addons/account_loan/tests/test_loan.py,sha256=KM4WS1X2biunT6rhkrpbmvl-zNzBP9bCXzxBywxsStY,28575
|
|
98
|
+
odoo/addons/account_loan/views/account_loan_lines_view.xml,sha256=BNt633HUe9J-rpSi-VbJ8fp4IagJNf-LS46A9g6sVoc,6224
|
|
99
|
+
odoo/addons/account_loan/views/account_loan_view.xml,sha256=CWZiAzZtF0sD5a7R1uyVQhju3q5CMjhcN5EQ7IgJxCE,10536
|
|
100
|
+
odoo/addons/account_loan/views/account_move_view.xml,sha256=-dFzRj3e84NTkLCoaAzneAPlwxVtzbjBZyAt6eK_NfM,814
|
|
101
|
+
odoo/addons/account_loan/views/res_partner.xml,sha256=rneFt7lW3cUoI8UVaLQc9mkiSCii2Os1T3TTYCEB_s0,1248
|
|
102
|
+
odoo/addons/account_loan/wizards/__init__.py,sha256=mq87kRH_mXzIn76cBCeuzptRiIOdQWjImjmZ_HNGUVU,227
|
|
103
|
+
odoo/addons/account_loan/wizards/account_loan_generate_entries.py,sha256=gnEZPTwuelzmSDRnqqmIJocHjrCxJA23oyflQ2hpPRo,1503
|
|
104
|
+
odoo/addons/account_loan/wizards/account_loan_generate_entries_view.xml,sha256=tugTvlYen6e1DLjWSUrwLytSH1d30ocdV_9c19ObGbg,1648
|
|
105
|
+
odoo/addons/account_loan/wizards/account_loan_increase_amount.py,sha256=rR_xp2lMuGFGSzp-deUBIdBvM2H8U4U-22eIMF_xGt4,4527
|
|
106
|
+
odoo/addons/account_loan/wizards/account_loan_increase_amount.xml,sha256=0g90b8YuFL8DalKXc2482c4WfO-Txbv46T0StIVinfI,1454
|
|
107
|
+
odoo/addons/account_loan/wizards/account_loan_pay_amount.py,sha256=-kG1q8Ueh0Fl_glZIr3pRVW-7GnPTPhKbVXm_pfOm1Y,4135
|
|
108
|
+
odoo/addons/account_loan/wizards/account_loan_pay_amount_view.xml,sha256=9rCkG5kL3u2vc4Mmz9zo5Sqfp6raGnPz3ZGv2AlLIN4,1596
|
|
109
|
+
odoo/addons/account_loan/wizards/account_loan_post.py,sha256=9aRQaqPGdV5NSUJ6oiTV8kaUhT5TzuqJ3oFJKefL3Tw,3667
|
|
110
|
+
odoo/addons/account_loan/wizards/account_loan_post_view.xml,sha256=s-teTEY9HCEA2CHD3_tQZJIGOHJMZNAlR1pSN5Dpdn8,1440
|
|
111
|
+
odoo_addon_account_loan-17.0.1.1.1.dist-info/METADATA,sha256=_YUnDn2Kal-paEHkOQQbGHkRv8Lq4B-90xeg4YtYxlA,5450
|
|
112
|
+
odoo_addon_account_loan-17.0.1.1.1.dist-info/WHEEL,sha256=9fEMia4zL7ZuZbnCOrcYogUhmn4XFIVaJ8G4YGI31xc,81
|
|
113
|
+
odoo_addon_account_loan-17.0.1.1.1.dist-info/top_level.txt,sha256=QE6RBQ0QX5f4eFuUcGgU5Kbq1A_qJcDs-e_vpr6pmfU,4
|
|
114
|
+
odoo_addon_account_loan-17.0.1.1.1.dist-info/RECORD,,
|