# -*- coding: utf-8 -*- # Copyright 2026 Nexa Systems Inc. # License OPL-1 (Odoo Proprietary License v1.0) # Part of the Fusion Plating product family. from odoo import api, fields, models class FpReceivingLine(models.Model): """Per-part-number receiving detail line. Tracks expected vs received quantity and condition for each distinct part number in the receiving record. """ _name = 'fp.receiving.line' _description = 'Fusion Plating — Receiving Line' _order = 'id' receiving_id = fields.Many2one( 'fp.receiving', string='Receiving', required=True, ondelete='cascade', ) part_catalog_id = fields.Many2one( 'fp.part.catalog', string='Part (Catalog)', ) part_number = fields.Char(string='Part Number') description = fields.Char(string='Description') expected_qty = fields.Integer(string='Expected Qty') received_qty = fields.Integer(string='Received Qty') condition = fields.Selection( [('good', 'Good'), ('damaged', 'Damaged'), ('mixed', 'Mixed')], string='Condition', default='good', ) notes = fields.Text(string='Notes') @api.depends('part_number', 'part_catalog_id', 'received_qty', 'expected_qty') def _compute_display_name(self): for rec in self: label = rec.part_number or rec.part_catalog_id.display_name or 'Receiving Line' qty = '%d/%d' % (rec.received_qty or 0, rec.expected_qty or 0) rec.display_name = '%s (%s)' % (label, qty)