Slink/sos_inventory/models/sos_prf.py

80 lines
3.8 KiB
Python
Executable File

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"""
<p>Below <b>PRF</b> got approved</p>
"""
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"""
<p>Below <b>PRF</b> is waiting for your Approval</p>
"""
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"""
<p>Below <b>PRF</b> is waiting for your Approval</p>
"""
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")