# -*- coding: utf-8 -*- # Copyright 2026 Nexa Systems Inc. # License OPL-1 (Odoo Proprietary License v1.0) from odoo import api, fields, models from odoo.addons.fusion_plating.models._fp_uom_selection import FP_UOM_SELECTION class FpWasteManifest(models.Model): _name = 'fusion.plating.waste.manifest' _description = 'Fusion Plating - Waste Manifest' _inherit = ['mail.thread', 'mail.activity.mixin'] _order = 'ship_date desc, id desc' name = fields.Char(string='Reference', required=True, copy=False, default=lambda s: s._default_name(), tracking=True) waste_stream_id = fields.Many2one('fusion.plating.waste.stream', string='Waste Stream', required=True, ondelete='restrict', tracking=True) facility_id = fields.Many2one('fusion.plating.facility', related='waste_stream_id.facility_id', store=True, readonly=True) company_id = fields.Many2one('res.company', related='facility_id.company_id', store=True, readonly=True) ship_date = fields.Date(string='Ship Date', default=fields.Date.context_today, tracking=True) quantity = fields.Float(string='Quantity', digits=(16, 3), help='Quantity shipped, expressed in the unit selected below.') uom = fields.Selection(FP_UOM_SELECTION, string='UoM', default='kg', help='Unit of the shipped quantity (kg, L, m³, etc.).') carrier_id = fields.Many2one('res.partner', string='Carrier', domain=[('is_company', '=', True)], tracking=True) receiver_id = fields.Many2one('res.partner', string='Receiver', domain=[('is_company', '=', True)], tracking=True) manifest_number = fields.Char(string='Manifest #', tracking=True) state = fields.Selection( [('draft', 'Draft'), ('shipped', 'Shipped'), ('received', 'Received'), ('closed', 'Closed')], string='Status', default='draft', required=True, tracking=True, ) attachment_ids = fields.Many2many( 'ir.attachment', 'fp_waste_manifest_attachment_rel', 'manifest_id', 'attachment_id', string='Attachments', ) notes = fields.Html(string='Notes') @api.model def _default_name(self): seq = self.env['ir.sequence'].next_by_code('fusion.plating.waste.manifest') return seq or '/' def action_ship(self): self.write({'state': 'shipped'}) def action_receive(self): self.write({'state': 'received'}) def action_close(self): self.write({'state': 'closed'})