summaryrefslogtreecommitdiff
path: root/addons
diff options
context:
space:
mode:
authorDivyesh Makwana (Open ERP) <mdi@tinyerp.com>2012-07-03 14:28:16 +0530
committerDivyesh Makwana (Open ERP) <mdi@tinyerp.com>2012-07-03 14:28:16 +0530
commitf28cfcfe8a16e77acd7e390e25fff2793e4e6548 (patch)
treefe3fad1ad3f95ff11a34638ea5c7f325cecfa25c /addons
parent9ce0d57fbe8357e00e72123e7e4c07326b26b261 (diff)
parent1e123ce0c86060be9ad66fa8962912b14597c699 (diff)
[Merge] Merge with main addons.
bzr revid: mdi@tinyerp.com-20120703043709-c8o4k6hjfw5v8gn0 bzr revid: mdi@tinyerp.com-20120703085816-mc75d3ukecz03m79
Diffstat (limited to 'addons')
-rw-r--r--addons/account/account_installer.xml3
-rw-r--r--addons/account/account_invoice_view.xml56
-rw-r--r--addons/account/account_view.xml3
-rw-r--r--addons/account/i18n/es_DO.po10387
-rw-r--r--addons/account/product_view.xml8
-rw-r--r--addons/account_analytic_analysis/account_analytic_analysis_menu.xml2
-rw-r--r--addons/account_anglo_saxon/product_view.xml9
-rw-r--r--addons/base_action_rule/i18n/nl.po10
-rw-r--r--addons/base_calendar/base_calendar_view.xml4
-rw-r--r--addons/caldav/wizard/caldav_browse_view.xml61
-rw-r--r--addons/crm/crm_lead.py127
-rw-r--r--addons/crm/crm_lead_demo.xml36
-rw-r--r--addons/crm/crm_lead_view.xml84
-rw-r--r--addons/crm/crm_meeting.py7
-rw-r--r--addons/crm/crm_meeting_menu.xml2
-rw-r--r--addons/crm/crm_meeting_view.xml78
-rw-r--r--addons/crm/crm_phonecall.py8
-rw-r--r--addons/crm/crm_phonecall_view.xml51
-rw-r--r--addons/crm/crm_view.xml13
-rw-r--r--addons/crm/res_partner_view.xml89
-rw-r--r--addons/crm/wizard/crm_phonecall_to_phonecall_view.xml3
-rw-r--r--addons/crm_caldav/crm_caldav_view.xml2
-rw-r--r--addons/crm_claim/crm_claim.py62
-rw-r--r--addons/crm_fundraising/crm_fundraising.py29
-rw-r--r--addons/crm_fundraising/crm_fundraising_view.xml32
-rw-r--r--addons/crm_helpdesk/crm_helpdesk.py62
-rw-r--r--addons/crm_todo/crm_todo_view.xml2
-rw-r--r--addons/email_template/i18n/nl.po10
-rw-r--r--addons/event/event.py14
-rw-r--r--addons/event/event_view.xml90
-rw-r--r--addons/fetchmail/fetchmail.py12
-rw-r--r--addons/hr_holidays/hr_holidays.py16
-rw-r--r--addons/hr_holidays/hr_holidays_view.xml42
-rw-r--r--addons/hr_recruitment/hr_recruitment.py85
-rw-r--r--addons/hr_recruitment/hr_recruitment_view.xml43
-rw-r--r--addons/import_sugarcrm/import_sugarcrm.py2
-rw-r--r--addons/import_sugarcrm/import_sugarcrm_view.xml114
-rw-r--r--addons/mail/__init__.py1
-rw-r--r--addons/mail/__openerp__.py1
-rw-r--r--addons/mail/doc/index.rst.inc1
-rw-r--r--addons/mail/doc/mail_state.rst28
-rw-r--r--addons/mail/ir_needaction.py46
-rw-r--r--addons/mail/mail_group.py2
-rw-r--r--addons/mail/mail_group_view.xml46
-rw-r--r--addons/mail/mail_message.py17
-rw-r--r--addons/mail/mail_thread.py190
-rw-r--r--addons/mail/static/lib/jquery.expander/jquery.expander.js385
-rw-r--r--addons/mail/static/src/css/mail.css4
-rw-r--r--addons/mail/static/src/css/mail_group.css43
-rw-r--r--addons/mail/static/src/js/mail.js33
-rw-r--r--addons/mail/static/src/xml/mail.xml5
-rw-r--r--addons/mail/wizard/mail_compose_message_view.xml18
-rw-r--r--addons/membership/membership.py2
-rw-r--r--addons/membership/membership_view.xml9
-rw-r--r--addons/mrp/mrp.py16
-rw-r--r--addons/point_of_sale/i18n/nl.po144
-rw-r--r--addons/portal/wizard/share_wizard.py2
-rw-r--r--addons/portal/wizard/share_wizard_view.xml10
-rw-r--r--addons/product/product_view.xml30
-rw-r--r--addons/product_manufacturer/product_manufacturer_view.xml26
-rw-r--r--addons/project/project.py39
-rw-r--r--addons/project/project_view.xml87
-rw-r--r--addons/project_issue/project_issue.py93
-rw-r--r--addons/project_issue/project_issue_demo.xml5
-rw-r--r--addons/project_issue/project_issue_view.xml43
-rw-r--r--addons/project_long_term/project_long_term_view.xml32
-rw-r--r--addons/project_mailgate/project_mailgate.py43
-rw-r--r--addons/purchase/purchase.py4
-rw-r--r--addons/purchase/purchase_view.xml126
-rw-r--r--addons/purchase/stock_view.xml50
-rw-r--r--addons/purchase_requisition/purchase_requisition.py7
-rw-r--r--addons/purchase_requisition/purchase_requisition_view.xml9
-rw-r--r--addons/sale/res_partner_view.xml2
-rw-r--r--addons/sale/sale.py4
-rw-r--r--addons/sale/sale_view.xml55
-rw-r--r--addons/share/static/src/css/share.css7
-rw-r--r--addons/share/static/src/js/share.js58
-rw-r--r--addons/share/static/src/xml/share.xml13
-rw-r--r--addons/share/wizard/share_wizard.py16
-rw-r--r--addons/share/wizard/share_wizard_view.xml32
-rw-r--r--addons/stock/product_view.xml8
-rw-r--r--addons/stock/stock_view.xml40
-rw-r--r--addons/stock_planning/i18n/ja.po100
-rw-r--r--addons/wiki/wiki_view.xml20
84 files changed, 12574 insertions, 1036 deletions
diff --git a/addons/account/account_installer.xml b/addons/account/account_installer.xml
index 73c9652f8fa..8e2526c3f97 100644
--- a/addons/account/account_installer.xml
+++ b/addons/account/account_installer.xml
@@ -13,8 +13,7 @@
<attribute name="string">Continue</attribute>
</button>
<separator string="title" position="replace">
- <group string="Select an Accounting Setup">
- <label colspan="2" string="This will automatically configure your taxes and accounts."/>
+ <group>
<field name="charts"/>
</group>
<group string="Configure your Fiscal Year" groups="account.group_account_user">
diff --git a/addons/account/account_invoice_view.xml b/addons/account/account_invoice_view.xml
index 49bbe8d3a4d..e85a0002bf8 100644
--- a/addons/account/account_invoice_view.xml
+++ b/addons/account/account_invoice_view.xml
@@ -157,33 +157,39 @@
<field name="state" widget="statusbar" statusbar_visible="draft,open,paid" statusbar_colors='{"proforma":"blue","proforma2":"blue"}'/>
</header>
<sheet string="Supplier Invoice">
- <group>
- <group>
- <field string="Supplier" name="partner_id"
+ <div class="oe_title">
+ <h1>
+ <label string="Draft Invoice" attrs="{'invisible': [('state', '&lt;&gt;', 'draft')]}"/>
+ <label for="number" class="oe_edit_only" attrs="{'invisible': [('state', '=', 'draft')]}"/>
+ <field name="number" class="oe_inline" attrs="{'invisible': [('state', '=', 'draft')]}"/>
+ </h1>
+ <h2>
+ <label for="origin" string="Concerns" class="oe_inline"/>
+ <field name="origin" placeholder="PO0025" class="oe_inline"/>
+ <label string=" from " attrs="{'invisible': [('origin', '=', False)]}" class='oe_inline'/>
+ <field string="Supplier" name="partner_id" class="oe_inline"
on_change="onchange_partner_id(type,partner_id,date_invoice,payment_term, partner_bank_id,company_id)"
context="{'default_customer': 0, 'search_default_supplier': 1, 'default_supplier': 1}"
domain="[('supplier', '=', True)]"/>
- <field name="fiscal_position" widget="selection"/>
- </group>
+ </h2>
+ </div>
+ <group>
<group>
- <field name="number"/>
<field name="date_invoice"/>
- <field name="period_id" domain="[('state', '=', 'draft')]"
- groups="account.group_account_user" widget="selection"/>
- <field name="journal_id" on_change="onchange_journal_id(journal_id)" widget="selection"
- groups="account.group_account_user"/>
- <field domain="[('company_id', '=', company_id), ('type', '=', 'payable')]"
- name="account_id" groups="account.group_account_user"/>
- <field name="currency_id"/>
+ <field name="date_due"/>
<field name="type" invisible="1"/>
+ <field name="period_id" domain="[('state', '=', 'draft')]" groups="account.group_account_user" widget="selection"/>
+ </group>
+ <group>
+ <field name="fiscal_position" widget="selection"/>
+ <field name="currency_id"/>
+ <field domain="[('company_id', '=', company_id), ('type', '=', 'payable')]" name="account_id" groups="account.group_account_user" invisible="1"/>
</group>
<group>
<label for="reference"/>
<div>
- <field name="reference_type"/>
<field name="reference" placeholder="Payment Reference"/>
</div>
- <field name="date_due"/>
</group>
</group>
<notebook>
@@ -196,10 +202,11 @@
<field domain="[('type','&lt;&gt;','view'), ('company_id', '=', parent.company_id), ('parent_id', '!=', False)]" name="account_analytic_id" groups="analytic.group_analytic_accounting"/>
<field name="quantity"/>
<field name="price_unit"/>
- <!-- Removed if subtotal is set -->
<field name="price_subtotal"/>
- <field invisible="True" name="name"/>
- <field invisible="True" name="uos_id"/>
+ <field domain="[('company_id', '=', parent.company_id), ('journal_id', '=', parent.journal_id), ('type', '&lt;&gt;', 'view')]" name="account_id" on_change="onchange_account_id(product_id,parent.partner_id,parent.type,parent.fiscal_position,account_id)" invisible="1"/>
+ <!-- Removed if subtotal is set -->
+ <field name="name" invisible="1"/>
+ <field name="uos_id" invisible="1"/>
</tree>
</field>
<group>
@@ -232,16 +239,17 @@
<field name="comment"/>
</page>
<page string="Other Info">
- <group col="4">
+ <group>
+ <group>
<field domain="[('partner_id', '=', partner_id)]" name="partner_bank_id" on_change="onchange_partner_bank(partner_bank_id)"/>
- <field name="company_id" on_change="onchange_company_id(company_id,partner_id,type,invoice_line,currency_id)" widget="selection" groups="base.group_multi_company"/>
- <newline/>
<field name="payment_term" widget="selection"/>
- <field name="name"/>
- <newline/>
- <field name="origin" placeholder="PO0025"/>
+ </group>
+ <group>
<field name="user_id"/>
+ <field name="name" invisible="1"/>
<field name="move_id" groups="account.group_account_user"/>
+ <field name="company_id" on_change="onchange_company_id(company_id,partner_id,type,invoice_line,currency_id)" widget="selection" groups="base.group_multi_company"/>
+ </group>
</group>
</page>
<page string="Payments">
diff --git a/addons/account/account_view.xml b/addons/account/account_view.xml
index 9585719803c..a89473af134 100644
--- a/addons/account/account_view.xml
+++ b/addons/account/account_view.xml
@@ -2357,12 +2357,11 @@
<group string="res_config_contents" position="replace">
<field name="only_one_chart_template" invisible="1"/>
<field name="complete_tax_set" invisible="1"/>
- <p>This will automatically configure your chart of accounts, bank accounts, taxes and journals according to the selected template.</p>
<div groups="base.group_multi_company">
<label for="company_id"/>
<field name="company_id" widget="selection"/> <!-- we assume that this wizard will be run only by administrators and as this field may cause problem if hidden (because of the default company of the user removed from the selection because already configured), we simply choosed to remove the group "multi company" of it -->
</div>
- <group string="Set Your Accounting Options">
+ <group>
<div attrs="{'invisible': [('only_one_chart_template','=',True)]}">
<label for="chart_template_id"/>
<field name="chart_template_id" widget="selection" on_change="onchange_chart_template_id(chart_template_id)" domain="[('visible','=', True)]"/>
diff --git a/addons/account/i18n/es_DO.po b/addons/account/i18n/es_DO.po
new file mode 100644
index 00000000000..d2a53b83fe4
--- /dev/null
+++ b/addons/account/i18n/es_DO.po
@@ -0,0 +1,10387 @@
+# Spanish (Dominican Republic) translation for openobject-addons
+# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012
+# This file is distributed under the same license as the openobject-addons package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2012.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: openobject-addons\n"
+"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
+"POT-Creation-Date: 2012-02-08 00:35+0000\n"
+"PO-Revision-Date: 2012-07-02 15:07+0000\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: Spanish (Dominican Republic) <es_DO@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2012-07-03 05:36+0000\n"
+"X-Generator: Launchpad (build 15531)\n"
+
+#. module: account
+#: view:account.invoice.report:0
+#: view:analytic.entries.report:0
+msgid "last month"
+msgstr "el mes pasado"
+
+#. module: account
+#: model:process.transition,name:account.process_transition_supplierreconcilepaid0
+msgid "System payment"
+msgstr "Sistema de pagos"
+
+#. module: account
+#: view:account.journal:0
+msgid "Other Configuration"
+msgstr "Otra configuración"
+
+#. module: account
+#: help:account.tax.code,sequence:0
+msgid ""
+"Determine the display order in the report 'Accounting \\ Reporting \\ "
+"Generic Reporting \\ Taxes \\ Taxes Report'"
+msgstr ""
+"Determina el órden de visualización en el informe 'Contabilidad\\informes\\ "
+"informes genéricos\\ impuestos \\ informes de impuestos'"
+
+#. module: account
+#: view:account.move.reconcile:0
+msgid "Journal Entry Reconcile"
+msgstr "Coinciliar entrada de diario"
+
+#. module: account
+#: view:account.account:0
+#: view:account.bank.statement:0
+#: view:account.move:0
+#: view:account.move.line:0
+msgid "Account Statistics"
+msgstr ""
+
+#. module: account
+#: view:account.invoice:0
+msgid "Proforma/Open/Paid Invoices"
+msgstr "Facturas Proforma/Abiertas/Pagadas"
+
+#. module: account
+#: field:report.invoice.created,residual:0
+msgid "Residual"
+msgstr "Pendiente"
+
+#. module: account
+#: constraint:account.period:0
+msgid "Error ! The duration of the Period(s) is/are invalid. "
+msgstr "¡Error! La duración del periodo(s) no es válido. "
+
+#. module: account
+#: field:account.analytic.line,currency_id:0
+msgid "Account currency"
+msgstr ""
+
+#. module: account
+#: view:account.tax:0
+msgid "Children Definition"
+msgstr ""
+
+#. module: account
+#: code:addons/account/account_bank_statement.py:302
+#, python-format
+msgid "Journal item \"%s\" is not valid."
+msgstr ""
+
+#. module: account
+#: model:ir.model,name:account.model_report_aged_receivable
+msgid "Aged Receivable Till Today"
+msgstr ""
+
+#. module: account
+#: model:process.transition,name:account.process_transition_invoiceimport0
+msgid "Import from invoice or payment"
+msgstr "Importar desde factura o pago"
+
+#. module: account
+#: model:ir.model,name:account.model_wizard_multi_charts_accounts
+msgid "wizard.multi.charts.accounts"
+msgstr "wizard.multi.charts.accounts"
+
+#. module: account
+#: view:account.move:0
+msgid "Total Debit"
+msgstr "Total Debito"
+
+#. module: account
+#: view:account.unreconcile:0
+msgid ""
+"If you unreconciliate transactions, you must also verify all the actions "
+"that are linked to those transactions because they will not be disabled"
+msgstr ""
+
+#. module: account
+#: constraint:account.journal:0
+msgid ""
+"Configuration error! The currency chosen should be shared by the default "
+"accounts too."
+msgstr ""
+
+#. module: account
+#: report:account.invoice:0
+#: field:account.invoice.line,origin:0
+msgid "Origin"
+msgstr "Orígen"
+
+#. module: account
+#: view:account.account:0
+#: view:account.automatic.reconcile:0
+#: field:account.move.line,reconcile_id:0
+#: view:account.move.line.reconcile:0
+#: view:account.move.line.reconcile.writeoff:0
+msgid "Reconcile"
+msgstr "Reconciliar"
+
+#. module: account
+#: field:account.bank.statement.line,ref:0
+#: field:account.entries.report,ref:0
+#: view:account.invoice:0
+#: field:account.move,ref:0
+#: field:account.move.line,ref:0
+#: field:account.subscription,ref:0
+msgid "Reference"
+msgstr "Referencia"
+
+#. module: account
+#: view:account.open.closed.fiscalyear:0
+msgid "Choose Fiscal Year "
+msgstr "Seleccione el ejercicio fiscal "
+
+#. module: account
+#: help:account.payment.term,active:0
+msgid ""
+"If the active field is set to False, it will allow you to hide the payment "
+"term without removing it."
+msgstr ""
+
+#. module: account
+#: code:addons/account/account_invoice.py:1428
+#, python-format
+msgid "Warning!"
+msgstr "¡Aviso!"
+
+#. module: account
+#: code:addons/account/account.py:3112
+#, python-format
+msgid "Miscellaneous Journal"
+msgstr ""
+
+#. module: account
+#: field:account.fiscal.position.account,account_src_id:0
+#: field:account.fiscal.position.account.template,account_src_id:0
+msgid "Account Source"
+msgstr ""
+
+#. module: account
+#: model:ir.actions.act_window,name:account.act_acc_analytic_acc_5_report_hr_timesheet_invoice_journal
+msgid "All Analytic Entries"
+msgstr "Todos los asientos analíticos"
+
+#. module: account
+#: field:accounting.report,label_filter:0
+msgid "Column Label"
+msgstr ""
+
+#. module: account
+#: code:addons/account/wizard/account_move_journal.py:95
+#, python-format
+msgid "Journal: %s"
+msgstr "Diario: %s"
+
+#. module: account
+#: help:account.analytic.journal,type:0
+msgid ""
+"Gives the type of the analytic journal. When it needs for a document (eg: an "
+"invoice) to create analytic entries, OpenERP will look for a matching "
+"journal of the same type."
+msgstr ""
+
+#. module: account
+#: model:ir.actions.act_window,name:account.action_account_tax_template_form
+#: model:ir.ui.menu,name:account.menu_action_account_tax_template_form
+msgid "Tax Templates"
+msgstr ""
+
+#. module: account
+#: model:ir.model,name:account.model_account_tax
+msgid "account.tax"
+msgstr ""
+
+#. module: account
+#: model:ir.model,name:account.model_account_move_line_reconcile_select
+msgid "Move line reconcile select"
+msgstr ""
+
+#. module: account
+#: help:account.tax.code,notprintable:0
+#: help:account.tax.code.template,notprintable:0
+msgid ""
+"Check this box if you don't want any VAT related to this Tax Code to appear "
+"on invoices"
+msgstr ""
+
+#. module: account
+#: code:addons/account/account_invoice.py:1241
+#, python-format
+msgid "Invoice '%s' is paid partially: %s%s of %s%s (%s%s remaining)"
+msgstr ""
+
+#. module: account
+#: model:process.transition,note:account.process_transition_supplierentriesreconcile0
+msgid "Accounting entries are an input of the reconciliation."
+msgstr ""
+
+#. module: account
+#: model:ir.ui.menu,name:account.menu_finance_management_belgian_reports
+msgid "Belgian Reports"
+msgstr ""
+
+#. module: account
+#: code:addons/account/account_move_line.py:1200
+#, python-format
+msgid "You can not add/modify entries in a closed journal."
+msgstr ""
+
+#. module: account
+#: help:account.account,user_type:0
+msgid ""
+"Account Type is used for information purpose, to generate country-specific "
+"legal reports, and set the rules to close a fiscal year and generate opening "
+"entries."
+msgstr ""
+
+#. module: account
+#: report:account.overdue:0
+msgid "Sub-Total :"
+msgstr ""
+
+#. module: account
+#: model:ir.actions.act_window,name:account.action_account_use_model_create_entry
+#: model:ir.actions.act_window,name:account.action_view_account_use_model
+#: model:ir.ui.menu,name:account.menu_action_manual_recurring
+msgid "Manual Recurring"
+msgstr ""
+
+#. module: account
+#: view:account.fiscalyear.close.state:0
+msgid "Close Fiscalyear"
+msgstr ""
+
+#. module: account
+#: field:account.automatic.reconcile,allow_write_off:0
+msgid "Allow write off"
+msgstr ""
+
+#. module: account
+#: view:account.analytic.chart:0
+msgid "Select the Period for Analysis"
+msgstr ""
+
+#. module: account
+#: view:account.move.line:0
+msgid "St."
+msgstr ""
+
+#. module: account
+#: code:addons/account/account_invoice.py:551
+#, python-format
+msgid "Invoice line account company does not match with invoice company."
+msgstr ""
+
+#. module: account
+#: field:account.journal.column,field:0
+msgid "Field Name"
+msgstr ""
+
+#. module: account
+#: help:account.installer,charts:0
+msgid ""
+"Installs localized accounting charts to match as closely as possible the "
+"accounting needs of your company based on your country."
+msgstr ""
+
+#. module: account
+#: code:addons/account/wizard/account_move_journal.py:63
+#, python-format
+msgid ""
+"Can't find any account journal of %s type for this company.\n"
+"\n"
+"You can create one in the menu: \n"
+"Configuration/Financial Accounting/Accounts/Journals."
+msgstr ""
+
+#. module: account
+#: model:ir.model,name:account.model_account_unreconcile
+msgid "Account Unreconcile"
+msgstr ""
+
+#. module: account
+#: view:product.product:0
+#: view:product.template:0
+msgid "Purchase Properties"
+msgstr ""
+
+#. module: account
+#: help:account.financial.report,style_overwrite:0
+msgid ""
+"You can set up here the format you want this record to be displayed. If you "
+"leave the automatic formatting, it will be computed based on the financial "
+"reports hierarchy (auto-computed field 'level')."
+msgstr ""
+
+#. module: account
+#: view:account.installer:0
+msgid "Configure"
+msgstr ""
+
+#. module: account
+#: selection:account.entries.report,month:0
+#: selection:account.invoice.report,month:0
+#: selection:analytic.entries.report,month:0
+#: selection:report.account.sales,month:0
+#: selection:report.account_type.sales,month:0
+msgid "June"
+msgstr ""
+
+#. module: account
+#: model:ir.actions.act_window,help:account.action_account_moves_bank
+msgid ""
+"This view is used by accountants in order to record entries massively in "
+"OpenERP. Journal items are created by OpenERP if you use Bank Statements, "
+"Cash Registers, or Customer/Supplier payments."
+msgstr ""
+
+#. module: account
+#: constraint:account.move.line:0
+msgid "You can not create journal items on an account of type view."
+msgstr ""
+
+#. module: account
+#: model:ir.model,name:account.model_account_tax_template
+msgid "account.tax.template"
+msgstr ""
+
+#. module: account
+#: model:ir.model,name:account.model_account_bank_accounts_wizard
+msgid "account.bank.accounts.wizard"
+msgstr ""
+
+#. module: account
+#: field:account.move.line,date_created:0
+#: field:account.move.reconcile,create_date:0
+msgid "Creation date"
+msgstr ""
+
+#. module: account
+#: selection:account.journal,type:0
+msgid "Purchase Refund"
+msgstr ""
+
+#. module: account
+#: selection:account.journal,type:0
+msgid "Opening/Closing Situation"
+msgstr ""
+
+#. module: account
+#: help:account.journal,currency:0
+msgid "The currency used to enter statement"
+msgstr ""
+
+#. module: account
+#: field:account.open.closed.fiscalyear,fyear_id:0
+msgid "Fiscal Year to Open"
+msgstr ""
+
+#. module: account
+#: help:account.journal,sequence_id:0
+msgid ""
+"This field contains the informatin related to the numbering of the journal "
+"entries of this journal."
+msgstr ""
+
+#. module: account
+#: field:account.journal,default_debit_account_id:0
+msgid "Default Debit Account"
+msgstr ""
+
+#. module: account
+#: view:account.move:0
+msgid "Total Credit"
+msgstr ""
+
+#. module: account
+#: view:account.move.line.unreconcile.select:0
+msgid "Open for Unreconciliation"
+msgstr ""
+
+#. module: account
+#: field:account.account.template,chart_template_id:0
+#: field:account.fiscal.position.template,chart_template_id:0
+#: field:account.tax.template,chart_template_id:0
+#: field:wizard.multi.charts.accounts,chart_template_id:0
+msgid "Chart Template"
+msgstr ""
+
+#. module: account
+#: help:account.model.line,amount_currency:0
+msgid "The amount expressed in an optional other currency."
+msgstr ""
+
+#. module: account
+#: field:accounting.report,enable_filter:0
+msgid "Enable Comparison"
+msgstr ""
+
+#. module: account
+#: help:account.journal.period,state:0
+msgid ""
+"When journal period is created. The state is 'Draft'. If a report is printed "
+"it comes to 'Printed' state. When all transactions are done, it comes in "
+"'Done' state."
+msgstr ""
+
+#. module: account
+#: model:ir.actions.act_window,help:account.action_account_tax_chart
+msgid ""
+"Chart of Taxes is a tree view reflecting the structure of the Tax Cases (or "
+"tax codes) and shows the current tax situation. The tax chart represents the "
+"amount of each area of the tax declaration for your country. It’s presented "
+"in a hierarchical structure, which can be modified to fit your needs."
+msgstr ""
+
+#. module: account
+#: view:account.analytic.line:0
+#: field:account.automatic.reconcile,journal_id:0
+#: view:account.bank.statement:0
+#: field:account.bank.statement,journal_id:0
+#: report:account.central.journal:0
+#: view:account.entries.report:0
+#: field:account.entries.report,journal_id:0
+#: view:account.invoice:0
+#: field:account.invoice,journal_id:0
+#: view:account.invoice.report:0
+#: field:account.invoice.report,journal_id:0
+#: field:account.journal.period,journal_id:0
+#: report:account.journal.period.print:0
+#: report:account.journal.period.print.sale.purchase:0
+#: view:account.model:0
+#: field:account.model,journal_id:0
+#: view:account.move:0
+#: field:account.move,journal_id:0
+#: field:account.move.bank.reconcile,journal_id:0
+#: view:account.move.line:0
+#: field:account.move.line,journal_id:0
+#: view:analytic.entries.report:0
+#: field:analytic.entries.report,journal_id:0
+#: model:ir.actions.report.xml,name:account.account_journal
+#: model:ir.model,name:account.model_account_journal
+#: field:validate.account.move,journal_id:0
+msgid "Journal"
+msgstr ""
+
+#. module: account
+#: model:ir.model,name:account.model_account_invoice_confirm
+msgid "Confirm the selected invoices"
+msgstr ""
+
+#. module: account
+#: field:account.addtmpl.wizard,cparent_id:0
+msgid "Parent target"
+msgstr ""
+
+#. module: account
+#: field:account.bank.statement,account_id:0
+msgid "Account used in this journal"
+msgstr ""
+
+#. module: account
+#: help:account.aged.trial.balance,chart_account_id:0
+#: help:account.balance.report,chart_account_id:0
+#: help:account.central.journal,chart_account_id:0
+#: help:account.common.account.report,chart_account_id:0
+#: help:account.common.journal.report,chart_account_id:0
+#: help:account.common.partner.report,chart_account_id:0
+#: help:account.common.report,chart_account_id:0
+#: help:account.general.journal,chart_account_id:0
+#: help:account.partner.balance,chart_account_id:0
+#: help:account.partner.ledger,chart_account_id:0
+#: help:account.print.journal,chart_account_id:0
+#: help:account.report.general.ledger,chart_account_id:0
+#: help:account.vat.declaration,chart_account_id:0
+#: help:accounting.report,chart_account_id:0
+msgid "Select Charts of Accounts"
+msgstr ""
+
+#. module: account
+#: sql_constraint:res.company:0
+msgid "The company name must be unique !"
+msgstr ""
+
+#. module: account
+#: model:ir.model,name:account.model_account_invoice_refund
+msgid "Invoice Refund"
+msgstr ""
+
+#. module: account
+#: report:account.overdue:0
+msgid "Li."
+msgstr ""
+
+#. module: account
+#: field:account.automatic.reconcile,unreconciled:0
+msgid "Not reconciled transactions"
+msgstr ""
+
+#. module: account
+#: report:account.general.ledger:0
+#: report:account.general.ledger_landscape:0
+msgid "Counterpart"
+msgstr ""
+
+#. module: account
+#: view:account.fiscal.position:0
+#: field:account.fiscal.position,tax_ids:0
+#: field:account.fiscal.position.template,tax_ids:0
+msgid "Tax Mapping"
+msgstr ""
+
+#. module: account
+#: model:ir.actions.act_window,name:account.action_account_fiscalyear_close_state
+#: model:ir.ui.menu,name:account.menu_wizard_fy_close_state
+msgid "Close a Fiscal Year"
+msgstr ""
+
+#. module: account
+#: model:process.transition,note:account.process_transition_confirmstatementfromdraft0
+msgid "The accountant confirms the statement."
+msgstr ""
+
+#. module: account
+#: selection:account.balance.report,display_account:0
+#: selection:account.common.account.report,display_account:0
+#: selection:account.report.general.ledger,display_account:0
+#: selection:account.tax,type_tax_use:0
+#: selection:account.tax.template,type_tax_use:0
+msgid "All"
+msgstr ""
+
+#. module: account
+#: field:account.invoice.report,address_invoice_id:0
+msgid "Invoice Address Name"
+msgstr ""
+
+#. module: account
+#: selection:account.installer,period:0
+msgid "3 Monthly"
+msgstr ""
+
+#. module: account
+#: view:account.unreconcile.reconcile:0
+msgid ""
+"If you unreconciliate transactions, you must also verify all the actions "
+"that are linked to those transactions because they will not be disable"
+msgstr ""
+
+#. module: account
+#: view:analytic.entries.report:0
+msgid " 30 Days "
+msgstr ""
+
+#. module: account
+#: field:ir.sequence,fiscal_ids:0
+msgid "Sequences"
+msgstr ""
+
+#. module: account
+#: field:account.financial.report,account_report_id:0
+#: selection:account.financial.report,type:0
+msgid "Report Value"
+msgstr ""
+
+#. module: account
+#: view:account.fiscal.position.template:0
+msgid "Taxes Mapping"
+msgstr ""
+
+#. module: account
+#: report:account.central.journal:0
+msgid "Centralized Journal"
+msgstr ""
+
+#. module: account
+#: sql_constraint:account.sequence.fiscalyear:0
+msgid "Main Sequence must be different from current !"
+msgstr ""
+
+#. module: account
+#: code:addons/account/account_move_line.py:1251
+#, python-format
+msgid "No period found or more than one period found for the given date."
+msgstr ""
+
+#. module: account
+#: field:account.invoice.tax,tax_amount:0
+msgid "Tax Code Amount"
+msgstr ""
+
+#. module: account
+#: code:addons/account/account.py:3116
+#, python-format
+msgid "SAJ"
+msgstr ""
+
+#. module: account
+#: view:account.period:0
+#: view:account.period.close:0
+msgid "Close Period"
+msgstr ""
+
+#. module: account
+#: model:ir.model,name:account.model_account_common_partner_report
+msgid "Account Common Partner Report"
+msgstr ""
+
+#. module: account
+#: field:account.fiscalyear.close,period_id:0
+msgid "Opening Entries Period"
+msgstr ""
+
+#. module: account
+#: model:ir.model,name:account.model_account_journal_period
+msgid "Journal Period"
+msgstr ""
+
+#. module: account
+#: code:addons/account/account_move_line.py:750
+#: code:addons/account/account_move_line.py:803
+#, python-format
+msgid "To reconcile the entries company should be the same for all entries"
+msgstr ""
+
+#. module: account
+#: constraint:account.move.line:0
+msgid ""
+"The date of your Journal Entry is not in the defined period! You should "
+"change the date or remove this constraint from the journal."
+msgstr ""
+
+#. module: account
+#: model:ir.model,name:account.model_account_report_general_ledger
+msgid "General Ledger Report"
+msgstr ""
+
+#. module: account
+#: view:account.invoice:0
+msgid "Re-Open"
+msgstr ""
+
+#. module: account
+#: view:account.use.model:0
+msgid "Are you sure you want to create entries?"
+msgstr ""
+
+#. module: account
+#: view:account.invoice:0
+msgid "Print Invoice"
+msgstr ""
+
+#. module: account
+#: field:account.partner.reconcile.process,today_reconciled:0
+msgid "Partners Reconciled Today"
+msgstr ""
+
+#. module: account
+#: view:report.hr.timesheet.invoice.journal:0
+msgid "Sale journal in this year"
+msgstr ""
+
+#. module: account
+#: selection:account.financial.report,display_detail:0
+msgid "Display children with hierarchy"
+msgstr ""
+
+#. module: account
+#: selection:account.payment.term.line,value:0
+#: selection:account.tax.template,type:0
+msgid "Percent"
+msgstr ""
+
+#. module: account
+#: model:ir.ui.menu,name:account.menu_finance_charts
+msgid "Charts"
+msgstr ""
+
+#. module: account
+#: code:addons/account/project/wizard/project_account_analytic_line.py:47
+#: model:ir.model,name:account.model_project_account_analytic_line
+#, python-format
+msgid "Analytic Entries by line"
+msgstr ""
+
+#. module: account
+#: field:account.invoice.refund,filter_refund:0
+msgid "Refund Method"
+msgstr ""
+
+#. module: account
+#: code:addons/account/wizard/account_change_currency.py:38
+#, python-format
+msgid "You can only change currency for Draft Invoice !"
+msgstr ""
+
+#. module: account
+#: model:ir.ui.menu,name:account.menu_account_report
+msgid "Financial Report"
+msgstr ""
+
+#. module: account
+#: view:account.analytic.journal:0
+#: field:account.analytic.journal,type:0
+#: field:account.bank.statement.line,type:0
+#: field:account.financial.report,type:0
+#: field:account.invoice,type:0
+#: view:account.invoice.report:0
+#: field:account.invoice.report,type:0
+#: view:account.journal:0
+#: field:account.journal,type:0
+#: field:account.move.reconcile,type:0
+#: field:report.invoice.created,type:0
+msgid "Type"
+msgstr ""
+
+#. module: account
+#: code:addons/account/account_invoice.py:738
+#, python-format
+msgid ""
+"Taxes are missing!\n"
+"Click on compute button."
+msgstr ""
+
+#. module: account
+#: model:ir.model,name:account.model_account_subscription_line
+msgid "Account Subscription Line"
+msgstr ""
+
+#. module: account
+#: help:account.invoice,reference:0
+msgid "The partner reference of this invoice."
+msgstr ""
+
+#. module: account
+#: view:account.invoice.report:0
+msgid "Supplier Invoices And Refunds"
+msgstr ""
+
+#. module: account
+#: view:account.move.line.unreconcile.select:0
+#: view:account.unreconcile:0
+#: view:account.unreconcile.reconcile:0
+#: model:ir.model,name:account.model_account_move_line_unreconcile_select
+msgid "Unreconciliation"
+msgstr ""
+
+#. module: account
+#: view:account.payment.term.line:0
+msgid "At 14 net days 2 percent, remaining amount at 30 days end of month."
+msgstr ""
+
+#. module: account
+#: model:ir.model,name:account.model_account_analytic_journal_report
+msgid "Account Analytic Journal"
+msgstr ""
+
+#. module: account
+#: model:ir.model,name:account.model_account_automatic_reconcile
+msgid "Automatic Reconcile"
+msgstr ""
+
+#. module: account
+#: report:account.analytic.account.quantity_cost_ledger:0
+msgid "J.C./Move name"
+msgstr ""
+
+#. module: account
+#: model:ir.actions.act_window,help:account.action_account_gain_loss
+msgid ""
+"When doing multi-currency transactions, you may loose or gain some amount "
+"due to changes of exchange rate. This menu gives you a forecast of the Gain "
+"or Loss you'd realized if those transactions were ended today. Only for "
+"accounts having a secondary currency set."
+msgstr ""
+
+#. module: account
+#: selection:account.entries.report,month:0
+#: selection:account.invoice.report,month:0
+#: selection:analytic.entries.report,month:0
+#: selection:report.account.sales,month:0
+#: selection:report.account_type.sales,month:0
+msgid "September"
+msgstr ""
+
+#. module: account
+#: selection:account.subscription,period_type:0
+msgid "days"
+msgstr ""
+
+#. module: account
+#: help:account.account.template,nocreate:0
+msgid ""
+"If checked, the new chart of accounts will not contain this by default."
+msgstr ""
+
+#. module: account
+#: code:addons/account/wizard/account_invoice_refund.py:110
+#, python-format
+msgid ""
+"Can not %s invoice which is already reconciled, invoice should be "
+"unreconciled first. You can only Refund this invoice"
+msgstr ""
+
+#. module: account
+#: model:ir.actions.act_window,name:account.action_subscription_form_new
+msgid "New Subscription"
+msgstr ""
+
+#. module: account
+#: view:account.payment.term:0
+msgid "Computation"
+msgstr ""
+
+#. module: account
+#: selection:account.invoice.refund,filter_refund:0
+msgid "Cancel: refund invoice and reconcile"
+msgstr ""
+
+#. module: account
+#: field:account.cashbox.line,pieces:0
+msgid "Values"
+msgstr ""
+
+#. module: account
+#: view:account.invoice.report:0
+#: field:account.invoice.report,delay_to_pay:0
+msgid "Avg. Delay To Pay"
+msgstr ""
+
+#. module: account
+#: model:ir.actions.act_window,name:account.action_account_tax_chart
+#: model:ir.actions.act_window,name:account.action_tax_code_tree
+#: model:ir.ui.menu,name:account.menu_action_tax_code_tree
+msgid "Chart of Taxes"
+msgstr ""
+
+#. module: account
+#: view:account.fiscalyear:0
+msgid "Create 3 Months Periods"
+msgstr ""
+
+#. module: account
+#: report:account.overdue:0
+msgid "Due"
+msgstr ""
+
+#. module: account
+#: code:addons/account/account.py:1345
+#, python-format
+msgid ""
+"You cannot validate this journal entry because account \"%s\" does not "
+"belong to chart of accounts \"%s\"!"
+msgstr ""
+
+#. module: account
+#: code:addons/account/account_move_line.py:835
+#, python-format
+msgid ""
+"This account does not allow reconciliation! You should update the account "
+"definition to change this."
+msgstr ""
+
+#. module: account
+#: view:account.invoice:0
+#: view:account.move:0
+#: view:validate.account.move:0
+#: view:validate.account.move.lines:0
+msgid "Approve"
+msgstr ""
+
+#. module: account
+#: view:account.invoice:0
+#: view:account.move:0
+#: view:report.invoice.created:0
+msgid "Total Amount"
+msgstr ""
+
+#. module: account
+#: selection:account.account,type:0
+#: selection:account.account.template,type:0
+#: selection:account.entries.report,type:0
+msgid "Consolidation"
+msgstr ""
+
+#. module: account
+#: model:account.account.type,name:account.data_account_type_liability
+#: model:account.financial.report,name:account.account_financial_report_liability0
+#: model:account.financial.report,name:account.account_financial_report_liabilitysum0
+msgid "Liability"
+msgstr ""
+
+#. module: account
+#: view:account.entries.report:0
+msgid "Extended Filters..."
+msgstr ""
+
+#. module: account
+#: model:ir.ui.menu,name:account.menu_account_central_journal
+msgid "Centralizing Journal"
+msgstr ""
+
+#. module: account
+#: selection:account.journal,type:0
+msgid "Sale Refund"
+msgstr ""
+
+#. module: account
+#: model:process.node,note:account.process_node_accountingstatemententries0
+msgid "Bank statement"
+msgstr ""
+
+#. module: account
+#: field:account.analytic.line,move_id:0
+msgid "Move Line"
+msgstr ""
+
+#. module: account
+#: help:account.move.line,tax_amount:0
+msgid ""
+"If the Tax account is a tax code account, this field will contain the taxed "
+"amount.If the tax account is base tax code, this field will contain the "
+"basic amount(without tax)."
+msgstr ""
+
+#. module: account
+#: code:addons/account/account.py:2596
+#, python-format
+msgid "I can not locate a parent code for the template account!"
+msgstr ""
+
+#. module: account
+#: view:account.analytic.line:0
+msgid "Purchases"
+msgstr ""
+
+#. module: account
+#: field:account.model,lines_id:0
+msgid "Model Entries"
+msgstr ""
+
+#. module: account
+#: field:account.account,code:0
+#: report:account.account.balance:0
+#: field:account.account.template,code:0
+#: field:account.account.type,code:0
+#: report:account.analytic.account.balance:0
+#: report:account.analytic.account.inverted.balance:0
+#: report:account.analytic.account.journal:0
+#: field:account.analytic.line,code:0
+#: field:account.fiscalyear,code:0
+#: report:account.general.journal:0
+#: field:account.journal,code:0
+#: report:account.partner.balance:0
+#: field:account.period,code:0
+msgid "Code"
+msgstr ""
+
+#. module: account
+#: code:addons/account/account.py:2268
+#: code:addons/account/account_bank_statement.py:357
+#: code:addons/account/account_invoice.py:73
+#: code:addons/account/account_invoice.py:688
+#: code:addons/account/account_move_line.py:173
+#, python-format
+msgid "No Analytic Journal !"
+msgstr ""
+
+#. module: account
+#: report:account.partner.balance:0
+#: view:account.partner.balance:0
+#: model:ir.actions.act_window,name:account.action_account_partner_balance
+#: model:ir.actions.report.xml,name:account.account_3rdparty_account_balance
+#: model:ir.ui.menu,name:account.menu_account_partner_balance_report
+msgid "Partner Balance"
+msgstr ""
+
+#. module: account
+#: field:account.bank.accounts.wizard,acc_name:0
+msgid "Account Name."
+msgstr ""
+
+#. module: account
+#: field:account.chart.template,property_reserve_and_surplus_account:0
+#: field:res.company,property_reserve_and_surplus_account:0
+msgid "Reserve and Profit/Loss Account"
+msgstr ""
+
+#. module: account
+#: field:report.account.receivable,name:0
+msgid "Week of Year"
+msgstr ""
+
+#. module: account
+#: field:account.report.general.ledger,landscape:0
+msgid "Landscape Mode"
+msgstr ""
+
+#. module: account
+#: code:addons/account/account.py:645
+#, python-format
+msgid ""
+"You cannot change the type of account from '%s' to '%s' type as it contains "
+"journal items!"
+msgstr ""
+
+#. module: account
+#: field:account.report.general.ledger,sortby:0
+msgid "Sort by"
+msgstr ""
+
+#. module: account
+#: help:account.fiscalyear.close,fy_id:0
+msgid "Select a Fiscal year to close"
+msgstr ""
+
+#. module: account
+#: help:account.account.template,user_type:0
+msgid ""
+"These types are defined according to your country. The type contains more "
+"information about the account and its specificities."
+msgstr ""
+
+#. module: account
+#: code:addons/account/account_move_line.py:842
+#, python-format
+msgid ""
+"You have to provide an account for the write off/exchange difference entry !"
+msgstr ""
+
+#. module: account
+#: view:account.tax:0
+msgid "Applicability Options"
+msgstr ""
+
+#. module: account
+#: report:account.partner.balance:0
+msgid "In dispute"
+msgstr ""
+
+#. module: account
+#: model:ir.actions.act_window,name:account.action_view_bank_statement_tree
+#: model:ir.ui.menu,name:account.journal_cash_move_lines
+msgid "Cash Registers"
+msgstr ""
+
+#. module: account
+#: report:account.analytic.account.journal:0
+#: report:account.third_party_ledger:0
+#: report:account.third_party_ledger_other:0
+msgid "-"
+msgstr ""
+
+#. module: account
+#: view:account.analytic.account:0
+#: model:res.groups,name:account.group_account_manager
+msgid "Manager"
+msgstr ""
+
+#. module: account
+#: view:account.subscription.generate:0
+msgid "Generate Entries before:"
+msgstr ""
+
+#. module: account
+#: view:account.move.line:0
+msgid "Unbalanced Journal Items"
+msgstr ""
+
+#. module: account
+#: model:account.account.type,name:account.data_account_type_bank
+#: selection:account.bank.accounts.wizard,account_type:0
+#: code:addons/account/account.py:3003
+#, python-format
+msgid "Bank"
+msgstr ""
+
+#. module: account
+#: field:account.period,date_start:0
+msgid "Start of Period"
+msgstr ""
+
+#. module: account
+#: model:process.transition,name:account.process_transition_confirmstatementfromdraft0
+msgid "Confirm statement"
+msgstr ""
+
+#. module: account
+#: help:account.account,foreign_balance:0
+msgid ""
+"Total amount (in Secondary currency) for transactions held in secondary "
+"currency for this account."
+msgstr ""
+
+#. module: account
+#: field:account.fiscal.position.tax,tax_dest_id:0
+#: field:account.fiscal.position.tax.template,tax_dest_id:0
+msgid "Replacement Tax"
+msgstr ""
+
+#. module: account
+#: selection:account.move.line,centralisation:0
+msgid "Credit Centralisation"
+msgstr ""
+
+#. module: account
+#: view:report.account_type.sales:0
+msgid "All Months Sales by type"
+msgstr ""
+
+#. module: account
+#: model:ir.actions.act_window,help:account.action_invoice_tree2
+msgid ""
+"With Supplier Invoices you can enter and manage invoices issued by your "
+"suppliers. OpenERP can also generate draft invoices automatically from "
+"purchase orders or receipts. This way, you can control the invoice from your "
+"supplier according to what you purchased or received."
+msgstr ""
+
+#. module: account
+#: model:ir.actions.act_window,name:account.action_account_tax_code_template_form
+#: model:ir.ui.menu,name:account.menu_action_account_tax_code_template_form
+msgid "Tax Code Templates"
+msgstr ""
+
+#. module: account
+#: view:account.invoice.cancel:0
+msgid "Cancel Invoices"
+msgstr ""
+
+#. module: account
+#: help:account.journal,code:0
+msgid "The code will be displayed on reports."
+msgstr ""
+
+#. module: account
+#: view:account.tax.template:0
+msgid "Taxes used in Purchases"
+msgstr ""
+
+#. module: account
+#: field:account.invoice.tax,tax_code_id:0
+#: field:account.tax,description:0
+#: field:account.tax.template,tax_code_id:0
+#: model:ir.model,name:account.model_account_tax_code
+msgid "Tax Code"
+msgstr ""
+
+#. module: account
+#: field:account.account,currency_mode:0
+msgid "Outgoing Currencies Rate"
+msgstr ""
+
+#. module: account
+#: selection:account.analytic.journal,type:0
+msgid "Situation"
+msgstr ""
+
+#. module: account
+#: help:account.move.line,move_id:0
+msgid "The move of this entry line."
+msgstr ""
+
+#. module: account
+#: code:addons/account/account_move_line.py:1302
+#, python-format
+msgid ""
+"You can not use this general account in this journal, check the tab 'Entry "
+"Controls' on the related journal !"
+msgstr ""
+
+#. module: account
+#: field:account.move.line.reconcile,trans_nbr:0
+msgid "# of Transaction"
+msgstr ""
+
+#. module: account
+#: report:account.general.ledger:0
+#: report:account.general.ledger_landscape:0
+#: report:account.third_party_ledger:0
+#: report:account.third_party_ledger_other:0
+msgid "Entry Label"
+msgstr ""
+
+#. module: account
+#: code:addons/account/account.py:1129
+#, python-format
+msgid "You can not modify/delete a journal with entries for this period !"
+msgstr ""
+
+#. module: account
+#: help:account.invoice,origin:0
+#: help:account.invoice.line,origin:0
+msgid "Reference of the document that produced this invoice."
+msgstr ""
+
+#. module: account
+#: view:account.analytic.line:0
+#: view:account.journal:0
+msgid "Others"
+msgstr ""
+
+#. module: account
+#: view:account.subscription:0
+msgid "Draft Subscription"
+msgstr ""
+
+#. module: account
+#: view:account.account:0
+#: report:account.account.balance:0
+#: view:account.analytic.line:0
+#: field:account.automatic.reconcile,writeoff_acc_id:0
+#: field:account.bank.statement.line,account_id:0
+#: view:account.entries.report:0
+#: field:account.entries.report,account_id:0
+#: field:account.invoice,account_id:0
+#: field:account.invoice.line,account_id:0
+#: view:account.invoice.report:0
+#: field:account.invoice.report,account_id:0
+#: field:account.journal,account_control_ids:0
+#: report:account.journal.period.print:0
+#: report:account.journal.period.print.sale.purchase:0
+#: field:account.model.line,account_id:0
+#: view:account.move.line:0
+#: field:account.move.line,account_id:0
+#: field:account.move.line.reconcile.select,account_id:0
+#: field:account.move.line.unreconcile.select,account_id:0
+#: report:account.third_party_ledger:0
+#: report:account.third_party_ledger_other:0
+#: view:analytic.entries.report:0
+#: field:analytic.entries.report,account_id:0
+#: model:ir.model,name:account.model_account_account
+#: field:report.account.sales,account_id:0
+msgid "Account"
+msgstr ""
+
+#. module: account
+#: field:account.tax,include_base_amount:0
+msgid "Included in base amount"
+msgstr ""
+
+#. module: account
+#: view:account.entries.report:0
+#: model:ir.actions.act_window,name:account.action_account_entries_report_all
+#: model:ir.ui.menu,name:account.menu_action_account_entries_report_all
+msgid "Entries Analysis"
+msgstr ""
+
+#. module: account
+#: field:account.account,level:0
+#: field:account.financial.report,level:0
+msgid "Level"
+msgstr ""
+
+#. module: account
+#: report:account.invoice:0
+#: view:account.invoice:0
+#: view:account.invoice.line:0
+#: field:account.invoice.line,invoice_line_tax_id:0
+#: view:account.move:0
+#: view:account.move.line:0
+#: model:ir.actions.act_window,name:account.action_tax_form
+#: model:ir.ui.menu,name:account.account_template_taxes
+#: model:ir.ui.menu,name:account.menu_action_tax_form
+#: model:ir.ui.menu,name:account.menu_tax_report
+#: model:ir.ui.menu,name:account.next_id_27
+msgid "Taxes"
+msgstr ""
+
+#. module: account
+#: code:addons/account/wizard/account_financial_report.py:69
+#: code:addons/account/wizard/account_report_common.py:144
+#, python-format
+msgid "Select a starting and an ending period"
+msgstr ""
+
+#. module: account
+#: model:account.financial.report,name:account.account_financial_report_profitandloss0
+msgid "Profit and Loss"
+msgstr ""
+
+#. module: account
+#: model:ir.model,name:account.model_account_account_template
+msgid "Templates for Accounts"
+msgstr ""
+
+#. module: account
+#: view:account.tax.code.template:0
+msgid "Search tax template"
+msgstr ""
+
+#. module: account
+#: view:account.move.reconcile:0
+#: model:ir.actions.act_window,name:account.action_account_reconcile_select
+#: model:ir.actions.act_window,name:account.action_view_account_move_line_reconcile
+msgid "Reconcile Entries"
+msgstr ""
+
+#. module: account
+#: model:ir.actions.report.xml,name:account.account_overdue
+#: view:res.company:0
+msgid "Overdue Payments"
+msgstr ""
+
+#. module: account
+#: report:account.third_party_ledger:0
+#: report:account.third_party_ledger_other:0
+msgid "Initial Balance"
+msgstr ""
+
+#. module: account
+#: view:account.invoice:0
+msgid "Reset to Draft"
+msgstr ""
+
+#. module: account
+#: view:wizard.multi.charts.accounts:0
+msgid "Bank Information"
+msgstr ""
+
+#. module: account
+#: view:account.aged.trial.balance:0
+#: view:account.common.report:0
+msgid "Report Options"
+msgstr ""
+
+#. module: account
+#: model:ir.model,name:account.model_account_entries_report
+msgid "Journal Items Analysis"
+msgstr ""
+
+#. module: account
+#: model:ir.ui.menu,name:account.next_id_22
+msgid "Partners"
+msgstr ""
+
+#. module: account
+#: view:account.bank.statement:0
+#: model:ir.model,name:account.model_account_bank_statement
+#: model:process.node,name:account.process_node_accountingstatemententries0
+#: model:process.node,name:account.process_node_bankstatement0
+#: model:process.node,name:account.process_node_supplierbankstatement0
+msgid "Bank Statement"
+msgstr ""
+
+#. module: account
+#: field:res.partner,property_account_receivable:0
+msgid "Account Receivable"
+msgstr ""
+
+#. module: account
+#: model:ir.actions.report.xml,name:account.account_central_journal
+msgid "Central Journal"
+msgstr ""
+
+#. module: account
+#: selection:account.balance.report,display_account:0
+#: selection:account.common.account.report,display_account:0
+#: selection:account.partner.balance,display_partner:0
+#: selection:account.report.general.ledger,display_account:0
+msgid "With balance is not equal to 0"
+msgstr ""
+
+#. module: account
+#: view:account.tax:0
+msgid "Search Taxes"
+msgstr ""
+
+#. module: account
+#: model:ir.model,name:account.model_account_analytic_cost_ledger
+msgid "Account Analytic Cost Ledger"
+msgstr ""
+
+#. module: account
+#: view:account.model:0
+msgid "Create entries"
+msgstr ""
+
+#. module: account
+#: field:account.entries.report,nbr:0
+msgid "# of Items"
+msgstr ""
+
+#. module: account
+#: field:account.automatic.reconcile,max_amount:0
+msgid "Maximum write-off amount"
+msgstr ""
+
+#. module: account
+#: view:account.invoice:0
+msgid "Compute Taxes"
+msgstr ""
+
+#. module: account
+#: field:account.chart.template,code_digits:0
+#: field:wizard.multi.charts.accounts,code_digits:0
+msgid "# of Digits"
+msgstr ""
+
+#. module: account
+#: field:account.journal,entry_posted:0
+msgid "Skip 'Draft' State for Manual Entries"
+msgstr ""
+
+#. module: account
+#: view:account.invoice.report:0
+#: field:account.invoice.report,price_total:0
+msgid "Total Without Tax"
+msgstr ""
+
+#. module: account
+#: model:ir.actions.act_window,help:account.action_move_journal_line
+msgid ""
+"A journal entry consists of several journal items, each of which is either a "
+"debit or a credit transaction. OpenERP automatically creates one journal "
+"entry per accounting document: invoice, refund, supplier payment, bank "
+"statements, etc."
+msgstr ""
+
+#. module: account
+#: view:account.entries.report:0
+msgid "# of Entries "
+msgstr ""
+
+#. module: account
+#: help:account.fiscal.position,active:0
+msgid ""
+"By unchecking the active field, you may hide a fiscal position without "
+"deleting it."
+msgstr ""
+
+#. module: account
+#: model:ir.model,name:account.model_temp_range
+msgid "A Temporary table used for Dashboard view"
+msgstr ""
+
+#. module: account
+#: model:ir.actions.act_window,name:account.action_invoice_tree4
+#: model:ir.ui.menu,name:account.menu_action_invoice_tree4
+msgid "Supplier Refunds"
+msgstr ""
+
+#. module: account
+#: selection:account.account,type:0
+#: selection:account.account.template,type:0
+#: selection:account.bank.statement,state:0
+#: selection:account.entries.report,type:0
+#: view:account.fiscalyear:0
+#: selection:account.fiscalyear,state:0
+#: selection:account.period,state:0
+msgid "Closed"
+msgstr ""
+
+#. module: account
+#: model:ir.ui.menu,name:account.menu_finance_recurrent_entries
+msgid "Recurring Entries"
+msgstr ""
+
+#. module: account
+#: model:ir.model,name:account.model_account_fiscal_position_template
+msgid "Template for Fiscal Position"
+msgstr ""
+
+#. module: account
+#: field:account.automatic.reconcile,reconciled:0
+msgid "Reconciled transactions"
+msgstr ""
+
+#. module: account
+#: field:account.journal.view,columns_id:0
+msgid "Columns"
+msgstr ""
+
+#. module: account
+#: report:account.overdue:0
+msgid "."
+msgstr ""
+
+#. module: account
+#: view:account.analytic.cost.ledger.journal.report:0
+msgid "and Journals"
+msgstr ""
+
+#. module: account
+#: field:account.journal,groups_id:0
+msgid "Groups"
+msgstr ""
+
+#. module: account
+#: field:account.invoice,amount_untaxed:0
+#: field:report.invoice.created,amount_untaxed:0
+msgid "Untaxed"
+msgstr ""
+
+#. module: account
+#: view:account.partner.reconcile.process:0
+msgid "Go to Next Partner"
+msgstr ""
+
+#. module: account
+#: view:account.bank.statement:0
+msgid "Search Bank Statements"
+msgstr ""
+
+#. module: account
+#: view:account.move.line:0
+msgid "Unposted Journal Items"
+msgstr ""
+
+#. module: account
+#: view:account.chart.template:0
+#: field:account.chart.template,property_account_payable:0
+msgid "Payable Account"
+msgstr ""
+
+#. module: account
+#: field:account.tax,account_paid_id:0
+#: field:account.tax.template,account_paid_id:0
+msgid "Refund Tax Account"
+msgstr ""
+
+#. module: account
+#: view:account.bank.statement:0
+#: field:account.bank.statement,line_ids:0
+msgid "Statement lines"
+msgstr ""
+
+#. module: account
+#: model:ir.actions.act_window,help:account.action_bank_statement_tree
+msgid ""
+"A bank statement is a summary of all financial transactions occurring over a "
+"given period of time on a deposit account, a credit card or any other type "
+"of financial account. The starting balance will be proposed automatically "
+"and the closing balance is to be found on your statement. When you are in "
+"the Payment column of a line, you can press F1 to open the reconciliation "
+"form."
+msgstr ""
+
+#. module: account
+#: report:account.analytic.account.cost_ledger:0
+msgid "Date/Code"
+msgstr ""
+
+#. module: account
+#: field:account.analytic.line,general_account_id:0
+#: view:analytic.entries.report:0
+#: field:analytic.entries.report,general_account_id:0
+msgid "General Account"
+msgstr ""
+
+#. module: account
+#: field:res.partner,debit_limit:0
+msgid "Payable Limit"
+msgstr ""
+
+#. module: account
+#: report:account.invoice:0
+#: view:account.invoice:0
+#: view:account.invoice.report:0
+#: field:account.move.line,invoice:0
+#: model:ir.model,name:account.model_account_invoice
+#: model:res.request.link,name:account.req_link_invoice
+msgid "Invoice"
+msgstr ""
+
+#. module: account
+#: model:process.node,note:account.process_node_analytic0
+#: model:process.node,note:account.process_node_analyticcost0
+msgid "Analytic costs to invoice"
+msgstr ""
+
+#. module: account
+#: view:ir.sequence:0
+msgid "Fiscal Year Sequence"
+msgstr ""
+
+#. module: account
+#: field:wizard.multi.charts.accounts,seq_journal:0
+msgid "Separated Journal Sequences"
+msgstr ""
+
+#. module: account
+#: view:account.invoice:0
+msgid "Responsible"
+msgstr ""
+
+#. module: account
+#: view:account.invoice.refund:0
+msgid ""
+"Cancel Invoice: Creates the refund invoice, validate and reconcile it to "
+"cancel the current invoice."
+msgstr ""
+
+#. module: account
+#: model:ir.ui.menu,name:account.periodical_processing_invoicing
+msgid "Invoicing"
+msgstr ""
+
+#. module: account
+#: code:addons/account/report/account_partner_balance.py:115
+#, python-format
+msgid "Unknown Partner"
+msgstr ""
+
+#. module: account
+#: field:account.tax.code,sum:0
+msgid "Year Sum"
+msgstr ""
+
+#. module: account
+#: code:addons/account/account_invoice.py:1429
+#, python-format
+msgid ""
+"You selected an Unit of Measure which is not compatible with the product."
+msgstr ""
+
+#. module: account
+#: view:account.change.currency:0
+msgid "This wizard will change the currency of the invoice"
+msgstr ""
+
+#. module: account
+#: model:ir.actions.act_window,help:account.action_account_chart
+msgid ""
+"Display your company chart of accounts per fiscal year and filter by period. "
+"Have a complete tree view of all journal items per account code by clicking "
+"on an account."
+msgstr ""
+
+#. module: account
+#: view:account.analytic.account:0
+msgid "Pending Accounts"
+msgstr ""
+
+#. module: account
+#: view:account.tax.template:0
+msgid "Tax Declaration"
+msgstr ""
+
+#. module: account
+#: help:account.journal.period,active:0
+msgid ""
+"If the active field is set to False, it will allow you to hide the journal "
+"period without removing it."
+msgstr ""
+
+#. module: account
+#: view:res.partner:0
+msgid "Supplier Debit"
+msgstr ""
+
+#. module: account
+#: model:ir.actions.act_window,name:account.act_account_partner_account_move_all
+msgid "Receivables & Payables"
+msgstr ""
+
+#. module: account
+#: model:ir.model,name:account.model_account_common_journal_report
+msgid "Account Common Journal Report"
+msgstr ""
+
+#. module: account
+#: selection:account.partner.balance,display_partner:0
+msgid "All Partners"
+msgstr ""
+
+#. module: account
+#: view:account.analytic.chart:0
+msgid "Analytic Account Charts"
+msgstr ""
+
+#. module: account
+#: view:account.analytic.line:0
+#: view:analytic.entries.report:0
+msgid "My Entries"
+msgstr ""
+
+#. module: account
+#: report:account.overdue:0
+msgid "Customer Ref:"
+msgstr ""
+
+#. module: account
+#: code:addons/account/account_cash_statement.py:292
+#, python-format
+msgid "User %s does not have rights to access %s journal !"
+msgstr ""
+
+#. module: account
+#: help:account.period,special:0
+msgid "These periods can overlap."
+msgstr ""
+
+#. module: account
+#: model:process.node,name:account.process_node_draftstatement0
+msgid "Draft statement"
+msgstr ""
+
+#. module: account
+#: view:account.tax:0
+msgid "Tax Declaration: Credit Notes"
+msgstr ""
+
+#. module: account
+#: field:account.move.line.reconcile,credit:0
+msgid "Credit amount"
+msgstr ""
+
+#. module: account
+#: code:addons/account/account.py:407
+#: code:addons/account/account.py:412
+#: code:addons/account/account.py:429
+#, python-format
+msgid "Error!"
+msgstr ""
+
+#. module: account
+#: sql_constraint:account.move.line:0
+msgid "Wrong credit or debit value in accounting entry !"
+msgstr ""
+
+#. module: account
+#: view:account.invoice.report:0
+#: model:ir.actions.act_window,name:account.action_account_invoice_report_all
+#: model:ir.ui.menu,name:account.menu_action_account_invoice_report_all
+msgid "Invoices Analysis"
+msgstr ""
+
+#. module: account
+#: model:ir.model,name:account.model_account_period_close
+msgid "period close"
+msgstr ""
+
+#. module: account
+#: view:account.installer:0
+msgid "Configure Fiscal Year"
+msgstr ""
+
+#. module: account
+#: model:ir.actions.act_window,name:account.action_project_account_analytic_line_form
+msgid "Entries By Line"
+msgstr ""
+
+#. module: account
+#: field:account.vat.declaration,based_on:0
+msgid "Based on"
+msgstr ""
+
+#. module: account
+#: field:account.invoice,move_id:0
+#: field:account.invoice,move_name:0
+msgid "Journal Entry"
+msgstr ""
+
+#. module: account
+#: view:account.tax:0
+msgid "Tax Declaration: Invoices"
+msgstr ""
+
+#. module: account
+#: field:account.cashbox.line,subtotal:0
+msgid "Sub Total"
+msgstr ""
+
+#. module: account
+#: view:account.account:0
+#: view:account.treasury.report:0
+#: model:ir.actions.act_window,name:account.action_account_treasury_report_all
+#: model:ir.model,name:account.model_account_treasury_report
+#: model:ir.ui.menu,name:account.menu_action_account_treasury_report_all
+msgid "Treasury Analysis"
+msgstr ""
+
+#. module: account
+#: constraint:res.company:0
+msgid "Error! You can not create recursive companies."
+msgstr ""
+
+#. module: account
+#: model:ir.actions.report.xml,name:account.account_journal_sale_purchase
+msgid "Sale/Purchase Journal"
+msgstr ""
+
+#. module: account
+#: view:account.analytic.account:0
+msgid "Analytic account"
+msgstr ""
+
+#. module: account
+#: code:addons/account/account_bank_statement.py:339
+#, python-format
+msgid "Please verify that an account is defined in the journal."
+msgstr ""
+
+#. module: account
+#: selection:account.entries.report,move_line_state:0
+#: selection:account.move.line,state:0
+msgid "Valid"
+msgstr ""
+
+#. module: account
+#: model:ir.actions.act_window,name:account.action_account_print_journal
+#: model:ir.model,name:account.model_account_print_journal
+msgid "Account Print Journal"
+msgstr ""
+
+#. module: account
+#: model:ir.model,name:account.model_product_category
+msgid "Product Category"
+msgstr ""
+
+#. module: account
+#: selection:account.account.type,report_type:0
+msgid "/"
+msgstr ""
+
+#. module: account
+#: help:res.company,property_reserve_and_surplus_account:0
+msgid ""
+"This account is used for transferring Profit/Loss (If It is Profit: Amount "
+"will be added, Loss : Amount will be deducted.), as calculated in Profit & "
+"Loss Report"
+msgstr ""
+
+#. module: account
+#: model:process.node,note:account.process_node_reconciliation0
+#: model:process.node,note:account.process_node_supplierreconciliation0
+msgid "Comparison between accounting and payment entries"
+msgstr ""
+
+#. module: account
+#: view:account.tax:0
+#: view:account.tax.template:0
+msgid "Tax Definition"
+msgstr ""
+
+#. module: account
+#: help:wizard.multi.charts.accounts,seq_journal:0
+msgid ""
+"Check this box if you want to use a different sequence for each created "
+"journal. Otherwise, all will use the same sequence."
+msgstr ""
+
+#. module: account
+#: help:account.partner.ledger,amount_currency:0
+#: help:account.report.general.ledger,amount_currency:0
+msgid ""
+"It adds the currency column if the currency is different then the company "
+"currency"
+msgstr ""
+
+#. module: account
+#: help:account.journal,allow_date:0
+msgid ""
+"If set to True then do not accept the entry if the entry date is not into "
+"the period dates"
+msgstr ""
+
+#. module: account
+#: code:addons/account/account_invoice.py:73
+#, python-format
+msgid "You must define an analytic journal of type '%s'!"
+msgstr ""
+
+#. module: account
+#: field:account.installer,config_logo:0
+#: field:wizard.multi.charts.accounts,config_logo:0
+msgid "Image"
+msgstr ""
+
+#. module: account
+#: constraint:account.move.line:0
+msgid ""
+"The selected account of your Journal Entry forces to provide a secondary "
+"currency. You should remove the secondary currency on the account or select "
+"a multi-currency view on the journal."
+msgstr ""
+
+#. module: account
+#: model:ir.actions.act_window,help:account.action_account_financial_report_tree
+msgid "Makes a generic system to draw financial reports easily."
+msgstr ""
+
+#. module: account
+#: view:account.invoice:0
+#: view:report.invoice.created:0
+msgid "Untaxed Amount"
+msgstr ""
+
+#. module: account
+#: help:account.tax,active:0
+msgid ""
+"If the active field is set to False, it will allow you to hide the tax "
+"without removing it."
+msgstr ""
+
+#. module: account
+#: view:account.analytic.line:0
+msgid "Analytic Journal Items related to a sale journal."
+msgstr ""
+
+#. module: account
+#: selection:account.financial.report,style_overwrite:0
+msgid "Italic Text (smaller)"
+msgstr ""
+
+#. module: account
+#: view:account.bank.statement:0
+#: view:account.invoice:0
+#: selection:account.invoice,state:0
+#: view:account.invoice.report:0
+#: selection:account.invoice.report,state:0
+#: selection:account.journal.period,state:0
+#: view:account.subscription:0
+#: selection:account.subscription,state:0
+#: selection:report.invoice.created,state:0
+msgid "Draft"
+msgstr ""
+
+#. module: account
+#: report:account.journal.period.print.sale.purchase:0
+msgid "VAT Declaration"
+msgstr ""
+
+#. module: account
+#: field:account.move.reconcile,line_partial_ids:0
+msgid "Partial Entry lines"
+msgstr ""
+
+#. module: account
+#: view:account.fiscalyear:0
+#: field:account.treasury.report,fiscalyear_id:0
+msgid "Fiscalyear"
+msgstr ""
+
+#. module: account
+#: view:account.journal.select:0
+#: view:project.account.analytic.line:0
+msgid "Open Entries"
+msgstr ""
+
+#. module: account
+#: field:account.automatic.reconcile,account_ids:0
+msgid "Accounts to Reconcile"
+msgstr ""
+
+#. module: account
+#: model:process.transition,note:account.process_transition_filestatement0
+msgid "Import of the statement in the system from an electronic file"
+msgstr ""
+
+#. module: account
+#: model:process.node,name:account.process_node_importinvoice0
+msgid "Import from invoice"
+msgstr ""
+
+#. module: account
+#: selection:account.entries.report,month:0
+#: selection:account.invoice.report,month:0
+#: selection:analytic.entries.report,month:0
+#: selection:report.account.sales,month:0
+#: selection:report.account_type.sales,month:0
+msgid "January"
+msgstr ""
+
+#. module: account
+#: view:account.journal:0
+msgid "Validations"
+msgstr ""
+
+#. module: account
+#: view:account.entries.report:0
+msgid "This F.Year"
+msgstr ""
+
+#. module: account
+#: view:account.tax.chart:0
+msgid "Account tax charts"
+msgstr ""
+
+#. module: account
+#: constraint:account.period:0
+msgid ""
+"Invalid period ! Some periods overlap or the date period is not in the scope "
+"of the fiscal year. "
+msgstr ""
+
+#. module: account
+#: code:addons/account/account_bank_statement.py:357
+#, python-format
+msgid "You have to assign an analytic journal on the '%s' journal!"
+msgstr ""
+
+#. module: account
+#: selection:account.invoice,state:0
+#: view:account.invoice.report:0
+#: selection:account.invoice.report,state:0
+#: selection:report.invoice.created,state:0
+msgid "Pro-forma"
+msgstr ""
+
+#. module: account
+#: code:addons/account/account.py:1461
+#, python-format
+msgid ""
+"There is no default default debit account defined \n"
+"on journal \"%s\""
+msgstr ""
+
+#. module: account
+#: help:account.account.template,type:0
+#: help:account.entries.report,type:0
+msgid ""
+"This type is used to differentiate types with special effects in OpenERP: "
+"view can not have entries, consolidation are accounts that can have children "
+"accounts for multi-company consolidations, payable/receivable are for "
+"partners accounts (for debit/credit computations), closed for depreciated "
+"accounts."
+msgstr ""
+
+#. module: account
+#: view:account.chart.template:0
+msgid "Search Chart of Account Templates"
+msgstr ""
+
+#. module: account
+#: code:addons/account/account_move_line.py:1277
+#, python-format
+msgid ""
+"Can not create an automatic sequence for this piece!\n"
+"Put a sequence in the journal definition for automatic numbering or create a "
+"sequence manually for this piece."
+msgstr ""
+
+#. module: account
+#: code:addons/account/account.py:787
+#, python-format
+msgid ""
+"You can not modify the company of this journal as its related record exist "
+"in journal items"
+msgstr ""
+
+#. module: account
+#: report:account.invoice:0
+msgid "Customer Code"
+msgstr ""
+
+#. module: account
+#: view:account.installer:0
+msgid ""
+"The default Chart of Accounts is matching your country selection. If no "
+"certified Chart of Accounts exists for your specified country, a generic one "
+"can be installed and will be selected by default."
+msgstr ""
+
+#. module: account
+#: view:account.account.type:0
+#: field:account.account.type,note:0
+#: view:account.analytic.account:0
+#: report:account.invoice:0
+#: field:account.invoice,name:0
+#: field:account.invoice.line,name:0
+#: field:account.invoice.refund,description:0
+#: report:account.overdue:0
+#: field:account.payment.term,note:0
+#: view:account.tax.code:0
+#: field:account.tax.code,info:0
+#: view:account.tax.code.template:0
+#: field:account.tax.code.template,info:0
+#: field:analytic.entries.report,name:0
+#: field:report.invoice.created,name:0
+msgid "Description"
+msgstr ""
+
+#. module: account
+#: code:addons/account/account.py:3119
+#, python-format
+msgid "ECNJ"
+msgstr ""
+
+#. module: account
+#: view:account.subscription:0
+#: selection:account.subscription,state:0
+msgid "Running"
+msgstr ""
+
+#. module: account
+#: view:account.chart.template:0
+#: field:product.category,property_account_income_categ:0
+#: field:product.template,property_account_income:0
+msgid "Income Account"
+msgstr ""
+
+#. module: account
+#: code:addons/account/account_invoice.py:370
+#, python-format
+msgid "There is no Accounting Journal of type Sale/Purchase defined!"
+msgstr ""
+
+#. module: account
+#: constraint:res.partner.bank:0
+msgid "The RIB and/or IBAN is not valid"
+msgstr ""
+
+#. module: account
+#: view:product.category:0
+msgid "Accounting Properties"
+msgstr ""
+
+#. module: account
+#: report:account.general.ledger_landscape:0
+#: report:account.journal.period.print:0
+#: report:account.journal.period.print.sale.purchase:0
+msgid "Entries Sorted By"
+msgstr ""
+
+#. module: account
+#: field:account.change.currency,currency_id:0
+msgid "Change to"
+msgstr ""
+
+#. module: account
+#: view:account.entries.report:0
+msgid "# of Products Qty "
+msgstr ""
+
+#. module: account
+#: model:ir.model,name:account.model_product_template
+msgid "Product Template"
+msgstr ""
+
+#. module: account
+#: report:account.account.balance:0
+#: field:account.aged.trial.balance,fiscalyear_id:0
+#: field:account.balance.report,fiscalyear_id:0
+#: report:account.central.journal:0
+#: field:account.central.journal,fiscalyear_id:0
+#: field:account.common.account.report,fiscalyear_id:0
+#: field:account.common.journal.report,fiscalyear_id:0
+#: field:account.common.partner.report,fiscalyear_id:0
+#: field:account.common.report,fiscalyear_id:0
+#: view:account.entries.report:0
+#: field:account.entries.report,fiscalyear_id:0
+#: field:account.fiscalyear,name:0
+#: report:account.general.journal:0
+#: field:account.general.journal,fiscalyear_id:0
+#: report:account.general.ledger:0
+#: report:account.general.ledger_landscape:0
+#: field:account.journal.period,fiscalyear_id:0
+#: report:account.journal.period.print:0
+#: report:account.journal.period.print.sale.purchase:0
+#: report:account.partner.balance:0
+#: field:account.partner.balance,fiscalyear_id:0
+#: field:account.partner.ledger,fiscalyear_id:0
+#: field:account.period,fiscalyear_id:0
+#: field:account.print.journal,fiscalyear_id:0
+#: field:account.report.general.ledger,fiscalyear_id:0
+#: field:account.sequence.fiscalyear,fiscalyear_id:0
+#: report:account.third_party_ledger:0
+#: report:account.third_party_ledger_other:0
+#: report:account.vat.declaration:0
+#: field:account.vat.declaration,fiscalyear_id:0
+#: field:accounting.report,fiscalyear_id:0
+#: field:accounting.report,fiscalyear_id_cmp:0
+#: model:ir.model,name:account.model_account_fiscalyear
+msgid "Fiscal Year"
+msgstr ""
+
+#. module: account
+#: help:account.aged.trial.balance,fiscalyear_id:0
+#: help:account.balance.report,fiscalyear_id:0
+#: help:account.central.journal,fiscalyear_id:0
+#: help:account.common.account.report,fiscalyear_id:0
+#: help:account.common.journal.report,fiscalyear_id:0
+#: help:account.common.partner.report,fiscalyear_id:0
+#: help:account.common.report,fiscalyear_id:0
+#: help:account.general.journal,fiscalyear_id:0
+#: help:account.partner.balance,fiscalyear_id:0
+#: help:account.partner.ledger,fiscalyear_id:0
+#: help:account.print.journal,fiscalyear_id:0
+#: help:account.report.general.ledger,fiscalyear_id:0
+#: help:account.vat.declaration,fiscalyear_id:0
+#: help:accounting.report,fiscalyear_id:0
+#: help:accounting.report,fiscalyear_id_cmp:0
+msgid "Keep empty for all open fiscal year"
+msgstr ""
+
+#. module: account
+#: field:account.invoice.report,account_line_id:0
+msgid "Account Line"
+msgstr ""
+
+#. module: account
+#: code:addons/account/account.py:1468
+#, python-format
+msgid ""
+"There is no default default credit account defined \n"
+"on journal \"%s\""
+msgstr ""
+
+#. module: account
+#: model:ir.actions.act_window,help:account.action_review_financial_journals_installer
+msgid ""
+"Setup your accounting journals. For bank accounts, it's better to use the "
+"'Setup Your Bank Accounts' tool that will automatically create the accounts "
+"and journals for you."
+msgstr ""
+
+#. module: account
+#: model:ir.model,name:account.model_account_move
+msgid "Account Entry"
+msgstr ""
+
+#. module: account
+#: constraint:res.partner:0
+msgid "Error ! You cannot create recursive associated members."
+msgstr ""
+
+#. module: account
+#: field:account.sequence.fiscalyear,sequence_main_id:0
+msgid "Main Sequence"
+msgstr ""
+
+#. module: account
+#: code:addons/account/account_bank_statement.py:402
+#, python-format
+msgid ""
+"In order to delete a bank statement, you must first cancel it to delete "
+"related journal items."
+msgstr ""
+
+#. module: account
+#: field:account.invoice,payment_term:0
+#: field:account.invoice.report,payment_term:0
+#: view:account.payment.term:0
+#: field:account.payment.term,name:0
+#: view:account.payment.term.line:0
+#: field:account.payment.term.line,payment_id:0
+#: model:ir.model,name:account.model_account_payment_term
+#: field:res.partner,property_payment_term:0
+msgid "Payment Term"
+msgstr ""
+
+#. module: account
+#: model:ir.actions.act_window,name:account.action_account_fiscal_position_form
+#: model:ir.ui.menu,name:account.menu_action_account_fiscal_position_form
+msgid "Fiscal Positions"
+msgstr ""
+
+#. module: account
+#: constraint:account.account:0
+#: constraint:account.tax.code:0
+msgid "Error ! You can not create recursive accounts."
+msgstr ""
+
+#. module: account
+#: field:account.period.close,sure:0
+msgid "Check this box"
+msgstr ""
+
+#. module: account
+#: view:account.common.report:0
+msgid "Filters"
+msgstr ""
+
+#. module: account
+#: view:account.bank.statement:0
+#: selection:account.bank.statement,state:0
+#: view:account.fiscalyear:0
+#: selection:account.fiscalyear,state:0
+#: selection:account.invoice,state:0
+#: selection:account.invoice.report,state:0
+#: view:account.open.closed.fiscalyear:0
+#: selection:account.period,state:0
+#: code:addons/account/wizard/account_move_journal.py:106
+#: selection:report.invoice.created,state:0
+#, python-format
+msgid "Open"
+msgstr ""
+
+#. module: account
+#: model:process.node,note:account.process_node_draftinvoices0
+#: model:process.node,note:account.process_node_supplierdraftinvoices0
+msgid "Draft state of an invoice"
+msgstr ""
+
+#. module: account
+#: view:account.partner.reconcile.process:0
+msgid "Partner Reconciliation"
+msgstr ""
+
+#. module: account
+#: field:account.tax,tax_code_id:0
+#: view:account.tax.code:0
+msgid "Account Tax Code"
+msgstr ""
+
+#. module: account
+#: code:addons/account/account_invoice.py:572
+#, python-format
+msgid ""
+"Can't find any account journal of %s type for this company.\n"
+"\n"
+"You can create one in the menu: \n"
+"Configuration\\Financial Accounting\\Accounts\\Journals."
+msgstr ""
+
+#. module: account
+#: model:account.payment.term,name:account.account_payment_term_advance
+#: model:account.payment.term,note:account.account_payment_term_advance
+msgid "30% Advance End 30 Days"
+msgstr ""
+
+#. module: account
+#: view:account.entries.report:0
+msgid "Unreconciled entries"
+msgstr ""
+
+#. module: account
+#: field:account.invoice.tax,base_code_id:0
+#: field:account.tax.template,base_code_id:0
+msgid "Base Code"
+msgstr ""
+
+#. module: account
+#: help:account.invoice.tax,sequence:0
+msgid "Gives the sequence order when displaying a list of invoice tax."
+msgstr ""
+
+#. module: account
+#: field:account.tax,base_sign:0
+#: field:account.tax,ref_base_sign:0
+#: field:account.tax.template,base_sign:0
+#: field:account.tax.template,ref_base_sign:0
+msgid "Base Code Sign"
+msgstr ""
+
+#. module: account
+#: view:account.vat.declaration:0
+msgid ""
+"This menu prints a VAT declaration based on invoices or payments. Select one "
+"or several periods of the fiscal year. The information required for a tax "
+"declaration is automatically generated by OpenERP from invoices (or "
+"payments, in some countries). This data is updated in real time. That’s very "
+"useful because it enables you to preview at any time the tax that you owe at "
+"the start and end of the month or quarter."
+msgstr ""
+
+#. module: account
+#: selection:account.move.line,centralisation:0
+msgid "Debit Centralisation"
+msgstr ""
+
+#. module: account
+#: view:account.invoice.confirm:0
+#: model:ir.actions.act_window,name:account.action_account_invoice_confirm
+msgid "Confirm Draft Invoices"
+msgstr ""
+
+#. module: account
+#: field:account.entries.report,day:0
+#: view:account.invoice.report:0
+#: field:account.invoice.report,day:0
+#: view:analytic.entries.report:0
+#: field:analytic.entries.report,day:0
+msgid "Day"
+msgstr ""
+
+#. module: account
+#: model:ir.actions.act_window,name:account.act_account_renew_view
+msgid "Accounts to Renew"
+msgstr ""
+
+#. module: account
+#: model:ir.model,name:account.model_account_model_line
+msgid "Account Model Entries"
+msgstr ""
+
+#. module: account
+#: code:addons/account/account.py:3117
+#, python-format
+msgid "EXJ"
+msgstr ""
+
+#. module: account
+#: field:product.template,supplier_taxes_id:0
+msgid "Supplier Taxes"
+msgstr ""
+
+#. module: account
+#: view:account.entries.report:0
+msgid "entries"
+msgstr ""
+
+#. module: account
+#: help:account.invoice,date_due:0
+#: help:account.invoice,payment_term:0
+msgid ""
+"If you use payment terms, the due date will be computed automatically at the "
+"generation of accounting entries. If you keep the payment term and the due "
+"date empty, it means direct payment. The payment term may compute several "
+"due dates, for example 50% now, 50% in one month."
+msgstr ""
+
+#. module: account
+#: view:account.analytic.cost.ledger.journal.report:0
+msgid "Select period"
+msgstr ""
+
+#. module: account
+#: model:ir.ui.menu,name:account.menu_account_pp_statements
+msgid "Statements"
+msgstr ""
+
+#. module: account
+#: report:account.analytic.account.journal:0
+msgid "Move Name"
+msgstr ""
+
+#. module: account
+#: help:res.partner,property_account_position:0
+msgid ""
+"The fiscal position will determine taxes and the accounts used for the "
+"partner."
+msgstr ""
+
+#. module: account
+#: view:account.print.journal:0
+msgid ""
+"This report gives you an overview of the situation of a specific journal"
+msgstr ""
+
+#. module: account
+#: model:ir.model,name:account.model_account_move_line_reconcile_writeoff
+msgid "Account move line reconcile (writeoff)"
+msgstr ""
+
+#. module: account
+#: model:account.account.type,name:account.account_type_tax
+#: report:account.invoice:0
+#: field:account.invoice,amount_tax:0
+#: field:account.move.line,account_tax_id:0
+msgid "Tax"
+msgstr ""
+
+#. module: account
+#: view:account.analytic.account:0
+#: field:account.bank.statement.line,analytic_account_id:0
+#: field:account.entries.report,analytic_account_id:0
+#: field:account.invoice.line,account_analytic_id:0
+#: field:account.model.line,analytic_account_id:0
+#: field:account.move.line,analytic_account_id:0
+#: field:account.move.line.reconcile.writeoff,analytic_id:0
+msgid "Analytic Account"
+msgstr ""
+
+#. module: account
+#: view:account.account:0
+#: field:account.financial.report,account_ids:0
+#: selection:account.financial.report,type:0
+#: view:account.journal:0
+#: model:ir.actions.act_window,name:account.action_account_form
+#: model:ir.ui.menu,name:account.account_account_menu
+#: model:ir.ui.menu,name:account.account_template_accounts
+#: model:ir.ui.menu,name:account.menu_action_account_form
+#: model:ir.ui.menu,name:account.menu_analytic
+msgid "Accounts"
+msgstr ""
+
+#. module: account
+#: code:addons/account/account_invoice.py:369
+#, python-format
+msgid "Configuration Error!"
+msgstr ""
+
+#. module: account
+#: field:account.invoice.report,price_average:0
+msgid "Average Price"
+msgstr ""
+
+#. module: account
+#: report:account.overdue:0
+msgid "Date:"
+msgstr ""
+
+#. module: account
+#: report:account.journal.period.print:0
+#: report:account.journal.period.print.sale.purchase:0
+msgid "Label"
+msgstr ""
+
+#. module: account
+#: view:account.tax:0
+#: view:res.partner.bank:0
+msgid "Accounting Information"
+msgstr ""
+
+#. module: account
+#: view:account.tax:0
+#: view:account.tax.template:0
+msgid "Special Computation"
+msgstr ""
+
+#. module: account
+#: view:account.move.bank.reconcile:0
+#: model:ir.actions.act_window,name:account.action_account_bank_reconcile_tree
+msgid "Bank reconciliation"
+msgstr ""
+
+#. module: account
+#: report:account.invoice:0
+msgid "Disc.(%)"
+msgstr ""
+
+#. module: account
+#: report:account.general.ledger:0
+#: report:account.general.ledger_landscape:0
+#: report:account.overdue:0
+#: report:account.third_party_ledger:0
+#: report:account.third_party_ledger_other:0
+msgid "Ref"
+msgstr ""
+
+#. module: account
+#: help:account.move.line,tax_code_id:0
+msgid "The Account can either be a base tax code or a tax code account."
+msgstr ""
+
+#. module: account
+#: sql_constraint:account.model.line:0
+msgid "Wrong credit or debit value in model, they must be positive!"
+msgstr ""
+
+#. module: account
+#: model:ir.ui.menu,name:account.menu_automatic_reconcile
+msgid "Automatic Reconciliation"
+msgstr ""
+
+#. module: account
+#: field:account.invoice,reconciled:0
+msgid "Paid/Reconciled"
+msgstr ""
+
+#. module: account
+#: field:account.tax,ref_base_code_id:0
+#: field:account.tax.template,ref_base_code_id:0
+msgid "Refund Base Code"
+msgstr ""
+
+#. module: account
+#: selection:account.tax.template,applicable_type:0
+msgid "True"
+msgstr ""
+
+#. module: account
+#: view:account.bank.statement:0
+#: view:account.common.report:0
+#: view:account.move:0
+#: view:account.move.line:0
+#: view:accounting.report:0
+msgid "Dates"
+msgstr ""
+
+#. module: account
+#: field:account.chart.template,parent_id:0
+msgid "Parent Chart Template"
+msgstr ""
+
+#. module: account
+#: field:account.tax,parent_id:0
+#: field:account.tax.template,parent_id:0
+msgid "Parent Tax Account"
+msgstr ""
+
+#. module: account
+#: code:addons/account/wizard/account_change_currency.py:59
+#, python-format
+msgid "New currency is not configured properly !"
+msgstr ""
+
+#. module: account
+#: view:account.subscription.generate:0
+msgid ""
+"Automatically generate entries based on what has been entered in the system "
+"before a specific date."
+msgstr ""
+
+#. module: account
+#: view:account.aged.trial.balance:0
+#: model:ir.actions.act_window,name:account.action_account_aged_balance_view
+#: model:ir.ui.menu,name:account.menu_aged_trial_balance
+msgid "Aged Partner Balance"
+msgstr ""
+
+#. module: account
+#: model:process.transition,name:account.process_transition_entriesreconcile0
+#: model:process.transition,name:account.process_transition_supplierentriesreconcile0
+msgid "Accounting entries"
+msgstr ""
+
+#. module: account
+#: field:account.invoice,reference_type:0
+msgid "Communication Type"
+msgstr ""
+
+#. module: account
+#: field:account.invoice.line,discount:0
+msgid "Discount (%)"
+msgstr ""
+
+#. module: account
+#: help:account.journal,entry_posted:0
+msgid ""
+"Check this box if you don't want new journal entries to pass through the "
+"'draft' state and instead goes directly to the 'posted state' without any "
+"manual validation. \n"
+"Note that journal entries that are automatically created by the system are "
+"always skipping that state."
+msgstr ""
+
+#. module: account
+#: model:ir.actions.server,name:account.ir_actions_server_action_wizard_multi_chart
+#: model:ir.ui.menu,name:account.menu_act_ir_actions_bleble
+msgid "New Company Financial Setting"
+msgstr ""
+
+#. module: account
+#: view:account.installer:0
+msgid "Configure Your Chart of Accounts"
+msgstr ""
+
+#. module: account
+#: view:account.use.model:0
+msgid "This wizard will create recurring accounting entries"
+msgstr ""
+
+#. module: account
+#: code:addons/account/account.py:1321
+#, python-format
+msgid "No sequence defined on the journal !"
+msgstr ""
+
+#. module: account
+#: code:addons/account/account.py:2268
+#: code:addons/account/account_invoice.py:688
+#: code:addons/account/account_move_line.py:173
+#, python-format
+msgid "You have to define an analytic journal on the '%s' journal!"
+msgstr ""
+
+#. module: account
+#: code:addons/account/account.py:407
+#, python-format
+msgid ""
+"You need an Opening journal with centralisation checked to set the initial "
+"balance!"
+msgstr ""
+
+#. module: account
+#: view:account.invoice.tax:0
+#: model:ir.actions.act_window,name:account.action_tax_code_list
+#: model:ir.ui.menu,name:account.menu_action_tax_code_list
+msgid "Tax Codes"
+msgstr ""
+
+#. module: account
+#: view:account.account:0
+msgid "Unrealized Gains and losses"
+msgstr ""
+
+#. module: account
+#: model:ir.ui.menu,name:account.menu_account_customer
+#: model:ir.ui.menu,name:account.menu_finance_receivables
+msgid "Customers"
+msgstr ""
+
+#. module: account
+#: report:account.analytic.account.cost_ledger:0
+#: report:account.analytic.account.journal:0
+#: report:account.analytic.account.quantity_cost_ledger:0
+msgid "Period to"
+msgstr ""
+
+#. module: account
+#: selection:account.entries.report,month:0
+#: selection:account.invoice.report,month:0
+#: selection:analytic.entries.report,month:0
+#: selection:report.account.sales,month:0
+#: selection:report.account_type.sales,month:0
+msgid "August"
+msgstr ""
+
+#. module: account
+#: model:process.transition,note:account.process_transition_paymentreconcile0
+msgid "Payment entries are the second input of the reconciliation."
+msgstr ""
+
+#. module: account
+#: selection:account.entries.report,month:0
+#: selection:account.invoice.report,month:0
+#: selection:analytic.entries.report,month:0
+#: selection:report.account.sales,month:0
+#: selection:report.account_type.sales,month:0
+msgid "October"
+msgstr ""
+
+#. module: account
+#: help:account.move.line,quantity:0
+msgid ""
+"The optional quantity expressed by this line, eg: number of product sold. "
+"The quantity is not a legal requirement but is very useful for some reports."
+msgstr ""
+
+#. module: account
+#: view:account.payment.term.line:0
+msgid "Line 2:"
+msgstr ""
+
+#. module: account
+#: field:account.journal.column,required:0
+msgid "Required"
+msgstr ""
+
+#. module: account
+#: view:account.chart.template:0
+#: field:product.category,property_account_expense_categ:0
+#: field:product.template,property_account_expense:0
+msgid "Expense Account"
+msgstr ""
+
+#. module: account
+#: help:account.invoice,period_id:0
+msgid "Keep empty to use the period of the validation(invoice) date."
+msgstr ""
+
+#. module: account
+#: help:account.bank.statement,account_id:0
+msgid ""
+"used in statement reconciliation domain, but shouldn't be used elswhere."
+msgstr ""
+
+#. module: account
+#: field:account.invoice.tax,base_amount:0
+msgid "Base Code Amount"
+msgstr ""
+
+#. module: account
+#: code:addons/account/account_invoice.py:392
+#, python-format
+msgid ""
+"You can not delete an invoice which is open or paid. We suggest you to "
+"refund it instead."
+msgstr ""
+
+#. module: account
+#: field:wizard.multi.charts.accounts,sale_tax:0
+msgid "Default Sale Tax"
+msgstr ""
+
+#. module: account
+#: code:addons/account/account_invoice.py:1013
+#, python-format
+msgid "Invoice '%s' is validated."
+msgstr ""
+
+#. module: account
+#: help:account.model.line,date_maturity:0
+msgid ""
+"The maturity date of the generated entries for this model. You can choose "
+"between the creation date or the creation date of the entries plus the "
+"partner payment terms."
+msgstr ""
+
+#. module: account
+#: model:ir.ui.menu,name:account.menu_finance_accounting
+msgid "Financial Accounting"
+msgstr ""
+
+#. module: account
+#: model:ir.ui.menu,name:account.menu_account_report_pl
+msgid "Profit And Loss"
+msgstr ""
+
+#. module: account
+#: view:account.fiscal.position:0
+#: field:account.fiscal.position,name:0
+#: field:account.fiscal.position.account,position_id:0
+#: field:account.fiscal.position.tax,position_id:0
+#: field:account.fiscal.position.tax.template,position_id:0
+#: view:account.fiscal.position.template:0
+#: field:account.invoice,fiscal_position:0
+#: field:account.invoice.report,fiscal_position:0
+#: model:ir.model,name:account.model_account_fiscal_position
+#: field:res.partner,property_account_position:0
+msgid "Fiscal Position"
+msgstr ""
+
+#. module: account
+#: code:addons/account/account_invoice.py:735
+#, python-format
+msgid ""
+"Tax base different!\n"
+"Click on compute to update the tax base."
+msgstr ""
+
+#. module: account
+#: field:account.partner.ledger,page_split:0
+msgid "One Partner Per Page"
+msgstr ""
+
+#. module: account
+#: field:account.account,child_parent_ids:0
+#: field:account.account.template,child_parent_ids:0
+msgid "Children"
+msgstr ""
+
+#. module: account
+#: selection:account.invoice,type:0
+#: selection:account.invoice.report,type:0
+#: model:process.process,name:account.process_process_invoiceprocess0
+#: selection:report.invoice.created,type:0
+msgid "Customer Invoice"
+msgstr ""
+
+#. module: account
+#: help:account.tax.template,include_base_amount:0
+msgid ""
+"Set if the amount of tax must be included in the base amount before "
+"computing the next taxes."
+msgstr ""
+
+#. module: account
+#: help:account.journal,user_id:0
+msgid "The user responsible for this journal"
+msgstr ""
+
+#. module: account
+#: view:account.period:0
+msgid "Search Period"
+msgstr ""
+
+#. module: account
+#: view:account.change.currency:0
+msgid "Invoice Currency"
+msgstr ""
+
+#. module: account
+#: field:accounting.report,account_report_id:0
+#: model:ir.ui.menu,name:account.menu_account_financial_reports_tree
+msgid "Account Reports"
+msgstr ""
+
+#. module: account
+#: field:account.payment.term,line_ids:0
+msgid "Terms"
+msgstr ""
+
+#. module: account
+#: field:account.bank.statement,total_entry_encoding:0
+msgid "Cash Transaction"
+msgstr ""
+
+#. module: account
+#: view:res.partner:0
+msgid "Bank account"
+msgstr ""
+
+#. module: account
+#: field:account.chart.template,tax_template_ids:0
+msgid "Tax Template List"
+msgstr ""
+
+#. module: account
+#: model:ir.ui.menu,name:account.menu_account_print_sale_purchase_journal
+msgid "Sale/Purchase Journals"
+msgstr ""
+
+#. module: account
+#: help:account.account,currency_mode:0
+msgid ""
+"This will select how the current currency rate for outgoing transactions is "
+"computed. In most countries the legal method is \"average\" but only a few "
+"software systems are able to manage this. So if you import from another "
+"software system you may have to use the rate at date. Incoming transactions "
+"always use the rate at date."
+msgstr ""
+
+#. module: account
+#: help:account.chart.template,code_digits:0
+#: help:wizard.multi.charts.accounts,code_digits:0
+msgid "No. of Digits to use for account code"
+msgstr ""
+
+#. module: account
+#: field:account.payment.term.line,name:0
+msgid "Line Name"
+msgstr ""
+
+#. module: account
+#: view:account.fiscalyear:0
+msgid "Search Fiscalyear"
+msgstr ""
+
+#. module: account
+#: selection:account.tax,applicable_type:0
+msgid "Always"
+msgstr ""
+
+#. module: account
+#: view:account.invoice.report:0
+#: view:analytic.entries.report:0
+msgid "Month-1"
+msgstr ""
+
+#. module: account
+#: view:account.analytic.line:0
+msgid "Total Quantity"
+msgstr ""
+
+#. module: account
+#: field:account.move.line.reconcile.writeoff,writeoff_acc_id:0
+msgid "Write-Off account"
+msgstr ""
+
+#. module: account
+#: field:account.model.line,model_id:0
+#: view:account.subscription:0
+#: field:account.subscription,model_id:0
+msgid "Model"
+msgstr ""
+
+#. module: account
+#: help:account.invoice.tax,base_code_id:0
+msgid "The account basis of the tax declaration."
+msgstr ""
+
+#. module: account
+#: selection:account.account,type:0
+#: selection:account.account.template,type:0
+#: selection:account.entries.report,type:0
+#: selection:account.financial.report,type:0
+msgid "View"
+msgstr ""
+
+#. module: account
+#: code:addons/account/account.py:3363
+#: code:addons/account/account_bank.py:90
+#, python-format
+msgid "BNK"
+msgstr ""
+
+#. module: account
+#: field:account.move.line,analytic_lines:0
+msgid "Analytic lines"
+msgstr ""
+
+#. module: account
+#: view:account.invoice:0
+msgid "Proforma Invoices"
+msgstr ""
+
+#. module: account
+#: model:process.node,name:account.process_node_electronicfile0
+msgid "Electronic File"
+msgstr ""
+
+#. module: account
+#: view:res.partner:0
+msgid "Customer Credit"
+msgstr ""
+
+#. module: account
+#: view:account.payment.term.line:0
+msgid " Day of the Month: 0"
+msgstr ""
+
+#. module: account
+#: view:account.subscription:0
+msgid "Starts on"
+msgstr ""
+
+#. module: account
+#: model:ir.model,name:account.model_account_partner_ledger
+msgid "Account Partner Ledger"
+msgstr ""
+
+#. module: account
+#: help:account.journal.column,sequence:0
+msgid "Gives the sequence order to journal column."
+msgstr ""
+
+#. module: account
+#: help:account.account,currency_id:0
+#: help:account.account.template,currency_id:0
+#: help:account.bank.accounts.wizard,currency_id:0
+msgid "Forces all moves for this account to have this secondary currency."
+msgstr ""
+
+#. module: account
+#: model:ir.actions.act_window,help:account.action_validate_account_move_line
+msgid ""
+"This wizard will validate all journal entries of a particular journal and "
+"period. Once journal entries are validated, you can not update them anymore."
+msgstr ""
+
+#. module: account
+#: model:ir.actions.act_window,name:account.action_account_chart_template_form
+#: model:ir.ui.menu,name:account.menu_action_account_chart_template_form
+msgid "Chart of Accounts Templates"
+msgstr ""
+
+#. module: account
+#: model:ir.actions.act_window,name:account.action_wizard_multi_chart
+msgid "Set Your Accounting Options"
+msgstr ""
+
+#. module: account
+#: view:report.account.sales:0
+msgid "This months' Sales by type"
+msgstr ""
+
+#. module: account
+#: model:ir.model,name:account.model_account_unreconcile_reconcile
+msgid "Account Unreconcile Reconcile"
+msgstr ""
+
+#. module: account
+#: sql_constraint:account.tax:0
+msgid "The description must be unique per company!"
+msgstr ""
+
+#. module: account
+#: help:account.account.type,close_method:0
+msgid ""
+"Set here the method that will be used to generate the end of year journal "
+"entries for all the accounts of this type.\n"
+"\n"
+" 'None' means that nothing will be done.\n"
+" 'Balance' will generally be used for cash accounts.\n"
+" 'Detail' will copy each existing journal item of the previous year, even "
+"the reconciled ones.\n"
+" 'Unreconciled' will copy only the journal items that were unreconciled on "
+"the first day of the new fiscal year."
+msgstr ""
+
+#. module: account
+#: code:addons/account/wizard/account_open_closed_fiscalyear.py:39
+#, python-format
+msgid "No End of year journal defined for the fiscal year"
+msgstr ""
+
+#. module: account
+#: view:account.tax:0
+#: view:account.tax.template:0
+msgid "Keep empty to use the expense account"
+msgstr ""
+
+#. module: account
+#: field:account.aged.trial.balance,journal_ids:0
+#: field:account.analytic.cost.ledger.journal.report,journal:0
+#: field:account.balance.report,journal_ids:0
+#: field:account.central.journal,journal_ids:0
+#: field:account.common.account.report,journal_ids:0
+#: field:account.common.journal.report,journal_ids:0
+#: field:account.common.partner.report,journal_ids:0
+#: view:account.common.report:0
+#: field:account.common.report,journal_ids:0
+#: report:account.general.journal:0
+#: field:account.general.journal,journal_ids:0
+#: report:account.general.ledger:0
+#: report:account.general.ledger_landscape:0
+#: view:account.journal.period:0
+#: report:account.partner.balance:0
+#: field:account.partner.balance,journal_ids:0
+#: field:account.partner.ledger,journal_ids:0
+#: view:account.print.journal:0
+#: field:account.print.journal,journal_ids:0
+#: field:account.report.general.ledger,journal_ids:0
+#: report:account.third_party_ledger:0
+#: report:account.third_party_ledger_other:0
+#: field:account.vat.declaration,journal_ids:0
+#: field:accounting.report,journal_ids:0
+#: model:ir.actions.act_window,name:account.action_account_journal_form
+#: model:ir.actions.act_window,name:account.action_account_journal_period_tree
+#: model:ir.ui.menu,name:account.menu_account_print_journal
+#: model:ir.ui.menu,name:account.menu_action_account_journal_form
+#: model:ir.ui.menu,name:account.menu_journals
+#: model:ir.ui.menu,name:account.menu_journals_report
+msgid "Journals"
+msgstr ""
+
+#. module: account
+#: field:account.partner.reconcile.process,to_reconcile:0
+msgid "Remaining Partners"
+msgstr ""
+
+#. module: account
+#: view:account.subscription:0
+#: field:account.subscription,lines_id:0
+msgid "Subscription Lines"
+msgstr ""
+
+#. module: account
+#: selection:account.analytic.journal,type:0
+#: view:account.journal:0
+#: selection:account.journal,type:0
+#: view:account.model:0
+#: selection:account.tax,type_tax_use:0
+#: view:account.tax.template:0
+#: selection:account.tax.template,type_tax_use:0
+msgid "Purchase"
+msgstr ""
+
+#. module: account
+#: view:account.installer:0
+#: view:wizard.multi.charts.accounts:0
+msgid "Accounting Application Configuration"
+msgstr ""
+
+#. module: account
+#: view:account.payment.term.line:0
+msgid " Value amount: 0.02"
+msgstr ""
+
+#. module: account
+#: model:ir.actions.act_window,name:account.open_board_account
+#: model:ir.ui.menu,name:account.menu_board_account
+msgid "Accounting Dashboard"
+msgstr ""
+
+#. module: account
+#: field:account.bank.statement,balance_start:0
+#: field:account.treasury.report,starting_balance:0
+msgid "Starting Balance"
+msgstr ""
+
+#. module: account
+#: code:addons/account/account_invoice.py:1332
+#, python-format
+msgid "No Partner Defined !"
+msgstr ""
+
+#. module: account
+#: model:ir.actions.act_window,name:account.action_account_period_close
+#: model:ir.actions.act_window,name:account.action_account_period_tree
+#: model:ir.ui.menu,name:account.menu_action_account_period_close_tree
+msgid "Close a Period"
+msgstr ""
+
+#. module: account
+#: field:account.financial.report,display_detail:0
+msgid "Display details"
+msgstr ""
+
+#. module: account
+#: report:account.overdue:0
+msgid "VAT:"
+msgstr ""
+
+#. module: account
+#: constraint:account.invoice:0
+msgid "Invalid BBA Structured Communication !"
+msgstr ""
+
+#. module: account
+#: help:account.analytic.line,amount_currency:0
+msgid ""
+"The amount expressed in the related account currency if not equal to the "
+"company one."
+msgstr ""
+
+#. module: account
+#: model:ir.actions.act_window,name:account.action_account_unreconcile
+#: model:ir.actions.act_window,name:account.action_account_unreconcile_reconcile
+#: model:ir.actions.act_window,name:account.action_account_unreconcile_select
+msgid "Unreconcile Entries"
+msgstr ""
+
+#. module: account
+#: field:account.tax.code,notprintable:0
+#: field:account.tax.code.template,notprintable:0
+msgid "Not Printable in Invoice"
+msgstr ""
+
+#. module: account
+#: report:account.vat.declaration:0
+#: field:account.vat.declaration,chart_tax_id:0
+msgid "Chart of Tax"
+msgstr ""
+
+#. module: account
+#: code:addons/account/account_cash_statement.py:314
+#, python-format
+msgid "The closing balance should be the same than the computed balance!"
+msgstr ""
+
+#. module: account
+#: view:account.journal:0
+msgid "Search Account Journal"
+msgstr ""
+
+#. module: account
+#: model:ir.actions.act_window,name:account.action_invoice_tree_pending_invoice
+msgid "Pending Invoice"
+msgstr ""
+
+#. module: account
+#: view:account.invoice.report:0
+#: selection:account.subscription,period_type:0
+#: view:analytic.entries.report:0
+msgid "year"
+msgstr ""
+
+#. module: account
+#: view:product.product:0
+msgid "Purchase Taxes"
+msgstr ""
+
+#. module: account
+#: view:validate.account.move.lines:0
+msgid ""
+"All selected journal entries will be validated and posted. It means you "
+"won't be able to modify their accounting fields anymore."
+msgstr ""
+
+#. module: account
+#: model:ir.actions.report.xml,name:account.account_transfers
+msgid "Transfers"
+msgstr ""
+
+#. module: account
+#: view:account.chart:0
+msgid "Account charts"
+msgstr ""
+
+#. module: account
+#: report:account.vat.declaration:0
+msgid "Tax Amount"
+msgstr ""
+
+#. module: account
+#: view:account.move:0
+msgid "Search Move"
+msgstr ""
+
+#. module: account
+#: field:account.tax.code,name:0
+#: field:account.tax.code.template,name:0
+msgid "Tax Case Name"
+msgstr ""
+
+#. module: account
+#: report:account.invoice:0
+#: model:process.node,name:account.process_node_draftinvoices0
+msgid "Draft Invoice"
+msgstr ""
+
+#. module: account
+#: code:addons/account/wizard/account_invoice_state.py:68
+#, python-format
+msgid ""
+"Selected Invoice(s) cannot be cancelled as they are already in 'Cancelled' "
+"or 'Done' state!"
+msgstr ""
+
+#. module: account
+#: view:account.invoice.line:0
+msgid "Quantity :"
+msgstr ""
+
+#. module: account
+#: field:account.aged.trial.balance,period_length:0
+msgid "Period Length (days)"
+msgstr ""
+
+#. module: account
+#: model:ir.actions.act_window,name:account.action_account_print_sale_purchase_journal
+msgid "Print Sale/Purchase Journal"
+msgstr ""
+
+#. module: account
+#: field:account.invoice.report,state:0
+msgid "Invoice State"
+msgstr ""
+
+#. module: account
+#: view:account.invoice.report:0
+#: field:account.invoice.report,categ_id:0
+msgid "Category of Product"
+msgstr ""
+
+#. module: account
+#: view:account.addtmpl.wizard:0
+#: model:ir.actions.act_window,name:account.action_account_addtmpl_wizard_form
+msgid "Create Account"
+msgstr ""
+
+#. module: account
+#: model:ir.model,name:account.model_report_account_type_sales
+msgid "Report of the Sales by Account Type"
+msgstr ""
+
+#. module: account
+#: view:account.move.line:0
+msgid "Unreconciled Journal Items"
+msgstr ""
+
+#. module: account
+#: sql_constraint:res.currency:0
+msgid "The currency code must be unique per company!"
+msgstr ""
+
+#. module: account
+#: selection:account.account.type,close_method:0
+msgid "Detail"
+msgstr ""
+
+#. module: account
+#: code:addons/account/account_invoice.py:839
+#, python-format
+msgid ""
+"Can not create the invoice !\n"
+"The related payment term is probably misconfigured as it gives a computed "
+"amount greater than the total invoiced amount. The latest line of your "
+"payment term must be of type 'balance' to avoid rounding issues."
+msgstr ""
+
+#. module: account
+#: report:account.invoice:0
+msgid "VAT :"
+msgstr ""
+
+#. module: account
+#: report:account.central.journal:0
+#: report:account.general.ledger:0
+#: field:account.installer,charts:0
+#: report:account.partner.balance:0
+#: report:account.third_party_ledger:0
+#: report:account.third_party_ledger_other:0
+#: model:ir.actions.act_window,name:account.action_account_chart
+#: model:ir.actions.act_window,name:account.action_account_tree
+#: model:ir.ui.menu,name:account.menu_action_account_tree2
+msgid "Chart of Accounts"
+msgstr ""
+
+#. module: account
+#: view:account.tax.chart:0
+msgid "(If you do not select period it will take all open periods)"
+msgstr ""
+
+#. module: account
+#: field:account.journal,centralisation:0
+msgid "Centralised counterpart"
+msgstr ""
+
+#. module: account
+#: code:addons/account/account_move_line.py:584
+#, python-format
+msgid "You can not create journal items on a \"view\" account %s %s"
+msgstr ""
+
+#. module: account
+#: model:ir.model,name:account.model_account_partner_reconcile_process
+msgid "Reconcilation Process partner by partner"
+msgstr ""
+
+#. module: account
+#: selection:account.automatic.reconcile,power:0
+msgid "2"
+msgstr ""
+
+#. module: account
+#: view:account.chart:0
+msgid "(If you do not select Fiscal year it will take all open fiscal years)"
+msgstr ""
+
+#. module: account
+#: selection:account.aged.trial.balance,filter:0
+#: report:account.analytic.account.journal:0
+#: selection:account.balance.report,filter:0
+#: field:account.bank.statement,date:0
+#: selection:account.central.journal,filter:0
+#: selection:account.common.account.report,filter:0
+#: selection:account.common.journal.report,filter:0
+#: selection:account.common.partner.report,filter:0
+#: selection:account.common.report,filter:0
+#: view:account.entries.report:0
+#: field:account.entries.report,date:0
+#: selection:account.general.journal,filter:0
+#: report:account.general.ledger:0
+#: report:account.general.ledger_landscape:0
+#: field:account.invoice.report,date:0
+#: report:account.journal.period.print:0
+#: report:account.journal.period.print.sale.purchase:0
+#: view:account.move:0
+#: field:account.move,date:0
+#: field:account.move.line.reconcile.writeoff,date_p:0
+#: report:account.overdue:0
+#: selection:account.partner.balance,filter:0
+#: selection:account.partner.ledger,filter:0
+#: selection:account.print.journal,filter:0
+#: selection:account.print.journal,sort_selection:0
+#: selection:account.report.general.ledger,filter:0
+#: selection:account.report.general.ledger,sortby:0
+#: field:account.subscription.generate,date:0
+#: field:account.subscription.line,date:0
+#: report:account.third_party_ledger:0
+#: report:account.third_party_ledger_other:0
+#: selection:account.vat.declaration,filter:0
+#: selection:accounting.report,filter:0
+#: selection:accounting.report,filter_cmp:0
+#: field:analytic.entries.report,date:0
+msgid "Date"
+msgstr ""
+
+#. module: account
+#: view:account.move:0
+msgid "Post"
+msgstr ""
+
+#. module: account
+#: view:account.unreconcile:0
+#: view:account.unreconcile.reconcile:0
+msgid "Unreconcile"
+msgstr ""
+
+#. module: account
+#: view:account.analytic.line:0
+#: field:account.bank.statement,user_id:0
+#: view:account.journal:0
+#: field:account.journal,user_id:0
+#: view:analytic.entries.report:0
+#: field:analytic.entries.report,user_id:0
+msgid "User"
+msgstr ""
+
+#. module: account
+#: view:account.chart.template:0
+msgid "Chart of Accounts Template"
+msgstr ""
+
+#. module: account
+#: code:addons/account/account.py:2280
+#, python-format
+msgid ""
+"Maturity date of entry line generated by model line '%s' of model '%s' is "
+"based on partner payment term!\n"
+"Please define partner on it!"
+msgstr ""
+
+#. module: account
+#: code:addons/account/account_move_line.py:837
+#, python-format
+msgid "Some entries are already reconciled !"
+msgstr ""
+
+#. module: account
+#: view:account.tax:0
+msgid "Account Tax"
+msgstr ""
+
+#. module: account
+#: model:ir.ui.menu,name:account.menu_finance_reporting_budgets
+msgid "Budgets"
+msgstr ""
+
+#. module: account
+#: selection:account.aged.trial.balance,filter:0
+#: selection:account.balance.report,filter:0
+#: selection:account.central.journal,filter:0
+#: selection:account.common.account.report,filter:0
+#: selection:account.common.journal.report,filter:0
+#: selection:account.common.partner.report,filter:0
+#: selection:account.common.report,filter:0
+#: selection:account.general.journal,filter:0
+#: selection:account.partner.balance,filter:0
+#: selection:account.partner.ledger,filter:0
+#: selection:account.print.journal,filter:0
+#: selection:account.report.general.ledger,filter:0
+#: selection:account.vat.declaration,filter:0
+#: selection:accounting.report,filter:0
+#: selection:accounting.report,filter_cmp:0
+msgid "No Filters"
+msgstr ""
+
+#. module: account
+#: view:account.invoice.report:0
+msgid "Pro-forma Invoices"
+msgstr ""
+
+#. module: account
+#: view:res.partner:0
+msgid "History"
+msgstr ""
+
+#. module: account
+#: help:account.tax,applicable_type:0
+#: help:account.tax.template,applicable_type:0
+msgid ""
+"If not applicable (computed through a Python code), the tax won't appear on "
+"the invoice."
+msgstr ""
+
+#. module: account
+#: view:account.tax:0
+#: view:account.tax.template:0
+msgid "Applicable Code (if type=code)"
+msgstr ""
+
+#. module: account
+#: view:account.invoice.report:0
+#: field:account.invoice.report,product_qty:0
+msgid "Qty"
+msgstr ""
+
+#. module: account
+#: field:account.invoice.report,address_contact_id:0
+msgid "Contact Address Name"
+msgstr ""
+
+#. module: account
+#: field:account.move.line,blocked:0
+msgid "Litigation"
+msgstr ""
+
+#. module: account
+#: view:account.analytic.line:0
+msgid "Search Analytic Lines"
+msgstr ""
+
+#. module: account
+#: field:res.partner,property_account_payable:0
+msgid "Account Payable"
+msgstr ""
+
+#. module: account
+#: model:process.node,name:account.process_node_supplierpaymentorder0
+msgid "Payment Order"
+msgstr ""
+
+#. module: account
+#: help:account.account.template,reconcile:0
+msgid ""
+"Check this option if you want the user to reconcile entries in this account."
+msgstr ""
+
+#. module: account
+#: model:ir.actions.report.xml,name:account.account_account_balance_landscape
+msgid "Account balance"
+msgstr ""
+
+#. module: account
+#: report:account.invoice:0
+#: field:account.invoice.line,price_unit:0
+msgid "Unit Price"
+msgstr ""
+
+#. module: account
+#: model:ir.actions.act_window,name:account.action_account_tree1
+msgid "Analytic Items"
+msgstr ""
+
+#. module: account
+#: code:addons/account/account_move_line.py:1153
+#, python-format
+msgid "Unable to change tax !"
+msgstr ""
+
+#. module: account
+#: field:analytic.entries.report,nbr:0
+msgid "#Entries"
+msgstr ""
+
+#. module: account
+#: selection:account.invoice.refund,filter_refund:0
+msgid "Create a draft Refund"
+msgstr ""
+
+#. module: account
+#: view:account.state.open:0
+msgid "Open Invoice"
+msgstr ""
+
+#. module: account
+#: field:account.invoice.tax,factor_tax:0
+msgid "Multipication factor Tax code"
+msgstr ""
+
+#. module: account
+#: view:account.fiscal.position:0
+msgid "Mapping"
+msgstr ""
+
+#. module: account
+#: code:addons/account/account_invoice.py:921
+#, python-format
+msgid ""
+"You cannot create an invoice on a centralised journal. Uncheck the "
+"centralised counterpart box in the related journal from the configuration "
+"menu."
+msgstr ""
+
+#. module: account
+#: field:account.account,name:0
+#: field:account.account.template,name:0
+#: report:account.analytic.account.inverted.balance:0
+#: field:account.bank.statement,name:0
+#: field:account.chart.template,name:0
+#: field:account.model.line,name:0
+#: field:account.move.line,name:0
+#: field:account.move.reconcile,name:0
+#: field:account.subscription,name:0
+msgid "Name"
+msgstr ""
+
+#. module: account
+#: model:ir.model,name:account.model_account_aged_trial_balance
+msgid "Account Aged Trial balance Report"
+msgstr ""
+
+#. module: account
+#: code:addons/account/account_move_line.py:591
+#, python-format
+msgid "You can not create journal items on a closed account %s %s"
+msgstr ""
+
+#. module: account
+#: field:account.move.line,date:0
+msgid "Effective date"
+msgstr ""
+
+#. module: account
+#: model:ir.actions.act_window,name:account.action_bank_tree
+#: model:ir.ui.menu,name:account.menu_action_bank_tree
+msgid "Setup your Bank Accounts"
+msgstr ""
+
+#. module: account
+#: code:addons/account/wizard/account_move_bank_reconcile.py:53
+#, python-format
+msgid "Standard Encoding"
+msgstr ""
+
+#. module: account
+#: help:account.journal,analytic_journal_id:0
+msgid "Journal for analytic entries"
+msgstr ""
+
+#. module: account
+#: constraint:account.aged.trial.balance:0
+#: constraint:account.balance.report:0
+#: constraint:account.central.journal:0
+#: constraint:account.common.account.report:0
+#: constraint:account.common.journal.report:0
+#: constraint:account.common.partner.report:0
+#: constraint:account.common.report:0
+#: constraint:account.general.journal:0
+#: constraint:account.partner.balance:0
+#: constraint:account.partner.ledger:0
+#: constraint:account.print.journal:0
+#: constraint:account.report.general.ledger:0
+#: constraint:account.vat.declaration:0
+#: constraint:accounting.report:0
+msgid ""
+"The fiscalyear, periods or chart of account chosen have to belong to the "
+"same company."
+msgstr ""
+
+#. module: account
+#: model:ir.actions.todo.category,name:account.category_accounting_configuration
+#: model:ir.ui.menu,name:account.menu_finance
+#: model:process.node,name:account.process_node_accountingentries0
+#: model:process.node,name:account.process_node_supplieraccountingentries0
+#: view:product.product:0
+#: view:product.template:0
+#: view:res.partner:0
+msgid "Accounting"
+msgstr ""
+
+#. module: account
+#: view:account.entries.report:0
+msgid "Journal Entries with period in current year"
+msgstr ""
+
+#. module: account
+#: help:account.central.journal,amount_currency:0
+#: help:account.common.journal.report,amount_currency:0
+#: help:account.general.journal,amount_currency:0
+#: help:account.print.journal,amount_currency:0
+msgid ""
+"Print Report with the currency column if the currency is different then the "
+"company currency"
+msgstr ""
+
+#. module: account
+#: help:account.account,unrealized_gain_loss:0
+msgid ""
+"Value of Loss or Gain due to changes in exchange rate when doing multi-"
+"currency transactions."
+msgstr ""
+
+#. module: account
+#: view:account.analytic.line:0
+msgid "General Accounting"
+msgstr ""
+
+#. module: account
+#: report:account.overdue:0
+msgid "Balance :"
+msgstr ""
+
+#. module: account
+#: help:account.fiscalyear.close,journal_id:0
+msgid ""
+"The best practice here is to use a journal dedicated to contain the opening "
+"entries of all fiscal years. Note that you should define it with default "
+"debit/credit accounts, of type 'situation' and with a centralized "
+"counterpart."
+msgstr ""
+
+#. module: account
+#: view:account.installer:0
+#: view:wizard.multi.charts.accounts:0
+msgid "title"
+msgstr ""
+
+#. module: account
+#: view:account.invoice:0
+#: view:account.period:0
+#: view:account.subscription:0
+msgid "Set to Draft"
+msgstr ""
+
+#. module: account
+#: model:ir.actions.act_window,name:account.action_subscription_form
+msgid "Recurring Lines"
+msgstr ""
+
+#. module: account
+#: field:account.partner.balance,display_partner:0
+msgid "Display Partners"
+msgstr ""
+
+#. module: account
+#: view:account.invoice:0
+msgid "Validate"
+msgstr ""
+
+#. module: account
+#: report:account.analytic.account.cost_ledger:0
+#: report:account.analytic.account.quantity_cost_ledger:0
+#: model:ir.actions.act_window,name:account.action_account_analytic_cost
+#: model:ir.actions.report.xml,name:account.account_analytic_account_cost_ledger
+msgid "Cost Ledger"
+msgstr ""
+
+#. module: account
+#: model:account.financial.report,name:account.account_financial_report_assets0
+msgid "Assets"
+msgstr ""
+
+#. module: account
+#: view:account.invoice.confirm:0
+msgid "Confirm Invoices"
+msgstr ""
+
+#. module: account
+#: selection:account.account,currency_mode:0
+msgid "Average Rate"
+msgstr ""
+
+#. module: account
+#: field:account.balance.report,display_account:0
+#: field:account.common.account.report,display_account:0
+#: field:account.report.general.ledger,display_account:0
+msgid "Display Accounts"
+msgstr ""
+
+#. module: account
+#: view:account.state.open:0
+msgid "(Invoice should be unreconciled if you want to open it)"
+msgstr ""
+
+#. module: account
+#: field:account.chart,period_from:0
+msgid "Start period"
+msgstr ""
+
+#. module: account
+#: field:account.tax,name:0
+#: field:account.tax.template,name:0
+#: report:account.vat.declaration:0
+msgid "Tax Name"
+msgstr ""
+
+#. module: account
+#: model:account.payment.term,name:account.account_payment_term
+#: model:account.payment.term,note:account.account_payment_term
+msgid "30 Days End of Month"
+msgstr ""
+
+#. module: account
+#: model:ir.actions.act_window,name:account.action_account_analytic_balance
+#: model:ir.actions.report.xml,name:account.account_analytic_account_balance
+msgid "Analytic Balance"
+msgstr ""
+
+#. module: account
+#: help:account.account,active:0
+msgid ""
+"If the active field is set to False, it will allow you to hide the account "
+"without removing it."
+msgstr ""
+
+#. module: account
+#: view:account.move.line:0
+msgid "Posted Journal Items"
+msgstr ""
+
+#. module: account
+#: view:account.tax.template:0
+msgid "Search Tax Templates"
+msgstr ""
+
+#. module: account
+#: model:ir.ui.menu,name:account.periodical_processing_journal_entries_validation
+msgid "Draft Entries"
+msgstr ""
+
+#. module: account
+#: view:account.payment.term.line:0
+msgid " Day of the Month= -1"
+msgstr ""
+
+#. module: account
+#: view:account.payment.term.line:0
+msgid " Number of Days: 30"
+msgstr ""
+
+#. module: account
+#: field:account.account,shortcut:0
+#: field:account.account.template,shortcut:0
+msgid "Shortcut"
+msgstr ""
+
+#. module: account
+#: constraint:account.fiscalyear:0
+msgid "Error! The start date of the fiscal year must be before his end date."
+msgstr ""
+
+#. module: account
+#: view:account.account:0
+#: field:account.account,user_type:0
+#: view:account.account.template:0
+#: field:account.account.template,user_type:0
+#: view:account.account.type:0
+#: field:account.account.type,name:0
+#: field:account.bank.accounts.wizard,account_type:0
+#: field:account.entries.report,user_type:0
+#: selection:account.financial.report,type:0
+#: model:ir.model,name:account.model_account_account_type
+#: field:report.account.receivable,type:0
+#: field:report.account_type.sales,user_type:0
+msgid "Account Type"
+msgstr ""
+
+#. module: account
+#: view:res.partner:0
+msgid "Bank Account Owner"
+msgstr ""
+
+#. module: account
+#: report:account.account.balance:0
+#: view:account.balance.report:0
+#: model:ir.actions.act_window,name:account.action_account_balance_menu
+#: model:ir.actions.report.xml,name:account.account_account_balance
+#: model:ir.ui.menu,name:account.menu_general_Balance_report
+msgid "Trial Balance"
+msgstr ""
+
+#. module: account
+#: model:ir.model,name:account.model_account_invoice_cancel
+msgid "Cancel the Selected Invoices"
+msgstr ""
+
+#. module: account
+#: help:product.category,property_account_income_categ:0
+#: help:product.template,property_account_income:0
+msgid ""
+"This account will be used to value outgoing stock for the current product "
+"category using sale price"
+msgstr ""
+
+#. module: account
+#: selection:account.automatic.reconcile,power:0
+msgid "3"
+msgstr ""
+
+#. module: account
+#: code:addons/account/account_move_line.py:97
+#, python-format
+msgid ""
+"You haven't supplied enough argument to compute the initial balance, please "
+"select a period and journal in the context."
+msgstr ""
+
+#. module: account
+#: model:process.transition,note:account.process_transition_supplieranalyticcost0
+msgid ""
+"Analytic costs (timesheets, some purchased products, ...) come from analytic "
+"accounts. These generate draft supplier invoices."
+msgstr ""
+
+#. module: account
+#: view:account.bank.statement:0
+msgid "Close CashBox"
+msgstr ""
+
+#. module: account
+#: view:account.invoice.report:0
+#: field:account.invoice.report,due_delay:0
+msgid "Avg. Due Delay"
+msgstr ""
+
+#. module: account
+#: view:account.entries.report:0
+msgid "Acc.Type"
+msgstr ""
+
+#. module: account
+#: field:account.entries.report,month:0
+#: view:account.invoice.report:0
+#: field:account.invoice.report,month:0
+#: view:analytic.entries.report:0
+#: field:analytic.entries.report,month:0
+#: field:report.account.sales,month:0
+#: field:report.account_type.sales,month:0
+msgid "Month"
+msgstr ""
+
+#. module: account
+#: code:addons/account/account_move_line.py:1216
+#, python-format
+msgid ""
+"You can not do this modification on a confirmed entry! You can just change "
+"some non legal fields or you must unconfirm the journal entry first! \n"
+"%s"
+msgstr ""
+
+#. module: account
+#: field:res.company,paypal_account:0
+msgid "Paypal Account"
+msgstr ""
+
+#. module: account
+#: field:account.invoice.report,uom_name:0
+msgid "Reference UoM"
+msgstr ""
+
+#. module: account
+#: field:account.account,note:0
+#: field:account.account.template,note:0
+msgid "Note"
+msgstr ""
+
+#. module: account
+#: selection:account.financial.report,sign:0
+msgid "Reverse balance sign"
+msgstr ""
+
+#. module: account
+#: view:account.analytic.account:0
+msgid "Overdue Account"
+msgstr ""
+
+#. module: account
+#: selection:account.account.type,report_type:0
+#: code:addons/account/account.py:184
+#, python-format
+msgid "Balance Sheet (Liability account)"
+msgstr ""
+
+#. module: account
+#: help:account.invoice,date_invoice:0
+msgid "Keep empty to use the current date"
+msgstr ""
+
+#. module: account
+#: field:account.invoice,tax_line:0
+msgid "Tax Lines"
+msgstr ""
+
+#. module: account
+#: field:account.tax,base_code_id:0
+msgid "Account Base Code"
+msgstr ""
+
+#. module: account
+#: code:addons/account/account_analytic_line.py:93
+#, python-format
+msgid "There is no expense account defined for this product: \"%s\" (id:%d)"
+msgstr ""
+
+#. module: account
+#: view:res.partner:0
+msgid "Customer Accounting Properties"
+msgstr ""
+
+#. module: account
+#: help:res.company,paypal_account:0
+msgid "Paypal username (usually email) for receiving online payments."
+msgstr ""
+
+#. module: account
+#: selection:account.aged.trial.balance,target_move:0
+#: selection:account.balance.report,target_move:0
+#: selection:account.central.journal,target_move:0
+#: selection:account.chart,target_move:0
+#: selection:account.common.account.report,target_move:0
+#: selection:account.common.journal.report,target_move:0
+#: selection:account.common.partner.report,target_move:0
+#: selection:account.common.report,target_move:0
+#: selection:account.general.journal,target_move:0
+#: selection:account.move.journal,target_move:0
+#: selection:account.partner.balance,target_move:0
+#: selection:account.partner.ledger,target_move:0
+#: selection:account.print.journal,target_move:0
+#: selection:account.report.general.ledger,target_move:0
+#: selection:account.tax.chart,target_move:0
+#: selection:account.vat.declaration,target_move:0
+#: selection:accounting.report,target_move:0
+#: code:addons/account/report/common_report_header.py:68
+#, python-format
+msgid "All Posted Entries"
+msgstr ""
+
+#. module: account
+#: code:addons/account/account_bank_statement.py:367
+#, python-format
+msgid "Statement %s is confirmed, journal items are created."
+msgstr ""
+
+#. module: account
+#: field:report.aged.receivable,name:0
+msgid "Month Range"
+msgstr ""
+
+#. module: account
+#: help:account.analytic.balance,empty_acc:0
+msgid "Check if you want to display Accounts with 0 balance too."
+msgstr ""
+
+#. module: account
+#: view:account.tax:0
+msgid "Compute Code"
+msgstr ""
+
+#. module: account
+#: view:account.account.template:0
+msgid "Default taxes"
+msgstr ""
+
+#. module: account
+#: code:addons/account/wizard/account_fiscalyear_close.py:41
+#, python-format
+msgid "End of Fiscal Year Entry"
+msgstr ""
+
+#. module: account
+#: model:ir.ui.menu,name:account.menu_finance_periodical_processing
+msgid "Periodical Processing"
+msgstr ""
+
+#. module: account
+#: constraint:account.analytic.line:0
+msgid "You can not create analytic line on view account."
+msgstr ""
+
+#. module: account
+#: help:account.move.line,state:0
+msgid ""
+"When new move line is created the state will be 'Draft'.\n"
+"* When all the payments are done it will be in 'Valid' state."
+msgstr ""
+
+#. module: account
+#: field:account.journal,view_id:0
+msgid "Display Mode"
+msgstr ""
+
+#. module: account
+#: model:process.node,note:account.process_node_importinvoice0
+msgid "Statement from invoice or payment"
+msgstr ""
+
+#. module: account
+#: model:ir.model,name:account.model_account_chart
+msgid "Account chart"
+msgstr ""
+
+#. module: account
+#: selection:account.financial.report,style_overwrite:0
+msgid "Main Title 1 (bold, underlined)"
+msgstr ""
+
+#. module: account
+#: report:account.analytic.account.balance:0
+#: report:account.central.journal:0
+msgid "Account Name"
+msgstr ""
+
+#. module: account
+#: help:account.fiscalyear.close,report_name:0
+msgid "Give name of the new entries"
+msgstr ""
+
+#. module: account
+#: model:ir.model,name:account.model_account_invoice_report
+msgid "Invoices Statistics"
+msgstr ""
+
+#. module: account
+#: field:account.account,exchange_rate:0
+msgid "Exchange Rate"
+msgstr ""
+
+#. module: account
+#: model:process.transition,note:account.process_transition_paymentorderreconcilation0
+msgid "Bank statements are entered in the system."
+msgstr ""
+
+#. module: account
+#: code:addons/account/wizard/account_reconcile.py:133
+#, python-format
+msgid "Reconcile Writeoff"
+msgstr ""
+
+#. module: account
+#: view:report.account.receivable:0
+msgid "Accounts by Type"
+msgstr ""
+
+#. module: account
+#: view:account.bank.statement:0
+#: field:account.bank.statement,balance_end_cash:0
+msgid "Closing Balance"
+msgstr ""
+
+#. module: account
+#: code:addons/account/report/common_report_header.py:92
+#, python-format
+msgid "Not implemented"
+msgstr ""
+
+#. module: account
+#: field:account.chart.template,visible:0
+msgid "Can be Visible?"
+msgstr ""
+
+#. module: account
+#: model:ir.model,name:account.model_account_journal_select
+msgid "Account Journal Select"
+msgstr ""
+
+#. module: account
+#: view:account.tax.template:0
+msgid "Credit Notes"
+msgstr ""
+
+#. module: account
+#: sql_constraint:account.period:0
+msgid "The name of the period must be unique per company!"
+msgstr ""
+
+#. module: account
+#: view:wizard.multi.charts.accounts:0
+msgid "res_config_contents"
+msgstr ""
+
+#. module: account
+#: view:account.unreconcile:0
+msgid "Unreconciliate Transactions"
+msgstr ""
+
+#. module: account
+#: help:account.chart.template,visible:0
+msgid ""
+"Set this to False if you don't want this template to be used actively in the "
+"wizard that generate Chart of Accounts from templates, this is useful when "
+"you want to generate accounts of this template only when loading its child "
+"template."
+msgstr ""
+
+#. module: account
+#: view:account.use.model:0
+msgid "Create Entries From Models"
+msgstr ""
+
+#. module: account
+#: field:account.account,reconcile:0
+#: field:account.account.template,reconcile:0
+msgid "Allow Reconciliation"
+msgstr ""
+
+#. module: account
+#: code:addons/account/account.py:1077
+#, python-format
+msgid ""
+"You can not modify company of this period as some journal items exists."
+msgstr ""
+
+#. module: account
+#: view:account.analytic.account:0
+msgid "Analytic Account Statistics"
+msgstr ""
+
+#. module: account
+#: report:account.vat.declaration:0
+msgid "Based On"
+msgstr ""
+
+#. module: account
+#: field:account.tax,price_include:0
+#: field:account.tax.template,price_include:0
+msgid "Tax Included in Price"
+msgstr ""
+
+#. module: account
+#: model:ir.model,name:account.model_account_analytic_cost_ledger_journal_report
+msgid "Account Analytic Cost Ledger For Journal Report"
+msgstr ""
+
+#. module: account
+#: model:ir.actions.act_window,name:account.action_model_form
+#: model:ir.ui.menu,name:account.menu_action_model_form
+msgid "Recurring Models"
+msgstr ""
+
+#. module: account
+#: code:addons/account/account_move_line.py:1251
+#, python-format
+msgid "Encoding error"
+msgstr ""
+
+#. module: account
+#: selection:account.automatic.reconcile,power:0
+msgid "4"
+msgstr ""
+
+#. module: account
+#: view:account.invoice:0
+msgid "Change"
+msgstr ""
+
+#. module: account
+#: selection:account.journal,type:0
+msgid "Bank and Cheques"
+msgstr ""
+
+#. module: account
+#: field:account.journal,type_control_ids:0
+msgid "Type Controls"
+msgstr ""
+
+#. module: account
+#: help:account.journal,default_credit_account_id:0
+msgid "It acts as a default account for credit amount"
+msgstr ""
+
+#. module: account
+#: model:ir.actions.act_window,name:account.action_validate_account_move_line
+#: model:ir.ui.menu,name:account.menu_validate_account_moves
+#: view:validate.account.move:0
+#: view:validate.account.move.lines:0
+msgid "Post Journal Entries"
+msgstr ""
+
+#. module: account
+#: selection:account.invoice,state:0
+#: selection:account.invoice.report,state:0
+#: selection:report.invoice.created,state:0
+msgid "Cancelled"
+msgstr ""
+
+#. module: account
+#: help:account.bank.statement,balance_end_cash:0
+msgid "Closing balance based on cashBox"
+msgstr ""
+
+#. module: account
+#: view:account.payment.term.line:0
+msgid "Example"
+msgstr ""
+
+#. module: account
+#: code:addons/account/account_invoice.py:828
+#, python-format
+msgid ""
+"Please verify the price of the invoice !\n"
+"The real total does not match the computed total."
+msgstr ""
+
+#. module: account
+#: view:account.tax:0
+#: view:account.tax.template:0
+msgid "Keep empty to use the income account"
+msgstr ""
+
+#. module: account
+#: code:addons/account/account.py:3299
+#, python-format
+msgid "Purchase Tax %.2f%%"
+msgstr ""
+
+#. module: account
+#: view:account.subscription.generate:0
+#: model:ir.actions.act_window,name:account.action_account_subscription_generate
+#: model:ir.ui.menu,name:account.menu_generate_subscription
+msgid "Generate Entries"
+msgstr ""
+
+#. module: account
+#: help:account.vat.declaration,chart_tax_id:0
+msgid "Select Charts of Taxes"
+msgstr ""
+
+#. module: account
+#: view:account.fiscal.position:0
+#: field:account.fiscal.position,account_ids:0
+#: field:account.fiscal.position.template,account_ids:0
+msgid "Account Mapping"
+msgstr ""
+
+#. module: account
+#: selection:account.bank.statement.line,type:0
+#: view:account.invoice:0
+#: view:account.invoice.report:0
+#: code:addons/account/account_invoice.py:337
+#, python-format
+msgid "Customer"
+msgstr ""
+
+#. module: account
+#: view:account.bank.statement:0
+msgid "Confirmed"
+msgstr ""
+
+#. module: account
+#: report:account.invoice:0
+msgid "Cancelled Invoice"
+msgstr ""
+
+#. module: account
+#: code:addons/account/account.py:1567
+#, python-format
+msgid ""
+"Couldn't create move with currency different from the secondary currency of "
+"the account \"%s - %s\". Clear the secondary currency field of the account "
+"definition if you want to accept all currencies."
+msgstr ""
+
+#. module: account
+#: selection:account.bank.statement,state:0
+msgid "New"
+msgstr ""
+
+#. module: account
+#: field:account.invoice.refund,date:0
+msgid "Operation date"
+msgstr ""
+
+#. module: account
+#: view:account.unreconcile.reconcile:0
+msgid "Unreconciliation Transactions"
+msgstr ""
+
+#. module: account
+#: field:account.tax,ref_tax_code_id:0
+#: field:account.tax.template,ref_tax_code_id:0
+msgid "Refund Tax Code"
+msgstr ""
+
+#. module: account
+#: view:validate.account.move:0
+msgid ""
+"All draft account entries in this journal and period will be validated. It "
+"means you won't be able to modify their accounting fields anymore."
+msgstr ""
+
+#. module: account
+#: model:ir.ui.menu,name:account.menu_finance_configuration
+msgid "Configuration"
+msgstr ""
+
+#. module: account
+#: field:account.automatic.reconcile,date1:0
+msgid "Starting Date"
+msgstr ""
+
+#. module: account
+#: field:account.chart.template,property_account_income:0
+msgid "Income Account on Product Template"
+msgstr ""
+
+#. module: account
+#: code:addons/account/account.py:3120
+#, python-format
+msgid "MISC"
+msgstr ""
+
+#. module: account
+#: model:email.template,subject:account.email_template_edi_invoice
+msgid "${object.company_id.name} Invoice (Ref ${object.number or 'n/a' })"
+msgstr ""
+
+#. module: account
+#: help:res.partner,last_reconciliation_date:0
+msgid ""
+"Date on which the partner accounting entries were reconciled last time"
+msgstr ""
+
+#. module: account
+#: field:account.fiscalyear.close,fy2_id:0
+msgid "New Fiscal Year"
+msgstr ""
+
+#. module: account
+#: view:account.invoice:0
+#: view:account.tax.template:0
+#: selection:account.vat.declaration,based_on:0
+#: model:ir.actions.act_window,name:account.act_res_partner_2_account_invoice_opened
+#: model:ir.actions.act_window,name:account.action_invoice_tree
+#: model:ir.actions.report.xml,name:account.account_invoices
+#: view:report.invoice.created:0
+#: field:res.partner,invoice_ids:0
+msgid "Invoices"
+msgstr ""
+
+#. module: account
+#: view:account.invoice:0
+msgid "My invoices"
+msgstr ""
+
+#. module: account
+#: selection:account.bank.accounts.wizard,account_type:0
+msgid "Check"
+msgstr ""
+
+#. module: account
+#: view:account.invoice:0
+#: field:account.invoice,user_id:0
+#: view:account.invoice.report:0
+#: field:account.invoice.report,user_id:0
+msgid "Salesman"
+msgstr ""
+
+#. module: account
+#: view:account.invoice.report:0
+msgid "Invoiced"
+msgstr ""
+
+#. module: account
+#: view:account.move:0
+msgid "Posted Journal Entries"
+msgstr ""
+
+#. module: account
+#: view:account.use.model:0
+msgid "Use Model"
+msgstr ""
+
+#. module: account
+#: help:account.invoice,partner_bank_id:0
+msgid ""
+"Bank Account Number to which the invoice will be paid. A Company bank "
+"account if this is a Customer Invoice or Supplier Refund, otherwise a "
+"Partner bank account number."
+msgstr ""
+
+#. module: account
+#: view:account.state.open:0
+msgid "No"
+msgstr ""
+
+#. module: account
+#: help:account.invoice.tax,tax_code_id:0
+msgid "The tax basis of the tax declaration."
+msgstr ""
+
+#. module: account
+#: view:account.addtmpl.wizard:0
+msgid "Add"
+msgstr ""
+
+#. module: account
+#: selection:account.invoice,state:0
+#: report:account.overdue:0
+msgid "Paid"
+msgstr ""
+
+#. module: account
+#: view:account.period.close:0
+msgid "Are you sure?"
+msgstr ""
+
+#. module: account
+#: help:account.move.line,statement_id:0
+msgid "The bank statement used for bank reconciliation"
+msgstr ""
+
+#. module: account
+#: model:process.transition,note:account.process_transition_suppliercustomerinvoice0
+msgid "Draft invoices are validated. "
+msgstr ""
+
+#. module: account
+#: constraint:account.account.template:0
+msgid ""
+"Configuration Error!\n"
+"You can not define children to an account with internal type different of "
+"\"View\"! "
+msgstr ""
+
+#. module: account
+#: code:addons/account/account.py:923
+#, python-format
+msgid "Opening Period"
+msgstr ""
+
+#. module: account
+#: view:account.move:0
+msgid "Journal Entries to Review"
+msgstr ""
+
+#. module: account
+#: view:account.bank.statement:0
+#: view:account.subscription:0
+msgid "Compute"
+msgstr ""
+
+#. module: account
+#: field:account.tax,type_tax_use:0
+msgid "Tax Application"
+msgstr ""
+
+#. module: account
+#: view:account.move:0
+#: view:account.move.line:0
+#: code:addons/account/wizard/account_move_journal.py:153
+#: model:ir.actions.act_window,name:account.act_account_journal_2_account_move_line
+#: model:ir.actions.act_window,name:account.act_account_move_to_account_move_line_open
+#: model:ir.actions.act_window,name:account.act_account_partner_account_move
+#: model:ir.actions.act_window,name:account.action_account_manual_reconcile
+#: model:ir.actions.act_window,name:account.action_account_moves_all_a
+#: model:ir.actions.act_window,name:account.action_account_moves_bank
+#: model:ir.actions.act_window,name:account.action_account_moves_purchase
+#: model:ir.actions.act_window,name:account.action_account_moves_sale
+#: model:ir.actions.act_window,name:account.action_move_line_search
+#: model:ir.actions.act_window,name:account.action_move_line_select
+#: model:ir.actions.act_window,name:account.action_move_line_tree1
+#: model:ir.actions.act_window,name:account.action_tax_code_line_open
+#: model:ir.model,name:account.model_account_move_line
+#: model:ir.ui.menu,name:account.menu_action_account_moves_all
+#: model:ir.ui.menu,name:account.menu_action_account_moves_bank
+#: model:ir.ui.menu,name:account.menu_eaction_account_moves_purchase
+#: model:ir.ui.menu,name:account.menu_eaction_account_moves_sale
+#, python-format
+msgid "Journal Items"
+msgstr ""
+
+#. module: account
+#: code:addons/account/account.py:1088
+#: code:addons/account/account.py:1090
+#: code:addons/account/account.py:1321
+#: code:addons/account/account.py:1563
+#: code:addons/account/account.py:1567
+#: code:addons/account/account.py:3368
+#: code:addons/account/account_move_line.py:807
+#: code:addons/account/account_move_line.py:830
+#: code:addons/account/account_move_line.py:832
+#: code:addons/account/account_move_line.py:835
+#: code:addons/account/account_move_line.py:837
+#: code:addons/account/report/common_report_header.py:92
+#: code:addons/account/wizard/account_change_currency.py:38
+#: code:addons/account/wizard/account_change_currency.py:59
+#: code:addons/account/wizard/account_change_currency.py:64
+#: code:addons/account/wizard/account_change_currency.py:70
+#: code:addons/account/wizard/account_financial_report.py:69
+#: code:addons/account/wizard/account_move_bank_reconcile.py:49
+#: code:addons/account/wizard/account_report_common.py:144
+#: code:addons/account/wizard/account_report_common.py:150
+#, python-format
+msgid "Error"
+msgstr ""
+
+#. module: account
+#: field:account.analytic.balance,date2:0
+#: field:account.analytic.cost.ledger,date2:0
+#: field:account.analytic.cost.ledger.journal.report,date2:0
+#: field:account.analytic.inverted.balance,date2:0
+#: field:account.analytic.journal.report,date2:0
+msgid "End of period"
+msgstr ""
+
+#. module: account
+#: view:res.partner:0
+msgid "Bank Details"
+msgstr ""
+
+#. module: account
+#: model:ir.actions.act_window,help:account.action_account_partner_balance
+msgid ""
+"This report is analysis by partner. It is a PDF report containing one line "
+"per partner representing the cumulative credit balance."
+msgstr ""
+
+#. module: account
+#: model:ir.actions.act_window,help:account.action_account_analytic_journal_tree
+msgid ""
+"To print an analytics (or costs) journal for a given period. The report give "
+"code, move name, account number, general amount and analytic amount."
+msgstr ""
+
+#. module: account
+#: sql_constraint:account.invoice:0
+msgid "Invoice Number must be unique per Company!"
+msgstr ""
+
+#. module: account
+#: model:ir.actions.act_window,name:account.action_account_receivable_graph
+msgid "Balance by Type of Account"
+msgstr ""
+
+#. module: account
+#: view:account.fiscalyear.close:0
+msgid "Generate Fiscal Year Opening Entries"
+msgstr ""
+
+#. module: account
+#: model:res.groups,name:account.group_account_user
+msgid "Accountant"
+msgstr ""
+
+#. module: account
+#: model:ir.actions.act_window,help:account.action_account_treasury_report_all
+msgid ""
+"From this view, have an analysis of your treasury. It sums the balance of "
+"every accounting entries made on liquidity accounts per period."
+msgstr ""
+
+#. module: account
+#: field:account.journal,group_invoice_lines:0
+msgid "Group Invoice Lines"
+msgstr ""
+
+#. module: account
+#: view:account.invoice.cancel:0
+#: view:account.invoice.confirm:0
+msgid "Close"
+msgstr ""
+
+#. module: account
+#: field:account.bank.statement.line,move_ids:0
+msgid "Moves"
+msgstr ""
+
+#. module: account
+#: view:report.hr.timesheet.invoice.journal:0
+msgid "Sale journal in this month"
+msgstr ""
+
+#. module: account
+#: model:ir.actions.act_window,name:account.action_account_vat_declaration
+#: model:ir.model,name:account.model_account_vat_declaration
+msgid "Account Vat Declaration"
+msgstr ""
+
+#. module: account
+#: report:account.invoice:0
+msgid "Price"
+msgstr ""
+
+#. module: account
+#: view:account.period:0
+msgid "To Close"
+msgstr ""
+
+#. module: account
+#: field:account.treasury.report,date:0
+msgid "Beginning of Period Date"
+msgstr ""
+
+#. module: account
+#: code:addons/account/account.py:1351
+#, python-format
+msgid ""
+"You can not modify a posted entry of this journal !\n"
+"You should set the journal to allow cancelling entries if you want to do "
+"that."
+msgstr ""
+
+#. module: account
+#: model:ir.ui.menu,name:account.account_template_folder
+msgid "Templates"
+msgstr ""
+
+#. module: account
+#: field:account.invoice.tax,name:0
+msgid "Tax Description"
+msgstr ""
+
+#. module: account
+#: field:account.tax,child_ids:0
+msgid "Child Tax Accounts"
+msgstr ""
+
+#. module: account
+#: code:addons/account/account.py:1090
+#, python-format
+msgid "Start period should be smaller then End period"
+msgstr ""
+
+#. module: account
+#: help:account.tax,price_include:0
+#: help:account.tax.template,price_include:0
+msgid ""
+"Check this if the price you use on the product and invoices includes this "
+"tax."
+msgstr ""
+
+#. module: account
+#: report:account.analytic.account.balance:0
+msgid "Analytic Balance -"
+msgstr ""
+
+#. module: account
+#: report:account.account.balance:0
+#: field:account.aged.trial.balance,target_move:0
+#: field:account.balance.report,target_move:0
+#: report:account.central.journal:0
+#: field:account.central.journal,target_move:0
+#: field:account.chart,target_move:0
+#: field:account.common.account.report,target_move:0
+#: field:account.common.journal.report,target_move:0
+#: field:account.common.partner.report,target_move:0
+#: field:account.common.report,target_move:0
+#: report:account.general.journal:0
+#: field:account.general.journal,target_move:0
+#: report:account.general.ledger:0
+#: report:account.general.ledger_landscape:0
+#: report:account.journal.period.print:0
+#: report:account.journal.period.print.sale.purchase:0
+#: field:account.move.journal,target_move:0
+#: report:account.partner.balance:0
+#: field:account.partner.balance,target_move:0
+#: field:account.partner.ledger,target_move:0
+#: field:account.print.journal,target_move:0
+#: field:account.report.general.ledger,target_move:0
+#: field:account.tax.chart,target_move:0
+#: report:account.third_party_ledger:0
+#: report:account.third_party_ledger_other:0
+#: field:account.vat.declaration,target_move:0
+#: field:accounting.report,target_move:0
+msgid "Target Moves"
+msgstr ""
+
+#. module: account
+#: model:account.payment.term,name:account.account_payment_term_net
+#: model:account.payment.term,note:account.account_payment_term_net
+msgid "30 Net Days"
+msgstr ""
+
+#. module: account
+#: field:account.subscription,period_type:0
+msgid "Period Type"
+msgstr ""
+
+#. module: account
+#: view:account.invoice:0
+#: field:account.invoice,payment_ids:0
+#: selection:account.vat.declaration,based_on:0
+msgid "Payments"
+msgstr ""
+
+#. module: account
+#: view:account.tax:0
+msgid "Reverse Compute Code"
+msgstr ""
+
+#. module: account
+#: field:account.subscription.line,move_id:0
+msgid "Entry"
+msgstr ""
+
+#. module: account
+#: field:account.tax,python_compute_inv:0
+#: field:account.tax.template,python_compute_inv:0
+msgid "Python Code (reverse)"
+msgstr ""
+
+#. module: account
+#: model:ir.actions.act_window,name:account.action_payment_term_form
+#: model:ir.ui.menu,name:account.menu_action_payment_term_form
+msgid "Payment Terms"
+msgstr ""
+
+#. module: account
+#: help:account.chart.template,complete_tax_set:0
+msgid ""
+"This boolean helps you to choose if you want to propose to the user to "
+"encode the sale and purchase rates or choose from list of taxes. This last "
+"choice assumes that the set of tax defined on this template is complete"
+msgstr ""
+
+#. module: account
+#: view:account.financial.report:0
+#: field:account.financial.report,children_ids:0
+#: model:ir.model,name:account.model_account_financial_report
+msgid "Account Report"
+msgstr ""
+
+#. module: account
+#: field:account.journal.column,name:0
+msgid "Column Name"
+msgstr ""
+
+#. module: account
+#: view:account.general.journal:0
+msgid ""
+"This report gives you an overview of the situation of your general journals"
+msgstr ""
+
+#. module: account
+#: field:account.entries.report,year:0
+#: view:account.invoice.report:0
+#: field:account.invoice.report,year:0
+#: view:analytic.entries.report:0
+#: field:analytic.entries.report,year:0
+#: field:report.account.sales,name:0
+#: field:report.account_type.sales,name:0
+msgid "Year"
+msgstr ""
+
+#. module: account
+#: field:account.bank.statement,starting_details_ids:0
+msgid "Opening Cashbox"
+msgstr ""
+
+#. module: account
+#: view:account.payment.term.line:0
+msgid "Line 1:"
+msgstr ""
+
+#. module: account
+#: code:addons/account/account.py:1307
+#, python-format
+msgid "Integrity Error !"
+msgstr ""
+
+#. module: account
+#: field:account.tax.template,description:0
+msgid "Internal Name"
+msgstr ""
+
+#. module: account
+#: selection:account.subscription,period_type:0
+msgid "month"
+msgstr ""
+
+#. module: account
+#: field:account.partner.reconcile.process,next_partner_id:0
+msgid "Next Partner to Reconcile"
+msgstr ""
+
+#. module: account
+#: field:account.invoice.tax,account_id:0
+#: field:account.move.line,tax_code_id:0
+msgid "Tax Account"
+msgstr ""
+
+#. module: account
+#: view:account.automatic.reconcile:0
+msgid "Reconciliation Result"
+msgstr ""
+
+#. module: account
+#: model:account.financial.report,name:account.account_financial_report_balancesheet0
+#: model:ir.ui.menu,name:account.menu_account_report_bs
+msgid "Balance Sheet"
+msgstr ""
+
+#. module: account
+#: view:account.general.journal:0
+#: model:ir.ui.menu,name:account.menu_account_general_journal
+msgid "General Journals"
+msgstr ""
+
+#. module: account
+#: field:account.journal,allow_date:0
+msgid "Check Date in Period"
+msgstr ""
+
+#. module: account
+#: model:ir.ui.menu,name:account.final_accounting_reports
+msgid "Accounting Reports"
+msgstr ""
+
+#. module: account
+#: field:account.move,line_id:0
+#: view:analytic.entries.report:0
+#: model:ir.actions.act_window,name:account.act_account_acount_move_line_open
+#: model:ir.actions.act_window,name:account.action_move_line_form
+msgid "Entries"
+msgstr ""
+
+#. module: account
+#: view:account.entries.report:0
+msgid "This Period"
+msgstr ""
+
+#. module: account
+#: field:account.analytic.line,product_uom_id:0
+#: field:account.move.line,product_uom_id:0
+msgid "UoM"
+msgstr ""
+
+#. module: account
+#: code:addons/account/wizard/account_invoice_refund.py:146
+#, python-format
+msgid "No Period found on Invoice!"
+msgstr ""
+
+#. module: account
+#: view:account.tax.template:0
+msgid "Compute Code (if type=code)"
+msgstr ""
+
+#. module: account
+#: selection:account.analytic.journal,type:0
+#: view:account.journal:0
+#: selection:account.journal,type:0
+#: view:account.model:0
+#: selection:account.tax,type_tax_use:0
+#: view:account.tax.template:0
+#: selection:account.tax.template,type_tax_use:0
+msgid "Sale"
+msgstr ""
+
+#. module: account
+#: view:account.financial.report:0
+msgid "Report"
+msgstr ""
+
+#. module: account
+#: view:account.analytic.line:0
+#: field:account.bank.statement.line,amount:0
+#: report:account.invoice:0
+#: field:account.invoice.tax,amount:0
+#: view:account.move:0
+#: field:account.move,amount:0
+#: view:account.move.line:0
+#: field:account.tax,amount:0
+#: field:account.tax.template,amount:0
+#: view:analytic.entries.report:0
+#: field:analytic.entries.report,amount:0
+msgid "Amount"
+msgstr ""
+
+#. module: account
+#: model:process.transition,name:account.process_transition_customerinvoice0
+#: model:process.transition,name:account.process_transition_paymentorderreconcilation0
+#: model:process.transition,name:account.process_transition_statemententries0
+#: model:process.transition,name:account.process_transition_suppliercustomerinvoice0
+#: model:process.transition,name:account.process_transition_suppliervalidentries0
+#: model:process.transition,name:account.process_transition_validentries0
+msgid "Validation"
+msgstr ""
+
+#. module: account
+#: field:account.tax,child_depend:0
+#: field:account.tax.template,child_depend:0
+msgid "Tax on Children"
+msgstr ""
+
+#. module: account
+#: model:ir.model,name:account.model_account_fiscal_position_tax_template
+msgid "Template Tax Fiscal Position"
+msgstr ""
+
+#. module: account
+#: field:account.journal,update_posted:0
+msgid "Allow Cancelling Entries"
+msgstr ""
+
+#. module: account
+#: field:account.tax.code,sign:0
+msgid "Coefficent for parent"
+msgstr ""
+
+#. module: account
+#: view:account.analytic.account:0
+msgid "Analytic Accounts with a past deadline."
+msgstr ""
+
+#. module: account
+#: report:account.partner.balance:0
+msgid "(Account/Partner) Name"
+msgstr ""
+
+#. module: account
+#: view:account.bank.statement:0
+msgid "Transaction"
+msgstr ""
+
+#. module: account
+#: help:account.tax,base_code_id:0
+#: help:account.tax,ref_base_code_id:0
+#: help:account.tax,ref_tax_code_id:0
+#: help:account.tax,tax_code_id:0
+#: help:account.tax.template,base_code_id:0
+#: help:account.tax.template,ref_base_code_id:0
+#: help:account.tax.template,ref_tax_code_id:0
+#: help:account.tax.template,tax_code_id:0
+msgid "Use this code for the VAT declaration."
+msgstr ""
+
+#. module: account
+#: field:account.partner.reconcile.process,progress:0
+msgid "Progress"
+msgstr ""
+
+#. module: account
+#: view:report.hr.timesheet.invoice.journal:0
+msgid "Analytic Entries Stats"
+msgstr ""
+
+#. module: account
+#: field:wizard.multi.charts.accounts,bank_accounts_id:0
+msgid "Cash and Banks"
+msgstr ""
+
+#. module: account
+#: model:ir.model,name:account.model_account_installer
+msgid "account.installer"
+msgstr ""
+
+#. module: account
+#: field:account.tax.template,include_base_amount:0
+msgid "Include in Base Amount"
+msgstr ""
+
+#. module: account
+#: help:account.payment.term.line,days:0
+msgid ""
+"Number of days to add before computation of the day of month.If Date=15/01, "
+"Number of Days=22, Day of Month=-1, then the due date is 28/02."
+msgstr ""
+
+#. module: account
+#: view:account.payment.term.line:0
+msgid "Amount Computation"
+msgstr ""
+
+#. module: account
+#: view:account.journal:0
+msgid "Entry Controls"
+msgstr ""
+
+#. module: account
+#: view:account.analytic.chart:0
+#: view:project.account.analytic.line:0
+msgid "(Keep empty to open the current situation)"
+msgstr ""
+
+#. module: account
+#: field:account.analytic.balance,date1:0
+#: field:account.analytic.cost.ledger,date1:0
+#: field:account.analytic.cost.ledger.journal.report,date1:0
+#: field:account.analytic.inverted.balance,date1:0
+#: field:account.analytic.journal.report,date1:0
+msgid "Start of period"
+msgstr ""
+
+#. module: account
+#: model:ir.model,name:account.model_account_common_account_report
+msgid "Account Common Account Report"
+msgstr ""
+
+#. module: account
+#: field:account.bank.statement.line,name:0
+#: field:account.invoice,reference:0
+msgid "Communication"
+msgstr ""
+
+#. module: account
+#: model:ir.ui.menu,name:account.menu_analytic_accounting
+msgid "Analytic Accounting"
+msgstr ""
+
+#. module: account
+#: field:account.partner.ledger,initial_balance:0
+#: field:account.report.general.ledger,initial_balance:0
+msgid "Include Initial Balances"
+msgstr ""
+
+#. module: account
+#: selection:account.invoice,type:0
+#: selection:account.invoice.report,type:0
+#: selection:report.invoice.created,type:0
+msgid "Customer Refund"
+msgstr ""
+
+#. module: account
+#: constraint:account.move:0
+msgid ""
+"You can not create more than one move per period on centralized journal"
+msgstr ""
+
+#. module: account
+#: field:account.tax,ref_tax_sign:0
+#: field:account.tax,tax_sign:0
+#: field:account.tax.template,ref_tax_sign:0
+#: field:account.tax.template,tax_sign:0
+msgid "Tax Code Sign"
+msgstr ""
+
+#. module: account
+#: model:ir.model,name:account.model_report_invoice_created
+msgid "Report of Invoices Created within Last 15 days"
+msgstr ""
+
+#. module: account
+#: view:account.payment.term.line:0
+msgid " Number of Days: 14"
+msgstr ""
+
+#. module: account
+#: field:account.fiscalyear,end_journal_period_id:0
+msgid "End of Year Entries Journal"
+msgstr ""
+
+#. module: account
+#: code:addons/account/account.py:3446
+#: code:addons/account/account_bank_statement.py:338
+#: code:addons/account/account_invoice.py:427
+#: code:addons/account/account_invoice.py:527
+#: code:addons/account/account_invoice.py:542
+#: code:addons/account/account_invoice.py:550
+#: code:addons/account/account_invoice.py:572
+#: code:addons/account/wizard/account_move_journal.py:63
+#, python-format
+msgid "Configuration Error !"
+msgstr ""
+
+#. module: account
+#: field:account.payment.term.line,value_amount:0
+msgid "Amount To Pay"
+msgstr ""
+
+#. module: account
+#: help:account.partner.reconcile.process,to_reconcile:0
+msgid ""
+"This is the remaining partners for who you should check if there is "
+"something to reconcile or not. This figure already count the current partner "
+"as reconciled."
+msgstr ""
+
+#. module: account
+#: view:account.subscription.line:0
+msgid "Subscription lines"
+msgstr ""
+
+#. module: account
+#: field:account.entries.report,quantity:0
+msgid "Products Quantity"
+msgstr ""
+
+#. module: account
+#: view:account.entries.report:0
+#: selection:account.entries.report,move_state:0
+#: view:account.move:0
+#: selection:account.move,state:0
+#: view:account.move.line:0
+msgid "Unposted"
+msgstr ""
+
+#. module: account
+#: view:account.change.currency:0
+#: model:ir.actions.act_window,name:account.action_account_change_currency
+#: model:ir.model,name:account.model_account_change_currency
+msgid "Change Currency"
+msgstr ""
+
+#. module: account
+#: view:account.invoice:0
+msgid "This action will erase taxes"
+msgstr ""
+
+#. module: account
+#: model:process.node,note:account.process_node_accountingentries0
+#: model:process.node,note:account.process_node_supplieraccountingentries0
+msgid "Accounting entries."
+msgstr ""
+
+#. module: account
+#: view:account.invoice:0
+msgid "Payment Date"
+msgstr ""
+
+#. module: account
+#: view:account.analytic.account:0
+#: model:ir.actions.act_window,name:account.action_account_analytic_account_form
+#: model:ir.ui.menu,name:account.account_analytic_def_account
+msgid "Analytic Accounts"
+msgstr ""
+
+#. module: account
+#: view:account.invoice.report:0
+msgid "Customer Invoices And Refunds"
+msgstr ""
+
+#. module: account
+#: field:account.analytic.line,amount_currency:0
+#: field:account.entries.report,amount_currency:0
+#: field:account.model.line,amount_currency:0
+#: field:account.move.line,amount_currency:0
+msgid "Amount Currency"
+msgstr ""
+
+#. module: account
+#: code:addons/account/wizard/account_validate_account_move.py:39
+#, python-format
+msgid ""
+"Specified Journal does not have any account move entries in draft state for "
+"this period"
+msgstr ""
+
+#. module: account
+#: model:ir.actions.act_window,name:account.action_view_move_line
+msgid "Lines to reconcile"
+msgstr ""
+
+#. module: account
+#: report:account.analytic.account.balance:0
+#: report:account.analytic.account.inverted.balance:0
+#: report:account.analytic.account.quantity_cost_ledger:0
+#: report:account.invoice:0
+#: field:account.invoice.line,quantity:0
+#: field:account.model.line,quantity:0
+#: field:account.move.line,quantity:0
+#: view:analytic.entries.report:0
+#: field:analytic.entries.report,unit_amount:0
+#: field:report.account.sales,quantity:0
+#: field:report.account_type.sales,quantity:0
+msgid "Quantity"
+msgstr ""
+
+#. module: account
+#: view:account.move.line:0
+msgid "Number (Move)"
+msgstr ""
+
+#. module: account
+#: view:analytic.entries.report:0
+msgid "Analytic Entries during last 7 days"
+msgstr ""
+
+#. module: account
+#: selection:account.financial.report,style_overwrite:0
+msgid "Normal Text"
+msgstr ""
+
+#. module: account
+#: view:account.invoice.refund:0
+msgid "Refund Invoice Options"
+msgstr ""
+
+#. module: account
+#: help:account.automatic.reconcile,power:0
+msgid ""
+"Number of partial amounts that can be combined to find a balance point can "
+"be chosen as the power of the automatic reconciliation"
+msgstr ""
+
+#. module: account
+#: help:account.payment.term.line,sequence:0
+msgid ""
+"The sequence field is used to order the payment term lines from the lowest "
+"sequences to the higher ones"
+msgstr ""
+
+#. module: account
+#: view:account.fiscal.position.template:0
+#: field:account.fiscal.position.template,name:0
+msgid "Fiscal Position Template"
+msgstr ""
+
+#. module: account
+#: view:account.analytic.chart:0
+#: view:account.chart:0
+#: view:account.tax.chart:0
+msgid "Open Charts"
+msgstr ""
+
+#. module: account
+#: view:account.fiscalyear.close.state:0
+msgid ""
+"If no additional entries should be recorded on a fiscal year, you can close "
+"it from here. It will close all opened periods in this year that will make "
+"impossible any new entry record. Close a fiscal year when you need to "
+"finalize your end of year results definitive "
+msgstr ""
+
+#. module: account
+#: field:account.central.journal,amount_currency:0
+#: field:account.common.journal.report,amount_currency:0
+#: field:account.general.journal,amount_currency:0
+#: field:account.partner.ledger,amount_currency:0
+#: field:account.print.journal,amount_currency:0
+#: field:account.report.general.ledger,amount_currency:0
+msgid "With Currency"
+msgstr ""
+
+#. module: account
+#: view:account.bank.statement:0
+msgid "Open CashBox"
+msgstr ""
+
+#. module: account
+#: selection:account.financial.report,style_overwrite:0
+msgid "Automatic formatting"
+msgstr ""
+
+#. module: account
+#: code:addons/account/account.py:963
+#, python-format
+msgid ""
+"No fiscal year defined for this date !\n"
+"Please create one from the configuration of the accounting menu."
+msgstr ""
+
+#. module: account
+#: view:account.move.line.reconcile:0
+msgid "Reconcile With Write-Off"
+msgstr ""
+
+#. module: account
+#: selection:account.payment.term.line,value:0
+#: selection:account.tax,type:0
+msgid "Fixed Amount"
+msgstr ""
+
+#. module: account
+#: view:account.subscription:0
+msgid "Valid Up to"
+msgstr ""
+
+#. module: account
+#: view:account.journal:0
+msgid "Invoicing Data"
+msgstr ""
+
+#. module: account
+#: model:ir.actions.act_window,name:account.action_account_automatic_reconcile
+msgid "Account Automatic Reconcile"
+msgstr ""
+
+#. module: account
+#: view:account.move:0
+#: view:account.move.line:0
+msgid "Journal Item"
+msgstr ""
+
+#. module: account
+#: model:ir.model,name:account.model_account_move_journal
+msgid "Move journal"
+msgstr ""
+
+#. module: account
+#: model:ir.actions.act_window,name:account.action_account_fiscalyear_close
+#: model:ir.ui.menu,name:account.menu_wizard_fy_close
+msgid "Generate Opening Entries"
+msgstr ""
+
+#. module: account
+#: code:addons/account/account_move_line.py:759
+#, python-format
+msgid "Already Reconciled!"
+msgstr ""
+
+#. module: account
+#: help:account.tax,type:0
+msgid "The computation method for the tax amount."
+msgstr ""
+
+#. module: account
+#: view:account.payment.term.line:0
+msgid "Due Date Computation"
+msgstr ""
+
+#. module: account
+#: field:report.invoice.created,create_date:0
+msgid "Create Date"
+msgstr ""
+
+#. module: account
+#: view:account.analytic.journal:0
+#: model:ir.actions.act_window,name:account.action_account_analytic_journal_form
+#: model:ir.ui.menu,name:account.account_def_analytic_journal
+msgid "Analytic Journals"
+msgstr ""
+
+#. module: account
+#: field:account.account,child_id:0
+msgid "Child Accounts"
+msgstr ""
+
+#. module: account
+#: code:addons/account/account_move_line.py:1214
+#, python-format
+msgid "Move name (id): %s (%s)"
+msgstr ""
+
+#. module: account
+#: view:account.move.line.reconcile:0
+#: code:addons/account/account_move_line.py:857
+#, python-format
+msgid "Write-Off"
+msgstr ""
+
+#. module: account
+#: field:res.partner,debit:0
+msgid "Total Payable"
+msgstr ""
+
+#. module: account
+#: model:account.account.type,name:account.data_account_type_income
+#: model:account.financial.report,name:account.account_financial_report_income0
+msgid "Income"
+msgstr ""
+
+#. module: account
+#: selection:account.bank.statement.line,type:0
+#: view:account.invoice:0
+#: view:account.invoice.report:0
+#: code:addons/account/account_invoice.py:339
+#, python-format
+msgid "Supplier"
+msgstr ""
+
+#. module: account
+#: selection:account.entries.report,month:0
+#: selection:account.invoice.report,month:0
+#: selection:analytic.entries.report,month:0
+#: selection:report.account.sales,month:0
+#: selection:report.account_type.sales,month:0
+msgid "March"
+msgstr ""
+
+#. module: account
+#: view:account.account.template:0
+msgid "Account Template"
+msgstr ""
+
+#. module: account
+#: report:account.journal.period.print.sale.purchase:0
+msgid "VAT"
+msgstr ""
+
+#. module: account
+#: report:account.analytic.account.journal:0
+msgid "Account n°"
+msgstr ""
+
+#. module: account
+#: code:addons/account/account_invoice.py:88
+#, python-format
+msgid "Free Reference"
+msgstr ""
+
+#. module: account
+#: field:account.payment.term.line,value:0
+msgid "Valuation"
+msgstr ""
+
+#. module: account
+#: selection:account.aged.trial.balance,result_selection:0
+#: selection:account.common.partner.report,result_selection:0
+#: selection:account.partner.balance,result_selection:0
+#: selection:account.partner.ledger,result_selection:0
+#: code:addons/account/report/account_partner_balance.py:301
+#, python-format
+msgid "Receivable and Payable Accounts"
+msgstr ""
+
+#. module: account
+#: field:account.fiscal.position.account.template,position_id:0
+msgid "Fiscal Mapping"
+msgstr ""
+
+#. module: account
+#: model:ir.actions.act_window,name:account.action_account_state_open
+#: model:ir.model,name:account.model_account_state_open
+msgid "Account State Open"
+msgstr ""
+
+#. module: account
+#: report:account.analytic.account.quantity_cost_ledger:0
+msgid "Max Qty:"
+msgstr ""
+
+#. module: account
+#: view:account.invoice.refund:0
+msgid "Refund Invoice"
+msgstr ""
+
+#. module: account
+#: field:account.invoice,address_invoice_id:0
+msgid "Invoice Address"
+msgstr ""
+
+#. module: account
+#: model:ir.actions.act_window,help:account.action_account_entries_report_all
+msgid ""
+"From this view, have an analysis of your different financial accounts. The "
+"document shows your debit and credit taking in consideration some criteria "
+"you can choose by using the search tool."
+msgstr ""
+
+#. module: account
+#: model:ir.actions.act_window,help:account.action_tax_code_list
+msgid ""
+"The tax code definition depends on the tax declaration of your country. "
+"OpenERP allows you to define the tax structure and manage it from this menu. "
+"You can define both numeric and alphanumeric tax codes."
+msgstr ""
+
+#. module: account
+#: help:account.partner.reconcile.process,progress:0
+msgid ""
+"Shows you the progress made today on the reconciliation process. Given by \n"
+"Partners Reconciled Today \\ (Remaining Partners + Partners Reconciled Today)"
+msgstr ""
+
+#. module: account
+#: help:account.payment.term.line,value:0
+msgid ""
+"Select here the kind of valuation related to this payment term line. Note "
+"that you should have your last line with the type 'Balance' to ensure that "
+"the whole amount will be threated."
+msgstr ""
+
+#. module: account
+#: field:account.invoice,period_id:0
+#: field:account.invoice.report,period_id:0
+#: field:report.account.sales,period_id:0
+#: field:report.account_type.sales,period_id:0
+msgid "Force Period"
+msgstr ""
+
+#. module: account
+#: view:account.invoice.report:0
+#: field:account.invoice.report,nbr:0
+msgid "# of Lines"
+msgstr ""
+
+#. module: account
+#: field:account.aged.trial.balance,filter:0
+#: field:account.balance.report,filter:0
+#: field:account.central.journal,filter:0
+#: field:account.common.account.report,filter:0
+#: field:account.common.journal.report,filter:0
+#: field:account.common.partner.report,filter:0
+#: field:account.common.report,filter:0
+#: field:account.general.journal,filter:0
+#: field:account.partner.balance,filter:0
+#: field:account.partner.ledger,filter:0
+#: field:account.print.journal,filter:0
+#: field:account.report.general.ledger,filter:0
+#: field:account.vat.declaration,filter:0
+#: field:accounting.report,filter:0
+#: field:accounting.report,filter_cmp:0
+msgid "Filter by"
+msgstr ""
+
+#. module: account
+#: code:addons/account/account.py:2256
+#, python-format
+msgid "You have a wrong expression \"%(...)s\" in your model !"
+msgstr ""
+
+#. module: account
+#: field:account.bank.statement.line,date:0
+msgid "Entry Date"
+msgstr ""
+
+#. module: account
+#: code:addons/account/account_move_line.py:1155
+#: code:addons/account/account_move_line.py:1238
+#, python-format
+msgid "You can not use an inactive account!"
+msgstr ""
+
+#. module: account
+#: code:addons/account/account_move_line.py:830
+#, python-format
+msgid "Entries are not of the same account or already reconciled ! "
+msgstr ""
+
+#. module: account
+#: help:account.bank.statement,balance_end:0
+msgid "Balance as calculated based on Starting Balance and transaction lines"
+msgstr ""
+
+#. module: account
+#: code:addons/account/wizard/account_change_currency.py:64
+#: code:addons/account/wizard/account_change_currency.py:70
+#, python-format
+msgid "Current currency is not configured properly !"
+msgstr ""
+
+#. module: account
+#: field:account.tax,account_collected_id:0
+#: field:account.tax.template,account_collected_id:0
+msgid "Invoice Tax Account"
+msgstr ""
+
+#. module: account
+#: model:ir.actions.act_window,name:account.action_account_general_journal
+#: model:ir.model,name:account.model_account_general_journal
+msgid "Account General Journal"
+msgstr ""
+
+#. module: account
+#: field:account.payment.term.line,days:0
+msgid "Number of Days"
+msgstr ""
+
+#. module: account
+#: code:addons/account/account_bank_statement.py:402
+#: code:addons/account/account_invoice.py:392
+#: code:addons/account/wizard/account_period_close.py:51
+#, python-format
+msgid "Invalid action !"
+msgstr ""
+
+#. module: account
+#: code:addons/account/wizard/account_move_journal.py:102
+#, python-format
+msgid "Period: %s"
+msgstr ""
+
+#. module: account
+#: model:ir.actions.act_window,name:account.action_review_financial_journals_installer
+msgid "Review your Financial Journals"
+msgstr ""
+
+#. module: account
+#: help:account.tax,name:0
+msgid "This name will be displayed on reports"
+msgstr ""
+
+#. module: account
+#: report:account.analytic.account.cost_ledger:0
+#: report:account.analytic.account.quantity_cost_ledger:0
+msgid "Printing date"
+msgstr ""
+
+#. module: account
+#: selection:account.account.type,close_method:0
+#: selection:account.tax,type:0
+#: selection:account.tax.template,type:0
+msgid "None"
+msgstr ""
+
+#. module: account
+#: view:analytic.entries.report:0
+msgid " 365 Days "
+msgstr ""
+
+#. module: account
+#: model:ir.actions.act_window,name:account.action_invoice_tree3
+#: model:ir.ui.menu,name:account.menu_action_invoice_tree3
+msgid "Customer Refunds"
+msgstr ""
+
+#. module: account
+#: field:account.account,foreign_balance:0
+msgid "Foreign Balance"
+msgstr ""
+
+#. module: account
+#: field:account.journal.period,name:0
+msgid "Journal-Period Name"
+msgstr ""
+
+#. module: account
+#: field:account.invoice.tax,factor_base:0
+msgid "Multipication factor for Base code"
+msgstr ""
+
+#. module: account
+#: code:addons/account/wizard/account_report_common.py:150
+#, python-format
+msgid "not implemented"
+msgstr ""
+
+#. module: account
+#: help:account.journal,company_id:0
+msgid "Company related to this journal"
+msgstr ""
+
+#. module: account
+#: code:addons/account/wizard/account_invoice_state.py:44
+#, python-format
+msgid ""
+"Selected Invoice(s) cannot be confirmed as they are not in 'Draft' or 'Pro-"
+"Forma' state!"
+msgstr ""
+
+#. module: account
+#: view:account.subscription:0
+msgid "Running Subscription"
+msgstr ""
+
+#. module: account
+#: report:account.invoice:0
+msgid "Fiscal Position Remark :"
+msgstr ""
+
+#. module: account
+#: view:analytic.entries.report:0
+#: model:ir.actions.act_window,name:account.action_analytic_entries_report
+#: model:ir.ui.menu,name:account.menu_action_analytic_entries_report
+msgid "Analytic Entries Analysis"
+msgstr ""
+
+#. module: account
+#: selection:account.aged.trial.balance,direction_selection:0
+msgid "Past"
+msgstr ""
+
+#. module: account
+#: constraint:account.account:0
+msgid ""
+"Configuration Error! \n"
+"You can not define children to an account with internal type different of "
+"\"View\"! "
+msgstr ""
+
+#. module: account
+#: help:res.partner.bank,journal_id:0
+msgid ""
+"This journal will be created automatically for this bank account when you "
+"save the record"
+msgstr ""
+
+#. module: account
+#: view:account.analytic.line:0
+msgid "Analytic Entry"
+msgstr ""
+
+#. module: account
+#: view:res.company:0
+#: field:res.company,overdue_msg:0
+msgid "Overdue Payments Message"
+msgstr ""
+
+#. module: account
+#: model:ir.actions.act_window,help:account.action_account_moves_all_a
+msgid ""
+"This view can be used by accountants in order to quickly record entries in "
+"OpenERP. If you want to record a supplier invoice, start by recording the "
+"line of the expense account. OpenERP will propose to you automatically the "
+"Tax related to this account and the counterpart \"Account Payable\"."
+msgstr ""
+
+#. module: account
+#: field:account.entries.report,date_created:0
+msgid "Date Created"
+msgstr ""
+
+#. module: account
+#: model:ir.actions.act_window,name:account.action_account_analytic_account_line_extended_form
+msgid "account.analytic.line.extended"
+msgstr ""
+
+#. module: account
+#: view:account.invoice:0
+msgid "(keep empty to use the current period)"
+msgstr ""
+
+#. module: account
+#: model:process.transition,note:account.process_transition_supplierreconcilepaid0
+msgid ""
+"As soon as the reconciliation is done, the invoice's state turns to “done” "
+"(i.e. paid) in the system."
+msgstr ""
+
+#. module: account
+#: view:account.chart.template:0
+#: field:account.chart.template,account_root_id:0
+msgid "Root Account"
+msgstr ""
+
+#. module: account
+#: field:res.partner,last_reconciliation_date:0
+msgid "Latest Reconciliation Date"
+msgstr ""
+
+#. module: account
+#: model:ir.model,name:account.model_account_analytic_line
+msgid "Analytic Line"
+msgstr ""
+
+#. module: account
+#: field:product.template,taxes_id:0
+msgid "Customer Taxes"
+msgstr ""
+
+#. module: account
+#: help:account.model,name:0
+msgid "This is a model for recurring accounting entries"
+msgstr ""
+
+#. module: account
+#: field:wizard.multi.charts.accounts,sale_tax_rate:0
+msgid "Sales Tax(%)"
+msgstr ""
+
+#. module: account
+#: view:account.addtmpl.wizard:0
+msgid "Create an Account Based on this Template"
+msgstr ""
+
+#. module: account
+#: view:account.account.type:0
+#: view:account.tax.code:0
+msgid "Reporting Configuration"
+msgstr ""
+
+#. module: account
+#: field:account.tax,type:0
+#: field:account.tax.template,type:0
+msgid "Tax Type"
+msgstr ""
+
+#. module: account
+#: model:ir.actions.act_window,name:account.action_account_template_form
+#: model:ir.ui.menu,name:account.menu_action_account_template_form
+msgid "Account Templates"
+msgstr ""
+
+#. module: account
+#: help:wizard.multi.charts.accounts,complete_tax_set:0
+msgid ""
+"This boolean helps you to choose if you want to propose to the user to "
+"encode the sales and purchase rates or use the usual m2o fields. This last "
+"choice assumes that the set of tax defined for the chosen template is "
+"complete"
+msgstr ""
+
+#. module: account
+#: report:account.vat.declaration:0
+msgid "Tax Statement"
+msgstr ""
+
+#. module: account
+#: model:ir.model,name:account.model_res_company
+msgid "Companies"
+msgstr ""
+
+#. module: account
+#: view:account.invoice.report:0
+msgid "Open and Paid Invoices"
+msgstr ""
+
+#. module: account
+#: selection:account.financial.report,display_detail:0
+msgid "Display children flat"
+msgstr ""
+
+#. module: account
+#: code:addons/account/account.py:629
+#, python-format
+msgid ""
+"You can not remove/desactivate an account which is set on a customer or "
+"supplier."
+msgstr ""
+
+#. module: account
+#: help:account.fiscalyear.close.state,fy_id:0
+msgid "Select a fiscal year to close"
+msgstr ""
+
+#. module: account
+#: help:account.chart.template,tax_template_ids:0
+msgid "List of all the taxes that have to be installed by the wizard"
+msgstr ""
+
+#. module: account
+#: model:ir.actions.report.xml,name:account.account_intracom
+msgid "IntraCom"
+msgstr ""
+
+#. module: account
+#: view:account.move.line.reconcile.writeoff:0
+msgid "Information addendum"
+msgstr ""
+
+#. module: account
+#: field:account.chart,fiscalyear:0
+msgid "Fiscal year"
+msgstr ""
+
+#. module: account
+#: view:account.move.reconcile:0
+msgid "Partial Reconcile Entries"
+msgstr ""
+
+#. module: account
+#: view:account.addtmpl.wizard:0
+#: view:account.aged.trial.balance:0
+#: view:account.analytic.balance:0
+#: view:account.analytic.chart:0
+#: view:account.analytic.cost.ledger:0
+#: view:account.analytic.cost.ledger.journal.report:0
+#: view:account.analytic.inverted.balance:0
+#: view:account.analytic.journal.report:0
+#: view:account.automatic.reconcile:0
+#: view:account.bank.statement:0
+#: view:account.change.currency:0
+#: view:account.chart:0
+#: view:account.common.report:0
+#: view:account.fiscalyear.close:0
+#: view:account.fiscalyear.close.state:0
+#: view:account.invoice:0
+#: view:account.invoice.refund:0
+#: view:account.journal.select:0
+#: view:account.move:0
+#: view:account.move.bank.reconcile:0
+#: view:account.move.line.reconcile:0
+#: view:account.move.line.reconcile.select:0
+#: view:account.move.line.reconcile.writeoff:0
+#: view:account.move.line.unreconcile.select:0
+#: view:account.open.closed.fiscalyear:0
+#: view:account.partner.reconcile.process:0
+#: view:account.period.close:0
+#: view:account.subscription.generate:0
+#: view:account.tax.chart:0
+#: view:account.unreconcile:0
+#: view:account.unreconcile.reconcile:0
+#: view:account.use.model:0
+#: view:account.vat.declaration:0
+#: code:addons/account/wizard/account_move_journal.py:105
+#: view:project.account.analytic.line:0
+#: view:validate.account.move:0
+#: view:validate.account.move.lines:0
+#, python-format
+msgid "Cancel"
+msgstr ""
+
+#. module: account
+#: selection:account.account,type:0
+#: selection:account.account.template,type:0
+#: model:account.account.type,name:account.data_account_type_receivable
+#: selection:account.entries.report,type:0
+msgid "Receivable"
+msgstr ""
+
+#. module: account
+#: constraint:account.move.line:0
+msgid "Company must be the same for its related account and period."
+msgstr ""
+
+#. module: account
+#: view:account.invoice:0
+msgid "Other Info"
+msgstr ""
+
+#. module: account
+#: field:account.journal,default_credit_account_id:0
+msgid "Default Credit Account"
+msgstr ""
+
+#. module: account
+#: help:account.analytic.line,currency_id:0
+msgid "The related account currency if not equal to the company one."
+msgstr ""
+
+#. module: account
+#: view:account.analytic.account:0
+msgid "Current"
+msgstr ""
+
+#. module: account
+#: view:account.bank.statement:0
+msgid "CashBox"
+msgstr ""
+
+#. module: account
+#: model:account.account.type,name:account.account_type_cash_equity
+msgid "Equity"
+msgstr ""
+
+#. module: account
+#: selection:account.tax,type:0
+msgid "Percentage"
+msgstr ""
+
+#. module: account
+#: selection:account.report.general.ledger,sortby:0
+msgid "Journal & Partner"
+msgstr ""
+
+#. module: account
+#: field:account.automatic.reconcile,power:0
+msgid "Power"
+msgstr ""
+
+#. module: account
+#: code:addons/account/account.py:3368
+#, python-format
+msgid "Cannot generate an unused journal code."
+msgstr ""
+
+#. module: account
+#: view:project.account.analytic.line:0
+msgid "View Account Analytic Lines"
+msgstr ""
+
+#. module: account
+#: field:account.invoice,internal_number:0
+#: field:report.invoice.created,number:0
+msgid "Invoice Number"
+msgstr ""
+
+#. module: account
+#: help:account.tax,include_base_amount:0
+msgid ""
+"Indicates if the amount of tax must be included in the base amount for the "
+"computation of the next taxes"
+msgstr ""
+
+#. module: account
+#: model:ir.actions.act_window,name:account.action_account_partner_reconcile
+msgid "Reconciliation: Go to Next Partner"
+msgstr ""
+
+#. module: account
+#: model:ir.actions.act_window,name:account.action_account_analytic_invert_balance
+#: model:ir.actions.report.xml,name:account.account_analytic_account_inverted_balance
+msgid "Inverted Analytic Balance"
+msgstr ""
+
+#. module: account
+#: field:account.tax.template,applicable_type:0
+msgid "Applicable Type"
+msgstr ""
+
+#. module: account
+#: field:account.invoice.line,invoice_id:0
+msgid "Invoice Reference"
+msgstr ""
+
+#. module: account
+#: help:account.tax.template,sequence:0
+msgid ""
+"The sequence field is used to order the taxes lines from lower sequences to "
+"higher ones. The order is important if you have a tax that has several tax "
+"children. In this case, the evaluation order is important."
+msgstr ""
+
+#. module: account
+#: selection:account.account,type:0
+#: selection:account.account.template,type:0
+#: view:account.journal:0
+msgid "Liquidity"
+msgstr ""
+
+#. module: account
+#: model:ir.actions.act_window,name:account.action_account_analytic_journal_open_form
+#: model:ir.ui.menu,name:account.account_analytic_journal_entries
+msgid "Analytic Journal Items"
+msgstr ""
+
+#. module: account
+#: view:account.fiscalyear.close:0
+msgid ""
+"This wizard will generate the end of year journal entries of selected fiscal "
+"year. Note that you can run this wizard many times for the same fiscal year: "
+"it will simply replace the old opening entries with the new ones."
+msgstr ""
+
+#. module: account
+#: model:ir.ui.menu,name:account.menu_finance_bank_and_cash
+msgid "Bank and Cash"
+msgstr ""
+
+#. module: account
+#: model:ir.actions.act_window,help:account.action_analytic_entries_report
+msgid ""
+"From this view, have an analysis of your different analytic entries "
+"following the analytic account you defined matching your business need. Use "
+"the tool search to analyse information about analytic entries generated in "
+"the system."
+msgstr ""
+
+#. module: account
+#: sql_constraint:account.journal:0
+msgid "The name of the journal must be unique per company !"
+msgstr ""
+
+#. module: account
+#: field:account.account.template,nocreate:0
+msgid "Optional create"
+msgstr ""
+
+#. module: account
+#: code:addons/account/account.py:664
+#, python-format
+msgid ""
+"You cannot change the owner company of an account that already contains "
+"journal items."
+msgstr ""
+
+#. module: account
+#: code:addons/account/wizard/account_report_aged_partner_balance.py:58
+#, python-format
+msgid "Enter a Start date !"
+msgstr ""
+
+#. module: account
+#: report:account.invoice:0
+#: selection:account.invoice,type:0
+#: selection:account.invoice.report,type:0
+#: selection:report.invoice.created,type:0
+msgid "Supplier Refund"
+msgstr ""
+
+#. module: account
+#: field:account.bank.statement,move_line_ids:0
+msgid "Entry lines"
+msgstr ""
+
+#. module: account
+#: field:account.move.line,centralisation:0
+msgid "Centralisation"
+msgstr ""
+
+#. module: account
+#: view:account.account:0
+#: view:account.account.template:0
+#: view:account.analytic.account:0
+#: view:account.analytic.journal:0
+#: view:account.analytic.line:0
+#: view:account.bank.statement:0
+#: view:account.chart.template:0
+#: view:account.entries.report:0
+#: view:account.financial.report:0
+#: view:account.fiscalyear:0
+#: view:account.invoice:0
+#: view:account.invoice.report:0
+#: view:account.journal:0
+#: view:account.model:0
+#: view:account.move:0
+#: view:account.move.line:0
+#: view:account.subscription:0
+#: view:account.tax.code.template:0
+#: view:analytic.entries.report:0
+msgid "Group By..."
+msgstr ""
+
+#. module: account
+#: field:account.journal.column,readonly:0
+msgid "Readonly"
+msgstr ""
+
+#. module: account
+#: view:account.payment.term.line:0
+msgid " Valuation: Balance"
+msgstr ""
+
+#. module: account
+#: field:account.invoice.line,uos_id:0
+msgid "Unit of Measure"
+msgstr ""
+
+#. module: account
+#: constraint:account.payment.term.line:0
+msgid ""
+"Percentages for Payment Term Line must be between 0 and 1, Example: 0.02 for "
+"2% "
+msgstr ""
+
+#. module: account
+#: field:account.installer,has_default_company:0
+msgid "Has Default Company"
+msgstr ""
+
+#. module: account
+#: model:ir.model,name:account.model_account_sequence_fiscalyear
+msgid "account.sequence.fiscalyear"
+msgstr ""
+
+#. module: account
+#: report:account.analytic.account.journal:0
+#: view:account.analytic.journal:0
+#: field:account.analytic.line,journal_id:0
+#: field:account.journal,analytic_journal_id:0
+#: model:ir.actions.act_window,name:account.action_account_analytic_journal
+#: model:ir.actions.report.xml,name:account.analytic_journal_print
+#: model:ir.model,name:account.model_account_analytic_journal
+msgid "Analytic Journal"
+msgstr ""
+
+#. module: account
+#: code:addons/account/account.py:622
+#, python-format
+msgid "You can not desactivate an account that contains some journal items."
+msgstr ""
+
+#. module: account
+#: view:account.entries.report:0
+msgid "Reconciled"
+msgstr ""
+
+#. module: account
+#: report:account.invoice:0
+#: field:account.invoice.tax,base:0
+msgid "Base"
+msgstr ""
+
+#. module: account
+#: field:account.model,name:0
+msgid "Model Name"
+msgstr ""
+
+#. module: account
+#: field:account.chart.template,property_account_expense_categ:0
+msgid "Expense Category Account"
+msgstr ""
+
+#. module: account
+#: view:account.bank.statement:0
+msgid "Cash Transactions"
+msgstr ""
+
+#. module: account
+#: code:addons/account/wizard/account_state_open.py:37
+#, python-format
+msgid "Invoice is already reconciled"
+msgstr ""
+
+#. module: account
+#: view:account.account:0
+#: view:account.account.template:0
+#: view:account.bank.statement:0
+#: field:account.bank.statement.line,note:0
+#: view:account.fiscal.position:0
+#: field:account.fiscal.position,note:0
+#: field:account.fiscal.position.template,note:0
+#: view:account.invoice.line:0
+#: field:account.invoice.line,note:0
+msgid "Notes"
+msgstr ""
+
+#. module: account
+#: model:ir.model,name:account.model_analytic_entries_report
+msgid "Analytic Entries Statistics"
+msgstr ""
+
+#. module: account
+#: code:addons/account/account.py:624
+#, python-format
+msgid "You can not remove an account containing journal items."
+msgstr ""
+
+#. module: account
+#: code:addons/account/account_analytic_line.py:145
+#: code:addons/account/account_move_line.py:933
+#, python-format
+msgid "Entries: "
+msgstr ""
+
+#. module: account
+#: view:account.use.model:0
+msgid "Create manual recurring entries in a chosen journal."
+msgstr ""
+
+#. module: account
+#: help:res.partner.bank,currency_id:0
+msgid "Currency of the related account journal."
+msgstr ""
+
+#. module: account
+#: code:addons/account/account.py:1563
+#, python-format
+msgid "Couldn't create move between different companies"
+msgstr ""
+
+#. module: account
+#: model:ir.actions.act_window,help:account.action_account_type_form
+msgid ""
+"An account type is used to determine how an account is used in each journal. "
+"The deferral method of an account type determines the process for the annual "
+"closing. Reports such as the Balance Sheet and the Profit and Loss report "
+"use the category (profit/loss or balance sheet). For example, the account "
+"type could be linked to an asset account, expense account or payable "
+"account. From this view, you can create and manage the account types you "
+"need for your company."
+msgstr ""
+
+#. module: account
+#: selection:account.account.type,report_type:0
+#: code:addons/account/account.py:183
+#, python-format
+msgid "Balance Sheet (Asset account)"
+msgstr ""
+
+#. module: account
+#: model:ir.actions.act_window,help:account.action_account_bank_reconcile_tree
+msgid ""
+"Bank Reconciliation consists of verifying that your bank statement "
+"corresponds with the entries (or records) of that account in your accounting "
+"system."
+msgstr ""
+
+#. module: account
+#: model:process.node,note:account.process_node_draftstatement0
+msgid "State is draft"
+msgstr ""
+
+#. module: account
+#: view:account.move.line:0
+#: code:addons/account/account_move_line.py:1043
+#, python-format
+msgid "Total debit"
+msgstr ""
+
+#. module: account
+#: code:addons/account/account_move_line.py:808
+#, python-format
+msgid "Entry \"%s\" is not valid !"
+msgstr ""
+
+#. module: account
+#: report:account.invoice:0
+msgid "Fax :"
+msgstr ""
+
+#. module: account
+#: view:wizard.multi.charts.accounts:0
+msgid ""
+"This will automatically configure your chart of accounts, bank accounts, "
+"taxes and journals according to the selected template"
+msgstr ""
+
+#. module: account
+#: help:res.partner,property_account_receivable:0
+msgid ""
+"This account will be used instead of the default one as the receivable "
+"account for the current partner"
+msgstr ""
+
+#. module: account
+#: field:account.tax,python_applicable:0
+#: field:account.tax,python_compute:0
+#: selection:account.tax,type:0
+#: selection:account.tax.template,applicable_type:0
+#: field:account.tax.template,python_applicable:0
+#: field:account.tax.template,python_compute:0
+#: selection:account.tax.template,type:0
+msgid "Python Code"
+msgstr ""
+
+#. module: account
+#: view:account.entries.report:0
+msgid "Journal Entries with period in current period"
+msgstr ""
+
+#. module: account
+#: help:account.journal,update_posted:0
+msgid ""
+"Check this box if you want to allow the cancellation the entries related to "
+"this journal or of the invoice related to this journal"
+msgstr ""
+
+#. module: account
+#: view:account.fiscalyear.close:0
+msgid "Create"
+msgstr ""
+
+#. module: account
+#: model:process.transition.action,name:account.process_transition_action_createentries0
+msgid "Create entry"
+msgstr ""
+
+#. module: account
+#: selection:account.account.type,report_type:0
+#: code:addons/account/account.py:182
+#, python-format
+msgid "Profit & Loss (Expense account)"
+msgstr ""
+
+#. module: account
+#: code:addons/account/account.py:622
+#: code:addons/account/account.py:624
+#: code:addons/account/account.py:963
+#: code:addons/account/account.py:1052
+#: code:addons/account/account.py:1129
+#: code:addons/account/account.py:1344
+#: code:addons/account/account.py:1351
+#: code:addons/account/account.py:2280
+#: code:addons/account/account.py:2596
+#: code:addons/account/account_analytic_line.py:92
+#: code:addons/account/account_analytic_line.py:101
+#: code:addons/account/account_bank_statement.py:301
+#: code:addons/account/account_bank_statement.py:314
+#: code:addons/account/account_bank_statement.py:352
+#: code:addons/account/account_cash_statement.py:292
+#: code:addons/account/account_cash_statement.py:314
+#: code:addons/account/account_invoice.py:808
+#: code:addons/account/account_invoice.py:839
+#: code:addons/account/account_invoice.py:1030
+#: code:addons/account/account_move_line.py:1200
+#: code:addons/account/account_move_line.py:1216
+#: code:addons/account/account_move_line.py:1218
+#: code:addons/account/wizard/account_invoice_refund.py:108
+#: code:addons/account/wizard/account_invoice_refund.py:110
+#: code:addons/account/wizard/account_open_closed_fiscalyear.py:39
+#: code:addons/account/wizard/account_use_model.py:44
+#, python-format
+msgid "Error !"
+msgstr ""
+
+#. module: account
+#: field:account.financial.report,style_overwrite:0
+msgid "Financial Report Style"
+msgstr ""
+
+#. module: account
+#: selection:account.financial.report,sign:0
+msgid "Preserve balance sign"
+msgstr ""
+
+#. module: account
+#: view:account.vat.declaration:0
+#: model:ir.actions.report.xml,name:account.account_vat_declaration
+#: model:ir.ui.menu,name:account.menu_account_vat_declaration
+msgid "Taxes Report"
+msgstr ""
+
+#. module: account
+#: selection:account.journal.period,state:0
+msgid "Printed"
+msgstr ""
+
+#. module: account
+#: code:addons/account/account_move_line.py:584
+#: code:addons/account/account_move_line.py:591
+#, python-format
+msgid "Error :"
+msgstr ""
+
+#. module: account
+#: view:account.analytic.line:0
+msgid "Project line"
+msgstr ""
+
+#. module: account
+#: field:account.invoice.tax,manual:0
+msgid "Manual"
+msgstr ""
+
+#. module: account
+#: view:account.automatic.reconcile:0
+msgid ""
+"For an invoice to be considered as paid, the invoice entries must be "
+"reconciled with counterparts, usually payments. With the automatic "
+"reconciliation functionality, OpenERP makes its own search for entries to "
+"reconcile in a series of accounts. It finds entries for each partner where "
+"the amounts correspond."
+msgstr ""
+
+#. module: account
+#: view:account.move:0
+#: field:account.move,to_check:0
+msgid "To Review"
+msgstr ""
+
+#. module: account
+#: help:account.partner.ledger,initial_balance:0
+#: help:account.report.general.ledger,initial_balance:0
+msgid ""
+"If you selected to filter by date or period, this field allow you to add a "
+"row to display the amount of debit/credit/balance that precedes the filter "
+"you've set."
+msgstr ""
+
+#. module: account
+#: view:account.bank.statement:0
+#: view:account.move:0
+#: model:ir.actions.act_window,name:account.action_move_journal_line
+#: model:ir.ui.menu,name:account.menu_action_move_journal_line_form
+#: model:ir.ui.menu,name:account.menu_finance_entries
+msgid "Journal Entries"
+msgstr ""
+
+#. module: account
+#: help:account.partner.ledger,page_split:0
+msgid "Display Ledger Report with One partner per page"
+msgstr ""
+
+#. module: account
+#: code:addons/account/account_move_line.py:1218
+#, python-format
+msgid ""
+"You can not do this modification on a reconciled entry! You can just change "
+"some non legal fields or you must unreconcile first!\n"
+"%s"
+msgstr ""
+
+#. module: account
+#: report:account.general.ledger:0
+#: report:account.general.ledger_landscape:0
+#: report:account.third_party_ledger:0
+#: report:account.third_party_ledger_other:0
+msgid "JRNL"
+msgstr ""
+
+#. module: account
+#: view:account.partner.balance:0
+#: view:account.partner.ledger:0
+msgid ""
+"This report is an analysis done by a partner. It is a PDF report containing "
+"one line per partner representing the cumulative credit balance"
+msgstr ""
+
+#. module: account
+#: code:addons/account/wizard/account_validate_account_move.py:61
+#, python-format
+msgid ""
+"Selected Entry Lines does not have any account move enties in draft state"
+msgstr ""
+
+#. module: account
+#: selection:account.aged.trial.balance,target_move:0
+#: selection:account.balance.report,target_move:0
+#: selection:account.central.journal,target_move:0
+#: selection:account.chart,target_move:0
+#: selection:account.common.account.report,target_move:0
+#: selection:account.common.journal.report,target_move:0
+#: selection:account.common.partner.report,target_move:0
+#: selection:account.common.report,target_move:0
+#: selection:account.general.journal,target_move:0
+#: selection:account.move.journal,target_move:0
+#: selection:account.partner.balance,target_move:0
+#: selection:account.partner.ledger,target_move:0
+#: selection:account.print.journal,target_move:0
+#: selection:account.report.general.ledger,target_move:0
+#: selection:account.tax.chart,target_move:0
+#: selection:account.vat.declaration,target_move:0
+#: selection:accounting.report,target_move:0
+#: code:addons/account/report/common_report_header.py:67
+#, python-format
+msgid "All Entries"
+msgstr ""
+
+#. module: account
+#: constraint:product.template:0
+msgid ""
+"Error: The default UOM and the purchase UOM must be in the same category."
+msgstr ""
+
+#. module: account
+#: view:account.journal.select:0
+msgid "Journal Select"
+msgstr ""
+
+#. module: account
+#: view:account.bank.statement:0
+#: code:addons/account/account.py:420
+#: code:addons/account/account.py:432
+#, python-format
+msgid "Opening Balance"
+msgstr ""
+
+#. module: account
+#: model:ir.model,name:account.model_account_move_reconcile
+msgid "Account Reconciliation"
+msgstr ""
+
+#. module: account
+#: model:ir.model,name:account.model_account_fiscal_position_tax
+msgid "Taxes Fiscal Position"
+msgstr ""
+
+#. module: account
+#: report:account.general.ledger:0
+#: report:account.general.ledger_landscape:0
+#: view:account.report.general.ledger:0
+#: model:ir.actions.act_window,name:account.action_account_general_ledger_menu
+#: model:ir.actions.report.xml,name:account.account_general_ledger
+#: model:ir.actions.report.xml,name:account.account_general_ledger_landscape
+#: model:ir.ui.menu,name:account.menu_general_ledger
+msgid "General Ledger"
+msgstr ""
+
+#. module: account
+#: model:process.transition,note:account.process_transition_paymentorderbank0
+msgid "The payment order is sent to the bank."
+msgstr ""
+
+#. module: account
+#: view:account.balance.report:0
+msgid ""
+"This report allows you to print or generate a pdf of your trial balance "
+"allowing you to quickly check the balance of each of your accounts in a "
+"single report"
+msgstr ""
+
+#. module: account
+#: help:account.move,to_check:0
+msgid ""
+"Check this box if you are unsure of that journal entry and if you want to "
+"note it as 'to be reviewed' by an accounting expert."
+msgstr ""
+
+#. module: account
+#: field:account.chart.template,complete_tax_set:0
+#: field:wizard.multi.charts.accounts,complete_tax_set:0
+msgid "Complete Set of Taxes"
+msgstr ""
+
+#. module: account
+#: view:account.chart.template:0
+msgid "Properties"
+msgstr ""
+
+#. module: account
+#: model:ir.model,name:account.model_account_tax_chart
+msgid "Account tax chart"
+msgstr ""
+
+#. module: account
+#: constraint:res.partner.bank:0
+msgid ""
+"\n"
+"Please define BIC/Swift code on bank for bank type IBAN Account to make "
+"valid payments"
+msgstr ""
+
+#. module: account
+#: report:account.analytic.account.cost_ledger:0
+#: report:account.analytic.account.quantity_cost_ledger:0
+#: report:account.central.journal:0
+#: report:account.general.journal:0
+#: report:account.invoice:0
+#: report:account.journal.period.print:0
+#: report:account.journal.period.print.sale.purchase:0
+#: report:account.partner.balance:0
+msgid "Total:"
+msgstr ""
+
+#. module: account
+#: code:addons/account/account.py:2229
+#, python-format
+msgid ""
+"You can specify year, month and date in the name of the model using the "
+"following labels:\n"
+"\n"
+"%(year)s: To Specify Year \n"
+"%(month)s: To Specify Month \n"
+"%(date)s: Current Date\n"
+"\n"
+"e.g. My model on %(date)s"
+msgstr ""
+
+#. module: account
+#: help:report.invoice.created,origin:0
+msgid "Reference of the document that generated this invoice report."
+msgstr ""
+
+#. module: account
+#: field:account.tax.code,child_ids:0
+#: field:account.tax.code.template,child_ids:0
+msgid "Child Codes"
+msgstr ""
+
+#. module: account
+#: view:account.tax.template:0
+msgid "Taxes used in Sales"
+msgstr ""
+
+#. module: account
+#: code:addons/account/account_invoice.py:495
+#: code:addons/account/wizard/account_invoice_refund.py:145
+#, python-format
+msgid "Data Insufficient !"
+msgstr ""
+
+#. module: account
+#: model:ir.actions.act_window,name:account.action_invoice_tree1
+#: model:ir.ui.menu,name:account.menu_action_invoice_tree1
+msgid "Customer Invoices"
+msgstr ""
+
+#. module: account
+#: field:account.move.line.reconcile,writeoff:0
+msgid "Write-Off amount"
+msgstr ""
+
+#. module: account
+#: view:account.analytic.line:0
+msgid "Sales"
+msgstr ""
+
+#. module: account
+#: view:account.journal.column:0
+#: model:ir.model,name:account.model_account_journal_column
+msgid "Journal Column"
+msgstr ""
+
+#. module: account
+#: selection:account.invoice.report,state:0
+#: selection:account.journal.period,state:0
+#: selection:account.subscription,state:0
+#: selection:report.invoice.created,state:0
+msgid "Done"
+msgstr ""
+
+#. module: account
+#: model:ir.actions.act_window,help:account.action_bank_tree
+msgid ""
+"Configure your company's bank account and select those that must appear on "
+"the report footer. You can reorder banks in the list view. If you use the "
+"accounting application of OpenERP, journals and accounts will be created "
+"automatically based on these data."
+msgstr ""
+
+#. module: account
+#: model:process.transition,note:account.process_transition_invoicemanually0
+msgid "A statement with manual entries becomes a draft statement."
+msgstr ""
+
+#. module: account
+#: view:account.aged.trial.balance:0
+msgid ""
+"Aged Partner Balance is a more detailed report of your receivables by "
+"intervals. When opening that report, OpenERP asks for the name of the "
+"company, the fiscal period and the size of the interval to be analyzed (in "
+"days). OpenERP then calculates a table of credit balance by period. So if "
+"you request an interval of 30 days OpenERP generates an analysis of "
+"creditors for the past month, past two months, and so on. "
+msgstr ""
+
+#. module: account
+#: field:account.invoice,origin:0
+#: field:report.invoice.created,origin:0
+msgid "Source Document"
+msgstr ""
+
+#. module: account
+#: code:addons/account/account.py:1432
+#, python-format
+msgid "You can not delete a posted journal entry \"%s\"!"
+msgstr ""
+
+#. module: account
+#: selection:account.partner.ledger,filter:0
+#: code:addons/account/report/account_partner_ledger.py:59
+#: model:ir.actions.act_window,name:account.act_account_acount_move_line_open_unreconciled
+#, python-format
+msgid "Unreconciled Entries"
+msgstr ""
+
+#. module: account
+#: model:ir.ui.menu,name:account.menu_menu_Bank_process
+msgid "Statements Reconciliation"
+msgstr ""
+
+#. module: account
+#: model:ir.model,name:account.model_accounting_report
+msgid "Accounting Report"
+msgstr ""
+
+#. module: account
+#: report:account.invoice:0
+msgid "Taxes:"
+msgstr ""
+
+#. module: account
+#: help:account.tax,amount:0
+msgid "For taxes of type percentage, enter % ratio between 0-1."
+msgstr ""
+
+#. module: account
+#: model:ir.actions.act_window,help:account.action_subscription_form
+msgid ""
+"A recurring entry is a miscellaneous entry that occurs on a recurrent basis "
+"from a specific date, i.e. corresponding to the signature of a contract or "
+"an agreement with a customer or a supplier. With Define Recurring Entries, "
+"you can create such entries to automate the postings in the system."
+msgstr ""
+
+#. module: account
+#: model:ir.actions.act_window,name:account.action_account_report_tree_hierarchy
+msgid "Financial Reports Hierarchy"
+msgstr ""
+
+#. module: account
+#: field:account.entries.report,product_uom_id:0
+#: view:analytic.entries.report:0
+#: field:analytic.entries.report,product_uom_id:0
+msgid "Product UOM"
+msgstr ""
+
+#. module: account
+#: model:ir.actions.act_window,help:account.action_view_bank_statement_tree
+msgid ""
+"A Cash Register allows you to manage cash entries in your cash journals. "
+"This feature provides an easy way to follow up cash payments on a daily "
+"basis. You can enter the coins that are in your cash box, and then post "
+"entries when money comes in or goes out of the cash box."
+msgstr ""
+
+#. module: account
+#: help:account.invoice.refund,date:0
+msgid ""
+"This date will be used as the invoice date for Refund Invoice and Period "
+"will be chosen accordingly!"
+msgstr ""
+
+#. module: account
+#: model:ir.actions.act_window,name:account.act_account_invoice_partner_relation
+msgid "Monthly Turnover"
+msgstr ""
+
+#. module: account
+#: view:account.move:0
+#: view:account.move.line:0
+msgid "Analytic Lines"
+msgstr ""
+
+#. module: account
+#: field:account.analytic.journal,line_ids:0
+#: field:account.tax.code,line_ids:0
+msgid "Lines"
+msgstr ""
+
+#. module: account
+#: view:account.tax.template:0
+msgid "Account Tax Template"
+msgstr ""
+
+#. module: account
+#: view:account.journal.select:0
+msgid "Are you sure you want to open Journal Entries?"
+msgstr ""
+
+#. module: account
+#: view:account.state.open:0
+msgid "Are you sure you want to open this invoice ?"
+msgstr ""
+
+#. module: account
+#: code:addons/account/account_invoice.py:528
+#: code:addons/account/account_invoice.py:543
+#, python-format
+msgid ""
+"Can not find a chart of account, you should create one from the "
+"configuration of the accounting menu."
+msgstr ""
+
+#. module: account
+#: field:account.chart.template,property_account_expense_opening:0
+msgid "Opening Entries Expense Account"
+msgstr ""
+
+#. module: account
+#: code:addons/account/account_move_line.py:999
+#, python-format
+msgid "Accounting Entries"
+msgstr ""
+
+#. module: account
+#: field:account.account.template,parent_id:0
+msgid "Parent Account Template"
+msgstr ""
+
+#. module: account
+#: model:ir.actions.act_window,name:account.action_account_configuration_installer
+msgid "Configure your Chart of Accounts"
+msgstr ""
+
+#. module: account
+#: view:account.bank.statement:0
+#: field:account.bank.statement.line,statement_id:0
+#: field:account.move.line,statement_id:0
+#: model:process.process,name:account.process_process_statementprocess0
+msgid "Statement"
+msgstr ""
+
+#. module: account
+#: help:account.journal,default_debit_account_id:0
+msgid "It acts as a default account for debit amount"
+msgstr ""
+
+#. module: account
+#: model:ir.actions.act_window,help:account.action_account_journal_period_tree
+msgid ""
+"You can search for individual account entries through useful information. To "
+"search for account entries, open a journal, then select a record line."
+msgstr ""
+
+#. module: account
+#: view:account.entries.report:0
+msgid "Posted entries"
+msgstr ""
+
+#. module: account
+#: help:account.payment.term.line,value_amount:0
+msgid "For percent enter a ratio between 0-1."
+msgstr ""
+
+#. module: account
+#: report:account.invoice:0
+#: view:account.invoice:0
+#: field:account.invoice,date_invoice:0
+#: field:report.invoice.created,date_invoice:0
+msgid "Invoice Date"
+msgstr ""
+
+#. module: account
+#: view:account.invoice.report:0
+msgid "Group by year of Invoice Date"
+msgstr ""
+
+#. module: account
+#: help:res.partner,credit:0
+msgid "Total amount this customer owes you."
+msgstr ""
+
+#. module: account
+#: model:ir.model,name:account.model_ir_sequence
+msgid "ir.sequence"
+msgstr ""
+
+#. module: account
+#: field:account.journal.period,icon:0
+msgid "Icon"
+msgstr ""
+
+#. module: account
+#: view:account.automatic.reconcile:0
+#: view:account.use.model:0
+msgid "Ok"
+msgstr ""
+
+#. module: account
+#: field:account.chart.template,tax_code_root_id:0
+msgid "Root Tax Code"
+msgstr ""
+
+#. module: account
+#: help:account.journal,centralisation:0
+msgid ""
+"Check this box to determine that each entry of this journal won't create a "
+"new counterpart but will share the same counterpart. This is used in fiscal "
+"year closing."
+msgstr ""
+
+#. module: account
+#: field:account.bank.statement,closing_date:0
+msgid "Closed On"
+msgstr ""
+
+#. module: account
+#: model:ir.model,name:account.model_account_bank_statement_line
+msgid "Bank Statement Line"
+msgstr ""
+
+#. module: account
+#: field:account.automatic.reconcile,date2:0
+msgid "Ending Date"
+msgstr ""
+
+#. module: account
+#: field:wizard.multi.charts.accounts,purchase_tax:0
+msgid "Default Purchase Tax"
+msgstr ""
+
+#. module: account
+#: field:account.chart.template,property_account_income_opening:0
+msgid "Opening Entries Income Account"
+msgstr ""
+
+#. module: account
+#: view:account.bank.statement:0
+msgid "Confirm"
+msgstr ""
+
+#. module: account
+#: help:account.tax,domain:0
+#: help:account.tax.template,domain:0
+msgid ""
+"This field is only used if you develop your own module allowing developers "
+"to create specific taxes in a custom domain."
+msgstr ""
+
+#. module: account
+#: code:addons/account/account.py:1088
+#, python-format
+msgid "You should have chosen periods that belongs to the same company"
+msgstr ""
+
+#. module: account
+#: model:ir.actions.act_window,name:account.action_review_payment_terms_installer
+msgid "Review your Payment Terms"
+msgstr ""
+
+#. module: account
+#: field:account.fiscalyear.close,report_name:0
+msgid "Name of new entries"
+msgstr ""
+
+#. module: account
+#: view:account.use.model:0
+msgid "Create Entries"
+msgstr ""
+
+#. module: account
+#: view:res.partner:0
+msgid "Information About the Bank"
+msgstr ""
+
+#. module: account
+#: model:ir.ui.menu,name:account.menu_finance_reporting
+msgid "Reporting"
+msgstr ""
+
+#. module: account
+#: code:addons/account/account_move_line.py:759
+#: code:addons/account/account_move_line.py:842
+#: code:addons/account/wizard/account_invoice_state.py:44
+#: code:addons/account/wizard/account_invoice_state.py:68
+#: code:addons/account/wizard/account_state_open.py:37
+#: code:addons/account/wizard/account_validate_account_move.py:39
+#: code:addons/account/wizard/account_validate_account_move.py:61
+#, python-format
+msgid "Warning"
+msgstr ""
+
+#. module: account
+#: model:ir.actions.act_window,name:account.action_analytic_open
+msgid "Contracts/Analytic Accounts"
+msgstr ""
+
+#. module: account
+#: field:account.bank.statement,ending_details_ids:0
+msgid "Closing Cashbox"
+msgstr ""
+
+#. module: account
+#: view:account.journal:0
+#: field:res.partner.bank,journal_id:0
+msgid "Account Journal"
+msgstr ""
+
+#. module: account
+#: model:process.node,name:account.process_node_paidinvoice0
+#: model:process.node,name:account.process_node_supplierpaidinvoice0
+msgid "Paid invoice"
+msgstr ""
+
+#. module: account
+#: help:account.partner.reconcile.process,next_partner_id:0
+msgid ""
+"This field shows you the next partner that will be automatically chosen by "
+"the system to go through the reconciliation process, based on the latest day "
+"it have been reconciled."
+msgstr ""
+
+#. module: account
+#: field:account.move.line.reconcile.writeoff,comment:0
+msgid "Comment"
+msgstr ""
+
+#. module: account
+#: field:account.tax,domain:0
+#: field:account.tax.template,domain:0
+msgid "Domain"
+msgstr ""
+
+#. module: account
+#: model:ir.model,name:account.model_account_use_model
+msgid "Use model"
+msgstr ""
+
+#. module: account
+#: code:addons/account/account.py:429
+#, python-format
+msgid "Unable to adapt the initial balance (negative value)!"
+msgstr ""
+
+#. module: account
+#: model:ir.actions.act_window,help:account.action_account_moves_purchase
+msgid ""
+"This view is used by accountants in order to record entries massively in "
+"OpenERP. If you want to record a supplier invoice, start by recording the "
+"line of the expense account, OpenERP will propose to you automatically the "
+"Tax related to this account and the counter-part \"Account Payable\"."
+msgstr ""
+
+#. module: account
+#: view:account.invoice.line:0
+#: field:account.invoice.tax,invoice_id:0
+#: model:ir.model,name:account.model_account_invoice_line
+msgid "Invoice Line"
+msgstr ""
+
+#. module: account
+#: view:account.invoice.report:0
+msgid "Customer And Supplier Refunds"
+msgstr ""
+
+#. module: account
+#: field:account.financial.report,sign:0
+msgid "Sign on Reports"
+msgstr ""
+
+#. module: account
+#: code:addons/account/wizard/account_fiscalyear_close.py:73
+#, python-format
+msgid "The periods to generate opening entries were not found"
+msgstr ""
+
+#. module: account
+#: model:account.account.type,name:account.data_account_type_view
+msgid "Root/View"
+msgstr ""
+
+#. module: account
+#: code:addons/account/account.py:3121
+#, python-format
+msgid "OPEJ"
+msgstr ""
+
+#. module: account
+#: report:account.invoice:0
+#: view:account.invoice:0
+msgid "PRO-FORMA"
+msgstr ""
+
+#. module: account
+#: selection:account.entries.report,move_line_state:0
+#: view:account.move.line:0
+#: selection:account.move.line,state:0
+msgid "Unbalanced"
+msgstr ""
+
+#. module: account
+#: selection:account.move.line,centralisation:0
+msgid "Normal"
+msgstr ""
+
+#. module: account
+#: model:ir.actions.act_window,name:account.action_email_templates
+#: model:ir.ui.menu,name:account.menu_email_templates
+msgid "Email Templates"
+msgstr ""
+
+#. module: account
+#: view:account.move.line:0
+msgid "Optional Information"
+msgstr ""
+
+#. module: account
+#: code:addons/account/wizard/account_fiscalyear_close.py:84
+#, python-format
+msgid "The journal must have default credit and debit account"
+msgstr ""
+
+#. module: account
+#: report:account.general.journal:0
+msgid ":"
+msgstr ""
+
+#. module: account
+#: selection:account.account,currency_mode:0
+msgid "At Date"
+msgstr ""
+
+#. module: account
+#: help:account.move.line,date_maturity:0
+msgid ""
+"This field is used for payable and receivable journal entries. You can put "
+"the limit date for the payment of this line."
+msgstr ""
+
+#. module: account
+#: model:ir.ui.menu,name:account.menu_multi_currency
+msgid "Multi-Currencies"
+msgstr ""
+
+#. module: account
+#: field:account.model.line,date_maturity:0
+msgid "Maturity Date"
+msgstr ""
+
+#. module: account
+#: code:addons/account/account_move_line.py:1302
+#, python-format
+msgid "Bad account !"
+msgstr ""
+
+#. module: account
+#: code:addons/account/account.py:3108
+#, python-format
+msgid "Sales Journal"
+msgstr ""
+
+#. module: account
+#: code:addons/account/wizard/account_move_journal.py:104
+#, python-format
+msgid "Open Journal Items !"
+msgstr ""
+
+#. module: account
+#: model:ir.model,name:account.model_account_invoice_tax
+msgid "Invoice Tax"
+msgstr ""
+
+#. module: account
+#: code:addons/account/account_move_line.py:1277
+#, python-format
+msgid "No piece number !"
+msgstr ""
+
+#. module: account
+#: view:account.financial.report:0
+#: model:ir.ui.menu,name:account.menu_account_report_tree_hierarchy
+msgid "Account Reports Hierarchy"
+msgstr ""
+
+#. module: account
+#: help:account.account.template,chart_template_id:0
+msgid ""
+"This optional field allow you to link an account template to a specific "
+"chart template that may differ from the one its root parent belongs to. This "
+"allow you to define chart templates that extend another and complete it with "
+"few new accounts (You don't need to define the whole structure that is "
+"common to both several times)."
+msgstr ""
+
+#. module: account
+#: view:account.move:0
+msgid "Unposted Journal Entries"
+msgstr ""
+
+#. module: account
+#: view:product.product:0
+#: view:product.template:0
+msgid "Sales Properties"
+msgstr ""
+
+#. module: account
+#: model:ir.ui.menu,name:account.menu_manual_reconcile
+msgid "Manual Reconciliation"
+msgstr ""
+
+#. module: account
+#: report:account.overdue:0
+msgid "Total amount due:"
+msgstr ""
+
+#. module: account
+#: field:account.analytic.chart,to_date:0
+#: field:project.account.analytic.line,to_date:0
+msgid "To"
+msgstr ""
+
+#. module: account
+#: selection:account.move.line,centralisation:0
+#: code:addons/account/account.py:1518
+#, python-format
+msgid "Currency Adjustment"
+msgstr ""
+
+#. module: account
+#: field:account.fiscalyear.close,fy_id:0
+#: field:account.fiscalyear.close.state,fy_id:0
+msgid "Fiscal Year to close"
+msgstr ""
+
+#. module: account
+#: view:account.invoice.cancel:0
+#: model:ir.actions.act_window,name:account.action_account_invoice_cancel
+msgid "Cancel Selected Invoices"
+msgstr ""
+
+#. module: account
+#: help:account.account.type,report_type:0
+msgid ""
+"This field is used to generate legal reports: profit and loss, balance sheet."
+msgstr ""
+
+#. module: account
+#: model:ir.actions.act_window,help:account.action_review_payment_terms_installer
+msgid ""
+"Payment terms define the conditions to pay a customer or supplier invoice in "
+"one or several payments. Customers periodic reminders will use the payment "
+"terms for each letter. Each customer or supplier can be assigned to one of "
+"these payment terms."
+msgstr ""
+
+#. module: account
+#: selection:account.entries.report,month:0
+#: selection:account.invoice.report,month:0
+#: selection:analytic.entries.report,month:0
+#: selection:report.account.sales,month:0
+#: selection:report.account_type.sales,month:0
+msgid "May"
+msgstr ""
+
+#. module: account
+#: view:account.account:0
+#: view:account.account.template:0
+#: selection:account.aged.trial.balance,result_selection:0
+#: selection:account.common.partner.report,result_selection:0
+#: selection:account.partner.balance,result_selection:0
+#: selection:account.partner.ledger,result_selection:0
+#: code:addons/account/report/account_partner_balance.py:299
+#, python-format
+msgid "Payable Accounts"
+msgstr ""
+
+#. module: account
+#: code:addons/account/account_invoice.py:732
+#, python-format
+msgid "Global taxes defined, but they are not in invoice lines !"
+msgstr ""
+
+#. module: account
+#: model:ir.model,name:account.model_account_chart_template
+msgid "Templates for Account Chart"
+msgstr ""
+
+#. module: account
+#: help:account.model.line,sequence:0
+msgid ""
+"The sequence field is used to order the resources from lower sequences to "
+"higher ones."
+msgstr ""
+
+#. module: account
+#: field:account.tax.code,code:0
+#: field:account.tax.code.template,code:0
+msgid "Case Code"
+msgstr ""
+
+#. module: account
+#: view:validate.account.move:0
+msgid "Post Journal Entries of a Journal"
+msgstr ""
+
+#. module: account
+#: view:product.product:0
+msgid "Sale Taxes"
+msgstr ""
+
+#. module: account
+#: field:account.financial.report,name:0
+msgid "Report Name"
+msgstr ""
+
+#. module: account
+#: model:account.account.type,name:account.data_account_type_cash
+#: selection:account.analytic.journal,type:0
+#: selection:account.bank.accounts.wizard,account_type:0
+#: selection:account.entries.report,type:0
+#: selection:account.journal,type:0
+#: code:addons/account/account.py:3003
+#, python-format
+msgid "Cash"
+msgstr ""
+
+#. module: account
+#: field:account.fiscal.position.account,account_dest_id:0
+#: field:account.fiscal.position.account.template,account_dest_id:0
+msgid "Account Destination"
+msgstr ""
+
+#. module: account
+#: code:addons/account/account.py:1431
+#: code:addons/account/account.py:1460
+#: code:addons/account/account.py:1467
+#: code:addons/account/account_invoice.py:920
+#: code:addons/account/account_move_line.py:1104
+#: code:addons/account/wizard/account_automatic_reconcile.py:152
+#: code:addons/account/wizard/account_fiscalyear_close.py:73
+#: code:addons/account/wizard/account_fiscalyear_close.py:83
+#: code:addons/account/wizard/account_fiscalyear_close.py:86
+#: code:addons/account/wizard/account_move_journal.py:165
+#: code:addons/account/wizard/account_report_aged_partner_balance.py:56
+#: code:addons/account/wizard/account_report_aged_partner_balance.py:58
+#, python-format
+msgid "UserError"
+msgstr ""
+
+#. module: account
+#: model:process.node,note:account.process_node_supplierpaymentorder0
+msgid "Payment of invoices"
+msgstr ""
+
+#. module: account
+#: field:account.bank.statement.line,sequence:0
+#: field:account.financial.report,sequence:0
+#: field:account.invoice.tax,sequence:0
+#: view:account.journal:0
+#: field:account.journal.column,sequence:0
+#: field:account.model.line,sequence:0
+#: field:account.payment.term.line,sequence:0
+#: field:account.sequence.fiscalyear,sequence_id:0
+#: field:account.tax,sequence:0
+#: field:account.tax.code,sequence:0
+#: field:account.tax.template,sequence:0
+msgid "Sequence"
+msgstr ""
+
+#. module: account
+#: constraint:product.category:0
+msgid "Error ! You cannot create recursive categories."
+msgstr ""
+
+#. module: account
+#: help:account.model.line,quantity:0
+msgid "The optional quantity on entries."
+msgstr ""
+
+#. module: account
+#: view:account.financial.report:0
+msgid "Parent Report"
+msgstr ""
+
+#. module: account
+#: view:account.state.open:0
+msgid "Yes"
+msgstr ""
+
+#. module: account
+#: view:report.account_type.sales:0
+msgid "Sales by Account type"
+msgstr ""
+
+#. module: account
+#: help:account.invoice,move_id:0
+msgid "Link to the automatically generated Journal Items."
+msgstr ""
+
+#. module: account
+#: selection:account.installer,period:0
+msgid "Monthly"
+msgstr ""
+
+#. module: account
+#: model:ir.actions.act_window,help:account.action_account_journal_view
+msgid ""
+"Here you can customize an existing journal view or create a new view. "
+"Journal views determine the way you can record entries in your journal. "
+"Select the fields you want to appear in a journal and determine the sequence "
+"in which they will appear. Then you can create a new journal and link your "
+"view to it."
+msgstr ""
+
+#. module: account
+#: model:account.account.type,name:account.data_account_type_asset
+msgid "Asset"
+msgstr ""
+
+#. module: account
+#: view:analytic.entries.report:0
+msgid " 7 Days "
+msgstr ""
+
+#. module: account
+#: field:account.bank.statement,balance_end:0
+msgid "Computed Balance"
+msgstr ""
+
+#. module: account
+#: field:account.account,parent_id:0
+#: field:account.financial.report,parent_id:0
+msgid "Parent"
+msgstr ""
+
+#. module: account
+#: help:account.payment.term.line,days2:0
+msgid ""
+"Day of the month, set -1 for the last day of the current month. If it's "
+"positive, it gives the day of the next month. Set 0 for net days (otherwise "
+"it's based on the beginning of the month)."
+msgstr ""
+
+#. module: account
+#: model:ir.ui.menu,name:account.menu_finance_legal_statement
+msgid "Legal Reports"
+msgstr ""
+
+#. module: account
+#: field:account.tax.code,sum_period:0
+msgid "Period Sum"
+msgstr ""
+
+#. module: account
+#: help:account.tax,sequence:0
+msgid ""
+"The sequence field is used to order the tax lines from the lowest sequences "
+"to the higher ones. The order is important if you have a tax with several "
+"tax children. In this case, the evaluation order is important."
+msgstr ""
+
+#. module: account
+#: model:ir.model,name:account.model_account_cashbox_line
+msgid "CashBox Line"
+msgstr ""
+
+#. module: account
+#: view:account.partner.ledger:0
+#: report:account.third_party_ledger:0
+#: report:account.third_party_ledger_other:0
+#: model:ir.actions.report.xml,name:account.account_3rdparty_ledger
+#: model:ir.actions.report.xml,name:account.account_3rdparty_ledger_other
+#: model:ir.ui.menu,name:account.menu_account_partner_ledger
+msgid "Partner Ledger"
+msgstr ""
+
+#. module: account
+#: selection:account.tax.template,type:0
+msgid "Fixed"
+msgstr ""
+
+#. module: account
+#: code:addons/account/account.py:629
+#: code:addons/account/account.py:642
+#: code:addons/account/account.py:645
+#: code:addons/account/account.py:664
+#: code:addons/account/account.py:787
+#: code:addons/account/account.py:1077
+#: code:addons/account/account_invoice.py:732
+#: code:addons/account/account_invoice.py:735
+#: code:addons/account/account_invoice.py:738
+#: code:addons/account/account_move_line.py:97
+#: code:addons/account/account_move_line.py:750
+#: code:addons/account/account_move_line.py:803
+#, python-format
+msgid "Warning !"
+msgstr ""
+
+#. module: account
+#: field:account.entries.report,move_line_state:0
+msgid "State of Move Line"
+msgstr ""
+
+#. module: account
+#: model:ir.model,name:account.model_account_move_line_reconcile
+msgid "Account move line reconcile"
+msgstr ""
+
+#. module: account
+#: view:account.subscription.generate:0
+#: model:ir.model,name:account.model_account_subscription_generate
+msgid "Subscription Compute"
+msgstr ""
+
+#. module: account
+#: field:account.bank.statement.line,partner_id:0
+#: view:account.entries.report:0
+#: field:account.entries.report,partner_id:0
+#: report:account.general.ledger:0
+#: report:account.general.ledger_landscape:0
+#: view:account.invoice:0
+#: field:account.invoice,partner_id:0
+#: field:account.invoice.line,partner_id:0
+#: view:account.invoice.report:0
+#: field:account.invoice.report,partner_id:0
+#: report:account.journal.period.print:0
+#: report:account.journal.period.print.sale.purchase:0
+#: field:account.model.line,partner_id:0
+#: view:account.move:0
+#: field:account.move,partner_id:0
+#: view:account.move.line:0
+#: field:account.move.line,partner_id:0
+#: view:analytic.entries.report:0
+#: field:analytic.entries.report,partner_id:0
+#: model:ir.model,name:account.model_res_partner
+#: field:report.invoice.created,partner_id:0
+msgid "Partner"
+msgstr ""
+
+#. module: account
+#: help:account.change.currency,currency_id:0
+msgid "Select a currency to apply on the invoice"
+msgstr ""
+
+#. module: account
+#: code:addons/account/account.py:3446
+#, python-format
+msgid ""
+"The bank account defined on the selected chart of accounts hasn't a code."
+msgstr ""
+
+#. module: account
+#: code:addons/account/wizard/account_invoice_refund.py:108
+#, python-format
+msgid "Can not %s draft/proforma/cancel invoice."
+msgstr ""
+
+#. module: account
+#: code:addons/account/account_invoice.py:810
+#, python-format
+msgid "No Invoice Lines !"
+msgstr ""
+
+#. module: account
+#: view:account.financial.report:0
+msgid "Report Type"
+msgstr ""
+
+#. module: account
+#: view:account.analytic.account:0
+#: view:account.bank.statement:0
+#: field:account.bank.statement,state:0
+#: field:account.entries.report,move_state:0
+#: view:account.fiscalyear:0
+#: field:account.fiscalyear,state:0
+#: view:account.invoice:0
+#: field:account.invoice,state:0
+#: view:account.invoice.report:0
+#: field:account.journal.period,state:0
+#: field:account.move,state:0
+#: view:account.move.line:0
+#: field:account.move.line,state:0
+#: field:account.period,state:0
+#: view:account.subscription:0
+#: field:account.subscription,state:0
+#: field:report.invoice.created,state:0
+msgid "State"
+msgstr ""
+
+#. module: account
+#: help:account.open.closed.fiscalyear,fyear_id:0
+msgid ""
+"Select Fiscal Year which you want to remove entries for its End of year "
+"entries journal"
+msgstr ""
+
+#. module: account
+#: field:account.tax.template,type_tax_use:0
+msgid "Tax Use In"
+msgstr ""
+
+#. module: account
+#: code:addons/account/account_bank_statement.py:315
+#, python-format
+msgid ""
+"The statement balance is incorrect !\n"
+"The expected balance (%.2f) is different than the computed one. (%.2f)"
+msgstr ""
+
+#. module: account
+#: code:addons/account/account_bank_statement.py:353
+#, python-format
+msgid "The account entries lines are not in valid state."
+msgstr ""
+
+#. module: account
+#: model:ir.actions.act_window,help:account.action_account_analytic_account_tree2
+msgid ""
+"The normal chart of accounts has a structure defined by the legal "
+"requirement of the country. The analytic chart of accounts structure should "
+"reflect your own business needs in term of costs/revenues reporting. They "
+"are usually structured by contracts, projects, products or departements. "
+"Most of the OpenERP operations (invoices, timesheets, expenses, etc) "
+"generate analytic entries on the related account."
+msgstr ""
+
+#. module: account
+#: field:account.account.type,close_method:0
+msgid "Deferral Method"
+msgstr ""
+
+#. module: account
+#: code:addons/account/account_invoice.py:379
+#, python-format
+msgid "Invoice '%s' is paid."
+msgstr ""
+
+#. module: account
+#: model:process.node,note:account.process_node_electronicfile0
+msgid "Automatic entry"
+msgstr ""
+
+#. module: account
+#: constraint:account.tax.code.template:0
+msgid "Error ! You can not create recursive Tax Codes."
+msgstr ""
+
+#. module: account
+#: help:account.journal,group_invoice_lines:0
+msgid ""
+"If this box is checked, the system will try to group the accounting lines "
+"when generating them from invoices."
+msgstr ""
+
+#. module: account
+#: help:account.account,reconcile:0
+msgid ""
+"Check this box if this account allows reconciliation of journal items."
+msgstr ""
+
+#. module: account
+#: help:account.period,state:0
+msgid ""
+"When monthly periods are created. The state is 'Draft'. At the end of "
+"monthly period it is in 'Done' state."
+msgstr ""
+
+#. module: account
+#: report:account.analytic.account.inverted.balance:0
+msgid "Inverted Analytic Balance -"
+msgstr ""
+
+#. module: account
+#: view:account.move.bank.reconcile:0
+msgid "Open for Bank Reconciliation"
+msgstr ""
+
+#. module: account
+#: view:account.analytic.line:0
+#: model:ir.actions.act_window,name:account.action_account_analytic_line_form
+msgid "Analytic Entries"
+msgstr ""
+
+#. module: account
+#: view:report.account_type.sales:0
+msgid "This Months Sales by type"
+msgstr ""
+
+#. module: account
+#: view:account.analytic.account:0
+msgid "Associated Partner"
+msgstr ""
+
+#. module: account
+#: code:addons/account/account_invoice.py:1332
+#, python-format
+msgid "You must first select a partner !"
+msgstr ""
+
+#. module: account
+#: view:account.invoice:0
+#: field:account.invoice,comment:0
+msgid "Additional Information"
+msgstr ""
+
+#. module: account
+#: help:account.invoice,state:0
+msgid ""
+" * The 'Draft' state is used when a user is encoding a new and unconfirmed "
+"Invoice. \n"
+"* The 'Pro-forma' when invoice is in Pro-forma state,invoice does not have "
+"an invoice number. \n"
+"* The 'Open' state is used when user create invoice,a invoice number is "
+"generated.Its in open state till user does not pay invoice. \n"
+"* The 'Paid' state is set automatically when the invoice is paid. Its "
+"related journal entries may or may not be reconciled. \n"
+"* The 'Cancelled' state is used when user cancel invoice."
+msgstr ""
+
+#. module: account
+#: view:account.invoice.report:0
+#: field:account.invoice.report,residual:0
+msgid "Total Residual"
+msgstr ""
+
+#. module: account
+#: model:process.node,note:account.process_node_invoiceinvoice0
+#: model:process.node,note:account.process_node_supplierinvoiceinvoice0
+msgid "Invoice's state is Open"
+msgstr ""
+
+#. module: account
+#: model:ir.actions.act_window,help:account.action_tax_code_tree
+msgid ""
+"The chart of taxes is used to generate your periodical tax statement. You "
+"will see the taxes with codes related to your legal statement according to "
+"your country."
+msgstr ""
+
+#. module: account
+#: code:addons/account/account_invoice.py:428
+#, python-format
+msgid ""
+"Can not find a chart of accounts for this company, you should create one."
+msgstr ""
+
+#. module: account
+#: view:account.invoice:0
+msgid "Proforma"
+msgstr ""
+
+#. module: account
+#: report:account.analytic.account.cost_ledger:0
+msgid "J.C. /Move name"
+msgstr ""
+
+#. module: account
+#: model:ir.model,name:account.model_account_open_closed_fiscalyear
+msgid "Choose Fiscal Year"
+msgstr ""
+
+#. module: account
+#: code:addons/account/account.py:3111
+#, python-format
+msgid "Purchase Refund Journal"
+msgstr ""
+
+#. module: account
+#: help:account.tax.template,amount:0
+msgid "For Tax Type percent enter % ratio between 0-1."
+msgstr ""
+
+#. module: account
+#: view:account.analytic.account:0
+msgid "Current Accounts"
+msgstr ""
+
+#. module: account
+#: view:account.invoice.report:0
+msgid "Group by Invoice Date"
+msgstr ""
+
+#. module: account
+#: view:account.invoice.refund:0
+msgid ""
+"Modify Invoice: Cancels the current invoice and creates a new copy of it "
+"ready for editing."
+msgstr ""
+
+#. module: account
+#: field:account.automatic.reconcile,period_id:0
+#: view:account.bank.statement:0
+#: field:account.bank.statement,period_id:0
+#: view:account.entries.report:0
+#: field:account.entries.report,period_id:0
+#: view:account.fiscalyear:0
+#: report:account.general.ledger_landscape:0
+#: view:account.invoice:0
+#: view:account.invoice.report:0
+#: field:account.journal.period,period_id:0
+#: report:account.journal.period.print:0
+#: report:account.journal.period.print.sale.purchase:0
+#: view:account.move:0
+#: field:account.move,period_id:0
+#: view:account.move.line:0
+#: field:account.move.line,period_id:0
+#: view:account.period:0
+#: field:account.subscription,period_nbr:0
+#: field:account.tax.chart,period_id:0
+#: field:account.treasury.report,period_id:0
+#: field:validate.account.move,period_id:0
+msgid "Period"
+msgstr ""
+
+#. module: account
+#: help:account.account,adjusted_balance:0
+msgid ""
+"Total amount (in Company currency) for transactions held in secondary "
+"currency for this account."
+msgstr ""
+
+#. module: account
+#: report:account.invoice:0
+msgid "Net Total:"
+msgstr ""
+
+#. module: account
+#: model:ir.ui.menu,name:account.menu_finance_generic_reporting
+msgid "Generic Reporting"
+msgstr ""
+
+#. module: account
+#: field:account.move.line.reconcile.writeoff,journal_id:0
+msgid "Write-Off Journal"
+msgstr ""
+
+#. module: account
+#: help:res.partner,property_payment_term:0
+msgid ""
+"This payment term will be used instead of the default one for the current "
+"partner"
+msgstr ""
+
+#. module: account
+#: view:account.tax.template:0
+msgid "Compute Code for Taxes Included Prices"
+msgstr ""
+
+#. module: account
+#: code:addons/account/account_invoice.py:1030
+#, python-format
+msgid ""
+"You can not cancel an invoice which is partially paid! You need to "
+"unreconcile related payment entries first!"
+msgstr ""
+
+#. module: account
+#: field:account.chart.template,property_account_income_categ:0
+msgid "Income Category Account"
+msgstr ""
+
+#. module: account
+#: field:account.account,adjusted_balance:0
+msgid "Adjusted Balance"
+msgstr ""
+
+#. module: account
+#: model:ir.actions.act_window,name:account.action_account_fiscal_position_template_form
+#: model:ir.ui.menu,name:account.menu_action_account_fiscal_position_form_template
+msgid "Fiscal Position Templates"
+msgstr ""
+
+#. module: account
+#: view:account.entries.report:0
+msgid "Int.Type"
+msgstr ""
+
+#. module: account
+#: field:account.move.line,tax_amount:0
+msgid "Tax/Base Amount"
+msgstr ""
+
+#. module: account
+#: view:account.payment.term.line:0
+msgid " Valuation: Percent"
+msgstr ""
+
+#. module: account
+#: model:ir.actions.act_window,help:account.action_invoice_tree3
+msgid ""
+"With Customer Refunds you can manage the credit notes for your customers. A "
+"refund is a document that credits an invoice completely or partially. You "
+"can easily generate refunds and reconcile them directly from the invoice "
+"form."
+msgstr ""
+
+#. module: account
+#: model:ir.actions.act_window,help:account.action_account_vat_declaration
+msgid ""
+"This menu print a VAT declaration based on invoices or payments. You can "
+"select one or several periods of the fiscal year. Information required for a "
+"tax declaration is automatically generated by OpenERP from invoices (or "
+"payments, in some countries). This data is updated in real time. That’s very "
+"useful because it enables you to preview at any time the tax that you owe at "
+"the start and end of the month or quarter."
+msgstr ""
+
+#. module: account
+#: report:account.invoice:0
+msgid "Tel. :"
+msgstr ""
+
+#. module: account
+#: field:account.account,company_currency_id:0
+msgid "Company Currency"
+msgstr ""
+
+#. module: account
+#: field:account.aged.trial.balance,chart_account_id:0
+#: field:account.balance.report,chart_account_id:0
+#: field:account.central.journal,chart_account_id:0
+#: field:account.common.account.report,chart_account_id:0
+#: field:account.common.journal.report,chart_account_id:0
+#: field:account.common.partner.report,chart_account_id:0
+#: field:account.common.report,chart_account_id:0
+#: field:account.general.journal,chart_account_id:0
+#: field:account.partner.balance,chart_account_id:0
+#: field:account.partner.ledger,chart_account_id:0
+#: field:account.print.journal,chart_account_id:0
+#: field:account.report.general.ledger,chart_account_id:0
+#: field:account.vat.declaration,chart_account_id:0
+#: field:accounting.report,chart_account_id:0
+msgid "Chart of Account"
+msgstr ""
+
+#. module: account
+#: model:process.node,name:account.process_node_paymententries0
+#: model:process.transition,name:account.process_transition_reconcilepaid0
+msgid "Payment"
+msgstr ""
+
+#. module: account
+#: field:account.bank.statement,balance_end_real:0
+#: field:account.treasury.report,ending_balance:0
+msgid "Ending Balance"
+msgstr ""
+
+#. module: account
+#: help:account.move.line,blocked:0
+msgid ""
+"You can check this box to mark this journal item as a litigation with the "
+"associated partner"
+msgstr ""
+
+#. module: account
+#: field:account.move.line,reconcile_partial_id:0
+#: view:account.move.line.reconcile:0
+msgid "Partial Reconcile"
+msgstr ""
+
+#. module: account
+#: model:ir.model,name:account.model_account_analytic_inverted_balance
+msgid "Account Analytic Inverted Balance"
+msgstr ""
+
+#. module: account
+#: model:ir.model,name:account.model_account_common_report
+msgid "Account Common Report"
+msgstr ""
+
+#. module: account
+#: view:account.invoice.report:0
+#: view:analytic.entries.report:0
+msgid "current month"
+msgstr ""
+
+#. module: account
+#: code:addons/account/account.py:1052
+#, python-format
+msgid ""
+"No period defined for this date: %s !\n"
+"Please create one."
+msgstr ""
+
+#. module: account
+#: model:process.transition,name:account.process_transition_filestatement0
+msgid "Automatic import of the bank sta"
+msgstr ""
+
+#. module: account
+#: model:ir.actions.act_window,name:account.action_account_journal_view
+#: model:ir.ui.menu,name:account.menu_action_account_journal_view
+msgid "Journal Views"
+msgstr ""
+
+#. module: account
+#: model:ir.model,name:account.model_account_move_bank_reconcile
+msgid "Move bank reconcile"
+msgstr ""
+
+#. module: account
+#: field:account.financial.report,account_type_ids:0
+#: model:ir.actions.act_window,name:account.action_account_type_form
+#: model:ir.ui.menu,name:account.menu_action_account_type_form
+msgid "Account Types"
+msgstr ""
+
+#. module: account
+#: view:account.payment.term.line:0
+msgid " Value amount: n.a"
+msgstr ""
+
+#. module: account
+#: view:account.automatic.reconcile:0
+#: view:account.move:0
+#: view:account.move.line:0
+#: view:account.move.line.reconcile:0
+#: view:account.move.line.reconcile.select:0
+#: code:addons/account/wizard/account_move_line_reconcile_select.py:45
+#: model:ir.ui.menu,name:account.periodical_processing_reconciliation
+#: model:process.node,name:account.process_node_reconciliation0
+#: model:process.node,name:account.process_node_supplierreconciliation0
+#, python-format
+msgid "Reconciliation"
+msgstr ""
+
+#. module: account
+#: view:account.chart.template:0
+#: field:account.chart.template,property_account_receivable:0
+msgid "Receivable Account"
+msgstr ""
+
+#. module: account
+#: view:account.invoice:0
+msgid ""
+"This button only appears when the state of the invoice is 'paid' (showing "
+"that it has been fully reconciled) and auto-computed boolean 'reconciled' is "
+"False (depicting that it's not the case anymore). In other words, the "
+"invoice has been dereconciled and it does not fit anymore the 'paid' state. "
+"You should press this button to re-open it and let it continue its normal "
+"process after having resolved the eventual exceptions it may have created."
+msgstr ""
+
+#. module: account
+#: model:ir.model,name:account.model_account_fiscalyear_close_state
+msgid "Fiscalyear Close state"
+msgstr ""
+
+#. module: account
+#: field:account.invoice.refund,journal_id:0
+msgid "Refund Journal"
+msgstr ""
+
+#. module: account
+#: report:account.account.balance:0
+#: report:account.central.journal:0
+#: report:account.general.journal:0
+#: report:account.general.ledger:0
+#: report:account.general.ledger_landscape:0
+#: report:account.partner.balance:0
+msgid "Filter By"
+msgstr ""
+
+#. module: account
+#: model:ir.actions.act_window,help:account.action_invoice_tree1
+msgid ""
+"With Customer Invoices you can create and manage sales invoices issued to "
+"your customers. OpenERP can also generate draft invoices automatically from "
+"sales orders or deliveries. You should only confirm them before sending them "
+"to your customers."
+msgstr ""
+
+#. module: account
+#: code:addons/account/wizard/account_period_close.py:51
+#, python-format
+msgid ""
+"In order to close a period, you must first post related journal entries."
+msgstr ""
+
+#. module: account
+#: view:account.entries.report:0
+#: view:board.board:0
+#: model:ir.actions.act_window,name:account.action_company_analysis_tree
+msgid "Company Analysis"
+msgstr ""
+
+#. module: account
+#: help:account.invoice,account_id:0
+msgid "The partner account used for this invoice."
+msgstr ""
+
+#. module: account
+#: code:addons/account/account.py:3296
+#, python-format
+msgid "Tax %.2f%%"
+msgstr ""
+
+#. module: account
+#: view:account.analytic.account:0
+msgid "Contacts"
+msgstr ""
+
+#. module: account
+#: field:account.tax.code,parent_id:0
+#: view:account.tax.code.template:0
+#: field:account.tax.code.template,parent_id:0
+msgid "Parent Code"
+msgstr ""
+
+#. module: account
+#: model:ir.model,name:account.model_account_payment_term_line
+msgid "Payment Term Line"
+msgstr ""
+
+#. module: account
+#: code:addons/account/account.py:3109
+#, python-format
+msgid "Purchase Journal"
+msgstr ""
+
+#. module: account
+#: view:account.invoice.refund:0
+msgid "Refund Invoice: Creates the refund invoice, ready for editing."
+msgstr ""
+
+#. module: account
+#: field:account.invoice.line,price_subtotal:0
+msgid "Subtotal"
+msgstr ""
+
+#. module: account
+#: view:account.vat.declaration:0
+msgid "Print Tax Statement"
+msgstr ""
+
+#. module: account
+#: view:account.model.line:0
+msgid "Journal Entry Model Line"
+msgstr ""
+
+#. module: account
+#: view:account.invoice:0
+#: field:account.invoice,date_due:0
+#: view:account.invoice.report:0
+#: field:account.invoice.report,date_due:0
+#: field:report.invoice.created,date_due:0
+msgid "Due Date"
+msgstr ""
+
+#. module: account
+#: model:ir.ui.menu,name:account.menu_account_supplier
+#: model:ir.ui.menu,name:account.menu_finance_payables
+msgid "Suppliers"
+msgstr ""
+
+#. module: account
+#: view:account.journal:0
+msgid "Accounts Type Allowed (empty for no control)"
+msgstr ""
+
+#. module: account
+#: view:res.partner:0
+msgid "Supplier Accounting Properties"
+msgstr ""
+
+#. module: account
+#: help:account.move.line,amount_residual:0
+msgid ""
+"The residual amount on a receivable or payable of a journal entry expressed "
+"in the company currency."
+msgstr ""
+
+#. module: account
+#: view:account.tax.code:0
+msgid "Statistics"
+msgstr ""
+
+#. module: account
+#: field:account.analytic.chart,from_date:0
+#: field:project.account.analytic.line,from_date:0
+msgid "From"
+msgstr ""
+
+#. module: account
+#: model:ir.model,name:account.model_account_fiscalyear_close
+msgid "Fiscalyear Close"
+msgstr ""
+
+#. module: account
+#: sql_constraint:account.account:0
+msgid "The code of the account must be unique per company !"
+msgstr ""
+
+#. module: account
+#: view:account.invoice:0
+#: model:ir.actions.act_window,name:account.act_account_journal_2_account_invoice_opened
+msgid "Unpaid Invoices"
+msgstr ""
+
+#. module: account
+#: code:addons/account/account_invoice.py:495
+#, python-format
+msgid "The payment term of supplier does not have a payment term line!"
+msgstr ""
+
+#. module: account
+#: field:account.move.line.reconcile,debit:0
+msgid "Debit amount"
+msgstr ""
+
+#. module: account
+#: view:board.board:0
+#: model:ir.actions.act_window,name:account.action_treasory_graph
+msgid "Treasury"
+msgstr ""
+
+#. module: account
+#: view:account.aged.trial.balance:0
+#: view:account.analytic.balance:0
+#: view:account.analytic.cost.ledger:0
+#: view:account.analytic.cost.ledger.journal.report:0
+#: view:account.analytic.inverted.balance:0
+#: view:account.analytic.journal.report:0
+#: view:account.common.report:0
+msgid "Print"
+msgstr ""
+
+#. module: account
+#: view:account.journal:0
+msgid "Accounts Allowed (empty for no control)"
+msgstr ""
+
+#. module: account
+#: model:ir.model,name:account.model_account_fiscal_position_account_template
+msgid "Template Account Fiscal Mapping"
+msgstr ""
+
+#. module: account
+#: view:board.board:0
+msgid "Draft Customer Invoices"
+msgstr ""
+
+#. module: account
+#: model:ir.ui.menu,name:account.menu_configuration_misc
+msgid "Miscellaneous"
+msgstr ""
+
+#. module: account
+#: help:res.partner,debit:0
+msgid "Total amount you have to pay to this supplier."
+msgstr ""
+
+#. module: account
+#: model:process.node,name:account.process_node_analytic0
+#: model:process.node,name:account.process_node_analyticcost0
+msgid "Analytic Costs"
+msgstr ""
+
+#. module: account
+#: field:account.analytic.journal,name:0
+#: report:account.general.journal:0
+#: field:account.journal,name:0
+msgid "Journal Name"
+msgstr ""
+
+#. module: account
+#: view:account.move.line:0
+msgid "Next Partner Entries to reconcile"
+msgstr ""
+
+#. module: account
+#: selection:account.financial.report,style_overwrite:0
+msgid "Smallest Text"
+msgstr ""
+
+#. module: account
+#: model:res.groups,name:account.group_account_invoice
+msgid "Invoicing & Payments"
+msgstr ""
+
+#. module: account
+#: help:account.invoice,internal_number:0
+msgid ""
+"Unique number of the invoice, computed automatically when the invoice is "
+"created."
+msgstr ""
+
+#. module: account
+#: constraint:account.bank.statement.line:0
+msgid ""
+"The amount of the voucher must be the same amount as the one on the "
+"statement line"
+msgstr ""
+
+#. module: account
+#: model:account.account.type,name:account.data_account_type_expense
+#: model:account.financial.report,name:account.account_financial_report_expense0
+msgid "Expense"
+msgstr ""
+
+#. module: account
+#: help:account.chart,fiscalyear:0
+msgid "Keep empty for all open fiscal years"
+msgstr ""
+
+#. module: account
+#: code:addons/account/account_move_line.py:1105
+#, python-format
+msgid "The account move (%s) for centralisation has been confirmed!"
+msgstr ""
+
+#. module: account
+#: help:account.move.line,amount_currency:0
+msgid ""
+"The amount expressed in an optional other currency if it is a multi-currency "
+"entry."
+msgstr ""
+
+#. module: account
+#: code:addons/account/account.py:1307
+#, python-format
+msgid ""
+"You can not validate a non-balanced entry !\n"
+"Make sure you have configured payment terms properly !\n"
+"The latest payment term line should be of the type \"Balance\" !"
+msgstr ""
+
+#. module: account
+#: view:account.account:0
+#: report:account.analytic.account.journal:0
+#: field:account.bank.statement,currency:0
+#: report:account.central.journal:0
+#: view:account.entries.report:0
+#: field:account.entries.report,currency_id:0
+#: report:account.general.journal:0
+#: report:account.general.ledger:0
+#: report:account.general.ledger_landscape:0
+#: field:account.invoice,currency_id:0
+#: field:account.invoice.report,currency_id:0
+#: field:account.journal,currency:0
+#: report:account.journal.period.print:0
+#: report:account.journal.period.print.sale.purchase:0
+#: field:account.model.line,currency_id:0
+#: view:account.move:0
+#: view:account.move.line:0
+#: field:account.move.line,currency_id:0
+#: report:account.third_party_ledger:0
+#: report:account.third_party_ledger_other:0
+#: field:analytic.entries.report,currency_id:0
+#: model:ir.model,name:account.model_res_currency
+#: field:report.account.sales,currency_id:0
+#: field:report.account_type.sales,currency_id:0
+#: field:report.invoice.created,currency_id:0
+#: field:res.partner.bank,currency_id:0
+msgid "Currency"
+msgstr ""
+
+#. module: account
+#: help:account.bank.statement.line,sequence:0
+msgid ""
+"Gives the sequence order when displaying a list of bank statement lines."
+msgstr ""
+
+#. module: account
+#: model:process.transition,note:account.process_transition_validentries0
+msgid "Accountant validates the accounting entries coming from the invoice."
+msgstr ""
+
+#. module: account
+#: model:ir.actions.act_window,help:account.action_account_fiscalyear_form
+msgid ""
+"Define your company's financial year according to your needs. A financial "
+"year is a period at the end of which a company's accounts are made up "
+"(usually 12 months). The financial year is usually referred to by the date "
+"in which it ends. For example, if a company's financial year ends November "
+"30, 2011, then everything between December 1, 2010 and November 30, 2011 "
+"would be referred to as FY 2011. You are not obliged to follow the actual "
+"calendar year."
+msgstr ""
+
+#. module: account
+#: view:account.entries.report:0
+#: model:ir.actions.act_window,name:account.act_account_acount_move_line_reconcile_open
+msgid "Reconciled entries"
+msgstr ""
+
+#. module: account
+#: field:account.invoice,address_contact_id:0
+msgid "Contact Address"
+msgstr ""
+
+#. module: account
+#: code:addons/account/account.py:2256
+#, python-format
+msgid "Wrong model !"
+msgstr ""
+
+#. module: account
+#: field:account.invoice.refund,period:0
+msgid "Force period"
+msgstr ""
+
+#. module: account
+#: model:ir.model,name:account.model_account_partner_balance
+msgid "Print Account Partner Balance"
+msgstr ""
+
+#. module: account
+#: help:account.financial.report,sign:0
+msgid ""
+"For accounts that are typically more debited than credited and that you "
+"would like to print as negative amounts in your reports, you should reverse "
+"the sign of the balance; e.g.: Expense account. The same applies for "
+"accounts that are typically more credited than debited and that you would "
+"like to print as positive amounts in your reports; e.g.: Income account."
+msgstr ""
+
+#. module: account
+#: field:res.partner,contract_ids:0
+msgid "Contracts"
+msgstr ""
+
+#. module: account
+#: field:account.cashbox.line,ending_id:0
+#: field:account.cashbox.line,starting_id:0
+#: field:account.entries.report,reconcile_id:0
+#: field:account.financial.report,balance:0
+msgid "unknown"
+msgstr ""
+
+#. module: account
+#: field:account.fiscalyear.close,journal_id:0
+#: code:addons/account/account.py:3113
+#, python-format
+msgid "Opening Entries Journal"
+msgstr ""
+
+#. module: account
+#: model:process.transition,note:account.process_transition_customerinvoice0
+msgid "Draft invoices are checked, validated and printed."
+msgstr ""
+
+#. module: account
+#: help:account.chart.template,property_reserve_and_surplus_account:0
+msgid ""
+"This Account is used for transferring Profit/Loss(If It is Profit: Amount "
+"will be added, Loss: Amount will be deducted.), Which is calculated from "
+"Profilt & Loss Report"
+msgstr ""
+
+#. module: account
+#: code:addons/account/account_invoice.py:808
+#, python-format
+msgid "Please define sequence on the journal related to this invoice."
+msgstr ""
+
+#. module: account
+#: view:account.move:0
+#: field:account.move,narration:0
+#: view:account.move.line:0
+#: field:account.move.line,narration:0
+msgid "Internal Note"
+msgstr ""
+
+#. module: account
+#: view:report.account.sales:0
+msgid "This year's Sales by type"
+msgstr ""
+
+#. module: account
+#: view:account.analytic.cost.ledger.journal.report:0
+msgid "Cost Ledger for Period"
+msgstr ""
+
+#. module: account
+#: help:account.tax,child_depend:0
+#: help:account.tax.template,child_depend:0
+msgid ""
+"Set if the tax computation is based on the computation of child taxes rather "
+"than on the total amount."
+msgstr ""
+
+#. module: account
+#: selection:account.tax,applicable_type:0
+msgid "Given by Python Code"
+msgstr ""
+
+#. module: account
+#: field:account.analytic.journal,code:0
+msgid "Journal Code"
+msgstr ""
+
+#. module: account
+#: help:account.tax.code,sign:0
+msgid ""
+"You can specify here the coefficient that will be used when consolidating "
+"the amount of this case into its parent. For example, set 1/-1 if you want "
+"to add/substract it."
+msgstr ""
+
+#. module: account
+#: view:account.invoice:0
+#: field:account.move.line,amount_residual:0
+#: field:account.move.line,amount_residual_currency:0
+msgid "Residual Amount"
+msgstr ""
+
+#. module: account
+#: field:account.invoice,move_lines:0
+#: field:account.move.reconcile,line_id:0
+msgid "Entry Lines"
+msgstr ""
+
+#. module: account
+#: model:ir.actions.act_window,name:account.action_view_financial_accounts_installer
+msgid "Review your Financial Accounts"
+msgstr ""
+
+#. module: account
+#: model:ir.actions.act_window,name:account.action_open_journal_button
+#: model:ir.actions.act_window,name:account.action_validate_account_move
+msgid "Open Journal"
+msgstr ""
+
+#. module: account
+#: report:account.analytic.account.journal:0
+msgid "KI"
+msgstr ""
+
+#. module: account
+#: report:account.analytic.account.cost_ledger:0
+#: report:account.analytic.account.journal:0
+#: report:account.analytic.account.quantity_cost_ledger:0
+msgid "Period from"
+msgstr ""
+
+#. module: account
+#: code:addons/account/account.py:3110
+#, python-format
+msgid "Sales Refund Journal"
+msgstr ""
+
+#. module: account
+#: view:account.move:0
+#: view:account.move.line:0
+#: view:account.payment.term:0
+msgid "Information"
+msgstr ""
+
+#. module: account
+#: model:process.node,note:account.process_node_bankstatement0
+msgid "Registered payment"
+msgstr ""
+
+#. module: account
+#: view:account.fiscalyear.close.state:0
+msgid "Close states of Fiscal year and periods"
+msgstr ""
+
+#. module: account
+#: view:account.analytic.line:0
+msgid "Product Information"
+msgstr ""
+
+#. module: account
+#: report:account.analytic.account.journal:0
+#: view:account.move:0
+#: view:account.move.line:0
+#: model:ir.ui.menu,name:account.next_id_40
+msgid "Analytic"
+msgstr ""
+
+#. module: account
+#: model:process.node,name:account.process_node_invoiceinvoice0
+#: model:process.node,name:account.process_node_supplierinvoiceinvoice0
+msgid "Create Invoice"
+msgstr ""
+
+#. module: account
+#: field:wizard.multi.charts.accounts,purchase_tax_rate:0
+msgid "Purchase Tax(%)"
+msgstr ""
+
+#. module: account
+#: code:addons/account/account_invoice.py:810
+#, python-format
+msgid "Please create some invoice lines."
+msgstr ""
+
+#. module: account
+#: report:account.overdue:0
+msgid "Dear Sir/Madam,"
+msgstr ""
+
+#. module: account
+#: field:account.vat.declaration,display_detail:0
+msgid "Display Detail"
+msgstr ""
+
+#. module: account
+#: code:addons/account/account.py:3118
+#, python-format
+msgid "SCNJ"
+msgstr ""
+
+#. module: account
+#: model:process.transition,note:account.process_transition_analyticinvoice0
+msgid ""
+"Analytic costs (timesheets, some purchased products, ...) come from analytic "
+"accounts. These generate draft invoices."
+msgstr ""
+
+#. module: account
+#: help:account.journal,view_id:0
+msgid ""
+"Gives the view used when writing or browsing entries in this journal. The "
+"view tells OpenERP which fields should be visible, required or readonly and "
+"in which order. You can create your own view for a faster encoding in each "
+"journal."
+msgstr ""
+
+#. module: account
+#: field:account.period,date_stop:0
+#: model:ir.ui.menu,name:account.menu_account_end_year_treatments
+msgid "End of Period"
+msgstr ""
+
+#. module: account
+#: field:account.account,financial_report_ids:0
+#: field:account.account.template,financial_report_ids:0
+#: model:ir.actions.act_window,name:account.action_account_financial_report_tree
+#: model:ir.actions.act_window,name:account.action_account_report
+#: model:ir.actions.act_window,name:account.action_account_report_bs
+#: model:ir.actions.act_window,name:account.action_account_report_pl
+#: model:ir.ui.menu,name:account.menu_account_reports
+msgid "Financial Reports"
+msgstr ""
+
+#. module: account
+#: report:account.account.balance:0
+#: field:account.aged.trial.balance,period_from:0
+#: field:account.balance.report,period_from:0
+#: report:account.central.journal:0
+#: field:account.central.journal,period_from:0
+#: field:account.common.account.report,period_from:0
+#: field:account.common.journal.report,period_from:0
+#: field:account.common.partner.report,period_from:0
+#: field:account.common.report,period_from:0
+#: report:account.general.journal:0
+#: field:account.general.journal,period_from:0
+#: report:account.general.ledger:0
+#: report:account.general.ledger_landscape:0
+#: report:account.partner.balance:0
+#: field:account.partner.balance,period_from:0
+#: field:account.partner.ledger,period_from:0
+#: field:account.print.journal,period_from:0
+#: field:account.report.general.ledger,period_from:0
+#: report:account.third_party_ledger:0
+#: report:account.third_party_ledger_other:0
+#: report:account.vat.declaration:0
+#: field:account.vat.declaration,period_from:0
+#: field:accounting.report,period_from:0
+#: field:accounting.report,period_from_cmp:0
+msgid "Start Period"
+msgstr ""
+
+#. module: account
+#: field:account.aged.trial.balance,direction_selection:0
+msgid "Analysis Direction"
+msgstr ""
+
+#. module: account
+#: field:res.partner,ref_companies:0
+msgid "Companies that refers to partner"
+msgstr ""
+
+#. module: account
+#: view:account.journal:0
+#: field:account.journal.column,view_id:0
+#: view:account.journal.view:0
+#: field:account.journal.view,name:0
+#: model:ir.model,name:account.model_account_journal_view
+msgid "Journal View"
+msgstr ""
+
+#. module: account
+#: view:account.move.line:0
+#: code:addons/account/account_move_line.py:1046
+#, python-format
+msgid "Total credit"
+msgstr ""
+
+#. module: account
+#: model:process.transition,note:account.process_transition_suppliervalidentries0
+msgid "Accountant validates the accounting entries coming from the invoice. "
+msgstr ""
+
+#. module: account
+#: report:account.overdue:0
+msgid "Best regards."
+msgstr ""
+
+#. module: account
+#: view:account.invoice:0
+msgid "Unpaid"
+msgstr ""
+
+#. module: account
+#: model:ir.model,name:account.model_account_tax_code_template
+msgid "Tax Code Template"
+msgstr ""
+
+#. module: account
+#: report:account.overdue:0
+msgid "Document: Customer account statement"
+msgstr ""
+
+#. module: account
+#: field:account.account.type,report_type:0
+msgid "P&L / BS Category"
+msgstr ""
+
+#. module: account
+#: model:ir.actions.act_window,help:account.action_invoice_tree4
+msgid ""
+"With Supplier Refunds you can manage the credit notes you receive from your "
+"suppliers. A refund is a document that credits an invoice completely or "
+"partially. You can easily generate refunds and reconcile them directly from "
+"the invoice form."
+msgstr ""
+
+#. module: account
+#: view:account.account.template:0
+msgid "Receivale Accounts"
+msgstr ""
+
+#. module: account
+#: model:ir.actions.act_window,name:account.action_bank_statement_periodic_tree
+#: model:ir.actions.act_window,name:account.action_bank_statement_tree
+#: model:ir.ui.menu,name:account.menu_bank_statement_tree
+msgid "Bank Statements"
+msgstr ""
+
+#. module: account
+#: field:account.account,balance:0
+#: report:account.account.balance:0
+#: selection:account.account.type,close_method:0
+#: report:account.analytic.account.balance:0
+#: report:account.analytic.account.cost_ledger:0
+#: report:account.analytic.account.inverted.balance:0
+#: report:account.central.journal:0
+#: field:account.entries.report,balance:0
+#: report:account.general.journal:0
+#: report:account.general.ledger:0
+#: report:account.general.ledger_landscape:0
+#: field:account.invoice,residual:0
+#: field:account.move.line,balance:0
+#: report:account.partner.balance:0
+#: selection:account.payment.term.line,value:0
+#: selection:account.tax,type:0
+#: selection:account.tax.template,type:0
+#: report:account.third_party_ledger:0
+#: report:account.third_party_ledger_other:0
+#: field:account.treasury.report,balance:0
+#: field:report.account.receivable,balance:0
+#: field:report.aged.receivable,balance:0
+msgid "Balance"
+msgstr ""
+
+#. module: account
+#: model:process.node,note:account.process_node_supplierbankstatement0
+msgid "Manually or automatically entered in the system"
+msgstr ""
+
+#. module: account
+#: report:account.account.balance:0
+#: report:account.general.ledger_landscape:0
+msgid "Display Account"
+msgstr ""
+
+#. module: account
+#: view:account.account.type:0
+msgid "Closing Method"
+msgstr ""
+
+#. module: account
+#: selection:account.account,type:0
+#: selection:account.account.template,type:0
+#: model:account.account.type,name:account.data_account_type_payable
+#: selection:account.entries.report,type:0
+msgid "Payable"
+msgstr ""
+
+#. module: account
+#: view:report.account.sales:0
+#: view:report.account_type.sales:0
+#: view:report.hr.timesheet.invoice.journal:0
+msgid "This Year"
+msgstr ""
+
+#. module: account
+#: view:board.board:0
+msgid "Account Board"
+msgstr ""
+
+#. module: account
+#: view:account.model:0
+#: field:account.model,legend:0
+msgid "Legend"
+msgstr ""
+
+#. module: account
+#: view:account.analytic.account:0
+msgid "Contract Data"
+msgstr ""
+
+#. module: account
+#: model:ir.actions.act_window,help:account.action_account_moves_sale
+msgid ""
+"This view is used by accountants in order to record entries massively in "
+"OpenERP. If you want to record a customer invoice, select the journal and "
+"the period in the search toolbar. Then, start by recording the entry line of "
+"the income account. OpenERP will propose to you automatically the Tax "
+"related to this account and the counter-part \"Account receivable\"."
+msgstr ""
+
+#. module: account
+#: code:addons/account/wizard/account_automatic_reconcile.py:152
+#, python-format
+msgid "You must select accounts to reconcile"
+msgstr ""
+
+#. module: account
+#: model:process.transition,note:account.process_transition_entriesreconcile0
+msgid "Accounting entries are the first input of the reconciliation."
+msgstr ""
+
+#. module: account
+#: model:ir.actions.act_window,help:account.action_account_period_form
+msgid ""
+"Here you can define a financial period, an interval of time in your "
+"company's financial year. An accounting period typically is a month or a "
+"quarter. It usually corresponds to the periods of the tax declaration. "
+"Create and manage periods from here and decide whether a period should be "
+"closed or left open depending on your company's activities over a specific "
+"period."
+msgstr ""
+
+#. module: account
+#: report:account.third_party_ledger:0
+#: report:account.third_party_ledger_other:0
+msgid "Filters By"
+msgstr ""
+
+#. module: account
+#: model:process.node,note:account.process_node_manually0
+#: model:process.transition,name:account.process_transition_invoicemanually0
+msgid "Manual entry"
+msgstr ""
+
+#. module: account
+#: report:account.general.ledger:0
+#: report:account.general.ledger_landscape:0
+#: report:account.journal.period.print:0
+#: report:account.journal.period.print.sale.purchase:0
+#: field:account.move.line,move_id:0
+#: field:analytic.entries.report,move_id:0
+msgid "Move"
+msgstr ""
+
+#. module: account
+#: code:addons/account/account_move_line.py:1153
+#, python-format
+msgid "You can not change the tax, you should remove and recreate lines !"
+msgstr ""
+
+#. module: account
+#: view:analytic.entries.report:0
+msgid "Analytic Entries of last 365 days"
+msgstr ""
+
+#. module: account
+#: report:account.central.journal:0
+msgid "A/C No."
+msgstr ""
+
+#. module: account
+#: model:ir.actions.act_window,name:account.act_account_journal_2_account_bank_statement
+msgid "Bank statements"
+msgstr ""
+
+#. module: account
+#: help:account.addtmpl.wizard,cparent_id:0
+msgid ""
+"Creates an account with the selected template under this existing parent."
+msgstr ""
+
+#. module: account
+#: selection:account.model.line,date_maturity:0
+msgid "Date of the day"
+msgstr ""
+
+#. module: account
+#: code:addons/account/wizard/account_move_bank_reconcile.py:49
+#, python-format
+msgid ""
+"You have to define the bank account\n"
+"in the journal definition for reconciliation."
+msgstr ""
+
+#. module: account
+#: view:account.move.line.reconcile:0
+msgid "Reconciliation Transactions"
+msgstr ""
+
+#. module: account
+#: model:ir.actions.act_window,name:account.action_account_common_menu
+msgid "Common Report"
+msgstr ""
+
+#. module: account
+#: view:account.account:0
+#: field:account.account,child_consol_ids:0
+msgid "Consolidated Children"
+msgstr ""
+
+#. module: account
+#: code:addons/account/wizard/account_fiscalyear_close.py:87
+#, python-format
+msgid ""
+"The journal must have centralised counterpart without the Skipping draft "
+"state option checked!"
+msgstr ""
+
+#. module: account
+#: view:account.invoice.report:0
+msgid "Customer And Supplier Invoices"
+msgstr ""
+
+#. module: account
+#: model:process.node,note:account.process_node_paymententries0
+#: model:process.transition,name:account.process_transition_paymentorderbank0
+#: model:process.transition,name:account.process_transition_paymentreconcile0
+msgid "Payment entries"
+msgstr ""
+
+#. module: account
+#: selection:account.entries.report,month:0
+#: selection:account.invoice.report,month:0
+#: selection:analytic.entries.report,month:0
+#: selection:report.account.sales,month:0
+#: selection:report.account_type.sales,month:0
+msgid "July"
+msgstr ""
+
+#. module: account
+#: view:account.account:0
+msgid "Chart of accounts"
+msgstr ""
+
+#. module: account
+#: field:account.subscription.line,subscription_id:0
+msgid "Subscription"
+msgstr ""
+
+#. module: account
+#: model:ir.model,name:account.model_account_analytic_balance
+msgid "Account Analytic Balance"
+msgstr ""
+
+#. module: account
+#: code:addons/account/account.py:412
+#, python-format
+msgid ""
+"No opening/closing period defined, please create one to set the initial "
+"balance!"
+msgstr ""
+
+#. module: account
+#: report:account.account.balance:0
+#: field:account.aged.trial.balance,period_to:0
+#: field:account.balance.report,period_to:0
+#: report:account.central.journal:0
+#: field:account.central.journal,period_to:0
+#: field:account.common.account.report,period_to:0
+#: field:account.common.journal.report,period_to:0
+#: field:account.common.partner.report,period_to:0
+#: field:account.common.report,period_to:0
+#: report:account.general.journal:0
+#: field:account.general.journal,period_to:0
+#: report:account.general.ledger:0
+#: report:account.general.ledger_landscape:0
+#: report:account.partner.balance:0
+#: field:account.partner.balance,period_to:0
+#: field:account.partner.ledger,period_to:0
+#: field:account.print.journal,period_to:0
+#: field:account.report.general.ledger,period_to:0
+#: report:account.third_party_ledger:0
+#: report:account.third_party_ledger_other:0
+#: report:account.vat.declaration:0
+#: field:account.vat.declaration,period_to:0
+#: field:accounting.report,period_to:0
+#: field:accounting.report,period_to_cmp:0
+msgid "End Period"
+msgstr ""
+
+#. module: account
+#: field:account.move.line,date_maturity:0
+msgid "Due date"
+msgstr ""
+
+#. module: account
+#: view:account.move.journal:0
+msgid "Standard Entries"
+msgstr ""
+
+#. module: account
+#: help:account.journal,type:0
+msgid ""
+"Select 'Sale' for customer invoices journals. Select 'Purchase' for supplier "
+"invoices journals. Select 'Cash' or 'Bank' for journals that are used in "
+"customer or supplier payments. Select 'General' for miscellaneous operations "
+"journals. Select 'Opening/Closing Situation' for entries generated for new "
+"fiscal years."
+msgstr ""
+
+#. module: account
+#: model:ir.model,name:account.model_account_subscription
+msgid "Account Subscription"
+msgstr ""
+
+#. module: account
+#: report:account.overdue:0
+msgid "Maturity date"
+msgstr ""
+
+#. module: account
+#: view:account.subscription:0
+msgid "Entry Subscription"
+msgstr ""
+
+#. module: account
+#: report:account.account.balance:0
+#: field:account.aged.trial.balance,date_from:0
+#: field:account.balance.report,date_from:0
+#: report:account.central.journal:0
+#: field:account.central.journal,date_from:0
+#: field:account.common.account.report,date_from:0
+#: field:account.common.journal.report,date_from:0
+#: field:account.common.partner.report,date_from:0
+#: field:account.common.report,date_from:0
+#: field:account.fiscalyear,date_start:0
+#: report:account.general.journal:0
+#: field:account.general.journal,date_from:0
+#: report:account.general.ledger:0
+#: report:account.general.ledger_landscape:0
+#: field:account.installer,date_start:0
+#: report:account.partner.balance:0
+#: field:account.partner.balance,date_from:0
+#: field:account.partner.ledger,date_from:0
+#: field:account.print.journal,date_from:0
+#: field:account.report.general.ledger,date_from:0
+#: field:account.subscription,date_start:0
+#: report:account.third_party_ledger:0
+#: report:account.third_party_ledger_other:0
+#: field:account.vat.declaration,date_from:0
+#: field:accounting.report,date_from:0
+#: field:accounting.report,date_from_cmp:0
+msgid "Start Date"
+msgstr ""
+
+#. module: account
+#: help:account.invoice,reconciled:0
+msgid ""
+"It indicates that the invoice has been paid and the journal entry of the "
+"invoice has been reconciled with one or several journal entries of payment."
+msgstr ""
+
+#. module: account
+#: view:account.invoice:0
+#: view:account.invoice.report:0
+#: model:process.node,name:account.process_node_supplierdraftinvoices0
+msgid "Draft Invoices"
+msgstr ""
+
+#. module: account
+#: selection:account.account.type,close_method:0
+#: view:account.entries.report:0
+#: view:account.move.line:0
+msgid "Unreconciled"
+msgstr ""
+
+#. module: account
+#: code:addons/account/account_invoice.py:828
+#, python-format
+msgid "Bad total !"
+msgstr ""
+
+#. module: account
+#: field:account.journal,sequence_id:0
+msgid "Entry Sequence"
+msgstr ""
+
+#. module: account
+#: model:ir.actions.act_window,help:account.action_account_period_tree
+msgid ""
+"A period is a fiscal period of time during which accounting entries should "
+"be recorded for accounting related activities. Monthly period is the norm "
+"but depending on your countries or company needs, you could also have "
+"quarterly periods. Closing a period will make it impossible to record new "
+"accounting entries, all new entries should then be made on the following "
+"open period. Close a period when you do not want to record new entries and "
+"want to lock this period for tax related calculation."
+msgstr ""
+
+#. module: account
+#: view:account.analytic.account:0
+msgid "Pending"
+msgstr ""
+
+#. module: account
+#: model:process.transition,name:account.process_transition_analyticinvoice0
+#: model:process.transition,name:account.process_transition_supplieranalyticcost0
+msgid "From analytic accounts"
+msgstr ""
+
+#. module: account
+#: field:account.period,name:0
+msgid "Period Name"
+msgstr ""
+
+#. module: account
+#: report:account.analytic.account.quantity_cost_ledger:0
+msgid "Code/Date"
+msgstr ""
+
+#. module: account
+#: field:account.account,active:0
+#: field:account.analytic.journal,active:0
+#: field:account.fiscal.position,active:0
+#: field:account.journal.period,active:0
+#: field:account.payment.term,active:0
+#: field:account.tax,active:0
+msgid "Active"
+msgstr ""
+
+#. module: account
+#: view:accounting.report:0
+msgid "Comparison"
+msgstr ""
+
+#. module: account
+#: code:addons/account/account_invoice.py:372
+#, python-format
+msgid "Unknown Error"
+msgstr ""
+
+#. module: account
+#: help:res.partner,property_account_payable:0
+msgid ""
+"This account will be used instead of the default one as the payable account "
+"for the current partner"
+msgstr ""
+
+#. module: account
+#: field:account.period,special:0
+msgid "Opening/Closing Period"
+msgstr ""
+
+#. module: account
+#: field:account.account,currency_id:0
+#: field:account.account.template,currency_id:0
+#: field:account.bank.accounts.wizard,currency_id:0
+msgid "Secondary Currency"
+msgstr ""
+
+#. module: account
+#: model:ir.model,name:account.model_validate_account_move
+msgid "Validate Account Move"
+msgstr ""
+
+#. module: account
+#: field:account.account,credit:0
+#: report:account.account.balance:0
+#: report:account.analytic.account.balance:0
+#: report:account.analytic.account.cost_ledger:0
+#: report:account.analytic.account.inverted.balance:0
+#: report:account.central.journal:0
+#: field:account.entries.report,credit:0
+#: report:account.general.journal:0
+#: report:account.general.ledger:0
+#: report:account.general.ledger_landscape:0
+#: report:account.journal.period.print:0
+#: report:account.journal.period.print.sale.purchase:0
+#: field:account.model.line,credit:0
+#: field:account.move.line,credit:0
+#: report:account.partner.balance:0
+#: report:account.third_party_ledger:0
+#: report:account.third_party_ledger_other:0
+#: field:account.treasury.report,credit:0
+#: report:account.vat.declaration:0
+#: field:report.account.receivable,credit:0
+msgid "Credit"
+msgstr ""
+
+#. module: account
+#: help:account.invoice.refund,journal_id:0
+msgid ""
+"You can select here the journal to use for the refund invoice that will be "
+"created. If you leave that field empty, it will use the same journal as the "
+"current invoice."
+msgstr ""
+
+#. module: account
+#: selection:account.account.type,report_type:0
+#: code:addons/account/account.py:181
+#, python-format
+msgid "Profit & Loss (Income account)"
+msgstr ""
+
+#. module: account
+#: constraint:account.account:0
+msgid ""
+"Configuration Error! \n"
+"You can not select an account type with a deferral method different of "
+"\"Unreconciled\" for accounts with internal type \"Payable/Receivable\"! "
+msgstr ""
+
+#. module: account
+#: view:account.model:0
+msgid "Journal Entry Model"
+msgstr ""
+
+#. module: account
+#: code:addons/account/wizard/account_use_model.py:44
+#, python-format
+msgid ""
+"Maturity date of entry line generated by model line '%s' is based on partner "
+"payment term!\n"
+"Please define partner on it!"
+msgstr ""
+
+#. module: account
+#: field:account.cashbox.line,number:0
+#: field:account.invoice,number:0
+#: field:account.move,name:0
+msgid "Number"
+msgstr ""
+
+#. module: account
+#: report:account.analytic.account.journal:0
+#: selection:account.analytic.journal,type:0
+#: selection:account.bank.statement.line,type:0
+#: selection:account.journal,type:0
+msgid "General"
+msgstr ""
+
+#. module: account
+#: view:analytic.entries.report:0
+msgid "Analytic Entries of last 30 days"
+msgstr ""
+
+#. module: account
+#: selection:account.aged.trial.balance,filter:0
+#: selection:account.balance.report,filter:0
+#: selection:account.central.journal,filter:0
+#: view:account.chart:0
+#: selection:account.common.account.report,filter:0
+#: selection:account.common.journal.report,filter:0
+#: selection:account.common.partner.report,filter:0
+#: view:account.common.report:0
+#: selection:account.common.report,filter:0
+#: view:account.fiscalyear:0
+#: field:account.fiscalyear,period_ids:0
+#: selection:account.general.journal,filter:0
+#: field:account.installer,period:0
+#: selection:account.partner.balance,filter:0
+#: selection:account.partner.ledger,filter:0
+#: view:account.print.journal:0
+#: selection:account.print.journal,filter:0
+#: selection:account.report.general.ledger,filter:0
+#: report:account.vat.declaration:0
+#: view:account.vat.declaration:0
+#: selection:account.vat.declaration,filter:0
+#: view:accounting.report:0
+#: selection:accounting.report,filter:0
+#: selection:accounting.report,filter_cmp:0
+#: model:ir.actions.act_window,name:account.action_account_period_form
+#: model:ir.ui.menu,name:account.menu_action_account_period_form
+#: model:ir.ui.menu,name:account.next_id_23
+msgid "Periods"
+msgstr ""
+
+#. module: account
+#: field:account.invoice.report,currency_rate:0
+msgid "Currency Rate"
+msgstr ""
+
+#. module: account
+#: view:account.account:0
+#: field:account.account,tax_ids:0
+#: field:account.account.template,tax_ids:0
+msgid "Default Taxes"
+msgstr ""
+
+#. module: account
+#: selection:account.entries.report,month:0
+#: selection:account.invoice.report,month:0
+#: selection:analytic.entries.report,month:0
+#: selection:report.account.sales,month:0
+#: selection:report.account_type.sales,month:0
+msgid "April"
+msgstr ""
+
+#. module: account
+#: model:account.financial.report,name:account.account_financial_report_profitloss_toreport0
+msgid "Profit (Loss) to report"
+msgstr ""
+
+#. module: account
+#: view:account.move.line.reconcile.select:0
+msgid "Open for Reconciliation"
+msgstr ""
+
+#. module: account
+#: field:account.account,parent_left:0
+msgid "Parent Left"
+msgstr ""
+
+#. module: account
+#: help:account.invoice.refund,filter_refund:0
+msgid ""
+"Refund invoice base on this type. You can not Modify and Cancel if the "
+"invoice is already reconciled"
+msgstr ""
+
+#. module: account
+#: selection:account.financial.report,style_overwrite:0
+msgid "Title 2 (bold)"
+msgstr ""
+
+#. module: account
+#: model:ir.actions.act_window,name:account.action_invoice_tree2
+#: model:ir.ui.menu,name:account.menu_action_invoice_tree2
+msgid "Supplier Invoices"
+msgstr ""
+
+#. module: account
+#: view:account.analytic.line:0
+#: field:account.analytic.line,product_id:0
+#: view:account.entries.report:0
+#: field:account.entries.report,product_id:0
+#: field:account.invoice.line,product_id:0
+#: view:account.invoice.report:0
+#: field:account.invoice.report,product_id:0
+#: field:account.move.line,product_id:0
+#: view:analytic.entries.report:0
+#: field:analytic.entries.report,product_id:0
+#: field:report.account.sales,product_id:0
+#: field:report.account_type.sales,product_id:0
+msgid "Product"
+msgstr ""
+
+#. module: account
+#: model:ir.actions.act_window,help:account.action_validate_account_move
+msgid ""
+"The validation of journal entries process is also called 'ledger posting' "
+"and is the process of transferring debit and credit amounts from a journal "
+"of original entry to a ledger book."
+msgstr ""
+
+#. module: account
+#: help:account.bank.statement,state:0
+msgid ""
+"When new statement is created the state will be 'Draft'.\n"
+"And after getting confirmation from the bank it will be in 'Confirmed' state."
+msgstr ""
+
+#. module: account
+#: model:ir.model,name:account.model_account_period
+msgid "Account period"
+msgstr ""
+
+#. module: account
+#: view:account.subscription:0
+msgid "Remove Lines"
+msgstr ""
+
+#. module: account
+#: view:account.report.general.ledger:0
+msgid ""
+"This report allows you to print or generate a pdf of your general ledger "
+"with details of all your account journals"
+msgstr ""
+
+#. module: account
+#: selection:account.account,type:0
+#: selection:account.account.template,type:0
+#: selection:account.entries.report,type:0
+msgid "Regular"
+msgstr ""
+
+#. module: account
+#: view:account.account:0
+#: field:account.account,type:0
+#: view:account.account.template:0
+#: field:account.account.template,type:0
+#: field:account.entries.report,type:0
+msgid "Internal Type"
+msgstr ""
+
+#. module: account
+#: model:ir.actions.act_window,name:account.action_subscription_form_running
+msgid "Running Subscriptions"
+msgstr ""
+
+#. module: account
+#: view:report.account.sales:0
+#: view:report.account_type.sales:0
+#: view:report.hr.timesheet.invoice.journal:0
+msgid "This Month"
+msgstr ""
+
+#. module: account
+#: view:account.analytic.balance:0
+#: view:account.analytic.cost.ledger:0
+#: view:account.analytic.inverted.balance:0
+#: view:account.analytic.journal.report:0
+#: model:ir.actions.act_window,name:account.action_account_partner_ledger
+msgid "Select Period"
+msgstr ""
+
+#. module: account
+#: view:account.entries.report:0
+#: selection:account.entries.report,move_state:0
+#: view:account.move:0
+#: selection:account.move,state:0
+#: view:account.move.line:0
+msgid "Posted"
+msgstr ""
+
+#. module: account
+#: report:account.account.balance:0
+#: field:account.aged.trial.balance,date_to:0
+#: field:account.balance.report,date_to:0
+#: report:account.central.journal:0
+#: field:account.central.journal,date_to:0
+#: field:account.common.account.report,date_to:0
+#: field:account.common.journal.report,date_to:0
+#: field:account.common.partner.report,date_to:0
+#: field:account.common.report,date_to:0
+#: field:account.fiscalyear,date_stop:0
+#: report:account.general.journal:0
+#: field:account.general.journal,date_to:0
+#: report:account.general.ledger:0
+#: report:account.general.ledger_landscape:0
+#: field:account.installer,date_stop:0
+#: report:account.partner.balance:0
+#: field:account.partner.balance,date_to:0
+#: field:account.partner.ledger,date_to:0
+#: field:account.print.journal,date_to:0
+#: field:account.report.general.ledger,date_to:0
+#: report:account.third_party_ledger:0
+#: report:account.third_party_ledger_other:0
+#: field:account.vat.declaration,date_to:0
+#: field:accounting.report,date_to:0
+#: field:accounting.report,date_to_cmp:0
+msgid "End Date"
+msgstr ""
+
+#. module: account
+#: model:ir.actions.act_window,name:account.action_account_open_closed_fiscalyear
+#: model:ir.ui.menu,name:account.menu_wizard_account_open_closed_fiscalyear
+msgid "Cancel Opening Entries"
+msgstr ""
+
+#. module: account
+#: field:account.payment.term.line,days2:0
+msgid "Day of the Month"
+msgstr ""
+
+#. module: account
+#: field:account.fiscal.position.tax,tax_src_id:0
+#: field:account.fiscal.position.tax.template,tax_src_id:0
+msgid "Tax Source"
+msgstr ""
+
+#. module: account
+#: view:ir.sequence:0
+msgid "Fiscal Year Sequences"
+msgstr ""
+
+#. module: account
+#: selection:account.financial.report,display_detail:0
+msgid "No detail"
+msgstr ""
+
+#. module: account
+#: code:addons/account/account_analytic_line.py:102
+#, python-format
+msgid "There is no income account defined for this product: \"%s\" (id:%d)"
+msgstr ""
+
+#. module: account
+#: constraint:account.move.line:0
+msgid "You can not create journal items on closed account."
+msgstr ""
+
+#. module: account
+#: field:account.account,unrealized_gain_loss:0
+#: model:ir.actions.act_window,name:account.action_account_gain_loss
+#: model:ir.ui.menu,name:account.menu_unrealized_gains_losses
+msgid "Unrealized Gain or Loss"
+msgstr ""
+
+#. module: account
+#: view:account.fiscalyear:0
+#: view:account.move:0
+#: view:account.move.line:0
+#: view:account.period:0
+msgid "States"
+msgstr ""
+
+#. module: account
+#: model:ir.actions.server,name:account.ir_actions_server_edi_invoice
+msgid "Auto-email confirmed invoices"
+msgstr ""
+
+#. module: account
+#: field:account.invoice,check_total:0
+msgid "Verification Total"
+msgstr ""
+
+#. module: account
+#: report:account.analytic.account.balance:0
+#: report:account.analytic.account.inverted.balance:0
+#: report:account.analytic.account.quantity_cost_ledger:0
+#: view:account.analytic.line:0
+#: view:account.bank.statement:0
+#: field:account.invoice,amount_total:0
+#: field:report.account.sales,amount_total:0
+#: field:report.account_type.sales,amount_total:0
+#: field:report.invoice.created,amount_total:0
+msgid "Total"
+msgstr ""
+
+#. module: account
+#: code:addons/account/wizard/account_move_journal.py:97
+#, python-format
+msgid "Journal: All"
+msgstr ""
+
+#. module: account
+#: field:account.account,company_id:0
+#: field:account.aged.trial.balance,company_id:0
+#: field:account.analytic.journal,company_id:0
+#: field:account.balance.report,company_id:0
+#: field:account.bank.statement,company_id:0
+#: field:account.bank.statement.line,company_id:0
+#: field:account.central.journal,company_id:0
+#: field:account.common.account.report,company_id:0
+#: field:account.common.journal.report,company_id:0
+#: field:account.common.partner.report,company_id:0
+#: field:account.common.report,company_id:0
+#: view:account.entries.report:0
+#: field:account.entries.report,company_id:0
+#: field:account.fiscal.position,company_id:0
+#: field:account.fiscalyear,company_id:0
+#: field:account.general.journal,company_id:0
+#: field:account.installer,company_id:0
+#: field:account.invoice,company_id:0
+#: field:account.invoice.line,company_id:0
+#: view:account.invoice.report:0
+#: field:account.invoice.report,company_id:0
+#: field:account.invoice.tax,company_id:0
+#: view:account.journal:0
+#: field:account.journal,company_id:0
+#: field:account.journal.period,company_id:0
+#: field:account.model,company_id:0
+#: field:account.move,company_id:0
+#: field:account.move.line,company_id:0
+#: field:account.partner.balance,company_id:0
+#: field:account.partner.ledger,company_id:0
+#: field:account.period,company_id:0
+#: field:account.print.journal,company_id:0
+#: field:account.report.general.ledger,company_id:0
+#: field:account.tax,company_id:0
+#: field:account.tax.code,company_id:0
+#: field:account.treasury.report,company_id:0
+#: field:account.vat.declaration,company_id:0
+#: field:accounting.report,company_id:0
+#: view:analytic.entries.report:0
+#: field:analytic.entries.report,company_id:0
+#: field:wizard.multi.charts.accounts,company_id:0
+msgid "Company"
+msgstr ""
+
+#. module: account
+#: model:ir.ui.menu,name:account.menu_action_subscription_form
+msgid "Define Recurring Entries"
+msgstr ""
+
+#. module: account
+#: field:account.entries.report,date_maturity:0
+msgid "Date Maturity"
+msgstr ""
+
+#. module: account
+#: help:account.bank.statement,total_entry_encoding:0
+msgid "Total cash transactions"
+msgstr ""
+
+#. module: account
+#: help:account.partner.reconcile.process,today_reconciled:0
+msgid ""
+"This figure depicts the total number of partners that have gone throught the "
+"reconciliation process today. The current partner is counted as already "
+"processed."
+msgstr ""
+
+#. module: account
+#: view:account.fiscalyear:0
+msgid "Create Monthly Periods"
+msgstr ""
+
+#. module: account
+#: field:account.tax.code.template,sign:0
+msgid "Sign For Parent"
+msgstr ""
+
+#. module: account
+#: model:ir.model,name:account.model_account_balance_report
+msgid "Trial Balance Report"
+msgstr ""
+
+#. module: account
+#: model:ir.actions.act_window,name:account.action_bank_statement_draft_tree
+msgid "Draft statements"
+msgstr ""
+
+#. module: account
+#: model:process.transition,note:account.process_transition_statemententries0
+msgid ""
+"Manual or automatic creation of payment entries according to the statements"
+msgstr ""
+
+#. module: account
+#: field:account.analytic.balance,empty_acc:0
+msgid "Empty Accounts ? "
+msgstr ""
+
+#. module: account
+#: constraint:account.bank.statement:0
+msgid "The journal and period chosen have to belong to the same company."
+msgstr ""
+
+#. module: account
+#: view:account.invoice:0
+msgid "Invoice lines"
+msgstr ""
+
+#. module: account
+#: field:account.chart,period_to:0
+msgid "End period"
+msgstr ""
+
+#. module: account
+#: sql_constraint:account.journal:0
+msgid "The code of the journal must be unique per company !"
+msgstr ""
+
+#. module: account
+#: help:product.category,property_account_expense_categ:0
+#: help:product.template,property_account_expense:0
+msgid ""
+"This account will be used to value outgoing stock for the current product "
+"category using cost price"
+msgstr ""
+
+#. module: account
+#: view:wizard.multi.charts.accounts:0
+msgid "Generate Your Chart of Accounts from a Chart Template"
+msgstr ""
+
+#. module: account
+#: model:ir.actions.act_window,help:account.action_account_invoice_report_all
+msgid ""
+"From this report, you can have an overview of the amount invoiced to your "
+"customer as well as payment delays. The tool search can also be used to "
+"personalise your Invoices reports and so, match this analysis to your needs."
+msgstr ""
+
+#. module: account
+#: view:account.automatic.reconcile:0
+#: view:account.move.line.reconcile.writeoff:0
+msgid "Write-Off Move"
+msgstr ""
+
+#. module: account
+#: model:process.node,note:account.process_node_paidinvoice0
+msgid "Invoice's state is Done"
+msgstr ""
+
+#. module: account
+#: model:ir.model,name:account.model_report_account_sales
+msgid "Report of the Sales by Account"
+msgstr ""
+
+#. module: account
+#: model:ir.model,name:account.model_account_fiscal_position_account
+msgid "Accounts Fiscal Position"
+msgstr ""
+
+#. module: account
+#: report:account.invoice:0
+#: view:account.invoice:0
+#: selection:account.invoice,type:0
+#: selection:account.invoice.report,type:0
+#: model:process.process,name:account.process_process_supplierinvoiceprocess0
+#: selection:report.invoice.created,type:0
+msgid "Supplier Invoice"
+msgstr ""
+
+#. module: account
+#: field:account.account,debit:0
+#: report:account.account.balance:0
+#: report:account.analytic.account.balance:0
+#: report:account.analytic.account.cost_ledger:0
+#: report:account.analytic.account.inverted.balance:0
+#: report:account.central.journal:0
+#: field:account.entries.report,debit:0
+#: report:account.general.journal:0
+#: report:account.general.ledger:0
+#: report:account.general.ledger_landscape:0
+#: report:account.journal.period.print:0
+#: report:account.journal.period.print.sale.purchase:0
+#: field:account.model.line,debit:0
+#: field:account.move.line,debit:0
+#: report:account.partner.balance:0
+#: report:account.third_party_ledger:0
+#: report:account.third_party_ledger_other:0
+#: field:account.treasury.report,debit:0
+#: report:account.vat.declaration:0
+#: field:report.account.receivable,debit:0
+msgid "Debit"
+msgstr ""
+
+#. module: account
+#: selection:account.financial.report,style_overwrite:0
+msgid "Title 3 (bold, smaller)"
+msgstr ""
+
+#. module: account
+#: field:account.invoice,invoice_line:0
+msgid "Invoice Lines"
+msgstr ""
+
+#. module: account
+#: constraint:account.account.template:0
+msgid "Error ! You can not create recursive account templates."
+msgstr ""
+
+#. module: account
+#: selection:account.print.journal,sort_selection:0
+msgid "Journal Entry Number"
+msgstr ""
+
+#. module: account
+#: view:account.subscription:0
+msgid "Recurring"
+msgstr ""
+
+#. module: account
+#: code:addons/account/account.py:642
+#, python-format
+msgid ""
+"You cannot change the type of account from 'Closed' to any other type which "
+"contains journal items!"
+msgstr ""
+
+#. module: account
+#: code:addons/account/account_move_line.py:832
+#, python-format
+msgid "Entry is already reconciled"
+msgstr ""
+
+#. module: account
+#: model:ir.model,name:account.model_report_account_receivable
+msgid "Receivable accounts"
+msgstr ""
+
+#. module: account
+#: selection:account.model.line,date_maturity:0
+msgid "Partner Payment Term"
+msgstr ""
+
+#. module: account
+#: field:temp.range,name:0
+msgid "Range"
+msgstr ""
+
+#. module: account
+#: view:account.analytic.line:0
+msgid "Analytic Journal Items related to a purchase journal."
+msgstr ""
+
+#. module: account
+#: help:account.account,type:0
+msgid ""
+"The 'Internal Type' is used for features available on different types of "
+"accounts: view can not have journal items, consolidation are accounts that "
+"can have children accounts for multi-company consolidations, "
+"payable/receivable are for partners accounts (for debit/credit "
+"computations), closed for depreciated accounts."
+msgstr ""
+
+#. module: account
+#: selection:account.balance.report,display_account:0
+#: selection:account.common.account.report,display_account:0
+#: selection:account.report.general.ledger,display_account:0
+msgid "With movements"
+msgstr ""
+
+#. module: account
+#: view:account.analytic.account:0
+msgid "Account Data"
+msgstr ""
+
+#. module: account
+#: view:account.tax.code.template:0
+msgid "Account Tax Code Template"
+msgstr ""
+
+#. module: account
+#: model:process.node,name:account.process_node_manually0
+msgid "Manually"
+msgstr ""
+
+#. module: account
+#: selection:account.entries.report,month:0
+#: selection:account.invoice.report,month:0
+#: selection:analytic.entries.report,month:0
+#: selection:report.account.sales,month:0
+#: selection:report.account_type.sales,month:0
+msgid "December"
+msgstr ""
+
+#. module: account
+#: model:ir.actions.act_window,name:account.action_account_analytic_journal_tree
+#: model:ir.ui.menu,name:account.account_analytic_journal_print
+msgid "Print Analytic Journals"
+msgstr ""
+
+#. module: account
+#: view:account.invoice.report:0
+msgid "Group by month of Invoice Date"
+msgstr ""
+
+#. module: account
+#: view:account.analytic.line:0
+msgid "Fin.Account"
+msgstr ""
+
+#. module: account
+#: model:ir.actions.act_window,name:account.action_aged_receivable_graph
+#: view:report.aged.receivable:0
+msgid "Aged Receivable"
+msgstr ""
+
+#. module: account
+#: field:account.tax,applicable_type:0
+msgid "Applicability"
+msgstr ""
+
+#. module: account
+#: code:addons/account/wizard/account_move_journal.py:165
+#, python-format
+msgid "This period is already closed !"
+msgstr ""
+
+#. module: account
+#: help:account.move.line,currency_id:0
+msgid "The optional other currency if it is a multi-currency entry."
+msgstr ""
+
+#. module: account
+#: model:process.transition,note:account.process_transition_invoiceimport0
+msgid ""
+"Import of the statement in the system from a supplier or customer invoice"
+msgstr ""
+
+#. module: account
+#: model:ir.ui.menu,name:account.menu_finance_periodical_processing_billing
+msgid "Billing"
+msgstr ""
+
+#. module: account
+#: view:account.account:0
+#: view:account.analytic.account:0
+msgid "Parent Account"
+msgstr ""
+
+#. module: account
+#: model:ir.actions.act_window,help:account.action_account_journal_form
+msgid ""
+"Create and manage your company's journals from this menu. A journal is used "
+"to record transactions of all accounting data related to the day-to-day "
+"business of your company using double-entry bookkeeping system. Depending on "
+"the nature of its activities and the number of daily transactions, a company "
+"may keep several types of specialized journals such as a cash journal, "
+"purchase journal, sales journal..."
+msgstr ""
+
+#. module: account
+#: view:account.payment.term:0
+msgid "Description on Invoices"
+msgstr ""
+
+#. module: account
+#: model:ir.model,name:account.model_account_analytic_chart
+msgid "Account Analytic Chart"
+msgstr ""
+
+#. module: account
+#: help:account.invoice,residual:0
+msgid "Remaining amount due."
+msgstr ""
+
+#. module: account
+#: model:ir.ui.menu,name:account.menu_finance_statistic_report_statement
+msgid "Statistic Reports"
+msgstr ""
+
+#. module: account
+#: code:addons/account/account_move_line.py:1155
+#: code:addons/account/account_move_line.py:1238
+#, python-format
+msgid "Bad account!"
+msgstr ""
+
+#. module: account
+#: field:account.print.journal,sort_selection:0
+msgid "Entries Sorted by"
+msgstr ""
+
+#. module: account
+#: help:account.move,state:0
+msgid ""
+"All manually created new journal entries are usually in the state "
+"'Unposted', but you can set the option to skip that state on the related "
+"journal. In that case, they will be behave as journal entries automatically "
+"created by the system on document validation (invoices, bank statements...) "
+"and will be created in 'Posted' state."
+msgstr ""
+
+#. module: account
+#: view:account.fiscal.position.template:0
+msgid "Accounts Mapping"
+msgstr ""
+
+#. module: account
+#: code:addons/account/account_invoice.py:364
+#, python-format
+msgid "Invoice '%s' is waiting for validation."
+msgstr ""
+
+#. module: account
+#: selection:account.entries.report,month:0
+#: selection:account.invoice.report,month:0
+#: selection:analytic.entries.report,month:0
+#: selection:report.account.sales,month:0
+#: selection:report.account_type.sales,month:0
+msgid "November"
+msgstr ""
+
+#. module: account
+#: selection:account.invoice.refund,filter_refund:0
+msgid "Modify: refund invoice, reconcile and create a new draft invoice"
+msgstr ""
+
+#. module: account
+#: help:account.invoice.line,account_id:0
+msgid "The income or expense account related to the selected product."
+msgstr ""
+
+#. module: account
+#: field:account.subscription,period_total:0
+msgid "Number of Periods"
+msgstr ""
+
+#. module: account
+#: report:account.general.journal:0
+#: model:ir.actions.report.xml,name:account.account_general_journal
+msgid "General Journal"
+msgstr ""
+
+#. module: account
+#: view:account.invoice:0
+msgid "Search Invoice"
+msgstr ""
+
+#. module: account
+#: report:account.invoice:0
+#: view:account.invoice:0
+#: view:account.invoice.refund:0
+#: view:account.invoice.report:0
+#: model:ir.actions.act_window,name:account.action_account_invoice_refund
+msgid "Refund"
+msgstr ""
+
+#. module: account
+#: model:email.template,body_text:account.email_template_edi_invoice
+msgid ""
+"\n"
+"Hello${object.address_invoice_id.name and ' ' or "
+"''}${object.address_invoice_id.name or ''},\n"
+"\n"
+"A new invoice is available for ${object.partner_id.name}:\n"
+" | Invoice number: *${object.number}*\n"
+" | Invoice total: *${object.amount_total} ${object.currency_id.name}*\n"
+" | Invoice date: ${object.date_invoice}\n"
+" % if object.origin:\n"
+" | Order reference: ${object.origin}\n"
+" % endif\n"
+" | Your contact: ${object.user_id.name} ${object.user_id.user_email "
+"and '<%s>'%(object.user_id.user_email) or ''}\n"
+"\n"
+"You can view the invoice document, download it and pay online using the "
+"following link:\n"
+" ${ctx.get('edi_web_url_view') or 'n/a'}\n"
+"\n"
+"% if object.company_id.paypal_account and object.type in ('out_invoice', "
+"'in_refund'):\n"
+"<% \n"
+"comp_name = quote(object.company_id.name)\n"
+"inv_number = quote(object.number)\n"
+"paypal_account = quote(object.company_id.paypal_account)\n"
+"inv_amount = quote(str(object.amount_total))\n"
+"cur_name = quote(object.currency_id.name)\n"
+"paypal_url = \"https://www.paypal.com/cgi-"
+"bin/webscr?cmd=_xclick&business=%s&item_name=%s%%20Invoice%%20%s\"\\\n"
+" "
+"\"&invoice=%s&amount=%s&currency_code=%s&button_subtype=services&no_note=1&bn"
+"=OpenERP_Invoice_PayNow_%s\" % \\\n"
+" "
+"(paypal_account,comp_name,inv_number,inv_number,inv_amount,cur_name,cur_name)"
+"\n"
+"%>\n"
+"It is also possible to directly pay with Paypal:\n"
+" ${paypal_url}\n"
+"% endif\n"
+"\n"
+"If you have any question, do not hesitate to contact us.\n"
+"\n"
+"\n"
+"Thank you for choosing ${object.company_id.name}!\n"
+"\n"
+"\n"
+"--\n"
+"${object.user_id.name} ${object.user_id.user_email and "
+"'<%s>'%(object.user_id.user_email) or ''}\n"
+"${object.company_id.name}\n"
+"% if object.company_id.street:\n"
+"${object.company_id.street or ''}\n"
+"% endif\n"
+"% if object.company_id.street2:\n"
+"${object.company_id.street2}\n"
+"% endif\n"
+"% if object.company_id.city or object.company_id.zip:\n"
+"${object.company_id.zip or ''} ${object.company_id.city or ''}\n"
+"% endif\n"
+"% if object.company_id.country_id:\n"
+"${object.company_id.state_id and ('%s, ' % object.company_id.state_id.name) "
+"or ''} ${object.company_id.country_id.name or ''}\n"
+"% endif\n"
+"% if object.company_id.phone:\n"
+"Phone: ${object.company_id.phone}\n"
+"% endif\n"
+"% if object.company_id.website:\n"
+"${object.company_id.website or ''}\n"
+"% endif\n"
+" "
+msgstr ""
+
+#. module: account
+#: model:ir.model,name:account.model_res_partner_bank
+msgid "Bank Accounts"
+msgstr ""
+
+#. module: account
+#: field:res.partner,credit:0
+msgid "Total Receivable"
+msgstr ""
+
+#. module: account
+#: view:account.account:0
+#: view:account.account.template:0
+#: view:account.journal:0
+#: view:account.move.line:0
+msgid "General Information"
+msgstr ""
+
+#. module: account
+#: view:account.move:0
+#: view:account.move.line:0
+msgid "Accounting Documents"
+msgstr ""
+
+#. module: account
+#: model:ir.model,name:account.model_validate_account_move_lines
+msgid "Validate Account Move Lines"
+msgstr ""
+
+#. module: account
+#: model:ir.actions.act_window,name:account.action_account_analytic_cost_ledger_journal
+#: model:ir.actions.report.xml,name:account.account_analytic_account_quantity_cost_ledger
+msgid "Cost Ledger (Only quantities)"
+msgstr ""
+
+#. module: account
+#: model:process.node,note:account.process_node_supplierpaidinvoice0
+msgid "Invoice's state is Done."
+msgstr ""
+
+#. module: account
+#: model:process.transition,note:account.process_transition_reconcilepaid0
+msgid "As soon as the reconciliation is done, the invoice can be paid."
+msgstr ""
+
+#. module: account
+#: view:account.account.template:0
+msgid "Search Account Templates"
+msgstr ""
+
+#. module: account
+#: view:account.invoice.tax:0
+msgid "Manual Invoice Taxes"
+msgstr ""
+
+#. module: account
+#: field:account.account,parent_right:0
+msgid "Parent Right"
+msgstr ""
+
+#. module: account
+#: model:ir.model,name:account.model_account_addtmpl_wizard
+msgid "account.addtmpl.wizard"
+msgstr ""
+
+#. module: account
+#: field:account.aged.trial.balance,result_selection:0
+#: field:account.common.partner.report,result_selection:0
+#: report:account.partner.balance:0
+#: field:account.partner.balance,result_selection:0
+#: field:account.partner.ledger,result_selection:0
+#: report:account.third_party_ledger:0
+#: report:account.third_party_ledger_other:0
+msgid "Partner's"
+msgstr ""
+
+#. module: account
+#: model:ir.actions.act_window,name:account.action_account_fiscalyear_form
+#: view:ir.sequence:0
+#: model:ir.ui.menu,name:account.menu_action_account_fiscalyear_form
+msgid "Fiscal Years"
+msgstr ""
+
+#. module: account
+#: help:account.analytic.journal,active:0
+msgid ""
+"If the active field is set to False, it will allow you to hide the analytic "
+"journal without removing it."
+msgstr ""
+
+#. module: account
+#: field:account.analytic.line,ref:0
+msgid "Ref."
+msgstr ""
+
+#. module: account
+#: field:account.use.model,model:0
+#: model:ir.model,name:account.model_account_model
+msgid "Account Model"
+msgstr ""
+
+#. module: account
+#: selection:account.entries.report,month:0
+#: selection:account.invoice.report,month:0
+#: selection:analytic.entries.report,month:0
+#: selection:report.account.sales,month:0
+#: selection:report.account_type.sales,month:0
+msgid "February"
+msgstr ""
+
+#. module: account
+#: help:account.bank.statement,name:0
+msgid ""
+"if you give the Name other then /, its created Accounting Entries Move will "
+"be with same name as statement name. This allows the statement entries to "
+"have the same references than the statement itself"
+msgstr ""
+
+#. module: account
+#: field:account.bank.accounts.wizard,bank_account_id:0
+#: view:account.chart.template:0
+#: field:account.chart.template,bank_account_view_id:0
+#: field:account.invoice,partner_bank_id:0
+#: field:account.invoice.report,partner_bank_id:0
+msgid "Bank Account"
+msgstr ""
+
+#. module: account
+#: model:ir.actions.act_window,name:account.action_account_central_journal
+#: model:ir.model,name:account.model_account_central_journal
+msgid "Account Central Journal"
+msgstr ""
+
+#. module: account
+#: report:account.overdue:0
+msgid "Maturity"
+msgstr ""
+
+#. module: account
+#: selection:account.aged.trial.balance,direction_selection:0
+msgid "Future"
+msgstr ""
+
+#. module: account
+#: view:account.move.line:0
+msgid "Search Journal Items"
+msgstr ""
+
+#. module: account
+#: help:account.tax,base_sign:0
+#: help:account.tax,ref_base_sign:0
+#: help:account.tax,ref_tax_sign:0
+#: help:account.tax,tax_sign:0
+#: help:account.tax.template,base_sign:0
+#: help:account.tax.template,ref_base_sign:0
+#: help:account.tax.template,ref_tax_sign:0
+#: help:account.tax.template,tax_sign:0
+msgid "Usually 1 or -1."
+msgstr ""
+
+#. module: account
+#: model:ir.actions.act_window,name:account.action_account_analytic_account_tree2
+#: model:ir.actions.act_window,name:account.action_account_analytic_chart
+#: model:ir.ui.menu,name:account.menu_action_analytic_account_tree2
+msgid "Chart of Analytic Accounts"
+msgstr ""
+
+#. module: account
+#: field:account.chart.template,property_account_expense:0
+msgid "Expense Account on Product Template"
+msgstr ""
+
+#. module: account
+#: help:accounting.report,label_filter:0
+msgid ""
+"This label will be displayed on report to show the balance computed for the "
+"given comparison filter."
+msgstr ""
+
+#. module: account
+#: code:addons/account/wizard/account_report_aged_partner_balance.py:56
+#, python-format
+msgid "You must enter a period length that cannot be 0 or below !"
+msgstr ""
+
+#. module: account
+#: model:ir.actions.act_window,help:account.action_account_form
+msgid ""
+"Create and manage the accounts you need to record journal entries. An "
+"account is part of a ledger allowing your company to register all kinds of "
+"debit and credit transactions. Companies present their annual accounts in "
+"two main parts: the balance sheet and the income statement (profit and loss "
+"account). The annual accounts of a company are required by law to disclose a "
+"certain amount of information. They have to be certified by an external "
+"auditor annually."
+msgstr ""
+
+#. module: account
+#: help:account.move.line,amount_residual_currency:0
+msgid ""
+"The residual amount on a receivable or payable of a journal entry expressed "
+"in its currency (maybe different of the company currency)."
+msgstr ""
diff --git a/addons/account/product_view.xml b/addons/account/product_view.xml
index 98f9f93dfa7..8591b28b173 100644
--- a/addons/account/product_view.xml
+++ b/addons/account/product_view.xml
@@ -51,12 +51,12 @@
<field name="type">form</field>
<field name="inherit_id" ref="product.product_category_form_view"/>
<field name="arch" type="xml">
- <form position="inside">
- <group string="Accounting Properties">
+ <data>
+ <xpath expr="/form/sheet//group[@name='account_property']" position="inside">
<field name="property_account_income_categ" domain="[('type','&lt;&gt;','view'),('type','&lt;&gt;','consolidation')]"/>
<field name="property_account_expense_categ" domain="[('type','&lt;&gt;','view'),('type','&lt;&gt;','consolidation')]"/>
- </group>
- </form>
+ </xpath>
+ </data>
</field>
</record>
diff --git a/addons/account_analytic_analysis/account_analytic_analysis_menu.xml b/addons/account_analytic_analysis/account_analytic_analysis_menu.xml
index c3ac5f5b71c..8f86e9eeedc 100644
--- a/addons/account_analytic_analysis/account_analytic_analysis_menu.xml
+++ b/addons/account_analytic_analysis/account_analytic_analysis_menu.xml
@@ -77,7 +77,7 @@
<menuitem id="base.menu_sales" name="Sales"
parent="base.menu_base_partner"
sequence="1"/>
- <menuitem action="action_account_analytic_overdue_all" id="menu_action_account_analytic_overdue_all" sequence="6" parent="base.menu_sales"/>
+ <menuitem action="action_account_analytic_overdue_all" id="menu_action_account_analytic_overdue_all" sequence="7" parent="base.menu_sales"/>
</data>
diff --git a/addons/account_anglo_saxon/product_view.xml b/addons/account_anglo_saxon/product_view.xml
index 8a79d96d1c4..b88f8f2db42 100644
--- a/addons/account_anglo_saxon/product_view.xml
+++ b/addons/account_anglo_saxon/product_view.xml
@@ -34,12 +34,11 @@
<field name="type">form</field>
<field name="inherit_id" ref="product.product_category_form_view"/>
<field name="arch" type="xml">
- <form position="inside">
- <group>
- <separator string="Accounting Property" colspan="2"/>
+ <data>
+ <xpath expr="/form/sheet//group[@name='account_property']" position="inside">
<field name="property_account_creditor_price_difference_categ" domain="[('type','&lt;&gt;','view'),('type','&lt;&gt;','consolidation')]"/>
- </group>
- </form>
+ </xpath>
+ </data>
</field>
</record>
diff --git a/addons/base_action_rule/i18n/nl.po b/addons/base_action_rule/i18n/nl.po
index a49c3ebb18c..bdd7239f5a9 100644
--- a/addons/base_action_rule/i18n/nl.po
+++ b/addons/base_action_rule/i18n/nl.po
@@ -8,14 +8,14 @@ msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-02-08 00:36+0000\n"
-"PO-Revision-Date: 2012-05-10 18:05+0000\n"
-"Last-Translator: Raphael Collet (OpenERP) <Unknown>\n"
+"PO-Revision-Date: 2012-07-02 15:02+0000\n"
+"Last-Translator: Erwin <Unknown>\n"
"Language-Team: Dutch <nl@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2012-06-28 04:39+0000\n"
-"X-Generator: Launchpad (build 15505)\n"
+"X-Launchpad-Export-Date: 2012-07-03 05:36+0000\n"
+"X-Generator: Launchpad (build 15531)\n"
#. module: base_action_rule
#: help:base.action.rule,act_mail_to_user:0
@@ -337,7 +337,7 @@ msgstr "Actief"
#: code:addons/base_action_rule/base_action_rule.py:329
#, python-format
msgid "No Email ID Found for your Company address!"
-msgstr ""
+msgstr "Geen e-mail id gevonden voor uw bedrijfsadres!"
#. module: base_action_rule
#: field:base.action.rule,act_remind_user:0
diff --git a/addons/base_calendar/base_calendar_view.xml b/addons/base_calendar/base_calendar_view.xml
index a46b2225c42..642f8f7b9e9 100644
--- a/addons/base_calendar/base_calendar_view.xml
+++ b/addons/base_calendar/base_calendar_view.xml
@@ -45,10 +45,10 @@
</group>
</group>
<group>
- <group string="Delegrated From">
+ <group string="Delegated From">
<field name="parent_ids" readonly="1" nolabel="1" />
</group>
- <group string="Delegrated To" >
+ <group string="Delegated To" >
<field name="child_ids" readonly="1" nolabel="1" />
</group>
</group>
diff --git a/addons/caldav/wizard/caldav_browse_view.xml b/addons/caldav/wizard/caldav_browse_view.xml
index 8f06ed47ddd..29f455d764f 100644
--- a/addons/caldav/wizard/caldav_browse_view.xml
+++ b/addons/caldav/wizard/caldav_browse_view.xml
@@ -7,13 +7,36 @@
<field name="model">caldav.browse</field>
<field name="type">form</field>
<field name="arch" type="xml">
- <form string="Browse Caldav" >
- <group colspan="4" width="700" height="500">
- <separator string="Browse Caldav" colspan="4"/>
- <field name="url" colspan="4" />
- <separator string="Description" colspan="4"/>
- <field name="description" colspan="4" nolabel="1"/>
- </group>
+ <form string="Browse Caldav" version="7.0">
+ <header>
+ <button special="cancel" string="_Close" icon="gtk-close"/>
+ </header>
+ <sheet>
+ <group>
+ <separator string="Browse Caldav" colspan="4"/>
+ <field name="url" colspan="2" />
+ <separator string="Help" colspan="4"/>
+ <group colspan="4"><div>
+ 1. Webdav server that provides remote access to calendar<br/>
+ 2. Synchronisation of calendar using WebDAV<br/>
+ 3. Customize calendar event and todo attribute with any of OpenERP model<br/>
+ 4. Provides iCal Import/Export functionality
+ <br/></div></group>
+ <group colspan="4"><div>
+ To access Calendars using CalDAV clients, point them to:
+ http://<i>HOSTNAME</i>:<i>PORT</i>/webdav/<i>DATABASE_NAME</i>/calendars/users/<i>USERNAME</i>/c</div></group>
+ <group colspan="4"><div>
+ To access OpenERP Calendar using WebCal to remote site use the URL like:
+ http://<i>HOSTNAME</i>:<i>PORT</i>/webdav/<i>DATABASE_NAME</i>/Calendars/<i>CALENDAR_NAME</i>.ics</div></group>
+ <group colspan="4"><div>
+ <i>
+ HOSTNAME: Host on which OpenERP server(With webdav) is running<br/>
+ PORT : Port on which OpenERP server is running (By Default : 8069)<br/>
+ DATABASE_NAME: Name of database on which OpenERP Calendar is created</i>
+ </div></group>
+
+ </group>
+ </sheet>
</form>
</field>
</record>
@@ -29,12 +52,11 @@
or
<button string="Cancel" class="oe_link" special="cancel"/>
</header>
- <label string="Configure your openerp hostname. For example : " colspan="4"></label>
- <newline/>
- <label string="database.my.openerp.com or companyserver.com" colspan="4"/>
- <newline/>
- <separator colspan="4"/>
- <field name="host_name" colspan="4" width="250" />
+ <sheet>
+ <group>
+ <field name="host_name" colspan="2" width="250" placeholder="For example : database.my.openerp.com or companyserver.com"/>
+ </group>
+ </sheet>
</form>
</field>
</record>
@@ -50,11 +72,14 @@
or
<button string="Cancel" class="oe_link" special="cancel"/>
</header>
- <separator string="" colspan="4"/>
- <field name="service" colspan="4" width="250" readonly="1"/>
- <field name="collection" colspan="4" width="250" invisible="1" />
- <field name="calendar" colspan="4" width="250" domain="[('collection_id','=', collection)]" readonly="1"/>
- <field name="device" colspan="4" width="250" />
+ <sheet>
+ <group>
+ <field name="service" readonly="1"/>
+ <field name="collection" invisible="1" />
+ <field name="calendar" domain="[('collection_id','=', collection)]" readonly="1"/>
+ <field name="device"/>
+ </group>
+ </sheet>
</form>
</field>
</record>
diff --git a/addons/crm/crm_lead.py b/addons/crm/crm_lead.py
index 92dd6d6e837..69d390ff04d 100644
--- a/addons/crm/crm_lead.py
+++ b/addons/crm/crm_lead.py
@@ -273,14 +273,6 @@ class crm_lead(base_stage, osv.osv):
'color': 0,
}
- def get_needaction_user_ids(self, cr, uid, ids, context=None):
- result = dict.fromkeys(ids, [])
- for obj in self.browse(cr, uid, ids, context=context):
- # salesman must perform an action when in draft mode
- if obj.state == 'draft' and obj.user_id:
- result[obj.id] = [obj.user_id.id]
- return result
-
def create(self, cr, uid, vals, context=None):
obj_id = super(crm_lead, self).create(cr, uid, vals, context)
self.create_send_note(cr, uid, [obj_id], context=context)
@@ -770,64 +762,6 @@ class crm_lead(base_stage, osv.osv):
'type': 'ir.actions.act_window',
}
-
- def message_new(self, cr, uid, msg, custom_values=None, context=None):
- """Automatically calls when new email message arrives"""
- res_id = super(crm_lead, self).message_new(cr, uid, msg, custom_values=custom_values, context=context)
- subject = msg.get('subject') or _("No Subject")
- body = msg.get('body_text')
-
- msg_from = msg.get('from')
- priority = msg.get('priority')
- vals = {
- 'name': subject,
- 'email_from': msg_from,
- 'email_cc': msg.get('cc'),
- 'description': body,
- 'user_id': False,
- }
- if priority:
- vals['priority'] = priority
- vals.update(self.message_partner_by_email(cr, uid, msg.get('from', False)))
- self.write(cr, uid, [res_id], vals, context)
- return res_id
-
- def message_update(self, cr, uid, ids, msg, vals=None, default_act='pending', context=None):
- if isinstance(ids, (str, int, long)):
- ids = [ids]
- if vals == None:
- vals = {}
- super(crm_lead, self).message_update(cr, uid, ids, msg, context=context)
-
- if msg.get('priority') in dict(crm.AVAILABLE_PRIORITIES):
- vals['priority'] = msg.get('priority')
- maps = {
- 'cost':'planned_cost',
- 'revenue': 'planned_revenue',
- 'probability':'probability'
- }
- vls = {}
- for line in msg['body_text'].split('\n'):
- line = line.strip()
- res = tools.misc.command_re.match(line)
- if res and maps.get(res.group(1).lower()):
- key = maps.get(res.group(1).lower())
- vls[key] = res.group(2).lower()
- vals.update(vls)
-
- # Unfortunately the API is based on lists
- # but we want to update the state based on the
- # previous state, so we have to loop:
- for case in self.browse(cr, uid, ids, context=context):
- values = dict(vals)
- if case.state in CRM_LEAD_PENDING_STATES:
- #re-open
- values.update(state=crm.AVAILABLE_STATES[1][0])
- if not case.date_open:
- values['date_open'] = time.strftime(tools.DEFAULT_SERVER_DATETIME_FORMAT)
- res = self.write(cr, uid, [case.id], values, context=context)
- return res
-
def action_makeMeeting(self, cr, uid, ids, context=None):
"""
This opens Meeting's calendar view to schedule meeting on current Opportunity
@@ -882,19 +816,66 @@ class crm_lead(base_stage, osv.osv):
if stage.on_change:
vals['probability'] = stage.probability
return super(crm_lead,self).write(cr, uid, ids, vals, context)
-
+
+ # ----------------------------------------
+ # Mail Gateway
+ # ----------------------------------------
+
+ def message_new(self, cr, uid, msg, custom_values=None, context=None):
+ """ Overrides mail_thread message_new that is called by the mailgateway
+ through message_process.
+ This override updates the document according to the email.
+ """
+ if custom_values is None: custom_values = {}
+ custom_values.update({
+ 'name': msg.get('subject') or _("No Subject"),
+ 'description': msg.get('body_text'),
+ 'email_from': msg.get('from'),
+ 'email_cc': msg.get('cc'),
+ 'user_id': False,
+ })
+ if msg.get('priority') in dict(crm.AVAILABLE_PRIORITIES):
+ custom_values['priority'] = msg.get('priority')
+ custom_values.update(self.message_partner_by_email(cr, uid, msg.get('from', False), context=context))
+ return super(crm_lead, self).message_new(cr, uid, msg, custom_values=custom_values, context=context)
+
+ def message_update(self, cr, uid, ids, msg, update_vals=None, context=None):
+ """ Overrides mail_thread message_update that is called by the mailgateway
+ through message_process.
+ This method updates the document according to the email.
+ """
+ if isinstance(ids, (str, int, long)):
+ ids = [ids]
+ if update_vals is None: update_vals = {}
+
+ if msg.get('priority') in dict(crm.AVAILABLE_PRIORITIES):
+ vals['priority'] = msg.get('priority')
+ maps = {
+ 'cost':'planned_cost',
+ 'revenue': 'planned_revenue',
+ 'probability':'probability',
+ }
+ for line in msg.get('body_text', '').split('\n'):
+ line = line.strip()
+ res = tools.misc.command_re.match(line)
+ if res and maps.get(res.group(1).lower()):
+ key = maps.get(res.group(1).lower())
+ vals[key] = res.group(2).lower()
+
+ return super(crm_lead, self).message_update(cr, uid, ids, msg, update_vals=update_vals, context=context)
+
# ----------------------------------------
# OpenChatter methods and notifications
# ----------------------------------------
def message_get_subscribers(self, cr, uid, ids, context=None):
- sub_ids = self.message_get_subscribers_ids(cr, uid, ids, context=context)
- # add salesman to the subscribers
+ """ Override to add the salesman. """
+ user_ids = super(crm_lead, self).message_get_subscribers(cr, uid, ids, context=context)
for obj in self.browse(cr, uid, ids, context=context):
- if obj.user_id:
- sub_ids.append(obj.user_id.id)
- return self.pool.get('res.users').read(cr, uid, sub_ids, context=context)
-
+ if obj.user_id and not obj.user_id.id in user_ids:
+ user_ids.append(obj.user_id.id)
+ return user_ids
+
def stage_set_send_note(self, cr, uid, ids, stage_id, context=None):
""" Override of the (void) default notification method. """
stage_name = self.pool.get('crm.case.stage').name_get(cr, uid, [stage_id], context=context)[0][1]
diff --git a/addons/crm/crm_lead_demo.xml b/addons/crm/crm_lead_demo.xml
index 7f8cbdf77aa..cbb5e0d8bb9 100644
--- a/addons/crm/crm_lead_demo.xml
+++ b/addons/crm/crm_lead_demo.xml
@@ -1,7 +1,10 @@
<?xml version="1.0"?>
<openerp>
- <data>
- <!-- Demo Leads -->
+ <data noupdate="1">
+ <!--
+ Demo Leads
+ -->
+
<record id="crm_case_itisatelesalescampaign0" model="crm.lead">
<field name="type_id" ref="crm.type_lead1"/>
<field eval="'3'" name="priority"/>
@@ -21,7 +24,6 @@
<field eval="'Plan to Attend a Training'" name="name"/>
<field eval="'0033 769 703-274'" name="phone"/>
</record>
-
<record id="crm_case_electonicgoodsdealer0" model="crm.lead">
<field name="type_id" ref="crm.type_lead7"/>
<field eval="'4'" name="priority"/>
@@ -76,7 +78,6 @@
<field eval="'(514) 698-4118'" name="phone"/>
<field eval="'hmc@thgascompany.com'" name="email_from"/>
</record>
-
<record id="crm_case_itdeveloper0" model="crm.lead">
<field name="type_id" ref="crm.type_lead4"/>
<field eval="'3'" name="priority"/>
@@ -96,7 +97,6 @@
<field eval="'(855) 924-4364'" name="phone"/>
<field eval="'helle@stonageit.be'" name="email_from"/>
</record>
-
<record id="crm_case_mgroperations0" model="crm.lead">
<field eval="1" name="active"/>
<field name="type_id" ref="crm.type_lead3"/>
@@ -209,10 +209,21 @@
<!-- Call Function to Cancel the leads (set as Dead) -->
<function model="crm.lead" name="case_cancel"
- eval="[ref('crm_case_company_partnership0'), ref('crm_case_vpoperations0'), ref('crm_case_developingwebapplications0'), ref('crm_case_webvisitor0')], {'install_mode': True}"
+ eval="[ ref('crm_case_company_partnership0'), ref('crm_case_vpoperations0'),
+ ref('crm_case_developingwebapplications0'), ref('crm_case_webvisitor0')],
+ {'install_mode': True}"
+ />
+ <!-- Call Function to set the leads as Unread -->
+ <function model="crm.lead" name="message_mark_as_unread"
+ eval="[ ref('crm_case_itisatelesalescampaign0'), ref('crm_case_electonicgoodsdealer0'),
+ ref('crm_case_itdeveloper0'), ref('crm_case_employee0')], {}"
/>
- <!-- Demo Opportunities -->
+
+ <!--
+ Demo Opportunities
+ -->
+
<record id="crm_case_construstazunits0" model="crm.lead">
<field eval="60" name="probability"/>
<field eval="1" name="active"/>
@@ -398,7 +409,7 @@
<field name="section_id" ref="crm.section_sales_department"/>
<field name="categ_id" ref="crm.categ_oppor5"/>
<field name="stage_id" ref="crm.stage_lead5"/>
- <field eval="'Need new design for my website'" name="name"/>
+ <field eval="'Need a new design for my website'" name="name"/>
<field eval="time.strftime('%Y-05-01')" name="date_action"/>
<field eval="time.strftime('%Y-06-30')" name="date_deadline"/>
<field eval="'info@opensides.be'" name="email_from"/>
@@ -469,7 +480,7 @@
<field name="section_id" ref="crm.section_sales_department"/>
<field name="categ_id" ref="crm.categ_oppor1"/>
<field name="stage_id" ref="crm.stage_lead4"/>
- <field eval="'Need customize the solution'" name="name"/>
+ <field eval="'Need to customize the solution'" name="name"/>
<field eval="'Conf call with technical service'" name="title_action"/>
<field name="partner_name">Thymbra</field>
<field name="street">Palermo, Capital Federal</field>
@@ -522,5 +533,12 @@
<field name="stage_id" ref="crm.stage_lead1"/>
<field eval="'Need more info about your pc2'" name="name"/>
</record>
+
+ <!-- Call Function to set the opportunities as Unread -->
+ <function model="crm.lead" name="message_mark_as_unread"
+ eval="[ ref('crm_case_rdroundfundingunits25'), ref('crm_case_unifliege'),
+ ref('crm_case_ericdubois4'), ref('crm_case_abcfuelcounits0')], {}"
+ />
+
</data>
</openerp>
diff --git a/addons/crm/crm_lead_view.xml b/addons/crm/crm_lead_view.xml
index 947ba6824f4..83c93b53883 100644
--- a/addons/crm/crm_lead_view.xml
+++ b/addons/crm/crm_lead_view.xml
@@ -2,6 +2,43 @@
<openerp>
<data>
+ <!-- Read/Unread actions -->
+ <record id="actions_server_crm_lead_unread" model="ir.actions.server">
+ <field name="name">Mark unread</field>
+ <field name="condition">True</field>
+ <field name="type">ir.actions.server</field>
+ <field name="model_id" ref="model_crm_lead"/>
+ <field name="state">code</field>
+ <field name="code">self.message_check_and_set_unread(cr, uid, context.get('active_ids'), context=context)</field>
+ </record>
+ <record id="action_crm_lead_unread" model="ir.values">
+ <field name="name">action_crm_lead_unread</field>
+ <field name="action_id" ref="actions_server_crm_lead_unread"/>
+ <field name="value" eval="'ir.actions.server,' + str(ref('actions_server_crm_lead_unread'))" />
+ <field name="key">action</field>
+ <field name="model_id" ref="model_crm_lead" />
+ <field name="model">crm.lead</field>
+ <field name="key2">client_action_multi</field>
+ </record>
+
+ <record id="actions_server_crm_lead_read" model="ir.actions.server">
+ <field name="name">Mark read</field>
+ <field name="condition">True</field>
+ <field name="type">ir.actions.server</field>
+ <field name="model_id" ref="model_crm_lead"/>
+ <field name="state">code</field>
+ <field name="code">self.message_check_and_set_read(cr, uid, context.get('active_ids'), context=context)</field>
+ </record>
+ <record id="action_crm_lead_read" model="ir.values">
+ <field name="name">action_crm_lead_read</field>
+ <field name="action_id" ref="actions_server_crm_lead_read"/>
+ <field name="value" eval="'ir.actions.server,' + str(ref('actions_server_crm_lead_read'))" />
+ <field name="key">action</field>
+ <field name="model_id" ref="model_crm_lead" />
+ <field name="model">crm.lead</field>
+ <field name="key2">client_action_multi</field>
+ </record>
+
<!--
CRM CASE STAGE
-->
@@ -134,10 +171,13 @@
</div>
</group>
<group>
- <field name="contact_name" />
+ <label for="contact_name" />
+ <div>
+ <field name="contact_name" class="oe_inline"/>,
+ <field name="title" placeholder="Title" domain="[('domain', '=', 'contact')]" class="oe_inline"/>
+ </div>
<field name="email_from" widget="email"/>
<field name="function" />
- <field domain="[('domain', '=', 'contact')]" name="title"/>
<field name="phone"/>
<field name="mobile"/>
<field name="fax"/>
@@ -185,8 +225,7 @@
<field name="model">crm.lead</field>
<field name="type">tree</field>
<field name="arch" type="xml">
- <tree string="Leads" fonts="bold:needaction_pending==True" colors="blue:state=='pending';grey:state in ('cancel', 'done')">
- <field name="needaction_pending" invisible="1"/>
+ <tree string="Leads" fonts="bold:needaction_pending==True" colors="grey:state in ('cancel', 'done')">
<field name="date_deadline" invisible="1"/>
<field name="create_date" groups="base.group_no_one"/>
<field name="name"/>
@@ -202,6 +241,7 @@
<field name="referred" invisible="1"/>
<field name="channel_id" invisible="1"/>
<field name="subjects" invisible="1"/>
+ <field name="needaction_pending" invisible="1"/>
</tree>
</field>
</record>
@@ -235,6 +275,8 @@
<field name="user_email"/>
<field name="user_id"/>
<field name="partner_address_email"/>
+ <field name="message_summary"/>
+ <field name="needaction_pending"/>
<templates>
<t t-name="lead_details">
<ul class="oe_kanban_tooltip">
@@ -288,6 +330,8 @@
<img t-att-src="kanban_image('res.users', 'avatar', record.user_id.raw_value[0])" t-att-title="record.user_id.value" width="24" height="24" class="oe_kanban_avatar"/>
</div>
<div class="oe_kanban_footer_left">
+ <t t-if="record.needaction_pending.raw_value"><span class="oe_kanban_mail_new">New</span></t>
+ <t t-raw="record.message_summary.raw_value"/>
</div>
</div>
<div class="oe_clear"></div>
@@ -313,6 +357,10 @@
<field name="type">search</field>
<field name="arch" type="xml">
<search string="Search Leads">
+ <filter icon="terp-mail-message-new"
+ string="Inbox" help="Unread messages"
+ name="needaction_pending"
+ domain="[('needaction_pending','=',True)]"/>
<field name="name" string="Lead / Customer" filter_domain="['|','|',('partner_name','ilike',self),('email_from','ilike',self),('name','ilike',self)]"/>
<!-- subjects is not set as store=True so, it is placed outside filter_domain-->
<field name="subjects"/>
@@ -327,10 +375,6 @@
string="Open"
name="open"
domain="[('state','=','open')]"/>
- <filter icon="terp-gtk-media-pause"
- string="Pending"
- name="pending"
- domain="[('state','=','pending')]"/>
<filter string="Unassigned Leads"
icon="terp-personal-"
domain="[('user_id','=', False)]"
@@ -424,7 +468,6 @@
<div class="oe_title">
<label for="name" class="oe_edit_only"/>
<h1><field name="name"/></h1>
-
<label for="planned_revenue" class="oe_edit_only"/>
<h2>
<field name="planned_revenue" class="oe_inline"/>
@@ -491,9 +534,12 @@
</group>
<group>
- <field name="contact_name" />
+ <label for="contact_name" />
+ <div>
+ <field name="contact_name" class="oe_inline"/>,
+ <field name="title" placeholder="Title" domain="[('domain', '=', 'contact')]" class="oe_inline"/>
+ </div>
<field name="function" />
- <field domain="[('domain', '=', 'contact')]" name="title"/>
<field name="mobile"/>
<field name="fax"/>
</group>
@@ -535,8 +581,7 @@
<field name="model">crm.lead</field>
<field name="type">tree</field>
<field name="arch" type="xml">
- <tree string="Opportunities" fonts="bold:needaction_pending==True" colors="blue:state=='pending' and not(date_deadline and (date_deadline &lt; current_date));gray:state in ('cancel', 'done');red:date_deadline and (date_deadline &lt; current_date)">
- <field name="needaction_pending" invisible="1"/>
+ <tree string="Opportunities" fonts="bold:needaction_pending==True" colors="gray:state in ('cancel', 'done');red:date_deadline and (date_deadline &lt; current_date)">
<field name="date_deadline" invisible="1"/>
<field name="create_date" groups="base.group_no_one"/>
<field name="name" string="Opportunity"/>
@@ -555,6 +600,7 @@
<field name="priority" invisible="1"/>
<field name="categ_id" invisible="1"/>
<field name="state" groups="base.group_no_one"/>
+ <field name="needaction_pending" invisible="1"/>
</tree>
</field>
</record>
@@ -567,21 +613,21 @@
<field name="type">search</field>
<field name="arch" type="xml">
<search string="Search Opportunities">
+ <filter icon="terp-mail-message-new"
+ string="Inbox" help="Unread messages"
+ name="needaction_pending"
+ domain="[('needaction_pending','=',True)]"/>
<field name="name" string="Opportunity / Customer"
filter_domain="['|','|','|',('partner_id','ilike',self),('partner_name','ilike',self),('email_from','ilike',self),('name', 'ilike', self)]"/>
<separator orientation="vertical"/>
<filter icon="terp-check"
- string="New" help="New Opportunities"
+ string="New" help="New Opportunities"
name="new"
domain="[('state','=','draft')]"/>
<filter icon="terp-camera_test"
- string="Open" help="Open Opportunities"
+ string="Open" help="Open Opportunities"
name="open"
domain="[('state','=','open')]"/>
- <filter icon="terp-gtk-media-pause"
- string="Pending" help="Pending Opportunities"
- name="pending"
- domain="[('state','=','pending')]"/>
<filter string="Unassigned Opportunities"
icon="terp-personal-"
domain="[('user_id','=', False)]"
diff --git a/addons/crm/crm_meeting.py b/addons/crm/crm_meeting.py
index 1e21d535c55..37f03d80ec4 100644
--- a/addons/crm/crm_meeting.py
+++ b/addons/crm/crm_meeting.py
@@ -76,13 +76,6 @@ class crm_meeting(base_state, osv.Model):
self.create_send_note(cr, uid, [obj_id], context=context)
return obj_id
- def get_needaction_user_ids(self, cr, uid, ids, context=None):
- result = dict.fromkeys(ids, [])
- for obj in self.browse(cr, uid, ids, context=context):
- if (obj.state == 'draft' and obj.user_id):
- result[obj.id] = [obj.user_id.id]
- return result
-
def case_open(self, cr, uid, ids, context=None):
""" Confirms meeting """
res = super(crm_meeting, self).case_open(cr, uid, ids, context)
diff --git a/addons/crm/crm_meeting_menu.xml b/addons/crm/crm_meeting_menu.xml
index 6c4c9051cbf..3da817e8611 100644
--- a/addons/crm/crm_meeting_menu.xml
+++ b/addons/crm/crm_meeting_menu.xml
@@ -83,7 +83,7 @@
<menuitem name="Meetings" id="menu_crm_case_categ_meet"
action="crm_case_categ_meet" parent="base.menu_sales"
- sequence="7" />
+ sequence="8" />
<record id="action_view_attendee_form" model="ir.actions.act_window">
<field name="name">Meeting Invitations</field>
diff --git a/addons/crm/crm_meeting_view.xml b/addons/crm/crm_meeting_view.xml
index 21c34ff4e9b..5473b727ea3 100644
--- a/addons/crm/crm_meeting_view.xml
+++ b/addons/crm/crm_meeting_view.xml
@@ -2,6 +2,43 @@
<openerp>
<data>
+ <!-- Read/Unread actions -->
+ <record id="actions_server_crm_meeting_unread" model="ir.actions.server">
+ <field name="name">Mark unread</field>
+ <field name="condition">True</field>
+ <field name="type">ir.actions.server</field>
+ <field name="model_id" ref="model_crm_meeting"/>
+ <field name="state">code</field>
+ <field name="code">self.message_check_and_set_unread(cr, uid, context.get('active_ids'), context=context)</field>
+ </record>
+ <record id="action_crm_meeting_unread" model="ir.values">
+ <field name="name">action_crm_meeting_unread</field>
+ <field name="action_id" ref="actions_server_crm_meeting_unread"/>
+ <field name="value" eval="'ir.actions.server,' + str(ref('actions_server_crm_meeting_unread'))" />
+ <field name="key">action</field>
+ <field name="model_id" ref="model_crm_meeting" />
+ <field name="model">crm.meeting</field>
+ <field name="key2">client_action_multi</field>
+ </record>
+
+ <record id="actions_server_crm_meeting_read" model="ir.actions.server">
+ <field name="name">Mark read</field>
+ <field name="condition">True</field>
+ <field name="type">ir.actions.server</field>
+ <field name="model_id" ref="model_crm_meeting"/>
+ <field name="state">code</field>
+ <field name="code">self.message_check_and_set_read(cr, uid, context.get('active_ids'), context=context)</field>
+ </record>
+ <record id="action_crm_meeting_read" model="ir.values">
+ <field name="name">action_crm_meeting_read</field>
+ <field name="action_id" ref="actions_server_crm_meeting_read"/>
+ <field name="value" eval="'ir.actions.server,' + str(ref('actions_server_crm_meeting_read'))" />
+ <field name="key">action</field>
+ <field name="model_id" ref="model_crm_meeting" />
+ <field name="model">crm.meeting</field>
+ <field name="key2">client_action_multi</field>
+ </record>
+
<!-- CRM Meetings Categories Form View -->
<record id="crm_meeting_categ_action" model="ir.actions.act_window">
@@ -47,24 +84,26 @@
<h1>
<field name="name"/>
</h1>
+ </div>
+ <group>
<h2>
- At <field name="location" class="oe_inline" />
+ <label for="date" string="Starting at"/>
+ <field name="date" required="1" class="oe_inline"/>
+ <label string="in" class="oe_inline" attrs="{'invisible': [('location', '=', False)]}"/> <field name="location" placeholder="Specify the location here" class="oe_inline"/>
</h2>
- </div>
- <h2>
- <label for="duration" string="Duration" />
- <field name="duration" widget="float_time"
- on_change="onchange_dates(date,duration,False,allday)"
- class="oe_inline"/> from
- <field name="date"
- string="Start Date"
- required="1"
- class="oe_edit_only oe_inline"/> to
- <field name="date_deadline"
- string="End Date" required="1"
- on_change="onchange_dates(date,False,date_deadline)"
- class="oe_inline"/>
- </h2>
+ </group>
+ <group>
+ <h2>
+ <label for="duration" string="Duration" />
+ <field name="duration" widget="float_time"
+ on_change="onchange_dates(date,duration,False,allday)"
+ class="oe_inline"/> (
+ <field name="date_deadline"
+ string="End Date" required="1"
+ on_change="onchange_dates(date,False,date_deadline)"
+ class="oe_inline"/> )
+ </h2>
+ </group>
<group colspan="4" col="4">
<group colspan="2">
<field name="user_id" />
@@ -234,7 +273,6 @@
<field name="arch" type="xml">
<tree string="Meetings" fonts="bold:needaction_pending==True"
colors="red:state=='open';black:state in ('draft', 'cancel','done','pending')">
- <field name="needaction_pending" invisible="1"/>
<field name="name" string="Subject" />
<field name="user_id"/>
<field name="date"/>
@@ -243,6 +281,7 @@
<field name="partner_id" string="Partner" />
<field name="location" />
<field name="categ_id"/>
+ <field name="needaction_pending" invisible="1"/>
</tree>
</field>
</record>
@@ -284,6 +323,11 @@
<field name="arch" type="xml">
<search string="Search Meetings">
<group>
+ <filter icon="terp-mail-message-new"
+ string="Inbox" help="Unread messages"
+ name="needaction_pending"
+ domain="[('needaction_pending','=',True)]"/>
+ <separator orientation="vertical"/>
<field name="name" string="Meeting / Partner"
filter_domain="['|',('name','ilike',self),('partner_id','ilike', self)]"/>
<separator orientation="vertical"/>
diff --git a/addons/crm/crm_phonecall.py b/addons/crm/crm_phonecall.py
index 9418b05b9ea..13991245eda 100644
--- a/addons/crm/crm_phonecall.py
+++ b/addons/crm/crm_phonecall.py
@@ -288,14 +288,6 @@ class crm_phonecall(base_state, osv.osv):
# ----------------------------------------
# OpenChatter
# ----------------------------------------
-
- def get_needaction_user_ids(self, cr, uid, ids, context=None):
- result = dict.fromkeys(ids)
- for obj in self.browse(cr, uid, ids, context=context):
- result[obj.id] = []
- if (obj.state == 'draft' and obj.user_id):
- result[obj.id] = [obj.user_id.id]
- return result
def case_get_note_msg_prefix(self, cr, uid, id, context=None):
return 'Phonecall'
diff --git a/addons/crm/crm_phonecall_view.xml b/addons/crm/crm_phonecall_view.xml
index 680abf4e4ca..d98243ffcc9 100644
--- a/addons/crm/crm_phonecall_view.xml
+++ b/addons/crm/crm_phonecall_view.xml
@@ -2,8 +2,44 @@
<openerp>
<data>
-<!-- Phonecall Categories Form View -->
+ <!-- Read/Unread actions -->
+ <record id="actions_server_crm_phonecall_unread" model="ir.actions.server">
+ <field name="name">Mark unread</field>
+ <field name="condition">True</field>
+ <field name="type">ir.actions.server</field>
+ <field name="model_id" ref="model_crm_phonecall"/>
+ <field name="state">code</field>
+ <field name="code">self.message_check_and_set_unread(cr, uid, context.get('active_ids'), context=context)</field>
+ </record>
+ <record id="action_crm_phonecall_unread" model="ir.values">
+ <field name="name">action_crm_phonecall_unread</field>
+ <field name="action_id" ref="actions_server_crm_phonecall_unread"/>
+ <field name="value" eval="'ir.actions.server,' + str(ref('actions_server_crm_phonecall_unread'))" />
+ <field name="key">action</field>
+ <field name="model_id" ref="model_crm_phonecall" />
+ <field name="model">crm.phonecall</field>
+ <field name="key2">client_action_multi</field>
+ </record>
+
+ <record id="actions_server_crm_phonecall_read" model="ir.actions.server">
+ <field name="name">Mark read</field>
+ <field name="condition">True</field>
+ <field name="type">ir.actions.server</field>
+ <field name="model_id" ref="model_crm_phonecall"/>
+ <field name="state">code</field>
+ <field name="code">self.message_check_and_set_read(cr, uid, context.get('active_ids'), context=context)</field>
+ </record>
+ <record id="action_crm_phonecall_read" model="ir.values">
+ <field name="name">action_crm_phonecall_read</field>
+ <field name="action_id" ref="actions_server_crm_phonecall_read"/>
+ <field name="value" eval="'ir.actions.server,' + str(ref('actions_server_crm_phonecall_read'))" />
+ <field name="key">action</field>
+ <field name="model_id" ref="model_crm_phonecall" />
+ <field name="model">crm.phonecall</field>
+ <field name="key2">client_action_multi</field>
+ </record>
+<!-- Phonecall Categories Form View -->
<record id="crm_phonecall_categ_action" model="ir.actions.act_window">
<field name="name">Phonecall Categories</field>
<field name="res_model">crm.case.categ</field>
@@ -34,6 +70,7 @@
<field name="categ_id" invisible="1"/>
<field name="create_date" invisible="1"/>
<field name="opportunity_id" invisible="1"/>
+ <field name="needaction_pending" invisible="1"/>
<button string="Convert to Opportunity"
name="%(phonecall2opportunity_act)d"
states="open,pending"
@@ -123,7 +160,6 @@
<field name="type">tree</field>
<field name="arch" type="xml">
<tree string="Phone Calls" fonts="bold:needaction_pending==True" editable="top">
- <field name="needaction_pending" invisible="1"/>
<field name="date"/>
<field name="name"/>
<field name="partner_id"
@@ -138,6 +174,7 @@
<field name="state" invisible="1"/>
<field name="create_date" invisible="1"/>
<field name="opportunity_id" invisible="1"/>
+ <field name="needaction_pending" invisible="1"/>
<button string="Schedule Other Call"
icon="terp-call-start"
name="%(phonecall_to_phonecall_act)d"
@@ -154,7 +191,7 @@
</field>
</record>
-<!-- Phonecalls Calendar View -->
+ <!-- Phonecalls Calendar View -->
<record model="ir.ui.view" id="crm_case_phone_calendar_view">
<field name="name">CRM - Phone Calls Calendar</field>
@@ -169,14 +206,18 @@
</field>
</record>
-<!-- Phonecalls Search View -->
-
+ <!-- Phonecalls Search View -->
<record id="view_crm_case_phonecalls_filter" model="ir.ui.view">
<field name="name">CRM - Phone Calls Search</field>
<field name="model">crm.phonecall</field>
<field name="type">search</field>
<field name="arch" type="xml">
<search string="Search Phonecalls">
+ <filter icon="terp-mail-message-new"
+ string="Inbox" help="Unread messages"
+ name="needaction_pending"
+ domain="[('needaction_pending','=',True)]"/>
+ <separator orientation="vertical"/>
<field name="name" string="Phonecalls"/>
<separator orientation="vertical"/>
<field name="date"/>
diff --git a/addons/crm/crm_view.xml b/addons/crm/crm_view.xml
index a733ef511f9..fc3cb3a3d2e 100644
--- a/addons/crm/crm_view.xml
+++ b/addons/crm/crm_view.xml
@@ -81,11 +81,16 @@
<notebook colspan="4">
<page string="Sales Team">
<group col="4">
- <field name="reply_to"/>
- <field name="allow_unlink"/>
- <field name="change_responsible"/>
- <field name="member_ids"/>
+ <group>
+ <field name="reply_to"/>
+ </group>
+ <group>
+ <field name="change_responsible"/>
+ <field name="allow_unlink"/>
+ </group>
</group>
+ <separator string="Team Members"/>
+ <field name="member_ids"/>
</page>
<page string="Stages">
<separator string="Select Stages for this Sales Team"/>
diff --git a/addons/crm/res_partner_view.xml b/addons/crm/res_partner_view.xml
index a6082c25afa..a4b2f6e82e0 100644
--- a/addons/crm/res_partner_view.xml
+++ b/addons/crm/res_partner_view.xml
@@ -45,25 +45,57 @@
</field>
</record>
- <act_window
- id="crm_meeting_partner"
- name="Meetings"
- res_model="crm.meeting"
- src_model="res.partner"
- view_mode="calendar,tree,form,gantt"
- context="{'search_default_partner_id': [active_id],'default_partner_id': active_id}"
- />
- <act_window
- id="act_res_partner_2_opportunity"
- name="Opportunities"
- res_model="crm.lead"
- src_model="res.partner"
- view_mode="kanban,tree,form,graph,calendar"
- domain="[('type','=','opportunity')]"
- context="{'search_default_partner_id': [active_id],'default_partner_id': active_id}"
- />
+ <!-- open meetings related to given partner -->
+ <record id="crm_meeting_partner" model="ir.actions.act_window">
+ <field name="name">Meetings</field>
+ <field name="src_model">res.partner</field>
+ <field name="res_model">crm.meeting</field>
+ <field name="view_mode">calendar,tree,form,gantt</field>
+ <field name="context">{'search_default_partner_id': active_id}</field>
+ </record>
+
+ <!-- open opportunities related to given partner -->
+ <record model="ir.actions.act_window" id="relate_partner_opportunities">
+ <field name="name">Opportunities</field>
+ <field name="res_model">crm.lead</field>
+ <field name="view_mode">kanban,tree,form,graph,calendar</field>
+ <field name="domain">[('type','=','opportunity')]</field>
+ <field name="context">{'search_default_partner_id': active_id,
+ 'stage_type': 'opportunity', 'default_type': 'opportunity'}</field>
+ <field name="view_id" eval="False"/>
+ <field name="search_view_id" ref="crm.view_crm_case_opportunities_filter"/>
+ <field name="help">
+ With opportunities you can manage and keep track of your sales pipeline by creating specific customer- or prospect-related sales documents to follow up potential sales. Information such as expected revenue, opportunity stage, expected closing date, communication history and much more can be stored. Opportunities can be connected to the email gateway: new emails may create opportunities, each of them automatically gets the history of the conversation with the customer.
+
+ You and your team(s) will be able to plan meetings and phone calls from opportunities, convert them into quotations, manage related documents, track all customer related activities, and much more.
+ </field>
+ </record>
+ <record model="ir.actions.act_window.view" id="relate_partner_opportunities_kanban">
+ <field name="sequence" eval="0"/>
+ <field name="view_mode">kanban</field>
+ <field name="view_id" ref="crm_case_kanban_view_leads"/>
+ <field name="act_window_id" ref="relate_partner_opportunities"/>
+ </record>
+ <record model="ir.actions.act_window.view" id="relate_partner_opportunities_tree">
+ <field name="sequence" eval="1"/>
+ <field name="view_mode">tree</field>
+ <field name="view_id" ref="crm_case_tree_view_oppor"/>
+ <field name="act_window_id" ref="relate_partner_opportunities"/>
+ </record>
+ <record model="ir.actions.act_window.view" id="relate_partner_opportunities_form">
+ <field name="sequence" eval="2"/>
+ <field name="view_mode">form</field>
+ <field name="view_id" ref="crm_case_form_view_oppor"/>
+ <field name="act_window_id" ref="relate_partner_opportunities"/>
+ </record>
+ <record model="ir.actions.act_window.view" id="relate_partner_opportunities_graph">
+ <field name="sequence" eval="4"/>
+ <field name="view_mode">graph</field>
+ <field name="view_id" ref="crm_case_graph_view_opportunity"/>
+ <field name="act_window_id" ref="relate_partner_opportunities"/>
+ </record>
-<!-- Partner kanban view inherte -->
+ <!-- Partner kanban view inherte -->
<record model="ir.ui.view" id="crm_lead_partner_kanban_view">
<field name="name">res.partner.kanban.inherit</field>
<field name="model">res.partner</field>
@@ -74,13 +106,13 @@
<field name="opportunity_count"/>
<field name="meeting_count"/>
</field>
- <xpath expr="//h4[@class='oe_partner_heading']" position="after">
- <a name="%(act_res_partner_2_opportunity)d" type="action">
- <t t-if="record.opportunity_count.value"><t t-esc="record.opportunity_count.value"/> Opportunities</t>
- </a>
- <a name="%(crm_meeting_partner)d" type="action">
- <t t-if="record.meeting_count.value"><t t-esc="record.meeting_count.value"/> Meetings</t>
- </a>
+ <xpath expr="//h4[@class='oe_partner_heading']" position="after">
+ <a name="%(relate_partner_opportunities)d" type="action">
+ <t t-if="record.opportunity_count.value"><t t-esc="record.opportunity_count.value"/> Opportunities</t>
+ </a>
+ <a name="%(crm_meeting_partner)d" type="action">
+ <t t-if="record.meeting_count.value"><t t-esc="record.meeting_count.value"/> Meetings</t>
+ </a>
</xpath>
</field>
</record>
@@ -96,13 +128,12 @@
<button type="action"
string="Schedule a Meeting"
name="%(crm.crm_case_categ_meet_create_partner)d"
- context="{'default_partner_id': [active_id], 'default_duration': 4.0}"/>
+ context="{'search_default_partner_id': active_id, 'default_duration': 4.0}"/>
<button type="action" string="Schedule a Call"
name="%(crm.crm_case_categ_phone_create_partner)d"
- context="{'search_default_partner_id': [active_id], 'default_duration': 1.0}" />
+ context="{'search_default_partner_id': active_id, 'default_duration': 1.0}" />
<button type="action" string="Opportunities"
- context="{'search_default_partner_id': [active_id]}"
- name="%(crm.action_view_crm_partner2opportunity)d" />
+ name="%(crm.crm_case_category_act_oppor11)d" context="{'search_default_partner_id': active_id}"/>
</xpath>
</field>
</record>
diff --git a/addons/crm/wizard/crm_phonecall_to_phonecall_view.xml b/addons/crm/wizard/crm_phonecall_to_phonecall_view.xml
index a9819d63886..7319c1b0437 100644
--- a/addons/crm/wizard/crm_phonecall_to_phonecall_view.xml
+++ b/addons/crm/wizard/crm_phonecall_to_phonecall_view.xml
@@ -17,15 +17,12 @@
<button string="Cancel" class="oe_link" special="cancel" />
</header>
<group col="4">
- <separator string="Schedule/Log a Call" colspan="4"/>
<field name="action"/>
- <separator string="Call Details" colspan="4"/>
<field name="name"/>
<field name="date" string="Planned Date" attrs="{'invisible': [('action','=','log')]}"/>
<field name="partner_id" readonly="True"/>
<field name="user_id" />
<field name="section_id"/>
- <field name="categ_id" string="Type" widget="selection" domain="[('object_id.model', '=', 'crm.phonecall')]"/>
</group>
</form>
</field>
diff --git a/addons/crm_caldav/crm_caldav_view.xml b/addons/crm_caldav/crm_caldav_view.xml
index 287e301532e..5746a3af0aa 100644
--- a/addons/crm_caldav/crm_caldav_view.xml
+++ b/addons/crm_caldav/crm_caldav_view.xml
@@ -2,7 +2,7 @@
<openerp>
<data>
<record id="action_caldav_browse" model="ir.actions.act_window">
- <field name="name">Caldav Browse</field>
+ <field name="name">Synchronize Your Meetings</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">user.preference</field>
<field name="view_id" ref="caldav.host_prefernce_form"/>
diff --git a/addons/crm_claim/crm_claim.py b/addons/crm_claim/crm_claim.py
index 808ad2e2055..5b98258240c 100644
--- a/addons/crm_claim/crm_claim.py
+++ b/addons/crm_claim/crm_claim.py
@@ -183,59 +183,53 @@ class crm_claim(base_stage, osv.osv):
}
address = self.pool.get('res.partner').browse(cr, uid, part)
return {'value': {'email_from': address.email, 'partner_phone': address.phone}}
-
+
+ # -------------------------------------------------------
+ # Mail gateway
+ # -------------------------------------------------------
+
def message_new(self, cr, uid, msg, custom_values=None, context=None):
- """Automatically called when new email message arrives"""
- res_id = super(crm_claim,self).message_new(cr, uid, msg, custom_values=custom_values, context=context)
- subject = msg.get('subject')
- body = msg.get('body_text')
- msg_from = msg.get('from')
- priority = msg.get('priority')
- vals = {
- 'name': subject,
- 'email_from': msg_from,
+ """ Overrides mail_thread message_new that is called by the mailgateway
+ through message_process.
+ This override updates the document according to the email.
+ """
+ if custom_values is None: custom_values = {}
+ custom_values.update({
+ 'name': msg.get('subject') or _("No Subject"),
+ 'description': msg.get('body_text'),
+ 'email_from': msg.get('from'),
'email_cc': msg.get('cc'),
- 'description': body,
- 'user_id': False,
- }
- if priority:
- vals['priority'] = priority
- vals.update(self.message_partner_by_email(cr, uid, msg.get('from', False)))
- self.write(cr, uid, [res_id], vals, context=context)
- return res_id
+ })
+ if msg.get('priority'):
+ custom_values['priority'] = msg.get('priority')
+ custom_values.update(self.message_partner_by_email(cr, uid, msg.get('from'), context=context))
+ return super(crm_claim,self).message_new(cr, uid, msg, custom_values=custom_values, context=context)
- def message_update(self, cr, uid, ids, msg, vals={}, default_act='pending', context=None):
+ def message_update(self, cr, uid, ids, msg, update_vals=None, context=None):
+ """ Overrides mail_thread message_update that is called by the mailgateway
+ through message_process.
+ This method updates the document according to the email.
+ """
if isinstance(ids, (str, int, long)):
ids = [ids]
-
- res_id = super(crm_claim,self).message_update(cr, uid, ids, msg, context=context)
+ if update_vals is None: update_vals = {}
if msg.get('priority') in dict(crm.AVAILABLE_PRIORITIES):
- vals['priority'] = msg.get('priority')
+ update_vals['priority'] = msg.get('priority')
maps = {
'cost':'planned_cost',
'revenue': 'planned_revenue',
'probability':'probability'
}
- vls = {}
for line in msg['body_text'].split('\n'):
line = line.strip()
res = tools.misc.command_re.match(line)
if res and maps.get(res.group(1).lower()):
key = maps.get(res.group(1).lower())
- vls[key] = res.group(2).lower()
- vals.update(vls)
+ update_vals[key] = res.group(2).lower()
- # Unfortunately the API is based on lists
- # but we want to update the state based on the
- # previous state, so we have to loop:
- for case in self.browse(cr, uid, ids, context=context):
- values = dict(vals)
- if case.state in CRM_CLAIM_PENDING_STATES:
- values.update(state=crm.AVAILABLE_STATES[1][0]) #re-open
- res = self.write(cr, uid, [case.id], values, context=context)
- return res
+ return super(crm_claim,self).message_update(cr, uid, ids, msg, update_vals=update_vals, context=context)
# ---------------------------------------------------
# OpenChatter methods and notifications
diff --git a/addons/crm_fundraising/crm_fundraising.py b/addons/crm_fundraising/crm_fundraising.py
index 73f72979730..20d90795ffc 100644
--- a/addons/crm_fundraising/crm_fundraising.py
+++ b/addons/crm_fundraising/crm_fundraising.py
@@ -127,21 +127,26 @@ class crm_fundraising(base_stage, osv.osv):
self.create_send_note(cr, uid, [obj_id], context=context)
return obj_id
+ # -------------------------------------------------------
+ # Mail gateway
+ # -------------------------------------------------------
+
def message_new(self, cr, uid, msg, custom_values=None, context=None):
- """Automatically called when new email message arrives"""
- res_id = super(crm_fundraising,self).message_new(cr, uid, msg, custom_values=custom_values, context=context)
- vals = {
- 'name': msg.get('subject'),
+ """ Overrides mail_thread message_new that is called by the mailgateway
+ through message_process.
+ This override also updates the document according to the email.
+ """
+ if custom_values is None: custom_values = {}
+ custom_values.update({
+ 'name': msg.get('subject') or _("No Subject"),
+ 'description': msg.get('body_text'),
'email_from': msg.get('from'),
'email_cc': msg.get('cc'),
- 'description': msg.get('body_text'),
- }
- priority = msg.get('priority')
- if priority:
- vals['priority'] = priority
- vals.update(self.message_partner_by_email(cr, uid, msg.get('from')))
- self.write(cr, uid, [res_id], vals, context=context)
- return res_id
+ })
+ if msg.get('priority'):
+ custom_values['priority'] = priority
+ custom_values.update(self.message_partner_by_email(cr, uid, msg.get('from'), context=context))
+ return super(crm_fundraising,self).message_new(cr, uid, msg, custom_values=custom_values, context=context)
# ---------------------------------------------------
# OpenChatter methods and notifications
diff --git a/addons/crm_fundraising/crm_fundraising_view.xml b/addons/crm_fundraising/crm_fundraising_view.xml
index aefb64db4e6..212ef29a6a1 100644
--- a/addons/crm_fundraising/crm_fundraising_view.xml
+++ b/addons/crm_fundraising/crm_fundraising_view.xml
@@ -72,38 +72,48 @@
<field name="state" widget="statusbar" nolabel="1" statusbar_visible="draft,open,done" statusbar_colors='{"pending":"blue"}'/>
</header>
<sheet string="Funds Form">
- <group col="4">
- <field name="name" string="Name"/>
- <field name="section_id" colspan="1" widget="selection"/>
- <field name="user_id" string="Responsible"/>
- <field name="date"/>
- <field name="categ_id" widget="selection" domain="[('object_id.model', '=', 'crm.fundraising')]"/>
- <field name="type_id" string="Payment Mode" widget="selection"/>
+ <label for="name" class="oe_edit_only"/>
+ <h1>
+ <field name="name"/>
+ </h1>
+ <label for="categ_id" class="oe_edit_only"/>
+ <h2>
+ <field name="categ_id" widget="selection" domain="[('object_id.model', '=', 'crm.fundraising')]" class="oe_inline"/>
+ </h2>
+ <group>
+ <group>
+ <field name="user_id" string="Responsible"/>
+ <field name="section_id" colspan="1" widget="selection"/>
+ </group>
+ <group>
+ <field name="date"/>
+ <field name="type_id" string="Payment Mode" widget="selection"/>
+ <field name="priority" string="Priority"/>
+ </group>
</group>
<notebook>
<page string="Funds">
<group>
- <group string="Communication">
+ <group>
<field name="partner_id"
on_change="onchange_partner_id(partner_id, email_from)"
/>
<field name="email_from"/>
</group>
- <group string="Estimates">
+ <group>
<field name="planned_cost"/>
<field name="planned_revenue"/>
<field name="probability"/>
</group>
</group>
<separator colspan="4" string="Notes"/>
- <field name="description"/>
+ <field name="description" placeholder="Add a note..."/>
</page>
<page string="Extra Info">
<group>
<group string="Misc">
<field name="active"/>
<field name="id"/>
- <field name="priority" string="Priority"/>
</group>
<group groups="base.group_no_one" string="Dates">
<field name="create_date"/>
diff --git a/addons/crm_helpdesk/crm_helpdesk.py b/addons/crm_helpdesk/crm_helpdesk.py
index f0d98efebb3..fe7b0581e9b 100644
--- a/addons/crm_helpdesk/crm_helpdesk.py
+++ b/addons/crm_helpdesk/crm_helpdesk.py
@@ -95,55 +95,51 @@ class crm_helpdesk(base_state, osv.osv):
self.create_send_note(cr, uid, [obj_id], context=context)
return obj_id
- def message_new(self, cr, uid, msg_dict, custom_values=None, context=None):
- """Automatically called when new email message arrives"""
- res_id = super(crm_helpdesk,self).message_new(cr, uid, msg_dict, custom_values=custom_values, context=context)
- subject = msg_dict.get('subject') or _("No Subject")
- body = msg_dict.get('body_text')
- msg_from = msg_dict.get('from')
- vals = {
- 'name': subject,
- 'email_from': msg_from,
- 'email_cc': msg_dict.get('cc'),
- 'description': body,
+ # -------------------------------------------------------
+ # Mail gateway
+ # -------------------------------------------------------
+
+ def message_new(self, cr, uid, msg, custom_values=None, context=None):
+ """ Overrides mail_thread message_new that is called by the mailgateway
+ through message_process.
+ This override updates the document according to the email.
+ """
+ if custom_values is None: custom_values = {}
+ custom_values.update({
+ 'name': msg.get('subject') or _("No Subject"),
+ 'description': msg.get('body_text'),
+ 'email_from': msg.get('from'),
+ 'email_cc': msg.get('cc'),
'user_id': False,
- }
- vals.update(self.message_partner_by_email(cr, uid, msg_from))
- self.write(cr, uid, [res_id], vals, context)
- return res_id
-
- def message_update(self, cr, uid, ids, msg, vals={}, default_act='pending', context=None):
+ })
+ custom_values.update(self.message_partner_by_email(cr, uid, msg.get('from'), context=context))
+ return super(crm_helpdesk,self).message_new(cr, uid, msg, custom_values=custom_values, context=context)
+
+ def message_update(self, cr, uid, ids, msg, update_vals=None, context=None):
+ """ Overrides mail_thread message_update that is called by the mailgateway
+ through message_process.
+ This method updates the document according to the email.
+ """
if isinstance(ids, (str, int, long)):
ids = [ids]
-
- super(crm_helpdesk,self).message_update(cr, uid, ids, msg, context=context)
+ if update_vals is None: update_vals = {}
if msg.get('priority') in dict(crm.AVAILABLE_PRIORITIES):
- vals['priority'] = msg.get('priority')
+ update_vals['priority'] = msg.get('priority')
maps = {
'cost':'planned_cost',
'revenue': 'planned_revenue',
'probability':'probability'
}
- vls = {}
for line in msg['body_text'].split('\n'):
line = line.strip()
res = tools.misc.command_re.match(line)
if res and maps.get(res.group(1).lower()):
key = maps.get(res.group(1).lower())
- vls[key] = res.group(2).lower()
- vals.update(vls)
-
- # Unfortunately the API is based on lists
- # but we want to update the state based on the
- # previous state, so we have to loop:
- for case in self.browse(cr, uid, ids, context=context):
- values = dict(vals)
- if case.state in CRM_HELPDESK_STATES:
- values.update(state=crm.AVAILABLE_STATES[1][0]) #re-open
- res = self.write(cr, uid, [case.id], values, context=context)
- return res
+ update_vals[key] = res.group(2).lower()
+
+ return super(crm_helpdesk,self).message_update(cr, uid, ids, msg, update_vals=update_vals, context=context)
# ******************************
# OpenChatter
diff --git a/addons/crm_todo/crm_todo_view.xml b/addons/crm_todo/crm_todo_view.xml
index c7617f317b0..c959f1722e6 100644
--- a/addons/crm_todo/crm_todo_view.xml
+++ b/addons/crm_todo/crm_todo_view.xml
@@ -58,7 +58,7 @@
id="menu_crm_todo"
parent="base.menu_sales"
action="crm_todo_action"
- sequence="5"/>
+ sequence="6"/>
</data>
diff --git a/addons/email_template/i18n/nl.po b/addons/email_template/i18n/nl.po
index 43d4396600c..f2192e8043b 100644
--- a/addons/email_template/i18n/nl.po
+++ b/addons/email_template/i18n/nl.po
@@ -8,14 +8,14 @@ msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-02-08 00:36+0000\n"
-"PO-Revision-Date: 2012-05-10 18:29+0000\n"
-"Last-Translator: Raphael Collet (OpenERP) <Unknown>\n"
+"PO-Revision-Date: 2012-07-02 15:02+0000\n"
+"Last-Translator: Erwin <Unknown>\n"
"Language-Team: Dutch <nl@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2012-06-28 04:39+0000\n"
-"X-Generator: Launchpad (build 15505)\n"
+"X-Launchpad-Export-Date: 2012-07-03 05:36+0000\n"
+"X-Generator: Launchpad (build 15531)\n"
#. module: email_template
#: field:email.template,subtype:0
@@ -192,7 +192,7 @@ msgstr ""
#. module: email_template
#: model:ir.model,name:email_template.model_mail_compose_message
msgid "Email composition wizard"
-msgstr ""
+msgstr "E-mail samenstellen wizard"
#. module: email_template
#: view:email.template:0
diff --git a/addons/event/event.py b/addons/event/event.py
index a348e005d06..26fef61d2b5 100644
--- a/addons/event/event.py
+++ b/addons/event/event.py
@@ -271,13 +271,6 @@ class event_event(osv.osv):
# OpenChatter methods and notifications
# ----------------------------------------
- def get_needaction_user_ids(self, cr, uid, ids, context=None):
- result = dict.fromkeys(ids, [])
- for obj in self.browse(cr, uid, ids, context=context):
- if obj.state == 'draft' and obj.user_id:
- result[obj.id] = [obj.user_id.id]
- return result
-
def create_send_note(self, cr, uid, ids, context=None):
message = _("Event has been <b>created</b>.")
self.message_append_note(cr, uid, ids, body=message, context=context)
@@ -451,13 +444,6 @@ class event_registration(osv.osv):
# OpenChatter methods and notifications
# ----------------------------------------
- def get_needaction_user_ids(self, cr, uid, ids, context=None):
- result = dict.fromkeys(ids, [])
- for obj in self.browse(cr, uid, ids, context=context):
- if obj.state == 'draft' and obj.user_id:
- result[obj.id] = [obj.user_id.id]
- return result
-
def create_send_note(self, cr, uid, ids, context=None):
message = _("Registration has been <b>created</b>.")
self.message_append_note(cr, uid, ids, body=message, context=context)
diff --git a/addons/event/event_view.xml b/addons/event/event_view.xml
index 0e9647d496d..fcf8231f5f7 100644
--- a/addons/event/event_view.xml
+++ b/addons/event/event_view.xml
@@ -47,6 +47,43 @@
<!-- Events Organisation/CONFIGURATION/EVENTS -->
+ <!-- Event Read/Unread actions -->
+ <record id="actions_server_event_event_unread" model="ir.actions.server">
+ <field name="name">Mark unread</field>
+ <field name="condition">True</field>
+ <field name="type">ir.actions.server</field>
+ <field name="model_id" ref="model_event_event"/>
+ <field name="state">code</field>
+ <field name="code">self.message_check_and_set_unread(cr, uid, context.get('active_ids'), context=context)</field>
+ </record>
+ <record id="action_event_event_unread" model="ir.values">
+ <field name="name">action_event_event_unread</field>
+ <field name="action_id" ref="actions_server_event_event_unread"/>
+ <field name="value" eval="'ir.actions.server,' + str(ref('actions_server_event_event_unread'))" />
+ <field name="key">action</field>
+ <field name="model_id" ref="model_event_event" />
+ <field name="model">event.event</field>
+ <field name="key2">client_action_multi</field>
+ </record>
+
+ <record id="actions_server_event_event_read" model="ir.actions.server">
+ <field name="name">Mark read</field>
+ <field name="condition">True</field>
+ <field name="type">ir.actions.server</field>
+ <field name="model_id" ref="model_event_event"/>
+ <field name="state">code</field>
+ <field name="code">self.message_check_and_set_read(cr, uid, context.get('active_ids'), context=context)</field>
+ </record>
+ <record id="action_event_event_read" model="ir.values">
+ <field name="name">action_event_event_read</field>
+ <field name="action_id" ref="actions_server_event_event_read"/>
+ <field name="value" eval="'ir.actions.server,' + str(ref('actions_server_event_event_read'))" />
+ <field name="key">action</field>
+ <field name="model_id" ref="model_event_event" />
+ <field name="model">event.event</field>
+ <field name="key2">client_action_multi</field>
+ </record>
+
<record model="ir.ui.view" id="view_event_form">
<field name="name">Events</field>
<field name="model">event.event</field>
@@ -144,7 +181,7 @@
<field name="model">event.event</field>
<field name="type">tree</field>
<field name="arch" type="xml">
- <tree string="Events" colors="red:(register_min and register_min&gt;register_current) or (register_max and register_max&lt;register_current);grey:state=='cancel'">
+ <tree string="Events" fonts="bold:needaction_pending==True" colors="red:(register_min and register_min&gt;register_current) or (register_max and register_max&lt;register_current);grey:state=='cancel'">
<field name="name" string="Name"/>
<field name="type"/>
<field name="date_begin"/>
@@ -155,6 +192,7 @@
<field name="main_speaker_id" groups="base.extended"/>
<field name="user_id"/>
<field name="state"/>
+ <field name="needaction_pending" invisible="1"/>
</tree>
</field>
</record>
@@ -264,6 +302,11 @@
<field name="type">search</field>
<field name="arch" type="xml">
<search string="Events">
+ <filter icon="terp-mail-message-new"
+ string="Inbox" help="Unread messages"
+ name="needaction_pending"
+ domain="[('needaction_pending','=',True)]"/>
+ <separator orientation="vertical"/>
<group>
<field name="name" string="Events"/>
<separator orientation="vertical"/>
@@ -330,12 +373,49 @@
<!-- EVENTS/REGISTRATIONS/EVENTS -->
+ <!-- Registration Read/Unread actions -->
+ <record id="actions_server_event_registration_unread" model="ir.actions.server">
+ <field name="name">Mark unread</field>
+ <field name="condition">True</field>
+ <field name="type">ir.actions.server</field>
+ <field name="model_id" ref="model_event_registration"/>
+ <field name="state">code</field>
+ <field name="code">self.message_check_and_set_unread(cr, uid, context.get('active_ids'), context=context)</field>
+ </record>
+ <record id="action_event_registration_unread" model="ir.values">
+ <field name="name">action_event_registration_unread</field>
+ <field name="action_id" ref="actions_server_event_registration_unread"/>
+ <field name="value" eval="'ir.actions.server,' + str(ref('actions_server_event_registration_unread'))" />
+ <field name="key">action</field>
+ <field name="model_id" ref="model_event_registration" />
+ <field name="model">event.registration</field>
+ <field name="key2">client_action_multi</field>
+ </record>
+
+ <record id="actions_server_event_registration_read" model="ir.actions.server">
+ <field name="name">Mark read</field>
+ <field name="condition">True</field>
+ <field name="type">ir.actions.server</field>
+ <field name="model_id" ref="model_event_registration"/>
+ <field name="state">code</field>
+ <field name="code">self.message_check_and_set_read(cr, uid, context.get('active_ids'), context=context)</field>
+ </record>
+ <record id="action_event_registration_read" model="ir.values">
+ <field name="name">action_event_registration_read</field>
+ <field name="action_id" ref="actions_server_event_registration_read"/>
+ <field name="value" eval="'ir.actions.server,' + str(ref('actions_server_event_registration_read'))" />
+ <field name="key">action</field>
+ <field name="model_id" ref="model_event_registration" />
+ <field name="model">event.registration</field>
+ <field name="key2">client_action_multi</field>
+ </record>
+
<record model="ir.ui.view" id="view_event_registration_tree">
<field name="name">event.registration.tree</field>
<field name="model">event.registration</field>
<field name="type">tree</field>
<field name="arch" type="xml">
- <tree string="Registration" >
+ <tree string="Registration" fonts="bold:needaction_pending==True">
<field name="create_date"/>
<field name="partner_id"/>
<field name="name"/>
@@ -345,6 +425,7 @@
<field name="user_id"/>
<field name="origin"/>
<field name="state"/>
+ <field name="needaction_pending" invisible="1"/>
</tree>
</field>
</record>
@@ -449,6 +530,11 @@
<field name="arch" type="xml">
<search string="Event Registration">
<group>
+ <filter icon="terp-mail-message-new"
+ string="Inbox" help="Unread messages"
+ name="needaction_pending"
+ domain="[('needaction_pending','=',True)]"/>
+ <separator orientation="vertical"/>
<field name="name" string="Participant"
filter_domain="['|','|','|',('name','ilike',self),('partner_id','ilike',self),('email','ilike',self),('origin','ilike',self)]"/>
<separator orientation="vertical"/>
diff --git a/addons/fetchmail/fetchmail.py b/addons/fetchmail/fetchmail.py
index cddcf642dc4..55923c3043a 100644
--- a/addons/fetchmail/fetchmail.py
+++ b/addons/fetchmail/fetchmail.py
@@ -151,7 +151,7 @@ openerp_mailgate.py -u %(uid)d -p PASSWORD -o %(model)s -d %(dbname)s --host=HOS
connection = server.connect()
server.write({'state':'done'})
except Exception, e:
- logger.exception("Failed to connect to %s server %s", server.type, server.name)
+ _logger.exception("Failed to connect to %s server %s", server.type, server.name)
raise osv.except_osv(_("Connection test failed!"), _("Here is what we got instead:\n %s") % tools.ustr(e))
finally:
try:
@@ -177,7 +177,7 @@ openerp_mailgate.py -u %(uid)d -p PASSWORD -o %(model)s -d %(dbname)s --host=HOS
mail_thread = self.pool.get('mail.thread')
action_pool = self.pool.get('ir.actions.server')
for server in self.browse(cr, uid, ids, context=context):
- logger.info('start checking for new emails on %s server %s', server.type, server.name)
+ _logger.info('start checking for new emails on %s server %s', server.type, server.name)
context.update({'fetchmail_server_id': server.id, 'server_type': server.type})
count = 0
imap_server = False
@@ -198,9 +198,9 @@ openerp_mailgate.py -u %(uid)d -p PASSWORD -o %(model)s -d %(dbname)s --host=HOS
imap_server.store(num, '+FLAGS', '\\Seen')
cr.commit()
count += 1
- logger.info("fetched/processed %s email(s) on %s server %s", count, server.type, server.name)
+ _logger.info("fetched/processed %s email(s) on %s server %s", count, server.type, server.name)
except Exception, e:
- logger.exception("Failed to fetch mail from %s server %s", server.type, server.name)
+ _logger.exception("Failed to fetch mail from %s server %s", server.type, server.name)
finally:
if imap_server:
imap_server.close()
@@ -222,9 +222,9 @@ openerp_mailgate.py -u %(uid)d -p PASSWORD -o %(model)s -d %(dbname)s --host=HOS
action_pool.run(cr, uid, [server.action_id.id], {'active_id': res_id, 'active_ids':[res_id]})
pop_server.dele(num)
cr.commit()
- logger.info("fetched/processed %s email(s) on %s server %s", numMsgs, server.type, server.name)
+ _logger.info("fetched/processed %s email(s) on %s server %s", numMsgs, server.type, server.name)
except Exception, e:
- logger.exception("Failed to fetch mail from %s server %s", server.type, server.name)
+ _logger.exception("Failed to fetch mail from %s server %s", server.type, server.name)
finally:
if pop_server:
pop_server.quit()
diff --git a/addons/hr_holidays/hr_holidays.py b/addons/hr_holidays/hr_holidays.py
index f5e8ba69e5d..a1ab0ae04f3 100644
--- a/addons/hr_holidays/hr_holidays.py
+++ b/addons/hr_holidays/hr_holidays.py
@@ -359,7 +359,7 @@ class hr_holidays(osv.osv):
# -----------------------------
def get_needaction_user_ids(self, cr, uid, ids, context=None):
- result = dict.fromkeys(ids, [])
+ result = super(hr_holidays, self).get_needaction_user_ids(cr, uid, ids, context=context)
for obj in self.browse(cr, uid, ids, context=context):
if obj.state == 'confirm' and obj.employee_id.parent_id:
result[obj.id] = [obj.employee_id.parent_id.user_id.id]
@@ -371,14 +371,16 @@ class hr_holidays(osv.osv):
hr_manager_group = self.pool.get('res.groups').read(cr, uid, [obj_id], ['users'], context=context)[0]
result[obj.id] = hr_manager_group['users']
return result
-
+
def message_get_subscribers(self, cr, uid, ids, context=None):
- sub_ids = self.message_get_subscribers_ids(cr, uid, ids, context=context);
- # add the employee and its manager if specified to the subscribed users
+ """ Override to add employee and its manager. """
+ user_ids = super(hr_holidays, self).message_get_subscribers(cr, uid, ids, context=context)
for obj in self.browse(cr, uid, ids, context=context):
- if obj.employee_id.parent_id:
- sub_ids.append(obj.employee_id.parent_id.user_id.id)
- return self.pool.get('res.users').read(cr, uid, sub_ids, context=context)
+ if obj.user_id and not obj.user_id.id in user_ids:
+ user_ids.append(obj.user_id.id)
+ if obj.employee_id.parent_id and not obj.employee_id.parent_id.user_id.id in user_ids:
+ user_ids.append(obj.employee_id.parent_id.user_id.id)
+ return user_ids
def create_notificate(self, cr, uid, ids, context=None):
for obj in self.browse(cr, uid, ids, context=context):
diff --git a/addons/hr_holidays/hr_holidays_view.xml b/addons/hr_holidays/hr_holidays_view.xml
index 31c50e86bdf..bda18f1bc6c 100644
--- a/addons/hr_holidays/hr_holidays_view.xml
+++ b/addons/hr_holidays/hr_holidays_view.xml
@@ -1,6 +1,43 @@
<openerp>
<data>
+ <!-- Hr holidays Read/Unread actions -->
+ <record id="actions_server_holidays_unread" model="ir.actions.server">
+ <field name="name">Mark unread</field>
+ <field name="condition">True</field>
+ <field name="type">ir.actions.server</field>
+ <field name="model_id" ref="model_hr_holidays"/>
+ <field name="state">code</field>
+ <field name="code">self.message_check_and_set_unread(cr, uid, context.get('active_ids'), context=context)</field>
+ </record>
+ <record id="action_holidays_unread" model="ir.values">
+ <field name="name">action_holidays_unread</field>
+ <field name="action_id" ref="actions_server_holidays_unread"/>
+ <field name="value" eval="'ir.actions.server,' + str(ref('actions_server_holidays_unread'))" />
+ <field name="key">action</field>
+ <field name="model_id" ref="model_hr_holidays" />
+ <field name="model">hr.holidays</field>
+ <field name="key2">client_action_multi</field>
+ </record>
+
+ <record id="actions_server_holidays_read" model="ir.actions.server">
+ <field name="name">Mark read</field>
+ <field name="condition">True</field>
+ <field name="type">ir.actions.server</field>
+ <field name="model_id" ref="model_hr_holidays"/>
+ <field name="state">code</field>
+ <field name="code">self.message_check_and_set_read(cr, uid, context.get('active_ids'), context=context)</field>
+ </record>
+ <record id="action_holidays_read" model="ir.values">
+ <field name="name">action_holidays_read</field>
+ <field name="action_id" ref="actions_server_holidays_read"/>
+ <field name="value" eval="'ir.actions.server,' + str(ref('actions_server_holidays_read'))" />
+ <field name="key">action</field>
+ <field name="model_id" ref="model_hr_holidays" />
+ <field name="model">hr.holidays</field>
+ <field name="key2">client_action_multi</field>
+ </record>
+
<record id="view_hr_holidays_filter" model="ir.ui.view">
<field name="name">hr.holidays.filter</field>
<field name="model">hr.holidays</field>
@@ -10,6 +47,11 @@
<group>
<field name="date_from"/>
<separator orientation="vertical"/>
+ <filter icon="terp-mail-message-new"
+ string="Inbox" help="Unread messages"
+ name="needaction_pending"
+ domain="[('needaction_pending','=',True)]"/>
+ <separator orientation="vertical"/>
<filter string="My Leaves" icon="terp-personal" name="my_leaves" domain="[('employee_id.user_id','=', uid)]" help="My Leaves"/>
<filter string="My Department Leaves" icon="terp-personal+" help="My Department Leaves" domain="[('department_id.manager_id','=',uid)]"/>
<filter icon="terp-check" domain="[('state','=','draft')]" string="To Confirm"/>
diff --git a/addons/hr_recruitment/hr_recruitment.py b/addons/hr_recruitment/hr_recruitment.py
index c893755c7c0..7b0090d60ea 100644
--- a/addons/hr_recruitment/hr_recruitment.py
+++ b/addons/hr_recruitment/hr_recruitment.py
@@ -357,54 +357,53 @@ class hr_applicant(base_stage, osv.Model):
return value
def message_new(self, cr, uid, msg, custom_values=None, context=None):
- """Automatically called when new email message arrives"""
- res_id = super(hr_applicant,self).message_new(cr, uid, msg, custom_values=custom_values, context=context)
- subject = msg.get('subject') or _("No Subject")
- body = msg.get('body_text')
- msg_from = msg.get('from')
- priority = msg.get('priority')
- vals = {
- 'name': subject,
- 'email_from': msg_from,
+ """ Overrides mail_thread message_new that is called by the mailgateway
+ through message_process.
+ This override updates the document according to the email.
+ """
+ if custom_values is None: custom_values = {}
+ custom_values.update({
+ 'name': msg.get('subject') or _("No Subject"),
+ 'description': msg.get('body_text'),
+ 'email_from': msg.get('from'),
'email_cc': msg.get('cc'),
- 'description': body,
'user_id': False,
- }
- if priority:
- vals['priority'] = priority
- vals.update(self.message_partner_by_email(cr, uid, msg.get('from', False)))
- self.write(cr, uid, [res_id], vals, context)
- return res_id
-
- def message_update(self, cr, uid, ids, msg, vals=None, default_act='pending', context=None):
+ })
+ if msg.get('priority'):
+ custom_values['priority'] = msg.get('priority')
+ custom_values.update(self.message_partner_by_email(cr, uid, msg.get('from', False), context=context))
+ return super(hr_applicant,self).message_new(cr, uid, msg, custom_values=custom_values, context=context)
+
+ def message_update(self, cr, uid, ids, msg, update_vals=None, context=None):
+ """ Override mail_thread message_update that is called by the mailgateway
+ through message_process.
+ This method updates the document according to the email.
+ """
if isinstance(ids, (str, int, long)):
ids = [ids]
- if vals is None:
- vals = {}
- msg_from = msg['from']
- vals.update({
- 'description': msg['body_text']
+ if update_vals is None: vals = {}
+
+ update_vals.update({
+ 'description': msg.get('body'),
+ 'email_from': msg.get('from'),
+ 'email_cc': msg.get('cc'),
})
- if msg.get('priority', False):
- vals['priority'] = msg.get('priority')
+ if msg.get('priority'):
+ update_vals['priority'] = msg.get('priority')
maps = {
- 'cost':'planned_cost',
+ 'cost': 'planned_cost',
'revenue': 'planned_revenue',
- 'probability':'probability'
+ 'probability': 'probability',
}
- vls = { }
- for line in msg['body_text'].split('\n'):
+ for line in msg.get('body_text', '').split('\n'):
line = line.strip()
res = tools.misc.command_re.match(line)
if res and maps.get(res.group(1).lower(), False):
key = maps.get(res.group(1).lower())
- vls[key] = res.group(2).lower()
+ update_vals[key] = res.group(2).lower()
- vals.update(vls)
- res = self.write(cr, uid, ids, vals, context=context)
- self.message_append_dict(cr, uid, ids, msg, context=context)
- return res
+ return super(hr_applicant, self).message_update(cr, uids, ids, update_vals=update_vals, context=context)
def create(self, cr, uid, vals, context=None):
obj_id = super(hr_applicant, self).create(cr, uid, vals, context=context)
@@ -493,20 +492,14 @@ class hr_applicant(base_stage, osv.Model):
# -------------------------------------------------------
# OpenChatter methods and notifications
# -------------------------------------------------------
-
- def message_get_subscribers(self, cr, uid, ids, context=None):
- sub_ids = self.message_get_subscribers_ids(cr, uid, ids, context=context);
- for obj in self.browse(cr, uid, ids, context=context):
- if obj.user_id:
- sub_ids.append(obj.user_id.id)
- return self.pool.get('res.users').read(cr, uid, sub_ids, context=context)
- def get_needaction_user_ids(self, cr, uid, ids, context=None):
- result = dict.fromkeys(ids, [])
+ def message_get_subscribers(self, cr, uid, ids, context=None):
+ """ Override to add responsible user. """
+ user_ids = super(hr_applicant, self).message_get_subscribers(cr, uid, ids, context=context)
for obj in self.browse(cr, uid, ids, context=context):
- if obj.state == 'draft' and obj.user_id:
- result[obj.id] = [obj.user_id.id]
- return result
+ if obj.user_id and not obj.user_id.id in user_ids:
+ user_ids.append(obj.user_id.id)
+ return user_ids
def stage_set_send_note(self, cr, uid, ids, stage_id, context=None):
""" Override of the (void) default notification method. """
diff --git a/addons/hr_recruitment/hr_recruitment_view.xml b/addons/hr_recruitment/hr_recruitment_view.xml
index 86cb259dad4..00b300cb6f6 100644
--- a/addons/hr_recruitment/hr_recruitment_view.xml
+++ b/addons/hr_recruitment/hr_recruitment_view.xml
@@ -45,6 +45,43 @@
# Jobs
# ------------------------------------------------------
+ <!-- Applicant Read/Unread actions -->
+ <record id="actions_server_applicant_unread" model="ir.actions.server">
+ <field name="name">Mark unread</field>
+ <field name="condition">True</field>
+ <field name="type">ir.actions.server</field>
+ <field name="model_id" ref="model_hr_applicant"/>
+ <field name="state">code</field>
+ <field name="code">self.message_check_and_set_unread(cr, uid, context.get('active_ids'), context=context)</field>
+ </record>
+ <record id="action_applicant_unread" model="ir.values">
+ <field name="name">action_project_unread</field>
+ <field name="action_id" ref="actions_server_applicant_unread"/>
+ <field name="value" eval="'ir.actions.server,' + str(ref('actions_server_applicant_unread'))" />
+ <field name="key">action</field>
+ <field name="model_id" ref="model_hr_applicant" />
+ <field name="model">hr.applicant</field>
+ <field name="key2">client_action_multi</field>
+ </record>
+
+ <record id="actions_server_applicant_read" model="ir.actions.server">
+ <field name="name">Mark read</field>
+ <field name="condition">True</field>
+ <field name="type">ir.actions.server</field>
+ <field name="model_id" ref="model_hr_applicant"/>
+ <field name="state">code</field>
+ <field name="code">self.message_check_and_set_read(cr, uid, context.get('active_ids'), context=context)</field>
+ </record>
+ <record id="action_applicant_read" model="ir.values">
+ <field name="name">action_project_read</field>
+ <field name="action_id" ref="actions_server_applicant_read"/>
+ <field name="value" eval="'ir.actions.server,' + str(ref('actions_server_applicant_read'))" />
+ <field name="key">action</field>
+ <field name="model_id" ref="model_hr_applicant" />
+ <field name="model">hr.applicant</field>
+ <field name="key2">client_action_multi</field>
+ </record>
+
<record model="ir.ui.view" id="crm_case_tree_view_job">
<field name="name">Applicants</field>
<field name="model">hr.applicant</field>
@@ -192,6 +229,12 @@
<field name="type">search</field>
<field name="arch" type="xml">
<search string="Search Jobs">
+ <filter icon="terp-mail-message-new"
+ string="Inbox" help="Unread messages"
+ name="needaction_pending"
+ domain="[('needaction_pending','=',True)]"/>
+ <separator orientation="vertical"/>
+ <filter icon="terp-document-new" string="New" name="filter_new"/>
<field name="partner_name" filter_domain="['|','|',('name','ilike',self),('partner_name','ilike',self),('email_from','ilike',self)]" string="Subject / Applicant"/>
<separator orientation="vertical"/>
<filter icon="terp-document-new" string="New"
diff --git a/addons/import_sugarcrm/import_sugarcrm.py b/addons/import_sugarcrm/import_sugarcrm.py
index fa89ad1949e..42ba4382b27 100644
--- a/addons/import_sugarcrm/import_sugarcrm.py
+++ b/addons/import_sugarcrm/import_sugarcrm.py
@@ -949,7 +949,7 @@ class import_sugarcrm(osv.osv):
'user' : fields.boolean('User', help="Check this box to import sugarCRM Users into OpenERP users, warning if a user with the same login exist in OpenERP, user information will be erase by sugarCRM user information", readonly=True),
'opportunity': fields.boolean('Leads & Opp', help="Check this box to import sugarCRM Leads and Opportunities into OpenERP Leads and Opportunities"),
'contact': fields.boolean('Contacts', help="Check this box to import sugarCRM Contacts into OpenERP addresses"),
- 'account': fields.boolean('Accounts', help="Check this box to import sugarCRM Accounts into OpenERP partners"),
+ 'account': fields.boolean('Partner/Account', help="Check this box to import sugarCRM Accounts into OpenERP partners"),
'employee': fields.boolean('Employee', help="Check this box to import sugarCRM Employees into OpenERP employees"),
'meeting': fields.boolean('Meetings', help="Check this box to import sugarCRM Meetings and Tasks into OpenERP meetings"),
'call': fields.boolean('Calls', help="Check this box to import sugarCRM Calls into OpenERP calls"),
diff --git a/addons/import_sugarcrm/import_sugarcrm_view.xml b/addons/import_sugarcrm/import_sugarcrm_view.xml
index 8dfc984c6c0..7188108ba6c 100644
--- a/addons/import_sugarcrm/import_sugarcrm_view.xml
+++ b/addons/import_sugarcrm/import_sugarcrm_view.xml
@@ -9,76 +9,58 @@
<field name="type">form</field>
<field name="arch" type="xml">
<form string="Import Data From SugarCRM" version="7.0">
- <header>
- <button name="import_from_scheduler_all" string="_Schedule Recurrent Imports" type="object" class="oe_highlight" />
- or
- <button name="import_all" string="_Import" type="object" class="oe_highlight" />
- or
- <button string="Cancel" class="oe_link" special="cancel" />
- </header>
- <group col="8" >
- <group colspan="2" col="2" width="200">
- <label colspan="2" string="Import your data from SugarCRM :"/>
- <label colspan="2" string="" />
- <label colspan="2" string="Use the SugarSoap API URL (read tooltip) and a full access SugarCRM login."/>
- <label colspan="2" string="" />
- <label colspan="2" string="Choose data you want to import. Click 'Import' to get data manually or 'Schedule Reccurent Imports' to get recurrently and automatically data."/>
- <label colspan="2" string="" />
- <label colspan="2" string="If you make recurrent or ponctual import, data already in OpenERP will be updated by SugarCRM data."/>
- <label colspan="2" string="" />
- <label colspan="2" string="Do not forget the email address to be notified of the success of the import."/>
- <label colspan="2" />
- <label colspan="2" string="Online documentation:"/>
- <label colspan="2" string="(Coming Soon)"/>
- <label colspan="2" string=""/>
- </group>
- <separator string="" orientation="vertical" colspan="1" rowspan="24" />
- <group colspan="5">
- <separator string="Login Information" colspan="4"/>
- <field name="url" colspan="4" widget="url"/>
- <field name="username" colspan="4"/>
- <field name="password" password="True" colspan="4"/>
+ <header>
+ <button name="import_all" string="_Import"
+ type="object" class="oe_highlight"/>
+ <button name="import_from_scheduler_all" string="_Schedule Recurrent Imports"
+ type="object" class="oe_highlight" />
+ <button special="cancel" string="_Cancel" class="oe_link"/>
+ </header>
+ <sheet>
+ <group col="8" >
+ <group colspan="5">
+ <separator string="Login Information" colspan="4"/>
+ <field name="url" colspan="2" widget="url"/>
+ <field name="username" colspan="2"/>
+ <field name="password" password="True" colspan="2"/>
- <group colspan="4">
- <group colspan="1" col="2">
- <separator string="Address Book" colspan="2"/>
- <field name="user" />
- <field name= "account" />
- <field name= "contact" />
- </group>
- <group colspan="1" col="2">
- <separator string="CRM" colspan="2"/>
- <field name="opportunity" />
- <field name= "call" />
- <field name= "meeting" />
- <field name= "claim" />
- </group>
- <group colspan="1" col="2">
- <separator string="Project" colspan="2"/>
- <field name= "project" />
- <field name= "project_task" />
- <field name= "bug"/>
- </group>
- <group colspan="1" col="2">
- <separator string="HR" colspan="2"/>
- <field name="employee" />
- <separator string="Document" colspan="2"/>
- <field name="email_history"/>
- <field name= "document" />
- </group>
- </group>
+ <group colspan="4">
+ <separator string="Data to Import" colspan="4"/>
+ <group colspan="1" col="2">
+ <field name="user" />
+ <field name= "account" />
+ <field name= "contact" />
+ </group>
+ <group colspan="1" col="2">
+ <field name="opportunity" />
+ <field name= "call" />
+ <field name= "meeting" />
+ <field name= "claim" />
+ </group>
+ <group colspan="1" col="2">
+ <field name= "project" />
+ <field name= "project_task" />
+ <field name= "bug"/>
+ </group>
+ <group colspan="1" col="2">
+ <field name="employee" />
+ <field name="email_history"/>
+ <field name= "document" />
+ </group>
+ </group>
- <group colspan="4">
- <separator string="Email Notification When Import is Finished" colspan="4"/>
- <field name="email_from" widget="email" string="Email Address to Notify" colspan="4"/>
- </group>
+ <group colspan="4">
+ <separator string="Email Notification When Import is Finished" colspan="2"/>
+ <field name="email_from" widget="email" string="Email Address to Notify" colspan="2"/>
+ </group>
- <group colspan="4" groups="base.group_no_one">
- <separator string="Multi Instance Management" colspan="4"/>
- <field name="instance_name" colspan="4"/>
+ <group colspan="4" groups="base.group_no_one">
+ <separator string="Multi Instance Management" colspan="4"/>
+ <field name="instance_name" colspan="2"/>
+ </group>
+ </group>
</group>
- </group>
- </group>
+ </sheet>
</form>
</field>
</record>
diff --git a/addons/mail/__init__.py b/addons/mail/__init__.py
index d9835f86fc5..805c27386f3 100644
--- a/addons/mail/__init__.py
+++ b/addons/mail/__init__.py
@@ -23,6 +23,7 @@ import mail_message
import mail_thread
import mail_group
import mail_subscription
+import ir_needaction
import res_users
import res_partner
import report
diff --git a/addons/mail/__openerp__.py b/addons/mail/__openerp__.py
index 95ce7d5619d..f501cc58d2c 100644
--- a/addons/mail/__openerp__.py
+++ b/addons/mail/__openerp__.py
@@ -86,6 +86,7 @@ The main features are:
'static/src/css/mail_group.css',
],
'js': [
+ 'static/lib/jquery.expander/jquery.expander.js',
'static/src/js/mail.js',
],
'qweb': [
diff --git a/addons/mail/doc/index.rst.inc b/addons/mail/doc/index.rst.inc
index 822d855d5b4..c4b87cc18f9 100644
--- a/addons/mail/doc/index.rst.inc
+++ b/addons/mail/doc/index.rst.inc
@@ -10,3 +10,4 @@ Mail Module documentation topics
mail_openchatter_howto
mail_needaction_howto
mail_partner
+ mail_state
diff --git a/addons/mail/doc/mail_state.rst b/addons/mail/doc/mail_state.rst
new file mode 100644
index 00000000000..527a31ba835
--- /dev/null
+++ b/addons/mail/doc/mail_state.rst
@@ -0,0 +1,28 @@
+.. _mail_state:
+
+message_state
+=============
+
+``message_state`` is a boolean field that states whether the document
+has unread messages. In previous versions, some documents were going
+back to ``pending`` state when receiving an email through the mail
+gateway. Now the state related to messages differs from the state or
+stage of the document itself.
+
+message_state and need action mechanism
++++++++++++++++++++++++++++++++++++++++
+
+The ``mail`` module introduces a default behavior for the need_action
+mechanism [REF].
+
+::
+
+ def get_needaction_user_ids(self, cr, uid, ids, context=None):
+ """ Returns the user_ids that have to perform an action
+ :return: dict { record_id: [user_ids], }
+ """
+ result = super(ir_needaction_mixin, self).get_needaction_user_ids(cr, uid, ids, context=context)
+ for obj in self.browse(cr, uid, ids, context=context):
+ if obj.message_state == False and obj.user_id:
+ result[obj.id].append(obj.user_id.id)
+ return result
diff --git a/addons/mail/ir_needaction.py b/addons/mail/ir_needaction.py
new file mode 100644
index 00000000000..8193ac4f385
--- /dev/null
+++ b/addons/mail/ir_needaction.py
@@ -0,0 +1,46 @@
+# -*- coding: utf-8 -*-
+##############################################################################
+#
+# OpenERP, Open Source Management Solution
+# Copyright (C) 2012-today OpenERP SA (<http://www.openerp.com>)
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as
+# published by the Free Software Foundation, either version 3 of the
+# License, or (at your option) any later version
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Affero General Public License for more details
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>
+#
+##############################################################################
+
+from osv import osv
+
+class ir_needaction_mixin(osv.Model):
+ """ Update of ir.needaction_mixin class
+ - override the get_needaction_user_ids method to define the default
+ mail gateway need_action: when the object is unread, the object
+ responsible has an action to perform.
+ """
+ _name = 'ir.needaction_mixin'
+ _inherit = ['ir.needaction_mixin']
+
+ def get_needaction_user_ids(self, cr, uid, ids, context=None):
+ """ Returns the user_ids that have to perform an action. It the
+ document mail state is unread (False), return object.user_id.id
+ as need_action uid.
+ :return: dict { record_id: [user_ids], }
+ """
+ result = super(ir_needaction_mixin, self).get_needaction_user_ids(cr, uid, ids, context=context)
+ for obj in self.browse(cr, uid, ids, context=context):
+ if obj.message_state == False and obj.user_id:
+ result[obj.id].append(obj.user_id.id)
+ return result
+
+
+# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
diff --git a/addons/mail/mail_group.py b/addons/mail/mail_group.py
index 0a8677d7862..f691d75e0bc 100644
--- a/addons/mail/mail_group.py
+++ b/addons/mail/mail_group.py
@@ -87,7 +87,7 @@ class mail_group(osv.osv):
result = dict.fromkeys(ids)
for id in ids:
result[id] = {}
- result[id]['member_ids'] = self.message_get_subscribers_ids(cr, uid, [id], context=context)
+ result[id]['member_ids'] = self.message_get_subscribers(cr, uid, [id], context=context)
result[id]['member_count'] = len(result[id]['member_ids'])
result[id]['is_subscriber'] = uid in result[id]['member_ids']
return result
diff --git a/addons/mail/mail_group_view.xml b/addons/mail/mail_group_view.xml
index 921c3b528c4..4b9cfd09c3d 100644
--- a/addons/mail/mail_group_view.xml
+++ b/addons/mail/mail_group_view.xml
@@ -51,28 +51,30 @@
<field name="priority" eval="10"/>
<field name="arch" type="xml">
<form string="Group Form" version="7.0">
- <div style="padding: 8px">
- <div class="oe_right">
- <field name="photo" widget='image' on_change="onchange_photo(photo)"/>
- </div>
- <div class="oe_title">
- <div class="oe_edit_only">
- <label for="name"/>
- </div>
- <h1><field name="name"/></h1>
- <div class="oe_edit_only">
- <label for="responsible_id"/>
- </div>
- <field name="responsible_id" class="oe_inline"/>
- <div class="oe_edit_only">
- <label for="public"/>
- <field name="public" class="oe_inline"/>
- </div>
- <field name="description" colspan="4" nolabel="1"/>
- </div>
- </div>
- <footer>
- <field name="message_ids" colspan="4" widget="ThreadView" options='{"thread_level": 1}'/>
+ <sheet class="openerp_mail_group_sheet">
+ <group colspan="4" col="8">
+ <group colspan="1" col="2">
+ <field name="photo" widget='image' nolabel="1" on_change="onchange_photo(photo)"/>
+ </group>
+ <group colspan="7" col="6">
+ <div class="oe_edit_only">
+ <label for="name"/>
+ </div>
+ <h2><field name="name" colspan="4"/></h2>
+ <newline/>
+ <group colspan="4" col="4">
+ <field name="description" colspan="4" nolabel="1"/>
+ </group>
+ <group colspan="2" col="2" class="oe_edit_only">
+ <field name="responsible_id" colspan="2"/>
+ <field name="public" colspan="2"/>
+ </group>
+ </group>
+ </group>
+ </sheet>
+ <footer class="openerp_mail_group_footer">
+ <field name="message_ids" widget="ThreadView"
+ options='{"thread_level": 1}'/>
</footer>
</form>
</field>
diff --git a/addons/mail/mail_message.py b/addons/mail/mail_message.py
index 1c1e980e3ed..301657ba4c2 100644
--- a/addons/mail/mail_message.py
+++ b/addons/mail/mail_message.py
@@ -96,11 +96,24 @@ class mail_message_common(osv.osv_memory):
continue
result[message.id] = self.pool.get(message.model).name_get(cr, uid, [message.res_id], context=context)[0][1]
return result
-
+
+ def name_get(self, cr, uid, ids, context=None):
+ res = []
+ for message in self.browse(cr, uid, ids, context=context):
+ name = ''
+ if message.subject:
+ name = '%s: ' % (message.subject)
+ if message.body_text:
+ name = '%s%s ' % (name, message.body_text[0:20])
+ if message.date:
+ name = '%s(%s)' % (name, message.date)
+ res.append((message.id, name))
+ return res
+
_name = 'mail.message.common'
_rec_name = 'subject'
_columns = {
- 'subject': fields.char('Subject', size=512, required=True),
+ 'subject': fields.char('Subject', size=512),
'model': fields.char('Related Document Model', size=128, select=1),
'res_id': fields.integer('Related Document ID', select=1),
'record_name': fields.function(get_record_name, type='string', string='Message Record Name',
diff --git a/addons/mail/mail_thread.py b/addons/mail/mail_thread.py
index e0f2bfaf455..5668709af17 100644
--- a/addons/mail/mail_thread.py
+++ b/addons/mail/mail_thread.py
@@ -34,7 +34,7 @@ import xmlrpclib
_logger = logging.getLogger(__name__)
-class mail_thread(osv.osv):
+class mail_thread(osv.Model):
'''Mixin model, meant to be inherited by any model that needs to
act as a discussion topic on which messages can be attached.
Public methods are prefixed with ``message_`` in order to avoid
@@ -62,10 +62,15 @@ class mail_thread(osv.osv):
_name = 'mail.thread'
_description = 'Email Thread'
- def _get_message_ids(self, cr, uid, ids, name, arg, context=None):
+ def _get_message_ids(self, cr, uid, ids, name, args, context=None):
res = {}
for id in ids:
- res[id] = self.message_load_ids(cr, uid, [id], context=context)
+ message_ids = self.message_load_ids(cr, uid, [id], context=context)
+ subscriber_ids = self.message_get_subscribers(cr, uid, [id], context=context)
+ res[id] = {
+ 'message_ids': message_ids,
+ 'message_summary': "<span>Msg: %d</span> . <span>Fol: %d</span>" % (len(message_ids), len(subscriber_ids)),
+ }
return res
def _search_message_ids(self, cr, uid, obj, name, args, context=None):
@@ -73,10 +78,23 @@ class mail_thread(osv.osv):
msg_ids = msg_obj.search(cr, uid, ['&', ('res_id', 'in', args[0][2]), ('model', '=', self._name)], context=context)
return [('id', 'in', msg_ids)]
- # OpenChatter: message_ids is a dummy field that should not be used
_columns = {
- 'message_ids': fields.function(_get_message_ids, method=True, fnct_search=_search_message_ids,
- type='one2many', obj='mail.message', string='Temp messages', _fields_id = 'res_id'),
+ 'message_ids': fields.function(_get_message_ids, method=True,
+ fnct_search=_search_message_ids,
+ type='one2many', obj='mail.message', _fields_id = 'res_id',
+ string='Temp messages', multi="_get_message_ids",
+ help="Functional field holding messages related to the current document."),
+ 'message_state': fields.boolean('Read',
+ help="When checked, new messages require your attention."),
+ 'message_summary': fields.function(_get_message_ids, method=True,
+ type='text', string='Summary', multi="_get_message_ids",
+ help="Holds the Chatter summary (number of messages, ...). "\
+ "This summary is directly in html format in order to "\
+ "be inserted in kanban views."),
+ }
+
+ _defaults = {
+ 'message_state': True,
}
#------------------------------------------------------
@@ -84,10 +102,11 @@ class mail_thread(osv.osv):
#------------------------------------------------------
def create(self, cr, uid, vals, context=None):
- """Automatically subscribe the creator"""
- thread_id = super(mail_thread, self).create(cr, uid, vals, context=context);
- self.message_subscribe(cr, uid, [thread_id], [uid], context=context)
- return thread_id;
+ """Automatically subscribe the creator """
+ thread_id = super(mail_thread, self).create(cr, uid, vals, context=context)
+ if thread_id:
+ self.message_subscribe(cr, uid, [thread_id], [uid], context=context)
+ return thread_id
def write(self, cr, uid, ids, vals, context=None):
"""Automatically subscribe the writer"""
@@ -106,8 +125,6 @@ class mail_thread(osv.osv):
a foreign key with a 'cascade' ondelete attribute.
Notifications will be deleted with messages
"""
- if context is None:
- context = {}
subscr_obj = self.pool.get('mail.subscription')
msg_obj = self.pool.get('mail.message')
# delete subscriptions
@@ -120,17 +137,18 @@ class mail_thread(osv.osv):
return super(mail_thread, self).unlink(cr, uid, ids, context=context)
#------------------------------------------------------
- # Generic message api
+ # mail.message wrappers and tools
#------------------------------------------------------
def message_create(self, cr, uid, thread_id, vals, context=None):
- """OpenSocial: wrapper of mail.message create method
+ """ OpenChatter: wrapper of mail.message create method
- creates the mail.message
- automatically subscribe the message writer
- push the message to subscribed users
"""
if context is None:
context = {}
+
message_obj = self.pool.get('mail.message')
subscription_obj = self.pool.get('mail.subscription')
notification_obj = self.pool.get('mail.notification')
@@ -167,7 +185,10 @@ class mail_thread(osv.osv):
# create message
msg_id = message_obj.create(cr, uid, vals, context=context)
-
+
+ # Set as unread if writer is not the document responsible
+ self.message_create_set_unread(cr, uid, [thread_id], context=context)
+
# special: if install mode, do not push demo data
if context.get('install_mode', False):
return True
@@ -186,7 +207,7 @@ class mail_thread(osv.osv):
body = new_msg_vals.get('body_html', '') if new_msg_vals.get('subtype', 'plain') == 'html' else new_msg_vals.get('body_text', '')
for thread_id in thread_ids:
# add subscribers
- notif_user_ids += [user['id'] for user in self.message_get_subscribers(cr, uid, [thread_id], context=context)]
+ notif_user_ids += self.message_get_subscribers(cr, uid, [thread_id], context=context)
# add users requested via parsing message (@login)
notif_user_ids += self.message_parse_users(cr, uid, [thread_id], body, context=context)
# add users requested to perform an action (need_action mechanism)
@@ -214,6 +235,10 @@ class mail_thread(osv.osv):
user_ids = self.pool.get('res.users').search(cr, uid, [('login', 'in', login_lst)], context=context)
return user_ids
+ #------------------------------------------------------
+ # Generic message api
+ #------------------------------------------------------
+
def message_capable_models(self, cr, uid, context=None):
ret_dict = {}
for model_name in self.pool.obj_list():
@@ -376,7 +401,6 @@ class mail_thread(osv.osv):
original = msg_dict.get('original'),
context = context)
- # Message loading
def _message_add_ancestor_ids(self, cr, uid, ids, child_ids, root_ids, context=None):
""" Given message child_ids
Find their ancestors until root ids"""
@@ -420,6 +444,9 @@ class mail_thread(osv.osv):
msg_ids = self.message_load_ids(cr, uid, ids, limit, offset, domain, ascent, root_ids, context=context)
msgs = self.pool.get('mail.message').read(cr, uid, msg_ids, [], context=context)
+ # Set as read
+ self.message_check_and_set_read(cr, uid, ids, context=context)
+
""" Retrieve all attachments names """
map_id_to_name = {}
@@ -474,7 +501,7 @@ class mail_thread(osv.osv):
return msgs
#------------------------------------------------------
- # Email specific
+ # Mail gateway
#------------------------------------------------------
# message_process will call either message_new or message_update.
@@ -549,7 +576,7 @@ class mail_thread(osv.osv):
if res_id:
res_id = res_id.group(1)
if res_id:
- res_id = int(res_id)
+ res_id = res_id
if model_pool.exists(cr, uid, res_id):
if hasattr(model_pool, 'message_update'):
model_pool.message_update(cr, uid, [res_id], msg, {}, context=context)
@@ -558,7 +585,7 @@ class mail_thread(osv.osv):
res_id = False
if not res_id:
res_id = create_record(msg)
- #To forward the email to other followers
+ # To forward the email to other followers
self.message_forward(cr, uid, model, [res_id], msg_txt, context=context)
return res_id
@@ -594,29 +621,34 @@ class mail_thread(osv.osv):
fields = model_pool.fields_get(cr, uid, context=context)
data = model_pool.default_get(cr, uid, fields, context=context)
if 'name' in fields and not data.get('name'):
- data['name'] = msg_dict.get('from','')
+ data['name'] = msg_dict.get('from', '')
if custom_values and isinstance(custom_values, dict):
data.update(custom_values)
res_id = model_pool.create(cr, uid, data, context=context)
self.message_append_dict(cr, uid, [res_id], msg_dict, context=context)
return res_id
- def message_update(self, cr, uid, ids, msg_dict, vals={}, default_act=None, context=None):
- """Called by ``message_process`` when a new message is received
- for an existing thread. The default behavior is to create a
- new mail.message in the given thread (by calling
- ``message_append_dict``)
- Additional behavior may be implemented by overriding this
- method.
+ def message_update(self, cr, uid, ids, msg_dict, update_vals=None, context=None):
+ """ Called by ``message_process`` when a new message is received
+ for an existing thread. The default behavior is to create a
+ new mail.message in the given thread (by calling
+ ``message_append_dict``)
+ Additional behavior may be implemented by overriding this
+ method.
- :param dict msg_dict: a map containing the email details and
+ :param dict msg_dict: a map containing the email details and
attachments. See ``message_process`` and
``mail.message.parse()`` for details.
- :param dict context: if a ``thread_model`` value is present
+ :param dict vals: a dict containing values to update records
+ given their ids; if the dict is None or is
+ void, no write operation is performed.
+ :param dict context: if a ``thread_model`` value is present
in the context, its value will be used
to determine the model of the thread to
update (instead of the current model).
"""
+ if update_vals:
+ self.write(cr, uid, ids, update_vals, context=context)
return self.message_append_dict(cr, uid, ids, msg_dict, context=context)
def message_thread_followers(self, cr, uid, ids, context=None):
@@ -746,13 +778,8 @@ class mail_thread(osv.osv):
self.message_append_note(cr, uid, [id], 'res.log', message, context=context)
def message_append_note(self, cr, uid, ids, subject=None, body=None, parent_id=False, type='notification', subtype='html', context=None):
- if subject is None:
- if type == 'notification':
- subject = _('System notification')
- elif type == 'comment' and not parent_id:
- subject = _('Comment')
- elif type == 'comment' and parent_id:
- subject = _('Reply')
+ if type in ['notification', 'reply']:
+ subject = None
if subtype == 'html':
body_html = body
body_text = body
@@ -765,51 +792,77 @@ class mail_thread(osv.osv):
# Subscription mechanism
#------------------------------------------------------
- def message_get_subscribers_ids(self, cr, uid, ids, context=None):
+ def message_get_subscribers(self, cr, uid, ids, context=None):
+ """ Returns the current document followers. Basically this method
+ checks in mail.subscription for entries with matching res_model,
+ res_id.
+
+ :param get_ids: if set to True, return the ids of users; if set
+ to False, returns the result of a read in res.users
+ """
subscr_obj = self.pool.get('mail.subscription')
subscr_ids = subscr_obj.search(cr, uid, ['&', ('res_model', '=', self._name), ('res_id', 'in', ids)], context=context)
- subs = subscr_obj.read(cr, uid, subscr_ids, context=context)
- return [sub['user_id'][0] for sub in subs]
+ return [sub['user_id'][0] for sub in subscr_obj.read(cr, uid, subscr_ids, ['user_id'], context=context)]
- def message_get_subscribers(self, cr, uid, ids, context=None):
- user_ids = self.message_get_subscribers_ids(cr, uid, ids, context=context)
- users = self.pool.get('res.users').read(cr, uid, user_ids, fields=['id', 'name', 'avatar'], context=context)
- return users
+ def message_read_subscribers(self, cr, uid, ids, fields=['id', 'name', 'avatar'], context=None):
+ """ Returns the current document followers as a read result. Used
+ mainly for Chatter having only one method to call to have
+ details about users.
+ """
+ user_ids = self.message_get_subscribers(cr, uid, ids, context=context)
+ return self.pool.get('res.users').read(cr, uid, user_ids, fields=fields, context=context)
def message_is_subscriber(self, cr, uid, ids, user_id = None, context=None):
- users = self.message_get_subscribers(cr, uid, ids, context=context)
+ """ Check if uid or user_id (if set) is a subscriber to the current
+ document.
+
+ :param user_id: if set, check is done on user_id; if not set
+ check is done on uid
+ """
sub_user_id = uid if user_id is None else user_id
- if sub_user_id in [user['id'] for user in users]:
+ if sub_user_id in self.message_get_subscribers(cr, uid, ids, context=context):
return True
return False
def message_subscribe(self, cr, uid, ids, user_ids = None, context=None):
+ """ Subscribe the user (or user_ids) to the current document.
+
+ :param user_ids: a list of user_ids; if not set, subscribe
+ uid instead
+ """
subscription_obj = self.pool.get('mail.subscription')
to_subscribe_uids = [uid] if user_ids is None else user_ids
create_ids = []
for id in ids:
+ already_subscribed_user_ids = self.message_get_subscribers(cr, uid, [id], context=context)
for user_id in to_subscribe_uids:
- if self.message_is_subscriber(cr, uid, [id], user_id=user_id, context=context): continue
+ if user_id in already_subscribed_user_ids: continue
create_ids.append(subscription_obj.create(cr, uid, {'res_model': self._name, 'res_id': id, 'user_id': user_id}, context=context))
return create_ids
def message_unsubscribe(self, cr, uid, ids, user_ids = None, context=None):
- if not user_ids and not uid in self.message_get_subscribers_ids(cr, uid, ids, context=context):
+ """ Unsubscribe the user (or user_ids) from the current document.
+
+ :param user_ids: a list of user_ids; if not set, subscribe
+ uid instead
+ """
+ # Trying to unsubscribe somebody not in subscribers: returns False
+ # if special management is needed; allows to know that an automatically
+ # subscribed user tries to unsubscribe and allows to warn him
+ mail_thread_model = self.pool.get('mail.thread')
+ if not user_ids and not uid in mail_thread_model.message_get_subscribers(cr, uid, ids, context=context):
return False
subscription_obj = self.pool.get('mail.subscription')
to_unsubscribe_uids = [uid] if user_ids is None else user_ids
to_delete_sub_ids = subscription_obj.search(cr, uid,
['&', '&', ('res_model', '=', self._name), ('res_id', 'in', ids), ('user_id', 'in', to_unsubscribe_uids)], context=context)
- subscription_obj.unlink(cr, uid, to_delete_sub_ids, context=context)
- return True
+ return subscription_obj.unlink(cr, uid, to_delete_sub_ids, context=context)
#------------------------------------------------------
# Notification API
#------------------------------------------------------
def message_remove_pushed_notifications(self, cr, uid, ids, msg_ids, remove_childs=True, context=None):
- if context is None:
- context = {}
notif_obj = self.pool.get('mail.notification')
msg_obj = self.pool.get('mail.message')
if remove_childs:
@@ -819,4 +872,37 @@ class mail_thread(osv.osv):
to_del_notif_ids = notif_obj.search(cr, uid, ['&', ('user_id', '=', uid), ('message_id', 'in', notif_msg_ids)], context=context)
return notif_obj.unlink(cr, uid, to_del_notif_ids, context=context)
+ #------------------------------------------------------
+ # Thread_state
+ #------------------------------------------------------
+
+ def message_create_set_unread(self, cr, uid, ids, context=None):
+ """ When creating a new message, set as unread if uid is not the
+ object responsible. """
+ for obj in self.browse(cr, uid, ids, context=context):
+ if obj.message_state and hasattr(obj, 'user_id') and (not obj.user_id or obj.user_id.id != uid):
+ self.message_mark_as_unread(cr, uid, [obj.id], context=context)
+
+ def message_check_and_set_unread(self, cr, uid, ids, context=None):
+ """ Set unread if uid is the object responsible or if the object has
+ no responsible. """
+ for obj in self.browse(cr, uid, ids, context=context):
+ if obj.message_state and hasattr(obj, 'user_id') and (not obj.user_id or obj.user_id.id == uid):
+ self.message_mark_as_unread(cr, uid, [obj.id], context=context)
+
+ def message_mark_as_unread(self, cr, uid, ids, context=None):
+ """ Set as unread. """
+ return self.write(cr, uid, ids, {'message_state': False}, context=context)
+
+ def message_check_and_set_read(self, cr, uid, ids, context=None):
+ """ Set read if uid is the object responsible. """
+ for obj in self.browse(cr, uid, ids, context=context):
+ if not obj.message_state and hasattr(obj, 'user_id') and obj.user_id and obj.user_id.id == uid:
+ self.message_mark_as_read(cr, uid, [obj.id], context=context)
+
+ def message_mark_as_read(self, cr, uid, ids, context=None):
+ """ Set as read. """
+ return self.write(cr, uid, ids, {'message_state': True}, context=context)
+
+
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
diff --git a/addons/mail/static/lib/jquery.expander/jquery.expander.js b/addons/mail/static/lib/jquery.expander/jquery.expander.js
new file mode 100644
index 00000000000..91cc03db918
--- /dev/null
+++ b/addons/mail/static/lib/jquery.expander/jquery.expander.js
@@ -0,0 +1,385 @@
+/*!
+ * jQuery Expander Plugin v1.4.2
+ *
+ * Date: Fri Mar 16 14:29:56 2012 EDT
+ * Requires: jQuery v1.3+
+ *
+ * Copyright 2011, Karl Swedberg
+ * Dual licensed under the MIT and GPL licenses (just like jQuery):
+ * http://www.opensource.org/licenses/mit-license.php
+ * http://www.gnu.org/licenses/gpl.html
+ *
+ *
+ *
+ *
+*/
+
+(function($) {
+ $.expander = {
+ version: '1.4.2',
+ defaults: {
+ // the number of characters at which the contents will be sliced into two parts.
+ slicePoint: 100,
+
+ // whether to keep the last word of the summary whole (true) or let it slice in the middle of a word (false)
+ preserveWords: true,
+
+ // a threshold of sorts for whether to initially hide/collapse part of the element's contents.
+ // If after slicing the contents in two there are fewer words in the second part than
+ // the value set by widow, we won't bother hiding/collapsing anything.
+ widow: 4,
+
+ // text displayed in a link instead of the hidden part of the element.
+ // clicking this will expand/show the hidden/collapsed text
+ expandText: 'read more',
+ expandPrefix: '&hellip; ',
+
+ expandAfterSummary: false,
+
+ // class names for summary element and detail element
+ summaryClass: 'summary',
+ detailClass: 'details',
+
+ // class names for <span> around "read-more" link and "read-less" link
+ moreClass: 'read-more',
+ lessClass: 'read-less',
+
+ // number of milliseconds after text has been expanded at which to collapse the text again.
+ // when 0, no auto-collapsing
+ collapseTimer: 0,
+
+ // effects for expanding and collapsing
+ expandEffect: 'fadeIn',
+ expandSpeed: 250,
+ collapseEffect: 'fadeOut',
+ collapseSpeed: 200,
+
+ // allow the user to re-collapse the expanded text.
+ userCollapse: true,
+
+ // text to use for the link to re-collapse the text
+ userCollapseText: 'read less',
+ userCollapsePrefix: ' ',
+
+
+ // all callback functions have the this keyword mapped to the element in the jQuery set when .expander() is called
+
+ onSlice: null, // function() {}
+ beforeExpand: null, // function() {},
+ afterExpand: null, // function() {},
+ onCollapse: null // function(byUser) {}
+ }
+ };
+
+ $.fn.expander = function(options) {
+ var meth = 'init';
+
+ if (typeof options == 'string') {
+ meth = options;
+ options = {};
+ }
+
+ var opts = $.extend({}, $.expander.defaults, options),
+ rSelfClose = /^<(?:area|br|col|embed|hr|img|input|link|meta|param).*>$/i,
+ rAmpWordEnd = opts.wordEnd || /(&(?:[^;]+;)?|[a-zA-Z\u00C0-\u0100]+)$/,
+ rOpenCloseTag = /<\/?(\w+)[^>]*>/g,
+ rOpenTag = /<(\w+)[^>]*>/g,
+ rCloseTag = /<\/(\w+)>/g,
+ rLastCloseTag = /(<\/[^>]+>)\s*$/,
+ rTagPlus = /^<[^>]+>.?/,
+ delayedCollapse;
+
+ var methods = {
+ init: function() {
+ this.each(function() {
+ var i, l, tmp, newChar, summTagless, summOpens, summCloses,
+ lastCloseTag, detailText, detailTagless,
+ $thisDetails, $readMore,
+ openTagsForDetails = [],
+ closeTagsForsummaryText = [],
+ defined = {},
+ thisEl = this,
+ $this = $(this),
+ $summEl = $([]),
+ o = $.meta ? $.extend({}, opts, $this.data()) : opts,
+ hasDetails = !!$this.find('.' + o.detailClass).length,
+ hasBlocks = !!$this.find('*').filter(function() {
+ var display = $(this).css('display');
+ return (/^block|table|list/).test(display);
+ }).length,
+ el = hasBlocks ? 'div' : 'span',
+ detailSelector = el + '.' + o.detailClass,
+ moreSelector = 'span.' + o.moreClass,
+ expandSpeed = o.expandSpeed || 0,
+ allHtml = $.trim( $this.html() ),
+ allText = $.trim( $this.text() ),
+ summaryText = allHtml.slice(0, o.slicePoint);
+
+ // bail out if we've already set up the expander on this element
+ if ( $.data(this, 'expander') ) {
+ return;
+ }
+
+ $.data(this, 'expander', true);
+
+ // determine which callback functions are defined
+ $.each(['onSlice','beforeExpand', 'afterExpand', 'onCollapse'], function(index, val) {
+ defined[val] = $.isFunction(o[val]);
+ });
+
+ // back up if we're in the middle of a tag or word
+ summaryText = backup(summaryText);
+
+ // summary text sans tags length
+ summTagless = summaryText.replace(rOpenCloseTag, '').length;
+
+ // add more characters to the summary, one for each character in the tags
+ while (summTagless < o.slicePoint) {
+ newChar = allHtml.charAt(summaryText.length);
+ if (newChar == '<') {
+ newChar = allHtml.slice(summaryText.length).match(rTagPlus)[0];
+ }
+ summaryText += newChar;
+ summTagless++;
+ }
+
+ summaryText = backup(summaryText, o.preserveWords);
+
+ // separate open tags from close tags and clean up the lists
+ summOpens = summaryText.match(rOpenTag) || [];
+ summCloses = summaryText.match(rCloseTag) || [];
+
+ // filter out self-closing tags
+ tmp = [];
+ $.each(summOpens, function(index, val) {
+ if ( !rSelfClose.test(val) ) {
+ tmp.push(val);
+ }
+ });
+ summOpens = tmp;
+
+ // strip close tags to just the tag name
+ l = summCloses.length;
+ for (i = 0; i < l; i++) {
+ summCloses[i] = summCloses[i].replace(rCloseTag, '$1');
+ }
+
+ // tags that start in summary and end in detail need:
+ // a). close tag at end of summary
+ // b). open tag at beginning of detail
+ $.each(summOpens, function(index, val) {
+ var thisTagName = val.replace(rOpenTag, '$1');
+ var closePosition = $.inArray(thisTagName, summCloses);
+ if (closePosition === -1) {
+ openTagsForDetails.push(val);
+ closeTagsForsummaryText.push('</' + thisTagName + '>');
+
+ } else {
+ summCloses.splice(closePosition, 1);
+ }
+ });
+
+ // reverse the order of the close tags for the summary so they line up right
+ closeTagsForsummaryText.reverse();
+
+ // create necessary summary and detail elements if they don't already exist
+ if ( !hasDetails ) {
+
+ // end script if there is no detail text or if detail has fewer words than widow option
+ detailText = allHtml.slice(summaryText.length);
+ detailTagless = $.trim( detailText.replace(rOpenCloseTag, '') );
+
+ if ( detailTagless === '' || detailTagless.split(/\s+/).length < o.widow ) {
+ return;
+ }
+ // otherwise, continue...
+ lastCloseTag = closeTagsForsummaryText.pop() || '';
+ summaryText += closeTagsForsummaryText.join('');
+ detailText = openTagsForDetails.join('') + detailText;
+
+ } else {
+ // assume that even if there are details, we still need readMore/readLess/summary elements
+ // (we already bailed out earlier when readMore el was found)
+ // but we need to create els differently
+
+ // remove the detail from the rest of the content
+ detailText = $this.find(detailSelector).remove().html();
+
+ // The summary is what's left
+ summaryText = $this.html();
+
+ // allHtml is the summary and detail combined (this is needed when content has block-level elements)
+ allHtml = summaryText + detailText;
+
+ lastCloseTag = '';
+ }
+ o.moreLabel = $this.find(moreSelector).length ? '' : buildMoreLabel(o);
+
+ if (hasBlocks) {
+ detailText = allHtml;
+ }
+ summaryText += lastCloseTag;
+
+ // onSlice callback
+ o.summary = summaryText;
+ o.details = detailText;
+ o.lastCloseTag = lastCloseTag;
+
+ if (defined.onSlice) {
+ // user can choose to return a modified options object
+ // one last chance for user to change the options. sneaky, huh?
+ // but could be tricky so use at your own risk.
+ tmp = o.onSlice.call(thisEl, o);
+
+ // so, if the returned value from the onSlice function is an object with a details property, we'll use that!
+ o = tmp && tmp.details ? tmp : o;
+ }
+
+ // build the html with summary and detail and use it to replace old contents
+ var html = buildHTML(o, hasBlocks);
+
+ $this.html( html );
+
+ // set up details and summary for expanding/collapsing
+ $thisDetails = $this.find(detailSelector);
+ $readMore = $this.find(moreSelector);
+ $thisDetails.hide();
+ $readMore.find('a').unbind('click.expander').bind('click.expander', expand);
+
+ $summEl = $this.find('div.' + o.summaryClass);
+
+ if ( o.userCollapse && !$this.find('span.' + o.lessClass).length ) {
+ $this
+ .find(detailSelector)
+ .append('<span class="' + o.lessClass + '">' + o.userCollapsePrefix + '<a href="#">' + o.userCollapseText + '</a></span>');
+ }
+
+ $this
+ .find('span.' + o.lessClass + ' a')
+ .unbind('click.expander')
+ .bind('click.expander', function(event) {
+ event.preventDefault();
+ clearTimeout(delayedCollapse);
+ var $detailsCollapsed = $(this).closest(detailSelector);
+ reCollapse(o, $detailsCollapsed);
+ if (defined.onCollapse) {
+ o.onCollapse.call(thisEl, true);
+ }
+ });
+
+ function expand(event) {
+ event.preventDefault();
+ $readMore.hide();
+ $summEl.hide();
+ if (defined.beforeExpand) {
+ o.beforeExpand.call(thisEl);
+ }
+
+ $thisDetails.stop(false, true)[o.expandEffect](expandSpeed, function() {
+ $thisDetails.css({zoom: ''});
+ if (defined.afterExpand) {o.afterExpand.call(thisEl);}
+ delayCollapse(o, $thisDetails, thisEl);
+ });
+ }
+
+ }); // this.each
+ },
+ destroy: function() {
+ if ( !this.data('expander') ) {
+ return;
+ }
+ this.removeData('expander');
+ this.each(function() {
+ var $this = $(this),
+ o = $.meta ? $.extend({}, opts, $this.data()) : opts,
+ details = $this.find('.' + o.detailClass).contents();
+
+ $this.find('.' + o.moreClass).remove();
+ $this.find('.' + o.summaryClass).remove();
+ $this.find('.' + o.detailClass).after(details).remove();
+ $this.find('.' + o.lessClass).remove();
+
+ });
+ }
+ };
+
+ // run the methods (almost always "init")
+ if ( methods[meth] ) {
+ methods[ meth ].call(this);
+ }
+
+ // utility functions
+ function buildHTML(o, blocks) {
+ var el = 'span',
+ summary = o.summary;
+ if ( blocks ) {
+ el = 'div';
+ // if summary ends with a close tag, tuck the moreLabel inside it
+ if ( rLastCloseTag.test(summary) && !o.expandAfterSummary) {
+ summary = summary.replace(rLastCloseTag, o.moreLabel + '$1');
+ } else {
+ // otherwise (e.g. if ends with self-closing tag) just add moreLabel after summary
+ // fixes #19
+ summary += o.moreLabel;
+ }
+
+ // and wrap it in a div
+ summary = '<div class="' + o.summaryClass + '">' + summary + '</div>';
+ } else {
+ summary += o.moreLabel;
+ }
+
+ return [
+ summary,
+ '<',
+ el + ' class="' + o.detailClass + '"',
+ '>',
+ o.details,
+ '</' + el + '>'
+ ].join('');
+ }
+
+ function buildMoreLabel(o) {
+ var ret = '<span class="' + o.moreClass + '">' + o.expandPrefix;
+ ret += '<a href="#">' + o.expandText + '</a></span>';
+ return ret;
+ }
+
+ function backup(txt, preserveWords) {
+ if ( txt.lastIndexOf('<') > txt.lastIndexOf('>') ) {
+ txt = txt.slice( 0, txt.lastIndexOf('<') );
+ }
+ if (preserveWords) {
+ txt = txt.replace(rAmpWordEnd,'');
+ }
+
+ return $.trim(txt);
+ }
+
+ function reCollapse(o, el) {
+ el.stop(true, true)[o.collapseEffect](o.collapseSpeed, function() {
+ var prevMore = el.prev('span.' + o.moreClass).show();
+ if (!prevMore.length) {
+ el.parent().children('div.' + o.summaryClass).show()
+ .find('span.' + o.moreClass).show();
+ }
+ });
+ }
+
+ function delayCollapse(option, $collapseEl, thisEl) {
+ if (option.collapseTimer) {
+ delayedCollapse = setTimeout(function() {
+ reCollapse(option, $collapseEl);
+ if ( $.isFunction(option.onCollapse) ) {
+ option.onCollapse.call(thisEl, false);
+ }
+ }, option.collapseTimer);
+ }
+ }
+
+ return this;
+ };
+
+ // plugin defaults
+ $.fn.expander.defaults = $.expander.defaults;
+})(jQuery);
diff --git a/addons/mail/static/src/css/mail.css b/addons/mail/static/src/css/mail.css
index 2421b28fbcb..0cf932f9a25 100644
--- a/addons/mail/static/src/css/mail.css
+++ b/addons/mail/static/src/css/mail.css
@@ -314,8 +314,8 @@
text-align: justify;
}
-.openerp .oe_mail_msg_tail {
- display: none;
+.openerp .oe_mail_msg_body span.oe_mail_msg_tail {
+ display: inline;
}
/* Read more/less link */
diff --git a/addons/mail/static/src/css/mail_group.css b/addons/mail/static/src/css/mail_group.css
index 90261499753..048b7a06415 100644
--- a/addons/mail/static/src/css/mail_group.css
+++ b/addons/mail/static/src/css/mail_group.css
@@ -1,3 +1,40 @@
+/* ------------------------------ */
+/* Group Form */
+/* ------------------------------ */
+
+/* Resize sheet width */
+.openerp .oe_form_sheetbg.openerp_mail_group_sheet {
+ min-height: 0px;
+ max-height: none;
+}
+
+.openerp .oe_form_sheetbg.openerp_mail_group_sheet .oe_form_sheet {
+ min-height: 0px;
+ max-height: none;
+ padding: 0px 18px;
+ max-width: 80%;
+}
+
+/* Resize footer width */
+.openerp .oe_form footer.openerp_mail_group_footer {
+ max-width: 80%;
+}
+
+/* Resize group logo */
+.openerp .oe_form_sheetbg.openerp_mail_group_sheet .oe_form_field_image > img {
+ max-width: 100px;
+ max-height: 100px;
+}
+
+/* Resize group description */
+.openerp .oe_form_sheetbg.openerp_mail_group_sheet .oe_form_field_text > textarea {
+ height: 40px;
+}
+
+/* ------------------------------ */
+/* Group Kanban */
+/* ------------------------------ */
+
.oe_group_vignette {
padding: 8px 0;
min-height: 100px;
@@ -71,9 +108,3 @@
.oe_group_details li {
margin: 2px 0;
}
-
-.oe_group_description {
-}
-
-.oe_kanban_record div.true {
-}
diff --git a/addons/mail/static/src/js/mail.js b/addons/mail/static/src/js/mail.js
index 5633a4bdae0..da54130d093 100644
--- a/addons/mail/static/src/js/mail.js
+++ b/addons/mail/static/src/js/mail.js
@@ -302,17 +302,20 @@ openerp.mail = function(session) {
record.body = this.do_clean_text(record.body);
record.body = this.do_replace_internal_links(record.body);
- // split for see more
- var split = this.do_truncate_string(record.body, this.params.msg_more_limit);
- record.body_head = split[0];
- record.body_tail = split[1];
-
// format date according to the user timezone
record.date = session.web.format_value(record.date, {type:"datetime"});
-
var rendered = session.web.qweb.render('mail.Thread.message', {'record': record, 'thread': this, 'params': this.params, 'display': this.display});
- $( rendered).appendTo(this.$element.children('div.oe_mail_thread_display:first'));
+ $(rendered).appendTo(this.$element.children('div.oe_mail_thread_display:first'));
+ // expand feature
+ this.$element.find('div.oe_mail_msg_body:last').expander({
+ slicePoint: this.params.msg_more_limit,
+ expandText: 'see more',
+ userCollapseText: 'see less',
+ detailClass: 'oe_mail_msg_tail',
+ moreClass: 'oe_mail_expand',
+ lesClass: 'oe_mail_reduce',
+ });
},
/**
@@ -447,20 +450,6 @@ openerp.mail = function(session) {
return this.session.prefix + '/web/binary/image?session_id=' + this.session.session_id + '&model=' + model + '&field=' + field + '&id=' + (id || '');
},
- /**
- * @param {String} string to truncate
- * @param {Number} max number of chars to display
- * @returns {String} truncated string
- */
- do_truncate_string: function(string, max_length) {
- // multiply by 1.2: prevent truncating an just too little long string
- if (string.length <= (max_length * 1.2)) {
- return [string, ""];
- } else {
- return [string.slice(0, max_length), string.slice(max_length)];
- }
- },
-
/** Removes html tags, except b, em, br */
do_clean_text: function (string) {
var html = $('<div/>').text(string.replace(/\s+/g, ' ')).html().replace(new RegExp('&lt;(/)?(b|em|br|br /)\\s*&gt;', 'gi'), '<$1$2>');
@@ -565,7 +554,7 @@ openerp.mail = function(session) {
},
fetch_subscribers: function () {
- return this.ds.call('message_get_subscribers', [[this.view.datarecord.id]]).then(this.proxy('display_subscribers'));
+ return this.ds.call('message_read_subscribers', [[this.view.datarecord.id]]).then(this.proxy('display_subscribers'));
},
display_subscribers: function (records) {
diff --git a/addons/mail/static/src/xml/mail.xml b/addons/mail/static/src/xml/mail.xml
index 34445c48f8d..2eb3a390933 100644
--- a/addons/mail/static/src/xml/mail.xml
+++ b/addons/mail/static/src/xml/mail.xml
@@ -91,10 +91,7 @@
</div>
<div class="oe_mail_msg_body">
<a href="#" data-res-model='res.users' t-attf-data-res-id='{record.user_id[0]}' class="oe_mail_internal_link"><t t-raw="record.user_id[1]"/></a>
- <t t-raw="record.body_head"/>
- <t t-if="record.body_tail"><a href="#" class="oe_mail_msg_more">... See more</a>
- <span class="oe_mail_msg_tail"><t t-raw="record.body_tail"/></span>
- </t>
+ <t t-raw="record.body"/>
</div>
<ul class="oe_mail_msg_footer">
<li><span t-att-title="record.date"><t t-raw="record.timerelative"/></span></li>
diff --git a/addons/mail/wizard/mail_compose_message_view.xml b/addons/mail/wizard/mail_compose_message_view.xml
index 99eb7192738..3da63fb1adc 100644
--- a/addons/mail/wizard/mail_compose_message_view.xml
+++ b/addons/mail/wizard/mail_compose_message_view.xml
@@ -12,18 +12,18 @@
or
<button string="Cancel" class="oe_link" special="cancel" />
</header>
- <group col="6" colspan="4">
+ <group>
<field name="model" invisible="1"/>
<field name="res_id" invisible="1"/>
<field name='filter_id' invisible="context.get('active_model',False)"/>
- <field name="email_from" colspan="4" required="1"/>
- <field name="email_to" colspan="4" required="1"/>
- <field name="email_cc" colspan="4"/>
- <field name="email_bcc" colspan="4"/>
- <field name="reply_to" colspan="4"/>
- <field name="subject" colspan="4" widget="char" size="512"/>
- <field name="references" invisible="1"/>
- <field name="message_id" invisible="1"/>
+ <field name="email_from" required="1"/>
+ <field name="email_to" required="1"/>
+ <field name="email_cc"/>
+ <field name="email_bcc"/>
+ <field name="reply_to"/>
+ <field name="subject" widget="char" size="512"/>
+ <field name="references"/>
+ <field name="message_id"/>
</group>
<notebook colspan="4">
<page string="Body">
diff --git a/addons/membership/membership.py b/addons/membership/membership.py
index 543f9636f7c..dc4eadbada9 100644
--- a/addons/membership/membership.py
+++ b/addons/membership/membership.py
@@ -141,7 +141,7 @@ class membership_line(osv.osv):
_name = 'membership.membership_line'
_columns = {
'partner': fields.many2one('res.partner', 'Partner', ondelete='cascade', select=1),
- 'membership_id': fields.many2one('product.product', string="Membership Product", required=True),
+ 'membership_id': fields.many2one('product.product', string="Membership", required=True),
'date_from': fields.date('From', readonly=True),
'date_to': fields.date('To', readonly=True),
'date_cancel': fields.date('Cancel date'),
diff --git a/addons/membership/membership_view.xml b/addons/membership/membership_view.xml
index 15645294bb7..0f2ad6836c8 100644
--- a/addons/membership/membership_view.xml
+++ b/addons/membership/membership_view.xml
@@ -241,8 +241,11 @@
<group>
<group>
<field name="free_member"/>
- <field colspan="4" name="membership_state"/>
- <button name="%(action_membership_invoice_view)d" type="action" string="Join Membership" attrs="{'readonly':[('free_member','=',True)]}" icon="gtk-apply"/>
+ <label for="membership_state"/>
+ <div>
+ <field name="membership_state" class="oe_inline"/>
+ <button name="%(action_membership_invoice_view)d" type="action" string="Join Membership" attrs="{'readonly':[('free_member','=',True)]}" class="oe_inline oe_right"/>
+ </div>
</group>
<group>
<field name="associate_member" attrs="{'readonly':[('membership_state','!=', 'none')]}"/>
@@ -254,7 +257,7 @@
<field name="member_lines" nolabel="1" colspan="4" readonly="1">
<tree string="Memberships">
<field name="date"/>
- <field name="membership_id" string="Membership"/>
+ <field name="membership_id"/>
<field name="member_price"/>
<field name="account_invoice_id"/>
<field name="state"/>
diff --git a/addons/mrp/mrp.py b/addons/mrp/mrp.py
index 22d493a7d48..c4a4d8df895 100644
--- a/addons/mrp/mrp.py
+++ b/addons/mrp/mrp.py
@@ -1033,20 +1033,14 @@ class mrp_production(osv.osv):
# ---------------------------------------------------
# OpenChatter methods and notifications
# ---------------------------------------------------
-
- def get_needaction_user_ids(self, cr, uid, ids, context=None):
- result = dict.fromkeys(ids, [])
- for obj in self.browse(cr, uid, ids, context=context):
- if obj.state == 'draft' and obj.user_id:
- result[obj.id] = [obj.user_id.id]
- return result
def message_get_subscribers(self, cr, uid, ids, context=None):
- sub_ids = self.message_get_subscribers_ids(cr, uid, ids, context=context);
+ """ Override to add responsible user. """
+ user_ids = super(mrp_production, self).message_get_subscribers(cr, uid, ids, context=context)
for obj in self.browse(cr, uid, ids, context=context):
- if obj.user_id:
- sub_ids.append(obj.user_id.id)
- return self.pool.get('res.users').read(cr, uid, sub_ids, context=context)
+ if obj.user_id and not obj.user_id.id in user_ids:
+ user_ids.append(obj.user_id.id)
+ return user_ids
def create_send_note(self, cr, uid, ids, context=None):
self.message_append_note(cr, uid, ids, body=_("Manufacturing order has been <b>created</b>."), context=context)
diff --git a/addons/point_of_sale/i18n/nl.po b/addons/point_of_sale/i18n/nl.po
index f881ffbdd7f..08133114e81 100644
--- a/addons/point_of_sale/i18n/nl.po
+++ b/addons/point_of_sale/i18n/nl.po
@@ -7,14 +7,14 @@ msgstr ""
"Project-Id-Version: OpenERP Server 6.0dev\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2012-02-08 01:37+0100\n"
-"PO-Revision-Date: 2012-02-09 11:20+0000\n"
+"PO-Revision-Date: 2012-07-02 15:03+0000\n"
"Last-Translator: Erwin <Unknown>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2012-05-11 04:42+0000\n"
-"X-Generator: Launchpad (build 15225)\n"
+"X-Launchpad-Export-Date: 2012-07-03 05:35+0000\n"
+"X-Generator: Launchpad (build 15531)\n"
#. module: point_of_sale
#: field:report.transaction.pos,product_nb:0
@@ -37,6 +37,12 @@ msgid ""
"new payment methods directly from menu \"PoS Backend > Configuration > "
"Payment Methods\"."
msgstr ""
+"U dient te definiëren welke betaalmethode beschikbaar dienen te zijn bij de "
+"kassa. Dit kunt u doen door gebruik te maken van de bestaande bank en kas. "
+"Ga naar Financieel > Instellingen > Financiële administratie > Dagboeken. "
+"Selecteer een dagboek en vink te optie \"Kassa betaalmethode\" aan op het "
+"kassa tabblad. Het is ook mogelijk een neiuwe betaalmethode aan te maken, "
+"direct vanuit het menu Kassa achterkant >> Instellingen >> Betaalmethodes."
#. module: point_of_sale
#: view:pos.order:0 view:report.pos.order:0
@@ -51,7 +57,7 @@ msgstr "Water"
#. module: point_of_sale
#: view:report.cash.register:0
msgid "Year from Creation date of cash register"
-msgstr ""
+msgstr "Jaar van aanmaakdatum kasregister"
#. module: point_of_sale
#: view:pos.confirm:0
@@ -66,7 +72,7 @@ msgstr "Spa Reine 2L"
#. module: point_of_sale
#: model:ir.model,name:point_of_sale.model_pos_box_out
msgid "Pos Box Out"
-msgstr ""
+msgstr "Kassa uit"
#. module: point_of_sale
#: model:ir.actions.act_window,name:point_of_sale.action_report_cash_register_all
@@ -105,7 +111,7 @@ msgstr "Productnaam"
#. module: point_of_sale
#: view:report.cash.register:0
msgid "Month from Creation date of cash register"
-msgstr ""
+msgstr "Maand van aanmaakdatum kasregister"
#. module: point_of_sale
#: report:account.statement:0 field:pos.box.entries,amount:0
@@ -308,12 +314,12 @@ msgstr "Maandelijkse verkopen per gebruiker"
#. module: point_of_sale
#: report:all.closed.cashbox.of.the.day:0
msgid "Today's Closed Cashbox"
-msgstr ""
+msgstr "Vandaag gesloten kassa"
#. module: point_of_sale
#: view:report.cash.register:0
msgid "Day from Creation date of cash register"
-msgstr ""
+msgstr "Dag van aanmaakdatum kasregister"
#. module: point_of_sale
#: model:ir.ui.menu,name:point_of_sale.menu_point_of_sale
@@ -382,6 +388,8 @@ msgid ""
"If you want to sell this product through the point of sale, select the "
"category it belongs to."
msgstr ""
+"Indien u dit product wilt verkopen bij de kassa, dan dient u de categorie te "
+"selecteren waartoe het product hoort."
#. module: point_of_sale
#: report:account.statement:0 report:all.closed.cashbox.of.the.day:0
@@ -460,7 +468,7 @@ msgstr "Verkoopfactuur"
#. module: point_of_sale
#: view:pos.box.out:0
msgid "Output Operation"
-msgstr ""
+msgstr "Uitgaande verwerking"
#. module: point_of_sale
#: view:report.pos.order:0 field:report.pos.order,total_discount:0
@@ -482,7 +490,7 @@ msgstr "Dr. Oetker Ristorante Bolognese"
#: code:addons/point_of_sale/wizard/pos_box_entries.py:105
#, python-format
msgid "Please check that income account is set to %s"
-msgstr ""
+msgstr "Controleer of de opbrengsten rekening is ingesteld op %s"
#. module: point_of_sale
#: model:pos.category,name:point_of_sale.pizza
@@ -530,7 +538,7 @@ msgstr "Betaling"
#. module: point_of_sale
#: view:report.cash.register:0
msgid "Cash Analysis created in current month"
-msgstr ""
+msgstr "Kasanalyse gemaakt in de huidige maand"
#. module: point_of_sale
#: report:account.statement:0 report:all.closed.cashbox.of.the.day:0
@@ -587,7 +595,7 @@ msgstr "Einddatum"
#. module: point_of_sale
#: view:report.pos.order:0
msgid "POS ordered created during current year"
-msgstr ""
+msgstr "Kassaorders aangemaakt in huidige jaar"
#. module: point_of_sale
#: model:ir.actions.act_window,name:point_of_sale.action_pos_pos_form
@@ -691,7 +699,7 @@ msgstr "Eindsaldo"
#: model:ir.actions.act_window,name:point_of_sale.act_pos_open_statement
#: model:ir.model,name:point_of_sale.model_pos_close_statement
msgid "Close Statements"
-msgstr ""
+msgstr "Afsluit overzichten"
#. module: point_of_sale
#: model:product.template,name:point_of_sale.croky_naturel_45g_product_template
@@ -701,7 +709,7 @@ msgstr "Croky Naturel 45g"
#. module: point_of_sale
#: model:product.template,name:point_of_sale.product_product_putmoneyforchange1_product_template
msgid "Cash Out"
-msgstr ""
+msgstr "Kas uit"
#. module: point_of_sale
#: report:account.statement:0 report:all.closed.cashbox.of.the.day:0
@@ -735,6 +743,7 @@ msgid ""
"This field authorize Validation of Cashbox without controlling the closing "
"balance."
msgstr ""
+"Met dit veld kunt u de kassa inhoud valideren zonder de afsluitbalans"
#. module: point_of_sale
#: model:ir.actions.act_window,name:point_of_sale.action_report_pos_details
@@ -750,7 +759,7 @@ msgstr "Pils"
#. module: point_of_sale
#: report:all.closed.cashbox.of.the.day:0
msgid "St.Name"
-msgstr ""
+msgstr "St.Naam"
#. module: point_of_sale
#: report:pos.details_summary:0
@@ -845,7 +854,7 @@ msgstr "Stella Artois 33cl"
#. module: point_of_sale
#: view:report.cash.register:0
msgid "Cash Analysis created during this year"
-msgstr ""
+msgstr "Kasanalyse aangemaakt in huidig jaar"
#. module: point_of_sale
#: report:pos.invoice:0
@@ -975,7 +984,7 @@ msgstr "Totaal korting"
#. module: point_of_sale
#: model:ir.model,name:point_of_sale.model_pos_box_entries
msgid "Pos Box Entries"
-msgstr ""
+msgstr "Kassa boekingen"
#. module: point_of_sale
#: model:product.template,name:point_of_sale.boon_framboise_37,5cl_product_template
@@ -1038,7 +1047,7 @@ msgstr "Timmermans Kriek 37.5cl"
#. module: point_of_sale
#: field:account.journal,check_dtls:0
msgid "Control Balance Before Closing"
-msgstr ""
+msgstr "Controleer de balans voor het sluiten"
#. module: point_of_sale
#: model:ir.model,name:point_of_sale.model_pos_order_line
@@ -1091,6 +1100,8 @@ msgid ""
"This is a product you can use to take cash from a statement for the point of "
"sale backend, exemple: money lost, transfer to bank, etc."
msgstr ""
+"Dit is een product welke u kunt gebruiken om ontbrekend kasgeld te "
+"verklaren, bijvoorbeeld: Geld verloren, geld overgemaakt aan bank, etc."
#. module: point_of_sale
#: field:report.cash.register,date:0
@@ -1137,6 +1148,8 @@ msgid ""
"There is no receivable account defined to make payment for the partner: "
"\"%s\" (id:%d)"
msgstr ""
+"Er is geen debiteurenrekening gedefinieerd om deze betaling te doen foor "
+"klant: \"%s\" (id:%d)"
#. module: point_of_sale
#: view:pos.confirm:0
@@ -1144,6 +1157,8 @@ msgid ""
"Generate all sale journal entries for non invoiced orders linked to a closed "
"cash register or statement."
msgstr ""
+"Genereer alle verkoop journaalpsoten van alle niet gefactureerde orders "
+"welke zijn gekoppeld aan een gesloten kasregister of kasverklaring."
#. module: point_of_sale
#: code:addons/point_of_sale/point_of_sale.py:293
@@ -1192,11 +1207,12 @@ msgstr "Print datum"
#, python-format
msgid "There is no receivable account defined to make payment"
msgstr ""
+"Er is geen debiteurenrekening gedefinieerd om deze betaling op te doen"
#. module: point_of_sale
#: view:pos.open.statement:0
msgid "Do you want to open cash registers?"
-msgstr ""
+msgstr "Wilt u de kasregisters openen?"
#. module: point_of_sale
#: help:pos.category,sequence:0
@@ -1208,7 +1224,7 @@ msgstr ""
#. module: point_of_sale
#: field:product.product,expense_pdt:0
msgid "PoS Cash Output"
-msgstr ""
+msgstr "Kas uit"
#. module: point_of_sale
#: model:pos.category,name:point_of_sale.soda
@@ -1229,7 +1245,7 @@ msgstr "Kassa Orders"
#. module: point_of_sale
#: model:ir.actions.report.xml,name:point_of_sale.all_closed_cashbox_of_the_day
msgid "All Closed CashBox"
-msgstr ""
+msgstr "Alle gesloten kassa's"
#. module: point_of_sale
#: code:addons/point_of_sale/point_of_sale.py:640
@@ -1333,7 +1349,7 @@ msgstr "Kassa"
#: model:ir.actions.act_window,name:point_of_sale.action_product_output
#: model:ir.ui.menu,name:point_of_sale.products_for_output_operations
msgid "Products 'Put Money In'"
-msgstr ""
+msgstr "Producten 'Stop geld erin'"
#. module: point_of_sale
#: model:product.template,name:point_of_sale.croky_bolognaise_250g_product_template
@@ -1367,11 +1383,12 @@ msgid ""
"This is a product you can use to put cash into a statement for the point of "
"sale backend."
msgstr ""
+"Dit si een product welke u kunt gebruiken om extra kasgeld te verklaren."
#. module: point_of_sale
#: view:pos.receipt:0
msgid "Print the Receipt of the Sale"
-msgstr ""
+msgstr "Kassabon afdrukken"
#. module: point_of_sale
#: field:pos.make.payment,journal:0
@@ -1415,7 +1432,7 @@ msgstr "Evian 1L"
#. module: point_of_sale
#: model:ir.ui.menu,name:point_of_sale.menu_open_statement
msgid "Open Cash Registers"
-msgstr ""
+msgstr "Open kassa"
#. module: point_of_sale
#: model:pos.category,name:point_of_sale.water
@@ -1450,7 +1467,7 @@ msgstr "Chimay Rouge 33cl"
#. module: point_of_sale
#: field:report.pos.order,delay_validation:0
msgid "Delay Validation"
-msgstr ""
+msgstr "Vertraging validatie"
#. module: point_of_sale
#: field:pos.order,nb_print:0
@@ -1522,7 +1539,7 @@ msgstr "Jaar van orderdatum"
#: model:ir.actions.act_window,name:point_of_sale.action_new_bank_statement_tree
#: field:pos.box.entries,journal_id:0 field:pos.box.out,journal_id:0
msgid "Cash Register"
-msgstr ""
+msgstr "Kasregister"
#. module: point_of_sale
#: view:pos.close.statement:0
@@ -1542,7 +1559,7 @@ msgstr "Verkoop per gebruiker per dag"
#. module: point_of_sale
#: view:pos.open.statement:0
msgid "Open Registers"
-msgstr ""
+msgstr "Open registers"
#. module: point_of_sale
#: field:report.transaction.pos,journal_id:0
@@ -1567,7 +1584,7 @@ msgstr "Dr. Oetker Ristorante Vegetale"
#. module: point_of_sale
#: view:report.pos.order:0
msgid "POS ordered created by today"
-msgstr ""
+msgstr "Kassaorders aangemaakt vandaag"
#. module: point_of_sale
#: model:product.template,name:point_of_sale.coca_zero_2l_product_template
@@ -1592,7 +1609,7 @@ msgstr "Korting"
#. module: point_of_sale
#: view:report.cash.register:0
msgid "Cash Analysis created in last month"
-msgstr ""
+msgstr "Kasanalyse gemaakt in laatste maand"
#. module: point_of_sale
#: model:pos.category,name:point_of_sale.beers
@@ -1606,11 +1623,14 @@ msgid ""
"validation. He will also open all cash registers for which you have to "
"control the ending belance before closing manually."
msgstr ""
+"OpenERP sluit alle kasregisters, welke gesloten kunnen worden zonder een "
+"kascontrole. Tevens worden alle kasregisters geopend waarvoor u de endbelans "
+"handmatig dient te controleren."
#. module: point_of_sale
#: view:report.cash.register:0
msgid "Cash Analysis created by today"
-msgstr ""
+msgstr "Kasanalyse gemaakt in vandaag"
#. module: point_of_sale
#: selection:report.cash.register,state:0
@@ -1620,7 +1640,7 @@ msgstr "Offerte"
#. module: point_of_sale
#: model:product.template,name:point_of_sale.product_product_putmoneyforchange0_product_template
msgid "Cash In"
-msgstr ""
+msgstr "Kas in"
#. #-#-#-#-# point_of_sale.pot (OpenERP Server 6.1rc1) #-#-#-#-#
#. module: point_of_sale
@@ -1642,7 +1662,7 @@ msgstr "Verkopen per marge"
#. module: point_of_sale
#: model:ir.model,name:point_of_sale.model_pos_config_journal
msgid "Journal Configuration"
-msgstr ""
+msgstr "Dagboek instellingen"
#. module: point_of_sale
#: view:pos.order:0
@@ -1664,7 +1684,7 @@ msgstr "Opnieuw afdrukken"
msgid ""
"Person who uses the the cash register. It could be a reliever, a student or "
"an interim employee."
-msgstr ""
+msgstr "Personen welke het kasregister hebben gebruikt."
#. module: point_of_sale
#: field:report.transaction.pos,invoice_id:0
@@ -1687,6 +1707,9 @@ msgid ""
"payments. We suggest you to control the opening balance of each register, "
"using their CashBox tab."
msgstr ""
+"Het systeem zal alle kassa's openen, zodat u de betalingen kunt gaan "
+"registreren. We adviseren u om de kasinhoud bij openen te controleren van "
+"iedere kassa, door gebruik te maken van het kassa tabblad."
#. module: point_of_sale
#: report:pos.invoice:0 report:pos.lines:0 field:pos.order.line,price_unit:0
@@ -1838,7 +1861,7 @@ msgstr "Pepsi 2L"
#. module: point_of_sale
#: report:pos.details:0
msgid "Order"
-msgstr ""
+msgstr "Order"
#. module: point_of_sale
#: code:addons/point_of_sale/point_of_sale.py:472
@@ -1861,7 +1884,7 @@ msgstr "Verkoper"
#: model:ir.model,name:point_of_sale.model_report_cash_register
#: view:report.cash.register:0
msgid "Point of Sale Cash Register Analysis"
-msgstr ""
+msgstr "Kassa kasregisteranalyse"
#. module: point_of_sale
#: report:pos.lines:0
@@ -1897,7 +1920,7 @@ msgstr "Verkopen per gebruiker"
#. module: point_of_sale
#: model:ir.actions.act_window,name:point_of_sale.action_pos_open_statement
msgid "Open Cash Register"
-msgstr ""
+msgstr "Open kasregister"
#. module: point_of_sale
#: model:product.template,name:point_of_sale.lindemans_pecheresse_37,5cl_product_template
@@ -1961,7 +1984,7 @@ msgstr "Orangina 33cl"
#: model:ir.actions.act_window,name:point_of_sale.action_product_input
#: model:ir.ui.menu,name:point_of_sale.products_for_input_operations
msgid "Products 'Take Money Out'"
-msgstr ""
+msgstr "Producten 'Haal geld eruit'"
#. module: point_of_sale
#: model:product.template,name:point_of_sale.chimay_bleu_33cl_product_template
@@ -1990,7 +2013,7 @@ msgstr "Dr. Oetker Ristorante Spinaci"
#: code:addons/point_of_sale/wizard/pos_box_out.py:88
#, python-format
msgid "You have to open at least one cashbox"
-msgstr ""
+msgstr "U moet tenminste één kassa openen"
#. module: point_of_sale
#: model:ir.actions.report.xml,name:point_of_sale.pos_payment_report_user
@@ -2001,7 +2024,7 @@ msgstr "Betalingen van vandaag per gebruiker"
#: model:ir.actions.act_window,name:point_of_sale.action_box_entries
#: model:ir.ui.menu,name:point_of_sale.menu_wizard_enter_jrnl
msgid "Put Money In"
-msgstr ""
+msgstr "Stop geld erin"
#. module: point_of_sale
#: code:addons/point_of_sale/point_of_sale.py:238
@@ -2079,13 +2102,14 @@ msgstr "Chaudfontaine 1.5l"
#. module: point_of_sale
#: model:ir.actions.act_window,name:point_of_sale.action_pos_close_statement
msgid "Close Cash Register"
-msgstr ""
+msgstr "Kasregister afsluiten"
#. module: point_of_sale
#: code:addons/point_of_sale/point_of_sale.py:65
#, python-format
msgid "In order to delete a sale, it must be new or cancelled."
msgstr ""
+"Om een verkoop te kunnen verwijderen moet deze nieuw zijn of geannuleerd."
#. module: point_of_sale
#: model:product.template,name:point_of_sale.coca_regular_50cl_product_template
@@ -2128,6 +2152,8 @@ msgid ""
"This field authorize the automatic creation of the cashbox, without control "
"of the initial balance."
msgstr ""
+"Dit veld geeft u de mogelijkheid om automatisch een kassa aan te makien, "
+"zonder een eerste controle van de kasinhoud."
#. module: point_of_sale
#: model:product.template,name:point_of_sale.coca_zero_50cl_product_template
@@ -2159,7 +2185,7 @@ msgstr "Nieuw"
#: code:addons/point_of_sale/point_of_sale.py:238
#, python-format
msgid "In order to set to draft a sale, it must be cancelled."
-msgstr ""
+msgstr "Om in concept te zetten, moet de verkoopn worden geannuleerd"
#. module: point_of_sale
#: model:product.template,name:point_of_sale.fanta_zero_orange_33cl_product_template
@@ -2184,7 +2210,7 @@ msgstr "Maes 33cl"
#. module: point_of_sale
#: view:pos.box.entries:0
msgid "Put Money"
-msgstr ""
+msgstr "Stop geld"
#. module: point_of_sale
#: sql_constraint:account.journal:0
@@ -2210,17 +2236,17 @@ msgstr "Coca-Cola Normaal 1L"
#: code:addons/point_of_sale/point_of_sale.py:253
#, python-format
msgid "Unable to cancel the picking."
-msgstr ""
+msgstr "Niet mogelijk om het verzamelen te stoppen."
#. module: point_of_sale
#: view:report.pos.order:0
msgid "POS ordered created during current month"
-msgstr ""
+msgstr "Kassaorders gemaakt in de huidige maand"
#. module: point_of_sale
#: view:report.pos.order:0
msgid "POS ordered created last month"
-msgstr ""
+msgstr "Kassaorders gemaakt in de vorige maand"
#. module: point_of_sale
#: model:ir.actions.act_window,name:point_of_sale.action_pos_invoice
@@ -2256,7 +2282,7 @@ msgstr "ijsboerke Chocolat 2.5L"
#. module: point_of_sale
#: view:pos.box.out:0
msgid "Take Money"
-msgstr ""
+msgstr "Pak geld"
#. module: point_of_sale
#: model:ir.model,name:point_of_sale.model_pos_details
@@ -2307,7 +2333,7 @@ msgstr "Speciale bieren"
#. module: point_of_sale
#: field:pos.order.line,notice:0
msgid "Discount Notice"
-msgstr ""
+msgstr "Korting opmerking"
#. module: point_of_sale
#: view:pos.order:0
@@ -2361,6 +2387,8 @@ msgid ""
"Payment methods are defined by accounting journals having the field Payment "
"Method checked."
msgstr ""
+"Betaalmethodes worden gedefinieerd door de journaalposten waarbij het veld "
+"betaalmethode is aangevinkt."
#. module: point_of_sale
#: model:ir.actions.act_window,name:point_of_sale.action_trans_pos_tree
@@ -2426,7 +2454,7 @@ msgstr "Lays Paprika XXL 300g"
#. module: point_of_sale
#: view:pos.close.statement:0
msgid "Do you want to close your cash registers?"
-msgstr ""
+msgstr "Wilt u de kasregisters sluiten?"
#. module: point_of_sale
#: report:pos.invoice:0
@@ -2450,7 +2478,7 @@ msgstr "Dr. Oetker Ristorante Mozzarella"
#: view:pos.close.statement:0
#, python-format
msgid "Close Cash Registers"
-msgstr ""
+msgstr "Kasregisters afsluiten"
#. module: point_of_sale
#: report:pos.details:0 report:pos.payment.report.user:0
@@ -2505,7 +2533,7 @@ msgstr "Betalingsrapport"
#. module: point_of_sale
#: field:report.transaction.pos,jl_id:0
msgid "Cash Journals"
-msgstr ""
+msgstr "Kas dagboeken"
#. module: point_of_sale
#: report:pos.sales.user.today:0
@@ -2536,7 +2564,7 @@ msgstr "Mei"
#. module: point_of_sale
#: report:pos.lines:0
msgid "Sales lines"
-msgstr ""
+msgstr "Verkooporderregels"
#. module: point_of_sale
#: view:pos.order:0
@@ -2556,7 +2584,7 @@ msgstr "Coca-Cola Zero zonder cafeïne 33cl"
#. module: point_of_sale
#: view:pos.box.out:0
msgid "Describe why you take money from the cash register:"
-msgstr ""
+msgstr "Beschrijf wat de reden is waarom u geld uit de kassa haalt:"
#. module: point_of_sale
#: model:ir.actions.act_window,name:point_of_sale.action_report_pos_order_all
@@ -2611,6 +2639,8 @@ msgid ""
"Check this box if this journal define a payment method that can be used in "
"point of sales."
msgstr ""
+"Vink deze optie aan indien dit dagboek een betaalmethode is voor gebruik bij "
+"de kassa"
#. module: point_of_sale
#: field:pos.category,sequence:0
@@ -2641,7 +2671,7 @@ msgstr "Maand van orderdatum"
#. module: point_of_sale
#: field:product.product,income_pdt:0
msgid "PoS Cash Input"
-msgstr ""
+msgstr "Kassa geld inkomend"
#. module: point_of_sale
#: view:report.cash.register:0 field:report.cash.register,year:0
@@ -2707,6 +2737,8 @@ msgid ""
"There are pending operations that could not be saved into the database, are "
"you sure you want to exit?"
msgstr ""
+"Er zijn lopende opdrachten die niet kunnen worden opgeslagen in de database. "
+"Weet u zeker dat u wilt afsluiten?"
#. openerp-web
#: /home/odo/repositories/addons/trunk/point_of_sale/static/src/xml/pos.xml:236
@@ -3053,3 +3085,9 @@ msgstr "Winkel:"
#~ msgid "Print the receipt of the sale"
#~ msgstr "Verkoopbon afdrukken"
+
+#~ msgid "Do you want to open cash registers ?"
+#~ msgstr "Wilt u de kassa openen?"
+
+#~ msgid "Do you want to close your cash registers ?"
+#~ msgstr "Wilt u uw kasregister afsluiten?"
diff --git a/addons/portal/wizard/share_wizard.py b/addons/portal/wizard/share_wizard.py
index d642be7b698..ca950a61b08 100644
--- a/addons/portal/wizard/share_wizard.py
+++ b/addons/portal/wizard/share_wizard.py
@@ -28,7 +28,7 @@ UID_ROOT = 1
SHARED_DOCS_MENU = "Documents"
SHARED_DOCS_CHILD_MENU = "Shared Documents"
-class share_wizard_portal(osv.osv_memory):
+class share_wizard_portal(osv.TransientModel):
"""Inherited share wizard to automatically create appropriate
menus in the selected portal upon sharing with a portal group."""
_inherit = "share.wizard"
diff --git a/addons/portal/wizard/share_wizard_view.xml b/addons/portal/wizard/share_wizard_view.xml
index 2f9d55c1f0d..cf294285f4f 100644
--- a/addons/portal/wizard/share_wizard_view.xml
+++ b/addons/portal/wizard/share_wizard_view.xml
@@ -8,7 +8,7 @@
<field name="type">form</field>
<field name="inherit_id" ref="share.share_step1_form"/>
<field name="arch" type="xml">
- <xpath expr="/form/field[@name='user_type']" position="attributes">
+ <xpath expr="//field[@name='user_type']" position="attributes">
<attribute name='invisible'>0</attribute>
<attribute name='colspan'>4</attribute>
</xpath>
@@ -40,11 +40,11 @@
<xpath expr="//field[@name='result_line_ids']//field[@name='login']" position="after">
<field name="share_url" groups="portal.group_portal_manager"/>
</xpath>
- <xpath expr="//field[@name='result_line_ids']//field[@name='login']" position="after">
- <field name="share_url" colspan="4" groups="portal.group_portal_manager"/>
- </xpath>
<xpath expr="//field[@name='result_line_ids']" position="after">
- <field colspan="4" name="share_root_url" groups="portal.group_portal_manager"/>
+ <newline/>
+ <group string="Details">
+ <field name="share_root_url" groups="portal.group_portal_manager"/>
+ </group>
</xpath>
</field>
</record>
diff --git a/addons/product/product_view.xml b/addons/product/product_view.xml
index f9fd2b78986..0fb0b0559f9 100644
--- a/addons/product/product_view.xml
+++ b/addons/product/product_view.xml
@@ -312,12 +312,26 @@
<field name="type">form</field>
<field name="arch" type="xml">
<form string="Product Categories" version="7.0">
- <group col="4">
- <field name="name"/>
- <field name="parent_id"/>
- <field name="sequence" invisible="1"/>
- <field name="type"/>
- </group>
+ <sheet>
+ <div class="oe_title">
+ <h1>
+ <label for="name" class="oe_edit_only"/>
+ <field name="name"/>
+ </h1>
+ </div>
+ <group>
+ <group>
+ <field name="type"/>
+ </group>
+ <group>
+ <field name="parent_id"/>
+ </group>
+ </group>
+ <group name="basic">
+ <group name="account_property" string="Account Properties"/>
+ <group name="account_stock_property" string="Account Stock Properties"/>
+ </group>
+ </sheet>
</form>
</field>
</record>
@@ -409,12 +423,12 @@
<field name="arch" type="xml">
<form string="Units of Measure" version="7.0">
<group>
- <group string="Unit of Measure Properties">
+ <group>
<field name="name"/>
<field name="category_id"/>
<field name="active"/>
</group>
- <group string="Ratio &amp; Precision">
+ <group>
<field name="uom_type" on_change="onchange_type(uom_type)"/>
<field name="rounding"/>
<field name="factor" attrs="{'invisible':[('uom_type','!=','smaller')]}"/>
diff --git a/addons/product_manufacturer/product_manufacturer_view.xml b/addons/product_manufacturer/product_manufacturer_view.xml
index 4a19996af66..655dc841d17 100644
--- a/addons/product_manufacturer/product_manufacturer_view.xml
+++ b/addons/product_manufacturer/product_manufacturer_view.xml
@@ -10,19 +10,19 @@
<field name="arch" type="xml">
<notebook position="inside">
<page string="Manufacturer">
- <separator string="Manufacturer" colspan="4" />
- <field name="manufacturer" />
- <newline/>
- <field name="manufacturer_pname"/>
- <field name="manufacturer_pref"/>
-
- <separator string="Attributes" colspan="4"/>
- <field name="attribute_ids" colspan="4" nolabel="1">
- <tree string="Product Attributes" editable="bottom">
- <field name="name"/>
- <field name="value"/>
- </tree>
- </field>
+ <group string="Manufacturer">
+ <field name="manufacturer" />
+ <field name="manufacturer_pname"/>
+ <field name="manufacturer_pref"/>
+ </group>
+ <group string="Attributes">
+ <field name="attribute_ids" colspan="4" nolabel="1">
+ <tree string="Product Attributes" editable="bottom">
+ <field name="name"/>
+ <field name="value"/>
+ </tree>
+ </field>
+ </group>
</page>
</notebook>
</field>
diff --git a/addons/project/project.py b/addons/project/project.py
index 05a81c99514..487daa834bb 100644
--- a/addons/project/project.py
+++ b/addons/project/project.py
@@ -480,21 +480,14 @@ def Project():
# ------------------------------------------------
# OpenChatter methods and notifications
# ------------------------------------------------
-
- def get_needaction_user_ids(self, cr, uid, ids, context=None):
- result = dict.fromkeys(ids)
- for obj in self.browse(cr, uid, ids, context=context):
- result[obj.id] = []
- if obj.state == 'draft' and obj.user_id:
- result[obj.id] = [obj.user_id.id]
- return result
def message_get_subscribers(self, cr, uid, ids, context=None):
- sub_ids = self.message_get_subscribers_ids(cr, uid, ids, context=context);
+ """ Override to add responsible user. """
+ user_ids = super(project, self).message_get_subscribers(cr, uid, ids, context=context)
for obj in self.browse(cr, uid, ids, context=context):
- if obj.user_id:
- sub_ids.append(obj.user_id.id)
- return self.pool.get('res.users').read(cr, uid, sub_ids, context=context)
+ if obj.user_id and not obj.user_id.id in user_ids:
+ user_ids.append(obj.user_id.id)
+ return user_ids
def create(self, cr, uid, vals, context=None):
obj_id = super(project, self).create(cr, uid, vals, context=context)
@@ -1145,20 +1138,26 @@ class task(base_stage, osv.osv):
return 'Task'
def get_needaction_user_ids(self, cr, uid, ids, context=None):
- result = dict.fromkeys(ids, [])
+ """ Returns the user_ids that have to perform an action.
+ Add to the previous results given by super the document responsible
+ when in draft mode.
+ :return: dict { record_id: [user_ids], }
+ """
+ result = super(task, self).get_needaction_user_ids(cr, uid, ids, context=context)
for obj in self.browse(cr, uid, ids, context=context):
if obj.state == 'draft' and obj.user_id:
- result[obj.id] = [obj.user_id.id]
+ result[obj.id].append(obj.user_id.id)
return result
def message_get_subscribers(self, cr, uid, ids, context=None):
- sub_ids = self.message_get_subscribers_ids(cr, uid, ids, context=context);
+ """ Override to add responsible user and project manager. """
+ user_ids = super(task, self).message_get_subscribers(cr, uid, ids, context=context)
for obj in self.browse(cr, uid, ids, context=context):
- if obj.user_id:
- sub_ids.append(obj.user_id.id)
- if obj.manager_id:
- sub_ids.append(obj.manager_id.id)
- return self.pool.get('res.users').read(cr, uid, sub_ids, context=context)
+ if obj.user_id and not obj.user_id.id in user_ids:
+ user_ids.append(obj.user_id.id)
+ if obj.manager_id and not obj.manager_id.id in user_ids:
+ user_ids.append(obj.manager_id.id)
+ return user_ids
def stage_set_send_note(self, cr, uid, ids, stage_id, context=None):
""" Override of the (void) default notification method. """
diff --git a/addons/project/project_view.xml b/addons/project/project_view.xml
index e58aad743dd..cf501740456 100644
--- a/addons/project/project_view.xml
+++ b/addons/project/project_view.xml
@@ -21,6 +21,43 @@
view_mode="kanban,tree,form,calendar,graph"
view_type="form"/>
+ <!-- Project Read/Unread actions -->
+ <record id="actions_server_project_unread" model="ir.actions.server">
+ <field name="name">Mark unread</field>
+ <field name="condition">True</field>
+ <field name="type">ir.actions.server</field>
+ <field name="model_id" ref="model_project_project"/>
+ <field name="state">code</field>
+ <field name="code">self.message_check_and_set_unread(cr, uid, context.get('active_ids'), context=context)</field>
+ </record>
+ <record id="action_project_unread" model="ir.values">
+ <field name="name">action_project_unread</field>
+ <field name="action_id" ref="actions_server_project_unread"/>
+ <field name="value" eval="'ir.actions.server,' + str(ref('actions_server_project_unread'))" />
+ <field name="key">action</field>
+ <field name="model_id" ref="model_project_project" />
+ <field name="model">project.project</field>
+ <field name="key2">client_action_multi</field>
+ </record>
+
+ <record id="actions_server_project_read" model="ir.actions.server">
+ <field name="name">Mark read</field>
+ <field name="condition">True</field>
+ <field name="type">ir.actions.server</field>
+ <field name="model_id" ref="model_project_project"/>
+ <field name="state">code</field>
+ <field name="code">self.message_check_and_set_read(cr, uid, context.get('active_ids'), context=context)</field>
+ </record>
+ <record id="action_project_read" model="ir.values">
+ <field name="name">action_project_read</field>
+ <field name="action_id" ref="actions_server_project_read"/>
+ <field name="value" eval="'ir.actions.server,' + str(ref('actions_server_project_read'))" />
+ <field name="key">action</field>
+ <field name="model_id" ref="model_project_project" />
+ <field name="model">project.project</field>
+ <field name="key2">client_action_multi</field>
+ </record>
+
<!-- Project -->
<record id="edit_project" model="ir.ui.view">
<field name="name">project.project.form</field>
@@ -126,6 +163,11 @@
<group>
<field name="complete_name" string="Project Name"/>
<separator orientation="vertical"/>
+ <filter icon="terp-mail-message-new"
+ string="Inbox" help="Unread messages"
+ name="needaction_pending"
+ domain="[('needaction_pending','=',True)]"/>
+ <separator orientation="vertical"/>
<filter icon="terp-check" string="Open" name="Current" domain="[('state', '=','open')]" help="Open Projects"/>
<filter icon="gtk-media-pause" string="Pending" name="Pending" domain="[('state', '=','pending')]" help="Pending Projects"/>
<filter icon="gtk-media-pause" string="Template" name="Template" domain="[('state', '=','template')]" help="Templates of Projects"/>
@@ -308,6 +350,44 @@
</record>
<!-- Task -->
+
+ <!-- Task Read/Unread actions -->
+ <record id="actions_server_project_task_unread" model="ir.actions.server">
+ <field name="name">Mark unread</field>
+ <field name="condition">True</field>
+ <field name="type">ir.actions.server</field>
+ <field name="model_id" ref="model_project_task"/>
+ <field name="state">code</field>
+ <field name="code">self.message_check_and_set_unread(cr, uid, context.get('active_ids'), context=context)</field>
+ </record>
+ <record id="action_project_task_unread" model="ir.values">
+ <field name="name">action_project_task_unread</field>
+ <field name="action_id" ref="actions_server_project_task_unread"/>
+ <field name="value" eval="'ir.actions.server,' + str(ref('actions_server_project_task_unread'))" />
+ <field name="key">action</field>
+ <field name="model_id" ref="model_project_task" />
+ <field name="model">project.task</field>
+ <field name="key2">client_action_multi</field>
+ </record>
+
+ <record id="actions_server_project_task_read" model="ir.actions.server">
+ <field name="name">Mark read</field>
+ <field name="condition">True</field>
+ <field name="type">ir.actions.server</field>
+ <field name="model_id" ref="model_project_task"/>
+ <field name="state">code</field>
+ <field name="code">self.message_check_and_set_read(cr, uid, context.get('active_ids'), context=context)</field>
+ </record>
+ <record id="action_project_task_read" model="ir.values">
+ <field name="name">action_project_task_read</field>
+ <field name="action_id" ref="actions_server_project_task_read"/>
+ <field name="value" eval="'ir.actions.server,' + str(ref('actions_server_project_task_read'))" />
+ <field name="key">action</field>
+ <field name="model_id" ref="model_project_task" />
+ <field name="model">project.task</field>
+ <field name="key2">client_action_multi</field>
+ </record>
+
<record id="view_task_form2" model="ir.ui.view">
<field name="name">project.task.form</field>
<field name="model">project.task</field>
@@ -440,6 +520,8 @@
<field name="kanban_state"/>
<field name="remaining_hours" sum="Remaining Time" groups="project.group_time_work_estimation_tasks"/>
<field name="date_deadline"/>
+ <field name="message_summary"/>
+ <field name="needaction_pending"/>
<templates>
<t t-name="kanban-box">
<div t-attf-class="oe_kanban_color_#{kanban_getcolor(record.color.raw_value)} oe_kanban_card oe_kanban_global_click">
@@ -568,6 +650,11 @@
<group>
<field name="name" string="Tasks"/>
<separator orientation="vertical"/>
+ <filter icon="terp-mail-message-new"
+ string="Inbox" help="Unread messages"
+ name="needaction_pending"
+ domain="[('needaction_pending','=',True)]"/>
+ <separator orientation="vertical"/>
<filter name="draft" string="New" domain="[('state','=','draft')]" help="New Tasks" icon="terp-check"/>
<filter name="open" string="In Progress" domain="[('state','=','open')]" help="In Progress Tasks" icon="terp-camera_test"/>
<filter string="Pending" domain="[('state','=','pending')]" context="{'show_delegated':False}" help="Pending Tasks" icon="terp-gtk-media-pause"/>
diff --git a/addons/project_issue/project_issue.py b/addons/project_issue/project_issue.py
index 009f2b8ecf7..fea7a64d2b7 100644
--- a/addons/project_issue/project_issue.py
+++ b/addons/project_issue/project_issue.py
@@ -467,87 +467,68 @@ class project_issue(base_stage, osv.osv):
# -------------------------------------------------------
def message_new(self, cr, uid, msg, custom_values=None, context=None):
- """Automatically called when new email message arrives"""
- if context is None:
- context = {}
- subject = msg.get('subject') or _('No Title')
- body = msg.get('body_text')
- msg_from = msg.get('from')
- priority = msg.get('priority')
- vals = {
- 'name': subject,
- 'email_from': msg_from,
+ """ Overrides mail_thread message_new that is called by the mailgateway
+ through message_process.
+ This override updates the document according to the email.
+ """
+ if custom_values is None: custom_values = {}
+ if context is None: context = {}
+ context['state_to'] = 'draft'
+
+ custom_values.update({
+ 'name': msg.get('subject') or _("No Subject"),
+ 'description': msg.get('body_text'),
+ 'email_from': msg.get('from'),
'email_cc': msg.get('cc'),
- 'description': body,
'user_id': False,
- }
- if priority:
- vals['priority'] = priority
- vals.update(self.message_partner_by_email(cr, uid, msg_from))
- context.update({'state_to' : 'draft'})
-
- if custom_values and isinstance(custom_values, dict):
- vals.update(custom_values)
+ })
+ if msg.get('priority'):
+ custom_values['priority'] = msg.get('priority')
+ custom_values.update(self.message_partner_by_email(cr, uid, msg.get('from'), context=context))
- res_id = self.create(cr, uid, vals, context)
- self.message_append_dict(cr, uid, [res_id], msg, context=context)
+ res_id = super(project_issue, self).message_new(cr, uid, msg, custom_values=custom_values, context=context)
self.convert_to_bug(cr, uid, [res_id], context=context)
return res_id
- def message_update(self, cr, uid, ids, msg, vals=None, default_act='pending', context=None):
- if vals is None:
- vals = {}
-
+ def message_update(self, cr, uid, ids, msg, update_vals=None, context=None):
+ """ Overrides mail_thread message_update that is called by the mailgateway
+ through message_process.
+ This method updates the document according to the email.
+ """
if isinstance(ids, (str, int, long)):
ids = [ids]
+ if update_vals is None: update_vals = {}
- vals.update({
- 'description': msg['body_text']
- })
- if msg.get('priority', False):
- vals['priority'] = msg.get('priority')
-
+ # Update doc values according to the message
+ update_vals['description'] = msg.get('body_text', '')
+ if msg.get('priority'):
+ update_vals['priority'] = msg.get('priority')
+ # Parse 'body_text' to find values to update
maps = {
'cost': 'planned_cost',
'revenue': 'planned_revenue',
- 'probability': 'probability'
+ 'probability': 'probability',
}
-
- # Reassign the 'open' state to the case if this one is in pending or done
- for record in self.browse(cr, uid, ids, context=context):
- if record.state in ('pending', 'done'):
- self.case_set(cr, uid, ids, 'open', {}, context=context)
-
- vls = { }
- for line in msg['body_text'].split('\n'):
+ for line in msg.get('body_text', '').split('\n'):
line = line.strip()
res = tools.misc.command_re.match(line)
if res and maps.get(res.group(1).lower(), False):
key = maps.get(res.group(1).lower())
- vls[key] = res.group(2).lower()
+ update_vals[key] = res.group(2).lower()
- vals.update(vls)
- res = self.write(cr, uid, ids, vals)
- self.message_append_dict(cr, uid, ids, msg, context=context)
- return res
+ return super(project_issue, self).message_update(cr, uid, ids, update_vals=update_vals, context=context)
# -------------------------------------------------------
# OpenChatter methods and notifications
# -------------------------------------------------------
- def get_needaction_user_ids(self, cr, uid, ids, context=None):
- result = dict.fromkeys(ids, [])
- for obj in self.browse(cr, uid, ids, context=context):
- if obj.state == 'draft' and obj.user_id:
- result[obj.id] = [obj.user_id.id]
- return result
-
def message_get_subscribers(self, cr, uid, ids, context=None):
- sub_ids = self.message_get_subscribers_ids(cr, uid, ids, context=context);
+ """ Override to add responsible user. """
+ user_ids = super(project_issue, self).message_get_subscribers(cr, uid, ids, context=context)
for obj in self.browse(cr, uid, ids, context=context):
- if obj.user_id:
- sub_ids.append(obj.user_id.id)
- return self.pool.get('res.users').read(cr, uid, sub_ids, context=context)
+ if obj.user_id and not obj.user_id.id in user_ids:
+ user_ids.append(obj.user_id.id)
+ return user_ids
def stage_set_send_note(self, cr, uid, ids, stage_id, context=None):
""" Override of the (void) default notification method. """
diff --git a/addons/project_issue/project_issue_demo.xml b/addons/project_issue/project_issue_demo.xml
index a213cb02c2e..b3fb4582cf2 100644
--- a/addons/project_issue/project_issue_demo.xml
+++ b/addons/project_issue/project_issue_demo.xml
@@ -227,5 +227,10 @@
<field name="stage_id" ref="project.project_tt_specification"/>
</record>
+ <!-- Call Function to set some issues as Unread -->
+ <function model="project.issue" name="message_mark_as_unread"
+ eval="[ ref('crm_case_improvereportsinhrms0'), ref('crm_case_createnewobject0')], {}"
+ />
+
</data>
</openerp>
diff --git a/addons/project_issue/project_issue_view.xml b/addons/project_issue/project_issue_view.xml
index 87a5a4f1f40..cdcea2cbb62 100644
--- a/addons/project_issue/project_issue_view.xml
+++ b/addons/project_issue/project_issue_view.xml
@@ -4,6 +4,43 @@
<menuitem id="menu_project_confi" name="Issues" parent="base.menu_definitions" sequence="2"/>
+ <!-- Project issue Read/Unread actions -->
+ <record id="actions_server_project_issue_unread" model="ir.actions.server">
+ <field name="name">Mark unread</field>
+ <field name="condition">True</field>
+ <field name="type">ir.actions.server</field>
+ <field name="model_id" ref="model_project_issue"/>
+ <field name="state">code</field>
+ <field name="code">self.message_check_and_set_unread(cr, uid, context.get('active_ids'), context=context)</field>
+ </record>
+ <record id="action_project_issue_unread" model="ir.values">
+ <field name="name">action_project_issue_unread</field>
+ <field name="action_id" ref="actions_server_project_issue_unread"/>
+ <field name="value" eval="'ir.actions.server,' + str(ref('actions_server_project_issue_unread'))" />
+ <field name="key">action</field>
+ <field name="model_id" ref="model_project_issue" />
+ <field name="model">project.issue</field>
+ <field name="key2">client_action_multi</field>
+ </record>
+
+ <record id="actions_server_project_issue_read" model="ir.actions.server">
+ <field name="name">Mark read</field>
+ <field name="condition">True</field>
+ <field name="type">ir.actions.server</field>
+ <field name="model_id" ref="model_project_issue"/>
+ <field name="state">code</field>
+ <field name="code">self.message_check_and_set_read(cr, uid, context.get('active_ids'), context=context)</field>
+ </record>
+ <record id="action_project_issue_read" model="ir.values">
+ <field name="name">action_project_issue_read</field>
+ <field name="action_id" ref="actions_server_project_issue_read"/>
+ <field name="value" eval="'ir.actions.server,' + str(ref('actions_server_project_issue_read'))" />
+ <field name="key">action</field>
+ <field name="model_id" ref="model_project_issue" />
+ <field name="model">project.issue</field>
+ <field name="key2">client_action_multi</field>
+ </record>
+
<record model="ir.ui.view" id="project_issue_version_search_view">
<field name="name">Issue Version</field>
<field name="model">project.issue.version</field>
@@ -159,9 +196,13 @@
<group>
<field name="name" string="Issue" filter_domain="['|', '|',('partner_id','ilike',self),('email_from','ilike',self),('name','ilike',self)]"/>
<separator orientation="vertical"/>
+ <filter icon="terp-mail-message-new"
+ string="Inbox" help="Unread messages"
+ name="needaction_pending"
+ domain="[('needaction_pending','=',True)]"/>
+ <separator orientation="vertical"/>
<filter string="New" icon="terp-document-new" domain="[('state','=','draft')]" help="New Issues"/>
<filter string="To Do" domain="[('state','=','open')]" help="To Do Issues" icon="terp-check"/>
- <filter string="Pending" domain="[('state','=','pending')]" help="Pending Issues" icon="terp-gtk-media-pause"/>
<filter string="Unassigned Issues" domain="[('user_id','=',False)]" help="Unassigned Issues" icon="terp-personal-" />
<separator orientation="vertical"/>
<field name="user_id"/>
diff --git a/addons/project_long_term/project_long_term_view.xml b/addons/project_long_term/project_long_term_view.xml
index ec575a514c1..a98e9088402 100644
--- a/addons/project_long_term/project_long_term_view.xml
+++ b/addons/project_long_term/project_long_term_view.xml
@@ -152,23 +152,23 @@
<field name="state" widget="statusbar" statusbar_visible="draft,open,done" statusbar_colors='{"pending":"blue"}'/>
</header>
<sheet>
- <label for="name" class="oe_edit_only"/>
- <h1><field name="name"/></h1>
- <label for="project_id" class="oe_edit_only"/>
- <h2>
- <field name="project_id" on_change="onchange_project(project_id)" colspan="3"/>
- </h2>
+ <div class="oe_title">
+ <label for="name" class="oe_edit_only"/>
+ <h1><field name="name"/></h1>
+ <label for="project_id" class="oe_edit_only"/>
+ <h2>
+ <field name="project_id" on_change="onchange_project(project_id)" colspan="3"/>
+ </h2>
+ </div>
<group>
- <group>
- <field name="date_start"/>
- <field name="date_end"/>
- </group><group>
- <label for="duration"/>
- <div>
- <field name="duration" class="oe_inline"/>
- <field name="product_uom"/>
- </div>
- </group>
+ <label for="date_start" string="Duration"/>
+ <div>
+ <div>
+ <field name="duration" class="oe_inline"/>
+ <field name="product_uom" class="oe_inline"/>
+ </div>
+ <field name="date_start" class="oe_inline"/><label string=" - " class="oe_inline"/><field name="date_end" class="oe_inline"/>
+ </div>
</group>
<notebook>
<page string="Planning of Users">
diff --git a/addons/project_mailgate/project_mailgate.py b/addons/project_mailgate/project_mailgate.py
index a36366f450e..0ca2687b7f0 100644
--- a/addons/project_mailgate/project_mailgate.py
+++ b/addons/project_mailgate/project_mailgate.py
@@ -19,30 +19,35 @@
#
##############################################################################
+import binascii
from osv import fields, osv
from tools.translate import _
import tools
-import binascii
-
class project_tasks(osv.osv):
_inherit = 'project.task'
def message_new(self, cr, uid, msg, custom_values=None, context=None):
- res_id = super(project_tasks,self).message_new(cr, uid, msg, custom_values=custom_values, context=context)
- subject = msg.get('subject')
- msg_from = msg.get('from')
- data = {
+ """ Overrides mail_thread message_new that is called by the mailgateway
+ through message_process.
+ This override updates the document according to the email.
+ """
+ if custom_values is None: custom_values = {}
+ custom_values.update({
'name': subject,
'planned_hours': 0.0,
- }
- data.update(self.message_partner_by_email(cr, uid, msg_from))
- self.write(cr, uid, [res_id], data, context)
- return res_id
-
- def message_update(self, cr, uid, ids, msg, data={}, default_act='pending'):
- act = 'do_'+default_act
+ 'subject': msg.get('subject'),
+ })
+ custom_values.update(self.message_partner_by_email(cr, uid, msg.get('from', False), context=context))
+ return super(project_tasks,self).message_new(cr, uid, msg, custom_values=custom_values, context=context)
+ def message_update(self, cr, uid, ids, msg, update_vals=None, context=None):
+ """ Overrides mail_thread message_update that is called by the mailgateway
+ through message_process.
+ This method updates the task according to the email.
+ """
+ if update_vals is None: update_vals = {}
+ act = False
maps = {
'cost':'planned_hours',
}
@@ -54,17 +59,15 @@ class project_tasks(osv.osv):
field = maps.get(match)
if field:
try:
- data[field] = float(res.group(2).lower())
+ update_vals[field] = float(res.group(2).lower())
except (ValueError, TypeError):
pass
elif match.lower() == 'state' \
and res.group(2).lower() in ['cancel','close','draft','open','pending']:
act = 'do_%s' % res.group(2).lower()
-
- self.write(cr, uid, ids, data, context=context)
- getattr(self,act)(cr, uid, ids, context=context)
- self.message_append_note(cr, uid, [res_id], body=msg, context=context)
- return True
+ if act:
+ getattr(self,act)(cr, uid, ids, context=context)
+ return super(project_tasks,self).message_update(cr, uid, msg, update_vals=update_vals, context=context)
def message_thread_followers(self, cr, uid, ids, context=None):
followers = super(project_tasks,self).message_thread_followers(cr, uid, ids, context=context)
@@ -74,5 +77,5 @@ class project_tasks(osv.osv):
followers[task.id] = filter(None, task_followers)
return followers
-project_tasks()
+
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
diff --git a/addons/purchase/purchase.py b/addons/purchase/purchase.py
index 775aebfaa8f..e74ca83a92b 100644
--- a/addons/purchase/purchase.py
+++ b/addons/purchase/purchase.py
@@ -733,10 +733,10 @@ class purchase_order(osv.osv):
# --------------------------------------
def get_needaction_user_ids(self, cr, uid, ids, context=None):
- result = dict.fromkeys(ids, [])
+ result = super(purchase_order, self).get_needaction_user_ids(cr, uid, ids, context=context)
for obj in self.browse(cr, uid, ids, context=context):
if obj.state == 'approved':
- result[obj.id] = [obj.validator.id]
+ result[obj.id].append(obj.validator.id)
return result
def create_send_note(self, cr, uid, ids, context=None):
diff --git a/addons/purchase/purchase_view.xml b/addons/purchase/purchase_view.xml
index d89827d4812..d5a9b93f9ea 100644
--- a/addons/purchase/purchase_view.xml
+++ b/addons/purchase/purchase_view.xml
@@ -52,10 +52,10 @@
action="base.action_partner_category_form" id="menu_partner_categories_in_form" name="Partner Categories"
parent="purchase.menu_purchase_partner_cat" groups="base.group_no_one"/>
- <!--supplier menu-->
+ <!--supplier menu-->
<menuitem id="base.menu_procurement_management_supplier_name" name="Suppliers"
- parent="menu_procurement_management"
- action="base.action_partner_supplier_form" sequence="15"/>
+ parent="menu_procurement_management"
+ action="base.action_partner_supplier_form" sequence="15"/>
<!--Inventory control-->
<menuitem id="menu_procurement_management_inventory" name="Receive Products"
@@ -65,9 +65,9 @@
<menuitem action="stock.action_reception_picking_move" id="menu_action_picking_tree_in_move"
parent="menu_procurement_management_inventory" sequence="11"/>
- <!--Invoice control-->
- <menuitem id="menu_procurement_management_invoice" name="Invoice Control"
- parent="base.menu_purchase_root" sequence="6"/>
+ <!--Invoice control-->
+ <menuitem id="menu_procurement_management_invoice" name="Invoice Control"
+ parent="base.menu_purchase_root" sequence="6"/>
<record id="action_invoice_pending" model="ir.actions.act_window">
<field name="name">Based on Draft Invoices</field>
@@ -101,6 +101,43 @@
<menuitem name="Products" id="menu_procurement_partner_contact_form" action="product.product_normal_action_puchased"
parent="menu_procurement_management_product"/>
+ <!-- Purchase order Read/Unread actions -->
+ <record id="actions_server_purchase_order_unread" model="ir.actions.server">
+ <field name="name">Mark unread</field>
+ <field name="condition">True</field>
+ <field name="type">ir.actions.server</field>
+ <field name="model_id" ref="model_purchase_order"/>
+ <field name="state">code</field>
+ <field name="code">self.message_check_and_set_unread(cr, uid, context.get('active_ids'), context=context)</field>
+ </record>
+ <record id="action_purchase_order_unread" model="ir.values">
+ <field name="name">action_purchase_order_unread</field>
+ <field name="action_id" ref="actions_server_purchase_order_unread"/>
+ <field name="value" eval="'ir.actions.server,' + str(ref('actions_server_purchase_order_unread'))" />
+ <field name="key">action</field>
+ <field name="model_id" ref="model_purchase_order" />
+ <field name="model">purchase.order</field>
+ <field name="key2">client_action_multi</field>
+ </record>
+
+ <record id="actions_server_purchase_order_read" model="ir.actions.server">
+ <field name="name">Mark read</field>
+ <field name="condition">True</field>
+ <field name="type">ir.actions.server</field>
+ <field name="model_id" ref="model_purchase_order"/>
+ <field name="state">code</field>
+ <field name="code">self.message_check_and_set_read(cr, uid, context.get('active_ids'), context=context)</field>
+ </record>
+ <record id="action_purchase_order_read" model="ir.values">
+ <field name="name">action_purchase_order_read</field>
+ <field name="action_id" ref="actions_server_purchase_order_read"/>
+ <field name="value" eval="'ir.actions.server,' + str(ref('actions_server_purchase_order_read'))" />
+ <field name="key">action</field>
+ <field name="model_id" ref="model_purchase_order" />
+ <field name="model">purchase.order</field>
+ <field name="key2">client_action_multi</field>
+ </record>
+
<record model="ir.ui.view" id="purchase_order_calendar">
<field name="name">purchase.order.calendar</field>
<field name="model">purchase.order</field>
@@ -133,7 +170,7 @@
<field name="arch" type="xml">
<form string="Purchase Order" version="7.0">
<header>
- <button name="purchase_confirm" states="draft,sent" string="Confirm Order" class="oe_highlight"/>
+ <button name="purchase_confirm" states="draft,sent" string="Confirm Quotation" class="oe_highlight"/>
<button name="wkf_send_rfq" states="draft" string="Send RFQ" type="object" context="{'send_rfq':True}"/>
<button name="wkf_send_rfq" states="confirmed" string="Resend Purchase Order" type="object" class="oe_highlight"/>
<button name="action_cancel" states="except_picking,except_invoice,wait" string="Cancel" type="object" />
@@ -148,11 +185,13 @@
<field name="state" widget="statusbar" statusbar_visible="draft,approved,done" statusbar_colors='{"except_picking":"red","except_invoice":"red","confirmed":"blue","wait":"blue"}' readonly="1"/>
</header>
<sheet>
- <h1>
- <label string="Draft Purchase Order " attrs="{'invisible': [('state','not in',('draft','sent'))]}"/>
- <label string="Purchase Order " attrs="{'invisible': [('state','in',('draft','sent'))]}"/>
- <field name="name" class="oe_inline" readonly="1"/>
- </h1>
+ <div class="oe_title">
+ <h1>
+ <label string="Quotation " attrs="{'invisible': [('state','not in',('draft','sent'))]}"/>
+ <label string="Purchase Order " attrs="{'invisible': [('state','in',('draft','sent'))]}"/>
+ <field name="name" class="oe_inline" readonly="1"/>
+ </h1>
+ </div>
<group>
<group>
<field name="partner_id" on_change="onchange_partner_id(partner_id)" context="{'search_default_supplier':1,'default_supplier':1,'default_customer':0}"/>
@@ -175,15 +214,17 @@
<field name="product_qty"/>
<field name="product_uom" groups="product.group_uom"/>
<field name="price_unit"/>
- <field name="price_subtotal"/>
+ <field name="price_subtotal"/>
</tree>
</field>
- <group class="oe_subtotal_footer">
+ <group class="oe_subtotal_footer oe_right">
<field name="amount_untaxed"/>
<field name="amount_tax"/>
- <field name="amount_total" class="oe_subtotal_footer_separator"/>
- <button name="button_dummy" states="draft" string="Compute" type="object" icon="gtk-execute"/>
- </group>
+ <div class="oe_subtotal_footer_separator oe_inline" colspan="2">
+ <button name="button_dummy" states="draft" string="Compute" type="object" icon="gtk-execute" class="oe_inline oe_left"/>
+ <field name="amount_total"/>
+ </div>
+ </group>
<div class="oe_clear"/>
<label for="notes"/>
<field name="notes"/>
@@ -191,23 +232,27 @@
<page string="Delivery &amp; Invoicing">
<group>
<group string="Delivery">
- <field name="dest_address_id" on_change="onchange_dest_address_id(dest_address_id)"/>
+ <field name="dest_address_id" string="Customer Address" on_change="onchange_dest_address_id(dest_address_id)"/>
<field name="minimum_planned_date"/>
<field name="location_id" groups="stock.group_locations"/>
- <field name="shipped"/>
+ <field name="shipped" groups="base.group_no_one"/>
+ </group>
+ <group>
+ <field name="validator" groups="base.group_no_one"/>
+ <field name="date_approve"/>
</group>
- <group string="Invoice Control">
+ </group>
+ <group string="Invoicing">
+ <group>
<field name="invoice_method"/>
- <field name="fiscal_position" widget="selection"/>
- <field name="invoiced" groups="base.group_no_one"/>
+ <field name="invoiced"/>
</group>
- <group groups="base.group_no_one" string="Purchase Control">
- <field name="validator"/>
- <field name="date_approve"/>
+ <group>
+ <field name="fiscal_position"/>
</group>
- <separator string="Invoices"/>
- <field name="invoice_ids" context="{'type':'in_invoice', 'journal_type':'purchase'}"/>
</group>
+ <separator string="Invoices"/>
+ <field name="invoice_ids" context="{'type':'in_invoice', 'journal_type':'purchase'}"/>
</page>
</notebook>
</sheet>
@@ -259,6 +304,11 @@
<group>
<field name="name" string="Reference"/>
<separator orientation="vertical"/>
+ <filter icon="terp-mail-message-new"
+ string="Inbox" help="Unread messages"
+ name="needaction_pending"
+ domain="[('needaction_pending','=',True)]"/>
+ <separator orientation="vertical"/>
<filter icon="terp-document-new" name="draft" string="Quotations" domain="[('state','=','draft')]" help="Purchase orders which are in draft state"/>
<filter icon="terp-check" name="approved" string="Purchase Orders" domain="[('state','not in',('draft','cancel'))]" help="Approved purchase orders"/>
<filter icon="terp-gtk-go-back-rtl" name="not_invoiced" string="Not Invoiced" domain="[('invoice_ids','=', False)]" help="Purchase orders that include lines not invoiced."/>
@@ -336,7 +386,6 @@
</record>
<menuitem action="purchase_form_action" id="menu_purchase_form_action" parent="menu_procurement_management" sequence="6"/>
-
<record id="purchase_order_line_form" model="ir.ui.view">
<field name="name">purchase.order.line.form</field>
<field name="model">purchase.order.line</field>
@@ -344,9 +393,6 @@
<field name="arch" type="xml">
<form string="Purchase Order Line" version="7.0">
<sheet>
- <label for="name" class="oe_edit_only"/>
- <h1><field name="name"/></h1>
- <label for="product_id" class="oe_edit_only"/>
<group>
<group>
<field name="product_id" on_change="onchange_product_id(parent.pricelist_id,product_id,product_qty,product_uom,parent.partner_id, parent.date_order,parent.fiscal_position,date_planned,name,price_unit,notes,context)"/>
@@ -356,23 +402,23 @@
<field name="product_uom" groups="product.group_uom" on_change="onchange_product_uom(parent.pricelist_id,product_id,product_qty,product_uom,parent.partner_id, parent.date_order,parent.fiscal_position,date_planned,name,price_unit,notes,context)" class="oe_inline"/>
</div>
<field name="price_unit"/>
+ <field name="taxes_id" widget="many2many_tags" domain="[('parent_id','=',False),('type_tax_use','!=','sale')]"/>
</group>
<group>
+ <field name="name"/>
<field name="date_planned" widget="date"/>
+ <field name="account_analytic_id" colspan="2" groups="purchase.group_analytic_accounting" domain="[('parent_id','!=',False)]" />
<field name="company_id" groups="base.group_multi_company" widget="selection"/>
- <field name="account_analytic_id" colspan="4" groups="purchase.group_analytic_accounting" domain="[('parent_id','!=',False)]" />
- <field name="taxes_id" widget="many2many_tags"
- domain="[('parent_id','=',False),('type_tax_use','!=','sale')]"/>
</group>
<group string="Notes" colspan="4">
- <field name="notes"/>
+ <field name="notes" nolabel="1" placeholder="Add a note on the purchase line..."/>
</group>
<group string="Invoices" colspan="4">
- <field name="invoiced"/>
- <field name="invoice_lines" nolabel="1" colspan="2"/>
+ <field name="invoice_lines" nolabel="1"/>
+ </group>
+ <group string="Stock Moves" colspan="4">
+ <field name="move_ids" nolabel="1"/>
</group>
- <separator string="Stock Moves"/>
- <field name="move_ids"/>
</group>
</sheet>
</form>
@@ -410,11 +456,11 @@
<label for="order_id" class="oe_edit_only"/>
<h1>
<field name="order_id" class="oe_inline"/>
+ <label string="," attrs="{'invisible':[('date_order','=',False)]}"/>
<field name="date_order" class="oe_inline"/>
</h1>
<label for="partner_id" class="oe_edit_only"/>
<h2><field name="partner_id"/></h2>
-
<group>
<group>
<field name="name"/>
diff --git a/addons/purchase/stock_view.xml b/addons/purchase/stock_view.xml
index df6ba9531f3..f9d6239e0a5 100644
--- a/addons/purchase/stock_view.xml
+++ b/addons/purchase/stock_view.xml
@@ -24,27 +24,6 @@
</field>
</record>
- <act_window
- domain="[('purchase_id', '=', active_id)]"
- id="act_purchase_order_2_stock_picking"
- name="Incoming Shipments"
- res_model="stock.picking.in"
- src_model="purchase.order"
- context="{'default_purchase_id': active_id, 'contact_display': 'partner', 'default_type': 'in'}" />
-
- <record id="action_picking_in_tree_view" model="ir.actions.act_window.view">
- <field eval="1" name="sequence"/>
- <field name="view_mode">tree</field>
- <field name="view_id" ref="stock.view_picking_in_tree"/>
- <field name="act_window_id" ref="act_purchase_order_2_stock_picking"/>
- </record>
- <record id="action_picking_in_form_view" model="ir.actions.act_window.view">
- <field eval="2" name="sequence"/>
- <field name="view_mode">form</field>
- <field name="view_id" ref="stock.view_picking_in_form"/>
- <field name="act_window_id" ref="act_purchase_order_2_stock_picking"/>
- </record>
-
<record id="stock_picking_in_inherit_purchase" model="ir.ui.view">
<field name="name">Incoming Picking Inherited</field>
<field name="model">stock.picking.in</field>
@@ -78,6 +57,7 @@
<separator orientation="vertical"/>
<field name="stock_journal_id" widget="selection"/>
<field name="company_id" widget="selection" groups="base.group_multi_company"/>
+ <field name="purchase_id" />
</group>
<newline/>
<group expand="0" string="Group By..." colspan="4" col="8">
@@ -96,7 +76,33 @@
</search>
</field>
</record>
-
+ <record id="act_purchase_order_2_stock_picking" model="ir.actions.act_window">
+ <field name="name">Incoming Shipments</field>
+ <field name="res_model">stock.picking.in</field>
+ <field name="type">ir.actions.act_window</field>
+ <field name="view_type">form</field>
+ <field name="view_mode">tree,form,calendar</field>
+ <field name="domain">[('type','=','in')]</field>
+ <field name="context">{'search_default_purchase_id': active_id,'default_type': 'in'}</field>
+ <field name="search_view_id" ref="view_picking_in_search_picking_to_invoice"/>
+ </record>
+
+ <record id="purchase_order_2_stock_picking" model="ir.ui.view">
+ <field name="name">Purchase Picking Inherited</field>
+ <field name="model">purchase.order</field>
+ <field name="type">form</field>
+ <field name="inherit_id" ref="purchase.purchase_order_form"/>
+ <field name="arch" type="xml">
+ <xpath expr="//div[contains(@class, 'oe_title')]" position="before">
+ <div class="oe_right oe_button_box" name="buttons">
+ <button type="action"
+ name="%(act_purchase_order_2_stock_picking)d"
+ string="Incoming Shipments" states="approved"/>
+ </div>
+ </xpath>
+ </field>
+ </record>
+
<record id="action_picking_tree4_picking_to_invoice" model="ir.actions.act_window">
<field name="name">Based on Incoming Shipments</field>
<field name="res_model">stock.picking</field>
diff --git a/addons/purchase_requisition/purchase_requisition.py b/addons/purchase_requisition/purchase_requisition.py
index ec7bc005d04..1b0c36b114b 100644
--- a/addons/purchase_requisition/purchase_requisition.py
+++ b/addons/purchase_requisition/purchase_requisition.py
@@ -183,13 +183,6 @@ class purchase_requisition(osv.osv):
return res
- def get_needaction_user_ids(self, cr, uid, ids, context=None):
- result = dict.fromkeys(ids, [])
- for obj in self.browse(cr, uid, ids, context=context):
- if (obj.state == 'draft') and obj.user_id:
- result[obj.id] = [obj.user_id.id]
- return result
-
def create_send_note(self, cr, uid, ids, context=None):
return self.message_append_note(cr, uid, ids, body=_("Purchase Requisition has been <b>created</b>."), context=context)
diff --git a/addons/purchase_requisition/purchase_requisition_view.xml b/addons/purchase_requisition/purchase_requisition_view.xml
index f6b63ebc77b..2cfde675b77 100644
--- a/addons/purchase_requisition/purchase_requisition_view.xml
+++ b/addons/purchase_requisition/purchase_requisition_view.xml
@@ -8,7 +8,7 @@
<field name="model">purchase.order</field>
<field name="inherit_id" ref="purchase.purchase_order_form"/>
<field name="arch" type="xml">
- <field name="shipped" position="after">
+ <field name="validator" position="before">
<field name="requisition_id"/>
</field>
</field>
@@ -41,12 +41,13 @@
</header>
<sheet>
<div class="oe_edit_only">
- <label for="name" class="oe_inline"/>,
+ <label for="name" class="oe_inline"/>
<label for="origin" class="oe_inline"/>
</div>
<h1>
- <field name="name" class="oe_inline"/>,
- <field name="origin" class="oe_inline"/>
+ <field name="name" class="oe_inline"/>
+ <label string="," attrs="{'invisible':[('origin','=',False)]}"/>
+ <field name="origin" class="oe_inline" placeholder="PO0025"/>
</h1>
<group>
<group>
diff --git a/addons/sale/res_partner_view.xml b/addons/sale/res_partner_view.xml
index 6a011749282..3a5799b2a65 100644
--- a/addons/sale/res_partner_view.xml
+++ b/addons/sale/res_partner_view.xml
@@ -13,7 +13,7 @@
</field>
<xpath expr="//h4[@class='oe_partner_heading']" position="after">
<a name="%(sale.act_res_partner_2_sale_order)d" type="action">
- <t t-if="record.sale_order_count.value">Sales(<t t-esc="record.sale_order_count.value" />)</t>
+ <t t-if="record.sale_order_count.value"><t t-esc="record.sale_order_count.value" /> Sales</t>
</a>
</xpath>
</field>
diff --git a/addons/sale/sale.py b/addons/sale/sale.py
index 353228df599..0a3ebbe72ac 100644
--- a/addons/sale/sale.py
+++ b/addons/sale/sale.py
@@ -1022,10 +1022,10 @@ class sale_order(osv.osv):
# ------------------------------------------------
def get_needaction_user_ids(self, cr, uid, ids, context=None):
- result = dict.fromkeys(ids, [])
+ result = super(sale_order, self).get_needaction_user_ids(cr, uid, ids, context=context)
for obj in self.browse(cr, uid, ids, context=context):
if (obj.state == 'manual' or obj.state == 'progress'):
- result[obj.id] = [obj.user_id.id]
+ result[obj.id].append(obj.user_id.id)
return result
def create_send_note(self, cr, uid, ids, context=None):
diff --git a/addons/sale/sale_view.xml b/addons/sale/sale_view.xml
index 239cffe481f..0ff648db09d 100644
--- a/addons/sale/sale_view.xml
+++ b/addons/sale/sale_view.xml
@@ -12,15 +12,16 @@
<form string="Sales Shop" version="7.0">
<label for="name" class="oe_edit_only"/>
<h1><field name="name"/></h1>
+ <label for="warehouse_id" class="oe_edit_only"/>
+ <h2><field name="warehouse_id" required="1"/></h2>
<group>
<group>
- <field name="warehouse_id" required="1" widget="selection"/>
- <field name="company_id" widget="selection" groups="base.group_multi_company"/>
- </group>
- <group>
<field name="payment_default_id"/>
<field domain="[('type','=','sale')]" name="pricelist_id" groups="product.group_sale_pricelist"/>
+ </group>
+ <group>
<field name="project_id" groups="analytic.group_analytic_accounting"/>
+ <field name="company_id" widget="selection" groups="base.group_multi_company"/>
</group>
</group>
</form>
@@ -53,6 +54,43 @@
<menuitem action="action_shop_form" id="menu_action_shop_form" parent="base.menu_base_config" sequence="35"
groups="stock.group_locations"/>
+ <!-- Sale order Read/Unread actions -->
+ <record id="actions_server_sale_order_unread" model="ir.actions.server">
+ <field name="name">Mark unread</field>
+ <field name="condition">True</field>
+ <field name="type">ir.actions.server</field>
+ <field name="model_id" ref="model_sale_order"/>
+ <field name="state">code</field>
+ <field name="code">self.message_check_and_set_unread(cr, uid, context.get('active_ids'), context=context)</field>
+ </record>
+ <record id="action_sale_order_unread" model="ir.values">
+ <field name="name">action_sale_order_unread</field>
+ <field name="action_id" ref="actions_server_sale_order_unread"/>
+ <field name="value" eval="'ir.actions.server,' + str(ref('actions_server_sale_order_unread'))" />
+ <field name="key">action</field>
+ <field name="model_id" ref="model_sale_order" />
+ <field name="model">sale.order</field>
+ <field name="key2">client_action_multi</field>
+ </record>
+
+ <record id="actions_server_sale_order_read" model="ir.actions.server">
+ <field name="name">Mark read</field>
+ <field name="condition">True</field>
+ <field name="type">ir.actions.server</field>
+ <field name="model_id" ref="model_sale_order"/>
+ <field name="state">code</field>
+ <field name="code">self.message_check_and_set_read(cr, uid, context.get('active_ids'), context=context)</field>
+ </record>
+ <record id="action_sale_order_read" model="ir.values">
+ <field name="name">action_sale_order_read</field>
+ <field name="action_id" ref="actions_server_sale_order_read"/>
+ <field name="value" eval="'ir.actions.server,' + str(ref('actions_server_sale_order_read'))" />
+ <field name="key">action</field>
+ <field name="model_id" ref="model_sale_order" />
+ <field name="model">sale.order</field>
+ <field name="key2">client_action_multi</field>
+ </record>
+
<record id="view_sale_order_calendar" model="ir.ui.view">
<field name="name">sale.order.calendar</field>
<field name="model">sale.order</field>
@@ -297,6 +335,11 @@
<search string="Search Sales Order">
<field name="name" string="Sales Order" filter_domain="['|',('name','ilike',self),('client_order_ref','ilike',self)]"/>
<separator orientation="vertical"/>
+ <filter icon="terp-mail-message-new"
+ string="Inbox" help="Unread messages"
+ name="needaction_pending"
+ domain="[('needaction_pending','=',True)]"/>
+ <separator orientation="vertical"/>
<filter icon="terp-document-new" string="Quotations" name="draft" domain="[('state','in',('draft','sent'))]" help="Sales Order that haven't yet been confirmed"/>
<filter icon="terp-check" string="Sales" name="sales" domain="[('state','in',('manual','progress'))]"/>
<filter icon="terp-dolar_ok!" string="To Invoice" domain="[('state','=','manual')]" help="Sales Order ready to be invoiced"/>
@@ -327,7 +370,7 @@
<field name="context">{"search_default_sales":1}</field>
<field name="help">Sales Orders help you manage quotations and orders from your customers. OpenERP suggests that you start by creating a quotation. Once it is confirmed, the quotation will be converted into a Sales Order. OpenERP can handle several types of products so that a sales order may trigger tasks, delivery orders, manufacturing orders, purchases and so on. Based on the configuration of the sales order, a draft invoice will be generated so that you just have to confirm it when you want to bill your customer.</field>
</record>
- <menuitem action="action_order_form" id="menu_sale_order" parent="base.menu_sales" sequence="4" groups="base.group_sale_salesman,base.group_sale_manager"/>
+ <menuitem action="action_order_form" id="menu_sale_order" parent="base.menu_sales" sequence="5" groups="base.group_sale_salesman,base.group_sale_manager"/>
<record id="action_order_tree2" model="ir.actions.act_window">
<field name="name">Sales in Exception</field>
@@ -370,7 +413,7 @@
<menuitem id="menu_sale_quotations"
action="action_order_tree5" parent="base.menu_sales"
- sequence="3"/>
+ sequence="4"/>
<record id="action_order_tree" model="ir.actions.act_window">
<field name="name">Old Quotations</field>
diff --git a/addons/share/static/src/css/share.css b/addons/share/static/src/css/share.css
index 997c070fe54..dbbb8bea943 100644
--- a/addons/share/static/src/css/share.css
+++ b/addons/share/static/src/css/share.css
@@ -1,7 +1,4 @@
-button.oe_share_mail {
- display: none;
-}
-
-a.oe_share_link, a.oe_share {
+/* Added invite button, hidden by default */
+button.oe_share_invite {
display: none;
}
diff --git a/addons/share/static/src/js/share.js b/addons/share/static/src/js/share.js
index e88616546a3..33aa3d1aab9 100644
--- a/addons/share/static/src/js/share.js
+++ b/addons/share/static/src/js/share.js
@@ -50,29 +50,46 @@ openerp.share = function(session) {
session.connection.share_flag.done(yes).fail(no);
}
+ /* Extend the Sidebar to add Share and Embed links in the 'More' menu */
session.web.Sidebar = session.web.Sidebar.extend({
- add_default_sections: function() {
- this._super();
+
+ start: function() {
var self = this;
+ this._super(this);
has_share(function() {
- self.add_items('other', [{
- label: 'Share',
- callback: self.on_sidebar_click_share,
- classname: 'oe_share',
- }]);
+ self.add_items('other', [
+ { label: 'Share',
+ callback: self.on_click_share,
+ classname: 'oe_share' },
+ { label: 'Embed',
+ callback: self.on_click_share_link,
+ classname: 'oe_share' },
+ ]);
});
},
- on_sidebar_click_share: function(item) {
+
+ on_click_share: function(item) {
+ var view = this.getParent()
+ launch_wizard(this, view, 'emails', false);
+ },
+
+ on_click_share_link: function(item) {
var view = this.getParent()
- launch_wizard(this, view);
+ launch_wizard(this, view, 'embedded', false);
},
});
+ /**
+ * Extends mail (Chatter widget)
+ * - show the 'invite' button' only we came on the form view through
+ * an action. We do this because 'invite' is based on the share
+ * mechanism, and it tries to share an action.
+ */
session.mail.RecordThread.include( {
start: function() {
start_res = this._super.apply(this, arguments);
if (has_action_id) {
- this.$element.find('button.oe_share_mail').show();
+ this.$element.find('button.oe_share_invite').show();
}
return start_res;
}
@@ -83,12 +100,7 @@ openerp.share = function(session) {
var self = this;
this.check_if_action_is_defined();
has_share(function() {
- self.$element.find('a.oe_share_link').click(self.on_click_share_link);
- self.$element.find('a.oe_share').click(self.on_click_share);
- self.$element.delegate('button.oe_share_mail', 'click', self.on_click_share_mail);
- }, function() {
- self.$element.find('a.oe_share_link').remove();
- self.$element.find('a.oe_share').remove();
+ self.$element.delegate('button.oe_share_invite', 'click', self.on_click_share_invite);
});
return this._super.apply(this, arguments);
},
@@ -96,23 +108,13 @@ openerp.share = function(session) {
check_if_action_is_defined: function() {
if (this.action && this.action.id) {
has_action_id = true;
- this.$element.find('a.oe_share_link').show();
- this.$element.find('a.oe_share').show();
}
else {
has_action_id = false;
}
},
-
- on_click_share_link: function(e) {
- e.preventDefault();
- launch_wizard(this, this.views[this.active_view].controller, 'embedded', false);
- },
- on_click_share: function(e) {
- e.preventDefault();
- launch_wizard(this, this.views[this.active_view].controller, 'emails', false);
- },
- on_click_share_mail: function(e) {
+
+ on_click_share_invite: function(e) {
e.preventDefault();
launch_wizard(this, this.views[this.active_view].controller, 'emails', true);
},
diff --git a/addons/share/static/src/xml/share.xml b/addons/share/static/src/xml/share.xml
index e51dc135c0b..1d9bc987afc 100644
--- a/addons/share/static/src/xml/share.xml
+++ b/addons/share/static/src/xml/share.xml
@@ -3,18 +3,11 @@
-->
<templates id="template" xml:space="preserve">
- <t t-extend="ViewManagerAction">
- <t t-jquery=".oe_shortcuts_toggle" t-operation="after">
- <a class="oe_share_link" href="#share_link" title="Link or embed..."><img t-att-src='_s + "/share/static/src/img/share.png"'/></a>
- <a class="oe_share" href="#share" title="Share with..."><img t-att-src='_s + "/share/static/src/img/share.png"'/></a>
- </t>
- </t>
-
- <t t-extend="RecordThread">
+ <!-- Extends Chatter widget in form view to add the invite button -->
+ <t t-extend="mail.RecordThread">
<t t-jquery="button.oe_mail_button_unfollow" t-operation="after">
- <button type="button" class="oe_share_mail oe_mail_button_mouseout">Invite</button>
+ <button type="button" class="oe_share_invite">Invite</button>
</t>
</t>
-
</templates>
diff --git a/addons/share/wizard/share_wizard.py b/addons/share/wizard/share_wizard.py
index 55d43453775..41871480f45 100644
--- a/addons/share/wizard/share_wizard.py
+++ b/addons/share/wizard/share_wizard.py
@@ -48,7 +48,7 @@ RANDOM_PASS_CHARACTERS = 'aaaabcdeeeefghjkmnpqrstuvwxyzAAAABCDEEEEFGHJKLMNPQRSTU
def generate_random_pass():
return ''.join(random.sample(RANDOM_PASS_CHARACTERS,10))
-class share_wizard(osv.osv_memory):
+class share_wizard(osv.TransientModel):
_name = 'share.wizard'
_description = 'Share Wizard'
@@ -177,9 +177,10 @@ class share_wizard(osv.osv_memory):
'name': fields.char('Share Title', size=64, required=True, help="Title for the share (displayed to users as menu and shortcut name)"),
'record_name': fields.char('Record name', size=128, help="Name of the shared record, if sharing a precise record"),
'message': fields.text("Personal Message", help="An optional personal message, to be included in the email notification."),
-
- 'embed_code': fields.function(_embed_code, type='text'),
- 'embed_option_title': fields.boolean("Display title"),
+ 'embed_code': fields.function(_embed_code, type='text', string='Code',
+ help="Embed this code in your documents to provide a link to the "\
+ "shared document."),
+ 'embed_option_title': fields.boolean('Display title'),
'embed_option_search': fields.boolean('Display search view'),
'embed_url': fields.function(_embed_url, string='Share URL', type='char', size=512, readonly=True),
}
@@ -903,8 +904,11 @@ class share_result_line(osv.osv_memory):
def _share_url(self, cr, uid, ids, _fieldname, _args, context=None):
result = dict.fromkeys(ids, '')
for this in self.browse(cr, uid, ids, context=context):
- data = dict(dbname=cr.dbname, login=this.login, password='')
- result[this.id] = this.share_wizard_id.share_url_template() % data
+ data = dict(dbname=cr.dbname, login=this.login, password=this.password)
+ if this.share_wizard_id and this.share_wizard_id.action_id:
+ data['action_id'] = this.share_wizard_id.action_id.id
+ ctx = dict(context, share_url_template_hash_arguments=['action_id'])
+ result[this.id] = this.share_wizard_id.share_url_template(context=ctx) % data
return result
_columns = {
diff --git a/addons/share/wizard/share_wizard_view.xml b/addons/share/wizard/share_wizard_view.xml
index ee5d4dd23b9..58734caa25b 100644
--- a/addons/share/wizard/share_wizard_view.xml
+++ b/addons/share/wizard/share_wizard_view.xml
@@ -39,17 +39,20 @@
<group>
<field name="user_type" invisible="1"/>
<field name="invite" invisible="1"/>
- </group>
+ </group>
<group>
- <group name="emails_group" attrs="{'invisible':['|', ('user_type', '!=', 'emails'), ('invite', '=', True)]}" string="Share with these People (one email per line)">
- <field colspan="2" nolabel="1" name="new_users" attrs="{'required':[('user_type','=','emails'), ('invite', '!=', True)]}"/>
+ <group colspan="4" name="emails_group" attrs="{'invisible':['|', ('user_type', '!=', 'emails'), ('invite', '=', True)]}"
+ string="Share with these People (one email per line)">
+ <field nolabel="1" name="new_users" attrs="{'required':[('user_type','=','emails'), ('invite', '!=', True)]}"/>
</group>
- <group name="email_lines" attrs="{'invisible':[('invite', '!=', True)]}" string="Share with these People (one email per line)">
+ <group colspan="4" name="email_lines" attrs="{'invisible':['|', ('invite', '!=', True), ('user_type', '!=', 'emails')]}"
+ string="Share with these People (one email per line)">
<field name="email_1"/>
<field name="email_2"/>
<field name="email_3"/>
</group>
- <group attrs="{'invisible':[('user_type', '=', 'embedded')]}" string="Include an Optional Personal Message">
+ <group colspan="4" attrs="{'invisible':[('user_type', '=', 'embedded')]}"
+ string="Include an Optional Personal Message">
<field name="message" colspan="2" nolabel="1"/>
</group>
<group attrs="{'invisible':[('invite', '=', True)]}" string="Sharing Options">
@@ -71,8 +74,8 @@
<field name="user_type" invisible="1"/>
<field name="access_mode" invisible="1"/>
</header>
- <group attrs="{'invisible':[('user_type','=','embedded')]}">
- <separator string="An email notification with instructions has been sent to the following people:"/>
+ <group attrs="{'invisible':[('user_type','=','embedded')]}"
+ string="An email notification with instructions has been sent to the following people:">
<field name="result_line_ids" nolabel="1" mode="tree">
<tree string="Summary">
<field name="login"/>
@@ -85,14 +88,17 @@
</field>
</group>
<group colspan="4" col="1" attrs="{'invisible':[('user_type','!=','embedded')]}">
- <separator string="Use this Link"/>
- <field name="embed_url"/>
- <separator string="Or insert the following code where you want to embed your documents"/>
- <group string="Options">
- <field name="embed_option_title" on_change="onchange_embed_options(embed_option_title, embed_option_search)"/>
- <field name="embed_option_search" on_change="onchange_embed_options(embed_option_title, embed_option_search)" attrs="{'invisible':[('access_mode','=','readonly')]}"/>
+ <group string="Use this link">
+ <field name="embed_url"/>
+ </group>
+ <group string="Or insert the following code where you want to embed your documents">
<field name="embed_code"/>
</group>
+ <group string="Embedded code options">
+ <field name="embed_option_title" on_change="onchange_embed_options(embed_option_title, embed_option_search)"/>
+ <field name="embed_option_search" on_change="onchange_embed_options(embed_option_title, embed_option_search)"
+ attrs="{'invisible':[('access_mode','=','readonly')]}"/>
+ </group>
</group>
</form>
diff --git a/addons/stock/product_view.xml b/addons/stock/product_view.xml
index e28eb0644d0..04a0959739a 100644
--- a/addons/stock/product_view.xml
+++ b/addons/stock/product_view.xml
@@ -21,14 +21,14 @@
<field name="type">form</field>
<field name="inherit_id" ref="product.product_category_form_view"/>
<field name="arch" type="xml">
- <form position="inside" version="7.0">
- <group string="Accounting Stock Properties">
+ <data>
+ <xpath expr="/form/sheet//group[@name='account_stock_property']" position="inside">
<field name="property_stock_account_input_categ" domain="[('type','&lt;&gt;','view'),('type','&lt;&gt;','consolidation')]"/>
<field name="property_stock_account_output_categ" domain="[('type','&lt;&gt;','view'),('type','&lt;&gt;','consolidation')]"/>
<field name="property_stock_valuation_account_id" domain="[('type','&lt;&gt;','view'), ('type','&lt;&gt;','consolidation')]"/>
<field name="property_stock_journal"/>
- </group>
- </form>
+ </xpath>
+ </data>
</field>
</record>
diff --git a/addons/stock/stock_view.xml b/addons/stock/stock_view.xml
index 3107f0c9f14..b9a55841c0a 100644
--- a/addons/stock/stock_view.xml
+++ b/addons/stock/stock_view.xml
@@ -790,7 +790,7 @@
<button name="force_assign" states="confirmed" string="Force Availability" type="object" icon="gtk-jump-to"/>
<button name="action_confirm" states="draft" string="Confirm" type="object" icon="gtk-apply"/>
<button name="cancel_assign" states="assigned" string="Cancel Availability" type="object" icon="gtk-find"/>
- <field name="state" widget="statusbar" status_visible="draft,assigned,done" />
+ <field name="state" widget="statusbar" statusbar_visible="draft,assigned,done" />
</header>
<group>
<group string="Move Information">
@@ -1419,50 +1419,47 @@
<label for="product_qty"/>
<div>
<field name="product_qty" on_change="onchange_quantity(product_id, product_qty, product_uom, product_uos)" class="oe_inline"/>
- <field name="product_uom" string="Unit Of Measure" groups="product.group_uom" class="oe_inline"/>
+ <field name="product_uom" string="Unit Of Measure" groups="product.group_uom" class="oe_inline"/>
<button name="%(stock.move_scrap)d"
string="Scrap" type="action"
icon="gtk-convert" context="{'scrap': True}"
- states="draft,waiting,confirmed,assigned"/>
+ states="draft,waiting,confirmed,assigned" colspan="1"/>
</div>
<label for="product_uos_qty"/>
<div>
<field name="product_uos_qty" groups="product.group_uos" class="oe_inline"
on_change="onchange_uos_quantity(product_id, product_uos_qty, product_uos, product_uom)"/>
- <field name="product_uos" groups="product.group_uos"/>
+ <field name="product_uos" groups="product.group_uos" class="oe_inline"/>
</div>
<field name="name" string="Reason"/>
- </group>
- <group>
- <field name="picking_id"/>
- <field name="company_id" groups="base.group_multi_company" widget="selection"/>
+ <field name="company_id" groups="base.group_multi_company"/>
<field name="location_id" groups="stock.group_locations"/>
<field name="location_dest_id" groups="stock.group_locations"/>
<field name="partner_id" groups="stock.group_locations"/>
- <field name="create_date" groups="base.group_no_one" />
- <field name="date" groups="base.group_no_one" />
- <field name="date_expected" on_change="onchange_date(date,date_expected)"/>
</group>
-
<group>
- <label name="tracking_id"/>
+ <field name="picking_id"/>
+ <field name="create_date" groups="base.group_no_one" />
+ <field name="date" groups="base.group_no_one" string="Move Date"/>
+ <field name="date_expected" on_change="onchange_date(date,date_expected)"/>
+ <label for="tracking_id"/>
<div>
<field name="tracking_id" groups="stock.group_tracking_lot" class="oe_inline"/>
<button name="%(split_into)d" string="New Pack" type="action"
groups="product.group_stock_packaging"
icon="terp-stock_effects-object-colorize"
- states="draft,assigned,confirmed,done" colspan="1"/>
+ states="draft,assigned,confirmed,done" class="oe_inline"/>
</div>
- <label name="prodlot_id"/>
+ <label for="prodlot_id"/>
<div>
<field name="prodlot_id" groups="stock.group_production_lot"
context="{'location_id':location_id, 'product_id':product_id}"
domain="[('product_id','=?',product_id)]" class="oe_inline"
on_change="onchange_lot_id(prodlot_id,product_qty, location_id, product_id, product_uom)"/>
<button name="%(track_line)d"
- groups="stock.group_tracking_lot" class="oe_inline"
- states="draft,waiting,confirmed,assigned,done"
- string="Split" type="action" icon="terp-stock_effects-object-colorize"/>
+ groups="stock.group_tracking_lot" class="oe_inline"
+ states="draft,waiting,confirmed,assigned,done"
+ string="Split" type="action" icon="terp-stock_effects-object-colorize" />
</div>
</group>
</group>
@@ -1613,13 +1610,6 @@
src_model="product.product"/>
<act_window
- domain="[('move_lines','=',active_id)]"
- id="act_relate_picking"
- name="Related Picking"
- res_model="stock.picking"
- src_model="stock.move"/>
-
- <act_window
context="{'search_default_future': 1,'search_default_product_id': [active_id], 'default_product_id': active_id}"
domain="[('state','in',('waiting','confirmed','assigned'))]"
id="act_product_stock_move_futur_open"
diff --git a/addons/stock_planning/i18n/ja.po b/addons/stock_planning/i18n/ja.po
index 0cc365acbe0..25acc17968d 100644
--- a/addons/stock_planning/i18n/ja.po
+++ b/addons/stock_planning/i18n/ja.po
@@ -8,21 +8,21 @@ msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-02-08 00:37+0000\n"
-"PO-Revision-Date: 2012-06-30 06:17+0000\n"
+"PO-Revision-Date: 2012-07-03 03:46+0000\n"
"Last-Translator: Akira Hiyama <Unknown>\n"
"Language-Team: Japanese <ja@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2012-07-01 04:40+0000\n"
-"X-Generator: Launchpad (build 15520)\n"
+"X-Launchpad-Export-Date: 2012-07-03 05:36+0000\n"
+"X-Generator: Launchpad (build 15531)\n"
#. module: stock_planning
#: code:addons/stock_planning/wizard/stock_planning_createlines.py:73
#, python-format
msgid ""
"No forecasts for selected period or no products in selected category !"
-msgstr ""
+msgstr "選択した期間の予測がないか、選択された分類の中に製品がありません。"
#. module: stock_planning
#: help:stock.planning,stock_only:0
@@ -30,76 +30,76 @@ msgid ""
"Check to calculate stock location of selected warehouse only. If not "
"selected calculation is made for input, stock and output location of "
"warehouse."
-msgstr ""
+msgstr "選択された倉庫のみの在庫場所を計算するためにチェックします。選択しない場合の計算は倉庫の入力、在庫、出力場所によってなされます。"
#. module: stock_planning
#: field:stock.planning,maximum_op:0
msgid "Maximum Rule"
-msgstr ""
+msgstr "最大値のルール"
#. module: stock_planning
#: view:stock.planning:0
#: view:stock.sale.forecast:0
msgid "Group By..."
-msgstr ""
+msgstr "グループ化…"
#. module: stock_planning
#: help:stock.sale.forecast,product_amt:0
msgid ""
"Forecast value which will be converted to Product Quantity according to "
"prices."
-msgstr ""
+msgstr "予測値は価格により製品数量に変換されます。"
#. module: stock_planning
#: code:addons/stock_planning/stock_planning.py:626
#: code:addons/stock_planning/stock_planning.py:670
#, python-format
msgid "Incoming Left must be greater than 0 !"
-msgstr ""
+msgstr "入荷の残りは0より大きい必要があります。"
#. module: stock_planning
#: help:stock.planning,outgoing_before:0
msgid ""
"Planned Out in periods before calculated. Between start date of current "
"period and one day before start of calculated period."
-msgstr ""
+msgstr "計算される前に期間内で計画された出荷です。現在の期間の開始日と計算された期間の開始1日前の間です。"
#. module: stock_planning
#: help:stock.sale.forecast.createlines,warehouse_id:0
msgid ""
"Warehouse which forecasts will concern. If during stock planning you will "
"need sales forecast for all warehouses choose any warehouse now."
-msgstr ""
+msgstr "予測値が関連する倉庫。在庫計画の期間中に全ての倉庫の販売予測を必要とするなら、今、倉庫を選択して下さい。"
#. module: stock_planning
#: field:stock.planning,outgoing_left:0
msgid "Expected Out"
-msgstr ""
+msgstr "期待された出荷"
#. module: stock_planning
#: view:stock.sale.forecast:0
msgid " "
-msgstr ""
+msgstr " "
#. module: stock_planning
#: field:stock.planning,incoming_left:0
msgid "Incoming Left"
-msgstr ""
+msgstr "入荷残り"
#. module: stock_planning
#: view:stock.sale.forecast.createlines:0
msgid "Create Forecasts Lines"
-msgstr ""
+msgstr "予測行の作成"
#. module: stock_planning
#: help:stock.planning,outgoing:0
msgid "Quantity of all confirmed outgoing moves in calculated Period."
-msgstr ""
+msgstr "計算された期間の全ての確認された出荷移動の数量"
#. module: stock_planning
#: view:stock.period.createlines:0
msgid "Create Daily Periods"
-msgstr ""
+msgstr "1日の期間の作成"
#. module: stock_planning
#: view:stock.planning:0
@@ -109,45 +109,45 @@ msgstr ""
#: field:stock.sale.forecast,company_id:0
#: field:stock.sale.forecast.createlines,company_id:0
msgid "Company"
-msgstr ""
+msgstr "会社"
#. module: stock_planning
#: help:stock.planning,warehouse_forecast:0
msgid ""
"All sales forecasts for selected Warehouse of selected Product during "
"selected Period."
-msgstr ""
+msgstr "選択された期間の間で、選択された製品の倉庫を選択するための全ての販売予測"
#. module: stock_planning
#: view:stock.planning:0
msgid "Minimum Stock Rule Indicators"
-msgstr ""
+msgstr "最小在庫ルールの指標"
#. module: stock_planning
#: help:stock.sale.forecast.createlines,period_id:0
msgid "Period which forecasts will concern."
-msgstr ""
+msgstr "予測が関係する期間"
#. module: stock_planning
#: field:stock.planning,stock_only:0
msgid "Stock Location Only"
-msgstr ""
+msgstr "在庫場所のみ"
#. module: stock_planning
#: help:stock.planning,already_out:0
msgid ""
"Quantity which is already dispatched out of this warehouse in current period."
-msgstr ""
+msgstr "現在の期間でこの倉庫の既に割り当てられた数量"
#. module: stock_planning
#: field:stock.planning,incoming:0
msgid "Confirmed In"
-msgstr ""
+msgstr "入庫確認"
#. module: stock_planning
#: view:stock.planning:0
msgid "Current Period Situation"
-msgstr ""
+msgstr "現在期間の状況"
#. module: stock_planning
#: model:ir.actions.act_window,help:stock_planning.action_stock_period_createlines_form
@@ -156,11 +156,13 @@ msgid ""
"are independent of financial periods. If you need periods other than day-, "
"week- or month-based, you may also add then manually."
msgstr ""
+"このウィザードは在庫計画の期間の作成を手助けします。こららの期間は会計上の期間とは独立しています。日、週、月ベースの他の期間を必要とする場合は、手動で追加"
+"することができます。"
#. module: stock_planning
#: view:stock.period.createlines:0
msgid "Create Monthly Periods"
-msgstr ""
+msgstr "月次期間の作成"
#. module: stock_planning
#: model:ir.model,name:stock_planning.model_stock_period_createlines
@@ -170,46 +172,46 @@ msgstr ""
#. module: stock_planning
#: field:stock.planning,outgoing_before:0
msgid "Planned Out Before"
-msgstr ""
+msgstr "以前計画された出荷"
#. module: stock_planning
#: field:stock.planning.createlines,forecasted_products:0
msgid "All Products with Forecast"
-msgstr ""
+msgstr "予想を持つ全製品"
#. module: stock_planning
#: help:stock.planning,maximum_op:0
msgid "Maximum quantity set in Minimum Stock Rules for this Warehouse"
-msgstr ""
+msgstr "この倉庫のため、最大数量が最小在庫ルールで設定されます。"
#. module: stock_planning
#: view:stock.sale.forecast:0
msgid "Periods :"
-msgstr ""
+msgstr "期間:"
#. module: stock_planning
#: help:stock.planning,procure_to_stock:0
msgid ""
"Check to make procurement to stock location of selected warehouse. If not "
"selected procurement will be made into input location of warehouse."
-msgstr ""
+msgstr "選択された倉庫の在庫場所で調達を行うためにチェックします。選択しない場合は、倉庫の入力場所の中で調達が行われます。"
#. module: stock_planning
#: help:stock.planning,already_in:0
msgid ""
"Quantity which is already picked up to this warehouse in current period."
-msgstr ""
+msgstr "現在の期間に既にこの倉庫に集められた数量"
#. module: stock_planning
#: code:addons/stock_planning/wizard/stock_planning_forecast.py:60
#, python-format
msgid "No products in selected category !"
-msgstr ""
+msgstr "選択された分類の中に製品がありません。"
#. module: stock_planning
#: view:stock.sale.forecast:0
msgid "Stock and Sales Forecast"
-msgstr ""
+msgstr "在庫と販売予測"
#. module: stock_planning
#: model:ir.model,name:stock_planning.model_stock_sale_forecast
@@ -219,12 +221,12 @@ msgstr ""
#. module: stock_planning
#: field:stock.planning,to_procure:0
msgid "Planned In"
-msgstr ""
+msgstr "計画入庫"
#. module: stock_planning
#: field:stock.planning,stock_simulation:0
msgid "Stock Simulation"
-msgstr ""
+msgstr "在庫シミュレーション"
#. module: stock_planning
#: model:ir.model,name:stock_planning.model_stock_planning_createlines
@@ -237,60 +239,60 @@ msgid ""
"Confirmed incoming in periods before calculated (Including Already In). "
"Between start date of current period and one day before start of calculated "
"period."
-msgstr ""
+msgstr "計算する前に期間内で確認された入庫(既に入庫分を含む)です。現在の期間の開始日と計算された期間の開始1日前の間です。"
#. module: stock_planning
#: view:stock.sale.forecast:0
msgid "Search Sales Forecast"
-msgstr ""
+msgstr "販売予測の検索"
#. module: stock_planning
#: field:stock.sale.forecast,analyzed_period5_per_user:0
msgid "This User Period5"
-msgstr ""
+msgstr "このユーザの期間5"
#. module: stock_planning
#: help:stock.planning,history:0
msgid "History of procurement or internal supply of this planning line."
-msgstr ""
+msgstr "この計画行の調達、または内部供給の履歴"
#. module: stock_planning
#: help:stock.planning,company_forecast:0
msgid ""
"All sales forecasts for whole company (for all Warehouses) of selected "
"Product during selected Period."
-msgstr ""
+msgstr "選択した期間中に選択した商品の会社全体(全ての倉庫)ための全ての販売予測です。"
#. module: stock_planning
#: field:stock.sale.forecast,analyzed_period1_per_user:0
msgid "This User Period1"
-msgstr ""
+msgstr "このユーザの期間1"
#. module: stock_planning
#: field:stock.sale.forecast,analyzed_period3_per_user:0
msgid "This User Period3"
-msgstr ""
+msgstr "このユーザの期間3"
#. module: stock_planning
#: view:stock.planning:0
msgid "Stock Planning"
-msgstr ""
+msgstr "在庫計画"
#. module: stock_planning
#: field:stock.planning,minimum_op:0
msgid "Minimum Rule"
-msgstr ""
+msgstr "最小値のルール"
#. module: stock_planning
#: view:stock.planning:0
msgid "Procure Incoming Left"
-msgstr ""
+msgstr "調達入庫の残り"
#. module: stock_planning
#: view:stock.planning.createlines:0
#: view:stock.sale.forecast.createlines:0
msgid "Create"
-msgstr ""
+msgstr "作成"
#. module: stock_planning
#: model:ir.actions.act_window,name:stock_planning.action_view_stock_planning_form
@@ -298,12 +300,12 @@ msgstr ""
#: model:ir.ui.menu,name:stock_planning.menu_stock_planning_manual
#: view:stock.planning:0
msgid "Master Procurement Schedule"
-msgstr ""
+msgstr "マスター調達スケジュール"
#. module: stock_planning
#: field:stock.planning,line_time:0
msgid "Past/Future"
-msgstr ""
+msgstr "過去 / 将来"
#. module: stock_planning
#: view:stock.period:0
diff --git a/addons/wiki/wiki_view.xml b/addons/wiki/wiki_view.xml
index 840692e1f01..700585122d3 100644
--- a/addons/wiki/wiki_view.xml
+++ b/addons/wiki/wiki_view.xml
@@ -129,16 +129,22 @@
<field name="arch" type="xml">
<form string="Wiki" version="7.0">
<sheet>
- <group col="6" colspan="4">
- <field name="name" colspan="6"/>
- <field name="group_id" string="Topic" on_change="onchange_group_id(group_id, text_area)"/>
- <field name="parent_id" domain="[('group_id','=',group_id)]"/>
- <field name="section"/>
+ <div class="oe_title">
+ <label for="name" class="oe_edit_only"/>
+ <h1><field name="name" select="1" /></h1>
+ <label for="group_id" class="oe_edit_only"/>
+ <h2>
+ <field name="group_id" string="Topic" select="1" on_change="onchange_group_id(group_id, text_area)"/></h2>
+ </div>
+ <group>
+ <group>
+ <field name="parent_id" domain="[('group_id','=',group_id)]"/>
+ <field name="section"/>
+ </group>
</group>
<notebook colspan="4">
<page string="Content">
- <separator colspan="4" string="Page Content"/>
- <field name="text_area" nolabel="1" colspan="4" widget="text_wiki"/>
+ <field name="text_area" nolabel="1" colspan="4" widget="text_wiki" placeholder="Wiki Content"/>
</page>
</notebook>
<group col="2" colspan="2" groups="base.group_no_one">