diff options
| author | Antony Lesuisse <al@openerp.com> | 2012-09-05 02:19:12 +0200 |
|---|---|---|
| committer | Antony Lesuisse <al@openerp.com> | 2012-09-05 02:19:12 +0200 |
| commit | 5f6b0609bb4e807aba1dc509e9848e30a4388da5 (patch) | |
| tree | fc4407b9e847f98a365ca4ecb6298117a3b4a742 | |
| parent | ad9e544f047eb8759ab7b362e6e81042eba04c3a (diff) | |
| parent | 709331f682168458b0a2ba6d7e200a147244d775 (diff) | |
[MERGE] trunk
bzr revid: al@openerp.com-20120905001912-octegprwjv76uor8
84 files changed, 6598 insertions, 686 deletions
diff --git a/addons/account/account_invoice.py b/addons/account/account_invoice.py index 7bc9ceaaf61..78ef090ebbe 100644 --- a/addons/account/account_invoice.py +++ b/addons/account/account_invoice.py @@ -1361,10 +1361,16 @@ class account_invoice_line(osv.osv): 'company_id': fields.related('invoice_id','company_id',type='many2one',relation='res.company',string='Company', store=True, readonly=True), 'partner_id': fields.related('invoice_id','partner_id',type='many2one',relation='res.partner',string='Partner',store=True) } + + def _default_account_id(self, cr, uid, ids, context=None): + prop = self.pool.get('ir.property').get(cr, uid, 'property_account_income_categ', 'product.category', context=context) + return prop and prop.id or False + _defaults = { 'quantity': 1, 'discount': 0.0, 'price_unit': _price_unit_default, + 'account_id': _default_account_id, } def fields_view_get(self, cr, uid, view_id=None, view_type='form', context=None, toolbar=False, submenu=False): @@ -1473,10 +1479,11 @@ class account_invoice_line(osv.osv): prod = self.pool.get('product.product').browse(cr, uid, product, context=context) prod_uom = self.pool.get('product.uom').browse(cr, uid, uom, context=context) if prod.uom_id.category_id.id != prod_uom.category_id.id: - warning = { + warning = { 'title': _('Warning!'), 'message': _('The selected unit of measure is not compatible with the unit of measure of the product.') - } + } + res['value'].update({'uos_id': prod.uom_id.id}) return {'value': res['value'], 'warning': warning} return res diff --git a/addons/account/account_invoice_view.xml b/addons/account/account_invoice_view.xml index 143c5514141..610485ec3a0 100644 --- a/addons/account/account_invoice_view.xml +++ b/addons/account/account_invoice_view.xml @@ -191,17 +191,23 @@ <page string="Invoice"> <field context="{'partner_id': partner_id, 'price_type': 'price_type' in dir() and price_type or False, 'type': type}" name="invoice_line"> <tree string="Invoice lines" editable="bottom"> - <field name="product_id" on_change="product_id_change(product_id, uos_id, quantity, name, parent.type, parent.partner_id, parent.fiscal_position, price_unit, parent.currency_id, context, parent.company_id)"/> - <field domain="[('company_id', '=', parent.company_id), ('journal_id', '=', parent.journal_id), ('type', '<>', 'view')]" name="account_id" on_change="onchange_account_id(product_id,parent.partner_id,parent.type,parent.fiscal_position,account_id)" groups="base.group_account_user"/> - <field name="invoice_line_tax_id" view_mode="2" context="{'type':parent.type}" domain="[('parent_id','=',False)]"/> - <field domain="[('type','<>','view'), ('company_id', '=', parent.company_id), ('parent_id', '!=', False)]" name="account_analytic_id" groups="analytic.group_analytic_accounting"/> + <field name="product_id" + on_change="product_id_change(product_id, uos_id, quantity, name, parent.type, parent.partner_id, parent.fiscal_position, price_unit, parent.currency_id, context, parent.company_id)"/> + <field name="name"/> + <field name="company_id" groups="base.group_multi_company" readonly="1"/> + <field name="account_id" groups="account.group_account_user" + domain="[('company_id', '=', parent.company_id), ('journal_id', '=', parent.journal_id), ('type', '!=', 'view')]" + on_change="onchange_account_id(product_id, parent.partner_id, parent.type, parent.fiscal_position,account_id)"/> + <field name="account_analytic_id" groups="analytic.group_analytic_accounting" + domain="[('type','!=','view'), ('company_id', '=', parent.company_id), ('parent_id', '!=', False)]"/> <field name="quantity"/> + <field name="uos_id" groups="product.group_uom" + on_change="uos_id_change(product_id, uos_id, quantity, name, parent.type, parent.partner_id, parent.fiscal_position, price_unit, parent.currency_id, context, parent.company_id)"/> <field name="price_unit"/> + <field name="discount" groups="sale.group_discount_per_so_line"/> + <field name="invoice_line_tax_id" widget="many2many_tags" context="{'type':parent.type}" + domain="[('parent_id','=',False),('company_id', '=', parent.company_id)]"/> <field name="price_subtotal"/> - <field domain="[('company_id', '=', parent.company_id), ('journal_id', '=', parent.journal_id), ('type', '<>', '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 class="oe_subtotal_footer oe_right"> @@ -342,17 +348,22 @@ <page string="Invoice Lines"> <field name="invoice_line" nolabel="1" widget="one2many_list" context="{'type': type}"> <tree string="Invoice Lines" editable="bottom"> - <field name="invoice_line_tax_id" invisible="1"/> - <field name="product_id" /> + <field name="product_id" + on_change="product_id_change(product_id, uos_id, quantity, name, parent.type, parent.partner_id, parent.fiscal_position, price_unit, parent.currency_id, context, parent.company_id)"/> <field name="name"/> + <field name="company_id" groups="base.group_multi_company" readonly="1"/> <field name="account_id" groups="account.group_account_user" - domain="[('company_id', '=', parent.company_id), ('journal_id', '=', parent.journal_id), ('type', '<>', 'view')]" + domain="[('company_id', '=', parent.company_id), ('journal_id', '=', parent.journal_id), ('type', '!=', 'view')]" on_change="onchange_account_id(product_id, parent.partner_id, parent.type, parent.fiscal_position,account_id)"/> + <field name="account_analytic_id" groups="analytic.group_analytic_accounting" + domain="[('type','!=','view'), ('company_id', '=', parent.company_id), ('parent_id', '!=', False)]"/> <field name="quantity"/> <field name="uos_id" groups="product.group_uom" on_change="uos_id_change(product_id, uos_id, quantity, name, parent.type, parent.partner_id, parent.fiscal_position, price_unit, parent.currency_id, context, parent.company_id)"/> <field name="price_unit"/> <field name="discount" groups="sale.group_discount_per_so_line"/> + <field name="invoice_line_tax_id" widget="many2many_tags" context="{'type':parent.type}" + domain="[('parent_id','=',False),('company_id', '=', parent.company_id)]"/> <field name="price_subtotal"/> </tree> </field> diff --git a/addons/account/project/project_view.xml b/addons/account/project/project_view.xml index e3b902a000f..77e987f24d4 100644 --- a/addons/account/project/project_view.xml +++ b/addons/account/project/project_view.xml @@ -186,19 +186,23 @@ <search string="Search Analytic Lines"> <field name="name" string="Analytic Line"/> <field name="date"/> - <filter name="sales" string="Sales" domain="[('journal_id.type','=','sale')]" icon="terp-camera_test" help="Analytic Journal Items related to a sale journal."/> - <filter name="purchases" string="Purchases" domain="[('journal_id.type','=','purchase')]" icon="terp-purchase" help="Analytic Journal Items related to a purchase journal."/> - <filter name="others" string="Others" domain="[('journal_id.type','in',('cash','general','situation'))]" icon="terp-folder-orange"/> + <filter name="sales" string="Sales" domain="[('journal_id.type','=','sale')]" help="Analytic Journal Items related to a sale journal."/> + <filter name="purchases" string="Purchases" domain="[('journal_id.type','=','purchase')]" help="Analytic Journal Items related to a purchase journal."/> + <filter name="others" string="Others" domain="[('journal_id.type','in',('cash','general','situation'))]"/> <separator/> - <filter string="My Entries" domain="[('user_id','=',uid)]" icon="terp-personal"/> + <filter string="My Entries" domain="[('user_id','=',uid)]"/> <field name="account_id"/> <field name="user_id"/> <group string="Group By..." expand="0"> - <filter string="Account" context="{'group_by':'account_id'}" icon="terp-folder-green"/> - <filter string="Journal" context="{'group_by':'journal_id'}" icon="terp-folder-orange"/> - <filter string="User" context="{'group_by':'user_id'}" icon="terp-personal"/> - <filter string="Fin.Account" context="{'group_by':'general_account_id'}" icon="terp-folder-green"/> - <filter string="Product" context="{'group_by':'product_id'}" icon="terp-accessories-archiver"/> + <filter string="Analytic Account" context="{'group_by':'account_id'}"/> + <filter string="Fin. Account" context="{'group_by':'general_account_id'}"/> + <filter string="Journal" context="{'group_by':'journal_id'}" name="group_journal"/> + <separator/> + <filter string="Product" context="{'group_by':'product_id'}"/> + <filter string="User" context="{'group_by':'user_id'}"/> + <separator/> + <filter string="Date" context="{'group_by':'date'}" name="group_date"/> + </group> </search> </field> @@ -357,16 +361,6 @@ action="action_account_analytic_journal_tree" id="account_analytic_journal_print" parent="account.next_id_40"/> - - <act_window - context="{'search_default_account_id': [active_id], 'search_default_user_id': False, 'default_account_id': active_id}" - id="act_acc_analytic_acc_5_report_hr_timesheet_invoice_journal" - name="All Analytic Entries" - res_model="account.analytic.line" - src_model="account.analytic.account" - view_mode="tree,form" - view_type="form"/> - <record id="view_account_journal_1" model="ir.ui.view"> <field name="name">account.journal.form.1</field> <field name="model">account.journal</field> diff --git a/addons/account_analytic_analysis/account_analytic_analysis_view.xml b/addons/account_analytic_analysis/account_analytic_analysis_view.xml index 63a8e6c7add..12d8fad1b95 100644 --- a/addons/account_analytic_analysis/account_analytic_analysis_view.xml +++ b/addons/account_analytic_analysis/account_analytic_analysis_view.xml @@ -6,12 +6,11 @@ Analytic Account form --> - <act_window - id="action_sales_order" - name="Sales Orders" - res_model="sale.order" - src_model="account.analytic.account" - /> + <record model="ir.actions.act_window" id="action_sales_order"> + <field name="name">Sales Orders</field> + <field name="res_model">sale.order</field> + <field name="src_model">account.analytic.account</field> + </record> <record id="account_analytic_account_form_form" model="ir.ui.view"> <field name="name">account.analytic.account.invoice.form.inherit</field> diff --git a/addons/account_analytic_plans/i18n/nb.po b/addons/account_analytic_plans/i18n/nb.po new file mode 100644 index 00000000000..27a6c0d9e24 --- /dev/null +++ b/addons/account_analytic_plans/i18n/nb.po @@ -0,0 +1,546 @@ +# Norwegian Bokmal 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-09-02 09:46+0000\n" +"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" +"Language-Team: Norwegian Bokmal <nb@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-09-03 05:21+0000\n" +"X-Generator: Launchpad (build 15890)\n" + +#. module: account_analytic_plans +#: view:analytic.plan.create.model:0 +msgid "" +"This distribution model has been saved.You will be able to reuse it later." +msgstr "" +"Denne fordeling modellen har vært lagret. Du vil kunne bruke den senere." + +#. module: account_analytic_plans +#: field:account.analytic.plan.instance.line,plan_id:0 +msgid "Plan Id" +msgstr "Plan ID" + +#. module: account_analytic_plans +#: report:account.analytic.account.crossovered.analytic:0 +msgid "From Date" +msgstr "Fra dato" + +#. module: account_analytic_plans +#: report:account.analytic.account.crossovered.analytic:0 +#: view:account.crossovered.analytic:0 +#: model:ir.actions.act_window,name:account_analytic_plans.action_account_crossovered_analytic +#: model:ir.actions.report.xml,name:account_analytic_plans.account_analytic_account_crossovered_analytic +msgid "Crossovered Analytic" +msgstr "Krysset Analyse" + +#. module: account_analytic_plans +#: view:account.analytic.plan:0 +#: field:account.analytic.plan,name:0 +#: field:account.analytic.plan.line,plan_id:0 +#: model:ir.actions.act_window,name:account_analytic_plans.account_analytic_plan_form_action +#: model:ir.model,name:account_analytic_plans.model_account_analytic_plan +#: model:ir.ui.menu,name:account_analytic_plans.menu_account_analytic_plan_action +msgid "Analytic Plan" +msgstr "Analytisk Plan" + +#. module: account_analytic_plans +#: field:account.analytic.plan.instance,journal_id:0 +#: view:account.crossovered.analytic:0 +#: field:account.crossovered.analytic,journal_ids:0 +msgid "Analytic Journal" +msgstr "Analytisk journal" + +#. module: account_analytic_plans +#: view:account.analytic.plan.line:0 +#: model:ir.model,name:account_analytic_plans.model_account_analytic_plan_line +msgid "Analytic Plan Line" +msgstr "Analytisk plan linje" + +#. module: account_analytic_plans +#: code:addons/account_analytic_plans/wizard/account_crossovered_analytic.py:61 +#, python-format +msgid "User Error" +msgstr "Brukerfeil" + +#. module: account_analytic_plans +#: model:ir.model,name:account_analytic_plans.model_account_analytic_plan_instance +msgid "Analytic Plan Instance" +msgstr "Analytisk Plan forekomst" + +#. module: account_analytic_plans +#: view:analytic.plan.create.model:0 +msgid "Ok" +msgstr "Ok" + +#. module: account_analytic_plans +#: field:account.analytic.plan.instance,plan_id:0 +msgid "Model's Plan" +msgstr "Modell Plan" + +#. module: account_analytic_plans +#: field:account.analytic.plan.instance,account2_ids:0 +msgid "Account2 Id" +msgstr "Konto2 ID" + +#. module: account_analytic_plans +#: sql_constraint:account.invoice:0 +msgid "Invoice Number must be unique per Company!" +msgstr "Fakturanummer må være unik pr. firma!" + +#. module: account_analytic_plans +#: report:account.analytic.account.crossovered.analytic:0 +msgid "Amount" +msgstr "Beløp" + +#. module: account_analytic_plans +#: constraint:account.journal:0 +msgid "" +"Configuration error! The currency chosen should be shared by the default " +"accounts too." +msgstr "" +"Konfigurasjon feil! Den valgte valutaen bør deles av standard kontoer også." + +#. module: account_analytic_plans +#: sql_constraint:account.move.line:0 +msgid "Wrong credit or debit value in accounting entry !" +msgstr "Feil kredit eller debet beløp i regnskaps oppføringen !" + +#. module: account_analytic_plans +#: field:account.analytic.plan.instance,account6_ids:0 +msgid "Account6 Id" +msgstr "Konto6 ID" + +#. module: account_analytic_plans +#: model:ir.ui.menu,name:account_analytic_plans.menu_account_analytic_multi_plan_action +msgid "Multi Plans" +msgstr "Multi Planer" + +#. module: account_analytic_plans +#: model:ir.model,name:account_analytic_plans.model_account_bank_statement_line +msgid "Bank Statement Line" +msgstr "Kontoutskriftlinje" + +#. module: account_analytic_plans +#: model:ir.actions.act_window,name:account_analytic_plans.account_analytic_plan_form_action_installer +msgid "Define your Analytic Plans" +msgstr "Definer dine analytiske planer." + +#. module: account_analytic_plans +#: constraint:account.invoice:0 +msgid "Invalid BBA Structured Communication !" +msgstr "Ugyldig BBA Strukturert Kommunikasjon!" + +#. module: account_analytic_plans +#: constraint:account.bank.statement:0 +msgid "The journal and period chosen have to belong to the same company." +msgstr "Tidsskriftet og perioden valgt å tilhøre samme selskap." + +#. module: account_analytic_plans +#: 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 "" +"Datoen for din bilagsregistrering ikke er i den definerte perioden! Du bør " +"endre datoen eller fjerne denne begrensningen fra tidsskriftet." + +#. module: account_analytic_plans +#: sql_constraint:account.journal:0 +msgid "The code of the journal must be unique per company !" +msgstr "Journalkoden må være unik pr firma!" + +#. module: account_analytic_plans +#: field:account.crossovered.analytic,ref:0 +msgid "Analytic Account Reference" +msgstr "Analytisk konto Referanse." + +#. module: account_analytic_plans +#: model:ir.model,name:account_analytic_plans.model_sale_order_line +msgid "Sales Order Line" +msgstr "Salgsordrelinje" + +#. module: account_analytic_plans +#: code:addons/account_analytic_plans/wizard/analytic_plan_create_model.py:47 +#: view:analytic.plan.create.model:0 +#, python-format +msgid "Distribution Model Saved" +msgstr "Distribusjon Model Lagret" + +#. module: account_analytic_plans +#: model:ir.actions.act_window,name:account_analytic_plans.account_analytic_plan_instance_action +msgid "Analytic Distribution's Models" +msgstr "Analytisk distribusjon modeller" + +#. module: account_analytic_plans +#: view:account.crossovered.analytic:0 +msgid "Print" +msgstr "Skriv ut" + +#. module: account_analytic_plans +#: report:account.analytic.account.crossovered.analytic:0 +#: field:account.analytic.line,percentage:0 +msgid "Percentage" +msgstr "Prosentdel" + +#. module: account_analytic_plans +#: code:addons/account_analytic_plans/account_analytic_plans.py:221 +#, python-format +msgid "A model having this name and code already exists !" +msgstr "" + +#. module: account_analytic_plans +#: code:addons/account_analytic_plans/wizard/analytic_plan_create_model.py:41 +#, python-format +msgid "No analytic plan defined !" +msgstr "" + +#. module: account_analytic_plans +#: field:account.analytic.plan.instance.line,rate:0 +msgid "Rate (%)" +msgstr "" + +#. module: account_analytic_plans +#: view:account.analytic.plan:0 +#: field:account.analytic.plan,plan_ids:0 +#: field:account.journal,plan_id:0 +msgid "Analytic Plans" +msgstr "" + +#. module: account_analytic_plans +#: report:account.analytic.account.crossovered.analytic:0 +msgid "Perc(%)" +msgstr "" + +#. module: account_analytic_plans +#: field:account.analytic.plan.line,max_required:0 +msgid "Maximum Allowed (%)" +msgstr "" + +#. module: account_analytic_plans +#: report:account.analytic.account.crossovered.analytic:0 +msgid "Printing date" +msgstr "" + +#. module: account_analytic_plans +#: view:account.analytic.plan.line:0 +msgid "Analytic Plan Lines" +msgstr "" + +#. module: account_analytic_plans +#: 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_analytic_plans +#: model:ir.model,name:account_analytic_plans.model_account_invoice_line +msgid "Invoice Line" +msgstr "" + +#. module: account_analytic_plans +#: 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_analytic_plans +#: report:account.analytic.account.crossovered.analytic:0 +msgid "Currency" +msgstr "" + +#. module: account_analytic_plans +#: field:account.crossovered.analytic,date1:0 +msgid "Start Date" +msgstr "" + +#. module: account_analytic_plans +#: field:account.analytic.plan.instance,account_ids:0 +msgid "Account Id" +msgstr "" + +#. module: account_analytic_plans +#: field:account.analytic.plan.instance,account5_ids:0 +msgid "Account5 Id" +msgstr "" + +#. module: account_analytic_plans +#: model:ir.model,name:account_analytic_plans.model_account_analytic_plan_instance_line +msgid "Analytic Instance Line" +msgstr "" + +#. module: account_analytic_plans +#: field:account.analytic.plan.line,root_analytic_id:0 +msgid "Root Account" +msgstr "" + +#. module: account_analytic_plans +#: report:account.analytic.account.crossovered.analytic:0 +msgid "To Date" +msgstr "" + +#. module: account_analytic_plans +#: code:addons/account_analytic_plans/account_analytic_plans.py:341 +#: code:addons/account_analytic_plans/account_analytic_plans.py:485 +#, python-format +msgid "You have to define an analytic journal on the '%s' journal!" +msgstr "" + +#. module: account_analytic_plans +#: field:account.crossovered.analytic,empty_line:0 +msgid "Dont show empty lines" +msgstr "" + +#. module: account_analytic_plans +#: model:ir.actions.act_window,name:account_analytic_plans.action_analytic_plan_create_model +msgid "analytic.plan.create.model.action" +msgstr "" + +#. module: account_analytic_plans +#: model:ir.model,name:account_analytic_plans.model_account_analytic_line +msgid "Analytic Line" +msgstr "" + +#. module: account_analytic_plans +#: report:account.analytic.account.crossovered.analytic:0 +msgid "Analytic Account :" +msgstr "" + +#. module: account_analytic_plans +#: report:account.analytic.account.crossovered.analytic:0 +msgid "Analytic Account Reference:" +msgstr "" + +#. module: account_analytic_plans +#: field:account.analytic.plan.line,name:0 +msgid "Plan Name" +msgstr "" + +#. module: account_analytic_plans +#: field:account.analytic.plan,default_instance_id:0 +msgid "Default Entries" +msgstr "" + +#. module: account_analytic_plans +#: model:ir.model,name:account_analytic_plans.model_account_move_line +msgid "Journal Items" +msgstr "" + +#. module: account_analytic_plans +#: field:account.analytic.plan.instance,account1_ids:0 +msgid "Account1 Id" +msgstr "" + +#. module: account_analytic_plans +#: field:account.analytic.plan.line,min_required:0 +msgid "Minimum Allowed (%)" +msgstr "" + +#. module: account_analytic_plans +#: help:account.analytic.plan.line,root_analytic_id:0 +msgid "Root account of this plan." +msgstr "" + +#. module: account_analytic_plans +#: code:addons/account_analytic_plans/account_analytic_plans.py:221 +#: code:addons/account_analytic_plans/wizard/analytic_plan_create_model.py:38 +#: code:addons/account_analytic_plans/wizard/analytic_plan_create_model.py:41 +#, python-format +msgid "Error" +msgstr "" + +#. module: account_analytic_plans +#: view:analytic.plan.create.model:0 +msgid "Save This Distribution as a Model" +msgstr "" + +#. module: account_analytic_plans +#: constraint:account.move.line:0 +msgid "You can not create journal items on an account of type view." +msgstr "" + +#. module: account_analytic_plans +#: report:account.analytic.account.crossovered.analytic:0 +msgid "Quantity" +msgstr "" + +#. module: account_analytic_plans +#: code:addons/account_analytic_plans/wizard/analytic_plan_create_model.py:38 +#, python-format +msgid "Please put a name and a code before saving the model !" +msgstr "" + +#. module: account_analytic_plans +#: model:ir.model,name:account_analytic_plans.model_account_crossovered_analytic +msgid "Print Crossovered Analytic" +msgstr "" + +#. module: account_analytic_plans +#: code:addons/account_analytic_plans/account_analytic_plans.py:341 +#: code:addons/account_analytic_plans/account_analytic_plans.py:485 +#, python-format +msgid "No Analytic Journal !" +msgstr "" + +#. module: account_analytic_plans +#: field:account.analytic.plan.instance.line,analytic_account_id:0 +msgid "Analytic Account" +msgstr "" + +#. module: account_analytic_plans +#: model:ir.model,name:account_analytic_plans.model_account_bank_statement +msgid "Bank Statement" +msgstr "" + +#. module: account_analytic_plans +#: field:account.analytic.plan.instance,account3_ids:0 +msgid "Account3 Id" +msgstr "" + +#. module: account_analytic_plans +#: constraint:account.analytic.line:0 +msgid "You can not create analytic line on view account." +msgstr "" + +#. module: account_analytic_plans +#: model:ir.model,name:account_analytic_plans.model_account_invoice +msgid "Invoice" +msgstr "" + +#. module: account_analytic_plans +#: view:account.crossovered.analytic:0 +#: view:analytic.plan.create.model:0 +msgid "Cancel" +msgstr "" + +#. module: account_analytic_plans +#: field:account.analytic.plan.instance,account4_ids:0 +msgid "Account4 Id" +msgstr "" + +#. module: account_analytic_plans +#: constraint:account.move.line:0 +msgid "Company must be the same for its related account and period." +msgstr "" + +#. module: account_analytic_plans +#: view:account.analytic.plan.instance.line:0 +msgid "Analytic Distribution Lines" +msgstr "" + +#. module: account_analytic_plans +#: code:addons/account_analytic_plans/account_analytic_plans.py:234 +#, python-format +msgid "The Total Should be Between %s and %s" +msgstr "" + +#. module: account_analytic_plans +#: report:account.analytic.account.crossovered.analytic:0 +msgid "at" +msgstr "" + +#. module: account_analytic_plans +#: report:account.analytic.account.crossovered.analytic:0 +msgid "Account Name" +msgstr "" + +#. module: account_analytic_plans +#: view:account.analytic.plan.instance.line:0 +msgid "Analytic Distribution Line" +msgstr "" + +#. module: account_analytic_plans +#: field:account.analytic.plan.instance,code:0 +msgid "Distribution Code" +msgstr "" + +#. module: account_analytic_plans +#: report:account.analytic.account.crossovered.analytic:0 +msgid "%" +msgstr "" + +#. module: account_analytic_plans +#: report:account.analytic.account.crossovered.analytic:0 +msgid "100.00%" +msgstr "" + +#. module: account_analytic_plans +#: field:account.analytic.default,analytics_id:0 +#: view:account.analytic.plan.instance:0 +#: field:account.analytic.plan.instance,name:0 +#: field:account.bank.statement.line,analytics_id:0 +#: field:account.invoice.line,analytics_id:0 +#: field:account.move.line,analytics_id:0 +#: model:ir.model,name:account_analytic_plans.model_account_analytic_default +msgid "Analytic Distribution" +msgstr "" + +#. module: account_analytic_plans +#: model:ir.model,name:account_analytic_plans.model_account_journal +msgid "Journal" +msgstr "" + +#. module: account_analytic_plans +#: report:account.analytic.account.crossovered.analytic:0 +msgid "Code" +msgstr "" + +#. module: account_analytic_plans +#: model:ir.model,name:account_analytic_plans.model_analytic_plan_create_model +msgid "analytic.plan.create.model" +msgstr "" + +#. module: account_analytic_plans +#: field:account.crossovered.analytic,date2:0 +msgid "End Date" +msgstr "" + +#. module: account_analytic_plans +#: model:ir.actions.act_window,name:account_analytic_plans.account_analytic_instance_model_open +msgid "Distribution Models" +msgstr "" + +#. module: account_analytic_plans +#: model:ir.actions.act_window,help:account_analytic_plans.account_analytic_plan_form_action_installer +msgid "" +"To setup a multiple analytic plans environment, you must define the root " +"analytic accounts for each plan set. Then, you must attach a plan set to " +"your account journals." +msgstr "" + +#. module: account_analytic_plans +#: constraint:account.move.line:0 +msgid "You can not create journal items on closed account." +msgstr "" + +#. module: account_analytic_plans +#: report:account.analytic.account.crossovered.analytic:0 +msgid "Company" +msgstr "" + +#. module: account_analytic_plans +#: field:account.analytic.plan.line,sequence:0 +msgid "Sequence" +msgstr "" + +#. module: account_analytic_plans +#: sql_constraint:account.journal:0 +msgid "The name of the journal must be unique per company !" +msgstr "" + +#. module: account_analytic_plans +#: code:addons/account_analytic_plans/account_analytic_plans.py:234 +#, python-format +msgid "Value Error" +msgstr "" diff --git a/addons/analytic/analytic_view.xml b/addons/analytic/analytic_view.xml index c1e59cf3ba3..704d9bb8244 100644 --- a/addons/analytic/analytic_view.xml +++ b/addons/analytic/analytic_view.xml @@ -8,12 +8,18 @@ <field name="arch" type="xml"> <form string="Analytic Account" version="7.0"> <sheet string="Analytic Account"> + <div class="oe_right oe_button_box" name="buttons"> + </div> + + <div class="oe_title"> <label for="name" class="oe_edit_only"/> - <h1> - <field name="name" class="oe_inline"/> - </h1> - <div name="project"/> - <group> + <h1> + <field name="name" class="oe_inline"/> + </h1> + <div name="project"/> + </div> + + <group name="main"> <group> <field name="partner_id" on_change="on_change_partner_id(partner_id, name)" attrs="{'required':[('type','=','contract')]}"/> <field name="manager_id"/> diff --git a/addons/base_action_rule/i18n/nb.po b/addons/base_action_rule/i18n/nb.po new file mode 100644 index 00000000000..7aae94c417f --- /dev/null +++ b/addons/base_action_rule/i18n/nb.po @@ -0,0 +1,536 @@ +# Norwegian Bokmal 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:36+0000\n" +"PO-Revision-Date: 2012-09-03 16:43+0000\n" +"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" +"Language-Team: Norwegian Bokmal <nb@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-09-04 04:52+0000\n" +"X-Generator: Launchpad (build 15890)\n" + +#. module: base_action_rule +#: help:base.action.rule,act_mail_to_user:0 +msgid "" +"Check this if you want the rule to send an email to the responsible person." +msgstr "" +"Sjekk dette hvis du vil at regelen skal sende en e-post til ansvarlig person." + +#. module: base_action_rule +#: field:base.action.rule,act_remind_partner:0 +msgid "Remind Partner" +msgstr "Påminn partner" + +#. module: base_action_rule +#: field:base.action.rule,trg_partner_categ_id:0 +msgid "Partner Category" +msgstr "Partner Kategori" + +#. module: base_action_rule +#: field:base.action.rule,act_mail_to_watchers:0 +msgid "Mail to Watchers (CC)" +msgstr "Post til overvåkere (CC)" + +#. module: base_action_rule +#: field:base.action.rule,trg_state_to:0 +msgid "Button Pressed" +msgstr "Knapp trykket" + +#. module: base_action_rule +#: field:base.action.rule,model_id:0 +msgid "Object" +msgstr "Objekt" + +#. module: base_action_rule +#: field:base.action.rule,act_mail_to_email:0 +msgid "Mail to these Emails" +msgstr "Send mail til disse e-postene" + +#. module: base_action_rule +#: field:base.action.rule,act_state:0 +msgid "Set State to" +msgstr "Still stat til" + +#. module: base_action_rule +#: field:base.action.rule,act_email_from:0 +msgid "Email From" +msgstr "E-post fra" + +#. module: base_action_rule +#: view:base.action.rule:0 +msgid "Email Body" +msgstr "E-post kropp" + +#. module: base_action_rule +#: selection:base.action.rule,trg_date_range_type:0 +msgid "Days" +msgstr "Dager" + +#. module: base_action_rule +#: field:base.action.rule,last_run:0 +msgid "Last Run" +msgstr "Siste kjøring" + +#. module: base_action_rule +#: code:addons/base_action_rule/base_action_rule.py:328 +#, python-format +msgid "Error!" +msgstr "Feil!" + +#. module: base_action_rule +#: field:base.action.rule,act_reply_to:0 +msgid "Reply-To" +msgstr "Svar til" + +#. module: base_action_rule +#: help:base.action.rule,act_email_cc:0 +msgid "" +"These people will receive a copy of the future communication between partner " +"and users by email" +msgstr "" +"Disse menneskene vil motta en kopi av den fremtidige kommunikasjon mellom " +"partner og brukere av e-post" + +#. module: base_action_rule +#: selection:base.action.rule,trg_date_range_type:0 +msgid "Minutes" +msgstr "Minutter" + +#. module: base_action_rule +#: field:base.action.rule,name:0 +msgid "Rule Name" +msgstr "Regelnavn" + +#. module: base_action_rule +#: help:base.action.rule,act_remind_partner:0 +msgid "" +"Check this if you want the rule to send a reminder by email to the partner." +msgstr "" +"Sjekk dette hvis du vil at regelen skal sende en påminnelse via e-post til " +"partneren." + +#. module: base_action_rule +#: view:base.action.rule:0 +msgid "Conditions on Model Partner" +msgstr "Forholdene på Modell Partner" + +#. module: base_action_rule +#: selection:base.action.rule,trg_date_type:0 +msgid "Deadline" +msgstr "Frist" + +#. module: base_action_rule +#: field:base.action.rule,trg_partner_id:0 +msgid "Partner" +msgstr "Partner" + +#. module: base_action_rule +#: view:base.action.rule:0 +msgid "%(object_subject)s = Object subject" +msgstr "%(object_subject)s = Object subject" + +#. module: base_action_rule +#: view:base.action.rule:0 +msgid "Email Reminders" +msgstr "E-post påminnelser" + +#. module: base_action_rule +#: view:base.action.rule:0 +msgid "Special Keywords to be Used in the Body" +msgstr "" + +#. module: base_action_rule +#: field:base.action.rule,trg_state_from:0 +msgid "State" +msgstr "Stat" + +#. module: base_action_rule +#: model:ir.actions.act_window,help:base_action_rule.base_action_rule_act +msgid "" +"Use automated actions to automatically trigger actions for various screens. " +"Example: a lead created by a specific user may be automatically set to a " +"specific sales team, or an opportunity which still has status pending after " +"14 days might trigger an automatic reminder email." +msgstr "" +"Bruke automatiserte tiltak for å automatisk utløse tiltak for ulike " +"skjermer. Eksempel: en leder er opprettet av en bestemt bruker kan bli satt " +"automatisk til en bestemt salgsteam, eller en mulighet som fortsatt har " +"status påvente etter 14 dager kan utløse en automatisk påminnelse e-post." + +#. module: base_action_rule +#: help:base.action.rule,act_mail_to_email:0 +msgid "Email-id of the persons whom mail is to be sent" +msgstr "E-post ID av personer som post skal sendes" + +#. module: base_action_rule +#: view:base.action.rule:0 +msgid "Action Rule" +msgstr "Handling regel" + +#. module: base_action_rule +#: view:base.action.rule:0 +msgid "Fields to Change" +msgstr "Felter å endre" + +#. module: base_action_rule +#: selection:base.action.rule,trg_date_type:0 +msgid "Creation Date" +msgstr "Opprettelsesdato" + +#. module: base_action_rule +#: selection:base.action.rule,trg_date_type:0 +msgid "Last Action Date" +msgstr "Siste handlingsdato" + +#. module: base_action_rule +#: selection:base.action.rule,trg_date_range_type:0 +msgid "Hours" +msgstr "Timer" + +#. module: base_action_rule +#: view:base.action.rule:0 +msgid "%(object_id)s = Object ID" +msgstr "%(object_ID)s = Object ID" + +#. module: base_action_rule +#: view:base.action.rule:0 +msgid "Delay After Trigger Date" +msgstr "Forsinkelse Etter utløser Dato" + +#. module: base_action_rule +#: field:base.action.rule,act_remind_attach:0 +msgid "Remind with Attachment" +msgstr "Minn med vedlegg" + +#. module: base_action_rule +#: constraint:ir.cron:0 +msgid "Invalid arguments" +msgstr "Ugyldige argumenter" + +#. module: base_action_rule +#: field:base.action.rule,act_user_id:0 +msgid "Set Responsible to" +msgstr "Satt Ansvarlig for å" + +#. module: base_action_rule +#: selection:base.action.rule,trg_date_type:0 +msgid "None" +msgstr "Ingen" + +#. module: base_action_rule +#: help:base.action.rule,act_email_to:0 +msgid "" +"Use a python expression to specify the right field on which one than we will " +"use for the 'To' field of the header" +msgstr "" +"Bruk en python uttrykk for å angi høyre feltet på hvilken enn vi vil bruke " +"for Til-feltet på header." + +#. module: base_action_rule +#: view:base.action.rule:0 +msgid "%(object_user_phone)s = Responsible phone" +msgstr "% (object_bruker_telefonen) s = Ansvarlig telefon" + +#. module: base_action_rule +#: view:base.action.rule:0 +msgid "" +"The rule uses the AND operator. The model must match all non-empty fields so " +"that the rule executes the action described in the 'Actions' tab." +msgstr "" +"Regelen bruker AND-operatoren. Modellen må matche alle-ikke tomme felt, slik " +"at regelen utfører handlingen som er beskrevet i \"Handlinger\"-fanen." + +#. module: base_action_rule +#: field:base.action.rule,trg_date_range_type:0 +msgid "Delay type" +msgstr "forsinkelse typen" + +#. module: base_action_rule +#: help:base.action.rule,regex_name:0 +msgid "" +"Regular expression for matching name of the resource\n" +"e.g.: 'urgent.*' will search for records having name starting with the " +"string 'urgent'\n" +"Note: This is case sensitive search." +msgstr "" +"Regulært uttrykk for matchende navnet på ressursen\n" +"f.eks: \". haster * 'vil søke etter poster som har navn som starter med " +"strengen\" haster \"\n" +"Merk: Dette er små bokstaver søk." + +#. module: base_action_rule +#: field:base.action.rule,act_method:0 +msgid "Call Object Method" +msgstr "Kall objektmetode" + +#. module: base_action_rule +#: field:base.action.rule,act_email_to:0 +msgid "Email To" +msgstr "E-post til." + +#. module: base_action_rule +#: help:base.action.rule,act_mail_to_watchers:0 +msgid "" +"Check this if you want the rule to mark CC(mail to any other person defined " +"in actions)." +msgstr "" +"Sjekk dette hvis du vil at regelen skal merkes CC (mail til en annen person " +"som er definert i handlinger)." + +#. module: base_action_rule +#: view:base.action.rule:0 +msgid "%(partner)s = Partner name" +msgstr "%(partner)s = Navn på partner" + +#. module: base_action_rule +#: view:base.action.rule:0 +msgid "Note" +msgstr "Notat" + +#. module: base_action_rule +#: help:base.action.rule,act_email_from:0 +msgid "" +"Use a python expression to specify the right field on which one than we will " +"use for the 'From' field of the header" +msgstr "" +"Bruk en python uttrykk for å angi høyre feltet på hvilken enn vi vil bruke " +"for Fra-feltet på overskriften" + +#. module: base_action_rule +#: field:base.action.rule,trg_date_range:0 +msgid "Delay after trigger date" +msgstr "Forsinkelse etter triggerdato" + +#. module: base_action_rule +#: view:base.action.rule:0 +msgid "Conditions" +msgstr "Betingelser" + +#. module: base_action_rule +#: help:base.action.rule,trg_date_range:0 +msgid "" +"Delay After Trigger Date,specifies you can put a negative number. If you " +"need a delay before the trigger date, like sending a reminder 15 minutes " +"before a meeting." +msgstr "" +"Forsinkelse Etter utløser Dato, spesifiserer du kan sette et negativt tall. " +"Hvis du trenger en forsinkelse før avtrekkeren dato, som å sende en " +"påminnelse 15 minutter før et møte." + +#. module: base_action_rule +#: field:base.action.rule,active:0 +msgid "Active" +msgstr "Aktiv" + +#. module: base_action_rule +#: code:addons/base_action_rule/base_action_rule.py:329 +#, python-format +msgid "No Email ID Found for your Company address!" +msgstr "" + +#. module: base_action_rule +#: field:base.action.rule,act_remind_user:0 +msgid "Remind Responsible" +msgstr "Minn Ansvarlig" + +#. module: base_action_rule +#: help:base.action.rule,sequence:0 +msgid "Gives the sequence order when displaying a list of rules." +msgstr "Gir sekvens ordre når du viser en liste over regler." + +#. module: base_action_rule +#: selection:base.action.rule,trg_date_range_type:0 +msgid "Months" +msgstr "Måneder" + +#. module: base_action_rule +#: field:base.action.rule,filter_id:0 +msgid "Filter" +msgstr "Filtrer" + +#. module: base_action_rule +#: selection:base.action.rule,trg_date_type:0 +msgid "Date" +msgstr "Dato" + +#. module: base_action_rule +#: help:base.action.rule,server_action_id:0 +msgid "" +"Describes the action name.\n" +"eg:on which object which action to be taken on basis of which condition" +msgstr "" +"Beskriver handlingens navn.\n" +"f.eks: på hvilket objekt som tiltak som skal iverksettes på grunnlag av " +"hvilken tilstand" + +#. module: base_action_rule +#: model:ir.model,name:base_action_rule.model_ir_cron +msgid "ir.cron" +msgstr "ir.actions.actions" + +#. module: base_action_rule +#: view:base.action.rule:0 +msgid "%(object_description)s = Object description" +msgstr "% (object_beskrivelse) s = Object beskrivelse" + +#. module: base_action_rule +#: constraint:base.action.rule:0 +msgid "Error: The mail is not well formated" +msgstr "Feil: E-posten er ikke godt nok formatert" + +#. module: base_action_rule +#: view:base.action.rule:0 +msgid "Email Actions" +msgstr "E-post handlinger" + +#. module: base_action_rule +#: view:base.action.rule:0 +msgid "Email Information" +msgstr "E-post Informasjon" + +#. module: base_action_rule +#: model:ir.model,name:base_action_rule.model_base_action_rule +msgid "Action Rules" +msgstr "Handlingsregler" + +#. module: base_action_rule +#: help:base.action.rule,act_mail_body:0 +msgid "Content of mail" +msgstr "Innholdet av post" + +#. module: base_action_rule +#: field:base.action.rule,trg_user_id:0 +msgid "Responsible" +msgstr "Ansvarlig" + +#. module: base_action_rule +#: view:base.action.rule:0 +msgid "%(partner_email)s = Partner Email" +msgstr "% (partner_e-post) s = Partner E-post" + +#. module: base_action_rule +#: view:base.action.rule:0 +msgid "%(object_date)s = Creation date" +msgstr "%(object_dato)s = opprettelsesdato" + +#. module: base_action_rule +#: view:base.action.rule:0 +msgid "%(object_user_email)s = Responsible Email" +msgstr "% (object_brukerens_e-post) s = Ansvarlig e-post" + +#. module: base_action_rule +#: field:base.action.rule,act_mail_body:0 +msgid "Mail body" +msgstr "Mail kropp" + +#. module: base_action_rule +#: help:base.action.rule,act_remind_user:0 +msgid "" +"Check this if you want the rule to send a reminder by email to the user." +msgstr "" +"Kryss av her hvis du vil at regelen skal sende en påminnelse til brukeren " +"via e-post." + +#. module: base_action_rule +#: view:base.action.rule:0 +msgid "Server Action to be Triggered" +msgstr "Server Tiltak som skal Utløses" + +#. module: base_action_rule +#: field:base.action.rule,act_mail_to_user:0 +msgid "Mail to Responsible" +msgstr "send mail til ansvarlig" + +#. module: base_action_rule +#: field:base.action.rule,act_email_cc:0 +msgid "Add Watchers (Cc)" +msgstr "Legg til overvåkere (Cc)" + +#. module: base_action_rule +#: view:base.action.rule:0 +msgid "Conditions on Model Fields" +msgstr "Forholdene på Modell Felter" + +#. module: base_action_rule +#: model:ir.actions.act_window,name:base_action_rule.base_action_rule_act +#: model:ir.ui.menu,name:base_action_rule.menu_base_action_rule_form +msgid "Automated Actions" +msgstr "Automatiserte handinger" + +#. module: base_action_rule +#: field:base.action.rule,server_action_id:0 +msgid "Server Action" +msgstr "Tjenerhandling" + +#. module: base_action_rule +#: field:base.action.rule,regex_name:0 +msgid "Regex on Resource Name" +msgstr "Regex på Ressursnavn" + +#. module: base_action_rule +#: help:base.action.rule,act_remind_attach:0 +msgid "" +"Check this if you want that all documents attached to the object be attached " +"to the reminder email sent." +msgstr "" +"Kryss av her om du vil at alle dokumenter knyttet til objektet festes til " +"påminnelse e-post sendt." + +#. module: base_action_rule +#: view:base.action.rule:0 +msgid "Conditions on Timing" +msgstr "Vilkår for timing" + +#. module: base_action_rule +#: field:base.action.rule,sequence:0 +msgid "Sequence" +msgstr "Sekvens" + +#. module: base_action_rule +#: view:base.action.rule:0 +msgid "Actions" +msgstr "Handlinger" + +#. module: base_action_rule +#: help:base.action.rule,active:0 +msgid "" +"If the active field is set to False, it will allow you to hide the rule " +"without removing it." +msgstr "" +"Hvis det aktive feltet er satt til False, vil det tillate deg å skjule " +"regelen uten å fjerne den." + +#. module: base_action_rule +#: view:base.action.rule:0 +msgid "%(object_user)s = Responsible name" +msgstr "% (object_bruker) s = Ansvarlig navn" + +#. module: base_action_rule +#: field:base.action.rule,create_date:0 +msgid "Create Date" +msgstr "Opprettet dato" + +#. module: base_action_rule +#: view:base.action.rule:0 +msgid "Conditions on States" +msgstr "Vilkår for tilstander" + +#. module: base_action_rule +#: field:base.action.rule,trg_date_type:0 +msgid "Trigger Date" +msgstr "Uttløser dato" + +#~ msgid "Special Keywords to Be Used in The Body" +#~ msgstr "Spesielle nøkkelord for bruk i meldingsinnhold" + +#, python-format +#~ msgid "No E-Mail ID Found for your Company address!" +#~ msgstr "Ingen E-post ID funnet for din firmaadresse!" diff --git a/addons/crm/res_config.py b/addons/crm/res_config.py index c6d33b4bec2..1d30abdc33c 100644 --- a/addons/crm/res_config.py +++ b/addons/crm/res_config.py @@ -38,7 +38,7 @@ class crm_configuration(osv.osv_memory): 'module_import_google': fields.boolean("Google (Contacts and Calendar)", help="""Import google contact in partner address and add google calendar events details in Meeting. This installs the module import_google."""), - 'module_google_map': fields.boolean("add google maps on customer", + 'module_google_map': fields.boolean("add google maps on customers", help="""Locate customers on Google Map. This installs the module google_map."""), 'group_fund_raising': fields.boolean("Manage Fund Raising", diff --git a/addons/crm/wizard/crm_partner_to_opportunity_view.xml b/addons/crm/wizard/crm_partner_to_opportunity_view.xml index 765a22de0a6..7f0b5957071 100644 --- a/addons/crm/wizard/crm_partner_to_opportunity_view.xml +++ b/addons/crm/wizard/crm_partner_to_opportunity_view.xml @@ -23,23 +23,5 @@ </field> </record> -<!-- partner To Opportunity Action --> - - <record model="ir.actions.act_window" id="action_view_crm_partner2opportunity"> - <field name="name">Create Opportunity</field> - <field name="res_model">crm.partner2opportunity</field> - <field name="view_type">form</field> - <field name="view_mode">form,tree,kanban,calendar</field> - <field name="target">new</field> - </record> - - <!-- partner To Opportunity wizard --> - - <act_window id="crm_partner2opportunity" - key2="client_action_multi" name="Create Opportunity" - res_model="crm.partner2opportunity" src_model="res.partner" - view_id="view_crm_partner2opportunity" - view_mode="form" target="new" view_type="form" - groups="base.group_sale_salesman"/> </data> </openerp> diff --git a/addons/document_page/static/src/css/document_page.css b/addons/document_page/static/src/css/document_page.css index 723ff8d9b11..77597fb4281 100644 --- a/addons/document_page/static/src/css/document_page.css +++ b/addons/document_page/static/src/css/document_page.css @@ -1,7 +1,3 @@ -.oe_form_readonly .oe_notebook { - display: none; -} - .oe_document_page ul, .oe_document_page li { padding: 2px 8px; margin: 2px 8px; diff --git a/addons/event_sale/event_sale_view.xml b/addons/event_sale/event_sale_view.xml index 53e8a4cc18f..c39cff04bd9 100644 --- a/addons/event_sale/event_sale_view.xml +++ b/addons/event_sale/event_sale_view.xml @@ -8,8 +8,9 @@ <field name="arch" type="xml"> <field name="purchase_ok" position="after"> <field name="event_ok" on_change="onchange_event_ok(event_ok, context)"/> + <label for="event_ok"/> </field> - <field name='procure_method' position='before'> + <field name='default_code' position='before'> <field name="event_type_id" attrs="{'readonly': [('event_ok', '=', False)]}"/> </field> </field> diff --git a/addons/hr/hr_view.xml b/addons/hr/hr_view.xml index 99d7af027e9..e8ed1d61157 100644 --- a/addons/hr/hr_view.xml +++ b/addons/hr/hr_view.xml @@ -20,7 +20,7 @@ <field name="arch" type="xml"> <form string="Employee" version="7.0"> <sheet> - <field name="image_small" widget='image' class="oe_right oe_image_small"/> + <field name="image_medium" widget='image' class="oe_right oe_avatar"/> <div class="oe_title"> <label for="name" class="oe_edit_only"/> <h1> diff --git a/addons/hr/i18n/nl.po b/addons/hr/i18n/nl.po index 9a16f1fc1fb..e63c2c1f1cb 100644 --- a/addons/hr/i18n/nl.po +++ b/addons/hr/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-08-26 14:02+0000\n" +"PO-Revision-Date: 2012-09-03 17:10+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-08-28 06:24+0000\n" -"X-Generator: Launchpad (build 15864)\n" +"X-Launchpad-Export-Date: 2012-09-04 04:52+0000\n" +"X-Generator: Launchpad (build 15890)\n" #. module: hr #: model:process.node,name:hr.process_node_openerpuser0 @@ -195,7 +195,7 @@ msgstr "Vrouw" #: help:hr.job,expected_employees:0 msgid "" "Expected number of employees for this job position after new recruitment." -msgstr "" +msgstr "Verwachte aantal werknemers voor deze functie na de nieuwe werving." #. module: hr #: model:ir.ui.menu,name:hr.menu_open_view_attendance_reason_new_config @@ -710,12 +710,12 @@ msgstr "Ondergeschikten" #. module: hr #: field:hr.job,no_of_employee:0 msgid "Number of employees currently occupying this job position." -msgstr "" +msgstr "Huidige aantal werknemers welke deze functie bekleden ." #. module: hr #: field:hr.job,no_of_recruitment:0 msgid "Number of new employees you expect to recruit." -msgstr "" +msgstr "Verwachte aantal te werven nieuwe werknemers." #~ msgid "Sunday" #~ msgstr "Zondag" diff --git a/addons/hr/res_config.py b/addons/hr/res_config.py index 4973417ec88..411040f45b8 100644 --- a/addons/hr/res_config.py +++ b/addons/hr/res_config.py @@ -32,15 +32,15 @@ class hr_config_settings(osv.osv_memory): help ="""This installs the module hr_attendance."""), 'module_hr_timesheet': fields.boolean('manage timesheets', help ="""This installs the module hr_timesheet."""), - 'module_hr_holidays': fields.boolean('manage leaves and allocation requests', + 'module_hr_holidays': fields.boolean('manage holidays, leaves and allocation requests', help ="""This installs the module hr_holidays."""), 'module_hr_expense': fields.boolean('manage employees expenses', help ="""This installs the module hr_expense."""), - 'module_hr_recruitment': fields.boolean('manage the recruitment pipe', + 'module_hr_recruitment': fields.boolean('manage the recruitment process', help ="""This installs the module hr_recruitment."""), - 'module_hr_contract': fields.boolean('manage contract per employee', + 'module_hr_contract': fields.boolean('record contracts per employee', help ="""This installs the module hr_contract."""), - 'module_hr_evaluation': fields.boolean('manage employees periodic evaluation', + 'module_hr_evaluation': fields.boolean('organize employees periodic evaluation', help ="""This installs the module hr_evaluation."""), 'module_hr_payroll': fields.boolean('manage payroll', help ="""This installs the module hr_payroll."""), diff --git a/addons/hr/res_config_view.xml b/addons/hr/res_config_view.xml index ad36818e525..32f96fb2abb 100644 --- a/addons/hr/res_config_view.xml +++ b/addons/hr/res_config_view.xml @@ -33,6 +33,19 @@ <button string="Cancel" type="object" name="cancel" class="oe_link"/> </header> <separator string="Human Resources Management"/> + <group name="recruitment_grp"> + <label for="id" string="Talent Management"/> + <div name="recruitment"> + <div> + <field name="module_hr_recruitment" class="oe_inline"/> + <label for="module_hr_recruitment"/> + </div> + <div> + <field name="module_hr_evaluation" class="oe_inline"/> + <label for="module_hr_evaluation"/> + </div> + </div> + </group> <group> <label for="id" string="Additional Features"/> <div> @@ -44,21 +57,6 @@ <field name="module_hr_expense" class="oe_inline"/> <label for="module_hr_expense"/> </div> - <div> - <field name="module_hr_evaluation" class="oe_inline"/> - <label for="module_hr_evaluation"/> - </div> - <div> - <field name="module_hr_contract" class="oe_inline"/> - <label for="module_hr_contract"/> - </div> - <div name="hr_payroll"> - <field name="module_hr_payroll" class="oe_inline"/> - <label for="module_hr_payroll"/> - <button name="%(open_payroll_modules)d" type="action" - string="Install your country's payroll" icon="gtk-go-forward" - attrs="{'invisible': [('module_hr_payroll','=',False)]}" class="oe_link"/> - </div> </div> </group> <group name="timesheet_grp"> @@ -78,12 +76,19 @@ </div> </div> </group> - <group name="recruitment_grp"> - <label for="id" string="Recruitment"/> - <div name="recruitment"> + <group name="contract_grp"> + <label for="id" string="Contracts"/> + <div> <div> - <field name="module_hr_recruitment" class="oe_inline"/> - <label for="module_hr_recruitment"/> + <field name="module_hr_contract" class="oe_inline"/> + <label for="module_hr_contract"/> + </div> + <div name="hr_payroll"> + <field name="module_hr_payroll" class="oe_inline"/> + <label for="module_hr_payroll"/> + <button name="%(open_payroll_modules)d" type="action" + string="Install your country's payroll" icon="gtk-go-forward" + attrs="{'invisible': [('module_hr_payroll','=',False)]}" class="oe_link"/> </div> </div> </group> diff --git a/addons/hr_attendance/hr_attendance_view.xml b/addons/hr_attendance/hr_attendance_view.xml index bda89fd9d63..1d0122d55fa 100644 --- a/addons/hr_attendance/hr_attendance_view.xml +++ b/addons/hr_attendance/hr_attendance_view.xml @@ -126,9 +126,9 @@ <field name="active" position="before"> <label for="state"/> <div> - <field name="state" class="oe_inline"/> - <button class="oe_inline oe_right" name="attendance_action_change" states="present" string="Sign Out" type="object" icon="gtk-go-forward" context="{'type':'sign_out'}" groups="base.group_hr_user"/> - <button class="oe_inline oe_right" name="attendance_action_change" states="absent" string="Sign In" type="object" icon="gtk-go-back" context="{'type':'sign_in'}" groups="base.group_hr_user"/> + <field name="state" class="oe_inline"/> - + <button class="oe_link" name="attendance_action_change" states="present" string="Sign Out" type="object" context="{'type':'sign_out'}" groups="base.group_hr_user"/> + <button class="oe_link" name="attendance_action_change" states="absent" string="Sign In" type="object" context="{'type':'sign_in'}" groups="base.group_hr_user"/> </div> </field> </field> diff --git a/addons/hr_expense/hr_expense.py b/addons/hr_expense/hr_expense.py index 594b869c71e..83f986e59cc 100644 --- a/addons/hr_expense/hr_expense.py +++ b/addons/hr_expense/hr_expense.py @@ -256,6 +256,10 @@ class hr_expense_line(osv.osv): res = dict(cr.fetchall()) return res + def _get_uom_id(self, cr, uid, context=None): + result = self.pool.get('ir.model.data').get_object_reference(cr, uid, 'product', 'product_uom_unit') + return result and result[1] or False + _columns = { 'name': fields.char('Expense Note', size=128, required=True), 'date_value': fields.date('Date', required=True), @@ -264,7 +268,7 @@ class hr_expense_line(osv.osv): 'unit_amount': fields.float('Unit Price', digits_compute=dp.get_precision('Product Price')), 'unit_quantity': fields.float('Quantities', digits_compute= dp.get_precision('Product Unit of Measure')), 'product_id': fields.many2one('product.product', 'Product', domain=[('hr_expense_ok','=',True)]), - 'uom_id': fields.many2one('product.uom', 'Unit of Measure'), + 'uom_id': fields.many2one('product.uom', 'Unit of Measure', required=True), 'description': fields.text('Description'), 'analytic_account': fields.many2one('account.analytic.account','Analytic account'), 'ref': fields.char('Reference', size=32), @@ -273,20 +277,31 @@ class hr_expense_line(osv.osv): _defaults = { 'unit_quantity': 1, 'date_value': lambda *a: time.strftime('%Y-%m-%d'), + 'uom_id': _get_uom_id, } _order = "sequence, date_value desc" - def onchange_product_id(self, cr, uid, ids, product_id, uom_id, employee_id, context=None): + def onchange_product_id(self, cr, uid, ids, product_id, context=None): res = {} if product_id: product = self.pool.get('product.product').browse(cr, uid, product_id, context=context) res['name'] = product.name amount_unit = product.price_get('standard_price')[product.id] res['unit_amount'] = amount_unit - if not uom_id: - res['uom_id'] = product.uom_id.id + res['uom_id'] = product.uom_id.id return {'value': res} + def onchange_uom(self, cr, uid, ids, product_id, uom_id, context=None): + res = {'value':{}} + if not uom_id or not product_id: + return res + product = self.pool.get('product.product').browse(cr, uid, product_id, context=context) + uom = self.pool.get('product.uom').browse(cr, uid, uom_id, context=context) + if uom.category_id.id != product.uom_id.category_id.id: + res['warning'] = {'title': _('Warning'), 'message': _('Selected Unit of Measure does not belong to the same category as the product Unit of Measure')} + res['value'].update({'uom_id': product.uom_id.id}) + return res + hr_expense_line() # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/hr_expense/hr_expense_demo.xml b/addons/hr_expense/hr_expense_demo.xml index e1d6b0a00b0..eddaf03ad38 100644 --- a/addons/hr_expense/hr_expense_demo.xml +++ b/addons/hr_expense/hr_expense_demo.xml @@ -11,6 +11,8 @@ <field name="type">service</field> <field name="name">Car Travel Expenses</field> <field name="default_code">CarTRA</field> + <field name="uom_id" ref="product.product_uom_km"/> + <field name="uom_po_id" ref="product.product_uom_km"/> <field name="categ_id" ref="hr_expense.cat_expense"/> <field name="hr_expense_ok" eval="True" /> <field name="image">/9j/4AAQSkZJRgABAQEASABIAAD/2wBDAAUDBAQEAwUEBAQFBQUGBwwIBwcHBw8LCwkMEQ8SEhEPERETFhwXExQaFRERGCEYGh0dHx8fExciJCIeJBweHx7/2wBDAQUFBQcGBw4ICA4eFBEUHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh7/wAARCACAAIADASIAAhEBAxEB/8QAHQABAAMBAQEBAQEAAAAAAAAAAAYHCAUEAgMBCf/EAD0QAAEDAwMCBAQDBgILAAAAAAECAwQABREGEiEHMRMiQVEUYXGBCDJCFVKRobHBJHIjJSYzU2JjkqLR8f/EABsBAQADAAMBAAAAAAAAAAAAAAABAgMEBQYH/8QAIREAAgICAgIDAQAAAAAAAAAAAAECEQMxBCESQQUTUWH/2gAMAwEAAhEDEQA/ANl0pSgFKUoBSlKAUpSgFKUoBSlKAUpSgFKUoBSlKAUpSgFKUoBSlKAUpSgFKUPHegFKqHUP4gtE2TXh07LcJgoy29dUry028P04A5SOxXnAPpgE1JI3UITZkQw7HcDbHnkNOTXE4QkrVtTgjKSMlOeQRkcHnFZSUdkWTqlKVYkUpSgFKUoBSlKAUpXE1xMulv0vMm2cxhLZSFgyM+GlORuUrHIATk/b1qG6Vg7ZIHc4qNaj11piwrLM25oXIGR8OwkuuZAzgpTnB5HfFQeTZdYX8PN3i7lCOApiNuc86TlaVHyNp4IAOF9s5znPI6j6ah6S6eXS5QGC1P8ACKWpD7xeU3htawNoASMLQPygE5I9TnD7rdIo5P0d299Urk7GcVYLO2yEpUS9O3KSkjuFBHlGMHPn4xzWf+tnVPUEh1Nni6tdnvutlD7cTLDCSrgM5GN54OSQQPRRAOIrctd3U6MtGjUY8KFtakORStXibfKlWVAFKNoSoggH37VCY6ZbL0gKt6UPqVtbfU4MqSfTk5Hb78e1bKPthJvtn2i2NiIVXNxK+fEVtPc+xz+ntx645x2q4/w89U2YUiboXVCXYtuuEdMeBdnFK2Q9qdjbSgo4DQz5VJxtOArjGyrm2y3aplxcX4zkRtDyuMgZdQjA/wC/Ga5Oqp4MVQTyokhORkE+386SUZ2i9H+lOnppuNliTFpCHHGgXUfuL/Un6g5H2r31lD8LPW+NAeh9ONWuhkKV4dsmqVkBZyrwnD8zkpUfmPQVq+pSpUBSlKkClKUArk3m+x4ClMto+IkpHKEqwEf5len05PyqLXnqA0qZc7ZEbVEXBeLDrzxCVgj9SUH0PO1R4I55qttQa8tMRCm/j20jJJ2qK1E+pOM8/WrKP6VcixpespgdKX32WEezIz/M819sXq1XJCmH5aJSHElDranMkpIwoY+hNZyvvVG3N7gw0+8r5kJH9/6VCrlr+5z3P8FFaZVnyqJKiPvxVvG+inmkaR6vWm6XnpmyI0xKH23izcAuYhlLrjYU3u3OnbgLSVbPXII5AqsurXUlFi6YR+nfhplagdUpElBUsphpLhUhlCjys7SEjBKQngFQwa7GutcX3S+grVKbiPLub7CPEuyHCExJPhJbdQoAYKlBsLAUcEqKiCUis7Wtplx5+7uOmXIySSs7ikkZOCe6vf6/XPEx4v30WUVdnmZdnW1pEaTIQ4XleYk8NH90+/19Tx7Z6d1c0/OsMdpMyQzNZWsy5ToIZCR2Awnyqzj1OMnPoK/F1SGoy33mytx9OFIUnkJI/JgjP1FerR9jTPv8Ry5SEORY2Hww5kkkKATvJJCtqlA49QOScVbO1GHm21XfRtjVvxS2Xj0W6VQbppC4S7/MhBmehCWhHdWVuNIdbd3KKkpKFZ8pwD3BPOQbP0/orRRjqdTpi2pZQNjS0FTgW2M4P1PJ9TznknnixrlEYuirN8SFtIS0ypWQUJI8MEj67Nx5PJ+RzNL3c0xVfDoTtbCMg+mc9v8A73z64OPG8jm5c7t9HY/QoKl7IDrXpR03vYU27p2PbFKjrdhzYp/0jqinJBbIyoJBSR6Z7j3sjor+1bfppWnL9fReJ1uecbjvqaKVripVtRuUSfFUkgpK+DwMjPKonp+beJ18iMSYMl21yWkre3tEtI3NhxCgVDGQrbyPXNdaM87a5chKch21J+JbISUpUjcpS0pGBnxEL291eYcklFb8H5HJgyJTdxK5cCa62WlXy4422MuLSn2ye9RzWGqWLNNh2popVPmJW4AeQ20j8yz9SQAPqedpFeG33tmUwVpWC8OHNx8wPzr2KVnWN0Sd2elP+7bUr5qO0f8Av+Vc6ZcXlJKfHDYP/DHP8T/bFcaVcfdVciZdAkHzVdRKuRR/XnpZrGfcF3vSVyRcvOVuQpjpS73Jw252wCcgHbgjOTk1nfVN41hZ2HWNQ2qZapiAUp+IjKShw+4VjaftxW35N1JJwquRcbhEU2USi0pK+CleDu+WPWrqBRyRgiFqyciSFzW0SW8+Ydj9vSrl6UR2dQartwaT/g20/GOkjshIyM/faPvVwXLRGjr86r/Yy0urPd1UVLSj9wN1fpaek1hscG4v22Iq3qkMbXfAeWAUpO4ABROBkDOO9Sk1tkOn2kVjrzTolWU3+VqJS1SyqZ8A40Qhkr525Ku4TgE49KgMaBPhRkKctc2JBffKg8Y60NLTgEjcocn2we38tb6f0XZLWlEhMZoyCkbn3AFOH5bjzj5V+2qLDpq+W/4G7wxJZGdqQ4pGCRjPBHPPHtUSSeiYWtmSEyDKkPyjhLcfhBUO6+c/w/vUs6KFiVqb4aU+USSUuJU3jKACf3sDuUd8f3rgdQNLS9DXUxVuqftYG6HJcwTIUT+VWOygAB7flxxXO0fqlNm1XCmr8kcqKLglxHKUHGSfXAUEHjuBxXXc/FLJx5wjujl8eajkjJ6NGavkSUaptbCg1CakR222kqUA22dxSSAkEpSVZ75JIUe2APXe71Mt8VyLMl+NsT5VDkAdsA4B9D3yf6V+V1tMC6WaN4KmfEfUBCkB3ISrnc1+YknKUY743n6VH9WW25sSVIvihHS3ILCnEhSmXlAE5BAynjBAI5BOOxFeGjO1o9B4J0Szpzd79b9YIgy5a3bdIaCg0V7ko3I3pUnP5T2BHYg+vBFlXV1hy5xfihva8Vt0jKU7Qg7iSc5UBtBx37/pJxWumbe/EQu6PEttMN+L4jx2hW4KwST8kng4+5xUvsEVV5vq2GtoRPyXE5CiljCUrcKh2Ckp2pHuoHnHDDDJlko122YZ1GLcl6R99f8ARNy1Xb5z2m7oLVqYRVxYshTqkBTZIJRweCRuAVg7d5I5ArHcbXPWHpC+mzamtklyMydjQuCFHA/6T6TyPllQHtW2uvGlnr7CgzoEow7hBcK47wUUgKIwQSOQDx5h2IFQS0ajuakpsmqWGlOq8gRLQkeL9P0ufVOa+jJnn/4Qbpp1jd1daYzsiO5BnSZSozEZRDod2hGVhWEYTlYHPr6nBxZ93tV9iqQiVJitleM4bPH/AJVz9R6Z0u6mOxL0/ZpIaR4jTbkVKvCCieyTwnJB7d8VFbhFsiY6X4dptewZCHERkEcexxitV5PTMnS2SCTAd+JQybiJfiAEFlwBI+RIA9vevjUlw0toiz/tW+T4kRCuEuPDcXFeyEDKln7Go7YrwtqRIkTJJ8Fsc+gSkDKjx8qg8bTEjqXqJOodRoubsOXIDEKPEJRllLqEOYcKVBKUJWpWwAFzw3DkYzUzk49CCUuz1x+vWm7jfGosCdJjulwJZcfihttRzwMjtn54q2pOoPjrGp9HAdjk49iU8isfdcOn8bSa7fcrYzPisyh4ciJLWFuRpCUpK0pWEp8RvJUlK9oyW19wATpK1ufCabjR5jqWlljCysgYURk/1qMb8tia8X0S9dzdU0nzY8orrQrLHmJbW7qizN+IAQ2mQFOD5FJxzVUy7zECdrkyRKOPyNDw0fx7/wAzXPN6fBKYENmPnuoJ3KP39amUor2EpP0XLqTpPbtQRBHmXNclkAkbYYVtVwUrSd/BBGQaqbSH4ZpMXWFwumqbquXDYdxbURI53PoyTveSrhJHHlBVznngZ8bMG93VwA/EO5OQOcD7VLrB071LL2nxJDST/wA5FYuTbNVGkTmLo1+2x3E2mTcQpWCpp9tXhukdtxCs/fn6HAxH9W6a1TcoyIqdLvObVBxXguJ8EqxjKUZTtPzxzx6ZBlen+lD6QlU2fIVj08U1OrToe0wkjLfiEeqjmuo5PxHH5E3k7Te69nMw8zJiVLtf0q3T2mtbzGmWZNvh2dKUhLj8p/x3iUgBJQE8oAx23f0AEz0fo692ic7KfujcpTy9ziwVFaz7qJFT+NAiRkgNMoTj2FeoADsK34vx+HjO4Lv9ZTLyJ5dnjulvZuEcsvDIIqA6g6cuvMuIgzlpbUMFlwBxsj22qzx9MVZVK5ybWjjtJ7M63LSeqrE24iHbLctkncRGa8Hce2cDIzUEuX7WhtLjrtT8ZtSysthRUgKPchPYfathuNoWMLSCPmK5Vx05apwIeitkn5VosrRm8SZhjXd7etdmSlTbjSpbyGB5VDgqG4k/5c1ZfS7Ulu05p6JeEwlyQLeqK4I7Sd6XGy45sVglSiUhaxwkDcANxXxd2pOkumb3BchzYTbrDndJ4wfcEcg/MVAJf4aLWp3/AFdqO7QG1DatKFgkj23DB/jmqzm5Oy0IKKozp1h+M1tq9y1W5LLU1UpyZMcS0geCQNjYUtCQpZxkjf5khSQexqeWPSmoLiwz4zTrz+xIccOTuVjk8/OtCaE6KaQ0lEDEGIXFE5cddIUtw+5P9gAKsCFaLfESEsx0JA+VULmdtP8ASC5yilUkbEn3qxLB0itcQJVJAWoVaaUpSMJAFf2gOHa9LWi3pAZit5Hriuw0y02MIQlI+Qr9KUApSlAKUpQClKUApSlAKUpQClKUApSlAKUpQClKUApSlAf/2Q==</field> diff --git a/addons/hr_expense/hr_expense_view.xml b/addons/hr_expense/hr_expense_view.xml index 9978490b29a..5389f88b885 100644 --- a/addons/hr_expense/hr_expense_view.xml +++ b/addons/hr_expense/hr_expense_view.xml @@ -89,7 +89,7 @@ <form string="Expense Lines" version="7.0"> <group> <group> - <field name="product_id" on_change="onchange_product_id(product_id, uom_id, parent.employee_id, context)" context="{'default_hr_expense_ok':1}"/> + <field name="product_id" on_change="onchange_product_id(product_id, context)" context="{'default_hr_expense_ok':1}"/> <field name="name"/> <field name="ref"/> <field domain="[('type','=','normal')]" name="analytic_account" groups="analytic.group_analytic_accounting"/> @@ -99,12 +99,24 @@ <label for="unit_quantity"/> <div> <field name="unit_quantity" class="oe_inline"/> - <field name="uom_id" on_change="onchange_product_id(product_id, uom_id, parent.employee_id, context)" class="oe_inline"/> + <field name="uom_id" on_change="onchange_uom(product_id, uom_id, context)" class="oe_inline"/> </div> <field name="date_value" /> </group> </group> </form> + <tree string="Expense Lines" editable="bottom"> + <field name="sequence" invisible="1"/> + <field name="product_id" on_change="onchange_product_id(product_id, context)" context="{'default_hr_expense_ok':1}"/> + <field name="date_value" string="Expense Date"/> + <field name="name"/> + <field name="ref"/> + <field domain="[('type','in',['normal','contract']), ('parent_id','!=',False)]" name="analytic_account" groups="analytic.group_analytic_accounting"/> + <field name="uom_id" on_change="onchange_uom(product_id, uom_id, context)"/> + <field name="unit_amount"/> + <field name="unit_quantity"/> + <field name="total_amount" sum="Total"/> + </tree> </field> <group> <div> diff --git a/addons/hr_holidays/i18n/nl.po b/addons/hr_holidays/i18n/nl.po index ef84f17a58b..4c44ef380bb 100644 --- a/addons/hr_holidays/i18n/nl.po +++ b/addons/hr_holidays/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-19 13:05+0000\n" +"PO-Revision-Date: 2012-09-03 17:12+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-08-28 06:23+0000\n" -"X-Generator: Launchpad (build 15864)\n" +"X-Launchpad-Export-Date: 2012-09-04 04:52+0000\n" +"X-Generator: Launchpad (build 15890)\n" #. module: hr_holidays #: selection:hr.holidays.status,color_name:0 @@ -416,6 +416,8 @@ msgid "" "When selected, the Allocation/Leave Requests for this type require a second " "validation to be approved." msgstr "" +"Wanneer aangevinkt heeft deze toewijzing of aanvraag een tweede controle " +"nodig om te worden goedgekeurd." #. module: hr_holidays #: selection:hr.employee,current_leave_state:0 selection:hr.holidays,state:0 @@ -787,6 +789,8 @@ msgid "" "If you select this checkbox, the system allows the employees to take more " "leaves than the available ones for this type." msgstr "" +"Indien u deze optie aanvinkt, dan staat u toe dat werknemers meer verlof " +"aanvragen dan dat ze nog beschikbaar hebben." #. module: hr_holidays #: help:hr.holidays.status,leaves_taken:0 diff --git a/addons/hr_holidays/test/test_hr_holiday.yml b/addons/hr_holidays/test/test_hr_holiday.yml index 9228a7a381e..f0e85d552cb 100644 --- a/addons/hr_holidays/test/test_hr_holiday.yml +++ b/addons/hr_holidays/test/test_hr_holiday.yml @@ -11,10 +11,6 @@ employee_id: hr.employee_fp type: remove - - I confirmed the holiday request by clicking on "Confirm" button. -- - !workflow {model: hr.holidays, action: confirm, ref: hr_holidays_employee1_cl} -- I find a small mistake on my leave request to I click on "Refuse" button to correct a mistake. - !workflow {model: hr.holidays, action: refuse, ref: hr_holidays_employee1_cl} diff --git a/addons/hr_payroll/i18n/nl.po b/addons/hr_payroll/i18n/nl.po index 8e9c0b35b6d..2ad4fc5aa0b 100644 --- a/addons/hr_payroll/i18n/nl.po +++ b/addons/hr_payroll/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 01:37+0100\n" -"PO-Revision-Date: 2012-01-22 19:09+0000\n" +"PO-Revision-Date: 2012-09-03 17:17+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-08-28 06:33+0000\n" -"X-Generator: Launchpad (build 15864)\n" +"X-Launchpad-Export-Date: 2012-09-04 04:52+0000\n" +"X-Generator: Launchpad (build 15890)\n" #. module: hr_payroll #: field:hr.payslip.line,condition_select:0 @@ -357,7 +357,7 @@ msgstr "Half-jaarlijks" #. module: hr_payroll #: view:hr.salary.rule:0 msgid "Children Definition" -msgstr "" +msgstr "Definitie onderliggende" #. module: hr_payroll #: report:paylip.details:0 report:payslip:0 @@ -465,7 +465,7 @@ msgstr "" #. module: hr_payroll #: view:hr.payslip:0 msgid "Worked Days & Inputs" -msgstr "" +msgstr "Gewerkte dagen & ingaves" #. module: hr_payroll #: field:hr.payslip,details_by_salary_rule_category:0 @@ -522,7 +522,7 @@ msgstr "Bereik" #: model:ir.actions.act_window,name:hr_payroll.action_view_hr_payroll_structure_tree #: model:ir.ui.menu,name:hr_payroll.menu_hr_payroll_structure_tree msgid "Salary Structures Hierarchy" -msgstr "" +msgstr "Salaris structuur hiërarchie" #. module: hr_payroll #: view:hr.payslip:0 @@ -769,7 +769,7 @@ msgstr "Contributie" #: code:addons/hr_payroll/hr_payroll.py:347 #, python-format msgid "Refund Payslip" -msgstr "" +msgstr "Credit salarisstrook" #. module: hr_payroll #: field:hr.rule.input,input_id:0 @@ -852,7 +852,7 @@ msgstr "Salaris Structuur" #. module: hr_payroll #: field:hr.contribution.register,register_line_ids:0 msgid "Register Line" -msgstr "" +msgstr "Register regel" #. module: hr_payroll #: view:hr.payslip:0 view:hr.payslip.employees:0 @@ -1083,7 +1083,7 @@ msgstr "Totaal" #: help:hr.payslip.line,appears_on_payslip:0 #: help:hr.salary.rule,appears_on_payslip:0 msgid "Used for the display of rule on payslip" -msgstr "" +msgstr "Wordt gebruikt om de regel van de salaristrook weer te geven" #. module: hr_payroll #: view:hr.payslip.line:0 @@ -1093,7 +1093,7 @@ msgstr "Zoek loonafschrift regels" #. module: hr_payroll #: view:hr.payslip:0 msgid "Details By Salary Rule Category" -msgstr "" +msgstr "details per salarisregel categorie" #. module: hr_payroll #: help:hr.payslip.input,code:0 help:hr.payslip.worked_days,code:0 diff --git a/addons/hr_timesheet/hr_timesheet_view.xml b/addons/hr_timesheet/hr_timesheet_view.xml index 6ece274fea1..f4b3e437b27 100644 --- a/addons/hr_timesheet/hr_timesheet_view.xml +++ b/addons/hr_timesheet/hr_timesheet_view.xml @@ -77,7 +77,17 @@ </search> </field> </record> - + + <record model="ir.actions.act_window" id="act_analytic_cost_revenue"> + <field name="context">{'search_default_account_id': [active_id], 'default_account_id': active_id, 'search_default_group_date': 1, 'search_default_group_journal': 1}</field> + <field name="name">Costs & Revenues</field> + <field name="res_model">account.analytic.line</field> + <field name="src_model">account.analytic.account</field> + <field name="view_mode">tree,form</field> + <field name="view_type">form</field> + </record> + + <record id="account_analytic_account_timesheet_form" model="ir.ui.view"> <field name="name">account.analytic.account.invoice.form</field> <field name="model">account.analytic.account</field> @@ -87,6 +97,12 @@ <field name="use_timesheets"/> <label for="use_timesheets"/> </xpath> + <xpath expr='//div[@name="buttons"]' position='inside'> + <button string="Costs and Revenues" + name="%(act_analytic_cost_revenue)d" + type="action"/> + + </xpath> </field> </record> diff --git a/addons/hr_timesheet_invoice/report/report_analytic_view.xml b/addons/hr_timesheet_invoice/report/report_analytic_view.xml index 9e0b8dd59ee..a2566688799 100644 --- a/addons/hr_timesheet_invoice/report/report_analytic_view.xml +++ b/addons/hr_timesheet_invoice/report/report_analytic_view.xml @@ -122,13 +122,13 @@ <field name="search_view_id" ref="account_analytic_line_to_invoice_view_filter"/> </record> - <act_window - domain="[('invoice_id','=',False),('to_invoice','<>',False), ('journal_id.type', '=', 'general')]" - context="{'search_default_account_id': [active_id], 'default_account_id': active_id,'search_default_to_invoice': 1}" - id="act_acc_analytic_acc_2_report_acc_analytic_line_to_invoice" - name="Timesheet Lines to Invoice" - res_model="account.analytic.line" - src_model="account.analytic.account"/> + <record id="act_acc_analytic_acc_2_report_acc_analytic_line_to_invoice" model="ir.actions.act_window"> + <field name="domain">[]</field> + <field name="context">{'search_default_account_id': [active_id], 'default_account_id': active_id,'search_default_to_invoice': 1}</field> + <field name="name">To Invoice</field> + <field name="res_model">account.analytic.line</field> + <field name="src_model">account.analytic.account</field> + </record> </data> </openerp> diff --git a/addons/import_google/i18n/mn.po b/addons/import_google/i18n/mn.po new file mode 100644 index 00000000000..9b0376c0d98 --- /dev/null +++ b/addons/import_google/i18n/mn.po @@ -0,0 +1,217 @@ +# Mongolian 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:36+0000\n" +"PO-Revision-Date: 2012-08-31 07:21+0000\n" +"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" +"Language-Team: Mongolian <mn@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-09-01 04:55+0000\n" +"X-Generator: Launchpad (build 15890)\n" + +#. module: import_google +#: help:synchronize.google.import,group_name:0 +msgid "Choose which group to import, By default it takes all." +msgstr "" + +#. module: import_google +#: view:synchronize.google.import:0 +msgid "Import Google Calendar Events" +msgstr "" + +#. module: import_google +#: view:synchronize.google.import:0 +msgid "_Import Events" +msgstr "" + +#. module: import_google +#: code:addons/import_google/wizard/import_google_data.py:71 +#, python-format +msgid "" +"No Google Username or password Defined for user.\n" +"Please define in user view" +msgstr "" + +#. module: import_google +#: code:addons/import_google/wizard/import_google_data.py:127 +#, python-format +msgid "" +"Invalid login detail !\n" +" Specify Username/Password." +msgstr "" + +#. module: import_google +#: field:synchronize.google.import,supplier:0 +msgid "Supplier" +msgstr "" + +#. module: import_google +#: view:synchronize.google.import:0 +msgid "Import Options" +msgstr "" + +#. module: import_google +#: field:synchronize.google.import,group_name:0 +msgid "Group Name" +msgstr "" + +#. module: import_google +#: model:ir.model,name:import_google.model_crm_case_categ +msgid "Category of Case" +msgstr "" + +#. module: import_google +#: model:ir.actions.act_window,name:import_google.act_google_login_contact_form +#: model:ir.ui.menu,name:import_google.menu_sync_contact +msgid "Import Google Contacts" +msgstr "" + +#. module: import_google +#: view:google.import.message:0 +msgid "Import Google Data" +msgstr "" + +#. module: import_google +#: view:crm.meeting:0 +msgid "Meeting Type" +msgstr "" + +#. module: import_google +#: code:addons/import_google/wizard/import_google.py:38 +#: code:addons/import_google/wizard/import_google_data.py:28 +#, python-format +msgid "" +"Please install gdata-python-client from http://code.google.com/p/gdata-" +"python-client/downloads/list" +msgstr "" + +#. module: import_google +#: model:ir.model,name:import_google.model_google_login +msgid "Google Contact" +msgstr "" + +#. module: import_google +#: view:synchronize.google.import:0 +msgid "Import contacts from a google account" +msgstr "" + +#. module: import_google +#: code:addons/import_google/wizard/import_google_data.py:133 +#, python-format +msgid "Please specify correct user and password !" +msgstr "" + +#. module: import_google +#: field:synchronize.google.import,customer:0 +msgid "Customer" +msgstr "" + +#. module: import_google +#: view:synchronize.google.import:0 +msgid "_Cancel" +msgstr "" + +#. module: import_google +#: model:ir.model,name:import_google.model_synchronize_google_import +msgid "synchronize.google.import" +msgstr "" + +#. module: import_google +#: view:synchronize.google.import:0 +msgid "_Import Contacts" +msgstr "" + +#. module: import_google +#: model:ir.actions.act_window,name:import_google.act_google_login_form +#: model:ir.ui.menu,name:import_google.menu_sync_calendar +msgid "Import Google Calendar" +msgstr "" + +#. module: import_google +#: code:addons/import_google/wizard/import_google_data.py:50 +#, python-format +msgid "Import google" +msgstr "" + +#. module: import_google +#: code:addons/import_google/wizard/import_google_data.py:127 +#: code:addons/import_google/wizard/import_google_data.py:133 +#, python-format +msgid "Error" +msgstr "" + +#. module: import_google +#: code:addons/import_google/wizard/import_google_data.py:71 +#, python-format +msgid "Warning !" +msgstr "" + +#. module: import_google +#: field:synchronize.google.import,create_partner:0 +msgid "Options" +msgstr "Тохируулга" + +#. module: import_google +#: view:google.import.message:0 +msgid "_Ok" +msgstr "" + +#. module: import_google +#: code:addons/import_google/wizard/import_google.py:38 +#: code:addons/import_google/wizard/import_google_data.py:28 +#, python-format +msgid "Google Contacts Import Error!" +msgstr "" + +#. module: import_google +#: model:ir.model,name:import_google.model_google_import_message +msgid "Import Message" +msgstr "" + +#. module: import_google +#: field:synchronize.google.import,calendar_name:0 +msgid "Calendar Name" +msgstr "" + +#. module: import_google +#: help:synchronize.google.import,supplier:0 +msgid "Check this box to set newly created partner as Supplier." +msgstr "" + +#. module: import_google +#: selection:synchronize.google.import,create_partner:0 +msgid "Import only address" +msgstr "Зөвхөн хаяг оруулах" + +#. module: import_google +#: field:crm.case.categ,user_id:0 +msgid "User" +msgstr "" + +#. module: import_google +#: view:synchronize.google.import:0 +msgid "Partner Status for this Group:" +msgstr "" + +#. module: import_google +#: field:google.import.message,name:0 +msgid "Message" +msgstr "" + +#. module: import_google +#: selection:synchronize.google.import,create_partner:0 +msgid "Create partner for each contact" +msgstr "" + +#. module: import_google +#: help:synchronize.google.import,customer:0 +msgid "Check this box to set newly created partner as Customer." +msgstr "" diff --git a/addons/import_sugarcrm/i18n/fr.po b/addons/import_sugarcrm/i18n/fr.po index e9872a1f655..64673de4bc6 100644 --- a/addons/import_sugarcrm/i18n/fr.po +++ b/addons/import_sugarcrm/i18n/fr.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-24 17:37+0000\n" -"Last-Translator: Numérigraphe <Unknown>\n" +"PO-Revision-Date: 2012-09-03 22:20+0000\n" +"Last-Translator: Nicolas JEUDY <njeudy@simplee.fr>\n" "Language-Team: French <fr@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-08-28 06:42+0000\n" -"X-Generator: Launchpad (build 15864)\n" +"X-Launchpad-Export-Date: 2012-09-04 04:52+0000\n" +"X-Generator: Launchpad (build 15890)\n" #. module: import_sugarcrm #: code:addons/import_sugarcrm/import_sugarcrm.py:1105 @@ -38,7 +38,7 @@ msgstr "(Prochainement)" #. module: import_sugarcrm #: field:import.sugarcrm,document:0 msgid "Documents" -msgstr "" +msgstr "Documents" #. module: import_sugarcrm #: view:import.sugarcrm:0 @@ -58,7 +58,7 @@ msgstr "" #. module: import_sugarcrm #: field:import.sugarcrm,contact:0 msgid "Contacts" -msgstr "" +msgstr "Contacts" #. module: import_sugarcrm #: view:import.sugarcrm:0 @@ -79,7 +79,7 @@ msgstr "Nom de l'instance" #. module: import_sugarcrm #: field:import.sugarcrm,project_task:0 msgid "Project Tasks" -msgstr "" +msgstr "Tâches du projet" #. module: import_sugarcrm #: field:import.sugarcrm,email_from:0 @@ -134,27 +134,27 @@ msgstr "" #. module: import_sugarcrm #: field:import.sugarcrm,employee:0 msgid "Employee" -msgstr "" +msgstr "Employé" #. module: import_sugarcrm #: view:import.sugarcrm:0 msgid "Document" -msgstr "" +msgstr "Document" #. module: import_sugarcrm #: help:import.sugarcrm,document:0 msgid "Check this box to import sugarCRM Documents into OpenERP documents" -msgstr "" +msgstr "Cochez cette case pour importer les documents SugarCRM dans OpenERP" #. module: import_sugarcrm #: view:import.sugarcrm:0 msgid "Import Data From SugarCRM" -msgstr "" +msgstr "Importee les données de SugarCRM" #. module: import_sugarcrm #: view:import.sugarcrm:0 msgid "CRM" -msgstr "" +msgstr "CRM" #. module: import_sugarcrm #: view:import.message:0 @@ -166,7 +166,7 @@ msgstr "" #. module: import_sugarcrm #: field:import.sugarcrm,call:0 msgid "Calls" -msgstr "" +msgstr "Appels" #. module: import_sugarcrm #: view:import.sugarcrm:0 @@ -176,7 +176,7 @@ msgstr "" #. module: import_sugarcrm #: view:import.message:0 msgid "_Ok" -msgstr "" +msgstr "_Valider" #. module: import_sugarcrm #: help:import.sugarcrm,opportunity:0 @@ -184,11 +184,13 @@ msgid "" "Check this box to import sugarCRM Leads and Opportunities into OpenERP Leads " "and Opportunities" msgstr "" +"Cochez cette case pour importer les Pistes et les Opportunités SugarCRM dans " +"OpenERP." #. module: import_sugarcrm #: field:import.sugarcrm,email_history:0 msgid "Email and Note" -msgstr "" +msgstr "Email et note" #. module: import_sugarcrm #: help:import.sugarcrm,url:0 @@ -208,12 +210,12 @@ msgstr "" #. module: import_sugarcrm #: view:import.sugarcrm:0 msgid "_Import" -msgstr "" +msgstr "_Importer" #. module: import_sugarcrm #: field:import.sugarcrm,user:0 msgid "User" -msgstr "" +msgstr "Utilisateur" #. module: import_sugarcrm #: code:addons/import_sugarcrm/import_sugarcrm.py:1105 diff --git a/addons/mail/i18n/nl.po b/addons/mail/i18n/nl.po index a5e2fee8155..0fef9761c2f 100644 --- a/addons/mail/i18n/nl.po +++ b/addons/mail/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-09 00:36+0000\n" -"PO-Revision-Date: 2012-05-10 17:39+0000\n" -"Last-Translator: Raphael Collet (OpenERP) <Unknown>\n" +"PO-Revision-Date: 2012-09-03 17:14+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-08-28 06:40+0000\n" -"X-Generator: Launchpad (build 15864)\n" +"X-Launchpad-Export-Date: 2012-09-04 04:52+0000\n" +"X-Generator: Launchpad (build 15890)\n" #. module: mail #: field:mail.compose.message,subtype:0 field:mail.message,subtype:0 @@ -196,7 +196,7 @@ msgstr "Ontvangers" #. module: mail #: model:ir.model,name:mail.model_mail_compose_message msgid "Email composition wizard" -msgstr "" +msgstr "E-mail samenstellen wizard" #. module: mail #: field:mail.compose.message,res_id:0 field:mail.message,res_id:0 diff --git a/addons/mail/mail_group_view.xml b/addons/mail/mail_group_view.xml index d21d32a3893..d83b32d7afb 100644 --- a/addons/mail/mail_group_view.xml +++ b/addons/mail/mail_group_view.xml @@ -58,11 +58,11 @@ <field name="arch" type="xml"> <form string="Group Form" version="7.0"> <sheet class="openerp_mail_group_sheet"> - <field name="image_small" widget='image' class="oe_avatar oe_left"/> + <field name="image" widget='image' class="oe_avatar oe_left" options='{"preview_image": "image_medium"}'/> <div class="oe_title"> <div class="oe_edit_only"> - <label for="name" string="Group Name"/> - </div> + <label for="name" string="Group Name"/> + </div> <h1><field name="name"/></h1> <div name="alias_box" colspan="4" attrs="{'invisible': [('alias_domain', '=', False)]}"> <field name="alias_id" invisible="1" required="0"/> @@ -123,7 +123,7 @@ <!-- group record !--> <record id="action_view_groups" model="ir.actions.act_window"> - <field name="name">Groups</field> + <field name="name">Join a group</field> <field name="res_model">mail.group</field> <field name="view_type">form</field> <field name="view_mode">kanban,tree,form</field> @@ -132,6 +132,6 @@ <!-- left-side menu: Groups !--> <menuitem id="mail_group_root" parent="mail_feeds_main" sequence="12" name="My Groups"/> - <menuitem id="mail_allgroups" parent="mail_feeds" sequence="12" action="action_view_groups"/> + <menuitem id="mail_allgroups" parent="mail_group_root" sequence="100" action="action_view_groups"/> </data> </openerp> diff --git a/addons/mail/mail_thread_view.xml b/addons/mail/mail_thread_view.xml index f6ef5bc2ee9..34efa05f812 100644 --- a/addons/mail/mail_thread_view.xml +++ b/addons/mail/mail_thread_view.xml @@ -3,7 +3,7 @@ <data> <!-- Top menu item --> - <menuitem name="Feeds" + <menuitem name="Home" id="mail_feeds_main" groups="base.group_user" sequence="10"/> @@ -11,8 +11,18 @@ <!-- Left-side menu: Feeds --> <menuitem id="mail_feeds" name="Feeds" parent="mail_feeds_main" groups="base.group_user" sequence="10"/> - <menuitem id="mail_wallfeeds" name="News Feed" parent="mail_feeds" action="action_mail_all_feeds" sequence="10"/> - <menuitem id="mail_myfeeds" name="My Feeds" parent="mail_feeds" action="action_mail_my_feeds" sequence="11"/> + <record id="mail_wallfeeds" model="ir.ui.menu"> + <field name="name">My Feeds</field> + <field name="sequence" eval="10"/> + <field name="action" ref="action_mail_all_feeds"/> + <field name="parent_id" ref="mail_feeds"/> + </record> + <record id="mail_myfeeds" model="ir.ui.menu"> + <field name="name">My Posts</field> + <field name="sequence" eval="11"/> + <field name="action" ref="action_mail_my_feeds"/> + <field name="parent_id" ref="mail_feeds"/> + </record> </data> </openerp> diff --git a/addons/membership/__openerp__.py b/addons/membership/__openerp__.py index e4b596183af..316a2f0f120 100644 --- a/addons/membership/__openerp__.py +++ b/addons/membership/__openerp__.py @@ -46,7 +46,6 @@ invoice and send propositions for membership renewal. 'membership_view.xml', 'report/report_membership_view.xml', 'process/membership_process.xml', - 'membership_data.xml' ], 'demo': ['membership_demo.xml'], 'test': ['test/test_membership.yml'], diff --git a/addons/membership/membership.py b/addons/membership/membership.py index 3439f97f833..2a006814629 100644 --- a/addons/membership/membership.py +++ b/addons/membership/membership.py @@ -146,7 +146,7 @@ class membership_line(osv.osv): 'date_to': fields.date('To', readonly=True), 'date_cancel': fields.date('Cancel date'), 'date': fields.date('Join Date', help="Date on which member has joined the membership"), - 'member_price': fields.float('Member Price', digits_compute= dp.get_precision('Product Price'), required=True, help='Amount for the membership'), + 'member_price': fields.float('Membership Fee', digits_compute= dp.get_precision('Product Price'), required=True, help='Amount for the membership'), 'account_invoice_line': fields.many2one('account.invoice.line', 'Account Invoice line', readonly=True), 'account_invoice_id': fields.related('account_invoice_line', 'invoice_id', type='many2one', relation='account.invoice', string='Invoice', readonly=True), 'state': fields.function(_state, @@ -444,14 +444,6 @@ class Partner(osv.osv): Partner() -class product_template(osv.osv): - _inherit = 'product.template' - _columns = { - 'member_price': fields.float('Member Price', digits_compute= dp.get_precision('Product Price')), - } - -product_template() - class Product(osv.osv): def fields_view_get(self, cr, user, view_id=None, view_type='form', context=None, toolbar=False, submenu=False): diff --git a/addons/membership/membership_data.xml b/addons/membership/membership_data.xml deleted file mode 100644 index 14fbb00f9a2..00000000000 --- a/addons/membership/membership_data.xml +++ /dev/null @@ -1,31 +0,0 @@ -<?xml version="1.0" ?> -<openerp> - <data noupdate="1"> - - <!-- - Price type - --> - <record model="product.price.type" id="product_price_type_memberprice" > - <field name="name">Member Price</field> - <field name="field">member_price</field> - </record> - - <!-- - Price list - --> - <record model="product.pricelist" id="list1m"> - <field name="name">Member Sale Pricelist</field> - <field name="type">sale</field> - </record> - <record model="product.pricelist.version" id="ver1m"> - <field name="pricelist_id" ref="list1m"/> - <field name="name">Member Sale Pricelist Version</field> - </record> - <record model="product.pricelist.item" id="item1m"> - <field name="price_version_id" ref="ver1m"/> - <field name="base" ref="product_price_type_memberprice" /> - <field name="name">Member Sale Pricelist Line</field> - </record> - - </data> -</openerp> diff --git a/addons/membership/membership_view.xml b/addons/membership/membership_view.xml index fb128585fd2..ce0e55e37c9 100644 --- a/addons/membership/membership_view.xml +++ b/addons/membership/membership_view.xml @@ -88,11 +88,11 @@ <field name="arch" type="xml"> <page string="Information" position="after"> <page string="Membership"> - <group> + <group col="1"> <group> <field name="membership" readonly="0"/> </group> - <group> + <group attrs="{'invisible':[('membership','=',False)]}"> <field name="membership_date_from" readonly="0" attrs="{'required':[('membership','=',True)]}"/> <field name="membership_date_to" readonly="0" attrs="{'required':[('membership','=',True)]}"/> </group> @@ -270,17 +270,5 @@ <!-- MEMBERSHIP/REPORTING --> <menuitem name="Reporting" id="base.menu_report_association" parent="base.menu_association" sequence="20"/> - <!-- View for product.product object inherited from product module --> - <record model="ir.ui.view" id="view_product_form_inherit1"> - <field name="name">product.normal.form</field> - <field name="model">product.product</field> - <field name="inherit_id" ref="product.product_normal_form_view"/> - <field name="arch" type="xml"> - <field name="list_price" position="after"> - <field name="member_price" groups="base.group_user"/> - </field> - </field> - </record> - </data> </openerp> diff --git a/addons/mrp/mrp_view.xml b/addons/mrp/mrp_view.xml index 52b79e2ade0..acb51ea6388 100644 --- a/addons/mrp/mrp_view.xml +++ b/addons/mrp/mrp_view.xml @@ -501,7 +501,7 @@ <field name="res_model">mrp.bom</field> <field name="view_type">form</field> <field name="view_id" ref="mrp_bom_component_tree_view"/> - <field name="domain">[('bom_id','!=',False)]</field> + <field name="domain">[]</field> <field name="help" type="html"> <p class="oe_view_nocontent_create"> Click to add a component to a bill of material. @@ -524,6 +524,7 @@ action="mrp_bom_form_action2" id="menu_mrp_bom_form_action2" parent="menu_mrp_configuration" + groups="base.group_no_one" sequence="20"/> <record id="action2" model="ir.actions.act_window"> @@ -647,51 +648,43 @@ <field name="state" widget="statusbar" statusbar_visible="draft,ready,in_production,done" statusbar_colors='{"picking_except":"red","confirmed":"blue"}'/> </header> <sheet> - <label for="product_id" class="oe_edit_only"/> - <h1> - <field name="product_id" on_change="product_id_change(product_id)" domain="[('bom_ids','<>',False),('bom_ids.bom_id','=',False)]" class="oe_inline"/> - </h1> - <label for="product_qty" class="oe_edit_only"/> - <h2> - <field name="product_qty" class="oe_inline"/> - <field name="product_uom" groups="product.group_uom" class="oe_inline"/> - <button type="action" - icon="terp-accessories-archiver+" - name="%(mrp.action_change_production_qty)d" - string="Change Qty" states="ready,confirmed" class="oe_inline"/> - </h2> - <div groups="mrp.group_mrp_routings"> - <label for="routing_id" class="oe_edit_only"/> - <h2><field name="routing_id" class="oe_inline"/></h2> + <div class="oe_title"> + <h1>Manufacturing Order <field name="name" class="oe_inline"/></h1> </div> <group> <group> - <field name="name"/> - <field name="date_planned"/> - <field name="origin"/> - </group> - <group> - <field name="user_id"/> + <field name="product_id" on_change="product_id_change(product_id)" domain="[('bom_ids','<>',False),('bom_ids.bom_id','=',False)]" class="oe_inline"/> + <label for="product_qty"/> + <div> + <field name="product_qty" class="oe_inline"/> + <field name="product_uom" groups="product.group_uom" class="oe_inline"/> + <button type="action" + icon="terp-accessories-archiver+" + name="%(mrp.action_change_production_qty)d" + string="(Update)" states="ready,confirmed" class="oe_edit_only oe_link"/> + </div> <label for="product_uos_qty" groups="product.group_uos"/> <div groups="product.group_uos"> <field name="product_uos_qty" class="oe_inline"/> <label string="-" attrs="{'invisible':[('product_uos','=',False)]}" class="oe_inline"/> <field name="product_uos" class="oe_inline"/> </div> + <field name="date_planned"/> + </group> + <group> + <field name="bom_id" domain="[('product_id','=',product_id)]" context="{'default_product_id': product_id}" on_change="bom_id_change(bom_id)"/> + <field name="routing_id" class="oe_inline" groups="mrp.group_mrp_routings"/> + <field name="user_id"/> + <field name="origin"/> + </group> + <group groups="stock.group_locations"> + <field name="location_src_id" domain="[('usage','=','internal')]" on_change="location_id_change(location_src_id,location_dest_id)"/> + <field name="location_dest_id" domain="[('usage','=','internal')]"/> </group> </group> <notebook> <page string="Consumed Products"> <group> - <group> - <field name="bom_id" domain="[('product_id','=',product_id)]" context="{'default_product_id': product_id}" on_change="bom_id_change(bom_id)"/> - </group> - <group groups="stock.group_locations"> - <field name="location_src_id" domain="[('usage','=','internal')]" on_change="location_id_change(location_src_id,location_dest_id)"/> - <field name="location_dest_id" domain="[('usage','=','internal')]"/> - </group> - </group> - <group> <group string="Products to Consume"> <field name="move_lines" domain="[('state','<>', ('done', 'cancel'))]" nolabel="1"> <tree colors="blue:state == 'draft';black:state in ('picking_except','confirmed','ready','in_production');gray:state in ('cancel','done') " string="Products to Consume"> diff --git a/addons/note/__init__.py b/addons/note/__init__.py new file mode 100644 index 00000000000..9bf064877b5 --- /dev/null +++ b/addons/note/__init__.py @@ -0,0 +1,23 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# OpenERP, Open Source Management Solution +# Copyright (C) 2004-2010 Tiny SPRL (<http://tiny.be>). +# +# 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/>. +# +############################################################################## + +import note + diff --git a/addons/note/__openerp__.py b/addons/note/__openerp__.py new file mode 100644 index 00000000000..62d9962634a --- /dev/null +++ b/addons/note/__openerp__.py @@ -0,0 +1,63 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# OpenERP, Open Source Management Solution +# Copyright (C) 2004-2010 Tiny SPRL (<http://tiny.be>). +# +# 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/>. +# +############################################################################## + +{ + 'name': 'Notes', + 'version': '0.1', + 'category': 'Tools', + 'description': """ +This module allows users to create their own notes inside OpenERP +================================================================= + +Use notes to write meeting minutes, organize ideas, organize personnal todo +lists, etc. Each user manages his own personnal notes. Notes are available to +their authors only, but they can share notes to others users so that several +people can work on the same note in real time. It's very efficient to share +meeting minutes. + +Notes can be found in the 'Home' menu. +""", + 'author': 'OpenERP SA', + 'website': 'http://openerp.com', + 'summary': 'Sticky Notes, Collaborative', + 'depends': [ + 'base_tools', + 'mail', + 'pad', + ], + 'data': [ + 'security/note_security.xml', + 'security/ir.model.access.csv', + 'note_data.xml', + 'note_view.xml', + ], + 'demo': [ + 'note_demo.xml', + ], + 'css': [ + 'static/src/css/note.css', + ], + 'installable': True, + 'application': True, + 'auto_install': False, +} + +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/note/note.py b/addons/note/note.py new file mode 100644 index 00000000000..f6a46c72c88 --- /dev/null +++ b/addons/note/note.py @@ -0,0 +1,90 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# OpenERP, Open Source Management Solution +# Copyright (C) 2004-2010 Tiny SPRL (<http://tiny.be>). +# +# 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 openerp.osv import osv, fields +from tools.translate import _ + +class note_stage(osv.osv): + """ Category of Note """ + _name = "note.stage" + _description = "Note Stage" + _columns = { + 'name': fields.char('Category Name', size=64, required=True), + 'sequence': fields.integer('Sequence', help="Used to order the note stages"), + 'user_id': fields.many2one('res.users', 'Owner', help="Owner of the note stage.", required=True, readonly=True), + 'fold': fields.boolean('Folded'), + } + _order = 'sequence asc' + _defaults = { + 'fold': 0, + 'user_id': lambda self, cr, uid, ctx: uid, + 'sequence' : 1, + } + +class note_note(osv.osv): + """ Note """ + _name = 'note.note' + _inherit = ['mail.thread','pad.common'] + _pad_fields = ['note_pad'] + _description = "Note" + + def _get_note_first_line(self, cr, uid, ids, name, args, context=None): + res = {} + for note in self.browse(cr, uid, ids, context=context): + res[note.id] = (note.note or '').strip().split('\n')[0] + return res + + def _get_default_stage_id(self,cr,uid,context=None): + ids = self.pool.get('note.stage').search(cr,uid,[('user_id','=',uid)]) + return ids and ids[0] or False + + def _read_group_stage_ids(self, cr, uid, ids, domain, read_group_order=None, access_rights_uid=None, context=None): + access_rights_uid = access_rights_uid or uid + stage_obj = self.pool.get('note.stage') + + # only show stage groups not folded and owned by user + search_domain = [('fold', '=', False),('user_id', '=', uid)] + + stage_ids = stage_obj._search(cr, uid, search_domain, order=self._order, access_rights_uid=access_rights_uid, context=context) + result = stage_obj.name_get(cr, access_rights_uid, stage_ids, context=context) + return result + + _columns = { + 'name': fields.function(_get_note_first_line, string='Note Summary', type="text", store=True), + 'note': fields.text('Pad Content'), + 'note_pad_url': fields.char('Pad Url', size=250), + 'sequence': fields.integer('Sequence'), + 'stage_id': fields.many2one('note.stage', 'Stage'), + 'active': fields.boolean('Active'), + 'color': fields.integer('Color Index'), + # to be replaced by message_follower_ids + 'follower_ids': fields.many2many('res.users', 'mail_subscription', 'res_id', 'user_id', 'Followers') + } + + _defaults = { + 'active' : 1, + 'stage_id' : _get_default_stage_id, + 'note_pad_url': lambda self, cr, uid, context: self.pad_generate_url(cr, uid, context), + } + _order = 'sequence asc' + _group_by_full = { + 'stage_id' : _read_group_stage_ids, + } diff --git a/addons/note/note_data.xml b/addons/note/note_data.xml new file mode 100644 index 00000000000..670b4c89269 --- /dev/null +++ b/addons/note/note_data.xml @@ -0,0 +1,24 @@ +<?xml version="1.0"?> +<openerp> + <data> + + <record model="note.stage" id="note_stage_01"> + <field name="name">Todo today</field> + <field name="sequence">1</field> + <field name="user_id" eval="ref('base.user_root')"/> + </record> + + <record model="note.stage" id="note_stage_02"> + <field name="name">Todo later</field> + <field name="sequence">2</field> + <field name="user_id" eval="ref('base.user_root')"/> + </record> + + <record model="note.stage" id="note_stage_03"> + <field name="name">For Info</field> + <field name="sequence">3</field> + <field name="user_id" eval="ref('base.user_root')"/> + </record> + + </data> +</openerp> diff --git a/addons/note/note_demo.xml b/addons/note/note_demo.xml new file mode 100644 index 00000000000..e322f362ef5 --- /dev/null +++ b/addons/note/note_demo.xml @@ -0,0 +1,152 @@ +<?xml version="1.0"?> +<openerp> + <data> + + <record id="note_1" model="note.note"> + <field name="note"><![CDATA[Buying list + * coffee + * fruits + * ice cream + * towels + ]]> + </field> + <field name="note_pad"></field> + <field name="stage_id" ref="note_stage_01"/> + <field name="user_id" ref="base.user_root"/> + <field name="color">2</field> + </record> + <record id="note_2" model="note.note"> + <field name="note"><![CDATA[Buying list + * more coffee + * tee + * sugar + * towels + ]]> + </field> + <field name="note_pad"></field> + <field name="stage_id" ref="note_stage_01"/> + <field name="user_id" ref="base.user_root"/> + </record> + + <record id="note_3" model="note.note"> + <field name="note"><![CDATA[Idea to develop + * Phasellus vel eros lorem, vel tristique risus. + * Cras elementum risus ut massa bibendum ac sollicitudin quam feugiat. + * Phasellus ullamcorper mauris quis lectus volutpat non dignissim elit lacinia. + + Nulla vitae metus risus, nec placerat diam. + Proin quis nunc sodales dolor tempus eleifend. + Praesent iaculis libero ut orci egestas a dapibus libero ornare. + + * Proin at nisl sit amet ante feugiat euismod nec at orci. + * Nam aliquam massa id neque tincidunt eu pellentesque neque euismod. + * Proin eget mi sit amet erat tempus pellentesque. + + * Phasellus congue est lectus, vitae semper arcu. + * Suspendisse sodales tortor ut odio volutpat fringilla. + * Vestibulum mattis est quis risus dignissim sit amet faucibus nisl mattis. + * Pellentesque ullamcorper neque neque, vitae rhoncus massa. + + Ut id magna massa, quis scelerisque sapien. + + ]]> + </field> + <field name="note_pad"></field> + <field name="stage_id" ref="note_stage_01"/> + <field name="user_id" ref="base.user_root"/> + </record> + + <record id="note_4" model="note.note"> + <field name="note"><![CDATA[Read some documentation about OpenERP before diving into the code + * Open ERP Version 6: a modern approach to integrated business management + * Open ERP for Retail and Industrial Management + ]]> + </field> + <field name="note_pad"></field> + <field name="stage_id" ref="note_stage_02"/> + <field name="user_id" ref="base.user_root"/> + </record> + + <record id="note_5" model="note.note"> + <field name="note"><![CDATA[New computer specs + * Motherboard + according to processor + * Processor + need to decide + * Graphic card + with great performance for games ! + * Hard drive + big, for lot of internet backups + * Tower + silent, better when watching films + * Blueray drive ? + is it interesting yet ? + * Screen + a big one, full of pixels, of course ! + ]]> + </field> + <field name="note_pad"></field> + <field name="stage_id" ref="note_stage_02"/> + <field name="user_id" ref="base.user_root"/> + <field name="color">3</field> + </record> + + <record id="note_6" model="note.note"> + <field name="note"><![CDATA[Read those books + * Open ERP Version 6: a modern approach to integrated business management + * Open ERP for Retail and Industrial Management + ]]> + </field> + <field name="note_pad"></field> + <field name="stage_id" ref="note_stage_02"/> + <field name="user_id" ref="base.user_root"/> + </record> + + <record id="note_7" model="note.note"> + <field name="note"><![CDATA[Read some documentation about OpenERP before diving into the code + * Open ERP Version 6: a modern approach to integrated business management + * Open ERP for Retail and Industrial Management + ]]> + </field> + <field name="note_pad"></field> + <field name="stage_id" ref="note_stage_03"/> + <field name="user_id" ref="base.user_root"/> + </record> + + <record id="note_8" model="note.note"> + <field name="note"><![CDATA[Read those books + * Open ERP Version 6: a modern approach to integrated business management + * Open ERP for Retail and Industrial Management + ]]> + </field> + <field name="note_pad"></field> + <field name="stage_id" ref="note_stage_03"/> + <field name="user_id" ref="base.user_root"/> + <field name="color">5</field> + </record> + + <record id="note_9" model="note.note"> + <field name="note"><![CDATA[Read some documentation about OpenERP before diving into the code + * Open ERP Version 6: a modern approach to integrated business management + * Open ERP for Retail and Industrial Management + ]]> + </field> + <field name="note_pad"></field> + <field name="stage_id" ref="note_stage_03"/> + <field name="user_id" ref="base.user_root"/> + <field name="color">7</field> + </record> + + <record id="note_10" model="note.note"> + <field name="note"><![CDATA[Read those books + * Open ERP Version 6: a modern approach to integrated business management + * Open ERP for Retail and Industrial Management + ]]> + </field> + <field name="note_pad"></field> + <field name="stage_id" ref="note_stage_03"/> + <field name="user_id" ref="base.user_root"/> + </record> + + </data> +</openerp> diff --git a/addons/note/note_view.xml b/addons/note/note_view.xml new file mode 100644 index 00000000000..5283874f0c6 --- /dev/null +++ b/addons/note/note_view.xml @@ -0,0 +1,136 @@ +<?xml version="1.0"?> +<openerp> + <data> + + <menuitem name="Organizer" id="note_my_stuff" parent="mail.mail_feeds_main"/> + + <!-- Note Stage Form View --> + <record model="ir.ui.view" id="view_note_stage_form"> + <field name="name">note.stage.form</field> + <field name="model">note.stage</field> + <field name="arch" type="xml"> + <form string="Stage of Notes" version="7.0"> + <group> + <field name="name"/> + </group> + </form> + </field> + </record> + + <!-- Note Stage Tree View --> + <record model="ir.ui.view" id="view_note_stage_tree"> + <field name="name">note.stage.tree</field> + <field name="model">note.stage</field> + <field name="field_parent"></field> + <field name="arch" type="xml"> + <tree string="Stages of notes" editable="bottom"> + <field name="sequence" widget="handle"/> + <field name="name"/> + <field name="fold"/> + </tree> + </field> + </record> + + <!-- Note Stage Action --> + <record model="ir.actions.act_window" id="action_note_stage"> + <field name="name">Stages</field> + <field name="res_model">note.stage</field> + <field name="view_mode">tree,form</field> + <field name="domain">[('user_id','=',uid)]</field> + </record> + + <menuitem name="Categories" + id="menu_notes_stage" parent="note_my_stuff" action="action_note_stage" sequence="40" groups="base.group_no_one"/> + + <!-- New Note Kanban View --> + <record model="ir.ui.view" id="view_note_note_kanban"> + <field name="name">note.note.kanban</field> + <field name="model">note.note</field> + <field name="arch" type="xml"> + <kanban default_group_by="stage_id" class="oe_notes" version="7.0"> + <field name="color"/> + <field name="sequence"/> + <field name="name"/> + <field name="stage_id"/> + <field name="active"/> + <field name="note"/> + <field name="follower_ids"/> + <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"> + <!-- dropdown menu --> + <div class="oe_dropdown_toggle oe_dropdown_kanban"> + <span class="oe_e">í</span> + <ul class="oe_dropdown_menu"> + <li><a type="edit">Edit...</a></li> + <li><a type="delete">Delete</a></li> + <li><ul class="oe_kanban_colorpicker" data-field="color"/></li> + </ul> + </div> + + <!-- kanban note --> + <div class="oe_kanban_content"> + <!-- title --> + <field name="name"/> + </div> + + <div class="oe_kanban_project_avatars"> + <t t-foreach="record.follower_ids.raw_value" t-as="follower"> + <img t-att-src="kanban_image('res.users', 'image_small', follower)" t-att-data-member_id="follower"/> + </t> + </div> + </div> + <div class="oe_clear"></div> + </t> + </templates> + </kanban> + </field> + </record> + + <!-- New Note Form View --> + <record model="ir.ui.view" id="view_note_note_form"> + <field name="name">note.note.form</field> + <field name="model">note.note</field> + <field name="arch" type="xml"> + <form string="Note" version="7.0"> + <header> + <field name="stage_id" domain="[('user_id','=',uid)]" widget="statusbar" clickable="1"/> + </header> + <field name="note"/> + <field name="note_pad_url" invisible="1"/> + <div class="oe_chatter"> + <field name="message_ids" widget="mail_thread"/> + </div> + </form> + </field> + </record> + + <!-- Search Note --> + <record model="ir.ui.view" id="view_note_note_filter"> + <field name="name">note.note.search</field> + <field name="model">note.note</field> + <field name="arch" type="xml"> + <search string="Notes"> + <field name="note" string="Note"/> + <field name="stage_id"/> + <group expand="0" string="Group By..."> + <filter icon="terp-personal" string="Creator" help="By Creators" context="{'group_by':'create_uid'}"/> + <filter icon="terp-stock_symbol-selection" string="Stage" help="By Note Category" context="{'group_by':'stage_id'}"/> + </group> + </search> + </field> + </record> + + <!-- Note Action --> + <record model="ir.actions.act_window" id="action_note_note"> + <field name="name">Notes</field> + <field name="res_model">note.note</field> + <field name="view_type">form</field> + <field name="view_mode">kanban,tree,form</field> + <field name="search_view_id" ref="view_note_note_filter"/> + </record> + + <menuitem name="Notes" id="note_notes" parent="note_my_stuff" sequence="20" action="action_note_note"/> + + </data> +</openerp> diff --git a/addons/note/security/ir.model.access.csv b/addons/note/security/ir.model.access.csv new file mode 100644 index 00000000000..fdd6030ca51 --- /dev/null +++ b/addons/note/security/ir.model.access.csv @@ -0,0 +1,3 @@ +id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
+access_note_stage_user,note.stage user,model_note_stage,base.group_user,1,1,1,1
+access_note_note_user,note.note user,model_note_note,base.group_user,1,1,1,1
diff --git a/addons/note/security/note_security.xml b/addons/note/security/note_security.xml new file mode 100644 index 00000000000..46eebee629c --- /dev/null +++ b/addons/note/security/note_security.xml @@ -0,0 +1,12 @@ +<?xml version="1.0"?> +<openerp> +<data> + <record id="note_note_global" model="ir.rule"> + <field name="name">My notes</field> + <field ref="model_note_note" name="model_id"/> + <field eval="1" name="global"/> + <field name="domain_force">[('follower_ids','=',user.id)]</field> + </record> +</data> +</openerp> + diff --git a/addons/note/static/src/css/Makefile b/addons/note/static/src/css/Makefile new file mode 100644 index 00000000000..d6019f4ed4a --- /dev/null +++ b/addons/note/static/src/css/Makefile @@ -0,0 +1,3 @@ +note.css: note.sass + sass -t expanded note.sass note.css + diff --git a/addons/note/static/src/css/note.css b/addons/note/static/src/css/note.css new file mode 100644 index 00000000000..7e79438b46a --- /dev/null +++ b/addons/note/static/src/css/note.css @@ -0,0 +1,78 @@ +.openerp .oe_notes .oe_fold_column .oe_kanban_card { + text-decoration:none; + color:#000; + display:block; + padding:1em; + margin-right: 1em; + margin-bottom: 1em; + + -moz-box-shadow:5px 5px 7px rgba(33,33,33,1); + -webkit-box-shadow: 5px 5px 7px rgba(33,33,33,.7); + box-shadow: 5px 5px 7px rgba(33,33,33,.7); +} + +.openerp .oe_notes .oe_kanban_record .oe_kanban_card { + -webkit-transform: rotate(-2deg); + -o-transform: rotate(-2deg); + -moz-transform:rotate(-2deg); +} + +.openerp .oe_notes .oe_kanban_record:nth-of-type(even) .oe_kanban_card { + -webkit-transform: rotate(1deg); + -o-transform: rotate(1deg); + -moz-transform:rotate(1deg); +} + +.openerp .oe_notes .oe_kanban_record:nth-of-type(3n) .oe_kanban_card { + -webkit-transform: rotate(4deg); + -o-transform: rotate(4deg); + -moz-transform:rotate(4deg); +} + +.openerp .oe_notes .oe_kanban_column:nth-of-type(even) .oe_kanban_record .oe_kanban_card { + -webkit-transform: rotate(2deg); + -o-transform: rotate(2deg); + -moz-transform:rotate(2deg); +} + +.openerp .oe_notes .oe_kanban_column:nth-of-type(even) .oe_kanban_record:nth-of-type(even) .oe_kanban_card { + -webkit-transform: rotate(-3deg); + -o-transform: rotate(-3deg); + -moz-transform:rotate(-3deg); +} + +.openerp .oe_notes .oe_kanban_column:nth-of-type(even) .oe_kanban_record:nth-of-type(3n) .oe_kanban_card { + -webkit-transform: rotate(1deg); + -o-transform: rotate(1deg); + -moz-transform:rotate(1deg); +} + +.openerp .oe_notes .oe_kanban_column:nth-of-type(3n) .oe_kanban_record .oe_kanban_card { + -webkit-transform: rotate(-2deg); + -o-transform: rotate(-2deg); + -moz-transform:rotate(-2deg); +} + +.openerp .oe_notes .oe_kanban_column:nth-of-type(3n) .oe_kanban_record:nth-of-type(even) .oe_kanban_card { + -webkit-transform: rotate(1deg); + -o-transform: rotate(1deg); + -moz-transform:rotate(1deg); +} + +.openerp .oe_notes .oe_kanban_column:nth-of-type(3n) .oe_kanban_record:nth-of-type(3n) .oe_kanban_card { + -webkit-transform: rotate(-1deg); + -o-transform: rotate(-1deg); + -moz-transform:rotate(-1deg); +} + +.openerp .oe_notes .oe_kanban_column .oe_fold_column .oe_kanban_card:hover, +.openerp .oe_notes .oe_kanban_column .oe_fold_column .oe_kanban_card:focus { + box-shadow:10px 10px 7px rgba(0,0,0,.7); + -moz-box-shadow:10px 10px 7px rgba(0,0,0,.7); + -webkit-box-shadow: 10px 10px 7px rgba(0,0,0,.7); + -webkit-transform: rotate(0); + -moz-transform: rotate(0); + -o-transform: rotate(0); + position:relative; + z-index:5; +} diff --git a/addons/note/static/src/css/note.sass b/addons/note/static/src/css/note.sass new file mode 100644 index 00000000000..cd04015dcbb --- /dev/null +++ b/addons/note/static/src/css/note.sass @@ -0,0 +1,137 @@ +@charset "utf-8" + +// Variables {{{ +$section-title-color: #8786b7 +$tag-bg-light: #f0f0fa +$tag-bg-dark: #8786b7 +$tag-border: #afafb6 +$tag-border-selected: #a6a6fe +$hover-background: #f0f0fa +$link-color: #8a89ba +$sheet-max-width: 860px +// }}} +// Mixins {{{ +@font-face + font-family: 'mnmliconsRegular' + src: url('/web/static/src/font/mnmliconsv21-webfont.eot') format('eot') + src: url('/web/static/src/font/mnmliconsv21-webfont.woff') format('woff') + src: url('/web/static/src/font/mnmliconsv21-webfont.ttf') format('truetype') + src: url('/web/static/src/font/mnmliconsv21-webfont.svg') format('svg') active + font-weight: normal + font-style: normal + +@font-face + font-family: 'EntypoRegular' + src: url('/web/static/src/font/entypo-webfont.eot') format('eot') + src: url('/web/static/src/font/entypo-webfont.eot?#iefix') format('embedded-opentype') + src: url('/web/static/src/font/entypo-webfont.woff') format('woff') + src: url('/web/static/src/font/entypo-webfont.ttf') format('truetype') + src: url('/web/static/src/font/entypo-webfont.svg') format('svg') active + font-weight: normal + font-style: normal + +@mixin reset() + border: none + padding: 0 + margin: 0 + background: none + @include radius(none) + @include box-shadow(none) + +@mixin vertical-gradient($startColor: #555, $endColor: #333) + background-color: $startColor + background-image: -webkit-gradient(linear, left top, left bottom, from($startColor), to($endColor)) /* Saf4+, Chrome */ + background-image: -webkit-linear-gradient(top, $startColor, $endColor) /* Chrome 10+, Saf5.1+, iOS 5+ */ + background-image: -moz-linear-gradient(top, $startColor, $endColor) /* FF3.6 */ + background-image: -ms-linear-gradient(top, $startColor, $endColor) /* IE10 */ + background-image: -o-linear-gradient(top, $startColor, $endColor) /* Opera 11.10+ */ + background-image: linear-gradient(to bottom, $startColor, $endColor) + +@mixin radial-gradient($gradient) + background-position: center center + background-image: -webkit-radial-gradient(circle, $gradient) + background-image: -moz-radial-gradient($gradient) + background-image: -ms-radial-gradient($gradient) + background-image: radial-gradient($gradient) + +@mixin radius($radius: 5px) + -moz-border-radius: $radius + -webkit-border-radius: $radius + border-radius: $radius + +@mixin box-shadow($bsval: 0px 1px 4px #777) + -moz-box-shadow: $bsval + -webkit-box-shadow: $bsval + box-shadow: $bsval + +@mixin transition($transval: (border linear 0.2s, box-shadow linear 0.2s)) + -webkit-transition: $transval + -moz-transition: $transval + -ms-transition: $transval + -o-transition: $transval + transition: $transval + +@mixin opacity($opacity: .5) + filter: alpha(opacity=$opacity * 100) + opacity: $opacity + +@mixin background-clip($clip: padding-box) + -webkit-background-clip: $clip + -moz-background-clip: $clip + background-clip: $clip + +@mixin box-sizing($type: content) + // type = border || content || padding + -webkit-box-sizing: #{$type}-box + -moz-box-sizing: #{$type}-box + -ms-box-sizing: #{$type}-box + box-sizing: #{$type}-box + +// Transforms the (readable) text of an inline element into an mmlicons icon, +// allows for actual readable text in-code (and in readers?) with iconic looks +@mixin text-to-icon($icon-name, $color: #404040) + font-size: 1px + letter-spacing: -1px + color: transparent + &:before + font: 21px "mnmliconsRegular" + content: $icon-name + color: $color + +// }}} +// CSS animation bounces {{{ +@-moz-keyframes bounce + 0% + -moz-transform: scale(0) + opacity: 0 + 50% + -moz-transform: scale(1.3) + opacity: 0.4 + 75% + -moz-transform: scale(0.9) + opacity: 0.7 + 100% + -moz-transform: scale(1) + opacity: 1 + +@-webkit-keyframes bounce + 0% + -webkit-transform: scale(0) + opacity: 0 + 50% + -webkit-transform: scale(1.3) + opacity: 0.4 + 75% + -webkit-transform: scale(0.9) + opacity: 0.7 + 100% + -webkit-transform: scale(1) + opacity: 1 +// }}} + + +.oe_kanban_color_2 + background-color:red + +// au BufWritePost,FileWritePost *.sass :!sass --style expanded --line-numbers <afile> > "%:p:r.css" + diff --git a/addons/note/static/src/img/icon.png b/addons/note/static/src/img/icon.png Binary files differnew file mode 100644 index 00000000000..b6ad0548a40 --- /dev/null +++ b/addons/note/static/src/img/icon.png diff --git a/addons/pad_project/i18n/fr.po b/addons/pad_project/i18n/fr.po index ad5998d968e..9e549424e26 100644 --- a/addons/pad_project/i18n/fr.po +++ b/addons/pad_project/i18n/fr.po @@ -8,31 +8,32 @@ 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-06-22 08:03+0000\n" -"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" +"PO-Revision-Date: 2012-09-03 22:22+0000\n" +"Last-Translator: Nicolas JEUDY <njeudy@simplee.fr>\n" "Language-Team: French <fr@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-08-28 06:43+0000\n" -"X-Generator: Launchpad (build 15864)\n" +"X-Launchpad-Export-Date: 2012-09-04 04:52+0000\n" +"X-Generator: Launchpad (build 15890)\n" #. module: pad_project #: constraint:project.task:0 msgid "Error ! Task end-date must be greater then task start-date" msgstr "" +"Erreur ! la date de fin de la tâche doit être supérieure a celle de début" #. module: pad_project #: model:ir.model,name:pad_project.model_project_task msgid "Task" -msgstr "" +msgstr "Tâche" #. module: pad_project #: view:project.task:0 msgid "Pad" -msgstr "" +msgstr "Pad" #. module: pad_project #: constraint:project.task:0 msgid "Error ! You cannot create recursive tasks." -msgstr "" +msgstr "Erreur ! Vous ne pouvez pas créer de tâches récursives." diff --git a/addons/point_of_sale/__openerp__.py b/addons/point_of_sale/__openerp__.py index bcc1eeda001..ec5add595a7 100644 --- a/addons/point_of_sale/__openerp__.py +++ b/addons/point_of_sale/__openerp__.py @@ -92,7 +92,8 @@ Main features: 'static/src/js/main.js', ], 'css': [ - 'static/src/css/pos.css', + 'static/src/css/pos.css', # this is the default css with hover effects + #'static/src/css/pos_nohover.css', # this css has no hover effects (for resistive touchscreens) 'static/src/css/keyboard.css' ], 'qweb': ['static/src/xml/pos.xml'], diff --git a/addons/point_of_sale/i18n/nb.po b/addons/point_of_sale/i18n/nb.po new file mode 100644 index 00000000000..42e5832b237 --- /dev/null +++ b/addons/point_of_sale/i18n/nb.po @@ -0,0 +1,2720 @@ +# Norwegian Bokmal 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 01:37+0100\n" +"PO-Revision-Date: 2012-08-31 07:48+0000\n" +"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" +"Language-Team: Norwegian Bokmal <nb@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-09-01 04:55+0000\n" +"X-Generator: Launchpad (build 15890)\n" + +#. module: point_of_sale +#: field:report.transaction.pos,product_nb:0 +msgid "Product Nb." +msgstr "Produkt Nb" + +#. module: point_of_sale +#: model:ir.actions.act_window,name:point_of_sale.action_trans_pos_tree_today +msgid "Sales by day" +msgstr "" + +#. module: point_of_sale +#: code:addons/point_of_sale/wizard/pos_open_statement.py:49 +#, python-format +msgid "" +"You must define which payment method must be available through the point of " +"sale by reusing existing bank and cash through \"Accounting > Configuration " +"> Financial Accounting > Journals\". Select a journal and check the field " +"\"PoS Payment Method\" from the \"Point of Sale\" tab. You can also create " +"new payment methods directly from menu \"PoS Backend > Configuration > " +"Payment Methods\"." +msgstr "" + +#. module: point_of_sale +#: view:pos.order:0 view:report.pos.order:0 +msgid "Today" +msgstr "I dag" + +#. module: point_of_sale +#: model:pos.category,name:point_of_sale.plain_water +msgid "Plain Water" +msgstr "" + +#. module: point_of_sale +#: view:report.cash.register:0 +msgid "Year from Creation date of cash register" +msgstr "" + +#. module: point_of_sale +#: view:pos.confirm:0 +msgid "Post All Orders" +msgstr "Poster Alle Ordre" + +#. module: point_of_sale +#: model:product.template,name:point_of_sale.spa_2l_product_template +msgid "Spa Reine 2L" +msgstr "" + +#. module: point_of_sale +#: model:ir.model,name:point_of_sale.model_pos_box_out +msgid "Pos Box Out" +msgstr "" + +#. module: point_of_sale +#: model:ir.actions.act_window,name:point_of_sale.action_report_cash_register_all +#: model:ir.ui.menu,name:point_of_sale.menu_report_cash_register_all +msgid "Register Analysis" +msgstr "" + +#. module: point_of_sale +#: model:ir.actions.report.xml,name:point_of_sale.pos_lines_detail +#: report:pos.details:0 report:pos.details_summary:0 +msgid "Details of Sales" +msgstr "" + +#. module: point_of_sale +#: view:report.cash.register:0 field:report.cash.register,day:0 +#: view:report.pos.order:0 field:report.pos.order,day:0 +msgid "Day" +msgstr "Dag" + +#. module: point_of_sale +#: view:pos.make.payment:0 +msgid "Add payment :" +msgstr "" + +#. module: point_of_sale +#: field:pos.box.out,name:0 +msgid "Description / Reason" +msgstr "Beskrivelse / Årsak" + +#. module: point_of_sale +#: field:report.sales.by.margin.pos,product_name:0 +#: field:report.sales.by.margin.pos.month,product_name:0 +msgid "Product Name" +msgstr "Produktnavn" + +#. module: point_of_sale +#: view:report.cash.register:0 +msgid "Month from Creation date of cash register" +msgstr "" + +#. module: point_of_sale +#: report:account.statement:0 field:pos.box.entries,amount:0 +#: field:pos.box.out,amount:0 report:pos.invoice:0 +#: field:pos.make.payment,amount:0 report:pos.user.product:0 +#: field:report.transaction.pos,amount:0 +msgid "Amount" +msgstr "" + +#. module: point_of_sale +#: constraint:account.journal:0 +msgid "" +"Configuration error! The currency chosen should be shared by the default " +"accounts too." +msgstr "Konfigurasjonsfeil ! Valgt valuta må settes opp i kontoplan" + +#. module: point_of_sale +#: model:ir.actions.act_window,name:point_of_sale.pos_category_action +#: model:ir.ui.menu,name:point_of_sale.menu_pos_category view:pos.category:0 +msgid "PoS Categories" +msgstr "PoS Kategorier" + +#. module: point_of_sale +#: model:ir.actions.act_window,name:point_of_sale.action_box_out +#: model:ir.ui.menu,name:point_of_sale.menu_wizard_enter_jrnl2 +msgid "Take Money Out" +msgstr "" + +#. module: point_of_sale +#: report:pos.lines:0 +msgid "VAT" +msgstr "MVA" + +#. module: point_of_sale +#: report:pos.invoice:0 +msgid "Origin" +msgstr "Opphav" + +#. module: point_of_sale +#: report:pos.invoice:0 +msgid "Tax" +msgstr "MVA" + +#. module: point_of_sale +#: report:pos.user.product:0 +msgid "Starting Date" +msgstr "Startdato" + +#. module: point_of_sale +#: code:addons/point_of_sale/wizard/pos_box_entries.py:46 +#, python-format +msgid "" +"You do not have any open cash register. You must create a payment method or " +"open a cash register." +msgstr "" + +#. module: point_of_sale +#: report:account.statement:0 field:report.pos.order,partner_id:0 +msgid "Partner" +msgstr "Partner" + +#. module: point_of_sale +#: report:pos.details:0 report:pos.details_summary:0 +msgid "Total of the day" +msgstr "" + +#. module: point_of_sale +#: view:report.pos.order:0 field:report.pos.order,average_price:0 +msgid "Average Price" +msgstr "Gjennomsnittspris" + +#. module: point_of_sale +#: report:pos.lines:0 +msgid "Disc. (%)" +msgstr "Rab. (%)" + +#. module: point_of_sale +#: model:ir.ui.menu,name:point_of_sale.menu_point_open_config +msgid "Cash Register Management" +msgstr "" + +#. module: point_of_sale +#: model:product.template,name:point_of_sale.lays_naturel_45g_product_template +msgid "Lays Naturel 45g" +msgstr "" + +#. module: point_of_sale +#: view:pos.order:0 +msgid "Accounting Information" +msgstr "" + +#. module: point_of_sale +#: model:product.template,name:point_of_sale.coca_regular_2l_product_template +msgid "Coca-Cola Regular 2L" +msgstr "" + +#. module: point_of_sale +#: model:ir.actions.act_window,name:point_of_sale.action_trans_pos_tree_month +msgid "Sales by month" +msgstr "" + +#. module: point_of_sale +#: model:pos.category,name:point_of_sale.soda_orange +msgid "Orange" +msgstr "" + +#. module: point_of_sale +#: model:ir.actions.act_window,name:point_of_sale.action_report_sales_by_user_pos_today +#: view:report.sales.by.user.pos:0 view:report.sales.by.user.pos.month:0 +msgid "Sales by User" +msgstr "" + +#. module: point_of_sale +#: report:pos.invoice:0 +msgid "Disc.(%)" +msgstr "Rab.(%)" + +#. module: point_of_sale +#: field:pos.box.entries,ref:0 +msgid "Ref" +msgstr "Ref" + +#. module: point_of_sale +#: view:report.pos.order:0 field:report.pos.order,price_total:0 +msgid "Total Price" +msgstr "Totalpris" + +#. module: point_of_sale +#: model:product.template,name:point_of_sale.leffe_brune_33cl_product_template +msgid "Leffe Brune 33cl" +msgstr "" + +#. module: point_of_sale +#: model:ir.actions.report.xml,name:point_of_sale.pos_sales_user +#: report:pos.sales.user:0 +msgid "Sales Report" +msgstr "Salgsrapport" + +#. module: point_of_sale +#: model:pos.category,name:point_of_sale.beverage +msgid "Beverages" +msgstr "" + +#. module: point_of_sale +#: model:product.template,name:point_of_sale.stella_50cl_product_template +msgid "Stella Artois 50cl" +msgstr "" + +#. module: point_of_sale +#: view:pos.details:0 +msgid "Dates" +msgstr "Datoer" + +#. module: point_of_sale +#: field:pos.category,parent_id:0 +msgid "Parent Category" +msgstr "Overordnet kategori" + +#. module: point_of_sale +#: report:pos.details:0 report:pos.lines:0 report:pos.payment.report.user:0 +#: report:pos.user.product:0 +msgid "[" +msgstr "" + +#. module: point_of_sale +#: field:report.sales.by.margin.pos,total:0 +#: field:report.sales.by.margin.pos.month,total:0 +msgid "Margin" +msgstr "Margin" + +#. module: point_of_sale +#: field:pos.discount,discount:0 field:pos.order.line,discount:0 +msgid "Discount (%)" +msgstr "Rabatt (%)" + +#. module: point_of_sale +#: model:product.template,name:point_of_sale.oetker_speciale_product_template +msgid "Dr. Oetker Ristorante Speciale" +msgstr "" + +#. module: point_of_sale +#: view:pos.order.line:0 +msgid "Total qty" +msgstr "Total ant" + +#. module: point_of_sale +#: model:product.template,name:point_of_sale.fanta_orange_33cl_product_template +msgid "Fanta Orange 33cl" +msgstr "" + +#. module: point_of_sale +#: model:ir.actions.act_window,name:point_of_sale.action_report_sales_by_user_pos_month +msgid "Sales by User Monthly" +msgstr "" + +#. module: point_of_sale +#: report:all.closed.cashbox.of.the.day:0 +msgid "Today's Closed Cashbox" +msgstr "" + +#. module: point_of_sale +#: view:report.cash.register:0 +msgid "Day from Creation date of cash register" +msgstr "" + +#. module: point_of_sale +#: model:ir.ui.menu,name:point_of_sale.menu_point_of_sale +msgid "Daily Operations" +msgstr "" + +#. module: point_of_sale +#: code:addons/point_of_sale/point_of_sale.py:285 +#, python-format +msgid "Configuration Error !" +msgstr "Konfigurasjonsfeil!" + +#. module: point_of_sale +#: model:pos.category,name:point_of_sale.sparkling_water +msgid "Sparkling Water" +msgstr "" + +#. module: point_of_sale +#: view:pos.box.entries:0 +msgid "Fill in this form if you put money in the cash register:" +msgstr "" + +#. module: point_of_sale +#: view:account.bank.statement:0 +msgid "Search Cash Statements" +msgstr "" + +#. module: point_of_sale +#: selection:report.cash.register,month:0 selection:report.pos.order,month:0 +msgid "August" +msgstr "" + +#. module: point_of_sale +#: model:product.template,name:point_of_sale.pepsi_max_lemon_33cl_product_template +msgid "Pepsi Max Cool Lemon 33cl" +msgstr "" + +#. module: point_of_sale +#: selection:report.cash.register,month:0 selection:report.pos.order,month:0 +msgid "June" +msgstr "" + +#. module: point_of_sale +#: view:pos.order.line:0 +msgid "POS Order line" +msgstr "POS Ordre linje" + +#. module: point_of_sale +#: model:product.template,name:point_of_sale.fanta_orange_50cl_product_template +msgid "Fanta Orange 50cl" +msgstr "" + +#. module: point_of_sale +#: field:pos.category,child_id:0 +msgid "Children Categories" +msgstr "Underordnede Kategorier" + +#. module: point_of_sale +#: field:pos.make.payment,payment_date:0 +msgid "Payment Date" +msgstr "Betalingsdato" + +#. module: point_of_sale +#: help:product.product,pos_categ_id:0 +msgid "" +"If you want to sell this product through the point of sale, select the " +"category it belongs to." +msgstr "" + +#. module: point_of_sale +#: report:account.statement:0 report:all.closed.cashbox.of.the.day:0 +msgid "Closing Date" +msgstr "" + +#. module: point_of_sale +#: selection:report.cash.register,month:0 selection:report.pos.order,month:0 +msgid "October" +msgstr "Oktober" + +#. module: point_of_sale +#: model:product.template,name:point_of_sale.coca_light_1l_product_template +msgid "Coca-Cola Light 1L" +msgstr "" + +#. module: point_of_sale +#: report:pos.details:0 report:pos.details_summary:0 +msgid "Summary" +msgstr "" + +#. module: point_of_sale +#: model:product.template,name:point_of_sale.chaudfontaine_50cl_product_template +msgid "Chaudfontaine 50cl" +msgstr "" + +#. module: point_of_sale +#: report:pos.invoice:0 report:pos.lines:0 field:pos.order.line,qty:0 +#: field:report.sales.by.user.pos,qty:0 +#: field:report.sales.by.user.pos.month,qty:0 +msgid "Quantity" +msgstr "Antall" + +#. module: point_of_sale +#: field:pos.order.line,name:0 +msgid "Line No" +msgstr "" + +#. module: point_of_sale +#: view:account.bank.statement:0 +msgid "Period" +msgstr "Periode" + +#. module: point_of_sale +#: code:addons/point_of_sale/wizard/pos_open_statement.py:49 +#, python-format +msgid "No Cash Register Defined !" +msgstr "" + +#. module: point_of_sale +#: report:pos.invoice:0 +msgid "Net Total:" +msgstr "Netto total:" + +#. module: point_of_sale +#: field:pos.make.payment,payment_name:0 +msgid "Payment Reference" +msgstr "Betalingsreferanse" + +#. module: point_of_sale +#: report:pos.details_summary:0 +msgid "Mode of Payment" +msgstr "" + +#. module: point_of_sale +#: model:ir.model,name:point_of_sale.model_pos_confirm +msgid "Post POS Journal Entries" +msgstr "" + +#. module: point_of_sale +#: code:addons/point_of_sale/point_of_sale.py:408 +#, python-format +msgid "Customer Invoice" +msgstr "Kundefaktura" + +#. module: point_of_sale +#: view:pos.box.out:0 +msgid "Output Operation" +msgstr "" + +#. module: point_of_sale +#: view:report.pos.order:0 field:report.pos.order,total_discount:0 +msgid "Total Discount" +msgstr "Rabatt totalt" + +#. module: point_of_sale +#: view:pos.details:0 view:pos.payment.report:0 view:pos.payment.report.user:0 +#: view:pos.sale.user:0 +msgid "Print Report" +msgstr "Skriv ut rapport" + +#. module: point_of_sale +#: model:product.template,name:point_of_sale.oetker_bolognese_product_template +msgid "Dr. Oetker Ristorante Bolognese" +msgstr "" + +#. module: point_of_sale +#: code:addons/point_of_sale/wizard/pos_box_entries.py:105 +#, python-format +msgid "Please check that income account is set to %s" +msgstr "" + +#. module: point_of_sale +#: model:pos.category,name:point_of_sale.pizza +msgid "Pizza" +msgstr "" + +#. module: point_of_sale +#: code:addons/point_of_sale/wizard/pos_return.py:85 +#: code:addons/point_of_sale/wizard/pos_return.py:240 +#, python-format +msgid "Add Product" +msgstr "Legg til produkt" + +#. module: point_of_sale +#: field:report.transaction.pos,invoice_am:0 +msgid "Invoice Amount" +msgstr "" + +#. module: point_of_sale +#: model:pos.category,name:point_of_sale.coke +msgid "Coke" +msgstr "" + +#. module: point_of_sale +#: report:pos.invoice:0 +msgid "Tel. :" +msgstr "" + +#. module: point_of_sale +#: model:ir.actions.act_window,name:point_of_sale.action_pos_confirm +#: model:ir.ui.menu,name:point_of_sale.menu_wizard_pos_confirm +msgid "Create Sale Entries" +msgstr "" + +#. #-#-#-#-# point_of_sale.pot (OpenERP Server 6.1rc1) #-#-#-#-# +#. module: point_of_sale +#. #-#-#-#-# point_of_sale.pot.web (PROJECT VERSION) #-#-#-#-# +#. openerp-web +#: model:ir.actions.act_window,name:point_of_sale.action_pos_payment +#: report:pos.details:0 view:pos.order:0 +#: /home/odo/repositories/addons/trunk/point_of_sale/static/src/xml/pos.xml:87 +msgid "Payment" +msgstr "" + +#. module: point_of_sale +#: view:report.cash.register:0 +msgid "Cash Analysis created in current month" +msgstr "" + +#. module: point_of_sale +#: report:account.statement:0 report:all.closed.cashbox.of.the.day:0 +msgid "Ending Balance" +msgstr "Sluttbalanse" + +#. module: point_of_sale +#: model:product.template,name:point_of_sale.pepsi_max_50cl_product_template +msgid "Pepsi Max 50cl" +msgstr "" + +#. module: point_of_sale +#: model:product.template,name:point_of_sale.san_pellegrino_1l_product_template +msgid "San Pellegrino 1L" +msgstr "" + +#. module: point_of_sale +#: view:pos.order:0 +msgid "Post Entries" +msgstr "" + +#. module: point_of_sale +#: model:product.template,name:point_of_sale.spa_1l_product_template +msgid "Spa Reine 1L" +msgstr "" + +#. module: point_of_sale +#: report:pos.details_summary:0 +msgid "Mode of Taxes" +msgstr "" + +#. module: point_of_sale +#: code:addons/point_of_sale/wizard/pos_close_statement.py:50 +#, python-format +msgid "Cash registers are already closed." +msgstr "" + +#. module: point_of_sale +#: constraint:product.product:0 +msgid "Error: Invalid ean code" +msgstr "Feil: Ugyldig ean kode" + +#. module: point_of_sale +#: model:ir.model,name:point_of_sale.model_pos_open_statement +#: view:pos.open.statement:0 +msgid "Open Statements" +msgstr "" + +#. module: point_of_sale +#: field:pos.details,date_end:0 field:pos.sale.user,date_end:0 +msgid "Date End" +msgstr "Sluttdato" + +#. module: point_of_sale +#: view:report.pos.order:0 +msgid "POS ordered created during current year" +msgstr "" + +#. module: point_of_sale +#: model:ir.actions.act_window,name:point_of_sale.action_pos_pos_form +#: model:ir.ui.menu,name:point_of_sale.menu_point_ofsale view:pos.order:0 +msgid "PoS Orders" +msgstr "POS Ordre" + +#. module: point_of_sale +#: report:pos.details:0 +msgid "Sales total(Revenue)" +msgstr "" + +#. module: point_of_sale +#: report:pos.details:0 report:pos.details_summary:0 +msgid "Total paid" +msgstr "" + +#. module: point_of_sale +#: model:ir.ui.menu,name:point_of_sale.menu_all_menu_all_register +msgid "List of Cash Registers" +msgstr "" + +#. module: point_of_sale +#: model:product.template,name:point_of_sale.maes_50cl_product_template +msgid "Maes 50cl" +msgstr "" + +#. module: point_of_sale +#: model:ir.model,name:point_of_sale.model_report_transaction_pos +msgid "transaction for the pos" +msgstr "" + +#. module: point_of_sale +#: view:report.pos.order:0 +msgid "Not Invoiced" +msgstr "Ikke fakturert" + +#. module: point_of_sale +#: selection:report.cash.register,month:0 selection:report.pos.order,month:0 +msgid "March" +msgstr "Mars" + +#. module: point_of_sale +#: model:ir.actions.report.xml,name:point_of_sale.pos_users_product_re +#: report:pos.user.product:0 +msgid "User's Product" +msgstr "" + +#. module: point_of_sale +#: code:addons/point_of_sale/point_of_sale.py:641 +#, python-format +msgid "" +"You have to select a pricelist in the sale form !\n" +"Please set one before choosing a product." +msgstr "" + +#. module: point_of_sale +#: model:product.template,name:point_of_sale.fanta_orange_2l_product_template +msgid "Fanta Orange 2L" +msgstr "" + +#. module: point_of_sale +#: model:product.template,name:point_of_sale.spa_33cl_product_template +msgid "Spa Reine 33cl" +msgstr "" + +#. module: point_of_sale +#: model:ir.model,name:point_of_sale.model_pos_discount +msgid "Add a Global Discount" +msgstr "" + +#. module: point_of_sale +#: field:pos.order.line,price_subtotal_incl:0 +msgid "Subtotal" +msgstr "Subtotal" + +#. module: point_of_sale +#: model:product.template,name:point_of_sale.oetker_prosciutto_product_template +msgid "Dr. Oetker Ristorante Prosciutto" +msgstr "" + +#. module: point_of_sale +#: model:product.template,name:point_of_sale.lays_light_paprika_170g_product_template +#: model:product.template,name:point_of_sale.lays_paprika_170g_product_template +msgid "Lays Light Paprika 170g" +msgstr "" + +#. module: point_of_sale +#: model:product.template,name:point_of_sale.coca_light_lemon_50cl_product_template +msgid "Coca-Cola Light Lemon 50cl" +msgstr "" + +#. module: point_of_sale +#: field:report.cash.register,balance_end_real:0 +msgid "Closing Balance" +msgstr "Sluttsaldo" + +#. module: point_of_sale +#: 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 "" + +#. module: point_of_sale +#: model:product.template,name:point_of_sale.croky_naturel_45g_product_template +msgid "Croky Naturel 45g" +msgstr "" + +#. module: point_of_sale +#: model:product.template,name:point_of_sale.product_product_putmoneyforchange1_product_template +msgid "Cash Out" +msgstr "" + +#. module: point_of_sale +#: report:account.statement:0 report:all.closed.cashbox.of.the.day:0 +msgid "Starting Balance" +msgstr "Inngående saldo" + +#. module: point_of_sale +#: model:ir.model,name:point_of_sale.model_pos_category +#: field:product.product,pos_categ_id:0 +msgid "PoS Category" +msgstr "PoS Kategori" + +#. module: point_of_sale +#: model:product.template,name:point_of_sale.chimay_bleu_75cl_product_template +msgid "Chimay Bleu 75cl" +msgstr "" + +#. module: point_of_sale +#: report:pos.payment.report.user:0 +msgid "Payment By User" +msgstr "" + +#. module: point_of_sale +#: view:report.pos.order:0 field:report.pos.order,nbr:0 +msgid "# of Lines" +msgstr "# linjer" + +#. module: point_of_sale +#: help:account.journal,check_dtls:0 +msgid "" +"This field authorize Validation of Cashbox without controlling the closing " +"balance." +msgstr "" + +#. module: point_of_sale +#: model:ir.actions.act_window,name:point_of_sale.action_report_pos_details +#: model:ir.ui.menu,name:point_of_sale.menu_pos_details +msgid "Sale Details" +msgstr "" + +#. module: point_of_sale +#: model:pos.category,name:point_of_sale.pils +msgid "Pils" +msgstr "" + +#. module: point_of_sale +#: report:all.closed.cashbox.of.the.day:0 +msgid "St.Name" +msgstr "" + +#. module: point_of_sale +#: report:pos.details_summary:0 +msgid "Sales total" +msgstr "" + +#. module: point_of_sale +#: view:pos.order.line:0 +msgid "Sum of subtotals" +msgstr "Sum av subtotaler" + +#. module: point_of_sale +#: field:pos.order,lines:0 +msgid "Order Lines" +msgstr "Ordrelinjer" + +#. module: point_of_sale +#: view:report.transaction.pos:0 +msgid "Total Transaction" +msgstr "" + +#. module: point_of_sale +#: model:product.template,name:point_of_sale.chaudfontaine_petillante_50cl_product_template +msgid "Chaudfontaine Petillante 50cl" +msgstr "" + +#. module: point_of_sale +#: field:pos.order.line,create_date:0 +msgid "Creation Date" +msgstr "Opprettet, dato:" + +#. module: point_of_sale +#: model:ir.actions.report.xml,name:point_of_sale.pos_sales_user_today +msgid "Today's Sales" +msgstr "" + +#. module: point_of_sale +#: model:product.template,name:point_of_sale.lays_naturel_300g_product_template +msgid "Lays Naturel XXL 300g" +msgstr "" + +#. module: point_of_sale +#: view:report.sales.by.margin.pos:0 view:report.sales.by.margin.pos.month:0 +#: view:report.sales.by.user.pos:0 view:report.sales.by.user.pos.month:0 +#: view:report.transaction.pos:0 +msgid "POS " +msgstr "" + +#. module: point_of_sale +#: report:account.statement:0 report:pos.user.product:0 +msgid "Total :" +msgstr "" + +#. module: point_of_sale +#: view:report.cash.register:0 view:report.pos.order:0 +msgid "My Sales" +msgstr "Mine salg" + +#. module: point_of_sale +#: field:pos.order,pricelist_id:0 +msgid "Pricelist" +msgstr "Prisliste" + +#. module: point_of_sale +#: report:pos.details:0 report:pos.details_summary:0 +msgid "Total invoiced" +msgstr "" + +#. module: point_of_sale +#: view:report.pos.order:0 field:report.pos.order,product_qty:0 +msgid "# of Qty" +msgstr "# av Ant" + +#. module: point_of_sale +#: model:ir.model,name:point_of_sale.model_report_sales_by_margin_pos_month +msgid "Sales by margin monthly" +msgstr "" + +#. module: point_of_sale +#: view:pos.order:0 field:report.sales.by.margin.pos,date_order:0 +#: field:report.sales.by.margin.pos.month,date_order:0 +#: field:report.sales.by.user.pos,date_order:0 +#: field:report.sales.by.user.pos.month,date_order:0 +msgid "Order Date" +msgstr "Ordredato" + +#. module: point_of_sale +#: model:product.template,name:point_of_sale.stella_33cl_product_template +msgid "Stella Artois 33cl" +msgstr "" + +#. module: point_of_sale +#: view:report.cash.register:0 +msgid "Cash Analysis created during this year" +msgstr "" + +#. module: point_of_sale +#: report:pos.invoice:0 +msgid "Draft Invoice" +msgstr "Fakturakladd" + +#. module: point_of_sale +#: 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: point_of_sale +#: report:pos.invoice:0 +msgid "Fiscal Position Remark :" +msgstr "" + +#. module: point_of_sale +#: model:product.template,name:point_of_sale.evian_2l_product_template +msgid "Evian 2L" +msgstr "" + +#. module: point_of_sale +#: selection:report.cash.register,month:0 selection:report.pos.order,month:0 +msgid "September" +msgstr "September" + +#. module: point_of_sale +#: report:account.statement:0 report:all.closed.cashbox.of.the.day:0 +msgid "Opening Date" +msgstr "" + +#. module: point_of_sale +#: report:pos.lines:0 +msgid "Taxes :" +msgstr "Mva" + +#. module: point_of_sale +#: model:product.template,name:point_of_sale.coca_light_2l_product_template +msgid "Coca-Cola Light 2L" +msgstr "" + +#. module: point_of_sale +#: model:product.template,name:point_of_sale.oetker_funghi_product_template +msgid "Dr. Oetker Ristorante Funghi" +msgstr "" + +#. module: point_of_sale +#: field:report.transaction.pos,disc:0 +msgid "Disc." +msgstr "Rab." + +#. module: point_of_sale +#: model:product.template,name:point_of_sale.lindemans_kriek_37,5cl_product_template +msgid "Lindemans Kriek 37.5cl" +msgstr "" + +#. module: point_of_sale +#: model:product.template,name:point_of_sale.coca_zero_33cl_product_template +msgid "Coca-Cola Zero 33cl" +msgstr "" + +#. module: point_of_sale +#: report:pos.invoice:0 +msgid "VAT :" +msgstr "MVA:" + +#. module: point_of_sale +#: view:pos.order.line:0 +msgid "POS Order lines" +msgstr "POS Ordre linjer" + +#. module: point_of_sale +#: view:pos.receipt:0 +msgid "Receipt :" +msgstr "Kvittering" + +#. module: point_of_sale +#: field:account.bank.statement.line,pos_statement_id:0 +#: field:pos.order,amount_return:0 +msgid "unknown" +msgstr "ukjent" + +#. module: point_of_sale +#: report:pos.details:0 field:report.transaction.pos,date_create:0 +msgid "Date" +msgstr "Dato" + +#. module: point_of_sale +#: model:ir.actions.act_window,name:point_of_sale.action_pos_discount +#: view:pos.discount:0 +msgid "Apply Discount" +msgstr "" + +#. module: point_of_sale +#: report:account.statement:0 report:all.closed.cashbox.of.the.day:0 +#: view:pos.details:0 report:pos.sales.user:0 report:pos.sales.user.today:0 +#: report:pos.user.product:0 view:report.cash.register:0 +#: field:report.cash.register,user_id:0 +#: field:report.sales.by.margin.pos,user_id:0 +#: field:report.sales.by.margin.pos.month,user_id:0 +#: field:report.sales.by.user.pos,user_id:0 +#: field:report.sales.by.user.pos.month,user_id:0 +#: field:report.transaction.pos,user_id:0 +#: model:res.groups,name:point_of_sale.group_pos_user +msgid "User" +msgstr "Bruker" + +#. module: point_of_sale +#: model:product.template,name:point_of_sale.coca_light_33cl_product_template +msgid "Coca-Cola Light 33cl" +msgstr "" + +#. module: point_of_sale +#: model:product.template,name:point_of_sale.perrier_1l_product_template +msgid "Perrier 1L" +msgstr "" + +#. module: point_of_sale +#: report:pos.details:0 report:pos.details_summary:0 +msgid "Total discount" +msgstr "Total rabatt" + +#. module: point_of_sale +#: model:ir.model,name:point_of_sale.model_pos_box_entries +msgid "Pos Box Entries" +msgstr "" + +#. module: point_of_sale +#: model:product.template,name:point_of_sale.boon_framboise_37,5cl_product_template +msgid "Boon Framboise 37.5cl" +msgstr "" + +#. module: point_of_sale +#: selection:report.cash.register,month:0 selection:report.pos.order,month:0 +msgid "November" +msgstr "November" + +#. module: point_of_sale +#: field:pos.config.journal,code:0 +msgid "Code" +msgstr "Engelsk" + +#. module: point_of_sale +#: view:account.bank.statement:0 report:account.statement:0 +#: report:all.closed.cashbox.of.the.day:0 +#: model:ir.model,name:point_of_sale.model_account_journal +#: field:pos.config.journal,journal_id:0 field:pos.order,sale_journal:0 +#: view:report.cash.register:0 field:report.cash.register,journal_id:0 +#: field:report.pos.order,journal_id:0 +msgid "Journal" +msgstr "Journal" + +#. module: point_of_sale +#: model:product.template,name:point_of_sale.timmermans_faro_37,5cl_product_template +msgid "Timmermans Faro 37.5cl" +msgstr "" + +#. module: point_of_sale +#: view:account.bank.statement:0 view:pos.order:0 field:pos.order,state:0 +#: report:pos.sales.user:0 report:pos.sales.user.today:0 +#: field:report.cash.register,state:0 field:report.pos.order,state:0 +msgid "State" +msgstr "" + +#. module: point_of_sale +#: field:report.transaction.pos,no_trans:0 +msgid "Number of Transaction" +msgstr "Antall transaksjoner" + +#. module: point_of_sale +#: view:pos.box.entries:0 view:pos.box.out:0 view:pos.confirm:0 +#: view:pos.make.payment:0 view:pos.open.statement:0 view:pos.receipt:0 +msgid "Cancel" +msgstr "Avbryt" + +#. module: point_of_sale +#: model:ir.actions.report.xml,name:point_of_sale.pos_details_summary +msgid "Sales (summary)" +msgstr "" + +#. module: point_of_sale +#: model:product.template,name:point_of_sale.timmermans_kriek_37,5cl_product_template +msgid "Timmermans Kriek 37.5cl" +msgstr "" + +#. module: point_of_sale +#: field:account.journal,check_dtls:0 +msgid "Control Balance Before Closing" +msgstr "" + +#. module: point_of_sale +#: model:ir.model,name:point_of_sale.model_pos_order_line +msgid "Lines of Point of Sale" +msgstr "" + +#. module: point_of_sale +#: view:pos.order:0 view:report.transaction.pos:0 +msgid "Amount total" +msgstr "" + +#. module: point_of_sale +#: model:ir.actions.act_window,name:point_of_sale.action_new_bank_statement_all_tree +msgid "Cash Registers" +msgstr "" + +#. module: point_of_sale +#: report:pos.details:0 +msgid "Users" +msgstr "" + +#. module: point_of_sale +#: model:pos.category,name:point_of_sale.food +msgid "Food" +msgstr "Mat" + +#. #-#-#-#-# point_of_sale.pot (OpenERP Server 6.1rc1) #-#-#-#-# +#. module: point_of_sale +#. #-#-#-#-# point_of_sale.pot.web (PROJECT VERSION) #-#-#-#-# +#. openerp-web +#: report:pos.details:0 report:pos.invoice:0 report:pos.lines:0 +#: /home/odo/repositories/addons/trunk/point_of_sale/static/src/xml/pos.xml:30 +#: /home/odo/repositories/addons/trunk/point_of_sale/static/src/xml/pos.xml:69 +msgid "Price" +msgstr "Pris" + +#. module: point_of_sale +#: model:product.template,name:point_of_sale.ijsboerke_stracciatella_2,5l_product_template +msgid "ijsboerke Stracciatella 2.5L" +msgstr "" + +#. module: point_of_sale +#: field:account.journal,journal_user:0 +msgid "PoS Payment Method" +msgstr "" + +#. module: point_of_sale +#: help:product.product,expense_pdt:0 +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 "" + +#. module: point_of_sale +#: field:report.cash.register,date:0 +msgid "Create Date" +msgstr "" + +#. module: point_of_sale +#: model:product.template,name:point_of_sale.coca_regular_33cl_product_template +msgid "Coca-Cola Regular 33cl" +msgstr "" + +#. module: point_of_sale +#: code:addons/point_of_sale/point_of_sale.py:65 +#, python-format +msgid "Unable to Delete !" +msgstr "" + +#. module: point_of_sale +#: model:product.template,name:point_of_sale.lays_paprika_oven_150g_product_template +msgid "Lays Paprika Oven Baked 150g" +msgstr "" + +#. module: point_of_sale +#: report:pos.details:0 report:pos.details_summary:0 +msgid "Start Period" +msgstr "" + +#. module: point_of_sale +#: report:account.statement:0 field:pos.category,complete_name:0 +#: field:pos.category,name:0 report:pos.sales.user:0 +#: report:pos.sales.user.today:0 +msgid "Name" +msgstr "" + +#. module: point_of_sale +#: model:product.template,name:point_of_sale.spa_gazeuse_33cl_product_template +msgid "Spa Barisart 33cl" +msgstr "" + +#. module: point_of_sale +#: code:addons/point_of_sale/point_of_sale.py:284 +#, python-format +msgid "" +"There is no receivable account defined to make payment for the partner: " +"\"%s\" (id:%d)" +msgstr "" + +#. module: point_of_sale +#: view:pos.confirm:0 +msgid "" +"Generate all sale journal entries for non invoiced orders linked to a closed " +"cash register or statement." +msgstr "" + +#. module: point_of_sale +#: code:addons/point_of_sale/point_of_sale.py:293 +#: code:addons/point_of_sale/point_of_sale.py:472 +#: code:addons/point_of_sale/report/pos_invoice.py:46 +#: code:addons/point_of_sale/wizard/pos_box_entries.py:46 +#: code:addons/point_of_sale/wizard/pos_box_entries.py:100 +#: code:addons/point_of_sale/wizard/pos_box_entries.py:105 +#: code:addons/point_of_sale/wizard/pos_box_out.py:86 +#: code:addons/point_of_sale/wizard/pos_box_out.py:88 +#, python-format +msgid "Error !" +msgstr "" + +#. module: point_of_sale +#: report:pos.details:0 report:pos.lines:0 report:pos.payment.report.user:0 +#: report:pos.user.product:0 +msgid "]" +msgstr "" + +#. module: point_of_sale +#: model:ir.model,name:point_of_sale.model_account_bank_statement +msgid "Bank Statement" +msgstr "" + +#. module: point_of_sale +#: sql_constraint:account.journal:0 +msgid "The name of the journal must be unique per company !" +msgstr "" + +#. module: point_of_sale +#: model:product.template,name:point_of_sale.lays_light_naturel_170g_product_template +#: model:product.template,name:point_of_sale.lays_naturel_170g_product_template +msgid "Lays Light Naturel 170g" +msgstr "" + +#. module: point_of_sale +#: report:pos.details:0 report:pos.details_summary:0 report:pos.lines:0 +#: report:pos.payment.report.user:0 report:pos.sales.user:0 +#: report:pos.sales.user.today:0 report:pos.user.product:0 +msgid "Print Date" +msgstr "" + +#. module: point_of_sale +#: code:addons/point_of_sale/point_of_sale.py:282 +#, python-format +msgid "There is no receivable account defined to make payment" +msgstr "" + +#. module: point_of_sale +#: view:pos.open.statement:0 +msgid "Do you want to open cash registers?" +msgstr "" + +#. module: point_of_sale +#: help:pos.category,sequence:0 +msgid "" +"Gives the sequence order when displaying a list of product categories." +msgstr "" + +#. module: point_of_sale +#: field:product.product,expense_pdt:0 +msgid "PoS Cash Output" +msgstr "" + +#. module: point_of_sale +#: model:pos.category,name:point_of_sale.soda +msgid "Soda" +msgstr "" + +#. module: point_of_sale +#: view:account.bank.statement:0 view:pos.order:0 view:report.cash.register:0 +#: view:report.pos.order:0 +msgid "Group By..." +msgstr "" + +#. module: point_of_sale +#: view:pos.order:0 +msgid "POS Orders" +msgstr "" + +#. module: point_of_sale +#: model:ir.actions.report.xml,name:point_of_sale.all_closed_cashbox_of_the_day +msgid "All Closed CashBox" +msgstr "" + +#. module: point_of_sale +#: code:addons/point_of_sale/point_of_sale.py:640 +#, python-format +msgid "No Pricelist !" +msgstr "" + +#. module: point_of_sale +#: view:pos.order:0 +msgid "Update" +msgstr "" + +#. module: point_of_sale +#: report:pos.invoice:0 +msgid "Base" +msgstr "" + +#. module: point_of_sale +#: model:pos.category,name:point_of_sale.categ_others +msgid "Others" +msgstr "" + +#. module: point_of_sale +#: view:product.product:0 +msgid "Point-of-Sale" +msgstr "" + +#. module: point_of_sale +#: model:product.template,name:point_of_sale.evian_50cl_product_template +msgid "Evian 50cl" +msgstr "" + +#. module: point_of_sale +#: view:pos.order:0 +msgid "Notes" +msgstr "" + +#. module: point_of_sale +#: view:pos.order:0 +msgid "Sale Order" +msgstr "" + +#. module: point_of_sale +#: model:product.template,name:point_of_sale.coca_light_lemon_2l_product_template +msgid "Coca-Cola Light Lemon 2L" +msgstr "" + +#. module: point_of_sale +#: report:pos.details:0 report:pos.invoice:0 field:pos.order,amount_tax:0 +msgid "Taxes" +msgstr "" + +#. module: point_of_sale +#: model:ir.actions.act_window,name:point_of_sale.action_pos_order_line +#: model:ir.actions.act_window,name:point_of_sale.action_pos_order_line_day +#: model:ir.actions.act_window,name:point_of_sale.action_pos_order_line_form +msgid "Sale line" +msgstr "" + +#. module: point_of_sale +#: model:product.template,name:point_of_sale.lays_naturel_oven_150g_product_template +msgid "Lays Naturel Oven Baked 150g" +msgstr "" + +#. module: point_of_sale +#: model:product.template,name:point_of_sale.coca_light_decaf_33cl_product_template +msgid "Coca-Cola Light Decaf 33cl" +msgstr "" + +#. module: point_of_sale +#: model:ir.actions.act_window,name:point_of_sale.product_normal_action +#: model:ir.ui.menu,name:point_of_sale.menu_point_of_sale_product +#: model:ir.ui.menu,name:point_of_sale.menu_pos_products +msgid "Products" +msgstr "" + +#. module: point_of_sale +#: model:product.template,name:point_of_sale.oetker_4formaggi_product_template +msgid "Dr. Oetker Ristorante Quattro Formaggi" +msgstr "" + +#. module: point_of_sale +#: model:product.template,name:point_of_sale.coca_zero_1l_product_template +msgid "Coca-Cola Zero 1L" +msgstr "" + +#. module: point_of_sale +#: report:pos.sales.user:0 report:pos.sales.user.today:0 +#: field:report.pos.order,date:0 +msgid "Date Order" +msgstr "" + +#. module: point_of_sale +#: view:report.sales.by.margin.pos:0 view:report.sales.by.margin.pos.month:0 +#: view:report.sales.by.user.pos:0 view:report.sales.by.user.pos.month:0 +#: view:report.transaction.pos:0 +msgid "POS" +msgstr "" + +#. module: point_of_sale +#: 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 "" + +#. module: point_of_sale +#: model:product.template,name:point_of_sale.croky_bolognaise_250g_product_template +msgid "Croky Bolognaise 250g" +msgstr "" + +#. module: point_of_sale +#: view:pos.order:0 +msgid "Extra Info" +msgstr "" + +#. module: point_of_sale +#: report:pos.invoice:0 +msgid "Fax :" +msgstr "" + +#. module: point_of_sale +#: field:pos.order,user_id:0 +msgid "Connected Salesman" +msgstr "" + +#. module: point_of_sale +#: model:ir.actions.act_window,name:point_of_sale.action_pos_sale_all +#: model:ir.ui.menu,name:point_of_sale.menu_point_ofsale_all +msgid "All Sales Orders" +msgstr "" + +#. module: point_of_sale +#: help:product.product,income_pdt:0 +msgid "" +"This is a product you can use to put cash into a statement for the point of " +"sale backend." +msgstr "" + +#. module: point_of_sale +#: view:pos.receipt:0 +msgid "Print the Receipt of the Sale" +msgstr "" + +#. module: point_of_sale +#: field:pos.make.payment,journal:0 +msgid "Payment Mode" +msgstr "" + +#. module: point_of_sale +#: model:product.template,name:point_of_sale.lays_paprika_45g_product_template +msgid "Lays Paprika 45g" +msgstr "" + +#. #-#-#-#-# point_of_sale.pot (OpenERP Server 6.1rc1) #-#-#-#-# +#. module: point_of_sale +#. #-#-#-#-# point_of_sale.pot.web (PROJECT VERSION) #-#-#-#-# +#. openerp-web +#: report:pos.details:0 report:pos.payment.report.user:0 +#: report:pos.user.product:0 field:report.sales.by.margin.pos,qty:0 +#: field:report.sales.by.margin.pos.month,qty:0 +#: /home/odo/repositories/addons/trunk/point_of_sale/static/src/xml/pos.xml:32 +#: /home/odo/repositories/addons/trunk/point_of_sale/static/src/xml/pos.xml:59 +msgid "Qty" +msgstr "" + +#. module: point_of_sale +#: view:report.cash.register:0 view:report.pos.order:0 +msgid "Month -1" +msgstr "" + +#. module: point_of_sale +#: model:ir.actions.act_window,name:point_of_sale.action_report_pos_sale_user +#: model:ir.model,name:point_of_sale.model_pos_sale_user +#: view:pos.payment.report.user:0 +msgid "Sale by User" +msgstr "" + +#. module: point_of_sale +#: model:product.template,name:point_of_sale.evian_1l_product_template +msgid "Evian 1L" +msgstr "" + +#. module: point_of_sale +#: model:ir.ui.menu,name:point_of_sale.menu_open_statement +msgid "Open Cash Registers" +msgstr "" + +#. module: point_of_sale +#: model:pos.category,name:point_of_sale.water +msgid "Water" +msgstr "" + +#. module: point_of_sale +#: view:report.cash.register:0 +msgid "state" +msgstr "" + +#. module: point_of_sale +#: selection:report.cash.register,month:0 selection:report.pos.order,month:0 +msgid "July" +msgstr "" + +#. module: point_of_sale +#: model:product.template,name:point_of_sale.lays_poivre_sel_oven_150g_product_template +msgid "Lays Sel et Poivre Oven Baked 150g" +msgstr "" + +#. module: point_of_sale +#: report:pos.details:0 report:pos.details_summary:0 +msgid "Qty of product" +msgstr "" + +#. module: point_of_sale +#: model:product.template,name:point_of_sale.chimay_rouge_33cl_product_template +msgid "Chimay Rouge 33cl" +msgstr "" + +#. module: point_of_sale +#: field:report.pos.order,delay_validation:0 +msgid "Delay Validation" +msgstr "" + +#. module: point_of_sale +#: field:pos.order,nb_print:0 +msgid "Number of Print" +msgstr "" + +#. module: point_of_sale +#: model:ir.model,name:point_of_sale.model_pos_make_payment +msgid "Point of Sale Payment" +msgstr "" + +#. module: point_of_sale +#: model:product.template,name:point_of_sale.coca_light_50cl_product_template +msgid "Coca-Cola Light 50cl" +msgstr "" + +#. module: point_of_sale +#: model:product.template,name:point_of_sale.jupiler_50cl_product_template +msgid "Jupiler 50cl" +msgstr "" + +#. module: point_of_sale +#: report:pos.details:0 report:pos.details_summary:0 +msgid "End Period" +msgstr "" + +#. module: point_of_sale +#: model:product.template,name:point_of_sale.coca_light_lemon_33cl_product_template +msgid "Coca-Cola Light Lemon 33cl" +msgstr "" + +#. module: point_of_sale +#: field:account.journal,auto_cash:0 +msgid "Automatic Opening" +msgstr "" + +#. module: point_of_sale +#: model:product.template,name:point_of_sale.lays_ketchup_250g_product_template +msgid "Lays Ketchup 250g" +msgstr "" + +#. module: point_of_sale +#: model:product.template,name:point_of_sale.perrier_50cl_product_template +msgid "Perrier 50cl" +msgstr "" + +#. module: point_of_sale +#: selection:report.pos.order,state:0 +msgid "Synchronized" +msgstr "" + +#. module: point_of_sale +#: view:report.cash.register:0 field:report.cash.register,month:0 +#: view:report.pos.order:0 field:report.pos.order,month:0 +msgid "Month" +msgstr "" + +#. module: point_of_sale +#: report:account.statement:0 +msgid "Statement Name" +msgstr "" + +#. module: point_of_sale +#: view:report.pos.order:0 +msgid "Year of order date" +msgstr "" + +#. module: point_of_sale +#: 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 "" + +#. module: point_of_sale +#: view:pos.close.statement:0 +msgid "Yes" +msgstr "" + +#. module: point_of_sale +#: model:ir.model,name:point_of_sale.model_pos_receipt +msgid "Point of sale receipt" +msgstr "" + +#. module: point_of_sale +#: model:ir.actions.act_window,name:point_of_sale.action_report_sales_by_margin_pos_today +msgid "Sales by User Daily margin" +msgstr "" + +#. module: point_of_sale +#: view:pos.open.statement:0 +msgid "Open Registers" +msgstr "" + +#. module: point_of_sale +#: field:report.transaction.pos,journal_id:0 +msgid "Sales Journal" +msgstr "" + +#. module: point_of_sale +#: field:report.cash.register,balance_start:0 +msgid "Opening Balance" +msgstr "" + +#. module: point_of_sale +#: view:account.bank.statement:0 selection:report.pos.order,state:0 +msgid "Closed" +msgstr "" + +#. module: point_of_sale +#: model:product.template,name:point_of_sale.oetker_vegetale_product_template +msgid "Dr. Oetker Ristorante Vegetale" +msgstr "" + +#. module: point_of_sale +#: view:report.pos.order:0 +msgid "POS ordered created by today" +msgstr "" + +#. module: point_of_sale +#: model:product.template,name:point_of_sale.coca_zero_2l_product_template +msgid "Coca-Cola Zero 2L" +msgstr "" + +#. module: point_of_sale +#: field:pos.order,amount_paid:0 selection:pos.order,state:0 +msgid "Paid" +msgstr "" + +#. module: point_of_sale +#: model:ir.actions.act_window,name:point_of_sale.action_pos_all_sales_lines +msgid "All sales lines" +msgstr "" + +#. module: point_of_sale +#: view:pos.order:0 +msgid "Discount" +msgstr "" + +#. module: point_of_sale +#: view:report.cash.register:0 +msgid "Cash Analysis created in last month" +msgstr "" + +#. module: point_of_sale +#: model:pos.category,name:point_of_sale.beers +msgid "Beers" +msgstr "" + +#. module: point_of_sale +#: view:pos.close.statement:0 +msgid "" +"OpenERP will close all cash registers he can close automatically without " +"validation. He will also open all cash registers for which you have to " +"control the ending belance before closing manually." +msgstr "" + +#. module: point_of_sale +#: view:report.cash.register:0 +msgid "Cash Analysis created by today" +msgstr "" + +#. module: point_of_sale +#: selection:report.cash.register,state:0 +msgid "Quotation" +msgstr "" + +#. module: point_of_sale +#: model:product.template,name:point_of_sale.product_product_putmoneyforchange0_product_template +msgid "Cash In" +msgstr "" + +#. #-#-#-#-# point_of_sale.pot (OpenERP Server 6.1rc1) #-#-#-#-# +#. module: point_of_sale +#. #-#-#-#-# point_of_sale.pot.web (PROJECT VERSION) #-#-#-#-# +#. openerp-web +#: report:all.closed.cashbox.of.the.day:0 report:pos.invoice:0 +#: report:pos.lines:0 report:pos.payment.report.user:0 +#: /home/odo/repositories/addons/trunk/point_of_sale/static/src/xml/pos.xml:49 +#: /home/odo/repositories/addons/trunk/point_of_sale/static/src/xml/pos.xml:93 +#: /home/odo/repositories/addons/trunk/point_of_sale/static/src/xml/pos.xml:271 +msgid "Total:" +msgstr "" + +#. module: point_of_sale +#: model:ir.model,name:point_of_sale.model_report_sales_by_margin_pos +msgid "Sales by margin" +msgstr "" + +#. module: point_of_sale +#: model:ir.model,name:point_of_sale.model_pos_config_journal +msgid "Journal Configuration" +msgstr "" + +#. module: point_of_sale +#: view:pos.order:0 +msgid "Statement lines" +msgstr "" + +#. module: point_of_sale +#: model:product.template,name:point_of_sale.croky_paprika_45g_product_template +msgid "Croky Paprika 45g" +msgstr "" + +#. module: point_of_sale +#: view:pos.order:0 +msgid "Reprint" +msgstr "" + +#. module: point_of_sale +#: help:pos.order,user_id:0 +msgid "" +"Person who uses the the cash register. It could be a reliever, a student or " +"an interim employee." +msgstr "" + +#. module: point_of_sale +#: field:report.transaction.pos,invoice_id:0 +msgid "Nbr Invoice" +msgstr "" + +#. #-#-#-#-# point_of_sale.pot (OpenERP Server 6.1rc1) #-#-#-#-# +#. module: point_of_sale +#. #-#-#-#-# point_of_sale.pot.web (PROJECT VERSION) #-#-#-#-# +#. openerp-web +#: model:ir.actions.act_window,name:point_of_sale.action_report_pos_receipt +#: /home/odo/repositories/addons/trunk/point_of_sale/static/src/xml/pos.xml:231 +msgid "Receipt" +msgstr "" + +#. module: point_of_sale +#: view:pos.open.statement:0 +msgid "" +"The system will open all cash registers, so that you can start recording " +"payments. We suggest you to control the opening balance of each register, " +"using their CashBox tab." +msgstr "" + +#. module: point_of_sale +#: report:pos.invoice:0 report:pos.lines:0 field:pos.order.line,price_unit:0 +#: report:pos.payment.report.user:0 +msgid "Unit Price" +msgstr "" + +#. module: point_of_sale +#: view:pos.order:0 +msgid "Done" +msgstr "" + +#. module: point_of_sale +#: model:ir.actions.report.xml,name:point_of_sale.pos_invoice_report +#: report:pos.invoice:0 view:pos.order:0 field:pos.order,invoice_id:0 +msgid "Invoice" +msgstr "" + +#. module: point_of_sale +#: model:product.template,name:point_of_sale.rochefort_8_33cl_product_template +msgid "Rochefort \"8\" 33cl" +msgstr "" + +#. module: point_of_sale +#: view:account.bank.statement:0 selection:report.cash.register,state:0 +msgid "Open" +msgstr "" + +#. module: point_of_sale +#: field:pos.order,name:0 field:pos.order.line,order_id:0 +msgid "Order Ref" +msgstr "" + +#. module: point_of_sale +#: model:product.template,name:point_of_sale.timmermans_geuze_37,5cl_product_template +msgid "Timmermans Geuze 37.5cl" +msgstr "" + +#. module: point_of_sale +#: model:product.template,name:point_of_sale.lays_pickles_250g_product_template +msgid "Lays Pickels 250g" +msgstr "" + +#. module: point_of_sale +#: field:report.sales.by.margin.pos,net_margin_per_qty:0 +#: field:report.sales.by.margin.pos.month,net_margin_per_qty:0 +msgid "Net margin per Qty" +msgstr "" + +#. module: point_of_sale +#: model:ir.model,name:point_of_sale.model_report_sales_by_user_pos_month +msgid "Sales by user monthly" +msgstr "" + +#. module: point_of_sale +#: model:product.template,name:point_of_sale.spa_et_fruit_50cl_product_template +msgid "Spa et Fruit Orange 50cl" +msgstr "" + +#. module: point_of_sale +#: view:report.sales.by.margin.pos:0 view:report.sales.by.margin.pos.month:0 +msgid "Sales by User Margin" +msgstr "" + +#. module: point_of_sale +#: code:addons/point_of_sale/wizard/pos_payment.py:59 +#, python-format +msgid "Paiement" +msgstr "" + +#. module: point_of_sale +#: report:pos.invoice:0 +msgid "Taxes:" +msgstr "" + +#. module: point_of_sale +#: model:product.template,name:point_of_sale.pepsi_max_33cl_product_template +msgid "Pepsi Max 33cl" +msgstr "" + +#. module: point_of_sale +#: model:ir.model,name:point_of_sale.model_report_pos_order +msgid "Point of Sale Orders Statistics" +msgstr "" + +#. #-#-#-#-# point_of_sale.pot (OpenERP Server 6.1rc1) #-#-#-#-# +#. module: point_of_sale +#. #-#-#-#-# point_of_sale.pot.web (PROJECT VERSION) #-#-#-#-# +#. openerp-web +#: model:ir.model,name:point_of_sale.model_product_product +#: report:pos.details:0 field:pos.order.line,product_id:0 +#: report:pos.payment.report.user:0 report:pos.user.product:0 +#: view:report.pos.order:0 field:report.pos.order,product_id:0 +#: /home/odo/repositories/addons/trunk/point_of_sale/static/src/xml/pos.xml:29 +msgid "Product" +msgstr "" + +#. module: point_of_sale +#: model:product.template,name:point_of_sale.oetker_pollo_product_template +msgid "Dr. Oetker Ristorante Pollo" +msgstr "" + +#. module: point_of_sale +#: model:ir.actions.report.xml,name:point_of_sale.pos_lines_report +msgid "Pos Lines" +msgstr "" + +#. module: point_of_sale +#: model:product.template,name:point_of_sale.grisette_cerise_25cl_product_template +msgid "Grisette Cerise 25cl" +msgstr "" + +#. module: point_of_sale +#: model:product.template,name:point_of_sale.chaudfontaine_33cl_product_template +msgid "Chaudfontaine 33cl" +msgstr "" + +#. module: point_of_sale +#: model:product.template,name:point_of_sale.oetker_margherita_product_template +msgid "Dr. Oetker La Margherita" +msgstr "" + +#. module: point_of_sale +#: model:ir.ui.menu,name:point_of_sale.menu_point_root +msgid "PoS Backend" +msgstr "" + +#. module: point_of_sale +#: view:pos.order:0 selection:pos.order,state:0 +msgid "Posted" +msgstr "" + +#. module: point_of_sale +#: field:pos.order,date_order:0 +msgid "Date Ordered" +msgstr "" + +#. module: point_of_sale +#: model:ir.actions.act_window,name:point_of_sale.action_report_pos_payment_report_user +#: model:ir.model,name:point_of_sale.model_pos_payment_report_user +msgid "Sales lines by Users" +msgstr "" + +#. module: point_of_sale +#: model:product.template,name:point_of_sale.pepsi_2l_product_template +msgid "Pepsi 2L" +msgstr "" + +#. module: point_of_sale +#: report:pos.details:0 +msgid "Order" +msgstr "" + +#. module: point_of_sale +#: code:addons/point_of_sale/point_of_sale.py:472 +#, python-format +msgid "There is no income account defined for this product: \"%s\" (id:%d)" +msgstr "" + +#. module: point_of_sale +#: view:pos.details:0 +msgid "POS Details" +msgstr "" + +#. module: point_of_sale +#: field:pos.details,user_ids:0 +msgid "Salesmen" +msgstr "" + +#. module: point_of_sale +#: model:ir.model,name:point_of_sale.model_report_cash_register +#: view:report.cash.register:0 +msgid "Point of Sale Cash Register Analysis" +msgstr "" + +#. module: point_of_sale +#: report:pos.lines:0 +msgid "Net Total :" +msgstr "" + +#. module: point_of_sale +#: model:res.groups,name:point_of_sale.group_pos_manager +msgid "Manager" +msgstr "" + +#. module: point_of_sale +#: field:pos.details,date_start:0 field:pos.sale.user,date_start:0 +msgid "Date Start" +msgstr "" + +#. #-#-#-#-# point_of_sale.pot (OpenERP Server 6.1rc1) #-#-#-#-# +#. module: point_of_sale +#. #-#-#-#-# point_of_sale.pot.web (PROJECT VERSION) #-#-#-#-# +#. openerp-web +#: field:pos.order,amount_total:0 report:pos.payment.report.user:0 +#: field:report.sales.by.user.pos,amount:0 +#: field:report.sales.by.user.pos.month,amount:0 +#: /home/odo/repositories/addons/trunk/point_of_sale/static/src/xml/pos.xml:33 +msgid "Total" +msgstr "" + +#. module: point_of_sale +#: view:pos.sale.user:0 +msgid "Sale By User" +msgstr "" + +#. module: point_of_sale +#: model:ir.actions.act_window,name:point_of_sale.action_pos_open_statement +msgid "Open Cash Register" +msgstr "" + +#. module: point_of_sale +#: model:product.template,name:point_of_sale.lindemans_pecheresse_37,5cl_product_template +msgid "Lindemans Pecheresse 37.5cl" +msgstr "" + +#. module: point_of_sale +#: model:product.template,name:point_of_sale.pepsi_33cl_product_template +msgid "Pepsi 33cl" +msgstr "" + +#. module: point_of_sale +#: report:account.statement:0 +#: model:ir.actions.report.xml,name:point_of_sale.account_statement +msgid "Statement" +msgstr "" + +#. module: point_of_sale +#: model:ir.actions.act_window,name:point_of_sale.action_pos_payment_report +#: model:ir.model,name:point_of_sale.model_pos_payment_report +#: view:pos.payment.report:0 +msgid "Payment Report" +msgstr "" + +#. module: point_of_sale +#: model:product.template,name:point_of_sale.fanta_orange_25cl_product_template +msgid "Fanta Orange 25cl" +msgstr "" + +#. module: point_of_sale +#: view:pos.confirm:0 +msgid "Generate Journal Entries" +msgstr "" + +#. module: point_of_sale +#: report:account.statement:0 report:all.closed.cashbox.of.the.day:0 +#: report:pos.details:0 report:pos.details_summary:0 report:pos.lines:0 +#: field:pos.order,company_id:0 field:pos.order.line,company_id:0 +#: report:pos.payment.report.user:0 report:pos.sales.user:0 +#: report:pos.sales.user.today:0 report:pos.user.product:0 +#: field:report.pos.order,company_id:0 +msgid "Company" +msgstr "" + +#. module: point_of_sale +#: report:pos.invoice:0 +msgid "Invoice Date" +msgstr "" + +#. module: point_of_sale +#: field:pos.box.entries,name:0 +msgid "Reason" +msgstr "" + +#. module: point_of_sale +#: model:product.template,name:point_of_sale.orangina_33cl_product_template +msgid "Orangina 33cl" +msgstr "" + +#. module: point_of_sale +#: 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 "" + +#. module: point_of_sale +#: model:product.template,name:point_of_sale.chimay_bleu_33cl_product_template +msgid "Chimay Bleu 33cl" +msgstr "" + +#. module: point_of_sale +#: model:ir.actions.act_window,name:point_of_sale.action_account_journal_form +#: model:ir.ui.menu,name:point_of_sale.menu_action_account_journal_form_open +msgid "Payment Methods" +msgstr "" + +#. module: point_of_sale +#: model:pos.category,name:point_of_sale.chips +msgid "Chips" +msgstr "" + +#. module: point_of_sale +#: model:product.template,name:point_of_sale.oetker_spinaci_product_template +msgid "Dr. Oetker Ristorante Spinaci" +msgstr "" + +#. module: point_of_sale +#: code:addons/point_of_sale/point_of_sale.py:293 +#: code:addons/point_of_sale/wizard/pos_box_entries.py:100 +#: code:addons/point_of_sale/wizard/pos_box_out.py:88 +#, python-format +msgid "You have to open at least one cashbox" +msgstr "" + +#. module: point_of_sale +#: model:ir.actions.report.xml,name:point_of_sale.pos_payment_report_user +msgid "Today's Payment By User" +msgstr "" + +#. module: point_of_sale +#: 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 "" + +#. module: point_of_sale +#: code:addons/point_of_sale/point_of_sale.py:238 +#: code:addons/point_of_sale/point_of_sale.py:253 +#, python-format +msgid "Error!" +msgstr "" + +#. module: point_of_sale +#: report:pos.lines:0 +msgid "No. Of Articles" +msgstr "" + +#. module: point_of_sale +#: model:product.template,name:point_of_sale.ijsboerke_vanille_2,5l_product_template +msgid "ijsboerke Vanille 2.5L" +msgstr "" + +#. module: point_of_sale +#: selection:pos.order,state:0 selection:report.pos.order,state:0 +msgid "Cancelled" +msgstr "" + +#. module: point_of_sale +#: report:pos.user.product:0 +msgid "Ending Date" +msgstr "" + +#. module: point_of_sale +#: model:product.template,name:point_of_sale.orangina_1,5l_product_template +msgid "Orangina 1.5L" +msgstr "" + +#. module: point_of_sale +#: field:pos.order,picking_id:0 +msgid "Picking" +msgstr "" + +#. module: point_of_sale +#: model:pos.category,name:point_of_sale.ice_cream +msgid "Ice Cream" +msgstr "" + +#. module: point_of_sale +#: field:pos.order,shop_id:0 field:report.pos.order,shop_id:0 +msgid "Shop" +msgstr "" + +#. module: point_of_sale +#: model:ir.model,name:point_of_sale.model_account_bank_statement_line +msgid "Bank Statement Line" +msgstr "" + +#. module: point_of_sale +#: model:product.template,name:point_of_sale.belle_vue_kriek_25cl_product_template +msgid "Belle-Vue Kriek 25cl" +msgstr "" + +#. module: point_of_sale +#: model:product.template,name:point_of_sale.chaudfontaine_petillante_1,5l_product_template +msgid "Chaudfontaine Petillante 1.5l" +msgstr "" + +#. module: point_of_sale +#: view:report.sales.by.user.pos:0 view:report.sales.by.user.pos.month:0 +#: view:report.transaction.pos:0 +msgid "POS Report" +msgstr "" + +#. module: point_of_sale +#: model:product.template,name:point_of_sale.chaudfontaine_1,5l_product_template +msgid "Chaudfontaine 1.5l" +msgstr "" + +#. module: point_of_sale +#: model:ir.actions.act_window,name:point_of_sale.action_pos_close_statement +msgid "Close Cash Register" +msgstr "" + +#. 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 "" + +#. module: point_of_sale +#: model:product.template,name:point_of_sale.coca_regular_50cl_product_template +msgid "Coca-Cola Regular 50cl" +msgstr "" + +#. module: point_of_sale +#: view:pos.confirm:0 +msgid "Generate Entries" +msgstr "" + +#. module: point_of_sale +#: field:pos.box.entries,product_id:0 field:pos.box.out,product_id:0 +msgid "Operation" +msgstr "" + +#. module: point_of_sale +#: field:pos.order,account_move:0 +msgid "Journal Entry" +msgstr "" + +#. module: point_of_sale +#: selection:report.cash.register,state:0 +msgid "Confirmed" +msgstr "" + +#. module: point_of_sale +#: report:pos.invoice:0 +msgid "Cancelled Invoice" +msgstr "" + +#. module: point_of_sale +#: view:report.cash.register:0 +msgid "Confirm" +msgstr "" + +#. module: point_of_sale +#: help:account.journal,auto_cash:0 +msgid "" +"This field authorize the automatic creation of the cashbox, without control " +"of the initial balance." +msgstr "" + +#. module: point_of_sale +#: model:product.template,name:point_of_sale.coca_zero_50cl_product_template +msgid "Coca-Cola Zero 50cl" +msgstr "" + +#. module: point_of_sale +#: model:product.template,name:point_of_sale.oetker_tonno_product_template +msgid "Dr. Oetker Ristorante Tonno" +msgstr "" + +#. module: point_of_sale +#: report:pos.invoice:0 +msgid "Supplier Invoice" +msgstr "" + +#. module: point_of_sale +#: constraint:account.bank.statement:0 +msgid "The journal and period chosen have to belong to the same company." +msgstr "" + +#. module: point_of_sale +#: view:pos.order:0 selection:pos.order,state:0 +#: selection:report.pos.order,state:0 +msgid "New" +msgstr "" + +#. module: point_of_sale +#: 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 "" + +#. module: point_of_sale +#: model:product.template,name:point_of_sale.fanta_zero_orange_33cl_product_template +msgid "Fanta Zero Orange 33cl" +msgstr "" + +#. module: point_of_sale +#: view:report.pos.order:0 +msgid "Day of order date" +msgstr "" + +#. module: point_of_sale +#: model:ir.ui.menu,name:point_of_sale.menu_point_rep +msgid "Reporting" +msgstr "" + +#. module: point_of_sale +#: model:product.template,name:point_of_sale.maes_33cl_product_template +msgid "Maes 33cl" +msgstr "" + +#. module: point_of_sale +#: view:pos.box.entries:0 +msgid "Put Money" +msgstr "" + +#. module: point_of_sale +#: sql_constraint:account.journal:0 +msgid "The code of the journal must be unique per company !" +msgstr "" + +#. module: point_of_sale +#: model:ir.ui.menu,name:point_of_sale.menu_point_config_product +msgid "Configuration" +msgstr "" + +#. module: point_of_sale +#: model:product.template,name:point_of_sale.orval_33cl_product_template +msgid "Orval 33cl" +msgstr "" + +#. module: point_of_sale +#: model:product.template,name:point_of_sale.coca_regular_1l_product_template +msgid "Coca-Cola Regular 1L" +msgstr "" + +#. module: point_of_sale +#: code:addons/point_of_sale/point_of_sale.py:253 +#, python-format +msgid "Unable to cancel the picking." +msgstr "" + +#. module: point_of_sale +#: view:report.pos.order:0 +msgid "POS ordered created during current month" +msgstr "" + +#. module: point_of_sale +#: view:report.pos.order:0 +msgid "POS ordered created last month" +msgstr "" + +#. module: point_of_sale +#: model:ir.actions.act_window,name:point_of_sale.action_pos_invoice +msgid "Invoices" +msgstr "" + +#. module: point_of_sale +#: selection:report.cash.register,month:0 selection:report.pos.order,month:0 +msgid "December" +msgstr "" + +#. module: point_of_sale +#: model:product.template,name:point_of_sale.spa_gazeuse_1,5l_product_template +msgid "Spa Barisart 1.5l" +msgstr "" + +#. module: point_of_sale +#: code:addons/point_of_sale/point_of_sale.py:329 view:pos.order:0 +#, python-format +msgid "Return Products" +msgstr "" + +#. module: point_of_sale +#: model:product.template,name:point_of_sale.jupiler_33cl_product_template +msgid "Jupiler 33cl" +msgstr "" + +#. module: point_of_sale +#: model:product.template,name:point_of_sale.ijsboerke_chocolat_2,5l_product_template +msgid "ijsboerke Chocolat 2.5L" +msgstr "" + +#. module: point_of_sale +#: view:pos.box.out:0 +msgid "Take Money" +msgstr "" + +#. module: point_of_sale +#: model:ir.model,name:point_of_sale.model_pos_details +msgid "Sales Details" +msgstr "" + +#. module: point_of_sale +#: code:addons/point_of_sale/wizard/pos_close_statement.py:50 +#, python-format +msgid "Message" +msgstr "" + +#. module: point_of_sale +#: view:account.journal:0 model:ir.model,name:point_of_sale.model_pos_order +#: model:ir.ui.menu,name:point_of_sale.menu_point_root_touchscreen +#: view:product.product:0 +msgid "Point of Sale" +msgstr "" + +#. module: point_of_sale +#: view:pos.order:0 field:pos.payment.report.user,user_id:0 +#: field:pos.sale.user,user_id:0 field:pos.sales.user.today,user_id:0 +#: view:report.pos.order:0 field:report.pos.order,user_id:0 +msgid "Salesman" +msgstr "" + +#. module: point_of_sale +#: report:pos.details:0 view:pos.order:0 selection:pos.order,state:0 +#: view:report.pos.order:0 selection:report.pos.order,state:0 +msgid "Invoiced" +msgstr "" + +#. module: point_of_sale +#: view:pos.close.statement:0 +msgid "No" +msgstr "" + +#. module: point_of_sale +#: model:product.template,name:point_of_sale.spa_gazeuse_50cl_product_template +msgid "Spa Barisart 50cl" +msgstr "" + +#. module: point_of_sale +#: model:pos.category,name:point_of_sale.special_beers +msgid "Special Beers" +msgstr "" + +#. module: point_of_sale +#: field:pos.order.line,notice:0 +msgid "Discount Notice" +msgstr "" + +#. module: point_of_sale +#: view:pos.order:0 +msgid "Re-Print" +msgstr "" + +#. module: point_of_sale +#: view:report.cash.register:0 +msgid "Draft" +msgstr "" + +#. module: point_of_sale +#: model:product.template,name:point_of_sale.fanta_zero_orange_1,5l_product_template +msgid "Fanta Zero Orange 1.5L" +msgstr "" + +#. module: point_of_sale +#: report:pos.invoice:0 +msgid "PRO-FORMA" +msgstr "" + +#. module: point_of_sale +#: code:addons/point_of_sale/point_of_sale.py:358 +#, python-format +msgid "Please provide a partner for the sale." +msgstr "" + +#. module: point_of_sale +#: model:pos.category,name:point_of_sale.fruity_beers +msgid "Fruity Beers" +msgstr "" + +#. module: point_of_sale +#: model:product.template,name:point_of_sale.ijsboerke_dame_blanche_2,5l_product_template +msgid "ijsboerke Dame Blanche 2.5L" +msgstr "" + +#. module: point_of_sale +#: model:product.template,name:point_of_sale.ijsboerke_moka_2,5l_product_template +msgid "ijsboerke Moka 2.5L" +msgstr "" + +#. module: point_of_sale +#: view:pos.order:0 +msgid "Search Sales Order" +msgstr "" + +#. module: point_of_sale +#: model:ir.actions.act_window,help:point_of_sale.action_account_journal_form +msgid "" +"Payment methods are defined by accounting journals having the field Payment " +"Method checked." +msgstr "" + +#. module: point_of_sale +#: model:ir.actions.act_window,name:point_of_sale.action_trans_pos_tree +#: model:ir.model,name:point_of_sale.model_report_sales_by_user_pos +msgid "Sales by user" +msgstr "" + +#. module: point_of_sale +#: model:product.template,name:point_of_sale.oetker_hawaii_product_template +msgid "Dr. Oetker Ristorante Hawaii" +msgstr "" + +#. module: point_of_sale +#: view:pos.receipt:0 +msgid "Print Receipt" +msgstr "" + +#. module: point_of_sale +#: selection:report.cash.register,month:0 selection:report.pos.order,month:0 +msgid "January" +msgstr "" + +#. module: point_of_sale +#: view:pos.order.line:0 +msgid "POS Orders lines" +msgstr "" + +#. module: point_of_sale +#: model:product.template,name:point_of_sale.chaudfontaine_petillante_33cl_product_template +msgid "Chaudfontaine Petillante 33cl" +msgstr "" + +#. module: point_of_sale +#: model:ir.actions.act_window,help:point_of_sale.product_normal_action +msgid "" +"You must define a Product for everything you buy or sell. Products can be " +"raw materials, stockable products, consumables or services. The Product form " +"contains detailed information about your products related to procurement " +"logistics, sales price, product category, suppliers and so on." +msgstr "" + +#. module: point_of_sale +#: model:product.template,name:point_of_sale.pepsi_max_2l_product_template +msgid "Pepsi Max 2L" +msgstr "" + +#. module: point_of_sale +#: code:addons/point_of_sale/point_of_sale.py:358 +#, python-format +msgid "Error" +msgstr "" + +#. module: point_of_sale +#: model:product.template,name:point_of_sale.lays_paprika_300g_product_template +msgid "Lays Paprika XXL 300g" +msgstr "" + +#. module: point_of_sale +#: view:pos.close.statement:0 +msgid "Do you want to close your cash registers?" +msgstr "" + +#. module: point_of_sale +#: report:pos.invoice:0 +msgid "Refund" +msgstr "" + +#. module: point_of_sale +#: code:addons/point_of_sale/report/pos_invoice.py:46 +#, python-format +msgid "Please create an invoice for this sale." +msgstr "" + +#. module: point_of_sale +#: model:product.template,name:point_of_sale.oetker_mozzarella_product_template +msgid "Dr. Oetker Ristorante Mozzarella" +msgstr "" + +#. module: point_of_sale +#: code:addons/point_of_sale/wizard/pos_close_statement.py:66 +#: model:ir.ui.menu,name:point_of_sale.menu_close_statement +#: view:pos.close.statement:0 +#, python-format +msgid "Close Cash Registers" +msgstr "" + +#. module: point_of_sale +#: report:pos.details:0 report:pos.payment.report.user:0 +msgid "Disc(%)" +msgstr "" + +#. module: point_of_sale +#: view:pos.order:0 +msgid "General Information" +msgstr "" + +#. #-#-#-#-# point_of_sale.pot (OpenERP Server 6.1rc1) #-#-#-#-# +#. module: point_of_sale +#. #-#-#-#-# point_of_sale.pot.web (PROJECT VERSION) #-#-#-#-# +#. openerp-web +#: view:pos.details:0 view:pos.discount:0 view:pos.payment.report:0 +#: view:pos.payment.report.user:0 view:pos.sale.user:0 +#: /home/odo/repositories/addons/trunk/point_of_sale/static/src/xml/pos.xml:13 +msgid "Close" +msgstr "" + +#. module: point_of_sale +#: view:pos.order:0 +msgid "Order lines" +msgstr "" + +#. module: point_of_sale +#: view:account.journal:0 +msgid "Extended Configuration" +msgstr "" + +#. module: point_of_sale +#: field:pos.order.line,price_subtotal:0 +msgid "Subtotal w/o Tax" +msgstr "" + +#. module: point_of_sale +#: model:product.template,name:point_of_sale.spa_50cl_product_template +msgid "Spa Reine 50cl" +msgstr "" + +#. module: point_of_sale +#: model:product.template,name:point_of_sale.leffe_blonde_33cl_product_template +msgid "Leffe Blonde 33cl" +msgstr "" + +#. module: point_of_sale +#: model:ir.actions.act_window,name:point_of_sale.action_report_pos_payment +msgid "Pyament Report" +msgstr "" + +#. module: point_of_sale +#: field:report.transaction.pos,jl_id:0 +msgid "Cash Journals" +msgstr "" + +#. module: point_of_sale +#: report:pos.sales.user.today:0 +msgid "Today's Sales By User" +msgstr "" + +#. module: point_of_sale +#: report:pos.invoice:0 +msgid "Customer Code" +msgstr "" + +#. module: point_of_sale +#: code:addons/point_of_sale/wizard/pos_box_out.py:86 +#, python-format +msgid "please check that account is set to %s" +msgstr "" + +#. module: point_of_sale +#: field:pos.config.journal,name:0 report:pos.invoice:0 report:pos.lines:0 +msgid "Description" +msgstr "" + +#. module: point_of_sale +#: selection:report.cash.register,month:0 selection:report.pos.order,month:0 +msgid "May" +msgstr "" + +#. module: point_of_sale +#: report:pos.lines:0 +msgid "Sales lines" +msgstr "" + +#. module: point_of_sale +#: view:pos.order:0 +msgid "Yesterday" +msgstr "" + +#. module: point_of_sale +#: field:pos.order,note:0 +msgid "Internal Notes" +msgstr "" + +#. module: point_of_sale +#: model:product.template,name:point_of_sale.coca_zero_decaf_33cl_product_template +msgid "Coca-Cola Zero Decaf 33cl" +msgstr "" + +#. module: point_of_sale +#: view:pos.box.out:0 +msgid "Describe why you take money from the cash register:" +msgstr "" + +#. module: point_of_sale +#: model:ir.actions.act_window,name:point_of_sale.action_report_pos_order_all +#: model:ir.ui.menu,name:point_of_sale.menu_report_pos_order_all +#: view:report.pos.order:0 +msgid "Point of Sale Analysis" +msgstr "" + +#. module: point_of_sale +#: view:pos.order:0 field:pos.order,partner_id:0 view:report.pos.order:0 +msgid "Customer" +msgstr "" + +#. module: point_of_sale +#: selection:report.cash.register,month:0 selection:report.pos.order,month:0 +msgid "February" +msgstr "" + +#. module: point_of_sale +#: view:report.cash.register:0 +msgid " Today " +msgstr "" + +#. module: point_of_sale +#: selection:report.cash.register,month:0 selection:report.pos.order,month:0 +msgid "April" +msgstr "" + +#. module: point_of_sale +#: field:pos.order,statement_ids:0 +msgid "Payments" +msgstr "" + +#. module: point_of_sale +#: report:pos.invoice:0 +msgid "Supplier Refund" +msgstr "" + +#. module: point_of_sale +#: model:ir.actions.act_window,name:point_of_sale.action_report_sales_by_margin_pos_month +msgid "Sales by User Monthly margin" +msgstr "" + +#. module: point_of_sale +#: model:product.template,name:point_of_sale.leffe_9_33cl_product_template +msgid "Leffe Brune \"9\" 33cl" +msgstr "" + +#. module: point_of_sale +#: help:account.journal,journal_user:0 +msgid "" +"Check this box if this journal define a payment method that can be used in " +"point of sales." +msgstr "" + +#. module: point_of_sale +#: field:pos.category,sequence:0 +msgid "Sequence" +msgstr "" + +#. module: point_of_sale +#: code:addons/point_of_sale/wizard/pos_return.py:316 view:pos.make.payment:0 +#, python-format +msgid "Make Payment" +msgstr "" + +#. module: point_of_sale +#: constraint:pos.category:0 +msgid "Error ! You cannot create recursive categories." +msgstr "" + +#. module: point_of_sale +#: model:ir.model,name:point_of_sale.model_pos_sales_user_today +msgid "Sales User Today" +msgstr "" + +#. module: point_of_sale +#: view:report.pos.order:0 +msgid "Month of order date" +msgstr "" + +#. module: point_of_sale +#: field:product.product,income_pdt:0 +msgid "PoS Cash Input" +msgstr "" + +#. module: point_of_sale +#: view:report.cash.register:0 field:report.cash.register,year:0 +#: view:report.pos.order:0 field:report.pos.order,year:0 +msgid "Year" +msgstr "" + +#. openerp-web +#: /home/odo/repositories/addons/trunk/point_of_sale/static/src/xml/pos.xml:31 +msgid "Disc (%)" +msgstr "" + +#. openerp-web +#: /home/odo/repositories/addons/trunk/point_of_sale/static/src/xml/pos.xml:41 +msgid "Subtotal:" +msgstr "" + +#. openerp-web +#: /home/odo/repositories/addons/trunk/point_of_sale/static/src/xml/pos.xml:45 +#: /home/odo/repositories/addons/trunk/point_of_sale/static/src/xml/pos.xml:268 +msgid "Tax:" +msgstr "" + +#. openerp-web +#: /home/odo/repositories/addons/trunk/point_of_sale/static/src/xml/pos.xml:64 +msgid "Disc" +msgstr "" + +#. openerp-web +#: /home/odo/repositories/addons/trunk/point_of_sale/static/src/xml/pos.xml:71 +msgid "+/-" +msgstr "" + +#. openerp-web +#: /home/odo/repositories/addons/trunk/point_of_sale/static/src/xml/pos.xml:105 +msgid "Paid:" +msgstr "" + +#. openerp-web +#: /home/odo/repositories/addons/trunk/point_of_sale/static/src/xml/pos.xml:113 +#: /home/odo/repositories/addons/trunk/point_of_sale/static/src/xml/pos.xml:288 +msgid "Change:" +msgstr "" + +#. openerp-web +#: /home/odo/repositories/addons/trunk/point_of_sale/static/src/xml/pos.xml:124 +msgid "Back to Products" +msgstr "" + +#. openerp-web +#: /home/odo/repositories/addons/trunk/point_of_sale/static/src/xml/pos.xml:127 +msgid "Validate" +msgstr "" + +#. openerp-web +#: /home/odo/repositories/addons/trunk/point_of_sale/static/src/xml/pos.xml:140 +msgid "pending orders" +msgstr "" + +#. openerp-web +#: /home/odo/repositories/addons/trunk/point_of_sale/static/src/xml/pos.xml:145 +msgid "" +"There are pending operations that could not be saved into the database, are " +"you sure you want to exit?" +msgstr "" + +#. openerp-web +#: /home/odo/repositories/addons/trunk/point_of_sale/static/src/xml/pos.xml:236 +msgid "Print" +msgstr "" + +#. openerp-web +#: /home/odo/repositories/addons/trunk/point_of_sale/static/src/xml/pos.xml:238 +msgid "Next Order" +msgstr "" + +#. openerp-web +#: /home/odo/repositories/addons/trunk/point_of_sale/static/src/xml/pos.xml:248 +msgid "Phone:" +msgstr "" + +#. openerp-web +#: /home/odo/repositories/addons/trunk/point_of_sale/static/src/xml/pos.xml:249 +msgid "User:" +msgstr "" + +#. openerp-web +#: /home/odo/repositories/addons/trunk/point_of_sale/static/src/xml/pos.xml:250 +msgid "Shop:" +msgstr "" diff --git a/addons/point_of_sale/point_of_sale.py b/addons/point_of_sale/point_of_sale.py index b17e672cb9c..24c482bd53c 100644 --- a/addons/point_of_sale/point_of_sale.py +++ b/addons/point_of_sale/point_of_sale.py @@ -1242,7 +1242,7 @@ import io, StringIO class ean_wizard(osv.osv_memory): _name = 'pos.ean_wizard' _columns = { - 'ean13_pattern': fields.char('Ean13 Pattern', size=32, required=True, translate=True), + 'ean13_pattern': fields.char('Reference', size=32, required=True, translate=True), } def sanitize_ean13(self, cr, uid, ids, context): for r in self.browse(cr,uid,ids): @@ -1306,7 +1306,7 @@ class product_product(osv.osv): def edit_ean(self, cr, uid, ids, context): return { - 'name': "Edit Ean", + 'name': _("Assign a Custom EAN"), 'type': 'ir.actions.act_window', 'view_type': 'form', 'view_mode': 'form', diff --git a/addons/point_of_sale/point_of_sale_view.xml b/addons/point_of_sale/point_of_sale_view.xml index 0e906186285..4a56c0dda3c 100644 --- a/addons/point_of_sale/point_of_sale_view.xml +++ b/addons/point_of_sale/point_of_sale_view.xml @@ -608,35 +608,21 @@ <field name="domain">[('date_order','like',time.strftime('%Y-%m'))]</field> </record> - <record id="product_normal_form_pos_view" model="ir.ui.view"> - <field name="name">product.normal.pos.form.inherit</field> - <field name="model">product.product</field> - <field name="inherit_id" ref="product.product_normal_form_view"/> - <field name="arch" type="xml"> - <group name="status" position="after"> - <group name="pos" string="Point of Sale"> - <field name="pos_categ_id"/> - <field name="to_weight" /> - </group> - </group> - </field> - </record> - - <record id="product_normal_form_view" model="ir.ui.view"> <field name="name">product.normal.form.inherit</field> <field name="model">product.product</field> <field name="inherit_id" ref="stock.view_normal_procurement_locations_form"/> <field name="arch" type="xml"> - <group name="misc" position="after"> - <group name="pos" colspan="2" col="2"> - <separator string="Point of Sale" colspan="2"/> + <group name="sale" position="inside"> + <group name="pos" string="Point of Sale"> + <field name="pos_categ_id"/> + <field name="to_weight" /> <field name="income_pdt"/> <field name="expense_pdt"/> </group> </group> <field name="ean13" position="after"> - <button name="edit_ean" type="object" string="Edit" /> + <button name="edit_ean" type="object" string="Set a Custom EAN" class="oe_link oe_edit_only"/> </field> </field> </record> @@ -930,7 +916,7 @@ </field> </group> - <div attrs="{'invisible': [('state', '=', 'closed')]}"> + <div attrs="{'invisible': [('state', '!=', 'closed')]}"> <group class="oe_subtotal_footer oe_right"> <field name="cash_register_balance_start" readonly="1" string="Opening Balance" class="oe_subtotal_footer_separator"/> <field name="cash_register_total_entry_encoding" attrs="{'invisible' : [('state', '=', 'opening_control')]}" string="+ Transactions"/> @@ -947,7 +933,7 @@ </div> - <group class="oe_subtotal_footer oe_right" attrs="{'invisible' : [('state', 'in', ('opening_control', 'closed'))]}"> + <group class="oe_subtotal_footer oe_right" attrs="{'invisible' : [('state', '!=', 'closed')]}"> <field name="cash_register_balance_end_real" class="oe_subtotal_footer_separator"/> <field name="cash_register_difference" class="oe_subtotal_footer_separator"/> </group> @@ -1070,9 +1056,17 @@ <field name="type">form</field> <field name="arch" type="xml"> <form string="Ean13 Generator" version="7.0"> - <field name="ean13_pattern"/> + <p class="oe_grey"> + Enter a reference for this product, it will be converted + automatically to a valid EAN number. + </p> + <group> + <field name="ean13_pattern" class="oe_inline"/> + </group> <footer> - <button name="sanitize_ean13" type="object" string="Apply"/> + <button name="sanitize_ean13" type="object" string="Apply" class="oe_highlight"/> or + <button icon="gtk-stop" special="cancel" + string="Cancel" class="oe_link"/> </footer> </form> </field> diff --git a/addons/point_of_sale/static/src/css/pos.css b/addons/point_of_sale/static/src/css/pos.css index a9baf041942..bfe2ef7f9dc 100644 --- a/addons/point_of_sale/static/src/css/pos.css +++ b/addons/point_of_sale/static/src/css/pos.css @@ -1072,12 +1072,14 @@ -webkit-transition-timing-function: ease-out; } -.point-of-sale .pos-actionbar .button.disabled{ - color:#AAA; +.point-of-sale .pos-actionbar .button.disabled *{ + opacity: 0.5; } .point-of-sale .pos-actionbar .button.disabled:hover{ border: 1px solid #cacaca; border-radius: 4px; + color: #555; + cursor: default; background: #e2e2e2; background: -webkit-linear-gradient(#f0f0f0, #e2e2e2); diff --git a/addons/point_of_sale/static/src/css/pos_nohover.css b/addons/point_of_sale/static/src/css/pos_nohover.css new file mode 100644 index 00000000000..6f24abda53b --- /dev/null +++ b/addons/point_of_sale/static/src/css/pos_nohover.css @@ -0,0 +1,1168 @@ +@font-face{ + font-family: 'Inconsolata'; + src: url(../fonts/Inconsolata.otf); +} + +.point-of-sale { + padding: 0; + margin: 0; + background-color: #f0eeee; + font-family: "Lucida Grande", Helvetica, Verdana, Arial; + color: #555555; + font-size: 12px; + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + -webkit-user-select: none; + -moz-user-select: none; + user-select: none; +} + +.point-of-sale .shadow-top{ + position: absolute; + top:0; + left:0; + right:0; + height:10px; + background: -webkit-linear-gradient(top,rgba(0,0,0,0.09),rgba(0,0,0,0)); + background: -moz-linear-gradient(top,rgba(0,0,0,0.09),rgba(0,0,0,0)); + background: -ms-linear-gradient(top,rgba(0,0,0,0.09),rgba(0,0,0,0)); + background: linear-gradient(top,rgba(0,0,0,0.09),rgba(0,0,0,0)); +} + +.point-of-sale .darker-shadow-top{ + position: absolute; + top:0; + left:0; + right:0; + height:10px; + background: -webkit-linear-gradient(top,rgba(0,0,0,0.15),rgba(0,0,0,0)); + background: -moz-linear-gradient(top,rgba(0,0,0,0.15),rgba(0,0,0,0)); + background: -ms-linear-gradient(top,rgba(0,0,0,0.15),rgba(0,0,0,0)); + background: linear-gradient(top,rgba(0,0,0,0.15),rgba(0,0,0,0)); +} + +/* ********* The black loading screen ********* */ + +.point-of-sale .loader{ + background-color: #222; + position:absolute; + left:0px; + top:0px; + width:100%; + height:100%; + z-index: 999; + text-align: center; +} +.point-of-sale .loader img{ + position:absolute; + top:50%; + left:50%; +} + +/* ********* Generic element styling ********* */ + +.point-of-sale a { + text-decoration: none; + color: #555555; +} +.point-of-sale button, .point-of-sale a.button { + display: inline-block; + cursor: pointer; + padding: 4px 10px; + font-size: 11px; + border: 1px solid #cacaca; + border-radius: 4px; + background: #e2e2e2; + background: -webkit-gradient(linear, left top, left bottom, from(#f0f0f0), to(#e2e2e2)); + background: -moz-linear-gradient(#f0f0f0, #e2e2e2); + background: -ms-linear-gradient(#f0f0f0, #e2e2e2); + background: linear-gradient(#f0f0f0, #e2e2e2); +} +.point-of-sale ul, .point-of-sale ol { + padding: 0; + margin: 0; +} +.point-of-sale li { + list-style-type: none; +} +.point-of-sale .pos-right-align { + text-align: right; +} +.point-of-sale .pos-right-align input { + text-align: right; + border: 1px solid #cecbcb; + border-radius: 4px; +} + +/* ********* The black header bar ********* */ + + +.point-of-sale #topheader { + position:absolute; + left:0; + top:0; + width: 100%; + height: 33px; + margin:0; + padding:0; + color: gray; + border-top: solid 1px #d3d3d3; + border-bottom: solid 1px black; + background: #393939; + background: -moz-linear-gradient(#7b7979, #393939); + background: -webkit-gradient(linear, left top, left bottom, from(#7b7979), to(#393939)); +} + +/* a) The left part of the top-bar */ + +.point-of-sale #branding{ + position: absolute; + display: table-cell; + left:0; + top:0; + width:439px; + height:100%; + margin:0; + padding:0; + border-right: 1px solid #373737; + text-align:left; + line-height:100%; + vertical-align: middle; +} +.point-of-sale #branding img { + height: 32px; + width: 116px; + margin-left:5px; + vertical-align:middle; +} +.point-of-sale #branding .username{ + float:right; + color:#DDD; + font-size:16px; + margin-right:32px; + margin-top:10px; + font-style:italic; +} + +/* b) The right part of the top-bar */ + +.point-of-sale #rightheader { + position: absolute; + left:440px; + right:0; + top:0; + height:100%; +} + +.point-of-sale #rightheader button { + color: #273072; + height:27px; + margin:3px; + margin-right:0px; + border: 1px solid #353A7E; + background: #7f82ac; + background: -webkit-gradient(linear, left top, left bottom, from(#b2b3d7), to(#7f82ac)); + background: -moz-linear-gradient(#b2b3d7, #7f82ac); + background: -ms-linear-gradient(#b2b3d7, #7f82ac); + background: linear-gradient(#b2b3d7, #7f82ac); +} + +.point-of-sale #rightheader button.neworder-button { + width: 32px; + margin-left:4px; + margin-right:4px; +} + +.point-of-sale div#order-selector { + display: inline; +} +.point-of-sale ol#orders { + display: inline; +} +.point-of-sale li.order-selector-button { + display: inline; +} +.point-of-sale li.selected-order button { + font-weight: 900; +} + +/* c) The session buttons */ + +.point-of-sale #rightheader .header-button{ + float:right; + height:32px; + padding-left:10px; + padding-right:10px; + border-right: 1px solid #3a3a3a; + border-left: 1px solid #3a3a3a; + color:#DDD; + line-height:32px; + text-align:center; + cursor: pointer; + + -webkit-transition-property: background; + -webkit-transition-duration: 0.2s; + -webkit-transition-timing-function: ease-out; +} +.point-of-sale #rightheader .header-button:last-child{ + border-left: 1px solid #3a3a3a; +} + +/* c) The notifications indicator */ + +.point-of-sale .oe_pos_synch-notification{ + float:right; + color: rgba(255,255,255,0.4); + padding: 8px; + line-height:16px; + font-size:16px; + vertical-align:middle; + font-style: italic; + cursor:pointer; +} + +.point-of-sale .oe_pos_synch-notification .oe_status_red{ + display:inline-block; + cursor:pointer; + width:16px; height:16px; + background: url("../img/gtk-no.png") no-repeat ; +} + +.point-of-sale .oe_pos_synch-notification .oe_status_green{ + display:inline-block; + width:16px; height:16px; + background: url("../img/gtk-yes.png") no-repeat; +} + +/* ********* Contains everything below the bar ********* */ + +.point-of-sale #content { + width: 100%; + position: absolute; + top: 35px; + bottom: 0; + background: #F0EEEE; +} + +/* ********* The leftpane contains the order, numpad and paypad ********* */ + +.point-of-sale #leftpane { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + -ms-box-sizing: border-box; + box-sizing: border-box; + position:absolute; + left:0; + width:440px; + top:0px; + /*bottom:105px;*/ + bottom:0; + border-right: solid 1px #CECBCB; + background-color: white; +} +.point-of-sale #leftpane footer { + position: absolute; + bottom: 0; + left: 0; + width: 100%; + background: #F0EEEE; + white-space: nowrap; +} + +/* ********* The paypad contains the payment buttons ********* */ + +.point-of-sale #paypad { + padding: 8px 4px 8px 8px; + display: inline-block; + text-align: center; + vertical-align: top; +} +.point-of-sale #paypad button { + height: 54px; + width: 208px; + margin: 0 -3px; + font-weight: bold; + vertical-align: middle; + color: #555555; + border-top: 1px solid #efefef; + font-size: 14px; +} + +/* ********* The Numpad ********* */ + +.point-of-sale #numpad { + padding: 8px 8px 8px 4px; + display: inline-block; + text-align: center; +} +.point-of-sale #numpad button { + height: 54px; + width: 54px; + margin: 0 -3px; + font-weight: bold; + vertical-align: middle; + color: #555555; + border-top: 1px solid #efefef; +} +.point-of-sale #numpad .selected-mode { + color: white; + background: #7f82ac; + background: -webkit-gradient(linear, left top, left bottom, from(#9d9fc5), to(#7f82ac)); + background: -moz-linear-gradient(#9d9fc5, #7f82ac); + background: -ms-linear-gradient(#9d9fc5, #7f82ac); + background: linear-gradient(#9d9fc5, #7f82ac); +} +.point-of-sale .input-button { + font-size: 24px; +} +.point-of-sale .mode-button, .point-of-sale #numpad-delete, .point-of-sale #numpad-minus { + font-size: 14px; +} + +/* ********* The right pane contains the screens and headers ********* */ + +.point-of-sale #rightpane { + position: absolute; + top: 0; + /*bottom: 105px;*/ + bottom:0; + left: 440px; + right: 0; + vertical-align: top; +} + +.point-of-sale #rightpane header { + padding: 0; + height: 32px; + border-bottom: 1px solid #cecbcb; + background: #d3d3d3; + background: -moz-linear-gradient(white, #d3d3d3); + background: -webkit-gradient(linear, left top, left bottom, from(white), to(#d3d3d3)); +} + +/* ********* The product list ********* */ + +.point-of-sale .product-list { + padding:10px; +} + +.point-of-sale .product-list-scroller{ + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + -ms-box-sizing: border-box; + box-sizing: border-box; + width:100%; + height:100%; + overflow: hidden; +} +.point-of-sale .product-list-container { + position:absolute; + top:0px; + bottom:0px; + left:0px; + right:0px; + background: #eeedff; +} + +/* a) the product list navigation bar */ + +.point-of-sale .breadcrumb li { + float: left; + line-height: 32px; + height: 32px; +} +.point-of-sale .breadcrumb li:last-child { + padding-right: 3px; + border-right: 1px solid #c5c5c5; +} +.point-of-sale .breadcrumb a { + display: inline-block; + padding: 0 9px; + vertical-align: top; + text-shadow: #f7f7f7 0 1px 1px; + color: #555555; + font-weight: bold; +} +.point-of-sale .bc-arrow { + height: 33px; +} +.point-of-sale .homeimg { + width: 19px; + height: 19px; + margin: 6px 0; +} + +/* b) the search box */ + +.point-of-sale .searchbox { + position: absolute; + right: 2px; +} +.point-of-sale .searchbox input { + width: 130px; + border-radius: 11px; + border: 1px solid #cecbcb; + padding: 3px 19px; + margin: 6px; + background: url("../img/search.png") no-repeat 5px; + background-color: white; +} +.point-of-sale .search-clear { + position: absolute; + top: 11px; + right: 11px; + cursor: pointer; + display: none; +} + +/* c) the categories list */ + +.point-of-sale #categories { + /*background:#f0f0f0;*/ + position: relative; + background-image: url('../img/bg.png'); + border-bottom: 1px solid #cecbcb; +} +.point-of-sale #categories .white-gradient{ + position: absolute; + top:50%; + left:0; + right:0; + bottom:0; + background: -webkit-linear-gradient(bottom,rgba(255,255,255,0.5),rgba(255,255,255,0)); + background: -moz-linear-gradient(bottom,rgba(255,255,255,0.5),rgba(255,255,255,0)); + background: -ms-linear-gradient(bottom,rgba(255,255,255,0.5),rgba(255,255,255,0)); + background: linear-gradient(bottom,rgba(255,255,255,0.5),rgba(255,255,255,0)); +} +.point-of-sale #categories h4 { + display: inline-block; + margin: 9px 5px; +} + +.point-of-sale .category-list{ + padding:10px; +} +/* d) the category button */ + +.point-of-sale .category-button { + position: relative; + vertical-align: top; + display: inline-block; + font-size: 11px; + margin: 5px; + width: 120px; + height:120px; + background:#fff; + border: 1px solid #fff; + border-radius: 3px; + -webkit-box-shadow: 0px 1px 8px rgba(0,0,0,0.2); + -moz-box-shadow: 0px 1px 8px rgba(0,0,0,0.2); + box-shadow: 0px 1px 8px rgba(0,0,0,0.2); + cursor: pointer; +} + +.point-of-sale .category-simple-button{ + position: relative; + display: inline-block; + font-size: 14px; + margin-right:10px; + padding:5px; + + cursor: pointer; + border: 1px solid #cacaca; + border-radius: 4px; + + background: #e2e2e2; + background: -webkit-linear-gradient(#f0f0f0, #e2e2e2); + background: -moz-linear-gradient(#f0f0f0, #e2e2e2); + background: -ms-linear-gradient(#f0f0f0, #e2e2e2); + background: linear-gradient(#f0f0f0, #e2e2e2); + -webkit-box-shadow: 0px 2px 2px rgba(0,0,0, 0.1); + -moz-box-shadow: 0px 2px 2px rgba(0,0,0, 0.1); + box-shadow: 0px 2px 2px rgba(0,0,0, 0.1); +} + +.point-of-sale .category-button .category-img { + position: relative; + width: 120px; + height: 100px; + text-align: center; + cursor: pointer; +} + +.point-of-sale .category-button .category-img img { + max-height: 100px; + max-width: 120px; +} + +.point-of-sale .category-button .category-name { + position: absolute; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + -ms-box-sizing: border-box; + box-sizing: border-box; + top:auto; + left: 2px; + right: 2px; + bottom: 2px; + background: #8a89ba; /*-webkit-linear-gradient(-90deg,rgba(138,137,186,0),rgba(138,137,186,1), rgba(138,137,186,1));*/ + padding: 3px; + /*color:#8a89ba;*/ + color: #FFF; + cursor: pointer; + border-radius: 3px; +} + +/* e) the product */ + +.point-of-sale .product { + position:relative; + vertical-align: top; + display: inline-block; + line-height: 100px; + font-size: 11px; + margin: 5px; + width: 120px; + height:120px; + background:#fff; + border: 1px solid #fff; + border-radius: 3px; + -webkit-box-shadow: 0px 1px 8px rgba(127,130,172,0.4); + -moz-box-shadow: 0px 1px 8px rgba(127,130,172,0.4); + box-shadow: 0px 1px 8px rgba(127,130,172,0.4); +} + +.point-of-sale .product .product-img { + position: relative; + width: 120px; + height: 100px; + background: white; + text-align: center; +} + +.point-of-sale .product .product-img img { + max-height: 100px; + max-width: 120px; +} + +.point-of-sale .product .price-tag { + position: absolute; + top: 2px; + right: 2px; + vertical-align: top; + color: white; + line-height: 14px; + background: #7f82ac; + padding: 2px 5px; + border-radius: 3px; +} + +.point-of-sale .product .product-name { + position: absolute; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + -ms-box-sizing: border-box; + box-sizing: border-box; + bottom:0; + top:auto; + line-height: 14px; + width:100%; + background: -webkit-linear-gradient(-90deg,rgba(255,255,255,0),rgba(255,255,255,1), rgba(255,255,255,1)); + background: -moz-linear-gradient(-90deg,rgba(255,255,255,0),rgba(255,255,255,1), rgba(255,255,255,1)); + background: -ms-linear-gradient(-90deg,rgba(255,255,255,0),rgba(255,255,255,1), rgba(255,255,255,1)); + background: linear-gradient(-90deg,rgba(255,255,255,0),rgba(255,255,255,1), rgba(255,255,255,1)); + /*background:#FFF;*/ + padding: 3px; + padding-top:15px; +} + + +/* ********* The Screens ********* */ + +.point-of-sale .screen { + position:absolute; + text-align: center; + top:0px; + bottom:0px; + width:100%; +} +.point-of-sale .screen header h2 { + margin-top: 0px; + padding-top: 7px; +} +.point-of-sale .screen p{ + font-size: 18px; +} + +/* a) Layout for the Product Screen */ + +.point-of-sale .screen .layout-table { + border:none; + width:100%; + height:100%; +} + +.point-of-sale .screen .header-row { + border:none; + width:100%; + height:0px; +} + +.point-of-sale .screen .header-cell{ + border:none; + width:100%; + height:0px; +} +.point-of-sale .screen .content-row { + width:100%; + height:100%; +} +.point-of-sale .screen .content-cell{ + width:100%; +} +.point-of-sale .screen .content-cell .content-container{ + height:100%; + position:relative; +} + +/* b) The payment screen */ + +.point-of-sale .pos-step-container { + display: inline-block; + font-size: 1.5em; +} +.point-of-sale .greyed-out{ + color: #AAA; +} +.point-of-sale .pos-step-container input{ + font-size: 1em; +} + +.point-of-sale .pos-payment-container { + text-align: left; + min-width: 500px; +} +.point-of-sale .pos-payment-container .left-block{ + display: inline-block; + width:49%; + margin:0; + padding:0; + text-align:left; +} +.point-of-sale .pos-payment-container .header{ + margin-top: 50px; + margin-bottom:20px; + font-weight: bold; +} +.point-of-sale .pos-payment-container .infoline{ + margin-top:5px; + margin-bottom:5px; +} +.point-of-sale .pos-payment-container .right-block{ + display: inline-block; + width:49%; + margin:0; + padding:0; + text-align:right; +} +.point-of-sale .pos-payment-container table { + width: 100%; + margin-bottom: 20px; +} +.point-of-sale .pos-payment-container td { + vertical-align: middle; +} +.point-of-sale .pos-payment-container .paymentline-type { + font-size: 1em; + font-weight: bold; + margin-right:10px; +} + +/* c) The receipt screen */ + +.point-of-sale .pos-receipt-container { + font-size: 0.75em; +} + +.point-of-sale .pos-sale-ticket { + text-align: left; + width: 300px; + background-color: white; + margin: 20px; + padding: 15px; + padding-bottom:30px; + display: inline-block; + font-family: "Inconsolata"; + -webkit-box-shadow: 0px 5px 16px rgba(0,0,0, 0.3); + -moz-box-shadow: 0px 5px 16px rgba(0,0,0, 0.3); + box-shadow: 0px 5px 16px rgba(0,0,0, 0.3); +} +.point-of-sale .pos-sale-ticket .emph{ + font-size: 20px; + margin:5px; +} +.point-of-sale .pos-sale-ticket table { + width: 100%; + border: 0; +} +.point-of-sale .pos-sale-ticket table td { + border: 0; +} + +@media print { + .point-of-sale #topheader, .point-of-sale #leftpane { + display: none !important; + } + .point-of-sale #content { + top: 0px !important; + } + .point-of-sale #rightpane { + left: 0px !important; + background-color: white; + } + #receipt-screen header { + display: none !important; + } + #receipt-screen { + text-align: left; + } + .pos-sale-ticket { + margin: 0; + } +} + +/* d) The Scale screen */ + +.point-of-sale .scale-screen .display{ + position:relative; + width:600px; + height:190px; + margin-top: 100px; + margin-left: auto; + margin-right: auto; +} + +.point-of-sale .scale-screen .product-picture { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + -ms-box-sizing: border-box; + box-sizing: border-box; + display: float; + float: right; + margin: 5px; + width: 180px; + height:180px; + line-height:180px; + cursor:pointer; + + background:#fff; + border: 1px solid #fff; + border-radius: 3px; + -webkit-box-shadow: 0px 1px 8px rgba(0,0,0,0.2); + -moz-box-shadow: 0px 1px 8px rgba(0,0,0,0.2); + box-shadow: 0px 1px 8px rgba(0,0,0,0.2); +} + +.point-of-sale .scale-screen .product-picture img{ + vertical-align: middle; + cursor:pointer; +} + +.point-of-sale .scale-screen .product-picture .product-price{ + position: absolute; + top:8px; + right:8px; + width:auto; + height:auto; + line-height:1; + color:white; + background: #7f82ac; + padding: 2px 5px; + border-radius: 3px; + cursor:pointer; +} + +.point-of-sale .scale-screen .product-name { + position: absolute; + left:0; + top:20px; + height:50px; + font-size:40px; + line-height:50px; + text-align:right; + right:225px; +} +.point-of-sale .scale-screen .weight{ + position: absolute; + left:0; + height:90px; + bottom:15px; + right:220px; + padding:5px; +} +.point-of-sale .scale-screen .weight p{ + display: inline-block; + text-align:right; + line-height: 90px; + font-size: 80px; + width:100%; + height:100%; + margin:0; + font-family: "Inconsolata"; +} + +/* e) The Welcome Screen */ +.point-of-sale .goodbye-message{ + position: absolute; + left:50%; + top:30%; + width:500px; + height:400px; + margin-left: -250px; + margin-top: -200px; + padding:10px; + padding-top:20px; + text-align:center; + font-size:20px; + font-weight:bold; + background-color: #F0EEEE; + border: 1px solid #E0DDDD; + -webkit-box-shadow: 0px 10px 20px rgba(0,0,0, 0.3); + -moz-box-shadow: 0px 10px 20px rgba(0,0,0, 0.3); + -ms-box-shadow: 0px 10px 20px rgba(0,0,0, 0.3); + z-index:1150; +} + +/* ********* The OrderWidget ********* */ + +.point-of-sale .order-container{ + position: absolute; + top: 0px; + bottom: 232px; + width:100%; + background: #F0EEEE; +} + +.point-of-sale .order-scroller{ + width:100%; + height:100%; + overflow:hidden; +} + +.point-of-sale .order{ + background: #F00; + background: -webkit-linear-gradient(0deg,rgba(245,245,245,1),rgba(255,255,255,1), rgba(245,245,245,1)); + background: -moz-linear-gradient(0deg,rgba(245,245,245,1),rgba(255,255,255,1), rgba(245,245,245,1)); + background: -ms-linear-gradient(0deg,rgba(245,245,245,1),rgba(255,255,255,1), rgba(245,245,245,1)); + background: linear-gradient(0deg,rgba(245,245,245,1),rgba(255,255,255,1), rgba(245,245,245,1)); + padding-bottom:15px; + padding-top:15px; + margin-left:16px; + margin-right:16px; + margin-top:16px; + margin-bottom:16px; + font-size:16px; + -webkit-box-shadow: 0px 5px 16px rgba(0,0,0, 0.3); + -moz-box-shadow: 0px 5px 16px rgba(0,0,0, 0.3); + box-shadow: 0px 5px 16px rgba(0,0,0, 0.3); + +} + +.point-of-sale .order .empty{ + text-align:center; + margin-top: 15px; + margin-bottom: 5px; + color:#999; + font-weight: normal; +} + +.point-of-sale .order .summary{ + width:100%; + text-align:right; + font-weight: bold; + margin-top:20px; + margin-bottom:10px; +} +.point-of-sale .order .summary .line{ + margin-right:15px; + padding-top:5px; + border-top: solid 2px; + border-color:#777; +} +.point-of-sale .order .summary .line.empty{ + border-color:#BBB; + color:#999; +} + +/* ********* The OrderLineWidget ********* */ + +.point-of-sale .order .orderline{ + width:100%; + margin:0px; + padding-top:3px; + padding-bottom:10px; + padding-left:15px; + padding-right:15px; + cursor: pointer; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + -ms-box-sizing: border-box; + box-sizing: border-box; + -webkit-transition: background 250ms ease-in-out; + -moz-transition: background 250ms ease-in-out; + transition: background 250ms ease-in-out; +} + +.point-of-sale .order .orderline.selected{ + background: rgba(140,143,183,0.2); + -webkit-transition: background 250ms ease-in-out; + -moz-transition: background 250ms ease-in-out; + transition: background 250ms ease-in-out; + cursor: default; +} +.point-of-sale .order .orderline .product-name{ + padding:0; + display:inline-block; + font-weight: bold; + width:80%; + overflow:hidden; +} +.point-of-sale .order .orderline .price{ + padding:0; + font-weight: bold; + float:right; +} +.point-of-sale .order .orderline .info-list{ + color: #888; + margin-left:10px; +} +.point-of-sale .order .orderline .info-list em{ + color: #777; + font-weight: bold; + font-style:normal; +} + +/* ********* The ActionBarWidget ********* */ + +.point-of-sale .pos-actionbar{ + position:absolute; + left: 0; + bottom: 0px; + height: 105px; + width: 100%; + margin: 0; + background: #f5f5f5; /*#ebebeb;*/ + border-top: solid 1px #afafb6; + z-index:900; +} + +.point-of-sale .pos-actionbar ul{ + list-style: none; +} + +.point-of-sale .pos-actionbar-left-pane{ + height: 100%; + width: 434px; + margin: 0px; + padding-left:3px; + padding-right:3px; + border-right: solid 1px #dfdfdf; + float: left; +} + +.point-of-sale .pos-actionbar-button-list{ + height: 100%; + margin: 0px; + padding-left:3px; + padding-right:3px; + overflow:hidden; +} + +.point-of-sale .pos-actionbar .button{ + width: 90px; + height: 90px; + text-align:center; + margin:3px; + margin-top:6px; + float:left; + + font-size: 14px; + font-weight: bold; + + cursor: pointer; + + border: 1px solid #cacaca; + border-radius: 4px; + + background: #e2e2e2; + background: -webkit-linear-gradient(#f0f0f0, #e2e2e2); + background: -moz-linear-gradient(#f0f0f0, #e2e2e2); + background: -ms-linear-gradient(#f0f0f0, #e2e2e2); + background: linear-gradient(#f0f0f0, #e2e2e2); + -webkit-box-shadow: 0px 2px 2px rgba(0,0,0, 0.1); + -moz-box-shadow: 0px 2px 2px rgba(0,0,0, 0.1); + box-shadow: 0px 2px 2px rgba(0,0,0, 0.1); +} +.point-of-sale .pos-actionbar .button .label{ + margin-top: 37px; +} +.point-of-sale .pos-actionbar .button .icon{ + margin-top: 10px; +} + +.point-of-sale .pos-actionbar .button.disabled *{ + opacity: 0.5; +} + +.point-of-sale .pos-actionbar .button.rightalign{ + float:right; +} + +/* ********* The PopupWidgets ********* */ + +.point-of-sale .modal-dialog{ + position: absolute; + left: 0; + top: 0; + width: 100%; + height:100%; + background-color: rgba(0,0,0,0.5); + z-index:1000; +} +.point-of-sale .modal-dialog .popup{ + position: absolute; + left:50%; + top:50%; + width:500px; + height:400px; + margin-left: -250px; + margin-top: -200px; + padding:10px; + padding-top:20px; + text-align:center; + font-size:20px; + font-weight:bold; + background-color: #F0EEEE; + border: 1px solid #E0DDDD; + -webkit-box-shadow: 0px 10px 20px rgba(0,0,0, 0.3); + -moz-box-shadow: 0px 10px 20px rgba(0,0,0, 0.3); + -ms-box-shadow: 0px 10px 20px rgba(0,0,0, 0.3); + z-index:1200; +} +.point-of-sale .popup .footer{ + position:absolute; + bottom:0; + left:0; + width:100%; + height:60px; + border-top: 1px solid #E0DDDD; +} +.point-of-sale .popup .button{ + float:right; + width: 110px; + height: 40px; + line-height:40px; + text-align:center; + margin:3px; + margin-top:10px; + margin-right:10px; + + font-size: 14px; + font-weight: bold; + + cursor: pointer; + + border: 1px solid #cacaca; + border-radius: 4px; + + background: #e2e2e2; + background: -webkit-linear-gradient(#f0f0f0, #e2e2e2); + background: -moz-linear-gradient(#f0f0f0, #e2e2e2); + background: -ms-linear-gradient(#f0f0f0, #e2e2e2); + background: linear-gradient(#f0f0f0, #e2e2e2); + -webkit-box-shadow: 0px 2px 2px rgba(0,0,0, 0.3); + -moz-box-shadow: 0px 2px 2px rgba(0,0,0, 0.3); + box-shadow: 0px 2px 2px rgba(0,0,0, 0.3); +} + +.point-of-sale .popup .button.big-left{ + position:absolute; + top: 120px; + left:40px; + width: 180px; + height: 180px; + line-height:180px; +} + +.point-of-sale .popup .button.big-right{ + position:absolute; + top: 120px; + right:40px; + width: 180px; + height: 180px; + line-height:180px; +} + +/* ********* The ScrollBarWidget ********* */ + +.point-of-sale .scrollbar{ + position:absolute; + top:7px; + right:7px; + width:48px; + bottom:7px; + background: rgba(0,0,0,0.1); + +} +.point-of-sale .scrollbar .button{ + width:100%; + height: 48px; + line-height: 38px; + text-align: center; + font-size:48px; + border-radius: 4px; + cursor: pointer; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + transition: all 250ms ease-in-out; +} +.point-of-sale .scrollbar .button{ + color:white; + background: rgba(0,0,0,0.6); + -webkit-box-shadow: 0px 1px 4px rgba(0,0,0,0.01); + -moz-box-shadow: 0px 1px 4px rgba(0,0,0,0.01); + box-shadow: 0px 1px 4px rgba(0,0,0,0.01); + text-shadow: rgba(255,255,255,0.5) 0px 0px 10px; + -webkit-transition: all 250ms ease-in-out; + -moz-transition: all 250ms ease-in-out; + transition: all 250ms ease-in-out; +} +.point-of-sale .scrollbar .button.disabled{ + background: rgba(0,0,0,0.3); + color:rgba(255,255,255,0.5); + -webkit-transition: all 250ms ease-in-out; + -moz-transition: all 250ms ease-in-out; + transition: all 250ms ease-in-out; +} +.point-of-sale .scrollbar .down-button{ + position:absolute; + bottom:0px; +} +.point-of-sale .scrollbar .up-button{ + position:absolute; + top:0px; +} +.point-of-sale .scrollbar .scroller{ + position:absolute; + top:33%; + bottom:50%; + width:100%; + background: rgba(0,0,0,0.1); + border-radius: 4px; +} + diff --git a/addons/point_of_sale/static/src/js/TODO.txt b/addons/point_of_sale/static/src/js/TODO.txt index edadbe188ea..1696f0b117d 100644 --- a/addons/point_of_sale/static/src/js/TODO.txt +++ b/addons/point_of_sale/static/src/js/TODO.txt @@ -47,11 +47,12 @@ TODO AUG 20 v supprimer l'écran v bloquer sur l'impression v L'impression est foireuse + - description_sales * CLIENT - - create a new branch + v create a new branch - Self-checkout welcome screen - - removal of products for the root category + ~ removal of products for the root category - Terminal de payement - Code à barres - Vidanges diff --git a/addons/point_of_sale/static/src/js/devices.js b/addons/point_of_sale/static/src/js/devices.js index a6be16b3835..e36070414b6 100644 --- a/addons/point_of_sale/static/src/js/devices.js +++ b/addons/point_of_sale/static/src/js/devices.js @@ -184,6 +184,8 @@ function openerp_pos_devices(instance,module){ //module is instance.point_of_sal * price_with_tax: (number) the price paid for this orderline, tax included * price_without_tax: (number) the price paid for this orderline, without taxes * tax: (number) the price paid in taxes on this orderline + * product_description: (string) generic description of the product + * product_description_sale: (string) sales related information of the product * } * - paymentlines : list of paymentlines : * { diff --git a/addons/point_of_sale/static/src/js/models.js b/addons/point_of_sale/static/src/js/models.js index a1f6def6bf3..93860697492 100644 --- a/addons/point_of_sale/static/src/js/models.js +++ b/addons/point_of_sale/static/src/js/models.js @@ -58,6 +58,21 @@ function openerp_pos_models(instance, module){ //module is instance.point_of_sal // We fetch the backend data on the server asynchronously. this is done only when the pos user interface is launched, // Any change on this data made on the server is thus not reflected on the point of sale until it is relaunched. + // when all the data has loaded, we compute some stuff, and declare the Pos ready to be used. + $.when(this.load_server_data()) + .then(function(){ + //self.log_loaded_data(); //Uncomment if you want to log the data to the console for easier debugging + self.ready.resolve(); + },function(){ + //we failed to load some backend data, or the backend was badly configured. + //the error messages will be displayed in PosWidget + self.ready.reject(); + }); + }, + + // loads all the needed data on the sever. returns a deferred indicating when all the data has loaded. + load_server_data: function(){ + var self = this; var loaded = fetch('res.users',['name','company_id'],[['id','=',this.session.uid]]) .pipe(function(users){ @@ -142,8 +157,9 @@ function openerp_pos_models(instance, module){ //module is instance.point_of_sal return fetch( 'product.product', - ['name', 'list_price','price','pos_categ_id', 'taxes_id', 'ean13', 'to_weight', 'uom_id', 'uos_id', 'uos_coeff', 'mes_type'], - [['pos_categ_id','!=', false]], + ['name', 'list_price','price','pos_categ_id', 'taxes_id', 'ean13', + 'to_weight', 'uom_id', 'uos_id', 'uos_coeff', 'mes_type', 'description_sale', 'description'], + [['pos_categ_id','!=', false],['sale_ok','=',true]], {pricelist: self.get('shop').pricelist_id[0]} // context for price ); }).pipe(function(products){ @@ -173,17 +189,8 @@ function openerp_pos_models(instance, module){ //module is instance.point_of_sal } self.set({'cashRegisters' : new module.CashRegisterCollection(self.get('bank_statements'))}); }); - - // when all the data has loaded, we compute some stuff, and declare the Pos ready to be used. - $.when(loaded) - .then(function(){ - //self.log_loaded_data(); //Uncomment if you want to log the data to the console for easier debugging - self.ready.resolve(); - },function(){ - //we failed to load some backend data, or the backend was badly configured. - //the error messages will be displayed in PosWidget - self.ready.reject(); - }); + + return loaded; }, // logs the usefull posmodel data to the console for debug purposes @@ -417,6 +424,8 @@ function openerp_pos_models(instance, module){ //module is instance.point_of_sal price_with_tax : this.get_price_with_tax(), price_without_tax: this.get_price_without_tax(), tax: this.get_tax(), + product_description: this.get_product().get('description'), + product_description_sale: this.get_product().get('description_sale'), }; }, get_price_without_tax: function(){ diff --git a/addons/point_of_sale/static/src/js/screens.js b/addons/point_of_sale/static/src/js/screens.js index 4d4e09575ea..9a2071c6335 100644 --- a/addons/point_of_sale/static/src/js/screens.js +++ b/addons/point_of_sale/static/src/js/screens.js @@ -735,11 +735,14 @@ function openerp_pos_screens(instance, module){ //module is instance.point_of_sa this.validate_button = this.add_action_button({ label: 'Validate', + name: 'validation', icon: '/point_of_sale/static/src/img/icons/png48/validate.png', click: function(){ self.validateCurrentOrder(); }, }); + + this.updatePaymentSummary(); }, close: function(){ this._super(); @@ -806,6 +809,9 @@ function openerp_pos_screens(instance, module){ //module is instance.point_of_sa this.$('#payment-paid-total').html(paidTotal.toFixed(2)); this.$('#payment-remaining').html(remaining.toFixed(2)); this.$('#payment-change').html(change.toFixed(2)); + if(this.pos_widget.action_bar){ + this.pos_widget.action_bar.set_button_disabled('validation', remaining > 0); + } }, set_numpad_state: function(numpadState) { if (this.numpadState) { diff --git a/addons/point_of_sale/static/src/js/widgets.js b/addons/point_of_sale/static/src/js/widgets.js index 5b98865a971..6de31c88dfd 100644 --- a/addons/point_of_sale/static/src/js/widgets.js +++ b/addons/point_of_sale/static/src/js/widgets.js @@ -370,14 +370,21 @@ function openerp_pos_widgets(instance, module){ //module is instance.point_of_sa this.label = options.label || 'button'; this.rightalign = options.rightalign || false; this.click_action = options.click; + this.disabled = options.disabled || false; if(options.icon){ this.icon = options.icon; this.template = this.icon_template; } }, + set_disabled: function(disabled){ + if(this.disabled != disabled){ + this.disabled = !!disabled; + this.renderElement(); + } + }, renderElement: function(){ this._super(); - if(this.click_action){ + if(this.click_action && !this.disabled){ this.$el.click(_.bind(this.click_action, this)); } }, @@ -388,12 +395,12 @@ function openerp_pos_widgets(instance, module){ //module is instance.point_of_sa init: function(parent, options){ this._super(parent,options); this.button_list = []; - this.fake_buttons = {}; + this.buttons = {}; this.visibility = {}; }, set_element_visible: function(element, visible, action){ if(visible != this.visibility[element]){ - this.visibility[element] = visible; + this.visibility[element] = !!visible; if(visible){ this.$('.'+element).show(); }else{ @@ -401,14 +408,22 @@ function openerp_pos_widgets(instance, module){ //module is instance.point_of_sa } } if(visible && action){ + this.action[element] = action; this.$('.'+element).off('click').click(action); } }, + set_button_disabled: function(name, disabled){ + var b = this.buttons[name]; + if(b){ + b.set_disabled(disabled); + } + }, destroy_buttons:function(){ for(var i = 0; i < this.button_list.length; i++){ this.button_list[i].destroy(); } this.button_list = []; + this.buttons = {}; return this; }, get_button_count: function(){ @@ -417,6 +432,9 @@ function openerp_pos_widgets(instance, module){ //module is instance.point_of_sa add_new_button: function(button_options){ var button = new module.ActionButtonWidget(this,button_options); this.button_list.push(button); + if(button_options.name){ + this.buttons[button_options.name] = button; + } button.appendTo(this.$('.pos-actionbar-button-list')); return button; }, diff --git a/addons/point_of_sale/static/src/xml/pos.xml b/addons/point_of_sale/static/src/xml/pos.xml index 81f929d50e2..bbe278758d5 100644 --- a/addons/point_of_sale/static/src/xml/pos.xml +++ b/addons/point_of_sale/static/src/xml/pos.xml @@ -540,7 +540,7 @@ </t> <t t-name="ActionButtonWidget"> - <li t-att-class=" 'button '+ (widget.rightalign ? 'rightalign ' : '')"> + <li t-att-class=" 'button '+ (widget.rightalign ? 'rightalign ' : '') + (widget.disabled ? 'disabled ' : '')"> <div class='label'> <t t-esc="widget.label" /> </div> @@ -548,7 +548,7 @@ </t> <t t-name="ActionButtonWidgetWithIcon"> - <li t-att-class=" 'button '+ (widget.rightalign ? 'rightalign ' : '')"> + <li t-att-class=" 'button '+ (widget.rightalign ? 'rightalign ' : '') + (widget.disabled ? 'disabled ' : '')"> <div class='icon'> <img t-att-src="widget.icon" /> <div class='iconlabel'><t t-esc="widget.label" /></div> diff --git a/addons/point_of_sale/wizard/pos_session_opening.py b/addons/point_of_sale/wizard/pos_session_opening.py index 4364998b6a4..d6f95cbb7fc 100644 --- a/addons/point_of_sale/wizard/pos_session_opening.py +++ b/addons/point_of_sale/wizard/pos_session_opening.py @@ -6,14 +6,18 @@ import netsvc from openerp.addons.point_of_sale.point_of_sale import pos_session + class pos_session_opening(osv.osv_memory): _name = 'pos.session.opening' _columns = { 'pos_config_id' : fields.many2one('pos.config', 'Point of Sale', required=True), 'pos_session_id' : fields.many2one('pos.session', 'PoS Session'), - 'pos_state' : fields.selection(pos_session.POS_SESSION_STATE, - 'Session State', readonly=True), + 'pos_state' : fields.related('pos_session_id', 'state', + type='selection', + selection=pos_session.POS_SESSION_STATE, + string='Session State', readonly=True), + 'pos_state_str' : fields.char('State', 32, readonly=True), 'show_config' : fields.boolean('Show Config', readonly=True), 'pos_session_name' : fields.related('pos_session_id', 'name', type='char', size=64, readonly=True), @@ -71,22 +75,25 @@ class pos_session_opening(osv.osv_memory): result = { 'pos_session_id': False, 'pos_state': False, + 'pos_state_str' : '', 'pos_session_username' : False, 'pos_session_name' : False, } if not config_id: - return {'value': result} + return {'value' : result} proxy = self.pool.get('pos.session') session_ids = proxy.search(cr, uid, [ - ('state', '<>', 'closed'), + ('state', '!=', 'closed'), ('config_id', '=', config_id), ], context=context) if session_ids: session = proxy.browse(cr, uid, session_ids[0], context=context) - result['pos_state'] = session.state + result['pos_state'] = str(session.state) + result['pos_state_str'] = dict(pos_session.POS_SESSION_STATE).get(session.state, '') result['pos_session_id'] = session.id result['pos_session_name'] = session.name result['pos_session_username'] = session.user_id.name + return {'value' : result} def default_get(self, cr, uid, fieldnames, context=None): diff --git a/addons/point_of_sale/wizard/pos_session_opening.xml b/addons/point_of_sale/wizard/pos_session_opening.xml index 9279d5fce45..6e44030e582 100644 --- a/addons/point_of_sale/wizard/pos_session_opening.xml +++ b/addons/point_of_sale/wizard/pos_session_opening.xml @@ -12,7 +12,7 @@ <field name="pos_config_id" on_change="on_change_config(pos_config_id)" widget="selection" domain="[('state','=','active')]" class="oe_inline"/> - <field name="pos_state" class="oe_inline" attrs="{'invisible' : [('pos_state', '=', False)]}" /> + <field name="pos_state" invisible="1" /> </group> <field name="pos_session_id" invisible="1"/> <button name="open_ui" type="object" string="Start Selling" @@ -49,8 +49,8 @@ Click to continue the session. </p> <p> - The session <field name="pos_session_name" class="oe_inline" /> (<field name="pos_session_username" class="oe_inline" />) is "<b><field name="pos_state" class="oe_inline" /></b>"<br/> - You can continue sales from the touchscreen interface by clicking on "<b>Settings</b>" or close the cash register session ? + The session <field name="pos_session_name" class="oe_inline" /> (<field name="pos_session_username" class="oe_inline" />) is "<b><field name="pos_state_str" class="oe_inline" /></b>"<br/> + You can continue sales from the touchscreen interface by clicking on "<b>Sellings</b>" or close the cash register session ? </p> </div> diff --git a/addons/procurement/wizard/make_procurement_view.xml b/addons/procurement/wizard/make_procurement_view.xml index 4d2e7553371..9228fcc323b 100644 --- a/addons/procurement/wizard/make_procurement_view.xml +++ b/addons/procurement/wizard/make_procurement_view.xml @@ -9,13 +9,21 @@ <field name="model">make.procurement</field> <field name="arch" type="xml"> <form string="Procurement Request" version="7.0"> - <group col="4" string="This wizard will plan the procurement for this product. This procurement may generate task, production orders or purchase orders."/> - <group> + <p class="oe_gray"> + Fill is this for to launch a procurement request for this + product. According to the product configuration, this may + trigger a draft purchase order, a manufacturing order or + a new task. + </p> + <group> + <field name="warehouse_id" groups="stock.group_locations"/> <field name="product_id" on_change="onchange_product_id(product_id)"/> - <field name="qty"/> - <field name="uom_id" groups="product.group_uom"/> + <label for="qty"/> + <div> + <field name="qty" class="oe_inline"/> + <field name="uom_id" groups="product.group_uom"/> + </div> <field name="date_planned"/> - <field name="warehouse_id" groups="stock.group_locations"/> </group> <footer> <button name="make_procurement" string="Ask New Products" type="object" class="oe_highlight" /> @@ -26,13 +34,13 @@ </field> </record> - <act_window name="Procurement Request" - res_model="make.procurement" - src_model="product.product" - view_mode="form" - target="new" - key2="client_action_multi" - id="act_make_procurement"/> + <record model="ir.actions.act_window" id="act_make_procurement"> + <field name="name">Procurement Request</field> + <field name="res_model">make.procurement</field> + <field name="src_model">product.product</field> + <field name="view_mode">form</field> + <field name="target">new</field> + </record> </data> </openerp> diff --git a/addons/product/product.py b/addons/product/product.py index 214445204bb..1b8c69b7d5b 100644 --- a/addons/product/product.py +++ b/addons/product/product.py @@ -288,13 +288,13 @@ class product_template(osv.osv): 'rental': fields.boolean('Can be Rent'), 'categ_id': fields.many2one('product.category','Category', required=True, change_default=True, domain="[('type','=','normal')]" ,help="Select category for the current product"), 'list_price': fields.float('Sale Price', digits_compute=dp.get_precision('Product Price'), help="Base price for computing the customer price. Sometimes called the catalog price."), - 'standard_price': fields.float('Cost Price', required=True, digits_compute=dp.get_precision('Product Price'), help="Product's cost for accounting stock valuation. It is the base price for the supplier price.", groups="base.group_user"), + 'standard_price': fields.float('Cost', digits_compute=dp.get_precision('Product Price'), help="Product's cost for accounting stock valuation. It is the base price for the supplier price.", groups="base.group_user"), 'volume': fields.float('Volume', help="The volume in m3."), 'weight': fields.float('Gross Weight', digits_compute=dp.get_precision('Stock Weight'), help="The gross weight in Kg."), 'weight_net': fields.float('Net Weight', digits_compute=dp.get_precision('Stock Weight'), help="The net weight in Kg."), 'cost_method': fields.selection([('standard','Standard Price'), ('average','Average Price')], 'Costing Method', required=True, help="Standard Price: the cost price is fixed and recomputed periodically (usually at the end of the year), Average Price: the cost price is recomputed at each reception of products."), - 'warranty': fields.float('Warranty (months)'), + 'warranty': fields.float('Warranty'), 'sale_ok': fields.boolean('Can be Sold', help="Determines if the product can be visible in the list of product within a selection from a sale order line."), 'purchase_ok': fields.boolean('Can be Purchased', help="Determine if the product is visible in the list of products within a selection from a purchase order line."), 'state': fields.selection([('',''), @@ -302,7 +302,7 @@ class product_template(osv.osv): ('sellable','Normal'), ('end','End of Lifecycle'), ('obsolete','Obsolete')], 'Status', help="Tells the user if he can use the product or not."), - 'uom_id': fields.many2one('product.uom', 'Default Unit of Measure', required=True, help="Default Unit of Measure used for all stock operation."), + 'uom_id': fields.many2one('product.uom', 'Unit of Measure', required=True, help="Default Unit of Measure used for all stock operation."), 'uom_po_id': fields.many2one('product.uom', 'Purchase Unit of Measure', required=True, help="Default Unit of Measure used for purchase orders. It must be in the same category than the default unit of measure."), 'uos_id' : fields.many2one('product.uom', 'Unit of Sale', help='Used by companies that manage two units of measure: invoicing and inventory management. For example, in food industries, you will manage a stock of ham but invoice in Kg. Keep empty to use the default Unit of Measure.'), @@ -354,7 +354,7 @@ class product_template(osv.osv): 'list_price': lambda *a: 1, 'cost_method': lambda *a: 'standard', 'supply_method': lambda *a: 'buy', - 'standard_price': lambda *a: 1, + 'standard_price': lambda *a: 0.0, 'sale_ok': lambda *a: 1, 'sale_delay': lambda *a: 7, 'produce_delay': lambda *a: 1, @@ -535,9 +535,9 @@ class product_product(osv.osv): 'outgoing_qty': fields.function(_product_outgoing_qty, type='float', string='Outgoing'), 'price': fields.function(_product_price, type='float', string='Pricelist', digits_compute=dp.get_precision('Product Price')), 'lst_price' : fields.function(_product_lst_price, type='float', string='Public Price', digits_compute=dp.get_precision('Product Price')), - 'code': fields.function(_product_code, type='char', string='Reference'), + 'code': fields.function(_product_code, type='char', string='Internal Reference'), 'partner_ref' : fields.function(_product_partner_ref, type='char', string='Customer ref'), - 'default_code' : fields.char('Reference', size=64, select=True), + 'default_code' : fields.char('Internal Reference', size=64, select=True), 'active': fields.boolean('Active', help="If the active field is set to False, it will allow you to hide the product without removing it."), 'variants': fields.char('Variants', size=64), 'product_tmpl_id': fields.many2one('product.template', 'Product Template', required=True, ondelete="cascade"), diff --git a/addons/product/product_view.xml b/addons/product/product_view.xml index d341b5883d6..ae769528d3c 100644 --- a/addons/product/product_view.xml +++ b/addons/product/product_view.xml @@ -12,8 +12,6 @@ <filter string="Services" icon="terp-accessories-archiver" domain="[('type','=','service')]"/> <filter string="Products" icon="terp-accessories-archiver" domain="['|',('type','=','product'),('type','=','consu')]" help="Both stockable and consumable products"/> <separator/> - <filter string="To Sell" name="filter_to_sell" icon="terp-accessories-archiver-minus" domain="[('sale_ok','=',1)]"/> - <separator/> <filter name="filter_to_purchase" string="To Purchase" icon="terp-accessories-archiver+" domain="[('purchase_ok', '=', 1)]"/> <filter string="Can be Sold" name="filter_to_sell" icon="terp-accessories-archiver-minus" domain="[('sale_ok','=',1)]"/> <filter name="filter_to_purchase" string="Can be Purchased" icon="terp-accessories-archiver+" domain="[('purchase_ok', '=', 1)]"/> @@ -71,6 +69,12 @@ </h1> <label for="categ_id" class="oe_edit_only"/> <h2><field name="categ_id"/></h2> + <div name="options" groups="base.group_user"> + <field name="sale_ok"/> + <label for="sale_ok"/> + <field name="purchase_ok"/> + <label for="purchase_ok"/> + </div> </div> <div class="oe_right oe_button_box" name="buttons"> </div> @@ -78,57 +82,77 @@ <page string="Information"> <group> <group> + <field name="type"/> + <field name="uom_id" on_change="onchange_uom(uom_id,uom_po_id)" groups="product.group_uom"/> + <field name="list_price"/> + </group> + <group> <field name="default_code"/> - <field name="ean13" placeholder="e.g. 5901234123457"/> - <field groups="product.group_product_variant" name="variants"/> + <label for="ean13"/> + <div name="ean"> + <field name="ean13" placeholder="e.g. 5901234123457"/> + </div> </group> - <group groups="base.group_user"> - <field name="sale_ok"/> - <field name="purchase_ok"/> + <group> + <field groups="product.group_product_variant" name="variants"/> + <field name="price_margin" groups="product.group_product_variant"/> + <field name="price_extra" groups="product.group_product_variant"/> </group> - <group string="Procurement"> - <field name="type"/> + </group> + <field name="description" placeholder="describe the product's characteristics for internal use..."/> + </page> + <page string="Procurements" groups="base.group_user"> + <group name="procurement"> + <group> <field name="procure_method" groups="base.group_user" attrs="{'invisible':[('type','=', 'service')]}"/> - </group> - <group string="Prices"> - <field name="list_price"/> <field name="cost_method" groups="product.group_costing_method"/> <field name="standard_price" attrs="{'readonly':[('cost_method','=','average')]}"/> - <field name="price_margin" groups="product.group_product_variant"/> - <field name="price_extra" groups="product.group_product_variant"/> </group> - + <group> + <field name="uom_po_id" groups="product.group_uom"/> + </group> + </group> + <separator string="Notes for Suppliers"/> + <field name="description_purchase" placeholder="This note will be displayed on requests for quotation..."/> + </page> + <page string="Inventory" groups="base.group_user"> + <group name="inventory"> + <group name="status" string="Status"> + <field name="state"/> + <field name="product_manager"/> + </group> + <group name="store" string="Storage Localisation"> + <field name="company_id" groups="base.group_multi_company" widget="selection"/> + <field name="loc_rack" attrs="{'invisible':[('type','=','service')]}"/> + <field name="loc_row" attrs="{'invisible':[('type','=','service')]}"/> + <field name="loc_case" attrs="{'invisible':[('type','=','service')]}"/> + </group> <group groups="product.group_stock_packaging" string="Weights"> <field digits="(14, 3)" name="volume" attrs="{'readonly':[('type','=','service')]}"/> <field name="weight" attrs="{'readonly':[('type','=','service')]}"/> <field name="weight_net" attrs="{'readonly':[('type','=','service')]}"/> </group> - - <group name="uom" groups="product.group_uom" string="Unit of Measure"> - <field name="uom_id" on_change="onchange_uom(uom_id,uom_po_id)"/> - <field name="uom_po_id"/> + </group> + </page> + <page string="Sales" attrs="{'readonly':[('sale_ok','=',0)]}"> + <group name="sale"> + <group string="Sale Conditions"> + <label for="sale_delay"/> + <div> + <field name="sale_delay" class="oe_inline"/> days + </div> + <label for="warranty"/> + <div> + <field name="warranty" class="oe_inline"/> months + </div> + </group> + <group groups="product.group_uos" string="Unit of Measure"> <field name="uos_id"/> <field name="uos_coeff"/> <field name="mes_type"/> </group> - - <group name="status" string="Status"> - <field name="state"/> - <field name="product_manager"/> - </group> - </group> - </page> - <page string="Descriptions" groups="base.group_user"> - <separator string="Description"/> - <field name="description"/> - <separator string="Sale Description"/> - <field name="description_sale" placeholder="This note will be displayed on quotations..."/> - <separator string="Purchase Description"/> - <field name="description_purchase" placeholder="This note will be displayed on requests for quotation..."/> - </page> - <page groups="product.group_stock_packaging" string="Packaging"> - <field name="packaging"> + <field name="packaging" groups="product.group_stock_packaging"> <form string="Packaging" version="7.0"> <group col="4"> <field name="ean"/> @@ -150,6 +174,8 @@ <field name="name"/> </form> </field> + <separator string="Notes on Quotations"/> + <field name="description_sale" placeholder="note to be displayed on quotations..."/> </page> </notebook> </sheet> @@ -162,42 +188,30 @@ </record> <!-- Product Kanban View --> - <record model="ir.ui.view" id="product_kanban_view"> + + <record model="ir.ui.view" id="product.product_kanban_view"> <field name="name">Product Kanban</field> <field name="model">product.product</field> <field name="arch" type="xml"> <kanban> <field name="color"/> <field name="type"/> - <field name="image_medium"/> + <field name="image_small"/> <field name="list_price"/> <templates> <t t-name="kanban-box"> - <t t-if="record.type.raw_value!='service' and record.qty_available.raw_value lte 0" t-set="border">oe_kanban_color_red</t> - <div t-attf-class="#{kanban_color(record.color.raw_value)} #{border || ''}"> - <div class="oe_kanban_box oe_kanban_color_border"> - <div class="oe_kanban_box_header oe_kanban_color_bgdark oe_kanban_color_border oe_kanban_draghandle oe_kanban_title"> - <field name="name"/> - </div> - <div class="oe_kanban_box_content oe_kanban_color_bglight oe_kanban_box_show_onclick_trigger"> - <img t-att-src="kanban_image('product.product', 'image_medium', record.id.value)" width="48" style="float: left; padding: 0 4px 4px 0"/> - Code: <field name="code"/> - <div t-if="record.type.raw_value == 'service'">No Stock</div> - <t t-if="record.type.raw_value != 'service'"> - <div>Stock: <field name="qty_available"/> on hand, <field name="virtual_available"/> available</div> - <div t-if="record.list_price.raw_value != 0">Public Price: <field name="lst_price"/></div> - <!-- TODO would deserve to be hidden at the field level --> - <div groups="base.group_user">Cost : <field name="standard_price"/></div> - </t> - <div class="oe_kanban_clear"/> - </div> - <div class="oe_kanban_buttons_set oe_kanban_color_border oe_kanban_color_bglight oe_kanban_box_show_onclick"> - <div class="oe_kanban_left"> - <a string="Edit" icon="gtk-edit" type="edit"/> - <a string="Change Color" icon="color-picker" type="color" name="color"/> - </div> - <div class="oe_kanban_clear"/> - </div> + <div class="oe_kanban_vignette"> + <a type="open"><img t-att-src="kanban_image('product.product', 'image_small', record.id.value)" class="oe_kanban_image"/></a> + <div class="oe_kanban_details"> + <h4> + <a type="open"> + <t t-if="record.code.raw_value">[<field name="code"/>]</t> <field name="name"/> + </a> + </h4> + <div name="tags"/> + <ul> + <li>Price: <field name="lst_price"></field></li> + </ul> </div> </div> </t> @@ -227,7 +241,7 @@ <field name="name">Products</field> <field name="type">ir.actions.act_window</field> <field name="res_model">product.product</field> - <field name="view_mode">tree,form,kanban</field> + <field name="view_mode">kanban,tree,form</field> <field name="view_type">form</field> <field name="context">{"search_default_filter_to_sell":1}</field> <field name="view_id" ref="product_product_tree_view"/> @@ -250,7 +264,7 @@ <record id="open_view_product_tree1" model="ir.actions.act_window.view"> <field name="sequence" eval="2"/> <field name="view_mode">tree</field> - <field name="view_id" ref="product_product_tree_view"/> + <field name="view_id" ref="product_product_tree_view"/> <field name="act_window_id" ref="product_normal_action_sell"/> </record> @@ -264,8 +278,8 @@ <record id="open_view_product_kanban1" model="ir.actions.act_window.view"> <field name="sequence" eval="1"/> <field name="view_mode">kanban</field> - <field name="view_id" ref="product_kanban_view"/> - <field name="act_window_id" ref="product_normal_action"/> + <field name="view_id" ref="product_kanban_view"/> + <field name="act_window_id" ref="product_normal_action_sell"/> </record> <menuitem id="base.menu_product" name="Products" parent="base.menu_base_partner" sequence="9"/> @@ -534,7 +548,7 @@ <field name="model">product.packaging</field> <field name="arch" type="xml"> <tree string="Packaging"> - <field name="sequence" invisible="1"/> + <field name="sequence" widget="handle"/> <field name="ean"/> <field name="qty"/> <field name="ul"/> @@ -606,7 +620,7 @@ <field name="model">product.supplierinfo</field> <field name="arch" type="xml"> <tree string="Supplier Information"> - <field name="sequence" string="Seq"/> + <field name="sequence" widget="handle"/> <field name="name"/> <field name="delay"/> <field name="min_qty"/> @@ -716,7 +730,10 @@ <group> <group name="delay" string="Delays"> <field name="sale_delay" attrs="{'readonly':[('sale_ok','=',0)]}"/> - <field name="produce_delay"/> + <label for="produce_delay"/> + <div> + <field name="produce_delay" class="oe_inline"/> days + </div> <field name="warranty"/> </group> <group name="store" string="Storage Localisation"> diff --git a/addons/product_expiry/product_expiry_view.xml b/addons/product_expiry/product_expiry_view.xml index f883ca55fe0..88ea6f365e8 100644 --- a/addons/product_expiry/product_expiry_view.xml +++ b/addons/product_expiry/product_expiry_view.xml @@ -21,14 +21,14 @@ <field name="model">product.product</field> <field name="inherit_id" ref="product.product_normal_form_view" /> <field name="arch" type="xml"> - <notebook position="inside"> - <page string="Dates"> + <group name="inventory"> + <group string="Dates"> <field name="life_time" /> <field name="use_time" /> <field name="removal_time" /> <field name="alert_time" /> - </page> - </notebook> + </group> + </group> </field> </record> </data> diff --git a/addons/product_manufacturer/product_manufacturer_view.xml b/addons/product_manufacturer/product_manufacturer_view.xml index 5f620747d64..88f528693df 100644 --- a/addons/product_manufacturer/product_manufacturer_view.xml +++ b/addons/product_manufacturer/product_manufacturer_view.xml @@ -7,23 +7,21 @@ <field name="model">product.product</field> <field name="inherit_id" ref="product.product_normal_form_view" /> <field name="arch" type="xml"> - <notebook position="inside"> - <page string="Manufacturer"> - <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> + <group name="procurement" position="inside"> + <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> + </group> </field> </record> diff --git a/addons/project/project_view.xml b/addons/project/project_view.xml index f864e207141..c540e3c31df 100644 --- a/addons/project/project_view.xml +++ b/addons/project/project_view.xml @@ -218,7 +218,7 @@ <field name="name">project.project.kanban</field> <field name="model">project.project</field> <field name="arch" type="xml"> - <kanban> + <kanban version="7.0" class="oe_background_grey"> <field name="effective_hours"/> <field name="planned_hours"/> <field name="name"/> @@ -445,12 +445,10 @@ </group> <group> <field name="date_deadline" attrs="{'readonly':[('state','in',['done', 'cancelled'])]}"/> + <field name="categ_ids" widget="many2many_tags"/> <field name="progress" widget="progressbar" groups="project.group_time_work_estimation_tasks"/> </group> - <group> - <field name="categ_ids" widget="many2many_tags"/> - </group> </group> <notebook> <page string="Description"> diff --git a/addons/project_mrp/project_mrp_view.xml b/addons/project_mrp/project_mrp_view.xml index 841a61e6c31..f9e761117b6 100644 --- a/addons/project_mrp/project_mrp_view.xml +++ b/addons/project_mrp/project_mrp_view.xml @@ -16,8 +16,8 @@ <field name="model">product.product</field> <field name="inherit_id" ref="stock.view_normal_procurement_locations_form"/> <field name="arch" type="xml"> - <field name="active" position="after"> - <field name="project_id" attrs="{'readonly':[('type','!=','service')]}" /> + <field name="type" position="after"> + <field name="project_id" attrs="{'invisible':[('type','!=','service')]}" /> </field> </field> </record> diff --git a/addons/purchase/purchase_view.xml b/addons/purchase/purchase_view.xml index f513e2a60e8..d133e4a3805 100644 --- a/addons/purchase/purchase_view.xml +++ b/addons/purchase/purchase_view.xml @@ -73,7 +73,7 @@ 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> + <field name="name">On Draft Invoices</field> <field name="res_model">account.invoice</field> <field name="view_type">form</field> <field name="view_mode">tree,form,calendar,graph</field> @@ -95,7 +95,7 @@ </field> </record> - <menuitem name="Based on Draft Invoices" + <menuitem id="menu_procurement_management_pending_invoice" action="action_invoice_pending" parent="menu_procurement_management_invoice" @@ -177,7 +177,7 @@ <field name="arch" type="xml"> <form string="Purchase Order" version="7.0"> <header> - <button name="purchase_confirm" states="draft,sent" string="Confirm Quotation" class="oe_highlight"/> + <button name="purchase_confirm" states="draft,sent" string="Confirm Order" 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" string="Cancel" type="object" /> @@ -214,12 +214,16 @@ <notebook> <page string="Purchase Order"> <field name="order_line"> - <tree string="Purchase Order Lines"> - <field name="date_planned"/> + <tree string="Purchase Order Lines" editable="bottom"> + <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,context)"/> <field name="name"/> - <field name="product_qty"/> - <field name="product_uom" groups="product.group_uom"/> + <field name="date_planned"/> + <field name="company_id" groups="base.group_multi_company" widget="selection"/> + <field name="account_analytic_id" groups="purchase.group_analytic_accounting" domain="[('parent_id','!=',False)]"/> + <field name="product_qty" 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,context)"/> + <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,context)"/> <field name="price_unit"/> + <field name="taxes_id" widget="many2many_tags" domain="[('parent_id','=',False),('type_tax_use','!=','sale')]"/> <field name="price_subtotal"/> </tree> </field> @@ -508,7 +512,7 @@ <record id="purchase_line_form_action2" model="ir.actions.act_window"> - <field name="name">Based on Purchase Order Lines</field> + <field name="name">On Purchase Order Lines</field> <field name="type">ir.actions.act_window</field> <field name="res_model">purchase.order.line</field> <field name="domain">[('order_id.invoice_method','<>','picking'), ('state','in',('confirmed','done')), ('invoiced', '=', False)]</field> @@ -562,11 +566,10 @@ <field name="model">product.product</field> <field name="inherit_id" ref="product.product_normal_form_view"/> <field name="arch" type="xml"> - <xpath expr="//page[@string='Descriptions']" position="before"> - <page string="Suppliers" groups="base.group_user"> - <field name="seller_ids" context="{'uom_id': uom_id}"/> - </page> - </xpath> + <group name="procurement" position="after"> + <separator string="Suppliers"/> + <field name="seller_ids" context="{'uom_id': uom_id}"/> + </group> </field> </record> </data> diff --git a/addons/purchase/stock_view.xml b/addons/purchase/stock_view.xml index ad1c26a84c1..b522618ed2e 100644 --- a/addons/purchase/stock_view.xml +++ b/addons/purchase/stock_view.xml @@ -109,7 +109,7 @@ </record> <record id="action_picking_tree4_picking_to_invoice" model="ir.actions.act_window"> - <field name="name">Based on Incoming Shipments</field> + <field name="name">On Incoming Shipments</field> <field name="res_model">stock.picking</field> <field name="type">ir.actions.act_window</field> <field name="view_type">form</field> diff --git a/addons/purchase_requisition/purchase_requisition_view.xml b/addons/purchase_requisition/purchase_requisition_view.xml index a1b270934e2..d4e8e3e20a9 100644 --- a/addons/purchase_requisition/purchase_requisition_view.xml +++ b/addons/purchase_requisition/purchase_requisition_view.xml @@ -183,9 +183,7 @@ <field name="inherit_id" ref="product.product_normal_form_view"/> <field name="arch" type="xml"> <field name="procure_method" position="before"> - <group colspan="2" col="2" attrs="{'invisible': [('supply_method','<>','buy')]}"> <field name="purchase_requisition"/> - </group> </field> </field> </record> diff --git a/addons/sale/res_config.py b/addons/sale/res_config.py index 0a2e3a49f62..1e7b5b67c53 100644 --- a/addons/sale/res_config.py +++ b/addons/sale/res_config.py @@ -56,7 +56,7 @@ class sale_configuration(osv.osv_memory): help ="""Allows you to add delivery methods in sale orders and delivery orders. You can define your own carrier and delivery grids for prices. This installs the module delivery."""), - 'time_unit': fields.many2one('product.uom', 'The default working time unit for services is'), + 'time_unit': fields.many2one('product.uom', 'the default working time unit for services is'), 'default_picking_policy' : fields.boolean("deliver all at once when all products are available.", help = "Sales order by default will be configured to deliver all products at once instead of delivering each product when it is available. This may have an impact on the shipping price."), 'group_sale_pricelist':fields.boolean("use pricelists to adapt your price per customers", diff --git a/addons/sale/sale_view.xml b/addons/sale/sale_view.xml index a0e69efe849..a2f44034db3 100644 --- a/addons/sale/sale_view.xml +++ b/addons/sale/sale_view.xml @@ -262,8 +262,6 @@ <field name="sequence" widget="handle"/> <field name="state" invisible="1"/> <field name="delay" invisible="1"/> - <field name="tax_id" invisible="1"/> - <field name="type" invisible="1"/> <field name="th_weight" invisible="1"/> <field name="product_packaging" invisible="1"/> <field name="product_id" @@ -271,6 +269,7 @@ groups="base.group_user" on_change="product_id_change(parent.pricelist_id, product_id, product_uom_qty, product_uom, product_uos_qty, product_uos, name, parent.partner_id, False, True, parent.date_order, False, parent.fiscal_position, False, context)"/> <field name="name"/> + <field name="type"/> <field name="product_uom_qty" context="{'partner_id':parent.partner_id, 'quantity':product_uom_qty, 'pricelist':parent.pricelist_id, 'shop':parent.shop_id, 'uom':product_uom}" on_change="product_id_change(parent.pricelist_id, product_id, product_uom_qty, product_uom, product_uos_qty, product_uos, name, parent.partner_id, False, False, parent.date_order, False, parent.fiscal_position, True, context)"/> @@ -281,6 +280,7 @@ <field name="product_uos" string="UoS" groups="product.group_uos"/> <field name="discount" groups="sale.group_discount_per_so_line"/> <field name="price_unit"/> + <field name="tax_id" widget="many2many_tags" domain="[('parent_id','=',False),('type_tax_use','<>','purchase')]"/> <field name="price_subtotal"/> </tree> </field> @@ -357,6 +357,20 @@ </field> </record> + <!-- inherited view to make the order lines list in the form non-editable + for the members of some usability groups --> + <record id="view_order_form_editable_list" model="ir.ui.view"> + <field name="name">sale.order.form.editable.list</field> + <field name="model">sale.order</field> + <field name="inherit_id" ref="sale.view_order_form"/> + <field name="groups_id" eval="[(6, 0, [ref('product.group_uos'), ref('product.group_stock_packaging'), ref('sale.group_mrp_properties')])]"/> + <field name="arch" type="xml"> + <xpath expr="//field[@name='order_line']/tree" position="attributes"> + <attribute name="editable"/> + </xpath> + </field> + </record> + <record id="view_sales_order_filter" model="ir.ui.view"> <field name="name">sale.order.list.select</field> <field name="model">sale.order</field> diff --git a/addons/sale_analytic_plans/sale_analytic_plans_view.xml b/addons/sale_analytic_plans/sale_analytic_plans_view.xml index 6701ede5ae5..6c788866520 100644 --- a/addons/sale_analytic_plans/sale_analytic_plans_view.xml +++ b/addons/sale_analytic_plans/sale_analytic_plans_view.xml @@ -22,6 +22,11 @@ </field> </record> + <!-- the presence of 'analytics_id' makes the order lines non-editable --> + <record id="sale.view_order_form_editable_list" model="ir.ui.view"> + <field name="groups_id" eval="[(4, ref('analytic.group_analytic_accounting'))]"/> + </record> + <record model="ir.ui.view" id="view_order_line_form2_inherit"> <field name="name">sale.order.line.form2.inherit</field> <field name="model">sale.order.line</field> diff --git a/addons/sale_crm/i18n/fr.po b/addons/sale_crm/i18n/fr.po index e9463b543de..eac4ce9a5b0 100644 --- a/addons/sale_crm/i18n/fr.po +++ b/addons/sale_crm/i18n/fr.po @@ -7,30 +7,30 @@ msgstr "" "Project-Id-Version: OpenERP Server 6.0dev\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2012-02-08 00:37+0000\n" -"PO-Revision-Date: 2011-11-25 14:51+0000\n" -"Last-Translator: Numérigraphe <Unknown>\n" +"PO-Revision-Date: 2012-09-03 22:25+0000\n" +"Last-Translator: Nicolas JEUDY <njeudy@simplee.fr>\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-08-28 06:07+0000\n" -"X-Generator: Launchpad (build 15864)\n" +"X-Launchpad-Export-Date: 2012-09-04 04:52+0000\n" +"X-Generator: Launchpad (build 15890)\n" #. module: sale_crm #: field:sale.order,categ_id:0 msgid "Category" -msgstr "" +msgstr "Catégorie" #. module: sale_crm #: sql_constraint:sale.order:0 msgid "Order Reference must be unique per Company!" -msgstr "" +msgstr "La référence de commande doit être unique par société !" #. module: sale_crm #: code:addons/sale_crm/wizard/crm_make_sale.py:112 #, python-format msgid "Converted to Sales Quotation(%s)." -msgstr "" +msgstr "Convertir en devis (%s)" #. module: sale_crm #: view:crm.make.sale:0 @@ -62,7 +62,7 @@ msgstr "_Créer" #. module: sale_crm #: view:sale.order:0 msgid "My Sales Team(s)" -msgstr "" +msgstr "Mon (mes) équipe(s) de vente" #. module: sale_crm #: help:crm.make.sale,close:0 @@ -75,7 +75,7 @@ msgstr "" #. module: sale_crm #: view:board.board:0 msgid "My Opportunities" -msgstr "" +msgstr "Mes opportunités" #. module: sale_crm #: view:crm.lead:0 @@ -106,7 +106,7 @@ msgstr "Fermer l'opportunité" #. module: sale_crm #: view:board.board:0 msgid "My Planned Revenues by Stage" -msgstr "" +msgstr "Mes revenus planifiés par étape" #. module: sale_crm #: code:addons/sale_crm/wizard/crm_make_sale.py:110 @@ -133,7 +133,7 @@ msgstr "Annuler" #. module: sale_crm #: model:ir.model,name:sale_crm.model_sale_order msgid "Sales Order" -msgstr "Commande de ventes" +msgstr "Commande client" #~ msgid "Crm opportunity quotation" #~ msgstr "Chiffrage de l'opportunité" diff --git a/addons/sale_crm/i18n/zh_CN.po b/addons/sale_crm/i18n/zh_CN.po index bbae3770541..6678287c01e 100644 --- a/addons/sale_crm/i18n/zh_CN.po +++ b/addons/sale_crm/i18n/zh_CN.po @@ -7,30 +7,30 @@ msgstr "" "Project-Id-Version: OpenERP Server 6.0dev\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2012-02-08 00:37+0000\n" -"PO-Revision-Date: 2012-08-18 17:40+0000\n" -"Last-Translator: Heling Yao <Unknown>\n" +"PO-Revision-Date: 2012-08-31 14:59+0000\n" +"Last-Translator: ccdos <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-08-28 06:07+0000\n" -"X-Generator: Launchpad (build 15864)\n" +"X-Launchpad-Export-Date: 2012-09-01 04:55+0000\n" +"X-Generator: Launchpad (build 15890)\n" #. module: sale_crm #: field:sale.order,categ_id:0 msgid "Category" -msgstr "" +msgstr "分类" #. module: sale_crm #: sql_constraint:sale.order:0 msgid "Order Reference must be unique per Company!" -msgstr "" +msgstr "订单号必须在一个公司范围内唯一" #. module: sale_crm #: code:addons/sale_crm/wizard/crm_make_sale.py:112 #, python-format msgid "Converted to Sales Quotation(%s)." -msgstr "" +msgstr "转换为销售报价单(%s)。" #. module: sale_crm #: view:crm.make.sale:0 @@ -73,7 +73,7 @@ msgstr "在生成销售订单后检查是否关闭商机。" #. module: sale_crm #: view:board.board:0 msgid "My Opportunities" -msgstr "" +msgstr "我的商机" #. module: sale_crm #: view:crm.lead:0 @@ -104,13 +104,13 @@ msgstr "关闭商机" #. module: sale_crm #: view:board.board:0 msgid "My Planned Revenues by Stage" -msgstr "" +msgstr "这阶段我的计划收入" #. module: sale_crm #: code:addons/sale_crm/wizard/crm_make_sale.py:110 #, python-format msgid "Opportunity '%s' is converted to Quotation." -msgstr "" +msgstr "商机 '%s' 被转换为报价单" #. module: sale_crm #: view:sale.order:0 diff --git a/addons/sale_mrp/i18n/zh_CN.po b/addons/sale_mrp/i18n/zh_CN.po index 86105255a19..bb04533ef97 100644 --- a/addons/sale_mrp/i18n/zh_CN.po +++ b/addons/sale_mrp/i18n/zh_CN.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:37+0000\n" -"PO-Revision-Date: 2011-06-28 05:04+0000\n" -"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" +"PO-Revision-Date: 2012-08-31 14:59+0000\n" +"Last-Translator: ccdos <Unknown>\n" "Language-Team: Chinese (Simplified) <zh_CN@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-08-28 06:34+0000\n" -"X-Generator: Launchpad (build 15864)\n" +"X-Launchpad-Export-Date: 2012-09-01 04:55+0000\n" +"X-Generator: Launchpad (build 15890)\n" #. module: sale_mrp #: help:mrp.production,sale_ref:0 @@ -40,12 +40,12 @@ msgstr "销售名称" #. module: sale_mrp #: sql_constraint:mrp.production:0 msgid "Reference must be unique per Company!" -msgstr "" +msgstr "编号必须在公司内唯一!" #. module: sale_mrp #: constraint:mrp.production:0 msgid "Order quantity cannot be negative or zero!" -msgstr "" +msgstr "订单数量不能是负数或者0!" #. module: sale_mrp #: help:mrp.production,sale_name:0 diff --git a/addons/share/i18n/nl.po b/addons/share/i18n/nl.po index 976d28f66c5..c0d68268f2c 100644 --- a/addons/share/i18n/nl.po +++ b/addons/share/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 01:37+0100\n" -"PO-Revision-Date: 2012-06-28 12:52+0000\n" +"PO-Revision-Date: 2012-09-03 17:14+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-08-28 06:34+0000\n" -"X-Generator: Launchpad (build 15864)\n" +"X-Launchpad-Export-Date: 2012-09-04 04:52+0000\n" +"X-Generator: Launchpad (build 15890)\n" #. module: share #: field:share.wizard,embed_option_title:0 @@ -384,6 +384,7 @@ msgid "" "An email notification with instructions has been sent to the following " "people:" msgstr "" +"Een e-mail bevestiging met instructies is verzonden naar de volgende mensen:" #. module: share #: model:ir.model,name:share.model_share_wizard_result_line @@ -415,6 +416,8 @@ msgstr "Kan bewerken" msgid "" "An optional personal message, to be included in the email notification." msgstr "" +"Een optionele persoonlijk bericht, welke kan worden toegevoegd in de e-mail " +"bevestiging." #. module: share #: model:ir.model,name:share.model_res_users @@ -532,6 +535,8 @@ msgid "" "You must configure your email address in the user preferences before using " "the Share button." msgstr "" +"U dient u e-mail adres in te stellen in uw gebruikersinstellingen, voordat u " +"de 'share' knop kunt gebruiken." #. module: share #: help:share.wizard,access_mode:0 diff --git a/addons/stock/product.py b/addons/stock/product.py index e0e55594eca..b8e8ddc4505 100644 --- a/addons/stock/product.py +++ b/addons/stock/product.py @@ -32,7 +32,7 @@ class product_product(osv.osv): moves = move_pool.read_group(cr, uid, [ ('product_id', 'in', ids), ('picking_id.type', '=', 'in'), - ('state','in',('draft','confirmed','assigned','pending')) + ('state','in',('confirmed','assigned','pending')) ], ['product_id'], ['product_id']) for move in moves: product_id = move['product_id'][0] @@ -40,7 +40,7 @@ class product_product(osv.osv): moves = move_pool.read_group(cr, uid, [ ('product_id', 'in', ids), ('picking_id.type', '=', 'out'), - ('state','in',('draft','confirmed','assigned','pending')) + ('state','in',('confirmed','assigned','pending')) ], ['product_id'], ['product_id']) for move in moves: product_id = move['product_id'][0] @@ -373,7 +373,7 @@ class product_product(osv.osv): "typed as 'internal'."), 'virtual_available': fields.function(_product_available, multi='qty_available', type='float', digits_compute=dp.get_precision('Product Unit of Measure'), - string='Quantity Available', + string='Future Quantity', help="Forecast quantity (computed as Quantity On Hand " "- Outgoing + Incoming)\n" "In a context with a single Stock Location, this includes " diff --git a/addons/stock/product_view.xml b/addons/stock/product_view.xml index 477c458da02..2e0eef44da9 100644 --- a/addons/stock/product_view.xml +++ b/addons/stock/product_view.xml @@ -50,38 +50,28 @@ </page> </field> </record> - + <record id="view_normal_procurement_locations_form" model="ir.ui.view"> <field name="name">product.normal.procurement.locations.inherit</field> <field name="model">product.product</field> <field name="inherit_id" ref="product.product_normal_form_view"/> <field name="arch" type="xml"> - <notebook position="inside"> - <page string="Procurement & Locations" groups="base.group_user"> - <group> - <group name="delay" string="Delays"> - <field name="sale_delay" attrs="{'readonly':[('sale_ok','=',0)]}"/> - <field name="produce_delay" attrs="{'invisible':[('type','=','service')]}"/> - <field name="warranty"/> - </group> - <group name="store" string="Storage Localisation"> - <field name="loc_rack" attrs="{'readonly':[('type','=','service')]}"/> - <field name="loc_row" attrs="{'readonly':[('type','=','service')]}"/> - <field name="loc_case" attrs="{'readonly':[('type','=','service')]}"/> - </group> - <group name="store" groups="stock.group_locations"> - <separator string="Counter-Part Locations Properties" colspan="2"/> - <field name="property_stock_procurement" attrs="{'readonly':[('type','=','service')]}" domain="[('usage','=','procurement')]"/> - <field name="property_stock_production" attrs="{'readonly':[('type','=','service')]}" domain="[('usage','=','production')]"/> - <field name="property_stock_inventory" attrs="{'readonly':[('type','=','service')]}" domain="[('usage','=','inventory')]"/> - </group> - <group name="misc" string="Miscellaneous"> - <field name="active"/> - <field name="company_id" groups="base.group_multi_company" widget="selection"/> - </group> - </group> - </page> - </notebook> + <group name="procurement" position="inside"> + <group name="delay" string="Delays"> + <label for="produce_delay" attrs="{'invisible':[('type','=','service')]}"/> + <div attrs="{'invisible':[('type','=','service')]}"> + <field name="produce_delay" class="oe_inline"/> days + </div> + <field name="active"/> + </group> + </group> + <group name="inventory" position="inside"> + <group name="store" groups="stock.group_locations" string="Counter-Part Locations Properties"> + <field name="property_stock_procurement" attrs="{'readonly':[('type','=','service')]}" domain="[('usage','=','procurement')]"/> + <field name="property_stock_production" attrs="{'readonly':[('type','=','service')]}" domain="[('usage','=','production')]"/> + <field name="property_stock_inventory" attrs="{'readonly':[('type','=','service')]}" domain="[('usage','=','inventory')]"/> + </group> + </group> </field> </record> @@ -93,8 +83,8 @@ <field name="standard_price" position="replace" version="7.0"> <label string="Cost Price" for="standard_price" align="1.0" groups="base.group_user"/> <div groups="base.group_user"> - <field name="standard_price" attrs="{'readonly':[('cost_method','=','average')]}" nolabel="1"/> - - <button name="%(action_view_change_standard_price)d" string="update" + <field name="standard_price" attrs="{'readonly':[('cost_method','=','average')]}" nolabel="1"/> + <button name="%(action_view_change_standard_price)d" string="- update" type="action" attrs="{'invisible':[('cost_method','<>','average')]}" class="oe_link"/> </div> @@ -132,19 +122,17 @@ <field name="inherit_id" ref="product.product_normal_form_view"/> <field name="arch" type="xml"> <group name="status" position="before" version="7.0"> - <group string="Stock and Expected Variations" attrs="{'invisible': [('type', '=', 'service')]}"> + <group string="Stock and Expected Variations" attrs="{'invisible': [('type', '=', 'service')]}" groups="base.group_user"> <label for="qty_available"/> <div> <field name="qty_available" class="oe_inline"/> <button name="%(action_view_change_product_quantity)d" string="update" - type="action" groups="stock.group_stock_manager,stock.group_stock_user" + type="action" class="oe_link"/> </div> - <label for="virtual_available" groups="base.group_user"/> - <div groups="base.group_user"> - <field name="virtual_available" class="oe_inline"/> - (+<field name="incoming_qty" class="oe_inline"/> -<field name="outgoing_qty" class="oe_inline"/>) - </div> + <field name="incoming_qty" class="oe_inline"/> + <field name="outgoing_qty" class="oe_inline"/> + <field name="virtual_available" class="oe_inline"/> </group> <group name="lot" groups="stock.group_tracking_lot,stock.group_production_lot" string="Lots"> <field name="track_production" groups="stock.group_production_lot"/> @@ -164,7 +152,6 @@ <field name="domain">[('picking_id.type','=','in')]</field> <field name="view_id" ref="view_move_tree_reception_picking"/> <field name="context" eval="'{\'search_default_product_id\': [active_id]}'"/> - <field name="search_view_id" ref="view_move_search_reception_incoming_picking"/> <field name="help" type="html"> <p class="oe_view_nocontent_create"> Click to register a reception for this product. @@ -185,7 +172,6 @@ <field name="domain">[('picking_id.type','=','out')]</field> <field name="view_id" ref="view_move_tree_reception_picking"/> <field name="context" eval="'{\'search_default_product_id\': [active_id]}'"/> - <field name="search_view_id" ref="view_move_search_reception_outcoming_picking"/> <field name="help" type="html"> <p class="oe_view_nocontent_create"> Click to add a delivery order for this product. @@ -197,50 +183,27 @@ </field> </record> - <record model="ir.ui.view" id="product.product_kanban_view"> - <field name="name">Product Kanban</field> + <record model="ir.ui.view" id="product_kanban_stock_view"> + <field name="name">Product Kanban Stock</field> <field name="model">product.product</field> + <field name="inherit_id" ref="product.product_kanban_view"/> <field name="arch" type="xml"> - <kanban> - <field name="color"/> - <field name="type"/> - <field name="image_medium"/> - <field name="list_price"/> + <field name="list_price" position="after"> <field name="reception_count"/> <field name="delivery_count"/> - <templates> - <t t-name="kanban-box"> - <div class="oe_product_vignette"> - <div class="oe_product_img"> - <a type="open"><img t-att-src="kanban_image('product.product', 'image_medium', record.id.value)" class="oe_product_photo"/></a> - </div> - <div class="oe_product_desc"> - <h4><a type="open"><field name="name"></field></a></h4> - <ul> - <li t-if="record.code.raw_value">Code: <field name="code"/></li> - <li t-if="record.type.raw_value != 'service'">Stock on hand: <field name="qty_available"/> <field name="uom_id"/></li> - <li t-if="record.type.raw_value != 'service'">Stock available: <field name="virtual_available"/> <field name="uom_id"/></li> - <li>Price: <field name="lst_price"></field></li> - <!-- TODO the 'groups' attribute doesn't work in kanban views --> - <li groups="base.group_user">Cost: <field name="standard_price"></field></li> - </ul> - <div groups="base.group_user"> - <a name="%(action_receive_move)d" type="action"> - <t t-if="record.reception_count.value">Receptions(<t t-esc="record.reception_count.value"/>)</t> - </a> - <a name="%(action_deliver_move)d" type="action"> - <t t-if="record.delivery_count.value">Deliveries(<t t-esc="record.delivery_count.value"/>)</t> - </a> - </div> - </div> - </div> - <script> - $('.oe_product_photo').load(function() { if($(this).width() > $(this).height()) { $(this).addClass('oe_product_photo_wide') } }); - </script> - <div></div> - </t> - </templates> - </kanban> + </field> + <xpath expr="//div[@name='tags']" position="inside"> + <a name="%(action_receive_move)d" type="action" t-if="record.reception_count.raw_value>0"> + <t t-esc="record.reception_count.value"/> Receptions + </a> + <a name="%(action_deliver_move)d" type="action" t-if="record.delivery_count.raw_value>0"> + <t t-esc="record.delivery_count.value"/> Deliveries + </a> + </xpath> + <ul position="inside"> + <li t-if="record.type.raw_value != 'service'">On hand: <field name="qty_available"/> <field name="uom_id"/></li> + <li t-if="record.type.raw_value != 'service'">Available: <field name="virtual_available"/> <field name="uom_id"/></li> + </ul> </field> </record> diff --git a/addons/stock/static/src/css/stock.css b/addons/stock/static/src/css/stock.css index 449c1102fce..1efbaf5e3c4 100644 --- a/addons/stock/static/src/css/stock.css +++ b/addons/stock/static/src/css/stock.css @@ -9,8 +9,8 @@ } .oe_product_img { - width: 150px; - height: 150px; + width: 80px; + height: 80px; text-align: center; overflow: hidden; -moz-border-radius: 3px; @@ -25,15 +25,15 @@ } .oe_product_photo { - width: 150px; + width: 80px; height: auto; - clip: rect(5px, 100px, 105px, 0px); + clip: rect(5px, 70px, 75px, 0px); } .oe_product_photo_wide { - height: 150px; + height: 80px; width: auto; - clip: rect(0px, 110px, 100px, 10px); + clip: rect(0px, 80px, 70px, 10px); } .oe_product_desc { diff --git a/addons/stock/stock_view.xml b/addons/stock/stock_view.xml index 6927bf68c25..3560b255ab5 100644 --- a/addons/stock/stock_view.xml +++ b/addons/stock/stock_view.xml @@ -113,13 +113,14 @@ <field name="state" widget="statusbar" statusbar_visible="draft,confirm"/> </header> <sheet> - <div> - <label for="name" class="oe_edit_only"/> - <field name="name" placeholder="e.g. Annual inventory" class="oe_inline"/> - - <field name="date" class="oe_inline"/> - </div> <group> - <field name="company_id" groups="base.group_multi_company" widget="selection"/> + <group> + <field name="name" placeholder="e.g. Annual inventory"/> + </group> + <group> + <field name="date"/> + <field name="company_id" groups="base.group_multi_company" widget="selection"/> + </group> </group> <notebook> <page string="General Informations"> @@ -267,7 +268,8 @@ </p> </field> </record> - <menuitem id="menu_traceability" name="Traceability" parent="menu_stock_root" sequence="3"/> + <menuitem id="menu_traceability" name="Traceability" parent="menu_stock_root" + sequence="3" groups="stock.group_tracking_lot,stock.group_production_lot"/> <menuitem action="action_tracking_form" id="menu_action_tracking_form" groups="product.group_stock_packaging" sequence="6" @@ -1333,10 +1335,11 @@ <field eval="3" name="priority"/> <field name="arch" type="xml"> <search string="Stock Moves"> - <field name="origin" string="Stock Moves"/> + <field name="origin" domain="['|',('origin','ilike',self),('picking_id','ilike',self)]" string="Reference"/> <field name="date" groups="base.group_no_one"/> + <filter icon="terp-camera_test" string="Ready" name="ready" domain="[('state','=','assigned')]" help="Stock moves that are Available (Ready to process)"/> - <filter icon="terp-stock" string="Future" name="future" domain="[('state','in',('assigned','confirmed','waiting'))]" help="Stock moves that are Confirmed, Available or Waiting"/> + <filter icon="terp-stock" string="To Do" name="future" domain="[('state','in',('assigned','confirmed','waiting'))]" help="Stock moves that are Confirmed, Available or Waiting"/> <filter icon="terp-dialog-close" string="Done" name="done" domain="[('state','=','done')]" help="Stock moves that have been processed"/> <separator/> <filter icon="terp-go-today" string="Today" domain="[('date','<=',time.strftime('%%Y-%%m-%%d 23:59:59')),('date','>=',time.strftime('%%Y-%%m-%%d 00:00:00'))]" help="Orders processed Today or planned for Today"/> @@ -1389,8 +1392,10 @@ <field name="priority" eval="6"/> <field name="arch" type="xml"> <tree colors="grey:state == 'cancel'" string="Moves"> - <field name="picking_id" string="Reference"/> + <field name="date" widget="date"/> + <field name="picking_id" string="Reference" invisible="1"/> <field name="origin"/> + <field name="partner_id" string="Supplier"/> <field name="product_id"/> <field name="product_qty"/> <field name="product_uom" string="Unit of Measure" groups="product.group_uom"/> @@ -1413,8 +1418,13 @@ groups="product.group_stock_packaging" icon="terp-stock_effects-object-colorize" states="draft,assigned,confirmed,done"/> - <field name="date" groups="base.group_no_one"/> <field name="state"/> + <button name="%(action_partial_move_server)d" + icon="terp-stock_effects-object-colorize" type="action" + states="assigned" class="oe_highlight"/> + <button name="action_done" states="draft,assigned,confirmed" + icon="gtk-go-forward" type="object" + class="oe_highlight"/> </tree> </field> </record> @@ -1435,54 +1445,6 @@ </field> </record> - <record id="view_move_search_reception_incoming_picking" model="ir.ui.view"> - <field name="name">stock.move.incoming.search2</field> - <field name="model">stock.move</field> - <field eval="6" name="priority"/> - <field name="arch" type="xml"> - <search string="Stock Moves"> - <field name="origin" string="Stock Moves"/> - <filter icon="terp-gtk-go-back-rtl" name="receive" string="Waiting " domain="[('state','in',('confirmed','assigned'))]" help="Stock to be receive"/> - <filter icon="terp-check" name="available" string="Available" domain="[('state','in',('assigned',))]" help="Stock available to be delivered"/> - <filter icon="terp-dialog-close" name="done" string="Done" domain="[('state', '=', 'done')]"/> - <separator/> - <filter icon="terp-go-today" string="Today" domain="[('date','<=',time.strftime('%%Y-%%m-%%d 23:59:59')),('date','>=',time.strftime('%%Y-%%m-%%d 00:00:00'))]" help="Orders planned for today"/> - <field name="product_id"/> - <field name="prodlot_id"/> - <group expand="0" string="Group By..."> - <filter string="Product" icon="terp-accessories-archiver" domain="[]" context="{'group_by':'product_id'}"/> - <filter string="Order" icon="terp-gtk-jump-to-rtl" domain="[]" context="{'group_by':'origin'}"/> - <filter string="Status" icon="terp-stock_effects-object-colorize" domain="[]" context="{'group_by':'state'}"/> - <filter string="Order Date" icon="terp-go-month" domain="[]" context="{'group_by':'date'}" groups="base.group_no_one"/> - </group> - </search> - </field> - </record> - - <record id="view_move_search_reception_outcoming_picking" model="ir.ui.view"> - <field name="name">stock.move.outgoing.search2</field> - <field name="model">stock.move</field> - <field eval="6" name="priority"/> - <field name="arch" type="xml"> - <search string="Stock Moves"> - <field name="origin" string="Stock Moves"/> - <filter icon="terp-gtk-go-back-rtl" name="receive" string="Waiting" domain="[('state','in',('confirmed','assigned'))]" help="Stock to be delivered (Available or not)"/> - <filter icon="terp-check" name="available" string="Available" domain="[('state','in',('assigned',))]" help="Stock available to be delivered"/> - <filter icon="terp-dialog-close" name="received" string="Done" domain="[('state','=','done')]"/> - <separator/> - <filter icon="terp-go-today" string="Today" domain="[('date','<=',time.strftime('%%Y-%%m-%%d 23:59:59')),('date','>=',time.strftime('%%Y-%%m-%%d 00:00:00'))]" help="Orders planned for today"/> - <field name="product_id"/> - <field name="prodlot_id"/> - <group expand="0" string="Group By..."> - <filter string="Product" icon="terp-accessories-archiver" domain="[]" context="{'group_by':'product_id'}"/> - <filter string="Order" icon="terp-gtk-jump-to-rtl" domain="[]" context="{'group_by':'origin'}"/> - <filter string="Status" icon="terp-stock_effects-object-colorize" domain="[]" context="{'group_by':'state'}"/> - <filter string="Order Date" icon="terp-go-month" domain="[]" context="{'group_by':'date'}" groups="base.group_no_one"/> - </group> - </search> - </field> - </record> - <record id="action_reception_picking_move" model="ir.actions.act_window"> <field name="name">Receive Products</field> <field name="res_model">stock.move</field> @@ -1491,8 +1453,7 @@ <field name="view_mode">tree,form</field> <field name="domain">['|','&',('picking_id','=',False),('location_id.usage', 'in', ['customer','supplier']),'&',('picking_id','!=',False),('picking_id.type','=','in')]</field> <field name="view_id" ref="view_move_tree_reception_picking"/> - <field name="context" eval="'{\'product_receive\' : True, \'default_location_id\':%d, \'default_location_dest_id\':%d}' % (ref('stock_location_suppliers'),ref('stock_location_stock') )"/> - <field name="search_view_id" ref="view_move_search_reception_incoming_picking"/> + <field name="context" eval="'{\'product_receive\' : True, \'default_location_id\':%d, \'default_location_dest_id\':%d, \'search_default_future\': 1}' % (ref('stock_location_suppliers'),ref('stock_location_stock') )"/> <field name="help" type="html"> <p> Click to register a product reception. @@ -1627,8 +1588,7 @@ <field name="view_mode">tree,form</field> <field name="domain">['|','&',('picking_id','=',False),('location_dest_id.usage', 'in', ['customer','supplier']),'&',('picking_id','!=',False),('picking_id.type','=','out')]</field> <field name="view_id" ref="view_move_tree_reception_picking"/> - <field name="context" eval="'{\'default_location_id\':%d, \'default_location_dest_id\':%d}' % (ref('stock_location_stock'),ref('stock_location_customers'))"/> - <field name="search_view_id" ref="view_move_search_reception_outcoming_picking"/> + <field name="context" eval="'{\'default_location_id\':%d, \'default_location_dest_id\':%d, \'search_default_future\': 1}' % (ref('stock_location_stock'),ref('stock_location_customers'))"/> <field name="help" type="html"> <p> You will find in this list all products you have to deliver to diff --git a/addons/stock_location/stock_location_view.xml b/addons/stock_location/stock_location_view.xml index 720c7753df6..ddb2efc21e5 100644 --- a/addons/stock_location/stock_location_view.xml +++ b/addons/stock_location/stock_location_view.xml @@ -38,62 +38,59 @@ <field name="model">product.product</field> <field name="inherit_id" ref="product.product_normal_form_view"/> <field name="arch" type="xml"> - <notebook position="inside"> - <page string="Logistics Flows"> - <field name="flow_pull_ids" colspan="4" nolabel="1"> - <tree string="Pulled flows"> - <field name="name"/> - <field name="location_id" attrs="{'required': [('type_proc', '=', 'move')]}"/> - <field name="type_proc"/> - <field name="journal_id"/> - <field name="company_id" groups="base.group_multi_company"/> - </tree> - <form string="Pulled Paths"> - <group> - <group string="Conditions"> - <field name="name" placeholder="Fulfill needs on location X from location Y "/> - <field name="location_id"/> - </group> - <group string="Action Type"> - <field name="type_proc"/> - <field name="company_id"/> - </group> + <group name="inventory" position="after"> + <field name="flow_pull_ids" colspan="4" nolabel="1"> + <tree string="Pulled flows"> + <field name="name"/> + <field name="location_id" attrs="{'required': [('type_proc', '=', 'move')]}"/> + <field name="type_proc"/> + <field name="journal_id"/> + <field name="company_id" groups="base.group_multi_company"/> + </tree> + <form string="Pulled Paths"> + <group> + <group string="Conditions"> + <field name="name" placeholder="Fulfill needs on location X from location Y "/> + <field name="location_id"/> </group> - <group attrs="{'invisible':[('type_proc','!=','move')]}"> - <field name="location_src_id" attrs="{'required': [('type_proc', '=', 'move')]}"/> - <field name="picking_type"/> - <field name="partner_address_id"/> - <field name="procure_method"/> - <field name="cancel_cascade"/> - <field name="invoice_state"/> - <field name="journal_id"/> + <group string="Action Type"> + <field name="type_proc"/> + <field name="company_id"/> </group> - </form> - </field> - <field name="path_ids"> - <field name="name"/> - <tree string="Pushed flows"> - <field name="location_from_id"/> - <field name="location_dest_id"/> - <field name="auto"/> - <field name="name"/> - <field name="invoice_state"/> - <field name="company_id" groups="base.group_multi_company"/> - </tree> - <form string="Pushed flows"> - <field name="name" placeholder="When receiving at location X, move to location Y"/> - <field name="location_from_id"/> - <field name="location_dest_id"/> - <field name="auto"/> - <field name="delay"/> - <field name="journal_id"/> + </group> + <group attrs="{'invisible':[('type_proc','!=','move')]}"> + <field name="location_src_id" attrs="{'required': [('type_proc', '=', 'move')]}"/> <field name="picking_type"/> + <field name="partner_address_id"/> + <field name="procure_method"/> + <field name="cancel_cascade"/> <field name="invoice_state"/> - <field name="company_id" groups="base.group_multi_company"/> - </form> - </field> - </page> - </notebook> + <field name="journal_id"/> + </group> + </form> + </field> + <field name="path_ids"> + <tree string="Pushed flows"> + <field name="location_from_id"/> + <field name="location_dest_id"/> + <field name="auto"/> + <field name="name"/> + <field name="invoice_state"/> + <field name="company_id" groups="base.group_multi_company"/> + </tree> + <form string="Pushed flows"> + <field name="name" placeholder="When receiving at location X, move to location Y"/> + <field name="location_from_id"/> + <field name="location_dest_id"/> + <field name="auto"/> + <field name="delay"/> + <field name="journal_id"/> + <field name="picking_type"/> + <field name="invoice_state"/> + <field name="company_id" groups="base.group_multi_company"/> + </form> + </field> + </group> </field> </record> </data> diff --git a/addons/warning/warning_view.xml b/addons/warning/warning_view.xml index 3f3bbefdbab..fd12ce53ac9 100644 --- a/addons/warning/warning_view.xml +++ b/addons/warning/warning_view.xml @@ -45,16 +45,14 @@ <field name="arch" type="xml"> <notebook position="inside"> <page string="Warnings"> - <group colspan="2" col="2"> - <separator string="Warning when Selling this Product" colspan="4"/> - <field name="sale_line_warn" nolabel="1" /> - <field name="sale_line_warn_msg" colspan="3" nolabel="1" + <group string="Warning when Selling this Product"> + <field name="sale_line_warn"/> + <field name="sale_line_warn_msg" attrs="{'required':[('sale_line_warn','!=','no-message')],'readonly':[('sale_line_warn','=','no-message')]}"/> </group> - <group colspan="2" col="2"> - <separator string="Warning when Purchasing this Product" colspan="4" /> - <field name="purchase_line_warn" nolabel="1" /> - <field name="purchase_line_warn_msg" colspan="3" nolabel="1" + <group string="Warning when Purchasing this Product"> + <field name="purchase_line_warn"/> + <field name="purchase_line_warn_msg" attrs="{'required':[('purchase_line_warn','!=','no-message')],'readonly':[('purchase_line_warn','=','no-message')]}"/> </group> </page> |
