odoo18/custom_addons/fixed_asset_management/models/asset_detail.py

42 lines
1.9 KiB
Python

from odoo import fields, models, api
from datetime import datetime
class AssetDetail(models.Model):
_name = "asset.detail"
_description = "Asset Detail"
_inherit = ['mail.thread', 'mail.activity.mixin']
name = fields.Char(string="Name")
asset_image = fields.Binary(string="Image")
category_id = fields.Many2one(comodel_name="asset.category", string="Category")
asset_code = fields.Char(string="Asset Code")
asset_model = fields.Char(string="Asset Model")
serial_no = fields.Char(string="Serial No.")
purchase_date = fields.Date(string="Purchase Date")
purchase_value = fields.Float(string="Purchase Value")
location_id = fields.Many2one(comodel_name="asset.location", string="Current Location")
# employee_id = fields.Many2one(comodel_name="hr.employee", string="Employee")
vendor_id = fields.Many2one(comodel_name="res.partner", string="Vendor")
warranty_start = fields.Date(string="Warranty Start")
warranty_end = fields.Date(string="Warranty End")
note = fields.Html(string="Note")
quantity = fields.Float('Quantity', default=1.0, copy=False, tracking=True)
state = fields.Selection([('draft', 'New'), ('active', 'Active'), ('scrap', 'Scrap')], string='State', default="draft")
@api.model_create_multi
def create(self, vals):
location_id = self.env["asset.location"].search([("is_default", "=", True)], limit=1)
vals["asset_code"] = self.env["ir.sequence"].next_by_code("asset.detail", sequence_date=datetime.now().year) or "New"
vals["location_id"] = location_id.id if location_id else None
return super(AssetDetail, self).create(vals)
def scrap_asset(self):
for asset_id in self:
location_id = self.env["asset.location"].search([("is_scrap", "=", True)], limit=1)
if location_id:
asset_id.state = "scrap"
def confirm_asset(self):
for asset_id in self:
asset_id.state = "active"