[MERGE] forward port of branch saas-3 up to db75994

This commit is contained in:
Christophe Simonis 2014-10-14 15:13:14 +02:00
commit 2e3f59181d
15 changed files with 1888 additions and 1199 deletions

View File

@ -221,7 +221,7 @@ class account_bank_statement(osv.osv):
'ref': st_line.ref,
}
def _get_counter_part_account(sefl, cr, uid, st_line, context=None):
def _get_counter_part_account(self, cr, uid, st_line, context=None):
"""Retrieve the account to use in the counterpart move.
:param browse_record st_line: account.bank.statement.line record to create the move from.
@ -231,7 +231,7 @@ class account_bank_statement(osv.osv):
return st_line.statement_id.journal_id.default_credit_account_id.id
return st_line.statement_id.journal_id.default_debit_account_id.id
def _get_counter_part_partner(sefl, cr, uid, st_line, context=None):
def _get_counter_part_partner(self, cr, uid, st_line, context=None):
"""Retrieve the partner to use in the counterpart move.
:param browse_record st_line: account.bank.statement.line record to create the move from.

View File

@ -24,6 +24,7 @@ from lxml import etree
from openerp import models, fields, api, _
from openerp.exceptions import except_orm, Warning, RedirectWarning
from openerp.tools import float_compare
import openerp.addons.decimal_precision as dp
# mapping invoice type to journal type
@ -705,6 +706,7 @@ class account_invoice(models.Model):
account_invoice_tax.create(tax)
else:
tax_key = []
precision = self.env['decimal.precision'].precision_get('Account')
for tax in self.tax_line:
if tax.manual:
continue
@ -713,7 +715,7 @@ class account_invoice(models.Model):
if key not in compute_taxes:
raise except_orm(_('Warning!'), _('Global taxes defined, but they are not in invoice lines !'))
base = compute_taxes[key]['base']
if abs(base - tax.base) > company_currency.rounding:
if float_compare(abs(base - tax.base), company_currency.rounding, precision_digits=precision) == 1:
raise except_orm(_('Warning!'), _('Tax base different!\nClick on compute to update the tax base.'))
for key in compute_taxes:
if key not in tax_key:

View File

@ -486,7 +486,8 @@ class email_template(osv.osv):
# body: add user signature, sanitize
if 'body_html' in fields and template.user_signature:
signature = self.pool.get('res.users').browse(cr, uid, uid, context).signature
values['body_html'] = tools.append_content_to_html(values['body_html'], signature, plaintext=False)
if signature:
values['body_html'] = tools.append_content_to_html(values['body_html'], signature, plaintext=False)
if values.get('body_html'):
values['body'] = tools.html_sanitize(values['body_html'])
# technical settings

View File

@ -38,7 +38,7 @@ class gamification_badge_user(osv.Model):
_rec_name = "badge_name"
_columns = {
'user_id': fields.many2one('res.users', string="User", required=True),
'user_id': fields.many2one('res.users', string="User", required=True, ondelete="cascade"),
'sender_id': fields.many2one('res.users', string="Sender", help="The user who has send the badge"),
'badge_id': fields.many2one('gamification.badge', string='Badge', required=True, ondelete="cascade"),
'challenge_id': fields.many2one('gamification.challenge', string='Challenge originating', help="If this badge was rewarded through a challenge"),

View File

@ -40,6 +40,7 @@ This is the base module to manage the accounting chart for Luxembourg.
'data': [
# basic accounting data
'account_financial_report.xml',
'account_financial_report_abr.xml',
'account.account.type-2011.csv',
'account.account.template-2011.csv',
'account.tax.code.template-2011.csv',

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,635 @@
<openerp>
<data>
<!-- balance sheet abbreviated model (CA_BILANABR) -->
<record model="account.financial.report" id="account_financial_report_abr_13">
<field name="name">Luxembourg Balance Sheet (abbreviated)</field>
<field name="sign" eval="1"/>
<field name="display_detail">detail_flat</field>
<field name="type">sum</field>
</record>
<record model="account.financial.report" id="account_financial_report_abr_15">
<field name="name">ACTIF</field>
<field name="sequence">201</field>
<field name="style_overwrite" eval="1"/>
<field name="sign" eval="1"/>
<field name="display_detail">detail_flat</field>
<field name="type">sum</field>
<field name="parent_id" ref="account_financial_report_abr_13"/>
</record>
<record model="account.financial.report" id="account_financial_report_abr_16">
<field name="name">A. Capital souscrit non vers&#233;</field>
<field name="sequence">101</field>
<field name="style_overwrite" eval="2"/>
<field name="sign" eval="1"/>
<field name="display_detail">detail_flat</field>
<field name="type">sum</field>
<field name="parent_id" ref="account_financial_report_abr_15"/>
</record>
<record model="account.financial.report" id="account_financial_report_abr_17">
<field name="name">I. Capital souscrit non appel&#233;</field>
<field name="sequence">103</field>
<field name="sign" eval="1"/>
<field name="display_detail">no_detail</field>
<field name="type">accounts</field>
<field name="parent_id" ref="account_financial_report_abr_16"/>
</record>
<record model="account.financial.report" id="account_financial_report_abr_18">
<field name="name">II. Capital souscrit appel&#233; et non vers&#233;</field>
<field name="sequence">105</field>
<field name="sign" eval="1"/>
<field name="display_detail">no_detail</field>
<field name="type">accounts</field>
<field name="parent_id" ref="account_financial_report_abr_16"/>
</record>
<record model="account.financial.report" id="account_financial_report_abr_19">
<field name="name">B. Frais d&#8217;&#233;tablissement</field>
<field name="sequence">107</field>
<field name="style_overwrite" eval="2"/>
<field name="sign" eval="1"/>
<field name="display_detail">no_detail</field>
<field name="type">accounts</field>
<field name="parent_id" ref="account_financial_report_abr_15"/>
</record>
<record model="account.financial.report" id="account_financial_report_abr_20">
<field name="name">C. Actif immobilis&#233;</field>
<field name="sequence">109</field>
<field name="style_overwrite" eval="2"/>
<field name="sign" eval="1"/>
<field name="display_detail">detail_flat</field>
<field name="type">sum</field>
<field name="parent_id" ref="account_financial_report_abr_15"/>
</record>
<record model="account.financial.report" id="account_financial_report_abr_21">
<field name="name">I. Immobilisations incorporelles</field>
<field name="sequence">111</field>
<field name="sign" eval="1"/>
<field name="display_detail">no_detail</field>
<field name="type">accounts</field>
<field name="parent_id" ref="account_financial_report_abr_20"/>
</record>
<record model="account.financial.report" id="account_financial_report_abr_28">
<field name="name">II. Immobilisations corporelles</field>
<field name="sequence">125</field>
<field name="sign" eval="1"/>
<field name="display_detail">no_detail</field>
<field name="type">accounts</field>
<field name="parent_id" ref="account_financial_report_abr_20"/>
</record>
<record model="account.financial.report" id="account_financial_report_abr_33">
<field name="name">III. Immobilisations financi&#232;res</field>
<field name="sequence">135</field>
<field name="sign" eval="1"/>
<field name="display_detail">no_detail</field>
<field name="type">accounts</field>
<field name="parent_id" ref="account_financial_report_abr_20"/>
</record>
<record model="account.financial.report" id="account_financial_report_abr_41">
<field name="name">D. Actif circulant</field>
<field name="sequence">151</field>
<field name="style_overwrite" eval="2"/>
<field name="sign" eval="1"/>
<field name="display_detail">detail_flat</field>
<field name="type">sum</field>
<field name="parent_id" ref="account_financial_report_abr_15"/>
</record>
<record model="account.financial.report" id="account_financial_report_abr_42">
<field name="name">I. Stocks</field>
<field name="sequence">153</field>
<field name="sign" eval="1"/>
<field name="display_detail">no_detail</field>
<field name="type">accounts</field>
<field name="parent_id" ref="account_financial_report_abr_41"/>
</record>
<record model="account.financial.report" id="account_financial_report_abr_47">
<field name="name">II. Cr&#233;ances</field>
<field name="sequence">163</field>
<field name="sign" eval="1"/>
<field name="display_detail">detail_flat</field>
<field name="type">sum</field>
<field name="parent_id" ref="account_financial_report_abr_41"/>
</record>
<record model="account.financial.report" id="account_financial_report_abr_49">
<field name="name">a) dont la dur&#233;e r&#233;siduelle est inf&#233;rieure ou &#233;gale &#224; un an</field>
<field name="sequence">167</field>
<field name="sign" eval="1"/>
<field name="display_detail">no_detail</field>
<field name="type">accounts</field>
<field name="parent_id" ref="account_financial_report_abr_47"/>
</record>
<record model="account.financial.report" id="account_financial_report_abr_50">
<field name="name">b) dont la dur&#233;e r&#233;siduelle est sup&#233;rieure &#224; un an</field>
<field name="sequence">169</field>
<field name="sign" eval="1"/>
<field name="display_detail">no_detail</field>
<field name="type">accounts</field>
<field name="parent_id" ref="account_financial_report_abr_47"/>
</record>
<record model="account.financial.report" id="account_financial_report_abr_60">
<field name="name">III. Valeurs mobili&#232;res</field>
<field name="sequence">189</field>
<field name="sign" eval="1"/>
<field name="display_detail">no_detail</field>
<field name="type">accounts</field>
<field name="parent_id" ref="account_financial_report_abr_41"/>
</record>
<record model="account.financial.report" id="account_financial_report_abr_64">
<field name="name">IV. Avoirs en banques, avoirs en compte de ch&#232;ques postaux, ch&#232;ques et en caisse</field>
<field name="sequence">197</field>
<field name="sign" eval="1"/>
<field name="display_detail">no_detail</field>
<field name="type">accounts</field>
<field name="parent_id" ref="account_financial_report_abr_41"/>
</record>
<record model="account.financial.report" id="account_financial_report_abr_65">
<field name="name">E. Comptes de r&#233;gularisation</field>
<field name="sequence">199</field>
<field name="style_overwrite" eval="2"/>
<field name="sign" eval="1"/>
<field name="display_detail">no_detail</field>
<field name="type">accounts</field>
<field name="parent_id" ref="account_financial_report_abr_15"/>
</record>
<record model="account.financial.report" id="account_financial_report_abr_66">
<field name="name">PASSIF</field>
<field name="sequence">405</field>
<field name="style_overwrite" eval="1"/>
<field name="sign" eval="-1"/>
<field name="display_detail">detail_flat</field>
<field name="type">sum</field>
<field name="parent_id" ref="account_financial_report_abr_13"/>
</record>
<record model="account.financial.report" id="account_financial_report_abr_67">
<field name="name">A. Capitaux propres</field>
<field name="sequence">301</field>
<field name="style_overwrite" eval="2"/>
<field name="sign" eval="-1"/>
<field name="display_detail">detail_flat</field>
<field name="type">sum</field>
<field name="parent_id" ref="account_financial_report_abr_66"/>
</record>
<record model="account.financial.report" id="account_financial_report_abr_68">
<field name="name">I. Capital souscrit</field>
<field name="sequence">303</field>
<field name="sign" eval="-1"/>
<field name="display_detail">no_detail</field>
<field name="type">accounts</field>
<field name="parent_id" ref="account_financial_report_abr_67"/>
</record>
<record model="account.financial.report" id="account_financial_report_abr_69">
<field name="name">II. Primes d'&#233;missions et primes assimil&#233;es</field>
<field name="sequence">305</field>
<field name="sign" eval="-1"/>
<field name="display_detail">no_detail</field>
<field name="type">accounts</field>
<field name="parent_id" ref="account_financial_report_abr_67"/>
</record>
<record model="account.financial.report" id="account_financial_report_abr_70">
<field name="name">III. R&#233;serves de r&#233;&#233;valuation</field>
<field name="sequence">307</field>
<field name="sign" eval="-1"/>
<field name="display_detail">no_detail</field>
<field name="type">accounts</field>
<field name="parent_id" ref="account_financial_report_abr_67"/>
</record>
<record model="account.financial.report" id="account_financial_report_abr_71">
<field name="name">IV. R&#233;serves</field>
<field name="sequence">309</field>
<field name="sign" eval="-1"/>
<field name="display_detail">no_detail</field>
<field name="type">accounts</field>
<field name="parent_id" ref="account_financial_report_abr_67"/>
</record>
<record model="account.financial.report" id="account_financial_report_abr_76">
<field name="name">V. R&#233;sultats report&#233;s</field>
<field name="sequence">319</field>
<field name="sign" eval="-1"/>
<field name="display_detail">no_detail</field>
<field name="type">accounts</field>
<field name="parent_id" ref="account_financial_report_abr_67"/>
</record>
<record model="account.financial.report" id="account_financial_report_abr_77">
<field name="name">VI. R&#233;sultat de l'exercice</field>
<field name="sequence">321</field>
<field name="sign" eval="-1"/>
<field name="display_detail">no_detail</field>
<field name="type">accounts</field>
<field name="parent_id" ref="account_financial_report_abr_67"/>
</record>
<record model="account.financial.report" id="account_financial_report_abr_78">
<field name="name">VII. Acomptes sur dividendes</field>
<field name="sequence">323</field>
<field name="sign" eval="-1"/>
<field name="display_detail">no_detail</field>
<field name="type">accounts</field>
<field name="parent_id" ref="account_financial_report_abr_67"/>
</record>
<record model="account.financial.report" id="account_financial_report_abr_79">
<field name="name">VIII. Subventions d&#8217;investissement en capital</field>
<field name="sequence">325</field>
<field name="sign" eval="-1"/>
<field name="display_detail">no_detail</field>
<field name="type">accounts</field>
<field name="parent_id" ref="account_financial_report_abr_67"/>
</record>
<record model="account.financial.report" id="account_financial_report_abr_80">
<field name="name">IX. Plus-values immunis&#233;es</field>
<field name="sequence">327</field>
<field name="sign" eval="-1"/>
<field name="display_detail">no_detail</field>
<field name="type">accounts</field>
<field name="parent_id" ref="account_financial_report_abr_67"/>
</record>
<record model="account.financial.report" id="account_financial_report_abr_81">
<field name="name">B. Dettes subordonn&#233;es</field>
<field name="sequence">329</field>
<field name="style_overwrite" eval="2"/>
<field name="sign" eval="-1"/>
<field name="display_detail">no_detail</field>
<field name="type">accounts</field>
<field name="parent_id" ref="account_financial_report_abr_66"/>
</record>
<record model="account.financial.report" id="account_financial_report_abr_82">
<field name="name">C. Provisions</field>
<field name="sequence">331</field>
<field name="style_overwrite" eval="2"/>
<field name="sign" eval="-1"/>
<field name="display_detail">no_detail</field>
<field name="type">accounts</field>
<field name="parent_id" ref="account_financial_report_abr_66"/>
</record>
<record model="account.financial.report" id="account_financial_report_abr_86">
<field name="name">D. Dettes non subordonn&#233;es</field>
<field name="sequence">339</field>
<field name="style_overwrite" eval="2"/>
<field name="sign" eval="-1"/>
<field name="display_detail">detail_flat</field>
<field name="type">sum</field>
<field name="parent_id" ref="account_financial_report_abr_66"/>
</record>
<record model="account.financial.report" id="account_financial_report_abr_89">
<field name="name">a) dont la dur&#233;e r&#233;siduelle est inf&#233;rieure ou &#233;gale &#224; un an</field>
<field name="sequence">345</field>
<field name="sign" eval="-1"/>
<field name="display_detail">no_detail</field>
<field name="type">accounts</field>
<field name="parent_id" ref="account_financial_report_abr_86"/>
</record>
<record model="account.financial.report" id="account_financial_report_abr_90">
<field name="name">b) dont la dur&#233;e r&#233;siduelle est sup&#233;rieure &#224; un an</field>
<field name="sequence">347</field>
<field name="sign" eval="-1"/>
<field name="display_detail">no_detail</field>
<field name="type">accounts</field>
<field name="parent_id" ref="account_financial_report_abr_86"/>
</record>
<record model="account.financial.report" id="account_financial_report_abr_118">
<field name="name">E. Comptes de r&#233;gularisation</field>
<field name="sequence">403</field>
<field name="style_overwrite" eval="2"/>
<field name="sign" eval="-1"/>
<field name="display_detail">no_detail</field>
<field name="type">accounts</field>
<field name="parent_id" ref="account_financial_report_abr_66"/>
</record>
<!-- profit and loss abbreviated model (CA_COMPPABR) -->
<record model="account.financial.report" id="account_financial_report_abr_14">
<field name="name">Luxembourg Profit &amp; Loss (abbreviated)</field>
<field name="sign" eval="1"/>
<field name="display_detail">detail_flat</field>
<field name="type">sum</field>
</record>
<!-- p&l full model (CA_COMPP) -->
<record model="account.financial.report" id="account_financial_report_abr_119">
<field name="name">A. CHARGES</field>
<field name="sequence">641</field>
<field name="sign" eval="1"/>
<field name="display_detail">detail_flat</field>
<field name="type">sum</field>
<field name="parent_id" ref="account_financial_report_abr_14"/>
</record>
<record model="account.financial.report" id="account_financial_report_abr_120">
<field name="name">1. &#224; 2. Charges brutes (moins B.1 &#224; B.4)</field>
<field name="sequence">601</field>
<field name="sign" eval="1"/>
<field name="display_detail">no_detail</field>
<field name="type">accounts</field>
<field name="parent_id" ref="account_financial_report_abr_119"/>
</record>
<record model="account.financial.report" id="account_financial_report_abr_122">
<field name="name">3. Frais de personnel</field>
<field name="sequence">605</field>
<field name="sign" eval="1"/>
<field name="display_detail">detail_flat</field>
<field name="type">sum</field>
<field name="parent_id" ref="account_financial_report_abr_119"/>
</record>
<record model="account.financial.report" id="account_financial_report_abr_123">
<field name="name">a) Salaires et traitements</field>
<field name="sequence">607</field>
<field name="sign" eval="1"/>
<field name="display_detail">no_detail</field>
<field name="type">accounts</field>
<field name="parent_id" ref="account_financial_report_abr_122"/>
</record>
<record model="account.financial.report" id="account_financial_report_abr_124">
<field name="name">b) Charges sociales couvrant les salaires et traitements</field>
<field name="sequence">609</field>
<field name="sign" eval="1"/>
<field name="display_detail">no_detail</field>
<field name="type">accounts</field>
<field name="parent_id" ref="account_financial_report_abr_122"/>
</record>
<record model="account.financial.report" id="account_financial_report_abr_125">
<field name="name">c) Pensions compl&#233;mentaires</field>
<field name="sequence">611</field>
<field name="sign" eval="1"/>
<field name="display_detail">no_detail</field>
<field name="type">accounts</field>
<field name="parent_id" ref="account_financial_report_abr_122"/>
</record>
<record model="account.financial.report" id="account_financial_report_abr_126">
<field name="name">d) Autres charges sociales</field>
<field name="sequence">613</field>
<field name="sign" eval="1"/>
<field name="display_detail">no_detail</field>
<field name="type">accounts</field>
<field name="parent_id" ref="account_financial_report_abr_122"/>
</record>
<record model="account.financial.report" id="account_financial_report_abr_127">
<field name="name">4. Corrections de valeur</field>
<field name="sequence">615</field>
<field name="sign" eval="1"/>
<field name="display_detail">detail_flat</field>
<field name="type">sum</field>
<field name="parent_id" ref="account_financial_report_abr_119"/>
</record>
<record model="account.financial.report" id="account_financial_report_abr_128">
<field name="name">a) sur frais d'&#233;tablissement et sur immobilisations corporelles et incorporelles</field>
<field name="sequence">617</field>
<field name="sign" eval="1"/>
<field name="display_detail">no_detail</field>
<field name="type">accounts</field>
<field name="parent_id" ref="account_financial_report_abr_127"/>
</record>
<record model="account.financial.report" id="account_financial_report_abr_129">
<field name="name">b) sur &#233;l&#233;ments de l'actif circulant</field>
<field name="sequence">619</field>
<field name="sign" eval="1"/>
<field name="display_detail">no_detail</field>
<field name="type">accounts</field>
<field name="parent_id" ref="account_financial_report_abr_127"/>
</record>
<record model="account.financial.report" id="account_financial_report_abr_130">
<field name="name">5. Autres charges d&#8217;exploitation</field>
<field name="sequence">621</field>
<field name="sign" eval="1"/>
<field name="display_detail">no_detail</field>
<field name="type">accounts</field>
<field name="parent_id" ref="account_financial_report_abr_119"/>
</record>
<record model="account.financial.report" id="account_financial_report_abr_131">
<field name="name">6. Corrections de valeur sur immobilisations financi&#232;res et ajustement de juste valeur sur immobilisations financières</field>
<field name="sequence">623</field>
<field name="sign" eval="1"/>
<field name="display_detail">no_detail</field>
<field name="type">accounts</field>
<field name="parent_id" ref="account_financial_report_abr_119"/>
</record>
<record model="account.financial.report" id="account_financial_report_abr_132">
<field name="name">7. Corrections de valeur et ajustement de juste valeur sur &#233;l&#233;ments financiers de l'actif circulant. Moins-values de cessions des valeurs mobilières</field>
<field name="sequence">625</field>
<field name="sign" eval="1"/>
<field name="display_detail">no_detail</field>
<field name="type">accounts</field>
<field name="parent_id" ref="account_financial_report_abr_119"/>
</record>
<record model="account.financial.report" id="account_financial_report_abr_133">
<field name="name">8. Int&#233;r&#234;ts et autres charges financi&#232;res</field>
<field name="sequence">627</field>
<field name="sign" eval="1"/>
<field name="display_detail">detail_flat</field>
<field name="type">sum</field>
<field name="parent_id" ref="account_financial_report_abr_119"/>
</record>
<record model="account.financial.report" id="account_financial_report_abr_134">
<field name="name">a) concernant des entreprises li&#233;es</field>
<field name="sequence">629</field>
<field name="sign" eval="1"/>
<field name="display_detail">no_detail</field>
<field name="type">accounts</field>
<field name="parent_id" ref="account_financial_report_abr_133"/>
</record>
<record model="account.financial.report" id="account_financial_report_abr_135">
<field name="name">b) autres int&#233;r&#234;ts et charges</field>
<field name="sequence">631</field>
<field name="sign" eval="1"/>
<field name="display_detail">no_detail</field>
<field name="type">accounts</field>
<field name="parent_id" ref="account_financial_report_abr_133"/>
</record>
<record model="account.financial.report" id="account_financial_report_abr_136">
<field name="name">9. Charges exceptionnelles</field>
<field name="sequence">633</field>
<field name="sign" eval="1"/>
<field name="display_detail">no_detail</field>
<field name="type">accounts</field>
<field name="parent_id" ref="account_financial_report_abr_119"/>
</record>
<record model="account.financial.report" id="account_financial_report_abr_137">
<field name="name">10. Imp&#244;ts sur le r&#233;sultat</field>
<field name="sequence">635</field>
<field name="sign" eval="1"/>
<field name="display_detail">no_detail</field>
<field name="type">accounts</field>
<field name="parent_id" ref="account_financial_report_abr_119"/>
</record>
<record model="account.financial.report" id="account_financial_report_abr_138">
<field name="name">11. Autres imp&#244;ts ne figurant pas sous le poste ci-dessus</field>
<field name="sequence">637</field>
<field name="sign" eval="1"/>
<field name="display_detail">no_detail</field>
<field name="type">accounts</field>
<field name="parent_id" ref="account_financial_report_abr_119"/>
</record>
<record model="account.financial.report" id="account_financial_report_abr_140">
<field name="name">B. PRODUITS</field>
<field name="sequence">737</field>
<field name="sign" eval="-1"/>
<field name="display_detail">detail_flat</field>
<field name="type">sum</field>
<field name="parent_id" ref="account_financial_report_abr_14"/>
</record>
<record model="account.financial.report" id="account_financial_report_abr_141">
<field name="name">1. &#224; 4. Produits bruts (moins A.1 et A.2)</field>
<field name="sequence">701</field>
<field name="sign" eval="-1"/>
<field name="display_detail">no_detail</field>
<field name="type">accounts</field>
<field name="parent_id" ref="account_financial_report_abr_140"/>
</record>
<record model="account.financial.report" id="account_financial_report_abr_147">
<field name="name">5. Autres produits d&#8217;exploitation</field>
<field name="sequence">713</field>
<field name="sign" eval="-1"/>
<field name="display_detail">no_detail</field>
<field name="type">accounts</field>
<field name="parent_id" ref="account_financial_report_abr_140"/>
</record>
<record model="account.financial.report" id="account_financial_report_abr_148">
<field name="name">6. Produits des immobilisations financi&#232;res</field>
<field name="sequence">715</field>
<field name="sign" eval="-1"/>
<field name="display_detail">detail_flat</field>
<field name="type">sum</field>
<field name="parent_id" ref="account_financial_report_abr_140"/>
</record>
<record model="account.financial.report" id="account_financial_report_abr_149">
<field name="name">a) provenant d&#8217;entreprises li&#233;es</field>
<field name="sequence">717</field>
<field name="sign" eval="-1"/>
<field name="display_detail">no_detail</field>
<field name="type">accounts</field>
<field name="parent_id" ref="account_financial_report_abr_148"/>
</record>
<record model="account.financial.report" id="account_financial_report_abr_150">
<field name="name">b) autres produits de participations</field>
<field name="sequence">719</field>
<field name="sign" eval="-1"/>
<field name="display_detail">no_detail</field>
<field name="type">accounts</field>
<field name="parent_id" ref="account_financial_report_abr_148"/>
</record>
<record model="account.financial.report" id="account_financial_report_abr_151">
<field name="name">7. Produits des &#233;l&#233;ments financiers de l'actif circulant</field>
<field name="sequence">721</field>
<field name="sign" eval="-1"/>
<field name="display_detail">detail_flat</field>
<field name="type">sum</field>
<field name="parent_id" ref="account_financial_report_abr_140"/>
</record>
<record model="account.financial.report" id="account_financial_report_abr_152">
<field name="name">a) provenant d&#8217;entreprises li&#233;es</field>
<field name="sequence">723</field>
<field name="sign" eval="-1"/>
<field name="display_detail">no_detail</field>
<field name="type">accounts</field>
<field name="parent_id" ref="account_financial_report_abr_151"/>
</record>
<record model="account.financial.report" id="account_financial_report_abr_153">
<field name="name">b) autres produits</field>
<field name="sequence">725</field>
<field name="sign" eval="-1"/>
<field name="display_detail">no_detail</field>
<field name="type">accounts</field>
<field name="parent_id" ref="account_financial_report_abr_151"/>
</record>
<record model="account.financial.report" id="account_financial_report_abr_154">
<field name="name">8. Autres int&#233;r&#234;ts et autres produits financiers</field>
<field name="sequence">727</field>
<field name="sign" eval="-1"/>
<field name="display_detail">detail_flat</field>
<field name="type">sum</field>
<field name="parent_id" ref="account_financial_report_abr_140"/>
</record>
<record model="account.financial.report" id="account_financial_report_abr_155">
<field name="name">a) provenant d&#8217;entreprises li&#233;es</field>
<field name="sequence">729</field>
<field name="sign" eval="-1"/>
<field name="display_detail">no_detail</field>
<field name="type">accounts</field>
<field name="parent_id" ref="account_financial_report_abr_154"/>
</record>
<record model="account.financial.report" id="account_financial_report_abr_156">
<field name="name">b) autres int&#233;r&#234;ts et produits financiers</field>
<field name="sequence">731</field>
<field name="sign" eval="-1"/>
<field name="display_detail">no_detail</field>
<field name="type">accounts</field>
<field name="parent_id" ref="account_financial_report_abr_154"/>
</record>
<record model="account.financial.report" id="account_financial_report_abr_157">
<field name="name">9. Produits exceptionnels</field>
<field name="sequence">733</field>
<field name="sign" eval="-1"/>
<field name="display_detail">no_detail</field>
<field name="type">accounts</field>
<field name="parent_id" ref="account_financial_report_abr_140"/>
</record>
<record model="account.financial.report" id="account_financial_report_abr_161">
<field name="name">RESULTAT DE L'EXERCICE</field>
<field name="sequence">800</field>
<field name="sign" eval="-1"/>
<field name="display_detail">no_detail</field>
<field name="type">accounts</field>
<field name="parent_id" ref="account_financial_report_abr_14"/>
</record>
</data>
</openerp>

View File

@ -1234,9 +1234,13 @@ class mail_thread(osv.AbstractModel):
body = tools.append_content_to_html(u'', body, preserve=True)
else:
alternative = False
mixed = False
html = u''
for part in message.walk():
if part.get_content_type() == 'multipart/alternative':
alternative = True
if part.get_content_type() == 'multipart/mixed':
mixed = True
if part.get_content_maintype() == 'multipart':
continue # skip container
# part.get_filename returns decoded value if able to decode, coded otherwise.
@ -1263,8 +1267,11 @@ class mail_thread(osv.AbstractModel):
encoding, errors='replace'), preserve=True)
# 3) text/html -> raw
elif part.get_content_type() == 'text/html':
# mutlipart/alternative have one text and a html part, keep only the second
# mixed allows several html parts, append html content
append_content = not alternative or (html and mixed)
html = tools.ustr(part.get_payload(decode=True), encoding, errors='replace')
if alternative:
if not append_content:
body = html
else:
body = tools.append_content_to_html(body, html, plaintext=False)

View File

@ -143,6 +143,53 @@ X-Attachment-Id: f_hkpb27k00
dGVzdAo=
--089e01536c4ed4d17204e49b8e96--"""
MAIL_MULTIPART_MIXED_TWO = """X-Original-To: raoul@grosbedon.fr
Delivered-To: raoul@grosbedon.fr
Received: by mail1.grosbedon.com (Postfix, from userid 10002)
id E8166BFACA; Fri, 23 Aug 2013 13:18:01 +0200 (CEST)
From: "Bruce Wayne" <bruce@wayneenterprises.com>
Content-Type: multipart/alternative;
boundary="Apple-Mail=_9331E12B-8BD2-4EC7-B53E-01F3FBEC9227"
Message-Id: <6BB1FAB2-2104-438E-9447-07AE2C8C4A92@sexample.com>
Mime-Version: 1.0 (Mac OS X Mail 7.3 \(1878.6\))
--Apple-Mail=_9331E12B-8BD2-4EC7-B53E-01F3FBEC9227
Content-Transfer-Encoding: 7bit
Content-Type: text/plain;
charset=us-ascii
First and second part
--Apple-Mail=_9331E12B-8BD2-4EC7-B53E-01F3FBEC9227
Content-Type: multipart/mixed;
boundary="Apple-Mail=_CA6C687E-6AA0-411E-B0FE-F0ABB4CFED1F"
--Apple-Mail=_CA6C687E-6AA0-411E-B0FE-F0ABB4CFED1F
Content-Transfer-Encoding: 7bit
Content-Type: text/html;
charset=us-ascii
<html><head></head><body>First part</body></html>
--Apple-Mail=_CA6C687E-6AA0-411E-B0FE-F0ABB4CFED1F
Content-Disposition: inline;
filename=thetruth.pdf
Content-Type: application/pdf;
name="thetruth.pdf"
Content-Transfer-Encoding: base64
SSBhbSB0aGUgQmF0TWFuCg==
--Apple-Mail=_CA6C687E-6AA0-411E-B0FE-F0ABB4CFED1F
Content-Transfer-Encoding: 7bit
Content-Type: text/html;
charset=us-ascii
<html><head></head><body>Second part</body></html>
--Apple-Mail=_CA6C687E-6AA0-411E-B0FE-F0ABB4CFED1F--
--Apple-Mail=_9331E12B-8BD2-4EC7-B53E-01F3FBEC9227--
"""
class TestMailgateway(TestMail):
@ -164,6 +211,14 @@ class TestMailgateway(TestMail):
self.assertIn('<div dir="ltr">Should create a multipart/mixed: from gmail, <b>bold</b>, with attachment.<br clear="all"><div><br></div>', res.get('body', ''),
'message_parse: html version should be in body after parsing multipart/mixed')
res = self.mail_thread.message_parse(cr, uid, MAIL_MULTIPART_MIXED_TWO)
self.assertNotIn('First and second part', res.get('body', ''),
'message_parse: text version should not be in body after parsing multipart/mixed')
self.assertIn('First part', res.get('body', ''),
'message_parse: first part of the html version should be in body after parsing multipart/mixed')
self.assertIn('Second part', res.get('body', ''),
'message_parse: second part of the html version should be in body after parsing multipart/mixed')
@mute_logger('openerp.addons.mail.mail_thread', 'openerp.models')
def test_10_message_process(self):
""" Testing incoming emails processing. """

View File

@ -120,6 +120,7 @@ instance.web.FormView = instance.web.View.extend(instance.web.form.FieldManagerM
this.is_initialized = $.Deferred();
this.mutating_mutex = new $.Mutex();
this.save_list = [];
this.render_value_defs = [];
this.reload_mutex = new $.Mutex();
this.__clicked_inside = false;
this.__blur_timeout = null;
@ -674,6 +675,7 @@ instance.web.FormView = instance.web.View.extend(instance.web.form.FieldManagerM
} else if (mode === "create") {
mode = "edit";
}
this.render_value_defs = [];
this.set({actual_mode: mode});
},
check_actual_mode: function(source, options) {
@ -724,12 +726,15 @@ instance.web.FormView = instance.web.View.extend(instance.web.form.FieldManagerM
});
},
on_button_cancel: function(event) {
var self = this;
if (this.can_be_discarded()) {
if (this.get('actual_mode') === 'create') {
this.trigger('history_back');
} else {
this.to_view_mode();
this.trigger('load_record', this.datarecord);
$.when.apply(null, this.render_value_defs).then(function(){
self.trigger('load_record', self.datarecord);
});
}
}
this.trigger('on_button_cancel');
@ -2239,7 +2244,7 @@ instance.web.form.ReinitializeWidgetMixin = {
instance.web.form.ReinitializeFieldMixin = _.extend({}, instance.web.form.ReinitializeWidgetMixin, {
reinitialize: function() {
instance.web.form.ReinitializeWidgetMixin.reinitialize.call(this);
this.render_value();
this.view.render_value_defs.push(this.render_value());
},
});
@ -4747,9 +4752,8 @@ instance.web.form.FieldMany2ManyTags = instance.web.form.AbstractField.extend(in
self.render_tag(data);
}
if (! values || values.length > 0) {
this._display_orderer.add(self.get_render_data(values)).done(handle_names);
}
else{
return this._display_orderer.add(self.get_render_data(values)).done(handle_names);
} else {
handle_names([]);
}
},

View File

@ -89,7 +89,7 @@
<ul class="nav nav-pills nav-stacked mt16">
<li class="nav-header"><h3>Location</h3></li>
<t t-foreach="countries" t-as="country">
<li t-if="country['country_id']" t-att-class="country['country_id'][0] == current_country_id and 'active' or ''">
<li t-if="country['country_id']" t-att-class="country['country_id'] and country['country_id'][0] == current_country_id and 'active' or ''">
<a t-attf-href="/members#{ membership and '/association/%s' % membership.id or '' }#{ country['country_id'][0] and '/country/%s' % slug(country['country_id']) or '' }#{ search }"><t t-esc="country['country_id'][1]"/>
<span class="badge pull-right"><t t-esc="country['country_id_count'] or '0'"/></span>
</a>

View File

@ -2,7 +2,7 @@
##############################################################################
#
# OpenERP, Open Source Management Solution
# Copyright (C) 2011-2012 OpenERP S.A (<http://www.openerp.com>)
# Copyright (C) 2011-2014 OpenERP S.A. (<http://www.openerp.com>)
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
@ -24,7 +24,7 @@ from email.mime.base import MIMEBase
from email.mime.multipart import MIMEMultipart
from email.charset import Charset
from email.header import Header
from email.utils import formatdate, make_msgid, COMMASPACE, parseaddr
from email.utils import formatdate, make_msgid, COMMASPACE, getaddresses, formataddr
from email import Encoders
import logging
import re
@ -140,30 +140,15 @@ def encode_rfc2822_address_header(header_text):
``"Name"`` portion by the RFC2047-encoded
version, preserving the address part untouched.
"""
header_text_utf8 = tools.ustr(header_text).encode('utf-8')
header_text_ascii = try_coerce_ascii(header_text_utf8)
if header_text_ascii:
return header_text_ascii
def encode_addr(addr):
name, email = addr
if not try_coerce_ascii(name):
name = str(Header(name, 'utf-8'))
return formataddr((name, email))
name, email = parseaddr(header_text_utf8)
if not name:
return email
addresses = getaddresses([tools.ustr(header_text).encode('utf-8')])
return COMMASPACE.join(map(encode_addr, addresses))
# non-ASCII characters are present, attempt to
# replace all "Name" patterns with the RFC2047-
# encoded version
name_encoded = str(Header(name, 'utf-8'))
header_text_utf8 = "%s <%s>" % (name_encoded, email)
# try again after encoding
header_text_ascii = try_coerce_ascii(header_text_utf8)
if header_text_ascii:
return header_text_ascii
# fallback to extracting pure addresses only, which could
# still cause a failure downstream if the actual addresses
# contain non-ASCII characters
return COMMASPACE.join(extract_rfc2822_addresses(header_text_utf8))
class ir_mail_server(osv.osv):
"""Represents an SMTP server, able to send outgoing emails, with SSL and TLS capabilities."""
_name = "ir.mail_server"

View File

@ -248,7 +248,7 @@ class view(osv.osv):
return values
def create(self, cr, uid, values, context=None):
if 'type' not in values:
if not values.get('type'):
if values.get('inherit_id'):
values['type'] = self.browse(cr, uid, values['inherit_id'], context).type
else:

View File

@ -358,7 +358,7 @@ class res_users(osv.osv):
if not context:
context={}
ids = []
if name:
if name and operator in ['=', 'ilike']:
ids = self.search(cr, user, [('login','=',name)]+ args, limit=limit, context=context)
if not ids:
ids = self.search(cr, user, [('name',operator,name)]+ args, limit=limit, context=context)

View File

@ -579,7 +579,7 @@ def append_content_to_html(html, content, plaintext=True, preserve=False, contai
elif plaintext:
content = '\n%s\n' % plaintext2html(content, container_tag)
else:
content = re.sub(r'(?i)(</?html.*>|</?body.*>|<!\W*DOCTYPE.*>)', '', content)
content = re.sub(r'(?i)(</?(?:html|body|head|!\s*DOCTYPE)[^>]*>)', '', content)
content = u'\n%s\n' % ustr(content)
# Force all tags to lowercase
html = re.sub(r'(</?)\W*(\w+)([ >])',