Files
2026-04-16 20:53:53 -04:00

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.',
),
]