Slink/sos_inventory/models/sos_aodr.py

66 lines
2.5 KiB
Python
Executable File

# -*- coding: utf-8 -*-
from odoo import models, fields, api
import re
class sos__aodr(models.Model):
_name = 'sos_aodr'
_description = 'Accept on Deviation Record '
_rec_name = 'aodr_no'
aodr_no = fields.Char(string="AODR No", readonly= True, required= True, default=lambda self: self._generate_id())
aodr_date = fields.Date(string="AODR Date")
source_of_deviation = fields.Many2one('selection_item', string='Source of Deviation')
fg_name = fields.Many2one('sos_fg',string="FG Name")
qp_no = fields.Char(related="fg_name.qp_no", string="QP No")
batch_no = fields.Char(string="Batch No")
doc_ref_no = fields.Many2one('sos_ncmr',string="NCMR Ref No")
problem_cause = fields.Text(string="Description of Cause of Problem")
identified_by = fields.Many2one('res.users', string='Authorised By')
identified_sign_image = fields.Image(related="identified_by.signature_image",string='Authorised Signatory',readonly=True)
reviewer_comments = fields.Text(string="Reviewer Comments")
reviewed_by = fields.Many2one('res.users', string='Reviewd By')
reviewer_sign_image = fields.Image(related="reviewed_by.signature_image",string='Reviewer Signatory',readonly=True)
approval_name = fields.Many2one('res.users', string='Authorised By')
approval_image = fields.Image(related="approval_name.signature_image",string='Authorised Signatory',readonly=True)
def action_report_aodr_btn(self):
try:
action = self.env.ref("sos_inventory.action_report_aodr").report_action(self)
return action
except ValueError as e:
print(f"Failed to find report action: {e}")
def identified_by_sign_btn(self):
sequence_util = self.env['sos_common_scripts']
sequence_util.action_assign_signature(
self,
'identified_by'
)
def reviewed_by_sign_btn(self):
sequence_util = self.env['sos_common_scripts']
sequence_util.action_assign_signature(
self,
'reviewed_by'
)
def approved_by_sign_btn(self):
sequence_util = self.env['sos_common_scripts']
sequence_util.action_assign_signature(
self,
'approval_name'
)
def _generate_id(self):
sequence_util = self.env['sos_common_scripts']
return sequence_util.generate_sequence('sos_aodr','AODR', 'aodr_no')
class SelectionItem(models.Model):
_name = 'selection_item'
_description = 'Selection Item'
name = fields.Char(string='Name', required=True)