[ODOO] Odoo updates till commit ref: 529a8f5aa8

This commit is contained in:
flectra-admin 2018-01-15 15:21:30 +01:00 committed by Siddharth Bhalgami
parent 3d05cc9726
commit 9985810340
30 changed files with 1304 additions and 199 deletions

View File

@ -31,4 +31,4 @@ class HolidaysSummaryDept(models.TransientModel):
'model': 'hr.department',
'form': data
}
return self.env.ref('hr_holidays.action_report_holidayssummary').report_action(departments, data=datas)
return self.env.ref('hr_holidays.action_report_holidayssummary').with_context(from_transient_model=True).report_action(departments, data=datas)

View File

@ -1,31 +1,266 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * l10n_ch
# * l10n_ch
#
# Translators:
# BT_astauder <andreas.stauder@brain-tec.ch>, 2015
# Ermin Trevisan <trevi@twanda.com>, 2015
# Wolfgang Taferner, 2016
msgid ""
msgstr ""
"Project-Id-Version: Odoo 9.0\n"
"Project-Id-Version: Odoo Server 11.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-09-18 15:42+0000\n"
"PO-Revision-Date: 2016-01-15 03:53+0000\n"
"Last-Translator: Wolfgang Taferner\n"
"Language-Team: German (http://www.transifex.com/odoo/odoo-9/language/de/)\n"
"Language: de\n"
"POT-Creation-Date: 2018-01-16 15:58+0000\n"
"PO-Revision-Date: 2018-01-16 15:58+0000\n"
"Last-Translator: <>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"Plural-Forms: \n"
#. module: l10n_ch
#: model:ir.actions.client,name:l10n_ch.action_client_l10n_ch_menu
msgid "Open Account Dashboard Menu"
msgstr " Buchführungsübersicht öffnen"
#: model:ir.model,name:l10n_ch.model_res_bank
msgid "Bank"
msgstr ""
#. module: l10n_ch
#: model:ir.model,name:l10n_ch.model_res_partner_bank
msgid "Bank Accounts"
msgstr ""
#. module: l10n_ch
#: model:ir.model.fields,help:l10n_ch.field_res_company_l10n_ch_isr_print_bank_location
#: model:ir.model.fields,help:l10n_ch.field_res_config_settings_l10n_ch_isr_print_bank_location
msgid "Boolean option field indicating whether or not the alternate layout (the one printing bank name and address) must be used when generating an ISR."
msgstr ""
#. module: l10n_ch
#: model:ir.model.fields,help:l10n_ch.field_account_invoice_l10n_ch_isr_sent
msgid "Boolean value telling whether or not the ISR corresponding to this invoice has already been printed or sent by mail."
msgstr ""
#. module: l10n_ch
#: model:ir.model.fields,help:l10n_ch.field_account_invoice_l10n_ch_isr_valid
msgid "Boolean value. True iff all the data required to generate the ISR are present"
msgstr ""
#. module: l10n_ch
#: model:ir.model.fields,field_description:l10n_ch.field_res_bank_l10n_ch_postal_chf
msgid "CHF ISR reference"
msgstr ""
#. module: l10n_ch
#: model:account.cash.rounding,name:l10n_ch.cash_rounding_5_centime
msgid "Coinage 0.05"
msgstr ""
#. module: l10n_ch
#: model:ir.model,name:l10n_ch.model_res_company
msgid "Companies"
msgstr ""
#. module: l10n_ch
#: model:ir.model.fields,field_description:l10n_ch.field_account_invoice_l10n_ch_currency_name
msgid "Currency"
msgstr ""
#. module: l10n_ch
#: model:ir.model.fields,field_description:l10n_ch.field_res_bank_l10n_ch_postal_eur
msgid "EUR ISR reference"
msgstr ""
#. module: l10n_ch
#: model:ir.model,name:l10n_ch.model_mail_template
msgid "Email Templates"
msgstr ""
#. module: l10n_ch
#: model:ir.model,name:l10n_ch.model_mail_compose_message
msgid "Email composition wizard"
msgstr ""
#. module: l10n_ch
#: model:ir.actions.report,name:l10n_ch.l10n_ch_isr_report
msgid "ISR"
msgstr ""
#. module: l10n_ch
#: model:ir.ui.view,arch_db:l10n_ch.l10n_ch_isr_report_template
msgid "ISR for invoice"
msgstr "ESR bezüglich der Rechnung"
#. module: l10n_ch
#: model:ir.model.fields,help:l10n_ch.field_account_invoice_l10n_ch_isr_number_spaced
msgid "ISR number split in blocks of 5 characters (right-justified), to generate ISR report."
msgstr ""
#. module: l10n_ch
#: model:ir.ui.view,arch_db:l10n_ch.isr_invoice_search_view
msgid "ISR reference number"
msgstr ""
#. module: l10n_ch
#: code:addons/l10n_ch/models/mail_compose_message.py:23
#, python-format
msgid "ISR sent"
msgstr ""
#. module: l10n_ch
#: model:ir.model,name:l10n_ch.model_account_invoice
msgid "Invoice"
msgstr ""
#. module: l10n_ch
#: model:ir.model.fields,field_description:l10n_ch.field_account_invoice_l10n_ch_isr_number
msgid "L10N Ch Isr Number"
msgstr ""
#. module: l10n_ch
#: model:ir.model.fields,field_description:l10n_ch.field_account_invoice_l10n_ch_isr_number_spaced
msgid "L10N Ch Isr Number Spaced"
msgstr ""
#. module: l10n_ch
#: model:ir.model.fields,field_description:l10n_ch.field_account_invoice_l10n_ch_isr_optical_line
msgid "L10N Ch Isr Optical Line"
msgstr ""
#. module: l10n_ch
#: model:ir.model.fields,field_description:l10n_ch.field_account_invoice_l10n_ch_isr_postal
msgid "L10N Ch Isr Postal"
msgstr ""
#. module: l10n_ch
#: model:ir.model.fields,field_description:l10n_ch.field_account_invoice_l10n_ch_isr_postal_formatted
msgid "L10N Ch Isr Postal Formatted"
msgstr ""
#. module: l10n_ch
#: model:ir.model.fields,field_description:l10n_ch.field_account_invoice_l10n_ch_isr_sent
msgid "L10N Ch Isr Sent"
msgstr ""
#. module: l10n_ch
#: model:ir.model.fields,field_description:l10n_ch.field_account_invoice_l10n_ch_isr_valid
msgid "L10N Ch Isr Valid"
msgstr ""
#. module: l10n_ch
#: model:ir.model.fields,field_description:l10n_ch.field_res_partner_bank_l10n_ch_postal
msgid "L10N Ch Postal"
msgstr ""
#. module: l10n_ch
#: model:ir.model.fields,help:l10n_ch.field_account_invoice_l10n_ch_isr_optical_line
msgid "Optical reading line, as it will be printed on ISR"
msgstr ""
#. module: l10n_ch
#: model:ir.model.fields,help:l10n_ch.field_account_invoice_l10n_ch_isr_postal_formatted
msgid "Postal reference of the bank, formated with '-' and without the padding zeros, to generate ISR report."
msgstr ""
#. module: l10n_ch
#: model:ir.ui.view,arch_db:l10n_ch.isr_invoice_form
msgid "Print ISR"
msgstr ""
#. module: l10n_ch
#: model:ir.model.fields,field_description:l10n_ch.field_res_company_l10n_ch_isr_print_bank_location
msgid "Print bank location"
msgstr ""
#. module: l10n_ch
#: model:ir.model.fields,field_description:l10n_ch.field_res_config_settings_l10n_ch_isr_print_bank_location
msgid "Print bank on ISR"
msgstr ""
#. module: l10n_ch
#: model:ir.ui.view,arch_db:l10n_ch.res_config_settings_view_form
msgid "Print the coordinates of your bank under the 'Payment for' title of the ISR.\n"
" Your address will be moved to the 'in favour of' section."
msgstr ""
#. module: l10n_ch
#: model:ir.ui.menu,name:l10n_ch.account_reports_ch_statements_menu
msgid "Swiss Statements"
msgstr "CH Bilanz- und Erfolgsrechnungen"
msgid "Switzerland"
msgstr ""
#. module: l10n_ch
#: model:account.tax.group,name:l10n_ch.tax_group_tva_0
msgid "TVA 0%"
msgstr ""
#. module: l10n_ch
#: model:account.tax.group,name:l10n_ch.tax_group_tva_25
msgid "TVA 2.5%"
msgstr ""
#. module: l10n_ch
#: model:account.tax.group,name:l10n_ch.tax_group_tva_37
msgid "TVA 3.7%"
msgstr ""
#. module: l10n_ch
#: model:account.tax.group,name:l10n_ch.tax_group_tva_38
msgid "TVA 3.8%"
msgstr ""
#. module: l10n_ch
#: model:account.tax.group,name:l10n_ch.tax_group_tva_77
msgid "TVA 7.7%"
msgstr ""
#. module: l10n_ch
#: model:account.tax.group,name:l10n_ch.tax_group_tva_8
msgid "TVA 8%"
msgstr ""
#. module: l10n_ch
#: model:ir.model.fields,help:l10n_ch.field_res_partner_bank_l10n_ch_postal
msgid "The ISR number of the company within the bank"
msgstr ""
#. module: l10n_ch
#: model:ir.model.fields,help:l10n_ch.field_account_invoice_l10n_ch_currency_name
msgid "The name of this invoice's currency"
msgstr ""
#. module: l10n_ch
#: model:ir.model.fields,help:l10n_ch.field_account_invoice_l10n_ch_isr_postal
msgid "The postal reference identifying the bank managing this ISR."
msgstr ""
#. module: l10n_ch
#: model:ir.model.fields,help:l10n_ch.field_res_bank_l10n_ch_postal_chf
msgid "The postal reference of the bank, used to generate ISR payment slips in CHF."
msgstr ""
#. module: l10n_ch
#: model:ir.model.fields,help:l10n_ch.field_res_bank_l10n_ch_postal_eur
msgid "The postal reference of the bank, used to generate ISR payment slips in EUR."
msgstr ""
#. module: l10n_ch
#: model:ir.model.fields,help:l10n_ch.field_account_invoice_l10n_ch_isr_number
msgid "The reference number associated with this invoice"
msgstr ""
#. module: l10n_ch
#: code:addons/l10n_ch/models/account_invoice.py:154
#, python-format
msgid "You cannot generate an ISR yet.\n"
"\n"
" For this, you need to :\n"
"\n"
" - set a valid postal account number (or an IBAN referencing one) for your company\n"
"\n"
" - define its bank\n"
"\n"
" - associate this bank with a postal reference for the currency used in this invoice\n"
"\n"
" - fill the 'bank account' field of the invoice with the postal to be used to receive the related payment. A default account will be automatically set for all invoices created after you defined a postal account for your company."
msgstr ""
#. module: l10n_ch
#: model:ir.model,name:l10n_ch.model_res_config_settings
msgid "res.config.settings"
msgstr ""

View File

@ -1,30 +1,266 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * l10n_ch
# * l10n_ch
#
# Translators:
# Maxime Chambreuil <maxime.chambreuil@gmail.com>, 2015
# Miguel Vidali <mvidali129@gmail.com>, 2015
msgid ""
msgstr ""
"Project-Id-Version: Odoo 9.0\n"
"Project-Id-Version: Odoo Server 11.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-09-18 15:42+0000\n"
"PO-Revision-Date: 2015-11-11 21:04+0000\n"
"Last-Translator: Maxime Chambreuil <maxime.chambreuil@gmail.com>\n"
"Language-Team: French (http://www.transifex.com/odoo/odoo-9/language/fr/)\n"
"Language: fr\n"
"POT-Creation-Date: 2018-01-16 15:58+0000\n"
"PO-Revision-Date: 2018-01-16 15:58+0000\n"
"Last-Translator: <>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
"Plural-Forms: \n"
#. module: l10n_ch
#: model:ir.actions.client,name:l10n_ch.action_client_l10n_ch_menu
msgid "Open Account Dashboard Menu"
msgstr "Ouvrez le menu Comptabilité"
#: model:ir.model,name:l10n_ch.model_res_bank
msgid "Bank"
msgstr ""
#. module: l10n_ch
#: model:ir.model,name:l10n_ch.model_res_partner_bank
msgid "Bank Accounts"
msgstr ""
#. module: l10n_ch
#: model:ir.model.fields,help:l10n_ch.field_res_company_l10n_ch_isr_print_bank_location
#: model:ir.model.fields,help:l10n_ch.field_res_config_settings_l10n_ch_isr_print_bank_location
msgid "Boolean option field indicating whether or not the alternate layout (the one printing bank name and address) must be used when generating an ISR."
msgstr ""
#. module: l10n_ch
#: model:ir.model.fields,help:l10n_ch.field_account_invoice_l10n_ch_isr_sent
msgid "Boolean value telling whether or not the ISR corresponding to this invoice has already been printed or sent by mail."
msgstr ""
#. module: l10n_ch
#: model:ir.model.fields,help:l10n_ch.field_account_invoice_l10n_ch_isr_valid
msgid "Boolean value. True iff all the data required to generate the ISR are present"
msgstr ""
#. module: l10n_ch
#: model:ir.model.fields,field_description:l10n_ch.field_res_bank_l10n_ch_postal_chf
msgid "CHF ISR reference"
msgstr ""
#. module: l10n_ch
#: model:account.cash.rounding,name:l10n_ch.cash_rounding_5_centime
msgid "Coinage 0.05"
msgstr ""
#. module: l10n_ch
#: model:ir.model,name:l10n_ch.model_res_company
msgid "Companies"
msgstr ""
#. module: l10n_ch
#: model:ir.model.fields,field_description:l10n_ch.field_account_invoice_l10n_ch_currency_name
msgid "Currency"
msgstr ""
#. module: l10n_ch
#: model:ir.model.fields,field_description:l10n_ch.field_res_bank_l10n_ch_postal_eur
msgid "EUR ISR reference"
msgstr ""
#. module: l10n_ch
#: model:ir.model,name:l10n_ch.model_mail_template
msgid "Email Templates"
msgstr ""
#. module: l10n_ch
#: model:ir.model,name:l10n_ch.model_mail_compose_message
msgid "Email composition wizard"
msgstr ""
#. module: l10n_ch
#: model:ir.actions.report,name:l10n_ch.l10n_ch_isr_report
msgid "ISR"
msgstr ""
#. module: l10n_ch
#: model:ir.ui.view,arch_db:l10n_ch.l10n_ch_isr_report_template
msgid "ISR for invoice"
msgstr "BVR relatif à la facture"
#. module: l10n_ch
#: model:ir.model.fields,help:l10n_ch.field_account_invoice_l10n_ch_isr_number_spaced
msgid "ISR number split in blocks of 5 characters (right-justified), to generate ISR report."
msgstr ""
#. module: l10n_ch
#: model:ir.ui.view,arch_db:l10n_ch.isr_invoice_search_view
msgid "ISR reference number"
msgstr ""
#. module: l10n_ch
#: code:addons/l10n_ch/models/mail_compose_message.py:23
#, python-format
msgid "ISR sent"
msgstr ""
#. module: l10n_ch
#: model:ir.model,name:l10n_ch.model_account_invoice
msgid "Invoice"
msgstr ""
#. module: l10n_ch
#: model:ir.model.fields,field_description:l10n_ch.field_account_invoice_l10n_ch_isr_number
msgid "L10N Ch Isr Number"
msgstr ""
#. module: l10n_ch
#: model:ir.model.fields,field_description:l10n_ch.field_account_invoice_l10n_ch_isr_number_spaced
msgid "L10N Ch Isr Number Spaced"
msgstr ""
#. module: l10n_ch
#: model:ir.model.fields,field_description:l10n_ch.field_account_invoice_l10n_ch_isr_optical_line
msgid "L10N Ch Isr Optical Line"
msgstr ""
#. module: l10n_ch
#: model:ir.model.fields,field_description:l10n_ch.field_account_invoice_l10n_ch_isr_postal
msgid "L10N Ch Isr Postal"
msgstr ""
#. module: l10n_ch
#: model:ir.model.fields,field_description:l10n_ch.field_account_invoice_l10n_ch_isr_postal_formatted
msgid "L10N Ch Isr Postal Formatted"
msgstr ""
#. module: l10n_ch
#: model:ir.model.fields,field_description:l10n_ch.field_account_invoice_l10n_ch_isr_sent
msgid "L10N Ch Isr Sent"
msgstr ""
#. module: l10n_ch
#: model:ir.model.fields,field_description:l10n_ch.field_account_invoice_l10n_ch_isr_valid
msgid "L10N Ch Isr Valid"
msgstr ""
#. module: l10n_ch
#: model:ir.model.fields,field_description:l10n_ch.field_res_partner_bank_l10n_ch_postal
msgid "L10N Ch Postal"
msgstr ""
#. module: l10n_ch
#: model:ir.model.fields,help:l10n_ch.field_account_invoice_l10n_ch_isr_optical_line
msgid "Optical reading line, as it will be printed on ISR"
msgstr ""
#. module: l10n_ch
#: model:ir.model.fields,help:l10n_ch.field_account_invoice_l10n_ch_isr_postal_formatted
msgid "Postal reference of the bank, formated with '-' and without the padding zeros, to generate ISR report."
msgstr ""
#. module: l10n_ch
#: model:ir.ui.view,arch_db:l10n_ch.isr_invoice_form
msgid "Print ISR"
msgstr ""
#. module: l10n_ch
#: model:ir.model.fields,field_description:l10n_ch.field_res_company_l10n_ch_isr_print_bank_location
msgid "Print bank location"
msgstr ""
#. module: l10n_ch
#: model:ir.model.fields,field_description:l10n_ch.field_res_config_settings_l10n_ch_isr_print_bank_location
msgid "Print bank on ISR"
msgstr ""
#. module: l10n_ch
#: model:ir.ui.view,arch_db:l10n_ch.res_config_settings_view_form
msgid "Print the coordinates of your bank under the 'Payment for' title of the ISR.\n"
" Your address will be moved to the 'in favour of' section."
msgstr ""
#. module: l10n_ch
#: model:ir.ui.menu,name:l10n_ch.account_reports_ch_statements_menu
msgid "Swiss Statements"
msgstr "Déclarations suisses"
msgid "Switzerland"
msgstr ""
#. module: l10n_ch
#: model:account.tax.group,name:l10n_ch.tax_group_tva_0
msgid "TVA 0%"
msgstr ""
#. module: l10n_ch
#: model:account.tax.group,name:l10n_ch.tax_group_tva_25
msgid "TVA 2.5%"
msgstr ""
#. module: l10n_ch
#: model:account.tax.group,name:l10n_ch.tax_group_tva_37
msgid "TVA 3.7%"
msgstr ""
#. module: l10n_ch
#: model:account.tax.group,name:l10n_ch.tax_group_tva_38
msgid "TVA 3.8%"
msgstr ""
#. module: l10n_ch
#: model:account.tax.group,name:l10n_ch.tax_group_tva_77
msgid "TVA 7.7%"
msgstr ""
#. module: l10n_ch
#: model:account.tax.group,name:l10n_ch.tax_group_tva_8
msgid "TVA 8%"
msgstr ""
#. module: l10n_ch
#: model:ir.model.fields,help:l10n_ch.field_res_partner_bank_l10n_ch_postal
msgid "The ISR number of the company within the bank"
msgstr ""
#. module: l10n_ch
#: model:ir.model.fields,help:l10n_ch.field_account_invoice_l10n_ch_currency_name
msgid "The name of this invoice's currency"
msgstr ""
#. module: l10n_ch
#: model:ir.model.fields,help:l10n_ch.field_account_invoice_l10n_ch_isr_postal
msgid "The postal reference identifying the bank managing this ISR."
msgstr ""
#. module: l10n_ch
#: model:ir.model.fields,help:l10n_ch.field_res_bank_l10n_ch_postal_chf
msgid "The postal reference of the bank, used to generate ISR payment slips in CHF."
msgstr ""
#. module: l10n_ch
#: model:ir.model.fields,help:l10n_ch.field_res_bank_l10n_ch_postal_eur
msgid "The postal reference of the bank, used to generate ISR payment slips in EUR."
msgstr ""
#. module: l10n_ch
#: model:ir.model.fields,help:l10n_ch.field_account_invoice_l10n_ch_isr_number
msgid "The reference number associated with this invoice"
msgstr ""
#. module: l10n_ch
#: code:addons/l10n_ch/models/account_invoice.py:154
#, python-format
msgid "You cannot generate an ISR yet.\n"
"\n"
" For this, you need to :\n"
"\n"
" - set a valid postal account number (or an IBAN referencing one) for your company\n"
"\n"
" - define its bank\n"
"\n"
" - associate this bank with a postal reference for the currency used in this invoice\n"
"\n"
" - fill the 'bank account' field of the invoice with the postal to be used to receive the related payment. A default account will be automatically set for all invoices created after you defined a postal account for your company."
msgstr ""
#. module: l10n_ch
#: model:ir.model,name:l10n_ch.model_res_config_settings
msgid "res.config.settings"
msgstr ""

View File

@ -1,28 +1,266 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * l10n_ch
# * l10n_ch
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: Odoo 9.0\n"
"Project-Id-Version: Odoo Server 11.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-09-18 15:42+0000\n"
"PO-Revision-Date: 2016-02-24 22:58+0000\n"
"Last-Translator: Martin Trigaux\n"
"Language-Team: Italian (http://www.transifex.com/odoo/odoo-9/language/it/)\n"
"Language: it\n"
"POT-Creation-Date: 2018-01-16 15:58+0000\n"
"PO-Revision-Date: 2018-01-16 15:58+0000\n"
"Last-Translator: <>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"Plural-Forms: \n"
#. module: l10n_ch
#: model:ir.actions.client,name:l10n_ch.action_client_l10n_ch_menu
msgid "Open Account Dashboard Menu"
msgstr "Apri menu dashboard dell'account"
#: model:ir.model,name:l10n_ch.model_res_bank
msgid "Bank"
msgstr ""
#. module: l10n_ch
#: model:ir.model,name:l10n_ch.model_res_partner_bank
msgid "Bank Accounts"
msgstr ""
#. module: l10n_ch
#: model:ir.model.fields,help:l10n_ch.field_res_company_l10n_ch_isr_print_bank_location
#: model:ir.model.fields,help:l10n_ch.field_res_config_settings_l10n_ch_isr_print_bank_location
msgid "Boolean option field indicating whether or not the alternate layout (the one printing bank name and address) must be used when generating an ISR."
msgstr ""
#. module: l10n_ch
#: model:ir.model.fields,help:l10n_ch.field_account_invoice_l10n_ch_isr_sent
msgid "Boolean value telling whether or not the ISR corresponding to this invoice has already been printed or sent by mail."
msgstr ""
#. module: l10n_ch
#: model:ir.model.fields,help:l10n_ch.field_account_invoice_l10n_ch_isr_valid
msgid "Boolean value. True iff all the data required to generate the ISR are present"
msgstr ""
#. module: l10n_ch
#: model:ir.model.fields,field_description:l10n_ch.field_res_bank_l10n_ch_postal_chf
msgid "CHF ISR reference"
msgstr ""
#. module: l10n_ch
#: model:account.cash.rounding,name:l10n_ch.cash_rounding_5_centime
msgid "Coinage 0.05"
msgstr ""
#. module: l10n_ch
#: model:ir.model,name:l10n_ch.model_res_company
msgid "Companies"
msgstr ""
#. module: l10n_ch
#: model:ir.model.fields,field_description:l10n_ch.field_account_invoice_l10n_ch_currency_name
msgid "Currency"
msgstr ""
#. module: l10n_ch
#: model:ir.model.fields,field_description:l10n_ch.field_res_bank_l10n_ch_postal_eur
msgid "EUR ISR reference"
msgstr ""
#. module: l10n_ch
#: model:ir.model,name:l10n_ch.model_mail_template
msgid "Email Templates"
msgstr ""
#. module: l10n_ch
#: model:ir.model,name:l10n_ch.model_mail_compose_message
msgid "Email composition wizard"
msgstr ""
#. module: l10n_ch
#: model:ir.actions.report,name:l10n_ch.l10n_ch_isr_report
msgid "ISR"
msgstr ""
#. module: l10n_ch
#: model:ir.ui.view,arch_db:l10n_ch.l10n_ch_isr_report_template
msgid "ISR for invoice"
msgstr "SR relativo alla fattura"
#. module: l10n_ch
#: model:ir.model.fields,help:l10n_ch.field_account_invoice_l10n_ch_isr_number_spaced
msgid "ISR number split in blocks of 5 characters (right-justified), to generate ISR report."
msgstr ""
#. module: l10n_ch
#: model:ir.ui.view,arch_db:l10n_ch.isr_invoice_search_view
msgid "ISR reference number"
msgstr ""
#. module: l10n_ch
#: code:addons/l10n_ch/models/mail_compose_message.py:23
#, python-format
msgid "ISR sent"
msgstr ""
#. module: l10n_ch
#: model:ir.model,name:l10n_ch.model_account_invoice
msgid "Invoice"
msgstr ""
#. module: l10n_ch
#: model:ir.model.fields,field_description:l10n_ch.field_account_invoice_l10n_ch_isr_number
msgid "L10N Ch Isr Number"
msgstr ""
#. module: l10n_ch
#: model:ir.model.fields,field_description:l10n_ch.field_account_invoice_l10n_ch_isr_number_spaced
msgid "L10N Ch Isr Number Spaced"
msgstr ""
#. module: l10n_ch
#: model:ir.model.fields,field_description:l10n_ch.field_account_invoice_l10n_ch_isr_optical_line
msgid "L10N Ch Isr Optical Line"
msgstr ""
#. module: l10n_ch
#: model:ir.model.fields,field_description:l10n_ch.field_account_invoice_l10n_ch_isr_postal
msgid "L10N Ch Isr Postal"
msgstr ""
#. module: l10n_ch
#: model:ir.model.fields,field_description:l10n_ch.field_account_invoice_l10n_ch_isr_postal_formatted
msgid "L10N Ch Isr Postal Formatted"
msgstr ""
#. module: l10n_ch
#: model:ir.model.fields,field_description:l10n_ch.field_account_invoice_l10n_ch_isr_sent
msgid "L10N Ch Isr Sent"
msgstr ""
#. module: l10n_ch
#: model:ir.model.fields,field_description:l10n_ch.field_account_invoice_l10n_ch_isr_valid
msgid "L10N Ch Isr Valid"
msgstr ""
#. module: l10n_ch
#: model:ir.model.fields,field_description:l10n_ch.field_res_partner_bank_l10n_ch_postal
msgid "L10N Ch Postal"
msgstr ""
#. module: l10n_ch
#: model:ir.model.fields,help:l10n_ch.field_account_invoice_l10n_ch_isr_optical_line
msgid "Optical reading line, as it will be printed on ISR"
msgstr ""
#. module: l10n_ch
#: model:ir.model.fields,help:l10n_ch.field_account_invoice_l10n_ch_isr_postal_formatted
msgid "Postal reference of the bank, formated with '-' and without the padding zeros, to generate ISR report."
msgstr ""
#. module: l10n_ch
#: model:ir.ui.view,arch_db:l10n_ch.isr_invoice_form
msgid "Print ISR"
msgstr ""
#. module: l10n_ch
#: model:ir.model.fields,field_description:l10n_ch.field_res_company_l10n_ch_isr_print_bank_location
msgid "Print bank location"
msgstr ""
#. module: l10n_ch
#: model:ir.model.fields,field_description:l10n_ch.field_res_config_settings_l10n_ch_isr_print_bank_location
msgid "Print bank on ISR"
msgstr ""
#. module: l10n_ch
#: model:ir.ui.view,arch_db:l10n_ch.res_config_settings_view_form
msgid "Print the coordinates of your bank under the 'Payment for' title of the ISR.\n"
" Your address will be moved to the 'in favour of' section."
msgstr ""
#. module: l10n_ch
#: model:ir.ui.menu,name:l10n_ch.account_reports_ch_statements_menu
msgid "Swiss Statements"
msgid "Switzerland"
msgstr ""
#. module: l10n_ch
#: model:account.tax.group,name:l10n_ch.tax_group_tva_0
msgid "TVA 0%"
msgstr ""
#. module: l10n_ch
#: model:account.tax.group,name:l10n_ch.tax_group_tva_25
msgid "TVA 2.5%"
msgstr ""
#. module: l10n_ch
#: model:account.tax.group,name:l10n_ch.tax_group_tva_37
msgid "TVA 3.7%"
msgstr ""
#. module: l10n_ch
#: model:account.tax.group,name:l10n_ch.tax_group_tva_38
msgid "TVA 3.8%"
msgstr ""
#. module: l10n_ch
#: model:account.tax.group,name:l10n_ch.tax_group_tva_77
msgid "TVA 7.7%"
msgstr ""
#. module: l10n_ch
#: model:account.tax.group,name:l10n_ch.tax_group_tva_8
msgid "TVA 8%"
msgstr ""
#. module: l10n_ch
#: model:ir.model.fields,help:l10n_ch.field_res_partner_bank_l10n_ch_postal
msgid "The ISR number of the company within the bank"
msgstr ""
#. module: l10n_ch
#: model:ir.model.fields,help:l10n_ch.field_account_invoice_l10n_ch_currency_name
msgid "The name of this invoice's currency"
msgstr ""
#. module: l10n_ch
#: model:ir.model.fields,help:l10n_ch.field_account_invoice_l10n_ch_isr_postal
msgid "The postal reference identifying the bank managing this ISR."
msgstr ""
#. module: l10n_ch
#: model:ir.model.fields,help:l10n_ch.field_res_bank_l10n_ch_postal_chf
msgid "The postal reference of the bank, used to generate ISR payment slips in CHF."
msgstr ""
#. module: l10n_ch
#: model:ir.model.fields,help:l10n_ch.field_res_bank_l10n_ch_postal_eur
msgid "The postal reference of the bank, used to generate ISR payment slips in EUR."
msgstr ""
#. module: l10n_ch
#: model:ir.model.fields,help:l10n_ch.field_account_invoice_l10n_ch_isr_number
msgid "The reference number associated with this invoice"
msgstr ""
#. module: l10n_ch
#: code:addons/l10n_ch/models/account_invoice.py:154
#, python-format
msgid "You cannot generate an ISR yet.\n"
"\n"
" For this, you need to :\n"
"\n"
" - set a valid postal account number (or an IBAN referencing one) for your company\n"
"\n"
" - define its bank\n"
"\n"
" - associate this bank with a postal reference for the currency used in this invoice\n"
"\n"
" - fill the 'bank account' field of the invoice with the postal to be used to receive the related payment. A default account will be automatically set for all invoices created after you defined a postal account for your company."
msgstr ""
#. module: l10n_ch
#: model:ir.model,name:l10n_ch.model_res_config_settings
msgid "res.config.settings"
msgstr ""

View File

@ -4,10 +4,10 @@
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 9.0\n"
"Project-Id-Version: Odoo Server 11.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-09-18 15:42+0000\n"
"PO-Revision-Date: 2015-09-18 15:42+0000\n"
"POT-Creation-Date: 2018-01-16 15:58+0000\n"
"PO-Revision-Date: 2018-01-16 15:58+0000\n"
"Last-Translator: <>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
@ -16,12 +16,251 @@ msgstr ""
"Plural-Forms: \n"
#. module: l10n_ch
#: model:ir.actions.client,name:l10n_ch.action_client_l10n_ch_menu
msgid "Open Account Dashboard Menu"
#: model:ir.model,name:l10n_ch.model_res_bank
msgid "Bank"
msgstr ""
#. module: l10n_ch
#: model:ir.model,name:l10n_ch.model_res_partner_bank
msgid "Bank Accounts"
msgstr ""
#. module: l10n_ch
#: model:ir.model.fields,help:l10n_ch.field_res_company_l10n_ch_isr_print_bank_location
#: model:ir.model.fields,help:l10n_ch.field_res_config_settings_l10n_ch_isr_print_bank_location
msgid "Boolean option field indicating whether or not the alternate layout (the one printing bank name and address) must be used when generating an ISR."
msgstr ""
#. module: l10n_ch
#: model:ir.model.fields,help:l10n_ch.field_account_invoice_l10n_ch_isr_sent
msgid "Boolean value telling whether or not the ISR corresponding to this invoice has already been printed or sent by mail."
msgstr ""
#. module: l10n_ch
#: model:ir.model.fields,help:l10n_ch.field_account_invoice_l10n_ch_isr_valid
msgid "Boolean value. True iff all the data required to generate the ISR are present"
msgstr ""
#. module: l10n_ch
#: model:ir.model.fields,field_description:l10n_ch.field_res_bank_l10n_ch_postal_chf
msgid "CHF ISR reference"
msgstr ""
#. module: l10n_ch
#: model:account.cash.rounding,name:l10n_ch.cash_rounding_5_centime
msgid "Coinage 0.05"
msgstr ""
#. module: l10n_ch
#: model:ir.model,name:l10n_ch.model_res_company
msgid "Companies"
msgstr ""
#. module: l10n_ch
#: model:ir.model.fields,field_description:l10n_ch.field_account_invoice_l10n_ch_currency_name
msgid "Currency"
msgstr ""
#. module: l10n_ch
#: model:ir.model.fields,field_description:l10n_ch.field_res_bank_l10n_ch_postal_eur
msgid "EUR ISR reference"
msgstr ""
#. module: l10n_ch
#: model:ir.model,name:l10n_ch.model_mail_template
msgid "Email Templates"
msgstr ""
#. module: l10n_ch
#: model:ir.model,name:l10n_ch.model_mail_compose_message
msgid "Email composition wizard"
msgstr ""
#. module: l10n_ch
#: model:ir.actions.report,name:l10n_ch.l10n_ch_isr_report
msgid "ISR"
msgstr ""
#. module: l10n_ch
#: model:ir.ui.view,arch_db:l10n_ch.l10n_ch_isr_report_template
msgid "ISR for invoice"
msgstr ""
#. module: l10n_ch
#: model:ir.model.fields,help:l10n_ch.field_account_invoice_l10n_ch_isr_number_spaced
msgid "ISR number split in blocks of 5 characters (right-justified), to generate ISR report."
msgstr ""
#. module: l10n_ch
#: model:ir.ui.view,arch_db:l10n_ch.isr_invoice_search_view
msgid "ISR reference number"
msgstr ""
#. module: l10n_ch
#: code:addons/l10n_ch/models/mail_compose_message.py:23
#, python-format
msgid "ISR sent"
msgstr ""
#. module: l10n_ch
#: model:ir.model,name:l10n_ch.model_account_invoice
msgid "Invoice"
msgstr ""
#. module: l10n_ch
#: model:ir.model.fields,field_description:l10n_ch.field_account_invoice_l10n_ch_isr_number
msgid "L10N Ch Isr Number"
msgstr ""
#. module: l10n_ch
#: model:ir.model.fields,field_description:l10n_ch.field_account_invoice_l10n_ch_isr_number_spaced
msgid "L10N Ch Isr Number Spaced"
msgstr ""
#. module: l10n_ch
#: model:ir.model.fields,field_description:l10n_ch.field_account_invoice_l10n_ch_isr_optical_line
msgid "L10N Ch Isr Optical Line"
msgstr ""
#. module: l10n_ch
#: model:ir.model.fields,field_description:l10n_ch.field_account_invoice_l10n_ch_isr_postal
msgid "L10N Ch Isr Postal"
msgstr ""
#. module: l10n_ch
#: model:ir.model.fields,field_description:l10n_ch.field_account_invoice_l10n_ch_isr_postal_formatted
msgid "L10N Ch Isr Postal Formatted"
msgstr ""
#. module: l10n_ch
#: model:ir.model.fields,field_description:l10n_ch.field_account_invoice_l10n_ch_isr_sent
msgid "L10N Ch Isr Sent"
msgstr ""
#. module: l10n_ch
#: model:ir.model.fields,field_description:l10n_ch.field_account_invoice_l10n_ch_isr_valid
msgid "L10N Ch Isr Valid"
msgstr ""
#. module: l10n_ch
#: model:ir.model.fields,field_description:l10n_ch.field_res_partner_bank_l10n_ch_postal
msgid "L10N Ch Postal"
msgstr ""
#. module: l10n_ch
#: model:ir.model.fields,help:l10n_ch.field_account_invoice_l10n_ch_isr_optical_line
msgid "Optical reading line, as it will be printed on ISR"
msgstr ""
#. module: l10n_ch
#: model:ir.model.fields,help:l10n_ch.field_account_invoice_l10n_ch_isr_postal_formatted
msgid "Postal reference of the bank, formated with '-' and without the padding zeros, to generate ISR report."
msgstr ""
#. module: l10n_ch
#: model:ir.ui.view,arch_db:l10n_ch.isr_invoice_form
msgid "Print ISR"
msgstr ""
#. module: l10n_ch
#: model:ir.model.fields,field_description:l10n_ch.field_res_company_l10n_ch_isr_print_bank_location
msgid "Print bank location"
msgstr ""
#. module: l10n_ch
#: model:ir.model.fields,field_description:l10n_ch.field_res_config_settings_l10n_ch_isr_print_bank_location
msgid "Print bank on ISR"
msgstr ""
#. module: l10n_ch
#: model:ir.ui.view,arch_db:l10n_ch.res_config_settings_view_form
msgid "Print the coordinates of your bank under the 'Payment for' title of the ISR.\n"
" Your address will be moved to the 'in favour of' section."
msgstr ""
#. module: l10n_ch
#: model:ir.ui.menu,name:l10n_ch.account_reports_ch_statements_menu
msgid "Swiss Statements"
msgid "Switzerland"
msgstr ""
#. module: l10n_ch
#: model:account.tax.group,name:l10n_ch.tax_group_tva_0
msgid "TVA 0%"
msgstr ""
#. module: l10n_ch
#: model:account.tax.group,name:l10n_ch.tax_group_tva_25
msgid "TVA 2.5%"
msgstr ""
#. module: l10n_ch
#: model:account.tax.group,name:l10n_ch.tax_group_tva_37
msgid "TVA 3.7%"
msgstr ""
#. module: l10n_ch
#: model:account.tax.group,name:l10n_ch.tax_group_tva_38
msgid "TVA 3.8%"
msgstr ""
#. module: l10n_ch
#: model:account.tax.group,name:l10n_ch.tax_group_tva_77
msgid "TVA 7.7%"
msgstr ""
#. module: l10n_ch
#: model:account.tax.group,name:l10n_ch.tax_group_tva_8
msgid "TVA 8%"
msgstr ""
#. module: l10n_ch
#: model:ir.model.fields,help:l10n_ch.field_res_partner_bank_l10n_ch_postal
msgid "The ISR number of the company within the bank"
msgstr ""
#. module: l10n_ch
#: model:ir.model.fields,help:l10n_ch.field_account_invoice_l10n_ch_currency_name
msgid "The name of this invoice's currency"
msgstr ""
#. module: l10n_ch
#: model:ir.model.fields,help:l10n_ch.field_account_invoice_l10n_ch_isr_postal
msgid "The postal reference identifying the bank managing this ISR."
msgstr ""
#. module: l10n_ch
#: model:ir.model.fields,help:l10n_ch.field_res_bank_l10n_ch_postal_chf
msgid "The postal reference of the bank, used to generate ISR payment slips in CHF."
msgstr ""
#. module: l10n_ch
#: model:ir.model.fields,help:l10n_ch.field_res_bank_l10n_ch_postal_eur
msgid "The postal reference of the bank, used to generate ISR payment slips in EUR."
msgstr ""
#. module: l10n_ch
#: model:ir.model.fields,help:l10n_ch.field_account_invoice_l10n_ch_isr_number
msgid "The reference number associated with this invoice"
msgstr ""
#. module: l10n_ch
#: code:addons/l10n_ch/models/account_invoice.py:154
#, python-format
msgid "You cannot generate an ISR yet.\n"
"\n"
" For this, you need to :\n"
"\n"
" - set a valid postal account number (or an IBAN referencing one) for your company\n"
"\n"
" - define its bank\n"
"\n"
" - associate this bank with a postal reference for the currency used in this invoice\n"
"\n"
" - fill the 'bank account' field of the invoice with the postal to be used to receive the related payment. A default account will be automatically set for all invoices created after you defined a postal account for your company."
msgstr ""
#. module: l10n_ch
#: model:ir.model,name:l10n_ch.model_res_config_settings
msgid "res.config.settings"
msgstr ""

View File

@ -36,13 +36,13 @@ class AccountMove(models.Model):
_('An error occured when computing the inalterability. Impossible to get the unique previous posted journal entry.'))
#build and return the hash
return self._compute_hash(prev_move.l10n_fr_hash if prev_move else '')
return self._compute_hash(prev_move.l10n_fr_hash if prev_move else u'')
def _compute_hash(self, previous_hash):
""" Computes the hash of the browse_record given as self, based on the hash
of the previous record in the company's securisation sequence given as parameter"""
self.ensure_one()
hash_string = sha256(previous_hash + self.l10n_fr_string_to_hash)
hash_string = sha256((previous_hash + self.l10n_fr_string_to_hash).encode('utf-8'))
return hash_string.hexdigest()
def _compute_string_to_hash(self):
@ -63,7 +63,7 @@ class AccountMove(models.Model):
values[k] = _getattrstring(line, field)
#make the json serialization canonical
# (https://tools.ietf.org/html/draft-staykov-hu-json-canonical-form-00)
move.l10n_fr_string_to_hash = dumps(values, sort_keys=True, encoding="utf-8",
move.l10n_fr_string_to_hash = dumps(values, sort_keys=True,
ensure_ascii=True, indent=None,
separators=(',',':'))
@ -118,7 +118,7 @@ class AccountMove(models.Model):
if not moves:
raise UserError(_('There isn\'t any journal entry flagged for data inalterability yet for the company %s. This mechanism only runs for journal entries generated after the installation of the module France - Certification CGI 286 I-3 bis.') % self.env.user.company_id.name)
previous_hash = ''
previous_hash = u''
start_move_info = []
for move in moves:
if move.l10n_fr_hash != move._compute_hash(previous_hash=previous_hash):

View File

@ -3,7 +3,6 @@ flectra.define('mail.systray', function (require) {
var config = require('web.config');
var core = require('web.core');
var framework = require('web.framework');
var session = require('web.session');
var SystrayMenu = require('web.SystrayMenu');
var Widget = require('web.Widget');
@ -175,6 +174,9 @@ var ActivityMenu = Widget.extend({
return self._rpc({
model: 'res.users',
method: 'activity_user_count',
kwargs: {
context: session.user_context,
},
}).then(function (data) {
self.activities = data;
self.activityCounter = _.reduce(data, function(total_count, p_data){ return total_count + p_data.total_count; }, 0);

View File

@ -0,0 +1,105 @@
odoo.define('mail.client_action_mobile_tests', function (require) {
"use strict";
var session = require('web.session');
var testUtils = require('web.test_utils');
var Widget = require('web.Widget');
var ChatAction = require('mail.chat_client_action');
var chat_manager = require('mail.chat_manager');
QUnit.module('mail', {}, function () {
QUnit.module('Discuss client action in mobile', {
beforeEach: function () {
this.data = {
'mail.message': {
fields: {},
},
};
this.createChatAction = function (params) {
var Parent = Widget.extend({
do_push_state: function () {},
});
var parent = new Parent();
testUtils.addMockEnvironment(parent, {
data: this.data,
archs: {
'mail.message,false,search': '<search/>',
},
session: params.session || {},
intercepts: params.intercepts || {},
});
var chatAction = new ChatAction(parent, params);
chatAction.set_cp_bus(new Widget());
chatAction.appendTo($('#qunit-fixture'));
return chatAction;
};
},
});
QUnit.test('mobile basic rendering', function (assert) {
// This is a very basic first test for the client action. However, with
// the chat_manager, it is hard to override RPCs (for instance, the
// /mail/client_action route is always called when the test suite is
// launched), and we must wait for this RPC to be done before starting to
// test the interface. This should be refactored to facilitate the testing.
assert.expect(9);
var done = assert.async();
var rpc = session.rpc;
var chatAction = this.createChatAction({
id: 1,
context: {},
params: {},
intercepts: {
get_session: function (ev) {
ev.data.callback({});
},
},
session: {
rpc: function (route, args) {
if (args.method === 'message_fetch') {
return $.when([]);
}
return rpc.apply(this, arguments);
},
},
});
chat_manager.is_ready.then(function () {
// test basic rendering in mobile
assert.strictEqual(chatAction.$('.o_mail_chat_mobile_control_panel').length, 1,
"should have rendered a control panel");
assert.strictEqual(chatAction.$('.o_mail_chat_content .o_mail_no_content').length, 1,
"should display the no content message");
assert.strictEqual(chatAction.$('.o_mail_mobile_tabs').length, 1,
"should have rendered the tabs");
assert.ok(chatAction.$('.o_mail_mobile_tab[data-type=channel_inbox]').hasClass('active'),
"should be in inbox tab");
assert.strictEqual(chatAction.$('.o_mail_chat_mobile_inbox_buttons:visible').length, 1,
"inbox/starred buttons should be visible");
assert.ok(chatAction.$('.o_mail_chat_mobile_inbox_buttons .o_channel_inbox_item[data-type=channel_inbox]').hasClass('btn-primary'),
"should be in inbox");
// move to DMs tab
chatAction.$('.o_mail_mobile_tab[data-type=dm]').click();
assert.ok(chatAction.$('.o_mail_mobile_tab[data-type=dm]').hasClass('active'),
"should be in DMs tab");
assert.strictEqual(chatAction.$('.o_mail_chat_content .o_mail_no_content').length, 0,
"should display the no content message");
chatAction.$('.o_mail_chat_button_dm').click(); // click to add a channel
assert.strictEqual(chatAction.$('.o_mail_add_channel input:visible').length, 1,
"should display the input to add a channel");
chatAction.destroy();
done();
});
});
});
});

View File

@ -1,88 +0,0 @@
flectra.define('mail.client_action_test', function (require) {
"use strict";
var testUtils = require('web.test_utils');
var Widget = require('web.Widget');
var ChatAction = require("mail.chat_client_action");
QUnit.module('mail', {}, function () {
QUnit.module('Discuss client action', {
beforeEach: function () {
this.data = {
'mail.message': {
fields: {},
},
};
this.createChatAction = function (params) {
var parent = new Widget();
testUtils.addMockEnvironment(parent, {
data: this.data,
archs: {
'mail.message,false,search': '<search/>',
},
config: {device: {isMobile: true}},
});
var chatAction = new ChatAction(parent, params);
chatAction.set_cp_bus(new Widget());
chatAction.appendTo($('#qunit-fixture'));
return chatAction;
};
},
});
QUnit.skip('mobile basic rendering', function (assert) {
// Unfortunately, this test is skipped for now because there is no way to
// execute the whole test suite in mobile (it only works test by test), so
// as the client action include for mobile is rejected when we are not in
// mobile, it isn't possible to test it
// Moreover, RPCs done by the chat_manager (e.g. message_fetch) should be
// properly mocked.
assert.expect(11);
var parent = new Widget();
testUtils.addMockEnvironment(parent, {
data: this.data,
archs: {
'mail.message,false,search': '<search/>',
},
config: {device: {isMobile: true}},
});
var params = {
id: 1,
context: {},
params: {},
};
var chatAction = this.createChatAction(params);
// test basic rendering in mobile
assert.equal(chatAction.$(".o_mail_chat_mobile_control_panel").length, 1, "Mobile control panel created");
assert.equal(chatAction.$(".o_mail_mobile_tab").length, 4, "Four mobile tabs created");
assert.equal(chatAction.$('.o_mail_chat_content').length, 1, "One default chat content pane created");
assert.equal(chatAction.$(".o_mail_chat_tab_pane").length, 3, "Three mobile tab panes created");
// Inbox
assert.equal(chatAction.activeMobileTab, "channel_inbox", "'channel_inbox' is default active tab");
assert.ok(chatAction.$(".o_channel_inbox_item:nth(0)").hasClass("btn-primary"), "Showing 'Inbox'");
// Starred
chatAction.$(".o_channel_inbox_item[data-type='channel_starred']").click();
assert.ok(chatAction.$(".o_channel_inbox_item:nth(1)").hasClass("btn-primary"), "Clicked on 'Starred'");
assert.ok(chatAction.$(".o_mail_chat_content").is(":visible"), "Default main content pane visible");
chatAction.$(".o_mail_mobile_tab[data-type='dm']").click();
assert.equal(chatAction.activeMobileTab, "dm", "After click on 'Conversation', is now active tab");
assert.ok(!chatAction.$(".o_mail_chat_content").is(":visible"), "none", "'Main' content pane is invisible");
assert.ok(chatAction.$(".o_mail_chat_tab_pane:nth(0)").is(":visible"), "'Conversation' pane is visible");
chatAction.destroy();
});
});
});

View File

@ -41,13 +41,18 @@
<template id="qunit_suite" name="mail_tests" inherit_id="web.qunit_suite">
<xpath expr="//t[@t-set='head']" position="inside">
<script type="text/javascript" src="/mail/static/tests/client_action_tests.js"></script>
<script type="text/javascript" src="/mail/static/tests/chatter_tests.js"></script>
<script type="text/javascript" src="/mail/static/tests/systray_tests.js"></script>
<script type="text/javascript" src="/mail/static/tests/chat_window_test.js"></script>
</xpath>
</template>
<template id="qunit_mobile_suite" name="mail_mobile_tests" inherit_id="web.qunit_mobile_suite">
<xpath expr="//t[@t-set='head']" position="inside">
<script type="text/javascript" src="/mail/static/tests/client_action_mobile_tests.js"></script>
</xpath>
</template>
<template id="message_origin_link">
<p>This <t t-esc="self._description.lower()"/> has been <span t-if="edit">modified</span><span t-if="not edit">created</span> from:
<t t-foreach="origin" t-as="o">

View File

@ -88,6 +88,10 @@ class MrpUnbuild(models.Model):
if self.product_id.tracking != 'none' and not self.lot_id.id:
raise UserError(_('Should have a lot for the finished product'))
if self.mo_id:
if self.mo_id.state != 'done':
raise UserError(_('You cannot unbuild a undone manufacturing order.'))
consume_move = self._generate_consume_moves()[0]
produce_moves = self._generate_produce_moves()
@ -156,12 +160,31 @@ class MrpUnbuild(models.Model):
def _generate_produce_moves(self):
moves = self.env['stock.move']
for unbuild in self:
factor = unbuild.product_uom_id._compute_quantity(unbuild.product_qty, unbuild.bom_id.product_uom_id) / unbuild.bom_id.product_qty
boms, lines = unbuild.bom_id.explode(unbuild.product_id, factor, picking_type=unbuild.bom_id.picking_type_id)
for line, line_data in lines:
moves += unbuild._generate_move_from_bom_line(line, line_data['qty'])
if unbuild.mo_id:
raw_moves = unbuild.mo_id.move_raw_ids.filtered(lambda move: move.state == 'done')
factor = unbuild.product_qty / unbuild.mo_id.product_uom_id._compute_quantity(unbuild.mo_id.product_qty, unbuild.product_uom_id)
for raw_move in raw_moves:
moves += unbuild._generate_move_from_raw_moves(raw_move, factor)
else:
factor = unbuild.product_uom_id._compute_quantity(unbuild.product_qty, unbuild.bom_id.product_uom_id) / unbuild.bom_id.product_qty
boms, lines = unbuild.bom_id.explode(unbuild.product_id, factor, picking_type=unbuild.bom_id.picking_type_id)
for line, line_data in lines:
moves += unbuild._generate_move_from_bom_line(line, line_data['qty'])
return moves
def _generate_move_from_raw_moves(self, raw_move, factor):
return self.env['stock.move'].create({
'name': self.name,
'date': self.create_date,
'product_id': raw_move.product_id.id,
'product_uom_qty': raw_move.product_uom_qty * factor,
'product_uom': raw_move.product_uom.id,
'procure_method': 'make_to_stock',
'location_dest_id': self.location_dest_id.id,
'location_id': raw_move.location_dest_id.id,
'unbuild_id': self.id,
})
def _generate_move_from_bom_line(self, bom_line, quantity):
return self.env['stock.move'].create({
'name': self.name,

View File

@ -122,7 +122,7 @@
</div>
</group>
<group>
<field name="mo_id" required="True"/>
<field name="mo_id" domain="[('state','=','done')]"/>
<field name="location_id" groups="stock.group_stock_multi_locations"/>
<field name="location_dest_id" groups="stock.group_stock_multi_locations"/>
<field name="has_tracking" invisible="1"/>

View File

@ -43,11 +43,10 @@ try:
else:
_logger.warning(_('Unable to format %s:\n%s') % number, e)
return number
if always_international and phone_nbr.country_code != country_phone_code:
if always_international or phone_nbr.country_code != country_phone_code:
phone_fmt = phonenumbers.PhoneNumberFormat.INTERNATIONAL
else:
phone_fmt = phonenumbers.PhoneNumberFormat.NATIONAL
return phonenumbers.format_number(phone_nbr, phone_fmt)
except ImportError:

View File

@ -1,8 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
The purpose of this view is to move the VAT field at the top of the
company form. That way, the user will fill it first
-->
<flectra>
<record id="res_company_view_form_phone_validation" model="ir.ui.view">
<field name="name">res.company.view.form.phone_validation</field>

View File

@ -127,6 +127,15 @@
<filter string="Archived" name="inactive" domain="[('active','=',False)]"/>
<field string="Attributes" name="attribute_line_ids" groups="product.group_product_variant"/>
<field name="pricelist_id" widget="selection" context="{'pricelist': self}" filter_domain="[]" groups="product.group_sale_pricelist"/> <!-- Keep widget=selection on this field to pass numeric `self` value, which is not the case for regular m2o widgets! -->
<separator/>
<filter string="Late Activities" name="activities_overdue"
domain="[('activity_ids.date_deadline', '&lt;', context_today().strftime('%Y-%m-%d'))]"
help="Show all records which has next action date is before today"/>
<filter string="Today Activities" name="activities_today"
domain="[('activity_ids.date_deadline', '=', context_today().strftime('%Y-%m-%d'))]"/>
<filter string="Future Activities" name="activities_upcoming_all"
domain="[('activity_ids.date_deadline', '&gt;', context_today().strftime('%Y-%m-%d'))
]"/>
</search>
</field>
</record>

View File

@ -44,7 +44,7 @@ class StockProductionLot(models.Model):
# Assign dates according to products data
@api.model
def create(self, vals):
dates = self._get_dates(vals.get('product_id'))
dates = self._get_dates(vals.get('product_id') or self.env.context.get('default_product_id'))
for d in dates:
if not vals.get(d):
vals[d] = dates[d]

View File

@ -9,6 +9,16 @@ from flectra.addons.iap.models import iap
_logger = logging.getLogger(__name__)
try:
import phonenumbers
_sms_phonenumbers_lib_imported = True
except ImportError:
_sms_phonenumbers_lib_imported = False
_logger.warning(
"The `phonenumbers` Python module is not installed. Try: pip install phonenumbers."
)
class SendSMS(models.TransientModel):
_name = 'sms.send_sms'
@ -16,6 +26,27 @@ class SendSMS(models.TransientModel):
recipients = fields.Char('Recipients', required=True)
message = fields.Text('Message', required=True)
def _phone_get_country(self, partner):
if 'country_id' in partner:
return partner.country_id
return self.env.user.company_id.country_id
def _sms_sanitization(self, partner, field_name):
number = partner[field_name]
if _sms_phonenumbers_lib_imported:
country = self._phone_get_country(partner)
country_code = country.code if country else None
try:
phone_nbr = phonenumbers.parse(number, region=country_code, keep_raw_input=True)
except phonenumbers.phonenumberutil.NumberParseException:
return number
if not phonenumbers.is_possible_number(phone_nbr) or not phonenumbers.is_valid_number(phone_nbr):
return number
phone_fmt = phonenumbers.PhoneNumberFormat.INTERNATIONAL
return phonenumbers.format_number(phone_nbr, phone_fmt).replace(' ', '')
else:
return number
def _get_records(self, model):
if self.env.context.get('active_domain'):
records = model.search(self.env.context.get('active_domain'))
@ -38,7 +69,8 @@ class SendSMS(models.TransientModel):
phone_numbers = []
no_phone_partners = []
for partner in partners:
number = partner.mobile
default_field_name = 'mobile' if partner.mobile else 'phone'
number = self._sms_sanitization(partner, self.env.context('field_name') or default_field_name)
if number:
phone_numbers.append(number)
else:

View File

@ -8,7 +8,7 @@
<field name="arch" type="xml">
<form string="Add pickings to batch">
<separator string="Select a batch"/>
<field name="batch_id" class="oe_inline"/>
<field name="batch_id" class="oe_inline" options="{'no_create_edit': True, 'no_open': True}"/>
<footer>
<button name="attach_pickings" type="object" string="Add to Batch" class="btn-primary"/>
<button string="Cancel" class="btn-default" special="cancel"/>

View File

@ -44,11 +44,6 @@ var AbstractField = Widget.extend({
navigation_move: '_onNavigationMove',
},
/**
* fields can extend the context, e.g. binary fields add {bin_size: true}
*/
context: null,
/**
* An object representing fields to be fetched by the model eventhough not present in the view
* This object contains "field name" as key and an object as value.

View File

@ -2374,7 +2374,7 @@ var BasicModel = AbstractModel.extend({
});
record.data[fieldName] = list.id;
if (!fieldInfo.__no_fetch) {
var def = self._readUngroupedList(list).then(function (list) {
var def = self._readUngroupedList(list).then(function () {
return $.when(
self._fetchX2ManysBatched(list),
self._fetchReferencesBatched(list)
@ -2403,6 +2403,7 @@ var BasicModel = AbstractModel.extend({
var fields = view ? view.fields : fieldInfo.relatedFields;
var viewType = view ? view.type : fieldInfo.viewType;
list = this._applyX2ManyOperations(list);
this._sortList(list);
var x2mRecords = [];
// step 1: collect ids
@ -3092,16 +3093,13 @@ var BasicModel = AbstractModel.extend({
id: {type: 'integer'},
}, params.fields);
// datapoint context is extended by fields widgets
var context = _.extend({}, params.context);
var dataPoint = {
_cache: type === 'list' ? {} : undefined,
_changes: null,
_domains: {},
_rawChanges: {},
aggregateValues: params.aggregateValues || {},
context: context,
context: params.context,
count: params.count || res_ids.length,
data: data,
domain: params.domain || [],

View File

@ -7640,6 +7640,46 @@ QUnit.module('relational_fields', {
form.destroy();
});
QUnit.test('one2many with multiple pages and sequence field, part2', function (assert) {
assert.expect(1);
this.data.partner.records[0].turtles = [3, 2, 1];
this.data.partner.onchanges.turtles = function () {};
var form = createView({
View: FormView,
model: 'partner',
data: this.data,
arch:'<form string="Partners">' +
'<field name="turtles">' +
'<tree limit="2">' +
'<field name="turtle_int" widget="handle"/>' +
'<field name="turtle_foo"/>' +
'<field name="partner_ids" invisible="1"/>' +
'</tree>' +
'</field>' +
'</form>',
res_id: 1,
mockRPC: function (route, args) {
if (args.method === 'onchange') {
return $.when({value: { turtles: [
[5],
[1, 1, {turtle_foo: "from onchange id2", partner_ids: [[5]]}],
[1, 3, {turtle_foo: "from onchange id3", partner_ids: [[5]]}],
]}});
}
return this._super(route, args);
},
viewOptions: {
mode: 'edit',
},
});
form.$('span[name="delete"]').first().click();
assert.strictEqual(form.$('.o_data_row').text(), 'from onchange id2from onchange id3',
'onchange has been properly applied');
form.destroy();
});
QUnit.module('FieldMany2Many');
QUnit.test('many2many kanban: edition', function (assert) {
@ -9251,7 +9291,7 @@ QUnit.module('relational_fields', {
'</tree>',
mockRPC: function (route, args) {
if (args.method === 'read' && args.model === 'partner_type') {
assert.deepEqual(args.kwargs.context.take, 'five',
assert.deepEqual(args.kwargs.context, {take: 'five'},
'The context should be passed to the RPC');
}
return this._super.apply(this, arguments);

View File

@ -13,7 +13,7 @@ class WebSuite(flectra.tests.HttpCase):
def test_01_js(self):
# webclient desktop test suite
self.phantom_js('/web/tests?mod=web', "", "", login='admin', timeout=300)
self.phantom_js('/web/tests?mod=web', "", "", login='admin', timeout=360)
def test_02_js(self):
# webclient mobile test suite

View File

@ -622,6 +622,7 @@ var SnippetsMenu = Widget.extend({
* - Remove the 'contentEditable' attributes
*/
cleanForSave: function () {
this.trigger_up('ready_to_clean_for_save');
_.each(this.snippetEditors, function (snippetEditor) {
snippetEditor.cleanForSave();
});

View File

@ -43,8 +43,16 @@ var WebsiteRoot = BodyManager.extend({
}),
custom_events: _.extend({}, BodyManager.prototype.custom_events || {}, {
animation_start_demand: '_onAnimationStartDemand',
ready_to_clean_for_save: '_onAnimationStopDemand',
}),
/**
* @constructor
*/
init: function () {
this._super.apply(this, arguments);
this.animations = [];
},
/**
* @override
*/
@ -108,6 +116,7 @@ var WebsiteRoot = BodyManager.extend({
* registry has been instantiated outside of the class and is simply
* returned here.
*
* @private
* @override
*/
_getRegistry: function () {
@ -118,6 +127,7 @@ var WebsiteRoot = BodyManager.extend({
* `selector` key of one of the registered animations
* (@see Animation.selector).
*
* @private
* @param {boolean} [editableMode=false] - true if the page is in edition mode
* @param {jQuery} [$from]
* only initialize the animations whose `selector` matches the
@ -138,9 +148,11 @@ var WebsiteRoot = BodyManager.extend({
var $snippet = $(el);
var animation = $snippet.data('snippet-view');
if (animation) {
self.animations = _.without(self.animations, animation);
animation.destroy();
}
animation = new Animation(self, editableMode);
self.animations.push(animation);
$snippet.data('snippet-view', animation);
return animation.attachTo($snippet);
});
@ -148,6 +160,18 @@ var WebsiteRoot = BodyManager.extend({
});
return $.when.apply($, defs);
},
/**
* Destroys all animation instances. Especially needed before saving while
* in edition mode for example.
*
* @private
*/
_stopAnimations: function () {
_.each(this.animations, function (animation) {
animation.destroy();
});
this.animations = [];
},
//--------------------------------------------------------------------------
// Handlers
@ -165,6 +189,15 @@ var WebsiteRoot = BodyManager.extend({
.done(ev.data.onSuccess)
.fail(ev.data.onFailure);
},
/**
* Called when the root is notified that the animations have to be
* stopped.
*
* @private
*/
_onAnimationStopDemand: function () {
this._stopAnimations();
},
/**
* @todo review
* @private

View File

@ -21,7 +21,10 @@ $(document).ready(function () {
setTimeout(function () { payment_transaction_poll_status(); }, Math.ceil(_poll_nbr / 3) * 1000);
}
else {
result.message = "<i class='fa fa-warning' />";
var $message = $(result.message);
$message.find('span:first').prepend($(
"<i title='We are waiting the confirmation of the bank or payment provider' class='fa fa-warning' style='margin-right:10px;'>"));
result.message = $message.html();
}
}
$('div.oe_website_sale_tx_status').html(result.message);

View File

@ -360,13 +360,6 @@ Source installation requires manually installing dependencies:
Install ``psycopg`` using the installer here
http://www.stickpeople.com/projects/python/win-psycopg/
Then edit the requirements.txt file:
- remove ``psycopg2`` as you already have it.
- remove the optional ``python-ldap``, ``gevent`` and ``psutil`` because
they require compilation.
- add ``pypiwin32`` because it's needed under windows.
Then use pip to install the dependencies using the following
command from a cmd.exe prompt (replace ``\YourOdooPath`` by the actual
path where you downloaded Odoo):

View File

@ -82,8 +82,9 @@ Overview
The Credits
Every service provided through the In-App platform can be used by the
clients with tokens or *credits*. The monetary value of a credit depends
on the service and is decided by the provider. This could be:
clients with tokens or *credits*. The credits are an integer unit and
their monetary value depends on the service and is decided by the
provider. This could be:
* for an sms service: 1 credit = 1 sms,
* for an add service: 1 credit = 1 add,
@ -210,14 +211,20 @@ The credit packages are essentially a product with 4 characteristics.
* Credits: the amount of credits the client is entitled to when buying the package,
* Price: the price in *EUROS* for the time being (USD support is planned).
.. image:: images/package.png
:align: center
.. note::
Odoo takes a 25% commission on all package sales. Adjust your selling price accordingly.
.. note::
Depending on the strategy, the price per credit can vary from one
package to another.
.. image:: images/package.png
:align: center
.. _iap-odoo-app:
Odoo App
@ -427,10 +434,12 @@ Capture
:param TransactionToken token:
:param ServiceKey key:
:param int credit_to_capture: (new - 15 Jan 2018) optional parameter to capture a smaller amount of credits than authorized
:raises: :class:`~odoo.exceptions.AccessError`
.. code-block:: python
:emphasize-lines: 8
r2 = requests.post(ODOO + '/iap/1/capture', json={
'jsonrpc': '2.0',
'id': None,
@ -438,6 +447,7 @@ Capture
'params': {
'token': tx,
'key': SERVICE_KEY,
'credit_to_capture': credit or False,
}
}).json()
if 'error' in r:
@ -575,9 +585,9 @@ Charging
credits = int(MAXIMUM_POWER * factor)
with charge(request.env, SERVICE_KEY, user_account, credits) as transaction:
# TODO: allow other targets
transaction.credit = credits * 0.85
transaction.credit = max(credits, 2)
# Sales ongoing one the energy price,
# only 85% of the price will be charged/captured.
# a maximum of 2 credits will be charged/captured.
self.env['systems.planets'].search([
('grid', '=', 'M-10'),
('name', '=', 'Alderaan'),

View File

@ -678,7 +678,7 @@ class IrActionsReport(models.Model):
"""
discard_logo_check = self.env.context.get('discard_logo_check')
if (self.env.uid == SUPERUSER_ID) and ((not self.env.user.company_id.external_report_layout) or (not discard_logo_check and not self.env.user.company_id.logo)) and config:
template = self.env.ref('base.view_company_report_form_with_print')
template = self.env.ref('base.view_company_report_form_with_print') if self.env.context.get('from_transient_model', False) else self.env.ref('base.view_company_report_form')
return {
'name': _('Choose Your Document Layout'),
'type': 'ir.actions.act_window',

View File

@ -1597,7 +1597,7 @@
<field name="code">tl</field>
<field file="base/static/img/country_flags/tl.png" name="image" type="base64" />
<field name="currency_id" ref="USD" />
<field eval="0" name="phone_code" />
<field eval="670" name="phone_code" />
</record>
<record id="tr" model="res.country">
<field name="name">Turkey</field>

View File

@ -3,22 +3,23 @@ decorator==4.0.10
docutils==0.12
ebaysdk==2.1.5
feedparser==5.2.1
gevent==1.1.2
gevent==1.1.2 ; sys_platform != 'win32'
greenlet==0.4.10
html2text==2016.9.19
Jinja2==2.8
lxml==3.5.0
lxml==3.7.1 ; sys_platform != 'win32'
lxml ; sys_platform == 'win32'
Mako==1.0.4
MarkupSafe==0.23
mock==2.0.0
num2words==0.5.4
ofxparse==0.16
passlib==1.6.5
Pillow==3.4.1
psutil==4.3.1
psycopg2==2.7.3.1
Pillow==4.0.0
psutil==4.3.1; sys_platform != 'win32'
psycopg2==2.7.3.1; sys_platform != 'win32'
pydot==1.2.3
pyldap==2.4.28
pyldap==2.4.28; sys_platform != 'win32'
pyparsing==2.1.10
PyPDF2==1.26.0
pyserial==3.1.1
@ -29,12 +30,12 @@ PyYAML==3.12
qrcode==5.3
reportlab==3.3.0
requests==2.11.1
six==1.10.0
suds-jurko==0.6
vatnumber==1.2
vobject==0.9.3
Werkzeug==0.11.11
Werkzeug==0.11.15
XlsxWriter==0.9.3
xlwt==1.3.*
xlrd==1.0.0
unittest2==1.1.0
pypiwin32 ; sys_platform == 'win32'