82 lines
2.6 KiB
Python
82 lines
2.6 KiB
Python
# -*- 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 fields, models
|
|
|
|
|
|
class FpN299Level(models.Model):
|
|
"""CSA N299 Quality Assurance Level.
|
|
|
|
CSA N299 is the Canadian Standards Association standard covering
|
|
quality assurance program requirements for items and services
|
|
supplied to nuclear power plants. It defines four levels of quality
|
|
programs keyed to the safety classification of the supplied item:
|
|
|
|
Level 1 — Safety-critical items (highest)
|
|
Level 2 — Safety-related items
|
|
Level 3 — Items important to safety
|
|
Level 4 — Commercial grade (lowest)
|
|
|
|
The level drives how long nuclear quality records must be retained
|
|
(life-of-plant on the highest levels, commercial norms on the lowest)
|
|
and how rigorous the supplier's quality program must be.
|
|
"""
|
|
_name = 'fusion.plating.n299.level'
|
|
_description = 'Fusion Plating — CSA N299 Quality Level'
|
|
_order = 'level_number, code'
|
|
|
|
name = fields.Char(
|
|
string='Level',
|
|
required=True,
|
|
translate=True,
|
|
)
|
|
code = fields.Char(
|
|
string='Code',
|
|
required=True,
|
|
help='Short identifier, e.g. N299_L1.',
|
|
)
|
|
level_number = fields.Integer(
|
|
string='Level Number',
|
|
required=True,
|
|
help='1 (highest, safety-critical) to 4 (commercial grade).',
|
|
)
|
|
description = fields.Text(
|
|
string='Description',
|
|
translate=True,
|
|
)
|
|
retention_years = fields.Integer(
|
|
string='Retention (Years)',
|
|
required=True,
|
|
default=40,
|
|
help='Default records-retention period for this level. Canadian nuclear '
|
|
'quality records are typically retained for 40 years or longer at '
|
|
'the highest levels — often "life of plant".',
|
|
)
|
|
safety_classification = fields.Selection(
|
|
[
|
|
('safety_critical', 'Safety-critical'),
|
|
('safety_related', 'Safety-related'),
|
|
('important_to_safety', 'Important to safety'),
|
|
('commercial_grade', 'Commercial grade'),
|
|
],
|
|
string='Safety Classification',
|
|
required=True,
|
|
default='safety_critical',
|
|
)
|
|
active = fields.Boolean(default=True)
|
|
|
|
_sql_constraints = [
|
|
(
|
|
'fp_n299_level_code_uniq',
|
|
'unique(code)',
|
|
'N299 level code must be unique.',
|
|
),
|
|
(
|
|
'fp_n299_level_number_uniq',
|
|
'unique(level_number)',
|
|
'N299 level number must be unique.',
|
|
),
|
|
]
|