From ff7cc7b5d9605e0eeff040d756fe9f81f6ee0940 Mon Sep 17 00:00:00 2001
From: AjmalCybro
Date: Fri, 19 Sep 2025 16:58:15 +0530
Subject: [PATCH] Sep 1 : [ADD] Initial Commit 'base_accounting_kit'
---
base_accounting_kit/README.rst | 2 +-
base_accounting_kit/__manifest__.py | 4 +-
.../models/account_asset_asset.py | 107 +-
.../models/account_asset_category.py | 17 +-
.../models/account_asset_depreciation_line.py | 42 +-
.../models/res_config_settings.py | 6 +
.../report/account_asset_report_views.xml | 5 +-
.../security/ir.model.access.csv | 56 +-
base_accounting_kit/security/security.xml | 4 +-
.../assets/icons/accounting_kit10.png | Bin 1041926 -> 0 bytes
.../assets/icons/accounting_kit11.png | Bin 897124 -> 0 bytes
.../assets/icons/accounting_kit2.png | Bin 5081 -> 0 bytes
.../assets/icons/accounting_kit3.png | Bin 190898 -> 0 bytes
.../assets/icons/accounting_kit4.jpg | Bin 20018 -> 0 bytes
.../assets/icons/accounting_kit5.png | Bin 20948 -> 0 bytes
.../assets/icons/accounting_kit6.png | Bin 7060 -> 0 bytes
.../assets/icons/accounting_kit7.png | Bin 10653 -> 0 bytes
.../assets/icons/accounting_kit8.png | Bin 21587 -> 0 bytes
.../assets/icons/accounting_kit9.png | Bin 18192 -> 0 bytes
.../description/assets/icons/ajmaljk.png | Bin 51950 -> 0 bytes
.../description/assets/icons/banner-1.png | Bin 215329 -> 0 bytes
.../description/assets/icons/banner-bg.png | Bin 111419 -> 0 bytes
.../description/assets/icons/blog-icon.png | Bin 841 -> 0 bytes
.../description/assets/icons/calendar.png | Bin 0 -> 1862 bytes
.../static/description/assets/icons/chart.png | Bin 0 -> 4659 bytes
.../static/description/assets/icons/chat.png | Bin 0 -> 2885 bytes
.../static/description/assets/icons/check.png | Bin 3676 -> 0 bytes
.../description/assets/icons/chevron.png | Bin 310 -> 0 bytes
.../static/description/assets/icons/close.png | Bin 0 -> 3273 bytes
.../static/description/assets/icons/cogs.png | Bin 1377 -> 0 bytes
.../description/assets/icons/consultation.png | Bin 1458 -> 0 bytes
.../static/description/assets/icons/copy.png | Bin 0 -> 2130 bytes
.../description/assets/icons/cybro-logo.png | Bin 17281 -> 0 bytes
.../description/assets/icons/document.png | Bin 0 -> 2021 bytes
.../description/assets/icons/ecom-black.png | Bin 576 -> 0 bytes
.../assets/icons/education-black.png | Bin 733 -> 0 bytes
.../static/description/assets/icons/faq.png | Bin 4400 -> 0 bytes
.../description/assets/icons/feature.png | Bin 4091 -> 0 bytes
.../static/description/assets/icons/hero.gif | Bin 756228 -> 0 bytes
.../description/assets/icons/hotel-black.png | Bin 911 -> 0 bytes
.../static/description/assets/icons/idea.png | Bin 0 -> 2837 bytes
.../static/description/assets/icons/imple.png | Bin 0 -> 3994 bytes
.../description/assets/icons/license.png | Bin 1095 -> 0 bytes
.../description/assets/icons/lifebuoy.png | Bin 1199 -> 0 bytes
.../static/description/assets/icons/mail.png | Bin 0 -> 2025 bytes
.../assets/icons/manufacturing-black.png | Bin 673 -> 0 bytes
.../static/description/assets/icons/notes.png | Bin 2087 -> 0 bytes
.../description/assets/icons/odoo-logo.png | Bin 9192 -> 0 bytes
.../description/assets/icons/pattern1.png | Bin 7183 -> 0 bytes
.../description/assets/icons/people.png | Bin 0 -> 3860 bytes
.../static/description/assets/icons/play.png | Bin 0 -> 2273 bytes
.../description/assets/icons/pos-black.png | Bin 878 -> 0 bytes
.../description/assets/icons/puzzle.png | Bin 653 -> 0 bytes
.../assets/icons/restaurant-black.png | Bin 905 -> 0 bytes
.../assets/icons/screenshot-main.png | Bin 193286 -> 0 bytes
.../description/assets/icons/screenshot.png | Bin 4413 -> 0 bytes
.../static/description/assets/icons/scrn1.png | Bin 0 -> 133041 bytes
.../assets/icons/service-black.png | Bin 839 -> 0 bytes
.../description/assets/icons/setting.png | Bin 0 -> 2811 bytes
.../static/description/assets/icons/skype.png | Bin 6065 -> 0 bytes
.../description/assets/icons/support.png | Bin 3892 -> 3932 bytes
.../static/description/assets/icons/temp.jpg | Bin 0 -> 236835 bytes
.../assets/icons/test-1 - Copy.png | Bin 23639 -> 0 bytes
.../description/assets/icons/test-1.png | Bin 1996 -> 0 bytes
.../description/assets/icons/test-2.png | Bin 2390 -> 0 bytes
.../static/description/assets/icons/tick.png | Bin 0 -> 2314 bytes
.../static/description/assets/icons/tms.png | Bin 0 -> 2997 bytes
.../assets/icons/trading-black.png | Bin 427 -> 0 bytes
.../description/assets/icons/training.png | Bin 627 -> 0 bytes
.../description/assets/icons/transfer.png | Bin 0 -> 2891 bytes
.../description/assets/icons/update.png | Bin 1225 -> 0 bytes
.../static/description/assets/icons/user.png | Bin 988 -> 0 bytes
.../static/description/assets/icons/video.png | Bin 3837 -> 0 bytes
.../description/assets/icons/whatsapp.png | Bin 0 -> 4028 bytes
.../description/assets/icons/wrench.png | Bin 1205 -> 0 bytes
.../description/assets/icons/youtube-icon.png | Bin 619 -> 0 bytes
.../static/description/assets/modules/1.gif | Bin 775231 -> 0 bytes
.../assets/modules/{4.png => 1.png} | Bin
.../static/description/assets/modules/2.jpg | Bin 141363 -> 727503 bytes
.../static/description/assets/modules/3.jpg | Bin 777844 -> 0 bytes
.../static/description/assets/modules/3.png | Bin 0 -> 91379 bytes
.../static/description/assets/modules/5.jpg | Bin 713809 -> 0 bytes
.../static/description/assets/modules/6.gif | Bin 1155290 -> 0 bytes
.../description/assets/screenshots/2.png | Bin 100707 -> 133985 bytes
.../description/assets/screenshots/3.png | Bin 129945 -> 104336 bytes
.../description/assets/screenshots/4.png | Bin 96871 -> 81337 bytes
.../static/description/index.html | 2802 ++++++++---------
.../views/account_asset_asset_views.xml | 168 +-
.../views/account_asset_category_views.xml | 9 +-
.../account_bank_statement_line_views.xml | 164 +-
.../views/account_recurring_payments_view.xml | 2 +-
base_accounting_kit/views/followup_report.xml | 2 +-
.../views/product_template_views.xml | 2 +-
base_accounting_kit/views/product_views.xml | 2 +-
.../views/res_config_settings_views.xml | 18 +-
.../wizard/account_print_journal_views.xml | 2 +-
.../account_report_general_ledger_views.xml | 2 +-
.../wizard/kit_account_tax_report_views.xml | 2 +-
98 files changed, 1724 insertions(+), 1694 deletions(-)
create mode 100644 base_accounting_kit/static/description/assets/icons/calendar.png
create mode 100644 base_accounting_kit/static/description/assets/icons/chart.png
create mode 100644 base_accounting_kit/static/description/assets/icons/chat.png
create mode 100644 base_accounting_kit/static/description/assets/icons/close.png
create mode 100644 base_accounting_kit/static/description/assets/icons/copy.png
create mode 100644 base_accounting_kit/static/description/assets/icons/document.png
create mode 100644 base_accounting_kit/static/description/assets/icons/idea.png
create mode 100644 base_accounting_kit/static/description/assets/icons/imple.png
create mode 100644 base_accounting_kit/static/description/assets/icons/mail.png
create mode 100644 base_accounting_kit/static/description/assets/icons/people.png
create mode 100644 base_accounting_kit/static/description/assets/icons/play.png
create mode 100644 base_accounting_kit/static/description/assets/icons/scrn1.png
create mode 100644 base_accounting_kit/static/description/assets/icons/setting.png
create mode 100644 base_accounting_kit/static/description/assets/icons/temp.jpg
create mode 100644 base_accounting_kit/static/description/assets/icons/tick.png
create mode 100644 base_accounting_kit/static/description/assets/icons/tms.png
create mode 100644 base_accounting_kit/static/description/assets/icons/transfer.png
create mode 100644 base_accounting_kit/static/description/assets/icons/whatsapp.png
delete mode 100644 base_accounting_kit/static/description/assets/modules/1.gif
rename base_accounting_kit/static/description/assets/modules/{4.png => 1.png} (100%)
delete mode 100644 base_accounting_kit/static/description/assets/modules/3.jpg
create mode 100644 base_accounting_kit/static/description/assets/modules/3.png
delete mode 100644 base_accounting_kit/static/description/assets/modules/5.jpg
delete mode 100644 base_accounting_kit/static/description/assets/modules/6.gif
diff --git a/base_accounting_kit/README.rst b/base_accounting_kit/README.rst
index 14fbb575e..5852e32f2 100644
--- a/base_accounting_kit/README.rst
+++ b/base_accounting_kit/README.rst
@@ -4,7 +4,7 @@
Odoo 19 Full Accounting Kit for Community
=========================================
-Full accounting kit for Odoo 18 community editions
+Full accounting kit for Odoo 19 community editions
Configuration
=============
diff --git a/base_accounting_kit/__manifest__.py b/base_accounting_kit/__manifest__.py
index df59ddbf9..485d176b7 100644
--- a/base_accounting_kit/__manifest__.py
+++ b/base_accounting_kit/__manifest__.py
@@ -97,8 +97,8 @@
'wizard/import_bank_statement_views.xml',
],
'external_dependencies': {
- 'python': ['openpyxl', 'ofxparse', 'qifparse']
- },
+ 'python': ['openpyxl', 'ofxparse', 'qifparse']
+ },
'assets': {
'web.assets_backend': [
'base_accounting_kit/static/src/scss/style.scss',
diff --git a/base_accounting_kit/models/account_asset_asset.py b/base_accounting_kit/models/account_asset_asset.py
index 1c75292fb..0562ec341 100644
--- a/base_accounting_kit/models/account_asset_asset.py
+++ b/base_accounting_kit/models/account_asset_asset.py
@@ -49,13 +49,13 @@ class AccountAssetAsset(models.Model):
required=True,
default=lambda self: self.env.company)
note = fields.Text()
- category_id = fields.Many2one('account.asset.category', string='Category',
- required=True, change_default=True
+ category_id = fields.Many2one('account.asset.category', string='Asset Model',
+ required=False, change_default=True
)
date = fields.Date(string='Date', required=True,
default=fields.Date.context_today)
state = fields.Selection(
- [('draft', 'Draft'), ('open', 'Running'), ('close', 'Close')],
+ [('draft', 'Draft'), ('open', 'Running'), ('close', 'Close'),('cancelled','Cancelled')],
'Status', required=True, copy=False, default='draft',
help="When an asset is created, the status is 'Draft'.\n"
"If the asset is confirmed, the status goes in 'Running' and the depreciation lines can be posted in the accounting.\n"
@@ -63,7 +63,7 @@ class AccountAssetAsset(models.Model):
active = fields.Boolean(default=True)
partner_id = fields.Many2one('res.partner', string='Partner')
method = fields.Selection(
- [('linear', 'Linear'), ('degressive', 'Degressive')],
+ [('linear', 'Straight Line'), ('degressive', 'Declining')],
string='Computation Method', required=True,default='linear',
help="Choose the method to use to compute the amount of depreciation lines.\n * Linear: Calculated on basis of: Gross Value / Number of Depreciations\n"
" * Degressive: Calculated on basis of: Residual Value * Degressive Factor")
@@ -95,8 +95,34 @@ class AccountAssetAsset(models.Model):
help="It is the amount you plan to have that you cannot depreciate.")
invoice_id = fields.Many2one('account.move', string='Invoice',
copy=False)
- type = fields.Selection(related="category_id.type", string='Type',
- required=True)
+ type = fields.Selection([('sale', 'Sale: Revenue Recognition'),
+ ('purchase', 'Purchase: Asset')], required=True, index=True, default='purchase')
+
+
+ #asset category
+ account_analytic_id = fields.Many2one('account.analytic.account',
+ string='Analytic Account',
+ domain="[('company_id', '=', company_id)]")
+ account_asset_id = fields.Many2one('account.account',
+ string='Asset Account', required=True,
+ domain="[('account_type', '!=', 'asset_receivable'),('account_type', '!=', 'liability_payable'),('account_type', '!=', 'asset_cash'),('account_type', '!=', 'liability_credit_card'),('active', '=', True)]",
+ help="Account used to record the purchase of the asset at its original price.")
+ account_depreciation_id = fields.Many2one(
+ 'account.account', string='Depreciation Account',
+ required=True,
+ domain="[('account_type', '!=', 'asset_receivable'),('account_type', '!=', 'liability_payable'),('account_type', '!=', 'asset_cash'),('account_type', '!=', 'liability_credit_card'),('active', '=', True)]",
+ help="Account used in the depreciation entries, to decrease the asset value.")
+ account_depreciation_expense_id = fields.Many2one(
+ 'account.account', string='Expense Account',
+ required=True,
+ domain="[('account_type', '!=', 'asset_receivable'),('account_type', '!=','liability_payable'),('account_type', '!=', 'asset_cash'),('account_type', '!=','liability_credit_card'),('active', '=', True)]",
+ help="Account used in the periodical entries, to record a part of the asset as expense.")
+ journal_id = fields.Many2one('account.journal', string='Journal',
+ required=True)
+ open_asset = fields.Boolean(string='Auto-confirm Assets',
+ help="Check this if you want to automatically confirm the assets of this category when created by invoices.")
+ group_entries = fields.Boolean(string='Group Journal Entries',
+ help="Check this if you want to group the generated entries by categories.")
def unlink(self):
""" Prevents deletion of assets in 'open' or 'close' state or with posted depreciation entries."""
@@ -130,6 +156,11 @@ class AccountAssetAsset(models.Model):
def gross_value(self):
"""Update the 'value' field based on the 'price' of the selected 'category_id'."""
self.value = self.category_id.price
+ @api.onchange('method')
+ def onchange_method(self):
+ if self.depreciation_line_ids:
+ self.depreciation_line_ids = [(fields.Command.clear())]
+
@api.model
def compute_generated_entries(self, date, asset_type=None):
@@ -342,6 +373,8 @@ class AccountAssetAsset(models.Model):
'invoice_id',
]
ref_tracked_fields = self.env['account.asset.asset'].fields_get(field)
+ if not self.depreciation_line_ids:
+ self.compute_depreciation_board()
for asset in self:
tracked_fields = ref_tracked_fields.copy()
if asset.method == 'linear':
@@ -501,6 +534,11 @@ class AccountAssetAsset(models.Model):
'method_progress_factor': category.method_progress_factor,
'method_end': category.method_end,
'prorata': category.prorata,
+ 'journal_id':category.journal_id.id,
+ 'account_asset_id':category.account_asset_id.id,
+ 'account_depreciation_id':category.account_depreciation_id.id,
+ 'account_depreciation_expense_id':category.account_depreciation_expense_id.id,
+ 'account_analytic_id':category.account_analytic_id.id
}
}
@@ -526,22 +564,6 @@ class AccountAssetAsset(models.Model):
return depreciation_ids.create_grouped_move()
return depreciation_ids.create_move()
- @api.model
- def create(self, vals):
- """Create a new asset record using the provided values and compute its depreciation schedule."""
- asset = super(AccountAssetAsset,
- self.with_context(mail_create_nolog=True)).create(vals)
- asset.sudo().compute_depreciation_board()
- return asset
-
- def write(self, vals):
- """Updates the records with the provided values and computes the depreciation board if necessary."""
- res = super(AccountAssetAsset, self).write(vals)
- if 'depreciation_line_ids' not in vals and 'state' not in vals:
- for rec in self:
- rec.compute_depreciation_board()
- return res
-
def open_entries(self):
"""Return a dictionary to open journal entries related to the asset."""
move_ids = []
@@ -558,3 +580,44 @@ class AccountAssetAsset(models.Model):
'type': 'ir.actions.act_window',
'domain': [('id', 'in', move_ids)],
}
+
+ def action_save_model(self):
+ return{
+ 'type': 'ir.actions.act_window',
+ 'name': _('Asset Model'),
+ 'res_model': 'account.asset.category',
+ 'view_mode': 'form',
+ 'target': 'current',
+ 'context': {'default_price': self.value,
+ 'default_method_time':self.method_time,
+ 'default_method_end':self.method_end,
+ 'default_method_number':self.method_number,
+ 'default_method_period':self.method_period,
+ 'default_method':self.method,
+ 'default_company_id':self.company_id.id,
+ 'default_method_progress_factor':self.method_progress_factor,
+ 'default_prorata':self.prorata,
+ 'default_group_entries':self.group_entries,
+ 'default_open_asset':self.open_asset,
+ 'default_account_analytic_id':self.account_analytic_id.id,
+ 'default_account_depreciation_expense_id':self.account_depreciation_expense_id.id,
+ 'default_account_depreciation_id':self.account_depreciation_id.id,
+ 'default_account_asset_id':self.account_asset_id.id,
+ 'default_journal_id':self.journal_id.id,
+ 'default_asset_id': self.id,
+ }
+ }
+
+ def action_cancel_assets(self):
+ for asset in self:
+ for move in asset.depreciation_line_ids.mapped('move_id'):
+ if move.state == 'posted':
+ # Force to draft
+ move.button_draft() # or move.state = 'draft' if button_draft is restricted
+ move.unlink()
+
+ # Delete all depreciation lines
+ asset.depreciation_line_ids.unlink()
+
+ # Reset state
+ asset.state = 'cancelled'
diff --git a/base_accounting_kit/models/account_asset_category.py b/base_accounting_kit/models/account_asset_category.py
index f8c2979a9..8bd874472 100644
--- a/base_accounting_kit/models/account_asset_category.py
+++ b/base_accounting_kit/models/account_asset_category.py
@@ -42,22 +42,22 @@ class AccountAssetCategory(models.Model):
domain="[('company_id', '=', company_id)]")
account_asset_id = fields.Many2one('account.account',
string='Asset Account', required=True,
- domain="[('account_type', '!=', 'asset_receivable'),('account_type', '!=', 'liability_payable'),('account_type', '!=', 'asset_cash'),('account_type', '!=', 'liability_credit_card'),('active', '=', False)]",
+ domain="[('account_type', '!=', 'asset_receivable'),('account_type', '!=', 'liability_payable'),('account_type', '!=', 'asset_cash'),('account_type', '!=', 'liability_credit_card'),('active', '=', True)]",
help="Account used to record the purchase of the asset at its original price.")
account_depreciation_id = fields.Many2one(
'account.account', string='Depreciation Account',
required=True,
- domain="[('account_type', '!=', 'asset_receivable'),('account_type', '!=', 'liability_payable'),('account_type', '!=', 'asset_cash'),('account_type', '!=', 'liability_credit_card'),('active', '=', False)]",
+ domain="[('account_type', '!=', 'asset_receivable'),('account_type', '!=', 'liability_payable'),('account_type', '!=', 'asset_cash'),('account_type', '!=', 'liability_credit_card'),('active', '=', True)]",
help="Account used in the depreciation entries, to decrease the asset value.")
account_depreciation_expense_id = fields.Many2one(
'account.account', string='Expense Account',
required=True,
- domain="[('account_type', '!=', 'asset_receivable'),('account_type', '!=','liability_payable'),('account_type', '!=', 'asset_cash'),('account_type', '!=','liability_credit_card'),('active', '=', False)]",
+ domain="[('account_type', '!=', 'asset_receivable'),('account_type', '!=','liability_payable'),('account_type', '!=', 'asset_cash'),('account_type', '!=','liability_credit_card'),('active', '=', True)]",
help="Account used in the periodical entries, to record a part of the asset as expense.")
journal_id = fields.Many2one('account.journal', string='Journal',
required=True)
method = fields.Selection(
- [('linear', 'Linear'), ('degressive', 'Degressive')],
+ [('linear', 'Straight Line'), ('degressive', 'Declining')],
string='Computation Method', required=True, default='linear',
help="Choose the method to use to compute the amount of depreciation lines.\n"
" * Linear: Calculated on basis of: Gross Value / Number of Depreciations\n"
@@ -109,3 +109,12 @@ class AccountAssetCategory(models.Model):
Set 'prorata' to False if 'method_time' is not equal to 'number'."""
if self.method_time != 'number':
self.prorata = False
+
+ @api.model
+ def create(self, vals):
+ record = super().create(vals)
+ asset_id = self.env.context.get('default_asset_id')
+ if asset_id:
+ asset = self.env['account.asset.asset'].browse(asset_id)
+ asset.category_id = record.id
+ return record
diff --git a/base_accounting_kit/models/account_asset_depreciation_line.py b/base_accounting_kit/models/account_asset_depreciation_line.py
index d995e026d..96fb84242 100644
--- a/base_accounting_kit/models/account_asset_depreciation_line.py
+++ b/base_accounting_kit/models/account_asset_depreciation_line.py
@@ -70,12 +70,12 @@ class AccountAssetDepreciationLine(models.Model):
raise UserError(_(
'This depreciation is already linked to a journal entry! Please post or delete it.'))
for line in self:
- category_id = line.asset_id.category_id
+ asset_id = line.asset_id
depreciation_date = self.env.context.get(
'depreciation_date') or line.depreciation_date or fields.Date.context_today(
self)
- company_currency = line.asset_id.company_id.currency_id
- current_currency = line.asset_id.currency_id
+ company_currency = asset_id.company_id.currency_id
+ current_currency = asset_id.currency_id
amount = current_currency._convert(line.amount, company_currency,
line.asset_id.company_id,
depreciation_date)
@@ -83,35 +83,35 @@ class AccountAssetDepreciationLine(models.Model):
partner = self.env['res.partner']._find_accounting_partner(line.asset_id.partner_id)
move_line_1 = {
'name': asset_name,
- 'account_id': category_id.account_depreciation_id.id,
+ 'account_id': asset_id.account_depreciation_id.id,
'debit': 0.0 if float_compare(amount, 0.0,
precision_digits=prec) > 0 else -amount,
'credit': amount if float_compare(amount, 0.0,
precision_digits=prec) > 0 else 0.0,
- 'journal_id': category_id.journal_id.id,
+ 'journal_id': asset_id.journal_id.id,
'partner_id': partner.id,
'currency_id': company_currency != current_currency and current_currency.id or company_currency.id,
'amount_currency': company_currency != current_currency and - 1.0 * line.amount or 0.0,
}
move_line_2 = {
'name': asset_name,
- 'account_id': category_id.account_depreciation_expense_id.id,
+ 'account_id': asset_id.account_depreciation_expense_id.id,
'credit': 0.0 if float_compare(amount, 0.0,
precision_digits=prec) > 0 else -amount,
'debit': amount if float_compare(amount, 0.0,
precision_digits=prec) > 0 else 0.0,
- 'journal_id': category_id.journal_id.id,
+ 'journal_id': asset_id.journal_id.id,
'partner_id': partner.id,
'currency_id': company_currency != current_currency and current_currency.id or company_currency.id,
'amount_currency': company_currency != current_currency and line.amount or 0.0,
}
line_ids = [(0, 0, {
- 'account_id': category_id.account_depreciation_id.id,
+ 'account_id': asset_id.account_depreciation_id.id,
'partner_id': partner.id,
'credit': amount if float_compare(amount, 0.0,
precision_digits=prec) > 0 else 0.0,
}), (0, 0, {
- 'account_id': category_id.account_depreciation_expense_id.id,
+ 'account_id': asset_id.account_depreciation_expense_id.id,
'partner_id': partner.id,
'debit': amount if float_compare(amount, 0.0,
precision_digits=prec) > 0 else 0.0,
@@ -119,7 +119,7 @@ class AccountAssetDepreciationLine(models.Model):
move = self.env['account.move'].create({
'ref': line.asset_id.code,
'date': depreciation_date or False,
- 'journal_id': category_id.journal_id.id,
+ 'journal_id': asset_id.journal_id.id,
'line_ids': line_ids,
})
for move_line in move.line_ids:
@@ -139,7 +139,7 @@ class AccountAssetDepreciationLine(models.Model):
if post_move and created_moves:
created_moves.filtered(lambda m: any(
m.asset_depreciation_ids.mapped(
- 'asset_id.category_id.open_asset'))).post()
+ 'asset_id.open_asset'))).post()
return [x.id for x in created_moves]
def create_grouped_move(self, post_move=True):
@@ -235,13 +235,13 @@ class AccountAssetDepreciationLine(models.Model):
for msg in messages:
asset.message_post(body=msg)
- def unlink(self):
- """Check if the depreciation line is linked to a posted move before deletion."""
- for record in self:
- if record.move_check:
- if record.asset_id.category_id.type == 'purchase':
- msg = _("You cannot delete posted depreciation lines.")
- else:
- msg = _("You cannot delete posted installment lines.")
- raise UserError(msg)
- return super(AccountAssetDepreciationLine, self).unlink()
+ # def unlink(self):
+ # """Check if the depreciation line is linked to a posted move before deletion."""
+ # for record in self:
+ # if record.move_check:
+ # if record.asset_id.category_id.type == 'purchase':
+ # msg = _("You cannot delete posted depreciation lines.")
+ # else:
+ # msg = _("You cannot delete posted installment lines.")
+ # raise UserError(msg)
+ # return super(AccountAssetDepreciationLine, self).unlink()
diff --git a/base_accounting_kit/models/res_config_settings.py b/base_accounting_kit/models/res_config_settings.py
index 14784dc3c..c31fcf4b4 100644
--- a/base_accounting_kit/models/res_config_settings.py
+++ b/base_accounting_kit/models/res_config_settings.py
@@ -31,6 +31,12 @@ class ResConfigSettings(models.TransientModel):
use_anglo_saxon_accounting = fields.Boolean(string="Use Anglo-Saxon accounting", readonly=False,
related='company_id.anglo_saxon_accounting')
+ fiscalyear_last_day = fields.Integer(
+ related='company_id.fiscalyear_last_day', readonly=False
+ )
+ fiscalyear_last_month = fields.Selection(
+ related='company_id.fiscalyear_last_month', readonly=False
+ )
@api.model
def get_values(self):
diff --git a/base_accounting_kit/report/account_asset_report_views.xml b/base_accounting_kit/report/account_asset_report_views.xml
index d7bde6e8b..3c25cabfa 100644
--- a/base_accounting_kit/report/account_asset_report_views.xml
+++ b/base_accounting_kit/report/account_asset_report_views.xml
@@ -71,5 +71,8 @@
-
+
+
diff --git a/base_accounting_kit/security/ir.model.access.csv b/base_accounting_kit/security/ir.model.access.csv
index aeb5417bf..1266aa80e 100644
--- a/base_accounting_kit/security/ir.model.access.csv
+++ b/base_accounting_kit/security/ir.model.access.csv
@@ -1,49 +1,49 @@
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
-access_financial_report_user,account_fin_rep_name_user,model_account_financial_report,base_accounting_kit.group_account_user,1,1,1,1
+access_financial_report_user,account_fin_rep_name_user,model_account_financial_report,account.group_account_user,1,1,1,1
access_financial_report_manager,account_fin_rep_name_manager,model_account_financial_report,base_accounting_kit.group_account_chief,1,1,1,1
access_account_followup_manager,account.followup.manager,model_account_followup,base_accounting_kit.group_account_chief,1,1,1,1
-access_account_followup_user,account.followup.user,model_account_followup,base_accounting_kit.group_account_user,1,1,1,1
+access_account_followup_user,account.followup.user,model_account_followup,account.group_account_user,1,1,1,1
access_followup_line,followup.line,model_followup_line,base_accounting_kit.group_account_chief,1,1,1,1
-access_account_followup_line_user,account.followup.line.user,model_followup_line,base_accounting_kit.group_account_user,1,1,1,1
+access_account_followup_line_user,account.followup.line.user,model_followup_line,account.group_account_user,1,1,1,1
-access_account_asset_category,account.asset.category,model_account_asset_category,base_accounting_kit.group_account_user,1,0,0,0
-access_asset_modify_user,access_asset_modify_user,model_asset_modify,base_accounting_kit.group_account_user,1,0,0,0
+access_account_asset_category,account.asset.category,model_account_asset_category,account.group_account_user,1,0,0,0
+access_asset_modify_user,access_asset_modify_user,model_asset_modify,account.group_account_user,1,0,0,0
access_asset_modify_manager,access_asset_modify_manager,model_asset_modify,base_accounting_kit.group_account_chief,1,1,1,1
-access_account_asset_asset,account.asset.asset,model_account_asset_asset,base_accounting_kit.group_account_user,1,0,0,0
+access_account_asset_asset,account.asset.asset,model_account_asset_asset,account.group_account_user,1,0,0,0
access_account_asset_category_manager,account.asset.category,model_account_asset_category,base_accounting_kit.group_account_chief,1,1,1,1
access_account_asset_asset_manager,account.asset.asset,model_account_asset_asset,base_accounting_kit.group_account_chief,1,1,1,1
-access_account_asset_depreciation_line,account.asset.depreciation.line,model_account_asset_depreciation_line,base_accounting_kit.group_account_user,1,0,0,0
+access_account_asset_depreciation_line,account.asset.depreciation.line,model_account_asset_depreciation_line,account.group_account_user,1,0,0,0
access_account_asset_depreciation_line_manager,account.asset.depreciation.line,model_account_asset_depreciation_line,base_accounting_kit.group_account_chief,1,1,1,1
-access_asset_asset_report,asset.asset.report,model_asset_asset_report,base_accounting_kit.group_account_user,1,0,0,0
+access_asset_asset_report,asset.asset.report,model_asset_asset_report,account.group_account_user,1,0,0,0
access_asset_asset_report_manager,asset.asset.report,model_asset_asset_report,base_accounting_kit.group_account_chief,1,1,1,1
access_account_asset_category_invoicing_payment,account.asset.category,model_account_asset_category,account.group_account_invoice,1,0,0,0
access_account_asset_asset_invoicing_payment,account.asset.asset,model_account_asset_asset,account.group_account_invoice,1,0,1,0
access_account_asset_depreciation_line_invoicing_payment,account.asset.depreciation.line,model_account_asset_depreciation_line,account.group_account_invoice,1,0,1,0
-access_account_aged_trial_balance,access.account.aged.trial.balance,model_account_aged_trial_balance,base_accounting_kit.group_account_user,1,1,1,1
-access_account_account_bank_book_report,access.account.bank.book.report,model_account_bank_book_report,base_accounting_kit.group_account_user,1,1,1,1
-access_account_cash_book_report,access.account.cash.book.report,model_account_cash_book_report,base_accounting_kit.group_account_user,1,1,1,1
-access_account_day_book_report,access.account.day.book.report,model_account_day_book_report,base_accounting_kit.group_account_user,1,1,1,1
-access_account_common_partner_report,access.account.common.partner.report,model_account_common_partner_report,base_accounting_kit.group_account_user,1,1,1,1
-access_asset_depreciation_confirmation,access.asset.depreciation.confirmation,model_asset_depreciation_confirmation,base_accounting_kit.group_account_user,1,1,1,1
-access_cash_flow_report,access.cash.flow.report,model_cash_flow_report,base_accounting_kit.group_account_user,1,1,1,1
-access_financial_report,access.financial.report,model_financial_report,base_accounting_kit.group_account_user,1,1,1,1
-access_report_base_accounting_kit_report_financial,access.report.base_accounting_kit.report_financial,model_report_base_accounting_kit_report_financial,base_accounting_kit.group_account_user,1,1,1,1
-access_account_report_general_ledger,access.account.report.general.ledger,model_account_report_general_ledger,base_accounting_kit.group_account_user,1,1,1,1
-access_account_print_journal,access.account.print.journal,model_account_print_journal,base_accounting_kit.group_account_user,1,1,1,1
-access_account_report_partner_ledger,access.account.report.partner.ledger,model_account_report_partner_ledger,base_accounting_kit.group_account_user,1,1,1,1
-access_account_common_account_report,access.account.common.account.report,model_account_common_account_report,base_accounting_kit.group_account_user,1,1,1,1
-access_kit_account_tax_report,access.kit.account.tax.report,model_kit_account_tax_report,base_accounting_kit.group_account_user,1,1,1,1
-access_account_balance_report,access.account.balance.report,model_account_balance_report,base_accounting_kit.group_account_user,1,1,1,1
+access_account_aged_trial_balance,access.account.aged.trial.balance,model_account_aged_trial_balance,account.group_account_user,1,1,1,1
+access_account_account_bank_book_report,access.account.bank.book.report,model_account_bank_book_report,account.group_account_user,1,1,1,1
+access_account_cash_book_report,access.account.cash.book.report,model_account_cash_book_report,account.group_account_user,1,1,1,1
+access_account_day_book_report,access.account.day.book.report,model_account_day_book_report,account.group_account_user,1,1,1,1
+access_account_common_partner_report,access.account.common.partner.report,model_account_common_partner_report,account.group_account_user,1,1,1,1
+access_asset_depreciation_confirmation,access.asset.depreciation.confirmation,model_asset_depreciation_confirmation,account.group_account_user,1,1,1,1
+access_cash_flow_report,access.cash.flow.report,model_cash_flow_report,account.group_account_user,1,1,1,1
+access_financial_report,access.financial.report,model_financial_report,account.group_account_user,1,1,1,1
+access_report_base_accounting_kit_report_financial,access.report.base_accounting_kit.report_financial,model_report_base_accounting_kit_report_financial,account.group_account_user,1,1,1,1
+access_account_report_general_ledger,access.account.report.general.ledger,model_account_report_general_ledger,account.group_account_user,1,1,1,1
+access_account_print_journal,access.account.print.journal,model_account_print_journal,account.group_account_user,1,1,1,1
+access_account_report_partner_ledger,access.account.report.partner.ledger,model_account_report_partner_ledger,account.group_account_user,1,1,1,1
+access_account_common_account_report,access.account.common.account.report,model_account_common_account_report,account.group_account_user,1,1,1,1
+access_kit_account_tax_report,access.kit.account.tax.report,model_kit_account_tax_report,account.group_account_user,1,1,1,1
+access_account_balance_report,access.account.balance.report,model_account_balance_report,account.group_account_user,1,1,1,1
access_multiple_invoice,multiple_invoice,model_multiple_invoice,base_accounting_kit.group_account_chief,1,1,1,1
access_multiple_invoice_layout,multiple_invoice_layout,model_multiple_invoice_layout,base_accounting_kit.group_account_chief,1,1,1,1
-access_account_common_journal_report,account.common.journal.report,model_account_common_journal_report,base_accounting_kit.group_account_user,1,1,1,1
+access_account_common_journal_report,account.common.journal.report,model_account_common_journal_report,account.group_account_user,1,1,1,1
-access_account_account_type,account.account.type,model_account_account_type,base_accounting_kit.group_account_user,1,1,1,1
+access_account_account_type,account.account.type,model_account_account_type,account.group_account_user,1,1,1,1
-access_account_lock_date,access.account.lock.date,model_account_lock_date,base_accounting_kit.group_account_user,1,1,1,1
-access_account_recurring_entries_line,access.account.recurring.entries.line,model_account_recurring_entries_line,base_accounting_kit.group_account_user,1,1,1,1
-access_generate_recurring_entries,generate.recurring.entries.user,model_account_recurring_payments,base_accounting_kit.group_account_user,1,1,1,1
+access_account_lock_date,access.account.lock.date,model_account_lock_date,account.group_account_user,1,1,1,1
+access_account_recurring_entries_line,access.account.recurring.entries.line,model_account_recurring_entries_line,account.group_account_user,1,1,1,1
+access_generate_recurring_entries,generate.recurring.entries.user,model_account_recurring_payments,account.group_account_user,1,1,1,1
access_import_bank_statement_user,access.import.bank.statement.user,model_import_bank_statement,base.group_user,1,1,1,1
diff --git a/base_accounting_kit/security/security.xml b/base_accounting_kit/security/security.xml
index 35612475c..91a683e38 100644
--- a/base_accounting_kit/security/security.xml
+++ b/base_accounting_kit/security/security.xml
@@ -25,7 +25,7 @@
-
+
Accountant
2
Chief Accountant
51
-
+
diff --git a/base_accounting_kit/static/description/assets/icons/accounting_kit10.png b/base_accounting_kit/static/description/assets/icons/accounting_kit10.png
index 6f5eeb028cb6d04236950158a6cf7d5da6f35b03..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644
GIT binary patch
literal 0
HcmV?d00001
literal 1041926
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
ef;2Ht7HkAqT
zORy*B@fB(|(OWfQaFkW5Vo#1F?r{d_yWV&1iY#|w*i=)!5le%YFT+vPdU#~W&HD1A
z>AE2U_cbgshoW@?K%8s;9{?FZ=D$1pZ3(;j84#)OVE+#(%l}k=+fSB4=CV<|Be4vO
zeyZq9#wkw2_koNJAE^mhj>rORKGux@HPPNWk#lEmHDx)Le|^-7?LkAH-ybsDWZH|I
z7oab!vlztBD9}7n$^4SY=sd^aIRAMwHsAjyz(Y!~8H0r~K>fTZ6fw+Pq)a;7WML!o
zqFgGZ==^?vbx`a=zVl0Kx1Gxl6JI
zk|Q;HcMh<{yZDuRA|~XllS(^mE#os3TWdOmkYZ|P*Ar9sTSHVoL{UX?S#`yeUK>ld
znzY?7nIO9Q3k=PY$uKN++HUw$vH6y}*lO9c=x!sS+%KkNNXfjE7B%PuyIvgER4y=Mc}P5lXQ~E^1b&sQY$iF!<*WJVTbRrbIg-}Hc9U}8KpZTt>s!9#
zC;CKCjETc!bF+d4)YVR>AC#kM&7HktpZUlxdKPD3h{Jk&3W`W8u9N^YQ4jeANnSM~
z#|YBZ_8Rbg@pQIk$_))$9Gftk1a21m;}9O2FoB7jYxBN$LzM%hC;NS}V-`hDEqVEA
z!vX|qILyc;t4z7m{>7xjEJ?UBm=~W)|3v|sW8z5NLDRK11gDJHi||nqA(Y%}DlwT{=K6Q9UjT;^_pTKV
z<&Iaf)ZJR$=P4awrCcv1*P2>UZ2COJCcHCPK_Fe^zHuB~-DH^pmFxPbm_H!1Y^^{O;oUFqqa;4eqq^^@HF7ZX5&R44sP-Dk
zMayzbq|Egk{dKPsnl=gqM`q|Ppl6`7DJ>jnYuJ%XclSR8*rg9L-T
zD{d|aN>Y+vNCIm&LKx7FCqd{jV+S7$AKO^aU02nxW|GO?=YUT>(8k^B;p)JcnG|vy
z1QZq-N>lvV^c6-cbUfJh7@q$?%|5B4p+FB!WtM7LNQWP~X)1R%C&;Av+x<86z%$fK
zdJqRm+wFtGW;kR!3~(*ijQ}=(3riSC;}hE47CGof)uOK{>+Vd-$7|ld03Wo1ymE)K
z$rpyVqL%5aI=D^QK_iNy3cu9q5j#*nQKuMc>=8T_Ad8;xaOJ8f)(kI7?ECYdiN^@t
zDVMTtT@?k*U#!(j$|Z8
zOLQk3TkY|;3xR6za7YXy9z_oMTIH=w&8g9>-~wcaD?KHg8pLlC|)##dQQ!zihHqKEppJhD34wir2^lnPCV5@$DB)%1ebVOvOMQSDm_lUu!Wn&7j=`Ah
z=t84y9Ia)7VvZ8n{oDW69{j*AH6em+pnig5CZ5xmlw?V@ztqX6-7DwLj#5wbHrv#!
zTs3!E?Y!Hx;q}Iw`7!jn6-c#T<|3bS-A#^xl(Zez&%Yc^Y8PY*v~lP_v3XZ%jX^T4
zo~R&|=-U9)7^MVYa^^&%_#nV#PQxeMR4qYU#Tx$G#leb|@O6nyXNakE4xlusLP}xO
zFvN(h5zMcVC%IzJl)@z%41|?-Ys8>#pqphBUM~dh`D|wu*>cJba_7!BqBdL>*)CsF
z0VBQOc`NJR&9U$}`6OpcB;#`mAI55y&ch;S{
zg`+alDH1n?AnoSn2;;}a*H}~C00iF9(gsj{|Np6Z_tFsIri(#VE0TD5zM#Xo+QbxX
ztyfJ~N4|K7uihL8=zXc#xZ-&y_@s`2z_JdalnR{rau0vxbw}XfMNZ0x93=;Ul+!Jq
ziQ+*3L~s90F9f;6*Lm^-0sE!`qDt3%w^I;5HZqO}yg%PPc7sP$f4;>BF6d
z!5;7lsQOb*b5Ox~Msh1!SE8-$s;DT+W3uNhxMptD7vnYq#mwoR$gc@iU^>WxJdvz5
zq6Haav=v-7%qewRhRc-%rZw(!8&K*1N84g}$E}*zEf$#&u28y~ItX`NYS8h5Q5TXJ
z4Yk;os*ShwtaCY+t!F%AZFAy5OwPj&)JhF#KYt7kstg6yMdas5fr|36zR)D2*dnJp
zh$@P$xL#XCLXdnBZWAxWN`(vt<>dEs%&EO8(MKc1m{!Sow*MUL{I~$0q;Dc?!g1l-
zvPp6Wk~^EER}Bf>7vkY)DRCxKVV616Y@)hA`Vg3nc8tD=jaq8{MQQItrAF~FR_!YC
zmXg(;{Uq03WS&5V-+2M&XA8kwdaptvib!?>Ri0!q`(8;4E6rkh`~v{+qODQ%z}{pS9o>ebt^sl(Xr2rE(qxO&Ush!)1p%K88GK^l@Q|=ZqU>O+md)OHtpq
z{XZS`c4HJOJJ8bM+Lm}e`~iD7fjn@%ZWn7b5VBMkJ<{4YsJy9r`9Rj15;}qJpXSP>
zRQVRY$P0Y^Fv9paNSMGtt5ipm&;O@74zF3DXcNZmS$!|WN@pAFvuL4!?y~*i
zJ_{v>)U5>ImWYwg`G)pn@Msa{p16O71wRR*)JWtYX)!F@aiJe*9Pka%#1YoBq)LR
zI+Eg$(j_nm{qPsh(lQg6u6-ifGs
zg8jO>31bb$_w~foEqychYJ(1lholdKi{yZFy{q||IB)j}0ooK3nA!c&g-5cK)XG?@
z;Jre<$t9&}KAYvH@`fR;-dxWHadWm`@On@eVg;#;GHoTBIc3*QoW9St!Nb03!sIOQ
zLKmeLdg~)ufq^RyTb34?`Xk4|dj{&M+ynPSX%L8clm->A{J
zAYK8{P?GF`$&Cf=Bqa}vP;??NQ*g$0VRl@$e_#LR6D%54Y{)Jt;np%UUz
z$6?sJb}gNerT+ZKm%S%eL_JK-?*CdwteRYRv70(Gnla@g^|PKVCI9}b1?;Qds
zdX}pv9Fg8O_gD1WmB(jLA#{YlizEx|{RQVR`L#X~@|$z#W1?_AkAFRB`wo>-pi{=S
zlla75Ml?(C$g5n_auRbbT-@BS;dQiBfv=Z0L{3UzDb|F&*c}oT^A{x3B)qhjZ8WSz
zHI>{%-&6$RUT8bL4W+VDggN@;M`PpZ82&8vyjHKRLS~%2@bLVwP9ZZ!3fJz|IEe7Z
z%*DSC!}II;AYD?ZS4CdZ16lZ!TlqVaBr51ONulPGLqGcFXP{QEm63FFZRd_)s9XUm
z{B#~o7dN`2(|CT)x?N9jK^IOk*eb0vu~fNXHq~wx=quDzkQJ2Pj`6LB>3QERtG7?v
z)|J4DHk7+$wjs-?sw$dcHLiRib_XEkpx
zl4ZEKcXIPGCBmp-f2>o#%szi~+oFgDVQhG-XXg^v9bm1pp{yCP
ztI>}z%LZ8i-wE(?bHMm3)n4Re9vzx&_siUuGJtY|rSn3$
zV7%nXCB8_b#LoezBomoC;7E5ZcXFEfGgeLL1c>++`GmyVL|P%(Zxs+MZ3h-~gwkIgWq~
zZt#}H%O>05JVfl)+jtZ2e&7k`QHY3K%Q(RF&j*MYP~-Vy05QR#TYBi+MRUmPAXqSx
z@_b?uJKmUCL54e=H+82&Q-ZYzbu1`-uJqmY!aSNA5)tNCTH=oK{Q(`XOxgz42hn~1
ziYZ>-^!6JWOp?^yeralc9Vy|~LX6?_IIrptWbfy+A((ETEU*DlQ2f$^*||UI_gv#n
zUJRM>o=nU_f9N(M{{GnWM}k$p)6Hh4?x5gMFB|I3Iko=UhurdcRz#l=vC{K}T3g^u
zEGv}_R+qRrYTaP{Z2lpfOU-^y9(LL-%C#M?z7lmlRlq~M2T5lCyma%FfI~|z?s!21
zVdxcom~^YNWiz{F{8?Un4tVgpKcP0kfMpu@B)U}CKb_CakTc76yS`)X55Am>`0I{9
z^aNSctmOES0($$&P
zBtVX;!l#p|MQMwC0@IH^VOSnU7x$tS
z;mmMBOwIAg`)4(J`_ntQCodS@M|XkWR7=sY0Odl-fb^y~k{Eyv{|K#??xvVjE!xJD
z!rez*j5e{#!|bo&9qk%M-xdSc2&0?f8YwQ9k^S2Mm=NKrCXi&fPvkut_#}wzEKb7x
zJoIrctk3s-x|z@|27SAUaqGsbD0LcHWa
zq)^h|aaFwvlycWapM3p~?n`h+j9lUuuWQ501yBD?2`F+*FLvr5+SV3sD>+LJiHA*i
zGGN1CJzJsAF5ts>@w}Tm!Z3C;c-BJ-L4N&fs#Tn38r^w#4c+C%+04cQWOy-0#ZQ=a+}>aLgZ9Xz6Rf6u`C_wYE6$Fd=XYK)!O1z@6q_jKFB?Id+nIZy
zP)ENpOGuW*ONAWf;iATL4n2q*LHQRSWeV`?(5TnQj9m)}HK`mzxbrWGRr8t21oPN~
zTsf`gnS~SQ^5?U7z$uUKi`k~s*(d^fso+zT@CT&1pmXYtlfk72OxnlTiPnmgvbvM&
z5Yycff>gvj)>KOCcUg2iEpO5gD?_IjqsQWTlu{a=c6pP7lqOIwcV8`NmYCoiX4T07
z6-ld>FeLAUC9@mzr4oPEIs^{_3*lrN)zE+x7D}YwBm)WiS^Y=>xt(6Q1Tey>N@Hi%
zv1y%3+RIec$@I)BWSCRH98eLU*x&`;rj-efi*x3WbOaER30-gMD)a1_;d+E-{aIJa
zi`D(ig%TJlJ724J66sY^eMG_%GF2_7&z;dc89b5mD{`Y-_jo+)tR`}i&mU*nz5J*I+X&UN#6K;FZG}^J}OQ2l^Z7JdHi(Z08CnPsh%YbDLHo=U8;w0<`VvJd`duE&&C=CL5-QN;^Y*kdw4l-F=
zX-Pn?O7>Hf2n)#qlPna08@0_g%9M}ep#AGq`HPIm5n_>8E_>rfb9Pd!Zi(aNgSeh)zMvk!ius%|W&CrE9mDe%ZO|
zeg&W&?7B|*e$T3%@j$;32iUup!qkSq%(rN2v_guD-mF1!4(QVEpp2}hV
zBHmXaIZ(*oR<`M(C9SuTN$i;cC(v}fz-h5c@VBajb+Y17Ym8vgsJMq2ZDOG)-hnTf
z#W*EcP|;({l{_ug_Llj2_AMLl`k@^@++c)8)*tdEL9Z_egH@~z2jVZ9P<oeS%EaDhlL?%b(uDlv8e5y@j3s}>99`&TNSVn
z|FnITPXKu1^WjqYo+>4M2G3paUtGI?X^w`eKV3mo!dJ#u+;nY<67WKNdt5|873jyi
zlufc{%lX#AXPWSll;ong;GU>ICF(sP=(X`NpilBzz|$j8n#9tLa;9ikUibWEu($J<
zf%F8sb3dS`-8^LpMn+-ylM?SRT8*G5D+Ga=UBg&0b9}|Lsh)u7R*7WMsCF%F^o24p
z!!6vP4E}b~%3S{M;2C0~12oFDOXrPG_lw;MEMIc3j}bc`i9Sxb3k7J1cO1Z$Won
z(q=O?_=XR~Q?e1Zd?{^Mm2&gB`elu_K#yru&Ny{@6_p*FNsi_iq&^8GTBut!)#O#1
zI>+BDn3saF`hWlXubR>U8ES+yWSP;h&Y@;4x<5qlDlMPasA6R#)oK|;IjO2_^DVQ~
z%{;O6DXe>I$H%mSHG}KxNxQ}Az)4Mu#BKdHy^{{jt#?X*_o`PRGh3&;J~v&wlbf
zsA8U1M_%(j`N$kMS1O%d2%N%UgVOxijPHpwopVFiyOtnJ&RPYz=Rsi@-C6R_fdLRM
z6u%Bm0_Cfe+iQUCy%_EFt6m3s`{?Z==dn4kwUEz{jY7!Mxq)Mx0y7-mV3t$Tam1{g
zkg4$O6x4b~avi6>=;kZ^JwkdW*lo~P2jkDTBr@ZA(AuF9P);!STif2dq+jG$y6}dx
zKGpIyU=Z}Qsct^I#V#r;=ghag|Ix7a`XtydiksxmHr+7#=5l>;q}fh9axQ;&lO*j49
z>7M9-kTUK_O9yH~C5d>^FdmG~o0vE_FRbD7rT&i&g(tJdzXBW!3faw%h+N40jaEJ&
zzz(X2Eh|672CvT@tgv9xH1s$4cvsr}m(4R^O+>SeCFVc3O}u-w;@|z&a0z#@k(C{8
zum;{ruY}B_l3mok`!0VH6_NPji-53O*>eLqqn18m7
zx_c`}jlVrWk!gPx6VTnD(epEELCCPVN$@U^Ym52@TepizY3C#K%UPnDevOD9h3Kw`
z2UfpOf4sKzzogC&TlDt2#C3l@IR&Fl1)^b!Y}hVMTVb$o4s6iP%V7#Nxc*9LN~RSt
zhLb$?=bKZXa3^5lDk`E#-V)Y3ikKmBHgSJ%FazU324U%H7zys=pp~OV^*4Q0ZX%fI
zeDLS)8Lxba=#9V6BWp--f<}(-0#kFRKX;(d5p&cZ$#45B=-piwMhgpkrJ@kTAk`RX)fQe;k~1{j?~`nkoMAK05L
zbOMc^pdCm3G%vH)l$i$6*>lLK=i}9Xc!y-l;LzMO_?zUbZHHWz?D|i>bRp9ulwt85
zGIAmsVibu~sboasa+<#&ClN7iTMk4?hrBTDX7RShz%#y{1I&{*AyQQI;bhzBwzTZ5
zC_5WBRBS2pob{|-9vLdGb+uJ?vb_Gkf??Uwo0d>Nyh4K;I(Z?BF6m(frD`h26h)}Dy%=Zm
z$WTLnBa%Bf%lWvnnkC!7n5&C=(}jzTS+MyedZ3b!%G7B$s36sGcWmj7~LRxwf
zXE%*^h}kP)n?6SY!JWB1Tfmz6h3ScDS`Bl_)HI?M8;X-oZ{Lj2U&nlB*Gg~PF%Kwx
zi>iL3(*Mwo2{Xx(G$i_+w{;7s=bd{}MCe$<95@*8?k+3sF9`!WEi{nN2o?}EjSJxp
zdD8aBF%2!I+Wvo&KR5ql(6~$}43Q*uL$3Q484A+zWX|y$h`evTsKI#V#`f)hg(lCR
z&hQBUyqb))(jjrov4~>YdJJ;S47QO@xIP?*(+Q_@0|>CQ1K-bKdGnH%G#({qrpIno
zE9}aZX@nLkgeFexn2j&V?~n7?XTDFB$*jqbA}l+h#a-_
zS~oCE!7n3ey!%_e!bSx&Cq-l0Eh%~dK|y&y;!SFi-mWrU0pl56Xn!}gZy>{MYe%N2FIRLVBb5=Q`;aeQ%5s=Z(yO)9k4f2&agBYRx)9XX@C#yG-e@5
zpmF8O+-Q}g#u$+&32+WyqWvKx*zxLFvo^iuQ{2mv$7T5su)Z);d+Jr(rd$&q3?^TB
zkeavsyO4lJIK!-f+&FjfWc;=JNiGohd<{g9T(PP;l+4N74&+*;+Jmch0NRkXSvz-`
zgt&H7duYg*lj)yGO}dfoTPpSgfFvi@>+8CH|1HaEN^u1WTZlOYRV8lNyTXzfDf@mp
zlAR(6m5cI`NDKn5nAD{`-?i*wH?wQJMpau%BC~Sa%-5qkquW+do_;qHpgPe?;8y0!
ztyunh*StB>b3hvd*6(P|90|)Dm_~m*Z8ozHI9r4cKe=LegH&)fJtD~v6p0qYzEXb
zYo>(F{;HLz{Z+xqgkvvjE^$IVg(rU6JT`3lrS$f5%nY|JB@X-x^)Lc}w){j-N)8m}
zk$WaKmNhAGWuLPf7Y{Wz;wWzrqUnH)z2B3+FjI8=*HdL8%(^lpqWh3k=Ox}?ds?Wm
z2VHKNT6R3nzu+@zs{W(4ma*+aMhaC~n^fh(4!oNQF#>-k`=4Ca!lNEXha@ImktvHZ
z{sk2I#o`=@u*+vyU=>I6(Y8T$6+=ExEogfaXw^|FP?wp32FPsQ0|7TF+=|I%77yps|zxvk&p9|8Dl@b
zP$!}nY;c~r#kpkB)UHr1HB~;f-Ez)~m*R%bHxYyTXZ(}v3k6GHH##~=a?{Y%y~CF8
zz&b>YGTYT6E32=Ttb5`cfb`sAQRO5
zx=#Kf3?HrOY}VbO5(K!&g^F-4)WZjrl$7`phfsrHQ>nV?&-;e1SZnEWFabej(*h)4
z85T5%yJU!EoYTSqlNlVhQAWe#sN6KijmI=d4cRYuT8ykiwHkTQ9n^WJ)i)!{hP@T>
zKWw6Yo^imD_@eHT5R9&ZfPWns5YF8Gc}MYzB9@f4tPI$jdEt9$m_PHFj~cdf=FTC{
z8}v&|p`AgT2p_{Nw`HdJW~NU{xI~wU`8t-&-hvJV_G#izX
zH-BB)DkAuf!PBkNhmjW=846YwJc3YljfQe7la07sS>In;RY})
z;N-)bX15S}JjxS~Jq+j#)5-`0ZxxiRY@@YEm>zwO%ZF$lO+hnOmpY>Tqhnl;P3)`jntbI>W(TZIZh5Z>jH_Q2CHXKvZJBLp~0+orXU_-
z7$PM3M$T;%h$92QL(->R60Ned{atr9+c3(=bJwXrz4jaJG-J0HEd-`F>vmKPGLTY@
zVn}p!if%M(Q!#)%T+<@2QHgQf(ydBpErm($y`iKf(*bf6I!(l%eYS*vN;VfGk5_6p;ub{#ZJ#R}AP!QrbFF+C|q%J#J
zMhf>#T9vq0`!@bQA=+eP^N}w*AiqN~?1s^=C47gpk+O9woYNt&wzZUPs=Z|>
zIE#Gfdz$H0g2HtJ`D^qI7i9GY5dDR6{Oid|A}HKBN2|8f{IuA$4JW6tV(?1tK(?@T
z&yQ{S+(QxmWiFa}OAh)WM*-Zbr(HdtUme$<
zTel(Ldw0_}V34XP(pAKov%QEKXxJ+=t@0G0TfhQjbcgL}N^e13Ie}H}q
zp1wqGLWSo%dpzuu&YR=Eo+%5GksYZ
z1YgbdT0hj~Ru6bMEDF#Q@r|=?a_}7|TOLtjX#W@|A#DjRW+$O#^JGL&B1)=6(Q0T4
z_Q@R;`qpTE1!S7sZSR=!GfWP*D^=;7p*pjYGd<_~?g|>LdRj>JFnX#BP)mVWp2h
z0o^$iI}RuAiXSG?zkxm-F_hL(M5&8}8~|yZCy6=I6FXFNy~gf1Rlcy!Te}VX>i#%=
z!xFepEPxN-)9S&hayiC&e`*>LN+|V!s5}Xe7a0cWN=mWTzreJDR<32#LUC}TNWUP6
zY75>83s?aUxnszwn42&Yq#FRr-_1Ua`Cp4j-wh3#q2E7(O0r4TwAC>xx+j4U05
zUacaoPQjq4_-%pTdU$wUlOWspWAj@!sR)3u;T0Y+5P{uNvXYx$BtpBS0n0+J45cYm
z*PQB|j7r!gVZk^V4+(xPo6MPob{4sr??Q;b)*F9X-jVD_VChF@qU6T8+v+b93AfI3
zEZ{_M*%RHyyE0%ThmN|nx%+3lcVcM(!(%j_zZ(}W&J=M<+3-`yunw|5)U7^X;i+ly
zp7Q~~j1R@eK%jXWPGUZzUe9vb-&~(LRoVg|mG_PK3)_5!+*_qKi8Z}-=
z3vJ8{X)U9hJ{gd`lYOKqoq2xB`phoN<8AH*Py4V$u$Lp{g4N{Xj)+MWv@6OIL8JV;
zN%Gulf$b;STm`zv!qB(-!K-kY=792B?E=20w!5(K8=3s~B!kjZ-EFN3+zsu5sR9tB
z4Dl+y(nnrJw3E?D*@s$7)72t*JQ=Z4gLFCzv_4Zf>0C%iS5gJyiKgf+OC=_!d)W*L
zA7@9rCPKd3)+VqX^ff(hcCK{5UfQuraap_>ehRvWH0RVPaP1fB%{vk@DAFE~{v9Gx
zfwkUA{_5y6%_yzVL>mu;fA3{h86~7&>rJDlG_~)&;dWA$NZp^L(*Zd@`cRfkB-U5j>cB%e*wgFj0{=f8@WN42p_VxjW2#;7Zkpn<7zJ%qm`Sq5p+51V
zQ8V$|51Qi$llHaC$JpLF<6hC<*-$|tuh%ARL=}n<#RMHs+X2*}g~FLEYVWvgAbdr!
zNjuf`2j>UQ4iM77a{ijXB
z2Hye`0LT||wNS1LB}fsXoC39Wi%bX}#;K;%(@tjso~KU%`HYM_CCp?U^IRG;xfrD^
zm(a|PfcKraoPYJ!D0*ZdOUawmX(Kt65cxSYs~3)(Tll^ZW8
zLJx*SSwTi0>EPuTo5P(4eC)CQt^Qb0SPWd$7A(DaX;TH2oI&srz`?VJHCZcoY6UC(
z_T&h_?gYCytuy9Cd&sU$i6u*mgh1RQ
z5jeTT`)-nOMV$5Ss4-tQ7OzH1zIWsV$%4%V!BK-bl&{%
zF`wvgPr@e+<=ZDSuOyC4M8T(;R
zj`=JzRFSDCzRu-SUF!CQ@>`sWVjyva8Ar2;4~3bg@g~Mv6TiD8`c}@yngd0^J1DZS
zl5o##gkZ}xh3nbqCOE#J*1S9ZuyT4(8zCPw5@0T-Yf5aigtKnXCbm5*f6=KNrUwo!_J=RnhCeaMr6Le1M0BOEai?j1^mPJMfvXFZ4G$69N#$+cqX>w6hb@AQ%Z9!OA}fl_51oi%64M{uPbIZJXTad0Gk`EN>lg^h5IPer
zp(8fIo)EAl+I;{#Pj+{L$q4P62|rO%s~FXT%n>tOc0yg(IE3qgPF{0tHE7)tLcx^`
zgb>KUJXouM9#6UGM2uQ5e(f>Cbt>oaa{ez+cm=$7#l5zDG%%g*eWrl0G{#V}Udq9+
zmdYjRxqgIo6T@`4SVe;x)C%(`9s9K>lbMJxUh(N`5n}A{gD_SopKTUg2)#b
zrwz8;2;5dI9{Xtd3(>J)DZz(Nl`ywGkl(F_0-S%A)l|T)%LV2$2PFMsr|}jm%h01?
zeA)AP(~%0>1+f#?%U`SwY1!_YZ`q?XhaN>Y274Yjd=8!k%uS`8J)h&xYDXYC1*W7N
z`2cg!t#KxzY;+xqOo@6be<3<(0UDnc4TqmZ7PBfp0dNJoiFCBL1Ypk?8~SfVWGgy4
zLE&a37@?NLYZ(+Sd+q#GHBRiyi~6b*&Gww7+&;vBMuu=lx4`!DqEEYJj@tOmnDN@vt0DSccMC_cOy8W#5KM@Xo4o%)CDn`mhpUZLHzv95*YLEeqFOL=gDiw
z<|vduNR`wV7D1vr0c4IxL1YHM=N*(Z=eF!C&*2;^nn^YD2QTqADu2=U1Wo|=Gb2>t{Qv+)Zq
zGVAj&t9*d^+jrzvYN4ZPO2%E4p}W%U%+$O#OeQ_zrHJ{*yn#`Y4yoV4ruu#w*S>ZN
zP@RdC0VxFTs9AJ$ziFz##?4b`cyOG24cnIG&>B0xKx@y9`00Xt&~zV!8;@8!_4b&H
zUzcAESEue>3pc74cY=YF>#_+$r~2A>0%W?{T^Uv^lpwIna4l&$pj229t4GgOG~
z5a6}Dc)cfUm__75)83c3yy^aAw0*J#$~OUd8AR$S)B-t@XI~q`4wcM91%pOMr{Y89
zDyqDuZ=W`MwaLm0oOVJa$)5U-!w$6`Ru_+`M5%asLX>ixxwsWfT=qsKACsF@e3>5O
zAX0P+mTA~{@`nazE}*9sg;I{zBNP>s+F=s!^IL})UcTivEX88%245206!!v<*`p`E
z!KXkyvpMa3rH;Ge+dh}(a~?f3TDQtA@CuSP<1n|_qi8wZw!qW>>FYrcA32r^^#Ag{