from odoo import fields, models, api import logging import json _logger = logging.getLogger(__name__) class WatiNotification(models.Model): _name = 'wati.notification' json_raw = fields.Char(string='JSON Raw Text') is_lead = fields.Boolean(string='To Leads', help='apakah sudah ter-convert jadi leads') def _convert_to_leads(self): query = [ ('is_lead', '=', False) ] watis = self.env['wati.notification'].search(query, order='id') for wati in watis: _logger.info('Convert Lead ID %s' % wati.id) ticket_id = json.loads(wati.json_raw)['ticketId'] text = json.loads(wati.json_raw)['text'] current_lead = self.env['crm.lead'].search([('ticket_id', '=', ticket_id)], limit=1) operator_email = json.loads(wati.json_raw)['operatorEmail'] operator_name = json.loads(wati.json_raw)['operatorName'] if current_lead: # must append internal notes as a reply here current_lead.description = str(current_lead.description) + "|" +str(text) current_lead.operator_email = operator_email current_lead.operator_name = operator_name wati.is_lead = True else: # create new leads contact_name = json.loads(wati.json_raw)['senderName'] phone = json.loads(wati.json_raw)['waId'] name = 'Ada pesan dari WATI '+str(phone)+' '+str(contact_name) self.env['crm.lead'].create([{ 'name': name, 'ticket_id': ticket_id, 'operator_email': operator_email, 'operator_name': operator_name, 'contact_name': contact_name, 'phone': phone, 'description': text }]) wati.is_lead = True