[FIX] a lot of fixes in several modules, as the result of the code review of the merge of the objects res.partner and res.partner.address

bzr revid: qdp-launchpad@openerp.com-20120330090837-s87z2qzsvynhlbwr
This commit is contained in:
Quentin (OpenERP) 2012-03-30 11:08:37 +02:00
parent eb1986a7df
commit ffd0c86ec2
42 changed files with 94 additions and 208 deletions

View File

@ -2100,7 +2100,7 @@ class account_tax(osv.osv):
"Deprecated, use compute_all(...)['taxes'] instead of compute(...) to manage prices with tax included") "Deprecated, use compute_all(...)['taxes'] instead of compute(...) to manage prices with tax included")
return self._compute(cr, uid, taxes, price_unit, quantity, product, partner) return self._compute(cr, uid, taxes, price_unit, quantity, product, partner)
def _compute(self, cr, uid, taxes, price_unit, quantity,product=None, partner=None): def _compute(self, cr, uid, taxes, price_unit, quantity, product=None, partner=None):
""" """
Compute tax values for given PRICE_UNIT, QUANTITY and a buyer/seller ADDRESS_ID. Compute tax values for given PRICE_UNIT, QUANTITY and a buyer/seller ADDRESS_ID.

View File

@ -152,7 +152,7 @@
<field name="currency_id" width="50"/> <field name="currency_id" width="50"/>
<button name="%(action_account_change_currency)d" type="action" icon="terp-stock_effects-object-colorize" string="Change" attrs="{'invisible':[('state','!=','draft')]}" groups="account.group_account_user"/> <button name="%(action_account_change_currency)d" type="action" icon="terp-stock_effects-object-colorize" string="Change" attrs="{'invisible':[('state','!=','draft')]}" groups="account.group_account_user"/>
<newline/> <newline/>
<field string="Supplier Name" name="partner_id" on_change="onchange_partner_id(type,partner_id,date_invoice,payment_term, partner_bank_id,company_id)" context="{'default_customer': 0, 'search_default_supplier': 1, 'default_supplier': 1}" options='{"quick_create": false}' domain="[('supplier', '=', True)]"/> <field string="Supplier" name="partner_id" on_change="onchange_partner_id(type,partner_id,date_invoice,payment_term, partner_bank_id,company_id)" context="{'default_customer': 0, 'search_default_supplier': 1, 'default_supplier': 1}" options='{"quick_create": false}' domain="[('supplier', '=', True)]"/>
<field name="fiscal_position" groups="base.group_extended" widget="selection"/> <field name="fiscal_position" groups="base.group_extended" widget="selection"/>
<newline/> <newline/>
<field name="date_invoice"/> <field name="date_invoice"/>
@ -260,7 +260,7 @@
<field name="currency_id" width="50"/> <field name="currency_id" width="50"/>
<button name="%(action_account_change_currency)d" type="action" icon="terp-stock_effects-object-colorize" string="Change" attrs="{'invisible':[('state','!=','draft')]}" groups="account.group_account_user"/> <button name="%(action_account_change_currency)d" type="action" icon="terp-stock_effects-object-colorize" string="Change" attrs="{'invisible':[('state','!=','draft')]}" groups="account.group_account_user"/>
<newline/> <newline/>
<field string="Customer Name" name="partner_id" on_change="onchange_partner_id(type,partner_id,date_invoice,payment_term, partner_bank_id,company_id)" groups="base.group_user" context="{'search_default_customer': 1}" options='{"quick_create": false}' domain="[('customer', '=', True)]"/> <field string="Customer" name="partner_id" on_change="onchange_partner_id(type,partner_id,date_invoice,payment_term, partner_bank_id,company_id)" groups="base.group_user" context="{'search_default_customer': 1}" options='{"quick_create": false}' domain="[('customer', '=', True)]"/>
<field name="fiscal_position" groups="base.group_extended" widget="selection" options='{"quick_create": false}'/> <field name="fiscal_position" groups="base.group_extended" widget="selection" options='{"quick_create": false}'/>
<newline/> <newline/>
<field name="date_invoice"/> <field name="date_invoice"/>

View File

@ -8,7 +8,7 @@
part = self.pool.get('res.partner').browse(cr, uid, ref('base.main_partner')) part = self.pool.get('res.partner').browse(cr, uid, ref('base.main_partner'))
# if we know the country and the wizard has not yet been executed, we do it # if we know the country and the wizard has not yet been executed, we do it
if (part.country_id.id) and (wiz.state=='open'): if (part.country_id.id) and (wiz.state=='open'):
mod = 'l10n_'+part.country_id.co7de.lower() mod = 'l10n_'+part.country_id.code.lower()
ids = modules.search(cr, uid, [ ('name','=',mod) ], context=context) ids = modules.search(cr, uid, [ ('name','=',mod) ], context=context)
if ids: if ids:
wizards.write(cr, uid, [ref('account.account_configuration_installer_todo')], { wizards.write(cr, uid, [ref('account.account_configuration_installer_todo')], {

View File

@ -96,7 +96,7 @@
<separator string="Supplier Debit" colspan="2"/> <separator string="Supplier Debit" colspan="2"/>
<field name="debit"/> <field name="debit"/>
</group> </group>
<field colspan="4" name="bank_ids" nolabel="1"> <field colspan="4" name="bank_ids" nolabel="1">
<form string="Bank account"> <form string="Bank account">
<field name="state"/> <field name="state"/>
<newline/> <newline/>

View File

@ -166,9 +166,9 @@
<para style="terp_default_8"> <para style="terp_default_8">
<font color="white"> </font> <font color="white"> </font>
</para> </para>
<para style="terp_default_8">Tel. : [[ (o.partner_id and o.partner_id.phone) or removeParentNode('para') ]]</para> <para style="terp_default_8">Tel. : [[ (o.partner_id.phone) or removeParentNode('para') ]]</para>
<para style="terp_default_8">Fax : [[ (o.partner_id and o.partner_id.fax) or removeParentNode('para') ]]</para> <para style="terp_default_8">Fax : [[ (o.partner_id.fax) or removeParentNode('para') ]]</para>
<para style="terp_default_8">VAT : [[ (o.partner_id and o.partner_id.vat) or removeParentNode('para') ]]</para> <para style="terp_default_8">VAT : [[ (o.partner_id.vat) or removeParentNode('para') ]]</para>
</td> </td>
</tr> </tr>
</blockTable> </blockTable>
@ -210,7 +210,7 @@
<para style="terp_default_Centre_9">[[ o.origin or '' ]]</para> <para style="terp_default_Centre_9">[[ o.origin or '' ]]</para>
</td> </td>
<td> <td>
<para style="terp_default_Centre_9">[[ (o.partner_id and o.partner_id.ref) or ' ' ]]</para> <para style="terp_default_Centre_9">[[ (o.partner_id.ref) or ' ' ]]</para>
</td> </td>
</tr> </tr>
</blockTable> </blockTable>

View File

@ -197,9 +197,9 @@
<para style="terp_default_8"> <para style="terp_default_8">
<font color="white"> </font> <font color="white"> </font>
</para> </para>
<para style="terp_default_8">Tel. : [[ (o.partner_id and o.partner_id.phone) or removeParentNode('para') ]]</para> <para style="terp_default_8">Tel. : [[ (o.partner_id.phone) or removeParentNode('para') ]]</para>
<para style="terp_default_8">Fax : [[ (o.partner_id and o.partner_id.fax) or removeParentNode('para') ]]</para> <para style="terp_default_8">Fax : [[ (o.partner_id.fax) or removeParentNode('para') ]]</para>
<para style="terp_default_8">VAT : [[ (o.partner_id and o.partner_id.vat) or removeParentNode('para') ]]</para> <para style="terp_default_8">VAT : [[ (o.partner_id.vat) or removeParentNode('para') ]]</para>
</td> </td>
</tr> </tr>
</blockTable> </blockTable>
@ -247,7 +247,7 @@
<para style="terp_default_Centre_9">[[ o.name or '' ]]</para> <para style="terp_default_Centre_9">[[ o.name or '' ]]</para>
</td> </td>
<td> <td>
<para style="terp_default_Centre_9">[[ (o.partner_id and o.partner_id.ref) or ' ' ]]</para> <para style="terp_default_Centre_9">[[ (o.partner_id.ref) or ' ' ]]</para>
</td> </td>
</tr> </tr>
</blockTable> </blockTable>

View File

@ -201,8 +201,8 @@
<para style="terp_default_8"> <para style="terp_default_8">
<font color="white"> </font> <font color="white"> </font>
</para> </para>
<para style="terp_default_8">Tel. : [[ (o.partner_id and o.partner_id.phone) or removeParentNode('para') ]]</para> <para style="terp_default_8">Tel. : [[ (o.partner_id.phone) or removeParentNode('para') ]]</para>
<para style="terp_default_8">Fax : [[ (o.partner_id and o.partner_id.fax) or removeParentNode('para') ]]</para> <para style="terp_default_8">Fax : [[ (o.partner_id.fax) or removeParentNode('para') ]]</para>
<para style="terp_default_8">VAT : [[ (o.partner_id and o.partner_id.vat) or removeParentNode('para') ]]</para> <para style="terp_default_8">VAT : [[ (o.partner_id and o.partner_id.vat) or removeParentNode('para') ]]</para>
</td> </td>
</tr> </tr>
@ -251,7 +251,7 @@
<para style="terp_default_Centre_9">[[ o.name or '' ]]</para> <para style="terp_default_Centre_9">[[ o.name or '' ]]</para>
</td> </td>
<td> <td>
<para style="terp_default_Centre_9">[[ ( o.partner_id and o.partner_id.ref) or ' ' ]]</para> <para style="terp_default_Centre_9">[[ ( o.partner_id.ref) or ' ' ]]</para>
</td> </td>
</tr> </tr>
</blockTable> </blockTable>

View File

@ -183,56 +183,30 @@ class payment_line(osv.osv):
"reference": "ref"}.get(orig, orig) "reference": "ref"}.get(orig, orig)
def info_owner(self, cr, uid, ids, name=None, args=None, context=None): def info_owner(self, cr, uid, ids, name=None, args=None, context=None):
if not ids: return {}
partner_zip_obj = self.pool.get('res.partner.zip')
result = {} result = {}
info=''
for line in self.browse(cr, uid, ids, context=context): for line in self.browse(cr, uid, ids, context=context):
owner = line.order_id.mode.bank_id.partner_id owner = line.order_id.mode.bank_id.partner_id
result[line.id] = False result[line.id] = self._get_info_partner(cr, uid, owner, context=context)
if owner:
if owner.type == 'default':
st = owner.street and owner.street or ''
st1 = owner.street2 and owner.street2 or ''
if 'zip_id' in owner:
zip_city = owner.zip_id and partner_zip_obj.name_get(cr, uid, [owner.zip_id.id])[0][1] or ''
else:
zip = owner.zip and owner.zip or ''
city = owner.city and owner.city or ''
zip_city = zip + ' ' + city
cntry = owner.country_id and owner.country_id.name or ''
info = owner.name + "\n" + st + " " + st1 + "\n" + zip_city + "\n" +cntry
result[line.id] = info
break
return result return result
def info_partner(self, cr, uid, ids, name=None, args=None, context=None): def _get_info_partner(cr, uid, partner_record, context=None):
if not ids: return {} if not partner_record:
partner_zip_obj = self.pool.get('res.partner.zip') return False
result = {} st = partner_record.street or ''
info = '' st1 = partner_record.street2 or ''
zip = partner_record.zip or ''
city = partner_record.city or ''
zip_city = zip + ' ' + city
cntry = partner_record.country_id and partner_record.country_id.name or ''
return partner_record.name + "\n" + st + " " + st1 + "\n" + zip_city + "\n" +cntry
def info_partner(self, cr, uid, ids, name=None, args=None, context=None):
result = {}
for line in self.browse(cr, uid, ids, context=context): for line in self.browse(cr, uid, ids, context=context):
result[line.id] = False result[line.id] = False
if not line.partner_id: if not line.partner_id:
break break
partner = line.partner_id.name or '' result[line.id] = self._get_info_partner(cr, uid, line.partner_id, context=context)
if line.partner_id:
#for ads in line.partner_id:
if line.partner_id.type == 'default':
st = line.partner_id.street and line.partner_id.street or ''
st1 = line.partner_id.street2 and line.partner_id.street2 or ''
if 'zip_id' in line.partner_id:
zip_city = line.partner_id.zip_id and partner_zip_obj.name_get(cr, uid, [line.partner_id.zip_id.id])[0][1] or ''
else:
zip = line.partner_id.zip and line.partner_id.zip or ''
city = line.partner_id.city and line.partner_id.city or ''
zip_city = zip + ' ' + city
cntry = line.partner_id.country_id and line.partner_id.country_id.name or ''
info = partner + "\n" + st + " " + st1 + "\n" + zip_city + "\n" +cntry
result[line.id] = info
break
return result return result
#dead code #dead code
@ -419,7 +393,6 @@ class payment_line(osv.osv):
def onchange_partner(self, cr, uid, ids, partner_id, payment_type, context=None): def onchange_partner(self, cr, uid, ids, partner_id, payment_type, context=None):
data = {} data = {}
partner_zip_obj = self.pool.get('res.partner.zip')
partner_obj = self.pool.get('res.partner') partner_obj = self.pool.get('res.partner')
payment_mode_obj = self.pool.get('payment.mode') payment_mode_obj = self.pool.get('payment.mode')
data['info_partner'] = data['bank_id'] = False data['info_partner'] = data['bank_id'] = False
@ -427,23 +400,7 @@ class payment_line(osv.osv):
if partner_id: if partner_id:
part_obj = partner_obj.browse(cr, uid, partner_id, context=context) part_obj = partner_obj.browse(cr, uid, partner_id, context=context)
partner = part_obj.name or '' partner = part_obj.name or ''
if part_obj: data['info_partner'] = self._get_info_partner(cr, uid, part_obj, context=context)
#for ads in part_obj.address:
if part_obj.type == 'default':
st = part_obj.street and part_obj.street or ''
st1 = part_obj.street2 and part_obj.street2 or ''
if 'zip_id' in part_obj:
zip_city = part_obj.zip_id and partner_zip_obj.name_get(cr, uid, [part_obj.zip_id.id])[0][1] or ''
else:
zip = part_obj.zip and part_obj.zip or ''
city = part_obj.city and part_obj.city or ''
zip_city = zip + ' ' + city
cntry = part_obj.country_id and part_obj.country_id.name or ''
info = partner + "\n" + st + " " + st1 + "\n" + zip_city + "\n" +cntry
data['info_partner'] = info
if part_obj.bank_ids and payment_type: if part_obj.bank_ids and payment_type:
bank_type = payment_mode_obj.suitable_bank_types(cr, uid, payment_type, context=context) bank_type = payment_mode_obj.suitable_bank_types(cr, uid, payment_type, context=context)

View File

@ -217,12 +217,6 @@ class account_analytic_account(osv.osv):
default['line_ids'] = [] default['line_ids'] = []
return super(account_analytic_account, self).copy(cr, uid, id, default, context=context) return super(account_analytic_account, self).copy(cr, uid, id, default, context=context)
def on_change_partner_id(self, cr, uid, id, partner_id, context={}):
if not partner_id:
return {'value': {'partner_id': False}}
addr = self.pool.get('res.partner').address_get(cr, uid, [partner_id], ['invoice'])
return {'value': {'partner_id': addr.get('invoice', False)}}
def on_change_company(self, cr, uid, id, company_id): def on_change_company(self, cr, uid, id, company_id):
if not company_id: if not company_id:
return {} return {}
@ -242,13 +236,6 @@ class account_analytic_account(osv.osv):
res['value']['partner_id'] = partner res['value']['partner_id'] = partner
return res return res
def onchange_partner_id(self, cr, uid, ids, partner, context=None):
partner_obj = self.pool.get('res.partner')
if not partner:
return {'value':{'partner_id': False}}
address = partner_obj.address_get(cr, uid, [partner], ['contact'])
return {'value':{'partner_id': address['contact']}}
def name_search(self, cr, uid, name, args=None, operator='ilike', context=None, limit=100): def name_search(self, cr, uid, name, args=None, operator='ilike', context=None, limit=100):
if not args: if not args:
args=[] args=[]

View File

@ -375,7 +375,7 @@ class audittrail_objects_proxy(object_proxy):
} }
The reason why the structure returned is build as above is because when modifying an existing The reason why the structure returned is build as above is because when modifying an existing
record (res.partner, for example), we may have to log a change done in a x2many field record, we may have to log a change done in a x2many field of that object
""" """
key = (model.id, resource_id) key = (model.id, resource_id)
lines = { lines = {

View File

@ -27,7 +27,7 @@
<field name="partner_id" colspan="2" on_change="onchange_partner_id(partner_id)" attrs="{'required': [('type', '=', 'partner')]}"/> <field name="partner_id" colspan="2" on_change="onchange_partner_id(partner_id)" attrs="{'required': [('type', '=', 'partner')]}"/>
<newline/> <newline/>
<separator string="Partner Contacts" colspan="6"/> <separator string="Partner Contacts" colspan="6"/>
<field name="contact_ids" select="1" colspan="4" nolabel="1" attrs="{'readonly': [('type', '!=', 'partner')]}"/> <field name="contact_ids" select="1" colspan="4" nolabel="1" domain="[('id', 'child_of', [partner_id])]" attrs="{'readonly': [('type', '!=', 'partner')]}"/>
</group> </group>
</page> </page>
</notebook> </notebook>

View File

@ -60,13 +60,6 @@ class crm_lead(crm_case, osv.osv):
'stage_id': _read_group_stage_ids 'stage_id': _read_group_stage_ids
} }
# especially if base_contact is installed.
def name_get(self, cr, user, ids, context=None):
if isinstance(ids, (int, long)):
ids = [ids]
return [(r['id'], tools.ustr(r[self._rec_name]))
for r in self.read(cr, user, ids, [self._rec_name], context)]
def _compute_day(self, cr, uid, ids, fields, args, context=None): def _compute_day(self, cr, uid, ids, fields, args, context=None):
""" """
@param cr: the current row, from the database cursor, @param cr: the current row, from the database cursor,
@ -170,7 +163,7 @@ class crm_lead(crm_case, osv.osv):
'contact_name': fields.char('Contact Name', size=64), '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), '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."), 'optin': fields.boolean('Opt-In', help="If opt-in is checked, this contact has accepted to receive emails."),
'opt_out': fields.boolean('Opt-Out', help="If opt-out is checked, this contact has refused to receive emails or unsubscribed to a campaign."), '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"), '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), 'priority': fields.selection(crm.AVAILABLE_PRIORITIES, 'Priority', select=True),
'date_closed': fields.datetime('Closed', readonly=True), 'date_closed': fields.datetime('Closed', readonly=True),
@ -222,19 +215,11 @@ class crm_lead(crm_case, osv.osv):
'color': 0, 'color': 0,
} }
def onchange_partner_address_id(self, cr, uid, ids, add, email=False):
"""This function returns value of partner email based on Partner Address
"""
if not add:
return {'value': {'email_from': False, 'country_id': False}}
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): def on_change_optin(self, cr, uid, ids, optin):
return {'value':{'optin':optin,'opt_out':False}} return {'value':{'optin':optin,'optout':False}}
def on_change_optout(self, cr, uid, ids, optout): def on_change_optout(self, cr, uid, ids, optout):
return {'value':{'opt_out':optout,'optin':False}} return {'value':{'optout':optout,'optin':False}}
def onchange_stage_id(self, cr, uid, ids, stage_id, context={}): def onchange_stage_id(self, cr, uid, ids, stage_id, context={}):
if not stage_id: if not stage_id:

View File

@ -186,7 +186,7 @@
<group colspan="2" col="2"> <group colspan="2" col="2">
<separator string="Mailings" colspan="2" col="2"/> <separator string="Mailings" colspan="2" col="2"/>
<field name="optin" on_change="on_change_optin(optin)"/> <field name="optin" on_change="on_change_optin(optin)"/>
<field name="opt_out" on_change="on_change_optout(opt_out)"/> <field name="optout" on_change="on_change_optout(optout)"/>
</group> </group>
<group colspan="2" col="2" groups="base.group_no_one"> <group colspan="2" col="2" groups="base.group_no_one">
<separator string="Statistics" colspan="2" col="2"/> <separator string="Statistics" colspan="2" col="2"/>
@ -539,7 +539,7 @@
<group colspan="2" col="2"> <group colspan="2" col="2">
<separator string="Mailings" colspan="2"/> <separator string="Mailings" colspan="2"/>
<field name="optin" on_change="on_change_optin(optin)"/> <field name="optin" on_change="on_change_optin(optin)"/>
<field name="opt_out" on_change="on_change_optout(opt_out)"/> <field name="optout" on_change="on_change_optout(optout)"/>
</group> </group>
</page> </page>
<page string="Communication &amp; History" groups="base.group_extended"> <page string="Communication &amp; History" groups="base.group_extended">

View File

@ -86,16 +86,6 @@ class crm_phonecall(crm_base, osv.osv):
'active': 1, 'active': 1,
} }
# From crm.case
def onchange_partner_address_id(self, cr, uid, ids, add, email=False):
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').browse(cr, uid, add)
res['value']['partner_phone'] = address.phone
res['value']['partner_mobile'] = address.mobile
return res
def case_close(self, cr, uid, ids, *args): def case_close(self, cr, uid, ids, *args):
"""Overrides close for crm_case for setting close date """Overrides close for crm_case for setting close date
""" """

View File

@ -137,7 +137,6 @@
<field name="partner_id" <field name="partner_id"
on_change="onchange_partner_id(partner_id)" on_change="onchange_partner_id(partner_id)"
string="Partner" /> string="Partner" />
<field name="partner_phone" <field name="partner_phone"
invisible="1"/> invisible="1"/>
<field name="user_id" groups="base.group_extended"/> <field name="user_id" groups="base.group_extended"/>

View File

@ -50,16 +50,14 @@ class res_partner(osv.osv):
return value return value
def make_opportunity(self, cr, uid, ids, opportunity_summary, planned_revenue=0.0, probability=0.0, partner_id=None, context=None): def make_opportunity(self, cr, uid, ids, opportunity_summary, planned_revenue=0.0, probability=0.0, partner_id=None, context=None):
categ = self.pool.get('crm.case.categ') categ_obj = self.pool.get('crm.case.categ')
address = self.address_get(cr, uid, ids) categ_ids = categ_obj.search(cr, uid, [('object_id.model','=','crm.lead')])
categ_ids = categ.search(cr, uid, [('object_id.model','=','crm.lead')]) lead_obj = self.pool.get('crm.lead')
lead = self.pool.get('crm.lead')
opportunity_ids = {} opportunity_ids = {}
for partner in self.browse(cr, uid, ids, context=context): for partner in self.browse(cr, uid, ids, context=context):
address = self.address_get(cr, uid, [partner.id])['default']
if not partner_id: if not partner_id:
partner_id = partner.id partner_id = partner.id
opportunity_id = lead.create(cr, uid, { opportunity_id = lead_obj.create(cr, uid, {
'name' : opportunity_summary, 'name' : opportunity_summary,
'planned_revenue' : planned_revenue, 'planned_revenue' : planned_revenue,
'probability' : probability, 'probability' : probability,

View File

@ -15,7 +15,7 @@
name: 'Need 20 Days of Consultancy' name: 'Need 20 Days of Consultancy'
type: opportunity type: opportunity
state: draft state: draft
opt_out: True optout: True
- -
I create phonecall record to call partner onchange method. I create phonecall record to call partner onchange method.
- -

View File

@ -43,11 +43,8 @@ class crm_phonecall2partner(osv.osv_memory):
partner_id = False partner_id = False
for phonecall in phonecall_obj.browse(cr, uid, rec_ids, context=context): 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)]) partner_ids = partner_obj.search(cr, uid, [('name', '=', phonecall.name or phonecall.name)])
if not partner_ids and phonecall.email_from: if not partner_ids and (phonecall.partner_phone or phonecall.partner_mobile):
address_ids = partner_obj.search(cr, uid, ['|', ('phone', '=', phonecall.partner_phone), ('mobile','=',phonecall.partner_mobile)]) partner_ids = partner_obj.search(cr, uid, ['|', ('phone', '=', phonecall.partner_phone), ('mobile','=',phonecall.partner_mobile)])
if address_ids:
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 partner_id = partner_ids and partner_ids[0] or False
return partner_id return partner_id

View File

@ -37,7 +37,6 @@ class res_company(osv.osv):
an empty dict if no address can be found an empty dict if no address can be found
""" """
res_partner = self.pool.get('res.partner') res_partner = self.pool.get('res.partner')
# res_partner_address = self.pool.get('res.partner.address')
addresses = res_partner.address_get(cr, uid, [company.partner_id.id], ['default', 'contact', 'invoice']) addresses = res_partner.address_get(cr, uid, [company.partner_id.id], ['default', 'contact', 'invoice'])
addr_id = addresses['invoice'] or addresses['contact'] or addresses['default'] addr_id = addresses['invoice'] or addresses['contact'] or addresses['default']
result = {} result = {}

View File

@ -76,7 +76,7 @@ class res_partner(osv.osv, EDIMixin):
if edi_bank_ids: if edi_bank_ids:
contact = self.browse(cr, uid, contact_id, context=context) contact = self.browse(cr, uid, contact_id, context=context)
import_ctx = dict((context or {}), import_ctx = dict((context or {}),
default_partner_id=contact.id, default_partner_id = contact.id,
default_state=self._get_bank_type(cr, uid, context)) default_state=self._get_bank_type(cr, uid, context))
for ext_bank_id, bank_name in edi_bank_ids: for ext_bank_id, bank_name in edi_bank_ids:
try: try:

View File

@ -261,7 +261,6 @@ class event_registration(osv.osv):
'nb_register': fields.integer('Number of Participants', required=True, readonly=True, states={'draft': [('readonly', False)]}), 'nb_register': fields.integer('Number of Participants', required=True, readonly=True, states={'draft': [('readonly', False)]}),
'event_id': fields.many2one('event.event', 'Event', required=True, readonly=True, states={'draft': [('readonly', False)]}), 'event_id': fields.many2one('event.event', 'Event', required=True, readonly=True, states={'draft': [('readonly', False)]}),
'partner_id': fields.many2one('res.partner', 'Partner', states={'done': [('readonly', True)]}), 'partner_id': fields.many2one('res.partner', 'Partner', states={'done': [('readonly', True)]}),
'create_date': fields.datetime('Creation Date' , readonly=True), 'create_date': fields.datetime('Creation Date' , readonly=True),
'date_closed': fields.datetime('Attended Date', readonly=True), 'date_closed': fields.datetime('Attended Date', readonly=True),
'date_open': fields.datetime('Registration Date', readonly=True), 'date_open': fields.datetime('Registration Date', readonly=True),
@ -282,6 +281,8 @@ class event_registration(osv.osv):
'nb_register': 1, 'nb_register': 1,
'state': 'draft', 'state': 'draft',
} }
_order = 'name, create_date desc'
def do_draft(self, cr, uid, ids, context=None): def do_draft(self, cr, uid, ids, context=None):
return self.write(cr, uid, ids, {'state': 'draft'}, context=context) return self.write(cr, uid, ids, {'state': 'draft'}, context=context)

View File

@ -448,7 +448,7 @@
<separator orientation="vertical"/> <separator orientation="vertical"/>
<field name="event_id" widget="selection"/> <field name="event_id" widget="selection"/>
<field name="name" string="Participant" <field name="name" string="Participant"
filter_domain="['|','|','|', ('name','ilike',self), ('partner_id','ilike',self), ('email','ilike',self)]"/> filter_domain="['|','|', ('name','ilike',self), ('partner_id','ilike',self), ('email','ilike',self)]"/>
<field name="user_id" groups="base.group_extended"> <field name="user_id" groups="base.group_extended">
<filter icon="terp-personal" <filter icon="terp-personal"
string="My Registrations" string="My Registrations"

View File

@ -183,8 +183,6 @@ class hr_expense_expense(osv.osv):
})) }))
if not exp.employee_id.address_home_id: if not exp.employee_id.address_home_id:
raise osv.except_osv(_('Error !'), _('The employee must have a Home address.')) raise osv.except_osv(_('Error !'), _('The employee must have a Home address.'))
if not exp.employee_id.address_home_id:
raise osv.except_osv(_('Error !'), _("The employee's home address must have a partner linked."))
acc = exp.employee_id.address_home_id.property_account_payable.id acc = exp.employee_id.address_home_id.property_account_payable.id
payment_term_id = exp.employee_id.address_home_id.property_payment_term.id payment_term_id = exp.employee_id.address_home_id.property_payment_term.id
inv = { inv = {

View File

@ -150,4 +150,4 @@
</table> </table>
%endfor %endfor
</body> </body>
</html> </html>

View File

@ -81,4 +81,4 @@
</div> </div>
%endfor %endfor
</body> </body>
</html> </html>

View File

@ -161,4 +161,4 @@ width:50%;
<field name="webkit_header" ref="ir_header_webkit_bvr_invoice0" /> <field name="webkit_header" ref="ir_header_webkit_bvr_invoice0" />
</record> </record>
</data> </data>
</openerp> </openerp>

View File

@ -42,7 +42,7 @@ class order(report_sxw.rml_parse):
'disc': self.discount, 'disc': self.discount,
'net': self.netamount, 'net': self.netamount,
'get_journal_amt': self._get_journal_amt, 'get_journal_amt': self._get_journal_amt,
'address': partner or False, 'address': partner or False,
'titlize': titlize 'titlize': titlize
}) })

View File

@ -65,7 +65,7 @@ class purchase_order(osv.osv, EDIMixin):
"""Exports a purchase order""" """Exports a purchase order"""
edi_struct = dict(edi_struct or PURCHASE_ORDER_EDI_STRUCT) edi_struct = dict(edi_struct or PURCHASE_ORDER_EDI_STRUCT)
res_company = self.pool.get('res.company') res_company = self.pool.get('res.company')
res_partner_address = self.pool.get('res.partner') res_partner_obj = self.pool.get('res.partner')
edi_doc_list = [] edi_doc_list = []
for order in records: for order in records:
# generate the main report # generate the main report
@ -79,7 +79,7 @@ class purchase_order(osv.osv, EDIMixin):
'__import_module': 'sale', '__import_module': 'sale',
'company_address': res_company.edi_export_address(cr, uid, order.company_id, context=context), '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_id], context=context)[0], 'partner_address': res_partner_obj.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], 'currency': self.pool.get('res.currency').edi_export(cr, uid, [order.pricelist_id.currency_id],
context=context)[0], context=context)[0],
}) })
@ -95,15 +95,15 @@ class purchase_order(osv.osv, EDIMixin):
# the desired company among the user's allowed companies # the desired company among the user's allowed companies
self._edi_requires_attributes(('company_id','company_address'), edi_document) self._edi_requires_attributes(('company_id','company_address'), edi_document)
res_partner_address = self.pool.get('res.partner') res_partner_obj = self.pool.get('res.partner')
res_partner = self.pool.get('res.partner')
# imported company_address = new partner address # imported company_address = new partner address
src_company_id, src_company_name = edi_document.pop('company_id') src_company_id, src_company_name = edi_document.pop('company_id')
address_info = edi_document.pop('company_address') address_info = edi_document.pop('company_address')
address_info['customer'] = True address_info['customer'] = True
if 'name' not in address_info: if 'name' not in address_info:
address_info['name'] = src_company_name address_info['name'] = src_company_name
address_id = res_partner_address.edi_import(cr, uid, address_info, context=context) address_id = res_partner_obj.edi_import(cr, uid, address_info, context=context)
# modify edi_document to refer to new partner/address # modify edi_document to refer to new partner/address
partner_address = res_partner_address.browse(cr, uid, address_id, context=context) partner_address = res_partner_address.browse(cr, uid, address_id, context=context)

View File

@ -161,7 +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_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"), '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_id':fields.many2one('res.partner', 'Supplier', required=True, states={'confirmed':[('readonly',True)], 'approved':[('readonly',True)],'done':[('readonly',True)]}, change_default=True),
'dest_address_id':fields.many2one('res.partner', 'Destination Address', domain="[('parent_id','=',partner_id)]", 'dest_address_id':fields.many2one('res.partner', 'Customer Address (Direct Delivery)',
states={'confirmed':[('readonly',True)], 'approved':[('readonly',True)],'done':[('readonly',True)]}, 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." \ 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." "In this case, it will remove the warehouse link and set the customer location."
@ -569,7 +569,6 @@ class purchase_order(osv.osv):
'origin': porder.origin, 'origin': porder.origin,
'date_order': porder.date_order, 'date_order': porder.date_order,
'partner_id': porder.partner_id.id, 'partner_id': porder.partner_id.id,
# 'partner_address_id': porder.partner_id.id,
'dest_address_id': porder.dest_address_id.id, 'dest_address_id': porder.dest_address_id.id,
'warehouse_id': porder.warehouse_id.id, 'warehouse_id': porder.warehouse_id.id,
'location_id': porder.location_id.id, 'location_id': porder.location_id.id,

View File

@ -7,7 +7,7 @@
</record> </record>
<workflow action="purchase_confirm" model="purchase.order" ref="order_purchase2"/> <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"> <record id="stock.res_company_tinyshop0" model="res.company">
<field eval="1.0" name="po_lead"/> <field eval="1.0" name="po_lead"/>

View File

@ -57,29 +57,6 @@
action="base.action_partner_category_form" id="menu_partner_categories_in_form" name="Partner Categories" action="base.action_partner_category_form" id="menu_partner_categories_in_form" name="Partner Categories"
parent="purchase.menu_purchase_partner_cat" groups="base.group_no_one"/> parent="purchase.menu_purchase_partner_cat" groups="base.group_no_one"/>
<!--supplier addresses action-->
<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</field>
<field name="view_type">form</field>
<field name="context">{"search_default_supplier":1}</field>
<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_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">
<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-->
<!--supplier menu--> <!--supplier menu-->
<menuitem id="base.menu_procurement_management_supplier_name" name="Suppliers" <menuitem id="base.menu_procurement_management_supplier_name" name="Suppliers"
parent="menu_procurement_management" parent="menu_procurement_management"

View File

@ -186,9 +186,9 @@
<para style="terp_default_9"> <para style="terp_default_9">
<font color="white"> </font> <font color="white"> </font>
</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">Tél. : [[ (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">Fax : [[ (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">TVA : [[ (o.partner_id.vat) or removeParentNode('para') ]]</para>
</td> </td>
</tr> </tr>
</blockTable> </blockTable>

View File

@ -100,14 +100,14 @@
</para> </para>
</td> </td>
<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_id.title and order.partner_id.title.name) or '' ]] [[ order.partner_id.name ]]</para>
<para style="terp_default_9">[[ order.partner_id and display_address(order.partner_id) ]] </para> <para style="terp_default_9">[[ display_address(order.partner_id) ]] </para>
<para style="terp_default_9"> <para style="terp_default_9">
<font color="white"> </font> <font color="white"> </font>
</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">Tel.: [[ (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">Fax: [[ (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> <para style="terp_default_9">TVA: [[ (order.partner_id.vat) or removeParentNode('para') ]]</para>
</td> </td>
</tr> </tr>
</blockTable> </blockTable>

View File

@ -30,7 +30,6 @@ 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_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_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_purchase_user,res.partner purchase,base.model_res_partner,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_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,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 access_account_journal_manager,account.journal,account.model_account_journal,group_purchase_manager,1,0,0,0

1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
30 access_account_fiscal_position_purchase_user account.fiscal.position purchase account.model_account_fiscal_position group_purchase_user 1 0 0 0
31 access_account_sequence_fiscalyear_purchase_user account.sequence.fiscalyear purchase account.model_account_sequence_fiscalyear group_purchase_user 1 1 1 1
32 access_res_partner_purchase_user res.partner purchase base.model_res_partner 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
33 access_account_journal_period account.journal.period account.model_account_journal_period group_purchase_user 1 1 1 0
34 access_account_journal account.journal account.model_account_journal group_purchase_user 1 0 0 0
35 access_account_journal_manager account.journal account.model_account_journal group_purchase_manager 1 0 0 0

View File

@ -223,7 +223,7 @@
<blockTable colWidths="338.0,96.0,96.0" style="Table7"> <blockTable colWidths="338.0,96.0,96.0" style="Table7">
<tr> <tr>
<td> <td>
<para style="terp_default_9">[[ (purchase_ids.partner_id and purchase_ids.partner_id.id and purchase_ids.partner_id.name) or '' ]]</para> <para style="terp_default_9">[[ (purchase_ids.partner_id and purchase_ids.partner_id.name) or '' ]]</para>
</td> </td>
<td> <td>
<para style="terp_default_Centre_9">[[ formatLang(purchase_ids.date_order,date='True') ]]</para> <para style="terp_default_Centre_9">[[ formatLang(purchase_ids.date_order,date='True') ]]</para>

View File

@ -141,14 +141,14 @@
</para> </para>
</td> </td>
<td> <td>
<para style="terp_default_8">[[ (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_8">[[ (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_8">[[ o.partner_id and display_address(o.partner_id) ]] </para> <para style="terp_default_8">[[ o.partner_id and display_address(o.partner_id) ]] </para>
<para style="terp_default_8"> <para style="terp_default_8">
<font color="white"> </font> <font color="white"> </font>
</para> </para>
<para style="terp_default_8">Tel. : [[ (o.partner_id and o.partner_id.phone) or removeParentNode('para') ]]</para> <para style="terp_default_8">Tel. : [[ (o.partner_id.phone) or removeParentNode('para') ]]</para>
<para style="terp_default_8">Fax : [[ (o.partner_id and o.partner_id.fax) or removeParentNode('para') ]]</para> <para style="terp_default_8">Fax : [[ (o.partner_id.fax) or removeParentNode('para') ]]</para>
<para style="terp_default_8">VAT : [[ (o.partner_id and o.partner_id.vat) or removeParentNode('para') ]]</para> <para style="terp_default_8">VAT : [[ (o.partner_id.vat) or removeParentNode('para') ]]</para>
</td> </td>
</tr> </tr>
</blockTable> </blockTable>
@ -184,7 +184,7 @@
<para style="terp_default_Centre_9">[[ formatLang(o.date_invoice,date=True) ]]</para> <para style="terp_default_Centre_9">[[ formatLang(o.date_invoice,date=True) ]]</para>
</td> </td>
<td> <td>
<para style="terp_default_Centre_9">[[ (o.partner_id and o.partner_id.ref) or ' ' ]]</para> <para style="terp_default_Centre_9">[[ (o.partner_id.ref) or ' ' ]]</para>
</td> </td>
</tr> </tr>
</blockTable> </blockTable>

View File

@ -68,7 +68,7 @@ class sale_order(osv.osv, EDIMixin):
"""Exports a Sale order""" """Exports a Sale order"""
edi_struct = dict(edi_struct or SALE_ORDER_EDI_STRUCT) edi_struct = dict(edi_struct or SALE_ORDER_EDI_STRUCT)
res_company = self.pool.get('res.company') res_company = self.pool.get('res.company')
res_partner_address = self.pool.get('res.partner') res_partner_obj = self.pool.get('res.partner')
edi_doc_list = [] edi_doc_list = []
for order in records: for order in records:
# generate the main report # generate the main report
@ -82,7 +82,7 @@ class sale_order(osv.osv, EDIMixin):
'__import_module': 'purchase', '__import_module': 'purchase',
'company_address': res_company.edi_export_address(cr, uid, order.company_id, context=context), 'company_address': res_company.edi_export_address(cr, uid, order.company_id, context=context),
'partner_id': res_partner_address.edi_export(cr, uid, [order.partner_id], context=context)[0], 'partner_id': res_partner_obj.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], 'currency': self.pool.get('res.currency').edi_export(cr, uid, [order.pricelist_id.currency_id],
context=context)[0], context=context)[0],
@ -99,7 +99,7 @@ class sale_order(osv.osv, EDIMixin):
# the desired company among the user's allowed companies # the desired company among the user's allowed companies
self._edi_requires_attributes(('company_id','company_address'), edi_document) self._edi_requires_attributes(('company_id','company_address'), edi_document)
res_partner = self.pool.get('res.partner') res_partner_obj = self.pool.get('res.partner')
# imported company_address = new partner address # imported company_address = new partner address
src_company_id, src_company_name = edi_document.pop('company_id') src_company_id, src_company_name = edi_document.pop('company_id')
@ -109,10 +109,10 @@ class sale_order(osv.osv, EDIMixin):
if 'name' not in address_info: if 'name' not in address_info:
address_info['name'] = src_company_name address_info['name'] = src_company_name
address_id = res_partner.edi_import(cr, uid, address_info, context=context) address_id = res_partner_obj.edi_import(cr, uid, address_info, context=context)
# modify edi_document to refer to new partner/address # modify edi_document to refer to new partner/address
partner_address = res_partner.browse(cr, uid, address_id, context=context) partner_address = res_partner_obj.browse(cr, uid, address_id, context=context)
edi_document.pop('partner_address', False) # ignored edi_document.pop('partner_address', False) # ignored
address_edi_m2o = self.edi_m2o(cr, uid, partner_address, context=context) address_edi_m2o = self.edi_m2o(cr, uid, partner_address, context=context)
edi_document['partner_id'] = address_edi_m2o edi_document['partner_id'] = address_edi_m2o

View File

@ -177,9 +177,9 @@
<para style="terp_default_9"> <para style="terp_default_9">
<font color="white"> </font> <font color="white"> </font>
</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">Tel. : [[ (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">Fax : [[ (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">TVA : [[ (o.partner_id.vat) or removeParentNode('para') ]]</para>
<para style="terp_default_9"> <para style="terp_default_9">
<font color="white"> </font> <font color="white"> </font>
</para> </para>

View File

@ -154,14 +154,14 @@
</para> </para>
</td> </td>
<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_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_id and display_address(o.partner_id) ]] </para> <para style="terp_default_9">[[ display_address(o.partner_id) ]] </para>
<para style="terp_default_9"> <para style="terp_default_9">
<font color="white"> </font> <font color="white"> </font>
</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">Tel. : [[ (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">Fax : [[ (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">TVA : [[ (o.partner_id.vat) or removeParentNode('para') ]]</para>
<para style="terp_default_9"> <para style="terp_default_9">
<font color="white"> </font> <font color="white"> </font>
</para> </para>

View File

@ -1073,7 +1073,7 @@ class stock_picking(osv.osv):
invoice_obj = self.pool.get('account.invoice') invoice_obj = self.pool.get('account.invoice')
invoice_line_obj = self.pool.get('account.invoice.line') invoice_line_obj = self.pool.get('account.invoice.line')
parnter_obj = self.pool.get('res.partner') partner_obj = self.pool.get('res.partner')
invoices_group = {} invoices_group = {}
res = {} res = {}
inv_type = type inv_type = type
@ -1082,7 +1082,7 @@ class stock_picking(osv.osv):
continue continue
partner = self._get_partner_to_invoice(cr, uid, picking, context=context) partner = self._get_partner_to_invoice(cr, uid, picking, context=context)
if isinstance(partner, int): if isinstance(partner, int):
partner=parnter_obj.browse(cr,uid,[partner])[0] partner = partner_obj.browse(cr, uid, [partner], context=context)[0]
if not partner: if not partner:
raise osv.except_osv(_('Error, no partner !'), raise osv.except_osv(_('Error, no partner !'),
_('Please put a partner on the picking list if you want to generate invoice.')) _('Please put a partner on the picking list if you want to generate invoice.'))
@ -1098,7 +1098,7 @@ class stock_picking(osv.osv):
else: else:
invoice_vals = self._prepare_invoice(cr, uid, picking, partner, inv_type, journal_id, context=context) invoice_vals = self._prepare_invoice(cr, uid, picking, partner, inv_type, journal_id, context=context)
invoice_id = invoice_obj.create(cr, uid, invoice_vals, context=context) invoice_id = invoice_obj.create(cr, uid, invoice_vals, context=context)
invoices_group[partner] = invoice_id invoices_group[partner.id] = invoice_id
res[picking.id] = invoice_id res[picking.id] = invoice_id
for move_line in picking.move_lines: for move_line in picking.move_lines:
if move_line.state == 'cancel': if move_line.state == 'cancel':

View File

@ -163,7 +163,7 @@ class survey_send_invitation(osv.osv_memory):
ans = mail_message.schedule_with_attach(cr, uid, record['mail_from'], [partner.email], \ ans = mail_message.schedule_with_attach(cr, uid, record['mail_from'], [partner.email], \
record['mail_subject'], mail, attachments=attachments, context=context) record['mail_subject'], mail, attachments=attachments, context=context)
if ans: if ans:
res_data = {'name': partner.name or 'Unknown', res_data = {'name': partner.name or _('Unknown'),
'login': partner.email, 'login': partner.email,
'password': passwd, 'password': passwd,
'address_id': partner.id, 'address_id': partner.id,
@ -174,10 +174,10 @@ class survey_send_invitation(osv.osv_memory):
user = user_ref.create(cr, uid, res_data) user = user_ref.create(cr, uid, res_data)
if user not in new_user: if user not in new_user:
new_user.append(user) new_user.append(user)
created+= "- %s (Login: %s, Password: %s)\n" % (partner.name or 'Unknown',\ created+= "- %s (Login: %s, Password: %s)\n" % (partner.name or _('Unknown'),\
partner.email, passwd) partner.email, passwd)
else: else:
error+= "- %s (Login: %s, Password: %s)\n" % (partner.name or 'Unknown',\ error+= "- %s (Login: %s, Password: %s)\n" % (partner.name or _('Unknown'),\
partner.email, passwd) partner.email, passwd)
new_vals = {} new_vals = {}

View File

@ -152,7 +152,7 @@ class stock_picking(osv.osv):
def onchange_partner_in(self, cr, uid, context, partner_id=None): def onchange_partner_in(self, cr, uid, context, partner_id=None):
if not partner_id: if not partner_id:
return {} return {}
partner = self.pool.get('res.partner').browse(cr, uid, partner_id) partner = self.pool.get('res.partner').browse(cr, uid, partner_id, context=context)
warning = {} warning = {}
title = False title = False
message = False message = False