summaryrefslogtreecommitdiff
path: root/addons
diff options
context:
space:
mode:
authorChristophe Simonis <chs@odoo.com>2017-01-02 14:38:59 +0100
committerChristophe Simonis <chs@odoo.com>2017-01-02 14:38:59 +0100
commit81f59cee2cea76fe40cef9913382c0259bf38512 (patch)
tree3ae3b00e8af6c919d6b02d314abbf5909c932fe8 /addons
parentd3538dbe475ebd933be86035b8bbc61a856b032f (diff)
parentb844d938890938629357c6df54ee687a3b52ffbe (diff)
[MERGE] forward port branch saas-11 up to b844d938890
Diffstat (limited to 'addons')
-rw-r--r--addons/account/models/account.py4
-rw-r--r--addons/account/models/account_invoice.py7
-rw-r--r--addons/account/models/account_move.py8
-rw-r--r--addons/account/models/partner.py14
-rw-r--r--addons/account/views/account_view.xml1
-rw-r--r--addons/auth_oauth/models/ir_config_parameter.py2
-rw-r--r--addons/calendar/models/calendar.py8
-rw-r--r--addons/event_sale/models/event.py3
-rw-r--r--addons/google_calendar/models/google_calendar.py4
-rw-r--r--addons/hr_holidays/models/hr_holidays.py4
-rw-r--r--addons/hr_payroll/models/hr_payroll.py10
-rw-r--r--addons/hr_timesheet/project_timesheet.py7
-rw-r--r--addons/l10n_ch/i18n_extra/de.po755
-rw-r--r--addons/l10n_multilang/models/account.py2
-rw-r--r--addons/l10n_multilang/models/l10n_multilang.py8
-rw-r--r--addons/l10n_no/data/account_tax_data.xml16
-rw-r--r--addons/mail/controllers/main.py5
-rw-r--r--addons/mass_mailing/static/src/js/mass_mailing_editor.js2
-rw-r--r--addons/payment_paypal/controllers/main.py6
-rw-r--r--addons/payment_paypal/views/payment_views.xml2
-rw-r--r--addons/point_of_sale/report/pos_order_report.py2
-rw-r--r--addons/portal/wizard/portal_wizard.py2
-rw-r--r--addons/purchase/test/average_price.yml1
-rw-r--r--addons/purchase/test/fifo_price.yml8
-rw-r--r--addons/purchase/test/fifo_returns.yml1
-rw-r--r--addons/sale/models/sale_analytic.py18
-rw-r--r--addons/stock/models/stock_inventory.py10
-rw-r--r--addons/stock/views/stock_location_views.xml4
-rw-r--r--addons/stock_account/models/account_invoice.py14
-rw-r--r--addons/web_editor/static/src/js/widgets.js4
-rw-r--r--addons/website/models/ir_http.py3
-rw-r--r--addons/website/models/website.py1
-rw-r--r--addons/website_blog/views/website_blog_views.xml1
-rw-r--r--addons/website_sale/models/sale_order.py9
-rw-r--r--addons/website_sale/static/src/js/website_sale.js13
-rw-r--r--addons/website_sale_options/static/src/js/website_sale.js2
36 files changed, 527 insertions, 434 deletions
diff --git a/addons/account/models/account.py b/addons/account/models/account.py
index 648744d1c26..2dd5abcd682 100644
--- a/addons/account/models/account.py
+++ b/addons/account/models/account.py
@@ -588,11 +588,11 @@ class AccountTax(models.Model):
def unlink(self):
company_id = self.env.user.company_id.id
ir_values = self.env['ir.values']
- supplier_taxes_id = set(ir_values.get_default('product.template', 'supplier_taxes_id', company_id=company_id))
+ supplier_taxes_id = set(ir_values.get_default('product.template', 'supplier_taxes_id', company_id=company_id) or [])
deleted_sup_tax = self.filtered(lambda tax: tax.id in supplier_taxes_id)
if deleted_sup_tax:
ir_values.sudo().set_default('product.template', "supplier_taxes_id", list(supplier_taxes_id - set(deleted_sup_tax.ids)), for_all_users=True, company_id=company_id)
- taxes_id = set(self.env['ir.values'].get_default('product.template', 'taxes_id', company_id=company_id))
+ taxes_id = set(self.env['ir.values'].get_default('product.template', 'taxes_id', company_id=company_id) or [])
deleted_tax = self.filtered(lambda tax: tax.id in taxes_id)
if deleted_tax:
ir_values.sudo().set_default('product.template', "taxes_id", list(taxes_id - set(deleted_tax.ids)), for_all_users=True, company_id=company_id)
diff --git a/addons/account/models/account_invoice.py b/addons/account/models/account_invoice.py
index aa6752e15b8..e97a72edbf7 100644
--- a/addons/account/models/account_invoice.py
+++ b/addons/account/models/account_invoice.py
@@ -685,9 +685,10 @@ class AccountInvoice(models.Model):
for line in invoice_move_lines:
if self.currency_id != company_currency:
currency = self.currency_id.with_context(date=self.date_invoice or fields.Date.context_today(self))
- line['currency_id'] = currency.id
- line['amount_currency'] = currency.round(line['price'])
- line['price'] = currency.compute(line['price'], company_currency)
+ if not (line.get('currency_id') and line.get('amount_currency')):
+ line['currency_id'] = currency.id
+ line['amount_currency'] = currency.round(line['price'])
+ line['price'] = currency.compute(line['price'], company_currency)
else:
line['currency_id'] = False
line['amount_currency'] = False
diff --git a/addons/account/models/account_move.py b/addons/account/models/account_move.py
index d6d2829928e..bc5bd350de5 100644
--- a/addons/account/models/account_move.py
+++ b/addons/account/models/account_move.py
@@ -921,6 +921,14 @@ class AccountMoveLine(models.Model):
if 'analytic_account_id' in first_line_dict:
del first_line_dict['analytic_account_id']
if 'tax_ids' in first_line_dict:
+ tax_ids = []
+ #vals['tax_ids'] is a list of commands [[4, tax_id, None], ...]
+ for tax_id in vals['tax_ids']:
+ tax_ids.append(tax_id[1])
+ amount = first_line_dict['credit'] - first_line_dict['debit']
+ amount_tax = self.env['account.tax'].browse(tax_ids).compute_all(amount)['total_included']
+ first_line_dict['credit'] = amount_tax > 0 and amount_tax or 0.0
+ first_line_dict['debit'] = amount_tax < 0 and abs(amount_tax) or 0.0
del first_line_dict['tax_ids']
# Writeoff line in specified writeoff account
diff --git a/addons/account/models/partner.py b/addons/account/models/partner.py
index 9c8e00bd62c..665fc780369 100644
--- a/addons/account/models/partner.py
+++ b/addons/account/models/partner.py
@@ -206,15 +206,17 @@ class ResPartner(models.Model):
def _credit_debit_get(self):
tables, where_clause, where_params = self.env['account.move.line']._query_get()
where_params = [tuple(self.ids)] + where_params
- self._cr.execute("""SELECT l.partner_id, act.type, SUM(l.amount_residual)
- FROM account_move_line l
- LEFT JOIN account_account a ON (l.account_id=a.id)
+ if where_clause:
+ where_clause = 'AND ' + where_clause
+ self._cr.execute("""SELECT account_move_line.partner_id, act.type, SUM(account_move_line.amount_residual)
+ FROM account_move_line
+ LEFT JOIN account_account a ON (account_move_line.account_id=a.id)
LEFT JOIN account_account_type act ON (a.user_type_id=act.id)
WHERE act.type IN ('receivable','payable')
- AND l.partner_id IN %s
- AND l.reconciled IS FALSE
+ AND account_move_line.partner_id IN %s
+ AND account_move_line.reconciled IS FALSE
""" + where_clause + """
- GROUP BY l.partner_id, act.type
+ GROUP BY account_move_line.partner_id, act.type
""", where_params)
for pid, type, val in self._cr.fetchall():
partner = self.browse(pid)
diff --git a/addons/account/views/account_view.xml b/addons/account/views/account_view.xml
index 9d7d4208fe4..54068d5e7d4 100644
--- a/addons/account/views/account_view.xml
+++ b/addons/account/views/account_view.xml
@@ -1343,6 +1343,7 @@
<field name="currency_id" options="{'no_create': True}" groups="base.group_multi_currency"/>
<field name="debit" sum="Total Debit"/>
<field name="credit" sum="Total Credit"/>
+ <field name="date_maturity" required="0"/>
</tree>
</field>
<field name="narration" colspan="4" placeholder="Add an internal note..." nolabel="1" height="50"/>
diff --git a/addons/auth_oauth/models/ir_config_parameter.py b/addons/auth_oauth/models/ir_config_parameter.py
index 0bb07465286..6a302e2b398 100644
--- a/addons/auth_oauth/models/ir_config_parameter.py
+++ b/addons/auth_oauth/models/ir_config_parameter.py
@@ -11,5 +11,7 @@ class IrConfigParameter(models.Model):
super(IrConfigParameter, self).init(force=force)
if force:
oauth_oe = self.env.ref('auth_oauth.provider_openerp')
+ if not oauth_oe:
+ return
dbuuid = self.sudo().get_param('database.uuid')
oauth_oe.write({'client_id': dbuuid})
diff --git a/addons/calendar/models/calendar.py b/addons/calendar/models/calendar.py
index 677e9a35d53..e0303055a30 100644
--- a/addons/calendar/models/calendar.py
+++ b/addons/calendar/models/calendar.py
@@ -552,15 +552,15 @@ class Meeting(models.Model):
def _get_recurrency_end_date(self):
""" Return the last date a recurring event happens, according to its end_type. """
self.ensure_one()
- data = self.read(['final_date', 'recurrency', 'rrule_type', 'count', 'end_type', 'stop'])[0]
+ data = self.read(['final_date', 'recurrency', 'rrule_type', 'count', 'end_type', 'stop', 'interval'])[0]
if not data.get('recurrency'):
return False
end_type = data.get('end_type')
final_date = data.get('final_date')
- if end_type == 'count' and all(data.get(key) for key in ['count', 'rrule_type', 'stop']):
- count = data['count'] + 1
+ if end_type == 'count' and all(data.get(key) for key in ['count', 'rrule_type', 'stop', 'interval']):
+ count = (data['count'] + 1) * data['interval']
delay, mult = {
'daily': ('days', 1),
'weekly': ('days', 7),
@@ -1134,7 +1134,7 @@ class Meeting(models.Model):
data['rrule_type'] = 'monthly'
if rule._bymonthday:
- data['day'] = rule._bymonthday[0]
+ data['day'] = list(rule._bymonthday)[0]
data['month_by'] = 'date'
data['rrule_type'] = 'monthly'
diff --git a/addons/event_sale/models/event.py b/addons/event_sale/models/event.py
index b19dba28977..fdff6bdead8 100644
--- a/addons/event_sale/models/event.py
+++ b/addons/event_sale/models/event.py
@@ -36,7 +36,8 @@ class EventTicket(models.Model):
name = fields.Char(string='Name', required=True, translate=True)
event_id = fields.Many2one('event.event', string="Event", required=True, ondelete='cascade')
product_id = fields.Many2one('product.product', string='Product',
- required=True, domain=[("event_ok", "=", True)], default=_default_product_id)
+ required=True, domain=["|", ("event_type_id", "!=", False), ("event_ok", "=", True)],
+ default=_default_product_id)
registration_ids = fields.One2many('event.registration', 'event_ticket_id', string='Registrations')
price = fields.Float(string='Price', digits=dp.get_precision('Product Price'))
deadline = fields.Date(string="Sales End")
diff --git a/addons/google_calendar/models/google_calendar.py b/addons/google_calendar/models/google_calendar.py
index 9b50835e6cf..965479ef2d6 100644
--- a/addons/google_calendar/models/google_calendar.py
+++ b/addons/google_calendar/models/google_calendar.py
@@ -194,8 +194,8 @@ class GoogleCalendar(models.AbstractModel):
def generate_data(self, event, isCreating=False):
if event.allday:
- start_date = fields.Datetime.context_timestamp(self, fields.Datetime.from_string(event.start)).isoformat('T').split('T')[0]
- final_date = fields.Datetime.context_timestamp(self, fields.Datetime.from_string(event.stop) + timedelta(days=1)).isoformat('T').split('T')[0]
+ start_date = event.start_date
+ final_date = (datetime.strptime(event.stop_date, tools.DEFAULT_SERVER_DATE_FORMAT) + timedelta(days=1)).strftime(tools.DEFAULT_SERVER_DATE_FORMAT)
type = 'date'
vstype = 'dateTime'
else:
diff --git a/addons/hr_holidays/models/hr_holidays.py b/addons/hr_holidays/models/hr_holidays.py
index 50a61c3a39a..75bde39430c 100644
--- a/addons/hr_holidays/models/hr_holidays.py
+++ b/addons/hr_holidays/models/hr_holidays.py
@@ -10,6 +10,7 @@ from werkzeug import url_encode
from odoo import api, fields, models
from odoo.exceptions import UserError, AccessError, ValidationError
+from openerp.tools import float_compare
from odoo.tools.translate import _
_logger = logging.getLogger(__name__)
@@ -249,7 +250,8 @@ class Holidays(models.Model):
if holiday.holiday_type != 'employee' or holiday.type != 'remove' or not holiday.employee_id or holiday.holiday_status_id.limit:
continue
leave_days = holiday.holiday_status_id.get_days(holiday.employee_id.id)[holiday.holiday_status_id.id]
- if leave_days['remaining_leaves'] < 0 or leave_days['virtual_remaining_leaves'] < 0:
+ if float_compare(leave_days['remaining_leaves'], 0, precision_digits=2) == -1 or \
+ float_compare(leave_days['virtual_remaining_leaves'], 0, precision_digits=2) == -1:
raise ValidationError(_('The number of remaining leaves is not sufficient for this leave type.\n'
'Please verify also the leaves waiting for validation.'))
diff --git a/addons/hr_payroll/models/hr_payroll.py b/addons/hr_payroll/models/hr_payroll.py
index b14fe6274a5..f104c46de04 100644
--- a/addons/hr_payroll/models/hr_payroll.py
+++ b/addons/hr_payroll/models/hr_payroll.py
@@ -5,6 +5,8 @@ import time
from datetime import datetime, timedelta
from dateutil import relativedelta
+import babel
+
from odoo import api, fields, models, tools, _
from odoo.exceptions import UserError, ValidationError
from odoo.tools.safe_eval import safe_eval
@@ -545,9 +547,10 @@ class HrPayslip(models.Model):
return res
ttyme = datetime.fromtimestamp(time.mktime(time.strptime(date_from, "%Y-%m-%d")))
employee = self.env['hr.employee'].browse(employee_id)
+ locale = self.env.context.get('lang', 'en_US')
res['value'].update({
- 'name': _('Salary Slip of %s for %s') % (employee.name, tools.ustr(ttyme.strftime('%B-%Y'))),
- 'company_id': employee.company_id.id
+ 'name': _('Salary Slip of %s for %s') % (employee.name, tools.ustr(babel.dates.format_date(date=ttyme, format='MMMM-y', locale=locale))),
+ 'company_id': employee.company_id.id,
})
if not self.env.context.get('contract'):
@@ -593,7 +596,8 @@ class HrPayslip(models.Model):
date_to = self.date_to
ttyme = datetime.fromtimestamp(time.mktime(time.strptime(date_from, "%Y-%m-%d")))
- self.name = _('Salary Slip of %s for %s') % (employee.name, tools.ustr(ttyme.strftime('%B-%Y')))
+ locale = self.env.context.get('lang', 'en_US')
+ self.name = _('Salary Slip of %s for %s') % (employee.name, tools.ustr(babel.dates.format_date(date=ttyme, format='MMMM-y', locale=locale)))
self.company_id = employee.company_id
if not self.env.context.get('contract') or not self.contract_id:
diff --git a/addons/hr_timesheet/project_timesheet.py b/addons/hr_timesheet/project_timesheet.py
index c8fce98c952..3b067c4d024 100644
--- a/addons/hr_timesheet/project_timesheet.py
+++ b/addons/hr_timesheet/project_timesheet.py
@@ -21,12 +21,11 @@ class Task(models.Model):
task.subtask_count = self.search_count([('id', 'child_of', task.id), ('id', '!=', task.id)])
@api.depends('timesheet_ids.unit_amount', 'planned_hours', 'child_ids.stage_id',
- 'child_ids.planned_hours', 'child_ids.effective_hours', 'child_ids.children_hours')
+ 'child_ids.planned_hours', 'child_ids.effective_hours', 'child_ids.children_hours', 'child_ids.timesheet_ids.unit_amount')
def _hours_get(self):
- for task in self:
-
+ for task in self.sorted(key='id', reverse=True):
for child_task in task.child_ids:
- if child_task.stage_id and child_task.stage_id.fold:
+ if child_task.stage_id and not child_task.stage_id.fold:
task.children_hours += child_task.effective_hours + child_task.children_hours
else:
task.children_hours += max(child_task.planned_hours, child_task.effective_hours + child_task.children_hours)
diff --git a/addons/l10n_ch/i18n_extra/de.po b/addons/l10n_ch/i18n_extra/de.po
index 8e237552541..1562904d951 100644
--- a/addons/l10n_ch/i18n_extra/de.po
+++ b/addons/l10n_ch/i18n_extra/de.po
@@ -1,109 +1,151 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
-# * l10n_ch
+# * l10n_ch
#
msgid ""
msgstr ""
-"Project-Id-Version: Odoo Server 8.0\n"
+"Project-Id-Version: Odoo Server 9.0c\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2014-12-02 09:39+0000\n"
-"PO-Revision-Date: 2014-12-02 09:39+0000\n"
+"POT-Creation-Date: 2016-12-14 14:10+0000\n"
+"PO-Revision-Date: 2016-12-15 14:35+0100\n"
"Last-Translator: <>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: \n"
+"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: \n"
+"Language: de\n"
+"X-Generator: Poedit 1.8.7.1\n"
#. module: l10n_ch
-#: model:account.account.template,name:l10n_ch.ch_coa_1
-msgid "ACTIF"
-msgstr "AKTIVEN"
+#: model:account.tax.template,description:l10n_ch.vat_O_exclude
+msgid "0% excl."
+msgstr "0% Exkl."
#. module: l10n_ch
-#: model:account.account.template,name:l10n_ch.ch_coa_10
-msgid "ACTIF CIRCULANT"
-msgstr "UMLAUFVERMÖGEN"
+#: model:account.tax.template,description:l10n_ch.vat_O_import
+msgid "0% import."
+msgstr "0% Import."
#. module: l10n_ch
-#: model:account.account.template,name:l10n_ch.ch_coa_14
-msgid "ACTIF IMMOBILISE"
-msgstr "ANLAGEVERMÖGEN"
+#: model:account.tax.template,name:l10n_ch.vat_100_import
+msgid "100% dédouanement TVA"
+msgstr "100% Verzollung MwSt."
#. module: l10n_ch
-#: model:account.account.template,name:l10n_ch.ch_coa_6
-msgid "AUTRES CHARGES D‘EXPLOITATION, AMORTISSEMENTS ET AJUSTEMENT DE VALEUR, RÉSULTAT FINANCIER"
-msgstr "ÜBRIGER BETRIEBLICHER AUFWAND, ABSCHREIBUNGEN UND WERTBERICHTIGUNGEN SOWIE FINANZERGEBNIS"
+#: model:account.tax.template,description:l10n_ch.vat_100_import
+msgid "100% imp."
+msgstr "100% Imp."
#. module: l10n_ch
-#: model:account.account.template,name:l10n_ch.ch_coa_4200
-msgid "Achats de marchandises destinées à la revente"
-msgstr "Handelswarenaufwand"
+#: model:account.tax.template,description:l10n_ch.vat_25
+msgid "2.5%"
+msgstr "2.5%"
#. module: l10n_ch
-#: model:account.account.template,name:l10n_ch.ch_coa_2030
-msgid "Acomptes de clients"
-msgstr "Erhaltene Anzahlungen"
+#: model:account.tax.template,description:l10n_ch.vat_25_incl
+msgid "2.5% Incl."
+msgstr "2.5% Inkl."
#. module: l10n_ch
-#: model:account.tax.code.template,name:l10n_ch.vat_code_receivable_net
-msgid "Acquisition - total"
-msgstr "Einkauf - Gesamtbetrag"
+#: model:account.tax.template,description:l10n_ch.vat_25_purchase
+msgid "2.5% achat"
+msgstr "2.5% Einkauf"
#. module: l10n_ch
-#: model:account.tax.code.template,name:l10n_ch.vat_code_receivable_base_invest
-msgid "Acquisition de biens d'invest. et autres charges"
-msgstr "Kauf von Investitionsgütern und sonstiger Aufwand"
+#: model:account.tax.template,description:l10n_ch.vat_25_purchase_incl
+msgid "2.5% achat Incl."
+msgstr "2.5% Einkauf Inkl."
#. module: l10n_ch
-#: model:account.tax.code.template,name:l10n_ch.vat_code_receivable_base_invest25
-msgid "Acquisition de biens d'invest. et autres charges a 2.5% (TR)"
-msgstr "Kauf von Investitionsgütern und sonstiger Aufwand bei 2,5% (USt)"
+#: model:account.tax.template,description:l10n_ch.vat_25_invest
+msgid "2.5% invest."
+msgstr "2.5% Invest."
#. module: l10n_ch
-#: model:account.tax.code.template,name:l10n_ch.vat_code_receivable_base_invest38
-msgid "Acquisition de biens d'invest. et autres charges a 3.8% (TS)"
-msgstr "Kauf von Investitionsgütern und sonstiger Aufwand bei 3,8% (LSt)"
+#: model:account.tax.template,description:l10n_ch.vat_25_invest_incl
+msgid "2.5% invest. Incl."
+msgstr "2.5% Invest. Incl."
#. module: l10n_ch
-#: model:account.tax.code.template,name:l10n_ch.vat_code_receivable_base_invest80
-msgid "Acquisition de biens d'invest. et autres charges a 8.0% (TN)"
-msgstr "Kauf von Investitionsgütern und sonstiger Aufwand bei 8,0% (NRZ)"
+#: model:account.tax.template,description:l10n_ch.vat_38
+msgid "3.8%"
+msgstr "3.8%"
#. module: l10n_ch
-#: model:account.tax.code.template,name:l10n_ch.vat_code_receivable_base
-msgid "Acquisition de biens et services"
-msgstr "Einkauf von Gütern und Dienstleistungen"
+#: model:account.tax.template,description:l10n_ch.vat_38_incl
+msgid "3.8% Incl."
+msgstr "3.8% Inkl."
#. module: l10n_ch
-#: model:account.tax.code.template,name:l10n_ch.vat_code_receivable_base_0
-msgid "Acquisition de biens et services a 0%"
-msgstr "Einkauf von Gütern und Dienstleistungen bei 0%"
+#: model:account.tax.template,description:l10n_ch.vat_38_purchase
+msgid "3.8% achat"
+msgstr "3.8% Einkauf"
#. module: l10n_ch
-#: model:account.tax.code.template,name:l10n_ch.vat_code_receivable_base_25
-msgid "Acquisition de biens et services a 2.5% (TR)"
-msgstr "Einkauf von Gütern und Dienstleistungen bei 2,5% (Ust)"
+#: model:account.tax.template,description:l10n_ch.vat_38_purchase_incl
+msgid "3.8% achat Incl."
+msgstr "3.8% Einkauf Inkl."
#. module: l10n_ch
-#: model:account.tax.code.template,name:l10n_ch.vat_code_receivable_base_38
-msgid "Acquisition de biens et services a 3.8% (TS)"
-msgstr "Einkauf von Gütern und Dienstleistungen bei 3,8% (LSt)"
+#: model:account.tax.template,description:l10n_ch.vat_38_invest
+msgid "3.8% invest"
+msgstr "3.8% Invest"
#. module: l10n_ch
-#: model:account.tax.code.template,name:l10n_ch.vat_code_receivable_base_80
-msgid "Acquisition de biens et services a 8.0% (TN)"
-msgstr "Einkauf von Gütern und Dienstleistungen bei 8,0% (NRZ)"
+#: model:account.tax.template,description:l10n_ch.vat_38_invest_incl
+msgid "3.8% invest Incl."
+msgstr "3.8% Invest Incl."
#. module: l10n_ch
-#: model:account.account.template,name:l10n_ch.ch_coa_130
-msgid "Actifs de régularisation (transitoires)"
-msgstr "Aktive Rechnungsabgrenzungen"
+#: model:account.tax.template,description:l10n_ch.vat_80
+msgid "8.0%"
+msgstr "8.0%"
#. module: l10n_ch
-#: model:account.account.template,name:l10n_ch.ch_coa_106
-msgid "Actifs à court terme cotés en bourse"
-msgstr "Kurzfristig gehaltene Aktiven mit Börsenkurs"
+#: model:account.tax.template,description:l10n_ch.vat_80_incl
+msgid "8.0% Incl."
+msgstr "8.0% Inkl."
+
+#. module: l10n_ch
+#: model:account.tax.template,description:l10n_ch.vat_80_purchase
+msgid "8.0% achat"
+msgstr "8.0% Einkauf"
+
+#. module: l10n_ch
+#: model:account.tax.template,description:l10n_ch.vat_80_purchase_incl
+msgid "8.0% achat Incl."
+msgstr "8.0% Einkauf Inkl."
+
+#. module: l10n_ch
+#: model:account.tax.template,description:l10n_ch.vat_80_invest
+msgid "8.0% invest."
+msgstr "8.0% Invest."
+
+#. module: l10n_ch
+#: model:account.tax.template,description:l10n_ch.vat_80_invest_incl
+msgid "8.0% invest. Incl."
+msgstr "8.0% Invest. Inkl."
+
+#. module: l10n_ch
+#: model:account.account.template,name:l10n_ch.ch_coa_4200
+msgid "Achats de marchandises destinées à la revente"
+msgstr "Handelswarenaufwand"
+
+#. module: l10n_ch
+#: model:account.account.template,name:l10n_ch.ch_coa_2030
+msgid "Acomptes de clients"
+msgstr "Erhaltene Anzahlungen"
+
+#. module: l10n_ch
+#: model:account.account.template,name:l10n_ch.ch_coa_1208
+msgid "Acomptes sur les marchandises commerciales"
+msgstr ""
+
+#. module: l10n_ch
+#: model:account.account.template,name:l10n_ch.ch_coa_1218
+msgid "Acomptes sur matières premières"
+msgstr ""
#. module: l10n_ch
#: model:account.account.template,name:l10n_ch.ch_coa_1149
@@ -111,11 +153,6 @@ msgid "Ajustement de la valeur des avances et des prêts"
msgstr "Wertberichtigungen Vorschüsse und Darlehen"
#. module: l10n_ch
-#: model:account.account.template,name:l10n_ch.ch_coa_1709
-msgid "Ajustement de la valeur des brevets, know-how, licences, droits, dév."
-msgstr "Wertberichtigungen Patente, Know-how, Lizenzen, Rechte, Entwicklungen"
-
-#. module: l10n_ch
#: model:account.account.template,name:l10n_ch.ch_coa_1199
msgid "Ajustement de la valeur des créances à court terme"
msgstr "Wertberichtigungen sonstige kurzfristige Forderungen"
@@ -131,26 +168,6 @@ msgid "Ajustement de la valeur des goodwill"
msgstr "Wertberichtigungen Goodwill"
#. module: l10n_ch
-#: model:account.account.template,name:l10n_ch.ch_coa_1609
-msgid "Ajustement de la valeur des immeubles d’exploitation"
-msgstr "Wertberichtigungen Geschäftsliegenschaften"
-
-#. module: l10n_ch
-#: model:account.account.template,name:l10n_ch.ch_coa_1529
-msgid "Ajustement de la valeur des machines de bureau, inf. et syst. comm."
-msgstr "Wertberichtigungen Büromaschinen, Informatik, Kommunikationstechnologie"
-
-#. module: l10n_ch
-#: model:account.account.template,name:l10n_ch.ch_coa_1509
-msgid "Ajustement de la valeur des machines et appareils"
-msgstr "Wertberichtigungen Maschinen und Apparate"
-
-#. module: l10n_ch
-#: model:account.account.template,name:l10n_ch.ch_coa_1549
-msgid "Ajustement de la valeur des outillages et appareils"
-msgstr "Wertberichtigungen Werkzeuge und Geräte"
-
-#. module: l10n_ch
#: model:account.account.template,name:l10n_ch.ch_coa_1489
msgid "Ajustement de la valeur des participations"
msgstr "Wertberichtigungen Beteiligungen"
@@ -162,20 +179,59 @@ msgid "Ajustement de la valeur des titres"
msgstr "Wertberichtigungen Wertschriften"
#. module: l10n_ch
-#: model:account.account.template,name:l10n_ch.ch_coa_1539
-msgid "Ajustement de la valeur des véhicules"
-msgstr "Wertberichtigungen Fahrzeuge"
+#: model:account.account.template,name:l10n_ch.ch_coa_6800
+msgid "Amortissements et ajustements de valeur des postes sur immobilisations corporelles"
+msgstr "Abschreibungen und Wertberichtigungen auf Positionen des Anlagevermögens"
#. module: l10n_ch
#: model:account.account.template,name:l10n_ch.ch_coa_1519
-msgid "Ajustement de la valeur du mobilier et des installations"
-msgstr "Wertberichtigungen Mobiliar und Einrichtungen"
+msgid "Amortissements sur le mobilier et les installations"
+msgstr "Abschreibungen auf Mobiliar und Einrichtungen"
#. module: l10n_ch
-#: model:account.account.template,name:l10n_ch.ch_coa_68
-#: model:account.account.template,name:l10n_ch.ch_coa_6800
-msgid "Amortissements et ajustements de valeur des postes sur immobilisations corporelles"
-msgstr "Abschreibungen und Wertberichtigungen auf Positionen des Anlagevermögens"
+#: model:account.account.template,name:l10n_ch.ch_coa_1599
+msgid "Amortissements sur les autres immobilisations corporelles meubles"
+msgstr ""
+
+#. module: l10n_ch
+#: model:account.account.template,name:l10n_ch.ch_coa_1709
+msgid "Amortissements sur les brevets, know-how, licences, droits, dév."
+msgstr "Abschreibungen auf Patente, Know-how, Lizenzen, Rechte, Entwicklungen"
+
+#. module: l10n_ch
+#: model:account.account.template,name:l10n_ch.ch_coa_1609
+msgid "Amortissements sur les immeubles d’exploitation"
+msgstr "Abschreibungen auf Geschäftsliegenschaften"
+
+#. module: l10n_ch
+#: model:account.account.template,name:l10n_ch.ch_coa_1559
+msgid "Amortissements sur les installations de stockage"
+msgstr ""
+
+#. module: l10n_ch
+#: model:account.account.template,name:l10n_ch.ch_coa_1529
+msgid "Amortissements sur les machines de bureau, inf. et syst. comm."
+msgstr "Abschreibungen auf Büromaschinen, Informatik, Kommunikationstechnologie"
+
+#. module: l10n_ch
+#: model:account.account.template,name:l10n_ch.ch_coa_1509
+msgid "Amortissements sur les machines et appareils"
+msgstr "Abschreibungen auf Maschinen und Apparate"
+
+#. module: l10n_ch
+#: model:account.account.template,name:l10n_ch.ch_coa_1549
+msgid "Amortissements sur les outillages et appareils"
+msgstr "Abschreibungen auf Werkzeuge und Geräte"
+
+#. module: l10n_ch
+#: model:account.account.template,name:l10n_ch.ch_coa_1539
+msgid "Amortissements sur les véhicules"
+msgstr "Abschreibungen auf Fahrzeuge"
+
+#. module: l10n_ch
+#: model:account.account.template,name:l10n_ch.ch_coa_1579
+msgid "Amortissements sur les équipements et installations"
+msgstr ""
#. module: l10n_ch
#: model:account.account.template,name:l10n_ch.ch_coa_2270
@@ -193,19 +249,16 @@ msgid "Autres charges du personnel"
msgstr "Übriger Personalaufwand"
#. module: l10n_ch
-#: model:account.account.template,name:l10n_ch.ch_coa_60
#: model:account.account.template,name:l10n_ch.ch_coa_6700
msgid "Autres charges d‘exploitation"
msgstr "Übriger betrieblicher Aufwand"
#. module: l10n_ch
-#: model:account.account.template,name:l10n_ch.ch_coa_114
#: model:account.account.template,name:l10n_ch.ch_coa_1190
msgid "Autres créances à court terme"
msgstr "Übrige kurzfristige Forderungen"
#. module: l10n_ch
-#: model:account.account.template,name:l10n_ch.ch_coa_220
#: model:account.account.template,name:l10n_ch.ch_coa_2210
msgid "Autres dettes à court terme"
msgstr "Übrige kurzfristige Verbindlichkeiten"
@@ -216,12 +269,16 @@ msgid "Autres dettes à court terme rémunérées"
msgstr "Übrige verzinsliche Verbindlichkeiten"
#. module: l10n_ch
-#: model:account.account.template,name:l10n_ch.ch_coa_250
#: model:account.account.template,name:l10n_ch.ch_coa_2500
msgid "Autres dettes à long terme"
msgstr "Übrige langfristige Verbindlichkeiten"
#. module: l10n_ch
+#: model:account.account.template,name:l10n_ch.ch_coa_1590
+msgid "Autres immobilisations corporelles meubles"
+msgstr "Autres immobilisations corporelles meubles"
+
+#. module: l10n_ch
#: model:account.account.template,name:l10n_ch.ch_coa_3600
msgid "Autres ventes et prestations de services"
msgstr "Übrige Erlöse aus Lieferungen und Leistungen"
@@ -232,26 +289,6 @@ msgid "Avances et prêts"
msgstr "Vorschüsse und Darlehen"
#. module: l10n_ch
-#: model:account.account.template,name:l10n_ch.ch_coa_B
-msgid "BILAN"
-msgstr "BILANZ"
-
-#. module: l10n_ch
-#: model:account.account.template,name:l10n_ch.ch_coa_1020
-msgid "Banque"
-msgstr "Bankguthaben"
-
-#. module: l10n_ch
-#: model:account.account.template,name:l10n_ch.ch_coa_1021
-msgid "Banque EUR"
-msgstr "Bankguthaben EUR"
-
-#. module: l10n_ch
-#: model:account.tax.code.template,name:l10n_ch.vat_code_base_net
-msgid "Base de calcul de TVA"
-msgstr "Berechnungsgrundlage der MwSt."
-
-#. module: l10n_ch
#: model:account.account.template,name:l10n_ch.ch_coa_1700
msgid "Brevets, know-how, licences, droits, développement"
msgstr "Patente, Know-how, Lizenzen, Rechte, Entwicklungen"
@@ -267,56 +304,21 @@ msgid "Bénéfice / perte reporté"
msgstr "Gewinnvortrag oder Verlustvortrag"
#. module: l10n_ch
-#: model:account.account.template,name:l10n_ch.ch_coa_28
-msgid "CAPITAUX PROPRES"
-msgstr "EIGENKAPITAL"
-
-#. module: l10n_ch
-#: model:account.account.template,name:l10n_ch.ch_coa_4
-msgid "CHARGES DE MATERIEL, DE MARCHANDISES ET DE PRESTATIONS DE TIERS"
-msgstr "AUFWAND FÜR MATERIAL, HANDELSWAREN, DIENSTLEISTUNGEN UND ENERGIE"
-
-#. module: l10n_ch
-#: model:account.account.template,name:l10n_ch.ch_coa_5
-msgid "CHARGES DE PERSONNEL"
-msgstr "PERSONALAUFWAND"
-
-#. module: l10n_ch
-#: model:account.account.template,name:l10n_ch.ch_coa_3
-msgid "CHIFFRE D’AFFAIRES RESULTANT DES VENTES ET DES PRESTATIONS DE SERVICES"
-msgstr "BETRIEBLICHER ERTRAG AUS LIEFERUNGEN UND LEISTUNGEN"
-
-#. module: l10n_ch
-#: model:account.account.template,name:l10n_ch.ch_coa_R
-msgid "COMPTE DE RESULTAT"
-msgstr "GEWINN- UND VERLUSTRECHNUNG"
-
-#. module: l10n_ch
-#: model:account.account.template,name:l10n_ch.ch_coa_1000
-msgid "Caisse"
-msgstr "Kasse"
-
-#. module: l10n_ch
#: model:account.account.template,name:l10n_ch.ch_coa_1850
msgid "Capital actions, capital social, droits de participations ou capital de fondation non versés"
msgstr "Nicht einbezahltes Aktien-, Stamm-, Anteilschein- oder"
#. module: l10n_ch
-#: model:account.account.template,name:l10n_ch.ch_coa_180
-msgid "Capital non versé : capital social, capital de fondation"
-msgstr "Nicht einbezahltes Grund-, Gesellschafter- oder Stiftungs­ apital"
-
-#. module: l10n_ch
-#: model:account.account.template,name:l10n_ch.ch_coa_280
-msgid "Capital social ou capital de fondation"
-msgstr "Grund-, Gesellschafter- oder Stiftungskapital"
-
-#. module: l10n_ch
#: model:account.account.template,name:l10n_ch.ch_coa_2800
msgid "Capital-actions, capital social, capital de fondation"
msgstr "Aktien-, Stamm-, Anteilschein- oder Stiftungskapital"
#. module: l10n_ch
+#: model:account.account.template,name:l10n_ch.ch_coa_4521
+msgid "Charbon, briquettes, bois"
+msgstr ""
+
+#. module: l10n_ch
#: model:account.account.template,name:l10n_ch.ch_coa_7010
msgid "Charges accessoires"
msgstr "Aufwand Nebenbetrieb"
@@ -352,11 +354,6 @@ msgid "Charges d‘administration"
msgstr "Verwaltungsaufwand"
#. module: l10n_ch
-#: model:account.account.template,name:l10n_ch.ch_coa_4500
-msgid "Charges d‘énergie pour l‘exploitation"
-msgstr "Energieaufwand zur Leistungserstellung"
-
-#. module: l10n_ch
#: model:account.account.template,name:l10n_ch.ch_coa_6400
msgid "Charges d’énergie et évacuation des déchets"
msgstr "Energie- und Entsorgungsaufwand"
@@ -397,49 +394,54 @@ msgid "Charges à payer"
msgstr "Noch nicht bezahlter Aufwand"
#. module: l10n_ch
-#: model:account.account.template,name:l10n_ch.ch_coa_30
-msgid "Chiffre d'affaires"
-msgstr "Umsatz"
+#: model:account.account.template,name:l10n_ch.ch_coa_3803
+msgid "Commissions de tiers"
+msgstr ""
#. module: l10n_ch
-#: model:account.tax.code.template,name:l10n_ch.vat_code_base_ca_total
-msgid "Chiffre d'affaires - total"
-msgstr "Bruttoumsatz - Gesamtbetrag"
+#: model:account.account.template,name:l10n_ch.ch_coa_4903
+msgid "Commissions obtenues sur achats"
+msgstr ""
#. module: l10n_ch
-#: model:account.tax.code.template,name:l10n_ch.vat_code_base_due
-msgid "Chiffre d'affaires imposable"
-msgstr "Zu versteuernder Umsatz"
+#: model:account.account.template,name:l10n_ch.ch_coa_1099
+msgid "Compte d'attente autre"
+msgstr ""
#. module: l10n_ch
-#: model:account.tax.code.template,name:l10n_ch.vat_code_due_0
-msgid "Chiffre d'affaires imposable a 0% (export)"
-msgstr "Zu versteuernder Umsatz bei 0% (Export)"
+#: model:account.account.template,name:l10n_ch.ch_coa_1091
+msgid "Compte d'attente pour salaires"
+msgstr ""
#. module: l10n_ch
-#: model:account.tax.code.template,name:l10n_ch.vat_code_due_25
-msgid "Chiffre d'affaires imposable a 2.5% (TR)"
-msgstr "Zu versteuernder Umsatz bei 2,5% (USt)"
+#: model:account.account.template,name:l10n_ch.ch_coa_3710
+msgid "Consommations propres"
+msgstr "Eigenverbrauch"
#. module: l10n_ch
-#: model:account.tax.code.template,name:l10n_ch.vat_code_due_38
-msgid "Chiffre d'affaires imposable a 3.8% (TS)"
-msgstr "Zu versteuernder Umsatz bei 3,8% (LSt)"
+#: model:account.account.template,name:l10n_ch.ch_coa_1269
+msgid "Correction de la valeur de stocks de produits finis"
+msgstr ""
#. module: l10n_ch
-#: model:account.tax.code.template,name:l10n_ch.vat_code_due_80
-msgid "Chiffre d'affaires imposable a 8.0% (TN)"
-msgstr "Zu versteuernder Umsatz bei 8,0% (NRZ)"
+#: model:account.account.template,name:l10n_ch.ch_coa_1279
+msgid "Corrections de la valeur des stock produits semi-ouvrés"
+msgstr ""
#. module: l10n_ch
-#: model:account.tax.code.template,name:l10n_ch.vat_code_due_0_exclu
-msgid "Chiffre d'affaires non-imposable a 0% (exclu)"
-msgstr "Zu versteuernder Umsatz bei 0% (ausgeschlossen)"
+#: model:account.account.template,name:l10n_ch.ch_coa_1209
+msgid "Corrections de la valeur des stocks de marchandises"
+msgstr ""
#. module: l10n_ch
-#: model:account.account.template,name:l10n_ch.ch_coa_3710
-msgid "Consommations propres"
-msgstr "Eigenverbrauch"
+#: model:account.account.template,name:l10n_ch.ch_coa_1289
+msgid "Corrections de la valeur des travaux en cours"
+msgstr ""
+
+#. module: l10n_ch
+#: model:account.account.template,name:l10n_ch.ch_coa_1219
+msgid "Corrections de la valeur sur matières premières"
+msgstr ""
#. module: l10n_ch
#: model:account.account.template,name:l10n_ch.ch_coa_1180
@@ -447,45 +449,26 @@ msgid "Créances envers les assurances sociales et institutions de prévoyance"
msgstr "Forderungen gegenüber Sozialversicherungen und Vorsorgeeinrichtungen"
#. module: l10n_ch
-#: model:account.account.template,name:l10n_ch.ch_coa_110
-msgid "Créances résultant de livraisons et prestations"
-msgstr "Forderungen aus Lieferungen und Leistungen"
-
-#. module: l10n_ch
#: model:account.account.template,name:l10n_ch.ch_coa_2000
msgid "Créanciers"
msgstr "Verbindlichkeiten aus Lieferungen und Leistungen (Kreditoren)"
#. module: l10n_ch
-#: model:account.account.template,name:l10n_ch.ch_coa_20
-msgid "DETTE A COURT TERME"
-msgstr "KURZFRISTIGES FREMDKAPITAL"
-
-#. module: l10n_ch
-#: model:account.account.template,name:l10n_ch.ch_coa_24
-msgid "DETTE A LONG TERME"
-msgstr "LANGFRISTIGES FREMDKAPITAL"
-
-#. module: l10n_ch
#: model:account.account.template,name:l10n_ch.ch_coa_2100
#: model:account.account.template,name:l10n_ch.ch_coa_2400
msgid "Dettes bancaires"
msgstr "Bankverbindlichkeiten"
#. module: l10n_ch
-#: model:account.account.template,name:l10n_ch.ch_coa_210
-msgid "Dettes à court terme rémunérés"
-msgstr "Kurzfristige verzinsliche Verbindlichkeiten"
-
-#. module: l10n_ch
-#: model:account.account.template,name:l10n_ch.ch_coa_200
-msgid "Dettes à court terme résultant d’achats et de prestations de services"
-msgstr "Verbindlichkeiten aus Lieferungen und Leistungen"
+#: model:account.account.template,name:l10n_ch.ch_coa_2160
+msgid "Dettes envers l'actionnaire"
+msgstr ""
#. module: l10n_ch
-#: model:account.account.template,name:l10n_ch.ch_coa_240
-msgid "Dettes à long terme rémunérées"
-msgstr "Langfristige verzinsliche Verbindlichkeiten"
+#: model:account.account.template,name:l10n_ch.ch_coa_3806
+#: model:account.account.template,name:l10n_ch.ch_coa_4906
+msgid "Différences de change"
+msgstr ""
#. module: l10n_ch
#: model:account.account.template,name:l10n_ch.ch_coa_2261
@@ -493,6 +476,11 @@ msgid "Dividendes"
msgstr "Beschlossene Ausschüttungen"
#. module: l10n_ch
+#: model:account.account.template,name:l10n_ch.ch_coa_4071
+msgid "Droits de douanes à l'importation"
+msgstr ""
+
+#. module: l10n_ch
#: model:account.account.template,name:l10n_ch.ch_coa_1109
msgid "Ducroire"
msgstr "Delkredere"
@@ -508,16 +496,26 @@ msgid "Décompte TVA"
msgstr "Abrechnungskonto MWST"
#. module: l10n_ch
-#: model:account.account.template,name:l10n_ch.ch_coa_4900
-msgid "Déductions sur les charges"
-msgstr "Aufwandminderungen"
+#: model:account.account.template,name:l10n_ch.ch_coa_4009
+msgid "Déductions obtenues sur achats"
+msgstr ""
#. module: l10n_ch
-#: model:account.account.template,name:l10n_ch.ch_coa_3800
+#: model:account.account.template,name:l10n_ch.ch_coa_3009
msgid "Déductions sur ventes"
msgstr "Erlösminderungen"
#. module: l10n_ch
+#: model:account.account.template,name:l10n_ch.ch_coa_4540
+msgid "Eau"
+msgstr "Wasser"
+
+#. module: l10n_ch
+#: model:account.account.template,name:l10n_ch.ch_coa_4500
+msgid "Electricité"
+msgstr "Strom"
+
+#. module: l10n_ch
#: model:account.account.template,name:l10n_ch.ch_coa_2450
msgid "Emprunts"
msgstr "Darlehen"
@@ -539,6 +537,47 @@ msgid "Entretien, réparations et remplacement des inst. servant à l’exploita
msgstr "Unterhalt, Reparaturen, Ersatz mobile Sachanlagen"
#. module: l10n_ch
+#: model:account.account.template,name:l10n_ch.ch_coa_1570
+msgid "Equipements et Installations"
+msgstr ""
+
+#. module: l10n_ch
+#: model:account.account.template,name:l10n_ch.ch_coa_3800
+#: model:account.account.template,name:l10n_ch.ch_coa_4900
+msgid "Escomptes"
+msgstr ""
+
+#. module: l10n_ch
+#: model:account.account.template,name:l10n_ch.ch_coa_4530
+msgid "Essence"
+msgstr "Benzin"
+
+#. module: l10n_ch
+#: model:account.account.template,name:l10n_ch.ch_coa_3804
+msgid "Frais d'encaissement"
+msgstr "Frais d'encaissement"
+
+#. module: l10n_ch
+#: model:account.account.template,name:l10n_ch.ch_coa_3807
+msgid "Frais d'expédition"
+msgstr "Frais d'expédition"
+
+#. module: l10n_ch
+#: model:account.account.template,name:l10n_ch.ch_coa_4072
+msgid "Frais de transport à l'achat"
+msgstr "Frais de transport à l'achat"
+
+#. module: l10n_ch
+#: model:account.account.template,name:l10n_ch.ch_coa_4070
+msgid "Frêts à l'achat"
+msgstr ""
+
+#. module: l10n_ch
+#: model:account.account.template,name:l10n_ch.ch_coa_4510
+msgid "Gaz"
+msgstr "Gaz"
+
+#. module: l10n_ch
#: model:account.account.template,name:l10n_ch.ch_coa_1770
msgid "Goodwill"
msgstr "Goodwill"
@@ -555,26 +594,6 @@ msgid "Immeubles d’exploitation"
msgstr "Geschäftsliegenschaften"
#. module: l10n_ch
-#: model:account.account.template,name:l10n_ch.ch_coa_160
-msgid "Immobilisations corporelles immeubles"
-msgstr "Immobile Sachanlagen"
-
-#. module: l10n_ch
-#: model:account.account.template,name:l10n_ch.ch_coa_150
-msgid "Immobilisations corporelles meubles"
-msgstr "Mobile Sachanlagen"
-
-#. module: l10n_ch
-#: model:account.account.template,name:l10n_ch.ch_coa_140
-msgid "Immobilisations financières"
-msgstr "Finanzanlagen"
-
-#. module: l10n_ch
-#: model:account.account.template,name:l10n_ch.ch_coa_170
-msgid "Immobilisations incorporelles"
-msgstr "Immaterielle Werte"
-
-#. module: l10n_ch
#: model:account.fiscal.position.template,name:l10n_ch.fiscal_position_template_import
msgid "Import/Export"
msgstr "Import/Export"
@@ -607,12 +626,16 @@ msgstr "Quellensteuer"
#. module: l10n_ch
#: model:account.account.template,name:l10n_ch.ch_coa_2208
-#: model:account.account.template,name:l10n_ch.ch_coa_89
#: model:account.account.template,name:l10n_ch.ch_coa_8900
msgid "Impôts directs"
msgstr "Direkte Steuern"
#. module: l10n_ch
+#: model:account.account.template,name:l10n_ch.ch_coa_1550
+msgid "Installations de stockage"
+msgstr "Installations de stockage"
+
+#. module: l10n_ch
#: model:account.account.template,name:l10n_ch.ch_coa_6260
msgid "Leasing et location de véhicules"
msgstr "Fahrzeugleasing und -mieten"
@@ -658,47 +681,51 @@ msgid "Matières premières"
msgstr "Rohstoffe"
#. module: l10n_ch
+#: model:account.account.template,name:l10n_ch.ch_coa_4520
+msgid "Mazout"
+msgstr "Heizöl"
+
+#. module: l10n_ch
#: model:account.account.template,name:l10n_ch.ch_coa_1510
msgid "Mobilier et installations"
msgstr "Mobiliar und Einrichtungen"
#. module: l10n_ch
+#: model:ir.actions.client,name:l10n_ch.action_client_l10n_ch_menu
+msgid "Open Account Dashboard Menu"
+msgstr " Buchführungsübersicht öffnen"
+
+#. module: l10n_ch
#: model:account.account.template,name:l10n_ch.ch_coa_1540
msgid "Outillages et appareils"
msgstr "Werkzeuge und Geräte"
#. module: l10n_ch
-#: model:account.account.template,name:l10n_ch.ch_coa_2
-msgid "PASSIF"
-msgstr "PASSIVEN"
-
-#. module: l10n_ch
-#: model:account.account.template,name:l10n_ch.ch_coa_148
#: model:account.account.template,name:l10n_ch.ch_coa_1480
msgid "Participations"
msgstr "Beteiligungen"
#. module: l10n_ch
-#: model:account.account.template,name:l10n_ch.ch_coa_230
-msgid "Passifs de régularisation (transitoires) et provisions à court terme"
-msgstr "Passive Rechnungsabgrenzungen und kurzfristige Rückstellungen"
+#: model:account.account.template,name:l10n_ch.ch_coa_4086
+msgid "Pertes de matières"
+msgstr ""
#. module: l10n_ch
#: model:account.account.template,name:l10n_ch.ch_coa_3805
-msgid "Pertes sur clients, variation du ducroire"
+msgid "Pertes sur créances clients, variation ducroire"
msgstr "Verluste Forderungen (Debitoren), Veränderung Delkredere"
#. module: l10n_ch
+#: model:account.chart.template,name:l10n_ch.l10nch_chart_template
+msgid "Plan comptable 2015"
+msgstr "Kontenrahmen 2015"
+
+#. module: l10n_ch
#: model:account.account.template,name:l10n_ch.ch_coa_4400
msgid "Prestations / travaux de tiers"
msgstr "Aufwand für bezogene Dienstleistungen"
#. module: l10n_ch
-#: model:account.account.template,name:l10n_ch.ch_coa_1280
-msgid "Prestations de services non facturées"
-msgstr "Nicht fakturierte Dienstleistungen"
-
-#. module: l10n_ch
#: model:account.account.template,name:l10n_ch.ch_coa_3700
msgid "Prestations propres"
msgstr "Eigenleistungen"
@@ -754,11 +781,6 @@ msgid "Provisions à court terme"
msgstr "Kurzfristige Rückstellungen"
#. module: l10n_ch
-#: model:account.account.template,name:l10n_ch.ch_coa_260
-msgid "Provisions à long termes et provisions légales"
-msgstr "Rückstellungen sowie vom Gesetz vorgesehene ähnliche Positionen"
-
-#. module: l10n_ch
#: model:account.account.template,name:l10n_ch.ch_coa_1440
msgid "Prêts"
msgstr "Darlehen"
@@ -769,19 +791,20 @@ msgid "Publicité"
msgstr "Werbeaufwand"
#. module: l10n_ch
-#: model:account.account.template,name:l10n_ch.ch_coa_7
-msgid "RESULTAT DES ACTIVITES ANNEXES D‘EXPLOITATION"
-msgstr "BETRIEBLICHER NEBENERFOLG"
+#: model:account.account.template,name:l10n_ch.ch_coa_3801
+msgid "Rabais et réduction de prix"
+msgstr ""
#. module: l10n_ch
-#: model:account.account.template,name:l10n_ch.ch_coa_8
-msgid "RESULTATS EXTRAORDINAIRES ET HORS EXPLOITATION"
-msgstr "BETRIEBSFREMDER, AUSSERORDENTLICHER, EINMALIGER ODER PERIODEN-FREMDER AUFWAND UND ERTRAG"
+#: model:account.account.template,name:l10n_ch.ch_coa_4901
+msgid "Rabais et réductions de prix"
+msgstr ""
#. module: l10n_ch
-#: model:account.account.template,name:l10n_ch.ch_coa_290
-msgid "Réserves / bénéfices et pertes"
-msgstr "Reserven und Jahresgewinn oder Jahresverlust"
+#: model:account.account.template,name:l10n_ch.ch_coa_3802
+#: model:account.account.template,name:l10n_ch.ch_coa_4092
+msgid "Ristournes"
+msgstr ""
#. module: l10n_ch
#: model:account.account.template,name:l10n_ch.ch_coa_2940
@@ -804,39 +827,24 @@ msgid "Réserves légales issues du capital"
msgstr "Gesetzliche Kapitalreserve"
#. module: l10n_ch
-#: model:account.account.template,name:l10n_ch.ch_coa_85
-msgid "Résultat extraordinaires"
-msgstr "Ausserordentlichergebnis"
-
-#. module: l10n_ch
-#: model:account.account.template,name:l10n_ch.ch_coa_69
-msgid "Résultat financier"
-msgstr "Finanzergebnis"
-
-#. module: l10n_ch
-#: model:account.account.template,name:l10n_ch.ch_coa_80
-msgid "Résultat hors exploitation"
-msgstr "Betriebsfremdergebnis"
-
-#. module: l10n_ch
#: model:account.account.template,name:l10n_ch.ch_coa_5000
msgid "Salaires"
msgstr "Lohnaufwand"
#. module: l10n_ch
-#: model:account.tax.code.template,name:l10n_ch.vat_code_balance_net
-msgid "Solde de TVA a payer a l'AFC"
-msgstr "An die ESTV zu zahlende MwSt."
-
-#. module: l10n_ch
#: model:account.account.template,name:l10n_ch.ch_coa_1260
msgid "Stocks de produits finis"
msgstr "Fertige Erzeugnisse"
#. module: l10n_ch
-#: model:account.account.template,name:l10n_ch.ch_coa_120
-msgid "Stocks et prestations non facturées"
-msgstr "Vorräte und nicht fakturierte Dienstleistungen"
+#: model:account.account.template,name:l10n_ch.ch_coa_1270
+msgid "Stocks de produits semi-ouvrés"
+msgstr ""
+
+#. module: l10n_ch
+#: model:ir.ui.menu,name:l10n_ch.account_reports_ch_statements_menu
+msgid "Swiss Statements"
+msgstr "CH Bilanz- und Erfolgsrechnungen"
#. module: l10n_ch
#: model:account.tax.template,name:l10n_ch.vat_O_import
@@ -849,41 +857,66 @@ msgid "TVA 0% exclue"
msgstr "MwSt. 0% ausgeschlossen"
#. module: l10n_ch
+#: model:account.tax.template,name:l10n_ch.vat_25_purchase_incl
+msgid "TVA 2.5% sur achat B&S (Incl. TR)"
+msgstr "MwSt. 2,5 % auf Einkäufe B&S (inkl. USt)"
+
+#. module: l10n_ch
#: model:account.tax.template,name:l10n_ch.vat_25_purchase
msgid "TVA 2.5% sur achat B&S (TR)"
msgstr "MwSt. 2,5 % auf Einkäufe B&S (USt)"
#. module: l10n_ch
+#: model:account.tax.template,name:l10n_ch.vat_25_invest_incl
+msgid "TVA 2.5% sur invest. et autres ch. (Incl. TR)"
+msgstr "MwSt. 2,5% auf Invest. und sonst. Aufw. (inkl. USt)"
+
+#. module: l10n_ch
#: model:account.tax.template,name:l10n_ch.vat_25_invest
msgid "TVA 2.5% sur invest. et autres ch. (TR)"
msgstr "MwSt. 2,5% auf Invest. und sonst. Aufw. (USt)"
#. module: l10n_ch
+#: model:account.tax.template,name:l10n_ch.vat_38_purchase_incl
+msgid "TVA 3.8% sur achat B&S (Incl. TS)"
+msgstr "MwSt. 3,8% auf Einkäufe B&S (inkl. LSt)"
+
+#. module: l10n_ch
#: model:account.tax.template,name:l10n_ch.vat_38_purchase
msgid "TVA 3.8% sur achat B&S (TS)"
msgstr "MwSt. 3,8% auf Einkäufe B&S (LSt)"
#. module: l10n_ch
+#: model:account.tax.template,name:l10n_ch.vat_38_invest_incl
+msgid "TVA 3.8% sur invest. et autres ch. (Incl. TS)"
+msgstr "MwSt. 3,8% auf Invest. und sonst. Aufw. (inkl. LSt)"
+
+#. module: l10n_ch
#: model:account.tax.template,name:l10n_ch.vat_38_invest
msgid "TVA 3.8% sur invest. et autres ch. (TS)"
msgstr "MwSt. 3,8% auf Invest. und sonst. Aufw. (LSt)"
#. module: l10n_ch
+#: model:account.tax.template,name:l10n_ch.vat_80_purchase_incl
+msgid "TVA 8.0% sur achat B&S (Incl. TN)"
+msgstr "MwSt. 8.0% auf Einkäufe B&S (inkl. NRZ)"
+
+#. module: l10n_ch
#: model:account.tax.template,name:l10n_ch.vat_80_purchase
msgid "TVA 8.0% sur achat B&S (TN)"
msgstr "MwSt. 8,0% auf Einkäufe B&S (NRZ)"
#. module: l10n_ch
+#: model:account.tax.template,name:l10n_ch.vat_80_invest_incl
+msgid "TVA 8.0% sur invest. et autres ch. (Incl. TN)"
+msgstr "MwSt. 8,0% auf Invest. und sonst. Aufw. (inkl. NRZ)"
+
+#. module: l10n_ch
#: model:account.tax.template,name:l10n_ch.vat_80_invest
msgid "TVA 8.0% sur invest. et autres ch. (TN)"
msgstr "MwSt. 8,0% auf Invest. und sonst. Aufw. (NRZ)"
#. module: l10n_ch
-#: model:account.tax.code.template,name:l10n_ch.vat_code_due_tva
-msgid "TVA Due "
-msgstr "Zu zahlende MwSt. "
-
-#. module: l10n_ch
#: model:account.account.template,name:l10n_ch.ch_coa_2200
msgid "TVA due"
msgstr "Geschuldete MwSt. (Umsatzsteuer)"
@@ -894,37 +927,34 @@ msgid "TVA due a 0% (Exportations)"
msgstr "Zu zahlende MwSt. bei 0% (Exporte)"
#. module: l10n_ch
-#: model:account.tax.code.template,name:l10n_ch.vat_code_due_tva25
#: model:account.tax.template,name:l10n_ch.vat_25
msgid "TVA due a 2.5% (TR)"
msgstr "Zu zahlende MwSt. bei 2,5% (USt)"
#. module: l10n_ch
-#: model:account.tax.code.template,name:l10n_ch.vat_code_due_tva38
#: model:account.tax.template,name:l10n_ch.vat_38
msgid "TVA due a 3.8% (TS)"
msgstr "Zu zahlende MwSt. bei 3,8% (LSt)"
#. module: l10n_ch
-#: model:account.tax.code.template,name:l10n_ch.vat_code_due_tva80
#: model:account.tax.template,name:l10n_ch.vat_80
msgid "TVA due a 8.0% (TN)"
msgstr "Zu zahlende MwSt. bei 8,0% (NRZ)"
#. module: l10n_ch
-#: model:account.tax.code.template,name:l10n_ch.vat_code_payable
-msgid "TVA préalable sur acquisitions (a récupérer)"
-msgstr "Vorsteuer auf Einkäufe (zu erstatten)"
+#: model:account.tax.template,name:l10n_ch.vat_25_incl
+msgid "TVA due à 2.5% (Incl. TR)"
+msgstr "Zu zahlende MwSt. bei 2,5% (inkl. USt)"
#. module: l10n_ch
-#: model:account.tax.code.template,name:l10n_ch.vat_code_payable_bs
-msgid "TVA préalable sur biens et services"
-msgstr "Vorsteuer auf Güter und Dienstleistungen"
+#: model:account.tax.template,name:l10n_ch.vat_38_incl
+msgid "TVA due à 3.8% (Incl. TS)"
+msgstr "Zu zahlende MwSt. bei 3,8% (inkl. LSt)"
#. module: l10n_ch
-#: model:account.tax.code.template,name:l10n_ch.vat_code_payable_invest
-msgid "TVA préalable sur invest. et autres ch."
-msgstr "Vorsteurer auf Investitionen und sonstigen Aufwand"
+#: model:account.tax.template,name:l10n_ch.vat_80_incl
+msgid "TVA due à 8.0% (Incl. TN)"
+msgstr "Zu zahlende MwSt. bei 8,0% (inkl. NRZ)"
#. module: l10n_ch
#: model:account.account.template,name:l10n_ch.ch_coa_1060
@@ -937,29 +967,45 @@ msgid "Titres à long terme"
msgstr "Wertschriften"
#. module: l10n_ch
-#: model:account.account.template,name:l10n_ch.ch_coa_1270
+#: model:account.account.template,name:l10n_ch.transfer_account_id
+msgid "Transferts internes"
+msgstr ""
+
+#. module: l10n_ch
+#: model:account.account.template,name:l10n_ch.ch_coa_1280
msgid "Travaux en cours"
msgstr "Unfertige Erzeugnisse"
#. module: l10n_ch
-#: model:account.account.template,name:l10n_ch.ch_coa_100
-msgid "Trésorerie"
-msgstr "Flüssige Mittel"
+#: model:account.account.template,name:l10n_ch.ch_coa_3940
+msgid "Variation de la valeur des prestations non facturées"
+msgstr "Bestandesänderungen nicht fakturierte Dienstleistungen"
#. module: l10n_ch
-#: model:account.tax.code.template,name:l10n_ch.vat_code_chart_root
-msgid "VAT"
-msgstr "MwSt."
+#: model:account.account.template,name:l10n_ch.ch_coa_1287
+msgid "Variation de la valeur des travaux en cours"
+msgstr ""
#. module: l10n_ch
-#: model:account.account.template,name:l10n_ch.ch_coa_3940
-msgid "Variation de la valeur des prestations non facturées"
-msgstr "Bestandesänderungen nicht fakturierte Dienstleistungen"
+#: model:account.account.template,name:l10n_ch.ch_coa_1277
+msgid "Variation de stock produits semi-ouvrés"
+msgstr ""
#. module: l10n_ch
-#: model:account.account.template,name:l10n_ch.ch_coa_39
-msgid "Variation des stocks"
-msgstr "Bestandesänderungen"
+#: model:account.account.template,name:l10n_ch.ch_coa_1267
+msgid "Variation de stocks de produits finis"
+msgstr ""
+
+#. module: l10n_ch
+#: model:account.account.template,name:l10n_ch.ch_coa_1207
+#: model:account.account.template,name:l10n_ch.ch_coa_4800
+msgid "Variation des stocks de marchandises"
+msgstr ""
+
+#. module: l10n_ch
+#: model:account.account.template,name:l10n_ch.ch_coa_4801
+msgid "Variation des stocks de matières premières"
+msgstr ""
#. module: l10n_ch
#: model:account.account.template,name:l10n_ch.ch_coa_3901
@@ -972,6 +1018,17 @@ msgid "Variation des stocks de produits semi-finis"
msgstr "Bestandesänderungen unfertige Erzeugnisse"
#. module: l10n_ch
+#: model:account.account.template,name:l10n_ch.ch_coa_1217
+msgid "Variation des stocks des matières premières"
+msgstr ""
+
+#. module: l10n_ch
+#: model:account.account.template,name:l10n_ch.ch_coa_4008
+#: model:account.account.template,name:l10n_ch.ch_coa_4080
+msgid "Variations de stocks"
+msgstr ""
+
+#. module: l10n_ch
#: model:account.account.template,name:l10n_ch.ch_coa_3200
msgid "Ventes de marchandises"
msgstr "Handelserlöse"
@@ -990,57 +1047,3 @@ msgstr "Produktionserlöse"
#: model:account.account.template,name:l10n_ch.ch_coa_1530
msgid "Véhicules"
msgstr "Fahrzeuge"
-
-#. module: l10n_ch
-#: model:account.account.template,name:l10n_ch.ch_coa_0
-msgid "Plan Comptable"
-msgstr "Kontenrahmen"
-
-#: model:account.chart.template,name:l10n_ch.l10nch_chart_template
-msgid "Plan comptable 2015"
-msgstr "Kontenrahmen 2015"
-
-#. module: l10n_ch
-#: model:account.tax.template,name:l10n_ch.vat_25_purchase_incl
-msgid "TVA 2.5% sur achat B&S (Incl. TR)"
-msgstr "MwSt. 2,5 % auf Einkäufe B&S (inkl. USt)"
-
-#. module: l10n_ch
-#: model:account.tax.template,name:l10n_ch.vat_25_invest_incl
-msgid "TVA 2.5% sur invest. et autres ch. (Incl. TR)"
-msgstr "MwSt. 2,5% auf Invest. und sonst. Aufw. (inkl. USt)"
-
-#. module: l10n_ch
-#: model:account.tax.template,name:l10n_ch.vat_38_purchase_incl
-msgid "TVA 3.8% sur achat B&S (Incl. TS)"
-msgstr "MwSt. 3,8% auf Einkäufe B&S (inkl. LSt)"
-
-#. module: l10n_ch
-#: model:account.tax.template,name:l10n_ch.vat_38_invest_incl
-msgid "TVA 3.8% sur invest. et autres ch. (Incl. TS)"
-msgstr "MwSt. 3,8% auf Invest. und sonst. Aufw. (inkl. LSt)"
-
-#. module: l10n_ch
-#: model:account.tax.template,name:l10n_ch.vat_80_purchase_incl
-msgid "TVA 8.0% sur achat B&S (Incl. TN)"
-msgstr "MwSt. 8.0% auf Einkäufe B&S (inkl. NRZ)"
-
-#. module: l10n_ch
-#: model:account.tax.template,name:l10n_ch.vat_80_invest_incl
-msgid "TVA 8.0% sur invest. et autres ch. (Incl. TN)"
-msgstr "MwSt. 8,0% auf Invest. und sonst. Aufw. (inkl. NRZ)"
-
-#. module: l10n_ch
-#: model:account.tax.template,name:l10n_ch.vat_38_incl
-msgid "TVA due à 3.8% (Incl. TS)"
-msgstr "Zu zahlende MwSt. bei 3,8% (inkl. LSt)"
-
-#. module: l10n_ch
-#: model:account.tax.template,name:l10n_ch.vat_80_incl
-msgid "TVA due à 8.0% (Incl. TN)"
-msgstr "Zu zahlende MwSt. bei 8,0% (inkl. NRZ)"
-
-#. module: l10n_ch
-#: model:account.tax.template,name:l10n_ch.vat_25_incl
-msgid "TVA due à 2.5% (Incl. TR)"
-msgstr "Zu zahlende MwSt. bei 2,5% (inkl. USt)"
diff --git a/addons/l10n_multilang/models/account.py b/addons/l10n_multilang/models/account.py
index 4f4cec2bf0e..2e5e0ffe973 100644
--- a/addons/l10n_multilang/models/account.py
+++ b/addons/l10n_multilang/models/account.py
@@ -27,12 +27,14 @@ class AccountTax(models.Model):
_inherit = 'account.tax'
name = fields.Char(translate=True)
+ description = fields.Char(translate=True)
class AccountTaxTemplate(models.Model):
_inherit = 'account.tax.template'
name = fields.Char(translate=True)
+ description = fields.Char(translate=True)
class AccountChartTemplate(models.Model):
diff --git a/addons/l10n_multilang/models/l10n_multilang.py b/addons/l10n_multilang/models/l10n_multilang.py
index 8fccc62757a..de0ef064bcd 100644
--- a/addons/l10n_multilang/models/l10n_multilang.py
+++ b/addons/l10n_multilang/models/l10n_multilang.py
@@ -63,8 +63,10 @@ class AccountChartTemplate(models.Model):
for company in company_ids:
# write account.account translations in the real COA
chart_template_id._process_accounts_translations(company.id, langs, 'name')
- # copy account.tax translations
+ # copy account.tax name translations
chart_template_id._process_taxes_translations(company.id, langs, 'name')
+ # copy account.tax description translations
+ chart_template_id._process_taxes_translations(company.id, langs, 'description')
# copy account.fiscal.position translations
chart_template_id._process_fiscal_pos_translations(company.id, langs, 'name')
return True
@@ -109,8 +111,10 @@ class BaseLanguageInstall(models.TransientModel):
for company in self.env['res.company'].search([('chart_template_id', '=', coa.id)]):
# write account.account translations in the real COA
coa._process_accounts_translations(company.id, [self.lang], 'name')
- # copy account.tax translations
+ # copy account.tax name translations
coa._process_taxes_translations(company.id, [self.lang], 'name')
+ # copy account.tax description translations
+ coa._process_taxes_translations(company.id, [self.lang], 'description')
# copy account.fiscal.position translations
coa._process_fiscal_pos_translations(company.id, [self.lang], 'name')
return res
diff --git a/addons/l10n_no/data/account_tax_data.xml b/addons/l10n_no/data/account_tax_data.xml
index af26bd55ef2..7623ce52f22 100644
--- a/addons/l10n_no/data/account_tax_data.xml
+++ b/addons/l10n_no/data/account_tax_data.xml
@@ -12,7 +12,7 @@
<field name="applicability">taxes</field>
</record>
<record id="tax_tag_ut8" model="account.account.tag">
- <field name="name">Utgående 8% mva</field>
+ <field name="name">Utgående 10% mva</field>
<field name="applicability">taxes</field>
</record>
<record id="tax_tag_in25" model="account.account.tag">
@@ -24,7 +24,7 @@
<field name="applicability">taxes</field>
</record>
<record id="tax_tag_in8" model="account.account.tag">
- <field name="name">Inngående 8% mva</field>
+ <field name="name">Inngående 10% mva</field>
<field name="applicability">taxes</field>
</record>
@@ -63,9 +63,9 @@
</record>
<record id="tax3" model="account.tax.template">
<field name="chart_template_id" ref="no_chart_template"/>
- <field name="name">Utgående 8% mva</field>
- <field name="description">Utgående 8% mva</field>
- <field name="amount">8</field>
+ <field name="name">Utgående 10% mva</field>
+ <field name="description">Utgående 10% mva</field>
+ <field name="amount">10</field>
<field name="amount_type">percent</field>
<field name="type_tax_use">sale</field>
<field name="account_id" ref="chart2704"/>
@@ -96,9 +96,9 @@
</record>
<record id="tax6" model="account.tax.template">
<field name="chart_template_id" ref="no_chart_template"/>
- <field name="name">Inngående 8% mva</field>
- <field name="description">Inngående 8% mva</field>
- <field name="amount">8</field>
+ <field name="name">Inngående 10% mva</field>
+ <field name="description">Inngående 10% mva</field>
+ <field name="amount">10</field>
<field name="amount_type">percent</field>
<field name="type_tax_use">purchase</field>
<field name="account_id" ref="chart2714"/>
diff --git a/addons/mail/controllers/main.py b/addons/mail/controllers/main.py
index 068bd2eeadd..82a527c3911 100644
--- a/addons/mail/controllers/main.py
+++ b/addons/mail/controllers/main.py
@@ -114,7 +114,10 @@ class MailController(http.Controller):
is_editable = request.env.user.has_group('base.group_no_one')
partner_id = request.env.user.partner_id
follower_id = None
- for follower in request.env['mail.followers'].browse(follower_ids):
+ follower_recs = request.env['mail.followers'].sudo().browse(follower_ids)
+ res_ids = follower_recs.mapped('res_id')
+ request.env[res_model].browse(res_ids).check_access_rule("write")
+ for follower in follower_recs:
is_uid = partner_id == follower.partner_id
follower_id = follower.id if is_uid else follower_id
followers.append({
diff --git a/addons/mass_mailing/static/src/js/mass_mailing_editor.js b/addons/mass_mailing/static/src/js/mass_mailing_editor.js
index dfdafae3f10..4475d001e5d 100644
--- a/addons/mass_mailing/static/src/js/mass_mailing_editor.js
+++ b/addons/mass_mailing/static/src/js/mass_mailing_editor.js
@@ -351,7 +351,7 @@ snippets_editor.Class.include({
var callback = window ? window["callback"] : undefined;
odoo_top[callback+"_updown"] = function (value, fields_values, field_name) {
- if (!window) {
+ if (!window || window.closed) {
delete odoo_top[callback+"_updown"];
return;
}
diff --git a/addons/payment_paypal/controllers/main.py b/addons/payment_paypal/controllers/main.py
index 621b598d6bc..7e4aac4c036 100644
--- a/addons/payment_paypal/controllers/main.py
+++ b/addons/payment_paypal/controllers/main.py
@@ -3,6 +3,7 @@
import json
import logging
import pprint
+import urllib
import urllib2
import werkzeug
@@ -26,7 +27,7 @@ class PaypalController(http.Controller):
return return_url
def _parse_pdt_response(self, response):
- """ Parse a text reponse for a PDT verification .
+ """ Parse a text response for a PDT verification .
:param response str: text response, structured in the following way:
STATUS\nkey1=value1\nkey2=value2...\n
@@ -37,6 +38,9 @@ class PaypalController(http.Controller):
lines = filter(None, response.split('\n'))
status = lines.pop(0)
pdt_post = dict(line.split('=', 1) for line in lines)
+ # html unescape
+ for post in pdt_post:
+ pdt_post[post] = urllib.unquote_plus(pdt_post[post]).decode('utf8')
return status, pdt_post
def paypal_validate_data(self, **post):
diff --git a/addons/payment_paypal/views/payment_views.xml b/addons/payment_paypal/views/payment_views.xml
index 01a28e9c04f..83d5cf71c4c 100644
--- a/addons/payment_paypal/views/payment_views.xml
+++ b/addons/payment_paypal/views/payment_views.xml
@@ -15,7 +15,7 @@
<field name="paypal_api_enabled" invisible="1"/>
<field name="paypal_api_username" invisible="1"/>
<field name="paypal_api_password" invisible="1"/>
- <a colspan="2" href="https://www.paypal.com/in/cgi-bin/webscr?cmd=xpt/Marketing/general/how-to-set-up-a-paypal-account-outside" target="_blank">How to configure your paypal account?</a>
+ <a colspan="2" href="https://www.odoo.com/documentation/user/online/ecommerce/shopper_experience/paypal.html" target="_blank">How to configure your paypal account?</a>
</group>
</xpath>
</field>
diff --git a/addons/point_of_sale/report/pos_order_report.py b/addons/point_of_sale/report/pos_order_report.py
index bd460445540..a3f7ecc95a1 100644
--- a/addons/point_of_sale/report/pos_order_report.py
+++ b/addons/point_of_sale/report/pos_order_report.py
@@ -47,7 +47,7 @@ class PosOrderReport(models.Model):
MIN(l.id) AS id,
COUNT(*) AS nbr_lines,
s.date_order AS date,
- SUM(l.qty * u.factor) AS product_qty,
+ SUM(l.qty) AS product_qty,
SUM(l.qty * l.price_unit) AS price_sub_total,
SUM((l.qty * l.price_unit) * (100 - l.discount) / 100) AS price_total,
SUM((l.qty * l.price_unit) * (l.discount / 100)) AS total_discount,
diff --git a/addons/portal/wizard/portal_wizard.py b/addons/portal/wizard/portal_wizard.py
index f3c645d2eb9..6fbdf01fa6e 100644
--- a/addons/portal/wizard/portal_wizard.py
+++ b/addons/portal/wizard/portal_wizard.py
@@ -75,7 +75,7 @@ class PortalWizardUser(models.TransientModel):
_description = 'Portal User Config'
wizard_id = fields.Many2one('portal.wizard', string='Wizard', required=True, ondelete='cascade')
- partner_id = fields.Many2one('res.partner', string='Contact', required=True, readonly=True)
+ partner_id = fields.Many2one('res.partner', string='Contact', required=True, readonly=True, ondelete='cascade')
email = fields.Char('Email')
in_portal = fields.Boolean('In Portal')
user_id = fields.Many2one('res.users', string='Login User')
diff --git a/addons/purchase/test/average_price.yml b/addons/purchase/test/average_price.yml
index a9a8c3585e2..874450dbf5f 100644
--- a/addons/purchase/test/average_price.yml
+++ b/addons/purchase/test/average_price.yml
@@ -12,6 +12,7 @@
cost_method: average
property_stock_account_input: o_expense
property_stock_account_output: o_income
+ supplier_taxes_id: []
description: Average Ice Cream can be mass-produced and thus is widely available in developed parts of the world. Ice cream can be purchased in large cartons (vats and squrounds) from supermarkets and grocery stores, in smaller quantities from ice cream shops, convenience stores, and milk bars, and in individual servings from small carts or vans at public events.
-
I create a draft Purchase Order for first incoming shipment for 10 pieces at 60€
diff --git a/addons/purchase/test/fifo_price.yml b/addons/purchase/test/fifo_price.yml
index 958e2fcb31b..0ea720b4e38 100644
--- a/addons/purchase/test/fifo_price.yml
+++ b/addons/purchase/test/fifo_price.yml
@@ -1,8 +1,9 @@
-
Set the company currency as EURO for the sake of repeatibility
-
- !record {model: res.company, id: base.main_company}:
- currency_id: base.EUR
+ !python {model: res.company}: |
+ company = self.browse(cr, uid, ref('base.main_company'))
+ company.currency_id = company.env['res.currency'].browse(ref('base.EUR'))
-
Set a product as using fifo price
-
@@ -19,13 +20,13 @@
valuation: real_time
property_stock_account_input: o_expense
property_stock_account_output: o_income
+ supplier_taxes_id: []
description: FIFO Ice Cream can be mass-produced and thus is widely available in developed parts of the world. Ice cream can be purchased in large cartons (vats and squrounds) from supermarkets and grocery stores, in smaller quantities from ice cream shops, convenience stores, and milk bars, and in individual servings from small carts or vans at public events.
-
I create a draft Purchase Order for first in move for 10 kg at 50 euro
-
!record {model: purchase.order, id: purchase_order_fifo1}:
partner_id: base.res_partner_3
- currency_id: base.EUR
order_line:
- product_id: product_fifo_icecream
product_qty: 10.0
@@ -264,6 +265,7 @@
valuation: real_time
property_stock_account_input: o_expense
property_stock_account_output: o_income
+ supplier_taxes_id: []
description:
-
Create outpicking. We create delivery order of 100 kg.
diff --git a/addons/purchase/test/fifo_returns.yml b/addons/purchase/test/fifo_returns.yml
index 9004a36415d..e311ac0f1ef 100644
--- a/addons/purchase/test/fifo_returns.yml
+++ b/addons/purchase/test/fifo_returns.yml
@@ -13,6 +13,7 @@
valuation: real_time
property_stock_account_input: o_expense
property_stock_account_output: o_income
+ supplier_taxes_id: []
description: FIFO Ice Cream can be mass-produced and thus is widely available in developed parts of the world. Ice cream can be purchased in large cartons (vats and squrounds) from supermarkets and grocery stores, in smaller quantities from ice cream shops, convenience stores, and milk bars, and in individual servings from small carts or vans at public events.
-
I create a draft Purchase Order for first in move for 10 kg at 50 euro
diff --git a/addons/sale/models/sale_analytic.py b/addons/sale/models/sale_analytic.py
index 36340863725..e8f0f5e950b 100644
--- a/addons/sale/models/sale_analytic.py
+++ b/addons/sale/models/sale_analytic.py
@@ -17,6 +17,11 @@ class SaleOrderLine(models.Model):
domain,
['so_line', 'unit_amount', 'product_uom_id'], ['product_uom_id', 'so_line'], lazy=False
)
+ # If the unlinked analytic line was the last one on the SO line, the qty was not updated.
+ force_so_lines = self.env.context.get("force_so_lines")
+ if force_so_lines:
+ for line in force_so_lines:
+ lines.setdefault(line, 0.0)
for d in data:
if not d['product_uom_id']:
continue
@@ -48,6 +53,12 @@ class AccountAnalyticLine(models.Model):
).price
if self.unit_amount == 0.0:
return 0.0
+
+ # Prevent unnecessary currency conversion that could be impacted by exchange rate
+ # fluctuations
+ if self.currency_id and self.amount_currency and self.currency_id == order.currency_id:
+ return abs(self.amount_currency / self.unit_amount)
+
price_unit = abs(self.amount / self.unit_amount)
currency_id = self.company_id.currency_id
if currency_id and currency_id != order.currency_id:
@@ -122,3 +133,10 @@ class AccountAnalyticLine(models.Model):
line.with_context(create=True).write(res)
line.mapped('so_line').sudo()._compute_analytic()
return line
+
+ @api.multi
+ def unlink(self):
+ so_lines = self.mapped('so_line')
+ res = super(AccountAnalyticLine, self).unlink()
+ so_lines.with_context(force_so_lines=so_lines).sudo()._compute_analytic()
+ return res
diff --git a/addons/stock/models/stock_inventory.py b/addons/stock/models/stock_inventory.py
index 689bfed426b..93796e7c320 100644
--- a/addons/stock/models/stock_inventory.py
+++ b/addons/stock/models/stock_inventory.py
@@ -124,6 +124,11 @@ class Inventory(models.Model):
if self.filter == 'product':
self.exhausted = True
+ @api.onchange('location_id')
+ def onchange_location_id(self):
+ if self.location_id.company_id:
+ self.company_id = self.location_id.company_id
+
@api.one
@api.constrains('filter', 'product_id', 'lot_id', 'partner_id', 'package_id')
def _check_filter_product(self):
@@ -204,6 +209,11 @@ class Inventory(models.Model):
# Empty recordset of products to filter
products_to_filter = self.env['product.product']
+ # case 0: Filter on company
+ if self.company_id:
+ domain += ' AND company_id = %s'
+ args += (self.company_id.id,)
+
#case 1: Filter on One owner only or One product for a specific owner
if self.partner_id:
domain += ' AND owner_id = %s'
diff --git a/addons/stock/views/stock_location_views.xml b/addons/stock/views/stock_location_views.xml
index 37de384d398..7174d9e40bb 100644
--- a/addons/stock/views/stock_location_views.xml
+++ b/addons/stock/views/stock_location_views.xml
@@ -79,7 +79,7 @@
<field name="arch" type="xml">
<tree string="Stock Location" decoration-info="usage=='view'" decoration-danger="usage=='internal'">
<field name="active" invisible="1"/>
- <field name="complete_name"/>
+ <field name="display_name"/>
<field name="usage"/>
<field name="company_id" groups="base.group_multi_company"/>
</tree>
@@ -287,4 +287,4 @@
<menuitem action="action_routes_form" id="menu_stock_routes"
parent="stock.menu_routes_config" sequence="1" />
-</odoo> \ No newline at end of file
+</odoo>
diff --git a/addons/stock_account/models/account_invoice.py b/addons/stock_account/models/account_invoice.py
index 892fd8ed2e1..aacdd6c7177 100644
--- a/addons/stock_account/models/account_invoice.py
+++ b/addons/stock_account/models/account_invoice.py
@@ -38,13 +38,21 @@ class AccountInvoice(models.Model):
cacc = accounts['expense'].id
if dacc and cacc:
price_unit = i_line._get_anglo_saxon_price_unit()
+ if inv.currency_id.id != company_currency:
+ currency_id = inv.currency_id.id
+ amount_currency = i_line._get_price(company_currency, price_unit)
+ else:
+ currency_id = False
+ amount_currency = False
return [
{
'type': 'src',
'name': i_line.name[:64],
'price_unit': price_unit,
'quantity': i_line.quantity,
- 'price': i_line._get_price(company_currency, price_unit),
+ 'price': price_unit * i_line.quantity,
+ 'currency_id': currency_id,
+ 'amount_currency': amount_currency,
'account_id':dacc,
'product_id':i_line.product_id.id,
'uom_id':i_line.uom_id.id,
@@ -57,7 +65,9 @@ class AccountInvoice(models.Model):
'name': i_line.name[:64],
'price_unit': price_unit,
'quantity': i_line.quantity,
- 'price': -1 * i_line._get_price(company_currency, price_unit),
+ 'price': -1 * price_unit * i_line.quantity,
+ 'currency_id': currency_id,
+ 'amount_currency': -1 * amount_currency,
'account_id':cacc,
'product_id':i_line.product_id.id,
'uom_id':i_line.uom_id.id,
diff --git a/addons/web_editor/static/src/js/widgets.js b/addons/web_editor/static/src/js/widgets.js
index d3ad1e6fbc8..0b634b45b36 100644
--- a/addons/web_editor/static/src/js/widgets.js
+++ b/addons/web_editor/static/src/js/widgets.js
@@ -295,7 +295,9 @@ var ImageDialog = Widget.extend({
self.display_attachments();
});
this.fetch_existing().then(function () {
- self.set_image(_.find(self.records, function (record) { return record.url === o.url;}) || o);
+ if (o.url) {
+ self.set_image(_.find(self.records, function (record) { return record.url === o.url;}) || o);
+ }
});
return res;
},
diff --git a/addons/website/models/ir_http.py b/addons/website/models/ir_http.py
index ccee9a43721..f5054202f61 100644
--- a/addons/website/models/ir_http.py
+++ b/addons/website/models/ir_http.py
@@ -371,7 +371,8 @@ class PageConverter(werkzeug.routing.PathConverter):
query = query and query.startswith('website.') and query[8:] or query
if query:
domain += [('key', 'like', query)]
- domain += ['|', ('website_id', '=', request.website.id), ('website_id', '=', False)]
+ website_id = request.context.get('website_id') or request.registry['website'].search(cr, uid, [], limit=1)[0]
+ domain += ['|', ('website_id', '=', website_id), ('website_id', '=', False)]
views = View.search_read(domain, fields=['key', 'priority', 'write_date'], order='name')
for view in views:
diff --git a/addons/website/models/website.py b/addons/website/models/website.py
index 8739ba2fa07..457ee04b978 100644
--- a/addons/website/models/website.py
+++ b/addons/website/models/website.py
@@ -526,6 +526,7 @@ class Website(models.Model):
of the same.
:rtype: list({name: str, url: str})
"""
+ request.context = dict(request.context, **context)
router = request.httprequest.app.get_db_router(request.db)
# Force enumeration to be performed as public user
url_set = set()
diff --git a/addons/website_blog/views/website_blog_views.xml b/addons/website_blog/views/website_blog_views.xml
index 63a683dd130..f37017f0e5f 100644
--- a/addons/website_blog/views/website_blog_views.xml
+++ b/addons/website_blog/views/website_blog_views.xml
@@ -26,6 +26,7 @@
</div>
<group>
<field name="name"/>
+ <field name="subtitle"/>
</group>
</sheet>
<div class="oe_chatter">
diff --git a/addons/website_sale/models/sale_order.py b/addons/website_sale/models/sale_order.py
index ed65a8380e7..af2ba2f924e 100644
--- a/addons/website_sale/models/sale_order.py
+++ b/addons/website_sale/models/sale_order.py
@@ -343,7 +343,7 @@ class Website(models.Model):
else:
salesperson_id = request.website.salesperson_id.id
addr = partner.address_get(['delivery', 'invoice'])
- sale_order = self.env['sale.order'].sudo().create({
+ so_data = {
'partner_id': partner.id,
'pricelist_id': pricelist_id,
'payment_term_id': self.sale_get_payment_term(partner),
@@ -351,7 +351,12 @@ class Website(models.Model):
'partner_invoice_id': addr['invoice'],
'partner_shipping_id': addr['delivery'],
'user_id': salesperson_id or self.salesperson_id.id,
- })
+ }
+ company = self.company_id or self.env['product.pricelist'].browse(pricelist_id).sudo().company_id
+ if company:
+ so_data['company_id'] = company.id
+
+ sale_order = self.env['sale.order'].sudo().create(so_data)
# set fiscal position
if request.website.partner_id.id != partner.id:
diff --git a/addons/website_sale/static/src/js/website_sale.js b/addons/website_sale/static/src/js/website_sale.js
index c187b5d287d..1205951b039 100644
--- a/addons/website_sale/static/src/js/website_sale.js
+++ b/addons/website_sale/static/src/js/website_sale.js
@@ -262,9 +262,12 @@ odoo.define('website_sale.website_sale', function (require) {
}
$(oe_website_sale).on('change', 'input.js_product_change', function () {
+ var self = this;
var $parent = $(this).closest('.js_product');
- $parent.find(".oe_default_price:first .oe_currency_value").html( price_to_str(+$(this).data('lst_price')) );
- $parent.find(".oe_price:first .oe_currency_value").html(price_to_str(+$(this).data('price')) );
+ $.when(base.ready()).then(function() {
+ $parent.find(".oe_default_price:first .oe_currency_value").html( price_to_str(+$(self).data('lst_price')) );
+ $parent.find(".oe_price:first .oe_currency_value").html(price_to_str(+$(self).data('price')) );
+ });
update_product_image(this, +$(this).val());
});
@@ -286,8 +289,10 @@ odoo.define('website_sale.website_sale', function (require) {
var product_id = false;
for (var k in variant_ids) {
if (_.isEmpty(_.difference(variant_ids[k][1], values))) {
- $price.html(price_to_str(variant_ids[k][2]));
- $default_price.html(price_to_str(variant_ids[k][3]));
+ $.when(base.ready()).then(function() {
+ $price.html(price_to_str(variant_ids[k][2]));
+ $default_price.html(price_to_str(variant_ids[k][3]));
+ });
if (variant_ids[k][3]-variant_ids[k][2]>0.01) {
$default_price.closest('.oe_website_sale').addClass("discount");
$optional_price.closest('.oe_optional').show().css('text-decoration', 'line-through');
diff --git a/addons/website_sale_options/static/src/js/website_sale.js b/addons/website_sale_options/static/src/js/website_sale.js
index 797879d399c..49fa7f68858 100644
--- a/addons/website_sale_options/static/src/js/website_sale.js
+++ b/addons/website_sale_options/static/src/js/website_sale.js
@@ -41,7 +41,7 @@ $('.oe_website_sale #add_to_cart, .oe_website_sale #products_grid .a-submit')
data: {lang: base.get_context().lang},
success: function (quantity) {
if (!$a.hasClass('js_goto_shop')) {
- window.location.href = window.location.href.replace(/shop([\/?].*)?$/, "shop/cart");
+ window.location.pathname = window.location.pathname.replace(/shop([\/?].*)?$/, "shop/cart");
}
var $q = $(".my_cart_quantity");
$q.parent().parent().removeClass("hidden", !quantity);