from odoo import models, fields, api class SOS_prf(models.Model): _name = 'sos_prf' _description = 'Purchase Requisition Form' _rec_name = 'prf_no' _order = 'id desc' prf_no = fields.Char(string="PRF No", readonly= True, required= True, default=lambda self: self._generate_id()) prf_date = fields.Date(string="PRF Date", required=True, default=fields.Date.today) line_ids = fields.One2many('sos_prf_lines', 'ref_id', string="PRF Lines",copy=True) requested_by_name = fields.Many2one('res.users', string='Requested by') requested_by_image = fields.Image(related="requested_by_name.signature_image",string='Requested by Sign',readonly=True) requested_on = fields.Datetime(string="Requested On") dept_in_charge_name = fields.Many2one('res.users', string='Department In-Charge') dept_in_charge_image = fields.Image(related="dept_in_charge_name.signature_image",string='Department In-Charge Sign',readonly=True) dept_in_charge_approved_on = fields.Datetime(string="Approved On") top_management_name = fields.Many2one('res.users', string='Top Management Approver') top_management_approval_image = fields.Image(related="top_management_name.signature_image",string='Top Management Approval',readonly=True) top_management_approved_on = fields.Datetime(string="Approved On") status = fields.Selection([('open', 'Open'),('close', 'Closed')], default='open' , string="Status") def action_top_esign_btn(self): sequence_util = self.env['sos_common_scripts'] subject = f"PRF Approved - {self.prf_no}" body_html = f"""
Below PRF got approved
""" sequence_util.send_direct_email(self.env,"sos_prf",self.id,"praveenkumar.m@sosaley.com",subject,body_html) sequence_util.action_assign_signature( self, 'top_management_name', 'top_management_approved_on', 'sos_inventory.sos_management_user' ) def action_dept_esign_btn(self): # Email part body_html = f"""Below PRF is waiting for your Approval
""" sequence_util = self.env['sos_common_scripts'] subject = f"PRF Approval Request - {self.prf_no}" sequence_util.send_direct_email(self.env,"sos_prf",self.id,"ramachandran.r@sosaley.com",subject,body_html) # Email part ends sequence_util.action_assign_signature( self, 'dept_in_charge_name', 'dept_in_charge_approved_on', 'sos_inventory.sos_scg_group_manager' ) def action_stores_esign_btn(self): # Email part body_html = f"""Below PRF is waiting for your Approval
""" sequence_util = self.env['sos_common_scripts'] sequence_util.send_group_email(self.env,'sos_prf',self.id,"deenalaura.m@sosaley.in","PRF Approval Request",body_html,'sos_inventory.sos_scg_group_manager') # Email part ends sequence_util.action_assign_signature( self, 'requested_by_name', 'requested_on', 'sos_inventory.sos_scg_group_user' ) def _generate_id(self): sequence_util = self.env['sos_common_scripts'] return sequence_util.generate_sequence('sos_prf','PRF', 'prf_no') class SOS_prf_Lines(models.Model): _name = 'sos_prf_lines' _description = 'Purchase Requisition Form Lines' ref_id = fields.Many2one('sos_prf', string="PRF", ondelete="cascade") com_type = fields.Selection([('exits', 'In-stock'),('new', 'New')], string="Availability", default='exits') component_id = fields.Many2one('sos_material', string="Material Name") new_component_id = fields.Char(string="New Part No") qty = fields.Integer(string="Required Qty") req_date = fields.Date(string="Required Date") mon_ref_no = fields.Many2one('sos_mon',string="MON Ref No")