[MERGE] Merge res.partner.address from crm reatled module

bzr revid: sbh@tinyerp.com-20120307095644-ah9pasc3ksg4qkcv
This commit is contained in:
Bhumika (OpenERP)
2012-03-07 15:26:44 +05:30
19 changed files with 32 additions and 109 deletions
+3 -5
View File
@@ -60,7 +60,6 @@ class crm_lead(crm_case, osv.osv):
'stage_id': _read_group_stage_ids
}
# overridden because res.partner.address has an inconvenient name_get,
# especially if base_contact is installed.
def name_get(self, cr, user, ids, context=None):
if isinstance(ids, (int, long)):
@@ -147,7 +146,6 @@ class crm_lead(crm_case, osv.osv):
return res
_columns = {
# Overridden from res.partner.address:
'partner_id': fields.many2one('res.partner', 'Partner', ondelete='set null',
select=True, help="Optional linked partner, usually after conversion of the lead"),
@@ -172,7 +170,7 @@ class crm_lead(crm_case, osv.osv):
'contact_name': fields.char('Contact Name', size=64),
'partner_name': fields.char("Customer Name", size=64,help='The name of the future partner company that will be created while converting the lead into opportunity', select=1),
'optin': fields.boolean('Opt-In', help="If opt-in is checked, this contact has accepted to receive emails."),
'optout': fields.boolean('Opt-Out', help="If opt-out is checked, this contact has refused to receive emails or unsubscribed to a campaign."),
'opt_out': fields.boolean('Opt-Out', help="If opt-out is checked, this contact has refused to receive emails or unsubscribed to a campaign."),
'type':fields.selection([ ('lead','Lead'), ('opportunity','Opportunity'), ],'Type', help="Type is used to separate Leads and Opportunities"),
'priority': fields.selection(crm.AVAILABLE_PRIORITIES, 'Priority', select=True),
'date_closed': fields.datetime('Closed', readonly=True),
@@ -233,10 +231,10 @@ class crm_lead(crm_case, osv.osv):
return {'value': {'email_from': address.email, 'phone': address.phone, 'country_id': address.country_id.id}}
def on_change_optin(self, cr, uid, ids, optin):
return {'value':{'optin':optin,'optout':False}}
return {'value':{'optin':optin,'opt_out':False}}
def on_change_optout(self, cr, uid, ids, optout):
return {'value':{'optout':optout,'optin':False}}
return {'value':{'opt_out':optout,'optin':False}}
def onchange_stage_id(self, cr, uid, ids, stage_id, context={}):
if not stage_id:
+2 -2
View File
@@ -186,7 +186,7 @@
<group colspan="2" col="2">
<separator string="Mailings" colspan="2" col="2"/>
<field name="optin" on_change="on_change_optin(optin)"/>
<field name="optout" on_change="on_change_optout(optout)"/>
<field name="opt_out" on_change="on_change_optout(opt_out)"/>
</group>
<group colspan="2" col="2">
<separator string="Statistics" colspan="2" col="2"/>
@@ -539,7 +539,7 @@
<group colspan="2" col="2">
<separator string="Mailings" colspan="2"/>
<field name="optin" on_change="on_change_optin(optin)"/>
<field name="optout" on_change="on_change_optout(optout)"/>
<field name="opt_out" on_change="on_change_optout(opt_out)"/>
</group>
</page>
<page string="Communication &amp; History" groups="base.group_extended">
-2
View File
@@ -26,13 +26,11 @@ access_crm_case_resource_type_manager,crm_case_resource_type manager,model_crm_c
access_crm_phonecall_report_user,crm.phonecall.report.user,model_crm_phonecall_report,base.group_sale_salesman,1,0,0,0
access_crm_phonecall_report_manager,crm.phonecall.report,model_crm_phonecall_report,base.group_sale_manager,1,1,1,1
access_res_partner_manager,res.partner.crm.manager,base.model_res_partner,base.group_sale_manager,1,0,0,0
access_res_partner_address_manager,res.partner.address.crm.user.manager,base.model_res_partner_address,base.group_sale_manager,1,0,0,0
access_res_partner_category_manager,res.partner.category.crm.manager,base.model_res_partner_category,base.group_sale_manager,1,0,0,0
mail_mail_message_manager,mail.message.manager,mail.model_mail_message,base.group_sale_manager,1,0,0,0
access_calendar_attendee_crm_user,calendar.attendee.crm.user,model_calendar_attendee,base.group_sale_salesman,1,1,1,0
access_calendar_attendee_crm_manager,calendar.attendee.crm.manager,model_calendar_attendee,base.group_sale_manager,1,1,1,1
access_res_partner,res.partner.crm.user,base.model_res_partner,base.group_sale_salesman,1,1,1,0
access_res_partner_address,res.partner.address.crm.user,base.model_res_partner_address,base.group_sale_salesman,1,1,1,0
access_res_partner_category,res.partner.category.crm.user,base.model_res_partner_category,base.group_sale_salesman,1,1,1,0
mail_mailgate_thread,mail.thread,mail.model_mail_thread,base.group_sale_salesman,1,1,1,1
mail_gateway_mail_message_user,mail.message.user,mail.model_mail_message,base.group_sale_salesman,1,1,1,1
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
26 access_crm_phonecall_report_user crm.phonecall.report.user model_crm_phonecall_report base.group_sale_salesman 1 0 0 0
27 access_crm_phonecall_report_manager crm.phonecall.report model_crm_phonecall_report base.group_sale_manager 1 1 1 1
28 access_res_partner_manager res.partner.crm.manager base.model_res_partner base.group_sale_manager 1 0 0 0
access_res_partner_address_manager res.partner.address.crm.user.manager base.model_res_partner_address base.group_sale_manager 1 0 0 0
29 access_res_partner_category_manager res.partner.category.crm.manager base.model_res_partner_category base.group_sale_manager 1 0 0 0
30 mail_mail_message_manager mail.message.manager mail.model_mail_message base.group_sale_manager 1 0 0 0
31 access_calendar_attendee_crm_user calendar.attendee.crm.user model_calendar_attendee base.group_sale_salesman 1 1 1 0
32 access_calendar_attendee_crm_manager calendar.attendee.crm.manager model_calendar_attendee base.group_sale_manager 1 1 1 1
33 access_res_partner res.partner.crm.user base.model_res_partner base.group_sale_salesman 1 1 1 0
access_res_partner_address res.partner.address.crm.user base.model_res_partner_address base.group_sale_salesman 1 1 1 0
34 access_res_partner_category res.partner.category.crm.user base.model_res_partner_category base.group_sale_salesman 1 1 1 0
35 mail_mailgate_thread mail.thread mail.model_mail_thread base.group_sale_salesman 1 1 1 1
36 mail_gateway_mail_message_user mail.message.user mail.model_mail_message base.group_sale_salesman 1 1 1 1
+1 -1
View File
@@ -15,7 +15,7 @@
name: 'Need 20 Days of Consultancy'
type: opportunity
state: draft
optout: True
opt_out: True
-
I create phonecall record to call partner onchange method.
-
+5 -21
View File
@@ -70,9 +70,6 @@ class crm_claim(crm.crm_case, osv.osv):
" mail gateway."),
'company_id': fields.many2one('res.company', 'Company'),
'partner_id': fields.many2one('res.partner', 'Partner'),
'partner_address_id': fields.many2one('res.partner.address', 'Partner Contact', \
# domain="[('partner_id','=',partner_id)]"
),
'email_cc': fields.text('Watchers Emails', size=252, help="These email addresses will be added to the CC field of all inbound and outbound emails for this record before being sent. Separate multiple email addresses with a comma"),
'email_from': fields.char('Email', size=128, help="These people will receive email."),
'partner_phone': fields.char('Phone', size=32),
@@ -89,7 +86,6 @@ class crm_claim(crm.crm_case, osv.osv):
_defaults = {
'user_id': crm.crm_case._get_default_user,
'partner_id': crm.crm_case._get_default_partner,
'partner_address_id': crm.crm_case._get_default_partner_address,
'email_from':crm.crm_case. _get_default_email,
'state': lambda *a: 'draft',
'section_id':crm.crm_case. _get_section,
@@ -105,23 +101,11 @@ class crm_claim(crm.crm_case, osv.osv):
:param email: ignored
"""
if not part:
return {'value': {'partner_address_id': False,
'email_from': False,
'partner_phone': False
}}
addr = self.pool.get('res.partner').address_get(cr, uid, [part], ['contact'])
data = {'partner_address_id': addr['contact']}
data.update(self.onchange_partner_address_id(cr, uid, ids, addr['contact'])['value'])
return {'value': data}
def onchange_partner_address_id(self, cr, uid, ids, add, email=False):
"""This function returns value of partner email based on Partner Address
:param part: Partner's id
:param email: ignored
"""
if not add:
return {'value': {'email_from': False}}
address = self.pool.get('res.partner.address').browse(cr, uid, add)
return {'value': {'email_from': False,
'partner_phone': False
}
}
address = self.pool.get('res.partner').browse(cr, uid, part)
return {'value': {'email_from': address.email, 'partner_phone': address.phone}}
def case_open(self, cr, uid, ids, *args):
-5
View File
@@ -7,7 +7,6 @@
-->
<record id="crm_case_claim01" model="crm.claim">
<field name="partner_address_id" ref="base.res_partner_address_15"/>
<field eval="time.strftime('%Y-%m-04 10:45:36')" name="date"/>
<field name="partner_id" ref="base.res_partner_11"/>
<field eval="&quot;3&quot;" name="priority"/>
@@ -21,7 +20,6 @@
</record>
<record id="crm_case_claim02" model="crm.claim">
<field name="partner_address_id" ref="base.res_partner_address_6"/>
<field eval="time.strftime('%Y-%m-11 11:19:25')" name="date"/>
<field name="partner_id" ref="base.res_partner_6"/>
<field eval="&quot;4&quot;" name="priority"/>
@@ -35,7 +33,6 @@
</record>
<record id="crm_case_claim03" model="crm.claim">
<field name="partner_address_id" ref="base.res_partner_address_2"/>
<field eval="time.strftime('%Y-%m-15 17:44:12')" name="date"/>
<field name="partner_id" ref="base.res_partner_10"/>
<field eval="&quot;2&quot;" name="priority"/>
@@ -63,7 +60,6 @@
</record>
<record id="crm_case_claim05" model="crm.claim">
<field name="partner_address_id" ref="base.res_partner_address_10"/>
<field eval="time.strftime('%Y-%m-28 16:20:43')" name="date"/>
<field name="partner_id" ref="base.res_partner_5"/>
<field eval="&quot;3&quot;" name="priority"/>
@@ -77,7 +73,6 @@
</record>
<record id="crm_case_claim06" model="crm.claim">
<field name="partner_address_id" ref="base.res_partner_address_1"/>
<field name="partner_id" ref="base.res_partner_9"/>
<field eval="&quot;3&quot;" name="priority"/>
<field name="user_id" ref="base.user_root"/>
-12
View File
@@ -90,8 +90,6 @@
<separator colspan="2" string="Claim Reporter"/>
<field name="partner_id" string="Partner"
on_change="onchange_partner_id(partner_id)" />
<field name="partner_address_id" string="Contact"
on_change="onchange_partner_address_id(partner_address_id, email_from)" />
<field name="partner_phone"/>
<field name="email_from" widget="email"/>
</group>
@@ -289,15 +287,5 @@
res_model="crm.claim"
src_model="res.partner"/>
<act_window
domain="[('partner_address_id', '=', active_id)]"
context="{'default_partner_address_id': active_id}"
id="act_claim_partner_address"
name="Claims"
view_mode="tree,form"
res_model="crm.claim"
src_model="res.partner.address"/>
</data>
</openerp>
@@ -47,8 +47,6 @@ class crm_fundraising(crm.crm_case, osv.osv):
select=True, help='Sales team to which Case belongs to. Define Responsible user and Email account for mail gateway.'),
'company_id': fields.many2one('res.company', 'Company'),
'partner_id': fields.many2one('res.partner', 'Partner'),
'partner_address_id': fields.many2one('res.partner.address', 'Partner Contact', \
domain="[('partner_id','=',partner_id)]"),
'email_cc': fields.text('Watchers Emails', size=252 , help="These email addresses will be added to the CC field of all inbound and outbound emails for this record before being sent. Separate multiple email addresses with a comma"),
'email_from': fields.char('Email', size=128, help="These people will receive email."),
'date_closed': fields.datetime('Closed', readonly=True),
@@ -100,7 +98,6 @@ class crm_fundraising(crm.crm_case, osv.osv):
'active': 1,
'user_id': crm.crm_case._get_default_user,
'partner_id': crm.crm_case._get_default_partner,
'partner_address_id': crm.crm_case._get_default_partner_address,
'email_from': crm.crm_case. _get_default_email,
'state': 'draft',
'section_id': crm.crm_case. _get_section,
@@ -3,7 +3,6 @@
<data noupdate="1">
<record id="crm_case_helpingstreetchildren0" model="crm.fundraising">
<field eval="50" name="probability"/>
<field name="partner_address_id" ref="base.res_partner_address_1"/>
<field eval="1" name="active"/>
<field name="type_id" ref="type_fund3"/>
<field eval="3.0" name="duration"/>
@@ -22,7 +21,6 @@
<data noupdate="1">
<record id="crm_case_helpingearthquakevictims0" model="crm.fundraising">
<field eval="80" name="probability"/>
<field name="partner_address_id" ref="base.main_address"/>
<field eval="1" name="active"/>
<field name="type_id" ref="type_fund4"/>
<field name="partner_id" ref="base.main_partner"/>
@@ -39,7 +37,6 @@
</data>
<data noupdate="1">
<record id="crm_case_donatingbookstoschoollibraries0" model="crm.fundraising">
<field name="partner_address_id" ref="base.res_partner_address_zen"/>
<field eval="1" name="active"/>
<field name="type_id" ref="type_fund1"/>
<field eval="5.0" name="duration"/>
@@ -56,7 +53,6 @@
</data>
<data noupdate="1">
<record id="crm_case_renovatinggovernmentschools0" model="crm.fundraising">
<field name="partner_address_id" ref="base.res_partner_address_7"/>
<field eval="1" name="active"/>
<field name="type_id" ref="type_fund2"/>
<field eval="3.0" name="duration"/>
@@ -74,7 +70,6 @@
</data>
<data noupdate="1">
<record id="crm_case_donatingambulancestohospitals0" model="crm.fundraising">
<field name="partner_address_id" ref="base.res_partner_address_13"/>
<field eval="1" name="active"/>
<field name="type_id" ref="type_fund4"/>
<field name="partner_id" ref="base.res_partner_14"/>
@@ -91,7 +86,6 @@
</data>
<data noupdate="1">
<record id="crm_case_donatinghospitalequipments0" model="crm.fundraising">
<field name="partner_address_id" ref="base.res_partner_address_2"/>
<field eval="1" name="active"/>
<field name="type_id" ref="type_fund3"/>
<field name="partner_id" ref="base.res_partner_10"/>
@@ -109,7 +103,6 @@
</data>
<data noupdate="1">
<record id="crm_case_encouragingarts0" model="crm.fundraising">
<field name="partner_address_id" ref="base.res_partner_address_14"/>
<field eval="1" name="active"/>
<field name="type_id" ref="type_fund2"/>
<field eval="7.0" name="duration"/>
@@ -127,7 +120,6 @@
<data noupdate="1">
<record id="crm_case_promotingculturalprogramsandpreservingdyingartforms0" model="crm.fundraising">
<field eval="10" name="probability"/>
<field name="partner_address_id" ref="base.res_partner_address_1"/>
<field eval="1" name="active"/>
<field name="type_id" ref="type_fund1"/>
<field eval="6.0" name="duration"/>
@@ -94,10 +94,6 @@
<field name="partner_id" select="1"
on_change="onchange_partner_id(partner_id, email_from)"
colspan="2" />
<field name="partner_address_id"
string="Contact"
on_change="onchange_partner_address_id(partner_address_id, email_from)"
colspan="1" />
<field name="email_from" colspan="2"/>
</group>
<group colspan="2" col="2">
-3
View File
@@ -58,8 +58,6 @@ class crm_helpdesk(crm.crm_case, osv.osv):
'company_id': fields.many2one('res.company', 'Company'),
'date_closed': fields.datetime('Closed', readonly=True),
'partner_id': fields.many2one('res.partner', 'Partner'),
'partner_address_id': fields.many2one('res.partner.address', 'Partner Contact', \
domain="[('partner_id','=',partner_id)]"),
'email_cc': fields.text('Watchers Emails', size=252 , help="These email addresses will be added to the CC field of all inbound and outbound emails for this record before being sent. Separate multiple email addresses with a comma"),
'email_from': fields.char('Email', size=128, help="These people will receive email."),
'date': fields.datetime('Date'),
@@ -86,7 +84,6 @@ class crm_helpdesk(crm.crm_case, osv.osv):
'active': lambda *a: 1,
'user_id': crm.crm_case._get_default_user,
'partner_id': crm.crm_case._get_default_partner,
'partner_address_id': crm.crm_case._get_default_partner_address,
'email_from': crm.crm_case. _get_default_email,
'state': lambda *a: 'draft',
'date': lambda *a: time.strftime('%Y-%m-%d %H:%M:%S'),
@@ -38,7 +38,6 @@
</record>
<record id="crm_helpdesk_howtocreateanewmodule0" model="crm.helpdesk">
<field name="partner_address_id" ref="base.res_partner_address_9"/>
<field eval="1" name="active"/>
<field name="partner_id" ref="base.res_partner_2"/>
<field name="user_id" ref="base.user_root"/>
@@ -47,9 +47,6 @@
<field name="partner_id" colspan="2"
on_change="onchange_partner_id(partner_id, email_from)"
select="1" />
<field name="partner_address_id" colspan="2"
on_change="onchange_partner_address_id(partner_address_id, email_from)"
/>
<newline/>
<field name="email_from" colspan="2"/>
<button name="remind_partner"
+1 -1
View File
@@ -37,7 +37,7 @@ The most appropriate partner can be assigned.
You can also use the geolocalization without using the GPS coordinates.
""",
'author': 'OpenERP SA',
'depends': ['crm'],
'depends': ['crm', 'account'],
'demo_xml': [
'res_partner_demo.xml',
],
@@ -89,14 +89,11 @@ class res_partner(osv.osv):
}
def geo_localize(self, cr, uid, ids, context=None):
for partner in self.browse(cr, uid, ids, context=context):
if not partner.address:
continue
contact = partner.address[0] #TOFIX: should be get latitude and longitude for default contact?
addr = ', '.join(filter(None, [
contact.street,
"%s %s" % (contact.zip , contact.city),
contact.state_id and contact.state_id.name,
contact.country_id and contact.country_id.name]))
partner.street,
"%s %s" % (partner.zip , partner.city),
partner.state_id and partner.state_id.name,
partner.country_id and partner.country_id.name]))
result = geo_find(tools.ustr(addr))
if result:
self.write(cr, uid, [partner.id], {
@@ -192,7 +189,7 @@ class crm_lead(osv.osv):
('partner_weight', '>', 0),
('partner_latitude', '>', latitude - 2), ('partner_latitude', '<', latitude + 2),
('partner_longitude', '>', longitude - 1.5), ('partner_longitude', '<', longitude + 1.5),
('country', '=', lead.country_id.id),
('country_id', '=', lead.country_id.id),
], context=context)
# 2. second way: in the same country, big area
@@ -201,7 +198,7 @@ class crm_lead(osv.osv):
('partner_weight', '>', 0),
('partner_latitude', '>', latitude - 4), ('partner_latitude', '<', latitude + 4),
('partner_longitude', '>', longitude - 3), ('partner_longitude', '<' , longitude + 3),
('country', '=', lead.country_id.id),
('country_id', '=', lead.country_id.id),
], context=context)
@@ -210,7 +207,7 @@ class crm_lead(osv.osv):
# still haven't found any, let's take all partners in the country!
partner_ids = res_partner.search(cr, uid, [
('partner_weight', '>', 0),
('country', '=', lead.country_id.id),
('country_id', '=', lead.country_id.id),
], context=context)
# 6. sixth way: closest partner whatsoever, just to have at least one result
@@ -51,7 +51,7 @@ class crm_partner_report_assign(osv.osv):
SELECT
coalesce(i.id, p.id - 1000000000) as id,
p.id as partner_id,
(SELECT country_id FROM res_partner_address a WHERE a.partner_id=p.id AND country_id is not null limit 1) as country_id,
(SELECT country_id FROM res_partner a WHERE a.partner_id=p.id AND country_id is not null limit 1) as country_id,
p.grade_id,
p.activation,
p.date_review,
@@ -37,7 +37,6 @@ class crm_lead_forward_to_partner(osv.osv_memory):
'user_id': fields.many2one('res.users', "User"),
'attachment_ids': fields.many2many('ir.attachment','lead_forward_to_partner_attachment_rel', 'wizard_id', 'attachment_id', 'Attachments'),
'partner_id' : fields.many2one('res.partner', 'Partner'),
'address_id' : fields.many2one('res.partner.address', 'Address'),
'history': fields.selection([('info', 'Case Information'), ('latest', 'Latest email'), ('whole', 'Whole Story')], 'Send history', required=True),
}
@@ -75,27 +74,15 @@ class crm_lead_forward_to_partner(osv.osv_memory):
"""This function fills address information based on partner/user selected
"""
if not partner_id:
return {'value' : {'email_to' : False, 'address_id': False}}
return {'value' : {'email_to' : False}}
partner_obj = self.pool.get('res.partner')
addr = partner_obj.address_get(cr, uid, [partner_id], ['contact'])
data = {'address_id': addr['contact']}
data.update(self.on_change_address(cr, uid, ids, addr['contact'])['value'])
data = {}
partner = partner_obj.browse(cr, uid, [partner_id])
user_id = partner and partner[0].user_id or False
email = user_id and user_id.user_email or ''
data.update({'email_cc' : email, 'user_id': user_id and user_id.id or False})
return {
'value' : data,
'domain' : {'address_id' : partner_id and "[('partner_id', '=', partner_id)]" or "[]"}
}
def on_change_address(self, cr, uid, ids, address_id):
email = ''
if address_id:
email = self.pool.get('res.partner.address').browse(cr, uid, address_id).email
return {'value': {'email_to' : email}}
data.update({'email_from': partner and partner[0].email or "",
'email_cc' : user_id and user_id.user_email or '',
'user_id': user_id and user_id.id or False})
return {'value' : data}
def action_forward(self, cr, uid, ids, context=None):
"""
@@ -20,7 +20,6 @@
</group>
<group col="4" colspan="4" attrs="{'invisible' : [('send_to','!=','partner')]}">
<field name="partner_id" attrs="{'required' : [('send_to','=','partner')]}" on_change="on_change_partner(partner_id)" colspan="2" />
<field name="address_id" string="Contact" on_change="on_change_address(address_id)" colspan="2" />
</group>
</group>
<separator string="" colspan="4" />
@@ -22,13 +22,12 @@
I'm creating new partner "John" with his email "info@mycustomer.com".
-
!record {model: res.partner, id: res_partner_john0}:
address:
- city: Bruxelles
country_id: base.be
street: Rue des Palais 51, bte 33
type: default
zip: '1000'
email: 'info@mycustomer.com'
city: Bruxelles
country_id: base.be
street: Rue des Palais 51, bte 33
type: default
zip: '1000'
email: 'info@mycustomer.com'
name: John
category_id:
- res_partner_category_customers0