Files
Odoo-Modules/fusion-plating/fusion_plating_compliance/models/fp_pollutant_inventory.py
gsinghpal be611876ad changes
2026-04-12 09:09:50 -04:00

52 lines
2.5 KiB
Python

# -*- coding: utf-8 -*-
# Copyright 2026 Nexa Systems Inc.
# License OPL-1 (Odoo Proprietary License v1.0)
from odoo import api, fields, models
class FpPollutantInventory(models.Model):
_name = 'fusion.plating.pollutant.inventory'
_description = 'Fusion Plating - Pollutant Inventory Entry'
_order = 'year desc, facility_id, substance'
name = fields.Char(string='Reference', compute='_compute_name', store=True)
year = fields.Integer(string='Year', required=True, default=lambda s: fields.Date.context_today(s).year)
facility_id = fields.Many2one('fusion.plating.facility', string='Facility', required=True, ondelete='cascade')
company_id = fields.Many2one('res.company', related='facility_id.company_id', store=True, readonly=True)
substance = fields.Char(string='Substance', required=True)
cas_number = fields.Char(string='CAS #')
manufactured_kg = fields.Float(string='Manufactured (kg)', digits=(16, 3))
processed_kg = fields.Float(string='Processed (kg)', digits=(16, 3))
used_kg = fields.Float(string='Used (kg)', digits=(16, 3))
released_kg = fields.Float(string='Released (kg)', digits=(16, 3))
transferred_kg = fields.Float(string='Transferred (kg)', digits=(16, 3))
threshold_kg = fields.Float(string='Threshold (kg)')
threshold_exceeded = fields.Boolean(string='Threshold Exceeded', compute='_compute_threshold_exceeded', store=True)
notes = fields.Text(string='Notes')
_sql_constraints = [
('fp_pollutant_inv_uniq', 'unique(facility_id, year, substance)',
'Pollutant inventory must be unique per facility / year / substance.'),
]
@api.depends('year', 'substance', 'facility_id')
def _compute_name(self):
for rec in self:
parts = []
if rec.year:
parts.append(str(rec.year))
if rec.substance:
parts.append(rec.substance)
if rec.facility_id:
parts.append(rec.facility_id.code or rec.facility_id.name or '')
rec.name = ' / '.join(p for p in parts if p) or '/'
@api.depends('manufactured_kg', 'processed_kg', 'used_kg', 'threshold_kg')
def _compute_threshold_exceeded(self):
for rec in self:
if rec.threshold_kg and rec.threshold_kg > 0:
total = (rec.manufactured_kg or 0.0) + (rec.processed_kg or 0.0) + (rec.used_kg or 0.0)
rec.threshold_exceeded = total >= rec.threshold_kg
else:
rec.threshold_exceeded = False