[ODOO] Odoo updates till commit ref: 529a8f5aa8
This commit is contained in:
parent
3d05cc9726
commit
9985810340
@ -31,4 +31,4 @@ class HolidaysSummaryDept(models.TransientModel):
|
|||||||
'model': 'hr.department',
|
'model': 'hr.department',
|
||||||
'form': data
|
'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)
|
||||||
|
@ -2,30 +2,265 @@
|
|||||||
# This file contains the translation of the following modules:
|
# 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 ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: Odoo 9.0\n"
|
"Project-Id-Version: Odoo Server 11.0\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2015-09-18 15:42+0000\n"
|
"POT-Creation-Date: 2018-01-16 15:58+0000\n"
|
||||||
"PO-Revision-Date: 2016-01-15 03:53+0000\n"
|
"PO-Revision-Date: 2018-01-16 15:58+0000\n"
|
||||||
"Last-Translator: Wolfgang Taferner\n"
|
"Last-Translator: <>\n"
|
||||||
"Language-Team: German (http://www.transifex.com/odoo/odoo-9/language/de/)\n"
|
"Language-Team: \n"
|
||||||
"Language: de\n"
|
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: \n"
|
"Content-Transfer-Encoding: \n"
|
||||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
"Plural-Forms: \n"
|
||||||
|
|
||||||
#. module: l10n_ch
|
#. module: l10n_ch
|
||||||
#: model:ir.actions.client,name:l10n_ch.action_client_l10n_ch_menu
|
#: model:ir.model,name:l10n_ch.model_res_bank
|
||||||
msgid "Open Account Dashboard Menu"
|
msgid "Bank"
|
||||||
msgstr " Buchführungsübersicht öffnen"
|
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
|
#. module: l10n_ch
|
||||||
#: model:ir.ui.menu,name:l10n_ch.account_reports_ch_statements_menu
|
#: model:ir.ui.menu,name:l10n_ch.account_reports_ch_statements_menu
|
||||||
msgid "Swiss Statements"
|
msgid "Switzerland"
|
||||||
msgstr "CH Bilanz- und Erfolgsrechnungen"
|
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 ""
|
||||||
|
|
||||||
|
@ -2,29 +2,265 @@
|
|||||||
# This file contains the translation of the following modules:
|
# 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 ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: Odoo 9.0\n"
|
"Project-Id-Version: Odoo Server 11.0\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2015-09-18 15:42+0000\n"
|
"POT-Creation-Date: 2018-01-16 15:58+0000\n"
|
||||||
"PO-Revision-Date: 2015-11-11 21:04+0000\n"
|
"PO-Revision-Date: 2018-01-16 15:58+0000\n"
|
||||||
"Last-Translator: Maxime Chambreuil <maxime.chambreuil@gmail.com>\n"
|
"Last-Translator: <>\n"
|
||||||
"Language-Team: French (http://www.transifex.com/odoo/odoo-9/language/fr/)\n"
|
"Language-Team: \n"
|
||||||
"Language: fr\n"
|
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: \n"
|
"Content-Transfer-Encoding: \n"
|
||||||
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
|
"Plural-Forms: \n"
|
||||||
|
|
||||||
#. module: l10n_ch
|
#. module: l10n_ch
|
||||||
#: model:ir.actions.client,name:l10n_ch.action_client_l10n_ch_menu
|
#: model:ir.model,name:l10n_ch.model_res_bank
|
||||||
msgid "Open Account Dashboard Menu"
|
msgid "Bank"
|
||||||
msgstr "Ouvrez le menu Comptabilité"
|
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
|
#. module: l10n_ch
|
||||||
#: model:ir.ui.menu,name:l10n_ch.account_reports_ch_statements_menu
|
#: model:ir.ui.menu,name:l10n_ch.account_reports_ch_statements_menu
|
||||||
msgid "Swiss Statements"
|
msgid "Switzerland"
|
||||||
msgstr "Déclarations suisses"
|
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 ""
|
||||||
|
|
||||||
|
@ -2,27 +2,265 @@
|
|||||||
# This file contains the translation of the following modules:
|
# This file contains the translation of the following modules:
|
||||||
# * l10n_ch
|
# * l10n_ch
|
||||||
#
|
#
|
||||||
# Translators:
|
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: Odoo 9.0\n"
|
"Project-Id-Version: Odoo Server 11.0\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2015-09-18 15:42+0000\n"
|
"POT-Creation-Date: 2018-01-16 15:58+0000\n"
|
||||||
"PO-Revision-Date: 2016-02-24 22:58+0000\n"
|
"PO-Revision-Date: 2018-01-16 15:58+0000\n"
|
||||||
"Last-Translator: Martin Trigaux\n"
|
"Last-Translator: <>\n"
|
||||||
"Language-Team: Italian (http://www.transifex.com/odoo/odoo-9/language/it/)\n"
|
"Language-Team: \n"
|
||||||
"Language: it\n"
|
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: \n"
|
"Content-Transfer-Encoding: \n"
|
||||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
"Plural-Forms: \n"
|
||||||
|
|
||||||
#. module: l10n_ch
|
#. module: l10n_ch
|
||||||
#: model:ir.actions.client,name:l10n_ch.action_client_l10n_ch_menu
|
#: model:ir.model,name:l10n_ch.model_res_bank
|
||||||
msgid "Open Account Dashboard Menu"
|
msgid "Bank"
|
||||||
msgstr "Apri menu dashboard dell'account"
|
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
|
#. module: l10n_ch
|
||||||
#: model:ir.ui.menu,name:l10n_ch.account_reports_ch_statements_menu
|
#: model:ir.ui.menu,name:l10n_ch.account_reports_ch_statements_menu
|
||||||
msgid "Swiss Statements"
|
msgid "Switzerland"
|
||||||
msgstr ""
|
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 ""
|
||||||
|
|
||||||
|
@ -4,10 +4,10 @@
|
|||||||
#
|
#
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: Odoo Server 9.0\n"
|
"Project-Id-Version: Odoo Server 11.0\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2015-09-18 15:42+0000\n"
|
"POT-Creation-Date: 2018-01-16 15:58+0000\n"
|
||||||
"PO-Revision-Date: 2015-09-18 15:42+0000\n"
|
"PO-Revision-Date: 2018-01-16 15:58+0000\n"
|
||||||
"Last-Translator: <>\n"
|
"Last-Translator: <>\n"
|
||||||
"Language-Team: \n"
|
"Language-Team: \n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
@ -16,12 +16,251 @@ msgstr ""
|
|||||||
"Plural-Forms: \n"
|
"Plural-Forms: \n"
|
||||||
|
|
||||||
#. module: l10n_ch
|
#. module: l10n_ch
|
||||||
#: model:ir.actions.client,name:l10n_ch.action_client_l10n_ch_menu
|
#: model:ir.model,name:l10n_ch.model_res_bank
|
||||||
msgid "Open Account Dashboard Menu"
|
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 ""
|
msgstr ""
|
||||||
|
|
||||||
#. module: l10n_ch
|
#. module: l10n_ch
|
||||||
#: model:ir.ui.menu,name:l10n_ch.account_reports_ch_statements_menu
|
#: 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 ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -36,13 +36,13 @@ class AccountMove(models.Model):
|
|||||||
_('An error occured when computing the inalterability. Impossible to get the unique previous posted journal entry.'))
|
_('An error occured when computing the inalterability. Impossible to get the unique previous posted journal entry.'))
|
||||||
|
|
||||||
#build and return the hash
|
#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):
|
def _compute_hash(self, previous_hash):
|
||||||
""" Computes the hash of the browse_record given as self, based on the 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"""
|
of the previous record in the company's securisation sequence given as parameter"""
|
||||||
self.ensure_one()
|
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()
|
return hash_string.hexdigest()
|
||||||
|
|
||||||
def _compute_string_to_hash(self):
|
def _compute_string_to_hash(self):
|
||||||
@ -63,7 +63,7 @@ class AccountMove(models.Model):
|
|||||||
values[k] = _getattrstring(line, field)
|
values[k] = _getattrstring(line, field)
|
||||||
#make the json serialization canonical
|
#make the json serialization canonical
|
||||||
# (https://tools.ietf.org/html/draft-staykov-hu-json-canonical-form-00)
|
# (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,
|
ensure_ascii=True, indent=None,
|
||||||
separators=(',',':'))
|
separators=(',',':'))
|
||||||
|
|
||||||
@ -118,7 +118,7 @@ class AccountMove(models.Model):
|
|||||||
|
|
||||||
if not moves:
|
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)
|
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 = []
|
start_move_info = []
|
||||||
for move in moves:
|
for move in moves:
|
||||||
if move.l10n_fr_hash != move._compute_hash(previous_hash=previous_hash):
|
if move.l10n_fr_hash != move._compute_hash(previous_hash=previous_hash):
|
||||||
|
@ -3,7 +3,6 @@ flectra.define('mail.systray', function (require) {
|
|||||||
|
|
||||||
var config = require('web.config');
|
var config = require('web.config');
|
||||||
var core = require('web.core');
|
var core = require('web.core');
|
||||||
var framework = require('web.framework');
|
|
||||||
var session = require('web.session');
|
var session = require('web.session');
|
||||||
var SystrayMenu = require('web.SystrayMenu');
|
var SystrayMenu = require('web.SystrayMenu');
|
||||||
var Widget = require('web.Widget');
|
var Widget = require('web.Widget');
|
||||||
@ -175,6 +174,9 @@ var ActivityMenu = Widget.extend({
|
|||||||
return self._rpc({
|
return self._rpc({
|
||||||
model: 'res.users',
|
model: 'res.users',
|
||||||
method: 'activity_user_count',
|
method: 'activity_user_count',
|
||||||
|
kwargs: {
|
||||||
|
context: session.user_context,
|
||||||
|
},
|
||||||
}).then(function (data) {
|
}).then(function (data) {
|
||||||
self.activities = data;
|
self.activities = data;
|
||||||
self.activityCounter = _.reduce(data, function(total_count, p_data){ return total_count + p_data.total_count; }, 0);
|
self.activityCounter = _.reduce(data, function(total_count, p_data){ return total_count + p_data.total_count; }, 0);
|
||||||
|
105
addons/mail/static/tests/client_action_mobile_tests.js
Normal file
105
addons/mail/static/tests/client_action_mobile_tests.js
Normal 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();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
});
|
@ -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();
|
|
||||||
});
|
|
||||||
|
|
||||||
});
|
|
||||||
});
|
|
@ -41,13 +41,18 @@
|
|||||||
|
|
||||||
<template id="qunit_suite" name="mail_tests" inherit_id="web.qunit_suite">
|
<template id="qunit_suite" name="mail_tests" inherit_id="web.qunit_suite">
|
||||||
<xpath expr="//t[@t-set='head']" position="inside">
|
<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/chatter_tests.js"></script>
|
||||||
<script type="text/javascript" src="/mail/static/tests/systray_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>
|
<script type="text/javascript" src="/mail/static/tests/chat_window_test.js"></script>
|
||||||
</xpath>
|
</xpath>
|
||||||
</template>
|
</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">
|
<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:
|
<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">
|
<t t-foreach="origin" t-as="o">
|
||||||
|
@ -88,6 +88,10 @@ class MrpUnbuild(models.Model):
|
|||||||
if self.product_id.tracking != 'none' and not self.lot_id.id:
|
if self.product_id.tracking != 'none' and not self.lot_id.id:
|
||||||
raise UserError(_('Should have a lot for the finished product'))
|
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]
|
consume_move = self._generate_consume_moves()[0]
|
||||||
produce_moves = self._generate_produce_moves()
|
produce_moves = self._generate_produce_moves()
|
||||||
|
|
||||||
@ -156,12 +160,31 @@ class MrpUnbuild(models.Model):
|
|||||||
def _generate_produce_moves(self):
|
def _generate_produce_moves(self):
|
||||||
moves = self.env['stock.move']
|
moves = self.env['stock.move']
|
||||||
for unbuild in self:
|
for unbuild in self:
|
||||||
|
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
|
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)
|
boms, lines = unbuild.bom_id.explode(unbuild.product_id, factor, picking_type=unbuild.bom_id.picking_type_id)
|
||||||
for line, line_data in lines:
|
for line, line_data in lines:
|
||||||
moves += unbuild._generate_move_from_bom_line(line, line_data['qty'])
|
moves += unbuild._generate_move_from_bom_line(line, line_data['qty'])
|
||||||
return moves
|
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):
|
def _generate_move_from_bom_line(self, bom_line, quantity):
|
||||||
return self.env['stock.move'].create({
|
return self.env['stock.move'].create({
|
||||||
'name': self.name,
|
'name': self.name,
|
||||||
|
@ -122,7 +122,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</group>
|
</group>
|
||||||
<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_id" groups="stock.group_stock_multi_locations"/>
|
||||||
<field name="location_dest_id" groups="stock.group_stock_multi_locations"/>
|
<field name="location_dest_id" groups="stock.group_stock_multi_locations"/>
|
||||||
<field name="has_tracking" invisible="1"/>
|
<field name="has_tracking" invisible="1"/>
|
||||||
|
@ -43,11 +43,10 @@ try:
|
|||||||
else:
|
else:
|
||||||
_logger.warning(_('Unable to format %s:\n%s') % number, e)
|
_logger.warning(_('Unable to format %s:\n%s') % number, e)
|
||||||
return number
|
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
|
phone_fmt = phonenumbers.PhoneNumberFormat.INTERNATIONAL
|
||||||
else:
|
else:
|
||||||
phone_fmt = phonenumbers.PhoneNumberFormat.NATIONAL
|
phone_fmt = phonenumbers.PhoneNumberFormat.NATIONAL
|
||||||
|
|
||||||
return phonenumbers.format_number(phone_nbr, phone_fmt)
|
return phonenumbers.format_number(phone_nbr, phone_fmt)
|
||||||
|
|
||||||
except ImportError:
|
except ImportError:
|
||||||
|
@ -1,8 +1,4 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?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>
|
<flectra>
|
||||||
<record id="res_company_view_form_phone_validation" model="ir.ui.view">
|
<record id="res_company_view_form_phone_validation" model="ir.ui.view">
|
||||||
<field name="name">res.company.view.form.phone_validation</field>
|
<field name="name">res.company.view.form.phone_validation</field>
|
||||||
|
@ -127,6 +127,15 @@
|
|||||||
<filter string="Archived" name="inactive" domain="[('active','=',False)]"/>
|
<filter string="Archived" name="inactive" domain="[('active','=',False)]"/>
|
||||||
<field string="Attributes" name="attribute_line_ids" groups="product.group_product_variant"/>
|
<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! -->
|
<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', '<', 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', '>', context_today().strftime('%Y-%m-%d'))
|
||||||
|
]"/>
|
||||||
</search>
|
</search>
|
||||||
</field>
|
</field>
|
||||||
</record>
|
</record>
|
||||||
|
@ -44,7 +44,7 @@ class StockProductionLot(models.Model):
|
|||||||
# Assign dates according to products data
|
# Assign dates according to products data
|
||||||
@api.model
|
@api.model
|
||||||
def create(self, vals):
|
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:
|
for d in dates:
|
||||||
if not vals.get(d):
|
if not vals.get(d):
|
||||||
vals[d] = dates[d]
|
vals[d] = dates[d]
|
||||||
|
@ -9,6 +9,16 @@ from flectra.addons.iap.models import iap
|
|||||||
|
|
||||||
_logger = logging.getLogger(__name__)
|
_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):
|
class SendSMS(models.TransientModel):
|
||||||
_name = 'sms.send_sms'
|
_name = 'sms.send_sms'
|
||||||
@ -16,6 +26,27 @@ class SendSMS(models.TransientModel):
|
|||||||
recipients = fields.Char('Recipients', required=True)
|
recipients = fields.Char('Recipients', required=True)
|
||||||
message = fields.Text('Message', 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):
|
def _get_records(self, model):
|
||||||
if self.env.context.get('active_domain'):
|
if self.env.context.get('active_domain'):
|
||||||
records = model.search(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 = []
|
phone_numbers = []
|
||||||
no_phone_partners = []
|
no_phone_partners = []
|
||||||
for partner in 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:
|
if number:
|
||||||
phone_numbers.append(number)
|
phone_numbers.append(number)
|
||||||
else:
|
else:
|
||||||
|
@ -8,7 +8,7 @@
|
|||||||
<field name="arch" type="xml">
|
<field name="arch" type="xml">
|
||||||
<form string="Add pickings to batch">
|
<form string="Add pickings to batch">
|
||||||
<separator string="Select a 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>
|
<footer>
|
||||||
<button name="attach_pickings" type="object" string="Add to Batch" class="btn-primary"/>
|
<button name="attach_pickings" type="object" string="Add to Batch" class="btn-primary"/>
|
||||||
<button string="Cancel" class="btn-default" special="cancel"/>
|
<button string="Cancel" class="btn-default" special="cancel"/>
|
||||||
|
@ -44,11 +44,6 @@ var AbstractField = Widget.extend({
|
|||||||
navigation_move: '_onNavigationMove',
|
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
|
* 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.
|
* This object contains "field name" as key and an object as value.
|
||||||
|
@ -2374,7 +2374,7 @@ var BasicModel = AbstractModel.extend({
|
|||||||
});
|
});
|
||||||
record.data[fieldName] = list.id;
|
record.data[fieldName] = list.id;
|
||||||
if (!fieldInfo.__no_fetch) {
|
if (!fieldInfo.__no_fetch) {
|
||||||
var def = self._readUngroupedList(list).then(function (list) {
|
var def = self._readUngroupedList(list).then(function () {
|
||||||
return $.when(
|
return $.when(
|
||||||
self._fetchX2ManysBatched(list),
|
self._fetchX2ManysBatched(list),
|
||||||
self._fetchReferencesBatched(list)
|
self._fetchReferencesBatched(list)
|
||||||
@ -2403,6 +2403,7 @@ var BasicModel = AbstractModel.extend({
|
|||||||
var fields = view ? view.fields : fieldInfo.relatedFields;
|
var fields = view ? view.fields : fieldInfo.relatedFields;
|
||||||
var viewType = view ? view.type : fieldInfo.viewType;
|
var viewType = view ? view.type : fieldInfo.viewType;
|
||||||
list = this._applyX2ManyOperations(list);
|
list = this._applyX2ManyOperations(list);
|
||||||
|
this._sortList(list);
|
||||||
var x2mRecords = [];
|
var x2mRecords = [];
|
||||||
|
|
||||||
// step 1: collect ids
|
// step 1: collect ids
|
||||||
@ -3092,16 +3093,13 @@ var BasicModel = AbstractModel.extend({
|
|||||||
id: {type: 'integer'},
|
id: {type: 'integer'},
|
||||||
}, params.fields);
|
}, params.fields);
|
||||||
|
|
||||||
// datapoint context is extended by fields widgets
|
|
||||||
var context = _.extend({}, params.context);
|
|
||||||
|
|
||||||
var dataPoint = {
|
var dataPoint = {
|
||||||
_cache: type === 'list' ? {} : undefined,
|
_cache: type === 'list' ? {} : undefined,
|
||||||
_changes: null,
|
_changes: null,
|
||||||
_domains: {},
|
_domains: {},
|
||||||
_rawChanges: {},
|
_rawChanges: {},
|
||||||
aggregateValues: params.aggregateValues || {},
|
aggregateValues: params.aggregateValues || {},
|
||||||
context: context,
|
context: params.context,
|
||||||
count: params.count || res_ids.length,
|
count: params.count || res_ids.length,
|
||||||
data: data,
|
data: data,
|
||||||
domain: params.domain || [],
|
domain: params.domain || [],
|
||||||
|
@ -7640,6 +7640,46 @@ QUnit.module('relational_fields', {
|
|||||||
form.destroy();
|
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.module('FieldMany2Many');
|
||||||
|
|
||||||
QUnit.test('many2many kanban: edition', function (assert) {
|
QUnit.test('many2many kanban: edition', function (assert) {
|
||||||
@ -9251,7 +9291,7 @@ QUnit.module('relational_fields', {
|
|||||||
'</tree>',
|
'</tree>',
|
||||||
mockRPC: function (route, args) {
|
mockRPC: function (route, args) {
|
||||||
if (args.method === 'read' && args.model === 'partner_type') {
|
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');
|
'The context should be passed to the RPC');
|
||||||
}
|
}
|
||||||
return this._super.apply(this, arguments);
|
return this._super.apply(this, arguments);
|
||||||
|
@ -13,7 +13,7 @@ class WebSuite(flectra.tests.HttpCase):
|
|||||||
|
|
||||||
def test_01_js(self):
|
def test_01_js(self):
|
||||||
# webclient desktop test suite
|
# 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):
|
def test_02_js(self):
|
||||||
# webclient mobile test suite
|
# webclient mobile test suite
|
||||||
|
@ -622,6 +622,7 @@ var SnippetsMenu = Widget.extend({
|
|||||||
* - Remove the 'contentEditable' attributes
|
* - Remove the 'contentEditable' attributes
|
||||||
*/
|
*/
|
||||||
cleanForSave: function () {
|
cleanForSave: function () {
|
||||||
|
this.trigger_up('ready_to_clean_for_save');
|
||||||
_.each(this.snippetEditors, function (snippetEditor) {
|
_.each(this.snippetEditors, function (snippetEditor) {
|
||||||
snippetEditor.cleanForSave();
|
snippetEditor.cleanForSave();
|
||||||
});
|
});
|
||||||
|
@ -43,8 +43,16 @@ var WebsiteRoot = BodyManager.extend({
|
|||||||
}),
|
}),
|
||||||
custom_events: _.extend({}, BodyManager.prototype.custom_events || {}, {
|
custom_events: _.extend({}, BodyManager.prototype.custom_events || {}, {
|
||||||
animation_start_demand: '_onAnimationStartDemand',
|
animation_start_demand: '_onAnimationStartDemand',
|
||||||
|
ready_to_clean_for_save: '_onAnimationStopDemand',
|
||||||
}),
|
}),
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @constructor
|
||||||
|
*/
|
||||||
|
init: function () {
|
||||||
|
this._super.apply(this, arguments);
|
||||||
|
this.animations = [];
|
||||||
|
},
|
||||||
/**
|
/**
|
||||||
* @override
|
* @override
|
||||||
*/
|
*/
|
||||||
@ -108,6 +116,7 @@ var WebsiteRoot = BodyManager.extend({
|
|||||||
* registry has been instantiated outside of the class and is simply
|
* registry has been instantiated outside of the class and is simply
|
||||||
* returned here.
|
* returned here.
|
||||||
*
|
*
|
||||||
|
* @private
|
||||||
* @override
|
* @override
|
||||||
*/
|
*/
|
||||||
_getRegistry: function () {
|
_getRegistry: function () {
|
||||||
@ -118,6 +127,7 @@ var WebsiteRoot = BodyManager.extend({
|
|||||||
* `selector` key of one of the registered animations
|
* `selector` key of one of the registered animations
|
||||||
* (@see Animation.selector).
|
* (@see Animation.selector).
|
||||||
*
|
*
|
||||||
|
* @private
|
||||||
* @param {boolean} [editableMode=false] - true if the page is in edition mode
|
* @param {boolean} [editableMode=false] - true if the page is in edition mode
|
||||||
* @param {jQuery} [$from]
|
* @param {jQuery} [$from]
|
||||||
* only initialize the animations whose `selector` matches the
|
* only initialize the animations whose `selector` matches the
|
||||||
@ -138,9 +148,11 @@ var WebsiteRoot = BodyManager.extend({
|
|||||||
var $snippet = $(el);
|
var $snippet = $(el);
|
||||||
var animation = $snippet.data('snippet-view');
|
var animation = $snippet.data('snippet-view');
|
||||||
if (animation) {
|
if (animation) {
|
||||||
|
self.animations = _.without(self.animations, animation);
|
||||||
animation.destroy();
|
animation.destroy();
|
||||||
}
|
}
|
||||||
animation = new Animation(self, editableMode);
|
animation = new Animation(self, editableMode);
|
||||||
|
self.animations.push(animation);
|
||||||
$snippet.data('snippet-view', animation);
|
$snippet.data('snippet-view', animation);
|
||||||
return animation.attachTo($snippet);
|
return animation.attachTo($snippet);
|
||||||
});
|
});
|
||||||
@ -148,6 +160,18 @@ var WebsiteRoot = BodyManager.extend({
|
|||||||
});
|
});
|
||||||
return $.when.apply($, defs);
|
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
|
// Handlers
|
||||||
@ -165,6 +189,15 @@ var WebsiteRoot = BodyManager.extend({
|
|||||||
.done(ev.data.onSuccess)
|
.done(ev.data.onSuccess)
|
||||||
.fail(ev.data.onFailure);
|
.fail(ev.data.onFailure);
|
||||||
},
|
},
|
||||||
|
/**
|
||||||
|
* Called when the root is notified that the animations have to be
|
||||||
|
* stopped.
|
||||||
|
*
|
||||||
|
* @private
|
||||||
|
*/
|
||||||
|
_onAnimationStopDemand: function () {
|
||||||
|
this._stopAnimations();
|
||||||
|
},
|
||||||
/**
|
/**
|
||||||
* @todo review
|
* @todo review
|
||||||
* @private
|
* @private
|
||||||
|
@ -21,7 +21,10 @@ $(document).ready(function () {
|
|||||||
setTimeout(function () { payment_transaction_poll_status(); }, Math.ceil(_poll_nbr / 3) * 1000);
|
setTimeout(function () { payment_transaction_poll_status(); }, Math.ceil(_poll_nbr / 3) * 1000);
|
||||||
}
|
}
|
||||||
else {
|
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);
|
$('div.oe_website_sale_tx_status').html(result.message);
|
||||||
|
@ -360,13 +360,6 @@ Source installation requires manually installing dependencies:
|
|||||||
Install ``psycopg`` using the installer here
|
Install ``psycopg`` using the installer here
|
||||||
http://www.stickpeople.com/projects/python/win-psycopg/
|
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
|
Then use pip to install the dependencies using the following
|
||||||
command from a cmd.exe prompt (replace ``\YourOdooPath`` by the actual
|
command from a cmd.exe prompt (replace ``\YourOdooPath`` by the actual
|
||||||
path where you downloaded Odoo):
|
path where you downloaded Odoo):
|
||||||
|
@ -82,8 +82,9 @@ Overview
|
|||||||
The Credits
|
The Credits
|
||||||
|
|
||||||
Every service provided through the In-App platform can be used by the
|
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
|
clients with tokens or *credits*. The credits are an integer unit and
|
||||||
on the service and is decided by the provider. This could be:
|
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 sms service: 1 credit = 1 sms,
|
||||||
* for an add service: 1 credit = 1 add,
|
* 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,
|
* 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).
|
* Price: the price in *EUROS* for the time being (USD support is planned).
|
||||||
|
|
||||||
.. image:: images/package.png
|
.. note::
|
||||||
:align: center
|
|
||||||
|
Odoo takes a 25% commission on all package sales. Adjust your selling price accordingly.
|
||||||
|
|
||||||
|
|
||||||
.. note::
|
.. note::
|
||||||
|
|
||||||
Depending on the strategy, the price per credit can vary from one
|
Depending on the strategy, the price per credit can vary from one
|
||||||
package to another.
|
package to another.
|
||||||
|
|
||||||
|
|
||||||
|
.. image:: images/package.png
|
||||||
|
:align: center
|
||||||
|
|
||||||
.. _iap-odoo-app:
|
.. _iap-odoo-app:
|
||||||
|
|
||||||
Odoo App
|
Odoo App
|
||||||
@ -427,9 +434,11 @@ Capture
|
|||||||
|
|
||||||
:param TransactionToken token:
|
:param TransactionToken token:
|
||||||
:param ServiceKey key:
|
: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`
|
:raises: :class:`~odoo.exceptions.AccessError`
|
||||||
|
|
||||||
.. code-block:: python
|
.. code-block:: python
|
||||||
|
:emphasize-lines: 8
|
||||||
|
|
||||||
r2 = requests.post(ODOO + '/iap/1/capture', json={
|
r2 = requests.post(ODOO + '/iap/1/capture', json={
|
||||||
'jsonrpc': '2.0',
|
'jsonrpc': '2.0',
|
||||||
@ -438,6 +447,7 @@ Capture
|
|||||||
'params': {
|
'params': {
|
||||||
'token': tx,
|
'token': tx,
|
||||||
'key': SERVICE_KEY,
|
'key': SERVICE_KEY,
|
||||||
|
'credit_to_capture': credit or False,
|
||||||
}
|
}
|
||||||
}).json()
|
}).json()
|
||||||
if 'error' in r:
|
if 'error' in r:
|
||||||
@ -575,9 +585,9 @@ Charging
|
|||||||
credits = int(MAXIMUM_POWER * factor)
|
credits = int(MAXIMUM_POWER * factor)
|
||||||
with charge(request.env, SERVICE_KEY, user_account, credits) as transaction:
|
with charge(request.env, SERVICE_KEY, user_account, credits) as transaction:
|
||||||
# TODO: allow other targets
|
# TODO: allow other targets
|
||||||
transaction.credit = credits * 0.85
|
transaction.credit = max(credits, 2)
|
||||||
# Sales ongoing one the energy price,
|
# 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([
|
self.env['systems.planets'].search([
|
||||||
('grid', '=', 'M-10'),
|
('grid', '=', 'M-10'),
|
||||||
('name', '=', 'Alderaan'),
|
('name', '=', 'Alderaan'),
|
||||||
|
@ -678,7 +678,7 @@ class IrActionsReport(models.Model):
|
|||||||
"""
|
"""
|
||||||
discard_logo_check = self.env.context.get('discard_logo_check')
|
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:
|
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 {
|
return {
|
||||||
'name': _('Choose Your Document Layout'),
|
'name': _('Choose Your Document Layout'),
|
||||||
'type': 'ir.actions.act_window',
|
'type': 'ir.actions.act_window',
|
||||||
|
@ -1597,7 +1597,7 @@
|
|||||||
<field name="code">tl</field>
|
<field name="code">tl</field>
|
||||||
<field file="base/static/img/country_flags/tl.png" name="image" type="base64" />
|
<field file="base/static/img/country_flags/tl.png" name="image" type="base64" />
|
||||||
<field name="currency_id" ref="USD" />
|
<field name="currency_id" ref="USD" />
|
||||||
<field eval="0" name="phone_code" />
|
<field eval="670" name="phone_code" />
|
||||||
</record>
|
</record>
|
||||||
<record id="tr" model="res.country">
|
<record id="tr" model="res.country">
|
||||||
<field name="name">Turkey</field>
|
<field name="name">Turkey</field>
|
||||||
|
@ -3,22 +3,23 @@ decorator==4.0.10
|
|||||||
docutils==0.12
|
docutils==0.12
|
||||||
ebaysdk==2.1.5
|
ebaysdk==2.1.5
|
||||||
feedparser==5.2.1
|
feedparser==5.2.1
|
||||||
gevent==1.1.2
|
gevent==1.1.2 ; sys_platform != 'win32'
|
||||||
greenlet==0.4.10
|
greenlet==0.4.10
|
||||||
html2text==2016.9.19
|
html2text==2016.9.19
|
||||||
Jinja2==2.8
|
Jinja2==2.8
|
||||||
lxml==3.5.0
|
lxml==3.7.1 ; sys_platform != 'win32'
|
||||||
|
lxml ; sys_platform == 'win32'
|
||||||
Mako==1.0.4
|
Mako==1.0.4
|
||||||
MarkupSafe==0.23
|
MarkupSafe==0.23
|
||||||
mock==2.0.0
|
mock==2.0.0
|
||||||
num2words==0.5.4
|
num2words==0.5.4
|
||||||
ofxparse==0.16
|
ofxparse==0.16
|
||||||
passlib==1.6.5
|
passlib==1.6.5
|
||||||
Pillow==3.4.1
|
Pillow==4.0.0
|
||||||
psutil==4.3.1
|
psutil==4.3.1; sys_platform != 'win32'
|
||||||
psycopg2==2.7.3.1
|
psycopg2==2.7.3.1; sys_platform != 'win32'
|
||||||
pydot==1.2.3
|
pydot==1.2.3
|
||||||
pyldap==2.4.28
|
pyldap==2.4.28; sys_platform != 'win32'
|
||||||
pyparsing==2.1.10
|
pyparsing==2.1.10
|
||||||
PyPDF2==1.26.0
|
PyPDF2==1.26.0
|
||||||
pyserial==3.1.1
|
pyserial==3.1.1
|
||||||
@ -29,12 +30,12 @@ PyYAML==3.12
|
|||||||
qrcode==5.3
|
qrcode==5.3
|
||||||
reportlab==3.3.0
|
reportlab==3.3.0
|
||||||
requests==2.11.1
|
requests==2.11.1
|
||||||
six==1.10.0
|
|
||||||
suds-jurko==0.6
|
suds-jurko==0.6
|
||||||
vatnumber==1.2
|
vatnumber==1.2
|
||||||
vobject==0.9.3
|
vobject==0.9.3
|
||||||
Werkzeug==0.11.11
|
Werkzeug==0.11.15
|
||||||
XlsxWriter==0.9.3
|
XlsxWriter==0.9.3
|
||||||
xlwt==1.3.*
|
xlwt==1.3.*
|
||||||
xlrd==1.0.0
|
xlrd==1.0.0
|
||||||
unittest2==1.1.0
|
unittest2==1.1.0
|
||||||
|
pypiwin32 ; sys_platform == 'win32'
|
||||||
|
Loading…
Reference in New Issue
Block a user