Untitled
unknown
plain_text
2 months ago
25 kB
2
Indexable
# -*- coding: utf-8 -*- from odoo import models, fields, api, _ from datetime import date, datetime, timedelta from odoo.exceptions import UserError class sales_stage(models.Model): _inherit = "sale.order" sale_type = fields.Selection([('standard','Standard'),('non_standard','Non-Standard')],required=True) state = fields.Selection(selection_add=[("pre_waiting_otf","Waiting For OTF"),("pre_ct","Pre CT Partner Approval"),("pre_tst", "Pre TST approval"),("pre_cf_executive", "Pre C&F Executive"),("pre_cf_head","Pre C&F Head"),("pre_cf", "Pre C&F approval"),("pre_md", "Pre MD approval"),("waiting_otf","Waiting For OTF"),("ct_approve", "CT partner approval"),("tst_approve", "TST approval"),("cf_executive", "C&F Executive"),("cf_head", "C&F Head"), ("cf_approve", "C&F approval"),("md_approve", "MD approval"),("ct_approve_email", "CT partner Approval"),("tst_approve_email", "TST Approval"),("cf_executive_email", "C&F Executive Approval"),("cf_head_email", "C&F Head Approval"), ("cf_approve_email", "C&F Approval"),("md_approve_email", "MD Approval"),("internal","Internal Meeting"),('sale','Work Order')]) requirement_ids = fields.One2many('sale.requirement', 'req_id') req_id = fields.Char('test') is_workorder = fields.Boolean("Work Order?",default=True) state_email = fields.Selection([('draft', 'Quotation'), ('sent', 'Quotation Sent'), ('sale', 'Sales Order'), ('done', 'Locked'), ('cancel', 'Cancelled'), ("pre_ct","Pre CT Partner Approval"),("pre_tst", "Pre TST approval"),("pre_cf_executive", "Pre C&F Executive"),("pre_cf_head","Pre C&F Head"),("pre_cf", "Pre C&F approval"),("pre_md", "Pre MD approval"),("pre_waiting_otf","Waiting For OTF"),("waiting_otf","Waiting For OTF"),("ct_approve", "CT partner approval"),("tst_approve", "TST approval"), ("cf_approve", "C&F approval"),("md_approve", "MD approval"),("ct_approve_email", "CT partner Approval"),("tst_approve_email", "TST Approval"),("cf_executive_email", "C&F Executive Approval"),("cf_head_email", "C&F Head Approval"), ("cf_approve_email", "C&F Approval"),("md_approve_email", "MD Approval"),("internal","Internal Meeting"),('sale','Work Order')], related='state', tracking=False, string="State Email") state_wo = fields.Selection([('draft', 'Quotation'), ('sent', 'Quotation Sent'), ('sale', 'Sales Order'), ('done', 'Locked'), ('cancel', 'Cancelled'), ("pre_ct","Pre CT Partner Approval"),("pre_tst", "Pre TST approval"),("pre_cf", "Pre C&F approval"),("pre_md", "Pre MD approval"),("waiting_otf","Waiting For OTF"),("ct_approve", "CT partner approval"),("tst_approve", "TST approval"),("cf_executive", "C&F Executive"),("cf_head", "C&F Head"), ("cf_approve", "C&F approval"),("md_approve", "MD approval"),("ct_approve_email", "CT partner Approval"),("tst_approve_email", "TST Approval"), ("cf_approve_email", "C&F Approval"),("md_approve_email", "MD Approval"),("internal","Internal Meeting"),('sale','Work Order')], related='state', tracking=False, string="State WO") # fields for reject reason reason_id= fields.Char(string="CT Partner Reject") action_id= fields.Char(string="TST Reject") cf_executive= fields.Char(string="C&F Reject") cf_reject= fields.Char(string="C&F Head Reject") md_reject= fields.Char(string="MD Reject") ct_email= fields.Char(string="CT Email Reject") tst_email= fields.Char(string="TST Email Reject") cf_executive_email= fields.Char(string="C&F Email Reject") cf_approve_email= fields.Char(string="C&F Approve Email") md_email= fields.Char(string="MD Approve Email") is_pre_ct_approval = fields.Char('Pre CT Reject') is_pre_tst_approval = fields.Char('Pre TST Reject') is_pre_cf_executive = fields.Char('Pre CF Reject') is_pre_cf_approval = fields.Char('Pre CF Reject') is_pre_md_approval = fields.Char('Pre MD Reject') date1 = fields.Datetime('Date') date2 = fields.Datetime('Date') date3 = fields.Datetime('Date') date4 = fields.Datetime('Date') date5 = fields.Datetime('Date') date6 = fields.Datetime('Date') date7 = fields.Datetime('Date') date8 = fields.Datetime('Date') date9 = fields.Datetime('Date') date10 = fields.Datetime('Date') date11 = fields.Datetime('Date') date12 = fields.Datetime('Date') date13 = fields.Datetime('Date') date14 = fields.Datetime('Date') date15 = fields.Datetime('Date') # ------------------------------------ def check_quotation_date(self): sale = self.env['sale.order'].search([]) for rec in sale: if rec.date_order: days = int(self.env['ir.config_parameter'].sudo().get_param("base.sale_expire_days")) expire_date = datetime.date(rec.date_order) + timedelta(days=days) if (expire_date <= date.today()) and (rec.state in ['pre_ct','pre_tst','pre_cf']): rec.state = 'pre_md' elif (expire_date <= date.today()) and (rec.state in ['ct_approve','tst_approve','cf_approve']): rec.state = 'md_approve' elif (expire_date <= date.today()) and (rec.state in ['ct_approve_email','tst_approve_email','cf_approve_email']): rec.state = 'md_approve_email' if not rec.create_uid.approve_md: raise UserError(_('Please assign MD in User Configuration.')) rec.check_sale_state(rec) def check_sale_state(self,rec): sale = self.env['sale.order'].search([]) days = int(self.env['ir.config_parameter'].sudo().get_param("base.sale_expire_days")) expire_date = datetime.date(rec.date_order) + timedelta(days=days) if (expire_date <= date.today()) and (rec.state in ['pre_md','md_approve','md_approve_email']): mail_template = self.env.ref('sales_stage.sale_md_escalation_email_template') mail_template.send_mail(self.id, force_send=True) users = rec.create_uid.approve_md.id if rec.state == 'pre_md': rec.activity_schedule('sales_stage.mail_act_sale_stage', user_id=users, note="Pre MD Approval Done") else: rec.activity_schedule('sales_stage.mail_act_sale_stage', user_id=users, note="MD Approval Done") def button_ct_approval(self): if not self.block_no or not self.build_area or not self.floor_no or not self.rating_version or not self.construction_start_date or not self.construction_end_date or not self.occupancy_date or not self.rating_target or not self.project_address or not self.statutory_obligation or not self.project_stage_during_otf_creation: raise UserError(_('Project Details are Mandatory to Generate OTF')) if self.calculated_amount_travel>0: if not self.travel_line_ids: raise UserError(_('Travel Details are Mandatory ')) view_id = self.env.ref('wizard_sale.sale_report_wizard') result = { 'type': 'ir.actions.act_window', 'res_model': 'ordertype.test', 'view_type': 'tree', 'view_mode': 'form', 'target': 'new', 'view_id': view_id.id, 'views': [(view_id.id, 'form')], 'context': {'default_saleorder_id':self.id} } # self.write({'state': 'ct_approve'}) return result def waiting_otf_button(self): self.otf_prepared_by=self.user_id.name self.ct_approved_date=datetime.today() template_id = self.env.ref('sales_stage.sale_state_approve_template').id template = self.env['mail.template'].browse(template_id) template.send_mail(self.id, force_send=True) self.state = 'ct_approve' def pre_waiting_otf_button(self): users = self.user_id.approve_ct.id template_id = self.env.ref('sales_stage.sale_state_approve_template').id template = self.env['mail.template'].browse(template_id) template.send_mail(self.id, force_send=True) self.activity_schedule('sales_stage.mail_act_sale_stage', user_id=users, note="Pre CT Approval") self.state = 'pre_ct' @api.model def get_email_to_members(self): users = self.user_id.approve_ct.name print("Approveeee Cttttttttt",users) return users # def button_otf_generate(self): # @api.depends('state') # def cancel_button_invisible(self): # for rec in self: # wiz_obj = self.env['ordertype.test'].search([('saleorder_id','=',rec.id)]) # if wiz_obj.confirm_id == 'work': # rec.test = True # elif wiz_obj.confirm_id == 'mail': # rec.write({'test':False}) # else: # rec.write({'test':False}) def button_ct_approval2(self): # result = super(sales_stage, self).action_confirm() if not self.total_site_area or not self.block_no or not self.build_area or not self.floor_no or not self.rating_version or not self.construction_start_date or not self.construction_end_date or not self.occupancy_date or not self.rating_target:#not self.service_required or raise UserError(_('Project Details are Mandatory to Generate OTF')) view_id = self.env.ref('wizard_sale.sale_report_wizard2') template_id = self.env.ref('sales_stage.sale_state_approve_template').id template = self.env['mail.template'].browse(template_id) template.send_mail(self.id, force_send=True) users = self.user_id.approve_ct.id self.activity_schedule('sales_stage.mail_act_sale_stage', user_id=users, note="CT Approval") result = { 'type': 'ir.actions.act_window', 'res_model': 'ordertype.test', 'view_type': 'tree', 'view_mode': 'form', 'target': 'new', 'view_id': view_id.id, 'views': [(view_id.id, 'form')], 'context': {'default_saleorder_id':self.id} } # self.write({'state': 'sale'}) return result def action_ct_approve(self): self.otf_checked_by=self.env.user.name self.partner_approved_date=datetime.today() template_id = self.env.ref('sales_stage.sale_cf_exe_state_approve_template').id template = self.env['mail.template'].browse(template_id) template.send_mail(self.id, force_send=True) if not self.user_id.approve_ct.id: raise UserError(_("CT Partner is mandatory")) users = self.user_id.approve_ct.id self.activity_schedule('sales_stage.mail_act_sale_stage', user_id=users, note="CT Approval") if self.sale_type == 'non_standard': self.state = 'tst_approve' else: self.state = 'cf_executive' # return self.write({'state': 'draft'}) def action_tst_approve(self): template_id = self.env.ref('sales_stage.sale_tst_state_approve_template').id template = self.env['mail.template'].browse(template_id) template.send_mail(self.id, force_send=True) users = self.user_id.approve_tst.id self.activity_schedule('sales_stage.mail_act_sale_stage', user_id=users, note="TST Approval") self.state = 'cf_executive' # def action_tst_reject(self): # return self.write({'state': 'draft'}) def action_cf_exe_approve(self): self.otf_commercials_checked_by=self.env.user.name self.cf_approved_date=datetime.today() # template_id = self.env.ref('sales_stage.sale_cf_state_approve_template').id # template = self.env['mail.template'].browse(template_id) # template.send_mail(self.id, force_send=True) template_id = self.env.ref('sales_stage.sale_cf_state_approve_template') template = self.env['mail.template'].browse(template_id.id) # Render the email template with specific record data rendered_template = template._render_template(template.body_html, 'sale.order', self.id) mail = { 'subject': "CF Approval", 'email_from': self.company_id.email, 'email_to': self.create_uid.approve_cf.email, 'auto_delete':True, # 'recipient_ids': [(6, 0, [v.id for v in email_to])], 'body_html': rendered_template, } print(mail,'maillllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllll') mail_create = self.env['mail.mail'].create(mail) mail_create.send() if not self.user_id.cf_execute.id: raise UserError(_("Executive is mandatory")) users = self.user_id.cf_execute.id self.activity_schedule('sales_stage.mail_act_sale_stage', user_id=users, note="CF Executive Approval") self.state = 'cf_approve' # def action_cf_exe_reject(self): # return self.write({'state': 'draft'}) # def action_cf_head_approve(self): # template_id = self.env.ref('sales_stage.sale_cf_exe_state_approve_template').id # template = self.env['mail.template'].browse(template_id) # template.send_mail(self.id, force_send=True) # users = self.user_id.cf_execute.id # self.activity_schedule('sales_stage.mail_act_sale_stage', user_id=users, note="CF Executive Head Approval") # self.state = 'cf_approve' # def action_cf_head_reject(self): # return self.write({'state': 'sent'}) def action_cf_approve(self): self.otf_commercials_approved_by=self.env.user.name self.action_cf_approved_date=datetime.today() template_id = self.env.ref('sales_stage.sale_md_state_approve_template').id template = self.env['mail.template'].browse(template_id) template.send_mail(self.id, force_send=True) if not self.user_id.approve_cf.id : raise UserError(_("CF Partner is mandatory")) users = self.user_id.approve_cf.id self.activity_schedule('sales_stage.mail_act_sale_stage', user_id=users, note="CF Approval") self.state = 'md_approve' @api.model def get_email_to_cf_approve(self): users = self.user_id.approve_cf.name print("ApproveeeeCF EXecuteeeeeeeeeee",users) return users # def action_cf_reject(self): # return self.write({'state': 'draft'}) def action_md_approve(self): self.otf_approved_by=self.env.user.name self.approved_date=datetime.today() if not self.user_id.approve_cf.id: raise UserError(_("CF Partner is mandatory")) users = self.user_id.approve_cf.id self.activity_schedule('sales_stage.mail_act_sale_stage', user_id=users, note="MD Approval") self.state = 'sale' template_id = self.env.ref('sales_stage_inherit.project_approval_mail_template').id template = self.env['mail.template'].browse(template_id) template.send_mail(self.id, force_send=True) # super(sales_stage, self).action_confirm() self.action_confirm() # def action_md_reject(self): # return self.write({'state': 'draft'}) def action_pre_ct_approve(self): if not self.user_id.approve_ct: raise UserError(_('Please assign CT Approver in User Configuration.')) template_id = self.env.ref('sales_stage.sale_pre_ct_approve_template').id template = self.env['mail.template'].browse(template_id) template.send_mail(self.id, force_send=True) users = self.user_id.approve_ct.id self.activity_schedule('sales_stage.mail_act_sale_stage', user_id=users, note="Pre CT Approval") if self.sale_type == 'non_standard': self.state = 'pre_tst' else: self.state = 'pre_cf_executive' # def action_pre_ct_reject(self): # return self.write({'state': 'draft'}) def action_pre_tst_approve(self): if not self.user_id.approve_tst: raise UserError(_('Please assign TST Approver in User Configuration.')) template_id = self.env.ref('sales_stage.sale_pre_tst_approve_template').id template = self.env['mail.template'].browse(template_id) template.send_mail(self.id, force_send=True) users = self.user_id.approve_tst.id self.activity_schedule('sales_stage.mail_act_sale_stage', user_id=users, note="Pre TST Approval") self.state = 'pre_cf_executive' # def action_pre_tst_reject(self): # return self.write({'state': 'draft'}) def action_pre_cf_execute_approve(self): if not self.user_id.cf_execute: raise UserError(_('Please assign CF executive in User Configuration.')) template_id = self.env.ref('sales_stage.sale_pre_cf_executive_approve_template').id template = self.env['mail.template'].browse(template_id) template.send_mail(self.id, force_send=True) users = self.user_id.cf_execute.id self.activity_schedule('sales_stage.mail_act_sale_stage', user_id=users, note="Pre CF Executive Approval") self.state = 'pre_cf' @api.model def get_email_to_cf_execute(self): users = self.user_id.cf_execute.name print("Approveeee Pre CF EXecuteeeeeeeeeee",users) return users # def action_pre_cf_execute_reject(self): # return self.write({'state': 'draft'}) # def action_pre_cf_head_approve(self): # if not self.user_id.cf_execute: # raise UserError(_('Please assign CF executive in User Configuration.')) # template_id = self.env.ref('sales_stage.sale_pre_cf_executive_approve_template').id # template = self.env['mail.template'].browse(template_id) # template.send_mail(self.id, force_send=True) # users = self.user_id.cf_execute.id # self.activity_schedule('sales_stage.mail_act_sale_stage', user_id=users, note="Pre CF Executive Approval") # self.state = 'pre_cf' # def action_pre_cf_head_reject(self): # return self.write({'state': 'sent'}) def get_url(self): baseurl=self.env['ir.config_parameter'].sudo().get_param('web.base.url') baseurl = baseurl+'/web#id=' +str(self.id) +'&model=sale.order&view_type=form' return baseurl def action_pre_cf_approve(self): if not self.user_id.approve_cf: raise UserError(_('Please assign CF Approver in User Configuration.')) template_id = self.env.ref('sales_stage.sale_pre_cf_approve_template').id template = self.env['mail.template'].browse(template_id) template.send_mail(self.id, force_send=True) users = self.user_id.approve_cf.id self.activity_schedule('sales_stage.mail_act_sale_stage', user_id=users, note="Pre CF Approval") self.state = 'pre_md' # def action_pre_cf_reject(self): # return self.write({'state': 'draft'}) def action_pre_md_approve(self): if not self.user_id.approve_md: raise UserError(_('Please assign MD in User Configuration.')) template_id = self.env.ref('sales_stage.sale_pre_md_approve_template').id template = self.env['mail.template'].browse(template_id) template.send_mail(self.id, force_send=True) users = self.user_id.approve_md.id self.activity_schedule('sales_stage.mail_act_sale_stage', user_id=users, note="Pre MD Approval") self.state = 'sale' result = super(sales_stage, self).action_confirm() self.is_workorder=False return result @api.model def get_email_to_pre_md(self): users = self.user_id.approve_md.name print("Approveeee Pre MD Testttttttttttttttttt",users) return users # def action_pre_md_reject(self): # return self.write({'state': 'draft'}) def action_ct_approve1(self): template_id = self.env.ref('sales_stage.sale_state_approve_template').id template = self.env['mail.template'].browse(template_id) template.send_mail(self.id, force_send=True) users = self.user_id.approve_ct.id self.activity_schedule('sales_stage.mail_act_sale_stage', user_id=users, note="CT Approval") if self.sale_type == 'non_standard': self.state = 'tst_approve_email' else: self.state = 'cf_executive_email' # def action_ct_reject1(self): # return self.write({'state': 'draft'}) def action_exe_approve1(self): template_id = self.env.ref('sales_stage.sale_cf_exe_state_approve_template').id template = self.env['mail.template'].browse(template_id) template.send_mail(self.id, force_send=True) users = self.user_id.cf_execute.id self.activity_schedule('sales_stage.mail_act_sale_stage', user_id=users, note="C&F Executive Approval") self.state = 'cf_approve_email' # def action_exe_reject1(self): # return self.write({'state': 'draft'}) # def action_cf_head_approve1(self): # template_id = self.env.ref('sales_stage.sale_cf_exe_state_approve_template').id # template = self.env['mail.template'].browse(template_id) # template.send_mail(self.id, force_send=True) # users = self.user_id.cf_execute.id # self.activity_schedule('sales_stage.mail_act_sale_stage', user_id=users, note="C&F Head Approval") # self.state = 'cf_approve_email' # def action_cf_head_reject1(self): # return self.write({'state': 'sent'}) def action_tst_approve1(self): template_id = self.env.ref('sales_stage.sale_tst_state_approve_template').id template = self.env['mail.template'].browse(template_id) template.send_mail(self.id, force_send=True) users = self.user_id.approve_cf.id self.activity_schedule('sales_stage.mail_act_sale_stage', user_id=users, note="TST Approval") self.state = 'cf_executive_email' # def action_tst_reject1(self): # return self.write({'state': 'draft'}) def action_cf_approve1(self): template_id = self.env.ref('sales_stage.sale_tst_state_approve_template').id template = self.env['mail.template'].browse(template_id) template.send_mail(self.id, force_send=True) users = self.user_id.approve_md.id self.activity_schedule('sales_stage.mail_act_sale_stage', user_id=users, note="CF Approval") self.state = 'md_approve_email' # def action_cf_reject1(self): # return self.write({'state': 'draft'}) def action_md_approve1(self): template_id = self.env.ref('sales_stage.sale_md_state_approve_template').id template = self.env['mail.template'].browse(template_id) template.send_mail(self.id, force_send=True) self.state = 'internal' # def action_md_reject1(self): # return self.write({'state': 'draft'}) def action_cancel_internal(self): self.state = 'cancel' # @api.depends('sale_type') # def _compute_hide(self): # if self.sale_type == 'standard': # self.hide = True # else: # self.hide = False class salesLine(models.Model): _name = "sale.requirement" req_id = fields.Many2one('sale.order') name = fields.Char("Name") desc = fields.Char("Description")
Editor is loading...
Leave a Comment