diff --git a/.tx/config b/.tx/config index bc15e57845d..6d1bae6b388 100644 --- a/.tx/config +++ b/.tx/config @@ -917,6 +917,11 @@ file_filter = addons/website_sale_digital/i18n/.po source_file = addons/website_sale_digital/i18n/website_sale_digital.pot source_lang = en +[odoo-11.website_sale_management] +file_filter = addons/website_sale_management/i18n/.po +source_file = addons/website_sale_management/i18n/website_sale_management.pot +source_lang = en + [odoo-11.website_sale_options] file_filter = addons/website_sale_options/i18n/.po source_file = addons/website_sale_options/i18n/website_sale_options.pot diff --git a/addons/account/models/account.py b/addons/account/models/account.py index cedc8cdc07e..685ba74a486 100644 --- a/addons/account/models/account.py +++ b/addons/account/models/account.py @@ -755,7 +755,7 @@ class AccountTaxGroup(models.Model): class AccountTax(models.Model): _name = 'account.tax' _description = 'Tax' - _order = 'sequence' + _order = 'sequence,id' @api.model def _default_tax_group(self): diff --git a/addons/account/models/account_bank_statement.py b/addons/account/models/account_bank_statement.py index 7d6f33bae36..567c8504637 100644 --- a/addons/account/models/account_bank_statement.py +++ b/addons/account/models/account_bank_statement.py @@ -895,7 +895,7 @@ class AccountBankStatementLine(models.Model): total = self.amount for aml_rec in payment_aml_rec: total -= aml_rec.debit - aml_rec.credit - aml_rec.write({'statement_line_id': self.id}) + aml_rec.with_context(check_move_validity=False).write({'statement_line_id': self.id}) counterpart_moves = (counterpart_moves | aml_rec.move_id) # Create move line(s). Either matching an existing journal entry (eg. invoice), in which diff --git a/addons/account/models/account_journal_dashboard.py b/addons/account/models/account_journal_dashboard.py index 2793996a963..1c263bb41e8 100644 --- a/addons/account/models/account_journal_dashboard.py +++ b/addons/account/models/account_journal_dashboard.py @@ -193,18 +193,19 @@ class account_journal(models.Model): (number_draft, sum_draft) = self._count_results_and_sum_amounts(query_results_drafts, currency) (number_late, sum_late) = self._count_results_and_sum_amounts(late_query_results, currency) + difference = currency.round(last_balance-account_sum) + 0.0 return { 'number_to_reconcile': number_to_reconcile, - 'account_balance': formatLang(self.env, account_sum, currency_obj=self.currency_id or self.company_id.currency_id), - 'last_balance': formatLang(self.env, last_balance, currency_obj=self.currency_id or self.company_id.currency_id), - 'difference': (last_balance-account_sum) and formatLang(self.env, last_balance-account_sum, currency_obj=self.currency_id or self.company_id.currency_id) or False, + 'account_balance': formatLang(self.env, currency.round(account_sum) + 0.0, currency_obj=currency), + 'last_balance': formatLang(self.env, currency.round(last_balance) + 0.0, currency_obj=currency), + 'difference': formatLang(self.env, difference, currency_obj=currency) if difference else False, 'number_draft': number_draft, 'number_waiting': number_waiting, 'number_late': number_late, - 'sum_draft': formatLang(self.env, sum_draft or 0.0, currency_obj=self.currency_id or self.company_id.currency_id), - 'sum_waiting': formatLang(self.env, sum_waiting or 0.0, currency_obj=self.currency_id or self.company_id.currency_id), - 'sum_late': formatLang(self.env, sum_late or 0.0, currency_obj=self.currency_id or self.company_id.currency_id), - 'currency_id': self.currency_id and self.currency_id.id or self.company_id.currency_id.id, + 'sum_draft': formatLang(self.env, currency.round(sum_draft) + 0.0, currency_obj=currency), + 'sum_waiting': formatLang(self.env, currency.round(sum_waiting) + 0.0, currency_obj=currency), + 'sum_late': formatLang(self.env, currency.round(sum_late) + 0.0, currency_obj=currency), + 'currency_id': currency.id, 'bank_statements_source': self.bank_statements_source, 'title': title, } diff --git a/addons/account/models/chart_template.py b/addons/account/models/chart_template.py index 4b3ecc74458..726ac830ccb 100644 --- a/addons/account/models/chart_template.py +++ b/addons/account/models/chart_template.py @@ -40,8 +40,7 @@ def migrate_tags_on_taxes(cr, registry): ('type_tax_use', '=', tax_template.type_tax_use), ('description', '=', tax_template.description) ]) - if len(tax_id.ids) == 1: - tax_id.sudo().write({'tag_ids': [(6, 0, tax_template.tag_ids.ids)]}) + tax_id.sudo().write({'tag_ids': [(6, 0, tax_template.tag_ids.ids)]}) def preserve_existing_tags_on_taxes(cr, registry, module): ''' This is a utility function used to preserve existing previous tags during upgrade of the module.''' diff --git a/addons/account/models/partner.py b/addons/account/models/partner.py index d7a1d708c8b..b9d0d181664 100644 --- a/addons/account/models/partner.py +++ b/addons/account/models/partner.py @@ -297,10 +297,16 @@ class ResPartner(models.Model): partner.total_invoiced = sum(price['total'] for price in price_totals if price['partner_id'] in child_ids) @api.multi - def _journal_item_count(self): + def _compute_journal_item_count(self): + AccountMoveLine = self.env['account.move.line'] for partner in self: - partner.journal_item_count = self.env['account.move.line'].search_count([('partner_id', '=', partner.id)]) - partner.contracts_count = self.env['account.analytic.account'].search_count([('partner_id', '=', partner.id)]) + partner.journal_item_count = AccountMoveLine.search_count([('partner_id', '=', partner.id)]) + + @api.multi + def _compute_contracts_count(self): + AccountAnalyticAccount = self.env['account.analytic.account'] + for partner in self: + partner.contracts_count = AccountAnalyticAccount.search_count([('partner_id', '=', partner.id)]) def get_followup_lines_domain(self, date, overdue_only=False, only_unblocked=False): domain = [('reconciled', '=', False), ('account_id.deprecated', '=', False), ('account_id.internal_type', '=', 'receivable'), '|', ('debit', '!=', 0), ('credit', '!=', 0), ('company_id', '=', self.env.user.company_id.id)] @@ -374,9 +380,8 @@ class ResPartner(models.Model): groups='account.group_account_invoice') currency_id = fields.Many2one('res.currency', compute='_get_company_currency', readonly=True, string="Currency", help='Utility field to express amount currency') - - contracts_count = fields.Integer(compute='_journal_item_count', string="Contracts", type='integer') - journal_item_count = fields.Integer(compute='_journal_item_count', string="Journal Items", type="integer") + contracts_count = fields.Integer(compute='_compute_contracts_count', string="Contracts", type='integer') + journal_item_count = fields.Integer(compute='_compute_journal_item_count', string="Journal Items", type="integer") property_account_payable_id = fields.Many2one('account.account', company_dependent=True, string="Account Payable", oldname="property_account_payable", domain="[('internal_type', '=', 'payable'), ('deprecated', '=', False)]", diff --git a/addons/account/models/res_config_settings.py b/addons/account/models/res_config_settings.py index a1c19b3fd85..e6e637e3b0e 100644 --- a/addons/account/models/res_config_settings.py +++ b/addons/account/models/res_config_settings.py @@ -1,8 +1,6 @@ # -*- coding: utf-8 -*- # Part of Odoo. See LICENSE file for full copyright and licensing details. -from ast import literal_eval - from odoo import api, fields, models, _ diff --git a/addons/account_asset/i18n/account_asset.pot b/addons/account_asset/i18n/account_asset.pot index f60e307add1..fd0d916d6a1 100644 --- a/addons/account_asset/i18n/account_asset.pot +++ b/addons/account_asset/i18n/account_asset.pot @@ -4,10 +4,10 @@ # msgid "" msgstr "" -"Project-Id-Version: Odoo Server 10.saas~18\n" +"Project-Id-Version: Odoo Server 11.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-10-02 11:26+0000\n" -"PO-Revision-Date: 2017-10-02 11:26+0000\n" +"POT-Creation-Date: 2017-11-30 13:11+0000\n" +"PO-Revision-Date: 2017-11-30 13:11+0000\n" "Last-Translator: <>\n" "Language-Team: \n" "MIME-Version: 1.0\n" @@ -22,7 +22,7 @@ msgid " (copy)" msgstr "" #. module: account_asset -#: code:addons/account_asset/models/account_asset.py:538 +#: code:addons/account_asset/models/account_asset.py:540 #, python-format msgid " (grouped)" msgstr "" @@ -76,7 +76,7 @@ msgstr "" #. module: account_asset #. openerp-web -#: code:addons/account_asset/static/src/js/account_asset.js:41 +#: code:addons/account_asset/static/src/js/account_asset.js:52 #, python-format msgid "Accounting entries waiting for manual verification" msgstr "" @@ -93,7 +93,7 @@ msgid "Additional Options" msgstr "" #. module: account_asset -#: code:addons/account_asset/models/account_asset.py:595 +#: code:addons/account_asset/models/account_asset.py:597 #, python-format msgid "Amount" msgstr "" @@ -383,7 +383,7 @@ msgid "Cumulative Depreciation" msgstr "" #. module: account_asset -#: code:addons/account_asset/models/account_asset.py:595 +#: code:addons/account_asset/models/account_asset.py:597 #: model:ir.model.fields,field_description:account_asset.field_account_asset_asset_currency_id #, python-format msgid "Currency" @@ -513,7 +513,7 @@ msgid "Depreciation board modified" msgstr "" #. module: account_asset -#: code:addons/account_asset/models/account_asset.py:598 +#: code:addons/account_asset/models/account_asset.py:600 #, python-format msgid "Depreciation line posted." msgstr "" @@ -541,7 +541,7 @@ msgid "Disposal Moves" msgstr "" #. module: account_asset -#: code:addons/account_asset/models/account_asset.py:577 +#: code:addons/account_asset/models/account_asset.py:579 #, python-format msgid "Document closed." msgstr "" @@ -773,7 +773,7 @@ msgid "One Entry Every" msgstr "" #. module: account_asset -#: code:addons/account_asset/models/account_asset.py:597 +#: code:addons/account_asset/models/account_asset.py:599 #: model:ir.model.fields,field_description:account_asset.field_account_asset_asset_partner_id #: model:ir.model.fields,field_description:account_asset.field_asset_asset_report_partner_id #, python-format @@ -798,7 +798,7 @@ msgstr "" #. module: account_asset #. openerp-web -#: code:addons/account_asset/static/src/js/account_asset.js:38 +#: code:addons/account_asset/static/src/js/account_asset.js:49 #: model:ir.model.fields,field_description:account_asset.field_account_asset_depreciation_line_move_posted_check #: model:ir.model.fields,field_description:account_asset.field_asset_asset_report_move_check #: model:ir.ui.view,arch_db:account_asset.view_asset_asset_report_search @@ -948,11 +948,17 @@ msgid "The number of depreciations needed to depreciate your asset" msgstr "" #. module: account_asset -#: code:addons/account_asset/models/account_invoice.py:52 +#: code:addons/account_asset/models/account_invoice.py:62 #, python-format msgid "The number of depreciations or the period length of your asset category cannot be null." msgstr "" +#. module: account_asset +#: code:addons/account_asset/models/account_asset.py:482 +#, python-format +msgid "This depreciation is already linked to a journal entry! Please post or delete it." +msgstr "" + #. module: account_asset #: model:ir.ui.view,arch_db:account_asset.view_asset_depreciation_confirmation_wizard msgid "This wizard will post installment/depreciation lines for the selected month.
\n" @@ -980,7 +986,7 @@ msgstr "" #. module: account_asset #. openerp-web -#: code:addons/account_asset/static/src/js/account_asset.js:44 +#: code:addons/account_asset/static/src/js/account_asset.js:55 #, python-format msgid "Unposted" msgstr "" @@ -1022,13 +1028,13 @@ msgid "You cannot delete a document that contains posted entries." msgstr "" #. module: account_asset -#: code:addons/account_asset/models/account_asset.py:606 +#: code:addons/account_asset/models/account_asset.py:608 #, python-format msgid "You cannot delete posted depreciation lines." msgstr "" #. module: account_asset -#: code:addons/account_asset/models/account_asset.py:608 +#: code:addons/account_asset/models/account_asset.py:610 #, python-format msgid "You cannot delete posted installment lines." msgstr "" diff --git a/addons/account_bank_statement_import/i18n/account_bank_statement_import.pot b/addons/account_bank_statement_import/i18n/account_bank_statement_import.pot index 90a041bddd0..4de63a28406 100644 --- a/addons/account_bank_statement_import/i18n/account_bank_statement_import.pot +++ b/addons/account_bank_statement_import/i18n/account_bank_statement_import.pot @@ -4,10 +4,10 @@ # msgid "" msgstr "" -"Project-Id-Version: Odoo Server 10.saas~18\n" +"Project-Id-Version: Odoo Server 11.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-09-20 09:53+0000\n" -"PO-Revision-Date: 2017-09-20 09:53+0000\n" +"POT-Creation-Date: 2017-11-30 13:11+0000\n" +"PO-Revision-Date: 2017-11-30 13:11+0000\n" "Last-Translator: <>\n" "Language-Team: \n" "MIME-Version: 1.0\n" @@ -353,7 +353,7 @@ msgstr "" #: model:ir.model.fields,help:account_bank_statement_import.field_account_bank_statement_import_journal_creation_inbound_payment_method_ids msgid "Manual: Get paid by cash, check or any other method outside of Odoo.\n" "Electronic: Get paid automatically through a payment acquirer by requesting a transaction on a card saved by the customer when buying or subscribing online (payment token).\n" -"Batch Deposit: Encash several customer checks at once by generating a batch deposit to submit to your bank. When encoding the bank statement in Odoo,you are suggested to reconcile the transaction with the batch deposit. Enable this option from the settings." +"Batch Deposit: Encase several customer checks at once by generating a batch deposit to submit to your bank. When encoding the bank statement in Odoo,you are suggested to reconcile the transaction with the batch deposit. Enable this option from the settings." msgstr "" #. module: account_bank_statement_import diff --git a/addons/account_payment/models/payment.py b/addons/account_payment/models/payment.py index b0dfeb691bb..0ad11d39788 100644 --- a/addons/account_payment/models/payment.py +++ b/addons/account_payment/models/payment.py @@ -71,7 +71,19 @@ class PaymentTransaction(models.Model): _logger.warning('<%s> transaction STATE INCORRECT for invoice %s (ID %s, state %s)', self.acquirer_id.provider, self.account_invoice_id.number, self.account_invoice_id.id, self.account_invoice_id.state) return 'pay_invoice_invalid_doc_state' if not float_compare(self.amount, self.account_invoice_id.amount_total, 2) == 0: - _logger.warning('<%s> transaction AMOUNT MISMATCH for invoice %s (ID %s)', self.acquirer_id.provider, self.account_invoice_id.number, self.account_invoice_id.id) + _logger.warning( + '<%s> transaction AMOUNT MISMATCH for invoice %s (ID %s): expected %r, got %r', + self.acquirer_id.provider, self.account_invoice_id.number, self.account_invoice_id.id, + self.account_invoice_id.amount_total, self.amount, + ) + self.account_invoice_id.message_post( + subject=_("Amount Mismatch (%s)") % self.acquirer_id.provider, + body=_("The invoice was not confirmed despite response from the acquirer (%s): invoice amount is %r but acquirer replied with %r.") % ( + self.acquirer_id.provider, + self.account_invoice_id.amount_total, + self.amount, + ) + ) return 'pay_invoice_tx_amount' if self.state == 'authorized' and self.acquirer_id.capture_manually: diff --git a/addons/anonymization/wizard/anonymize_wizard.py b/addons/anonymization/wizard/anonymize_wizard.py index 738adb287aa..4ba71b03455 100644 --- a/addons/anonymization/wizard/anonymize_wizard.py +++ b/addons/anonymization/wizard/anonymize_wizard.py @@ -220,7 +220,7 @@ class IrModelFieldsAnonymizeWizard(models.TransientModel): ] msg = '\n'.join(msgs) % (dirpath, abs_filepath) - with open(abs_filepath, 'r') as fn: + with open(abs_filepath, 'rb') as fn: self.write({ 'msg': msg, 'file_export': base64.encodestring(fn.read()), @@ -266,10 +266,10 @@ class IrModelFieldsAnonymizeWizard(models.TransientModel): # load the json/pickle file content into a data structure: content = base64.decodestring(self.file_import) try: - data = json.loads(content) + data = json.loads(content.decode('utf8')) except Exception: # backward-compatible mode - data = pickle.loads(content) + data = pickle.loads(content, encoding='utf8') fixes = self.env['ir.model.fields.anonymization.migration.fix'].search_read([ ('target_version', '=', '.'.join(str(v) for v in version_info[:2])) diff --git a/addons/calendar/i18n/calendar.pot b/addons/calendar/i18n/calendar.pot index 05c4b992817..b7f2a7cfe3d 100644 --- a/addons/calendar/i18n/calendar.pot +++ b/addons/calendar/i18n/calendar.pot @@ -6,8 +6,8 @@ msgid "" msgstr "" "Project-Id-Version: Odoo Server 11.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-11-08 09:11+0000\n" -"PO-Revision-Date: 2017-11-08 09:11+0000\n" +"POT-Creation-Date: 2017-11-30 13:12+0000\n" +"PO-Revision-Date: 2017-11-30 13:12+0000\n" "Last-Translator: <>\n" "Language-Team: \n" "MIME-Version: 1.0\n" @@ -293,26 +293,26 @@ msgid "${object.event_id.name}: Date updated" msgstr "" #. module: calendar -#: code:addons/calendar/models/calendar.py:703 +#: code:addons/calendar/models/calendar.py:720 #, python-format msgid "%s at %s To\n" " %s at %s (%s)" msgstr "" #. module: calendar -#: code:addons/calendar/models/calendar.py:694 +#: code:addons/calendar/models/calendar.py:711 #, python-format msgid "%s at (%s To %s) (%s)" msgstr "" #. module: calendar -#: code:addons/calendar/models/calendar.py:208 +#: code:addons/calendar/models/calendar.py:225 #, python-format msgid "%s has accepted invitation" msgstr "" #. module: calendar -#: code:addons/calendar/models/calendar.py:216 +#: code:addons/calendar/models/calendar.py:233 #, python-format msgid "%s has declined invitation" msgstr "" @@ -339,7 +339,7 @@ msgstr "" #. module: calendar #: model:calendar.alarm,name:calendar.alarm_mail_1 -msgid "3 Hour(s), by email" +msgid "3 Hour(s), by e-mail" msgstr "" #. module: calendar @@ -349,7 +349,7 @@ msgstr "" #. module: calendar #: model:calendar.alarm,name:calendar.alarm_mail_2 -msgid "6 Hour(s), by email" +msgid "6 Hour(s), by e-mail" msgstr "" #. module: calendar @@ -396,7 +396,7 @@ msgid "All Day" msgstr "" #. module: calendar -#: code:addons/calendar/models/calendar.py:690 +#: code:addons/calendar/models/calendar.py:707 #, python-format msgid "AllDay , %s" msgstr "" @@ -435,7 +435,7 @@ msgid "Availability" msgstr "" #. module: calendar -#: code:addons/calendar/models/calendar.py:1583 +#: code:addons/calendar/models/calendar.py:1606 #: selection:calendar.attendee,availability:0 #: selection:calendar.event,show_as:0 #, python-format @@ -654,13 +654,13 @@ msgid "Ending at" msgstr "" #. module: calendar -#: code:addons/calendar/models/calendar.py:898 +#: code:addons/calendar/models/calendar.py:915 #, python-format msgid "Ending date cannot be set before starting date." msgstr "" #. module: calendar -#: code:addons/calendar/models/calendar.py:896 +#: code:addons/calendar/models/calendar.py:913 #, python-format msgid "Ending datetime cannot be set before starting datetime." msgstr "" @@ -681,7 +681,7 @@ msgid "Event alarm" msgstr "" #. module: calendar -#: code:addons/calendar/models/calendar.py:1141 +#: code:addons/calendar/models/calendar.py:1164 #, python-format msgid "Event recurrence interval cannot be negative." msgstr "" @@ -708,7 +708,7 @@ msgid "First" msgstr "" #. module: calendar -#: code:addons/calendar/models/calendar.py:938 +#: code:addons/calendar/models/calendar.py:955 #, python-format msgid "First you have to specify the date of the invitation." msgstr "" @@ -745,7 +745,7 @@ msgid "Group By" msgstr "" #. module: calendar -#: code:addons/calendar/models/calendar.py:1526 +#: code:addons/calendar/models/calendar.py:1549 #, python-format msgid "Group by date is not supported, use the calendar view instead." msgstr "" @@ -1017,7 +1017,7 @@ msgid "Partner-related data of the user" msgstr "" #. module: calendar -#: code:addons/calendar/models/calendar.py:1154 +#: code:addons/calendar/models/calendar.py:1177 #, python-format msgid "Please select a proper day of the month." msgstr "" @@ -1347,7 +1347,7 @@ msgid "Yes I'm going." msgstr "" #. module: calendar -#: code:addons/calendar/models/calendar.py:138 +#: code:addons/calendar/models/calendar.py:155 #, python-format msgid "You cannot duplicate a calendar attendee." msgstr "" @@ -1368,7 +1368,7 @@ msgid "e.g. Business Lunch" msgstr "" #. module: calendar -#: code:addons/calendar/models/calendar.py:1139 +#: code:addons/calendar/models/calendar.py:1162 #, python-format msgid "interval cannot be negative." msgstr "" diff --git a/addons/delivery/i18n/delivery.pot b/addons/delivery/i18n/delivery.pot index f8ee7d85783..0ad6a3f9599 100644 --- a/addons/delivery/i18n/delivery.pot +++ b/addons/delivery/i18n/delivery.pot @@ -4,10 +4,10 @@ # msgid "" msgstr "" -"Project-Id-Version: Odoo Server 10.saas~18\n" +"Project-Id-Version: Odoo Server 11.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-10-02 11:26+0000\n" -"PO-Revision-Date: 2017-10-02 11:26+0000\n" +"POT-Creation-Date: 2017-11-30 13:12+0000\n" +"PO-Revision-Date: 2017-11-30 13:12+0000\n" "Last-Translator: <>\n" "Language-Team: \n" "MIME-Version: 1.0\n" @@ -607,8 +607,12 @@ msgid "Packing Operation" msgstr "" #. module: delivery -#: model:ir.model,name:delivery.model_stock_quant_package #: model:ir.model.fields,field_description:delivery.field_choose_delivery_package_stock_quant_package_id +msgid "Physical Package" +msgstr "" + +#. module: delivery +#: model:ir.model,name:delivery.model_stock_quant_package msgid "Physical Packages" msgstr "" diff --git a/addons/event_sale/models/sale_order.py b/addons/event_sale/models/sale_order.py index 44801880267..7a2dcd8a745 100644 --- a/addons/event_sale/models/sale_order.py +++ b/addons/event_sale/models/sale_order.py @@ -42,7 +42,7 @@ class SaleOrderLine(models.Model): registrations linked to this line. This method update existing registrations and create new one for missing one. """ Registration = self.env['event.registration'] - registrations = Registration.search([('sale_order_line_id', 'in', self.ids)]) + registrations = Registration.search([('sale_order_line_id', 'in', self.ids), ('state', '!=', 'cancel')]) for so_line in self.filtered('event_id'): existing_registrations = registrations.filtered(lambda self: self.sale_order_line_id.id == so_line.id) if confirm: diff --git a/addons/google_drive/models/google_drive.py b/addons/google_drive/models/google_drive.py index d9200f1e2fd..3e7235c2d75 100644 --- a/addons/google_drive/models/google_drive.py +++ b/addons/google_drive/models/google_drive.py @@ -91,7 +91,7 @@ class GoogleDrive(models.Model): request_url = "https://www.googleapis.com/drive/v2/files/%s?fields=parents/id&access_token=%s" % (template_id, access_token) headers = {"Content-type": "application/x-www-form-urlencoded"} try: - req = requests.post(request_url, headers=headers, timeout=TIMEOUT) + req = requests.get(request_url, headers=headers, timeout=TIMEOUT) req.raise_for_status() parents_dict = req.json() except requests.HTTPError: diff --git a/addons/hr_expense/models/hr_expense.py b/addons/hr_expense/models/hr_expense.py index 17405e13b8a..7a6ec3f7e29 100644 --- a/addons/hr_expense/models/hr_expense.py +++ b/addons/hr_expense/models/hr_expense.py @@ -602,3 +602,10 @@ class HrExpenseSheet(models.Model): employee_ids = self.expense_line_ids.mapped('employee_id') if len(employee_ids) > 1 or (len(employee_ids) == 1 and employee_ids != self.employee_id): raise ValidationError(_('You cannot add expense lines of another employee.')) + + @api.one + @api.constrains('expense_line_ids') + def _check_payment_mode(self): + payment_mode = set(self.expense_line_ids.mapped('payment_mode')) + if len(payment_mode) > 1: + raise ValidationError(_('You cannot report expenses with different payment modes.')) \ No newline at end of file diff --git a/addons/hr_payroll/i18n/hr_payroll.pot b/addons/hr_payroll/i18n/hr_payroll.pot index 814bf25da7c..bae8c18e95b 100644 --- a/addons/hr_payroll/i18n/hr_payroll.pot +++ b/addons/hr_payroll/i18n/hr_payroll.pot @@ -6,8 +6,8 @@ msgid "" msgstr "" "Project-Id-Version: Odoo Server 11.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-11-16 08:08+0000\n" -"PO-Revision-Date: 2017-11-16 08:08+0000\n" +"POT-Creation-Date: 2017-11-30 13:11+0000\n" +"PO-Revision-Date: 2017-11-30 13:11+0000\n" "Last-Translator: <>\n" "Language-Team: \n" "MIME-Version: 1.0\n" @@ -228,7 +228,7 @@ msgstr "" #. module: hr_payroll #: model:ir.model.fields,field_description:hr_payroll.field_hr_payslip_line_category_id -#: model:ir.model.fields,field_description:hr_payroll.field_hr_salary_rule_category_id_7732 +#: model:ir.model.fields,field_description:hr_payroll.field_hr_salary_rule_category_id_7804 #: model:ir.ui.view,arch_db:hr_payroll.view_hr_rule_filter msgid "Category" msgstr "" @@ -953,7 +953,6 @@ msgid "Payslip 'Date From' must be before 'Date To'." msgstr "" #. module: hr_payroll -#: model:ir.model,name:hr_payroll.model_hr_payslip_run #: model:ir.model.fields,field_description:hr_payroll.field_hr_payslip_payslip_run_id #: model:ir.ui.view,arch_db:hr_payroll.hr_payslip_run_filter msgid "Payslip Batches" @@ -1001,6 +1000,11 @@ msgstr "" msgid "Payslip Name" msgstr "" +#. module: hr_payroll +#: model:ir.model,name:hr_payroll.model_hr_payslip_run +msgid "Payslip Run" +msgstr "" + #. module: hr_payroll #: model:ir.model,name:hr_payroll.model_hr_payslip_worked_days #: model:ir.model.fields,field_description:hr_payroll.field_hr_payslip_worked_days_line_ids @@ -1205,7 +1209,7 @@ msgstr "" #. module: hr_payroll #: code:addons/hr_payroll/models/hr_payslip.py:396 -#: code:addons/hr_payroll/models/hr_payslip.py:445 +#: code:addons/hr_payroll/models/hr_payslip.py:446 #, python-format msgid "Salary Slip of %s for %s" msgstr "" @@ -1225,12 +1229,6 @@ msgstr "" msgid "Salary Structures" msgstr "" -#. module: hr_payroll -#: model:ir.actions.act_window,name:hr_payroll.action_view_hr_payroll_structure_tree -#: model:ir.ui.menu,name:hr_payroll.menu_hr_payroll_structure_tree -msgid "Salary Structures Hierarchy" -msgstr "" - #. module: hr_payroll #: model:ir.model.fields,field_description:hr_payroll.field_hr_contract_schedule_pay msgid "Scheduled Pay" @@ -1448,7 +1446,7 @@ msgid "You must select employee(s) to generate payslip(s)." msgstr "" #. module: hr_payroll -#: code:addons/hr_payroll/models/hr_payslip.py:516 +#: code:addons/hr_payroll/models/hr_payslip.py:517 #, python-format msgid "You must set a contract to create a payslip line." msgstr "" diff --git a/addons/im_livechat/i18n/im_livechat.pot b/addons/im_livechat/i18n/im_livechat.pot index f89053d0a9e..2c4db78509e 100644 --- a/addons/im_livechat/i18n/im_livechat.pot +++ b/addons/im_livechat/i18n/im_livechat.pot @@ -4,10 +4,10 @@ # msgid "" msgstr "" -"Project-Id-Version: Odoo Server 10.saas~18\n" +"Project-Id-Version: Odoo Server 11.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-09-20 09:54+0000\n" -"PO-Revision-Date: 2017-09-20 09:54+0000\n" +"POT-Creation-Date: 2017-11-30 13:12+0000\n" +"PO-Revision-Date: 2017-11-30 13:12+0000\n" "Last-Translator: <>\n" "Language-Team: \n" "MIME-Version: 1.0\n" @@ -235,7 +235,6 @@ msgstr "" #. module: im_livechat #: model:ir.ui.view,arch_db:im_livechat.im_livechat_report_channel_view_search -#: model:ir.ui.view,arch_db:im_livechat.im_livechat_report_operator_view_search msgid "Creation date (hour)" msgstr "" @@ -427,11 +426,6 @@ msgstr "" msgid "Last Modified on" msgstr "" -#. module: im_livechat -#: model:ir.model,name:im_livechat.model_mail_channel_partner -msgid "Last Seen Many2many" -msgstr "" - #. module: im_livechat #: model:ir.model.fields,field_description:im_livechat.field_im_livechat_channel_rule_write_uid #: model:ir.model.fields,field_description:im_livechat.field_im_livechat_channel_write_uid @@ -460,6 +454,11 @@ msgstr "" msgid "Leave Channel" msgstr "" +#. module: im_livechat +#: model:ir.model,name:im_livechat.model_mail_channel_partner +msgid "Listeners of a Channel" +msgstr "" + #. module: im_livechat #: model:ir.ui.menu,name:im_livechat.menu_livechat_root msgid "Live Chat" @@ -860,13 +859,6 @@ msgstr "" msgid "e.g. YourWebsite.com" msgstr "" -#. module: im_livechat -#. openerp-web -#: code:addons/im_livechat/static/src/xml/im_livechat_backend.xml:10 -#, python-format -msgid "fa-comments" -msgstr "" - #. module: im_livechat #: model:ir.model,name:im_livechat.model_ir_autovacuum msgid "ir.autovacuum" diff --git a/addons/l10n_ch/models/res_bank.py b/addons/l10n_ch/models/res_bank.py index 0ddc98172a3..28abbc7b058 100644 --- a/addons/l10n_ch/models/res_bank.py +++ b/addons/l10n_ch/models/res_bank.py @@ -46,7 +46,8 @@ class ResPartnerBank(models.Model): for record in self: if record.acc_type == 'iban': record.l10n_ch_postal = record._retrieve_l10n_ch_postal(record.sanitized_acc_number) - record.l10n_ch_postal = record.sanitized_acc_number + else: + record.l10n_ch_postal = record.sanitized_acc_number def _retrieve_l10n_ch_postal(self, iban): """ Reads a swiss postal account number from a an IBAN and returns it as diff --git a/addons/l10n_es/__manifest__.py b/addons/l10n_es/__manifest__.py index 152358324b1..c5d7599074e 100644 --- a/addons/l10n_es/__manifest__.py +++ b/addons/l10n_es/__manifest__.py @@ -9,6 +9,7 @@ # Hugo Santos # Albert Cabedo # Olivier Colson +# Roberto Lizana { "name" : "Spain - Accounting (PGCE 2008)", @@ -35,6 +36,7 @@ Spanish charts of accounts (PGCE 2008). "base_vat", ], "data" : [ + 'data/account_group.xml', 'data/account_chart_template_data.xml', 'data/account_account_template_common_data.xml', 'data/account_account_template_pymes_data.xml', diff --git a/addons/l10n_es/data/account_account_template_assoc_data.xml b/addons/l10n_es/data/account_account_template_assoc_data.xml index a8d11dd9068..1226d986fed 100644 --- a/addons/l10n_es/data/account_account_template_assoc_data.xml +++ b/addons/l10n_es/data/account_account_template_assoc_data.xml @@ -8,6 +8,7 @@ Dotación fundacional + 1030 @@ -15,6 +16,7 @@ Fundadores, parte no desembolsada en fundaciones + 1034 @@ -22,6 +24,7 @@ Asociados, parte no desembolsada en asociaciones + 1040 @@ -29,6 +32,7 @@ Fundadores, por aportaciones no dinerarias pendientes, en fundaciones + 1044 @@ -36,6 +40,7 @@ Asociados, por aportaciones no dinerarias pendientes, en asociaciones + 120 @@ -43,6 +48,7 @@ Remanente + 121 @@ -50,6 +56,7 @@ Resultados negativos de ejercicios anteriores + 129 @@ -57,6 +64,7 @@ Resultado del ejercicio + 1300 @@ -64,6 +72,7 @@ Subvenciones del Estado + 1301 @@ -71,6 +80,7 @@ Subvenciones de otras Administraciones Públicas + 1320 @@ -78,6 +88,7 @@ Otras subvenciones + 1321 @@ -85,6 +96,7 @@ Otras donaciones y legados + 207 @@ -92,6 +104,7 @@ Derechos sobre activos cedidos en uso + 2400 @@ -99,6 +112,7 @@ Monumentos + 2401 @@ -106,6 +120,7 @@ Jardines históricos + 2402 @@ -113,6 +128,7 @@ Conjuntos históricos + 2403 @@ -120,6 +136,7 @@ Sitios históricos + 2404 @@ -127,6 +144,7 @@ Zonas arqueológicas + 2490 @@ -134,6 +152,7 @@ Anticipos sobre bienes inmuebles del Patrimonio Histórico + 2491 @@ -141,6 +160,7 @@ Anticipos sobre archivos del Patrimonio Histórico + 2492 @@ -148,6 +168,7 @@ Anticipos sobre bibliotecas del Patrimonio Histórico + 2493 @@ -155,6 +176,7 @@ Anticipos sobre museos del Patrimonio Histórico + 2494 @@ -162,6 +184,7 @@ Anticipos sobre bienes muebles del Patrimonio Histórico + 2807 @@ -169,6 +192,7 @@ Amortización acumulada de derechos sobre activos cedidos en uso + 2830 @@ -176,6 +200,7 @@ Cesiones de uso del inmovilizado intangible + 2831 @@ -183,6 +208,7 @@ Cesiones de uso del inmovilizado material + 2907 @@ -190,6 +216,7 @@ Deterioro del valor sobre activos cedidos en uso + 2935 @@ -197,6 +224,7 @@ Deterioro de valor de participaciones a largo plazo en otras partes vinculadas + 296 @@ -204,6 +232,7 @@ Deterioro de valor de participaciones en el patrimonio neto a largo plazo + 2990 @@ -211,6 +240,7 @@ Deterioro de valor de bienes del Patrimonio Histórico + 2991 @@ -218,6 +248,7 @@ Deterioro de valor de archivos + 2992 @@ -225,6 +256,7 @@ Deterioro de valor de bibliotecas + 2993 @@ -232,6 +264,7 @@ Deterioro de valor de Museos + 2994 @@ -239,6 +272,7 @@ Deterioro de valor de bienes muebles + 412 @@ -246,6 +280,7 @@ Beneficiarios, acreedores + 447 @@ -253,6 +288,7 @@ Usuarios, deudores + 4480 @@ -260,6 +296,7 @@ Patrocinadores + 4482 @@ -267,6 +304,7 @@ Afiliados + 4489 @@ -274,6 +312,7 @@ Otros deudores + 464 @@ -281,6 +320,7 @@ Entregas para gastos a justificar + 4707 @@ -288,6 +328,7 @@ Hacienda Pública, deudora por colaboración en la entrega y distribución de subvenciones (art.12 Ley de Subvenciones) + 4757 @@ -295,6 +336,7 @@ Hacienda Pública, acreedora por subvenciones recibidas en concepto de entidad colaboradora (art.12 Ley de Subvencioens) + 490 @@ -302,6 +344,7 @@ Deterioro de valor de créditos por operaciones de la actividad + 551 @@ -309,6 +352,7 @@ Cuenta corriente con patronos y otros + 5935 @@ -316,6 +360,7 @@ Deterioro de valor de participaciones a corto plazo en otras partes vinculadas + 596 @@ -323,6 +368,7 @@ Deterioro de valor de participaciones a corto plazo + 6501 @@ -330,6 +376,7 @@ Ayudas monetarias individuales + 6502 @@ -337,6 +384,7 @@ Ayudas monetarias a entidades + 6503 @@ -344,6 +392,7 @@ Ayudas monetarias realizadas a través de otras entidades o centros + 6504 @@ -351,6 +400,7 @@ Ayudas monetarias de cooperación internacional + 6510 @@ -358,6 +408,7 @@ Beneficio transferido (gestor) + 6511 @@ -365,6 +416,7 @@ Ayudas no monetarias individuales + 6512 @@ -372,6 +424,7 @@ Ayudas no monetarias a entidades + 6513 @@ -379,6 +432,7 @@ Ayudas no monetarias realizadas a través de otras entidades o centros + 6514 @@ -386,6 +440,7 @@ Ayudas no monetarias de cooperación internacional + 653 @@ -393,6 +448,7 @@ Compensación de gastos por prestaciones de colaboración + 654 @@ -400,6 +456,7 @@ Reembolsos de gastos al órgano de gobierno + 655 @@ -407,6 +464,7 @@ Pérdidas de créditos derivados de la actividad incobrables + 6560 @@ -414,6 +472,7 @@ Beneficio transferido (gestor) + 6561 @@ -421,6 +480,7 @@ Pérdida soportada(partícipe o asociado no gestor) + 658 @@ -428,6 +488,7 @@ Reintegro de subvenciones, donaciones y legados recibidos, afectos a la actividad propia de la entidad + 663 @@ -435,6 +496,7 @@ Pérdidas por valoración de instrumentos financieros por su valor razonable + 6710 @@ -442,6 +504,7 @@ Pérdidas procedentes del inmovilizado material + 6711 @@ -449,6 +512,7 @@ Pérdidas procedentes de bienes del Patrimonio Histórico + 6910 @@ -456,6 +520,7 @@ Pérdidas por deterioro del inmovilizado material + 6911 @@ -463,6 +528,7 @@ Pérdidas por deterioro de bienes del Patrimonio Histórico + 694 @@ -470,6 +536,7 @@ Pérdidas por deterioro de créditos por operaciones de la actividad + 720 @@ -477,6 +544,7 @@ Cuotas de asociados y afiliados + 721 @@ -484,6 +552,7 @@ Cuotas de usuarios + 722 @@ -491,6 +560,7 @@ Promociones de captación de recursos + 7230 @@ -498,6 +568,7 @@ Patrocinio + 7231 @@ -505,6 +576,7 @@ Patrocinio publicitario + 7233 @@ -512,6 +584,7 @@ Colaboraciones empresariales + 728 @@ -519,6 +592,7 @@ Ingresos por reintegro de ayudas y asignaciones + 763 @@ -526,6 +600,7 @@ Beneficios por valoración de instrumentos financieros por su valor razonable + 791 @@ -533,6 +608,7 @@ Reversión del deterioro del inmovilizado material y de bienes del Patrimonio Histórico + 794 @@ -540,6 +616,7 @@ Reversión del deterioro de créditos por operaciones de la actividad + 7962 @@ -547,6 +624,7 @@ Reversión del deterioro de participaciones en instrumentos de patrimonio neto a largo plazo, otras partes vinculadas + 7963 @@ -554,6 +632,7 @@ Reversión del deterioro de participaciones en instrumentos de patrimonio neto a largo plazo, otras empresas + diff --git a/addons/l10n_es/data/account_account_template_common_data.xml b/addons/l10n_es/data/account_account_template_common_data.xml index 18d8e96d188..1a489efb07d 100644 --- a/addons/l10n_es/data/account_account_template_common_data.xml +++ b/addons/l10n_es/data/account_account_template_common_data.xml @@ -7,6 +7,7 @@ Fondo social + 102 @@ -14,6 +15,7 @@ Capital + 108 @@ -21,6 +23,7 @@ Acciones o participaciones propias en situaciones especiales + 109 @@ -28,6 +31,7 @@ Acciones o participaciones propias para reducción de capital + 110 @@ -35,6 +39,7 @@ Prima de emisión o asunción + 112 @@ -42,6 +47,7 @@ Reserva legal + 113 @@ -49,6 +55,7 @@ Reservas voluntarias + 1140 @@ -56,6 +63,7 @@ Reservas para acciones o participaciones de la sociedad dominante + 1141 @@ -63,6 +71,7 @@ Reservas estatutarias + 1142 @@ -70,6 +79,7 @@ Reserva por capital amortizado + 1144 @@ -77,6 +87,7 @@ Reservas por acciones propias aceptadas en garantía + 118 @@ -84,6 +95,7 @@ Aportaciones de socios o propietarios + 119 @@ -91,6 +103,7 @@ Diferencias por ajuste del capital a euros + 131 @@ -98,6 +111,7 @@ Donaciones y legados de capital + 1370 @@ -105,6 +119,7 @@ Ingresos fiscales por diferencias permanentes a distribuir en varios ejercicios + 1371 @@ -112,6 +127,7 @@ Ingresos fiscales por deducciones y bonificaciones a distribuir en varios ejercicios + 141 @@ -119,6 +135,7 @@ Provisión para impuestos + 142 @@ -126,6 +143,7 @@ Provisión para otras responsabilidades + 143 @@ -133,6 +151,7 @@ Provisión por desmantelamiento, retiro o rehabilitación del inmovilizado + 145 @@ -140,6 +159,7 @@ Provisión para actuaciones medioambientales + 150 @@ -147,6 +167,7 @@ Acciones o participaciones consideradas como pasivos financieros + 1533 @@ -154,6 +175,7 @@ Desembolsos no exigidos, empresas del grupo + 1534 @@ -161,6 +183,7 @@ Desembolsos no exigidos, empresas asociadas + 1535 @@ -168,6 +191,7 @@ Desembolsos no exigidos, otras partes vinculadas + 1536 @@ -175,6 +199,7 @@ Otros desembolsos no exigidos + 1543 @@ -182,6 +207,7 @@ Aportaciones no dinerarias pendientes, empresas del grupo + 1544 @@ -189,6 +215,7 @@ Aportaciones no dinerarias pendientes, empresas asociadas + 1545 @@ -196,6 +223,7 @@ Aportaciones no dinerarias pendientes, otras partes vinculadas + 1546 @@ -203,6 +231,7 @@ Otras aportaciones no dinerarias pendientes + 1603 @@ -210,6 +239,7 @@ Deudas con entidades de crédito vinculadas, empresas del grupo + 1604 @@ -217,6 +247,7 @@ Deudas con entidades de crédito vinculadas, empresas asociadas + 1605 @@ -224,6 +255,7 @@ Deudas con otras entidades de crédito vinculadas + 1613 @@ -231,6 +263,7 @@ Proveedores de inmovilizado, empresas del grupo + 1614 @@ -238,6 +271,7 @@ Proveedores de inmovilizado, empresas asociadas + 1615 @@ -245,6 +279,7 @@ Proveedores de inmovilizado, otras partes vinculadas + 1623 @@ -252,6 +287,7 @@ Acreedores por arrendamiento financiero, empresas de grupo + 1624 @@ -259,6 +295,7 @@ Acreedores por arrendamiento financiero, empresas asociadas + 1625 @@ -266,6 +303,7 @@ Acreedores por arrendamiento financiero, otras partes vinculadas + 1633 @@ -273,6 +311,7 @@ Otras deudas, empresas del grupo + 1634 @@ -280,6 +319,7 @@ Otras deudas, empresas asociadas + 1635 @@ -287,6 +327,7 @@ Otras deudas, con otras partes vinculadas + 170 @@ -294,6 +335,7 @@ Deudas con entidades de crédito + 171 @@ -301,6 +343,7 @@ Deudas + 172 @@ -308,6 +351,7 @@ Deudas transformables en subvenciones, donaciones y legados + 173 @@ -315,6 +359,7 @@ Proveedores de inmovilizado + 174 @@ -322,6 +367,7 @@ Acreedores por arrendamiento financiero + 175 @@ -329,6 +375,7 @@ Efectos a pagar + 176 @@ -336,6 +383,7 @@ Pasivos por derivados financieros + 177 @@ -343,6 +391,7 @@ Obligaciones y bonos + 179 @@ -350,6 +399,7 @@ Deudas representadas en otros valores negociables + 180 @@ -357,6 +407,7 @@ Fianzas recibidas + 181 @@ -364,6 +415,7 @@ Anticipos recibidos por ventas o prestaciones de servicios + 185 @@ -371,6 +423,7 @@ Depósitos recibidos + 190 @@ -378,6 +431,7 @@ Acciones o participaciones emitidas + 192 @@ -385,6 +439,7 @@ Suscriptores de acciones + 194 @@ -392,6 +447,7 @@ Capital emitido pendiente de inscripción + 195 @@ -399,6 +455,7 @@ Acciones o participaciones emitidas consideradas como pasivos financieros + 197 @@ -406,6 +463,7 @@ Suscriptores de acciones consideradas como pasivos financieros + 199 @@ -413,6 +471,7 @@ Acciones o participaciones emitidas consideradas como pasivos financieros pendientes de inscripción + 200 @@ -420,6 +479,7 @@ Investigación + 201 @@ -427,6 +487,7 @@ Desarrollo + 202 @@ -434,6 +495,7 @@ Concesiones administrativas + 203 @@ -441,6 +503,7 @@ Propiedad industrial + 205 @@ -448,6 +511,7 @@ Derechos de traspaso + 206 @@ -455,6 +519,7 @@ Aplicaciones informáticas + 209 @@ -462,6 +527,7 @@ Anticipos para inmovilizaciones intangibles + 210 @@ -469,6 +535,7 @@ Terrenos y bienes naturales + 211 @@ -476,6 +543,7 @@ Construcciones + 212 @@ -483,6 +551,7 @@ Instalaciones técnicas + 213 @@ -490,6 +559,7 @@ Maquinaria + 214 @@ -497,6 +567,7 @@ Utillaje + 215 @@ -504,6 +575,7 @@ Otras instalaciones + 216 @@ -511,6 +583,7 @@ Mobiliario + 217 @@ -518,6 +591,7 @@ Equipos para proceso de información + 218 @@ -525,6 +599,7 @@ Elementos de transporte + 219 @@ -532,6 +607,7 @@ Otro inmovilizado material + 220 @@ -539,6 +615,7 @@ Inversiones en terrenos y bienes naturales + 221 @@ -546,6 +623,7 @@ Inversiones en construcciones + 230 @@ -553,6 +631,7 @@ Adaptación de terrenos y bienes naturales + 231 @@ -560,6 +639,7 @@ Construcciones en curso + 232 @@ -567,6 +647,7 @@ Instalaciones técnicas en montaje + 233 @@ -574,6 +655,7 @@ Maquinaria en montaje + 237 @@ -581,6 +663,7 @@ Equipos para procesos de información en montaje + 239 @@ -588,6 +671,7 @@ Anticipos para inmovilizaciones materiales + 2413 @@ -595,6 +679,7 @@ Valores representativos de deuda de empresas del grupo + 2414 @@ -602,6 +687,7 @@ Valores representativos de deuda de empresas asociadas + 2415 @@ -609,6 +695,7 @@ Valores representativos de deuda de otras partes vinculadas + 2423 @@ -616,6 +703,7 @@ Créditos a empresas del grupo + 2424 @@ -623,6 +711,7 @@ Créditos a empresas asociadas + 2425 @@ -630,6 +719,7 @@ Créditos a otras partes vinculadas + 250 @@ -637,6 +727,7 @@ Inversiones financieras en instrumentos de patrimonio + 251 @@ -644,6 +735,7 @@ Valores representativos de deuda + 252 @@ -651,6 +743,7 @@ Créditos + 253 @@ -658,6 +751,7 @@ Créditos por enajenación de inmovilizado + 254 @@ -665,6 +759,7 @@ Créditos al personal + 258 @@ -672,6 +767,7 @@ Imposiciones + 259 @@ -679,6 +775,7 @@ Desembolsos pendientes sobre participaciones en el patrimonio neto + 260 @@ -686,6 +783,7 @@ Fianzas constituidas + 265 @@ -693,6 +791,7 @@ Depósitos constituidos + 2800 @@ -700,6 +799,7 @@ Amortización acumulada de investigación + 2801 @@ -707,6 +807,7 @@ Amortización acumulada de desarrollo + 2802 @@ -714,6 +815,7 @@ Amortización acumulada de concesiones administrativas + 2803 @@ -721,6 +823,7 @@ Amortización acumulada de propiedad industrial + 2805 @@ -728,6 +831,7 @@ Amortización acumulada de derechos de traspaso + 2806 @@ -735,6 +839,7 @@ Amortización acumulada de aplicaciones informáticas + 2811 @@ -742,6 +847,7 @@ Amortización acumulada de construcciones + 2812 @@ -749,6 +855,7 @@ Amortización acumulada de instalaciones técnicas + 2813 @@ -756,6 +863,7 @@ Amortización acumulada de maquinaria + 2814 @@ -763,6 +871,7 @@ Amortización acumulada de utillaje + 2815 @@ -770,6 +879,7 @@ Amortización acumulada de otras instalaciones + 2816 @@ -777,6 +887,7 @@ Amortización acumulada de mobiliario + 2817 @@ -784,6 +895,7 @@ Amortización acumulada de equipos para proceso de información + 2818 @@ -791,6 +903,7 @@ Amortización acumulada de elementos de transporte + 2819 @@ -798,6 +911,7 @@ Amortización acumulada de otro inmovilizado material + 282 @@ -805,6 +919,7 @@ Amortización acumulada de las inversiones inmobiliarias + 2900 @@ -812,6 +927,7 @@ Deterioro del valor de investigación + 2901 @@ -819,6 +935,7 @@ Deterioro del valor de desarrollo + 2902 @@ -826,6 +943,7 @@ Deterioro del valor de concesiones administrativas + 2903 @@ -833,6 +951,7 @@ Deterioro del valor de propiedad industrial + 2905 @@ -840,6 +959,7 @@ Deterioro del valor de derechos de traspaso + 2906 @@ -847,6 +967,7 @@ Deterioro del valor de aplicaciones informáticas + 2910 @@ -854,6 +975,7 @@ Deterioro de valor de terrenos y bienes naturales + 2911 @@ -861,6 +983,7 @@ Deterioro de valor de construcciones + 2912 @@ -868,6 +991,7 @@ Deterioro de valor de instalaciones técnicas + 2913 @@ -875,6 +999,7 @@ Deterioro de valor de maquinaria + 2914 @@ -882,6 +1007,7 @@ Deterioro de valor de utillaje + 2915 @@ -889,6 +1015,7 @@ Deterioro de valor de otras instalaciones + 2916 @@ -896,6 +1023,7 @@ Deterioro de valor de mobiliario + 2917 @@ -903,6 +1031,7 @@ Deterioro de valor de equipos para proceso de información + 2918 @@ -910,6 +1039,7 @@ Deterioro de valor de elementos de transporte + 2919 @@ -917,6 +1047,7 @@ Deterioro de valor de otro inmovilizado material + 2920 @@ -924,6 +1055,7 @@ Deterioro de valor de los terrenos y bienes naturales + 2921 @@ -931,6 +1063,7 @@ Deterioro de valor de construcciones + 2933 @@ -938,6 +1071,7 @@ Deterioro de valor de participaciones en empresas del grupo + 2934 @@ -945,6 +1079,7 @@ Deterioro de valor de participaciones en empresas asociadas + 2943 @@ -952,6 +1087,7 @@ Deterioro de valor de valores representativos de deuda de empresas del grupo + 2944 @@ -959,6 +1095,7 @@ Deterioro de valor de valores representativos de deuda de empresas asociadas + 2945 @@ -966,6 +1103,7 @@ Deterioro de valor de valores representativos de deuda de otras partes vinculadas + 2953 @@ -973,6 +1111,7 @@ Deterioro de valor de créditos a empresas del grupo + 2954 @@ -980,6 +1119,7 @@ Deterioro de valor de créditos a empresas asociadas + 2955 @@ -987,6 +1127,7 @@ Deterioro de valor de créditos a otras partes vinculadas + 297 @@ -994,6 +1135,7 @@ Deterioro de valor de valores representativos de deuda + 298 @@ -1001,6 +1143,7 @@ Deterioro de valor de créditos + 300 @@ -1008,6 +1151,7 @@ Mercaderías A + 301 @@ -1015,6 +1159,7 @@ Mercaderías B + 310 @@ -1022,6 +1167,7 @@ Materias primas A + 311 @@ -1029,6 +1175,7 @@ Materias primas B + 320 @@ -1036,6 +1183,7 @@ Elementos y conjuntos incorporables + 321 @@ -1043,6 +1191,7 @@ Combustibles + 322 @@ -1050,6 +1199,7 @@ Repuestos + 325 @@ -1057,6 +1207,7 @@ Materiales diversos + 326 @@ -1064,6 +1215,7 @@ Embalajes + 327 @@ -1071,6 +1223,7 @@ Envases + 328 @@ -1078,6 +1231,7 @@ Material de oficina + 330 @@ -1085,6 +1239,7 @@ Productos en curso A + 331 @@ -1092,6 +1247,7 @@ Productos en curso B + 340 @@ -1099,6 +1255,7 @@ Productos semiterminados A + 341 @@ -1106,6 +1263,7 @@ Productos semiterminados B + 350 @@ -1113,6 +1271,7 @@ Productos terminados A + 351 @@ -1120,6 +1279,7 @@ Productos terminados B + 360 @@ -1127,6 +1287,7 @@ Subproductos A + 361 @@ -1134,6 +1295,7 @@ Subproductos B + 365 @@ -1141,6 +1303,7 @@ Residuos A + 366 @@ -1148,6 +1311,7 @@ Residuos B + 368 @@ -1155,6 +1319,7 @@ Materiales recuperados A + 369 @@ -1162,6 +1327,7 @@ Materiales recuperados B + 390 @@ -1169,6 +1335,7 @@ Deterioro de valor de las mercaderías + 391 @@ -1176,6 +1343,7 @@ Deterioro de valor de las materias primas + 392 @@ -1183,6 +1351,7 @@ Deterioro de valor de otros aprovisionamientos + 393 @@ -1190,6 +1359,7 @@ Deterioro de valor de los productos en curso + 394 @@ -1197,6 +1367,7 @@ Deterioro de valor de los productos semiterminados + 395 @@ -1204,6 +1375,7 @@ Deterioro de valor de los productos terminados + 396 @@ -1211,6 +1383,7 @@ Deterioro de valor de los subproductos, residuos y materiales recuperados + 4000 @@ -1218,6 +1391,7 @@ Proveedores (euros) + 4004 @@ -1225,6 +1399,7 @@ Proveedores (moneda extranjera) + 4009 @@ -1232,6 +1407,7 @@ Proveedores, facturas pendientes de recibir o de formalizar + 401 @@ -1239,6 +1415,7 @@ Proveedores, efectos comerciales a pagar + 4030 @@ -1246,6 +1423,7 @@ Proveedores, empresas del grupo (euros) + 4031 @@ -1253,6 +1431,7 @@ Efectos comerciales a pagar, empresas del grupo + 4034 @@ -1260,6 +1439,7 @@ Proveedores, empresas del grupo (moneda extranjera) + 4036 @@ -1267,6 +1447,7 @@ Envases y embalajes a devolver a proveedores, empresas del grupo + 4039 @@ -1274,6 +1455,7 @@ Proveedores, empresas del grupo, facturas pendientes de recibir o de formalizar + 404 @@ -1281,6 +1463,7 @@ Proveedores, empresas asociadas + 405 @@ -1288,6 +1471,7 @@ Proveedores, otras partes vinculadas + 406 @@ -1295,6 +1479,7 @@ Envases y embalajes a devolver a proveedores + 407 @@ -1302,6 +1487,7 @@ Anticipos a proveedores + 4100 @@ -1309,6 +1495,7 @@ Acreedores por prestaciones de servicios (euros) + 4104 @@ -1316,6 +1503,7 @@ Acreedores por prestaciones de servicios (moneda extranjera) + 4109 @@ -1323,6 +1511,7 @@ Acreedores por prestaciones de servicios, facturas pendientes de recibir o de formalizar + 411 @@ -1330,6 +1519,7 @@ Acreedores, efectos comerciales a pagar + 419 @@ -1337,6 +1527,7 @@ Acreedores por operaciones en común + 4300 @@ -1344,6 +1535,7 @@ Clientes (euros) + 4304 @@ -1351,6 +1543,7 @@ Clientes (moneda extranjera) + 4309 @@ -1358,6 +1551,7 @@ Clientes, facturas pendientes de recibir o de formalizar + 4310 @@ -1365,6 +1559,7 @@ Efectos comerciales en cartera + 4311 @@ -1372,6 +1567,7 @@ Efectos comerciales descontados + 4312 @@ -1379,6 +1575,7 @@ Efectos comerciales en gestión de cobro + 4315 @@ -1386,6 +1583,7 @@ Efectos comerciales impagados + 432 @@ -1393,6 +1591,7 @@ Clientes, operaciones de factoring + 4330 @@ -1400,6 +1599,7 @@ Clientes empresas del grupo (euros) + 4331 @@ -1407,6 +1607,7 @@ Efectos comerciales a cobrar, empresas del grupo + 4332 @@ -1414,6 +1615,7 @@ Clientes empresas del grupo, operaciones de factoring + 4334 @@ -1421,6 +1623,7 @@ Clientes empresas del grupo (moneda extranjera) + 4336 @@ -1428,6 +1631,7 @@ Clientes empresas del grupo de dudoso cobro + 4337 @@ -1435,6 +1639,7 @@ Envases y embalajes a devolver a clientes, empresas del grupo + 4339 @@ -1442,6 +1647,7 @@ Clientes empresas del grupo, facturas pendientes de formalizar + 434 @@ -1449,6 +1655,7 @@ Clientes, empresas asociadas + 435 @@ -1456,6 +1663,7 @@ Clientes, otras partes vinculadas + 436 @@ -1463,6 +1671,7 @@ Clientes de dudoso cobro + 437 @@ -1470,6 +1679,7 @@ Envases y embalajes a devolver por clientes + 438 @@ -1477,6 +1687,7 @@ Anticipos de clientes + 4400 @@ -1484,6 +1695,7 @@ Deudores (euros) + 4404 @@ -1491,6 +1703,7 @@ Deudores (moneda extranjera) + 4409 @@ -1498,6 +1711,7 @@ Deudores, facturas pendientes de formalizar + 4410 @@ -1505,6 +1719,7 @@ Deudores, efectos comerciales en cartera + 4411 @@ -1512,6 +1727,7 @@ Deudores, efectos comerciales descontados + 4412 @@ -1519,6 +1735,7 @@ Deudores, efectos comerciales en gestión de cobro + 4415 @@ -1526,6 +1743,7 @@ Deudores, efectos comerciales impagados + 446 @@ -1533,6 +1751,7 @@ Deudores de dudoso cobro + 449 @@ -1540,6 +1759,7 @@ Deudores por operaciones en común + 460 @@ -1547,6 +1767,7 @@ Anticipos de remuneraciones + 465 @@ -1554,6 +1775,7 @@ Remuneraciones pendientes de pago + 4700 @@ -1561,6 +1783,7 @@ Hacienda Pública, deudora por IVA + 4708 @@ -1568,6 +1791,7 @@ Hacienda Pública, deudora por subvenciones concedidas + 4709 @@ -1575,6 +1799,7 @@ Hacienda Pública, deudora por devolución de impuestos + 471 @@ -1582,6 +1807,7 @@ Organismos de la Seguridad Social, deudores + 472 @@ -1589,6 +1815,7 @@ Hacienda Pública. IVA soportado + 473 @@ -1596,6 +1823,7 @@ Hacienda Pública, retenciones y pagos a cuenta + 4740 @@ -1603,6 +1831,7 @@ Activos por diferencias temporarias deducibles + 4742 @@ -1610,6 +1839,7 @@ Derechos por deducciones y bonificaciones pendientes de aplicar + 4745 @@ -1617,6 +1847,7 @@ Crédito por pérdidas a compensar del ejercicio + 4750 @@ -1624,6 +1855,7 @@ Hacienda Pública, acreedora por IVA + 4751 @@ -1631,6 +1863,7 @@ Hacienda Pública, acreedora por retenciones practicadas + 4752 @@ -1638,6 +1871,7 @@ Hacienda Pública, acreedora por impuesto sobre sociedades + 4758 @@ -1645,6 +1879,7 @@ Hacienda Pública, acreedora por subvenciones a reintegrar + 4759 @@ -1652,6 +1887,7 @@ Hacienda Pública, acreedora por otros conceptos + 476 @@ -1659,6 +1895,7 @@ Organismos de la Seguridad Social, acreedores + 477 @@ -1666,6 +1903,7 @@ Hacienda Pública. IVA repercutido + 479 @@ -1673,6 +1911,7 @@ Pasivos por diferencias temporarias imponibles + 480 @@ -1680,6 +1919,7 @@ Gastos anticipados + 485 @@ -1687,6 +1927,7 @@ Ingresos anticipados + 4933 @@ -1694,6 +1935,7 @@ Deterioro de valor de créditos por operaciones comerciales con empresas del grupo + 4934 @@ -1701,6 +1943,7 @@ Deterioro de valor de créditos por operaciones comerciales con empresas asociadas + 4935 @@ -1708,6 +1951,7 @@ Deterioro de valor de créditos por operaciones comerciales con otras partes vinculadas + 4994 @@ -1715,6 +1959,7 @@ Provisión por contratos onerosos + 4999 @@ -1722,6 +1967,7 @@ Provisión para otras operaciones comerciales + 500 @@ -1729,6 +1975,7 @@ Obligaciones y bonos a corto plazo + 502 @@ -1736,6 +1983,7 @@ Acciones o participaciones a corto plazo consideradas como pasivos financieros + 505 @@ -1743,6 +1991,7 @@ Deudas representadas en otros valores negociables a corto plazo + 506 @@ -1750,6 +1999,7 @@ Intereses a corto plazo de empréstitos y otras emisiones análogas + 507 @@ -1757,6 +2007,7 @@ Dividendos de acciones o participaciones consideradas como pasivos financieros + 5090 @@ -1764,6 +2015,7 @@ Obligaciones y bonos amortizados + 5095 @@ -1771,6 +2023,7 @@ Otros valores negociables amortizados + 5103 @@ -1778,6 +2031,7 @@ Deudas a corto plazo con entidades de crédito, empresas del grupo + 5104 @@ -1785,6 +2039,7 @@ Deudas a corto plazo con entidades de crédito, empresas asociadas + 5105 @@ -1792,6 +2047,7 @@ Deudas a corto plazo con otras entidades de crédito vinculadas + 5113 @@ -1799,6 +2055,7 @@ Proveedores de inmovilizado a corto plazo, empresas del grupo + 5114 @@ -1806,6 +2063,7 @@ Proveedores de inmovilizado a corto plazo, empresas asociadas + 5115 @@ -1813,6 +2071,7 @@ Proveedores de inmovilizado a corto plazo, otras partes vinculadas + 5123 @@ -1820,6 +2079,7 @@ Acreedores por arrendamiento financiero a corto plazo, empresas del grupo + 5124 @@ -1827,6 +2087,7 @@ Acreedores por arrendamiento financiero a corto plazo, empresas asociadas + 5125 @@ -1834,6 +2095,7 @@ Acreedores por arrendamiento financiero a corto plazo, otras partes vinculadas + 5133 @@ -1841,6 +2103,7 @@ Otras deudas a corto plazo con empresas del grupo + 5134 @@ -1848,6 +2111,7 @@ Otras deudas a corto plazo con empresas asociadas + 5135 @@ -1855,6 +2119,7 @@ Otras deudas a corto plazo con otras partes vinculadas + 5143 @@ -1862,6 +2127,7 @@ Intereses a corto plazo de deudas con empresas del grupo + 5144 @@ -1869,6 +2135,7 @@ Intereses a corto plazo de deudas con empresas asociadas + 5145 @@ -1876,6 +2143,7 @@ Intereses a corto plazo de deudas con otras partes vinculadas + 5200 @@ -1883,6 +2151,7 @@ Préstamos a corto plazo de entidades de crédito + 5201 @@ -1890,6 +2159,7 @@ Deudas a corto plazo por crédito dispuesto + 5208 @@ -1897,6 +2167,7 @@ Deudas por efectos descontados + 5209 @@ -1904,6 +2175,7 @@ Deudas por operaciones de “factoring” + 521 @@ -1911,6 +2183,7 @@ Deudas a corto plazo + 522 @@ -1918,6 +2191,7 @@ Deudas a corto plazo transformables en subvenciones, donaciones y legados + 523 @@ -1925,6 +2199,7 @@ Proveedores de inmovilizado a corto plazo + 524 @@ -1932,6 +2207,7 @@ Acreedores por arrendamiento financiero a corto plazo + 525 @@ -1939,6 +2215,7 @@ Efectos a pagar a corto plazo + 526 @@ -1946,6 +2223,7 @@ Dividendo activo a pagar + 527 @@ -1953,6 +2231,7 @@ Intereses a corto plazo de deudas con entidades de crédito + 528 @@ -1960,6 +2239,7 @@ Intereses a corto plazo de deudas + 5290 @@ -1967,6 +2247,7 @@ Provisión a corto plazo por retribuciones al personal + 5291 @@ -1974,6 +2255,7 @@ Provisión a corto plazo para impuestos + 5292 @@ -1981,6 +2263,7 @@ Provisión a corto plazo para otras responsabilidades + 5293 @@ -1988,6 +2271,7 @@ Provisión a corto plazo por desmantelamiento, retiro o rehabilitación del inmovilizado + 5295 @@ -1995,6 +2279,7 @@ Provisión a corto plazo para actuaciones medioambientales + 5303 @@ -2002,6 +2287,7 @@ Participaciones a corto plazo en empresas del grupo + 5304 @@ -2009,6 +2295,7 @@ Participaciones a corto plazo en empresas asociadas + 5305 @@ -2016,6 +2303,7 @@ Participaciones a corto plazo en otras partes vinculadas + 5313 @@ -2023,6 +2311,7 @@ Valores representativos de deuda a corto plazo de empresas del grupo + 5314 @@ -2030,6 +2319,7 @@ Valores representativos de deuda a corto plazo de empresas asociadas + 5315 @@ -2037,6 +2327,7 @@ Valores representativos de deuda a corto plazo de otras partes vinculadas + 5323 @@ -2044,6 +2335,7 @@ Créditos a corto plazo a empresas del grupo + 5324 @@ -2051,6 +2343,7 @@ Créditos a corto plazo a empresas asociadas + 5325 @@ -2058,6 +2351,7 @@ Créditos a corto plazo a otras partes vinculadas + 5333 @@ -2065,6 +2359,7 @@ Intereses a corto plazo de valores representativos de deuda de empresas del grupo + 5334 @@ -2072,6 +2367,7 @@ Intereses a corto plazo de valores representativos de deuda de empresas asociadas + 5335 @@ -2079,6 +2375,7 @@ Intereses a corto plazo de valores representativos de deuda de otras partes vinculadas + 5343 @@ -2086,6 +2383,7 @@ Intereses a corto plazo de créditos a empresas del grupo + 5344 @@ -2093,6 +2391,7 @@ Intereses a corto plazo de créditos a empresas asociadas + 5345 @@ -2100,6 +2399,7 @@ Intereses a corto plazo de créditos a otras partes vinculadas + 5353 @@ -2107,6 +2407,7 @@ Dividendo a cobrar de inversiones financieras en empresas del grupo + 5354 @@ -2114,6 +2415,7 @@ Dividendo a cobrar de inversiones financieras en empresas asociadas + 5355 @@ -2121,6 +2423,7 @@ Dividendo a cobrar de inversiones financieras en otras partes vinculadas + 5393 @@ -2128,6 +2431,7 @@ Desembolsos pendientes sobre participaciones a corto plazo en empresas del grupo + 5394 @@ -2135,6 +2439,7 @@ Desembolsos pendientes sobre participaciones a corto plazo en empresas asociadas + 5395 @@ -2142,6 +2447,7 @@ Desembolsos pendientes sobre participaciones a corto plazo en otras partes vinculadas + 540 @@ -2149,6 +2455,7 @@ Inversiones financieras a corto plazo en instrumentos de patrimonio + 541 @@ -2156,6 +2463,7 @@ Valores representativos de deuda a corto plazo + 542 @@ -2163,6 +2471,7 @@ Créditos a corto plazo + 543 @@ -2170,6 +2479,7 @@ Créditos a corto plazo por enajenación de inmovilizado + 544 @@ -2177,6 +2487,7 @@ Créditos a corto plazo al personal + 545 @@ -2184,6 +2495,7 @@ Dividendo a cobrar + 546 @@ -2191,6 +2503,7 @@ Intereses a corto plazo de valores representativos de deudas + 547 @@ -2198,6 +2511,7 @@ Intereses a corto plazo de créditos + 548 @@ -2205,6 +2519,7 @@ Imposiciones a corto plazo + 549 @@ -2212,6 +2527,7 @@ Desembolsos pendientes sobre participaciones en el patrimonio neto a corto plazo + 550 @@ -2219,6 +2535,7 @@ Titular de la explotación + 5523 @@ -2226,6 +2543,7 @@ Cuenta corriente con empresas del grupo + 5524 @@ -2233,6 +2551,7 @@ Cuenta corriente con empresas asociadas + 5525 @@ -2240,6 +2559,7 @@ Cuenta corriente con otras partes vinculadas + 554 @@ -2247,6 +2567,7 @@ Cuenta corriente con uniones temporales de empresas y comunidades de bienes + 555 @@ -2254,6 +2575,7 @@ Partidas pendientes de aplicación + 5563 @@ -2261,6 +2583,7 @@ Desembolsos exigidos sobre participaciones, empresas del grupo + 5564 @@ -2268,6 +2591,7 @@ Desembolsos exigidos sobre participaciones, empresas asociadas + 5565 @@ -2275,6 +2599,7 @@ Desembolsos exigidos sobre participaciones, otras partes vinculadas + 5566 @@ -2282,6 +2607,7 @@ Desembolsos exigidos sobre participaciones de otras empresas + 557 @@ -2289,6 +2615,7 @@ Dividendo activo a cuenta + 5580 @@ -2296,6 +2623,7 @@ Socios por desembolsos exigidos sobre acciones o participaciones ordinarias + 5585 @@ -2303,6 +2631,7 @@ Socios por desembolsos exigidos sobre acciones o participaciones consideradas como pasivos financieros + 5590 @@ -2310,6 +2639,7 @@ Activos por derivados financieros a corto plazo, cartera de negociación + 5595 @@ -2317,6 +2647,7 @@ Pasivos por derivados financieros a corto plazo, cartera de negociación + 560 @@ -2324,6 +2655,7 @@ Fianzas recibidas a corto plazo + 561 @@ -2331,6 +2663,7 @@ Depósitos recibidos a corto plazo + 565 @@ -2338,6 +2671,7 @@ Fianzas constituidas a corto plazo + 566 @@ -2345,6 +2679,7 @@ Depósitos constituidos a corto plazo + 567 @@ -2352,6 +2687,7 @@ Intereses pagados por anticipado + 568 @@ -2359,6 +2695,7 @@ Intereses cobrados por anticipado + 570 @@ -2366,6 +2703,7 @@ Caja, euros + 571 @@ -2373,6 +2711,7 @@ Caja, moneda extranjera + 572 @@ -2380,6 +2719,7 @@ Bancos e instituciones de crédito c/c vista, euros + 573 @@ -2387,6 +2727,7 @@ Bancos e instituciones de crédito c/c vista, moneda extranjera + 574 @@ -2394,6 +2735,7 @@ Bancos e instituciones de crédito, cuentas de ahorro, euros + 575 @@ -2401,6 +2743,7 @@ Bancos e instituciones de crédito, cuentas de ahorro, moneda extranjera + 576 @@ -2408,6 +2751,7 @@ Inversiones a corto plazo de gran liquidez + 5933 @@ -2415,6 +2759,7 @@ Deterioro de valor de participaciones a corto plazo en empresas del grupo + 5934 @@ -2422,6 +2767,7 @@ Deterioro de valor de participaciones a corto plazo en empresas asociadas + 5943 @@ -2429,6 +2775,7 @@ Deterioro de valor de valores representativos de deuda a corto plazo de empresas del grupo + 5944 @@ -2436,6 +2783,7 @@ Deterioro de valor de valores representativos de deuda a corto plazo de empresas asociadas + 5945 @@ -2443,6 +2791,7 @@ Deterioro de valor de valores representativos de deuda a corto plazo de otras partes vinculadas + 5953 @@ -2450,6 +2799,7 @@ Deterioro de valor de créditos a corto plazo a empresas del grupo + 5954 @@ -2457,6 +2807,7 @@ Deterioro de valor de créditos a corto plazo a empresas asociadas + 5955 @@ -2464,6 +2815,7 @@ Deterioro de valor de créditos a corto plazo a otras partes vinculadas + 597 @@ -2471,6 +2823,7 @@ Deterioro de valor de valores representativos de deuda a corto plazo + 598 @@ -2478,6 +2831,7 @@ Deterioro de valor de créditos a corto plazo + 600 @@ -2485,6 +2839,7 @@ Compras de mercaderías + 601 @@ -2492,6 +2847,7 @@ Compras de materias primas + 602 @@ -2499,6 +2855,7 @@ Compras de otros aprovisionamientos + 6060 @@ -2506,6 +2863,7 @@ Descuentos sobre compras por pronto pago de mercaderías + 6061 @@ -2513,6 +2871,7 @@ Descuentos sobre compras por pronto pago de materias primas + 6062 @@ -2520,6 +2879,7 @@ Descuentos sobre compras por pronto pago de otros aprovisionamientos + 607 @@ -2527,6 +2887,7 @@ Trabajos realizados por otras empresas + 6080 @@ -2534,6 +2895,7 @@ Devoluciones de compras de mercaderías + 6081 @@ -2541,6 +2903,7 @@ Devoluciones de compras de materias primas + 6082 @@ -2548,6 +2911,7 @@ Devoluciones de compras de otros aprovisionamientos + 6090 @@ -2555,6 +2919,7 @@ "Rappels" por compras de mercaderías + 6091 @@ -2562,6 +2927,7 @@ "Rappels" por compras de materias primas + 6092 @@ -2569,6 +2935,7 @@ "Rappels" por compras de otros aprovisionamientos + 610 @@ -2576,6 +2943,7 @@ Variación de existencias de mercaderías + 611 @@ -2583,6 +2951,7 @@ Variación de existencias de materias primas + 612 @@ -2590,6 +2959,7 @@ Variación de existencias de otros aprovisionamientos + 620 @@ -2597,6 +2967,7 @@ Gastos en investigación y desarrollo del ejercicio + 621 @@ -2604,6 +2975,7 @@ Arrendamientos y cánones + 622 @@ -2611,6 +2983,7 @@ Reparaciones y conservación + 623 @@ -2618,6 +2991,7 @@ Servicios de profesionales independientes + 624 @@ -2625,6 +2999,7 @@ Transportes + 625 @@ -2632,6 +3007,7 @@ Primas de seguros + 626 @@ -2639,6 +3015,7 @@ Servicios bancarios y similares + 627 @@ -2646,6 +3023,7 @@ Publicidad, propaganda y relaciones públicas + 628 @@ -2653,6 +3031,7 @@ Suministros + 629 @@ -2660,6 +3039,7 @@ Otros servicios + 6300 @@ -2667,6 +3047,7 @@ Impuesto corriente + 6301 @@ -2674,6 +3055,7 @@ Impuesto diferido + 631 @@ -2681,6 +3063,7 @@ Otros tributos + 633 @@ -2688,6 +3071,7 @@ Ajustes negativos en la imposición sobre beneficios + 6341 @@ -2695,6 +3079,7 @@ Ajustes negativos en IVA de activo corriente + 6342 @@ -2702,6 +3087,7 @@ Ajustes negativos en IVA de inversiones + 636 @@ -2709,6 +3095,7 @@ Devolución de impuestos + 638 @@ -2716,6 +3103,7 @@ Ajustes positivos en la imposición sobre beneficios + 6391 @@ -2723,6 +3111,7 @@ Ajustes positivos en IVA de activo corriente + 6392 @@ -2730,6 +3119,7 @@ Ajustes positivos en IVA de inversiones + 640 @@ -2737,6 +3127,7 @@ Sueldos y salarios + 641 @@ -2744,6 +3135,7 @@ Indemnizaciones + 642 @@ -2751,6 +3143,7 @@ Seguridad Social a cargo de la empresa + 649 @@ -2758,6 +3151,7 @@ Otros gastos sociales + 660 @@ -2765,6 +3159,7 @@ Gastos financieros por actualización de provisiones + 6610 @@ -2772,6 +3167,7 @@ Intereses de obligaciones y bonos, empresas del grupo + 6611 @@ -2779,6 +3175,7 @@ Intereses de obligaciones y bonos, empresas asociadas + 6612 @@ -2786,6 +3183,7 @@ Intereses de obligaciones y bonos, otras partes vinculadas + 6613 @@ -2793,6 +3191,7 @@ Intereses de obligaciones y bonos, otras empresas + 6615 @@ -2800,6 +3199,7 @@ Intereses de obligaciones y bonos a corto plazo, empresas del grupo + 6616 @@ -2807,6 +3207,7 @@ Intereses de obligaciones y bonos a corto plazo, empresas asociadas + 6617 @@ -2814,6 +3215,7 @@ Intereses de obligaciones y bonos a corto plazo, otras partes vinculadas + 6618 @@ -2821,6 +3223,7 @@ Intereses de obligaciones y bonos a corto plazo, otras empresas + 6620 @@ -2828,6 +3231,7 @@ Intereses de deudas, empresas del grupo + 6621 @@ -2835,6 +3239,7 @@ Intereses de deudas, empresas asociadas + 6622 @@ -2842,6 +3247,7 @@ Intereses de deudas, otras partes vinculadas + 6623 @@ -2849,6 +3255,7 @@ Intereses de deudas con entidades de crédito + 6624 @@ -2856,6 +3263,7 @@ Intereses de deudas, otras empresas + 6640 @@ -2863,6 +3271,7 @@ Dividendos de pasivos, empresas del grupo + 6641 @@ -2870,6 +3279,7 @@ Dividendos de pasivos, empresas asociadas + 6642 @@ -2877,6 +3287,7 @@ Dividendos de pasivos, otras partes vinculadas + 6643 @@ -2884,6 +3295,7 @@ Dividendos de pasivos, otras empresas + 6650 @@ -2891,6 +3303,7 @@ Intereses por descuento de efectos en entidades de crédito del grupo + 6651 @@ -2898,6 +3311,7 @@ Intereses por descuento de efectos en entidades de crédito asociadas + 6652 @@ -2905,6 +3319,7 @@ Intereses por descuento de efectos en entidades de crédito vinculadas + 6653 @@ -2912,6 +3327,7 @@ Intereses por descuento de efectos en otras entidades de crédito + 6654 @@ -2919,6 +3335,7 @@ Intereses por operaciones de "factoring" con entidades de crédito del grupo + 6655 @@ -2926,6 +3343,7 @@ Intereses por operaciones de "factoring" con entidades de crédito asociadas + 6656 @@ -2933,6 +3351,7 @@ Intereses por operaciones de "factoring" con entidades de crédito vinculadas + 6657 @@ -2940,6 +3359,7 @@ Intereses por operaciones de "factoring" con otras entidades de crédito + 6660 @@ -2947,6 +3367,7 @@ Pérdidas en valores representativos de deuda, empresas del grupo + 6661 @@ -2954,6 +3375,7 @@ Pérdidas en valores representativos de deuda, empresas asociadas + 6662 @@ -2961,6 +3383,7 @@ Pérdidas en valores representativos de deuda, otras partes vinculadas + 6663 @@ -2968,6 +3391,7 @@ Pérdidas en valores representativos de deuda, otras empresas + 6665 @@ -2975,6 +3399,7 @@ Pérdidas en valores representativos de deuda a corto plazo, empresas del grupo + 6666 @@ -2982,6 +3407,7 @@ Pérdidas en valores representativos de deuda a corto plazo, empresas asociadas + 6667 @@ -2989,6 +3415,7 @@ Pérdidas en valores representativos de deuda a corto plazo, otras partes vinculadas + 6668 @@ -2996,6 +3423,7 @@ Pérdidas en valores representativos de deuda a corto plazo, otras empresas + 6670 @@ -3003,6 +3431,7 @@ Pérdidas de créditos, empresas del grupo + 6671 @@ -3010,6 +3439,7 @@ Pérdidas de créditos, empresas asociadas + 6672 @@ -3017,6 +3447,7 @@ Pérdidas de créditos, otras partes vinculadas + 6673 @@ -3024,6 +3455,7 @@ Pérdidas de créditos, otras empresas + 6675 @@ -3031,6 +3463,7 @@ Pérdidas de créditos a corto plazo, empresas del grupo + 6676 @@ -3038,6 +3471,7 @@ Pérdidas de créditos a corto plazo, empresas asociadas + 6677 @@ -3045,6 +3479,7 @@ Pérdidas de créditos a corto plazo, otras partes vinculadas + 6678 @@ -3052,6 +3487,7 @@ Pérdidas de créditos a corto plazo, otras empresas + 668 @@ -3059,6 +3495,7 @@ Diferencias negativas de cambio + 669 @@ -3066,6 +3503,7 @@ Otros gastos financieros + 670 @@ -3073,6 +3511,7 @@ Pérdidas procedentes del inmovilizado intangible + 672 @@ -3080,6 +3519,7 @@ Pérdidas procedentes de las inversiones inmobiliarias + 6733 @@ -3087,6 +3527,7 @@ Pérdidas procedentes de participaciones en, empresas del grupo + 6734 @@ -3094,6 +3535,7 @@ Pérdidas procedentes de participaciones, empresas asociadas + 6735 @@ -3101,6 +3543,7 @@ Pérdidas procedentes de participaciones, otras partes vinculadas + 675 @@ -3108,6 +3551,7 @@ Pérdidas por operaciones con obligaciones propias + 678 @@ -3115,6 +3559,7 @@ Gastos excepcionales + 680 @@ -3122,6 +3567,7 @@ Amortización del inmovilizado intangible + 681 @@ -3129,6 +3575,7 @@ Amortización del inmovilizado material + 682 @@ -3136,6 +3583,7 @@ Amortización de las inversiones inmobiliarias + 690 @@ -3143,6 +3591,7 @@ Pérdidas por deterioro del inmovilizado intangible + 692 @@ -3150,6 +3599,7 @@ Pérdidas por deterioro de las inversiones inmobiliarias + 6930 @@ -3157,6 +3607,7 @@ Pérdidas por deterioro de productos terminados y en curso de fabricación + 6931 @@ -3164,6 +3615,7 @@ Pérdidas por deterioro de mercaderías + 6932 @@ -3171,6 +3623,7 @@ Pérdidas por deterioro de materias primas + 6933 @@ -3178,6 +3631,7 @@ Pérdidas por deterioro de otros aprovisionamientos + 6954 @@ -3185,6 +3639,7 @@ Dotación a la provisión por contratos onerosos + 6959 @@ -3192,6 +3647,7 @@ Dotación a la provisión para otras operaciones comerciales + 6960 @@ -3199,6 +3655,7 @@ Pérdidas por deterioro de participaciones en instrumentos de patrimonio neto, empresas del grupo + 6961 @@ -3206,6 +3663,7 @@ Pérdidas por deterioro de participaciones en instrumentos de patrimonio neto, empresas asociadas + 6962 @@ -3213,6 +3671,7 @@ Pérdidas por deterioro de participaciones en instrumentos de patrimonio neto, otras partes vinculadas + 6963 @@ -3220,6 +3679,7 @@ Pérdidas por deterioro de participaciones en instrumentos de patrimonio neto, otras empresas + 6965 @@ -3227,6 +3687,7 @@ Pérdidas por deterioro en valores representativos de deuda, empresas del grupo + 6966 @@ -3234,6 +3695,7 @@ Pérdidas por deterioro en valores representativos de deuda, empresas asociadas + 6967 @@ -3241,6 +3703,7 @@ Pérdidas por deterioro en valores representativos de deuda, otras partes vinculadas + 6968 @@ -3248,6 +3711,7 @@ Pérdidas por deterioro en valores representativos de deuda, otras empresas + 6970 @@ -3255,6 +3719,7 @@ Pérdidas por deterioro de créditos, empresas del grupo + 6971 @@ -3262,6 +3727,7 @@ Pérdidas por deterioro de créditos, empresas asociadas + 6972 @@ -3269,6 +3735,7 @@ Pérdidas por deterioro de créditos, otras partes vinculadas + 6973 @@ -3276,6 +3743,7 @@ Pérdidas por deterioro de créditos, otras empresas + 6980 @@ -3283,6 +3751,7 @@ Pérdidas por deterioro de participaciones en instrumentos de patrimonio neto a corto plazo, empresas del grupo + 6981 @@ -3290,6 +3759,7 @@ Pérdidas por deterioro de participaciones en instrumentos de patrimonio neto a corto plazo, empresas asociadas + 6985 @@ -3297,6 +3767,7 @@ Pérdidas por deterioro en valores representativos de deuda a corto plazo, empresas del grupo + 6986 @@ -3304,6 +3775,7 @@ Pérdidas por deterioro en valores representativos de deuda a corto plazo, empresas asociadas + 6987 @@ -3311,6 +3783,7 @@ Pérdidas por deterioro en valores representativos de deuda a corto plazo, otras partes vinculadas + 6988 @@ -3318,6 +3791,7 @@ Pérdidas por deterioro en valores representativos de deuda a corto plazo, otras empresas + 6990 @@ -3325,6 +3799,7 @@ Pérdidas por deterioro de créditos a corto plazo, empresas del grupo + 6991 @@ -3332,6 +3807,7 @@ Pérdidas por deterioro de créditos a corto plazo, empresas asociadas + 6992 @@ -3339,6 +3815,7 @@ Pérdidas por deterioro de créditos a corto plazo, otras partes vinculadas + 6993 @@ -3346,6 +3823,7 @@ Pérdidas por deterioro de créditos a corto plazo, otras empresas + 7000 @@ -3353,6 +3831,7 @@ Ventas de mercaderías en España + 7001 @@ -3360,6 +3839,7 @@ Ventas de mercaderías Intracomunitarias + 7002 @@ -3367,6 +3847,7 @@ Ventas de mercaderías Exportación + 7010 @@ -3374,6 +3855,7 @@ Ventas de productos terminados en España + 7011 @@ -3381,6 +3863,7 @@ Ventas de productos terminados Intracomunitarias + 7012 @@ -3388,6 +3871,7 @@ Ventas de productos terminados Exportación + 7020 @@ -3395,6 +3879,7 @@ Ventas de productos semiterminados en España + 7021 @@ -3402,6 +3887,7 @@ Ventas de productos semiterminados Intracomunitarias + 7022 @@ -3409,6 +3895,7 @@ Ventas de productos semiterminados Exportación + 7030 @@ -3416,6 +3903,7 @@ Ventas de subproductos y residuos en España + 7031 @@ -3423,6 +3911,7 @@ Ventas de subproductos y residuos Intracomunitarias + 7032 @@ -3430,6 +3919,7 @@ Ventas de subproductos y residuos Exportación + 7040 @@ -3437,6 +3927,7 @@ Ventas de envases y embalajes en España + 7041 @@ -3444,6 +3935,7 @@ Ventas de envases y embalajes Intracomunitarias + 7042 @@ -3451,6 +3943,7 @@ Ventas de envases y embalajes Exportación + 7050 @@ -3458,6 +3951,7 @@ Prestaciones de servicios en España + 7051 @@ -3465,6 +3959,7 @@ Prestaciones de servicios Intracomunitarias + 7052 @@ -3472,6 +3967,7 @@ Prestaciones de servicios fuera de la UE + 7060 @@ -3479,6 +3975,7 @@ Descuentos sobre ventas por pronto pago de mercaderías + 7061 @@ -3486,6 +3983,7 @@ Descuentos sobre ventas por pronto pago de productos terminados + 7062 @@ -3493,6 +3991,7 @@ Descuentos sobre ventas por pronto pago de productos semiterminados + 7063 @@ -3500,6 +3999,7 @@ Descuentos sobre ventas por pronto pago de subproductos y residuos + 7080 @@ -3507,6 +4007,7 @@ Devoluciones de ventas de mercaderías + 7081 @@ -3514,6 +4015,7 @@ Devoluciones de ventas de productos terminados + 7082 @@ -3521,6 +4023,7 @@ Devoluciones de ventas de productos semiterminados + 7083 @@ -3528,6 +4031,7 @@ Devoluciones de ventas de subproductos y residuos + 7084 @@ -3535,6 +4039,7 @@ Devoluciones de ventas de envases y embalajes + 7090 @@ -3542,6 +4047,7 @@ "Rappels" sobre ventas de mercaderías + 7091 @@ -3549,6 +4055,7 @@ "Rappels" sobre ventas de productos terminados + 7092 @@ -3556,6 +4063,7 @@ "Rappels" sobre ventas de productos semiterminados + 7093 @@ -3563,6 +4071,7 @@ "Rappels" sobre ventas de subproductos y residuos + 7094 @@ -3570,6 +4079,7 @@ "Rappels" sobre ventas de envases y embalajes + 710 @@ -3577,6 +4087,7 @@ Variación de existencias de productos en curso + 711 @@ -3584,6 +4095,7 @@ Variación de existencias de productos semiterminados + 712 @@ -3591,6 +4103,7 @@ Variación de existencias de productos terminados + 713 @@ -3598,6 +4111,7 @@ Variación de existencias de subproductos, residuos y materiales recuperados + 730 @@ -3605,6 +4119,7 @@ Trabajos realizados para el inmovilizado intangible + 731 @@ -3612,6 +4127,7 @@ Trabajos realizados para el inmovilizado material + 732 @@ -3619,6 +4135,7 @@ Trabajos realizados en inversiones inmobiliarias + 733 @@ -3626,6 +4143,7 @@ Trabajos realizados para el inmovilizado material en curso + 740 @@ -3633,6 +4151,7 @@ Subvenciones, donaciones y legados a la explotación + 746 @@ -3640,6 +4159,7 @@ Subvenciones, donaciones y legados de capital transferidos al resultado del ejercicio + 747 @@ -3647,6 +4167,7 @@ Otras subvenciones, donaciones y legados transferidos al resultado del ejercicio + 7510 @@ -3654,6 +4175,7 @@ Pérdida transferido (gestor) + 7511 @@ -3661,6 +4183,7 @@ Beneficio atribuido (partícipe o asociado no gestor) + 752 @@ -3668,6 +4191,7 @@ Ingresos por arrendamientos + 753 @@ -3675,6 +4199,7 @@ Ingresos de propiedad industrial cedida en explotación + 754 @@ -3682,6 +4207,7 @@ Ingresos por comisiones + 755 @@ -3689,6 +4215,7 @@ Ingresos por servicios al personal + 759 @@ -3696,6 +4223,7 @@ Ingresos por servicios diversos + 7600 @@ -3703,6 +4231,7 @@ Ingresos de participaciones en instrumentos de patrimonio, empresas del grupo + 7601 @@ -3710,6 +4239,7 @@ Ingresos de participaciones en instrumentos de patrimonio, empresas asociadas + 7602 @@ -3717,6 +4247,7 @@ Ingresos de participaciones en instrumentos de patrimonio, otras partes vinculadas + 7603 @@ -3724,6 +4255,7 @@ Ingresos de participaciones en instrumentos de patrimonio, otras empresas + 7610 @@ -3731,6 +4263,7 @@ Ingresos de valores representativos de deuda, empresas del grupo + 7611 @@ -3738,6 +4271,7 @@ Ingresos de valores representativos de deuda, empresas asociadas + 7612 @@ -3745,6 +4279,7 @@ Ingresos de valores representativos de deuda, otras partes vinculadas + 7613 @@ -3752,6 +4287,7 @@ Ingresos de valores representativos de deuda, otras empresas + 76200 @@ -3759,6 +4295,7 @@ Ingresos de créditos a largo plazo, empresas del grupo + 76201 @@ -3766,6 +4303,7 @@ Ingresos de créditos a largo plazo, empresas asociadas + 76202 @@ -3773,6 +4311,7 @@ Ingresos de créditos a largo plazo, otras partes vinculadas + 76203 @@ -3780,6 +4319,7 @@ Ingresos de créditos a largo plazo, otras empresas + 76210 @@ -3787,6 +4327,7 @@ Ingresos de créditos a corto plazo, empresas del grupo + 76211 @@ -3794,6 +4335,7 @@ Ingresos de créditos a corto plazo, empresas asociadas + 76212 @@ -3801,6 +4343,7 @@ Ingresos de créditos a corto plazo, otras partes vinculadas + 76213 @@ -3808,6 +4351,7 @@ Ingresos de créditos a corto plazo, otras empresas + 7660 @@ -3815,6 +4359,7 @@ Beneficios en valores representativos de deuda a largo plazo, empresas del grupo + 7661 @@ -3822,6 +4367,7 @@ Beneficios en valores representativos de deuda a largo plazo, empresas asociadas + 7662 @@ -3829,6 +4375,7 @@ Beneficios en valores representativos de deuda a largo plazo, otras partes vinculadas + 7663 @@ -3836,6 +4383,7 @@ Beneficios en valores representativos de deuda a largo plazo, otras empresas + 7665 @@ -3843,6 +4391,7 @@ Beneficios en valores representativos de deuda a corto plazo, empresas del grupo + 7666 @@ -3850,6 +4399,7 @@ Beneficios en valores representativos de deuda a corto plazo, empresas asociadas + 7667 @@ -3857,6 +4407,7 @@ Beneficios en valores representativos de deuda a corto plazo, otras partes vinculadas + 7668 @@ -3864,6 +4415,7 @@ Beneficios en valores representativos de deuda a corto plazo, otras empresas + 768 @@ -3871,6 +4423,7 @@ Diferencias positivas de cambio + 769 @@ -3878,6 +4431,7 @@ Otros ingresos financieros + 770 @@ -3885,6 +4439,7 @@ Beneficios procedentes del inmovilizado intangible + 771 @@ -3892,6 +4447,7 @@ Beneficios procedentes del inmovilizado material + 772 @@ -3899,6 +4455,7 @@ Beneficios procedentes de las inversiones inmobiliarias + 7733 @@ -3906,6 +4463,7 @@ Beneficios procedentes de participaciones a largo plazo, empresas del grupo + 7734 @@ -3913,6 +4471,7 @@ Beneficios procedentes de participaciones a largo plazo, empresas asociadas + 7735 @@ -3920,6 +4479,7 @@ Beneficios procedentes de participaciones a largo plazo, otras partes vinculadas + 775 @@ -3927,6 +4487,7 @@ Beneficos por operaciones con obligaciones propias + 778 @@ -3934,6 +4495,7 @@ Ingresos excepcionales + 790 @@ -3941,6 +4503,7 @@ Reversión del deterioro del inmovilizado intangible + 792 @@ -3948,6 +4511,7 @@ Reversión del deterioro de las inversiones inmobiliarias + 7930 @@ -3955,6 +4519,7 @@ Reversión del deterioro de productos terminados y en curso de fabricación + 7931 @@ -3962,6 +4527,7 @@ Reversión del deterioro de mercaderías + 7932 @@ -3969,6 +4535,7 @@ Reversión del deterioro de materias primas + 7933 @@ -3976,6 +4543,7 @@ Reversión del deterioro de otros aprovisionamientos + 7951 @@ -3983,6 +4551,7 @@ Exceso de provisión para impuestos + 7952 @@ -3990,6 +4559,7 @@ Exceso de provisión para otras responsabilidades + 79544 @@ -3997,6 +4567,7 @@ Exceso de provisión por contratos onerosos + 79549 @@ -4004,6 +4575,7 @@ Exceso de provisión para otras operaciones comerciales + 7955 @@ -4011,6 +4583,7 @@ Exceso de provisión para actuaciones medioambientales + 7960 @@ -4018,6 +4591,7 @@ Reversión del deterioro de participaciones en instrumentos de patrimonio neto a largo plazo, empresas del grupo + 7961 @@ -4025,6 +4599,7 @@ Reversión del deterioro de participaciones en instrumentos de patrimonio neto a largo plazo, empresas asociadas + 7965 @@ -4032,6 +4607,7 @@ Reversión del deterioro de valores representativos de deuda a largo plazo, empresas del grupo + 7966 @@ -4039,6 +4615,7 @@ Reversión del deterioro de valores representativos de deuda a largo plazo, empresas asociadas + 7967 @@ -4046,6 +4623,7 @@ Reversión del deterioro de valores representativos de deuda a largo plazo, otras partes vinculadas + 7968 @@ -4053,6 +4631,7 @@ Reversión del deterioro de valores representativos de deuda a largo plazo, otras empresas + 7970 @@ -4060,6 +4639,7 @@ Reversión del deterioro de créditos a largo plazo, empresas del grupo + 7971 @@ -4067,6 +4647,7 @@ Reversión del deterioro de créditos a largo plazo, empresas asociadas + 7972 @@ -4074,6 +4655,7 @@ Reversión del deterioro de créditos a largo plazo, otras partes vinculadas + 7973 @@ -4081,6 +4663,7 @@ Reversión del deterioro de créditos a largo plazo, otras empresas + 7980 @@ -4088,6 +4671,7 @@ Reversión del deterioro de participaciones en instrumentos de patrimonio neto a corto plazo, empresas del grupo + 7981 @@ -4095,6 +4679,7 @@ Reversión del deterioro de participaciones en instrumentos de patrimonio neto a corto plazo, empresas asociadas + 7985 @@ -4102,6 +4687,7 @@ Reversión del deterioro de valores representativos de deuda a corto plazo, empresas del grupo + 7986 @@ -4109,6 +4695,7 @@ Reversión del deterioro de valores representativos de deuda a corto plazo, empresas asociadas + 7987 @@ -4116,6 +4703,7 @@ Reversión del deterioro de valores representativos de deuda a corto plazo, otras partes vinculadas + 7988 @@ -4123,6 +4711,7 @@ Reversión del deterioro de valores representativos de deuda a corto plazo, otras empresas + 7990 @@ -4130,6 +4719,7 @@ Reversión del deterioro de créditos a corto plazo, empresas del grupo + 7991 @@ -4137,6 +4727,7 @@ Reversión del deterioro de créditos a corto plazo, empresas asociadas + 7992 @@ -4144,6 +4735,7 @@ Reversión del deterioro de créditos a corto plazo, otras partes vinculadas + 7993 @@ -4151,6 +4743,7 @@ Reversión del deterioro de créditos a corto plazo, otras empresas + diff --git a/addons/l10n_es/data/account_account_template_full_data.xml b/addons/l10n_es/data/account_account_template_full_data.xml index e9c8396de37..61d5bc4b0c8 100644 --- a/addons/l10n_es/data/account_account_template_full_data.xml +++ b/addons/l10n_es/data/account_account_template_full_data.xml @@ -8,6 +8,7 @@ Capital social + 1030 @@ -15,6 +16,7 @@ Socios por desembolsos no exigidos, capital social + 1034 @@ -22,6 +24,7 @@ Socios por desembolsos no exigidos, capital pendiente de inscripción + 1040 @@ -29,6 +32,7 @@ Socios por aportaciones no dinerarias pendientes, capital social + 1044 @@ -36,6 +40,7 @@ Socios por aportaciones no dinerarias pendientes, capital pendiente de inscripción + 1110 @@ -43,6 +48,7 @@ Patrimonio neto por emision de instrumentos financieros compuestos + 111100 @@ -50,6 +56,7 @@ Resto de instrumentos de patrimonio neto + 1143 @@ -57,6 +64,7 @@ Reserva por fondo de comercio + 115 @@ -64,6 +72,7 @@ Reservas por pérdidas y ganancias actuariales y otros ajustes + 120 @@ -71,6 +80,7 @@ Remanente + 121 @@ -78,6 +88,7 @@ Resultados negativos de ejercicios anteriores + 129 @@ -85,6 +96,7 @@ Resultado del ejercicio + 130 @@ -92,6 +104,7 @@ Subvenciones oficiales de capital + 132 @@ -99,6 +112,7 @@ Otras subvenciones, donaciones y legados + 133 @@ -106,6 +120,7 @@ Ajustes por valoración en activos financieros disponibles para la venta + 1340 @@ -113,6 +128,7 @@ Cobertura de flujos de efectivo + 1341 @@ -120,6 +136,7 @@ Cobertura de una inversión neta en un negocio en el extranjero + 135 @@ -127,6 +144,7 @@ Diferencias de conversión + 136 @@ -134,6 +152,7 @@ Ajustes por valoración de activos no corrientes y grupos enajenables de elementos, mantenidos para la venta + 140 @@ -141,6 +160,7 @@ Provisión por retribuciones del personal + 146 @@ -148,6 +168,7 @@ Provisión para reestructuraciones + 147 @@ -155,6 +176,7 @@ Provisión por transacciones con pagos basados en instrumentos de patrimonio + 1765 @@ -162,6 +184,7 @@ Pasivos por derivados financieros, carter de negociación + 1768 @@ -169,6 +192,7 @@ Pasivos por derivados financieros, instrumentos de cobertura + 178 @@ -176,6 +200,7 @@ Obligaciones y bonos convertibles + 189 @@ -183,6 +208,7 @@ Garantías financieras + 204 @@ -190,6 +216,7 @@ Fondo de comercio + 2403 @@ -197,6 +224,7 @@ Participaciones en empresas del grupo + 2404 @@ -204,6 +232,7 @@ Participaciones en empresas asociadas + 2405 @@ -211,6 +240,7 @@ Participaciones en otras partes vinculadas + 2493 @@ -218,6 +248,7 @@ Desembolsos pendientes sobre participaciones en empresas del grupo + 2494 @@ -225,6 +256,7 @@ Desembolsos pendientes sobre participaciones en empresas asociadas + 2495 @@ -232,6 +264,7 @@ Desembolsos pendientes sobre participaciones en otras partes vinculadas + 2550 @@ -239,6 +272,7 @@ Activos por derivados financieros, cartera de negociación + 2553 @@ -246,6 +280,7 @@ Activos por derivados financieros, instrumentos de cobertura + 257 @@ -253,6 +288,7 @@ Derechos de reembolso derivados de contratos de seguro relativos a retribuciones al personal + 466 @@ -260,6 +296,7 @@ Remuneraciones mediante sistemas de aportación definida pendientes de pago + 490 @@ -267,6 +304,7 @@ Deterioro de valor de créditos por operaciones comerciales + 501 @@ -274,6 +312,7 @@ Obligaciones y bonos convertibles a corto plazo + 5091 @@ -281,6 +320,7 @@ Obligaciones y bonos convertibles amortizados + 5296 @@ -288,6 +328,7 @@ Provisión a corto plazo para reestructuraciones de patrimonio + 5297 @@ -295,6 +336,7 @@ Provisión a corto plazo por transacciones con pagos basados en instrumentos + 551 @@ -302,6 +344,7 @@ Cuenta corriente con socios y administradores + 5530 @@ -309,6 +352,7 @@ Socios de sociedad disuelta + 5531 @@ -316,6 +360,7 @@ Socios, cuenta de fusión + 5532 @@ -323,6 +368,7 @@ Socios de sociedad escindida + 5533 @@ -330,6 +376,7 @@ Socios, cuenta de escisión + 5593 @@ -337,6 +384,7 @@ Activos por derivados financieros a corto plazo, instrumentos de cobertura + 5598 @@ -344,6 +392,7 @@ Pasivos por derivados financieros a corto plazo, instrumentos de cobertura + 569 @@ -351,6 +400,7 @@ Garantías financieras a corto plazo + 580 @@ -358,6 +408,7 @@ Inmovilizado + 581 @@ -365,6 +416,7 @@ Inversiones con personas y entidades vinculadas + 582 @@ -372,6 +424,7 @@ Inversiones financieras + 583 @@ -379,6 +432,7 @@ Existencias, deudores comerciales y otras cuentas a cobrar + 584 @@ -386,6 +440,7 @@ Otros activos + 585 @@ -393,6 +448,7 @@ Provisiones + 586 @@ -400,6 +456,7 @@ Deudas con características especiales + 587 @@ -407,6 +464,7 @@ Deudas con personas y entidades vinculadas + 588 @@ -414,6 +472,7 @@ Acreedores comerciales y otras cuentas a pagar + 589 @@ -421,6 +480,7 @@ Otros pasivos + 5990 @@ -428,6 +488,7 @@ Deterioro de valor de inmovilizado no corriente mantenido para la venta + 5991 @@ -435,6 +496,7 @@ Deterioro de valor de inversiones y entidades vinculadas no corrientes mantenidas para la venta + 5992 @@ -442,6 +504,7 @@ Deterioro de valor de inversiones financieras no corrientes mantenidas para la venta + 5993 @@ -449,6 +512,7 @@ Deterioro de valor de existencias, deudores comerciales y otras cuentas a cobrar integrados en un grupo enajenable mantenido para la venta + 5994 @@ -456,6 +520,7 @@ Deterioro de valor de otros activos mantenidos para la venta + 643 @@ -463,6 +528,7 @@ Retribuciones mediante sistemas de aportación definida + 6440 @@ -470,6 +536,7 @@ Contribuciones anuales + 6442 @@ -477,6 +544,7 @@ Otros costes + 6450 @@ -484,6 +552,7 @@ Retribuciones al personal liquidados con instrumentos de patrimonio + 6457 @@ -491,6 +560,7 @@ Retribuciones al personal liquidados en efectivo basado en instrumentos de patrimonio + 650 @@ -498,6 +568,7 @@ Pérdidas de créditos comerciales incobrables + 6510 @@ -505,6 +576,7 @@ Beneficio transferido (gestor) + 6511 @@ -512,6 +584,7 @@ Pérdida soportada (partícipe o asociado no gestor) + 659 @@ -519,6 +592,7 @@ Otras pérdidas en gestión corriente + 6630 @@ -526,6 +600,7 @@ Pérdidas de cartera de negociación + 6631 @@ -533,6 +608,7 @@ Pérdidas de designados por la empresa + 6632 @@ -540,6 +616,7 @@ Pérdidas de disponibles para la venta + 6633 @@ -547,6 +624,7 @@ Pérdidas de instrumentos de cobertura + 671 @@ -554,6 +632,7 @@ Pérdidas procedentes del inmovilizado material + 691 @@ -561,6 +640,7 @@ Pérdidas por deterioro del inmovilizado material + 694 @@ -568,6 +648,7 @@ Pérdidas por deterioro de créditos por operaciones comerciales + 7630 @@ -575,6 +656,7 @@ Beneficios de cartera de negociación + 7631 @@ -582,6 +664,7 @@ Beneficios de designados por la empresa + 7632 @@ -589,6 +672,7 @@ Beneficios de disponibles para la venta + 7633 @@ -596,6 +680,7 @@ Beneficios de instrumentos de cobertura + 767 @@ -603,6 +688,7 @@ Ingresos de activos afectos y de derechos de reembolso relativos a retribuciones a largo plazo + 774 @@ -610,6 +696,7 @@ Diferencia negativa en combinaciones de negocios + 791 @@ -617,6 +704,7 @@ Reversión del deterioro del inmovilizado material + 794 @@ -624,6 +712,7 @@ Reversión del deterioro de créditos por operaciones comerciales + 7950 @@ -631,6 +720,7 @@ Exceso de provisión por retribuciones al personal + 7956 @@ -638,6 +728,7 @@ Exceso de provisión para reestructuraciones + 7957 @@ -645,6 +736,7 @@ Exceso de provisión por transacciones con pagos basados en instrumentos de patrimonio + 800 @@ -652,6 +744,7 @@ Pérdidas en activos financieros disponibles para la venta + 802 @@ -659,6 +752,7 @@ Transferencia de beneficios en activos financieros disponibles para la venta + 810 @@ -666,6 +760,7 @@ Pérdidas por coberturas de flujos de efectivo + 811 @@ -673,6 +768,7 @@ Pérdidas por coberturas de inversiones netas en un negocio en el extranjero + 812 @@ -680,6 +776,7 @@ Transferencia de beneficios por coberturas de flujos de efectivo + 813 @@ -687,6 +784,7 @@ Transferencia de beneficios por coberturas de inversiones netas en un negocio en el extranjero + 820 @@ -694,6 +792,7 @@ Diferencias de conversión negativas + 821 @@ -701,6 +800,7 @@ Transferencia de diferencias de conversión positivas + 8300 @@ -708,6 +808,7 @@ Impuesto corriente + 8301 @@ -715,6 +816,7 @@ Impuesto diferido + 833 @@ -722,6 +824,7 @@ Ajustes negativos en la imposición sobre beneficios + 834 @@ -729,6 +832,7 @@ Ingresos fiscales por diferencias permanentes + 835 @@ -736,6 +840,7 @@ Ingresos fiscales por deducciones y bonificaciones + 836 @@ -743,6 +848,7 @@ Transferencia de diferencias permanentes + 837 @@ -750,6 +856,7 @@ Transferencia de deducciones y bonificaciones + 838 @@ -757,6 +864,7 @@ Ajustes positivos en la imposición sobre beneficios + 840 @@ -764,6 +872,7 @@ Transferencia de subvenciones oficiales de capital + 841 @@ -771,6 +880,7 @@ Transferencia de donaciones y legados de capital + 842 @@ -778,6 +888,7 @@ Transferencia de otras subvenciones, donaciones y legados + 850 @@ -785,6 +896,7 @@ Pérdidas actuariales + 851 @@ -792,6 +904,7 @@ Ajustes negativos en activos por retribuciones a largo plazo de prestación definida + 860 @@ -799,6 +912,7 @@ Pérdidas en activos no corrientes y grupos enajenables de elementos mantenidos para la venta + 862 @@ -806,6 +920,7 @@ Transferencia de beneficios en activos no corrientes y grupos enajenables de elementos mantenidos para la venta + 891 @@ -813,6 +928,7 @@ Deterioro de participaciones en el patrimonio, empresas del grupo + 892 @@ -820,6 +936,7 @@ Deterioro de participaciones en el patrimonio, empresas asociadas + 900 @@ -827,6 +944,7 @@ Beneficios en activos financieros disponibles para la venta + 902 @@ -834,6 +952,7 @@ Transferencia de pérdidas en activos financieros disponibles para la venta + 910 @@ -841,6 +960,7 @@ Beneficios por coberturas de flujos de efectivo + 911 @@ -848,6 +968,7 @@ Beneficios por coberturas de inversiones netas en un negocio en el extranjero + 912 @@ -855,6 +976,7 @@ Transferencia de pérdidas por coberturas de flujos de efectivo + 913 @@ -862,6 +984,7 @@ Transferencia de pérdidas por coberturas de inversiones netas en un negocio en el extranjero + 920 @@ -869,6 +992,7 @@ Diferencias de conversión positivas + 921 @@ -876,6 +1000,7 @@ Transferencia de diferencias de conversión negativas + 940 @@ -883,6 +1008,7 @@ Ingresos de subvenciones oficiales de capital + 941 @@ -890,6 +1016,7 @@ Ingresos de donaciones y legados de capital + 942 @@ -897,6 +1024,7 @@ Ingresos de otras subvenciones, donaciones y legados + 950 @@ -904,6 +1032,7 @@ Ganancias actuariales + 951 @@ -911,6 +1040,7 @@ Ajustes positivos en activos por retribuciones a largo plazo de prestación definida + 960 @@ -918,6 +1048,7 @@ Beneficios en activos no corrientes y grupos enajenables de elementos mantenidos para la venta + 962 @@ -925,6 +1056,7 @@ Transferencia de pérdidas en activos no corrientes y grupos enajenables de elementos mantenidos para la venta + 991 @@ -932,6 +1064,7 @@ Recuperación de ajustes valorativos negativos previos, empresas del grupo + 992 @@ -939,6 +1072,7 @@ Recuperación de ajustes valorativos negativos previos, empresas asociadas + 993 @@ -946,6 +1080,7 @@ Transferencia por deterioro de ajustes valorativos negativos previos, empresas del grupo + 994 @@ -953,6 +1088,7 @@ Transferencia por deterioro de ajustes valorativos negativos previos, empresas asociadas + diff --git a/addons/l10n_es/data/account_account_template_pymes_data.xml b/addons/l10n_es/data/account_account_template_pymes_data.xml index 1dd4a475f3c..716b61a6752 100644 --- a/addons/l10n_es/data/account_account_template_pymes_data.xml +++ b/addons/l10n_es/data/account_account_template_pymes_data.xml @@ -8,6 +8,7 @@ Capital social + 1030 @@ -15,6 +16,7 @@ Socios por desembolsos no exigidos, capital social + 1034 @@ -22,6 +24,7 @@ Socios por desembolsos no exigidos, capital pendiente de inscripción + 1040 @@ -29,6 +32,7 @@ Socios por aportaciones no dinerarias pendientes, capital social + 1044 @@ -36,6 +40,7 @@ Socios por aportaciones no dinerarias pendientes, capital pendiente de inscripción + 120 @@ -43,6 +48,7 @@ Remanente + 121 @@ -50,6 +56,7 @@ Resultados negativos de ejercicios anteriores + 129 @@ -57,6 +64,7 @@ Resultado del ejercicio + 130 @@ -64,6 +72,7 @@ Subvenciones oficiales de capital + 132 @@ -71,6 +80,7 @@ Otras subvenciones, donaciones y legados + 2403 @@ -78,6 +88,7 @@ Participaciones en empresas del grupo + 2404 @@ -85,6 +96,7 @@ Participaciones en empresas asociadas + 2405 @@ -92,6 +104,7 @@ Participaciones en otras partes vinculadas + 2493 @@ -99,6 +112,7 @@ Desembolsos pendientes sobre participaciones en empresas del grupo + 2494 @@ -106,6 +120,7 @@ Desembolsos pendientes sobre participaciones en empresas asociadas + 2495 @@ -113,6 +128,7 @@ Desembolsos pendientes sobre participaciones en otras partes vinculadas + 255 @@ -120,6 +136,7 @@ Activos por derivados financieros + 2935 @@ -127,6 +144,7 @@ Deterioro de valor de participaciones a largo plazo en otras partes vinculadas + 296 @@ -134,6 +152,7 @@ Deterioro de valor de participaciones en el patrimonio neto a largo plazo + 490 @@ -141,6 +160,7 @@ Deterioro de valor de créditos por operaciones comerciales + 551 @@ -148,6 +168,7 @@ Cuenta corriente con socios y administradores + 5935 @@ -155,6 +176,7 @@ Deterioro de valor de participaciones a corto plazo en otras partes vinculadas + 596 @@ -162,6 +184,7 @@ Deterioro de valor de participaciones a corto plazo + 650 @@ -169,6 +192,7 @@ Pérdidas de créditos comerciales incobrables + 6510 @@ -176,6 +200,7 @@ Beneficio transferido (gestor) + 6511 @@ -183,6 +208,7 @@ Pérdida soportada (partícipe o asociado no gestor) + 659 @@ -190,6 +216,7 @@ Otras pérdidas en gestión corriente + 663 @@ -197,6 +224,7 @@ Pérdidas por valoración de instrumentos financieros por su valor razonable + 671 @@ -204,6 +232,7 @@ Pérdidas procedentes del inmovilizado material + 691 @@ -211,6 +240,7 @@ Pérdidas por deterioro del inmovilizado material + 694 @@ -218,6 +248,7 @@ Pérdidas por deterioro de créditos por operaciones comerciales + 763 @@ -225,6 +256,7 @@ Beneficios por valoración de instrumentos financieros por su valor razonable + 791 @@ -232,6 +264,7 @@ Reversión del deterioro del inmovilizado material + 794 @@ -239,6 +272,7 @@ Reversión del deterioro de créditos por operaciones comerciales + 7962 @@ -246,6 +280,7 @@ Reversión del deterioro de participaciones en instrumentos de patrimonio neto a largo plazo, otras partes vinculadas + 7963 @@ -253,6 +288,7 @@ Reversión del deterioro de participaciones en instrumentos de patrimonio neto a largo plazo, otras empresas + diff --git a/addons/l10n_es/data/account_chart_template_data.xml b/addons/l10n_es/data/account_chart_template_data.xml index 215cf084e87..8668f831d0c 100644 --- a/addons/l10n_es/data/account_chart_template_data.xml +++ b/addons/l10n_es/data/account_chart_template_data.xml @@ -10,6 +10,7 @@ 572999 + @@ -55,4 +56,4 @@ - \ No newline at end of file + diff --git a/addons/l10n_es/data/account_group.xml b/addons/l10n_es/data/account_group.xml new file mode 100644 index 00000000000..5f60b6a592b --- /dev/null +++ b/addons/l10n_es/data/account_group.xml @@ -0,0 +1,2107 @@ + + + + + 1 + + + 10 + + + + 100 + + + + 101 + + + + 102 + + + + 103 + + + + 104 + + + + 108 + + + + 109 + + + + 11 + + + + 110 + + + + 111 + + + + 112 + + + + 113 + + + + 114 + + + + 115 + + + + 118 + + + + 119 + + + + 12 + + + + 120 + + + + 121 + + + + 129 + + + + 13 + + + + 130 + + + + 131 + + + + 132 + + + + 133 + + + + 134 + + + + 135 + + + + 136 + + + + 137 + + + + 14 + + + + 140 + + + + 141 + + + + 142 + + + + 143 + + + + 145 + + + + 146 + + + + 147 + + + + 15 + + + + 150 + + + + 153 + + + + 154 + + + + 16 + + + + 160 + + + + 161 + + + + 162 + + + + 163 + + + + 17 + + + + 170 + + + + 171 + + + + 172 + + + + 173 + + + + 174 + + + + 175 + + + + 176 + + + + 177 + + + + 178 + + + + 179 + + + + 18 + + + + 180 + + + + 181 + + + + 185 + + + + 189 + + + + 19 + + + + 190 + + + + 192 + + + + 194 + + + + 195 + + + + 197 + + + + 199 + + + + 2 + + + 20 + + + + 200 + + + + 201 + + + + 202 + + + + 203 + + + + 204 + + + + 205 + + + + 206 + + + + 207 + + + + 209 + + + + 21 + + + + 210 + + + + 211 + + + + 212 + + + + 213 + + + + 214 + + + + 215 + + + + 216 + + + + 217 + + + + 218 + + + + 219 + + + + 22 + + + + 220 + + + + 221 + + + + 23 + + + + 230 + + + + 231 + + + + 232 + + + + 233 + + + + 237 + + + + 239 + + + + 24 + + + + 240 + + + + 241 + + + + 242 + + + + 249 + + + + 25 + + + + 250 + + + + 251 + + + + 252 + + + + 253 + + + + 254 + + + + 255 + + + + 257 + + + + 258 + + + + 259 + + + + 26 + + + + 260 + + + + 265 + + + + 28 + + + + 280 + + + + 281 + + + + 282 + + + + 283 + + + + 29 + + + + 290 + + + + 291 + + + + 292 + + + + 293 + + + + 294 + + + + 295 + + + + 296 + + + + 297 + + + + 298 + + + + 299 + + + + 3 + + + 30 + + + + 300 + + + + 301 + + + + 31 + + + + 310 + + + + 311 + + + + 32 + + + + 320 + + + + 321 + + + + 322 + + + + 325 + + + + 326 + + + + 327 + + + + 328 + + + + 33 + + + + 330 + + + + 331 + + + + 34 + + + + 340 + + + + 341 + + + + 35 + + + + 350 + + + + 351 + + + + 36 + + + + 360 + + + + 361 + + + + 365 + + + + 366 + + + + 368 + + + + 369 + + + + 39 + + + + 390 + + + + 391 + + + + 392 + + + + 393 + + + + 394 + + + + 395 + + + + 396 + + + + 4 + + + 40 + + + + 400 + + + + 401 + + + + 403 + + + + 404 + + + + 405 + + + + 406 + + + + 407 + + + + 41 + + + + 410 + + + + 411 + + + + 412 + + + + 419 + + + + 43 + + + + 430 + + + + 431 + + + + 432 + + + + 433 + + + + 434 + + + + 435 + + + + 436 + + + + 437 + + + + 438 + + + + 44 + + + + 440 + + + + 441 + + + + 446 + + + + 447 + + + + 448 + + + + 449 + + + + 46 + + + + 460 + + + + 464 + + + + 465 + + + + 466 + + + + 47 + + + + 470 + + + + 471 + + + + 472 + + + + 473 + + + + 474 + + + + 475 + + + + 476 + + + + 477 + + + + 479 + + + + 48 + + + + 480 + + + + 485 + + + + 49 + + + + 490 + + + + 493 + + + + 499 + + + + 5 + + + 50 + + + + 500 + + + + 501 + + + + 502 + + + + 505 + + + + 506 + + + + 507 + + + + 509 + + + + 51 + + + + 510 + + + + 511 + + + + 512 + + + + 513 + + + + 514 + + + + 52 + + + + 520 + + + + 521 + + + + 522 + + + + 523 + + + + 524 + + + + 525 + + + + 526 + + + + 527 + + + + 528 + + + + 529 + + + + 53 + + + + 530 + + + + 531 + + + + 532 + + + + 533 + + + + 534 + + + + 535 + + + + 539 + + + + 54 + + + + 540 + + + + 541 + + + + 542 + + + + 543 + + + + 544 + + + + 545 + + + + 546 + + + + 547 + + + + 548 + + + + 549 + + + + 55 + + + + 550 + + + + 551 + + + + 552 + + + + 553 + + + + 554 + + + + 555 + + + + 556 + + + + 557 + + + + 558 + + + + 559 + + + + 56 + + + + 560 + + + + 561 + + + + 565 + + + + 566 + + + + 567 + + + + 568 + + + + 569 + + + + 57 + + + + 570 + + + + 571 + + + + 572 + + + + 573 + + + + 574 + + + + 575 + + + + 576 + + + + 58 + + + + 580 + + + + 581 + + + + 582 + + + + 583 + + + + 584 + + + + 585 + + + + 586 + + + + 587 + + + + 588 + + + + 589 + + + + 59 + + + + 593 + + + + 594 + + + + 595 + + + + 596 + + + + 597 + + + + 598 + + + + 599 + + + + 6 + + + 60 + + + + 600 + + + + 601 + + + + 602 + + + + 606 + + + + 607 + + + + 608 + + + + 609 + + + + 61 + + + + 610 + + + + 611 + + + + 612 + + + + 62 + + + + 620 + + + + 621 + + + + 622 + + + + 623 + + + + 624 + + + + 625 + + + + 626 + + + + 627 + + + + 628 + + + + 629 + + + + 63 + + + + 630 + + + + 631 + + + + 633 + + + + 634 + + + + 636 + + + + 638 + + + + 639 + + + + 64 + + + + 640 + + + + 641 + + + + 642 + + + + 643 + + + + 644 + + + + 645 + + + + 649 + + + + 65 + + + + 650 + + + + 651 + + + + 653 + + + + 654 + + + + 655 + + + + 656 + + + + 658 + + + + 659 + + + + 66 + + + + 660 + + + + 661 + + + + 662 + + + + 663 + + + + 664 + + + + 665 + + + + 666 + + + + 667 + + + + 668 + + + + 669 + + + + 67 + + + + 670 + + + + 671 + + + + 672 + + + + 673 + + + + 675 + + + + 678 + + + + 68 + + + + 680 + + + + 681 + + + + 682 + + + + 69 + + + + 690 + + + + 691 + + + + 692 + + + + 693 + + + + 694 + + + + 695 + + + + 696 + + + + 697 + + + + 698 + + + + 699 + + + + 7 + + + 70 + + + + 700 + + + + 701 + + + + 702 + + + + 703 + + + + 704 + + + + 705 + + + + 706 + + + + 708 + + + + 709 + + + + 71 + + + + 710 + + + + 711 + + + + 712 + + + + 713 + + + + 72 + + + + 720 + + + + 721 + + + + 722 + + + + 723 + + + + 728 + + + + 73 + + + + 730 + + + + 731 + + + + 732 + + + + 733 + + + + 74 + + + + 740 + + + + 746 + + + + 747 + + + + 75 + + + + 751 + + + + 752 + + + + 753 + + + + 754 + + + + 755 + + + + 759 + + + + 76 + + + + 760 + + + + 761 + + + + 762 + + + + 763 + + + + 766 + + + + 767 + + + + 768 + + + + 769 + + + + 77 + + + + 770 + + + + 771 + + + + 772 + + + + 773 + + + + 774 + + + + 775 + + + + 778 + + + + 79 + + + + 790 + + + + 791 + + + + 792 + + + + 793 + + + + 794 + + + + 795 + + + + 796 + + + + 797 + + + + 798 + + + + 799 + + + + 8 + + + 80 + + + + 800 + + + + 802 + + + + 81 + + + + 810 + + + + 811 + + + + 812 + + + + 813 + + + + 82 + + + + 820 + + + + 821 + + + + 83 + + + + 830 + + + + 833 + + + + 834 + + + + 835 + + + + 836 + + + + 837 + + + + 838 + + + + 84 + + + + 840 + + + + 841 + + + + 842 + + + + 85 + + + + 850 + + + + 851 + + + + 86 + + + + 860 + + + + 862 + + + + 89 + + + + 891 + + + + 892 + + + + 9 + + + 90 + + + + 900 + + + + 902 + + + + 91 + + + + 910 + + + + 911 + + + + 912 + + + + 913 + + + + 92 + + + + 920 + + + + 921 + + + + 94 + + + + 940 + + + + 941 + + + + 942 + + + + 95 + + + + 950 + + + + 951 + + + + 96 + + + + 960 + + + + 962 + + + + 99 + + + + 991 + + + + 992 + + + + 993 + + + + 994 + + + diff --git a/addons/mail/i18n/mail.pot b/addons/mail/i18n/mail.pot index 2f729c292f8..4bca0810744 100644 --- a/addons/mail/i18n/mail.pot +++ b/addons/mail/i18n/mail.pot @@ -6,8 +6,8 @@ msgid "" msgstr "" "Project-Id-Version: Odoo Server 11.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-10-24 08:59+0000\n" -"PO-Revision-Date: 2017-10-24 08:59+0000\n" +"POT-Creation-Date: 2017-11-30 13:11+0000\n" +"PO-Revision-Date: 2017-11-30 13:11+0000\n" "Last-Translator: <>\n" "Language-Team: \n" "MIME-Version: 1.0\n" @@ -174,18 +174,11 @@ msgstr "" #. module: mail #. openerp-web -#: code:addons/mail/static/src/xml/activity.xml:51 +#: code:addons/mail/static/src/xml/activity.xml:49 #, python-format msgid ", due on" msgstr "" -#. module: mail -#. openerp-web -#: code:addons/mail/static/src/xml/activity.xml:45 -#, python-format -msgid ", on" -msgstr "" - #. module: mail #. openerp-web #: code:addons/mail/static/src/xml/thread.xml:331 @@ -674,7 +667,7 @@ msgstr "" #. module: mail #. openerp-web -#: code:addons/mail/static/src/xml/activity.xml:47 +#: code:addons/mail/static/src/xml/activity.xml:45 #: model:ir.model.fields,field_description:mail.field_mail_activity_user_id #, python-format msgid "Assigned to" @@ -803,7 +796,7 @@ msgstr "" #. module: mail #. openerp-web #: code:addons/mail/static/src/js/followers.js:341 -#: code:addons/mail/static/src/xml/activity.xml:67 +#: code:addons/mail/static/src/xml/activity.xml:65 #: model:ir.ui.view,arch_db:mail.email_compose_message_wizard_form #: model:ir.ui.view,arch_db:mail.mail_wizard_invite_form #: model:ir.ui.view,arch_db:mail.view_mail_form @@ -1089,11 +1082,8 @@ msgid "Create Date" msgstr "" #. module: mail -#. openerp-web -#: code:addons/mail/static/src/xml/activity.xml:41 #: model:ir.ui.view,arch_db:mail.mail_activity_view_search -#, python-format -msgid "Created on" +msgid "Created By" msgstr "" #. module: mail @@ -1118,6 +1108,8 @@ msgid "Created by" msgstr "" #. module: mail +#. openerp-web +#: code:addons/mail/static/src/xml/activity.xml:41 #: model:ir.model.fields,field_description:mail.field_email_template_preview_create_date #: model:ir.model.fields,field_description:mail.field_mail_activity_create_date #: model:ir.model.fields,field_description:mail.field_mail_activity_type_create_date @@ -1134,6 +1126,7 @@ msgstr "" #: model:ir.model.fields,field_description:mail.field_mail_test_simple_create_date #: model:ir.model.fields,field_description:mail.field_mail_tracking_value_create_date #: model:ir.model.fields,field_description:mail.field_mail_wizard_invite_create_date +#, python-format msgid "Created on" msgstr "" @@ -1319,7 +1312,7 @@ msgstr "" #. module: mail #. openerp-web -#: code:addons/mail/static/src/xml/activity.xml:83 +#: code:addons/mail/static/src/xml/activity.xml:81 #: model:ir.ui.view,arch_db:mail.email_template_preview_form #: model:ir.ui.view,arch_db:mail.mail_activity_view_form_popup #, python-format @@ -1396,14 +1389,14 @@ msgstr "" #. module: mail #. openerp-web -#: code:addons/mail/static/src/xml/activity.xml:81 +#: code:addons/mail/static/src/xml/activity.xml:79 #, python-format msgid "Done" msgstr "" #. module: mail #. openerp-web -#: code:addons/mail/static/src/xml/activity.xml:79 +#: code:addons/mail/static/src/xml/activity.xml:77 #, python-format msgid "Done & Schedule Next" msgstr "" @@ -1443,7 +1436,7 @@ msgstr "" #. module: mail #. openerp-web -#: code:addons/mail/static/src/xml/activity.xml:64 +#: code:addons/mail/static/src/xml/activity.xml:62 #, python-format msgid "Edit" msgstr "" @@ -2269,7 +2262,7 @@ msgid "Invalid expression, it must be a literal python dictionary definition e.g msgstr "" #. module: mail -#: code:addons/mail/models/mail_thread.py:1791 +#: code:addons/mail/models/mail_thread.py:1792 #, python-format msgid "Invalid record set: should be called as model (without records) or on single-record recordset" msgstr "" @@ -2738,7 +2731,7 @@ msgstr "" #. module: mail #. openerp-web -#: code:addons/mail/static/src/xml/activity.xml:61 +#: code:addons/mail/static/src/xml/activity.xml:59 #, python-format msgid "Mark Done" msgstr "" @@ -4620,8 +4613,9 @@ msgid "The owner of records created upon receiving emails on this alias. If this msgstr "" #. module: mail -#: code:addons/mail/models/mail_message.py:575 -#: code:addons/mail/models/mail_message.py:670 +#: code:addons/mail/models/mail_activity.py:165 +#: code:addons/mail/models/mail_message.py:579 +#: code:addons/mail/models/mail_message.py:674 #, python-format msgid "The requested operation cannot be completed due to security restrictions. Please contact your system administrator.\n" "\n" @@ -5110,7 +5104,7 @@ msgstr "" #. module: mail #. openerp-web -#: code:addons/mail/static/src/xml/activity.xml:77 +#: code:addons/mail/static/src/xml/activity.xml:75 #, python-format msgid "Write Feedback" msgstr "" @@ -5234,7 +5228,7 @@ msgid "Your template should define email_from" msgstr "" #. module: mail -#: code:addons/mail/models/mail_thread.py:965 +#: code:addons/mail/models/mail_thread.py:966 #, python-format msgid "alias %s: %s" msgstr "" @@ -5308,11 +5302,17 @@ msgid "has been" msgstr "" #. module: mail -#: code:addons/mail/models/mail_alias.py:271 +#: code:addons/mail/models/mail_alias.py:282 #, python-format msgid "incorrectly configured alias" msgstr "" +#. module: mail +#: code:addons/mail/models/mail_alias.py:278 +#, python-format +msgid "incorrectly configured alias (unknown reference record)" +msgstr "" + #. module: mail #: model:ir.model,name:mail.model_ir_actions_server msgid "ir.actions.server" @@ -5442,13 +5442,13 @@ msgid "restricted to channel members" msgstr "" #. module: mail -#: code:addons/mail/models/mail_alias.py:276 +#: code:addons/mail/models/mail_alias.py:287 #, python-format msgid "restricted to followers" msgstr "" #. module: mail -#: code:addons/mail/models/mail_alias.py:280 +#: code:addons/mail/models/mail_alias.py:291 #, python-format msgid "restricted to known authors" msgstr "" @@ -5463,7 +5463,7 @@ msgstr "" #: code:addons/mail/models/mail_thread.py:935 #: code:addons/mail/models/mail_thread.py:938 #: code:addons/mail/models/mail_thread.py:943 -#: code:addons/mail/models/mail_thread.py:965 +#: code:addons/mail/models/mail_thread.py:966 #, python-format msgid "skipping" msgstr "" @@ -5476,7 +5476,7 @@ msgid "this document" msgstr "" #. module: mail -#: code:addons/mail/models/mail_thread.py:965 +#: code:addons/mail/models/mail_thread.py:966 #, python-format msgid "unknown error" msgstr "" diff --git a/addons/mail/models/mail_activity.py b/addons/mail/models/mail_activity.py index 6ed049833d5..cc53bab9fa7 100644 --- a/addons/mail/models/mail_activity.py +++ b/addons/mail/models/mail_activity.py @@ -264,28 +264,35 @@ class MailActivityMixin(models.AbstractModel): activity_ids = fields.One2many( 'mail.activity', 'res_id', 'Activities', auto_join=True, + groups="base.group_user", domain=lambda self: [('res_model', '=', self._name)]) activity_state = fields.Selection([ ('overdue', 'Overdue'), ('today', 'Today'), ('planned', 'Planned')], string='State', compute='_compute_activity_state', + groups="base.group_user", help='Status based on activities\nOverdue: Due date is already passed\n' 'Today: Activity date is today\nPlanned: Future activities.') activity_user_id = fields.Many2one( 'res.users', 'Responsible', related='activity_ids.user_id', - search='_search_activity_user_id') + search='_search_activity_user_id', + groups="base.group_user") activity_type_id = fields.Many2one( 'mail.activity.type', 'Next Activity Type', related='activity_ids.activity_type_id', - search='_search_activity_type_id') + search='_search_activity_type_id', + groups="base.group_user") activity_date_deadline = fields.Date( 'Next Activity Deadline', related='activity_ids.date_deadline', - readonly=True, store=True) # store to enable ordering + search + readonly=True, store=True, # store to enable ordering + search + groups="base.group_user") activity_summary = fields.Char( - 'Next Activity Summary', related='activity_ids.summary', - search='_search_activity_summary') + 'Next Activity Summary', + related='activity_ids.summary', + search='_search_activity_summary', + groups="base.group_user",) @api.depends('activity_ids.state') def _compute_activity_state(self): diff --git a/addons/mail/models/mail_thread.py b/addons/mail/models/mail_thread.py index b681e18d284..679f1726e75 100644 --- a/addons/mail/models/mail_thread.py +++ b/addons/mail/models/mail_thread.py @@ -1371,6 +1371,8 @@ class MailThread(models.AbstractModel): mail module, and should not contain security or generic html cleaning. Indeed those aspects should be covered by the html_sanitize method located in tools. """ + if not body: + return body, attachments root = lxml.html.fromstring(body) postprocessed = False to_remove = [] @@ -1406,7 +1408,7 @@ class MailThread(models.AbstractModel): # Content-Type: multipart/related; # boundary="_004_3f1e4da175f349248b8d43cdeb9866f1AMSPR06MB343eurprd06pro_"; # type="text/html" - if not message.is_multipart() or message.get('content-type', '').startswith("text/"): + if message.get_content_maintype() == 'text': encoding = message.get_content_charset() body = message.get_payload(decode=True) body = tools.ustr(body, encoding, errors='replace') diff --git a/addons/mail/models/res_users.py b/addons/mail/models/res_users.py index 742ca1678c5..5b3ce35f48f 100644 --- a/addons/mail/models/res_users.py +++ b/addons/mail/models/res_users.py @@ -3,6 +3,7 @@ from odoo import _, api, exceptions, fields, models, modules from odoo.tools import pycompat +from odoo.addons.base.res.res_users import is_selection_groups class Users(models.Model): @@ -62,11 +63,14 @@ class Users(models.Model): @api.multi def write(self, vals): write_res = super(Users, self).write(vals) + sel_groups = [vals[k] for k in vals if is_selection_groups(k) and vals[k]] if vals.get('groups_id'): # form: {'group_ids': [(3, 10), (3, 3), (4, 10), (4, 3)]} or {'group_ids': [(6, 0, [ids]} user_group_ids = [command[1] for command in vals['groups_id'] if command[0] == 4] user_group_ids += [id for command in vals['groups_id'] if command[0] == 6 for id in command[2]] self.env['mail.channel'].search([('group_ids', 'in', user_group_ids)])._subscribe_users() + elif sel_groups: + self.env['mail.channel'].search([('group_ids', 'in', sel_groups)])._subscribe_users() return write_res def _create_welcome_message(self): diff --git a/addons/mail/security/ir.model.access.csv b/addons/mail/security/ir.model.access.csv index 7563d8b182d..53edcca60f9 100644 --- a/addons/mail/security/ir.model.access.csv +++ b/addons/mail/security/ir.model.access.csv @@ -22,7 +22,7 @@ access_mail_alias_all,mail.alias.all,model_mail_alias,,1,0,0,0 access_mail_alias_user,mail.alias.user,model_mail_alias,base.group_user,1,1,1,1 access_mail_alias_system,mail.alias.system,model_mail_alias,base.group_system,1,1,1,1 access_mail_message_subtype_all,mail.message.subtype.all,model_mail_message_subtype,,1,0,0,0 -access_mail_message_subtype_user,mail.message.subtype.user,model_mail_message_subtype,,1,1,1,1 +access_mail_message_subtype_user,mail.message.subtype.user,model_mail_message_subtype,base.group_user,1,1,1,1 access_mail_tracking_value_all,mail.tracking.value.all,model_mail_tracking_value,,0,0,0,0 access_mail_tracking_value_portal,mail.tracking.value.portal,model_mail_tracking_value,base.group_portal,0,0,0,0 access_mail_tracking_value_user,mail.tracking.value.user,model_mail_tracking_value,base.group_user,0,0,0,0 diff --git a/addons/mail/static/src/js/form_renderer.js b/addons/mail/static/src/js/form_renderer.js index bc77fc5acab..574075db9d6 100644 --- a/addons/mail/static/src/js/form_renderer.js +++ b/addons/mail/static/src/js/form_renderer.js @@ -51,6 +51,15 @@ FormRenderer.include({ */ _renderNode: function (node) { if (node.tag === 'div' && node.attrs.class === 'oe_chatter') { + if (this.chatter) { + // Detach the chatter before updating the $el. + // This is important because if the view is now in create mode + // (edit mode with no res_id), the chatter will be removed from + // the DOM, and its handlers will be unbound. By detaching it + // beforehand, we ensure to keep its handlers alive so that if + // it is re-appended later, everything will still work properly + this.chatter.$el.detach(); + } if (this.mode === 'edit' && !this.state.data.id) { // there is no chatter in create mode var $div = $('
'); @@ -72,22 +81,6 @@ FormRenderer.include({ return this._super.apply(this, arguments); } }, - /** - * Detaches the chatter before updating the $el. This is important because - * if the view is now in create mode (edit mode with no res_id), the chatter - * will be removed from the DOM, and its handlers will be unbound. By - * detaching it beforehand, we ensure to keep its handlers alive so that if - * it is re-appended later, everything will still work properly. - * - * @override - * @private - */ - _updateView: function () { - if (this.chatter) { - this.chatter.$el.detach(); - } - return this._super.apply(this, arguments); - }, }); }); diff --git a/addons/mail/static/tests/chatter_tests.js b/addons/mail/static/tests/chatter_tests.js index 2eacfa34c0e..d4b4c37704d 100644 --- a/addons/mail/static/tests/chatter_tests.js +++ b/addons/mail/static/tests/chatter_tests.js @@ -216,6 +216,66 @@ QUnit.test('chatter is not rendered in mode === create', function (assert) { form.destroy(); }); +QUnit.test('chatter rendering inside the sheet', function (assert) { + assert.expect(4); + + var form = createView({ + View: FormView, + model: 'partner', + data: this.data, + arch: '
' + + '' + + '' + + '' + + '' + + '
' + + '' + + '
' + + '
' + + '
' + + '
' + + '
', + res_id: 2, + mockRPC: function (route, args) { + if (route === "/web/dataset/call_kw/partner/message_get_suggested_recipients") { + return $.when({2: []}); + } + return this._super(route, args); + }, + intercepts: { + get_messages: function (event) { + event.stopPropagation(); + event.data.callback($.when([])); + }, + get_bus: function (event) { + event.stopPropagation(); + event.data.callback(new Bus()); + }, + }, + }); + + assert.strictEqual(form.$('.o_chatter').length, 1, + "chatter should be displayed"); + + form.$buttons.find('.o_form_button_create').click(); + + assert.strictEqual(form.$('.o_chatter').length, 0, + "chatter should not be displayed"); + + form.$('.o_field_char').val('coucou').trigger('input'); + form.$buttons.find('.o_form_button_save').click(); + + assert.strictEqual(form.$('.o_chatter').length, 1, + "chatter should be displayed"); + + // check if chatter buttons still work + form.$('.o_chatter_button_new_message').click(); + assert.strictEqual(form.$('.o_chat_composer:visible').length, 1, + "chatter should be opened"); + + form.destroy(); +}); + QUnit.test('kanban activity widget with no activity', function (assert) { assert.expect(4); @@ -494,7 +554,6 @@ QUnit.test('chatter: post, receive and star messages', function (assert) { }); }); - QUnit.test('chatter: post a message and switch in edit mode', function (assert) { assert.expect(5); diff --git a/addons/maintenance/i18n/maintenance.pot b/addons/maintenance/i18n/maintenance.pot index 07e30b4bb8d..75950bce3f6 100644 --- a/addons/maintenance/i18n/maintenance.pot +++ b/addons/maintenance/i18n/maintenance.pot @@ -6,8 +6,8 @@ msgid "" msgstr "" "Project-Id-Version: Odoo Server 11.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-10-24 09:00+0000\n" -"PO-Revision-Date: 2017-10-24 09:00+0000\n" +"POT-Creation-Date: 2017-11-30 13:12+0000\n" +"PO-Revision-Date: 2017-11-30 13:12+0000\n" "Last-Translator: <>\n" "Language-Team: \n" "MIME-Version: 1.0\n" @@ -707,13 +707,13 @@ msgid "Number of Requests Scheduled" msgstr "" #. module: maintenance -#: model:ir.model.fields,field_description:maintenance.field_maintenance_team_todo_request_count_high_priority -msgid "Number of Requests in High Priority" +#: model:ir.model.fields,field_description:maintenance.field_maintenance_team_todo_request_count_unscheduled +msgid "Number of Requests Unscheduled" msgstr "" #. module: maintenance -#: model:ir.model.fields,field_description:maintenance.field_maintenance_team_todo_request_count_unscheduled -msgid "Number of Requests Unscheduled" +#: model:ir.model.fields,field_description:maintenance.field_maintenance_team_todo_request_count_high_priority +msgid "Number of Requests in High Priority" msgstr "" #. module: maintenance @@ -838,11 +838,6 @@ msgstr "" msgid "Request" msgstr "" -#. module: maintenance -#: model:ir.model.fields,field_description:maintenance.field_maintenance_team_todo_request_ids -msgid "Requests" -msgstr "" - #. module: maintenance #: model:mail.message.subtype,name:maintenance.mt_req_created msgid "Request Created" @@ -868,6 +863,11 @@ msgstr "" msgid "Requested by :" msgstr "" +#. module: maintenance +#: model:ir.model.fields,field_description:maintenance.field_maintenance_team_todo_request_ids +msgid "Requests" +msgstr "" + #. module: maintenance #: model:ir.model.fields,field_description:maintenance.field_maintenance_equipment_category_technician_user_id #: model:ir.ui.view,arch_db:maintenance.hr_equipment_category_view_search diff --git a/addons/mrp_repair/report/mrp_repair_templates_repair_order.xml b/addons/mrp_repair/report/mrp_repair_templates_repair_order.xml index 4c54eaf7d21..2171b51373f 100644 --- a/addons/mrp_repair/report/mrp_repair_templates_repair_order.xml +++ b/addons/mrp_repair/report/mrp_repair_templates_repair_order.xml @@ -15,13 +15,13 @@ Invoice address:
-

:

+

:

Shipping address :
-

:

+

:

diff --git a/addons/payment_authorize/models/authorize_request.py b/addons/payment_authorize/models/authorize_request.py index f1ea3917d2a..6e6134be364 100644 --- a/addons/payment_authorize/models/authorize_request.py +++ b/addons/payment_authorize/models/authorize_request.py @@ -33,6 +33,34 @@ def strip_ns(xml, ns): return it.root +def error_check(elem): + """Check if the response sent by Authorize.net contains an error. + + Errors can be a failure to try the transaction (in that case, the transasctionResponse + is empty, and the meaningful error message will be in message/code) or a failure to process + the transaction (in that case, the message/code content will be generic and the actual error + message is in transactionResponse/errors/error/errorText). + + :param etree._Element elem: the root element of the response that will be parsed + + :rtype: tuple (bool, str) + :return: tuple containnig a boolean indicating if the response should be considered + as an error and the most meaningful error message found in it. + """ + result_code = elem.find('messages/resultCode') + msg = 'No meaningful error message found, please check logs or the Authorize.net backend' + has_error = result_code is not None and result_code.text == 'Error' + if has_error: + # accumulate the most meangingful error + error = elem.find('transactionResponse/errors/error') + error = error if error is not None else elem.find('messages/message') + if error is not None: + code = error[0].text + text = error[1].text + msg = '%s: %s' % (code, text) + return (has_error, msg) + + class AuthorizeAPI(): """Authorize.net Gateway API integration. @@ -42,6 +70,9 @@ class AuthorizeAPI(): - Customer Profile/Payment Profile creation - Transaction authorization/capture/voiding """ + + AUTH_ERROR_STATUS = 3 + def __init__(self, acquirer): """Initiate the environment with the acquirer data. @@ -77,9 +108,6 @@ class AuthorizeAPI(): logged_data = etree.XML(r.content) logged_data = str(etree.tostring(logged_data, encoding='utf-8', pretty_print=True)).replace(r'\n', '\n') _logger.info('_authorize_request: Values received\n%s', logged_data) - if response.find('messages/resultCode').text == 'Error': - messages = [m.text for m in response.findall('messages/message/text')] - raise ValidationError(_('Authorize.net Error Message(s):\n %s') % '\n'.join(messages)) return response def _base_tree(self, requestType): @@ -231,6 +259,11 @@ class AuthorizeAPI(): etree.SubElement(order, "invoiceNumber").text = reference response = self._authorize_request(root) res = dict() + (has_error, error_msg) = error_check(response) + if has_error: + res['x_response_code'] = self.AUTH_ERROR_STATUS + res['x_response_reason_text'] = error_msg + return res res['x_response_code'] = response.find('transactionResponse/responseCode').text res['x_trans_id'] = response.find('transactionResponse/transId').text res['x_type'] = 'auth_capture' @@ -261,6 +294,11 @@ class AuthorizeAPI(): etree.SubElement(order, "invoiceNumber").text = reference response = self._authorize_request(root) res = dict() + (has_error, error_msg) = error_check(response) + if has_error: + res['x_response_code'] = self.AUTH_ERROR_STATUS + res['x_response_reason_text'] = error_msg + return res res['x_response_code'] = response.find('transactionResponse/responseCode').text res['x_trans_id'] = response.find('transactionResponse/transId').text res['x_type'] = 'auth_only' @@ -286,6 +324,11 @@ class AuthorizeAPI(): etree.SubElement(tx, "refTransId").text = transaction_id response = self._authorize_request(root) res = dict() + (has_error, error_msg) = error_check(response) + if has_error: + res['x_response_code'] = self.AUTH_ERROR_STATUS + res['x_response_reason_text'] = error_msg + return res res['x_response_code'] = response.find('transactionResponse/responseCode').text res['x_trans_id'] = response.find('transactionResponse/transId').text res['x_type'] = 'prior_auth_capture' @@ -306,6 +349,11 @@ class AuthorizeAPI(): etree.SubElement(tx, "refTransId").text = transaction_id response = self._authorize_request(root) res = dict() + (has_error, error_msg) = error_check(response) + if has_error: + res['x_response_code'] = self.AUTH_ERROR_STATUS + res['x_response_reason_text'] = error_msg + return res res['x_response_code'] = response.find('transactionResponse/responseCode').text res['x_trans_id'] = response.find('transactionResponse/transId').text res['x_type'] = 'void' diff --git a/addons/payment_authorize/tests/test_authorize.py b/addons/payment_authorize/tests/test_authorize.py index 98d87b04116..9e438deb76c 100644 --- a/addons/payment_authorize/tests/test_authorize.py +++ b/addons/payment_authorize/tests/test_authorize.py @@ -212,7 +212,7 @@ class AuthorizeForm(AuthorizeCommon): 'acquirer_id': authorize.id, 'type': 'server2server', 'currency_id': self.currency_usd.id, - 'reference': 'test_ref_%s' % odoo.fields.Date.today(), + 'reference': 'test_ref_%s' % int(time.time()), 'payment_token_id': payment_token.id, 'partner_id': self.buyer_id, @@ -254,3 +254,20 @@ class AuthorizeForm(AuthorizeCommon): self.assertEqual(transaction.state, 'authorized') transaction.action_void() self.assertEqual(transaction.state, 'cancel') + + # try charging an unexisting profile + ghost_payment_token = payment_token.copy() + ghost_payment_token.authorize_profile = '99999999999' + # create normal s2s transaction + transaction = self.env['payment.transaction'].create({ + 'amount': 500, + 'acquirer_id': authorize.id, + 'type': 'server2server', + 'currency_id': self.currency_usd.id, + 'reference': 'test_ref_%s' % int(time.time()), + 'payment_token_id': ghost_payment_token.id, + 'partner_id': self.buyer_id, + + }) + transaction.authorize_s2s_do_transaction() + self.assertEqual(transaction.state, 'error') diff --git a/addons/payment_paypal/controllers/main.py b/addons/payment_paypal/controllers/main.py index edd86c96685..951799917a4 100644 --- a/addons/payment_paypal/controllers/main.py +++ b/addons/payment_paypal/controllers/main.py @@ -31,7 +31,7 @@ class PaypalController(http.Controller): def _parse_pdt_response(self, response): """ Parse a text response for a PDT verification. - :param response str: text response, structured in the following way: + :param str response: text response, structured in the following way: STATUS\nkey1=value1\nkey2=value2...\n or STATUS\nError message...\n :rtype tuple(str, dict) @@ -45,7 +45,7 @@ class PaypalController(http.Controller): for line in lines: split = line.split('=', 1) if len(split) == 2: - pdt_post[split[0]] = urls.url_unquote_plus(split[1]).decode('utf8') + pdt_post[split[0]] = urls.url_unquote_plus(split[1]) else: _logger.warning('Paypal: error processing pdt response: %s', line) @@ -63,7 +63,7 @@ class PaypalController(http.Controller): Once data is validated, process it. """ res = False - new_post = dict(post, cmd='_notify-validate') + new_post = dict(post, cmd='_notify-validate', charset='utf-8') reference = post.get('item_number') tx = None if reference: @@ -78,7 +78,7 @@ class PaypalController(http.Controller): validate_url = paypal_urls['paypal_form_url'] urequest = requests.post(validate_url, new_post) urequest.raise_for_status() - resp = urequest.content + resp = urequest.text if pdt_request: resp, post = self._parse_pdt_response(resp) if resp in ['VERIFIED', 'SUCCESS']: diff --git a/addons/point_of_sale/static/src/js/models.js b/addons/point_of_sale/static/src/js/models.js index 7e515a0964c..774030e27e5 100644 --- a/addons/point_of_sale/static/src/js/models.js +++ b/addons/point_of_sale/static/src/js/models.js @@ -554,7 +554,7 @@ exports.PosModel = Backbone.Model.extend({ .then(function(){ load_model(index + 1); }, function(err){ loaded.reject(err); }); }catch(err){ - console.error(err.stack); + console.error(err.message, err.stack); loaded.reject(err); } },function(err){ diff --git a/addons/point_of_sale/static/src/js/screens.js b/addons/point_of_sale/static/src/js/screens.js index 8a8af32d2fb..8f5e1b9808b 100644 --- a/addons/point_of_sale/static/src/js/screens.js +++ b/addons/point_of_sale/static/src/js/screens.js @@ -73,12 +73,21 @@ var ScreenWidget = PosBaseWidget.extend({ // - if there's a user with a matching barcode, put it as the active 'cashier', go to cashier mode, and return true // - else : do nothing and return false. You probably want to extend this to show and appropriate error popup... barcode_cashier_action: function(code){ + var self = this; var users = this.pos.users; for(var i = 0, len = users.length; i < len; i++){ if(users[i].barcode === code.code){ - this.pos.set_cashier(users[i]); - this.chrome.widget.username.renderElement(); - return true; + if (users[i].id !== this.pos.get_cashier().id && users[i].pos_security_pin) { + return this.gui.ask_password(users[i].pos_security_pin).then(function(){ + self.pos.set_cashier(users[i]); + self.chrome.widget.username.renderElement(); + return true; + }); + } else { + this.pos.set_cashier(users[i]); + this.chrome.widget.username.renderElement(); + return true; + } } } this.barcode_error_action(code); @@ -1087,10 +1096,10 @@ var ClientListScreenWidget = ScreenWidget.extend({ this.$('.searchbox input').on('keypress',function(event){ clearTimeout(search_timeout); - var query = this.value; + var searchbox = this; search_timeout = setTimeout(function(){ - self.perform_search(query,event.which === 13); + self.perform_search(searchbox.value, event.which === 13); },70); }); diff --git a/addons/point_of_sale/tools/posbox/overwrite_before_init/etc/init_posbox_image.sh b/addons/point_of_sale/tools/posbox/overwrite_before_init/etc/init_posbox_image.sh index 7befa749169..38de23ca312 100755 --- a/addons/point_of_sale/tools/posbox/overwrite_before_init/etc/init_posbox_image.sh +++ b/addons/point_of_sale/tools/posbox/overwrite_before_init/etc/init_posbox_image.sh @@ -17,8 +17,7 @@ export DEBIAN_FRONTEND=noninteractive echo "nameserver 8.8.8.8" >> /etc/resolv.conf -apt-get update -apt-get -y dist-upgrade +apt-get update && apt-get -y upgrade # Do not be too fast to upgrade to more recent firmware and kernel than 4.38 # Firmware 4.44 seems to prevent the LED mechanism from working @@ -39,6 +38,8 @@ rm -rf /usr/share/doc pip install pyusb==1.0.0b1 pip install qrcode pip install evdev +pip install simplejson +pip install unittest2 # --upgrade because websocket_client in wheezy is bad: # https://github.com/docker/compose/issues/1288 @@ -53,7 +54,6 @@ sudo -u postgres createuser -s pi mkdir /var/log/odoo chown pi:pi /var/log/odoo chown pi:pi -R /home/pi/odoo/ -chmod 770 -R /home/pi/odoo/ # logrotate is very picky when it comes to file permissions chown -R root:root /etc/logrotate.d/ diff --git a/addons/point_of_sale/tools/posbox/posbox_download_images.sh b/addons/point_of_sale/tools/posbox/posbox_download_images.sh index 09bd79b2103..33beddac041 100755 --- a/addons/point_of_sale/tools/posbox/posbox_download_images.sh +++ b/addons/point_of_sale/tools/posbox/posbox_download_images.sh @@ -1,5 +1,5 @@ #!/bin/sh -wget 'https://downloads.raspberrypi.org/raspbian_lite_latest' -O raspbian.img.zip +wget 'http://downloads.raspberrypi.org/raspbian_lite/images/raspbian_lite-2017-07-05/2017-07-05-raspbian-jessie-lite.zip' -O raspbian.img.zip unzip raspbian.img.zip wget 'https://github.com/dhruvvyas90/qemu-rpi-kernel/raw/master/kernel-qemu-4.4.13-jessie' -O kernel-qemu diff --git a/addons/portal/views/portal_templates.xml b/addons/portal/views/portal_templates.xml index 9d0cadf7c47..60a299a6631 100644 --- a/addons/portal/views/portal_templates.xml +++ b/addons/portal/views/portal_templates.xml @@ -252,7 +252,8 @@
- +

+

diff --git a/addons/pos_discount/static/src/js/discount.js b/addons/pos_discount/static/src/js/discount.js index eadad806fd1..e77e4559e0c 100644 --- a/addons/pos_discount/static/src/js/discount.js +++ b/addons/pos_discount/static/src/js/discount.js @@ -1,14 +1,17 @@ odoo.define('pos_discount.pos_discount', function (require) { "use strict"; +var core = require('web.core'); var screens = require('point_of_sale.screens'); +var _t = core._t; + var DiscountButton = screens.ActionButtonWidget.extend({ template: 'DiscountButton', button_click: function(){ var self = this; this.gui.show_popup('number',{ - 'title': 'Discount Percentage', + 'title': _t('Discount Percentage'), 'value': this.pos.config.discount_pc, 'confirm': function(val) { val = Math.round(Math.max(0,Math.min(100,val))); diff --git a/addons/project/i18n/project.pot b/addons/project/i18n/project.pot index 465cccaeac3..fdde1397284 100644 --- a/addons/project/i18n/project.pot +++ b/addons/project/i18n/project.pot @@ -6,8 +6,8 @@ msgid "" msgstr "" "Project-Id-Version: Odoo Server 11.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-11-16 08:08+0000\n" -"PO-Revision-Date: 2017-11-16 08:08+0000\n" +"POT-Creation-Date: 2017-11-30 13:11+0000\n" +"PO-Revision-Date: 2017-11-30 13:11+0000\n" "Last-Translator: <>\n" "Language-Team: \n" "MIME-Version: 1.0\n" @@ -762,6 +762,11 @@ msgstr "" msgid "Active" msgstr "" +#. module: project +#: model:ir.ui.view,arch_db:project.project_planner +msgid "Activities" +msgstr "" + #. module: project #: model:ir.actions.act_window,name:project.mail_activity_type_action_config_project_types #: model:ir.ui.menu,name:project.project_menu_config_activity_type @@ -2352,6 +2357,11 @@ msgstr "" msgid "Number of documents attached" msgstr "" +#. module: project +#: model:ir.ui.view,arch_db:project.project_planner +msgid "Objectives" +msgstr "" + #. module: project #: model:ir.ui.view,arch_db:project.project_planner msgid "Odoo Project is a super fast and easy way to make your activities and tasks visible to\n" @@ -2458,7 +2468,7 @@ msgid "Planner" msgstr "" #. module: project -#: code:addons/project/models/project.py:925 +#: code:addons/project/models/project.py:887 #, python-format msgid "Please remove existing tasks in the project linked to the accounts you want to delete." msgstr "" @@ -2587,6 +2597,7 @@ msgstr "" #: model:ir.ui.view,arch_db:project.portal_layout #: model:ir.ui.view,arch_db:project.portal_my_home #: model:ir.ui.view,arch_db:project.portal_my_projects +#: model:ir.ui.view,arch_db:project.project_planner #: model:ir.ui.view,arch_db:project.view_project msgid "Projects" msgstr "" diff --git a/addons/purchase/security/purchase_security.xml b/addons/purchase/security/purchase_security.xml index 4e87a129066..9327210daf9 100644 --- a/addons/purchase/security/purchase_security.xml +++ b/addons/purchase/security/purchase_security.xml @@ -51,6 +51,13 @@ ['|',('company_id','=',False),('company_id','child_of',[user.company_id.id])] + + Purchase Order Report multi-company + + + ['|',('company_id','=',False),('company_id','child_of',[user.company_id.id])] + + Portal Purchase Orders diff --git a/addons/purchase_mrp/i18n/purchase_mrp.pot b/addons/purchase_mrp/i18n/purchase_mrp.pot index a4393860494..9ee0f31ac24 100644 --- a/addons/purchase_mrp/i18n/purchase_mrp.pot +++ b/addons/purchase_mrp/i18n/purchase_mrp.pot @@ -4,10 +4,10 @@ # msgid "" msgstr "" -"Project-Id-Version: Odoo Server 10.saas~18\n" +"Project-Id-Version: Odoo Server 11.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-09-20 09:53+0000\n" -"PO-Revision-Date: 2017-09-20 09:53+0000\n" +"POT-Creation-Date: 2017-11-30 13:12+0000\n" +"PO-Revision-Date: 2017-11-30 13:12+0000\n" "Last-Translator: <>\n" "Language-Team: \n" "MIME-Version: 1.0\n" @@ -20,3 +20,8 @@ msgstr "" msgid "Purchase Order Line" msgstr "" +#. module: purchase_mrp +#: model:ir.model,name:purchase_mrp.model_stock_move +msgid "Stock Move" +msgstr "" + diff --git a/addons/rating_project/i18n/rating_project.pot b/addons/rating_project/i18n/rating_project.pot index 12b419e268b..77f92492b4c 100644 --- a/addons/rating_project/i18n/rating_project.pot +++ b/addons/rating_project/i18n/rating_project.pot @@ -4,10 +4,10 @@ # msgid "" msgstr "" -"Project-Id-Version: Odoo Server 10.saas~18\n" +"Project-Id-Version: Odoo Server 11.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-09-20 09:53+0000\n" -"PO-Revision-Date: 2017-09-20 09:53+0000\n" +"POT-Creation-Date: 2017-11-30 13:12+0000\n" +"PO-Revision-Date: 2017-11-30 13:12+0000\n" "Last-Translator: <>\n" "Language-Team: \n" "MIME-Version: 1.0\n" @@ -268,7 +268,7 @@ msgstr "" #. module: rating_project #: model:ir.ui.view,arch_db:rating_project.rating_rating_view_search_project -msgid "Rating on tasks" +msgid "Rating for tasks" msgstr "" #. module: rating_project @@ -281,17 +281,17 @@ msgstr "" msgid "Ratings" msgstr "" -#. module: rating_project -#: model:ir.actions.act_window,name:rating_project.rating_rating_action_view_project_rating_task -msgid "Ratings on tasks" -msgstr "" - #. module: rating_project #: code:addons/rating_project/models/project.py:107 #, python-format msgid "Ratings of %s" msgstr "" +#. module: rating_project +#: model:ir.actions.act_window,name:rating_project.rating_rating_action_view_project_rating_task +msgid "Ratings on tasks" +msgstr "" + #. module: rating_project #: model:ir.ui.view,arch_db:rating_project.res_config_settings_view_form msgid "Set Email Template to Stages" diff --git a/addons/sale_expense/i18n/sale_expense.pot b/addons/sale_expense/i18n/sale_expense.pot index 746629ebab0..0746067d320 100644 --- a/addons/sale_expense/i18n/sale_expense.pot +++ b/addons/sale_expense/i18n/sale_expense.pot @@ -4,10 +4,10 @@ # msgid "" msgstr "" -"Project-Id-Version: Odoo Server 10.saas~18\n" +"Project-Id-Version: Odoo Server 11.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-09-20 09:53+0000\n" -"PO-Revision-Date: 2017-09-20 09:53+0000\n" +"POT-Creation-Date: 2017-11-30 13:12+0000\n" +"PO-Revision-Date: 2017-11-30 13:12+0000\n" "Last-Translator: <>\n" "Language-Team: \n" "MIME-Version: 1.0\n" @@ -30,6 +30,11 @@ msgstr "" msgid "Invoicing" msgstr "" +#. module: sale_expense +#: model:ir.model,name:sale_expense.model_product_template +msgid "Product Template" +msgstr "" + #. module: sale_expense #: model:ir.model.fields,field_description:sale_expense.field_hr_expense_sale_order_id msgid "Sale Order" diff --git a/addons/sale_payment/models/payment.py b/addons/sale_payment/models/payment.py index 89979477b39..94c58752618 100644 --- a/addons/sale_payment/models/payment.py +++ b/addons/sale_payment/models/payment.py @@ -44,7 +44,19 @@ class PaymentTransaction(models.Model): _logger.warning('<%s> transaction STATE INCORRECT for order %s (ID %s, state %s)', self.acquirer_id.provider, self.sale_order_id.name, self.sale_order_id.id, self.sale_order_id.state) return 'pay_sale_invalid_doc_state' if not float_compare(self.amount, self.sale_order_id.amount_total, 2) == 0: - _logger.warning('<%s> transaction AMOUNT MISMATCH for order %s (ID %s)', self.acquirer_id.provider, self.sale_order_id.name, self.sale_order_id.id) + _logger.warning( + '<%s> transaction AMOUNT MISMATCH for order %s (ID %s): expected %r, got %r', + self.acquirer_id.provider, self.sale_order_id.name, self.sale_order_id.id, + self.sale_order_id.amount_total, self.amount, + ) + self.sale_order_id.message_post( + subject=_("Amount Mismatch (%s)") % self.acquirer_id.provider, + body=_("The sale order was not confirmed despite response from the acquirer (%s): SO amount is %r but acquirer replied with %r.") % ( + self.acquirer_id.provider, + self.sale_order_id.amount_total, + self.amount, + ) + ) return 'pay_sale_tx_amount' if self.state == 'authorized' and self.acquirer_id.capture_manually: diff --git a/addons/sale_stock/models/sale_order.py b/addons/sale_stock/models/sale_order.py index 1b07cd731c6..99b8d299fa8 100644 --- a/addons/sale_stock/models/sale_order.py +++ b/addons/sale_stock/models/sale_order.py @@ -242,13 +242,26 @@ class SaleOrderLine(models.Model): if float_compare(qty, line.product_uom_qty, precision_digits=precision) >= 0: continue - if not line.order_id.procurement_group_id: - line.order_id.procurement_group_id = self.env['procurement.group'].create({ + group_id = line.order_id.procurement_group_id + if not group_id: + group_id = self.env['procurement.group'].create({ 'name': line.order_id.name, 'move_type': line.order_id.picking_policy, 'sale_id': line.order_id.id, 'partner_id': line.order_id.partner_shipping_id.id, }) - values = line._prepare_procurement_values(group_id=line.order_id.procurement_group_id) + line.order_id.procurement_group_id = group_id + else: + # In case the procurement group is already created and the order was + # cancelled, we need to update certain values of the group. + updated_vals = {} + if group_id.partner_id != line.order_id.partner_shipping_id: + updated_vals.update({'partner_id': line.order_id.partner_shipping_id.id}) + if group_id.move_type != line.order_id.picking_policy: + updated_vals.update({'move_type': line.order_id.picking_policy}) + if updated_vals: + group_id.write(updated_vals) + + values = line._prepare_procurement_values(group_id=group_id) product_qty = line.product_uom_qty - qty try: self.env['procurement.group'].run(line.product_id, product_qty, line.product_uom, line.order_id.partner_shipping_id.property_stock_customer, line.name, line.order_id.name, values) diff --git a/addons/sale_stock/tests/test_sale_stock.py b/addons/sale_stock/tests/test_sale_stock.py index 3655cf61807..13bfc849a5e 100644 --- a/addons/sale_stock/tests/test_sale_stock.py +++ b/addons/sale_stock/tests/test_sale_stock.py @@ -273,3 +273,34 @@ class TestSaleStock(TestSale): }) # a single picking should be created for the new delivery self.assertEquals(len(self.so.picking_ids), 2) + + def test_05_confirm_cancel_confirm(self): + """ Confirm a sale order, cancel it, set to quotation, change the + partner, confirm it again: the second delivery order should have + the new partner. + """ + item1 = self.products['prod_order'] + partner1 = self.partner.id + partner2 = self.env.ref('base.res_partner_2').id + so1 = self.env['sale.order'].create({ + 'partner_id': partner1, + 'order_line': [(0, 0, { + 'name': item1.name, + 'product_id': item1.id, + 'product_uom_qty': 1, + 'product_uom': item1.uom_id.id, + 'price_unit': item1.list_price, + })], + }) + so1.action_confirm() + self.assertEqual(len(so1.picking_ids), 1) + self.assertEqual(so1.picking_ids.partner_id.id, partner1) + so1.action_cancel() + so1.action_draft() + so1.partner_id = partner2 + so1.partner_shipping_id = partner2 # set by an onchange + so1.action_confirm() + self.assertEqual(len(so1.picking_ids), 2) + picking2 = so1.picking_ids.filtered(lambda p: p.state != 'cancel') + self.assertEqual(picking2.partner_id.id, partner2) + diff --git a/addons/sale_timesheet/tests/common.py b/addons/sale_timesheet/tests/common.py index e60291c61bb..3c13fa71216 100644 --- a/addons/sale_timesheet/tests/common.py +++ b/addons/sale_timesheet/tests/common.py @@ -231,6 +231,21 @@ class CommonTest(common.SavepointCase): 'currency_id': cls.env.ref('base.USD').id, 'company_id': cls.env.user.company_id.id, }) + + cls.bank_journal_euro = cls.env['account.journal'].create({ + 'name': 'Sale Journal - Test', + 'type': 'sale', + 'code': 'SJT', + 'currency_id': cls.env.ref('base.EUR').id, + }) + + cls.bank_journal_usd = cls.env['account.journal'].create({ + 'name': 'Sale Journal - Test US', + 'type': 'sale', + 'code': 'SJTU', + 'currency_id': cls.env.ref('base.USD').id, + }) + cls.pricelist_eur = cls.env['product.pricelist'].create({ 'name': 'EUR pricelist', 'active': True, diff --git a/addons/stock/i18n/stock.pot b/addons/stock/i18n/stock.pot index 367cee3cba5..32e2061ba3e 100644 --- a/addons/stock/i18n/stock.pot +++ b/addons/stock/i18n/stock.pot @@ -6,8 +6,8 @@ msgid "" msgstr "" "Project-Id-Version: Odoo Server 11.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-11-16 08:08+0000\n" -"PO-Revision-Date: 2017-11-16 08:08+0000\n" +"POT-Creation-Date: 2017-11-30 13:11+0000\n" +"PO-Revision-Date: 2017-11-30 13:11+0000\n" "Last-Translator: <>\n" "Language-Team: \n" "MIME-Version: 1.0\n" @@ -43,7 +43,7 @@ msgid "#Products" msgstr "" #. module: stock -#: code:addons/stock/models/stock_warehouse.py:480 +#: code:addons/stock/models/stock_warehouse.py:481 #, python-format msgid "%s: Supply Product from %s" msgstr "" @@ -495,7 +495,7 @@ msgid "A classic sales flow looks like the following:" msgstr "" #. module: stock -#: code:addons/stock/models/stock_move_line.py:85 +#: code:addons/stock/models/stock_move_line.py:86 #, python-format msgid "A done move line should never have a reserved quantity." msgstr "" @@ -508,7 +508,7 @@ msgid "A good inventory management aims to optimize stock levels: not too low (o msgstr "" #. module: stock -#: code:addons/stock/models/stock_quant.py:75 +#: code:addons/stock/models/stock_quant.py:76 #, python-format msgid "A serial number should only be linked to a single product." msgstr "" @@ -638,7 +638,7 @@ msgid "Allow moving packs" msgstr "" #. module: stock -#: code:addons/stock/models/stock_quant.py:81 +#: code:addons/stock/models/stock_quant.py:82 #, python-format msgid "An incoming date cannot be set to an untracked product." msgstr "" @@ -774,7 +774,7 @@ msgid "Back order %s cancelled." msgstr "" #. module: stock -#: code:addons/stock/models/stock_picking.py:774 +#: code:addons/stock/models/stock_picking.py:790 #, python-format msgid "Back order %s created." msgstr "" @@ -873,7 +873,7 @@ msgid "By Unique Serial Number" msgstr "" #. module: stock -#: code:addons/stock/models/stock_move.py:600 +#: code:addons/stock/models/stock_move.py:612 #, python-format msgid "By changing this quantity here, you accept the new quantity as complete: Odoo will not automatically generate a back order." msgstr "" @@ -930,7 +930,7 @@ msgid "Can't find any customer or supplier location." msgstr "" #. module: stock -#: code:addons/stock/models/stock_warehouse.py:475 +#: code:addons/stock/models/stock_warehouse.py:476 #, python-format msgid "Can't find any generic Make To Order route." msgstr "" @@ -1290,7 +1290,7 @@ msgid "Create Backorder" msgstr "" #. module: stock -#: code:addons/stock/models/stock_picking.py:699 +#: code:addons/stock/models/stock_picking.py:715 #, python-format msgid "Create Backorder?" msgstr "" @@ -1557,7 +1557,7 @@ msgstr "" #. module: stock #: model:ir.model.fields,field_description:stock.field_res_config_settings_module_delivery_dhl -msgid "DHL USA" +msgid "DHL" msgstr "" #. module: stock @@ -1992,7 +1992,7 @@ msgid "Every stock operation in Odoo moves the products from one\n" msgstr "" #. module: stock -#: code:addons/stock/models/stock_quant.py:397 +#: code:addons/stock/models/stock_quant.py:407 #, python-format msgid "Everything inside a package should be in the same location" msgstr "" @@ -2304,7 +2304,7 @@ msgstr "" #: model:ir.model.fields,field_description:stock.field_stock_picking_type_id #: model:ir.model.fields,field_description:stock.field_stock_production_lot_id #: model:ir.model.fields,field_description:stock.field_stock_quant_id -#: model:ir.model.fields,field_description:stock.field_stock_quant_package_id_6902 +#: model:ir.model.fields,field_description:stock.field_stock_quant_package_id_6904 #: model:ir.model.fields,field_description:stock.field_stock_quantity_history_id #: model:ir.model.fields,field_description:stock.field_stock_return_picking_id #: model:ir.model.fields,field_description:stock.field_stock_return_picking_line_id @@ -2319,13 +2319,13 @@ msgid "ID" msgstr "" #. module: stock -#: code:addons/stock/models/stock_inventory.py:406 +#: code:addons/stock/models/stock_inventory.py:412 #, python-format msgid "INV:" msgstr "" #. module: stock -#: code:addons/stock/wizard/stock_change_product_qty.py:94 +#: code:addons/stock/wizard/stock_change_product_qty.py:97 #, python-format msgid "INV: %s" msgstr "" @@ -2471,7 +2471,7 @@ msgid "Immediate Transfer" msgstr "" #. module: stock -#: code:addons/stock/models/stock_picking.py:662 +#: code:addons/stock/models/stock_picking.py:678 #, python-format msgid "Immediate Transfer?" msgstr "" @@ -2862,11 +2862,16 @@ msgstr "" #. module: stock #: code:addons/stock/models/stock_quant.py:254 -#: code:addons/stock/models/stock_quant.py:256 #, python-format msgid "It is not possible to reserve more products of %s than you have in stock." msgstr "" +#. module: stock +#: code:addons/stock/models/stock_quant.py:256 +#, python-format +msgid "It is not possible to unreserve more products of %s than you have in stock." +msgstr "" + #. module: stock #: model:ir.ui.view,arch_db:stock.inventory_planner msgid "It is therefore a good idea to check and try to resolve those procurement\n" @@ -3111,6 +3116,7 @@ msgstr "" #: model:ir.model.fields,field_description:stock.field_stock_scrap_location_id #: model:ir.model.fields,field_description:stock.field_stock_warehouse_orderpoint_location_id #: model:ir.model.fields,field_description:stock.field_stock_warn_insufficient_qty_location_id +#: model:ir.model.fields,field_description:stock.field_stock_warn_insufficient_qty_repair_location_id #: model:ir.model.fields,field_description:stock.field_stock_warn_insufficient_qty_scrap_location_id #: model:ir.model.fields,field_description:stock.field_stock_warn_insufficient_qty_unbuild_location_id #: model:ir.ui.view,arch_db:stock.quant_search_view @@ -3261,7 +3267,7 @@ msgid "MTO rule" msgstr "" #. module: stock -#: code:addons/stock/models/stock_warehouse.py:473 +#: code:addons/stock/models/stock_warehouse.py:474 #: model:stock.location.route,name:stock.route_warehouse0_mto #, python-format msgid "Make To Order" @@ -3522,8 +3528,8 @@ msgid "New" msgstr "" #. module: stock -#: code:addons/stock/models/stock_move_line.py:172 -#: code:addons/stock/models/stock_picking.py:584 +#: code:addons/stock/models/stock_move_line.py:173 +#: code:addons/stock/models/stock_picking.py:597 #, python-format msgid "New Move:" msgstr "" @@ -3560,7 +3566,7 @@ msgid "No Tracking" msgstr "" #. module: stock -#: code:addons/stock/models/stock_move_line.py:388 +#: code:addons/stock/models/stock_move_line.py:389 #, python-format msgid "No negative quantities allowed" msgstr "" @@ -3613,7 +3619,7 @@ msgid "Notes" msgstr "" #. module: stock -#: code:addons/stock/models/stock_picking.py:531 +#: code:addons/stock/models/stock_picking.py:544 #, python-format msgid "Nothing to check the availability for." msgstr "" @@ -4191,13 +4197,13 @@ msgid "Planner" msgstr "" #. module: stock -#: code:addons/stock/models/stock_picking.py:636 +#: code:addons/stock/models/stock_picking.py:649 #, python-format msgid "Please add some lines to move" msgstr "" #. module: stock -#: code:addons/stock/models/stock_picking.py:805 +#: code:addons/stock/models/stock_picking.py:823 #, python-format msgid "Please process some quantities to put in the pack first!" msgstr "" @@ -4344,6 +4350,7 @@ msgstr "" #: model:ir.model.fields,field_description:stock.field_stock_scrap_product_id #: model:ir.model.fields,field_description:stock.field_stock_warehouse_orderpoint_product_id #: model:ir.model.fields,field_description:stock.field_stock_warn_insufficient_qty_product_id +#: model:ir.model.fields,field_description:stock.field_stock_warn_insufficient_qty_repair_product_id #: model:ir.model.fields,field_description:stock.field_stock_warn_insufficient_qty_scrap_product_id #: model:ir.model.fields,field_description:stock.field_stock_warn_insufficient_qty_unbuild_product_id #: model:ir.ui.view,arch_db:stock.quant_search_view @@ -4357,7 +4364,7 @@ msgid "Product" msgstr "" #. module: stock -#: code:addons/stock/models/stock_location.py:173 +#: code:addons/stock/models/stock_location.py:180 #: model:ir.model.fields,field_description:stock.field_stock_location_route_categ_ids #: model:ir.ui.menu,name:stock.menu_product_category_config_stock #: model:ir.ui.view,arch_db:stock.stock_location_route_form_view @@ -4463,7 +4470,7 @@ msgid "Production Location" msgstr "" #. module: stock -#: code:addons/stock/models/stock_location.py:163 +#: code:addons/stock/models/stock_location.py:170 #: code:addons/stock/wizard/stock_quantity_history.py:29 #: model:ir.actions.act_window,name:stock.act_product_location_open #: model:ir.actions.act_window,name:stock.product_template_action_product @@ -4578,6 +4585,7 @@ msgstr "" #. module: stock #: model:ir.model.fields,field_description:stock.field_stock_location_quant_ids #: model:ir.model.fields,field_description:stock.field_stock_warn_insufficient_qty_quant_ids +#: model:ir.model.fields,field_description:stock.field_stock_warn_insufficient_qty_repair_quant_ids #: model:ir.model.fields,field_description:stock.field_stock_warn_insufficient_qty_scrap_quant_ids #: model:ir.model.fields,field_description:stock.field_stock_warn_insufficient_qty_unbuild_quant_ids msgid "Quant" @@ -4628,11 +4636,17 @@ msgid "Quantity Reserved" msgstr "" #. module: stock -#: code:addons/stock/wizard/stock_change_product_qty.py:77 +#: code:addons/stock/wizard/stock_change_product_qty.py:80 #, python-format msgid "Quantity cannot be negative." msgstr "" +#. module: stock +#: code:addons/stock/models/stock_move.py:611 +#, python-format +msgid "Quantity decreased!" +msgstr "" + #. module: stock #: model:ir.model.fields,help:stock.field_stock_move_availability msgid "Quantity in stock that can still be reserved for this move" @@ -4683,7 +4697,7 @@ msgid "Quants" msgstr "" #. module: stock -#: code:addons/stock/models/stock_quant.py:69 +#: code:addons/stock/models/stock_quant.py:70 #, python-format msgid "Quants cannot be created for consumables or services." msgstr "" @@ -4822,7 +4836,7 @@ msgid "Removal Strategy" msgstr "" #. module: stock -#: code:addons/stock/models/stock_quant.py:104 +#: code:addons/stock/models/stock_quant.py:111 #, python-format msgid "Removal strategy %s not implemented." msgstr "" @@ -5056,7 +5070,7 @@ msgid "Scheduled time for the first part of the shipment to be processed. Settin msgstr "" #. module: stock -#: code:addons/stock/models/stock_picking.py:818 +#: code:addons/stock/models/stock_picking.py:836 #: model:ir.model.fields,field_description:stock.field_stock_move_scrap_ids #: model:ir.model.fields,field_description:stock.field_stock_warn_insufficient_qty_scrap_scrap_id #: model:ir.ui.menu,name:stock.menu_stock_scrap @@ -5158,31 +5172,31 @@ msgid "Sequence" msgstr "" #. module: stock -#: code:addons/stock/models/stock_warehouse.py:678 +#: code:addons/stock/models/stock_warehouse.py:685 #, python-format msgid "Sequence in" msgstr "" #. module: stock -#: code:addons/stock/models/stock_warehouse.py:682 +#: code:addons/stock/models/stock_warehouse.py:689 #, python-format msgid "Sequence internal" msgstr "" #. module: stock -#: code:addons/stock/models/stock_warehouse.py:679 +#: code:addons/stock/models/stock_warehouse.py:686 #, python-format msgid "Sequence out" msgstr "" #. module: stock -#: code:addons/stock/models/stock_warehouse.py:680 +#: code:addons/stock/models/stock_warehouse.py:687 #, python-format msgid "Sequence packing" msgstr "" #. module: stock -#: code:addons/stock/models/stock_warehouse.py:681 +#: code:addons/stock/models/stock_warehouse.py:688 #, python-format msgid "Sequence picking" msgstr "" @@ -5684,7 +5698,7 @@ msgid "The average delay in days between the confirmation of the customer order msgstr "" #. module: stock -#: code:addons/stock/models/stock_move.py:1033 +#: code:addons/stock/models/stock_move.py:1065 #, python-format msgid "The backorder %s has been created." msgstr "" @@ -5790,7 +5804,7 @@ msgstr "" #. module: stock #: code:addons/stock/models/stock_move.py:266 -#: code:addons/stock/models/stock_move_line.py:79 +#: code:addons/stock/models/stock_move_line.py:80 #, python-format msgid "The requested operation cannot be processed because of a programming error setting the `product_qty` field instead of the `product_uom_qty`." msgstr "" @@ -6163,7 +6177,7 @@ msgid "Units of Measures" msgstr "" #. module: stock -#: code:addons/stock/models/stock_quant.py:311 +#: code:addons/stock/models/stock_quant.py:321 #, python-format msgid "Unknown Pack" msgstr "" @@ -6410,7 +6424,7 @@ msgid "Warehouse to Propagate" msgstr "" #. module: stock -#: code:addons/stock/models/stock_warehouse.py:704 +#: code:addons/stock/models/stock_warehouse.py:711 #, python-format msgid "Warehouse's Routes" msgstr "" @@ -6425,7 +6439,7 @@ msgid "Warehouses" msgstr "" #. module: stock -#: code:addons/stock/models/stock_move_line.py:109 +#: code:addons/stock/models/stock_move_line.py:110 #: selection:res.partner,picking_warn:0 #, python-format msgid "Warning" @@ -6564,7 +6578,7 @@ msgid "You are not allowed to create a lot for this picking type" msgstr "" #. module: stock -#: code:addons/stock/models/stock_move.py:622 +#: code:addons/stock/models/stock_move.py:636 #, python-format msgid "You are using a unit of measure smaller than the one you are using in order to stock your product. This can lead to rounding problem on reserved quantity! You should use the smaller unit of measure possible in order to valuate your stock or change its rounding precision to a smaller value (example: 0.00001)." msgstr "" @@ -6602,7 +6616,7 @@ msgid "You can either do it immediately or mark it as Todo for future processing msgstr "" #. module: stock -#: code:addons/stock/models/product.py:509 +#: code:addons/stock/models/product.py:511 #, python-format msgid "You can not change the type of a product that is currently reserved on a stock move. If you need to change the type, you should first unreserve the stock move." msgstr "" @@ -6614,31 +6628,31 @@ msgid "You can not change the unit of measure of a product that has already been msgstr "" #. module: stock -#: code:addons/stock/models/stock_move_line.py:337 +#: code:addons/stock/models/stock_move_line.py:338 #, python-format msgid "You can not delete product moves if the picking is done. You can only correct the done quantities." msgstr "" #. module: stock -#: code:addons/stock/models/stock_move_line.py:115 +#: code:addons/stock/models/stock_move_line.py:116 #, python-format msgid "You can not enter negative quantities!" msgstr "" #. module: stock -#: code:addons/stock/models/stock_inventory.py:392 +#: code:addons/stock/models/stock_inventory.py:398 #, python-format msgid "You can only adjust stockable products." msgstr "" #. module: stock -#: code:addons/stock/models/stock_move.py:1041 +#: code:addons/stock/models/stock_move.py:1073 #, python-format msgid "You can only delete draft moves." msgstr "" #. module: stock -#: code:addons/stock/models/stock_move_line.py:125 +#: code:addons/stock/models/stock_move_line.py:126 #, python-format msgid "You can only process 1.0 %s for products with unique serial number." msgstr "" @@ -6649,7 +6663,7 @@ msgid "You can review and edit the predefined units via the" msgstr "" #. module: stock -#: code:addons/stock/models/stock_move.py:913 +#: code:addons/stock/models/stock_move.py:936 #, python-format msgid "You cannot cancel a stock move that has been set to 'Done'." msgstr "" @@ -6661,7 +6675,7 @@ msgid "You cannot delete a scrap which is done." msgstr "" #. module: stock -#: code:addons/stock/models/stock_inventory.py:380 +#: code:addons/stock/models/stock_inventory.py:386 #, python-format msgid "You cannot have two inventory adjustements in state 'in Progress' with the same product(%s), same location(%s), same package, same owner and same lot. Please first validatethe first inventory adjustement with this product before creating another one." msgstr "" @@ -6674,19 +6688,19 @@ msgid "You cannot set a negative product quantity in an inventory line:\n" msgstr "" #. module: stock -#: code:addons/stock/models/stock_move.py:1097 +#: code:addons/stock/models/stock_move.py:1101 #, python-format msgid "You cannot split a draft move. It needs to be confirmed first." msgstr "" #. module: stock -#: code:addons/stock/models/stock_move.py:1093 +#: code:addons/stock/models/stock_move.py:1097 #, python-format msgid "You cannot split a move done" msgstr "" #. module: stock -#: code:addons/stock/models/stock_quant.py:87 +#: code:addons/stock/models/stock_quant.py:88 #, python-format msgid "You cannot take products from or deliver products to a location of type \"view\"." msgstr "" @@ -6698,18 +6712,18 @@ msgstr "" msgid "You cannot use the same serial number twice. Please correct the serial numbers encoded." msgstr "" -#. module: stock -#: code:addons/stock/models/stock_picking.py:656 -#, python-format -msgid "You cannot validate a transfer if you have not processed any quantity." -msgstr "" - #. module: stock #: code:addons/stock/models/stock_picking.py:672 #, python-format msgid "You cannot validate a transfer if you have not processed any quantity for %s." msgstr "" +#. module: stock +#: code:addons/stock/models/stock_picking.py:656 +#, python-format +msgid "You cannot validate a transfer if you have not processed any quantity." +msgstr "" + #. module: stock #: model:ir.ui.view,arch_db:stock.report_picking msgid "You do not have any products reserved for this picking. Please click the 'Reserve' button\n" @@ -6717,7 +6731,7 @@ msgid "You do not have any products reserved for this picking. Please click the msgstr "" #. module: stock -#: code:addons/stock/models/stock_move_line.py:131 +#: code:addons/stock/models/stock_move_line.py:132 #, python-format msgid "You have already assigned this serial number to this product. Please correct the serial numbers encoded." msgstr "" @@ -6746,13 +6760,13 @@ msgid "You have products in stock that have no lot number. You can assign seria msgstr "" #. module: stock -#: code:addons/stock/models/stock_warehouse.py:788 +#: code:addons/stock/models/stock_warehouse.py:795 #, python-format msgid "You have to select a product unit of measure in the same category than the default unit of measure of the product" msgstr "" #. module: stock -#: code:addons/stock/models/stock_location.py:91 +#: code:addons/stock/models/stock_location.py:98 #, python-format msgid "You have to set a name for this location." msgstr "" @@ -6777,19 +6791,20 @@ msgstr "" #. module: stock #: code:addons/stock/models/stock_move_line.py:387 -#: code:addons/stock/models/stock_picking.py:669 +#: code:addons/stock/models/stock_picking.py:670 #, python-format msgid "You need to supply a lot/serial number for %s." msgstr "" #. module: stock -#: code:addons/stock/models/stock_move.py:1043 +#: code:addons/stock/models/stock_move.py:1047 #, python-format msgid "You should not put the contents of a package in different locations." msgstr "" #. module: stock #: code:addons/stock/models/product.py:369 +#: code:addons/stock/models/product.py:504 #, python-format msgid "You still have some active reordering rules on this product. Please archive or delete them first." msgstr "" diff --git a/addons/stock/wizard/stock_immediate_transfer.py b/addons/stock/wizard/stock_immediate_transfer.py index 7621ad305bb..e137f5ad85d 100644 --- a/addons/stock/wizard/stock_immediate_transfer.py +++ b/addons/stock/wizard/stock_immediate_transfer.py @@ -37,3 +37,4 @@ class StockImmediateTransfer(models.TransientModel): pick_to_do.action_done() if pick_to_backorder: return pick_to_backorder.action_generate_backorder_wizard() + return False diff --git a/addons/stock_account/i18n/stock_account.pot b/addons/stock_account/i18n/stock_account.pot index ed00c499aca..742fa8c011a 100644 --- a/addons/stock_account/i18n/stock_account.pot +++ b/addons/stock_account/i18n/stock_account.pot @@ -6,8 +6,8 @@ msgid "" msgstr "" "Project-Id-Version: Odoo Server 11.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-10-10 11:34+0000\n" -"PO-Revision-Date: 2017-10-10 11:34+0000\n" +"POT-Creation-Date: 2017-11-30 13:11+0000\n" +"PO-Revision-Date: 2017-11-30 13:11+0000\n" "Last-Translator: <>\n" "Language-Team: \n" "MIME-Version: 1.0\n" @@ -63,13 +63,13 @@ msgid "Cancel" msgstr "" #. module: stock_account -#: code:addons/stock_account/models/stock.py:409 +#: code:addons/stock_account/models/stock.py:452 #, python-format msgid "Cannot find a stock input account for the product %s. You must define one on the product category, or on the location, before processing this operation." msgstr "" #. module: stock_account -#: code:addons/stock_account/models/stock.py:411 +#: code:addons/stock_account/models/stock.py:454 #, python-format msgid "Cannot find a stock output account for the product %s. You must define one on the product category, or on the location, before processing this operation." msgstr "" @@ -86,6 +86,12 @@ msgstr "" msgid "Change Standard Price" msgstr "" +#. module: stock_account +#: code:addons/stock_account/models/product.py:243 +#, python-format +msgid "Changing your cost method is an important change that will impact your inventory valuation. Are you sure you want to make that change?" +msgstr "" + #. module: stock_account #: model:ir.model.fields,help:stock_account.field_stock_inventory_accounting_date msgid "Choose the accounting date at which you want to value the stock moves created by the inventory instead of the default one (the inventory end date)" @@ -97,7 +103,7 @@ msgid "Click to create a stock movement." msgstr "" #. module: stock_account -#: code:addons/stock_account/models/stock.py:480 +#: code:addons/stock_account/models/stock.py:523 #, python-format msgid "Configuration error. Please configure the price difference account on the product or its category to process this operation." msgstr "" @@ -438,11 +444,29 @@ msgid "Templates for Account Chart" msgstr "" #. module: stock_account -#: code:addons/stock_account/models/stock.py:435 +#: code:addons/stock_account/models/stock.py:478 #, python-format msgid "The cost of %s is currently equal to 0. Change the cost or the configuration of your product to avoid an incorrect valuation." msgstr "" +#. module: stock_account +#: code:addons/stock_account/models/stock.py:309 +#, python-format +msgid "The move lines are not in a consistent state: some are entering and other are leaving the company. " +msgstr "" + +#. module: stock_account +#: code:addons/stock_account/models/stock.py:320 +#, python-format +msgid "The move lines are not in a consistent states: they are doing an intercompany in a single step while they should go through the intercompany transit location." +msgstr "" + +#. module: stock_account +#: code:addons/stock_account/models/stock.py:318 +#, python-format +msgid "The move lines are not in a consistent states: they do not share the same origin or destination company." +msgstr "" + #. module: stock_account #: model:ir.model.fields,field_description:stock_account.field_stock_move_to_refund #: model:ir.model.fields,field_description:stock_account.field_stock_return_picking_line_to_refund @@ -492,6 +516,12 @@ msgstr "" msgid "Value" msgstr "" +#. module: stock_account +#: code:addons/stock_account/models/product.py:242 +#, python-format +msgid "Warning" +msgstr "" + #. module: stock_account #: model:ir.model.fields,help:stock_account.field_product_category_property_stock_account_input_categ_id msgid "When doing real-time inventory valuation, counterpart journal items for all incoming stock moves will be posted in this account, unless there is a specific valuation account set on the source location. This is the default value for all products in this category. It can also directly be set on each product" @@ -525,14 +555,14 @@ msgid "When real-time inventory valuation is enabled on a product, this account msgstr "" #. module: stock_account -#: code:addons/stock_account/models/stock.py:407 +#: code:addons/stock_account/models/stock.py:450 #, python-format msgid "You don't have any stock journal defined on your product category, check if you have installed a chart of accounts" msgstr "" #. module: stock_account #: code:addons/stock_account/models/product.py:130 -#: code:addons/stock_account/models/stock.py:413 +#: code:addons/stock_account/models/stock.py:456 #, python-format msgid "You don't have any stock valuation account defined on your product category. You must define one before processing this operation." msgstr "" diff --git a/addons/stock_picking_batch/wizard/stock_immediate_transfer.py b/addons/stock_picking_batch/wizard/stock_immediate_transfer.py index 57de52d59af..9361d18dbe3 100644 --- a/addons/stock_picking_batch/wizard/stock_immediate_transfer.py +++ b/addons/stock_picking_batch/wizard/stock_immediate_transfer.py @@ -11,10 +11,11 @@ class StockImmediateTransfer(models.TransientModel): def process(self): backorder_wizard_dict = super(StockImmediateTransfer, self).process() # If the immediate transfer wizard process all our picking but with some back order maybe needed we want to add the backorder already passed to the wizard. - if backorder_wizard_dict is not None: + if backorder_wizard_dict: backorder_wizard = self.env['stock.backorder.confirmation'].browse(backorder_wizard_dict.get('res_id', False)) backorder_wizard.write({'pick_ids': [(4, p.id) for p in self.pick_to_backorder_ids]}) return backorder_wizard_dict # If there is no backorder returned by the immediate transfer basic function we still wanted to process those manually given elif self.pick_to_backorder_ids: return self.pick_to_backorder_ids.action_generate_backorder_wizard() + return False diff --git a/addons/survey/static/src/js/survey.js b/addons/survey/static/src/js/survey.js index b923235fd5c..e6db7435972 100644 --- a/addons/survey/static/src/js/survey.js +++ b/addons/survey/static/src/js/survey.js @@ -6,6 +6,7 @@ var core = require('web.core'); var time = require('web.time'); var ajax = require('web.ajax'); var base = require('web_editor.base'); +var context = require('web_editor.context'); var field_utils = require('web.field_utils'); var _t = core._t; @@ -171,7 +172,7 @@ if(!the_form.length) { // }); function load_locale(){ - var url = "/web/webclient/locale/" + base.get_context().lang || 'en_US'; + var url = "/web/webclient/locale/" + context.get().lang || 'en_US'; return ajax.loadJS(url); } diff --git a/addons/test_mail/data/test_mail_data.py b/addons/test_mail/data/test_mail_data.py index e516964dc3d..52248cb3095 100644 --- a/addons/test_mail/data/test_mail_data.py +++ b/addons/test_mail/data/test_mail_data.py @@ -170,6 +170,19 @@ Content-Type: text/html; --Apple-Mail=_9331E12B-8BD2-4EC7-B53E-01F3FBEC9227-- """ +MAIL_SINGLE_BINARY = """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" +Content-Type: application/pdf; +Content-Disposition: filename=thetruth.pdf +Content-Transfer-Encoding: base64 +Message-Id: <6BB1FAB2-2104-438E-9447-07AE2C8C4A92@sexample.com> +Mime-Version: 1.0 (Mac OS X Mail 7.3 \(1878.6\)) + +SSBhbSB0aGUgQmF0TWFuCg==""" + MAIL_MULTIPART_IMAGE = """X-Original-To: raoul@example.com Delivered-To: micheline@example.com diff --git a/addons/test_mail/tests/test_mail_gateway.py b/addons/test_mail/tests/test_mail_gateway.py index b082733b3fc..1e455ec1f96 100644 --- a/addons/test_mail/tests/test_mail_gateway.py +++ b/addons/test_mail/tests/test_mail_gateway.py @@ -5,7 +5,9 @@ import socket from email.utils import formataddr -from odoo.addons.test_mail.data.test_mail_data import MAIL_TEMPLATE, MAIL_TEMPLATE_PLAINTEXT, MAIL_MULTIPART_MIXED, MAIL_MULTIPART_MIXED_TWO, MAIL_MULTIPART_IMAGE +from odoo.addons.test_mail.data.test_mail_data import \ + MAIL_TEMPLATE, MAIL_TEMPLATE_PLAINTEXT, MAIL_MULTIPART_MIXED, MAIL_MULTIPART_MIXED_TWO, \ + MAIL_MULTIPART_IMAGE, MAIL_SINGLE_BINARY from odoo.addons.test_mail.tests.common import BaseFunctionalTest, MockEmails from odoo.tools import mute_logger @@ -44,6 +46,9 @@ class TestEmailParsing(BaseFunctionalTest, MockEmails): self.assertIn('Second part', res['body'], 'message_parse: second part of the html version should be in body after parsing multipart/mixed') + res = self.env['mail.thread'].message_parse(MAIL_SINGLE_BINARY) + self.assertEqual(res['body'], '') + self.assertEqual(res['attachments'][0][0], 'thetruth.pdf') class TestMailgateway(BaseFunctionalTest, MockEmails): diff --git a/addons/web/i18n/web.pot b/addons/web/i18n/web.pot index ed5bdbbe8c2..5c30262b100 100644 --- a/addons/web/i18n/web.pot +++ b/addons/web/i18n/web.pot @@ -6,8 +6,8 @@ msgid "" msgstr "" "Project-Id-Version: Odoo Server 11.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-10-24 09:00+0000\n" -"PO-Revision-Date: 2017-10-24 09:00+0000\n" +"POT-Creation-Date: 2017-11-30 13:12+0000\n" +"PO-Revision-Date: 2017-11-30 13:12+0000\n" "Last-Translator: <>\n" "Language-Team: \n" "MIME-Version: 1.0\n" @@ -24,14 +24,14 @@ msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/views/calendar/calendar_model.js:481 +#: code:addons/web/static/src/js/views/calendar/calendar_model.js:502 #, python-format msgid " [Me]" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/chrome/search_filters.js:223 +#: code:addons/web/static/src/js/chrome/search_filters.js:226 #, python-format msgid " and " msgstr "" @@ -47,7 +47,7 @@ msgstr "" #. module: web #. openerp-web #: code:addons/web/static/src/js/fields/field_utils.js:246 -#: code:addons/web/static/src/js/views/kanban/kanban_column.js:149 +#: code:addons/web/static/src/js/views/kanban/kanban_column.js:150 #, python-format msgid " records" msgstr "" @@ -61,7 +61,7 @@ msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:649 +#: code:addons/web/static/src/xml/base.xml:650 #, python-format msgid "# Code editor" msgstr "" @@ -69,7 +69,7 @@ msgstr "" #. module: web #. openerp-web #: code:addons/web/static/src/js/chrome/search_filters.js:107 -#: code:addons/web/static/src/js/chrome/search_filters.js:342 +#: code:addons/web/static/src/js/chrome/search_filters.js:345 #, python-format msgid "%(field)s %(operator)s" msgstr "" @@ -118,7 +118,7 @@ msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/widgets/debug_manager.js:141 +#: code:addons/web/static/src/js/widgets/debug_manager.js:140 #, python-format msgid "%d requests (%d ms) %d queries (%d ms)" msgstr "" @@ -231,14 +231,14 @@ msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:626 +#: code:addons/web/static/src/xml/base.xml:627 #, python-format msgid "ALL" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:627 +#: code:addons/web/static/src/xml/base.xml:628 #, python-format msgid "ANY" msgstr "" @@ -259,7 +259,7 @@ msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:1341 +#: code:addons/web/static/src/xml/base.xml:1342 #, python-format msgid "Access to all Enterprise Apps" msgstr "" @@ -280,31 +280,31 @@ msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/fields/basic_fields.js:1622 +#: code:addons/web/static/src/js/fields/basic_fields.js:1628 #, python-format msgid "Activate" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:230 +#: code:addons/web/static/src/xml/base.xml:231 #, python-format msgid "Activate Assets Debugging" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/fields/basic_fields.js:1621 -#: code:addons/web/static/src/js/fields/basic_fields.js:1625 -#: code:addons/web/static/src/js/fields/basic_fields.js:1629 +#: code:addons/web/static/src/js/fields/basic_fields.js:1627 +#: code:addons/web/static/src/js/fields/basic_fields.js:1631 +#: code:addons/web/static/src/js/fields/basic_fields.js:1635 #, python-format msgid "Active" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/fields/relational_fields.js:1202 -#: code:addons/web/static/src/xml/base.xml:1184 +#: code:addons/web/static/src/js/fields/relational_fields.js:1247 +#: code:addons/web/static/src/xml/base.xml:1185 #: code:addons/web/static/src/xml/kanban.xml:54 #: code:addons/web/static/src/xml/kanban.xml:64 #, python-format @@ -313,35 +313,35 @@ msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:1006 +#: code:addons/web/static/src/xml/base.xml:1007 #, python-format msgid "Add Custom Filter" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:1010 +#: code:addons/web/static/src/xml/base.xml:1011 #, python-format msgid "Add a condition" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/views/list/list_editable_renderer.js:516 +#: code:addons/web/static/src/js/views/list/list_editable_renderer.js:517 #, python-format msgid "Add an item" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:1119 +#: code:addons/web/static/src/xml/base.xml:1120 #, python-format msgid "Add custom group" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:634 +#: code:addons/web/static/src/xml/base.xml:635 #, python-format msgid "Add filter" msgstr "" @@ -355,35 +355,35 @@ msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:694 +#: code:addons/web/static/src/xml/base.xml:695 #, python-format msgid "Add new value" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/fields/basic_fields.js:1546 +#: code:addons/web/static/src/js/fields/basic_fields.js:1552 #, python-format msgid "Add to Favorites" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:358 +#: code:addons/web/static/src/xml/base.xml:359 #, python-format msgid "Add..." msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/fields/relational_fields.js:1225 +#: code:addons/web/static/src/js/fields/relational_fields.js:1274 #, python-format msgid "Add: " msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:983 +#: code:addons/web/static/src/xml/base.xml:984 #, python-format msgid "Advanced Search..." msgstr "" @@ -397,15 +397,15 @@ msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:616 -#: code:addons/web/static/src/xml/base.xml:621 +#: code:addons/web/static/src/xml/base.xml:617 +#: code:addons/web/static/src/xml/base.xml:622 #, python-format msgid "All" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/views/calendar/calendar_model.js:367 +#: code:addons/web/static/src/js/views/calendar/calendar_model.js:382 #: code:addons/web/static/src/js/views/calendar/calendar_renderer.js:351 #, python-format msgid "All day" @@ -413,7 +413,7 @@ msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:488 +#: code:addons/web/static/src/xml/base.xml:489 #, python-format msgid "All users" msgstr "" @@ -434,30 +434,30 @@ msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:1346 +#: code:addons/web/static/src/xml/base.xml:1347 #, python-format msgid "And more" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:617 -#: code:addons/web/static/src/xml/base.xml:622 +#: code:addons/web/static/src/xml/base.xml:618 +#: code:addons/web/static/src/xml/base.xml:623 #, python-format msgid "Any" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:1009 -#: code:addons/web/static/src/xml/base.xml:1130 +#: code:addons/web/static/src/xml/base.xml:1010 +#: code:addons/web/static/src/xml/base.xml:1131 #, python-format msgid "Apply" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/fields/basic_fields.js:1626 +#: code:addons/web/static/src/js/fields/basic_fields.js:1632 #: code:addons/web/static/src/js/views/list/list_controller.js:138 #, python-format msgid "Archive" @@ -472,14 +472,14 @@ msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/fields/basic_fields.js:1625 +#: code:addons/web/static/src/js/fields/basic_fields.js:1631 #, python-format msgid "Archived" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/views/kanban/kanban_column.js:273 +#: code:addons/web/static/src/js/views/kanban/kanban_column.js:274 #, python-format msgid "Are you sure that you want to remove this column ?" msgstr "" @@ -494,35 +494,41 @@ msgstr "" #. module: web #. openerp-web #: code:addons/web/static/src/js/views/basic/basic_controller.js:290 -#: code:addons/web/static/src/js/views/calendar/calendar_controller.js:306 +#: code:addons/web/static/src/js/views/calendar/calendar_controller.js:304 #, python-format msgid "Are you sure you want to delete this record ?" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:331 +#: code:addons/web/static/src/xml/base.xml:332 #, python-format msgid "Attachment :" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:1180 +#: code:addons/web/static/src/xml/base.xml:1181 #, python-format msgid "Available fields" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:509 +#: code:addons/web/static/src/xml/base.xml:510 #, python-format msgid "Bar Chart" msgstr "" +#. module: web +#: code:addons/web/controllers/main.py:1474 +#, python-format +msgid "Binary fields can not be exported to Excel unless their content is base64-encoded. That does not seem to be the case for %s." +msgstr "" + #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:1345 +#: code:addons/web/static/src/xml/base.xml:1346 #, python-format msgid "Bugfixes guarantee" msgstr "" @@ -570,8 +576,8 @@ msgstr "" #: code:addons/web/static/src/js/fields/upgrade_fields.js:75 #: code:addons/web/static/src/js/services/crash_manager.js:203 #: code:addons/web/static/src/js/views/calendar/calendar_quick_create.js:56 -#: code:addons/web/static/src/js/views/kanban/kanban_column.js:267 -#: code:addons/web/static/src/js/views/view_dialogs.js:364 +#: code:addons/web/static/src/js/views/kanban/kanban_column.js:268 +#: code:addons/web/static/src/js/views/view_dialogs.js:356 #: code:addons/web/static/src/xml/base.xml:176 #, python-format msgid "Cancel" @@ -586,10 +592,10 @@ msgstr "" #. module: web #. openerp-web -#: code:addons/web/controllers/main.py:783 -#: code:addons/web/controllers/main.py:785 -#: code:addons/web/controllers/main.py:790 -#: code:addons/web/controllers/main.py:791 +#: code:addons/web/controllers/main.py:787 +#: code:addons/web/controllers/main.py:789 +#: code:addons/web/controllers/main.py:794 +#: code:addons/web/controllers/main.py:795 #: code:addons/web/static/src/js/widgets/change_password.js:27 #: code:addons/web/static/src/xml/base.xml:175 #, python-format @@ -605,26 +611,26 @@ msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:886 -#: code:addons/web/static/src/xml/base.xml:917 +#: code:addons/web/static/src/xml/base.xml:887 +#: code:addons/web/static/src/xml/base.xml:918 #, python-format msgid "Clear" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:227 +#: code:addons/web/static/src/xml/base.xml:228 #, python-format msgid "Clear Events" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/fields/basic_fields.js:1630 -#: code:addons/web/static/src/js/views/calendar/calendar_controller.js:317 +#: code:addons/web/static/src/js/fields/basic_fields.js:1636 +#: code:addons/web/static/src/js/views/calendar/calendar_controller.js:315 #: code:addons/web/static/src/js/views/view_dialogs.js:111 #: code:addons/web/static/src/js/widgets/data_export.js:203 -#: code:addons/web/static/src/js/widgets/debug_manager.js:428 +#: code:addons/web/static/src/js/widgets/debug_manager.js:441 #: code:addons/web/static/src/js/widgets/domain_selector_dialog.js:24 #, python-format msgid "Close" @@ -632,7 +638,7 @@ msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/fields/basic_fields.js:1629 +#: code:addons/web/static/src/js/fields/basic_fields.js:1635 #, python-format msgid "Closed" msgstr "" @@ -646,7 +652,7 @@ msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:462 +#: code:addons/web/static/src/xml/base.xml:463 #, python-format msgid "Condition:" msgstr "" @@ -704,7 +710,7 @@ msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/fields/basic_fields.js:1204 +#: code:addons/web/static/src/js/fields/basic_fields.js:1210 #, python-format msgid "Could not display the selected image." msgstr "" @@ -722,8 +728,8 @@ msgstr "" #: code:addons/web/static/src/js/views/graph/graph_view.js:56 #: code:addons/web/static/src/js/views/pivot/pivot_view.js:39 #: code:addons/web/static/src/js/views/pivot/pivot_view.js:58 -#: code:addons/web/static/src/xml/base.xml:505 -#: code:addons/web/static/src/xml/base.xml:532 +#: code:addons/web/static/src/xml/base.xml:506 +#: code:addons/web/static/src/xml/base.xml:533 #, python-format msgid "Count" msgstr "" @@ -731,27 +737,27 @@ msgstr "" #. module: web #. openerp-web #: code:addons/web/static/src/js/fields/relational_fields.js:44 -#: code:addons/web/static/src/js/views/calendar/calendar_controller.js:224 +#: code:addons/web/static/src/js/views/calendar/calendar_controller.js:222 #: code:addons/web/static/src/js/views/calendar/calendar_quick_create.js:45 #: code:addons/web/static/src/js/views/calendar/calendar_quick_create.js:80 #: code:addons/web/static/src/js/views/kanban/kanban_controller.js:343 -#: code:addons/web/static/src/js/views/view_dialogs.js:370 -#: code:addons/web/static/src/xml/base.xml:404 -#: code:addons/web/static/src/xml/base.xml:424 +#: code:addons/web/static/src/js/views/view_dialogs.js:362 +#: code:addons/web/static/src/xml/base.xml:405 +#: code:addons/web/static/src/xml/base.xml:425 #, python-format msgid "Create" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/views/form/form_controller.js:475 +#: code:addons/web/static/src/js/views/form/form_controller.js:478 #, python-format msgid "Create " msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/fields/relational_fields.js:367 +#: code:addons/web/static/src/js/fields/relational_fields.js:385 #, python-format msgid "Create \"%s\"" msgstr "" @@ -765,7 +771,7 @@ msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/fields/relational_fields.js:381 +#: code:addons/web/static/src/js/fields/relational_fields.js:399 #, python-format msgid "Create and Edit..." msgstr "" @@ -779,7 +785,7 @@ msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/fields/relational_fields.js:410 +#: code:addons/web/static/src/js/fields/relational_fields.js:428 #: code:addons/web/static/src/js/views/calendar/calendar_quick_create.js:85 #, python-format msgid "Create: " @@ -787,21 +793,21 @@ msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:336 +#: code:addons/web/static/src/xml/base.xml:337 #, python-format msgid "Created by :" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:290 +#: code:addons/web/static/src/xml/base.xml:291 #, python-format msgid "Creation Date:" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:286 +#: code:addons/web/static/src/xml/base.xml:287 #, python-format msgid "Creation User:" msgstr "" @@ -820,7 +826,7 @@ msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:550 +#: code:addons/web/static/src/xml/base.xml:551 #: code:addons/web/static/src/xml/web_calendar.xml:71 #, python-format msgid "Day" @@ -828,24 +834,24 @@ msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/fields/basic_fields.js:1622 +#: code:addons/web/static/src/js/fields/basic_fields.js:1628 #, python-format msgid "Deactivate" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:445 +#: code:addons/web/static/src/xml/base.xml:446 #, python-format msgid "Default:" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/views/calendar/calendar_controller.js:304 +#: code:addons/web/static/src/js/views/calendar/calendar_controller.js:302 #: code:addons/web/static/src/js/views/form/form_controller.js:155 #: code:addons/web/static/src/js/views/list/list_controller.js:148 -#: code:addons/web/static/src/xml/base.xml:1225 +#: code:addons/web/static/src/xml/base.xml:1226 #: code:addons/web/static/src/xml/kanban.xml:23 #, python-format msgid "Delete" @@ -853,14 +859,14 @@ msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:347 +#: code:addons/web/static/src/xml/base.xml:348 #, python-format msgid "Delete this attachment" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:964 +#: code:addons/web/static/src/xml/base.xml:965 #, python-format msgid "Delete this file" msgstr "" @@ -869,8 +875,8 @@ msgstr "" #. openerp-web #: code:addons/web/static/src/js/views/view_dialogs.js:111 #: code:addons/web/static/src/js/widgets/domain_selector_dialog.js:31 -#: code:addons/web/static/src/xml/base.xml:411 -#: code:addons/web/static/src/xml/base.xml:434 +#: code:addons/web/static/src/xml/base.xml:412 +#: code:addons/web/static/src/xml/base.xml:435 #: code:addons/web/static/src/xml/kanban.xml:66 #: code:addons/web/static/src/xml/report.xml:18 #, python-format @@ -893,7 +899,7 @@ msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:1319 +#: code:addons/web/static/src/xml/base.xml:1320 #, python-format msgid "Documentation" msgstr "" @@ -907,7 +913,7 @@ msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/widgets/domain_selector.js:501 +#: code:addons/web/static/src/js/widgets/domain_selector.js:520 #, python-format msgid "Domain error" msgstr "" @@ -928,7 +934,7 @@ msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:538 +#: code:addons/web/static/src/xml/base.xml:539 #, python-format msgid "Download xls" msgstr "" @@ -942,11 +948,11 @@ msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/views/calendar/calendar_controller.js:298 +#: code:addons/web/static/src/js/views/calendar/calendar_controller.js:296 #: code:addons/web/static/src/js/views/calendar/calendar_quick_create.js:50 -#: code:addons/web/static/src/xml/base.xml:266 -#: code:addons/web/static/src/xml/base.xml:420 -#: code:addons/web/static/src/xml/base.xml:885 +#: code:addons/web/static/src/xml/base.xml:267 +#: code:addons/web/static/src/xml/base.xml:421 +#: code:addons/web/static/src/xml/base.xml:886 #: code:addons/web/static/src/xml/kanban.xml:65 #: code:addons/web/static/src/xml/report.xml:14 #, python-format @@ -955,28 +961,28 @@ msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:236 +#: code:addons/web/static/src/xml/base.xml:237 #, python-format msgid "Edit Action" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/views/kanban/kanban_column.js:286 +#: code:addons/web/static/src/js/views/kanban/kanban_column.js:287 #, python-format msgid "Edit Column" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:602 +#: code:addons/web/static/src/xml/base.xml:603 #, python-format msgid "Edit Domain" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:267 +#: code:addons/web/static/src/xml/base.xml:268 #, python-format msgid "Edit SearchView" msgstr "" @@ -1009,28 +1015,28 @@ msgid "Error" msgstr "" #. module: web -#: code:addons/web/controllers/main.py:791 +#: code:addons/web/controllers/main.py:795 #, python-format msgid "Error, password not changed !" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/views/calendar/calendar_model.js:490 +#: code:addons/web/static/src/js/views/calendar/calendar_model.js:511 #, python-format msgid "Everybody's calendars" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/views/calendar/calendar_model.js:490 +#: code:addons/web/static/src/js/views/calendar/calendar_model.js:511 #, python-format msgid "Everything" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:537 +#: code:addons/web/static/src/xml/base.xml:538 #, python-format msgid "Expand all" msgstr "" @@ -1051,7 +1057,7 @@ msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:1173 +#: code:addons/web/static/src/xml/base.xml:1174 #, python-format msgid "Export Formats :" msgstr "" @@ -1065,14 +1071,14 @@ msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:1166 +#: code:addons/web/static/src/xml/base.xml:1167 #, python-format msgid "Export Type :" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:1169 +#: code:addons/web/static/src/xml/base.xml:1170 #, python-format msgid "Export all Data" msgstr "" @@ -1093,7 +1099,7 @@ msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:1135 +#: code:addons/web/static/src/xml/base.xml:1136 #, python-format msgid "Favorites" msgstr "" @@ -1107,36 +1113,36 @@ msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/widgets/debug_manager.js:465 -#: code:addons/web/static/src/xml/base.xml:264 +#: code:addons/web/static/src/js/widgets/debug_manager.js:478 +#: code:addons/web/static/src/xml/base.xml:265 #, python-format msgid "Fields View Get" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/widgets/debug_manager.js:248 +#: code:addons/web/static/src/js/widgets/debug_manager.js:261 #, python-format msgid "Fields of %s" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:1192 +#: code:addons/web/static/src/xml/base.xml:1193 #, python-format msgid "Fields to export" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/fields/basic_fields.js:1128 +#: code:addons/web/static/src/js/fields/basic_fields.js:1130 #, python-format msgid "File Upload" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/fields/basic_fields.js:1108 +#: code:addons/web/static/src/js/fields/basic_fields.js:1110 #, python-format msgid "File upload" msgstr "" @@ -1171,14 +1177,14 @@ msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:1002 +#: code:addons/web/static/src/xml/base.xml:1003 #, python-format msgid "Filters" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:536 +#: code:addons/web/static/src/xml/base.xml:537 #, python-format msgid "Flip axis" msgstr "" @@ -1208,7 +1214,7 @@ msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:1338 +#: code:addons/web/static/src/xml/base.xml:1339 #, python-format msgid "Get this feature and much more with Odoo Enterprise!" msgstr "" @@ -1230,7 +1236,7 @@ msgstr "" #. module: web #. openerp-web #: code:addons/web/static/src/js/chrome/search_inputs.js:716 -#: code:addons/web/static/src/xml/base.xml:1114 +#: code:addons/web/static/src/xml/base.xml:1115 #, python-format msgid "Group By" msgstr "" @@ -1256,28 +1262,28 @@ msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:274 +#: code:addons/web/static/src/xml/base.xml:275 #, python-format msgid "ID:" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/fields/basic_fields.js:1204 +#: code:addons/web/static/src/js/fields/basic_fields.js:1210 #, python-format msgid "Image" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:1168 +#: code:addons/web/static/src/xml/base.xml:1169 #, python-format msgid "Import-Compatible Export" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/fields/basic_fields.js:1621 +#: code:addons/web/static/src/js/fields/basic_fields.js:1627 #, python-format msgid "Inactive" msgstr "" @@ -1291,15 +1297,15 @@ msgid "Invalid data" msgstr "" #. module: web -#: code:addons/web/controllers/main.py:687 -#: code:addons/web/controllers/main.py:701 +#: code:addons/web/controllers/main.py:691 +#: code:addons/web/controllers/main.py:705 #, python-format msgid "Invalid database name. Only alphanumerical characters, underscore, hyphen and dot are allowed." msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:600 +#: code:addons/web/static/src/xml/base.xml:601 #, python-format msgid "Invalid domain" msgstr "" @@ -1307,7 +1313,7 @@ msgstr "" #. module: web #. openerp-web #: code:addons/web/static/src/js/widgets/model_field_selector.js:393 -#: code:addons/web/static/src/xml/base.xml:731 +#: code:addons/web/static/src/xml/base.xml:732 #, python-format msgid "Invalid field chain" msgstr "" @@ -1321,7 +1327,14 @@ msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/widgets/debug_manager.js:194 +#: code:addons/web/static/src/js/widgets/debug_manager.js:207 +#, python-format +msgid "JS Mobile Tests" +msgstr "" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/js/widgets/debug_manager.js:196 #, python-format msgid "JS Tests" msgstr "" @@ -1334,35 +1347,35 @@ msgid "Kanban" msgstr "" #. module: web -#: code:addons/web/controllers/main.py:798 +#: code:addons/web/controllers/main.py:802 #, python-format msgid "Languages" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:298 +#: code:addons/web/static/src/xml/base.xml:299 #, python-format msgid "Latest Modification Date:" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:294 +#: code:addons/web/static/src/xml/base.xml:295 #, python-format msgid "Latest Modification by:" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:231 +#: code:addons/web/static/src/xml/base.xml:232 #, python-format msgid "Leave the Developer Tools" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:510 +#: code:addons/web/static/src/xml/base.xml:511 #, python-format msgid "Line Chart" msgstr "" @@ -1409,7 +1422,7 @@ msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:1324 +#: code:addons/web/static/src/xml/base.xml:1325 #, python-format msgid "Log out" msgstr "" @@ -1433,29 +1446,29 @@ msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/widgets/debug_manager.js:258 -#: code:addons/web/static/src/xml/base.xml:239 +#: code:addons/web/static/src/js/widgets/debug_manager.js:271 +#: code:addons/web/static/src/xml/base.xml:240 #, python-format msgid "Manage Filters" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:633 +#: code:addons/web/static/src/xml/base.xml:634 #, python-format msgid "Match" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:640 +#: code:addons/web/static/src/xml/base.xml:641 #, python-format msgid "Match records with" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:638 +#: code:addons/web/static/src/xml/base.xml:639 #, python-format msgid "Match records with the following rule:" msgstr "" @@ -1469,15 +1482,15 @@ msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:497 -#: code:addons/web/static/src/xml/base.xml:524 +#: code:addons/web/static/src/xml/base.xml:498 +#: code:addons/web/static/src/xml/base.xml:525 #, python-format msgid "Measures" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/widgets/debug_manager.js:342 +#: code:addons/web/static/src/js/widgets/debug_manager.js:355 #, python-format msgid "Metadata (%s)" msgstr "" @@ -1498,14 +1511,14 @@ msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:1343 +#: code:addons/web/static/src/xml/base.xml:1344 #, python-format msgid "Mobile support" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:341 +#: code:addons/web/static/src/xml/base.xml:342 #, python-format msgid "Modified by :" msgstr "" @@ -1520,7 +1533,7 @@ msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:552 +#: code:addons/web/static/src/xml/base.xml:553 #: code:addons/web/static/src/xml/web_calendar.xml:73 #, python-format msgid "Month" @@ -1528,8 +1541,8 @@ msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/views/form/form_renderer.js:276 -#: code:addons/web/static/src/xml/base.xml:868 +#: code:addons/web/static/src/js/views/form/form_renderer.js:307 +#: code:addons/web/static/src/xml/base.xml:869 #, python-format msgid "More" msgstr "" @@ -1541,35 +1554,35 @@ msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:1188 +#: code:addons/web/static/src/xml/base.xml:1189 #, python-format msgid "Move Down" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:1187 +#: code:addons/web/static/src/xml/base.xml:1188 #, python-format msgid "Move Up" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:1323 +#: code:addons/web/static/src/xml/base.xml:1324 #, python-format msgid "My Odoo.com account" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:628 +#: code:addons/web/static/src/xml/base.xml:629 #, python-format msgid "NONE" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:1242 +#: code:addons/web/static/src/xml/base.xml:1243 #, python-format msgid "Name:" msgstr "" @@ -1590,7 +1603,7 @@ msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:1342 +#: code:addons/web/static/src/xml/base.xml:1343 #, python-format msgid "New design" msgstr "" @@ -1604,7 +1617,7 @@ msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:282 +#: code:addons/web/static/src/xml/base.xml:283 #, python-format msgid "No Update:" msgstr "" @@ -1618,7 +1631,7 @@ msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:568 +#: code:addons/web/static/src/xml/base.xml:569 #, python-format msgid "No data available for this pivot table. Try to add some records, or make sure\n" " that there is at least one measure and no active filter in the search bar." @@ -1633,14 +1646,14 @@ msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:567 +#: code:addons/web/static/src/xml/base.xml:568 #, python-format msgid "No data to display." msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/widgets/debug_manager.js:330 +#: code:addons/web/static/src/js/widgets/debug_manager.js:343 #, python-format msgid "No metadata available" msgstr "" @@ -1654,14 +1667,14 @@ msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/fields/relational_fields.js:387 +#: code:addons/web/static/src/js/fields/relational_fields.js:405 #, python-format msgid "No results to show..." msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:618 +#: code:addons/web/static/src/xml/base.xml:619 #, python-format msgid "None" msgstr "" @@ -1735,7 +1748,7 @@ msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/fields/basic_fields.js:1638 +#: code:addons/web/static/src/js/fields/basic_fields.js:1644 #, python-format msgid "Off" msgstr "" @@ -1746,8 +1759,8 @@ msgstr "" #: code:addons/web/static/src/js/core/dialog.js:199 #: code:addons/web/static/src/js/core/dialog.js:217 #: code:addons/web/static/src/js/core/dialog.js:268 -#: code:addons/web/static/src/js/views/kanban/kanban_column.js:262 -#: code:addons/web/static/src/xml/base.xml:1215 +#: code:addons/web/static/src/js/views/kanban/kanban_column.js:263 +#: code:addons/web/static/src/xml/base.xml:1216 #, python-format msgid "Ok" msgstr "" @@ -1761,7 +1774,7 @@ msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/fields/basic_fields.js:1637 +#: code:addons/web/static/src/js/fields/basic_fields.js:1643 #, python-format msgid "On" msgstr "" @@ -1775,7 +1788,7 @@ msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/fields/basic_fields.js:1884 +#: code:addons/web/static/src/js/fields/basic_fields.js:1890 #, python-format msgid "Only Integer Value should be valid." msgstr "" @@ -1788,14 +1801,14 @@ msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:481 +#: code:addons/web/static/src/xml/base.xml:482 #, python-format msgid "Only you" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/fields/basic_fields.js:1630 +#: code:addons/web/static/src/js/fields/basic_fields.js:1636 #, python-format msgid "Open" msgstr "" @@ -1809,17 +1822,17 @@ msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:223 +#: code:addons/web/static/src/xml/base.xml:224 #, python-format msgid "Open View" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/fields/relational_fields.js:475 -#: code:addons/web/static/src/js/views/calendar/calendar_controller.js:284 -#: code:addons/web/static/src/js/views/form/form_controller.js:475 -#: code:addons/web/static/src/js/views/form/form_controller.js:494 +#: code:addons/web/static/src/js/fields/relational_fields.js:503 +#: code:addons/web/static/src/js/views/calendar/calendar_controller.js:282 +#: code:addons/web/static/src/js/views/form/form_controller.js:478 +#: code:addons/web/static/src/js/views/form/form_controller.js:498 #, python-format msgid "Open: " msgstr "" @@ -1850,7 +1863,7 @@ msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:511 +#: code:addons/web/static/src/xml/base.xml:512 #, python-format msgid "Pie Chart" msgstr "" @@ -1878,7 +1891,7 @@ msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/views/list/list_renderer.js:331 +#: code:addons/web/static/src/js/views/list/list_renderer.js:328 #, python-format msgid "Please click on the \"save\" button first" msgstr "" @@ -1892,14 +1905,14 @@ msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:1203 +#: code:addons/web/static/src/xml/base.xml:1204 #, python-format msgid "Please note that only the selected ids will be exported." msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:1202 +#: code:addons/web/static/src/xml/base.xml:1203 #, python-format msgid "Please pay attention that all records matching your search filter will be exported. Not only the selected ids." msgstr "" @@ -1937,7 +1950,7 @@ msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:1322 +#: code:addons/web/static/src/xml/base.xml:1323 #, python-format msgid "Preferences" msgstr "" @@ -1962,7 +1975,7 @@ msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:553 +#: code:addons/web/static/src/xml/base.xml:554 #, python-format msgid "Quarter" msgstr "" @@ -1983,21 +1996,21 @@ msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:1185 +#: code:addons/web/static/src/xml/base.xml:1186 #, python-format msgid "Remove" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:1186 +#: code:addons/web/static/src/xml/base.xml:1187 #, python-format msgid "Remove All" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/fields/basic_fields.js:1546 +#: code:addons/web/static/src/js/fields/basic_fields.js:1552 #, python-format msgid "Remove from Favorites" msgstr "" @@ -2018,7 +2031,7 @@ msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/fields/basic_fields.js:1626 +#: code:addons/web/static/src/js/fields/basic_fields.js:1632 #, python-format msgid "Restore" msgstr "" @@ -2030,6 +2043,13 @@ msgstr "" msgid "Restore Records" msgstr "" +#. module: web +#. openerp-web +#: code:addons/web/static/src/xml/base.xml:223 +#, python-format +msgid "Run JS Mobile Tests" +msgstr "" + #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:222 @@ -2041,9 +2061,9 @@ msgstr "" #. openerp-web #: code:addons/web/static/src/js/views/view_dialogs.js:125 #: code:addons/web/static/src/js/widgets/domain_selector_dialog.js:28 -#: code:addons/web/static/src/xml/base.xml:408 -#: code:addons/web/static/src/xml/base.xml:430 -#: code:addons/web/static/src/xml/base.xml:1153 +#: code:addons/web/static/src/xml/base.xml:409 +#: code:addons/web/static/src/xml/base.xml:431 +#: code:addons/web/static/src/xml/base.xml:1154 #: code:addons/web/static/src/xml/report.xml:17 #, python-format msgid "Save" @@ -2058,42 +2078,42 @@ msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/fields/basic_fields.js:1259 +#: code:addons/web/static/src/js/fields/basic_fields.js:1265 #, python-format msgid "Save As..." msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:1215 +#: code:addons/web/static/src/xml/base.xml:1216 #, python-format msgid "Save as:" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:1141 +#: code:addons/web/static/src/xml/base.xml:1142 #, python-format msgid "Save current search" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/widgets/debug_manager.js:429 +#: code:addons/web/static/src/js/widgets/debug_manager.js:442 #, python-format msgid "Save default" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:1192 +#: code:addons/web/static/src/xml/base.xml:1193 #, python-format msgid "Save fields list" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:1218 +#: code:addons/web/static/src/xml/base.xml:1219 #, python-format msgid "Saved exports:" msgstr "" @@ -2116,21 +2136,21 @@ msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/fields/relational_fields.js:343 +#: code:addons/web/static/src/js/fields/relational_fields.js:361 #, python-format msgid "Search More..." msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:985 +#: code:addons/web/static/src/xml/base.xml:986 #, python-format msgid "Search..." msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/fields/relational_fields.js:410 +#: code:addons/web/static/src/js/fields/relational_fields.js:428 #, python-format msgid "Search: " msgstr "" @@ -2144,9 +2164,9 @@ msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/views/view_dialogs.js:377 -#: code:addons/web/static/src/xml/base.xml:915 +#: code:addons/web/static/src/js/views/view_dialogs.js:369 #: code:addons/web/static/src/xml/base.xml:916 +#: code:addons/web/static/src/xml/base.xml:917 #, python-format msgid "Select" msgstr "" @@ -2158,21 +2178,21 @@ msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:604 +#: code:addons/web/static/src/xml/base.xml:605 #, python-format msgid "Select a model to add a filter." msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/widgets/debug_manager.js:169 +#: code:addons/web/static/src/js/widgets/debug_manager.js:168 #, python-format msgid "Select a view" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/fields/basic_fields.js:2303 +#: code:addons/web/static/src/js/fields/basic_fields.js:2314 #, python-format msgid "Selected records" msgstr "" @@ -2186,21 +2206,21 @@ msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/widgets/debug_manager.js:426 +#: code:addons/web/static/src/js/widgets/debug_manager.js:439 #, python-format msgid "Set Default" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:259 +#: code:addons/web/static/src/xml/base.xml:260 #, python-format msgid "Set Defaults" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:1150 +#: code:addons/web/static/src/xml/base.xml:1151 #, python-format msgid "Share with all users" msgstr "" @@ -2220,7 +2240,7 @@ msgid "Size:" msgstr "" #. module: web -#: code:addons/web/controllers/main.py:1109 +#: code:addons/web/controllers/main.py:1113 #, python-format msgid "Something horrible happened" msgstr "" @@ -2255,28 +2275,28 @@ msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:1320 +#: code:addons/web/static/src/xml/base.xml:1321 #, python-format msgid "Support" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/fields/basic_fields.js:1639 +#: code:addons/web/static/src/js/fields/basic_fields.js:1645 #, python-format msgid "Switch Off" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/fields/basic_fields.js:1640 +#: code:addons/web/static/src/js/fields/basic_fields.js:1646 #, python-format msgid "Switch On" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/widgets/domain_selector.js:548 +#: code:addons/web/static/src/js/widgets/domain_selector.js:567 #, python-format msgid "Syntax error" msgstr "" @@ -2297,7 +2317,7 @@ msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:240 +#: code:addons/web/static/src/xml/base.xml:241 #, python-format msgid "Technical Translation" msgstr "" @@ -2310,8 +2330,8 @@ msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/widgets/domain_selector.js:502 -#: code:addons/web/static/src/js/widgets/domain_selector.js:548 +#: code:addons/web/static/src/js/widgets/domain_selector.js:521 +#: code:addons/web/static/src/js/widgets/domain_selector.js:567 #, python-format msgid "The domain you entered is not properly formed" msgstr "" @@ -2325,7 +2345,7 @@ msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/fields/basic_fields.js:1259 +#: code:addons/web/static/src/js/fields/basic_fields.js:1265 #, python-format msgid "The field is empty, there's nothing to save !" msgstr "" @@ -2338,13 +2358,13 @@ msgid "The following fields are invalid:" msgstr "" #. module: web -#: code:addons/web/controllers/main.py:785 +#: code:addons/web/controllers/main.py:789 #, python-format msgid "The new password and its confirmation must be identical." msgstr "" #. module: web -#: code:addons/web/controllers/main.py:790 +#: code:addons/web/controllers/main.py:794 #, python-format msgid "The old password you provided is incorrect, your password was not changed." msgstr "" @@ -2358,35 +2378,36 @@ msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/fields/basic_fields.js:1107 +#: code:addons/web/static/src/js/fields/basic_fields.js:1109 #, python-format msgid "The selected file exceed the maximum file size of %s." msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/fields/relational_fields.js:1289 +#: code:addons/web/static/src/js/fields/relational_fields.js:1338 #, python-format msgid "The type of the field '%s' must be a many2many field with a relation to 'ir.attachment' model." msgstr "" #. module: web -#: code:addons/web/controllers/main.py:1446 +#: code:addons/web/controllers/main.py:1449 #, python-format msgid "There are too many rows (%s rows, limit: 65535) to export as Excel 97-2003 (.xls) format. Consider splitting the export." msgstr "" #. module: web -#: code:addons/web/controllers/main.py:1474 +#. openerp-web +#: code:addons/web/static/src/js/fields/basic_fields.js:1130 #, python-format -msgid "Binary fields can not be exported to Excel unless their content is base64-encoded. That does not seem to be the case for %s." +msgid "There was a problem while uploading your file" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/fields/basic_fields.js:1128 +#: code:addons/web/static/src/js/widgets/domain_selector.js:459 #, python-format -msgid "There was a problem while uploading your file" +msgid "This domain is not supported." msgstr "" #. module: web @@ -2408,7 +2429,7 @@ msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:1159 +#: code:addons/web/static/src/xml/base.xml:1160 #, python-format msgid "This wizard will export all data that matches the current search criteria to a CSV file.\n" " You can export all data or only the fields that can be reimported after modification." @@ -2437,7 +2458,7 @@ msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:226 +#: code:addons/web/static/src/xml/base.xml:227 #, python-format msgid "Toggle Timelines" msgstr "" @@ -2499,8 +2520,8 @@ msgstr "" #: code:addons/web/static/src/js/views/graph/graph_model.js:179 #: code:addons/web/static/src/js/views/kanban/kanban_column.js:73 #: code:addons/web/static/src/js/views/kanban/kanban_column.js:76 +#: code:addons/web/static/src/js/views/list/list_renderer.js:419 #: code:addons/web/static/src/js/views/list/list_renderer.js:422 -#: code:addons/web/static/src/js/views/list/list_renderer.js:425 #: code:addons/web/static/src/js/views/pivot/pivot_model.js:689 #, python-format msgid "Undefined" @@ -2508,7 +2529,7 @@ msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:574 +#: code:addons/web/static/src/xml/base.xml:575 #, python-format msgid "Unhandled widget" msgstr "" @@ -2543,7 +2564,7 @@ msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:1301 +#: code:addons/web/static/src/xml/base.xml:1302 #, python-format msgid "Update translations" msgstr "" @@ -2557,37 +2578,37 @@ msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:1344 +#: code:addons/web/static/src/xml/base.xml:1345 #, python-format msgid "Upgrade to future versions" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:915 +#: code:addons/web/static/src/xml/base.xml:916 #, python-format msgid "Upload your file" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/fields/relational_fields.js:1447 +#: code:addons/web/static/src/js/fields/relational_fields.js:1496 #, python-format msgid "Uploading Error" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:888 -#: code:addons/web/static/src/xml/base.xml:919 -#: code:addons/web/static/src/xml/base.xml:974 +#: code:addons/web/static/src/xml/base.xml:889 +#: code:addons/web/static/src/xml/base.xml:920 +#: code:addons/web/static/src/xml/base.xml:975 #, python-format msgid "Uploading..." msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:1147 +#: code:addons/web/static/src/xml/base.xml:1148 #, python-format msgid "Use by default" msgstr "" @@ -2601,21 +2622,21 @@ msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:266 +#: code:addons/web/static/src/xml/base.xml:267 #, python-format msgid "View" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:238 +#: code:addons/web/static/src/xml/base.xml:239 #, python-format msgid "View Fields" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:261 +#: code:addons/web/static/src/xml/base.xml:262 #, python-format msgid "View Metadata" msgstr "" @@ -2626,7 +2647,7 @@ msgstr "" #: code:addons/web/static/src/js/services/crash_manager.js:13 #: code:addons/web/static/src/js/services/crash_manager.js:14 #: code:addons/web/static/src/js/views/basic/basic_controller.js:78 -#: code:addons/web/static/src/js/views/list/list_renderer.js:331 +#: code:addons/web/static/src/js/views/list/list_renderer.js:328 #, python-format msgid "Warning" msgstr "" @@ -2636,6 +2657,11 @@ msgstr "" msgid "Web Benchmarks" msgstr "" +#. module: web +#: model:ir.ui.view,arch_db:web.qunit_mobile_suite +msgid "Web Mobile Tests" +msgstr "" + #. module: web #: model:ir.ui.view,arch_db:web.qunit_suite msgid "Web Tests" @@ -2649,7 +2675,7 @@ msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:551 +#: code:addons/web/static/src/xml/base.xml:552 #: code:addons/web/static/src/xml/web_calendar.xml:72 #, python-format msgid "Week" @@ -2657,7 +2683,7 @@ msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/views/calendar/calendar_controller.js:351 +#: code:addons/web/static/src/js/views/calendar/calendar_controller.js:349 #, python-format msgid "Week " msgstr "" @@ -2684,21 +2710,21 @@ msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/fields/basic_fields.js:1884 +#: code:addons/web/static/src/js/fields/basic_fields.js:1890 #, python-format msgid "Wrong value entered!" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:278 +#: code:addons/web/static/src/xml/base.xml:279 #, python-format msgid "XML ID:" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:554 +#: code:addons/web/static/src/xml/base.xml:555 #, python-format msgid "Year" msgstr "" @@ -2733,14 +2759,14 @@ msgid "You cannot follow relations for this field chain construction" msgstr "" #. module: web -#: code:addons/web/controllers/main.py:783 +#: code:addons/web/controllers/main.py:787 #, python-format msgid "You cannot leave any password empty." msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:1299 +#: code:addons/web/static/src/xml/base.xml:1300 #, python-format msgid "You have updated" msgstr "" @@ -2786,7 +2812,7 @@ msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/views/kanban/kanban_record.js:199 +#: code:addons/web/static/src/js/views/kanban/kanban_record.js:198 #, python-format msgid "[No widget %s]" msgstr "" @@ -2828,7 +2854,7 @@ msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:633 +#: code:addons/web/static/src/xml/base.xml:634 #, python-format msgid "all records" msgstr "" @@ -2862,16 +2888,16 @@ msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/chrome/search_filters.js:263 -#: code:addons/web/static/src/js/chrome/search_filters.js:292 +#: code:addons/web/static/src/js/chrome/search_filters.js:266 +#: code:addons/web/static/src/js/chrome/search_filters.js:295 #, python-format msgid "greater than" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/chrome/search_filters.js:265 -#: code:addons/web/static/src/js/chrome/search_filters.js:294 +#: code:addons/web/static/src/js/chrome/search_filters.js:268 +#: code:addons/web/static/src/js/chrome/search_filters.js:297 #, python-format msgid "greater than or equal to" msgstr "" @@ -2890,10 +2916,10 @@ msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/chrome/search_filters.js:284 -#: code:addons/web/static/src/js/chrome/search_filters.js:319 -#: code:addons/web/static/src/js/widgets/domain_selector.js:828 -#: code:addons/web/static/src/xml/base.xml:721 +#: code:addons/web/static/src/js/chrome/search_filters.js:287 +#: code:addons/web/static/src/js/chrome/search_filters.js:322 +#: code:addons/web/static/src/js/widgets/domain_selector.js:847 +#: code:addons/web/static/src/xml/base.xml:722 #, python-format msgid "is" msgstr "" @@ -2923,23 +2949,23 @@ msgstr "" #. openerp-web #: code:addons/web/static/src/js/chrome/search_filters.js:165 #: code:addons/web/static/src/js/chrome/search_filters.js:181 -#: code:addons/web/static/src/js/chrome/search_filters.js:261 -#: code:addons/web/static/src/js/chrome/search_filters.js:290 +#: code:addons/web/static/src/js/chrome/search_filters.js:264 +#: code:addons/web/static/src/js/chrome/search_filters.js:293 #, python-format msgid "is equal to" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/chrome/search_filters.js:338 +#: code:addons/web/static/src/js/chrome/search_filters.js:341 #, python-format msgid "is false" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/chrome/search_filters.js:320 -#: code:addons/web/static/src/js/widgets/domain_selector.js:829 +#: code:addons/web/static/src/js/chrome/search_filters.js:323 +#: code:addons/web/static/src/js/widgets/domain_selector.js:848 #, python-format msgid "is not" msgstr "" @@ -2948,8 +2974,8 @@ msgstr "" #. openerp-web #: code:addons/web/static/src/js/chrome/search_filters.js:166 #: code:addons/web/static/src/js/chrome/search_filters.js:182 -#: code:addons/web/static/src/js/chrome/search_filters.js:262 -#: code:addons/web/static/src/js/chrome/search_filters.js:291 +#: code:addons/web/static/src/js/chrome/search_filters.js:265 +#: code:addons/web/static/src/js/chrome/search_filters.js:294 #, python-format msgid "is not equal to" msgstr "" @@ -2958,9 +2984,9 @@ msgstr "" #. openerp-web #: code:addons/web/static/src/js/chrome/search_filters.js:168 #: code:addons/web/static/src/js/chrome/search_filters.js:187 -#: code:addons/web/static/src/js/chrome/search_filters.js:268 -#: code:addons/web/static/src/js/chrome/search_filters.js:297 -#: code:addons/web/static/src/js/chrome/search_filters.js:322 +#: code:addons/web/static/src/js/chrome/search_filters.js:271 +#: code:addons/web/static/src/js/chrome/search_filters.js:300 +#: code:addons/web/static/src/js/chrome/search_filters.js:325 #: code:addons/web/static/src/js/widgets/domain_selector.js:37 #, python-format msgid "is not set" @@ -2970,9 +2996,9 @@ msgstr "" #. openerp-web #: code:addons/web/static/src/js/chrome/search_filters.js:167 #: code:addons/web/static/src/js/chrome/search_filters.js:186 -#: code:addons/web/static/src/js/chrome/search_filters.js:267 -#: code:addons/web/static/src/js/chrome/search_filters.js:296 -#: code:addons/web/static/src/js/chrome/search_filters.js:321 +#: code:addons/web/static/src/js/chrome/search_filters.js:270 +#: code:addons/web/static/src/js/chrome/search_filters.js:299 +#: code:addons/web/static/src/js/chrome/search_filters.js:324 #: code:addons/web/static/src/js/widgets/domain_selector.js:36 #, python-format msgid "is set" @@ -2980,7 +3006,7 @@ msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/chrome/search_filters.js:337 +#: code:addons/web/static/src/js/chrome/search_filters.js:340 #, python-format msgid "is true" msgstr "" @@ -2994,8 +3020,8 @@ msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/chrome/search_filters.js:264 -#: code:addons/web/static/src/js/chrome/search_filters.js:293 +#: code:addons/web/static/src/js/chrome/search_filters.js:267 +#: code:addons/web/static/src/js/chrome/search_filters.js:296 #, python-format msgid "less than" msgstr "" @@ -3009,8 +3035,8 @@ msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/chrome/search_filters.js:266 -#: code:addons/web/static/src/js/chrome/search_filters.js:295 +#: code:addons/web/static/src/js/chrome/search_filters.js:269 +#: code:addons/web/static/src/js/chrome/search_filters.js:298 #, python-format msgid "less than or equal to" msgstr "" @@ -3018,7 +3044,7 @@ msgstr "" #. module: web #. openerp-web #: code:addons/web/static/src/js/widgets/domain_selector.js:18 -#: code:addons/web/static/src/xml/base.xml:723 +#: code:addons/web/static/src/xml/base.xml:724 #, python-format msgid "not" msgstr "" @@ -3053,29 +3079,29 @@ msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/widgets/domain_selector.js:639 +#: code:addons/web/static/src/js/widgets/domain_selector.js:658 #, python-format msgid "not set (false)" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:642 +#: code:addons/web/static/src/xml/base.xml:643 #, python-format msgid "of the following rules:" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:657 +#: code:addons/web/static/src/xml/base.xml:658 #, python-format msgid "of:" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:714 -#: code:addons/web/static/src/xml/base.xml:1082 +#: code:addons/web/static/src/xml/base.xml:715 +#: code:addons/web/static/src/xml/base.xml:1083 #, python-format msgid "or" msgstr "" @@ -3089,7 +3115,7 @@ msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:598 +#: code:addons/web/static/src/xml/base.xml:599 #, python-format msgid "record(s)" msgstr "" @@ -3103,14 +3129,14 @@ msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/xml/base.xml:723 +#: code:addons/web/static/src/xml/base.xml:724 #, python-format msgid "set" msgstr "" #. module: web #. openerp-web -#: code:addons/web/static/src/js/widgets/domain_selector.js:639 +#: code:addons/web/static/src/js/widgets/domain_selector.js:658 #, python-format msgid "set (true)" msgstr "" diff --git a/addons/web/static/src/js/boot.js b/addons/web/static/src/js/boot.js index 9d299b1da84..c229029b944 100644 --- a/addons/web/static/src/js/boot.js +++ b/addons/web/static/src/js/boot.js @@ -10,7 +10,7 @@ * only when the deferred is resolved, and its value is equal to the resolved value. * The module can be rejected (unloaded). This will be logged in the console as info. * - * logs: + * logs: * Missing dependencies: * These modules do not appear in the page. It is possible that the * JavaScript file is not in the page or that the module name is wrong @@ -185,16 +185,27 @@ failed = odoo.__DEBUG__.get_failed_jobs(); var unloaded = _.filter(debug_jobs, function (job) { return job.missing; }); - var log = [(_.isEmpty(failed) ? (_.isEmpty(unloaded) ? 'info' : 'warning' ) : 'error') + ':', 'Some modules could not be started']; - if (missing.length) log.push('\nMissing dependencies: ', missing); - if (!_.isEmpty(failed)) log.push('\nFailed modules: ', _.pluck(failed, 'name')); - if (!_.isEmpty(rejected)) log.push('\nRejected modules: ', rejected); - if (!_.isEmpty(rejected_linked))log.push('\nRejected linked modules:', rejected_linked); - if (!_.isEmpty(unloaded)) log.push('\nNon loaded modules: ', _.pluck(unloaded, 'name')); - if (odoo.debug && !_.isEmpty(debug_jobs)) log.push('\nDebug: ', debug_jobs); - if (odoo.debug || !_.isEmpty(failed) || !_.isEmpty(unloaded)) { - console[_.isEmpty(failed) || _.isEmpty(unloaded) ? 'info' : 'error'].apply(console, log); + var log = console[_.isEmpty(failed) || _.isEmpty(unloaded) ? 'info' : 'error'].bind(console); + log((_.isEmpty(failed) ? (_.isEmpty(unloaded) ? 'info' : 'warning') : 'error') + ': Some modules could not be started'); + if (missing.length) { + log('Missing dependencies: ', missing); + } + if (!_.isEmpty(failed)) { + log('Failed modules: ', _.pluck(failed, 'name')); + } + if (!_.isEmpty(rejected)) { + log('Rejected modules: ', rejected); + } + if (!_.isEmpty(rejected_linked)) { + log('Rejected linked modules: ', rejected_linked); + } + if (!_.isEmpty(unloaded)) { + log('Non loaded modules: ', _.pluck(unloaded, 'name')); + } + if (odoo.debug && !_.isEmpty(debug_jobs)) { + log('Debug: ', debug_jobs); + } } } odoo.__DEBUG__.js_modules = { diff --git a/addons/web/static/src/less/layout_clean.less b/addons/web/static/src/less/layout_clean.less index 85e9c2d8491..869e1f4098f 100644 --- a/addons/web/static/src/less/layout_clean.less +++ b/addons/web/static/src/less/layout_clean.less @@ -70,7 +70,8 @@ /*Total table*/ .row > .col-xs-4 { width: 43%; - margin-top: -20px; + position: relative; + top: -20px; > table { tr:last-child td { border-top: 1px solid @gray-lighter !important; diff --git a/addons/web_editor/static/src/js/backend/fields.js b/addons/web_editor/static/src/js/backend/fields.js index bf83e5b8dec..00c02e20513 100644 --- a/addons/web_editor/static/src/js/backend/fields.js +++ b/addons/web_editor/static/src/js/backend/fields.js @@ -309,6 +309,8 @@ var FieldTextHtml = AbstractField.extend({ old_initialize_content: function () { this.$el.closest('.modal-body').css('max-height', 'none'); this.$iframe = this.$el.find('iframe'); + // deactivate any button to avoid saving a not ready iframe + $('.o_cp_buttons, .o_statusbar_buttons').find('button').addClass('o_disabled').attr('disabled', true); this.document = null; this.$body = $(); this.$content = $(); @@ -324,6 +326,8 @@ var FieldTextHtml = AbstractField.extend({ this.render(); this.add_button(); this.loaded = true; + // reactivate all the buttons when the field's content (the iframe) is loaded + $('.o_cp_buttons, .o_statusbar_buttons').find('button').removeClass('o_disabled').attr('disabled', false); setTimeout(self.resize, 0); }, on_editor_loaded: function (EditorBar) { diff --git a/addons/web_editor/static/src/js/widgets/widgets.js b/addons/web_editor/static/src/js/widgets/widgets.js index 0ca3c6bef7b..05c6df465c6 100644 --- a/addons/web_editor/static/src/js/widgets/widgets.js +++ b/addons/web_editor/static/src/js/widgets/widgets.js @@ -469,7 +469,7 @@ var fontIconsDialog = Widget.extend({ e.stopPropagation(); this.$('#fa-icon').val(e.target.getAttribute('data-id')); - $(".font-icons-icon").removeClass("o_selected"); + this.$(".font-icons-icon").removeClass("o_selected"); $(e.target).addClass("o_selected"); }, 'dblclick .font-icons-icon': function () { @@ -595,7 +595,7 @@ var fontIconsDialog = Widget.extend({ continue; case '': continue; default: - $(".font-icons-icon").removeClass("o_selected").filter("[data-alias*=',"+cls+",']").addClass("o_selected"); + this.$(".font-icons-icon").removeClass("o_selected").filter("[data-alias*=',"+cls+",']").addClass("o_selected"); if (this.alias.indexOf(cls) !== -1) { this.$('#fa-icon').val(cls); } diff --git a/addons/website/data/website_data.xml b/addons/website/data/website_data.xml index dca66aff935..420abdf3e6f 100644 --- a/addons/website/data/website_data.xml +++ b/addons/website/data/website_data.xml @@ -221,7 +221,7 @@ Website Library Image 02 - deliver.png + deliver.jpg ir.ui.view url /website/static/src/img/library/deliver.jpg @@ -266,7 +266,7 @@ Website Library Image 07 - mobile_device.png + mobile_device.jpg ir.ui.view url /website/static/src/img/library/mobile_device.jpg diff --git a/addons/website/i18n/website.pot b/addons/website/i18n/website.pot index adeb05195be..cbcebf76ead 100644 --- a/addons/website/i18n/website.pot +++ b/addons/website/i18n/website.pot @@ -6,8 +6,8 @@ msgid "" msgstr "" "Project-Id-Version: Odoo Server 11.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-11-16 08:08+0000\n" -"PO-Revision-Date: 2017-11-16 08:08+0000\n" +"POT-Creation-Date: 2017-11-30 13:11+0000\n" +"PO-Revision-Date: 2017-11-30 13:11+0000\n" "Last-Translator: <>\n" "Language-Team: \n" "MIME-Version: 1.0\n" @@ -84,6 +84,12 @@ msgstr "" msgid "(e.g. business name, location) tends to improve your ranking in search engines and consequently increases your traffic. Do it:" msgstr "" +#. module: website +#: model:ir.ui.view,arch_db:website.layout_footer_copyright +msgid ",\n" +" the #1" +msgstr "" + #. module: website #: model:ir.ui.view,arch_db:website.show_website_info msgid ",\n" @@ -1231,11 +1237,6 @@ msgstr "" msgid "Create Page" msgstr "" -#. module: website -#: model:ir.ui.view,arch_db:website.layout_footer_copyright -msgid "Create a" -msgstr "" - #. module: website #: model:ir.ui.view,arch_db:website.res_config_settings_view_form msgid "Create a Google Project and Get a Key" @@ -1958,7 +1959,7 @@ msgstr "" #. module: website #: model:ir.model.fields,field_description:website.field_website_id -#: model:ir.model.fields,field_description:website.field_website_menu_id_7239 +#: model:ir.model.fields,field_description:website.field_website_menu_id_7241 #: model:ir.model.fields,field_description:website.field_website_page_id #: model:ir.model.fields,field_description:website.field_website_published_mixin_id #: model:ir.model.fields,field_description:website.field_website_redirect_id @@ -2101,7 +2102,7 @@ msgstr "" #. module: website #. openerp-web -#: code:addons/website/static/src/js/content/website_root.js:209 +#: code:addons/website/static/src/js/content/website_root.js:212 #, python-format msgid "It might be possible to edit the relevant items or fix the issue in the classic Odoo interface" msgstr "" @@ -2605,6 +2606,11 @@ msgstr "" msgid "Open Source ERP" msgstr "" +#. module: website +#: model:ir.ui.view,arch_db:website.layout_footer_copyright +msgid "Open Source eCommerce" +msgstr "" + #. module: website #: model:ir.ui.view,arch_db:website.user_navbar msgid "Optimize SEO" @@ -2808,6 +2814,11 @@ msgstr "" msgid "Post content on other people blogs, forums, websites, that are related to your environment." msgstr "" +#. module: website +#: model:ir.ui.view,arch_db:website.layout_footer_copyright +msgid "Powered by" +msgstr "" + #. module: website #: model:ir.ui.view,arch_db:website.kanban_contain msgid "Prev" @@ -4205,11 +4216,6 @@ msgstr "" msgid "found(s)" msgstr "" -#. module: website -#: model:ir.ui.view,arch_db:website.layout_footer_copyright -msgid "free website" -msgstr "" - #. module: website #. openerp-web #: code:addons/website/static/src/xml/website.seo.xml:28 @@ -4381,11 +4387,6 @@ msgstr "" msgid "will help you:" msgstr "" -#. module: website -#: model:ir.ui.view,arch_db:website.layout_footer_copyright -msgid "with" -msgstr "" - #. module: website #: model:ir.ui.view,arch_db:website.500 msgid "yes" diff --git a/addons/website/models/res_partner.py b/addons/website/models/res_partner.py index d0f4a76b199..d3a3b1bc9f9 100644 --- a/addons/website/models/res_partner.py +++ b/addons/website/models/res_partner.py @@ -21,7 +21,7 @@ class Partner(models.Model): return False params = { 'center': '%s, %s %s, %s' % (self.street or '', self.city or '', self.zip or '', self.country_id and self.country_id.name_get()[0][1] or ''), - 'size': "%sx%s" % (height, width), + 'size': "%sx%s" % (width, height), 'zoom': zoom, 'sensor': 'false', 'key': google_maps_api_key, diff --git a/addons/website/static/src/js/content/snippets.animation.js b/addons/website/static/src/js/content/snippets.animation.js index b02abc8a80f..09dc70fca04 100644 --- a/addons/website/static/src/js/content/snippets.animation.js +++ b/addons/website/static/src/js/content/snippets.animation.js @@ -591,7 +591,11 @@ registry.mediaVideo = Animation.extend({ * @override */ start: function () { - if (!this.$target.has('> iframe').length) { + // TODO: this code should be refactored to make more sense and be better + // integrated with Odoo (this refactoring should be done in master). + this.$target.find('iframe').remove(); + + if (!this.$target.has('.media_iframe_video_size').length) { var editor = '
 
'; var size = '
 
'; this.$target.html(editor+size); diff --git a/addons/website/static/src/js/content/website_root.js b/addons/website/static/src/js/content/website_root.js index 5f61ff74a25..fbe839365ae 100644 --- a/addons/website/static/src/js/content/website_root.js +++ b/addons/website/static/src/js/content/website_root.js @@ -130,17 +130,20 @@ var WebsiteRoot = BodyManager.extend({ * * @private * @param {boolean} [editableMode=false] - true if the page is in edition mode - * @param {jQuery} [$initTarget] - * only initialize the animations whose `selector` matches the element + * @param {jQuery} [$from] + * only initialize the animations whose `selector` matches the + * element or one of its descendant (default to the wrapwrap element) * @returns {Deferred} */ - _startAnimations: function (editableMode, $initTarget) { + _startAnimations: function (editableMode, $from) { var self = this; editableMode = editableMode || false; - var $wrapwrap = this.$('#wrapwrap'); + if ($from === undefined) { + $from = this.$('#wrapwrap'); + } var defs = _.map(sAnimation.registry, function (Animation, animationName) { var selector = Animation.prototype.selector || ''; - var $target = $initTarget ? $initTarget.filter(selector) : $wrapwrap.find(selector).addBack(selector); + var $target = $from.find(selector).addBack(selector); var defs = _.map($target, function (el) { var $snippet = $(el); diff --git a/addons/website_blog/views/website_blog_templates.xml b/addons/website_blog/views/website_blog_templates.xml index 1f50c6b01ae..33c84ad6367 100644 --- a/addons/website_blog/views/website_blog_templates.xml +++ b/addons/website_blog/views/website_blog_templates.xml @@ -102,6 +102,7 @@ +
pull-right diff --git a/addons/website_crm_partner_assign/controllers/main.py b/addons/website_crm_partner_assign/controllers/main.py index 9166b37fa31..ced982eed4a 100644 --- a/addons/website_crm_partner_assign/controllers/main.py +++ b/addons/website_crm_partner_assign/controllers/main.py @@ -169,7 +169,7 @@ class WebsiteAccount(CustomerPortal): return request.render( "website_crm_partner_assign.portal_my_opportunity", { 'opportunity': opp, - 'user_activity': opp.activity_ids.filtered(lambda activity: activity.user_id == request.env.user)[:1], + 'user_activity': opp.sudo().activity_ids.filtered(lambda activity: activity.user_id == request.env.user)[:1], 'stages': request.env['crm.stage'].search([('probability', '!=', '100')], order='sequence desc'), 'activity_types': request.env['mail.activity.type'].sudo().search([]), 'states': request.env['res.country.state'].sudo().search([]), diff --git a/addons/website_crm_partner_assign/models/crm_lead.py b/addons/website_crm_partner_assign/models/crm_lead.py index ce914a5fc4d..4115e397f64 100644 --- a/addons/website_crm_partner_assign/models/crm_lead.py +++ b/addons/website_crm_partner_assign/models/crm_lead.py @@ -3,9 +3,9 @@ import random -from odoo.addons.base_geolocalize.models.res_partner import geo_find, geo_query_address from odoo import api, fields, models, _ - +from odoo.addons.base_geolocalize.models.res_partner import geo_find, geo_query_address +from odoo.exceptions import AccessDenied class CrmLead(models.Model): _inherit = "crm.lead" @@ -254,9 +254,10 @@ class CrmLead(models.Model): @api.model def create_opp_portal(self, values): - if self.env.user.partner_id.grade_id or self.env.user.commercial_partner_id.grade_id: - user = self.env.user - self = self.sudo() + if not (self.env.user.partner_id.grade_id or self.env.user.commercial_partner_id.grade_id): + raise AccessDenied() + user = self.env.user + self = self.sudo() if not (values['contact_name'] and values['description'] and values['title']): return { 'errors': _('All fields are required !') diff --git a/addons/website_crm_partner_assign/views/website_crm_partner_assign_templates.xml b/addons/website_crm_partner_assign/views/website_crm_partner_assign_templates.xml index b191878e62d..96346a3814d 100644 --- a/addons/website_crm_partner_assign/views/website_crm_partner_assign_templates.xml +++ b/addons/website_crm_partner_assign/views/website_crm_partner_assign_templates.xml @@ -272,7 +272,7 @@

My Opportunities - +