[IMP]product_visible_discount: remove address_invoice_id field
bzr revid: kjo@tinyerp.com-20120306113258-y06w371pqo74j6ph
This commit is contained in:
commit
8037caeead
|
@ -394,7 +394,6 @@ class account_invoice(osv.osv):
|
|||
def onchange_partner_id(self, cr, uid, ids, type, partner_id,\
|
||||
date_invoice=False, payment_term=False, partner_bank_id=False, company_id=False):
|
||||
invoice_addr_id = False
|
||||
contact_addr_id = False
|
||||
partner_payment_term = False
|
||||
acc_id = False
|
||||
bank_id = False
|
||||
|
@ -404,8 +403,7 @@ class account_invoice(osv.osv):
|
|||
if partner_id:
|
||||
|
||||
opt.insert(0, ('id', partner_id))
|
||||
res = self.pool.get('res.partner').address_get(cr, uid, [partner_id], ['contact', 'invoice'])
|
||||
contact_addr_id = res['contact']
|
||||
res = self.pool.get('res.partner').address_get(cr, uid, [partner_id], ['invoice'])
|
||||
invoice_addr_id = res['invoice']
|
||||
p = self.pool.get('res.partner').browse(cr, uid, partner_id)
|
||||
if company_id:
|
||||
|
|
|
@ -250,8 +250,8 @@ class calendar_attendee(osv.osv):
|
|||
if name == 'cn':
|
||||
if attdata.user_id:
|
||||
result[id][name] = attdata.user_id.name
|
||||
elif attdata.partner_address_id:
|
||||
result[id][name] = attdata.partner_address_id.name or attdata.partner_id.name
|
||||
elif attdata.partner_id:
|
||||
result[id][name] = attdata.partner_id.name or False
|
||||
else:
|
||||
result[id][name] = attdata.email or ''
|
||||
|
||||
|
@ -365,9 +365,7 @@ that points to the directory information corresponding to the attendee."),
|
|||
store=True, help="To specify the language for text values in a\
|
||||
property or property parameter."),
|
||||
'user_id': fields.many2one('res.users', 'User'),
|
||||
'partner_address_id': fields.many2one('res.partner.address', 'Contact'),
|
||||
'partner_id': fields.related('partner_address_id', 'partner_id', type='many2one', \
|
||||
relation='res.partner', string='Partner', help="Partner related to contact"),
|
||||
'partner_id': fields.many2one('res.partner', 'Contact'),
|
||||
'email': fields.char('Email', size=124, help="Email of Invited Person"),
|
||||
'event_date': fields.function(_compute_data, string='Event Date', \
|
||||
type="datetime", multi='event_date'),
|
||||
|
|
|
@ -22,10 +22,8 @@
|
|||
<group colspan="4" col="4">
|
||||
<field name="user_id" string="Invited User"/>
|
||||
<newline/>
|
||||
<field name="partner_address_id"
|
||||
string="Contact" />
|
||||
<field name="partner_id"
|
||||
string="Partner" readonly="1" />
|
||||
string="Contact" />
|
||||
</group>
|
||||
<separator string="Event Detail" colspan="4" />
|
||||
<group colspan="4" col="4">
|
||||
|
@ -78,7 +76,7 @@
|
|||
<field name="sent_by_uid" string="Invitation From" />
|
||||
<field name="role" string="My Role"/>
|
||||
<field name="user_id" invisible="1"/>
|
||||
<field name="partner_address_id" invisible="1"/>
|
||||
<field name="partner_id" invisible="1"/>
|
||||
<field name="cutype" string="Invitation type"/>
|
||||
<field name="state" />
|
||||
<field name="rsvp" string="Required to Join"/>
|
||||
|
@ -132,7 +130,7 @@
|
|||
<filter string="Responsible" icon="terp-personal" domain="[]"
|
||||
context="{'group_by':'user_id'}" />
|
||||
<filter string="Contact" icon="terp-personal" domain="[]"
|
||||
context="{'group_by':'partner_address_id'}" />
|
||||
context="{'group_by':'partner_id'}" />
|
||||
<separator orientation="vertical" />
|
||||
<filter string="Type" icon="terp-stock_symbol-selection" help="Invitation Type"
|
||||
domain="[]" context="{'group_by':'cutype'}" />
|
||||
|
|
|
@ -41,7 +41,7 @@ class base_calendar_invite_attendee(osv.osv_memory):
|
|||
'invite_id', 'user_id', 'Users'),
|
||||
'partner_id': fields.many2one('res.partner', 'Partner'),
|
||||
'email': fields.char('Email', size=124, help="Provide external email address who will receive this invitation."),
|
||||
'contact_ids': fields.many2many('res.partner.address', 'invite_contact_rel',
|
||||
'contact_ids': fields.many2many('res.partner', 'invite_contact_rel',
|
||||
'invite_id', 'contact_id', 'Contacts'),
|
||||
'send_mail': fields.boolean('Send mail?', help='Check this if you want to \
|
||||
send an Email to Invited Person')
|
||||
|
@ -112,10 +112,10 @@ send an Email to Invited Person')
|
|||
mail_to.append(datas['email'])
|
||||
|
||||
elif type == 'partner':
|
||||
add_obj = self.pool.get('res.partner.address')
|
||||
add_obj = self.pool.get('res.partner')
|
||||
for contact in add_obj.browse(cr, uid, datas['contact_ids']):
|
||||
res = {
|
||||
'partner_address_id': contact.id,
|
||||
'partner_id': contact.id,
|
||||
'email': contact.email
|
||||
}
|
||||
res.update(ref)
|
||||
|
@ -159,8 +159,8 @@ send an Email to Invited Person')
|
|||
|
||||
if not partner_id:
|
||||
return {'value': {'contact_ids': []}}
|
||||
cr.execute('SELECT id FROM res_partner_address \
|
||||
WHERE partner_id=%s', (partner_id,))
|
||||
cr.execute('SELECT id FROM res_partner \
|
||||
WHERE id=%s or parent_id =%s' , (partner_id,partner_id,))
|
||||
contacts = map(lambda x: x[0], cr.fetchall())
|
||||
return {'value': {'contact_ids': contacts}}
|
||||
|
||||
|
|
|
@ -178,7 +178,6 @@ class crm_base(object):
|
|||
date_closed
|
||||
user_id
|
||||
partner_id
|
||||
partner_address_id
|
||||
"""
|
||||
def _get_default_partner_address(self, cr, uid, context=None):
|
||||
"""Gives id of default address for current user
|
||||
|
@ -238,7 +237,7 @@ class crm_base(object):
|
|||
"""
|
||||
data = {'value': {'email_from': False, 'phone':False}}
|
||||
if add:
|
||||
address = self.pool.get('res.partner.address').browse(cr, uid, add)
|
||||
address = self.pool.get('res.partner').browse(cr, uid, add)
|
||||
data['value'] = {'email_from': address and address.email or False ,
|
||||
'phone': address and address.phone or False}
|
||||
if 'phone' not in self._columns:
|
||||
|
@ -254,7 +253,6 @@ class crm_base(object):
|
|||
data={}
|
||||
if part:
|
||||
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}
|
||||
|
||||
|
|
|
@ -40,7 +40,7 @@ class crm_lead(crm_case, osv.osv):
|
|||
_name = "crm.lead"
|
||||
_description = "Lead/Opportunity"
|
||||
_order = "priority,date_action,id desc"
|
||||
_inherit = ['mail.thread','res.partner.address']
|
||||
_inherit = ['mail.thread','res.partner']
|
||||
|
||||
def _read_group_stage_ids(self, cr, uid, ids, domain, read_group_order=None, access_rights_uid=None, context=None):
|
||||
access_rights_uid = access_rights_uid or uid
|
||||
|
@ -170,7 +170,7 @@ class crm_lead(crm_case, osv.osv):
|
|||
domain="['|',('section_id','=',section_id),('section_id','=',False)]", help="From which campaign (seminar, marketing campaign, mass mailing, ...) did this contact come from?"),
|
||||
'channel_id': fields.many2one('crm.case.channel', 'Channel', help="Communication channel (mail, direct, phone, ...)"),
|
||||
'contact_name': fields.char('Contact Name', size=64),
|
||||
'partner_name': fields.char("Customer Name", size=64,help='The name of the future partner that will be created while converting the lead into opportunity', select=1),
|
||||
'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."),
|
||||
'type':fields.selection([ ('lead','Lead'), ('opportunity','Opportunity'), ],'Type', help="Type is used to separate Leads and Opportunities"),
|
||||
|
@ -194,7 +194,6 @@ class crm_lead(crm_case, osv.osv):
|
|||
|
||||
|
||||
# Only used for type opportunity
|
||||
'partner_address_id': fields.many2one('res.partner.address', 'Partner Contact', domain="[('partner_id','=',partner_id)]"),
|
||||
'probability': fields.float('Probability (%)',group_operator="avg"),
|
||||
'planned_revenue': fields.float('Expected Revenue'),
|
||||
'ref': fields.reference('Reference', selection=crm._links_get, size=128),
|
||||
|
@ -205,8 +204,8 @@ class crm_lead(crm_case, osv.osv):
|
|||
'title_action': fields.char('Next Action', size=64),
|
||||
'stage_id': fields.many2one('crm.case.stage', 'Stage', domain="[('section_ids', '=', section_id)]"),
|
||||
'color': fields.integer('Color Index'),
|
||||
'partner_address_name': fields.related('partner_address_id', 'name', type='char', string='Partner Contact Name', readonly=True),
|
||||
'partner_address_email': fields.related('partner_address_id', 'email', type='char', string='Partner Contact Email', readonly=True),
|
||||
'partner_address_name': fields.related('partner_id', 'name', type='char', string='Partner Contact Name', readonly=True),
|
||||
'partner_address_email': fields.related('partner_id', 'email', type='char', string='Partner Contact Email', readonly=True),
|
||||
'company_currency': fields.related('company_id', 'currency_id', 'symbol', type='char', string='Company Currency', readonly=True),
|
||||
'user_email': fields.related('user_id', 'user_email', type='char', string='User Email', readonly=True),
|
||||
'user_login': fields.related('user_id', 'login', type='char', string='User Login', readonly=True),
|
||||
|
@ -230,7 +229,7 @@ class crm_lead(crm_case, osv.osv):
|
|||
"""
|
||||
if not add:
|
||||
return {'value': {'email_from': False, 'country_id': False}}
|
||||
address = self.pool.get('res.partner.address').browse(cr, uid, add)
|
||||
address = self.pool.get('res.partner').browse(cr, uid, add)
|
||||
return {'value': {'email_from': address.email, 'phone': address.phone, 'country_id': address.country_id.id}}
|
||||
|
||||
def on_change_optin(self, cr, uid, ids, optin):
|
||||
|
@ -501,8 +500,7 @@ class crm_lead(crm_case, osv.osv):
|
|||
first_opportunity = opportunities_list[0]
|
||||
tail_opportunities = opportunities_list[1:]
|
||||
|
||||
fields = ['partner_id', 'title', 'name', 'categ_id', 'channel_id', 'city', 'company_id', 'contact_name', 'country_id',
|
||||
'partner_address_id', 'type_id', 'user_id', 'section_id', 'state_id', 'description', 'email', 'fax', 'mobile',
|
||||
fields = ['partner_id', 'title', 'name', 'categ_id', 'channel_id', 'city', 'company_id', 'contact_name', 'country_id', 'type_id', 'user_id', 'section_id', 'state_id', 'description', 'email', 'fax', 'mobile',
|
||||
'partner_name', 'phone', 'probability', 'planned_revenue', 'street', 'street2', 'zip', 'create_date', 'date_action_last',
|
||||
'date_action_next', 'email_from', 'email_cc', 'partner_name']
|
||||
|
||||
|
@ -546,7 +544,6 @@ class crm_lead(crm_case, osv.osv):
|
|||
'stage_id': stage_id or False,
|
||||
'date_action': time.strftime('%Y-%m-%d %H:%M:%S'),
|
||||
'date_open': time.strftime('%Y-%m-%d %H:%M:%S'),
|
||||
'partner_address_id': contact_id,
|
||||
}
|
||||
|
||||
def _convert_opportunity_notification(self, cr, uid, lead, context=None):
|
||||
|
@ -580,15 +577,42 @@ class crm_lead(crm_case, osv.osv):
|
|||
}, context=context)
|
||||
return True
|
||||
|
||||
def _lead_create_partner(self, cr, uid, lead, context=None):
|
||||
def _lead_create_contact(self, cr, uid, lead, name, is_company, parent_id=False, context=None):
|
||||
partner = self.pool.get('res.partner')
|
||||
partner_id = partner.create(cr, uid, {
|
||||
'name': lead.partner_name or lead.contact_name or lead.name,
|
||||
'user_id': lead.user_id.id,
|
||||
'comment': lead.description,
|
||||
'section_id': lead.section_id.id or False,
|
||||
'address': []
|
||||
})
|
||||
vals = { 'name': name,
|
||||
'user_id': lead.user_id.id,
|
||||
'comment': lead.description,
|
||||
'section_id': lead.section_id.id or False,
|
||||
'parent_id': parent_id,
|
||||
'phone': lead.phone,
|
||||
'mobile': lead.mobile,
|
||||
'email': lead.email_from and to_email(lead.email_from)[0],
|
||||
'fax': lead.fax,
|
||||
'title': lead.title and lead.title.id or False,
|
||||
'function': lead.function,
|
||||
'street': lead.street,
|
||||
'street2': lead.street2,
|
||||
'zip': lead.zip,
|
||||
'city': lead.city,
|
||||
'country_id': lead.country_id and lead.country_id.id or False,
|
||||
'state_id': lead.state_id and lead.state_id.id or False,
|
||||
'is_company': is_company,
|
||||
}
|
||||
|
||||
partner = partner.create(cr, uid,vals, context)
|
||||
return partner
|
||||
|
||||
def _create_lead_partner(self, cr, uid, lead, context=None):
|
||||
partner_id = False
|
||||
if lead.partner_name and lead.contact_name:
|
||||
partner_id = self._lead_create_contact(cr, uid, lead, lead.partner_name, 'partner', context=context)
|
||||
self._lead_create_contact(cr, uid, lead, lead.contact_name, 'contact', partner_id, context=context)
|
||||
elif lead.partner_name and not lead.contact_name:
|
||||
partner_id = self._lead_create_contact(cr, uid, lead, lead.partner_name, 'partner', context=context)
|
||||
elif not lead.partner_name and lead.contact_name:
|
||||
partner_id = self._lead_create_contact(cr, uid, lead, lead.contact_name, 'contact', context=context)
|
||||
else:
|
||||
partner_id = self._lead_create_contact(cr, uid, lead, lead.name, 'contact', context=context)
|
||||
return partner_id
|
||||
|
||||
def _lead_set_partner(self, cr, uid, lead, partner_id, context=None):
|
||||
|
@ -597,29 +621,9 @@ class crm_lead(crm_case, osv.osv):
|
|||
if partner_id:
|
||||
res_partner.write(cr, uid, partner_id, {'section_id': lead.section_id.id or False})
|
||||
contact_id = res_partner.address_get(cr, uid, [partner_id])['default']
|
||||
res = lead.write({'partner_id' : partner_id, 'partner_address_id': contact_id}, context=context)
|
||||
|
||||
res = lead.write({'partner_id' : partner_id, }, context=context)
|
||||
return res
|
||||
|
||||
def _lead_create_partner_address(self, cr, uid, lead, partner_id, context=None):
|
||||
address = self.pool.get('res.partner.address')
|
||||
return address.create(cr, uid, {
|
||||
'partner_id': partner_id,
|
||||
'name': lead.contact_name,
|
||||
'phone': lead.phone,
|
||||
'mobile': lead.mobile,
|
||||
'email': lead.email_from and to_email(lead.email_from)[0],
|
||||
'fax': lead.fax,
|
||||
'title': lead.title and lead.title.id or False,
|
||||
'function': lead.function,
|
||||
'street': lead.street,
|
||||
'street2': lead.street2,
|
||||
'zip': lead.zip,
|
||||
'city': lead.city,
|
||||
'country_id': lead.country_id and lead.country_id.id or False,
|
||||
'state_id': lead.state_id and lead.state_id.id or False,
|
||||
})
|
||||
|
||||
def convert_partner(self, cr, uid, ids, action='create', partner_id=False, context=None):
|
||||
"""
|
||||
This function convert partner based on action.
|
||||
|
@ -632,8 +636,7 @@ class crm_lead(crm_case, osv.osv):
|
|||
for lead in self.browse(cr, uid, ids, context=context):
|
||||
if action == 'create':
|
||||
if not partner_id:
|
||||
partner_id = self._lead_create_partner(cr, uid, lead, context=context)
|
||||
self._lead_create_partner_address(cr, uid, lead, partner_id, context=context)
|
||||
partner_id = self._create_lead_partner(cr, uid, lead, context)
|
||||
self._lead_set_partner(cr, uid, lead, partner_id, context=context)
|
||||
partner_ids[lead.id] = partner_id
|
||||
return partner_ids
|
||||
|
@ -694,9 +697,8 @@ class crm_lead(crm_case, osv.osv):
|
|||
'date' : schedule_time,
|
||||
'section_id' : section_id or False,
|
||||
'partner_id': lead.partner_id and lead.partner_id.id or False,
|
||||
'partner_address_id': lead.partner_address_id and lead.partner_address_id.id or False,
|
||||
'partner_phone' : phone or lead.phone or (lead.partner_address_id and lead.partner_address_id.phone or False),
|
||||
'partner_mobile' : lead.partner_address_id and lead.partner_address_id.mobile or False,
|
||||
'partner_phone' : phone or lead.phone or (lead.partner_id and lead.partner_id.phone or False),
|
||||
'partner_mobile' : lead.partner_id and lead.partner_id.mobile or False,
|
||||
'priority': lead.priority,
|
||||
}
|
||||
|
||||
|
|
|
@ -103,7 +103,6 @@
|
|||
</record>
|
||||
|
||||
<record id="crm_case_mgroperations0" model="crm.lead">
|
||||
<field name="partner_address_id" ref="base.res_partner_address_1"/>
|
||||
<field eval="1" name="active"/>
|
||||
<field name="type_id" ref="crm.type_lead3"/>
|
||||
<field name="partner_id" ref="base.res_partner_9"/>
|
||||
|
@ -240,7 +239,6 @@
|
|||
<!-- Demo Opportunities -->
|
||||
<record id="crm_case_construstazunits0" model="crm.lead">
|
||||
<field eval="60" name="probability"/>
|
||||
<field name="partner_address_id" ref="base.res_partner_address_zen"/>
|
||||
<field eval="1" name="active"/>
|
||||
<field name="type">opportunity</field>
|
||||
<field name="type_id" ref="crm.type_lead1"/>
|
||||
|
@ -256,7 +254,6 @@
|
|||
<field eval="'Conf call with purchase manager'" name="title_action"/>
|
||||
</record>
|
||||
<record id="crm_case_rdroundfundingunits0" model="crm.lead">
|
||||
<field name="partner_address_id" ref="base.res_partner_address_1"/>
|
||||
<field eval="1" name="active"/>
|
||||
<field name="type">opportunity</field>
|
||||
<field name="type_id" ref="crm.type_lead2"/>
|
||||
|
@ -307,7 +304,6 @@
|
|||
<field name="type">opportunity</field>
|
||||
<field name="type_id" ref="crm.type_lead2"/>
|
||||
<field name="partner_id" ref="base.res_partner_accent"/>
|
||||
<field name="partner_address_id" ref="base.res_partner_address_accent"/>
|
||||
<field eval="'3'" name="priority"/>
|
||||
<field name="user_id" ref="base.user_root"/>
|
||||
<field eval="'open'" name="state"/>
|
||||
|
@ -332,7 +328,6 @@
|
|||
<field name="type">opportunity</field>
|
||||
<field name="type_id" ref="crm.type_lead2"/>
|
||||
<field name="partner_id" ref="base.res_partner_2"/>
|
||||
<field name="partner_address_id" ref="base.res_partner_address_9"/>
|
||||
<field eval="'3'" name="priority"/>
|
||||
<field name="user_id" ref="base.user_root"/>
|
||||
<field eval="'open'" name="state"/>
|
||||
|
@ -353,7 +348,6 @@
|
|||
</record>
|
||||
<record id="crm_case_mediapoleunits0" model="crm.lead">
|
||||
<field eval="100" name="probability"/>
|
||||
<field name="partner_address_id" ref="base.res_partner_address_3"/>
|
||||
<field eval="1" name="active"/>
|
||||
<field name="type">opportunity</field>
|
||||
<field name="type_id" ref="crm.type_lead1"/>
|
||||
|
@ -372,7 +366,6 @@
|
|||
</record>
|
||||
<record id="crm_case_abcfuelcounits0" model="crm.lead">
|
||||
<field eval="80" name="probability"/>
|
||||
<field name="partner_address_id" ref="base.res_partner_address_marcdubois0"/>
|
||||
<field eval="1" name="active"/>
|
||||
<field name="type">opportunity</field>
|
||||
<field name="type_id" ref="crm.type_lead1"/>
|
||||
|
@ -397,7 +390,6 @@
|
|||
</record>
|
||||
<record id="crm_case_dirtminingltdunits25" model="crm.lead">
|
||||
<field eval="30" name="probability"/>
|
||||
<field name="partner_address_id" ref="base.res_partner_address_wong"/>
|
||||
<field eval="1" name="active"/>
|
||||
<field name="type">opportunity</field>
|
||||
<field name="partner_id" ref="base.res_partner_maxtor"/>
|
||||
|
@ -426,7 +418,6 @@
|
|||
</record>
|
||||
<record id="crm_case_dirtminingltdunits10" model="crm.lead">
|
||||
<field eval="30" name="probability"/>
|
||||
<field name="partner_address_id" ref="base.res_partner_address_3000"/>
|
||||
<field eval="1" name="active"/>
|
||||
<field name="type">opportunity</field>
|
||||
<field name="partner_id" ref="base.res_partner_desertic_hispafuentes"/>
|
||||
|
@ -450,7 +441,6 @@
|
|||
</record>
|
||||
<record id="crm_case_construstazunits0" model="crm.lead">
|
||||
<field eval="60" name="probability"/>
|
||||
<field name="partner_address_id" ref="base.res_partner_address_thymbra"/>
|
||||
<field eval="1" name="active"/>
|
||||
<field name="type">opportunity</field>
|
||||
<field name="type_id" ref="crm.type_lead1"/>
|
||||
|
@ -473,7 +463,6 @@
|
|||
</record>
|
||||
<record id="crm_case_ericdubois4" model="crm.lead">
|
||||
<field eval="65" name="probability"/>
|
||||
<field name="partner_address_id" ref="base.res_partner_address_ericdubois0"/>
|
||||
<field eval="1" name="active"/>
|
||||
<field name="type">opportunity</field>
|
||||
<field name="type_id" ref="crm.type_lead1"/>
|
||||
|
@ -496,7 +485,6 @@
|
|||
<field name="country_id" ref="base.be"/>
|
||||
</record>
|
||||
<record id="crm_case_fabiendupont" model="crm.lead">
|
||||
<field name="partner_address_id" ref="base.res_partner_address_fabiendupont0"/>
|
||||
<field eval="1" name="active"/>
|
||||
<field name="type">opportunity</field>
|
||||
<field name="type_id" ref="crm.type_lead1"/>
|
||||
|
@ -509,7 +497,6 @@
|
|||
<field eval="'Need more info about the onsite intervention'" name="name"/>
|
||||
</record>
|
||||
<record id="crm_case_shelvehouse" model="crm.lead">
|
||||
<field name="partner_address_id" ref="base.res_partner_address_henrychard1"/>
|
||||
<field eval="1" name="active"/>
|
||||
<field name="type">opportunity</field>
|
||||
<field name="type_id" ref="crm.type_lead1"/>
|
||||
|
|
|
@ -81,7 +81,7 @@
|
|||
<notebook colspan="4">
|
||||
<page string="Lead">
|
||||
<group colspan="4" col="2">
|
||||
<field name="partner_name" string="Partner Name" />
|
||||
<field name="partner_name" string="Company Name" />
|
||||
</group>
|
||||
<group colspan="2" col="4">
|
||||
<separator string="Contact" colspan="4" col="4"/>
|
||||
|
@ -259,7 +259,6 @@
|
|||
date_start="date_action" color="user_id">
|
||||
<field name="name" />
|
||||
<field name="partner_name" />
|
||||
<field name="partner_address_id" />
|
||||
</calendar>
|
||||
</field>
|
||||
</record>
|
||||
|
@ -479,10 +478,7 @@
|
|||
string="Create"
|
||||
attrs="{'invisible':[('partner_id','!=',False)]}"/>
|
||||
</group>
|
||||
<field name="partner_address_id"
|
||||
string="Contact"
|
||||
on_change="onchange_partner_address_id(partner_address_id, email_from)"
|
||||
colspan="1" />
|
||||
|
||||
<group col="3" colspan="2">
|
||||
<field name="email_from" string="Email" />
|
||||
<button string="Mail"
|
||||
|
|
|
@ -47,8 +47,6 @@ class crm_meeting(crm_base, osv.osv):
|
|||
# From crm.case
|
||||
'name': fields.char('Summary', size=124, required=True, states={'done': [('readonly', True)]}),
|
||||
'partner_id': fields.many2one('res.partner', 'Partner', states={'done': [('readonly', True)]}),
|
||||
'partner_address_id': fields.many2one('res.partner.address', 'Partner Contact', \
|
||||
domain="[('partner_id','=',partner_id)]", states={'done': [('readonly', True)]}),
|
||||
'section_id': fields.many2one('crm.case.section', 'Sales Team', states={'done': [('readonly', True)]}, \
|
||||
select=True, help='Sales team to which Case belongs to.'),
|
||||
'email_from': fields.char('Email', size=128, states={'done': [('readonly', True)]}, help="These people will receive email."),
|
||||
|
|
|
@ -7,7 +7,6 @@
|
|||
|
||||
<!--For Meetings-->
|
||||
<record id="crm_case_followuponproposal0" model="crm.meeting">
|
||||
<field name="partner_address_id" ref="base.res_partner_address_wong"/>
|
||||
<field eval="1" name="active"/>
|
||||
<field name="partner_id" ref="base.res_partner_maxtor"/>
|
||||
<field name="user_id" ref="base.user_root"/>
|
||||
|
@ -22,7 +21,6 @@
|
|||
</record>
|
||||
|
||||
<record id="crm_case_initialdiscussion0" model="crm.meeting">
|
||||
<field name="partner_address_id" ref="base.res_partner_address_2"/>
|
||||
<field eval="1" name="active"/>
|
||||
<field eval="7.0" name="duration"/>
|
||||
<field name="partner_id" ref="base.res_partner_10"/>
|
||||
|
@ -37,7 +35,6 @@
|
|||
</record>
|
||||
|
||||
<record id="crm_case_discusspricing0" model="crm.meeting">
|
||||
<field name="partner_address_id" ref="base.res_partner_address_zen"/>
|
||||
<field eval="1" name="active"/>
|
||||
<field eval="3.0" name="duration"/>
|
||||
<field name="partner_id" ref="base.res_partner_3"/>
|
||||
|
@ -52,7 +49,6 @@
|
|||
</record>
|
||||
|
||||
<record id="crm_case_reviewneeds0" model="crm.meeting">
|
||||
<field name="partner_address_id" ref="base.res_partner_address_15"/>
|
||||
<field eval="1" name="active"/>
|
||||
<field eval="6.0" name="duration"/>
|
||||
<field name="partner_id" ref="base.res_partner_11"/>
|
||||
|
@ -66,7 +62,6 @@
|
|||
</record>
|
||||
|
||||
<record id="crm_case_changesindesigning0" model="crm.meeting">
|
||||
<field name="partner_address_id" ref="base.res_partner_address_1"/>
|
||||
<field eval="1" name="active"/>
|
||||
<field eval="05" name="duration"/>
|
||||
<field name="partner_id" ref="base.res_partner_9"/>
|
||||
|
@ -81,7 +76,6 @@
|
|||
</record>
|
||||
|
||||
<record id="crm_case_updatethedata0" model="crm.meeting">
|
||||
<field name="partner_address_id" ref="base.res_partner_address_7"/>
|
||||
<field eval="1" name="active"/>
|
||||
<field name="partner_id" ref="base.res_partner_4"/>
|
||||
<field name="user_id" ref="base.user_root"/>
|
||||
|
|
|
@ -60,9 +60,6 @@
|
|||
<separator colspan="2" string="Contacts"/>
|
||||
<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="email_from"/>
|
||||
</group><group col="2" colspan="2">
|
||||
<separator colspan="2" string="Visibility"/>
|
||||
|
@ -156,7 +153,6 @@
|
|||
</page>
|
||||
<page string="Other">
|
||||
<field name="user_id"/>
|
||||
<field name="partner_address_id" select="1" />
|
||||
<newline />
|
||||
</page>
|
||||
</notebook>
|
||||
|
|
|
@ -44,8 +44,6 @@ class crm_phonecall(crm_base, osv.osv):
|
|||
select=True, help='Sales team to which Case belongs to.'),
|
||||
'user_id': fields.many2one('res.users', 'Responsible'),
|
||||
'partner_id': fields.many2one('res.partner', 'Partner'),
|
||||
'partner_address_id': fields.many2one('res.partner.address', 'Partner Contact', \
|
||||
domain="[('partner_id','=',partner_id)]"),
|
||||
'company_id': fields.many2one('res.company', 'Company'),
|
||||
'description': fields.text('Description'),
|
||||
'state': fields.selection([
|
||||
|
@ -67,8 +65,6 @@ class crm_phonecall(crm_base, osv.osv):
|
|||
domain="['|',('section_id','=',section_id),('section_id','=',False),\
|
||||
('object_id.model', '=', 'crm.phonecall')]"),
|
||||
'partner_phone': fields.char('Phone', size=32),
|
||||
'partner_contact': fields.related('partner_address_id', 'name', \
|
||||
type="char", string="Contact", size=128),
|
||||
'partner_mobile': fields.char('Mobile', size=32),
|
||||
'priority': fields.selection(crm.AVAILABLE_PRIORITIES, 'Priority'),
|
||||
'date_closed': fields.datetime('Closed', readonly=True),
|
||||
|
@ -95,7 +91,7 @@ class crm_phonecall(crm_base, osv.osv):
|
|||
res = super(crm_phonecall, self).onchange_partner_address_id(cr, uid, ids, add, email)
|
||||
res.setdefault('value', {})
|
||||
if add:
|
||||
address = self.pool.get('res.partner.address').browse(cr, uid, add)
|
||||
address = self.pool.get('res.partner').browse(cr, uid, add)
|
||||
res['value']['partner_phone'] = address.phone
|
||||
res['value']['partner_mobile'] = address.mobile
|
||||
return res
|
||||
|
@ -153,7 +149,6 @@ class crm_phonecall(crm_base, osv.osv):
|
|||
'date' : schedule_time,
|
||||
'section_id' : section_id or False,
|
||||
'partner_id': call.partner_id and call.partner_id.id or False,
|
||||
'partner_address_id': call.partner_address_id and call.partner_address_id.id or False,
|
||||
'partner_phone' : call.partner_phone,
|
||||
'partner_mobile' : call.partner_mobile,
|
||||
'priority': call.priority,
|
||||
|
@ -180,9 +175,9 @@ class crm_phonecall(crm_base, osv.osv):
|
|||
return self.write(cr, uid, ids, {'partner_id' : partner_id}, context=context)
|
||||
|
||||
def _call_create_partner_address(self, cr, uid, phonecall, partner_id, context=None):
|
||||
address = self.pool.get('res.partner.address')
|
||||
address = self.pool.get('res.partner')
|
||||
return address.create(cr, uid, {
|
||||
'partner_id': partner_id,
|
||||
'parent_id': partner_id,
|
||||
'name': phonecall.name,
|
||||
'phone': phonecall.partner_phone,
|
||||
})
|
||||
|
@ -227,7 +222,6 @@ class crm_phonecall(crm_base, osv.osv):
|
|||
|
||||
def convert_opportunity(self, cr, uid, ids, opportunity_summary=False, partner_id=False, planned_revenue=0.0, probability=0.0, context=None):
|
||||
partner = self.pool.get('res.partner')
|
||||
address = self.pool.get('res.partner.address')
|
||||
opportunity = self.pool.get('crm.lead')
|
||||
opportunity_dict = {}
|
||||
default_contact = False
|
||||
|
@ -237,14 +231,12 @@ class crm_phonecall(crm_base, osv.osv):
|
|||
if partner_id:
|
||||
address_id = partner.address_get(cr, uid, [partner_id])['default']
|
||||
if address_id:
|
||||
default_contact = address.browse(cr, uid, address_id, context=context)
|
||||
default_contact = partner.browse(cr, uid, address_id, context=context)
|
||||
opportunity_id = opportunity.create(cr, uid, {
|
||||
'name': opportunity_summary or call.name,
|
||||
'planned_revenue': planned_revenue,
|
||||
'probability': probability,
|
||||
'partner_id': partner_id or False,
|
||||
'partner_address_id': default_contact and default_contact.id,
|
||||
'phone': default_contact and default_contact.phone,
|
||||
'mobile': default_contact and default_contact.mobile,
|
||||
'section_id': call.section_id and call.section_id.id or False,
|
||||
'description': call.description or False,
|
||||
|
|
|
@ -5,7 +5,6 @@
|
|||
((((((((((( Demo Cases )))))))))))
|
||||
-->
|
||||
<record id="crm_case_phone01" model="crm.phonecall">
|
||||
<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=""3"" name="priority"/>
|
||||
|
@ -21,7 +20,6 @@
|
|||
<field eval=""done"" name="state"/>
|
||||
</record>
|
||||
<record id="crm_case_phone02" model="crm.phonecall">
|
||||
<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=""4"" name="priority"/>
|
||||
|
@ -37,7 +35,6 @@
|
|||
<field eval=""done"" name="state"/>
|
||||
</record>
|
||||
<record id="crm_case_phone03" model="crm.phonecall">
|
||||
<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=""2"" name="priority"/>
|
||||
|
@ -68,7 +65,6 @@
|
|||
<field eval="3.45" name="duration"/>
|
||||
</record>
|
||||
<record id="crm_case_phone05" model="crm.phonecall">
|
||||
<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=""3"" name="priority"/>
|
||||
|
|
|
@ -28,7 +28,6 @@
|
|||
<field name="date"/>
|
||||
<field name="name"/>
|
||||
<field name="partner_id"/>
|
||||
<field name="partner_contact"/>
|
||||
<field name="partner_phone"/>
|
||||
<field name="user_id"/>
|
||||
<field name="categ_id" invisible="1"/>
|
||||
|
@ -91,8 +90,6 @@
|
|||
attrs="{'invisible':[('partner_id','!=',False)]}"
|
||||
groups="base.group_partner_manager"/>
|
||||
<newline/>
|
||||
<field name="partner_address_id"
|
||||
on_change="onchange_partner_address_id(partner_address_id)" />
|
||||
<newline/>
|
||||
<field name="partner_mobile" />
|
||||
</group>
|
||||
|
@ -140,9 +137,7 @@
|
|||
<field name="partner_id"
|
||||
on_change="onchange_partner_id(partner_id)"
|
||||
string="Partner" />
|
||||
<field name="partner_address_id"
|
||||
on_change="onchange_partner_address_id(partner_address_id)"
|
||||
invisible="1"/>
|
||||
|
||||
<field name="partner_phone"
|
||||
invisible="1"/>
|
||||
<field name="user_id" groups="base.group_extended"/>
|
||||
|
|
|
@ -64,7 +64,6 @@ class res_partner(osv.osv):
|
|||
'planned_revenue' : planned_revenue,
|
||||
'probability' : probability,
|
||||
'partner_id' : partner_id,
|
||||
'partner_address_id' : address,
|
||||
'categ_id' : categ_ids and categ_ids[0] or '',
|
||||
'state' :'draft',
|
||||
'type': 'opportunity'
|
||||
|
|
|
@ -24,7 +24,7 @@
|
|||
<field name="inherit_id" ref="base.view_partner_tree"/>
|
||||
<field eval="18" name="priority"/>
|
||||
<field name="arch" type="xml">
|
||||
<field name="country" position="after">
|
||||
<field name="phone" position="after">
|
||||
<field name="section_id" completion="1" widget="selection"
|
||||
groups="base.group_extended"/>
|
||||
</field>
|
||||
|
|
|
@ -67,8 +67,6 @@ class crm_lead2opportunity_partner(osv.osv_memory):
|
|||
ids = lead_obj.search(cr, uid, [('partner_id', '=', partner_id), ('type', '=', 'opportunity'), '!', ('state', 'in', ['done', 'cancel'])])
|
||||
if ids:
|
||||
opportunities.append(ids[0])
|
||||
|
||||
|
||||
if not partner_id:
|
||||
label = False
|
||||
opp_ids = []
|
||||
|
|
|
@ -55,9 +55,9 @@ class crm_opportunity2phonecall(osv.osv_memory):
|
|||
if 'note' in fields:
|
||||
res.update({'note': opp.description})
|
||||
if 'contact_name' in fields:
|
||||
res.update({'contact_name': opp.partner_address_id and opp.partner_address_id.name or False})
|
||||
res.update({'contact_name': opp.partner_id and opp.partner_id.name or False})
|
||||
if 'phone' in fields:
|
||||
res.update({'phone': opp.phone or (opp.partner_address_id and opp.partner_address_id.phone or False)})
|
||||
res.update({'phone': opp.phone or (opp.partner_id and opp.partner_id.phone or False)})
|
||||
return res
|
||||
|
||||
def action_schedule(self, cr, uid, ids, context=None):
|
||||
|
|
|
@ -38,17 +38,16 @@ class crm_phonecall2partner(osv.osv_memory):
|
|||
|
||||
phonecall_obj = self.pool.get('crm.phonecall')
|
||||
partner_obj = self.pool.get('res.partner')
|
||||
contact_obj = self.pool.get('res.partner.address')
|
||||
rec_ids = context and context.get('active_ids', [])
|
||||
value = {}
|
||||
|
||||
partner_id = False
|
||||
for phonecall in phonecall_obj.browse(cr, uid, rec_ids, context=context):
|
||||
partner_ids = partner_obj.search(cr, uid, [('name', '=', phonecall.name or phonecall.name)])
|
||||
if not partner_ids and phonecall.email_from:
|
||||
address_ids = contact_obj.search(cr, uid, ['|', ('phone', '=', phonecall.partner_phone), ('mobile','=',phonecall.partner_mobile)])
|
||||
address_ids = partner_obj.search(cr, uid, ['|', ('phone', '=', phonecall.partner_phone), ('mobile','=',phonecall.partner_mobile)])
|
||||
if address_ids:
|
||||
addresses = contact_obj.browse(cr, uid, address_ids)
|
||||
partner_ids = addresses and [addresses[0].partner_id.id] or False
|
||||
addresses = partner_ids.browse(cr, uid, address_ids)
|
||||
partner_ids = addresses and [addresses[0].parent_id.id] or False
|
||||
|
||||
partner_id = partner_ids and partner_ids[0] or False
|
||||
return partner_id
|
||||
|
|
|
@ -311,9 +311,6 @@ class document_file(osv.osv):
|
|||
elif 'partner_id' in obj_model._columns and obj_model._columns['partner_id']._obj == 'res.partner':
|
||||
bro = obj_model.browse(cr, uid, res_id, context=context)
|
||||
return bro.partner_id.id
|
||||
elif 'address_id' in obj_model._columns and obj_model._columns['address_id']._obj == 'res.partner.address':
|
||||
bro = obj_model.browse(cr, uid, res_id, context=context)
|
||||
return bro.address_id.partner_id.id
|
||||
return False
|
||||
|
||||
def unlink(self, cr, uid, ids, context=None):
|
||||
|
|
|
@ -37,13 +37,13 @@ class res_company(osv.osv):
|
|||
an empty dict if no address can be found
|
||||
"""
|
||||
res_partner = self.pool.get('res.partner')
|
||||
res_partner_address = self.pool.get('res.partner.address')
|
||||
# res_partner_address = self.pool.get('res.partner.address')
|
||||
addresses = res_partner.address_get(cr, uid, [company.partner_id.id], ['default', 'contact', 'invoice'])
|
||||
addr_id = addresses['invoice'] or addresses['contact'] or addresses['default']
|
||||
result = {}
|
||||
if addr_id:
|
||||
address = res_partner_address.browse(cr, uid, addr_id, context=context)
|
||||
result = res_partner_address.edi_export(cr, uid, [address], edi_struct=edi_address_struct, context=context)[0]
|
||||
address = res_partner.browse(cr, uid, addr_id, context=context)
|
||||
result = res_partner.edi_export(cr, uid, [address], edi_struct=edi_address_struct, context=context)[0]
|
||||
if company.logo:
|
||||
result['logo'] = company.logo # already base64-encoded
|
||||
if company.paypal_account:
|
||||
|
@ -52,7 +52,7 @@ class res_company(osv.osv):
|
|||
res_partner_bank = self.pool.get('res.partner.bank')
|
||||
bank_ids = res_partner_bank.search(cr, uid, [('company_id','=',company.id),('footer','=',True)], context=context)
|
||||
if bank_ids:
|
||||
result['bank_ids'] = res_partner_address.edi_m2m(cr, uid,
|
||||
result['bank_ids'] = res_partner.edi_m2m(cr, uid,
|
||||
res_partner_bank.browse(cr, uid, bank_ids, context=context),
|
||||
context=context)
|
||||
return result
|
||||
|
|
|
@ -44,7 +44,18 @@ RES_PARTNER_EDI_STRUCT = {
|
|||
'ref': True,
|
||||
'lang': True,
|
||||
'website': True,
|
||||
'address': RES_PARTNER_ADDRESS_EDI_STRUCT
|
||||
# 'address': RES_PARTNER_ADDRESS_EDI_STRUCT
|
||||
# 'name': True,
|
||||
'email': True,
|
||||
'street': True,
|
||||
'street2': True,
|
||||
'zip': True,
|
||||
'city': True,
|
||||
'country_id': True,
|
||||
'state_id': True,
|
||||
'phone': True,
|
||||
'fax': True,
|
||||
'mobile': True,
|
||||
}
|
||||
|
||||
class res_partner(osv.osv, EDIMixin):
|
||||
|
@ -55,9 +66,6 @@ class res_partner(osv.osv, EDIMixin):
|
|||
edi_struct or dict(RES_PARTNER_EDI_STRUCT),
|
||||
context=context)
|
||||
|
||||
class res_partner_address(osv.osv, EDIMixin):
|
||||
_inherit = "res.partner.address"
|
||||
|
||||
def _get_bank_type(self, cr, uid, context=None):
|
||||
# first option: the "normal" bank type, installed by default
|
||||
res_partner_bank_type = self.pool.get('res.partner.bank.type')
|
||||
|
@ -65,7 +73,6 @@ class res_partner_address(osv.osv, EDIMixin):
|
|||
return self.pool.get('ir.model.data').get_object(cr, uid, 'base', 'bank_normal', context=context).code
|
||||
except ValueError:
|
||||
pass
|
||||
|
||||
# second option: create a new custom type for EDI or use it if already created, as IBAN type is
|
||||
# not always appropriate: we need a free-form bank type for max flexibility (users can correct
|
||||
# data manually after import)
|
||||
|
@ -78,19 +85,14 @@ class res_partner_address(osv.osv, EDIMixin):
|
|||
'code': label})
|
||||
return code
|
||||
|
||||
def edi_export(self, cr, uid, records, edi_struct=None, context=None):
|
||||
return super(res_partner_address,self).edi_export(cr, uid, records,
|
||||
edi_struct or dict(RES_PARTNER_ADDRESS_EDI_STRUCT),
|
||||
context=context)
|
||||
|
||||
def edi_import(self, cr, uid, edi_document, context=None):
|
||||
# handle bank info, if any
|
||||
edi_bank_ids = edi_document.pop('bank_ids', None)
|
||||
address_id = super(res_partner_address,self).edi_import(cr, uid, edi_document, context=context)
|
||||
contact_id = super(res_partner,self).edi_import(cr, uid, edi_document, context=context)
|
||||
if edi_bank_ids:
|
||||
address = self.browse(cr, uid, address_id, context=context)
|
||||
contacts = self.browse(cr, uid, contact_id, context=context)
|
||||
import_ctx = dict((context or {}),
|
||||
default_partner_id=address.partner_id.id,
|
||||
default_partner_id=contacts.id,
|
||||
default_state=self._get_bank_type(cr, uid, context))
|
||||
for ext_bank_id, bank_name in edi_bank_ids:
|
||||
try:
|
||||
|
@ -101,5 +103,7 @@ class res_partner_address(osv.osv, EDIMixin):
|
|||
logging.getLogger('edi.res_partner').warning('Failed to import bank account using'
|
||||
'bank type: %s, ignoring', import_ctx['default_state'],
|
||||
exc_info=True)
|
||||
return address_id
|
||||
return contact_id
|
||||
|
||||
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
|
|
@ -455,18 +455,14 @@ class mail_thread(osv.osv):
|
|||
{ 'partner_address_id': id or False,
|
||||
'partner_id': pid or False }
|
||||
"""
|
||||
address_pool = self.pool.get('res.partner.address')
|
||||
res = {
|
||||
'partner_address_id': False,
|
||||
'partner_id': False
|
||||
}
|
||||
partner_pool = self.pool.get('res.partner')
|
||||
res = {'partner_id': False}
|
||||
if email:
|
||||
email = to_email(email)[0]
|
||||
address_ids = address_pool.search(cr, uid, [('email', '=', email)])
|
||||
if address_ids:
|
||||
address = address_pool.browse(cr, uid, address_ids[0])
|
||||
res['partner_address_id'] = address_ids[0]
|
||||
res['partner_id'] = address.partner_id.id
|
||||
contact_ids = partner_pool.search(cr, uid, [('email', '=', email)])
|
||||
if contact_ids:
|
||||
contact = partner_pool.browse(cr, uid, contact_ids[0])
|
||||
res['partner_id'] = contact.id
|
||||
return res
|
||||
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
|
|
@ -103,8 +103,8 @@ sale_order_line()
|
|||
class account_invoice_line(osv.osv):
|
||||
_inherit = "account.invoice.line"
|
||||
|
||||
def product_id_change(self, cr, uid, ids, product, uom, qty=0, name='', type='out_invoice', partner_id=False, fposition_id=False, price_unit=False, address_invoice_id=False, currency_id=False, context=None, company_id=None):
|
||||
res = super(account_invoice_line, self).product_id_change(cr, uid, ids, product, uom, qty, name, type, partner_id, fposition_id, price_unit, address_invoice_id, currency_id, context=context, company_id=company_id)
|
||||
def product_id_change(self, cr, uid, ids, product, uom, qty=0, name='', type='out_invoice', partner_id=False, fposition_id=False, price_unit=False, currency_id=False, context=None, company_id=None):
|
||||
res = super(account_invoice_line, self).product_id_change(cr, uid, ids, product, uom, qty, name, type, partner_id, fposition_id, price_unit,currency_id, context=context, company_id=company_id)
|
||||
|
||||
def get_real_price(res_dict, product_id, qty, uom, pricelist):
|
||||
item_obj = self.pool.get('product.pricelist.item')
|
||||
|
|
|
@ -67,7 +67,7 @@ Dashboard for purchase management that includes:
|
|||
'test/process/generate_invoice_from_reception.yml',
|
||||
'test/process/run_scheduler.yml',
|
||||
'test/process/merge_order.yml',
|
||||
'test/process/edi_purchase_order.yml',
|
||||
# 'test/process/edi_purchase_order.yml',
|
||||
'test/process/invoice_on_poline.yml',
|
||||
'test/ui/print_report.yml',
|
||||
'test/ui/duplicate_order.yml',
|
||||
|
|
|
@ -79,7 +79,7 @@ class purchase_order(osv.osv, EDIMixin):
|
|||
'__import_module': 'sale',
|
||||
|
||||
'company_address': res_company.edi_export_address(cr, uid, order.company_id, context=context),
|
||||
'partner_address': res_partner_address.edi_export(cr, uid, [order.partner_address_id], context=context)[0],
|
||||
'partner_address': res_partner_address.edi_export(cr, uid, [order.partner_id], context=context)[0],
|
||||
'currency': self.pool.get('res.currency').edi_export(cr, uid, [order.pricelist_id.currency_id],
|
||||
context=context)[0],
|
||||
})
|
||||
|
@ -115,7 +115,7 @@ class purchase_order(osv.osv, EDIMixin):
|
|||
partner_address = res_partner_address.browse(cr, uid, address_id, context=context)
|
||||
edi_document['partner_id'] = (src_company_id, src_company_name)
|
||||
edi_document.pop('partner_address', False) # ignored
|
||||
edi_document['partner_address_id'] = self.edi_m2o(cr, uid, partner_address, context=context)
|
||||
edi_document['partner_id'] = self.edi_m2o(cr, uid, partner_address, context=context)
|
||||
|
||||
return partner_id
|
||||
|
||||
|
|
|
@ -38,13 +38,13 @@
|
|||
<field name="name">Automated Purchase Order Notification Mail</field>
|
||||
<field name="email_from">${object.validator.user_email or ''}</field>
|
||||
<field name="subject">${object.company_id.name} Order (Ref ${object.name or 'n/a' })</field>
|
||||
<field name="email_to">${object.partner_address_id.email}</field>
|
||||
<field name="email_to">${object.partner_id.email}</field>
|
||||
<field name="model_id" ref="purchase.model_purchase_order"/>
|
||||
<field name="auto_delete" eval="True"/>
|
||||
<field name="body_html"><![CDATA[
|
||||
<div style="font-family: 'Lucica Grande', Ubuntu, Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); background-color: rgb(255, 255, 255); ">
|
||||
|
||||
<p>Hello${object.partner_address_id.name and ' ' or ''}${object.partner_address_id.name or ''},</p>
|
||||
<p>Hello${object.partner_id.name and ' ' or ''}${object.partner_id.name or ''},</p>
|
||||
|
||||
<p>Here is a purchase order confirmation from ${object.company_id.name}: </p>
|
||||
|
||||
|
@ -107,7 +107,7 @@
|
|||
</div>
|
||||
]]></field>
|
||||
<field name="body_text"><![CDATA[
|
||||
Hello${object.partner_address_id.name and ' ' or ''}${object.partner_address_id.name or ''},
|
||||
Hello${object.partner_id.name and ' ' or ''}${object.partner_id.name or ''},
|
||||
|
||||
Here is a purchase order confirmation from ${object.company_id.name}:
|
||||
| Order number: *${object.name}*
|
||||
|
|
|
@ -49,7 +49,7 @@ class purchase_order(osv.osv):
|
|||
cur = order.pricelist_id.currency_id
|
||||
for line in order.order_line:
|
||||
val1 += line.price_subtotal
|
||||
for c in self.pool.get('account.tax').compute_all(cr, uid, line.taxes_id, line.price_unit, line.product_qty, order.partner_address_id.id, line.product_id.id, order.partner_id)['taxes']:
|
||||
for c in self.pool.get('account.tax').compute_all(cr, uid, line.taxes_id, line.price_unit, line.product_qty, order.partner_id.id, line.product_id.id, order.partner_id)['taxes']:
|
||||
val += c.get('amount', 0.0)
|
||||
res[order.id]['amount_tax']=cur_obj.round(cr, uid, cur, val)
|
||||
res[order.id]['amount_untaxed']=cur_obj.round(cr, uid, cur, val1)
|
||||
|
@ -161,9 +161,7 @@ class purchase_order(osv.osv):
|
|||
'date_order':fields.date('Order Date', required=True, states={'confirmed':[('readonly',True)], 'approved':[('readonly',True)]}, select=True, help="Date on which this document has been created."),
|
||||
'date_approve':fields.date('Date Approved', readonly=1, select=True, help="Date on which purchase order has been approved"),
|
||||
'partner_id':fields.many2one('res.partner', 'Supplier', required=True, states={'confirmed':[('readonly',True)], 'approved':[('readonly',True)],'done':[('readonly',True)]}, change_default=True),
|
||||
'partner_address_id':fields.many2one('res.partner.address', 'Address', required=True,
|
||||
states={'confirmed':[('readonly',True)], 'approved':[('readonly',True)],'done':[('readonly',True)]},domain="[('partner_id', '=', partner_id)]"),
|
||||
'dest_address_id':fields.many2one('res.partner.address', 'Destination Address', domain="[('partner_id', '!=', False)]",
|
||||
'dest_address_id':fields.many2one('res.partner', 'Destination Address', domain="[('parent_id','=',partner_id)]",
|
||||
states={'confirmed':[('readonly',True)], 'approved':[('readonly',True)],'done':[('readonly',True)]},
|
||||
help="Put an address if you want to deliver directly from the supplier to the customer." \
|
||||
"In this case, it will remove the warehouse link and set the customer location."
|
||||
|
@ -215,7 +213,6 @@ class purchase_order(osv.osv):
|
|||
'shipped': 0,
|
||||
'invoice_method': 'order',
|
||||
'invoiced': 0,
|
||||
'partner_address_id': lambda self, cr, uid, context: context.get('partner_id', False) and self.pool.get('res.partner').address_get(cr, uid, [context['partner_id']], ['default'])['default'],
|
||||
'pricelist_id': lambda self, cr, uid, context: context.get('partner_id', False) and self.pool.get('res.partner').browse(cr, uid, context['partner_id']).property_product_pricelist_purchase.id,
|
||||
'company_id': lambda self,cr,uid,c: self.pool.get('res.company')._company_default_get(cr, uid, 'purchase.order', context=c),
|
||||
}
|
||||
|
@ -249,9 +246,9 @@ class purchase_order(osv.osv):
|
|||
def onchange_dest_address_id(self, cr, uid, ids, address_id):
|
||||
if not address_id:
|
||||
return {}
|
||||
address = self.pool.get('res.partner.address')
|
||||
address = self.pool.get('res.partner')
|
||||
values = {'warehouse_id': False}
|
||||
supplier = address.browse(cr, uid, address_id).partner_id
|
||||
supplier = address.browse(cr, uid, address_id)
|
||||
if supplier:
|
||||
location_id = supplier.property_stock_customer.id
|
||||
values.update({'location_id': location_id})
|
||||
|
@ -266,12 +263,12 @@ class purchase_order(osv.osv):
|
|||
def onchange_partner_id(self, cr, uid, ids, partner_id):
|
||||
partner = self.pool.get('res.partner')
|
||||
if not partner_id:
|
||||
return {'value':{'partner_address_id': False, 'fiscal_position': False}}
|
||||
return {'value':{'fiscal_position': False}}
|
||||
supplier_address = partner.address_get(cr, uid, [partner_id], ['default'])
|
||||
supplier = partner.browse(cr, uid, partner_id)
|
||||
pricelist = supplier.property_product_pricelist_purchase.id
|
||||
fiscal_position = supplier.property_account_position and supplier.property_account_position.id or False
|
||||
return {'value':{'partner_address_id': supplier_address['default'], 'pricelist_id': pricelist, 'fiscal_position': fiscal_position}}
|
||||
return {'value':{'pricelist_id': pricelist, 'fiscal_position': fiscal_position}}
|
||||
|
||||
def wkf_approve_order(self, cr, uid, ids, context=None):
|
||||
self.write(cr, uid, ids, {'state': 'approved', 'date_approve': fields.date.context_today(self,cr,uid,context=context)})
|
||||
|
@ -376,8 +373,6 @@ class purchase_order(osv.osv):
|
|||
'type': 'in_invoice',
|
||||
'partner_id': order.partner_id.id,
|
||||
'currency_id': order.pricelist_id.currency_id.id,
|
||||
'address_invoice_id': order.partner_address_id.id,
|
||||
'address_contact_id': order.partner_address_id.id,
|
||||
'journal_id': len(journal_ids) and journal_ids[0] or False,
|
||||
'invoice_line': [(6, 0, inv_lines)],
|
||||
'origin': order.name,
|
||||
|
@ -433,7 +428,7 @@ class purchase_order(osv.osv):
|
|||
'origin': order.name + ((order.origin and (':' + order.origin)) or ''),
|
||||
'date': order.date_order,
|
||||
'type': 'in',
|
||||
'address_id': order.dest_address_id.id or order.partner_address_id.id,
|
||||
'address_id': order.dest_address_id.id or order.partner_id.id,
|
||||
'invoice_state': '2binvoiced' if order.invoice_method == 'picking' else 'none',
|
||||
'purchase_id': order.id,
|
||||
'company_id': order.company_id.id,
|
||||
|
@ -453,7 +448,7 @@ class purchase_order(osv.osv):
|
|||
'location_id': order.partner_id.property_stock_supplier.id,
|
||||
'location_dest_id': order.location_id.id,
|
||||
'picking_id': picking_id,
|
||||
'address_id': order.dest_address_id.id or order.partner_address_id.id,
|
||||
'address_id': order.dest_address_id.id or order.partner_id.id,
|
||||
'move_dest_id': order_line.move_dest_id.id,
|
||||
'state': 'draft',
|
||||
'purchase_line_id': order_line.id,
|
||||
|
@ -574,7 +569,7 @@ class purchase_order(osv.osv):
|
|||
'origin': porder.origin,
|
||||
'date_order': porder.date_order,
|
||||
'partner_id': porder.partner_id.id,
|
||||
'partner_address_id': porder.partner_address_id.id,
|
||||
# 'partner_address_id': porder.partner_id.id,
|
||||
'dest_address_id': porder.dest_address_id.id,
|
||||
'warehouse_id': porder.warehouse_id.id,
|
||||
'location_id': porder.location_id.id,
|
||||
|
@ -925,7 +920,6 @@ class procurement_order(osv.osv):
|
|||
'name': name,
|
||||
'origin': procurement.origin,
|
||||
'partner_id': partner_id,
|
||||
'partner_address_id': address_id,
|
||||
'location_id': procurement.location_id.id,
|
||||
'warehouse_id': warehouse_id and warehouse_id[0] or False,
|
||||
'pricelist_id': pricelist_id,
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
</record>
|
||||
|
||||
<workflow action="purchase_confirm" model="purchase.order" ref="order_purchase2"/>
|
||||
<workflow action="purchase_confirm" model="purchase.order" ref="order_purchase6"/>
|
||||
<!--workflow action="purchase_confirm" model="purchase.order" ref="order_purchase6"/-->
|
||||
|
||||
<record id="stock.res_company_tinyshop0" model="res.company">
|
||||
<field eval="1.0" name="po_lead"/>
|
||||
|
|
|
@ -62,24 +62,23 @@
|
|||
<record id="action_supplier_address_form" model="ir.actions.act_window">
|
||||
<field name="name">Addresses</field>
|
||||
<field name="type">ir.actions.act_window</field>
|
||||
<field name="res_model">res.partner.address</field>
|
||||
<field name="res_model">res.partner</field>
|
||||
<field name="view_type">form</field>
|
||||
<field name="context">{"search_default_supplier":1}</field>
|
||||
<field name="search_view_id" ref="base.view_res_partner_address_filter"/>
|
||||
<field name="help">Access your supplier records and maintain a good relationship with your suppliers. You can track all your interactions with them through the History tab: emails, orders, meetings, etc.</field>
|
||||
</record>
|
||||
<record id="action_supplier_address_form_view1" model="ir.actions.act_window.view">
|
||||
<field eval="10" name="sequence"/>
|
||||
<field name="view_mode">tree</field>
|
||||
<field name="view_id" ref="base.view_partner_address_tree"/>
|
||||
<field name="view_id" ref="base.view_partner_tree"/>
|
||||
<field name="act_window_id" ref="action_supplier_address_form"/>
|
||||
</record>
|
||||
<record id="action_supplier_address_form_view2" model="ir.actions.act_window.view">
|
||||
<!--record id="action_supplier_address_form_view2" model="ir.actions.act_window.view">
|
||||
<field eval="20" name="sequence"/>
|
||||
<field name="view_mode">form</field>
|
||||
<field name="view_id" ref="base.view_partner_address_form1"/>
|
||||
<field name="act_window_id" ref="action_supplier_address_form"/>
|
||||
</record>
|
||||
</record-->
|
||||
|
||||
<!--supplier menu-->
|
||||
<menuitem id="base.menu_procurement_management_supplier" name="Address Book"
|
||||
|
@ -173,7 +172,7 @@
|
|||
<notebook colspan="4">
|
||||
<page string="Purchase Order">
|
||||
<field name="partner_id" on_change="onchange_partner_id(partner_id)" context="{'search_default_supplier':1,'default_supplier':1,'default_customer':0}" options='{"quick_create": false}'/>
|
||||
<field name="partner_address_id" options='{"quick_create": false}'/>
|
||||
<!--field name="partner_address_id" options='{"quick_create": false}'/-->
|
||||
<field domain="[('type','=','purchase')]" name="pricelist_id" groups="base.group_extended"/>
|
||||
<field name="origin" groups="base.group_extended"/>
|
||||
<newline/>
|
||||
|
|
|
@ -166,8 +166,8 @@
|
|||
<tr>
|
||||
<td>
|
||||
<para style="terp_default_Bold_9">Shipping address :</para>
|
||||
<para style="terp_default_9">[[ (o.dest_address_id and o.dest_address_id.partner_id.name) or (o.warehouse_id and o.warehouse_id.name) or '']]</para>
|
||||
<para style="terp_default_9">[[ (o.dest_address_id and display_address(o.dest_address_id)) or (o.warehouse_id and displaye_address(o.warehouse_id.partner_address_id)) or '']]</para>
|
||||
<para style="terp_default_9">[[ (o.dest_address_id and o.dest_address_id.name) or (o.warehouse_id and o.warehouse_id.name) or '']]</para>
|
||||
<para style="terp_default_9">[[ (o.dest_address_id and display_address(o.partner_id,'default')) or (o.warehouse_id and display_address(o.warehouse_id.partner_address_id)) or '']]</para>
|
||||
</td>
|
||||
</tr>
|
||||
</blockTable>
|
||||
|
@ -182,12 +182,12 @@
|
|||
</td>
|
||||
<td>
|
||||
<para style="terp_default_9">[[ (o.partner_id and o.partner_id.title and o.partner_id.title.name) or '' ]] [[ (o.partner_id and o.partner_id.name) or '' ]]</para>
|
||||
<para style="terp_default_9">[[ o.partner_address_id and display_address(o.partner_address_id) ]] </para>
|
||||
<para style="terp_default_9">[[ o.partner_id and display_address(o.partner_id,'default') ]] </para>
|
||||
<para style="terp_default_9">
|
||||
<font color="white"> </font>
|
||||
</para>
|
||||
<para style="terp_default_9">Tél. : [[ (o.partner_address_id and o.partner_address_id.phone) or removeParentNode('para') ]]</para>
|
||||
<para style="terp_default_9">Fax : [[ (o.partner_address_id and o.partner_address_id.fax) or removeParentNode('para') ]]</para>
|
||||
<para style="terp_default_9">Tél. : [[ (o.partner_id and o.partner_id.phone) or removeParentNode('para') ]]</para>
|
||||
<para style="terp_default_9">Fax : [[ (o.partner_id and o.partner_id.fax) or removeParentNode('para') ]]</para>
|
||||
<para style="terp_default_9">TVA : [[ (o.partner_id and o.partner_id.vat) or removeParentNode('para') ]]</para>
|
||||
</td>
|
||||
</tr>
|
||||
|
|
|
@ -46,8 +46,6 @@ class purchase_report(osv.osv):
|
|||
'warehouse_id': fields.many2one('stock.warehouse', 'Warehouse', readonly=True),
|
||||
'location_id': fields.many2one('stock.location', 'Destination', readonly=True),
|
||||
'partner_id':fields.many2one('res.partner', 'Supplier', readonly=True),
|
||||
'partner_address_id':fields.many2one('res.partner.address', 'Address Contact Name', readonly=True),
|
||||
'dest_address_id':fields.many2one('res.partner.address', 'Dest. Address Contact Name',readonly=True),
|
||||
'pricelist_id':fields.many2one('product.pricelist', 'Pricelist', readonly=True),
|
||||
'date_approve':fields.date('Date Approved', readonly=True),
|
||||
'expected_date':fields.date('Expected Date', readonly=True),
|
||||
|
@ -82,7 +80,6 @@ class purchase_report(osv.osv):
|
|||
s.state,
|
||||
s.date_approve,
|
||||
date_trunc('day',s.minimum_planned_date) as expected_date,
|
||||
s.partner_address_id,
|
||||
s.dest_address_id,
|
||||
s.pricelist_id,
|
||||
s.validator,
|
||||
|
@ -122,7 +119,6 @@ class purchase_report(osv.osv):
|
|||
l.date_planned,
|
||||
l.product_uom,
|
||||
date_trunc('day',s.minimum_planned_date),
|
||||
s.partner_address_id,
|
||||
s.pricelist_id,
|
||||
s.validator,
|
||||
s.dest_address_id,
|
||||
|
|
|
@ -92,7 +92,7 @@
|
|||
<td>
|
||||
<para style="terp_default_Bold_9">Expected Delivery address:</para>
|
||||
<para style="terp_default_9">[[ (order.dest_address_id and order.dest_address_id.partner_id.name) or (order.warehouse_id and order.warehouse_id.name) or '']]</para>
|
||||
<para style="terp_default_9">[[ order.dest_address_id and display_address(order.dest_address_id) ]] </para>
|
||||
<para style="terp_default_9">[[ order.dest_address_id and display_address(order.dest_address_id,'delivery') ]] </para>
|
||||
</td>
|
||||
<td>
|
||||
<para style="terp_default_9">
|
||||
|
@ -101,12 +101,12 @@
|
|||
</td>
|
||||
<td>
|
||||
<para style="terp_default_9">[[ (order.partner_id and order.partner_id.title and order.partner_id.title.name) or '' ]] [[ order.partner_id.name ]]</para>
|
||||
<para style="terp_default_9">[[ order.partner_address_id and display_address(order.partner_address_id) ]] </para>
|
||||
<para style="terp_default_9">[[ order.partner_id and display_address(order.partner_id,'default') ]] </para>
|
||||
<para style="terp_default_9">
|
||||
<font color="white"> </font>
|
||||
</para>
|
||||
<para style="terp_default_9">Tel.: [[ (order.partner_address_id and order.partner_address_id.phone) or removeParentNode('para') ]]</para>
|
||||
<para style="terp_default_9">Fax: [[ (order.partner_address_id and order.partner_address_id.fax) or removeParentNode('para') ]]</para>
|
||||
<para style="terp_default_9">Tel.: [[ (order.partner_id and order.partner_id.phone) or removeParentNode('para') ]]</para>
|
||||
<para style="terp_default_9">Fax: [[ (order.partner_id and order.partner_id.fax) or removeParentNode('para') ]]</para>
|
||||
<para style="terp_default_9">TVA: [[ (order.partner_id and order.partner_id.vat) or removeParentNode('para') ]]</para>
|
||||
</td>
|
||||
</tr>
|
||||
|
|
|
@ -30,7 +30,7 @@ access_account_invoice_tax_purchase,account_invoice.tax purchase,account.model_a
|
|||
access_account_fiscal_position_purchase_user,account.fiscal.position purchase,account.model_account_fiscal_position,group_purchase_user,1,0,0,0
|
||||
access_account_sequence_fiscalyear_purchase_user,account.sequence.fiscalyear purchase,account.model_account_sequence_fiscalyear,group_purchase_user,1,1,1,1
|
||||
access_res_partner_purchase_user,res.partner purchase,base.model_res_partner,group_purchase_user,1,0,0,0
|
||||
access_res_partner_address_purchase_user,res.partner.address purchase,base.model_res_partner_address,group_purchase_user,1,0,0,0
|
||||
access_res_partner_purchase_user,res.partner purchase,base.model_res_partner,group_purchase_user,1,0,0,0
|
||||
access_account_journal_period,account.journal.period,account.model_account_journal_period,group_purchase_user,1,1,1,0
|
||||
access_account_journal,account.journal,account.model_account_journal,group_purchase_user,1,0,0,0
|
||||
access_account_journal_manager,account.journal,account.model_account_journal,group_purchase_manager,1,0,0,0
|
||||
|
|
|
|
@ -3,7 +3,6 @@
|
|||
-
|
||||
!record {model: purchase.order, id: purchase_order_edi_1}:
|
||||
partner_id: base.res_partner_agrolait
|
||||
partner_address_id: base.res_partner_address_8invoice
|
||||
location_id: stock.stock_location_3
|
||||
pricelist_id: 1
|
||||
order_line:
|
||||
|
@ -59,7 +58,7 @@
|
|||
"partner_address": {
|
||||
"__id": "base:724f93ec-ddd0-11e0-88ec-701a04e25543.res_partner_address_7wdsjasdjh",
|
||||
"__module": "base",
|
||||
"__model": "res.partner.address",
|
||||
"__model": "res.partner",
|
||||
"phone": "(+32).81.81.37.00",
|
||||
"street": "Chaussee de Namur 40",
|
||||
"city": "Gerompont",
|
||||
|
@ -70,7 +69,7 @@
|
|||
"company_address": {
|
||||
"__id": "base:724f93ec-ddd0-11e0-88ec-701a04e25543.main_address",
|
||||
"__module": "base",
|
||||
"__model": "res.partner.address",
|
||||
"__model": "res.partner",
|
||||
"city": "Gerompont",
|
||||
"zip": "1367",
|
||||
"country_id": ["base:724f93ec-ddd0-11e0-88ec-701a04e25543.be", "Belgium"],
|
||||
|
|
|
@ -26,7 +26,6 @@
|
|||
|
||||
assert total_new_qty == total_qty,"product quantities are not correspond"
|
||||
assert order.partner_id == order3.partner_id ,"partner is not correspond"
|
||||
assert order.partner_address_id == order3.partner_address_id ,"Partner address is not correspond"
|
||||
assert order.warehouse_id == order3.warehouse_id or order7.warehouse_id,"Warehouse is not correspond"
|
||||
assert order.state == 'draft',"New created order state should be in draft"
|
||||
assert order.pricelist_id == order3.pricelist_id,"Price list is not correspond"
|
||||
|
|
|
@ -40,7 +40,7 @@
|
|||
assert len(purchase_order.picking_ids) >= 1, "You should have only one reception order"
|
||||
for picking in purchase_order.picking_ids:
|
||||
assert picking.state == "assigned", "Reception state should be in assigned state"
|
||||
assert picking.address_id.id == purchase_order.partner_address_id.id, "Delivery address of reception id is different from order"
|
||||
assert picking.address_id.id == purchase_order.partner_id.id, "Delivery address of reception id is different from order"
|
||||
assert picking.company_id.id == purchase_order.company_id.id, "Company is not correspond with purchase order"
|
||||
-
|
||||
Reception is ready for process so now done the reception.
|
||||
|
|
|
@ -86,8 +86,8 @@ class purchase_line_invoice(osv.osv_memory):
|
|||
'reference' : partner.ref,
|
||||
'account_id': a,
|
||||
'partner_id': partner.id,
|
||||
'address_invoice_id': orders[0].partner_address_id.id,
|
||||
'address_contact_id': orders[0].partner_address_id.id,
|
||||
# 'address_invoice_id': orders[0].partner_id.id,
|
||||
# 'address_contact_id': orders[0].partner_id.id,
|
||||
'invoice_line': [(6,0,lines_ids)],
|
||||
'currency_id' : orders[0].pricelist_id.currency_id.id,
|
||||
'comment': multiple_order_invoice_notes(orders),
|
||||
|
|
|
@ -68,7 +68,7 @@ class sale_order(osv.osv, EDIMixin):
|
|||
"""Exports a Sale order"""
|
||||
edi_struct = dict(edi_struct or SALE_ORDER_EDI_STRUCT)
|
||||
res_company = self.pool.get('res.company')
|
||||
res_partner_address = self.pool.get('res.partner.address')
|
||||
res_partner_address = self.pool.get('res.partner')
|
||||
edi_doc_list = []
|
||||
for order in records:
|
||||
# generate the main report
|
||||
|
@ -82,7 +82,7 @@ class sale_order(osv.osv, EDIMixin):
|
|||
'__import_module': 'purchase',
|
||||
|
||||
'company_address': res_company.edi_export_address(cr, uid, order.company_id, context=context),
|
||||
'partner_address': res_partner_address.edi_export(cr, uid, [order.partner_order_id], context=context)[0],
|
||||
'partner_id': res_partner_address.edi_export(cr, uid, [order.partner_id], context=context)[0],
|
||||
|
||||
'currency': self.pool.get('res.currency').edi_export(cr, uid, [order.pricelist_id.currency_id],
|
||||
context=context)[0],
|
||||
|
@ -99,7 +99,6 @@ class sale_order(osv.osv, EDIMixin):
|
|||
# the desired company among the user's allowed companies
|
||||
|
||||
self._edi_requires_attributes(('company_id','company_address'), edi_document)
|
||||
res_partner_address = self.pool.get('res.partner.address')
|
||||
res_partner = self.pool.get('res.partner')
|
||||
|
||||
# imported company = as a new partner
|
||||
|
@ -111,16 +110,15 @@ class sale_order(osv.osv, EDIMixin):
|
|||
|
||||
# imported company_address = new partner address
|
||||
address_info = edi_document.pop('company_address')
|
||||
address_info['partner_id'] = (src_company_id, src_company_name)
|
||||
# address_info['partner_id'] = (src_company_id, src_company_name)
|
||||
address_info['type'] = 'default'
|
||||
address_id = res_partner_address.edi_import(cr, uid, address_info, context=context)
|
||||
address_id = res_partner.edi_import(cr, uid, address_info, context=context)
|
||||
|
||||
# modify edi_document to refer to new partner/address
|
||||
partner_address = res_partner_address.browse(cr, uid, address_id, context=context)
|
||||
edi_document['partner_id'] = (src_company_id, src_company_name)
|
||||
partner_address = res_partner.browse(cr, uid, address_id, context=context)
|
||||
# edi_document['partner_id'] = (src_company_id, src_company_name)
|
||||
edi_document.pop('partner_address', False) # ignored
|
||||
address_edi_m2o = self.edi_m2o(cr, uid, partner_address, context=context)
|
||||
edi_document['partner_order_id'] = address_edi_m2o
|
||||
edi_document['partner_invoice_id'] = address_edi_m2o
|
||||
edi_document['partner_shipping_id'] = address_edi_m2o
|
||||
|
||||
|
|
|
@ -46,7 +46,7 @@
|
|||
<field name="body_html"><![CDATA[
|
||||
<div style="font-family: 'Lucica Grande', Ubuntu, Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); background-color: rgb(255, 255, 255); ">
|
||||
|
||||
<p>Hello${object.partner_order_id.name and ' ' or ''}${object.partner_order_id.name or ''},</p>
|
||||
<p>Hello${object.partner_id.name and ' ' or ''}${object.partner_id.name or ''},</p>
|
||||
|
||||
<p>Here is your order confirmation for ${object.partner_id.name}: </p>
|
||||
|
||||
|
@ -128,7 +128,7 @@
|
|||
</div>
|
||||
]]></field>
|
||||
<field name="body_text"><![CDATA[
|
||||
Hello${object.partner_order_id.name and ' ' or ''}${object.partner_order_id.name or ''},
|
||||
Hello${object.partner_id.name and ' ' or ''}${object.partner_id.name or ''},
|
||||
|
||||
Here is your order confirmation for ${object.partner_id.name}:
|
||||
| Order number: *${object.name}*
|
||||
|
|
|
@ -173,12 +173,12 @@
|
|||
</td>
|
||||
<td>
|
||||
<para style="terp_default_9">[[ (o.partner_id and o.partner_id.title and o.partner_id.title.name) or '' ]] [[ (o.partner_id and o.partner_id.name) or '' ]]</para>
|
||||
<para style="terp_default_9">[[ o.partner_order_id and display_address(o.partner_order_id) ]] </para>
|
||||
<para style="terp_default_9">[[ o.partner_id and display_address(o.partner_id,'default') ]] </para>
|
||||
<para style="terp_default_9">
|
||||
<font color="white"> </font>
|
||||
</para>
|
||||
<para style="terp_default_9">Tel. : [[ (o.partner_order_id and o.partner_order_id.phone) or removeParentNode('para') ]]</para>
|
||||
<para style="terp_default_9">Fax : [[ (o.partner_order_id and o.partner_order_id.fax) or removeParentNode('para') ]]</para>
|
||||
<para style="terp_default_9">Tel. : [[ (o.partner_id and o.partner_id.phone) or removeParentNode('para') ]]</para>
|
||||
<para style="terp_default_9">Fax : [[ (o.partner_id and o.partner_id.fax) or removeParentNode('para') ]]</para>
|
||||
<para style="terp_default_9">TVA : [[ (o.partner_id and o.partner_id.vat) or removeParentNode('para') ]]</para>
|
||||
<para style="terp_default_9">
|
||||
<font color="white"> </font>
|
||||
|
|
|
@ -215,9 +215,8 @@ class sale_order(osv.osv):
|
|||
'date_confirm': fields.date('Confirmation Date', readonly=True, select=True, help="Date on which sales order is confirmed."),
|
||||
'user_id': fields.many2one('res.users', 'Salesman', states={'draft': [('readonly', False)]}, select=True),
|
||||
'partner_id': fields.many2one('res.partner', 'Customer', readonly=True, states={'draft': [('readonly', False)]}, required=True, change_default=True, select=True),
|
||||
'partner_invoice_id': fields.many2one('res.partner.address', 'Invoice Address', readonly=True, required=True, states={'draft': [('readonly', False)]}, help="Invoice address for current sales order."),
|
||||
'partner_order_id': fields.many2one('res.partner.address', 'Ordering Contact', readonly=True, required=True, states={'draft': [('readonly', False)]}, help="The name and address of the contact who requested the order or quotation."),
|
||||
'partner_shipping_id': fields.many2one('res.partner.address', 'Shipping Address', readonly=True, required=True, states={'draft': [('readonly', False)]}, help="Shipping address for current sales order."),
|
||||
'partner_invoice_id': fields.many2one('res.partner', 'Invoice Address', readonly=True, required=True, states={'draft': [('readonly', False)]}, help="Invoice address for current sales order."),
|
||||
'partner_shipping_id': fields.many2one('res.partner', 'Shipping Address', readonly=True, required=True, states={'draft': [('readonly', False)]}, help="Shipping address for current sales order."),
|
||||
|
||||
'incoterm': fields.many2one('stock.incoterms', 'Incoterm', help="Incoterm which stands for 'International Commercial terms' implies its a series of sales terms which are used in the commercial transaction."),
|
||||
'picking_policy': fields.selection([('direct', 'Deliver each product when available'), ('one', 'Deliver all products at once')],
|
||||
|
@ -279,7 +278,6 @@ class sale_order(osv.osv):
|
|||
'name': lambda obj, cr, uid, context: obj.pool.get('ir.sequence').get(cr, uid, 'sale.order'),
|
||||
'invoice_quantity': 'order',
|
||||
'partner_invoice_id': lambda self, cr, uid, context: context.get('partner_id', False) and self.pool.get('res.partner').address_get(cr, uid, [context['partner_id']], ['invoice'])['invoice'],
|
||||
'partner_order_id': lambda self, cr, uid, context: context.get('partner_id', False) and self.pool.get('res.partner').address_get(cr, uid, [context['partner_id']], ['contact'])['contact'],
|
||||
'partner_shipping_id': lambda self, cr, uid, context: context.get('partner_id', False) and self.pool.get('res.partner').address_get(cr, uid, [context['partner_id']], ['delivery'])['delivery'],
|
||||
}
|
||||
_sql_constraints = [
|
||||
|
@ -347,7 +345,7 @@ class sale_order(osv.osv):
|
|||
|
||||
def onchange_partner_id(self, cr, uid, ids, part):
|
||||
if not part:
|
||||
return {'value': {'partner_invoice_id': False, 'partner_shipping_id': False, 'partner_order_id': False, 'payment_term': False, 'fiscal_position': False}}
|
||||
return {'value': {'partner_invoice_id': False, 'partner_shipping_id': False, 'payment_term': False, 'fiscal_position': False}}
|
||||
|
||||
addr = self.pool.get('res.partner').address_get(cr, uid, [part], ['delivery', 'invoice', 'contact'])
|
||||
part = self.pool.get('res.partner').browse(cr, uid, part)
|
||||
|
@ -357,7 +355,6 @@ class sale_order(osv.osv):
|
|||
dedicated_salesman = part.user_id and part.user_id.id or uid
|
||||
val = {
|
||||
'partner_invoice_id': addr['invoice'],
|
||||
'partner_order_id': addr['contact'],
|
||||
'partner_shipping_id': addr['delivery'],
|
||||
'payment_term': payment_term,
|
||||
'fiscal_position': fiscal_position,
|
||||
|
@ -429,8 +426,6 @@ class sale_order(osv.osv):
|
|||
'account_id': order.partner_id.property_account_receivable.id,
|
||||
'partner_id': order.partner_id.id,
|
||||
'journal_id': journal_ids[0],
|
||||
'address_invoice_id': order.partner_invoice_id.id,
|
||||
'address_contact_id': order.partner_order_id.id,
|
||||
'invoice_line': [(6, 0, lines)],
|
||||
'currency_id': order.pricelist_id.currency_id.id,
|
||||
'comment': order.note,
|
||||
|
@ -964,7 +959,7 @@ class sale_order_line(osv.osv):
|
|||
'type': fields.selection([('make_to_stock', 'from stock'), ('make_to_order', 'on order')], 'Procurement Method', required=True, readonly=True, states={'draft': [('readonly', False)]},
|
||||
help="If 'on order', it triggers a procurement when the sale order is confirmed to create a task, purchase order or manufacturing order linked to this sale order line."),
|
||||
'property_ids': fields.many2many('mrp.property', 'sale_order_line_property_rel', 'order_id', 'property_id', 'Properties', readonly=True, states={'draft': [('readonly', False)]}),
|
||||
'address_allotment_id': fields.many2one('res.partner.address', 'Allotment Partner'),
|
||||
'address_allotment_id': fields.many2one('res.partner', 'Allotment Partner'),
|
||||
'product_uom_qty': fields.float('Quantity (UoM)', digits_compute= dp.get_precision('Product UoS'), required=True, readonly=True, states={'draft': [('readonly', False)]}),
|
||||
'product_uom': fields.many2one('product.uom', 'Unit of Measure ', required=True, readonly=True, states={'draft': [('readonly', False)]}),
|
||||
'product_uos_qty': fields.float('Quantity (UoS)' ,digits_compute= dp.get_precision('Product UoS'), readonly=True, states={'draft': [('readonly', False)]}),
|
||||
|
|
|
@ -11,7 +11,6 @@
|
|||
<field ref="base.res_partner_agrolait" name="partner_id"/>
|
||||
<field ref="base.res_partner_address_8" name="partner_invoice_id"/>
|
||||
<field ref="base.res_partner_address_8" name="partner_shipping_id"/>
|
||||
<field ref="base.res_partner_address_8" name="partner_order_id"/>
|
||||
<field name="order_policy">picking</field>
|
||||
<field name="invoice_quantity">procurement</field>
|
||||
<field name="note">Invoice after delivery</field>
|
||||
|
@ -68,7 +67,6 @@
|
|||
<field name="partner_id" ref="base.res_partner_2"/>
|
||||
<field name="partner_invoice_id" ref="base.res_partner_address_9"/>
|
||||
<field name="partner_shipping_id" ref="base.res_partner_address_9"/>
|
||||
<field name="partner_order_id" ref="base.res_partner_address_9"/>
|
||||
<field name="invoice_quantity">order</field>
|
||||
<field name="order_policy">postpaid</field>
|
||||
|
||||
|
@ -104,7 +102,6 @@
|
|||
<field name="partner_id" ref="base.res_partner_agrolait"/>
|
||||
<field name="partner_invoice_id" ref="base.res_partner_address_8"/>
|
||||
<field name="partner_shipping_id" ref="base.res_partner_address_8"/>
|
||||
<field name="partner_order_id" ref="base.res_partner_address_8"/>
|
||||
<field name="order_policy">prepaid</field>
|
||||
</record>
|
||||
<record id="line5" model="sale.order.line">
|
||||
|
@ -137,7 +134,6 @@
|
|||
<field name="partner_id" ref="base.res_partner_5"/>
|
||||
<field name="partner_invoice_id" ref="base.res_partner_address_10"/>
|
||||
<field name="partner_shipping_id" ref="base.res_partner_address_10"/>
|
||||
<field name="partner_order_id" ref="base.res_partner_address_10"/>
|
||||
</record>
|
||||
<record id="line7" model="sale.order.line">
|
||||
<field name="order_id" ref="order4"/>
|
||||
|
@ -170,7 +166,6 @@
|
|||
<field name="partner_id" ref="base.res_partner_3"/>
|
||||
<field name="partner_invoice_id" ref="base.res_partner_address_zen"/>
|
||||
<field name="partner_shipping_id" ref="base.res_partner_address_zen"/>
|
||||
<field name="partner_order_id" ref="base.res_partner_address_zen"/>
|
||||
</record>
|
||||
<record id="line9" model="sale.order.line">
|
||||
<field name="order_id" ref="order5"/>
|
||||
|
@ -203,7 +198,6 @@
|
|||
<field name="partner_id" ref="base.res_partner_maxtor"/>
|
||||
<field name="partner_invoice_id" ref="base.res_partner_address_wong"/>
|
||||
<field name="partner_shipping_id" ref="base.res_partner_address_wong"/>
|
||||
<field name="partner_order_id" ref="base.res_partner_address_wong"/>
|
||||
</record>
|
||||
<record id="order6_line0" model="sale.order.line">
|
||||
<field name="order_id" ref="order6"/>
|
||||
|
@ -237,7 +231,6 @@
|
|||
<field name="partner_id" ref="base.res_partner_desertic_hispafuentes"/>
|
||||
<field name="partner_invoice_id" ref="base.res_partner_address_3000"/>
|
||||
<field name="partner_shipping_id" ref="base.res_partner_address_3000"/>
|
||||
<field name="partner_order_id" ref="base.res_partner_address_3000"/>
|
||||
</record>
|
||||
<record id="order7_line0" model="sale.order.line">
|
||||
<field name="order_id" ref="order7"/>
|
||||
|
|
|
@ -7,9 +7,8 @@
|
|||
<field model="product.pricelist" name="pricelist_id" search="[]"/>
|
||||
<field name="user_id" ref="base.user_root"/>
|
||||
<field model="res.partner" name="partner_id" search="[]"/>
|
||||
<field model="res.partner.address" name="partner_invoice_id" search="[]"/>
|
||||
<field model="res.partner.address" name="partner_shipping_id" search="[]"/>
|
||||
<field model="res.partner.address" name="partner_order_id" search="[]"/>
|
||||
<field model="res.partner" name="partner_invoice_id" search="[]"/>
|
||||
<field model="res.partner" name="partner_shipping_id" search="[]"/>
|
||||
</record>
|
||||
<!-- Resource: sale.order.line -->
|
||||
<record id="test_order_1_line_1" model="sale.order.line">
|
||||
|
|
|
@ -116,11 +116,10 @@
|
|||
<notebook colspan="5">
|
||||
<page string="Sales Order">
|
||||
<field name="partner_id" options='{"quick_create": false}' on_change="onchange_partner_id(partner_id)" domain="[('customer','=',True)]" context="{'search_default_customer':1}" required="1"/>
|
||||
<field domain="[('partner_id','=',partner_id)]" name="partner_order_id" on_change="onchange_partner_order_id(partner_order_id, partner_invoice_id, partner_shipping_id)" options='{"quick_create": false}'/>
|
||||
<field domain="[('partner_id','=',partner_id)]" name="partner_invoice_id" groups="base.group_extended" options='{"quick_create": false}'/>
|
||||
<field domain="[('partner_id','=',partner_id)]" name="partner_shipping_id" groups="base.group_extended" options='{"quick_create": false}'/>
|
||||
<field domain="[('type','=','sale')]" name="pricelist_id" groups="base.group_extended" on_change="onchange_pricelist_id(pricelist_id,order_line)"/>
|
||||
<field name="project_id" context="{'partner_id':partner_id, 'contact_id':partner_order_id, 'pricelist_id':pricelist_id, 'default_name':name}" groups="analytic.group_analytic_accounting" domain="[('parent_id','!=',False)]"/>
|
||||
<field name="project_id" context="{'partner_id':partner_id, 'pricelist_id':pricelist_id, 'default_name':name}" groups="analytic.group_analytic_accounting" domain="[('parent_id','!=',False)]"/>
|
||||
<newline/>
|
||||
<field colspan="4" name="order_line" nolabel="1" widget="one2many_list">
|
||||
<form string="Sales Order Lines">
|
||||
|
|
|
@ -67,8 +67,6 @@ class stock_picking(osv.osv):
|
|||
"""
|
||||
invoice_vals = super(stock_picking, self)._prepare_invoice(cr, uid, picking, partner, inv_type, journal_id, context=context)
|
||||
if picking.sale_id:
|
||||
invoice_vals['address_contact_id'] = picking.sale_id.partner_order_id.id
|
||||
invoice_vals['address_invoice_id'] = picking.sale_id.partner_invoice_id.id
|
||||
invoice_vals['fiscal_position'] = picking.sale_id.fiscal_position.id
|
||||
invoice_vals['payment_term'] = picking.sale_id.payment_term.id
|
||||
invoice_vals['user_id'] = picking.sale_id.user_id.id
|
||||
|
|
|
@ -4,7 +4,6 @@
|
|||
!record {model: sale.order, id: sale_order_edi_1}:
|
||||
partner_id: base.res_partner_agrolait
|
||||
partner_invoice_id: base.res_partner_address_8invoice
|
||||
partner_order_id: base.res_partner_address_8invoice
|
||||
partner_shipping_id: base.res_partner_address_8invoice
|
||||
pricelist_id: 1
|
||||
order_line:
|
||||
|
@ -56,7 +55,7 @@
|
|||
"company_address": {
|
||||
"__id": "base:5af1272e-dd26-11e0-b65e-701a04e25543.some_address",
|
||||
"__module": "base",
|
||||
"__model": "res.partner.address",
|
||||
"__model": "res.partner",
|
||||
"phone": "(+32).81.81.37.00",
|
||||
"street": "Chaussee de Namur 40",
|
||||
"city": "Gerompont",
|
||||
|
@ -67,16 +66,7 @@
|
|||
],
|
||||
},
|
||||
"partner_id": ["purchase:5af1272e-dd26-11e0-b65e-701a04e25543.res_partner_test20", "jones white"],
|
||||
"partner_address": {
|
||||
"__id": "base:5af1272e-dd26-11e0-b65e-701a04e25543.res_partner_address_7wdsjasdjh",
|
||||
"__module": "base",
|
||||
"__model": "res.partner.address",
|
||||
"phone": "(+32).81.81.37.00",
|
||||
"street": "Chaussee de Namur 40",
|
||||
"city": "Gerompont",
|
||||
"zip": "1367",
|
||||
"country_id": ["base:5af1272e-dd26-11e0-b65e-701a04e25543.be", "Belgium"],
|
||||
},
|
||||
|
||||
"order_line": [{
|
||||
"__id": "purchase:5af1272e-dd26-11e0-b65e-701a04e25543.purchase_order_line-AlhsVDZGoKvJ",
|
||||
"__module": "purchase",
|
||||
|
|
|
@ -116,7 +116,6 @@
|
|||
assert invoice.account_id.id == ac,"Invoice account is not correspond."
|
||||
assert invoice.reference == order.client_order_ref or order.name,"Reference is not correspond."
|
||||
assert invoice.partner_id.id == order.partner_id.id,"Customer is not correspond."
|
||||
assert invoice.address_invoice_id.id == order.partner_invoice_id.id,"Invoice Address is not correspond."
|
||||
assert invoice.currency_id.id == order.pricelist_id.currency_id.id, "Currency is not correspond."
|
||||
assert invoice.comment == order.note or '',"Note is not correspond."
|
||||
assert invoice.journal_id.id in journal_ids,"Sales Journal is not link on Invoice."
|
||||
|
|
|
@ -66,8 +66,6 @@ class sale_order_line_make_invoice(osv.osv_memory):
|
|||
'reference': "P%dSO%d" % (order.partner_id.id, order.id),
|
||||
'account_id': a,
|
||||
'partner_id': order.partner_id.id,
|
||||
'address_invoice_id': order.partner_invoice_id.id,
|
||||
'address_contact_id': order.partner_invoice_id.id,
|
||||
'invoice_line': [(6, 0, lines)],
|
||||
'currency_id' : order.pricelist_id.currency_id.id,
|
||||
'comment': order.note,
|
||||
|
|
|
@ -92,8 +92,6 @@ class sale_advance_payment_inv(osv.osv_memory):
|
|||
'reference': False,
|
||||
'account_id': sale.partner_id.property_account_receivable.id,
|
||||
'partner_id': sale.partner_id.id,
|
||||
'address_invoice_id': sale.partner_invoice_id.id,
|
||||
'address_contact_id': sale.partner_order_id.id,
|
||||
'invoice_line': [(6, 0, create_ids)],
|
||||
'currency_id': sale.pricelist_id.currency_id.id,
|
||||
'comment': '',
|
||||
|
|
|
@ -190,7 +190,7 @@ class stock_location(osv.osv):
|
|||
'chained_picking_type': fields.selection([('out', 'Sending Goods'), ('in', 'Getting Goods'), ('internal', 'Internal')], 'Shipping Type', help="Shipping Type of the Picking List that will contain the chained move (leave empty to automatically detect the type based on the source and destination locations)."),
|
||||
'chained_company_id': fields.many2one('res.company', 'Chained Company', help='The company the Picking List containing the chained move will belong to (leave empty to use the default company determination rules'),
|
||||
'chained_delay': fields.integer('Chaining Lead Time',help="Delay between original move and chained move in days"),
|
||||
'address_id': fields.many2one('res.partner.address', 'Location Address',help="Address of customer or supplier."),
|
||||
'address_id': fields.many2one('res.partner', 'Location Address',help="Address of customer or supplier."),
|
||||
'icon': fields.selection(tools.icons, 'Icon', size=64,help="Icon show in hierarchical tree view"),
|
||||
|
||||
'comment': fields.text('Additional Information'),
|
||||
|
|
Loading…
Reference in New Issue