diff --git a/odex25_accounting/exp_asset_custody/i18n/ar.po b/odex25_accounting/exp_asset_custody/i18n/ar.po index 471aba82a..9fbb6aa78 100644 --- a/odex25_accounting/exp_asset_custody/i18n/ar.po +++ b/odex25_accounting/exp_asset_custody/i18n/ar.po @@ -132,6 +132,11 @@ msgstr "نقل العهدة" msgid "Assigned" msgstr "مسند" +#. module: exp_asset_custody +#: model:ir.model.fields.selection,name:exp_asset_custody.selection__account_asset__status__reserved +msgid "Reserved" +msgstr "محجوز" + #. module: exp_asset_custody #: model:ir.model.fields.selection,name:exp_asset_custody.selection__account_asset_multi_operation__type__assignment #: model:ir.model.fields.selection,name:exp_asset_custody.selection__account_asset_operation__type__assignment diff --git a/odex25_accounting/exp_asset_custody/models/account_asset.py b/odex25_accounting/exp_asset_custody/models/account_asset.py index 0b946b9f4..546e3cca3 100644 --- a/odex25_accounting/exp_asset_custody/models/account_asset.py +++ b/odex25_accounting/exp_asset_custody/models/account_asset.py @@ -24,7 +24,7 @@ class AccountAssetAsset(models.Model): string='Current Employee' ) status = fields.Selection( - selection_add=[('assigned', 'Assigned'), ('scrap', 'Scrap')] + selection_add=[('reserved', 'Reserved'), ('assigned', 'Assigned'), ('scrap', 'Scrap')] ) asset_operation_count = fields.Integer( compute='_asset_operation_count', @@ -64,4 +64,4 @@ class AccountAssetAsset(models.Model): 'activity_type_id': self.env.ref('mail.mail_activity_data_todo').id, 'summary': _('The period of %s is finished %s.') % (asset.name, asset.return_date), 'date_deadline': asset.return_date, - }) \ No newline at end of file + }) diff --git a/odex25_accounting/exp_asset_custody_link/models/employee_custody.py b/odex25_accounting/exp_asset_custody_link/models/employee_custody.py index 7620c31d9..2eb54fde0 100644 --- a/odex25_accounting/exp_asset_custody_link/models/employee_custody.py +++ b/odex25_accounting/exp_asset_custody_link/models/employee_custody.py @@ -20,11 +20,10 @@ class EmployeeCustody(models.Model): ("refuse", _("Refuse")) ], default='draft') - asset_line_ids = fields.One2many('asset.custody.line', 'asset_custody_line',required=True) + asset_line_ids = fields.One2many('asset.custody.line', 'asset_custody_line', required=True) asset_assign_count = fields.Integer(compute='_asset_assign_count', string='Asset Assignment') asset_release_count = fields.Integer(compute='_asset_release_count', string='Asset Release') - def create_asset_custody(self): for i in self.asset_line_ids: data = { @@ -42,7 +41,6 @@ class EmployeeCustody(models.Model): } self.env['account.asset.operation'].create(data) - def asset_custody_release(self): for i in self.asset_line_ids: data = { @@ -62,28 +60,25 @@ class EmployeeCustody(models.Model): } self.env['account.asset.operation'].create(data) - def _asset_assign_count(self): self.asset_assign_count = len( self.env['asset.custody.line'].search([('asset_custody_line', '=', self.id)])) - def _asset_release_count(self): self.asset_release_count = len( self.env['asset.custody.line'].search([('asset_custody_line', '=', self.id)])) - def approve(self): if not self.asset_line_ids: raise exceptions.Warning(_('Please Select an asset')) self.create_asset_custody() self.write({'state': 'wait'}) - def done(self): self.asset_custody_release() self.state = "wait_release" + class EmployeeCustodyLine(models.Model): _name = 'asset.custody.line' @@ -96,6 +91,30 @@ class EmployeeCustodyLine(models.Model): asset_id = fields.Many2one('account.asset') asset_custody_line = fields.Many2one(comodel_name='custom.employee.custody') # Inverse field + @api.model + def create(self, vals): + res = super(EmployeeCustodyLine, self).create(vals) + if res.asset_id and res.asset_id.status in ['new', 'available']: + res.asset_id.write({'status': 'reserved'}) + return res + + def unlink(self): + asset_ids = self.mapped('asset_id').ids + result = super(EmployeeCustodyLine, self).unlink() + if result and asset_ids: + Asset = self.env['account.asset'] + CustodyLine = self.env['asset.custody.line'] + + for asset_id in asset_ids: + existing_custody = CustodyLine.search([('asset_id', '=', asset_id)], limit=1) + if not existing_custody: + asset = Asset.browse(asset_id) + if asset.exists() and asset.status == 'reserved': + asset.write({'status': 'available'}) + + return result + + class Followers(models.Model): _inherit = 'mail.followers' @@ -104,7 +123,7 @@ class Followers(models.Model): if 'res_model' in vals and 'res_id' in vals and 'partner_id' in vals: dups = self.env['mail.followers'].search( [('res_model', '=', vals.get('res_model')), ('res_id', '=', vals.get('res_id')), - ('partner_id', '=', vals.get('partner_id'))]) + ('partner_id', '=', vals.get('partner_id'))]) if len(dups): for p in dups: @@ -113,5 +132,3 @@ class Followers(models.Model): res = super(Followers, self).create(vals) return res - -