from odoo import fields, models, api import logging import random from odoo.exceptions import AccessError, UserError, ValidationError _logger = logging.getLogger(__name__) class CrmLead(models.Model): _inherit = "crm.lead" html_description = fields.Html(string="Descriptions") file_npwp = fields.Binary(string="Nomor Pokok Wajib Pajak") file_nib = fields.Binary(string="Nomor Induk Berusaha") file_tdp = fields.Binary(string="Tanda Daftar Perusahaan") file_siup = fields.Binary(string="Surat Izin Usaha Perdagangan") file_quotation = fields.Binary(string='Dokumen Quotation') body_html_lead = fields.Text('Body HTML', compute='compute_body_leads') # for wati only wati_notification_id = fields.One2many('wati.notification', 'lead_id', string='Wati Notification') ticket_id = fields.Char('Ticket ID', help='Ticket ID yang ada di WATI') operator_email = fields.Char('Operator Email', help='Operator yang membalas') operator_name = fields.Char('Operator Name', help='Operator yang membalas') order_id = fields.Many2one('sale.order', string='Sales Order', help='Link ke sales order id') @api.onchange('user_id') def _change_salesperson_so(self): if self.order_id: self.order_id.user_id = self.user_id def revert_to_leads(self): opportunities = self.env['crm.lead'].search([ ('type', '=', 'opportunity'), ('active', '=', True), ('user_id', '=', False), ]) for opportunity in opportunities: opportunity.type = 'lead' @api.onchange('stage_id') def update_stars(self): for lead in self: lead.priority = 0 def compute_body_leads(self): for lead in self: mail_message = self.env['mail.message'].search([ ('res_id', '=', lead.id), ('model', '=', 'crm.lead'), ('message_type', '=', 'email') ], limit=1) lead.body_html_lead = mail_message.body or '' def _update_tags_leads(self): leads = self.env['crm.lead'].search([ ('active', '=', True), ('type', '=', 'lead'), ('tag_ids', '=', False), ], limit=1000) for lead in leads: _logger.info('processing tagged lead %s' % lead.id) input_tags = [] if lead.order_id: last_manufacture_id = 0 for line in lead.order_id.order_line: tag = self.env['crm.tag'].search([('name', 'ilike', line.product_id.product_tmpl_id.x_manufacture.x_name)], limit=1) if tag and tag.id != last_manufacture_id: last_manufacture_id = tag.id input_tags.append(tag.id) input_tags.append(1509) #Website hastag lead.tag_ids = input_tags else: tags = self.env['crm.tag'].search([('id', '>', 0)]) for tag in tags: if tag.name.lower() in lead.body_html_lead.lower(): input_tags.append(tag.id) if input_tags: lead.tag_ids = input_tags else: input_tags.append(1510) #no tag lead.tag_ids = input_tags salesperson_id = 2 partner = lead.partner_id.parent_id or lead.partner_id if partner.user_id and partner.user_id.id not in [25]: salesperson_id = partner.user_id.id lead.user_id = salesperson_id