diff --git a/base_accounting_kit/doc/changelog.md b/base_accounting_kit/doc/changelog.md index 01bb8a861..5eaa6e285 100644 --- a/base_accounting_kit/doc/changelog.md +++ b/base_accounting_kit/doc/changelog.md @@ -104,9 +104,4 @@ #### 14.01.2022 #### Version 14.0.3.13.14 #### FIX -- Dashboard cash and bank balance issue fix - -#### 23.04.2024 -#### Version 14.0.3.13.15 -#### FIX -- Residual value and Archive issue Fix \ No newline at end of file +- Dashboard cash and bank balance issue fix \ No newline at end of file diff --git a/base_accounting_kit/models/account_asset.py b/base_accounting_kit/models/account_asset.py index a726f9f19..1afdbfd1f 100644 --- a/base_accounting_kit/models/account_asset.py +++ b/base_accounting_kit/models/account_asset.py @@ -57,8 +57,7 @@ class AccountAssetCategory(models.Model): journal_id = fields.Many2one('account.journal', string='Journal', required=True) company_id = fields.Many2one('res.company', string='Company', - required=True, - default=lambda self: self.env.company) + required=True, default=lambda self: self.env.company) method = fields.Selection( [('linear', 'Linear'), ('degressive', 'Degressive')], string='Computation Method', required=True, default='linear', @@ -201,7 +200,7 @@ class AccountAssetAsset(models.Model): if asset.state in ['open', 'close']: raise UserError( _('You cannot delete a document is in %s state.') % ( - asset.state,)) + asset.state,)) for depreciation_line in asset.depreciation_line_ids: if depreciation_line.move_id: raise UserError(_( @@ -267,16 +266,16 @@ class AccountAssetAsset(models.Model): if self.method_period % 12 != 0: date = datetime.strptime(str(self.date), '%Y-%m-%d') month_days = \ - calendar.monthrange(date.year, date.month)[1] + calendar.monthrange(date.year, date.month)[1] days = month_days - date.day + 1 amount = ( - amount_to_depr / self.method_number) / month_days * days + amount_to_depr / self.method_number) / month_days * days else: days = (self.company_id.compute_fiscalyear_dates( depreciation_date)[ 'date_to'] - depreciation_date).days + 1 amount = ( - amount_to_depr / self.method_number) / total_days * days + amount_to_depr / self.method_number) / total_days * days elif self.method == 'degressive': amount = residual_amount * self.method_progress_factor if self.prorata: @@ -284,16 +283,16 @@ class AccountAssetAsset(models.Model): if self.method_period % 12 != 0: date = datetime.strptime(str(self.date), '%Y-%m-%d') month_days = \ - calendar.monthrange(date.year, date.month)[1] + calendar.monthrange(date.year, date.month)[1] days = month_days - date.day + 1 amount = ( - residual_amount * self.method_progress_factor) / month_days * days + residual_amount * self.method_progress_factor) / month_days * days else: days = (self.company_id.compute_fiscalyear_dates( depreciation_date)[ 'date_to'] - depreciation_date).days + 1 amount = ( - residual_amount * self.method_progress_factor) / total_days * days + residual_amount * self.method_progress_factor) / total_days * days return amount def _compute_board_undone_dotation_nb(self, depreciation_date, total_days): @@ -396,7 +395,7 @@ class AccountAssetAsset(models.Model): 'name': (self.code or '') + '/' + str(sequence), 'remaining_value': residual_amount, 'depreciated_value': self.value - ( - self.salvage_value + residual_amount), + self.salvage_value + residual_amount), 'depreciation_date': depreciation_date.strftime(DF), } commands.append((0, False, vals)) @@ -437,8 +436,6 @@ class AccountAssetAsset(models.Model): fields)) asset.message_post(subject=_('Asset created'), tracking_value_ids=tracking_value_ids) - if self.value_residual == 0.0: - self.write({'state': 'close'}) def _get_disposal_moves(self): move_ids = [] @@ -479,9 +476,8 @@ class AccountAssetAsset(models.Model): tracked_fields, old_values) if changes: asset.message_post(subject=_( - 'Asset sold or disposed. Accounting entry awaiting ' - 'for validation.'), - tracking_value_ids=tracking_value_ids) + 'Asset sold or disposed. Accounting entry awaiting for validation.'), + tracking_value_ids=tracking_value_ids) move_ids += asset.depreciation_line_ids[-1].create_move( post_move=False) @@ -489,7 +485,6 @@ class AccountAssetAsset(models.Model): def set_to_close(self): move_ids = self._get_disposal_moves() - self.write({'state': 'close'}) if move_ids: name = _('Disposal Move') view_mode = 'form' @@ -504,6 +499,8 @@ class AccountAssetAsset(models.Model): 'target': 'current', 'res_id': move_ids[0], } + # Fallback, as if we just clicked on the smartbutton + return self.open_entries() def set_to_draft(self): self.write({'state': 'draft'}) @@ -533,15 +530,7 @@ class AccountAssetAsset(models.Model): def _check_prorata(self): if self.prorata and self.method_time != 'number': raise ValidationError(_( - 'Prorata temporis can be applied only for time method "number ' - 'of depreciations".')) - - @api.constrains('active', 'state') - def _check_active(self): - for record in self: - if not record.active and record.state not in ['draft', 'close']: - raise UserError( - "You cannot archive a record in a running state.") + 'Prorata temporis can be applied only for time method "number of depreciations".')) @api.onchange('category_id') def onchange_category_id(self): @@ -633,8 +622,7 @@ class AccountAssetDepreciationLine(models.Model): required=True) depreciation_date = fields.Date('Depreciation Date', index=True) move_id = fields.Many2one('account.move', string='Depreciation Entry') - move_check = fields.Boolean(compute='_get_move_check', string='Linked', - store=True) + move_check = fields.Boolean(compute='_get_move_check', string='Linked', store=True) move_posted_check = fields.Boolean(compute='_get_move_posted_check', string='Posted', store=True) @@ -664,7 +652,7 @@ class AccountAssetDepreciationLine(models.Model): amount = current_currency.with_context( date=depreciation_date).compute(line.amount, company_currency) asset_name = line.asset_id.name + ' (%s/%s)' % ( - line.sequence, len(line.asset_id.depreciation_line_ids)) + line.sequence, len(line.asset_id.depreciation_line_ids)) partner = self.env['res.partner']._find_accounting_partner( line.asset_id.partner_id) move_line_1 = { diff --git a/base_accounting_kit/security/security.xml b/base_accounting_kit/security/security.xml index 08ea2170f..ecad0c337 100644 --- a/base_accounting_kit/security/security.xml +++ b/base_accounting_kit/security/security.xml @@ -5,35 +5,27 @@ Account Asset Category multi-company - - ['|',('company_id','=',False),('company_id','child_of',[user.company_id.id])] - + ['|',('company_id','=',False),'|',('company_id','child_of',[user.company_id.id]),('company_id','=',user.company_id.id)] Account Asset multi-company - - ['|',('company_id','=',False),('company_id', 'in', company_ids)] - + ['|',('company_id','=',False),'|',('company_id','child_of',[user.company_id.id]),('company_id','=',user.company_id.id)] Accountant - - + + Chief Accountant - - + +