acc_crm_lead.py
6.3 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
# -*- coding: utf-8 -*-
import logging
from odoo import api, SUPERUSER_ID, fields, models, _
import logging
from datetime import datetime
from odoo.exceptions import UserError, ValidationError
import re
_logger = logging.getLogger(__name__)
class AccCrmLead(models.Model):
"""
库存移动继承
"""
_inherit = "crm.lead"
contact_id = fields.Many2one('res.partner',string='联系人')
acc_quotation_id = fields.Many2one('acc.quotation',string='挚锦报价单',readonly=True)
last_contact = fields.Char(string='最终用户')
def search(self, args, offset=0, limit=None, order=None, count=False):
args = args or []
if self._uid == 2:
return super(AccCrmLead, self).search(args, offset, limit, order, count)
# 管理部门
elif self.env.user.has_group('acct_base.acc_manage_level1_group'):
return super(AccCrmLead, self).search(args, offset, limit, order, count)
# 销售部经理
elif self.env.user.has_group('acct_base.unovo_it_info_group'):
uids = self.get_department(self._uid)
args.extend([('user_id', 'in', uids)])
return super(AccCrmLead, self).search(args, offset, limit, order, count)
# 普通员工
else:
args.extend([('user_id', '=', self._uid)])
return super(AccCrmLead, self).search(args, offset, limit, order, count)
@api.multi
def get_department(self,user_id):
department_ids = []
employee_id = self.env['hr.employee'].search([('user_id', '=', user_id)])
department_id = self.env['hr.department'].search([('manager_id', '=', employee_id.id)])
if department_id:
for did in department_id:
department_ids.append(did.id)
# department_name = department_id.name
# if department_name in ['销售一部','销售二部','销售三部']:
uids = self.make_sale_uid(department_ids,user_id)
return uids
@api.multi
def make_sale_uid(self,department_ids,user_id):
all_ids = []
cr = self.env.cr
all_total = """ SELECT
ru.id as uid
FROM
hr_employee he
LEFT JOIN res_users ru ON he.user_id = ru. ID
WHERE
department_id in %s """
# cr.execute(all_total)
cr.execute(all_total, (tuple(department_ids),))
result = cr.dictfetchall()
for line in result:
all_ids.append(line['uid'])
all_ids.append(user_id)
return tuple(all_ids)
@api.multi
def acc_quotation_list(self):
domain = [('crm_lead_id', '=', self.id)]
return {
'name': _('挚锦报价单'),
'domain': domain,
'res_model': 'acc.quotation',
'type': 'ir.actions.act_window',
'view_id': False,
'view_mode': 'tree,form',
'view_type': 'form',
'limit': 80,
'context': "{'crm_lead_id': %d}" % (self.id)
}
@api.model
def create(self,vals):
res = super(AccCrmLead, self).create(vals)
if vals.get('user_id'):
toaddrs = []
toaddrs.append(res.user_id.login)
toaddrs.append(self.env['res.users'].browse(self._uid).login)
# toaddrs = ['jie.dong@neotel-technology.com']
subjects = "商机{}创建".format(res.name)
message = "商机“{}”,关联客户“{}”,销售员“{}”,已在系统创建,详细信息请在erp系统中查看".format(res.name,res.partner_id.name,res.user_id.partner_id.name)
self.env['acc.tools'].send_report_email(subjects,message,toaddrs)
# create = True
self.sent(vals,res,create=True)
return res
@api.multi
def write(self, vals):
# _logger.debug('===========%s===============',res)
if vals.get('user_id'):
changeuser = self.env['res.users'].browse(vals.get('user_id'))
toaddrs = []
toaddrs.append(changeuser.login)
toaddrs.append(self.env['res.users'].browse(self._uid).login)
# toaddrs = ['jie.dong@neotel-technology.com']
subjects = "商机{}变更提醒".format(self.name)
message = "商机“{}”,关联客户“{}”,销售员已变更为“{}”,详细信息请在erp系统中查看".format(self.name,self.partner_id.name,changeuser.partner_id.name)
self.env['acc.tools'].send_report_email(subjects,message,toaddrs)
# create = False
self.sent(vals,res=True,create=False)
res = super(AccCrmLead, self).write(vals)
return res
@api.multi
def sent(self,vals,res,create):
if create:
contact_name = res.user_id.partner_id.name
contact_mobile = res.user_id.partner_id.mobile
partner_name = res.partner_id.name
topic = res.name
else:
changeuser = self.env['res.users'].browse(vals.get('user_id'))
contact_name = changeuser.partner_id.name
contact_mobile = changeuser.partner_id.mobile
partner_name = self.partner_id.name
topic = self.name
if not contact_mobile:
raise ValidationError('销售员未填手机号,请填写销售员手机号')
# if not contact_title:
# raise ValidationError('联系人称呼未正确配置!')
ret = re.match(r"^1[35678]\d{9}$", contact_mobile)
if not ret:
raise ValidationError('销售员手机号填写格式不正确!')
if create:
text = 'erp系统商机新建提醒,商机' + '“' + topic + '”' + ',关联客户' +'“' + partner_name + '”' + '销售员' + '“' + contact_name + '”'
else:
text = 'erp系统商机更新提醒,商机' + '“' + topic + '”' + ',关联客户' +'“' + partner_name + '”' + '销售员已变更为' + '“' + contact_name + '”'
vals = {
'topic':topic,
'user_name':contact_name,
'phone':contact_mobile,
'name':text
}
message = self.env['acc.message.interface'].sudo().create(vals)
message.sms_send()
# self.filtered(lambda r: r.state == 'draft').write({'state': 'sent','customer_state': 'sent'})
return True