odoo-addon-account-loan 17.0.1.1.1__py3-none-any.whl → 17.0.2.2.0__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 +6 -2
- odoo/addons/account_loan/__manifest__.py +1 -1
- odoo/addons/account_loan/i18n/account_loan.pot +46 -0
- odoo/addons/account_loan/i18n/am.po +36 -0
- odoo/addons/account_loan/i18n/ar.po +36 -0
- odoo/addons/account_loan/i18n/bg.po +36 -0
- odoo/addons/account_loan/i18n/bs.po +36 -0
- odoo/addons/account_loan/i18n/ca.po +36 -0
- odoo/addons/account_loan/i18n/ca_ES.po +36 -0
- odoo/addons/account_loan/i18n/cs.po +36 -0
- odoo/addons/account_loan/i18n/da.po +36 -0
- odoo/addons/account_loan/i18n/de.po +36 -0
- odoo/addons/account_loan/i18n/el_GR.po +36 -0
- odoo/addons/account_loan/i18n/en_AU.po +36 -0
- odoo/addons/account_loan/i18n/en_GB.po +36 -0
- odoo/addons/account_loan/i18n/es.po +36 -0
- odoo/addons/account_loan/i18n/es_AR.po +36 -0
- odoo/addons/account_loan/i18n/es_CL.po +36 -0
- odoo/addons/account_loan/i18n/es_CO.po +36 -0
- odoo/addons/account_loan/i18n/es_CR.po +36 -0
- odoo/addons/account_loan/i18n/es_DO.po +36 -0
- odoo/addons/account_loan/i18n/es_EC.po +36 -0
- odoo/addons/account_loan/i18n/es_ES.po +36 -0
- odoo/addons/account_loan/i18n/es_MX.po +36 -0
- odoo/addons/account_loan/i18n/es_PE.po +36 -0
- odoo/addons/account_loan/i18n/es_PY.po +36 -0
- odoo/addons/account_loan/i18n/es_VE.po +36 -0
- odoo/addons/account_loan/i18n/et.po +36 -0
- odoo/addons/account_loan/i18n/eu.po +36 -0
- odoo/addons/account_loan/i18n/fa.po +36 -0
- odoo/addons/account_loan/i18n/fi.po +36 -0
- odoo/addons/account_loan/i18n/fr.po +36 -0
- odoo/addons/account_loan/i18n/fr_CA.po +36 -0
- odoo/addons/account_loan/i18n/fr_CH.po +36 -0
- odoo/addons/account_loan/i18n/fr_FR.po +36 -0
- odoo/addons/account_loan/i18n/gl.po +36 -0
- odoo/addons/account_loan/i18n/gl_ES.po +36 -0
- odoo/addons/account_loan/i18n/gu.po +36 -0
- odoo/addons/account_loan/i18n/he.po +36 -0
- odoo/addons/account_loan/i18n/hi.po +36 -0
- odoo/addons/account_loan/i18n/hr.po +36 -0
- odoo/addons/account_loan/i18n/hr_HR.po +36 -0
- odoo/addons/account_loan/i18n/hu.po +36 -0
- odoo/addons/account_loan/i18n/id.po +36 -0
- odoo/addons/account_loan/i18n/it.po +46 -5
- odoo/addons/account_loan/i18n/ja.po +36 -0
- odoo/addons/account_loan/i18n/ko.po +36 -0
- odoo/addons/account_loan/i18n/lo.po +36 -0
- odoo/addons/account_loan/i18n/lt.po +36 -0
- odoo/addons/account_loan/i18n/lt_LT.po +36 -0
- odoo/addons/account_loan/i18n/lv.po +36 -0
- odoo/addons/account_loan/i18n/mk.po +36 -0
- odoo/addons/account_loan/i18n/mn.po +36 -0
- odoo/addons/account_loan/i18n/nb.po +36 -0
- odoo/addons/account_loan/i18n/nb_NO.po +36 -0
- odoo/addons/account_loan/i18n/nl.po +36 -0
- odoo/addons/account_loan/i18n/nl_BE.po +36 -0
- odoo/addons/account_loan/i18n/nl_NL.po +36 -0
- odoo/addons/account_loan/i18n/pl.po +36 -0
- odoo/addons/account_loan/i18n/pt.po +36 -0
- odoo/addons/account_loan/i18n/pt_BR.po +36 -0
- odoo/addons/account_loan/i18n/pt_PT.po +36 -0
- odoo/addons/account_loan/i18n/ro.po +36 -0
- odoo/addons/account_loan/i18n/ru.po +36 -0
- odoo/addons/account_loan/i18n/sk.po +36 -0
- odoo/addons/account_loan/i18n/sk_SK.po +36 -0
- odoo/addons/account_loan/i18n/sl.po +36 -0
- odoo/addons/account_loan/i18n/sr.po +36 -0
- odoo/addons/account_loan/i18n/sr@latin.po +36 -0
- odoo/addons/account_loan/i18n/sv.po +36 -0
- odoo/addons/account_loan/i18n/th.po +36 -0
- odoo/addons/account_loan/i18n/tr.po +36 -0
- odoo/addons/account_loan/i18n/tr_TR.po +36 -0
- odoo/addons/account_loan/i18n/uk.po +36 -0
- odoo/addons/account_loan/i18n/vi.po +36 -0
- odoo/addons/account_loan/i18n/vi_VN.po +36 -0
- odoo/addons/account_loan/i18n/zh_CN.po +36 -0
- odoo/addons/account_loan/i18n/zh_TW.po +36 -0
- odoo/addons/account_loan/models/account_loan.py +44 -14
- odoo/addons/account_loan/models/account_loan_line.py +30 -18
- odoo/addons/account_loan/models/account_move.py +0 -1
- odoo/addons/account_loan/static/description/index.html +19 -13
- odoo/addons/account_loan/tests/test_loan.py +49 -1
- odoo/addons/account_loan/views/account_loan_lines_view.xml +18 -10
- odoo/addons/account_loan/views/account_loan_view.xml +24 -4
- odoo/addons/account_loan/wizards/account_loan_post.py +15 -15
- {odoo_addon_account_loan-17.0.1.1.1.dist-info → odoo_addon_account_loan-17.0.2.2.0.dist-info}/METADATA +8 -3
- odoo_addon_account_loan-17.0.2.2.0.dist-info/RECORD +114 -0
- {odoo_addon_account_loan-17.0.1.1.1.dist-info → odoo_addon_account_loan-17.0.2.2.0.dist-info}/WHEEL +1 -1
- odoo_addon_account_loan-17.0.1.1.1.dist-info/RECORD +0 -114
- {odoo_addon_account_loan-17.0.1.1.1.dist-info → odoo_addon_account_loan-17.0.2.2.0.dist-info}/top_level.txt +0 -0
|
@@ -5,6 +5,7 @@ import logging
|
|
|
5
5
|
|
|
6
6
|
from odoo import Command, _, api, fields, models
|
|
7
7
|
from odoo.exceptions import UserError
|
|
8
|
+
from odoo.tools import float_is_zero
|
|
8
9
|
|
|
9
10
|
_logger = logging.getLogger(__name__)
|
|
10
11
|
try:
|
|
@@ -127,16 +128,18 @@ class AccountLoanLine(models.Model):
|
|
|
127
128
|
@api.depends("interests_amount")
|
|
128
129
|
def _compute_rate(self):
|
|
129
130
|
for record in self:
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
131
|
+
rate = 0
|
|
132
|
+
if not float_is_zero(record.pending_principal_amount, precision_digits=2):
|
|
133
|
+
rate = (record.interests_amount * 100) / record.pending_principal_amount
|
|
134
|
+
record.rate = rate
|
|
133
135
|
|
|
134
136
|
@api.depends("rate")
|
|
135
137
|
def _compute_interests_amount(self):
|
|
136
138
|
for record in self:
|
|
137
|
-
record.interests_amount
|
|
138
|
-
record.
|
|
139
|
-
|
|
139
|
+
if record.interests_amount and record.pending_principal_amount:
|
|
140
|
+
record.interests_amount = (
|
|
141
|
+
record.pending_principal_amount * record.rate
|
|
142
|
+
) / 100
|
|
140
143
|
|
|
141
144
|
@api.depends("move_ids")
|
|
142
145
|
def _compute_has_moves(self):
|
|
@@ -292,43 +295,52 @@ class AccountLoanLine(models.Model):
|
|
|
292
295
|
def _move_line_vals(self, account=False):
|
|
293
296
|
vals = []
|
|
294
297
|
partner = self.loan_id.partner_id.with_company(self.loan_id.company_id)
|
|
298
|
+
# Amounts are evaled if > 0 for allowing negative loans to be able to be the
|
|
299
|
+
# donors of the loan
|
|
300
|
+
partner_account = (
|
|
301
|
+
partner.property_account_payable_id
|
|
302
|
+
if self.payment_amount > 0
|
|
303
|
+
else partner.property_account_receivable_id
|
|
304
|
+
)
|
|
295
305
|
vals.append(
|
|
296
306
|
{
|
|
297
|
-
"account_id": (account and account.id)
|
|
298
|
-
or partner.property_account_payable_id.id,
|
|
307
|
+
"account_id": (account and account.id) or partner_account.id,
|
|
299
308
|
"partner_id": partner.id,
|
|
300
|
-
"credit": self.payment_amount,
|
|
301
|
-
"debit": 0,
|
|
309
|
+
"credit": self.payment_amount if self.payment_amount > 0 else 0,
|
|
310
|
+
"debit": -self.payment_amount if self.payment_amount < 0 else 0,
|
|
302
311
|
}
|
|
303
312
|
)
|
|
304
313
|
if self.interests_amount:
|
|
314
|
+
amount = self.interests_amount
|
|
305
315
|
vals.append(
|
|
306
316
|
{
|
|
307
317
|
"account_id": self.loan_id.interest_expenses_account_id.id,
|
|
308
|
-
"credit": 0,
|
|
309
|
-
"debit":
|
|
318
|
+
"credit": -amount if amount < 0 else 0,
|
|
319
|
+
"debit": amount if amount > 0 else 0,
|
|
310
320
|
}
|
|
311
321
|
)
|
|
322
|
+
diff_amount = self.payment_amount - self.interests_amount
|
|
312
323
|
vals.append(
|
|
313
324
|
{
|
|
314
325
|
"account_id": self.loan_id.short_term_loan_account_id.id,
|
|
315
|
-
"credit": 0,
|
|
316
|
-
"debit":
|
|
326
|
+
"credit": -diff_amount if diff_amount < 0 else 0,
|
|
327
|
+
"debit": diff_amount if diff_amount > 0 else 0,
|
|
317
328
|
}
|
|
318
329
|
)
|
|
319
330
|
if self.long_term_loan_account_id and self.long_term_principal_amount:
|
|
331
|
+
amount = self.long_term_principal_amount
|
|
320
332
|
vals.append(
|
|
321
333
|
{
|
|
322
334
|
"account_id": self.loan_id.short_term_loan_account_id.id,
|
|
323
|
-
"credit":
|
|
324
|
-
"debit": 0,
|
|
335
|
+
"credit": amount if amount > 0 else 0,
|
|
336
|
+
"debit": -amount if amount < 0 else 0,
|
|
325
337
|
}
|
|
326
338
|
)
|
|
327
339
|
vals.append(
|
|
328
340
|
{
|
|
329
341
|
"account_id": self.long_term_loan_account_id.id,
|
|
330
|
-
"credit": 0,
|
|
331
|
-
"debit":
|
|
342
|
+
"credit": -amount if amount < 0 else 0,
|
|
343
|
+
"debit": amount if amount > 0 else 0,
|
|
332
344
|
}
|
|
333
345
|
)
|
|
334
346
|
return vals
|
|
@@ -26,7 +26,6 @@ class AccountMove(models.Model):
|
|
|
26
26
|
if loan_line_id:
|
|
27
27
|
record.loan_id = loan_line_id.loan_id
|
|
28
28
|
record.loan_line_id._check_move_amount()
|
|
29
|
-
record.loan_line_id.loan_id._compute_posted_lines()
|
|
30
29
|
if record.loan_line_id.sequence == record.loan_id.periods:
|
|
31
30
|
record.loan_id.close()
|
|
32
31
|
return res
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
<head>
|
|
4
4
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
|
5
5
|
<meta name="generator" content="Docutils: https://docutils.sourceforge.io/" />
|
|
6
|
-
<title>
|
|
6
|
+
<title>README.rst</title>
|
|
7
7
|
<style type="text/css">
|
|
8
8
|
|
|
9
9
|
/*
|
|
@@ -360,16 +360,21 @@ ul.auto-toc {
|
|
|
360
360
|
</style>
|
|
361
361
|
</head>
|
|
362
362
|
<body>
|
|
363
|
-
<div class="document"
|
|
364
|
-
<h1 class="title">Account Loan management</h1>
|
|
363
|
+
<div class="document">
|
|
365
364
|
|
|
365
|
+
|
|
366
|
+
<a class="reference external image-reference" href="https://odoo-community.org/get-involved?utm_source=readme">
|
|
367
|
+
<img alt="Odoo Community Association" src="https://odoo-community.org/readme-banner-image" />
|
|
368
|
+
</a>
|
|
369
|
+
<div class="section" id="account-loan-management">
|
|
370
|
+
<h1>Account Loan management</h1>
|
|
366
371
|
<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
|
367
372
|
!! This file is generated by oca-gen-addon-readme !!
|
|
368
373
|
!! changes will be overwritten. !!
|
|
369
374
|
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
|
370
|
-
!! source digest: sha256:
|
|
375
|
+
!! source digest: sha256:cf116fbc449f4763c68b322ad6d401b4199e1f9652dca73ec333c69c896a2d38
|
|
371
376
|
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
|
|
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/
|
|
377
|
+
<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/license-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
378
|
<p>This module extends the functionality of accounting to support loans. It
|
|
374
379
|
will create automatically moves or invoices for loans. Moreover, you can
|
|
375
380
|
check the pending amount to be paid and reduce the debt.</p>
|
|
@@ -404,7 +409,7 @@ check the pending amount to be paid and reduce the debt.</p>
|
|
|
404
409
|
</ul>
|
|
405
410
|
</div>
|
|
406
411
|
<div class="section" id="usage">
|
|
407
|
-
<
|
|
412
|
+
<h2><a class="toc-backref" href="#toc-entry-1">Usage</a></h2>
|
|
408
413
|
<p>To use this module, you need to:</p>
|
|
409
414
|
<ol class="arabic simple">
|
|
410
415
|
<li>Go to Invoicing / Accounting > Accounting > Loans</li>
|
|
@@ -424,15 +429,15 @@ and leases before a selected date</li>
|
|
|
424
429
|
<p><a class="reference external image-reference" href="https://runbot.odoo-community.org/runbot/92/12.0"><img alt="Try me on Runbot" src="https://odoo-community.org/website/image/ir.attachment/5784_f2813bd/datas" /></a></p>
|
|
425
430
|
</div>
|
|
426
431
|
<div class="section" id="changelog">
|
|
427
|
-
<
|
|
432
|
+
<h2><a class="toc-backref" href="#toc-entry-2">Changelog</a></h2>
|
|
428
433
|
<div class="section" id="section-1">
|
|
429
|
-
<
|
|
434
|
+
<h3><a class="toc-backref" href="#toc-entry-3">16.0.1.0.0</a></h3>
|
|
430
435
|
<p>Due to the changes on 16, we will generate two moves on leasings, one
|
|
431
436
|
for the invoice, and another one for the change from long to short term.</p>
|
|
432
437
|
</div>
|
|
433
438
|
</div>
|
|
434
439
|
<div class="section" id="bug-tracker">
|
|
435
|
-
<
|
|
440
|
+
<h2><a class="toc-backref" href="#toc-entry-4">Bug Tracker</a></h2>
|
|
436
441
|
<p>Bugs are tracked on <a class="reference external" href="https://github.com/OCA/account-financial-tools/issues">GitHub Issues</a>.
|
|
437
442
|
In case of trouble, please check there if your issue has already been reported.
|
|
438
443
|
If you spotted it first, help us to smash it by providing a detailed and welcomed
|
|
@@ -440,15 +445,15 @@ If you spotted it first, help us to smash it by providing a detailed and welcome
|
|
|
440
445
|
<p>Do not contact contributors directly about support or help with technical issues.</p>
|
|
441
446
|
</div>
|
|
442
447
|
<div class="section" id="credits">
|
|
443
|
-
<
|
|
448
|
+
<h2><a class="toc-backref" href="#toc-entry-5">Credits</a></h2>
|
|
444
449
|
<div class="section" id="authors">
|
|
445
|
-
<
|
|
450
|
+
<h3><a class="toc-backref" href="#toc-entry-6">Authors</a></h3>
|
|
446
451
|
<ul class="simple">
|
|
447
452
|
<li>Creu Blanca</li>
|
|
448
453
|
</ul>
|
|
449
454
|
</div>
|
|
450
455
|
<div class="section" id="contributors">
|
|
451
|
-
<
|
|
456
|
+
<h3><a class="toc-backref" href="#toc-entry-7">Contributors</a></h3>
|
|
452
457
|
<ul class="simple">
|
|
453
458
|
<li>Enric Tobella <<a class="reference external" href="mailto:etobella@creublanca.es">etobella@creublanca.es</a>></li>
|
|
454
459
|
<li>Bhavesh Odedra <<a class="reference external" href="mailto:bodedra@opensourceintegrators.com">bodedra@opensourceintegrators.com</a>></li>
|
|
@@ -460,7 +465,7 @@ If you spotted it first, help us to smash it by providing a detailed and welcome
|
|
|
460
465
|
</ul>
|
|
461
466
|
</div>
|
|
462
467
|
<div class="section" id="maintainers">
|
|
463
|
-
<
|
|
468
|
+
<h3><a class="toc-backref" href="#toc-entry-8">Maintainers</a></h3>
|
|
464
469
|
<p>This module is maintained by the OCA.</p>
|
|
465
470
|
<a class="reference external image-reference" href="https://odoo-community.org">
|
|
466
471
|
<img alt="Odoo Community Association" src="https://odoo-community.org/logo.png" />
|
|
@@ -475,5 +480,6 @@ promote its widespread use.</p>
|
|
|
475
480
|
</div>
|
|
476
481
|
</div>
|
|
477
482
|
</div>
|
|
483
|
+
</div>
|
|
478
484
|
</body>
|
|
479
485
|
</html>
|
|
@@ -88,7 +88,7 @@ class TestLoan(BaseCommon):
|
|
|
88
88
|
|
|
89
89
|
@mute_logger("odoo.models.unlink")
|
|
90
90
|
@freeze_time("2025-01-31")
|
|
91
|
-
def
|
|
91
|
+
def test_loan_lines_custom_day_01(self):
|
|
92
92
|
loan = self.create_loan("fixed-annuity", 500000, 1, 60)
|
|
93
93
|
loan.long_term_loan_account_id = self.lt_loan_account
|
|
94
94
|
loan.compute_lines()
|
|
@@ -119,6 +119,40 @@ class TestLoan(BaseCommon):
|
|
|
119
119
|
line_1.long_term_pending_principal_amount, line_13.pending_principal_amount
|
|
120
120
|
)
|
|
121
121
|
|
|
122
|
+
@mute_logger("odoo.models.unlink")
|
|
123
|
+
@freeze_time("2024-12-31")
|
|
124
|
+
def test_loan_lines_custom_day_02(self):
|
|
125
|
+
loan = self.create_loan("fixed-annuity", 500000, 1, 60)
|
|
126
|
+
loan.long_term_loan_account_id = self.lt_loan_account
|
|
127
|
+
loan.payment_on_first_period = False
|
|
128
|
+
loan.compute_lines()
|
|
129
|
+
dates_by_sequence = {}
|
|
130
|
+
for line in loan.line_ids:
|
|
131
|
+
dates_by_sequence[line.sequence] = line.date
|
|
132
|
+
self.assertEqual(dates_by_sequence[1], fields.Date.from_string("2025-01-31"))
|
|
133
|
+
self.assertEqual(dates_by_sequence[2], fields.Date.from_string("2025-02-28"))
|
|
134
|
+
self.assertEqual(dates_by_sequence[3], fields.Date.from_string("2025-03-31"))
|
|
135
|
+
self.assertEqual(dates_by_sequence[4], fields.Date.from_string("2025-04-30"))
|
|
136
|
+
self.assertEqual(dates_by_sequence[5], fields.Date.from_string("2025-05-31"))
|
|
137
|
+
self.assertEqual(dates_by_sequence[6], fields.Date.from_string("2025-06-30"))
|
|
138
|
+
self.assertEqual(dates_by_sequence[7], fields.Date.from_string("2025-07-31"))
|
|
139
|
+
self.assertEqual(dates_by_sequence[8], fields.Date.from_string("2025-08-31"))
|
|
140
|
+
self.assertEqual(dates_by_sequence[9], fields.Date.from_string("2025-09-30"))
|
|
141
|
+
self.assertEqual(dates_by_sequence[10], fields.Date.from_string("2025-10-31"))
|
|
142
|
+
self.assertEqual(dates_by_sequence[11], fields.Date.from_string("2025-11-30"))
|
|
143
|
+
self.assertEqual(dates_by_sequence[12], fields.Date.from_string("2025-12-31"))
|
|
144
|
+
self.assertEqual(dates_by_sequence[13], fields.Date.from_string("2026-01-31"))
|
|
145
|
+
line_1 = loan.line_ids.filtered(lambda x: x.sequence == 1)
|
|
146
|
+
self.assertEqual(line_1.long_term_pending_principal_amount, 401989.15)
|
|
147
|
+
self.assertAlmostEqual(line_1.long_term_principal_amount, 8211.88)
|
|
148
|
+
line_2 = loan.line_ids.filtered(lambda x: x.sequence == 2)
|
|
149
|
+
self.assertEqual(line_2.long_term_pending_principal_amount, 393777.27)
|
|
150
|
+
line_13 = loan.line_ids.filtered(lambda x: x.sequence == 13)
|
|
151
|
+
self.assertEqual(line_13.pending_principal_amount, 401989.15)
|
|
152
|
+
self.assertEqual(
|
|
153
|
+
line_1.long_term_pending_principal_amount, line_13.pending_principal_amount
|
|
154
|
+
)
|
|
155
|
+
|
|
122
156
|
@mute_logger("odoo.models.unlink")
|
|
123
157
|
def test_round_on_end(self):
|
|
124
158
|
loan = self.create_loan("fixed-annuity", 500000, 1, 60)
|
|
@@ -608,12 +642,20 @@ class TestLoan(BaseCommon):
|
|
|
608
642
|
self.assertEqual(loan.payment_amount - loan.interests_amount, amount)
|
|
609
643
|
self.assertEqual(loan.pending_principal_amount, 0)
|
|
610
644
|
|
|
645
|
+
def test_negative_loan(self):
|
|
646
|
+
# Check that negatives amounts don't give an error
|
|
647
|
+
loan = self.create_loan("fixed-annuity", -4000, 1, 10)
|
|
648
|
+
self.post(loan)
|
|
649
|
+
loan.line_ids[0].view_process_values()
|
|
650
|
+
|
|
611
651
|
@mute_logger("odoo.models.unlink")
|
|
612
652
|
def test_cancel_loan(self):
|
|
613
653
|
amount = 10000
|
|
614
654
|
periods = 10
|
|
615
655
|
loan = self.create_loan("fixed-annuity", amount, 1, periods)
|
|
616
656
|
self.post(loan)
|
|
657
|
+
with self.assertRaises(UserError):
|
|
658
|
+
loan.button_draft()
|
|
617
659
|
line = loan.line_ids.filtered(lambda r: r.sequence == 1)
|
|
618
660
|
line.view_process_values()
|
|
619
661
|
self.assertTrue(line.move_ids)
|
|
@@ -626,6 +668,12 @@ class TestLoan(BaseCommon):
|
|
|
626
668
|
self.assertEqual(pay.amount, line.final_pending_principal_amount)
|
|
627
669
|
pay.run()
|
|
628
670
|
self.assertEqual(loan.state, "cancelled")
|
|
671
|
+
with self.assertRaises(UserError):
|
|
672
|
+
loan.button_draft()
|
|
673
|
+
loan.move_ids.button_draft()
|
|
674
|
+
loan.move_ids.unlink()
|
|
675
|
+
loan.button_draft()
|
|
676
|
+
self.assertEqual(loan.state, "draft")
|
|
629
677
|
|
|
630
678
|
def post(self, loan):
|
|
631
679
|
self.assertFalse(loan.move_ids)
|
|
@@ -7,27 +7,35 @@
|
|
|
7
7
|
<field name="priority">99</field>
|
|
8
8
|
<field name="arch" type="xml">
|
|
9
9
|
<tree editable="bottom">
|
|
10
|
-
<field
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
<field name="
|
|
10
|
+
<field
|
|
11
|
+
name="sequence"
|
|
12
|
+
readonly="has_moves or has_invoices"
|
|
13
|
+
widget="handle"
|
|
14
|
+
/>
|
|
15
|
+
<field name="sequence" readonly="has_moves or has_invoices" />
|
|
16
|
+
<field name="date" readonly="has_moves or has_invoices" />
|
|
17
|
+
<field name="rate" readonly="has_moves or has_invoices" />
|
|
18
|
+
<field name="pending_principal_amount" readonly="True" />
|
|
19
|
+
<field name="payment_amount" sum="Total payments" readonly="True" />
|
|
16
20
|
<field
|
|
17
21
|
name="principal_amount"
|
|
18
22
|
sum="principal_amount"
|
|
19
|
-
readonly="
|
|
23
|
+
readonly="has_moves or has_invoices"
|
|
24
|
+
/>
|
|
25
|
+
<field
|
|
26
|
+
name="interests_amount"
|
|
27
|
+
sum="Total interests"
|
|
28
|
+
readonly="has_moves or has_invoices"
|
|
20
29
|
/>
|
|
21
|
-
<field name="interests_amount" sum="Total interests" />
|
|
22
30
|
<field
|
|
23
31
|
name="long_term_pending_principal_amount"
|
|
24
32
|
column_invisible="not parent.long_term_loan_account_id"
|
|
25
|
-
readonly="
|
|
33
|
+
readonly="has_moves or has_invoices"
|
|
26
34
|
/>
|
|
27
35
|
<field
|
|
28
36
|
name="long_term_principal_amount"
|
|
29
37
|
column_invisible="not parent.long_term_loan_account_id"
|
|
30
|
-
readonly="
|
|
38
|
+
readonly="has_moves or has_invoices"
|
|
31
39
|
/>
|
|
32
40
|
<field name="long_term_loan_account_id" column_invisible="True" />
|
|
33
41
|
<field name="loan_state" column_invisible="True" />
|
|
@@ -26,12 +26,22 @@
|
|
|
26
26
|
<field name="state" />
|
|
27
27
|
<field name="rate" optional="hide" />
|
|
28
28
|
<field name="loan_amount" optional="hide" />
|
|
29
|
-
<field name="pending_principal_amount" optional="hide" />
|
|
29
|
+
<field name="pending_principal_amount" optional="hide" sum="Total" />
|
|
30
30
|
<field name="periods" optional="hide" />
|
|
31
31
|
<field name="start_date" optional="hide" />
|
|
32
32
|
</tree>
|
|
33
33
|
</field>
|
|
34
34
|
</record>
|
|
35
|
+
<record id="account_loan_pivot" model="ir.ui.view">
|
|
36
|
+
<field name="name">account.loan.pivot</field>
|
|
37
|
+
<field name="model">account.loan</field>
|
|
38
|
+
<field name="arch" type="xml">
|
|
39
|
+
<pivot string="Loans pivot">
|
|
40
|
+
<field name="name" type="row" />
|
|
41
|
+
<field name="loan_amount" type="measure" />
|
|
42
|
+
</pivot>
|
|
43
|
+
</field>
|
|
44
|
+
</record>
|
|
35
45
|
<record id="account_loan_form" model="ir.ui.view">
|
|
36
46
|
<field name="name">account.loan.form</field>
|
|
37
47
|
<field name="model">account.loan</field>
|
|
@@ -42,10 +52,18 @@
|
|
|
42
52
|
<button
|
|
43
53
|
name="%(account_loan_post_action)d"
|
|
44
54
|
invisible="state != 'draft'"
|
|
55
|
+
class="oe_highlight"
|
|
45
56
|
type="action"
|
|
46
57
|
string="Post"
|
|
47
58
|
groups="account.group_account_manager"
|
|
48
59
|
/>
|
|
60
|
+
<button
|
|
61
|
+
name="button_draft"
|
|
62
|
+
invisible="state not in ('posted', 'cancelled') or move_count != 0"
|
|
63
|
+
type="object"
|
|
64
|
+
string="Reset to draft"
|
|
65
|
+
groups="account.group_account_manager"
|
|
66
|
+
/>
|
|
49
67
|
<field name="state" widget="statusbar" />
|
|
50
68
|
</header>
|
|
51
69
|
<sheet>
|
|
@@ -56,8 +74,9 @@
|
|
|
56
74
|
icon="fa-bars"
|
|
57
75
|
invisible="state == 'draft'"
|
|
58
76
|
type="object"
|
|
59
|
-
|
|
60
|
-
|
|
77
|
+
>
|
|
78
|
+
<field string="Moves" name="move_count" widget="statinfo" />
|
|
79
|
+
</button>
|
|
61
80
|
<button
|
|
62
81
|
name="view_account_invoices"
|
|
63
82
|
class="oe_stat_button"
|
|
@@ -142,7 +161,7 @@
|
|
|
142
161
|
<field
|
|
143
162
|
name="line_ids"
|
|
144
163
|
context="{'tree_view_ref': 'account_loan.account_loan_line_tree'}"
|
|
145
|
-
readonly="state
|
|
164
|
+
readonly="state in ['canlcelled', 'closed']"
|
|
146
165
|
/>
|
|
147
166
|
</page>
|
|
148
167
|
<page string="Accounts" id="accounting">
|
|
@@ -208,6 +227,7 @@
|
|
|
208
227
|
<record id="account_loan_action" model="ir.actions.act_window">
|
|
209
228
|
<field name="name">Loans</field>
|
|
210
229
|
<field name="res_model">account.loan</field>
|
|
230
|
+
<field name="view_mode">tree,form,pivot</field>
|
|
211
231
|
</record>
|
|
212
232
|
|
|
213
233
|
<menuitem
|
|
@@ -43,38 +43,38 @@ class AccountLoanPost(models.TransientModel):
|
|
|
43
43
|
res = list()
|
|
44
44
|
partner = self.loan_id.partner_id.with_company(self.loan_id.company_id)
|
|
45
45
|
line = self.loan_id.line_ids.filtered(lambda r: r.sequence == 1)
|
|
46
|
+
# Amounts are evaled if > 0 for allowing negative loans to be able to be the
|
|
47
|
+
# donors of the loan
|
|
48
|
+
amount = line.pending_principal_amount
|
|
46
49
|
res.append(
|
|
47
50
|
{
|
|
48
51
|
"account_id": self.account_id.id,
|
|
49
52
|
"name": self.loan_id.name,
|
|
50
53
|
"partner_id": partner.id,
|
|
51
|
-
"credit": 0,
|
|
52
|
-
"debit":
|
|
54
|
+
"credit": -amount if amount < 0 else 0,
|
|
55
|
+
"debit": amount if amount > 0 else 0,
|
|
53
56
|
}
|
|
54
57
|
)
|
|
55
|
-
|
|
58
|
+
diff_amount = abs(line.pending_principal_amount) - abs(
|
|
59
|
+
line.long_term_pending_principal_amount
|
|
60
|
+
)
|
|
61
|
+
if diff_amount > 0:
|
|
56
62
|
res.append(
|
|
57
63
|
{
|
|
58
64
|
"account_id": self.loan_id.short_term_loan_account_id.id,
|
|
59
|
-
"credit":
|
|
60
|
-
|
|
61
|
-
- line.long_term_pending_principal_amount
|
|
62
|
-
),
|
|
63
|
-
"debit": 0,
|
|
65
|
+
"credit": diff_amount if amount > 0 else 0,
|
|
66
|
+
"debit": diff_amount if amount < 0 else 0,
|
|
64
67
|
}
|
|
65
68
|
)
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
and self.loan_id.long_term_loan_account_id
|
|
69
|
-
):
|
|
69
|
+
diff_amount = abs(line.long_term_pending_principal_amount)
|
|
70
|
+
if diff_amount > 0 and self.loan_id.long_term_loan_account_id:
|
|
70
71
|
res.append(
|
|
71
72
|
{
|
|
72
73
|
"account_id": self.loan_id.long_term_loan_account_id.id,
|
|
73
|
-
"credit":
|
|
74
|
-
"debit": 0,
|
|
74
|
+
"credit": diff_amount if amount > 0 else 0,
|
|
75
|
+
"debit": diff_amount if amount < 0 else 0,
|
|
75
76
|
}
|
|
76
77
|
)
|
|
77
|
-
|
|
78
78
|
return res
|
|
79
79
|
|
|
80
80
|
def move_vals(self):
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: odoo-addon-account_loan
|
|
3
|
-
Version: 17.0.
|
|
3
|
+
Version: 17.0.2.2.0
|
|
4
4
|
Requires-Python: >=3.10
|
|
5
5
|
Requires-Dist: numpy-financial<=1.0.0
|
|
6
6
|
Requires-Dist: numpy>=1.15
|
|
@@ -14,6 +14,11 @@ Classifier: Programming Language :: Python
|
|
|
14
14
|
Classifier: Framework :: Odoo
|
|
15
15
|
Classifier: Framework :: Odoo :: 17.0
|
|
16
16
|
Classifier: License :: OSI Approved :: GNU Affero General Public License v3
|
|
17
|
+
Description-Content-Type: text/x-rst
|
|
18
|
+
|
|
19
|
+
.. image:: https://odoo-community.org/readme-banner-image
|
|
20
|
+
:target: https://odoo-community.org/get-involved?utm_source=readme
|
|
21
|
+
:alt: Odoo Community Association
|
|
17
22
|
|
|
18
23
|
=======================
|
|
19
24
|
Account Loan management
|
|
@@ -24,13 +29,13 @@ Account Loan management
|
|
|
24
29
|
!! This file is generated by oca-gen-addon-readme !!
|
|
25
30
|
!! changes will be overwritten. !!
|
|
26
31
|
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
|
27
|
-
!! source digest: sha256:
|
|
32
|
+
!! source digest: sha256:cf116fbc449f4763c68b322ad6d401b4199e1f9652dca73ec333c69c896a2d38
|
|
28
33
|
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
|
29
34
|
|
|
30
35
|
.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png
|
|
31
36
|
:target: https://odoo-community.org/page/development-status
|
|
32
37
|
:alt: Beta
|
|
33
|
-
.. |badge2| image:: https://img.shields.io/badge/
|
|
38
|
+
.. |badge2| image:: https://img.shields.io/badge/license-AGPL--3-blue.png
|
|
34
39
|
:target: http://www.gnu.org/licenses/agpl-3.0-standalone.html
|
|
35
40
|
:alt: License: AGPL-3
|
|
36
41
|
.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Faccount--financial--tools-lightgray.png?logo=github
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
odoo/addons/account_loan/README.rst,sha256=WggSobHvtn4-iq2AFStLvlbGjud4IT-WwVIZ3hX1Om4,5029
|
|
2
|
+
odoo/addons/account_loan/__init__.py,sha256=o9EnCAU5AKoGmP2X6ytOhQFxVqIh5Y1itLUOmzxSUJY,113
|
|
3
|
+
odoo/addons/account_loan/__manifest__.py,sha256=6HuTrbyqWsh4n1wwCulILrjTUyfP9c6TeDO7clDFePc,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=waUySljdY7G6nVl_FmadYbbSB2WhL9tfr_A4AFd_o-w,36463
|
|
6
|
+
odoo/addons/account_loan/i18n/am.po,sha256=Rn10i6Wvs5TCUVx0rMoFYm3g-dhbySHsuqJLYht5wlE,36638
|
|
7
|
+
odoo/addons/account_loan/i18n/ar.po,sha256=mjW7AERtAZLpH4W-KAIbANShtT4mN-K74Em2BI2K4dE,36914
|
|
8
|
+
odoo/addons/account_loan/i18n/bg.po,sha256=MtpP4qrra6MAkXurqK_qUzwfjquJHAg5bP8xxRYBQRE,36845
|
|
9
|
+
odoo/addons/account_loan/i18n/bs.po,sha256=uWxgZk7a2dGuBus-CN474RPBMabJ4u0o6_83nt21AtA,36814
|
|
10
|
+
odoo/addons/account_loan/i18n/ca.po,sha256=p2tkYqHKkA2uDhsa4l1waTScansHR-tbAzzEApsUMvY,41309
|
|
11
|
+
odoo/addons/account_loan/i18n/ca_ES.po,sha256=eOA9fkHTMLVyVtg9fawFlPbWvXux2vu9duJzj6yqipA,36566
|
|
12
|
+
odoo/addons/account_loan/i18n/cs.po,sha256=-AWou2Dh7O7KJjMbiCJol8HCPzg7NSmgQYV9Zb0a0sk,36775
|
|
13
|
+
odoo/addons/account_loan/i18n/da.po,sha256=sHcfKKy2LICjPDiUfnSgmNEdXfvnpzLKKeoFT1M7uaA,36700
|
|
14
|
+
odoo/addons/account_loan/i18n/de.po,sha256=ZY1_nV2Is67EJ6xyrpHGhKui0BE8TYRZZ8NLRgyFky0,40283
|
|
15
|
+
odoo/addons/account_loan/i18n/el_GR.po,sha256=aHOfrJAU26zcafm-mO_leRJbpo8X867Pt8nppuLe0mE,36816
|
|
16
|
+
odoo/addons/account_loan/i18n/en_AU.po,sha256=rkNYLNQkG2C1NYAaQ5YiL5VL-gI0mMo_8mHIWczsC1c,36587
|
|
17
|
+
odoo/addons/account_loan/i18n/en_GB.po,sha256=seb1aT6H_p1kcqoyXWYRHwrKbUYVNJMfXh5iUjfXwRY,36753
|
|
18
|
+
odoo/addons/account_loan/i18n/es.po,sha256=OgTxVhC5S8VZHR6ycCQodfH6SdCh3HPy_AogrPgVe8U,41885
|
|
19
|
+
odoo/addons/account_loan/i18n/es_AR.po,sha256=8KD7ZcyO1yxqXAXqU3mrCZFH2qpiYghQB4MdLGZxfBk,41655
|
|
20
|
+
odoo/addons/account_loan/i18n/es_CL.po,sha256=Lm6OpHx70NOfmH8GoV8B4l2sW1kqGEKkknZLppaQ9kM,36754
|
|
21
|
+
odoo/addons/account_loan/i18n/es_CO.po,sha256=nQKCas4RVqPdnIhIB4wcWdBJENoYe6w9nhTXzm5hC9I,36808
|
|
22
|
+
odoo/addons/account_loan/i18n/es_CR.po,sha256=olOQAV5VlbinvGRwmfh3fUxrsl4J_ymedUAoLZ4bTjs,36705
|
|
23
|
+
odoo/addons/account_loan/i18n/es_DO.po,sha256=BDreHDBrFMKJrJEbRn95L-ArFgB1XRyX4r6X39U58Ng,36749
|
|
24
|
+
odoo/addons/account_loan/i18n/es_EC.po,sha256=iK7hBOaGO3rS9pY14pYj7m4PGqYhn5el74ueySeXY50,36808
|
|
25
|
+
odoo/addons/account_loan/i18n/es_ES.po,sha256=3CCJqA3tCCwv-H0PAP5c47mD2U2vZM5EnJwzB0gZgpw,36751
|
|
26
|
+
odoo/addons/account_loan/i18n/es_MX.po,sha256=U8gaFHhheEGg_CmM03RlWW9tmNSV6CUWyDWB2EN3xuU,36796
|
|
27
|
+
odoo/addons/account_loan/i18n/es_PE.po,sha256=E7CR7t0n44eGOSODLXaL-q2AMiWdA4gTZZIGsj8zzc4,36725
|
|
28
|
+
odoo/addons/account_loan/i18n/es_PY.po,sha256=btWcvYRAfki-FjOF9nMFFNP_M9Y0rO1QIJWHYPxB5y4,36628
|
|
29
|
+
odoo/addons/account_loan/i18n/es_VE.po,sha256=Y4tWS5KnQNYW_LtojvIEeesSroHFsGlDwXSyHdjoSzo,36735
|
|
30
|
+
odoo/addons/account_loan/i18n/et.po,sha256=UVojN0niVII3WdkFVLhVNKFmNTFgQlM_4Eofo5eR1dU,36728
|
|
31
|
+
odoo/addons/account_loan/i18n/eu.po,sha256=YG00wLGxRyIe1m1EqUv8uRUnbGXV5E7z3LOyHlB4U2o,36634
|
|
32
|
+
odoo/addons/account_loan/i18n/fa.po,sha256=Xk9F1RwbBo_0RUJUkC6GlO5iAe2eHjKdZSExWVWBBZE,36805
|
|
33
|
+
odoo/addons/account_loan/i18n/fi.po,sha256=PJlu2hLUDLpaBf5B8zEEv-5wC0j7gUBwm3eFfXckw3Q,36714
|
|
34
|
+
odoo/addons/account_loan/i18n/fr.po,sha256=zFGCYOgz63bkdTuCdSxK83Bp9OjU0I9C6HWYG42yju4,37773
|
|
35
|
+
odoo/addons/account_loan/i18n/fr_CA.po,sha256=bUNflq_AAKNx0g1zcsGBCu0bRXY1sxFTrp-ZkfDxeeo,36695
|
|
36
|
+
odoo/addons/account_loan/i18n/fr_CH.po,sha256=FM8TZJJ9HpTtuOJkMlyhvSoXg6GBOrQr5J3y55cLCEM,36727
|
|
37
|
+
odoo/addons/account_loan/i18n/fr_FR.po,sha256=YcRGnU88z-L_03nF9o5TCD8PBz5Y0l5tXPXQQ4l8oDo,36659
|
|
38
|
+
odoo/addons/account_loan/i18n/gl.po,sha256=0eqT9tGCHS4qgXuogQkp-NITVO_Vrm2h23FLdUOrpKs,36720
|
|
39
|
+
odoo/addons/account_loan/i18n/gl_ES.po,sha256=2bBPX8SwRcmnD-8kDksUjkxWKLt46d9b6BhgzeWn74E,36550
|
|
40
|
+
odoo/addons/account_loan/i18n/gu.po,sha256=Jc-qrXSTMjRHrc3MrcUX9Gr1up18-tSlBrtn_pg9BKw,36571
|
|
41
|
+
odoo/addons/account_loan/i18n/he.po,sha256=I7wa0KzhuLhaZVVOhnnGK1B4nFJgiYl7t_844Jnj6qw,36765
|
|
42
|
+
odoo/addons/account_loan/i18n/hi.po,sha256=yeP2DAEJnb5nkPH72I-X58yr_1EeJGvuZlJ0p6DGlZk,36540
|
|
43
|
+
odoo/addons/account_loan/i18n/hr.po,sha256=Sn2al5izPo8xngj5Ah6uSS1lWB8tg6SucSsPPDb1LEU,36825
|
|
44
|
+
odoo/addons/account_loan/i18n/hr_HR.po,sha256=h0t8DXBtNJc027gQIUPxEuOJsXW_QA08lE14Cc2ajbU,36772
|
|
45
|
+
odoo/addons/account_loan/i18n/hu.po,sha256=ouGXM-wl_aueBZQh1As-c_zc9vybXJOIpZ5qqmMFy5o,36786
|
|
46
|
+
odoo/addons/account_loan/i18n/id.po,sha256=-Vvt2UxP_eJ4lAOfRvrZb7TkE3ZBTW0DydLWTjTERls,36740
|
|
47
|
+
odoo/addons/account_loan/i18n/it.po,sha256=zPqSo8TqW40BQWCBMPzBOwlJ2RFHwSlHWfhwdD0x2Q0,41863
|
|
48
|
+
odoo/addons/account_loan/i18n/ja.po,sha256=l5pSrAE4lJAF_PD4s5nkMAbzx5eVJT14aotpOY4zR-g,36743
|
|
49
|
+
odoo/addons/account_loan/i18n/ko.po,sha256=VptZZzVPcB8B6bKs2uwO7WishuV2ahl0SyP4cgjv6g8,36693
|
|
50
|
+
odoo/addons/account_loan/i18n/lo.po,sha256=keJ3NyF5CMH5m55oMRMJULQb00D8TuRXtcWs1jW9NeU,36580
|
|
51
|
+
odoo/addons/account_loan/i18n/lt.po,sha256=BekhKufF2syMk2zYMmMwqHf0c5m9olzNTamUWq_a7_Y,36867
|
|
52
|
+
odoo/addons/account_loan/i18n/lt_LT.po,sha256=kovHNXkMb9E9mUYFQwlhHjIe6MMVCI__j0MyWSLyVz4,36733
|
|
53
|
+
odoo/addons/account_loan/i18n/lv.po,sha256=WTHYu_8mntTwaDMhaqzynV_gIhYGdmNsTXRqR5uSD4I,36669
|
|
54
|
+
odoo/addons/account_loan/i18n/mk.po,sha256=1HjoMlmLpajaDkH9k26N_z2L75rNSAGSPJJoYEUhTHE,36903
|
|
55
|
+
odoo/addons/account_loan/i18n/mn.po,sha256=5F0JP3RsecNpri8BMqHdTn3Vr1y4B2DZo-ka92vI6dU,36894
|
|
56
|
+
odoo/addons/account_loan/i18n/nb.po,sha256=iOP2ctrdGYAdS_8ZFwKWvviQqXIx8NRXmBn_Q6TKshY,36747
|
|
57
|
+
odoo/addons/account_loan/i18n/nb_NO.po,sha256=pdleGCsnt6bK8lpeYvj_-qwzQr1Z--h045Kz8xWApdk,36700
|
|
58
|
+
odoo/addons/account_loan/i18n/nl.po,sha256=XCD_Ph_nvmo4K9-PxhJhq88NrtTWIgWzE3G7xn8ZrC8,36755
|
|
59
|
+
odoo/addons/account_loan/i18n/nl_BE.po,sha256=TIzEDMtqXSMKty9Xza-9JaeiHNVFU5YGNKCfTTrrg_8,36765
|
|
60
|
+
odoo/addons/account_loan/i18n/nl_NL.po,sha256=OW1sQCqbN_walCuyVE__B52yREfZ2ecdzeTXdV1yyPI,36567
|
|
61
|
+
odoo/addons/account_loan/i18n/pl.po,sha256=3BEUzLOCf3nu70qt44-Yw7mcVANev5it3885Yjib1-o,36899
|
|
62
|
+
odoo/addons/account_loan/i18n/pt.po,sha256=4vbS8bj7rRuB4G7BXQhKnjU8jRHr73hv4-PsWRhNOfs,38679
|
|
63
|
+
odoo/addons/account_loan/i18n/pt_BR.po,sha256=q-SXNdefacXA-1sOv5PCFxkSu0LBuekb7isAwOSg3yE,39975
|
|
64
|
+
odoo/addons/account_loan/i18n/pt_PT.po,sha256=n7FTVn1i-GPXHN2X0NfsSXkmu1393dVMxoLy1lAPxBc,36799
|
|
65
|
+
odoo/addons/account_loan/i18n/ro.po,sha256=9MBkglZ1l806qkmv_epoPO2X_PoOZ5Q2KXdfOnrKPOs,36801
|
|
66
|
+
odoo/addons/account_loan/i18n/ru.po,sha256=Q9NfMh9a_XGR25bFNcaBJkpXGb2TFbfqEy_ntdMHf3E,36869
|
|
67
|
+
odoo/addons/account_loan/i18n/sk.po,sha256=AkNQX_u2YT9whqmF98lwEVloXC7AES-aUzNCizC5UXc,36743
|
|
68
|
+
odoo/addons/account_loan/i18n/sk_SK.po,sha256=n3QEa1fJugti_VVHVZFcwoqmHS_83ZimC8lcDtVBr6k,36593
|
|
69
|
+
odoo/addons/account_loan/i18n/sl.po,sha256=pO-gbak_T_WKP9Hr_s5cJJfyy-2F3bsKYtBIlhcRv4w,36870
|
|
70
|
+
odoo/addons/account_loan/i18n/sr.po,sha256=pSgSYe5PnLMhRmjtKM2QjdjbNPsLdUlHxpbMbbub_74,36623
|
|
71
|
+
odoo/addons/account_loan/i18n/sr@latin.po,sha256=iP75OCTGVW71vAcKyR4T0CgK-1ucexlLt36ZM7BHSUA,36795
|
|
72
|
+
odoo/addons/account_loan/i18n/sv.po,sha256=ZheKmmmF8iSP766FtIHfz1SWq9_ZZNqs7KMAJo6UesU,41321
|
|
73
|
+
odoo/addons/account_loan/i18n/th.po,sha256=B2fPq5gsBpgDVuSLV3By__92oTClG2fTUr0ethFVaLc,37019
|
|
74
|
+
odoo/addons/account_loan/i18n/tr.po,sha256=kGkQYzb_0wAYJ2W3WD71YaRYuYsfZPn6Kshvg7Q9mRU,36737
|
|
75
|
+
odoo/addons/account_loan/i18n/tr_TR.po,sha256=eVKa7xPtF4cePZTluPxZaiv_w8Ii72ARJfaZFJKHpp0,36797
|
|
76
|
+
odoo/addons/account_loan/i18n/uk.po,sha256=qbpF_Gw1xFmxr3raUjZoPL-fwCWgNsJ3AOhlUglD9tI,36887
|
|
77
|
+
odoo/addons/account_loan/i18n/vi.po,sha256=F89h3zfm2EX3RxnxwODy6HdVfySHj3WAdfZ9DPRhMOQ,36764
|
|
78
|
+
odoo/addons/account_loan/i18n/vi_VN.po,sha256=X4eYzJoMpUVg0IOShykN79hpk3Y0HOHgFhTRUXJHbGY,36669
|
|
79
|
+
odoo/addons/account_loan/i18n/zh_CN.po,sha256=AYn0QYAKWX4w_15sZ_6s3BuyV4uGbr7bxzdNLReQ4cU,36745
|
|
80
|
+
odoo/addons/account_loan/i18n/zh_TW.po,sha256=I9c3jFQPXx9FRTrl7i0Xf-82BLwVzcV6ute-qTbbT40,36738
|
|
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=Dxz5apL4uD9YdZkGJkFuNMtNW2vL0G-cIPPNMFP1FhI,16936
|
|
85
|
+
odoo/addons/account_loan/models/account_loan_line.py,sha256=eL638G70AudYQwdNVUMVcPr6vR7IjcDGOzDA_Hu17jU,18808
|
|
86
|
+
odoo/addons/account_loan/models/account_move.py,sha256=cL0Z4bvK77L7eEulSNBmI4zhw5CSpIbHSJcgoCHGwfs,869
|
|
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=jLRh8ppsxFBZ_NEiF2i9PQ6pHHyovJVa6PpocdmUEio,15606
|
|
96
|
+
odoo/addons/account_loan/tests/__init__.py,sha256=I1GwELsBL3FTRS0pVrE5q-qEk537mMnSOXpWkPVcBnY,94
|
|
97
|
+
odoo/addons/account_loan/tests/test_loan.py,sha256=2uUFsBx8yF9LVIWL-dFHrXAUXsnKRpxYF_7bjlIfAPw,31289
|
|
98
|
+
odoo/addons/account_loan/views/account_loan_lines_view.xml,sha256=wBhtozQ_gfyRFklFNsvuvWk9-vgFereQtSghBA931ik,6571
|
|
99
|
+
odoo/addons/account_loan/views/account_loan_view.xml,sha256=AufFsGbQu0fXkM0AznbGW5fYiqs5A4xUcicWa8Hlqq4,11481
|
|
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=giy-_9ln5eSKjhF8u9o0muGGuGiUeeIQfZA0tIIEAkU,3865
|
|
110
|
+
odoo/addons/account_loan/wizards/account_loan_post_view.xml,sha256=s-teTEY9HCEA2CHD3_tQZJIGOHJMZNAlR1pSN5Dpdn8,1440
|
|
111
|
+
odoo_addon_account_loan-17.0.2.2.0.dist-info/METADATA,sha256=FJwvP6KI-9ydOFAcOJi_RTBj8adLul7FLLKU3dW4U_0,5652
|
|
112
|
+
odoo_addon_account_loan-17.0.2.2.0.dist-info/WHEEL,sha256=ZhOvUsYhy81Dx67gN3TV0RchQWBIIzutDZaJODDg2Vo,81
|
|
113
|
+
odoo_addon_account_loan-17.0.2.2.0.dist-info/top_level.txt,sha256=QE6RBQ0QX5f4eFuUcGgU5Kbq1A_qJcDs-e_vpr6pmfU,4
|
|
114
|
+
odoo_addon_account_loan-17.0.2.2.0.dist-info/RECORD,,
|