# -*- coding: utf-8 -*- # Copyright 2026 Nexa Systems Inc. # License OPL-1 (Odoo Proprietary License v1.0) from odoo import api, fields, models, _ class ResPartner(models.Model): _inherit = 'res.partner' x_fc_part_catalog_ids = fields.One2many( 'fp.part.catalog', 'partner_id', string='Part Catalog', ) x_fc_part_count = fields.Integer( string='Parts', compute='_compute_part_count', ) def _compute_part_count(self): for partner in self: partner.x_fc_part_count = self.env['fp.part.catalog'].search_count([ ('partner_id', '=', partner.id), ('is_latest_revision', '=', True), ]) def action_view_parts(self): self.ensure_one() return { 'type': 'ir.actions.act_window', 'name': f'Parts — {self.name}', 'res_model': 'fp.part.catalog', 'view_mode': 'list,form', 'domain': [('partner_id', '=', self.id), ('is_latest_revision', '=', True)], 'context': {'default_partner_id': self.id}, 'target': 'current', } def action_fp_import_parts(self): """Open the CSV import wizard with this partner pre-selected.""" self.ensure_one() return { 'type': 'ir.actions.act_window', 'name': _('Import Parts from CSV'), 'res_model': 'fp.part.catalog.import.wizard', 'view_mode': 'form', 'target': 'new', 'context': {'default_partner_id': self.id}, } def action_fp_new_direct_order(self): """Open the Direct Order wizard with this partner pre-selected.""" self.ensure_one() return { 'type': 'ir.actions.act_window', 'name': _('New Direct Order'), 'res_model': 'fp.direct.order.wizard', 'view_mode': 'form', 'target': 'new', 'context': {'default_partner_id': self.id}, }