diff options
| author | Atul Patel (OpenERP) <atp@tinyerp.com> | 2013-08-26 10:20:58 +0530 |
|---|---|---|
| committer | Atul Patel (OpenERP) <atp@tinyerp.com> | 2013-08-26 10:20:58 +0530 |
| commit | 4ccbbba7c8e0139b3aa4dcdae6d37c9596393084 (patch) | |
| tree | 5974c7fe75b2d5c52876ecb7a05489b4a7e25ac0 | |
| parent | 7ae5c7b0d3672e71fbf4f2b531a24b4198f816db (diff) | |
| parent | 7294b0ebfa056002fb2409f2b28057c05a3f328b (diff) | |
[MERGE]: Merged with lp:openobject-addons
bzr revid: atp@tinyerp.com-20130826045058-4ipsemxtca1rdagy
111 files changed, 1811 insertions, 2623 deletions
diff --git a/addons/account_analytic_analysis/account_analytic_analysis.py b/addons/account_analytic_analysis/account_analytic_analysis.py index 422def483d2..acaaabd5aef 100644 --- a/addons/account_analytic_analysis/account_analytic_analysis.py +++ b/addons/account_analytic_analysis/account_analytic_analysis.py @@ -530,7 +530,7 @@ class account_analytic_account(osv.osv): context = {} sale_ids = self.pool.get('sale.order').search(cr,uid,[('project_id','=',context.get('search_default_project_id',False)),('partner_id','in',context.get('search_default_partner_id',False))]) names = [record.name for record in self.browse(cr, uid, ids, context=context)] - name = _('Sales Order Lines of %s') % ','.join(names) + name = _('Sales Order Lines to Invoice of %s') % ','.join(names) return { 'type': 'ir.actions.act_window', 'name': name, diff --git a/addons/account_analytic_analysis/static/src/css/analytic.css b/addons/account_analytic_analysis/static/src/css/analytic.css index f3e4785de9f..ccf14aa202c 100644 --- a/addons/account_analytic_analysis/static/src/css/analytic.css +++ b/addons/account_analytic_analysis/static/src/css/analytic.css @@ -13,6 +13,9 @@ width: 250px; padding-left: 7px; } +.openerp .oe_form table.oe_form_analytic_account th { + text-align: right; +} .openerp .oe_form table.oe_form_analytic_account .oe_timesheet_grey { background-color: #eeeeee; color: #404040; diff --git a/addons/account_analytic_analysis/static/src/css/analytic.sass b/addons/account_analytic_analysis/static/src/css/analytic.sass index a7065e00f18..061d56d8324 100644 --- a/addons/account_analytic_analysis/static/src/css/analytic.sass +++ b/addons/account_analytic_analysis/static/src/css/analytic.sass @@ -12,6 +12,8 @@ td.oe_timesheet_action width: 250px padding-left: 7px + th + text-align: right .oe_timesheet_grey background-color: #eeeeee color: #404040 diff --git a/addons/account_asset/i18n/hu.po b/addons/account_asset/i18n/hu.po new file mode 100644 index 00000000000..19f50232515 --- /dev/null +++ b/addons/account_asset/i18n/hu.po @@ -0,0 +1,741 @@ +# Hungarian translation for openobject-addons +# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013 +# This file is distributed under the same license as the openobject-addons package. +# FIRST AUTHOR <EMAIL@ADDRESS>, 2013. +# +msgid "" +msgstr "" +"Project-Id-Version: openobject-addons\n" +"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" +"POT-Creation-Date: 2012-12-21 17:04+0000\n" +"PO-Revision-Date: 2013-08-22 11:04+0000\n" +"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" +"Language-Team: Hungarian <hu@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: 2013-08-23 05:01+0000\n" +"X-Generator: Launchpad (build 16737)\n" + +#. module: account_asset +#: view:account.asset.asset:0 +msgid "Assets in draft and open states" +msgstr "" + +#. module: account_asset +#: field:account.asset.category,method_end:0 +#: field:account.asset.history,method_end:0 +#: field:asset.modify,method_end:0 +msgid "Ending date" +msgstr "" + +#. module: account_asset +#: field:account.asset.asset,value_residual:0 +msgid "Residual Value" +msgstr "" + +#. module: account_asset +#: field:account.asset.category,account_expense_depreciation_id:0 +msgid "Depr. Expense Account" +msgstr "" + +#. module: account_asset +#: view:asset.asset.report:0 +msgid "Group By..." +msgstr "Csoportosítás" + +#. module: account_asset +#: field:asset.asset.report,gross_value:0 +msgid "Gross Amount" +msgstr "Bruttó összeg" + +#. module: account_asset +#: view:account.asset.asset:0 +#: field:account.asset.depreciation.line,asset_id:0 +#: field:account.asset.history,asset_id:0 +#: field:account.move.line,asset_id:0 +#: view:asset.asset.report:0 +#: field:asset.asset.report,asset_id:0 +#: model:ir.model,name:account_asset.model_account_asset_asset +msgid "Asset" +msgstr "Eszköz" + +#. module: account_asset +#: help:account.asset.asset,prorata:0 +#: help:account.asset.category,prorata:0 +msgid "" +"Indicates that the first depreciation entry for this asset have to be done " +"from the purchase date instead of the first January" +msgstr "" + +#. module: account_asset +#: selection:account.asset.asset,method:0 +#: selection:account.asset.category,method:0 +msgid "Linear" +msgstr "Lineáris" + +#. module: account_asset +#: field:account.asset.asset,company_id:0 +#: field:account.asset.category,company_id:0 +#: view:asset.asset.report:0 +#: field:asset.asset.report,company_id:0 +msgid "Company" +msgstr "Vállalat" + +#. module: account_asset +#: view:asset.modify:0 +msgid "Modify" +msgstr "Módosítás" + +#. module: account_asset +#: selection:account.asset.asset,state:0 +#: view:asset.asset.report:0 +#: selection:asset.asset.report,state:0 +msgid "Running" +msgstr "Folyamatban lévő" + +#. module: account_asset +#: view:account.asset.asset:0 +msgid "Set to Draft" +msgstr "Beállítás tervezetnek" + +#. module: account_asset +#: view:asset.asset.report:0 +#: model:ir.actions.act_window,name:account_asset.action_asset_asset_report +#: model:ir.model,name:account_asset.model_asset_asset_report +#: model:ir.ui.menu,name:account_asset.menu_action_asset_asset_report +msgid "Assets Analysis" +msgstr "Eszközök elemzése" + +#. module: account_asset +#: field:asset.modify,name:0 +msgid "Reason" +msgstr "Indoklás" + +#. module: account_asset +#: field:account.asset.asset,method_progress_factor:0 +#: field:account.asset.category,method_progress_factor:0 +msgid "Degressive Factor" +msgstr "" + +#. module: account_asset +#: model:ir.actions.act_window,name:account_asset.action_account_asset_asset_list_normal +#: model:ir.ui.menu,name:account_asset.menu_action_account_asset_asset_list_normal +msgid "Asset Categories" +msgstr "Eszköz kategóriák" + +#. module: account_asset +#: view:account.asset.asset:0 +#: field:account.asset.asset,account_move_line_ids:0 +#: field:account.move.line,entry_ids:0 +#: model:ir.actions.act_window,name:account_asset.act_entries_open +msgid "Entries" +msgstr "Tételek" + +#. module: account_asset +#: view:account.asset.asset:0 +#: field:account.asset.asset,depreciation_line_ids:0 +msgid "Depreciation Lines" +msgstr "Értékcsökkénés sorai" + +#. module: account_asset +#: help:account.asset.asset,salvage_value:0 +msgid "It is the amount you plan to have that you cannot depreciate." +msgstr "" + +#. module: account_asset +#: help:account.asset.asset,method_period:0 +msgid "The amount of time between two depreciations, in months" +msgstr "" + +#. module: account_asset +#: field:account.asset.depreciation.line,depreciation_date:0 +#: view:asset.asset.report:0 +#: field:asset.asset.report,depreciation_date:0 +msgid "Depreciation Date" +msgstr "Értékcsökkenés dátuma" + +#. module: account_asset +#: constraint:account.asset.asset:0 +msgid "Error ! You cannot create recursive assets." +msgstr "" + +#. module: account_asset +#: field:asset.asset.report,posted_value:0 +msgid "Posted Amount" +msgstr "" + +#. module: account_asset +#: view:account.asset.asset:0 +#: view:asset.asset.report:0 +#: model:ir.actions.act_window,name:account_asset.action_account_asset_asset_form +#: model:ir.ui.menu,name:account_asset.menu_action_account_asset_asset_form +#: model:ir.ui.menu,name:account_asset.menu_finance_assets +#: model:ir.ui.menu,name:account_asset.menu_finance_config_assets +msgid "Assets" +msgstr "Eszközök" + +#. module: account_asset +#: field:account.asset.category,account_depreciation_id:0 +msgid "Depreciation Account" +msgstr "" + +#. module: account_asset +#: view:account.asset.asset:0 +#: view:account.asset.category:0 +#: view:account.asset.history:0 +#: view:asset.modify:0 +#: field:asset.modify,note:0 +msgid "Notes" +msgstr "Megjegyzések" + +#. module: account_asset +#: field:account.asset.depreciation.line,move_id:0 +msgid "Depreciation Entry" +msgstr "" + +#. module: account_asset +#: view:asset.asset.report:0 +#: field:asset.asset.report,nbr:0 +msgid "# of Depreciation Lines" +msgstr "# értékcsökkenési sorok száma" + +#. module: account_asset +#: field:account.asset.asset,method_period:0 +msgid "Number of Months in a Period" +msgstr "Hónapok száma az időszakban" + +#. module: account_asset +#: view:asset.asset.report:0 +msgid "Assets in draft state" +msgstr "" + +#. module: account_asset +#: field:account.asset.asset,method_end:0 +#: selection:account.asset.asset,method_time:0 +#: selection:account.asset.category,method_time:0 +#: selection:account.asset.history,method_time:0 +msgid "Ending Date" +msgstr "" + +#. module: account_asset +#: field:account.asset.asset,code:0 +msgid "Reference" +msgstr "Hivatkozás" + +#. module: account_asset +#: view:account.asset.asset:0 +msgid "Account Asset" +msgstr "" + +#. module: account_asset +#: model:ir.actions.act_window,name:account_asset.action_asset_depreciation_confirmation_wizard +#: model:ir.ui.menu,name:account_asset.menu_asset_depreciation_confirmation_wizard +msgid "Compute Assets" +msgstr "" + +#. module: account_asset +#: field:account.asset.category,method_period:0 +#: field:account.asset.history,method_period:0 +#: field:asset.modify,method_period:0 +msgid "Period Length" +msgstr "Időszak hossza" + +#. module: account_asset +#: selection:account.asset.asset,state:0 +#: view:asset.asset.report:0 +#: selection:asset.asset.report,state:0 +msgid "Draft" +msgstr "Tervezet" + +#. module: account_asset +#: view:asset.asset.report:0 +msgid "Date of asset purchase" +msgstr "" + +#. module: account_asset +#: view:account.asset.asset:0 +msgid "Change Duration" +msgstr "" + +#. module: account_asset +#: help:account.asset.asset,method_number:0 +#: help:account.asset.category,method_number:0 +#: help:account.asset.history,method_number:0 +msgid "The number of depreciations needed to depreciate your asset" +msgstr "" + +#. module: account_asset +#: view:account.asset.category:0 +msgid "Analytic Information" +msgstr "" + +#. module: account_asset +#: field:account.asset.category,account_analytic_id:0 +msgid "Analytic account" +msgstr "Gyűjtőkód" + +#. module: account_asset +#: field:account.asset.asset,method:0 +#: field:account.asset.category,method:0 +msgid "Computation Method" +msgstr "Számítási módszer" + +#. module: account_asset +#: constraint:account.asset.asset:0 +msgid "" +"Prorata temporis can be applied only for time method \"number of " +"depreciations\"." +msgstr "" + +#. module: account_asset +#: field:account.asset.depreciation.line,remaining_value:0 +msgid "Next Period Depreciation" +msgstr "" + +#. module: account_asset +#: help:account.asset.history,method_period:0 +msgid "Time in month between two depreciations" +msgstr "" + +#. module: account_asset +#: view:asset.modify:0 +#: model:ir.actions.act_window,name:account_asset.action_asset_modify +#: model:ir.model,name:account_asset.model_asset_modify +msgid "Modify Asset" +msgstr "" + +#. module: account_asset +#: field:account.asset.asset,salvage_value:0 +msgid "Salvage Value" +msgstr "" + +#. module: account_asset +#: field:account.asset.asset,category_id:0 +#: view:account.asset.category:0 +#: field:account.invoice.line,asset_category_id:0 +#: view:asset.asset.report:0 +msgid "Asset Category" +msgstr "Eszköz kategória" + +#. module: account_asset +#: view:account.asset.asset:0 +msgid "Assets in closed state" +msgstr "" + +#. module: account_asset +#: field:account.asset.asset,parent_id:0 +msgid "Parent Asset" +msgstr "" + +#. module: account_asset +#: view:account.asset.history:0 +#: model:ir.model,name:account_asset.model_account_asset_history +msgid "Asset history" +msgstr "" + +#. module: account_asset +#: view:account.asset.category:0 +msgid "Search Asset Category" +msgstr "" + +#. module: account_asset +#: view:asset.modify:0 +msgid "months" +msgstr "hónapok" + +#. module: account_asset +#: model:ir.model,name:account_asset.model_account_invoice_line +msgid "Invoice Line" +msgstr "Számlasor" + +#. module: account_asset +#: view:account.asset.asset:0 +msgid "Depreciation Board" +msgstr "" + +#. module: account_asset +#: field:asset.asset.report,unposted_value:0 +msgid "Unposted Amount" +msgstr "" + +#. module: account_asset +#: field:account.asset.asset,method_time:0 +#: field:account.asset.category,method_time:0 +#: field:account.asset.history,method_time:0 +msgid "Time Method" +msgstr "" + +#. module: account_asset +#: view:asset.depreciation.confirmation.wizard:0 +#: view:asset.modify:0 +msgid "or" +msgstr "vagy" + +#. module: account_asset +#: field:account.asset.asset,note:0 +#: field:account.asset.category,note:0 +#: field:account.asset.history,note:0 +msgid "Note" +msgstr "Jegyzet" + +#. module: account_asset +#: help:account.asset.history,method_time:0 +msgid "" +"The method to use to compute the dates and number of depreciation lines.\n" +"Number of Depreciations: Fix the number of depreciation lines and the time " +"between 2 depreciations.\n" +"Ending Date: Choose the time between 2 depreciations and the date the " +"depreciations won't go beyond." +msgstr "" + +#. module: account_asset +#: help:account.asset.asset,method_time:0 +#: help:account.asset.category,method_time:0 +msgid "" +"Choose the method to use to compute the dates and number of depreciation " +"lines.\n" +" * Number of Depreciations: Fix the number of depreciation lines and the " +"time between 2 depreciations.\n" +" * Ending Date: Choose the time between 2 depreciations and the date the " +"depreciations won't go beyond." +msgstr "" + +#. module: account_asset +#: view:asset.asset.report:0 +msgid "Assets in running state" +msgstr "" + +#. module: account_asset +#: view:account.asset.asset:0 +msgid "Closed" +msgstr "Lezárt" + +#. module: account_asset +#: help:account.asset.asset,state:0 +msgid "" +"When an asset is created, the status is 'Draft'.\n" +"If the asset is confirmed, the status goes in 'Running' and the depreciation " +"lines can be posted in the accounting.\n" +"You can manually close an asset when the depreciation is over. If the last " +"line of depreciation is posted, the asset automatically goes in that status." +msgstr "" + +#. module: account_asset +#: field:account.asset.asset,state:0 +#: field:asset.asset.report,state:0 +msgid "Status" +msgstr "Státusz" + +#. module: account_asset +#: field:account.asset.asset,partner_id:0 +#: field:asset.asset.report,partner_id:0 +msgid "Partner" +msgstr "Partner" + +#. module: account_asset +#: view:asset.asset.report:0 +msgid "Posted depreciation lines" +msgstr "" + +#. module: account_asset +#: field:account.asset.asset,child_ids:0 +msgid "Children Assets" +msgstr "" + +#. module: account_asset +#: view:asset.asset.report:0 +msgid "Date of depreciation" +msgstr "" + +#. module: account_asset +#: field:account.asset.history,user_id:0 +msgid "User" +msgstr "Felhasználó" + +#. module: account_asset +#: field:account.asset.category,account_asset_id:0 +msgid "Asset Account" +msgstr "" + +#. module: account_asset +#: view:asset.asset.report:0 +msgid "Extended Filters..." +msgstr "Kiterjesztett szűrők…" + +#. module: account_asset +#: view:account.asset.asset:0 +#: view:asset.depreciation.confirmation.wizard:0 +msgid "Compute" +msgstr "Kiszámítás" + +#. module: account_asset +#: view:account.asset.history:0 +msgid "Asset History" +msgstr "Eszköz történet" + +#. module: account_asset +#: model:ir.model,name:account_asset.model_asset_depreciation_confirmation_wizard +msgid "asset.depreciation.confirmation.wizard" +msgstr "" + +#. module: account_asset +#: field:account.asset.asset,active:0 +msgid "Active" +msgstr "Aktív" + +#. module: account_asset +#: field:account.asset.depreciation.line,parent_state:0 +msgid "State of Asset" +msgstr "Eszköz státusza" + +#. module: account_asset +#: field:account.asset.depreciation.line,name:0 +msgid "Depreciation Name" +msgstr "" + +#. module: account_asset +#: view:account.asset.asset:0 +#: field:account.asset.asset,history_ids:0 +msgid "History" +msgstr "Előzmény" + +#. module: account_asset +#: view:asset.depreciation.confirmation.wizard:0 +msgid "Compute Asset" +msgstr "" + +#. module: account_asset +#: field:asset.depreciation.confirmation.wizard,period_id:0 +msgid "Period" +msgstr "Időszak" + +#. module: account_asset +#: view:account.asset.asset:0 +msgid "General" +msgstr "Általános" + +#. module: account_asset +#: field:account.asset.asset,prorata:0 +#: field:account.asset.category,prorata:0 +msgid "Prorata Temporis" +msgstr "" + +#. module: account_asset +#: model:ir.model,name:account_asset.model_account_invoice +msgid "Invoice" +msgstr "Számla" + +#. module: account_asset +#: view:account.asset.asset:0 +msgid "Set to Close" +msgstr "" + +#. module: account_asset +#: view:asset.depreciation.confirmation.wizard:0 +#: view:asset.modify:0 +msgid "Cancel" +msgstr "Mégsem" + +#. module: account_asset +#: selection:account.asset.asset,state:0 +#: selection:asset.asset.report,state:0 +msgid "Close" +msgstr "Lezár" + +#. module: account_asset +#: model:ir.model,name:account_asset.model_account_move_line +msgid "Journal Items" +msgstr "Könyvelési tételsorok" + +#. module: account_asset +#: view:asset.modify:0 +msgid "Asset Durations to Modify" +msgstr "" + +#. module: account_asset +#: field:account.asset.asset,purchase_date:0 +#: view:asset.asset.report:0 +#: field:asset.asset.report,purchase_date:0 +msgid "Purchase Date" +msgstr "Vásárlás dátuma" + +#. module: account_asset +#: selection:account.asset.asset,method:0 +#: selection:account.asset.category,method:0 +msgid "Degressive" +msgstr "Degresszív" + +#. module: account_asset +#: help:asset.depreciation.confirmation.wizard,period_id:0 +msgid "" +"Choose the period for which you want to automatically post the depreciation " +"lines of running assets" +msgstr "" + +#. module: account_asset +#: view:account.asset.asset:0 +msgid "Current" +msgstr "Jelenlegi" + +#. module: account_asset +#: view:account.asset.category:0 +msgid "Depreciation Method" +msgstr "" + +#. module: account_asset +#: field:account.asset.depreciation.line,amount:0 +msgid "Current Depreciation" +msgstr "" + +#. module: account_asset +#: field:account.asset.asset,name:0 +msgid "Asset Name" +msgstr "" + +#. module: account_asset +#: field:account.asset.category,open_asset:0 +msgid "Skip Draft State" +msgstr "" + +#. module: account_asset +#: view:account.asset.category:0 +msgid "Depreciation Dates" +msgstr "" + +#. module: account_asset +#: field:account.asset.asset,currency_id:0 +msgid "Currency" +msgstr "Pénznem" + +#. module: account_asset +#: field:account.asset.category,journal_id:0 +msgid "Journal" +msgstr "Napló" + +#. module: account_asset +#: field:account.asset.history,name:0 +msgid "History name" +msgstr "" + +#. module: account_asset +#: field:account.asset.depreciation.line,depreciated_value:0 +msgid "Amount Already Depreciated" +msgstr "" + +#. module: account_asset +#: help:account.asset.asset,method:0 +#: help:account.asset.category,method:0 +msgid "" +"Choose the method to use to compute the amount of depreciation lines.\n" +" * Linear: Calculated on basis of: Gross Value / Number of Depreciations\n" +" * Degressive: Calculated on basis of: Residual Value * Degressive Factor" +msgstr "" + +#. module: account_asset +#: field:account.asset.depreciation.line,move_check:0 +#: view:asset.asset.report:0 +#: field:asset.asset.report,move_check:0 +msgid "Posted" +msgstr "Könyvelt" + +#. module: account_asset +#: model:ir.actions.act_window,help:account_asset.action_asset_asset_report +msgid "" +"<p>\n" +" From this report, you can have an overview on all depreciation. " +"The\n" +" tool search can also be used to personalise your Assets reports " +"and\n" +" so, match this analysis to your needs;\n" +" </p>\n" +" " +msgstr "" + +#. module: account_asset +#: field:account.asset.asset,purchase_value:0 +msgid "Gross Value" +msgstr "Bruttó érték" + +#. module: account_asset +#: field:account.asset.category,name:0 +msgid "Name" +msgstr "Név" + +#. module: account_asset +#: help:account.asset.category,open_asset:0 +msgid "" +"Check this if you want to automatically confirm the assets of this category " +"when created by invoices." +msgstr "" + +#. module: account_asset +#: field:asset.asset.report,name:0 +msgid "Year" +msgstr "Év" + +#. module: account_asset +#: model:ir.model,name:account_asset.model_account_asset_depreciation_line +msgid "Asset depreciation line" +msgstr "" + +#. module: account_asset +#: view:account.asset.category:0 +#: field:asset.asset.report,asset_category_id:0 +#: model:ir.model,name:account_asset.model_account_asset_category +msgid "Asset category" +msgstr "Eszköz kategória" + +#. module: account_asset +#: view:asset.asset.report:0 +#: field:asset.asset.report,depreciation_value:0 +msgid "Amount of Depreciation Lines" +msgstr "" + +#. module: account_asset +#: code:addons/account_asset/wizard/wizard_asset_compute.py:50 +#, python-format +msgid "Created Asset Moves" +msgstr "" + +#. module: account_asset +#: field:account.asset.depreciation.line,sequence:0 +msgid "Sequence" +msgstr "Sorszám" + +#. module: account_asset +#: help:account.asset.category,method_period:0 +msgid "State here the time between 2 depreciations, in months" +msgstr "" + +#. module: account_asset +#: field:account.asset.history,date:0 +msgid "Date" +msgstr "Dátum" + +#. module: account_asset +#: field:account.asset.asset,method_number:0 +#: selection:account.asset.asset,method_time:0 +#: field:account.asset.category,method_number:0 +#: selection:account.asset.category,method_time:0 +#: field:account.asset.history,method_number:0 +#: selection:account.asset.history,method_time:0 +#: field:asset.modify,method_number:0 +msgid "Number of Depreciations" +msgstr "" + +#. module: account_asset +#: view:account.asset.asset:0 +msgid "Create Move" +msgstr "" + +#. module: account_asset +#: view:account.asset.asset:0 +msgid "Confirm Asset" +msgstr "" + +#. module: account_asset +#: model:ir.actions.act_window,name:account_asset.action_account_asset_asset_tree +#: model:ir.ui.menu,name:account_asset.menu_action_account_asset_asset_tree +msgid "Asset Hierarchy" +msgstr "" diff --git a/addons/account_voucher/account_voucher.py b/addons/account_voucher/account_voucher.py index 597ed01aa1b..ef4c9379c82 100644 --- a/addons/account_voucher/account_voucher.py +++ b/addons/account_voucher/account_voucher.py @@ -884,6 +884,8 @@ class account_voucher(osv.osv): return res def onchange_journal(self, cr, uid, ids, journal_id, line_ids, tax_id, partner_id, date, amount, ttype, company_id, context=None): + if context is None: + context = {} if not journal_id: return False journal_pool = self.pool.get('account.journal') diff --git a/addons/analytic_contract_hr_expense/analytic_contract_hr_expense_view.xml b/addons/analytic_contract_hr_expense/analytic_contract_hr_expense_view.xml index db269ef37c7..a5bd40e9471 100644 --- a/addons/analytic_contract_hr_expense/analytic_contract_hr_expense_view.xml +++ b/addons/analytic_contract_hr_expense/analytic_contract_hr_expense_view.xml @@ -36,7 +36,7 @@ <button name="open_hr_expense" class="oe_link" - string="expenses" type="object"/> + string="Expenses" type="object"/> </td> </tr> </xpath> diff --git a/addons/analytic_user_function/analytic_user_function.py b/addons/analytic_user_function/analytic_user_function.py index 1adefb2d59d..2671fc92581 100644 --- a/addons/analytic_user_function/analytic_user_function.py +++ b/addons/analytic_user_function/analytic_user_function.py @@ -42,6 +42,7 @@ class analytic_user_funct_grid(osv.osv): return {} value = {} + prod = False if product_id: prod = self.pool.get('product.product').browse(cr, uid, product_id, context=context) emp = emp_obj.browse(cr, uid, emp_id[0], context=context) diff --git a/addons/base_calendar/__openerp__.py b/addons/base_calendar/__openerp__.py index 313ddb8453a..ff122ab926f 100644 --- a/addons/base_calendar/__openerp__.py +++ b/addons/base_calendar/__openerp__.py @@ -22,7 +22,7 @@ { 'name': 'Calendar', 'version': '1.0', - 'depends': ['base', 'base_status', 'mail', 'base_action_rule'], + 'depends': ['base', 'mail', 'base_action_rule'], 'summary': 'Personal & Shared Calendar', 'description': """ This is a full-featured calendar system. diff --git a/addons/base_calendar/crm_meeting.py b/addons/base_calendar/crm_meeting.py index 1051a7a894c..66823e0b8f4 100644 --- a/addons/base_calendar/crm_meeting.py +++ b/addons/base_calendar/crm_meeting.py @@ -25,7 +25,6 @@ from openerp.osv import fields, osv from openerp.tools import DEFAULT_SERVER_DATE_FORMAT from openerp.tools.translate import _ from base_calendar import get_real_ids, base_calendar_id2real_id -from openerp.addons.base_status.base_state import base_state # # crm.meeting is defined here so that it may be used by modules other than crm, # without forcing the installation of crm. @@ -38,14 +37,13 @@ class crm_meeting_type(osv.Model): 'name': fields.char('Name', size=64, required=True, translate=True), } -class crm_meeting(base_state, osv.Model): +class crm_meeting(osv.Model): """ Model for CRM meetings """ _name = 'crm.meeting' _description = "Meeting" _order = "id desc" _inherit = ["calendar.event", "mail.thread", "ir.needaction_mixin"] _columns = { - # base_state required fields 'create_date': fields.datetime('Creation Date', readonly=True), 'write_date': fields.datetime('Write Date', readonly=True), 'date_open': fields.datetime('Confirmed', readonly=True), @@ -79,6 +77,12 @@ class crm_meeting(base_state, osv.Model): default['attendee_ids'] = False return super(crm_meeting, self).copy(cr, uid, id, default, context) + def write(self, cr, uid, ids, values, context=None): + """ Override to add case management: open/close dates """ + if values.get('state')and values.get('state') == 'open': + values['date_open'] = fields.datetime.now() + return super(crm_meeting, self).write(cr, uid, ids, values, context=context) + def onchange_partner_ids(self, cr, uid, ids, value, context=None): """ The basic purpose of this method is to check that destination partners effectively have email addresses. Otherwise a warning is thrown. diff --git a/addons/base_status/base_state.py b/addons/base_status/base_state.py deleted file mode 100644 index 3fe59ecbd21..00000000000 --- a/addons/base_status/base_state.py +++ /dev/null @@ -1,201 +0,0 @@ -# -*- coding: utf-8 -*- -############################################################################## -# -# OpenERP, Open Source Management Solution -# Copyright (C) 2004-today OpenERP SA (<http://www.openerp.com>) -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as -# published by the Free Software Foundation, either version 3 of the -# License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see <http://www.gnu.org/licenses/>. -# -############################################################################## - -from openerp.osv import fields, osv -from openerp.tools.translate import _ - -class base_state(object): - """ Base utility mixin class for objects willing to manage their state. - Object subclassing this class should define the following colums: - - ``date_open`` (datetime field) - - ``date_closed`` (datetime field) - - ``user_id`` (many2one to res.users) - - ``partner_id`` (many2one to res.partner) - - ``email_from`` (char field) - - ``state`` (selection field) - """ - - def _get_default_partner(self, cr, uid, context=None): - """ Gives id of partner for current user - :param context: if portal not in context returns False - """ - if context is None: - context = {} - if not context or not context.get('portal'): - return False - user = self.pool.get('res.users').browse(cr, uid, uid, context=context) - if hasattr(user, 'partner_address_id') and user.partner_address_id: - return user.partner_address_id - return user.company_id.partner_id.id - - def _get_default_email(self, cr, uid, context=None): - """ Gives default email address for current user - :param context: if portal not in context returns False - """ - if context is None: - context = {} - if not context or not context.get('portal'): - return False - user = self.pool.get('res.users').browse(cr, uid, uid, context=context) - return user.email - - def _get_default_user(self, cr, uid, context=None): - """ Gives current user id - :param context: if portal not in context returns False - """ - if context is None: - context = {} - if not context or not context.get('portal'): - return False - return uid - - def onchange_partner_address_id(self, cr, uid, ids, add, email=False): - """ This function returns value of partner email based on Partner Address - :param add: Id of Partner's address - :param email: Partner's email ID - """ - data = {'value': {'email_from': False, 'phone':False}} - if add: - address = self.pool.get('res.partner').browse(cr, uid, add) - data['value'] = {'email_from': address and address.email or False , - 'phone': address and address.phone or False} - if 'phone' not in self._columns: - del data['value']['phone'] - return data - - def onchange_partner_id(self, cr, uid, ids, part, email=False): - """ This function returns value of partner address based on partner - :param part: Partner's id - :param email: Partner's email ID - """ - data={} - if part: - addr = self.pool.get('res.partner').address_get(cr, uid, [part], ['contact']) - data.update(self.onchange_partner_address_id(cr, uid, ids, addr['contact'])['value']) - return {'value': data} - - def case_escalate(self, cr, uid, ids, context=None): - """ Escalates case to parent level """ - cases = self.browse(cr, uid, ids, context=context) - cases[0].state # fill browse record cache, for _action having old and new values - data = {'active': True} - for case in cases: - parent_id = case.section_id.parent_id - if parent_id: - data['section_id'] = parent_id.id - if parent_id.change_responsible and parent_id.user_id: - data['user_id'] = parent_id.user_id.id - else: - raise osv.except_osv(_('Error!'), _('You can not escalate, you are already at the top level regarding your sales-team category.')) - self.write(cr, uid, [case.id], data, context=context) - case.case_escalate_send_note(parent_id, context=context) - return True - - def case_open(self, cr, uid, ids, context=None): - """ Opens case """ - cases = self.browse(cr, uid, ids, context=context) - for case in cases: - values = {'active': True} - if case.state == 'draft': - values['date_open'] = fields.datetime.now() - if not case.user_id: - values['user_id'] = uid - self.case_set(cr, uid, [case.id], 'open', values, context=context) - return True - - def case_close(self, cr, uid, ids, context=None): - """ Closes case """ - return self.case_set(cr, uid, ids, 'done', {'date_closed': fields.datetime.now()}, context=context) - - def case_cancel(self, cr, uid, ids, context=None): - """ Cancels case """ - return self.case_set(cr, uid, ids, 'cancel', {'active': True}, context=context) - - def case_pending(self, cr, uid, ids, context=None): - """ Sets case as pending """ - return self.case_set(cr, uid, ids, 'pending', {'active': True}, context=context) - - def case_reset(self, cr, uid, ids, context=None): - """ Resets case as draft """ - return self.case_set(cr, uid, ids, 'draft', {'active': True}, context=context) - - def case_set(self, cr, uid, ids, state_name, update_values=None, context=None): - """ Generic method for setting case. This methods wraps the update - of the record, as well as call to _action and browse_record - case setting to fill the cache. - - :params: state_name: the new value of the state, such as - 'draft' or 'close'. - :params: update_values: values that will be added with the state - update when writing values to the record. - """ - cases = self.browse(cr, uid, ids, context=context) - cases[0].state # fill browse record cache, for _action having old and new values - if update_values is None: - update_values = {} - update_values['state'] = state_name - return self.write(cr, uid, ids, update_values, context=context) - - # ****************************** - # Notifications - # ****************************** - - def case_get_note_msg_prefix(self, cr, uid, id, context=None): - return '' - - def case_open_send_note(self, cr, uid, ids, context=None): - for id in ids: - msg = _('%s has been <b>opened</b>.') % (self.case_get_note_msg_prefix(cr, uid, id, context=context)) - self.message_post(cr, uid, [id], body=msg, context=context) - return True - - def case_escalate_send_note(self, cr, uid, ids, new_section=None, context=None): - for id in ids: - if new_section: - msg = '%s has been <b>escalated</b> to <b>%s</b>.' % (self.case_get_note_msg_prefix(cr, uid, id, context=context), new_section.name) - else: - msg = '%s has been <b>escalated</b>.' % (self.case_get_note_msg_prefix(cr, uid, id, context=context)) - self.message_post(cr, uid, [id], body=msg, context=context) - return True - - def case_close_send_note(self, cr, uid, ids, context=None): - for id in ids: - msg = _('%s has been <b>closed</b>.') % (self.case_get_note_msg_prefix(cr, uid, id, context=context)) - self.message_post(cr, uid, [id], body=msg, context=context) - return True - - def case_cancel_send_note(self, cr, uid, ids, context=None): - for id in ids: - msg = _('%s has been <b>canceled</b>.') % (self.case_get_note_msg_prefix(cr, uid, id, context=context)) - self.message_post(cr, uid, [id], body=msg, context=context) - return True - - def case_pending_send_note(self, cr, uid, ids, context=None): - for id in ids: - msg = _('%s is now <b>pending</b>.') % (self.case_get_note_msg_prefix(cr, uid, id, context=context)) - self.message_post(cr, uid, [id], body=msg, context=context) - return True - - def case_reset_send_note(self, cr, uid, ids, context=None): - for id in ids: - msg = _('%s has been <b>renewed</b>.') % (self.case_get_note_msg_prefix(cr, uid, id, context=context)) - self.message_post(cr, uid, [id], body=msg, context=context) - return True diff --git a/addons/base_status/i18n/ar.po b/addons/base_status/i18n/ar.po deleted file mode 100644 index 1a0e4f1c401..00000000000 --- a/addons/base_status/i18n/ar.po +++ /dev/null @@ -1,76 +0,0 @@ -# Arabic 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-12-21 17:05+0000\n" -"PO-Revision-Date: 2012-12-01 18:05+0000\n" -"Last-Translator: gehad shaat <gehad.shaath@gmail.com>\n" -"Language-Team: Arabic <ar@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: 2013-03-16 05:52+0000\n" -"X-Generator: Launchpad (build 16532)\n" - -#. module: base_status -#: code:addons/base_status/base_state.py:107 -#, python-format -msgid "Error !" -msgstr "خطأ !" - -#. module: base_status -#: code:addons/base_status/base_state.py:166 -#, python-format -msgid "%s has been <b>opened</b>." -msgstr "" - -#. module: base_status -#: code:addons/base_status/base_state.py:199 -#, python-format -msgid "%s has been <b>renewed</b>." -msgstr "" - -#. module: base_status -#: code:addons/base_status/base_stage.py:210 -#, python-format -msgid "Error!" -msgstr "خطأ!" - -#. module: base_status -#: code:addons/base_status/base_state.py:107 -#, python-format -msgid "" -"You can not escalate, you are already at the top level regarding your sales-" -"team category." -msgstr "" - -#. module: base_status -#: code:addons/base_status/base_state.py:193 -#, python-format -msgid "%s is now <b>pending</b>." -msgstr "" - -#. module: base_status -#: code:addons/base_status/base_state.py:187 -#, python-format -msgid "%s has been <b>canceled</b>." -msgstr "" - -#. module: base_status -#: code:addons/base_status/base_stage.py:210 -#, python-format -msgid "" -"You are already at the top level of your sales-team category.\n" -"Therefore you cannot escalate furthermore." -msgstr "" - -#. module: base_status -#: code:addons/base_status/base_state.py:181 -#, python-format -msgid "%s has been <b>closed</b>." -msgstr "" diff --git a/addons/base_status/i18n/base_status.pot b/addons/base_status/i18n/base_status.pot deleted file mode 100644 index 3805dd46ce9..00000000000 --- a/addons/base_status/i18n/base_status.pot +++ /dev/null @@ -1,72 +0,0 @@ -# Translation of OpenERP Server. -# This file contains the translation of the following modules: -# * base_status -# -msgid "" -msgstr "" -"Project-Id-Version: OpenERP Server 7.0alpha\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-12-21 17:05+0000\n" -"PO-Revision-Date: 2012-12-21 17:05+0000\n" -"Last-Translator: <>\n" -"Language-Team: \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: \n" -"Plural-Forms: \n" - -#. module: base_status -#: code:addons/base_status/base_state.py:107 -#, python-format -msgid "Error !" -msgstr "" - -#. module: base_status -#: code:addons/base_status/base_state.py:166 -#, python-format -msgid "%s has been <b>opened</b>." -msgstr "" - -#. module: base_status -#: code:addons/base_status/base_state.py:199 -#, python-format -msgid "%s has been <b>renewed</b>." -msgstr "" - -#. module: base_status -#: code:addons/base_status/base_stage.py:210 -#, python-format -msgid "Error!" -msgstr "" - -#. module: base_status -#: code:addons/base_status/base_state.py:107 -#, python-format -msgid "You can not escalate, you are already at the top level regarding your sales-team category." -msgstr "" - -#. module: base_status -#: code:addons/base_status/base_state.py:193 -#, python-format -msgid "%s is now <b>pending</b>." -msgstr "" - -#. module: base_status -#: code:addons/base_status/base_state.py:187 -#, python-format -msgid "%s has been <b>canceled</b>." -msgstr "" - -#. module: base_status -#: code:addons/base_status/base_stage.py:210 -#, python-format -msgid "You are already at the top level of your sales-team category.\n" -"Therefore you cannot escalate furthermore." -msgstr "" - -#. module: base_status -#: code:addons/base_status/base_state.py:181 -#, python-format -msgid "%s has been <b>closed</b>." -msgstr "" - diff --git a/addons/base_status/i18n/bs.po b/addons/base_status/i18n/bs.po deleted file mode 100644 index 0fdd8821dd2..00000000000 --- a/addons/base_status/i18n/bs.po +++ /dev/null @@ -1,80 +0,0 @@ -# Bosnian translation for openobject-addons -# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013 -# This file is distributed under the same license as the openobject-addons package. -# FIRST AUTHOR <EMAIL@ADDRESS>, 2013. -# -msgid "" -msgstr "" -"Project-Id-Version: openobject-addons\n" -"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" -"POT-Creation-Date: 2012-12-21 17:05+0000\n" -"PO-Revision-Date: 2013-08-08 22:20+0000\n" -"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" -"Language-Team: Bosnian <bs@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: 2013-08-09 05:06+0000\n" -"X-Generator: Launchpad (build 16723)\n" - -#. module: base_status -#: code:addons/base_status/base_state.py:107 -#, python-format -msgid "Error !" -msgstr "Greška !" - -#. module: base_status -#: code:addons/base_status/base_state.py:166 -#, python-format -msgid "%s has been <b>opened</b>." -msgstr "%s je bio <b>otvoren</b>." - -#. module: base_status -#: code:addons/base_status/base_state.py:199 -#, python-format -msgid "%s has been <b>renewed</b>." -msgstr "%s je bio <b>obnovljen</b>." - -#. module: base_status -#: code:addons/base_status/base_stage.py:210 -#, python-format -msgid "Error!" -msgstr "Greška!" - -#. module: base_status -#: code:addons/base_status/base_state.py:107 -#, python-format -msgid "" -"You can not escalate, you are already at the top level regarding your sales-" -"team category." -msgstr "" -"Ne možete eskalirati, već ste na najvišem nivou u odnosu na kategoriju " -"prodajnog tima." - -#. module: base_status -#: code:addons/base_status/base_state.py:193 -#, python-format -msgid "%s is now <b>pending</b>." -msgstr "%s je sad <b>Na čekanju</b>." - -#. module: base_status -#: code:addons/base_status/base_state.py:187 -#, python-format -msgid "%s has been <b>canceled</b>." -msgstr "%s je bio <b>otkazan</b>." - -#. module: base_status -#: code:addons/base_status/base_stage.py:210 -#, python-format -msgid "" -"You are already at the top level of your sales-team category.\n" -"Therefore you cannot escalate furthermore." -msgstr "" -"Već ste na najvišem nivou vaše kategorije prodajnog tima.\n" -"Zato ne možete dalje eskalirati." - -#. module: base_status -#: code:addons/base_status/base_state.py:181 -#, python-format -msgid "%s has been <b>closed</b>." -msgstr "%s je bio <b>zatvoren</b>." diff --git a/addons/base_status/i18n/cs.po b/addons/base_status/i18n/cs.po deleted file mode 100644 index 3fdb5247e7f..00000000000 --- a/addons/base_status/i18n/cs.po +++ /dev/null @@ -1,76 +0,0 @@ -# Czech translation for openobject-addons -# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013 -# This file is distributed under the same license as the openobject-addons package. -# FIRST AUTHOR <EMAIL@ADDRESS>, 2013. -# -msgid "" -msgstr "" -"Project-Id-Version: openobject-addons\n" -"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" -"POT-Creation-Date: 2012-12-21 17:05+0000\n" -"PO-Revision-Date: 2013-03-30 12:43+0000\n" -"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" -"Language-Team: Czech <cs@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: 2013-03-31 05:28+0000\n" -"X-Generator: Launchpad (build 16546)\n" - -#. module: base_status -#: code:addons/base_status/base_state.py:107 -#, python-format -msgid "Error !" -msgstr "" - -#. module: base_status -#: code:addons/base_status/base_state.py:166 -#, python-format -msgid "%s has been <b>opened</b>." -msgstr "" - -#. module: base_status -#: code:addons/base_status/base_state.py:199 -#, python-format -msgid "%s has been <b>renewed</b>." -msgstr "" - -#. module: base_status -#: code:addons/base_status/base_stage.py:210 -#, python-format -msgid "Error!" -msgstr "" - -#. module: base_status -#: code:addons/base_status/base_state.py:107 -#, python-format -msgid "" -"You can not escalate, you are already at the top level regarding your sales-" -"team category." -msgstr "" - -#. module: base_status -#: code:addons/base_status/base_state.py:193 -#, python-format -msgid "%s is now <b>pending</b>." -msgstr "" - -#. module: base_status -#: code:addons/base_status/base_state.py:187 -#, python-format -msgid "%s has been <b>canceled</b>." -msgstr "" - -#. module: base_status -#: code:addons/base_status/base_stage.py:210 -#, python-format -msgid "" -"You are already at the top level of your sales-team category.\n" -"Therefore you cannot escalate furthermore." -msgstr "" - -#. module: base_status -#: code:addons/base_status/base_state.py:181 -#, python-format -msgid "%s has been <b>closed</b>." -msgstr "" diff --git a/addons/base_status/i18n/de.po b/addons/base_status/i18n/de.po deleted file mode 100644 index 9507cff81f4..00000000000 --- a/addons/base_status/i18n/de.po +++ /dev/null @@ -1,81 +0,0 @@ -# German 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-12-21 17:05+0000\n" -"PO-Revision-Date: 2012-12-08 13:50+0000\n" -"Last-Translator: Thorsten Vocks (OpenBig.org) <thorsten.vocks@big-" -"consulting.net>\n" -"Language-Team: German <de@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: 2013-03-16 05:52+0000\n" -"X-Generator: Launchpad (build 16532)\n" - -#. module: base_status -#: code:addons/base_status/base_state.py:107 -#, python-format -msgid "Error !" -msgstr "Fehler !" - -#. module: base_status -#: code:addons/base_status/base_state.py:166 -#, python-format -msgid "%s has been <b>opened</b>." -msgstr "%s wurde <b>eröffnet</b>." - -#. module: base_status -#: code:addons/base_status/base_state.py:199 -#, python-format -msgid "%s has been <b>renewed</b>." -msgstr "%s wurde <b>erneuert</b>." - -#. module: base_status -#: code:addons/base_status/base_stage.py:210 -#, python-format -msgid "Error!" -msgstr "Fehler !" - -#. module: base_status -#: code:addons/base_status/base_state.py:107 -#, python-format -msgid "" -"You can not escalate, you are already at the top level regarding your sales-" -"team category." -msgstr "" -"Keine weitere Eskalation möglich, da Sie bereits die obersten Ebene erreicht " -"haben." - -#. module: base_status -#: code:addons/base_status/base_state.py:193 -#, python-format -msgid "%s is now <b>pending</b>." -msgstr "%s wurde geändert auf <b>Wiedervorlage</b>." - -#. module: base_status -#: code:addons/base_status/base_state.py:187 -#, python-format -msgid "%s has been <b>canceled</b>." -msgstr "%s wurde <b>abgebrochen</b>." - -#. module: base_status -#: code:addons/base_status/base_stage.py:210 -#, python-format -msgid "" -"You are already at the top level of your sales-team category.\n" -"Therefore you cannot escalate furthermore." -msgstr "" -"Keine weitere Eskalation möglich, da Sie bereits die obersten Ebene erreicht " -"haben." - -#. module: base_status -#: code:addons/base_status/base_state.py:181 -#, python-format -msgid "%s has been <b>closed</b>." -msgstr "%s wurde <b>beendet</b>." diff --git a/addons/base_status/i18n/en_GB.po b/addons/base_status/i18n/en_GB.po deleted file mode 100644 index f1461bf4f1b..00000000000 --- a/addons/base_status/i18n/en_GB.po +++ /dev/null @@ -1,80 +0,0 @@ -# English (United Kingdom) translation for openobject-addons -# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013 -# This file is distributed under the same license as the openobject-addons package. -# FIRST AUTHOR <EMAIL@ADDRESS>, 2013. -# -msgid "" -msgstr "" -"Project-Id-Version: openobject-addons\n" -"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" -"POT-Creation-Date: 2012-12-21 17:05+0000\n" -"PO-Revision-Date: 2013-02-06 15:07+0000\n" -"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" -"Language-Team: English (United Kingdom) <en_GB@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: 2013-03-16 05:52+0000\n" -"X-Generator: Launchpad (build 16532)\n" - -#. module: base_status -#: code:addons/base_status/base_state.py:107 -#, python-format -msgid "Error !" -msgstr "Error !" - -#. module: base_status -#: code:addons/base_status/base_state.py:166 -#, python-format -msgid "%s has been <b>opened</b>." -msgstr "%s has been <b>opened</b>." - -#. module: base_status -#: code:addons/base_status/base_state.py:199 -#, python-format -msgid "%s has been <b>renewed</b>." -msgstr "%s has been <b>renewed</b>." - -#. module: base_status -#: code:addons/base_status/base_stage.py:210 -#, python-format -msgid "Error!" -msgstr "Error!" - -#. module: base_status -#: code:addons/base_status/base_state.py:107 -#, python-format -msgid "" -"You can not escalate, you are already at the top level regarding your sales-" -"team category." -msgstr "" -"You can not escalate, you are already at the top level regarding your sales-" -"team category." - -#. module: base_status -#: code:addons/base_status/base_state.py:193 -#, python-format -msgid "%s is now <b>pending</b>." -msgstr "%s is now <b>pending</b>." - -#. module: base_status -#: code:addons/base_status/base_state.py:187 -#, python-format -msgid "%s has been <b>canceled</b>." -msgstr "%s has been <b>canceled</b>." - -#. module: base_status -#: code:addons/base_status/base_stage.py:210 -#, python-format -msgid "" -"You are already at the top level of your sales-team category.\n" -"Therefore you cannot escalate furthermore." -msgstr "" -"You are already at the top level of your sales-team category.\n" -"Therefore you cannot escalate furthermore." - -#. module: base_status -#: code:addons/base_status/base_state.py:181 -#, python-format -msgid "%s has been <b>closed</b>." -msgstr "%s has been <b>closed</b>." diff --git a/addons/base_status/i18n/es.po b/addons/base_status/i18n/es.po deleted file mode 100644 index 3ed75d4c160..00000000000 --- a/addons/base_status/i18n/es.po +++ /dev/null @@ -1,79 +0,0 @@ -# Spanish 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-12-21 17:05+0000\n" -"PO-Revision-Date: 2012-12-10 22:19+0000\n" -"Last-Translator: Ana Juaristi Olalde <ajuaristio@gmail.com>\n" -"Language-Team: Spanish <es@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: 2013-03-16 05:52+0000\n" -"X-Generator: Launchpad (build 16532)\n" - -#. module: base_status -#: code:addons/base_status/base_state.py:107 -#, python-format -msgid "Error !" -msgstr "¡ Error !" - -#. module: base_status -#: code:addons/base_status/base_state.py:166 -#, python-format -msgid "%s has been <b>opened</b>." -msgstr "%s ha sido <b>abierto</b>." - -#. module: base_status -#: code:addons/base_status/base_state.py:199 -#, python-format -msgid "%s has been <b>renewed</b>." -msgstr "%s ha sido <b>renovado</b>." - -#. module: base_status -#: code:addons/base_status/base_stage.py:210 -#, python-format -msgid "Error!" -msgstr "¡Error!" - -#. module: base_status -#: code:addons/base_status/base_state.py:107 -#, python-format -msgid "" -"You can not escalate, you are already at the top level regarding your sales-" -"team category." -msgstr "" -"No puede escalar, usted está en la categoría más alta de su equipo de ventas" - -#. module: base_status -#: code:addons/base_status/base_state.py:193 -#, python-format -msgid "%s is now <b>pending</b>." -msgstr "%s está ahora <b>pendiente</b>." - -#. module: base_status -#: code:addons/base_status/base_state.py:187 -#, python-format -msgid "%s has been <b>canceled</b>." -msgstr "%s ha sido <b>cancelado</b>." - -#. module: base_status -#: code:addons/base_status/base_stage.py:210 -#, python-format -msgid "" -"You are already at the top level of your sales-team category.\n" -"Therefore you cannot escalate furthermore." -msgstr "" -"Está en el nivel más alto de la categoría de su equipo de ventas.\n" -"Por lo tanto no puede escalar más allá." - -#. module: base_status -#: code:addons/base_status/base_state.py:181 -#, python-format -msgid "%s has been <b>closed</b>." -msgstr "%s ha sido <b>cerrado</b>." diff --git a/addons/base_status/i18n/fr.po b/addons/base_status/i18n/fr.po deleted file mode 100644 index 7a22f3be0f9..00000000000 --- a/addons/base_status/i18n/fr.po +++ /dev/null @@ -1,81 +0,0 @@ -# French 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-12-21 17:05+0000\n" -"PO-Revision-Date: 2012-12-05 09:30+0000\n" -"Last-Translator: Numérigraphe <Unknown>\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: 2013-03-16 05:52+0000\n" -"X-Generator: Launchpad (build 16532)\n" - -#. module: base_status -#: code:addons/base_status/base_state.py:107 -#, python-format -msgid "Error !" -msgstr "Erreur !" - -#. module: base_status -#: code:addons/base_status/base_state.py:166 -#, python-format -msgid "%s has been <b>opened</b>." -msgstr "%s a été <b>ouvert(e)</b>." - -#. module: base_status -#: code:addons/base_status/base_state.py:199 -#, python-format -msgid "%s has been <b>renewed</b>." -msgstr "%s a été <b>renouvelé(e)</b>." - -#. module: base_status -#: code:addons/base_status/base_stage.py:210 -#, python-format -msgid "Error!" -msgstr "Erreur !" - -#. module: base_status -#: code:addons/base_status/base_state.py:107 -#, python-format -msgid "" -"You can not escalate, you are already at the top level regarding your sales-" -"team category." -msgstr "" -"Vous ne pouvez pas demander d'escalade : vous êtes déjà au plus haut niveau " -"possible dans votre catégorie d'équipes de ventes." - -#. module: base_status -#: code:addons/base_status/base_state.py:193 -#, python-format -msgid "%s is now <b>pending</b>." -msgstr "%s est maintenant <b>en attente</b>." - -#. module: base_status -#: code:addons/base_status/base_state.py:187 -#, python-format -msgid "%s has been <b>canceled</b>." -msgstr "%s a été <b>annulé(e)</b>." - -#. module: base_status -#: code:addons/base_status/base_stage.py:210 -#, python-format -msgid "" -"You are already at the top level of your sales-team category.\n" -"Therefore you cannot escalate furthermore." -msgstr "" -"Vous êtes déjà au plus haut niveau possible dans votre catégorie d'équipes " -"de ventes.\n" -"Par conséquent vous ne pouvez pas demander une escalade au niveau supérieur." - -#. module: base_status -#: code:addons/base_status/base_state.py:181 -#, python-format -msgid "%s has been <b>closed</b>." -msgstr "%s a été <b>fermé(e)</b>." diff --git a/addons/base_status/i18n/hr.po b/addons/base_status/i18n/hr.po deleted file mode 100644 index 41d004aaf14..00000000000 --- a/addons/base_status/i18n/hr.po +++ /dev/null @@ -1,78 +0,0 @@ -# Croatian 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-12-21 17:05+0000\n" -"PO-Revision-Date: 2012-12-09 19:46+0000\n" -"Last-Translator: Goran Kliska <gkliska@gmail.com>\n" -"Language-Team: Croatian <hr@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: 2013-03-16 05:52+0000\n" -"X-Generator: Launchpad (build 16532)\n" - -#. module: base_status -#: code:addons/base_status/base_state.py:107 -#, python-format -msgid "Error !" -msgstr "Greška !" - -#. module: base_status -#: code:addons/base_status/base_state.py:166 -#, python-format -msgid "%s has been <b>opened</b>." -msgstr "%s je <b>otvoren</b>." - -#. module: base_status -#: code:addons/base_status/base_state.py:199 -#, python-format -msgid "%s has been <b>renewed</b>." -msgstr "%s je <b>obnovljen</b>." - -#. module: base_status -#: code:addons/base_status/base_stage.py:210 -#, python-format -msgid "Error!" -msgstr "Greška!" - -#. module: base_status -#: code:addons/base_status/base_state.py:107 -#, python-format -msgid "" -"You can not escalate, you are already at the top level regarding your sales-" -"team category." -msgstr "Ne možete eskaliarati. Vi ste na vrhu hijerarhije prodajnog tima." - -#. module: base_status -#: code:addons/base_status/base_state.py:193 -#, python-format -msgid "%s is now <b>pending</b>." -msgstr "%s je sada <b>na čekanju</b>." - -#. module: base_status -#: code:addons/base_status/base_state.py:187 -#, python-format -msgid "%s has been <b>canceled</b>." -msgstr "%s je <b>otkazan</b>." - -#. module: base_status -#: code:addons/base_status/base_stage.py:210 -#, python-format -msgid "" -"You are already at the top level of your sales-team category.\n" -"Therefore you cannot escalate furthermore." -msgstr "" -"Vi ste na vrhu hijerarhije prodajnog tima.\n" -"Stoga ne možete dalje eskalirati." - -#. module: base_status -#: code:addons/base_status/base_state.py:181 -#, python-format -msgid "%s has been <b>closed</b>." -msgstr "%s je <b>zatvoren</b>." diff --git a/addons/base_status/i18n/hu.po b/addons/base_status/i18n/hu.po deleted file mode 100644 index e11ea554b07..00000000000 --- a/addons/base_status/i18n/hu.po +++ /dev/null @@ -1,80 +0,0 @@ -# Hungarian translation for openobject-addons -# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013 -# This file is distributed under the same license as the openobject-addons package. -# FIRST AUTHOR <EMAIL@ADDRESS>, 2013. -# -msgid "" -msgstr "" -"Project-Id-Version: openobject-addons\n" -"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" -"POT-Creation-Date: 2012-12-21 17:05+0000\n" -"PO-Revision-Date: 2013-03-14 10:26+0000\n" -"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" -"Language-Team: Hungarian <hu@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: 2013-03-16 05:52+0000\n" -"X-Generator: Launchpad (build 16532)\n" - -#. module: base_status -#: code:addons/base_status/base_state.py:107 -#, python-format -msgid "Error !" -msgstr "Hiba!" - -#. module: base_status -#: code:addons/base_status/base_state.py:166 -#, python-format -msgid "%s has been <b>opened</b>." -msgstr "%s meg lett <b>nyitva</b>." - -#. module: base_status -#: code:addons/base_status/base_state.py:199 -#, python-format -msgid "%s has been <b>renewed</b>." -msgstr "%s meg lett <b>újítva</b>." - -#. module: base_status -#: code:addons/base_status/base_stage.py:210 -#, python-format -msgid "Error!" -msgstr "Hiba!" - -#. module: base_status -#: code:addons/base_status/base_state.py:107 -#, python-format -msgid "" -"You can not escalate, you are already at the top level regarding your sales-" -"team category." -msgstr "" -"Nem tud feljebb lépni, már az értékesítési csoportját illetően a legmagasabb " -"fokon áll." - -#. module: base_status -#: code:addons/base_status/base_state.py:193 -#, python-format -msgid "%s is now <b>pending</b>." -msgstr "%s ez nem <b>elintézetlen</b>." - -#. module: base_status -#: code:addons/base_status/base_state.py:187 -#, python-format -msgid "%s has been <b>canceled</b>." -msgstr "%s ez <b>visszavont</b>." - -#. module: base_status -#: code:addons/base_status/base_stage.py:210 -#, python-format -msgid "" -"You are already at the top level of your sales-team category.\n" -"Therefore you cannot escalate furthermore." -msgstr "" -"Már az értékesítési csoportjának a legmagasabb szintjén áll.\n" -"Ezért nem tud tovább feljebb lépni." - -#. module: base_status -#: code:addons/base_status/base_state.py:181 -#, python-format -msgid "%s has been <b>closed</b>." -msgstr "%s le lett <b>Zárva</b>." diff --git a/addons/base_status/i18n/id.po b/addons/base_status/i18n/id.po deleted file mode 100644 index a90023ef348..00000000000 --- a/addons/base_status/i18n/id.po +++ /dev/null @@ -1,77 +0,0 @@ -# Indonesian 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-12-21 17:05+0000\n" -"PO-Revision-Date: 2012-12-17 00:41+0000\n" -"Last-Translator: Riza Kurniawan <rizabisnis@gmail.com>\n" -"Language-Team: Indonesian <id@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: 2013-03-16 05:52+0000\n" -"X-Generator: Launchpad (build 16532)\n" - -#. module: base_status -#: code:addons/base_status/base_state.py:107 -#, python-format -msgid "Error !" -msgstr "Ada Kesalahan !!!" - -#. module: base_status -#: code:addons/base_status/base_state.py:166 -#, python-format -msgid "%s has been <b>opened</b>." -msgstr "%s sedang <b>dibuka</b>." - -#. module: base_status -#: code:addons/base_status/base_state.py:199 -#, python-format -msgid "%s has been <b>renewed</b>." -msgstr "%s sedang <b>diperbaharui</b>." - -#. module: base_status -#: code:addons/base_status/base_stage.py:210 -#, python-format -msgid "Error!" -msgstr "Ada Kesalahan !" - -#. module: base_status -#: code:addons/base_status/base_state.py:107 -#, python-format -msgid "" -"You can not escalate, you are already at the top level regarding your sales-" -"team category." -msgstr "" -"Tidak bisa ditingkatkan, anda pada tingkat tertinggi bersama tim sales anda." - -#. module: base_status -#: code:addons/base_status/base_state.py:193 -#, python-format -msgid "%s is now <b>pending</b>." -msgstr "%s saat ini <b>ditunda</b>." - -#. module: base_status -#: code:addons/base_status/base_state.py:187 -#, python-format -msgid "%s has been <b>canceled</b>." -msgstr "%s sedang = <b>dibatalkan</b>." - -#. module: base_status -#: code:addons/base_status/base_stage.py:210 -#, python-format -msgid "" -"You are already at the top level of your sales-team category.\n" -"Therefore you cannot escalate furthermore." -msgstr "" - -#. module: base_status -#: code:addons/base_status/base_state.py:181 -#, python-format -msgid "%s has been <b>closed</b>." -msgstr "%s sedang = <b>ditutup</b>." diff --git a/addons/base_status/i18n/it.po b/addons/base_status/i18n/it.po deleted file mode 100644 index 6594ff72e4e..00000000000 --- a/addons/base_status/i18n/it.po +++ /dev/null @@ -1,78 +0,0 @@ -# Italian 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-12-21 17:05+0000\n" -"PO-Revision-Date: 2012-12-13 19:22+0000\n" -"Last-Translator: Davide Corio - agilebg.com <davide.corio@agilebg.com>\n" -"Language-Team: Italian <it@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: 2013-03-16 05:52+0000\n" -"X-Generator: Launchpad (build 16532)\n" - -#. module: base_status -#: code:addons/base_status/base_state.py:107 -#, python-format -msgid "Error !" -msgstr "Errore !" - -#. module: base_status -#: code:addons/base_status/base_state.py:166 -#, python-format -msgid "%s has been <b>opened</b>." -msgstr "%s è stato <b>aperto</b>." - -#. module: base_status -#: code:addons/base_status/base_state.py:199 -#, python-format -msgid "%s has been <b>renewed</b>." -msgstr "%s è stato <b>rinnovato</b>." - -#. module: base_status -#: code:addons/base_status/base_stage.py:210 -#, python-format -msgid "Error!" -msgstr "Errore!" - -#. module: base_status -#: code:addons/base_status/base_state.py:107 -#, python-format -msgid "" -"You can not escalate, you are already at the top level regarding your sales-" -"team category." -msgstr "Impossibile scalare, si è già al livello massimo del team vendite." - -#. module: base_status -#: code:addons/base_status/base_state.py:193 -#, python-format -msgid "%s is now <b>pending</b>." -msgstr "%s è ora <b>in attesa</b>." - -#. module: base_status -#: code:addons/base_status/base_state.py:187 -#, python-format -msgid "%s has been <b>canceled</b>." -msgstr "%s è stato <b>annullato</b>." - -#. module: base_status -#: code:addons/base_status/base_stage.py:210 -#, python-format -msgid "" -"You are already at the top level of your sales-team category.\n" -"Therefore you cannot escalate furthermore." -msgstr "" -"Si è già al massimo livello del team vendita.\n" -"Quindi non è possibile scalare ulteriormente." - -#. module: base_status -#: code:addons/base_status/base_state.py:181 -#, python-format -msgid "%s has been <b>closed</b>." -msgstr "%s è stato <b>chiuso</b>." diff --git a/addons/base_status/i18n/lt.po b/addons/base_status/i18n/lt.po deleted file mode 100644 index cdaf9b0db37..00000000000 --- a/addons/base_status/i18n/lt.po +++ /dev/null @@ -1,76 +0,0 @@ -# Lithuanian translation for openobject-addons -# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013 -# This file is distributed under the same license as the openobject-addons package. -# FIRST AUTHOR <EMAIL@ADDRESS>, 2013. -# -msgid "" -msgstr "" -"Project-Id-Version: openobject-addons\n" -"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" -"POT-Creation-Date: 2012-12-21 17:05+0000\n" -"PO-Revision-Date: 2013-04-29 15:17+0000\n" -"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" -"Language-Team: Lithuanian <lt@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: 2013-04-30 05:29+0000\n" -"X-Generator: Launchpad (build 16580)\n" - -#. module: base_status -#: code:addons/base_status/base_state.py:107 -#, python-format -msgid "Error !" -msgstr "" - -#. module: base_status -#: code:addons/base_status/base_state.py:166 -#, python-format -msgid "%s has been <b>opened</b>." -msgstr "" - -#. module: base_status -#: code:addons/base_status/base_state.py:199 -#, python-format -msgid "%s has been <b>renewed</b>." -msgstr "" - -#. module: base_status -#: code:addons/base_status/base_stage.py:210 -#, python-format -msgid "Error!" -msgstr "" - -#. module: base_status -#: code:addons/base_status/base_state.py:107 -#, python-format -msgid "" -"You can not escalate, you are already at the top level regarding your sales-" -"team category." -msgstr "" - -#. module: base_status -#: code:addons/base_status/base_state.py:193 -#, python-format -msgid "%s is now <b>pending</b>." -msgstr "" - -#. module: base_status -#: code:addons/base_status/base_state.py:187 -#, python-format -msgid "%s has been <b>canceled</b>." -msgstr "" - -#. module: base_status -#: code:addons/base_status/base_stage.py:210 -#, python-format -msgid "" -"You are already at the top level of your sales-team category.\n" -"Therefore you cannot escalate furthermore." -msgstr "" - -#. module: base_status -#: code:addons/base_status/base_state.py:181 -#, python-format -msgid "%s has been <b>closed</b>." -msgstr "" diff --git a/addons/base_status/i18n/mk.po b/addons/base_status/i18n/mk.po deleted file mode 100644 index 0f321e004b1..00000000000 --- a/addons/base_status/i18n/mk.po +++ /dev/null @@ -1,80 +0,0 @@ -# Macedonian translation for openobject-addons -# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013 -# This file is distributed under the same license as the openobject-addons package. -# FIRST AUTHOR <EMAIL@ADDRESS>, 2013. -# -msgid "" -msgstr "" -"Project-Id-Version: openobject-addons\n" -"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" -"POT-Creation-Date: 2012-12-21 17:05+0000\n" -"PO-Revision-Date: 2013-02-21 13:28+0000\n" -"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" -"Language-Team: Macedonian <mk@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: 2013-03-16 05:52+0000\n" -"X-Generator: Launchpad (build 16532)\n" - -#. module: base_status -#: code:addons/base_status/base_state.py:107 -#, python-format -msgid "Error !" -msgstr "Грешка !" - -#. module: base_status -#: code:addons/base_status/base_state.py:166 -#, python-format -msgid "%s has been <b>opened</b>." -msgstr "%s е <b>отворен</b>." - -#. module: base_status -#: code:addons/base_status/base_state.py:199 -#, python-format -msgid "%s has been <b>renewed</b>." -msgstr "%s е <b>обновен</b>." - -#. module: base_status -#: code:addons/base_status/base_stage.py:210 -#, python-format -msgid "Error!" -msgstr "Грешка!" - -#. module: base_status -#: code:addons/base_status/base_state.py:107 -#, python-format -msgid "" -"You can not escalate, you are already at the top level regarding your sales-" -"team category." -msgstr "" -"Неможе да ескалирате, веќе сте на највисокото ниво со оглед на категоријата " -"на вашиот продажбен тим." - -#. module: base_status -#: code:addons/base_status/base_state.py:193 -#, python-format -msgid "%s is now <b>pending</b>." -msgstr "%s е <b>во исчекување</b>." - -#. module: base_status -#: code:addons/base_status/base_state.py:187 -#, python-format -msgid "%s has been <b>canceled</b>." -msgstr "%s е <b>откажан</b>." - -#. module: base_status -#: code:addons/base_status/base_stage.py:210 -#, python-format -msgid "" -"You are already at the top level of your sales-team category.\n" -"Therefore you cannot escalate furthermore." -msgstr "" -"Веќе сте на највисокото ниво на вашиот продажбен тим.\n" -"Значи понатамошно ескалирање не е можно." - -#. module: base_status -#: code:addons/base_status/base_state.py:181 -#, python-format -msgid "%s has been <b>closed</b>." -msgstr "%s е <b>затворен</b>." diff --git a/addons/base_status/i18n/mn.po b/addons/base_status/i18n/mn.po deleted file mode 100644 index 5bb891348e8..00000000000 --- a/addons/base_status/i18n/mn.po +++ /dev/null @@ -1,78 +0,0 @@ -# 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-12-21 17:05+0000\n" -"PO-Revision-Date: 2012-12-27 16:26+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: 2013-03-16 05:52+0000\n" -"X-Generator: Launchpad (build 16532)\n" - -#. module: base_status -#: code:addons/base_status/base_state.py:107 -#, python-format -msgid "Error !" -msgstr "Алдаа !" - -#. module: base_status -#: code:addons/base_status/base_state.py:166 -#, python-format -msgid "%s has been <b>opened</b>." -msgstr "%s <b>нээгдлээ</b>." - -#. module: base_status -#: code:addons/base_status/base_state.py:199 -#, python-format -msgid "%s has been <b>renewed</b>." -msgstr "%s <b>шинэчлэгдлээ</b>." - -#. module: base_status -#: code:addons/base_status/base_stage.py:210 -#, python-format -msgid "Error!" -msgstr "Алдаа!" - -#. module: base_status -#: code:addons/base_status/base_state.py:107 -#, python-format -msgid "" -"You can not escalate, you are already at the top level regarding your sales-" -"team category." -msgstr "Томруулах боломжгүй. Учир нь та багийнхаа хамгийн дээд түвшин байна." - -#. module: base_status -#: code:addons/base_status/base_state.py:193 -#, python-format -msgid "%s is now <b>pending</b>." -msgstr "%s одоо <b>хүлээгдэж буй</b>." - -#. module: base_status -#: code:addons/base_status/base_state.py:187 -#, python-format -msgid "%s has been <b>canceled</b>." -msgstr "%s <b>цуцлагдлаа</b>." - -#. module: base_status -#: code:addons/base_status/base_stage.py:210 -#, python-format -msgid "" -"You are already at the top level of your sales-team category.\n" -"Therefore you cannot escalate furthermore." -msgstr "" -"Та борлуулалтын багийн ангилалынхаа хамгийн дээд түвшин байна.\n" -"Тиймээс та дахин томруулах боломжгүй." - -#. module: base_status -#: code:addons/base_status/base_state.py:181 -#, python-format -msgid "%s has been <b>closed</b>." -msgstr "%s <b>хаагдлаа</b>." diff --git a/addons/base_status/i18n/nl.po b/addons/base_status/i18n/nl.po deleted file mode 100644 index 882e44d2ded..00000000000 --- a/addons/base_status/i18n/nl.po +++ /dev/null @@ -1,80 +0,0 @@ -# Dutch 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-12-21 17:05+0000\n" -"PO-Revision-Date: 2012-12-20 14:05+0000\n" -"Last-Translator: Erwin van der Ploeg (Endian Solutions) <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: 2013-03-16 05:52+0000\n" -"X-Generator: Launchpad (build 16532)\n" - -#. module: base_status -#: code:addons/base_status/base_state.py:107 -#, python-format -msgid "Error !" -msgstr "Fout!" - -#. module: base_status -#: code:addons/base_status/base_state.py:166 -#, python-format -msgid "%s has been <b>opened</b>." -msgstr "%s is <b>geopend</b>." - -#. module: base_status -#: code:addons/base_status/base_state.py:199 -#, python-format -msgid "%s has been <b>renewed</b>." -msgstr "%s is <b>vernieuw</b>." - -#. module: base_status -#: code:addons/base_status/base_stage.py:210 -#, python-format -msgid "Error!" -msgstr "Fout!" - -#. module: base_status -#: code:addons/base_status/base_state.py:107 -#, python-format -msgid "" -"You can not escalate, you are already at the top level regarding your sales-" -"team category." -msgstr "" -"Het is niet mogelijk om verder te escaleren. U bent al op het hoogste niveau " -"van uw verkoopteam categorieën." - -#. module: base_status -#: code:addons/base_status/base_state.py:193 -#, python-format -msgid "%s is now <b>pending</b>." -msgstr "%s is nu <b>in afwachting</b>." - -#. module: base_status -#: code:addons/base_status/base_state.py:187 -#, python-format -msgid "%s has been <b>canceled</b>." -msgstr "%s is <b>geannuleerd</b>." - -#. module: base_status -#: code:addons/base_status/base_stage.py:210 -#, python-format -msgid "" -"You are already at the top level of your sales-team category.\n" -"Therefore you cannot escalate furthermore." -msgstr "" -"U bent al op het hoogste niveau van het verkoopteam.\n" -"Het is zodoende niet mogelijk om verder te escaleren." - -#. module: base_status -#: code:addons/base_status/base_state.py:181 -#, python-format -msgid "%s has been <b>closed</b>." -msgstr "%s is <b>gesloten</b>." diff --git a/addons/base_status/i18n/nl_BE.po b/addons/base_status/i18n/nl_BE.po deleted file mode 100644 index 6a3c2d83fc7..00000000000 --- a/addons/base_status/i18n/nl_BE.po +++ /dev/null @@ -1,80 +0,0 @@ -# Dutch (Belgium) translation for openobject-addons -# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013 -# This file is distributed under the same license as the openobject-addons package. -# FIRST AUTHOR <EMAIL@ADDRESS>, 2013. -# -msgid "" -msgstr "" -"Project-Id-Version: openobject-addons\n" -"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" -"POT-Creation-Date: 2012-12-21 17:05+0000\n" -"PO-Revision-Date: 2013-04-15 16:40+0000\n" -"Last-Translator: Els Van Vossel (Agaplan) <Unknown>\n" -"Language-Team: Dutch (Belgium) <nl_BE@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: 2013-04-16 04:37+0000\n" -"X-Generator: Launchpad (build 16564)\n" - -#. module: base_status -#: code:addons/base_status/base_state.py:107 -#, python-format -msgid "Error !" -msgstr "Fout" - -#. module: base_status -#: code:addons/base_status/base_state.py:166 -#, python-format -msgid "%s has been <b>opened</b>." -msgstr "%s is <b>geopend</b>." - -#. module: base_status -#: code:addons/base_status/base_state.py:199 -#, python-format -msgid "%s has been <b>renewed</b>." -msgstr "%s is <b>vernieuwd</b>." - -#. module: base_status -#: code:addons/base_status/base_stage.py:210 -#, python-format -msgid "Error!" -msgstr "Fout" - -#. module: base_status -#: code:addons/base_status/base_state.py:107 -#, python-format -msgid "" -"You can not escalate, you are already at the top level regarding your sales-" -"team category." -msgstr "" -"U kunt niet escaleren; u heeft het hoogste niveau in de verkoopteams al " -"bereikt." - -#. module: base_status -#: code:addons/base_status/base_state.py:193 -#, python-format -msgid "%s is now <b>pending</b>." -msgstr "%s is <b>wachtend</b>." - -#. module: base_status -#: code:addons/base_status/base_state.py:187 -#, python-format -msgid "%s has been <b>canceled</b>." -msgstr "%s is <b>geannuleerd</b>." - -#. module: base_status -#: code:addons/base_status/base_stage.py:210 -#, python-format -msgid "" -"You are already at the top level of your sales-team category.\n" -"Therefore you cannot escalate furthermore." -msgstr "" -"U bent al op het hoogste niveau van uw verkoopteam.\n" -"U kunt dus niet verder escaleren." - -#. module: base_status -#: code:addons/base_status/base_state.py:181 -#, python-format -msgid "%s has been <b>closed</b>." -msgstr "%s is <b>gesloten</b>." diff --git a/addons/base_status/i18n/pl.po b/addons/base_status/i18n/pl.po deleted file mode 100644 index 61a1e96e6f4..00000000000 --- a/addons/base_status/i18n/pl.po +++ /dev/null @@ -1,79 +0,0 @@ -# Polish 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-12-21 17:05+0000\n" -"PO-Revision-Date: 2012-12-16 11:12+0000\n" -"Last-Translator: Grzegorz Grzelak (OpenGLOBE.pl) <grzegorz@openglobe.pl>\n" -"Language-Team: Polish <pl@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: 2013-03-16 05:52+0000\n" -"X-Generator: Launchpad (build 16532)\n" - -#. module: base_status -#: code:addons/base_status/base_state.py:107 -#, python-format -msgid "Error !" -msgstr "Błąd !" - -#. module: base_status -#: code:addons/base_status/base_state.py:166 -#, python-format -msgid "%s has been <b>opened</b>." -msgstr "%s zostało <b>otwarte</b>." - -#. module: base_status -#: code:addons/base_status/base_state.py:199 -#, python-format -msgid "%s has been <b>renewed</b>." -msgstr "%s zostało <b>odnowione</b>." - -#. module: base_status -#: code:addons/base_status/base_stage.py:210 -#, python-format -msgid "Error!" -msgstr "Błąd!" - -#. module: base_status -#: code:addons/base_status/base_state.py:107 -#, python-format -msgid "" -"You can not escalate, you are already at the top level regarding your sales-" -"team category." -msgstr "" -"Nie możesz przekazywać nadrzędnym, bo jesteś na górze w kategorii zespołu." - -#. module: base_status -#: code:addons/base_status/base_state.py:193 -#, python-format -msgid "%s is now <b>pending</b>." -msgstr "%s <b>oczekuje</b>." - -#. module: base_status -#: code:addons/base_status/base_state.py:187 -#, python-format -msgid "%s has been <b>canceled</b>." -msgstr "%s zostało <b>anulowane</b>." - -#. module: base_status -#: code:addons/base_status/base_stage.py:210 -#, python-format -msgid "" -"You are already at the top level of your sales-team category.\n" -"Therefore you cannot escalate furthermore." -msgstr "" -"Jesteś na najwyższym poziomie kategorii zespołów.\n" -"Więc nie możesz przekazywać wyżej." - -#. module: base_status -#: code:addons/base_status/base_state.py:181 -#, python-format -msgid "%s has been <b>closed</b>." -msgstr "%s zostało <b>zamknięte</b>." diff --git a/addons/base_status/i18n/pt.po b/addons/base_status/i18n/pt.po deleted file mode 100644 index 2e8648811c0..00000000000 --- a/addons/base_status/i18n/pt.po +++ /dev/null @@ -1,80 +0,0 @@ -# Portuguese 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-12-21 17:05+0000\n" -"PO-Revision-Date: 2012-12-13 16:39+0000\n" -"Last-Translator: Rui Franco (multibase.pt) <Unknown>\n" -"Language-Team: Portuguese <pt@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: 2013-03-16 05:52+0000\n" -"X-Generator: Launchpad (build 16532)\n" - -#. module: base_status -#: code:addons/base_status/base_state.py:107 -#, python-format -msgid "Error !" -msgstr "Erro!" - -#. module: base_status -#: code:addons/base_status/base_state.py:166 -#, python-format -msgid "%s has been <b>opened</b>." -msgstr "%s foi <b>aberto</b>." - -#. module: base_status -#: code:addons/base_status/base_state.py:199 -#, python-format -msgid "%s has been <b>renewed</b>." -msgstr "%s foi <b>renovado</b>." - -#. module: base_status -#: code:addons/base_status/base_stage.py:210 -#, python-format -msgid "Error!" -msgstr "Erro!" - -#. module: base_status -#: code:addons/base_status/base_state.py:107 -#, python-format -msgid "" -"You can not escalate, you are already at the top level regarding your sales-" -"team category." -msgstr "" -"Não pode subir de grau porque já está no topo no que concerne à categoria da " -"sua equipa de vendas." - -#. module: base_status -#: code:addons/base_status/base_state.py:193 -#, python-format -msgid "%s is now <b>pending</b>." -msgstr "%s agora está <b>pendente</b>." - -#. module: base_status -#: code:addons/base_status/base_state.py:187 -#, python-format -msgid "%s has been <b>canceled</b>." -msgstr "%s foi <b>cancelado</b>." - -#. module: base_status -#: code:addons/base_status/base_stage.py:210 -#, python-format -msgid "" -"You are already at the top level of your sales-team category.\n" -"Therefore you cannot escalate furthermore." -msgstr "" -"Já está no topo no que concerne à categoria da sua equipa de vendas.\n" -"Não pode subir mais." - -#. module: base_status -#: code:addons/base_status/base_state.py:181 -#, python-format -msgid "%s has been <b>closed</b>." -msgstr "%s foi <b>fechado</b>." diff --git a/addons/base_status/i18n/pt_BR.po b/addons/base_status/i18n/pt_BR.po deleted file mode 100644 index 37bf13bed7c..00000000000 --- a/addons/base_status/i18n/pt_BR.po +++ /dev/null @@ -1,81 +0,0 @@ -# Brazilian Portuguese 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-12-21 17:05+0000\n" -"PO-Revision-Date: 2012-12-16 23:52+0000\n" -"Last-Translator: Fábio Martinelli - http://zupy.com.br " -"<webmaster@guaru.net>\n" -"Language-Team: Brazilian Portuguese <pt_BR@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: 2013-03-16 05:52+0000\n" -"X-Generator: Launchpad (build 16532)\n" - -#. module: base_status -#: code:addons/base_status/base_state.py:107 -#, python-format -msgid "Error !" -msgstr "Erro!" - -#. module: base_status -#: code:addons/base_status/base_state.py:166 -#, python-format -msgid "%s has been <b>opened</b>." -msgstr "%s foi <b>aberta</b>." - -#. module: base_status -#: code:addons/base_status/base_state.py:199 -#, python-format -msgid "%s has been <b>renewed</b>." -msgstr "%s foi <b>renovado</b>." - -#. module: base_status -#: code:addons/base_status/base_stage.py:210 -#, python-format -msgid "Error!" -msgstr "Erro!" - -#. module: base_status -#: code:addons/base_status/base_state.py:107 -#, python-format -msgid "" -"You can not escalate, you are already at the top level regarding your sales-" -"team category." -msgstr "" -"Você não pode escalar, você já está no nível mais alto em relação a sua " -"categoria de equipe de vendas." - -#. module: base_status -#: code:addons/base_status/base_state.py:193 -#, python-format -msgid "%s is now <b>pending</b>." -msgstr "%s está agora <b>pendente</b>." - -#. module: base_status -#: code:addons/base_status/base_state.py:187 -#, python-format -msgid "%s has been <b>canceled</b>." -msgstr "%s foi <b>cancelado</b>." - -#. module: base_status -#: code:addons/base_status/base_stage.py:210 -#, python-format -msgid "" -"You are already at the top level of your sales-team category.\n" -"Therefore you cannot escalate furthermore." -msgstr "" -"Você já está no nível mais alto de sua categoria de equipe de vendas.\n" -"Portanto, você não pode escalar além disso." - -#. module: base_status -#: code:addons/base_status/base_state.py:181 -#, python-format -msgid "%s has been <b>closed</b>." -msgstr "%s foi <b>fechado</b>." diff --git a/addons/base_status/i18n/ro.po b/addons/base_status/i18n/ro.po deleted file mode 100644 index 4f82205f7e5..00000000000 --- a/addons/base_status/i18n/ro.po +++ /dev/null @@ -1,81 +0,0 @@ -# Romanian translation for openobject-addons -# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013 -# This file is distributed under the same license as the openobject-addons package. -# FIRST AUTHOR <EMAIL@ADDRESS>, 2013. -# -msgid "" -msgstr "" -"Project-Id-Version: openobject-addons\n" -"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" -"POT-Creation-Date: 2012-12-21 17:05+0000\n" -"PO-Revision-Date: 2013-01-23 18:23+0000\n" -"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" -"Language-Team: Romanian <ro@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: 2013-03-16 05:52+0000\n" -"X-Generator: Launchpad (build 16532)\n" - -#. module: base_status -#: code:addons/base_status/base_state.py:107 -#, python-format -msgid "Error !" -msgstr "Eroare !" - -#. module: base_status -#: code:addons/base_status/base_state.py:166 -#, python-format -msgid "%s has been <b>opened</b>." -msgstr "%s a fost <b>deschis</b>." - -#. module: base_status -#: code:addons/base_status/base_state.py:199 -#, python-format -msgid "%s has been <b>renewed</b>." -msgstr "%s a fost <b>reinnoit</b>." - -#. module: base_status -#: code:addons/base_status/base_stage.py:210 -#, python-format -msgid "Error!" -msgstr "Eroare!" - -#. module: base_status -#: code:addons/base_status/base_state.py:107 -#, python-format -msgid "" -"You can not escalate, you are already at the top level regarding your sales-" -"team category." -msgstr "" -"Nu puteti avansa, sunteti deja la cel mai inalt nivel in ceea ce priveste " -"categoria echipei d-voastra de vanzari." - -#. module: base_status -#: code:addons/base_status/base_state.py:193 -#, python-format -msgid "%s is now <b>pending</b>." -msgstr "%s este acum <b>in asteptare</b>." - -#. module: base_status -#: code:addons/base_status/base_state.py:187 -#, python-format -msgid "%s has been <b>canceled</b>." -msgstr "%s a fost <b>anulat</b>." - -#. module: base_status -#: code:addons/base_status/base_stage.py:210 -#, python-format -msgid "" -"You are already at the top level of your sales-team category.\n" -"Therefore you cannot escalate furthermore." -msgstr "" -"Sunteti deja la cel mai inalt nivel al categoriei echipei dumneavoastra de " -"vanzari.\n" -"Prin urmare nu mai puteti avansa." - -#. module: base_status -#: code:addons/base_status/base_state.py:181 -#, python-format -msgid "%s has been <b>closed</b>." -msgstr "%s a fost <b>inchis</b>." diff --git a/addons/base_status/i18n/ru.po b/addons/base_status/i18n/ru.po deleted file mode 100644 index 2dab7ceaf31..00000000000 --- a/addons/base_status/i18n/ru.po +++ /dev/null @@ -1,80 +0,0 @@ -# Russian 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-12-21 17:05+0000\n" -"PO-Revision-Date: 2013-06-05 07:16+0000\n" -"Last-Translator: Chertykov Denis <chertykov@gmail.com>\n" -"Language-Team: Russian <ru@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: 2013-06-06 05:21+0000\n" -"X-Generator: Launchpad (build 16667)\n" - -#. module: base_status -#: code:addons/base_status/base_state.py:107 -#, python-format -msgid "Error !" -msgstr "Ошибка !" - -#. module: base_status -#: code:addons/base_status/base_state.py:166 -#, python-format -msgid "%s has been <b>opened</b>." -msgstr "%s было <b>открыто</b>." - -#. module: base_status -#: code:addons/base_status/base_state.py:199 -#, python-format -msgid "%s has been <b>renewed</b>." -msgstr "%s было <b>обновлено</b>." - -#. module: base_status -#: code:addons/base_status/base_stage.py:210 -#, python-format -msgid "Error!" -msgstr "Ошибка!" - -#. module: base_status -#: code:addons/base_status/base_state.py:107 -#, python-format -msgid "" -"You can not escalate, you are already at the top level regarding your sales-" -"team category." -msgstr "" -"Вы не можете обострить, вы уже на высшем уровне относительно вашей категории " -"отдела продаж." - -#. module: base_status -#: code:addons/base_status/base_state.py:193 -#, python-format -msgid "%s is now <b>pending</b>." -msgstr "%s сейчас <b>в ожидании</b>." - -#. module: base_status -#: code:addons/base_status/base_state.py:187 -#, python-format -msgid "%s has been <b>canceled</b>." -msgstr "%s было <b>отменено</b>." - -#. module: base_status -#: code:addons/base_status/base_stage.py:210 -#, python-format -msgid "" -"You are already at the top level of your sales-team category.\n" -"Therefore you cannot escalate furthermore." -msgstr "" -"Вы уже на высшем уровне категории вашей команды продаж.\n" -"Поэтому вы не можете обострить." - -#. module: base_status -#: code:addons/base_status/base_state.py:181 -#, python-format -msgid "%s has been <b>closed</b>." -msgstr "%s было <b>закрыто</b>." diff --git a/addons/base_status/i18n/sl.po b/addons/base_status/i18n/sl.po deleted file mode 100644 index d4f00213381..00000000000 --- a/addons/base_status/i18n/sl.po +++ /dev/null @@ -1,76 +0,0 @@ -# Slovenian 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-12-21 17:05+0000\n" -"PO-Revision-Date: 2012-12-29 12:12+0000\n" -"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" -"Language-Team: Slovenian <sl@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: 2013-03-16 05:52+0000\n" -"X-Generator: Launchpad (build 16532)\n" - -#. module: base_status -#: code:addons/base_status/base_state.py:107 -#, python-format -msgid "Error !" -msgstr "Napaka!" - -#. module: base_status -#: code:addons/base_status/base_state.py:166 -#, python-format -msgid "%s has been <b>opened</b>." -msgstr "%s je bil <b>od</b>." - -#. module: base_status -#: code:addons/base_status/base_state.py:199 -#, python-format -msgid "%s has been <b>renewed</b>." -msgstr "%s je <b>obnovljen</b>." - -#. module: base_status -#: code:addons/base_status/base_stage.py:210 -#, python-format -msgid "Error!" -msgstr "Napaka!" - -#. module: base_status -#: code:addons/base_status/base_state.py:107 -#, python-format -msgid "" -"You can not escalate, you are already at the top level regarding your sales-" -"team category." -msgstr "Ste že na vrhu hierarhije vaših skupin prodaje." - -#. module: base_status -#: code:addons/base_status/base_state.py:193 -#, python-format -msgid "%s is now <b>pending</b>." -msgstr "%s je na <b>čakanju</b>." - -#. module: base_status -#: code:addons/base_status/base_state.py:187 -#, python-format -msgid "%s has been <b>canceled</b>." -msgstr "%s je <b>preklican</b>." - -#. module: base_status -#: code:addons/base_status/base_stage.py:210 -#, python-format -msgid "" -"You are already at the top level of your sales-team category.\n" -"Therefore you cannot escalate furthermore." -msgstr "Ste že na vrhu hierarhije vaših skupin prodaje." - -#. module: base_status -#: code:addons/base_status/base_state.py:181 -#, python-format -msgid "%s has been <b>closed</b>." -msgstr "%s je <b>zaprt</b>." diff --git a/addons/base_status/i18n/sv.po b/addons/base_status/i18n/sv.po deleted file mode 100644 index eb1b42e6a53..00000000000 --- a/addons/base_status/i18n/sv.po +++ /dev/null @@ -1,79 +0,0 @@ -# Swedish translation for openobject-addons -# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013 -# This file is distributed under the same license as the openobject-addons package. -# FIRST AUTHOR <EMAIL@ADDRESS>, 2013. -# -msgid "" -msgstr "" -"Project-Id-Version: openobject-addons\n" -"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" -"POT-Creation-Date: 2012-12-21 17:05+0000\n" -"PO-Revision-Date: 2013-07-08 15:10+0000\n" -"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" -"Language-Team: Swedish <sv@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: 2013-07-09 05:16+0000\n" -"X-Generator: Launchpad (build 16696)\n" - -#. module: base_status -#: code:addons/base_status/base_state.py:107 -#, python-format -msgid "Error !" -msgstr "Fel !" - -#. module: base_status -#: code:addons/base_status/base_state.py:166 -#, python-format -msgid "%s has been <b>opened</b>." -msgstr "%s har <b>öppnats</b>." - -#. module: base_status -#: code:addons/base_status/base_state.py:199 -#, python-format -msgid "%s has been <b>renewed</b>." -msgstr "%s har <b>förnyats</b>." - -#. module: base_status -#: code:addons/base_status/base_stage.py:210 -#, python-format -msgid "Error!" -msgstr "Fel!" - -#. module: base_status -#: code:addons/base_status/base_state.py:107 -#, python-format -msgid "" -"You can not escalate, you are already at the top level regarding your sales-" -"team category." -msgstr "" -"Du kan inte eskalera längre, du har nått toppen för denna säljlags-kategori." - -#. module: base_status -#: code:addons/base_status/base_state.py:193 -#, python-format -msgid "%s is now <b>pending</b>." -msgstr "%s är nu <b>pågående</b>." - -#. module: base_status -#: code:addons/base_status/base_state.py:187 -#, python-format -msgid "%s has been <b>canceled</b>." -msgstr "%s har <b>avbrutits</b>." - -#. module: base_status -#: code:addons/base_status/base_stage.py:210 -#, python-format -msgid "" -"You are already at the top level of your sales-team category.\n" -"Therefore you cannot escalate furthermore." -msgstr "" -"Du har nått översta nivån för din säljlagskategori.\n" -"Det går därför inte att eskalera ytterligare." - -#. module: base_status -#: code:addons/base_status/base_state.py:181 -#, python-format -msgid "%s has been <b>closed</b>." -msgstr "%s har <b>stängts</b>." diff --git a/addons/base_status/i18n/tr.po b/addons/base_status/i18n/tr.po deleted file mode 100644 index 33eac53991e..00000000000 --- a/addons/base_status/i18n/tr.po +++ /dev/null @@ -1,79 +0,0 @@ -# Turkish translation for openobject-addons -# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013 -# This file is distributed under the same license as the openobject-addons package. -# FIRST AUTHOR <EMAIL@ADDRESS>, 2013. -# -msgid "" -msgstr "" -"Project-Id-Version: openobject-addons\n" -"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" -"POT-Creation-Date: 2012-12-21 17:05+0000\n" -"PO-Revision-Date: 2013-02-03 12:04+0000\n" -"Last-Translator: Ahmet Altınışık <Unknown>\n" -"Language-Team: Turkish <tr@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: 2013-03-16 05:52+0000\n" -"X-Generator: Launchpad (build 16532)\n" - -#. module: base_status -#: code:addons/base_status/base_state.py:107 -#, python-format -msgid "Error !" -msgstr "Hata !" - -#. module: base_status -#: code:addons/base_status/base_state.py:166 -#, python-format -msgid "%s has been <b>opened</b>." -msgstr "%s <b>açıldı</b>." - -#. module: base_status -#: code:addons/base_status/base_state.py:199 -#, python-format -msgid "%s has been <b>renewed</b>." -msgstr "%s <b>yenilendi</b>." - -#. module: base_status -#: code:addons/base_status/base_stage.py:210 -#, python-format -msgid "Error!" -msgstr "Hata!" - -#. module: base_status -#: code:addons/base_status/base_state.py:107 -#, python-format -msgid "" -"You can not escalate, you are already at the top level regarding your sales-" -"team category." -msgstr "" -"Yükseltemezsiniz, satış-takımı kategorisine göre zaten en üst düzeydesiniz." - -#. module: base_status -#: code:addons/base_status/base_state.py:193 -#, python-format -msgid "%s is now <b>pending</b>." -msgstr "%s şimdi <b>bekliyor</b>." - -#. module: base_status -#: code:addons/base_status/base_state.py:187 -#, python-format -msgid "%s has been <b>canceled</b>." -msgstr "%s <b>iptal edildi</b>." - -#. module: base_status -#: code:addons/base_status/base_stage.py:210 -#, python-format -msgid "" -"You are already at the top level of your sales-team category.\n" -"Therefore you cannot escalate furthermore." -msgstr "" -"Zaten satış takımı kategorisinin en üst düzeyindesiniz.\n" -"Yani daha fazla yükseltemezsiniz." - -#. module: base_status -#: code:addons/base_status/base_state.py:181 -#, python-format -msgid "%s has been <b>closed</b>." -msgstr "%s <b>kapatıldı</b>." diff --git a/addons/base_status/i18n/zh_CN.po b/addons/base_status/i18n/zh_CN.po deleted file mode 100644 index 154de7fb950..00000000000 --- a/addons/base_status/i18n/zh_CN.po +++ /dev/null @@ -1,78 +0,0 @@ -# Chinese (Simplified) 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-12-21 17:05+0000\n" -"PO-Revision-Date: 2012-11-28 07:43+0000\n" -"Last-Translator: 盈通 ccdos <ccdos@163.com>\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: 2013-03-16 05:52+0000\n" -"X-Generator: Launchpad (build 16532)\n" - -#. module: base_status -#: code:addons/base_status/base_state.py:107 -#, python-format -msgid "Error !" -msgstr "错误!" - -#. module: base_status -#: code:addons/base_status/base_state.py:166 -#, python-format -msgid "%s has been <b>opened</b>." -msgstr "%s 已经被 <b>打开</b>." - -#. module: base_status -#: code:addons/base_status/base_state.py:199 -#, python-format -msgid "%s has been <b>renewed</b>." -msgstr "%s 已经被 <b>更新</b>." - -#. module: base_status -#: code:addons/base_status/base_stage.py:210 -#, python-format -msgid "Error!" -msgstr "错误!" - -#. module: base_status -#: code:addons/base_status/base_state.py:107 -#, python-format -msgid "" -"You can not escalate, you are already at the top level regarding your sales-" -"team category." -msgstr "不能上报,你已经在您销售团队类别中的最高级了。" - -#. module: base_status -#: code:addons/base_status/base_state.py:193 -#, python-format -msgid "%s is now <b>pending</b>." -msgstr "%s 现在 <b>待定</b>." - -#. module: base_status -#: code:addons/base_status/base_state.py:187 -#, python-format -msgid "%s has been <b>canceled</b>." -msgstr "%s 已经被 <b>取消</b>." - -#. module: base_status -#: code:addons/base_status/base_stage.py:210 -#, python-format -msgid "" -"You are already at the top level of your sales-team category.\n" -"Therefore you cannot escalate furthermore." -msgstr "" -"你已经在您销售团队类别中的最高级了。\n" -"因此,你不能再上报了。" - -#. module: base_status -#: code:addons/base_status/base_state.py:181 -#, python-format -msgid "%s has been <b>closed</b>." -msgstr "%s 已经被 <b>关闭</b>." diff --git a/addons/base_status/i18n/zh_TW.po b/addons/base_status/i18n/zh_TW.po deleted file mode 100644 index 9a32a17d35e..00000000000 --- a/addons/base_status/i18n/zh_TW.po +++ /dev/null @@ -1,76 +0,0 @@ -# Chinese (Traditional) translation for openobject-addons -# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013 -# This file is distributed under the same license as the openobject-addons package. -# FIRST AUTHOR <EMAIL@ADDRESS>, 2013. -# -msgid "" -msgstr "" -"Project-Id-Version: openobject-addons\n" -"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" -"POT-Creation-Date: 2012-12-21 17:05+0000\n" -"PO-Revision-Date: 2013-01-30 14:21+0000\n" -"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" -"Language-Team: Chinese (Traditional) <zh_TW@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: 2013-03-16 05:52+0000\n" -"X-Generator: Launchpad (build 16532)\n" - -#. module: base_status -#: code:addons/base_status/base_state.py:107 -#, python-format -msgid "Error !" -msgstr "錯誤!" - -#. module: base_status -#: code:addons/base_status/base_state.py:166 -#, python-format -msgid "%s has been <b>opened</b>." -msgstr "%s 已經 <b>開立</b>." - -#. module: base_status -#: code:addons/base_status/base_state.py:199 -#, python-format -msgid "%s has been <b>renewed</b>." -msgstr "%s 已經 <b>更新</b>." - -#. module: base_status -#: code:addons/base_status/base_stage.py:210 -#, python-format -msgid "Error!" -msgstr "錯誤!" - -#. module: base_status -#: code:addons/base_status/base_state.py:107 -#, python-format -msgid "" -"You can not escalate, you are already at the top level regarding your sales-" -"team category." -msgstr "您不能升級,您已經是您銷售團隊類別中的最高等級了。" - -#. module: base_status -#: code:addons/base_status/base_state.py:193 -#, python-format -msgid "%s is now <b>pending</b>." -msgstr "%s 現在是 <b>暫停</b>." - -#. module: base_status -#: code:addons/base_status/base_state.py:187 -#, python-format -msgid "%s has been <b>canceled</b>." -msgstr "%s 已經 <b>取消</b>." - -#. module: base_status -#: code:addons/base_status/base_stage.py:210 -#, python-format -msgid "" -"You are already at the top level of your sales-team category.\n" -"Therefore you cannot escalate furthermore." -msgstr "您已經是您銷售團隊類別中的最高等級了。因此您不能再升級了。" - -#. module: base_status -#: code:addons/base_status/base_state.py:181 -#, python-format -msgid "%s has been <b>closed</b>." -msgstr "%s 已經 <b>關閉</b>." diff --git a/addons/crm/__openerp__.py b/addons/crm/__openerp__.py index 3e6b55006fa..1b4ba191b82 100644 --- a/addons/crm/__openerp__.py +++ b/addons/crm/__openerp__.py @@ -51,7 +51,6 @@ Dashboard for CRM will include: 'depends': [ 'base_action_rule', 'base_setup', - 'base_status', 'process', 'mail', 'email_template', diff --git a/addons/crm/crm_lead.py b/addons/crm/crm_lead.py index 11204044a66..afd0aed9340 100644 --- a/addons/crm/crm_lead.py +++ b/addons/crm/crm_lead.py @@ -830,9 +830,9 @@ class crm_lead(format_address, osv.osv): 'priority': lead.priority, } new_id = phonecall.create(cr, uid, vals, context=context) - phonecall.case_open(cr, uid, [new_id], context=context) + phonecall.write(cr, uid, [new_id], {'state': 'open'}, context=context) if action == 'log': - phonecall.case_close(cr, uid, [new_id], context=context) + phonecall.write(cr, uid, [new_id], {'state': 'done'}, context=context) phonecall_dict[lead.id] = new_id self.schedule_phonecall_send_note(cr, uid, [lead.id], new_id, action, context=context) return phonecall_dict @@ -955,10 +955,8 @@ class crm_lead(format_address, osv.osv): """ if custom_values is None: custom_values = {} - desc = html2plaintext(msg.get('body')) if msg.get('body') else '' defaults = { 'name': msg.get('subject') or _("No Subject"), - 'description': desc, 'email_from': msg.get('from'), 'email_cc': msg.get('cc'), 'partner_id': msg.get('author_id', False), diff --git a/addons/crm/crm_phonecall.py b/addons/crm/crm_phonecall.py index 0d7004e005b..1e67c50a2c3 100644 --- a/addons/crm/crm_phonecall.py +++ b/addons/crm/crm_phonecall.py @@ -19,21 +19,19 @@ # ############################################################################## -from openerp.addons.base_status.base_state import base_state import crm from datetime import datetime from openerp.osv import fields, osv from openerp.tools import DEFAULT_SERVER_DATETIME_FORMAT from openerp.tools.translate import _ -class crm_phonecall(base_state, osv.osv): +class crm_phonecall(osv.osv): """ Model for CRM phonecalls """ _name = "crm.phonecall" _description = "Phonecall" _order = "id desc" _inherit = ['mail.thread'] _columns = { - # base_state required fields 'date_action_last': fields.datetime('Last Action', readonly=1), 'date_action_next': fields.datetime('Next Action', readonly=1), 'create_date': fields.datetime('Creation Date' , readonly=True), @@ -43,22 +41,21 @@ class crm_phonecall(base_state, osv.osv): 'partner_id': fields.many2one('res.partner', 'Contact'), 'company_id': fields.many2one('res.company', 'Company'), 'description': fields.text('Description'), - 'state': fields.selection([ ('draft', 'Draft'), - ('open', 'Confirmed'), - ('pending', 'Not Held'), - ('cancel', 'Cancelled'), - ('done', 'Held'),], - string='Status', size=16, readonly=True, track_visibility='onchange', - help='The status is set to \'Todo\', when a case is created.\ - If the case is in progress the status is set to \'Open\'.\ - When the call is over, the status is set to \'Held\'.\ - If the call needs to be done then the status is set to \'Not Held\'.'), + 'state': fields.selection( + [('open', 'Confirmed'), + ('cancel', 'Cancelled'), + ('pending', 'Pending'), + ('done', 'Held') + ], string='Status', readonly=True, track_visibility='onchange', + help='The status is set to Confirmed, when a case is created.\n' + 'When the call is over, the status is set to Held.\n' + 'If the callis not applicable anymore, the status can be set to Cancelled.'), 'email_from': fields.char('Email', size=128, help="These people will receive email."), 'date_open': fields.datetime('Opened', readonly=True), # phonecall fields 'name': fields.char('Call Summary', size=64, required=True), 'active': fields.boolean('Active', required=False), - 'duration': fields.float('Duration', help="Duration in Minutes"), + 'duration': fields.float('Duration', help='Duration in minutes and seconds.'), 'categ_id': fields.many2one('crm.case.categ', 'Category', \ domain="['|',('section_id','=',section_id),('section_id','=',False),\ ('object_id.model', '=', 'crm.phonecall')]"), @@ -71,7 +68,7 @@ class crm_phonecall(base_state, osv.osv): } def _get_default_state(self, cr, uid, context=None): - if context and context.get('default_state', False): + if context and context.get('default_state'): return context.get('default_state') return 'open' @@ -79,29 +76,38 @@ class crm_phonecall(base_state, osv.osv): 'date': fields.datetime.now, 'priority': crm.AVAILABLE_PRIORITIES[2][0], 'state': _get_default_state, - 'user_id': lambda self,cr,uid,ctx: uid, + 'user_id': lambda self, cr, uid, ctx: uid, 'active': 1 } - def case_close(self, cr, uid, ids, context=None): - """ Overrides close for crm_case for setting duration """ - res = True - for phone in self.browse(cr, uid, ids, context=context): - phone_id = phone.id - data = {} - if phone.duration <=0: - duration = datetime.now() - datetime.strptime(phone.date, DEFAULT_SERVER_DATETIME_FORMAT) - data['duration'] = duration.seconds/float(60) - res = super(crm_phonecall, self).case_close(cr, uid, [phone_id], context=context) - self.write(cr, uid, [phone_id], data, context=context) - return res + def on_change_partner_id(self, cr, uid, ids, partner_id, context=None): + values = {} + if partner_id: + partner = self.pool.get('res.partner').browse(cr, uid, partner_id, context=context) + values = { + 'partner_phone': partner.phone, + 'partner_mobile': partner.mobile, + } + return {'value': values} - def case_reset(self, cr, uid, ids, context=None): - """Resets case as Todo - """ - res = super(crm_phonecall, self).case_reset(cr, uid, ids, context) - self.write(cr, uid, ids, {'duration': 0.0, 'state':'open'}, context=context) - return res + def write(self, cr, uid, ids, values, context=None): + """ Override to add case management: open/close dates """ + if values.get('state'): + if values.get('state') == 'done': + values['date_closed'] = fields.datetime.now() + self.compute_duration(cr, uid, ids, context=context) + elif values.get('state') == 'open': + values['date_open'] = fields.datetime.now() + values['duration'] = 0.0 + return super(crm_phonecall, self).write(cr, uid, ids, values, context=context) + + def compute_duration(self, cr, uid, ids, context=None): + for phonecall in self.browse(cr, uid, ids, context=context): + if phonecall.duration <= 0: + duration = datetime.now() - datetime.strptime(phonecall.date, DEFAULT_SERVER_DATETIME_FORMAT) + values = {'duration': duration.seconds/float(60)} + self.write(cr, uid, [phonecall.id], values, context=context) + return True def schedule_another_phonecall(self, cr, uid, ids, schedule_time, call_summary, \ user_id=False, section_id=False, categ_id=False, action='schedule', context=None): @@ -135,7 +141,7 @@ class crm_phonecall(base_state, osv.osv): } new_id = self.create(cr, uid, vals, context=context) if action == 'log': - self.case_close(cr, uid, [new_id]) + self.write(cr, uid, [new_id], {'state': 'done'}, context=context) phonecall_dict[call.id] = new_id return phonecall_dict @@ -243,12 +249,11 @@ class crm_phonecall(base_state, osv.osv): 'email_from': default_contact and default_contact.email, }) vals = { - 'partner_id': partner_id, - 'opportunity_id' : opportunity_id, + 'partner_id': partner_id, + 'opportunity_id': opportunity_id, + 'state': 'done', } - self.write(cr, uid, [call.id], vals) - self.case_close(cr, uid, [call.id]) - opportunity.case_open(cr, uid, [opportunity_id]) + self.write(cr, uid, [call.id], vals, context=context) opportunity_dict[call.id] = opportunity_id return opportunity_dict diff --git a/addons/crm/crm_phonecall_view.xml b/addons/crm/crm_phonecall_view.xml index 6c1b31180be..41a0eb5f805 100644 --- a/addons/crm/crm_phonecall_view.xml +++ b/addons/crm/crm_phonecall_view.xml @@ -50,14 +50,6 @@ <field name="create_date" invisible="1"/> <field name="opportunity_id" invisible="1"/> <field name="state"/> - <button name="case_open" string="Confirm" type="object" - states="draft,pending" icon="gtk-go-forward"/> - <button name="case_close" string="Held" type="object" - states="open,pending" icon="gtk-jump-to"/> - <button name="case_cancel" string="Cancel" type="object" - states="draft,open,pending" icon="gtk-cancel"/> - <button name="case_reset" string="Reset to Todo" type="object" - states="cancel" icon="gtk-convert"/> </tree> </field> </record> @@ -69,13 +61,7 @@ <field name="arch" type="xml"> <form string="Phone Call" version="7.0"> <header> - <button name="case_close" string="Call Done" type="object" class="oe_highlight" - states="open,pending"/> - <button name="case_reset" string="Reset to Todo" type="object" - states="cancel"/> - <button name="case_cancel" string="Cancel Call" type="object" - states="draft,open,pending"/> - <field name="state" widget="statusbar" nolabel="1" statusbar_visible="open,done"/> + <field name="state" nolabel="1" widget="statusbar" clickable="True"/> </header> <sheet string="Phone Call"> <div class="oe_right"> @@ -102,11 +88,13 @@ <group col="4"> <field name="date"/> <field name="user_id"/> - <field name="duration" widget="float_time"/> + <label for="duration"/> + <div> + <field name="duration" widget="float_time" class="oe_inline" style="vertical-align:baseline"/> <b> min(s)</b> + </div> <field name="section_id" colspan="1" widget="selection" groups="base.group_multi_salesteams"/> - <field name="partner_id" on_change="onchange_partner_id(partner_id)"/> - <field name="email_from" invisible="1"/> <!--not needed because of the chatter, thus invisible, but must be in the view as it's returned by onchange_partner_id()--> + <field name="partner_id" on_change="on_change_partner_id(partner_id)"/> <field name="categ_id" widget="selection" domain="[('object_id.model', '=', 'crm.phonecall')]"/> <field name="partner_mobile"/> diff --git a/addons/crm/doc/changelog.rst b/addons/crm/doc/changelog.rst index e9bd1980956..5312329f4f5 100644 --- a/addons/crm/doc/changelog.rst +++ b/addons/crm/doc/changelog.rst @@ -8,6 +8,7 @@ Changelog - Stage/state update + - ``crm.phonecall``: removed inheritance towards ``base_state``. - ``crm.lead``: removed ``state`` field. Added ``date_last_stage_update`` field holding last stage_id modification. Updated reports. - ``crm.case.stage``: removed ``state`` field. diff --git a/addons/crm/test/lead2opportunity2win.yml b/addons/crm/test/lead2opportunity2win.yml index 003848c6ee7..a2499cf4aa9 100644 --- a/addons/crm/test/lead2opportunity2win.yml +++ b/addons/crm/test/lead2opportunity2win.yml @@ -104,7 +104,7 @@ - !python {model: crm.meeting}: | context.update({'active_model': 'crm.meeting'}) - self.case_open(cr, uid, [ref('base_calendar.crm_meeting_4')]) + self.write(cr, uid, [ref('base_calendar.crm_meeting_4')], {'state': 'open'}) - I invite a user for meeting. - diff --git a/addons/crm/test/phonecalls.yml b/addons/crm/test/phonecalls.yml index 51a933f3223..b1ea184f59b 100644 --- a/addons/crm/test/phonecalls.yml +++ b/addons/crm/test/phonecalls.yml @@ -10,43 +10,3 @@ - !python {model: crm.phonecall}: | self.action_make_meeting(cr, uid, [ref("crm.crm_phonecall_6")]) -- - I set the phone call to not held. -- - !python {model: crm.phonecall}: | - self.case_pending(cr, uid, [ref("crm.crm_phonecall_6")]) -- - I check that the phone call is in 'Not Held' state. -- - !assert {model: crm.phonecall, id: crm.crm_phonecall_6, string: Phone call held.}: - - state == "pending" -- - I cancel the phone call. -- - !python {model: crm.phonecall}: | - self.case_cancel(cr, uid, [ref("crm.crm_phonecall_6")]) -- - I check that the phone call is in 'Cancelled' state. -- - !assert {model: crm.phonecall, id: crm.crm_phonecall_6, string: Phone call is not cancelled.}: - - state == "cancel" -- - I reset the phone call. -- - !python {model: crm.phonecall}: | - self.case_reset(cr, uid, [ref("crm.crm_phonecall_6")]) -- - I check that the phone call is reset. -- - !assert {model: crm.phonecall, id: crm.crm_phonecall_6, string: Phone call is not reset.}: - - state == "open" -- - I set phone call to held (done). -- - !python {model: crm.phonecall}: | - self.case_close(cr, uid, [ref("crm.crm_phonecall_6")]) -- - I check that the phone call is in 'Held' state. -- - !assert {model: crm.phonecall, id: crm.crm_phonecall_6, string: Phone call is not held.}: - - state == "done" diff --git a/addons/crm_helpdesk/crm_helpdesk.py b/addons/crm_helpdesk/crm_helpdesk.py index deab9f19a20..03e6a243851 100644 --- a/addons/crm_helpdesk/crm_helpdesk.py +++ b/addons/crm_helpdesk/crm_helpdesk.py @@ -19,23 +19,14 @@ # ############################################################################## -from openerp.addons.base_status.base_state import base_state from openerp.addons.crm import crm from openerp.osv import fields, osv from openerp import tools from openerp.tools.translate import _ from openerp.tools import html2plaintext -AVAILABLE_STATES = [ - ('draft', 'New'), - ('cancel', 'Cancelled'), - ('open', 'In Progress'), - ('pending', 'Pending'), - ('done', 'Closed') -] - -class crm_helpdesk(base_state, osv.osv): +class crm_helpdesk(osv.osv): """ Helpdesk Cases """ _name = "crm.helpdesk" @@ -73,7 +64,12 @@ class crm_helpdesk(base_state, osv.osv): domain="['|',('section_id','=',False),('section_id','=',section_id),\ ('object_id.model', '=', 'crm.helpdesk')]"), 'duration': fields.float('Duration', states={'done': [('readonly', True)]}), - 'state': fields.selection(AVAILABLE_STATES, 'Status', size=16, readonly=True, + 'state': fields.selection( + [('draft', 'New'), + ('open', 'In Progress'), + ('pending', 'Pending'), + ('done', 'Closed'), + ('cancel', 'Cancelled')], 'Status', size=16, readonly=True, track_visibility='onchange', help='The status is set to \'Draft\', when a case is created.\ \nIf the case is in progress the status is set to \'Open\'.\ \nWhen the case is over, the status is set to \'Done\'.\ @@ -89,6 +85,38 @@ class crm_helpdesk(base_state, osv.osv): 'priority': lambda *a: crm.AVAILABLE_PRIORITIES[2][0], } + def on_change_partner_id(self, cr, uid, ids, partner_id, context=None): + values = {} + if partner_id: + partner = self.pool.get('res.partner').browse(cr, uid, partner_id, context=context) + values = { + 'email_from': partner.email, + } + return {'value': values} + + def write(self, cr, uid, ids, values, context=None): + """ Override to add case management: open/close dates """ + if values.get('state'): + if values.get('state') in ['draft', 'open'] and not values.get('date_open'): + values['date_open'] = fields.datetime.now() + elif values.get('state') == 'close' and not values.get('date_closed'): + values['date_closed'] = fields.datetime.now() + return super(crm_helpdesk, self).write(cr, uid, ids, values, context=context) + + def case_escalate(self, cr, uid, ids, context=None): + """ Escalates case to parent level """ + data = {'active': True} + for case in self.browse(cr, uid, ids, context=context): + if case.section_id and case.section_id.parent_id: + parent_id = case.section_id.parent_id + data['section_id'] = parent_id.id + if parent_id.change_responsible and parent_id.user_id: + data['user_id'] = parent_id.user_id.id + else: + raise osv.except_osv(_('Error!'), _('You can not escalate, you are already at the top level regarding your sales-team category.')) + self.write(cr, uid, [case.id], data, context=context) + return True + # ------------------------------------------------------- # Mail gateway # ------------------------------------------------------- diff --git a/addons/crm_helpdesk/crm_helpdesk_view.xml b/addons/crm_helpdesk/crm_helpdesk_view.xml index f97fe654166..fe98c2e6e9e 100644 --- a/addons/crm_helpdesk/crm_helpdesk_view.xml +++ b/addons/crm_helpdesk/crm_helpdesk_view.xml @@ -29,21 +29,10 @@ <field name="arch" type="xml"> <form string="Helpdesk Support" version="7.0"> <header> - <button name="case_open" string="Open" type="object" class="oe_highlight" - states="draft,pending"/> - <button name="case_close" string="Close Case" type="object" states="draft,pending"/> - <button name="case_close" string="Close Case" type="object" states="open" class="oe_highlight"/> - <button name="case_pending" string="Pending" type="object" - states="draft"/> - <button name="case_pending" string="Pending" type="object" - states="open"/> - <button name="case_reset" string="Reset to Draft" type="object" - states="cancel,done"/> <button name="case_escalate" string="Escalate" type="object" states="open,draft,pending"/> - <button name="case_cancel" string="Cancel Case" type="object" - states="draft,open,pending"/> - <field name="state" nolabel="1" widget="statusbar" statusbar_visible="draft,open,done" statusbar_colors='{"pending":"blue"}'/> + <field name="state" nolabel="1" widget="statusbar" clickable="True" + statusbar_colors='{"pending":"blue"}'/> </header> <sheet string="Helpdesk Support"> <group col="4" class="oe_header"> @@ -58,8 +47,7 @@ <group> <group string="Communication"> <field name="partner_id" - on_change="onchange_partner_id(partner_id, email_from)" - /> + on_change="on_change_partner_id(partner_id)"/> <field name="email_from"/> </group> <group string="Categorization"> diff --git a/addons/edi/i18n/en_GB.po b/addons/edi/i18n/en_GB.po new file mode 100644 index 00000000000..949e1917847 --- /dev/null +++ b/addons/edi/i18n/en_GB.po @@ -0,0 +1,90 @@ +# English (United Kingdom) translation for openobject-addons +# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013 +# This file is distributed under the same license as the openobject-addons package. +# FIRST AUTHOR <EMAIL@ADDRESS>, 2013. +# +msgid "" +msgstr "" +"Project-Id-Version: openobject-addons\n" +"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" +"POT-Creation-Date: 2012-12-21 17:05+0000\n" +"PO-Revision-Date: 2013-08-23 16:43+0000\n" +"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" +"Language-Team: English (United Kingdom) <en_GB@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: 2013-08-24 05:03+0000\n" +"X-Generator: Launchpad (build 16738)\n" + +#. module: edi +#. openerp-web +#: code:addons/edi/static/src/js/edi.js:67 +#, python-format +msgid "Reason:" +msgstr "Reason:" + +#. module: edi +#. openerp-web +#: code:addons/edi/static/src/js/edi.js:60 +#, python-format +msgid "The document has been successfully imported!" +msgstr "The document has been successfully imported!" + +#. module: edi +#. openerp-web +#: code:addons/edi/static/src/js/edi.js:65 +#, python-format +msgid "Sorry, the document could not be imported." +msgstr "Sorry, the document could not be imported." + +#. module: edi +#: model:ir.model,name:edi.model_res_company +msgid "Companies" +msgstr "Companies" + +#. module: edi +#: model:ir.model,name:edi.model_res_currency +msgid "Currency" +msgstr "Currency" + +#. module: edi +#. openerp-web +#: code:addons/edi/static/src/js/edi.js:71 +#, python-format +msgid "Document Import Notification" +msgstr "Document Import Notification" + +#. module: edi +#: code:addons/edi/models/edi.py:130 +#, python-format +msgid "Missing application." +msgstr "Missing application." + +#. module: edi +#: code:addons/edi/models/edi.py:131 +#, python-format +msgid "" +"The document you are trying to import requires the OpenERP `%s` application. " +"You can install it by connecting as the administrator and opening the " +"configuration assistant." +msgstr "" +"The document you are trying to import requires the OpenERP `%s` application. " +"You can install it by connecting as the administrator and opening the " +"configuration assistant." + +#. module: edi +#: code:addons/edi/models/edi.py:47 +#, python-format +msgid "'%s' is an invalid external ID" +msgstr "'%s' is an invalid external ID" + +#. module: edi +#: model:ir.model,name:edi.model_res_partner +msgid "Partner" +msgstr "Partner" + +#. module: edi +#: model:ir.model,name:edi.model_edi_edi +msgid "EDI Subsystem" +msgstr "EDI Subsystem" diff --git a/addons/fleet/fleet.py b/addons/fleet/fleet.py index dc2aabb54fc..483f989fcde 100644 --- a/addons/fleet/fleet.py +++ b/addons/fleet/fleet.py @@ -351,7 +351,7 @@ class fleet_vehicle(osv.Model): 'fuel_type': fields.selection([('gasoline', 'Gasoline'), ('diesel', 'Diesel'), ('electric', 'Electric'), ('hybrid', 'Hybrid')], 'Fuel Type', help='Fuel Used by the vehicle'), 'horsepower': fields.integer('Horsepower'), 'horsepower_tax': fields.float('Horsepower Taxation'), - 'power': fields.integer('Power (kW)', help='Power in kW of the vehicle'), + 'power': fields.integer('Power', help='Power in kW of the vehicle'), 'co2': fields.float('CO2 Emissions', help='CO2 emissions of the vehicle'), 'image': fields.related('model_id', 'image', type="binary", string="Logo"), 'image_medium': fields.related('model_id', 'image_medium', type="binary", string="Logo"), @@ -392,9 +392,12 @@ class fleet_vehicle(osv.Model): } def create(self, cr, uid, data, context=None): + if not context: + context = {} + context.update({'mail_create_nolog': True}) vehicle_id = super(fleet_vehicle, self).create(cr, uid, data, context=context) vehicle = self.browse(cr, uid, vehicle_id, context=context) - self.message_post(cr, uid, [vehicle_id], body=_('Vehicle %s has been added to the fleet!') % (vehicle.license_plate), context=context) + self.message_post(cr, uid, [vehicle_id], body=_('%s %s has been added to the fleet!') % (vehicle.model_id.name,vehicle.license_plate), context=context) return vehicle_id def write(self, cr, uid, ids, vals, context=None): diff --git a/addons/fleet/fleet_view.xml b/addons/fleet/fleet_view.xml index a8f6a321daf..05030cb3488 100644 --- a/addons/fleet/fleet_view.xml +++ b/addons/fleet/fleet_view.xml @@ -13,7 +13,7 @@ <h1> <field name="modelname" /> </h1> - <label for="brand" class="oe_edit_only"/> + <label for="brand_id" class="oe_edit_only"/> <h2> <field name="brand_id" on_change="on_change_brand(brand_id)"/> </h2> @@ -242,11 +242,17 @@ <group string="Engine Options"> <field name="transmission" /> <field name="fuel_type" /> - <field name="co2" /> + <label for="co2"/> + <div> + <field name="co2" class="oe_inline"/> g/km + </div> <field name="horsepower" /> <field name="horsepower_tax" /> - <field name="power" /> - </group> + <label for="power"/> + <div> + <field name="power" class="oe_inline"/> kW + </div> + </group> </group> </sheet> <div class="oe_chatter"> @@ -287,6 +293,10 @@ <field name="location"/> <field name="state_id" /> <filter name="alert_true" domain="['|',('contract_renewal_due_soon','=',True),('contract_renewal_overdue','=',True)]" string="Has Alert(s)"/> + <group expand="1" string="Group By..."> + <filter name="groupby_status" context="{'group_by' : 'state_id'}" string="Status"/> + <filter name="groupby_model" context="{'group_by' : 'model_id'}" string="Model"/> + </group> </search> </field> </record> @@ -400,7 +410,7 @@ <group string="Contract details"> <field name="vehicle_id" on_change="on_change_vehicle(vehicle_id)"/> <field name="cost_subtype_id" required="1" domain="['|',('category','=','contract'),('category','=','both')]"/> - <field name="amount" string="Activation Cost"/> + <field name="amount" string="Activation Cost" help="Cost that is paid only once at the creation of the contract"/> <label for="cost_generated"/> <div> <field name="cost_generated" class="oe_inline" attrs="{'invisible': [('cost_frequency','=','no')]}" /> @@ -440,7 +450,7 @@ </group> <div class="oe_right"><group><field name="sum_cost" string="Indicative Costs Total"/></group></div> </page> - <page string="Generated Costs"> + <page string="Generated Recurring Costs"> <group> <field name="generated_cost_ids" context="{'vehicle_id': vehicle_id}" nolabel="1" sum="amount"> <tree version="7.0" editable="bottom" > @@ -704,7 +714,7 @@ <group string="Services Details"> <field name="vehicle_id" on_change="on_change_vehicle(vehicle_id)"/> <field name="cost_subtype_id" string="Service Type" domain="['|',('category','=','service'),('category','=','both')]" required="1"/> - <field name="amount" string="Price"/> + <field name="amount"/> </group> <group string="Odometer Details"> <label for="odometer"/> @@ -726,7 +736,7 @@ <field name="cost_ids" nolabel="1"> <tree string="Included Services" version="7.0" editable="bottom"> <field name="cost_subtype_id" string="Service" domain="[('category','=','service')]"/> - <field name="amount" sum="Price" string="Cost"/> + <field name="amount" sum="Price" string="Indicative Cost"/> </tree> </field> </group> @@ -767,6 +777,17 @@ </field> </record> + <record model='ir.ui.view' id='fleet_vehicle_log_services_search'> + <field name="name">fleet.vehicle.log.services.search</field> + <field name="model">fleet.vehicle.log.services</field> + <field name="arch" type="xml"> + <search string="Services Logs" > + <field name="vehicle_id"/> + <field name="cost_subtype_id"/> + </search> + </field> + </record> + <record model='ir.actions.act_window' id='fleet_vehicle_log_services_act'> <field name="name">Vehicles Services Logs</field> <field name="res_model">fleet.vehicle.log.services</field> @@ -789,7 +810,7 @@ <field name="name">fleet.service.type.tree</field> <field name="model">fleet.service.type</field> <field name="arch" type="xml"> - <tree string="Service types" editable="bottom"> + <tree string="Service types" editable="top"> <field name="name" /> <field name="category"/> </tree> diff --git a/addons/hr/hr.py b/addons/hr/hr.py index 3a99d5c8b60..d19f1f7de8b 100644 --- a/addons/hr/hr.py +++ b/addons/hr/hr.py @@ -192,7 +192,7 @@ class hr_employee(osv.osv): 'child_ids': fields.one2many('hr.employee', 'parent_id', 'Subordinates'), 'resource_id': fields.many2one('resource.resource', 'Resource', ondelete='cascade', required=True), 'coach_id': fields.many2one('hr.employee', 'Coach'), - 'job_id': fields.many2one('hr.job', 'Job'), + 'job_id': fields.many2one('hr.job', 'Job Title'), # image: all image fields are base64 encoded and PIL-supported 'image': fields.binary("Photo", help="This field holds the image used as photo for the employee, limited to 1024x1024px."), diff --git a/addons/hr/hr_demo.xml b/addons/hr/hr_demo.xml index 641d5b272cf..41b09c3aea3 100644 --- a/addons/hr/hr_demo.xml +++ b/addons/hr/hr_demo.xml @@ -91,14 +91,14 @@ <!--Employees--> <record id="employee_fp" model="hr.employee"> - <field name="name">Peter Parker</field> + <field name="name">Pieter Parker</field> <field name="user_id" ref="base.user_root"/> <field name="department_id" ref="dep_management"/> <field name="job_id" ref="hr.job_ceo"/> <field name="category_ids" eval="[(6, 0, [ref('employee_category_2')])]"/> <field name="work_location">Grand-Rosière</field> <field name="work_phone">+3281813700</field> - <field name="work_email">peter@openerp.com</field> + <field name="work_email">pieter@openerp.com</field> <field name="image">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</field> </record> @@ -139,7 +139,7 @@ </record> <record id="employee_stw" model="hr.employee"> - <field name="name">Liam Neeson</field> + <field name="name">Liam Nelson</field> <field name="department_id" ref="dep_rd"/> <field name="parent_id" ref="employee_al"/> <field name="job_id" ref="hr.job_developer"/> @@ -212,7 +212,7 @@ </record> <record id="employee_ngh" model="hr.employee"> - <field name="name">Famke Janssen</field> + <field name="name">Famke Jenssens</field> <field name="department_id" ref="dep_sales"/> <field name="parent_id" ref="employee_fp"/> <field name="job_id" ref="hr.job_marketing"/> @@ -255,7 +255,7 @@ </record> <record id="employee_jep" model="hr.employee"> - <field name="name">Jean Pierre</field> + <field name="name">Jean-Pierre Carnaud</field> <field name="department_id" ref="dep_ps"/> <field name="job_id" ref="hr.job_consultant"/> <field name="work_location">Grand-Rosière</field> diff --git a/addons/hr/hr_view.xml b/addons/hr/hr_view.xml index eb1bbe451b4..05a21c2908a 100644 --- a/addons/hr/hr_view.xml +++ b/addons/hr/hr_view.xml @@ -380,10 +380,9 @@ <tree string="Job"> <field name="name"/> <field name="department_id"/> - <field name="company_id" groups="base.group_multi_company"/> - <field name="expected_employees"/> <field name="no_of_employee"/> <field name="no_of_recruitment"/> + <field name="expected_employees"/> <field name="state"/> </tree> </field> diff --git a/addons/hr_contract/hr_contract.py b/addons/hr_contract/hr_contract.py index 0cd31d66bcf..d74253b5d53 100644 --- a/addons/hr_contract/hr_contract.py +++ b/addons/hr_contract/hr_contract.py @@ -88,6 +88,15 @@ class hr_contract(osv.osv): 'type_id': _get_type } + def onchange_employee_id(self, cr, uid, ids, employee_id, context=None): + if not employee_id: + return {'value': {'job_id': False}} + emp_obj = self.pool.get('hr.employee').browse(cr, uid, employee_id, context=context) + job_id = False + if emp_obj.job_id: + job_id = emp_obj.job_id.id + return {'value': {'job_id': job_id}} + def _check_dates(self, cr, uid, ids, context=None): for contract in self.read(cr, uid, ids, ['date_start', 'date_end'], context=context): if contract['date_start'] and contract['date_end'] and contract['date_start'] > contract['date_end']: diff --git a/addons/hr_contract/hr_contract_view.xml b/addons/hr_contract/hr_contract_view.xml index 0659d661420..57a04dc9517 100644 --- a/addons/hr_contract/hr_contract_view.xml +++ b/addons/hr_contract/hr_contract_view.xml @@ -73,14 +73,15 @@ <form string="Contract" version="7.0"> <sheet> <div class="oe_title"> + <label for="name" class="oe_edit_only"/> <h1> <field name="name" placeholder="Contract Reference"/> </h1> </div> <group> <group> - <field name="employee_id"/> - <field name="job_id"/> + <field name="employee_id" on_change="onchange_employee_id(employee_id)"/> + <field name="job_id" context="{'form_view_ref': 'hr.view_hr_job_employee_form'}"/> </group> <group> <field name="type_id"/> diff --git a/addons/hr_payroll/hr_payroll_view.xml b/addons/hr_payroll/hr_payroll_view.xml index a856bcdfdd4..4410784c63c 100644 --- a/addons/hr_payroll/hr_payroll_view.xml +++ b/addons/hr_payroll/hr_payroll_view.xml @@ -70,8 +70,8 @@ <group col="4"> <field name="name"/> <field name="code"/> - <field name="company_id" groups="base.group_multi_company" widget="selection"/> <field name="parent_id"/> + <field name="company_id" groups="base.group_multi_company" widget="selection"/> </group> <notebook colspan="4"> <page string="Salary Rules"> @@ -227,13 +227,12 @@ <div class="oe_title"> <label for="employee_id" class="oe_edit_only"/> <h1><field name="employee_id" on_change="onchange_employee_id(date_from, date_to, employee_id, contract_id)"/></h1> - <label for="date_from" class="oe_edit_only" string="Period"/> - <h2> - From <field name="date_from" on_change="onchange_employee_id(date_from, date_to, employee_id, contract_id)"/> - to <field name="date_to"/> - </h2> </div> <group col="4"> + <label for="date_from" string="Period"/> + <div> + <field name="date_from" on_change="onchange_employee_id(date_from, date_to, employee_id, contract_id)" class="oe_inline"/> - <field name="date_to" class="oe_inline"/> + </div> <field name="contract_id" domain="[('employee_id','=',employee_id),('date_start','<=',date_to),'|',('date_end','>=',date_from),('date_end','=',False)]" on_change="onchange_contract_id(date_from, date_to, employee_id, contract_id)" context="{'default_employee_id': employee_id}"/> <field name="number"/> <field name="struct_id" attrs="{'required':[('contract_id','<>',False)]}"/> @@ -592,8 +591,8 @@ <field name="amount_percentage_base" attrs="{'invisible':[('amount_select','<>','percentage')], 'required': [('amount_select','=','percentage')]}"/><newline/> <field name="quantity" attrs="{'invisible':[('amount_select','=','code')], 'required':[('amount_select','!=','code')]}"/><newline/> <field name="amount_fix" attrs="{'invisible':[('amount_select','<>','fix')], 'required':[('amount_select','=','fix')]}"/><newline/> - <field name="amount_percentage" attrs="{'invisible':[('amount_select','<>','percentage')], 'required':[('amount_select','=','percentage')]}"/> <field colspan="4" name="amount_python_compute" attrs="{'invisible':[('amount_select','<>','code')], 'required':[('amount_select','=','code')]}"/> + <field name="amount_percentage" attrs="{'invisible':[('amount_select','<>','percentage')], 'required':[('amount_select','=','percentage')]}"/> <separator colspan="4" string="Company Contribution"/> <field name="register_id"/> </group> @@ -699,13 +698,11 @@ <h1> <field name="name"/> </h1> - <h2> - Period from - <field name="date_start"/> - to - <field name="date_end"/> - </h2> <group col="4"> + <label for="date_start" string="Period"/> + <div> + <field name="date_start" class="oe_inline"/> - <field name="date_end" class="oe_inline"/> + </div> <field name="credit_note"/> </group> <separator string="Payslips"/> diff --git a/addons/hr_payroll/wizard/hr_payroll_contribution_register_report.xml b/addons/hr_payroll/wizard/hr_payroll_contribution_register_report.xml index 8cfaa85518a..7600733c67a 100644 --- a/addons/hr_payroll/wizard/hr_payroll_contribution_register_report.xml +++ b/addons/hr_payroll/wizard/hr_payroll_contribution_register_report.xml @@ -7,14 +7,16 @@ <field name="model">payslip.lines.contribution.register</field> <field name="arch" type="xml"> <form string="Contribution Register's Payslip Lines" version="7.0"> - <header> - <button name="print_report" string="Print" type="object" icon="gtk-print" class="oe_highlight"/> - </header> <group col="4" colspan="6"> <field name="date_from"/> <newline/> <field name="date_to"/> </group> + <footer> + <button name="print_report" string="Print" type="object" class="oe_highlight"/> + or + <button string="Cancel" class="oe_link" special="cancel"/> + </footer> </form> </field> </record> diff --git a/addons/hr_recruitment/__openerp__.py b/addons/hr_recruitment/__openerp__.py index 23eaef1b886..d76f682d9b6 100644 --- a/addons/hr_recruitment/__openerp__.py +++ b/addons/hr_recruitment/__openerp__.py @@ -39,7 +39,6 @@ You can define the different phases of interviews and easily rate the applicant 'website': 'http://www.openerp.com', 'images': ['images/hr_recruitment_analysis.jpeg','images/hr_recruitment_applicants.jpeg'], 'depends': [ - 'base_status', 'decimal_precision', 'hr', 'survey', diff --git a/addons/hr_recruitment/hr_recruitment.py b/addons/hr_recruitment/hr_recruitment.py index ce6f60669c4..b0db9232bd9 100644 --- a/addons/hr_recruitment/hr_recruitment.py +++ b/addons/hr_recruitment/hr_recruitment.py @@ -331,10 +331,8 @@ class hr_applicant(osv.Model): """ if custom_values is None: custom_values = {} val = msg.get('from').split('<')[0] - desc = html2plaintext(msg.get('body')) if msg.get('body') else '' defaults = { 'name': msg.get('subject') or _("No Subject"), - 'description': desc, 'partner_name':val, 'email_from': msg.get('from'), 'email_cc': msg.get('cc'), diff --git a/addons/hr_recruitment/hr_recruitment_view.xml b/addons/hr_recruitment/hr_recruitment_view.xml index d743a280691..e95976a6a31 100644 --- a/addons/hr_recruitment/hr_recruitment_view.xml +++ b/addons/hr_recruitment/hr_recruitment_view.xml @@ -12,7 +12,7 @@ name="Meetings" res_model="crm.meeting" src_model="hr.applicant" - view_mode="tree,form,calendar,graph" + view_mode="calendar,tree,form,graph" view_type="form"/> <!-- Stage --> diff --git a/addons/hr_recruitment/wizard/hr_recruitment_create_partner_job.py b/addons/hr_recruitment/wizard/hr_recruitment_create_partner_job.py index b0d4aebe09a..d2e778c38a4 100644 --- a/addons/hr_recruitment/wizard/hr_recruitment_create_partner_job.py +++ b/addons/hr_recruitment/wizard/hr_recruitment_create_partner_job.py @@ -66,8 +66,6 @@ class hr_recruitment_partner_create(osv.osv_memory): case_obj.write(cr, uid, [case.id], { 'partner_id': partner_id, }, context=context) - if data['close']: - case_obj.case_close(cr, uid, context['active_ids']) return { 'domain': "[]", diff --git a/addons/hr_timesheet/hr_timesheet.py b/addons/hr_timesheet/hr_timesheet.py index f49ad05f7a9..5baf8ec262b 100644 --- a/addons/hr_timesheet/hr_timesheet.py +++ b/addons/hr_timesheet/hr_timesheet.py @@ -29,7 +29,7 @@ class hr_employee(osv.osv): _name = "hr.employee" _inherit = "hr.employee" _columns = { - 'product_id': fields.many2one('product.product', 'Product', help="Specifies employee's designation as a product with type 'service'."), + 'product_id': fields.many2one('product.product', 'Product', help="If you want to reinvoice working time of employees, link this employee to a service to determinate the cost price of the job."), 'journal_id': fields.many2one('account.analytic.journal', 'Analytic Journal'), 'uom_id': fields.related('product_id', 'uom_id', type='many2one', relation='product.uom', string='Unit of Measure', store=True, readonly=True) } diff --git a/addons/l10n_bo/i18n/en_GB.po b/addons/l10n_bo/i18n/en_GB.po new file mode 100644 index 00000000000..615e9846952 --- /dev/null +++ b/addons/l10n_bo/i18n/en_GB.po @@ -0,0 +1,53 @@ +# English (United Kingdom) translation for openobject-addons +# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013 +# This file is distributed under the same license as the openobject-addons package. +# FIRST AUTHOR <EMAIL@ADDRESS>, 2013. +# +msgid "" +msgstr "" +"Project-Id-Version: openobject-addons\n" +"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" +"POT-Creation-Date: 2011-01-11 11:15+0000\n" +"PO-Revision-Date: 2013-08-23 16:45+0000\n" +"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" +"Language-Team: English (United Kingdom) <en_GB@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: 2013-08-24 05:03+0000\n" +"X-Generator: Launchpad (build 16738)\n" + +#. module: l10n_ar +#: model:ir.module.module,description:l10n_ar.module_meta_information +msgid "" +"\n" +" Argentinian Accounting : chart of Account\n" +" " +msgstr "" +"\n" +" Argentinian Accounting : chart of Account\n" +" " + +#. module: l10n_ar +#: model:ir.module.module,shortdesc:l10n_ar.module_meta_information +msgid "Argentinian Chart of Account" +msgstr "Argentinian Chart of Account" + +#. module: l10n_ar +#: model:ir.actions.todo,note:l10n_ar.config_call_account_template_in_minimal +msgid "" +"Generate Chart of Accounts from a Chart Template. You will be asked to pass " +"the name of the company, the chart template to follow, the no. of digits to " +"generate the code for your accounts and Bank account, currency to create " +"Journals. Thus,the pure copy of chart Template is generated.\n" +"\tThis is the same wizard that runs from Financial " +"Management/Configuration/Financial Accounting/Financial Accounts/Generate " +"Chart of Accounts from a Chart Template." +msgstr "" +"Generate Chart of Accounts from a Chart Template. You will be asked to pass " +"the name of the company, the chart template to follow, the no. of digits to " +"generate the code for your accounts and Bank account, currency to create " +"Journals. Thus,the pure copy of chart Template is generated.\n" +"\tThis is the same wizard that runs from Financial " +"Management/Configuration/Financial Accounting/Financial Accounts/Generate " +"Chart of Accounts from a Chart Template." diff --git a/addons/l10n_in_hr_payroll/l10n_in_hr_payroll.py b/addons/l10n_in_hr_payroll/l10n_in_hr_payroll.py index fc715ece5b8..f0751684dba 100644 --- a/addons/l10n_in_hr_payroll/l10n_in_hr_payroll.py +++ b/addons/l10n_in_hr_payroll/l10n_in_hr_payroll.py @@ -44,7 +44,7 @@ class hr_contract(osv.osv): 'driver_salay': fields.boolean('Driver Salary', help="Check this box if you provide allowance for driver"), 'medical_insurance': fields.float('Medical Insurance', digits_compute=dp.get_precision('Payroll'), help="Deduction towards company provided medical insurance"), 'voluntary_provident_fund': fields.float('Voluntary Provident Fund (%)', digits_compute=dp.get_precision('Payroll'), help="VPF is a safe option wherein you can contribute more than the PF ceiling of 12% that has been mandated by the government and VPF computed as percentage(%)"), - 'house_rent_allowance_metro_nonmetro': fields.float('House Rent Allowance (%)', digits_compute=dp.get_precision('Payroll'), help="HRA is an allowance given by the employer to the employee for taking care of his rental or accommodation expenses for metro city it is 50 % and for non metro 40%.HRA computed as percentage(%)"), + 'house_rent_allowance_metro_nonmetro': fields.float('House Rent Allowance (%)', digits_compute=dp.get_precision('Payroll'), help="HRA is an allowance given by the employer to the employee for taking care of his rental or accommodation expenses for metro city it is 50% and for non metro 40%. \nHRA computed as percentage(%)"), 'supplementary_allowance': fields.float('Supplementary Allowance', digits_compute=dp.get_precision('Payroll')), } diff --git a/addons/l10n_in_hr_payroll/l10n_in_hr_payroll_view.xml b/addons/l10n_in_hr_payroll/l10n_in_hr_payroll_view.xml index 51c63c730ff..d65f02a332b 100644 --- a/addons/l10n_in_hr_payroll/l10n_in_hr_payroll_view.xml +++ b/addons/l10n_in_hr_payroll/l10n_in_hr_payroll_view.xml @@ -92,7 +92,7 @@ <label for="Name" class="oe_edit_only" string="Name"/> <h2><field name="name"/></h2> <label for="date" class="oe_edit_only"/> - <h2><field name="date"/></h2> + <div><field name="date"/></div> <group colspan="3" col="6"> <field name="bank_id"/> <field name="number"/> diff --git a/addons/lunch/lunch.py b/addons/lunch/lunch.py index efad6fd6944..fbd193709ac 100644 --- a/addons/lunch/lunch.py +++ b/addons/lunch/lunch.py @@ -35,6 +35,16 @@ class lunch_order(osv.Model): _description = 'Lunch Order' _order = 'date desc' + def name_get(self, cr, uid, ids, context=None): + if not ids: + return [] + res = [] + for elmt in self.browse(cr, uid, ids, context=context): + name = _("Lunch Order") + name = name + ' ' + str(elmt.id) + res.append((elmt.id, name)) + return res + def _price_get(self, cr, uid, ids, name, arg, context=None): """ get and sum the order lines' price diff --git a/addons/lunch/lunch_view.xml b/addons/lunch/lunch_view.xml index 2f3af2f461d..a2f22d4dd0a 100644 --- a/addons/lunch/lunch_view.xml +++ b/addons/lunch/lunch_view.xml @@ -7,7 +7,7 @@ <menuitem name="Administrate Orders" parent="menu_lunch" id="menu_lunch_admin" sequence="51" groups="group_lunch_manager"/> <menuitem name="Administrate Cash Moves" parent="menu_lunch" id="menu_lunch_cash" sequence="52" groups="group_lunch_manager"/> <menuitem name="Configuration" parent="menu_lunch" id="menu_lunch_config" sequence="53" groups="group_lunch_manager"/> - + <!--View Search to group/filter by Supplier and time--> <record model="ir.ui.view" id="lunch_order_line_search_view"> <field name="name">Search</field> @@ -85,6 +85,40 @@ </field> </record> + <!--view for cashmove--> + <record model="ir.ui.view" id="casmove_tree_view"> + <field name="name">cashmove tree</field> + <field name="model">lunch.cashmove</field> + <field name="arch" type="xml"> + <tree string="cashmove tree"> + <field name="date"/> + <field name="user_id"/> + <field name="description"/> + <field name="amount" sum="Total"/> + </tree> + </field> + </record> + + <record model="ir.ui.view" id="casmove_form_view"> + <field name="name">cashmove form</field> + <field name="model">lunch.cashmove</field> + <field name="arch" type="xml"> + <form string="cashmove form" version="7.0"> + <sheet> + <group> + <field name="user_id" + context="{'default_groups_ref': ['base.group_user', 'lunch.group_lunch_user']}"/> + <field name="date"/> + <field name="amount"/> + </group> + <label for='description'/> + <field name="description"/> + </sheet> + </form> + </field> + </record> + + <!--Action for Your Orders--> <record model="ir.actions.act_window" id="action_lunch_order_form"> <field name="name">New Order</field> @@ -111,6 +145,19 @@ </field> </record> <menuitem name="Previous Orders" parent="menu_lunch_title" id="menu_lunch_order_tree" action="action_lunch_order_tree" sequence="2"/> + + <record model="ir.ui.view" id="casmove_tree"> + <field name="name">cashmove tree</field> + <field name="model">lunch.cashmove</field> + <field name="arch" type="xml"> + <tree string="cashmove tree" version="7.0" create='false'> + <field name="date"/> + <field name="user_id"/> + <field name="description"/> + <field name="amount" sum="Total"/> + </tree> + </field> + </record> <!--Action for Lunch cashmoves--> <record model="ir.actions.act_window" id="action_lunch_cashmove_form"> @@ -119,6 +166,7 @@ <field name="view_mode">tree</field> <field name="search_view_id" ref="view_lunch_employee_payment_filter"/> <field name="context">{"search_default_is_mine_group":1}</field> + <field name="view_id" ref="casmove_tree"/> <field name="help" type="html"> <p> Here you can see your cash moves.<br/>A cash moves can be either an expense or a payment. @@ -175,6 +223,7 @@ <field name="view_mode">tree,form</field> <field name="search_view_id" ref="view_lunch_cashmove_filter"/> <field name="context">{"search_default_group_by_user":1}</field> + <field name="view_id" ref="casmove_tree_view"/> <field name="help" type="html"> <p class="oe_view_nocontent_create"> Click to create a new payment. @@ -196,6 +245,7 @@ <field name="view_mode">tree,form</field> <field name="search_view_id" ref="view_lunch_employee_payment_filter"/> <field name="context">{"search_default_is_payment":1}</field> + <field name="view_id" ref="casmove_tree_view"/> <field name="help" type="html"> <p class="oe_view_nocontent_create"> Click to create a payment. @@ -389,39 +439,6 @@ </field> </record> - <!--view for cashmove--> - <record model="ir.ui.view" id="casmove_tree_view"> - <field name="name">cashmove tree</field> - <field name="model">lunch.cashmove</field> - <field name="arch" type="xml"> - <tree string="cashmove tree"> - <field name="date"/> - <field name="user_id"/> - <field name="description"/> - <field name="amount" sum="Total"/> - </tree> - </field> - </record> - - <record model="ir.ui.view" id="casmove_form_view"> - <field name="name">cashmove form</field> - <field name="model">lunch.cashmove</field> - <field name="arch" type="xml"> - <form string="cashmove form" version="7.0"> - <sheet> - <group> - <field name="user_id" - context="{'default_groups_ref': ['base.group_user', 'lunch.group_lunch_user']}"/> - <field name="date"/> - <field name="amount"/> - </group> - <label for='description'/> - <field name="description"/> - </sheet> - </form> - </field> - </record> - <!--view for alerts--> <record model="ir.ui.view" id="alert_tree_view"> <field name="name">alert tree</field> diff --git a/addons/mail/data/mail_data.xml b/addons/mail/data/mail_data.xml index 4e935e4aa88..e1ca797670b 100644 --- a/addons/mail/data/mail_data.xml +++ b/addons/mail/data/mail_data.xml @@ -40,6 +40,11 @@ <field name="args">()</field> </record> + <!-- Admin should not receivve emails at creation --> + <record id="base.partner_root" model="res.partner"> + <field name="notification_email_send">none</field> + </record> + <!-- Catchall Email Alias --> <record id="icp_mail_catchall_alias" model="ir.config_parameter"> <field name="key">mail.catchall.alias</field> diff --git a/addons/mail/mail_message.py b/addons/mail/mail_message.py index f90baa5a320..bcb66433964 100644 --- a/addons/mail/mail_message.py +++ b/addons/mail/mail_message.py @@ -679,14 +679,14 @@ class mail_message(osv.Model): - no model, no res_id, I create a private message OR - pid in message_follower_ids if model, res_id OR - mail_notification (parent_id.id, pid) exists, uid has been notified of the parent, OR - - uid have write access on the related document if model, res_id, OR + - uid have write or create access on the related document if model, res_id, OR - otherwise: raise - write: if - author_id == pid, uid is the author, OR - - uid has write access on the related document if model, res_id + - uid has write or create access on the related document if model, res_id - otherwise: raise - unlink: if - - uid has write access on the related document if model, res_id + - uid has write or create access on the related document if model, res_id - otherwise: raise """ def _generate_model_record_ids(msg_val, msg_ids=[]): diff --git a/addons/mail/mail_thread.py b/addons/mail/mail_thread.py index 94e9126f020..ebb7a40c719 100644 --- a/addons/mail/mail_thread.py +++ b/addons/mail/mail_thread.py @@ -1038,8 +1038,10 @@ class mail_thread(osv.AbstractModel): # text/plain -> <pre/> body = tools.append_content_to_html(u'', body, preserve=True) else: - alternative = (message.get_content_type() == 'multipart/alternative') + alternative = False for part in message.walk(): + if part.get_content_type() == 'multipart/alternative': + alternative = True if part.get_content_maintype() == 'multipart': continue # skip container filename = part.get_filename() # None if normal part diff --git a/addons/mail/tests/test_mail_features.py b/addons/mail/tests/test_mail_features.py index ae5555c01ca..e9563e19246 100644 --- a/addons/mail/tests/test_mail_features.py +++ b/addons/mail/tests/test_mail_features.py @@ -294,7 +294,7 @@ class test_mail(TestMailBase): # Data creation # -------------------------------------------------- # 0 - Update existing users-partners - self.res_users.write(cr, uid, [uid], {'email': 'a@a'}) + self.res_users.write(cr, uid, [uid], {'email': 'a@a', 'notification_email_send': 'comment'}) self.res_users.write(cr, uid, [self.user_raoul_id], {'email': 'r@r'}) # 1 - Bert Tartopoils, with email, should receive emails for comments and emails p_b_id = self.res_partner.create(cr, uid, {'name': 'Bert Tartopoils', 'email': 'b@b'}) diff --git a/addons/mail/tests/test_mail_gateway.py b/addons/mail/tests/test_mail_gateway.py index fade38869f1..3fd8ebd3101 100644 --- a/addons/mail/tests/test_mail_gateway.py +++ b/addons/mail/tests/test_mail_gateway.py @@ -81,6 +81,67 @@ Please call me as soon as possible this afternoon! Sylvie """ +MAIL_MULTIPART_MIXED = """Return-Path: <ignasse.carambar@gmail.com> +X-Original-To: raoul@grosbedon.fr +Delivered-To: raoul@grosbedon.fr +Received: by mail1.grosbedon.com (Postfix, from userid 10002) + id E8166BFACA; Fri, 23 Aug 2013 13:18:01 +0200 (CEST) +X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on mail1.grosbedon.com +X-Spam-Level: +X-Spam-Status: No, score=-2.6 required=5.0 tests=BAYES_00,FREEMAIL_FROM, + HTML_MESSAGE,RCVD_IN_DNSWL_LOW autolearn=unavailable version=3.3.1 +Received: from mail-ie0-f173.google.com (mail-ie0-f173.google.com [209.85.223.173]) + by mail1.grosbedon.com (Postfix) with ESMTPS id 9BBD7BFAAA + for <raoul@openerp.fr>; Fri, 23 Aug 2013 13:17:55 +0200 (CEST) +Received: by mail-ie0-f173.google.com with SMTP id qd12so575130ieb.4 + for <raoul@grosbedon.fr>; Fri, 23 Aug 2013 04:17:54 -0700 (PDT) +DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; + d=gmail.com; s=20120113; + h=mime-version:date:message-id:subject:from:to:content-type; + bh=dMNHV52EC7GAa7+9a9tqwT9joy9z+1950J/3A6/M/hU=; + b=DGuv0VjegdSrEe36ADC8XZ9Inrb3Iu+3/52Bm+caltddXFH9yewTr0JkCRQaJgMwG9 + qXTQgP8qu/VFEbCh6scu5ZgU1hknzlNCYr3LT+Ih7dAZVUEHUJdwjzUU1LFV95G2RaCd + /Lwff6CibuUvrA+0CBO7IRKW0Sn5j0mukYu8dbaKsm6ou6HqS8Nuj85fcXJfHSHp6Y9u + dmE8jBh3fHCHF/nAvU+8aBNSIzl1FGfiBYb2jCoapIuVFitKR4q5cuoodpkH9XqqtOdH + DG+YjEyi8L7uvdOfN16eMr7hfUkQei1yQgvGu9/5kXoHg9+Gx6VsZIycn4zoaXTV3Nhn + nu4g== +MIME-Version: 1.0 +X-Received: by 10.50.124.65 with SMTP id mg1mr1144467igb.43.1377256674216; + Fri, 23 Aug 2013 04:17:54 -0700 (PDT) +Received: by 10.43.99.71 with HTTP; Fri, 23 Aug 2013 04:17:54 -0700 (PDT) +Date: Fri, 23 Aug 2013 13:17:54 +0200 +Message-ID: <CAP76m_V4BY2F7DWHzwfjteyhW8L2LJswVshtmtVym+LUJ=rASQ@mail.gmail.com> +Subject: Test mail multipart/mixed +From: =?ISO-8859-1?Q?Raoul Grosbedon=E9e?= <ignasse.carambar@gmail.com> +To: Followers of ASUSTeK-Joseph-Walters <raoul@grosbedon.fr> +Content-Type: multipart/mixed; boundary=089e01536c4ed4d17204e49b8e96 + +--089e01536c4ed4d17204e49b8e96 +Content-Type: multipart/alternative; boundary=089e01536c4ed4d16d04e49b8e94 + +--089e01536c4ed4d16d04e49b8e94 +Content-Type: text/plain; charset=ISO-8859-1 + +Should create a multipart/mixed: from gmail, *bold*, with attachment. + +-- +Marcel Boitempoils. + +--089e01536c4ed4d16d04e49b8e94 +Content-Type: text/html; charset=ISO-8859-1 + +<div dir="ltr">Should create a multipart/mixed: from gmail, <b>bold</b>, with attachment.<br clear="all"><div><br></div>-- <br>Marcel Boitempoils.</div> + +--089e01536c4ed4d16d04e49b8e94-- +--089e01536c4ed4d17204e49b8e96 +Content-Type: text/plain; charset=US-ASCII; name="test.txt" +Content-Disposition: attachment; filename="test.txt" +Content-Transfer-Encoding: base64 +X-Attachment-Id: f_hkpb27k00 + +dGVzdAo= +--089e01536c4ed4d17204e49b8e96--""" + class TestMailgateway(TestMailBase): @@ -248,6 +309,24 @@ class TestMailgateway(TestMailBase): self.assertEqual(mail.reply_to, 'someone@example.com', 'mail_mail: reply_to should equal the rpely_to given to create') + def test_09_message_parse(self): + """ Testing incoming emails parsing """ + cr, uid = self.cr, self.uid + + res = self.mail_thread.message_parse(cr, uid, MAIL_TEMPLATE_PLAINTEXT) + self.assertIn('Please call me as soon as possible this afternoon!', res.get('body', ''), + 'message_parse: missing text in text/plain body after parsing') + + res = self.mail_thread.message_parse(cr, uid, MAIL_TEMPLATE) + self.assertIn('<p>Please call me as soon as possible this afternoon!</p>', res.get('body', ''), + 'message_parse: missing html in multipart/alternative body after parsing') + + res = self.mail_thread.message_parse(cr, uid, MAIL_MULTIPART_MIXED) + self.assertNotIn('Should create a multipart/mixed: from gmail, *bold*, with attachment', res.get('body', ''), + 'message_parse: text version should not be in body after parsing multipart/mixed') + self.assertIn('<div dir="ltr">Should create a multipart/mixed: from gmail, <b>bold</b>, with attachment.<br clear="all"><div><br></div>', res.get('body', ''), + 'message_parse: html version should be in body after parsing multipart/mixed') + @mute_logger('openerp.addons.mail.mail_thread', 'openerp.osv.orm') def test_10_message_process(self): """ Testing incoming emails processing. """ diff --git a/addons/membership/membership.py b/addons/membership/membership.py index b75284637c9..98e47f853fe 100644 --- a/addons/membership/membership.py +++ b/addons/membership/membership.py @@ -328,13 +328,13 @@ class Partner(osv.osv): 'account.invoice': (_get_invoice_partner, ['state'], 10), 'membership.membership_line': (_get_partner_id, ['state'], 10), 'res.partner': (_get_partners, ['free_member', 'membership_state', 'associate_member'], 10) - }, help="""It indicates the membership state. - -Non Member: A partner who has not applied for any membership. - -Cancelled Member: A member who has cancelled his membership. - -Old Member: A member whose membership date has expired. - -Waiting Member: A member who has applied for the membership and whose invoice is going to be created. - -Invoiced Member: A member whose invoice has been created. - -Paying member: A member who has paid the membership fee."""), + }, help='It indicates the membership state.\n' + '-Non Member: A partner who has not applied for any membership.\n' + '-Cancelled Member: A member who has cancelled his membership.\n' + '-Old Member: A member whose membership date has expired.\n' + '-Waiting Member: A member who has applied for the membership and whose invoice is going to be created.\n' + '-Invoiced Member: A member whose invoice has been created.\n' + '-Paying member: A member who has paid the membership fee.'), 'membership_start': fields.function( _membership_date, multi = 'membeship_start', string = 'Membership Start Date', type = 'date', diff --git a/addons/mrp/mrp_data.xml b/addons/mrp/mrp_data.xml index a6b65b7c475..48e623c532e 100644 --- a/addons/mrp/mrp_data.xml +++ b/addons/mrp/mrp_data.xml @@ -21,7 +21,7 @@ This application supports complete integration and production scheduling for sto <record id="sequence_mrp_prod" model="ir.sequence"> <field name="name">Production order</field> <field name="code">mrp.production</field> - <field name="prefix">MO/</field> + <field name="prefix">MO</field> <field name="padding">5</field> <field name="number_next">1</field> <field name="number_increment">1</field> diff --git a/addons/mrp/mrp_view.xml b/addons/mrp/mrp_view.xml index dfdda90f0e2..65fa21f4709 100644 --- a/addons/mrp/mrp_view.xml +++ b/addons/mrp/mrp_view.xml @@ -189,7 +189,7 @@ <field name="time_stop" widget="float_time"/> </group> <group string="Costing Information"> - <field name="product_id" on_change="on_change_product_cost(product_id)"/> + <field name="product_id" on_change="on_change_product_cost(product_id)" context="{'default_supply_method':'produce'}"/> <field name="costs_hour"/> <field name="costs_hour_account_id" groups="analytic.group_analytic_accounting"/> <field name="costs_cycle"/> @@ -248,7 +248,7 @@ <field name="model">mrp.routing.workcenter</field> <field name="arch" type="xml"> <form string="Routing Work Centers" version="7.0"> - <group col="4" string="General Information"> + <group col="4"> <field colspan="4" name="name"/> <field name="sequence"/> <field name="workcenter_id"/> @@ -280,7 +280,7 @@ </group> <notebook> <page string="Work Center Operations"> - <field name="workcenter_lines"/> + <field name="workcenter_lines" string="Operation"/> </page> <page string="Notes"> <field name="note"/> @@ -422,6 +422,7 @@ <field name="arch" type="xml"> <search string="Search Bill Of Material"> <field name="name" string="Bill Of Material" filter_domain="['|',('name','ilike',self),('code','ilike',self)]"/> + <field name="bom_lines" string="Components"/> <field name="product_id"/> <field name="company_id" groups="base.group_multi_company"/> <group expand="0" string="Group By..."> @@ -511,7 +512,18 @@ </p> </field> </record> - + <record id="product_search_form_view_procurment" model="ir.ui.view"> + <field name="name">product.search.bom</field> + <field name="model">product.product</field> + <field name="inherit_id" ref="product.product_search_form_view"/> + <field name="arch" type="xml"> + <xpath expr="//filter[@string='Consumable']" position="after"> + <separator/> + <filter string="Components" name="components" icon="terp-accessories-archiver" domain="[('bom_ids','not in',[]),('bom_ids.bom_id','!=',False)]" invisible="not context.get('search_default_filter_supply_method_produce', False)"/> + </xpath> + </field> + </record> + <record id="product_supply_method_produce" model="ir.actions.act_window"> <field name="name">Products</field> <field name="res_model">product.product</field> @@ -535,16 +547,16 @@ 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"> <field name="name">Bill of Materials Structure</field> <field name="type">ir.actions.act_window</field> <field name="res_model">mrp.bom</field> - <field name="domain">[('bom_id', '=',active_ids)]</field> + <field name="domain">[('id', 'in', active_ids)]</field> <field name="view_type">tree</field> <field name="view_id" ref="mrp_bom_tree_view"/> + <field name="view_type">tree</field> </record> <record id="ir_BOM_structure" model="ir.values"> <field eval="'client_action_multi'" name="key2"/> @@ -692,7 +704,7 @@ </field> </group> <group string="Consumed Products"> - <field name="move_lines2" nolabel="1"> + <field name="move_lines2" nolabel="1" options="{'reload_on_button': true}"> <tree colors="red:scrapped==True;blue:state == 'draft';black:state in('picking_except','confirmed','ready','in_production');gray:state == 'cancel' " string="Consumed Products" editable="bottom"> <field name="product_id" readonly="1"/> <field name="product_qty" readonly="1"/> @@ -708,7 +720,7 @@ <page string="Finished Products"> <group> <group string="Products to Produce"> - <field name="move_created_ids" nolabel="1"> + <field name="move_created_ids" nolabel="1" options="{'reload_on_button': true}"> <tree string="Products to Finish"> <field name="product_id"/> <field name="product_qty"/> @@ -722,7 +734,7 @@ </field> </group> <group string="Produced Products"> - <field name="move_created_ids2" nolabel="1"> + <field name="move_created_ids2" nolabel="1" options="{'reload_on_button': true}"> <tree colors="red:scrapped==True;blue:state == 'draft';black:state in('picking_except','confirmed','ready','in_production');gray:state in('cancel','done') " string="Finished Products"> <field name="product_id" readonly="1"/> <field name="product_qty" readonly="1"/> @@ -973,7 +985,7 @@ <!-- Menu for Resource for MRP--> <record id="mrp_workcenter_action" model="ir.actions.act_window"> - <field name="name">Work Center</field> + <field name="name">Work Centers</field> <field name="type">ir.actions.act_window</field> <field name="res_model">mrp.workcenter</field> <field name="view_type">form</field> @@ -1015,6 +1027,7 @@ <field name="name">Bill of Materials</field> <field name="domain">[('bom_id','=',False)]</field> <field name="res_model">mrp.bom</field> + <field name="view_type">tree</field> </record> <record id="act_product_mrp_production" model="ir.actions.act_window"> <field name="context">{'search_default_product_id': [active_id]}</field> diff --git a/addons/mrp/res_config.py b/addons/mrp/res_config.py index 22a14addcd1..7343990a32f 100644 --- a/addons/mrp/res_config.py +++ b/addons/mrp/res_config.py @@ -36,7 +36,7 @@ class mrp_config_settings(osv.osv_memory): * Repair quotation report * Notes for the technician and for the final customer. This installs the module mrp_repair."""), - 'module_mrp_operations': fields.boolean("Allow detailed planning of work order", + 'module_mrp_operations': fields.boolean("Allow detailed planning of work orders", help="""This allows to add state, date_start,date_stop in production order operation lines (in the "Work Centers" tab). This installs the module mrp_operations."""), 'module_mrp_byproduct': fields.boolean("Produce several products from one manufacturing order", @@ -60,7 +60,7 @@ class mrp_config_settings(osv.osv_memory): help="""Routings allow you to create and manage the manufacturing operations that should be followed within your work centers in order to produce a product. They are attached to bills of materials that will define the required raw materials."""), - 'group_mrp_properties': fields.boolean("Allow several bill of materials per products using properties", + 'group_mrp_properties': fields.boolean("Allow several bill of materials per product using properties", implied_group='product.group_mrp_properties', help="""The selection of the right Bill of Material to use will depend on the properties specified on the sales order and the Bill of Material."""), 'module_product_manufacturer': fields.boolean("Define manufacturers on products ", diff --git a/addons/mrp/static/description/mrp_calendar.png b/addons/mrp/static/description/mrp_calendar.png Binary files differindex a2d52775a0e..b8afb51443b 100644 --- a/addons/mrp/static/description/mrp_calendar.png +++ b/addons/mrp/static/description/mrp_calendar.png diff --git a/addons/mrp/static/description/mrp_list.png b/addons/mrp/static/description/mrp_list.png Binary files differindex 5813c32e6b7..39b249fdcf2 100644 --- a/addons/mrp/static/description/mrp_list.png +++ b/addons/mrp/static/description/mrp_list.png diff --git a/addons/mrp/static/description/mrp_mo.png b/addons/mrp/static/description/mrp_mo.png Binary files differindex 6138973570f..90417cedf83 100644 --- a/addons/mrp/static/description/mrp_mo.png +++ b/addons/mrp/static/description/mrp_mo.png diff --git a/addons/base_status/__init__.py b/addons/mrp/tests/__init__.py index ea9d738e614..39ebd5e451f 100644 --- a/addons/base_status/__init__.py +++ b/addons/mrp/tests/__init__.py @@ -1,8 +1,8 @@ # -*- coding: utf-8 -*- ############################################################################## # -# OpenERP, Open Source Management Solution -# Copyright (C) 2012-today OpenERP SA (<http://openerp.com>) +# OpenERP, Open Source Business Applications +# Copyright (c) 2012-TODAY OpenERP S.A. <http://openerp.com> # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as @@ -19,6 +19,10 @@ # ############################################################################## -import base_state +from . import test_multicompany + +checks = [ + test_multicompany, +] # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/mrp/tests/test_multicompany.py b/addons/mrp/tests/test_multicompany.py new file mode 100644 index 00000000000..78986bd41b2 --- /dev/null +++ b/addons/mrp/tests/test_multicompany.py @@ -0,0 +1,50 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# OpenERP, Open Source Business Applications +# Copyright (c) 2012-TODAY OpenERP S.A. <http://openerp.com> +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. +# +############################################################################## + +from openerp.tests import common + + +class TestMrpMulticompany(common.TransactionCase): + + def setUp(self): + super(TestMrpMulticompany, self).setUp() + cr, uid = self.cr, self.uid + + # Usefull models + self.ir_model_data = self.registry('ir.model.data') + self.res_users = self.registry('res.users') + self.stock_location = self.registry('stock.location') + + model, self.multicompany_user_id = self.ir_model_data.get_object_reference(cr, uid, 'stock', 'multicompany_user') + + + def test_00_multicompany_user(self): + """check no error on getting default mrp.production values in multicompany setting""" + cr, uid, context = self.cr, self.multicompany_user_id, {} + fields = ['location_src_id', 'location_dest_id'] + defaults = self.stock_location.default_get(cr, uid, ['location_id', 'location_dest_id', 'type'], context) + for field in fields: + print field, uid, defaults + if defaults.get(field): + try: + self.stock_location.check_access_rule(cr, uid, [defaults[field]], 'read', context) + except Exception, exc: + assert False, "unreadable location %s: %s" % (field, exc) diff --git a/addons/mrp_jit/i18n/en_GB.po b/addons/mrp_jit/i18n/en_GB.po new file mode 100644 index 00000000000..0a2c432a771 --- /dev/null +++ b/addons/mrp_jit/i18n/en_GB.po @@ -0,0 +1,70 @@ +# English (United Kingdom) translation for openobject-addons +# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013 +# This file is distributed under the same license as the openobject-addons package. +# FIRST AUTHOR <EMAIL@ADDRESS>, 2013. +# +msgid "" +msgstr "" +"Project-Id-Version: openobject-addons\n" +"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" +"POT-Creation-Date: 2011-01-11 11:15+0000\n" +"PO-Revision-Date: 2013-08-23 16:44+0000\n" +"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" +"Language-Team: English (United Kingdom) <en_GB@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: 2013-08-24 05:03+0000\n" +"X-Generator: Launchpad (build 16738)\n" + +#. module: mrp_jit +#: model:ir.module.module,shortdesc:mrp_jit.module_meta_information +msgid "MRP JIT" +msgstr "MRP JIT" + +#. module: mrp_jit +#: model:ir.module.module,description:mrp_jit.module_meta_information +msgid "" +"\n" +" This module allows Just In Time computation of procurement orders.\n" +"\n" +" If you install this module, you will not have to run the regular " +"procurement \n" +" scheduler anymore (but you still need to run the minimum order point " +"rule \n" +" scheduler, or for example let it run daily.)\n" +" All procurement orders will be processed immediately, which could in " +"some\n" +" cases entail a small performance impact.\n" +"\n" +" It may also increase your stock size because products are reserved as " +"soon\n" +" as possible and the scheduler time range is not taken into account " +"anymore. \n" +" In that case, you can not use priorities any more on the different " +"picking.\n" +" \n" +" \n" +" " +msgstr "" +"\n" +" This module allows Just In Time computation of procurement orders.\n" +"\n" +" If you install this module, you will not have to run the regular " +"procurement \n" +" scheduler anymore (but you still need to run the minimum order point " +"rule \n" +" scheduler, or for example let it run daily.)\n" +" All procurement orders will be processed immediately, which could in " +"some\n" +" cases entail a small performance impact.\n" +"\n" +" It may also increase your stock size because products are reserved as " +"soon\n" +" as possible and the scheduler time range is not taken into account " +"anymore. \n" +" In that case, you can not use priorities any more on the different " +"picking.\n" +" \n" +" \n" +" " diff --git a/addons/mrp_repair/mrp_repair.py b/addons/mrp_repair/mrp_repair.py index f7b082db74b..9d812e06547 100644 --- a/addons/mrp_repair/mrp_repair.py +++ b/addons/mrp_repair/mrp_repair.py @@ -347,8 +347,9 @@ class mrp_repair(osv.osv): return self.write(cr,uid,ids,{'state':'cancel'}) def wkf_invoice_create(self, cr, uid, ids, *args): - return self.action_invoice_create(cr, uid, ids) - + self.action_invoice_create(cr, uid, ids) + return True + def action_invoice_create(self, cr, uid, ids, group=False, context=None): """ Creates invoice(s) for repair order. @param group: It is set to true when group invoice is to be generated. diff --git a/addons/mrp_repair/mrp_repair_view.xml b/addons/mrp_repair/mrp_repair_view.xml index a4526b5b581..b7a667ce308 100644 --- a/addons/mrp_repair/mrp_repair_view.xml +++ b/addons/mrp_repair/mrp_repair_view.xml @@ -31,7 +31,7 @@ <button name="repair_ready" states="confirmed,ready" string="Start Repair" class="oe_highlight"/> <button name="action_cancel_draft" states="cancel" string="Set to Draft" type="object"/> <button name="action_repair_end" states="under_repair" string="End Repair" class="oe_highlight"/> - <button name="action_invoice_create" states="2binvoiced" string="Make Invoice" class="oe_highlight"/> + <button name="action_invoice_create" states="2binvoiced" string="Create Invoice" class="oe_highlight"/> <button name="invoice_recreate" states="invoice_except" string="Recreate Invoice"/> <button name="invoice_corrected" states="invoice_except" string="Invoice Corrected"/> <button name="action_cancel" string="Cancel Repair" type="object" attrs="{'invisible':['|',('invoice_method','!=','none'), ('state', 'not in',('confirmed','2binvoiced','ready','under_repair', 'invoice_except'))]}"/> diff --git a/addons/mrp_repair/wizard/mrp_repair_make_invoice_view.xml b/addons/mrp_repair/wizard/mrp_repair_make_invoice_view.xml index 21d71064901..9c14728bc05 100644 --- a/addons/mrp_repair/wizard/mrp_repair_make_invoice_view.xml +++ b/addons/mrp_repair/wizard/mrp_repair_make_invoice_view.xml @@ -21,7 +21,7 @@ </field> </record> - <act_window name="Make Invoice" + <act_window name="Create Invoice" res_model="mrp.repair.make_invoice" src_model="mrp.repair" view_mode="form" diff --git a/addons/note_pad/i18n/en_GB.po b/addons/note_pad/i18n/en_GB.po new file mode 100644 index 00000000000..a94c1103f8b --- /dev/null +++ b/addons/note_pad/i18n/en_GB.po @@ -0,0 +1,28 @@ +# English (United Kingdom) translation for openobject-addons +# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013 +# This file is distributed under the same license as the openobject-addons package. +# FIRST AUTHOR <EMAIL@ADDRESS>, 2013. +# +msgid "" +msgstr "" +"Project-Id-Version: openobject-addons\n" +"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" +"POT-Creation-Date: 2012-12-21 17:05+0000\n" +"PO-Revision-Date: 2013-08-23 16:44+0000\n" +"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" +"Language-Team: English (United Kingdom) <en_GB@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: 2013-08-24 05:03+0000\n" +"X-Generator: Launchpad (build 16738)\n" + +#. module: note_pad +#: model:ir.model,name:note_pad.model_note_note +msgid "Note" +msgstr "Note" + +#. module: note_pad +#: field:note.note,note_pad_url:0 +msgid "Pad Url" +msgstr "Pad URL" diff --git a/addons/point_of_sale/point_of_sale.py b/addons/point_of_sale/point_of_sale.py index ab827c08ad8..a6ad5e321dd 100644 --- a/addons/point_of_sale/point_of_sale.py +++ b/addons/point_of_sale/point_of_sale.py @@ -959,11 +959,12 @@ class pos_order(osv.osv): user_company = user_proxy.browse(cr, order.user_id.id, order.user_id.id).company_id group_tax = {} - account_def = property_obj.get(cr, uid, 'property_account_receivable', 'res.partner', context=context).id + account_def = property_obj.get(cr, uid, 'property_account_receivable', 'res.partner', context=context) order_account = order.partner_id and \ order.partner_id.property_account_receivable and \ - order.partner_id.property_account_receivable.id or account_def or current_company.account_receivable.id + order.partner_id.property_account_receivable.id or \ + account_def and account_def.id or current_company.account_receivable.id if move_id is None: # Create an entry for the sale @@ -1352,7 +1353,7 @@ class product_product(osv.osv): 'expense_pdt': fields.boolean('Point of Sale Cash Out', help="Check if, this is a product you can use to take cash from a statement for the point of sale backend, example: money lost, transfer to bank, etc."), 'available_in_pos': fields.boolean('Available in the Point of Sale', help='Check if you want this product to appear in the Point of Sale'), 'pos_categ_id': fields.many2one('pos.category','Point of Sale Category', - help="The Point of Sale Category this products belongs to. Those categories are used to group similar products and are specific to the Point of Sale."), + help="These products belong to those categories that are used to group similar products and are specific to the Point of Sale."), 'to_weight' : fields.boolean('To Weight', help="Check if the product should be weighted (mainly used with self check-out interface)."), } diff --git a/addons/portal/portal_demo.xml b/addons/portal/portal_demo.xml index 3660754b4ad..5ec23c0addb 100644 --- a/addons/portal/portal_demo.xml +++ b/addons/portal/portal_demo.xml @@ -8,6 +8,7 @@ <field name="email">demo@portal.example.com</field> <field name="supplier" eval="False"/> <field name="customer" eval="True"/> + <field name="notification_email_send">none</field> </record> <record id="demo_user0" model="res.users"> <field name="partner_id" ref="partner_demo_portal"/> diff --git a/addons/portal_anonymous/i18n/en_GB.po b/addons/portal_anonymous/i18n/en_GB.po new file mode 100644 index 00000000000..a107e682ba8 --- /dev/null +++ b/addons/portal_anonymous/i18n/en_GB.po @@ -0,0 +1,25 @@ +# English (United Kingdom) translation for openobject-addons +# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013 +# This file is distributed under the same license as the openobject-addons package. +# FIRST AUTHOR <EMAIL@ADDRESS>, 2013. +# +msgid "" +msgstr "" +"Project-Id-Version: openobject-addons\n" +"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" +"POT-Creation-Date: 2012-12-21 17:05+0000\n" +"PO-Revision-Date: 2013-08-23 16:44+0000\n" +"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" +"Language-Team: English (United Kingdom) <en_GB@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: 2013-08-24 05:03+0000\n" +"X-Generator: Launchpad (build 16738)\n" + +#. module: portal_anonymous +#. openerp-web +#: code:addons/portal_anonymous/static/src/xml/portal_anonymous.xml:8 +#, python-format +msgid "Login" +msgstr "Login" diff --git a/addons/portal_claim/i18n/en_GB.po b/addons/portal_claim/i18n/en_GB.po new file mode 100644 index 00000000000..a681c384502 --- /dev/null +++ b/addons/portal_claim/i18n/en_GB.po @@ -0,0 +1,43 @@ +# English (United Kingdom) translation for openobject-addons +# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013 +# This file is distributed under the same license as the openobject-addons package. +# FIRST AUTHOR <EMAIL@ADDRESS>, 2013. +# +msgid "" +msgstr "" +"Project-Id-Version: openobject-addons\n" +"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" +"POT-Creation-Date: 2012-12-21 17:05+0000\n" +"PO-Revision-Date: 2013-08-23 16:44+0000\n" +"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" +"Language-Team: English (United Kingdom) <en_GB@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: 2013-08-24 05:03+0000\n" +"X-Generator: Launchpad (build 16738)\n" + +#. module: portal_claim +#: model:ir.actions.act_window,help:portal_claim.crm_case_categ_claim0 +msgid "" +"<p class=\"oe_view_nocontent_create\">\n" +" Click to register a new claim. \n" +" </p><p>\n" +" You can track your claims from this menu and the action we\n" +" will take.\n" +" </p>\n" +" " +msgstr "" +"<p class=\"oe_view_nocontent_create\">\n" +" Click to register a new claim. \n" +" </p><p>\n" +" You can track your claims from this menu and the action we\n" +" will take.\n" +" </p>\n" +" " + +#. module: portal_claim +#: model:ir.actions.act_window,name:portal_claim.crm_case_categ_claim0 +#: model:ir.ui.menu,name:portal_claim.portal_after_sales_claims +msgid "Claims" +msgstr "Claims" diff --git a/addons/portal_project_issue/i18n/en_GB.po b/addons/portal_project_issue/i18n/en_GB.po new file mode 100644 index 00000000000..24d1cae5444 --- /dev/null +++ b/addons/portal_project_issue/i18n/en_GB.po @@ -0,0 +1,47 @@ +# English (United Kingdom) translation for openobject-addons +# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013 +# This file is distributed under the same license as the openobject-addons package. +# FIRST AUTHOR <EMAIL@ADDRESS>, 2013. +# +msgid "" +msgstr "" +"Project-Id-Version: openobject-addons\n" +"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" +"POT-Creation-Date: 2012-12-21 17:06+0000\n" +"PO-Revision-Date: 2013-08-23 16:46+0000\n" +"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" +"Language-Team: English (United Kingdom) <en_GB@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: 2013-08-24 05:03+0000\n" +"X-Generator: Launchpad (build 16738)\n" + +#. module: portal_project_issue +#: view:project.issue:0 +msgid "Creation:" +msgstr "Creation:" + +#. module: portal_project_issue +#: model:ir.actions.act_window,help:portal_project_issue.project_issue_categ_act0 +msgid "" +"<p class=\"oe_view_nocontent_create\">\n" +" Click to create an issue.\n" +" </p><p>\n" +" You can track your issues from this menu and the action we\n" +" will take.\n" +" </p>\n" +" " +msgstr "" +"<p class=\"oe_view_nocontent_create\">\n" +" Click to create an issue.\n" +" </p><p>\n" +" You can track your issues from this menu and the action we\n" +" will take.\n" +" </p>\n" +" " + +#. module: portal_project_issue +#: model:ir.actions.act_window,name:portal_project_issue.project_issue_categ_act0 +msgid "Issues" +msgstr "Issues" diff --git a/addons/product_manufacturer/product_manufacturer_view.xml b/addons/product_manufacturer/product_manufacturer_view.xml index 88f528693df..fb4aac965d6 100644 --- a/addons/product_manufacturer/product_manufacturer_view.xml +++ b/addons/product_manufacturer/product_manufacturer_view.xml @@ -9,7 +9,7 @@ <field name="arch" type="xml"> <group name="procurement" position="inside"> <group string="Manufacturer"> - <field name="manufacturer" /> + <field name="manufacturer" context="{'default_supplier':True, 'default_customer':False}"/> <field name="manufacturer_pname"/> <field name="manufacturer_pref"/> </group> diff --git a/addons/project/project.py b/addons/project/project.py index db2052224f9..139d007d3ab 100644 --- a/addons/project/project.py +++ b/addons/project/project.py @@ -61,6 +61,13 @@ class project(osv.osv): "mail.alias": "alias_id"} _inherit = ['mail.thread', 'ir.needaction_mixin'] + def _auto_init(self, cr, context=None): + """ Installation hook: aliases, project.project """ + # create aliases for all projects and avoid constraint errors + alias_context = dict(context, alias_model_name='project.task') + self.pool.get('mail.alias').migrate_to_alias(cr, self._name, self._table, super(project, self)._auto_init, + 'project.task', self._columns['alias_id'], 'id', alias_prefix='project+', alias_defaults={'project_id':'id'}, context=alias_context) + def search(self, cr, user, args, offset=0, limit=None, order=None, context=None, count=False): if user == 1: return super(project, self).search(cr, user, args, offset=offset, limit=limit, order=order, context=context, count=count) diff --git a/addons/project_issue/__openerp__.py b/addons/project_issue/__openerp__.py index d41144253dd..723f362ab4c 100644 --- a/addons/project_issue/__openerp__.py +++ b/addons/project_issue/__openerp__.py @@ -37,7 +37,6 @@ It allows the manager to quickly check the issues, assign them and decide on the 'website': 'http://www.openerp.com', 'images': ['images/issue_analysis.jpeg','images/project_issue.jpeg'], 'depends': [ - 'base_status', 'crm', 'project', ], diff --git a/addons/project_issue/project_issue.py b/addons/project_issue/project_issue.py index bf13b07b825..f23f6b6a286 100644 --- a/addons/project_issue/project_issue.py +++ b/addons/project_issue/project_issue.py @@ -467,7 +467,6 @@ class project_issue(osv.Model): self.pool.get('project.task').write(cr, uid, [case.task_id.id], {'project_id': data['project_id'], 'user_id': False}) else: raise osv.except_osv(_('Warning!'), _('You cannot escalate this issue.\nThe relevant Project has not configured the Escalation Project!')) - self.case_set(cr, uid, ids, 'draft', data, context=context) return True # ------------------------------------------------------- @@ -496,21 +495,19 @@ class project_issue(osv.Model): through message_process. This override updates the document according to the email. """ - if custom_values is None: custom_values = {} - if context is None: context = {} + if custom_values is None: + custom_values = {} + if context is None: + context = {} context['state_to'] = 'draft' - - desc = html2plaintext(msg.get('body')) if msg.get('body') else '' - defaults = { 'name': msg.get('subject') or _("No Subject"), - 'description': desc, 'email_from': msg.get('from'), 'email_cc': msg.get('cc'), 'partner_id': msg.get('author_id', False), 'user_id': False, } - if msg.get('priority'): + if msg.get('priority'): defaults['priority'] = msg.get('priority') defaults.update(custom_values) diff --git a/addons/purchase/purchase.py b/addons/purchase/purchase.py index 77151026765..94a6f9fe7ab 100644 --- a/addons/purchase/purchase.py +++ b/addons/purchase/purchase.py @@ -199,9 +199,9 @@ class purchase_order(osv.osv): 'invoiced_rate': fields.function(_invoiced_rate, string='Invoiced', type='float'), 'invoice_method': fields.selection([('manual','Based on Purchase Order lines'),('order','Based on generated draft invoice'),('picking','Based on incoming shipments')], 'Invoicing Control', required=True, readonly=True, states={'draft':[('readonly',False)], 'sent':[('readonly',False)]}, - help="Based on Purchase Order lines: place individual lines in 'Invoice Control > Based on P.O. lines' from where you can selectively create an invoice.\n" \ + help="Based on Purchase Order lines: place individual lines in 'Invoice Control / On Purchase Order lines' from where you can selectively create an invoice.\n" \ "Based on generated invoice: create a draft invoice you can validate later.\n" \ - "Bases on incoming shipments: let you create an invoice when receptions are validated." + "Based on incoming shipments: let you create an invoice when receptions are validated." ), 'minimum_planned_date':fields.function(_minimum_planned_date, fnct_inv=_set_minimum_planned_date, string='Expected Date', type='date', select=True, help="This is computed as the minimum scheduled date of all purchase order lines' products.", store = { diff --git a/addons/purchase_analytic_plans/i18n/en_GB.po b/addons/purchase_analytic_plans/i18n/en_GB.po new file mode 100644 index 00000000000..91a197ce900 --- /dev/null +++ b/addons/purchase_analytic_plans/i18n/en_GB.po @@ -0,0 +1,33 @@ +# English (United Kingdom) translation for openobject-addons +# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013 +# This file is distributed under the same license as the openobject-addons package. +# FIRST AUTHOR <EMAIL@ADDRESS>, 2013. +# +msgid "" +msgstr "" +"Project-Id-Version: openobject-addons\n" +"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" +"POT-Creation-Date: 2012-12-21 17:06+0000\n" +"PO-Revision-Date: 2013-08-23 16:46+0000\n" +"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" +"Language-Team: English (United Kingdom) <en_GB@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: 2013-08-24 05:03+0000\n" +"X-Generator: Launchpad (build 16738)\n" + +#. module: purchase_analytic_plans +#: field:purchase.order.line,analytics_id:0 +msgid "Analytic Distribution" +msgstr "Analytic Distribution" + +#. module: purchase_analytic_plans +#: model:ir.model,name:purchase_analytic_plans.model_purchase_order_line +msgid "Purchase Order Line" +msgstr "Purchase Order Line" + +#. module: purchase_analytic_plans +#: model:ir.model,name:purchase_analytic_plans.model_purchase_order +msgid "Purchase Order" +msgstr "Purchase Order" diff --git a/addons/purchase_requisition/purchase_requisition.py b/addons/purchase_requisition/purchase_requisition.py index c5d32136a7a..df73887cc42 100644 --- a/addons/purchase_requisition/purchase_requisition.py +++ b/addons/purchase_requisition/purchase_requisition.py @@ -37,7 +37,7 @@ class purchase_requisition(osv.osv): 'date_start': fields.datetime('Requisition Date'), 'date_end': fields.datetime('Requisition Deadline'), 'user_id': fields.many2one('res.users', 'Responsible'), - 'exclusive': fields.selection([('exclusive','Purchase Requisition (exclusive)'),('multiple','Multiple Requisitions')],'Requisition Type', required=True, help="Purchase Requisition (exclusive): On the confirmation of a purchase order, it cancels the remaining purchase order.\nPurchase Requisition(Multiple): It allows to have multiple purchase orders.On confirmation of a purchase order it does not cancel the remaining orders"""), + 'exclusive': fields.selection([('exclusive','Purchase Requisition (exclusive)'),('multiple','Multiple Requisitions')],'Requisition Type', required=True, help="Purchase Requisition (exclusive): On the confirmation of a purchase order, it cancels the remaining purchase order.\nMultiple Requisitions: It allows to have multiple purchase orders.On confirmation of a purchase order it does not cancel the remaining orders"""), 'description': fields.text('Description'), 'company_id': fields.many2one('res.company', 'Company', required=True), 'purchase_ids' : fields.one2many('purchase.order','requisition_id','Purchase Orders',states={'done': [('readonly', True)]}), diff --git a/addons/sale/security/sale_security.xml b/addons/sale/security/sale_security.xml index 557562275d7..710fbdcc207 100644 --- a/addons/sale/security/sale_security.xml +++ b/addons/sale/security/sale_security.xml @@ -36,6 +36,7 @@ <record id="group_mrp_properties" model="res.groups"> <field name="name">Properties on lines</field> + <field name="users" eval="[(4, ref('base.user_root'))]"/> <field name="category_id" ref="base.module_category_hidden"/> </record> diff --git a/addons/sale/wizard/sale_line_invoice.xml b/addons/sale/wizard/sale_line_invoice.xml index 70693215be0..6be23e18de5 100644 --- a/addons/sale/wizard/sale_line_invoice.xml +++ b/addons/sale/wizard/sale_line_invoice.xml @@ -22,7 +22,7 @@ </record> <record id="action_view_sale_order_line_make_invoice" model="ir.actions.act_window"> - <field name="name">Make Invoices</field> + <field name="name">Create Invoice</field> <field name="type">ir.actions.act_window</field> <field name="res_model">sale.order.line.make.invoice</field> <field name="view_type">form</field> diff --git a/addons/sale_analytic_plans/i18n/en_GB.po b/addons/sale_analytic_plans/i18n/en_GB.po new file mode 100644 index 00000000000..31605a66d68 --- /dev/null +++ b/addons/sale_analytic_plans/i18n/en_GB.po @@ -0,0 +1,33 @@ +# English (United Kingdom) translation for openobject-addons +# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013 +# This file is distributed under the same license as the openobject-addons package. +# FIRST AUTHOR <EMAIL@ADDRESS>, 2013. +# +msgid "" +msgstr "" +"Project-Id-Version: openobject-addons\n" +"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" +"POT-Creation-Date: 2012-12-21 17:06+0000\n" +"PO-Revision-Date: 2013-08-23 16:45+0000\n" +"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" +"Language-Team: English (United Kingdom) <en_GB@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: 2013-08-24 05:03+0000\n" +"X-Generator: Launchpad (build 16738)\n" + +#. module: sale_analytic_plans +#: field:sale.order.line,analytics_id:0 +msgid "Analytic Distribution" +msgstr "Analytic Distribution" + +#. module: sale_analytic_plans +#: model:ir.model,name:sale_analytic_plans.model_sale_order +msgid "Sales Order" +msgstr "Sales Order" + +#. module: sale_analytic_plans +#: model:ir.model,name:sale_analytic_plans.model_sale_order_line +msgid "Sales Order Line" +msgstr "Sales Order Line" diff --git a/addons/sale_stock/sale_stock.py b/addons/sale_stock/sale_stock.py index 3f7ac28c900..b8f6249d744 100644 --- a/addons/sale_stock/sale_stock.py +++ b/addons/sale_stock/sale_stock.py @@ -312,6 +312,7 @@ class sale_order(osv.osv): 'move_id': move_id, 'company_id': order.company_id.id, 'note': line.name, + 'property_ids': [(6, 0, [x.id for x in line.property_ids])], } def _prepare_order_line_move(self, cr, uid, order, line, picking_id, date_planned, context=None): diff --git a/addons/stock/report/picking.py b/addons/stock/report/picking.py index 512d124ee0c..603e815fc10 100644 --- a/addons/stock/report/picking.py +++ b/addons/stock/report/picking.py @@ -21,20 +21,23 @@ import time from openerp.report import report_sxw -from openerp.osv import osv class picking(report_sxw.rml_parse): def __init__(self, cr, uid, name, context): super(picking, self).__init__(cr, uid, name, context=context) self.localcontext.update({ 'time': time, - 'get_product_desc':self.get_product_desc + 'get_product_desc': self.get_product_desc, }) - def get_product_desc(self,move_line): + def get_product_desc(self, move_line): desc = move_line.product_id.name if move_line.product_id.default_code: desc = '[' + move_line.product_id.default_code + ']' + ' ' + desc return desc -report_sxw.report_sxw('report.stock.picking.list','stock.picking','addons/stock/report/picking.rml',parser=picking) +for suffix in ['', '.in', '.out']: + report_sxw.report_sxw('report.stock.picking.list' + suffix, + 'stock.picking' + suffix, + 'addons/stock/report/picking.rml', + parser=picking) # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/stock/stock.py b/addons/stock/stock.py index dba506d22ee..7d2a1282cb0 100644 --- a/addons/stock/stock.py +++ b/addons/stock/stock.py @@ -2930,12 +2930,22 @@ class stock_warehouse(osv.osv): } def _default_lot_input_stock_id(self, cr, uid, context=None): - lot_input_stock = self.pool.get('ir.model.data').get_object(cr, uid, 'stock', 'stock_location_stock') - return lot_input_stock.id + try: + lot_input_stock_model, lot_input_stock_id = self.pool.get('ir.model.data').get_object_reference(cr, uid, 'stock', 'stock_location_stock') + self.pool.get('stock.location').check_access_rule(cr, uid, [lot_input_stock_id], 'read', context=context) + except (ValueError, orm.except_orm): + # the user does not have read access on the location or it does not exists + lot_input_stock_id = False + return lot_input_stock_id def _default_lot_output_id(self, cr, uid, context=None): - lot_output = self.pool.get('ir.model.data').get_object(cr, uid, 'stock', 'stock_location_output') - return lot_output.id + try: + lot_input_stock_model, lot_input_stock_id = self.pool.get('ir.model.data').get_object_reference(cr, uid, 'stock', 'stock_location_output') + self.pool.get('stock.location').check_access_rule(cr, uid, [lot_input_stock_id], 'read', context=context) + except (ValueError, orm.except_orm): + # the user does not have read access on the location or it does not exists + lot_output_id = False + return lot_output_id _defaults = { 'company_id': lambda self, cr, uid, c: self.pool.get('res.company')._company_default_get(cr, uid, 'stock.inventory', context=c), diff --git a/addons/stock/stock_demo.xml b/addons/stock/stock_demo.xml index eb5a6c46380..94844ee8904 100644 --- a/addons/stock/stock_demo.xml +++ b/addons/stock/stock_demo.xml @@ -287,6 +287,16 @@ <field name="company_id" ref="base.main_company"/> </record> + <record id="multicompany_user" model="res.users"> + <field name="name">multicomp</field> + <field name="login">multicomp</field> + <field name="password">multicomp</field> + <field name="company_id" ref="res_company_2"/> + <field name="company_ids" eval="[(6,0,[ref('res_company_2')])]"/> + <field name="groups_id" eval="[(6,0,[ref('base.group_user'), ref('stock.group_stock_manager')])]"/> + + </record> + </data> </openerp> diff --git a/addons/stock/stock_report.xml b/addons/stock/stock_report.xml index 540e6a8f902..53b89dcf41f 100644 --- a/addons/stock/stock_report.xml +++ b/addons/stock/stock_report.xml @@ -3,8 +3,8 @@ <data> <report auto="False" id="report_product_history" model="product.product" name="stock.product.history" string="Stock Level Forecast"/> <report id="report_picking_list" model="stock.picking" name="stock.picking.list" string="Picking Slip" rml="stock/report/picking.rml"/> - <report id="report_picking_list_in" model="stock.picking.in" name="stock.picking.list" string="Receipt Slip" rml="stock/report/picking.rml"/> - <report id="report_picking_list_out" model="stock.picking.out" name="stock.picking.list" string="Delivery Slip" rml="stock/report/picking.rml"/> + <report id="report_picking_list_in" model="stock.picking.in" name="stock.picking.list.in" string="Receipt Slip" rml="stock/report/picking.rml"/> + <report id="report_picking_list_out" model="stock.picking.out" name="stock.picking.list.out" string="Delivery Slip" rml="stock/report/picking.rml"/> <report id="report_move_labels" model="stock.move" name="stock.move.label" string="Item Labels" xml="stock/report/lot_move_label.xml" xsl="stock/report/lot_move_label.xsl"/> <report auto="False" id="report_location_overview" model="stock.location" name="lot.stock.overview" string="Location Inventory Overview" rml="stock/report/lot_overview.rml"/> <report id="report_location_overview_all" model="stock.location" name="lot.stock.overview_all" string="Location Content" rml="stock/report/lot_overview_all.rml"/> diff --git a/addons/stock/stock_view.xml b/addons/stock/stock_view.xml index 14b3ba04eb5..8940309dc12 100644 --- a/addons/stock/stock_view.xml +++ b/addons/stock/stock_view.xml @@ -161,7 +161,7 @@ </field> </page> <page string="Posted Inventory"> - <field name="move_ids" context="{'inventory_id':active_id}" > + <field name="move_ids" context="{'inventory_id':active_id}" options='{"reload_on_button": true}' > <tree string="Stock Moves"> <field name="product_id"/> <field name="product_qty" on_change="onchange_quantity(product_id, product_qty, product_uom, product_uos)"/> @@ -786,7 +786,7 @@ </group> <notebook> <page string="Products"> - <field name="move_lines" context="{'address_in_id': partner_id, 'form_view_ref':'view_move_picking_form', 'tree_view_ref':'view_move_picking_tree', 'picking_type': 'internal'}"/> + <field name="move_lines" context="{'address_in_id': partner_id, 'form_view_ref':'view_move_picking_form', 'tree_view_ref':'view_move_picking_tree', 'picking_type': 'internal'}" options='{"reload_on_button": true}'/> <field name="note" placeholder="Add an internal note..." class="oe_inline"/> </page> <page string="Additional Info"> @@ -921,7 +921,7 @@ <field name="partner_id" on_change="onchange_partner_in(partner_id)" string="Customer" domain="[('customer','=',True)]" /> </xpath> <xpath expr="//field[@name='move_lines']" position="replace"> - <field name="move_lines" context="{'address_out_id': partner_id, 'picking_type': 'out', 'form_view_ref':'view_move_picking_form', 'tree_view_ref':'view_move_picking_tree'}"/> + <field name="move_lines" context="{'address_out_id': partner_id, 'picking_type': 'out', 'form_view_ref':'view_move_picking_form', 'tree_view_ref':'view_move_picking_tree'}" options='{"reload_on_button": true}'/> </xpath> <xpath expr="/form/sheet" position="after"> <div class="oe_chatter"> @@ -1048,7 +1048,7 @@ <field name="partner_id" on_change="onchange_partner_in(partner_id)" string="Supplier" domain="[('supplier','=',True)]" /> </xpath> <xpath expr="//field[@name='move_lines']" position="replace"> - <field name="move_lines" context="{'address_in_id': partner_id, 'picking_type': 'in', 'form_view_ref':'view_move_picking_form', 'tree_view_ref':'view_move_picking_tree'}"/> + <field name="move_lines" context="{'address_in_id': partner_id, 'picking_type': 'in', 'form_view_ref':'view_move_picking_form', 'tree_view_ref':'view_move_picking_tree'}" options='{"reload_on_button": true}'/> </xpath> <xpath expr="/form/sheet" position="after"> <div class="oe_chatter"> diff --git a/addons/base_status/__openerp__.py b/addons/stock/tests/__init__.py index b3936ec10cb..39ebd5e451f 100644 --- a/addons/base_status/__openerp__.py +++ b/addons/stock/tests/__init__.py @@ -1,8 +1,8 @@ # -*- coding: utf-8 -*- ############################################################################## # -# OpenERP, Open Source Management Solution -# Copyright (C) 2012-today OpenERP SA (<http://openerp.com>) +# OpenERP, Open Source Business Applications +# Copyright (c) 2012-TODAY OpenERP S.A. <http://openerp.com> # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as @@ -19,22 +19,10 @@ # ############################################################################## -{ - 'name': 'State/Stage Management', - 'version': '1.0', - 'category': 'Hidden', - 'description': """ -This module handles state. It is derived from the crm_base and crm_case classes from crm. -========================================================================================== +from . import test_multicompany + +checks = [ + test_multicompany, +] - * ``base_state``: state management - """, - 'author': 'OpenERP SA', - 'website': 'http://www.openerp.com', - 'depends': ['base'], - 'data': [], - 'demo': [], - 'installable': True, - 'auto_install': False, -} # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/stock/tests/test_multicompany.py b/addons/stock/tests/test_multicompany.py new file mode 100644 index 00000000000..d30e7d0ef2b --- /dev/null +++ b/addons/stock/tests/test_multicompany.py @@ -0,0 +1,92 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# OpenERP, Open Source Business Applications +# Copyright (c) 2012-TODAY OpenERP S.A. <http://openerp.com> +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. +# +############################################################################## + +from openerp.tests import common + + +class TestStockMulticompany(common.TransactionCase): + + def setUp(self): + super(TestStockMulticompany, self).setUp() + cr, uid = self.cr, self.uid + + # Usefull models + self.ir_model_data = self.registry('ir.model.data') + self.res_users = self.registry('res.users') + self.stock_location = self.registry('stock.location') + self.stock_move = self.registry('stock.move') + self.stock_fill_inventory = self.registry('stock.fill.inventory') + self.stock_warehouse = self.registry('stock.warehouse') + + model, self.multicompany_user_id = self.ir_model_data.get_object_reference(cr, uid, 'stock', 'multicompany_user') + + def test_00_multicompany_default_stock_move(self): + """check no error on getting default stock.move values in multicompany setting""" + cr, uid, context = self.cr, self.multicompany_user_id, {} + fields = ['location_id', 'location_dest_id'] + for type in ('in', 'internal', 'out'): + context['picking_type'] = type + defaults = self.stock_move.default_get(cr, uid, ['location_id', 'location_dest_id', 'type'], context) + for field in fields: + if defaults.get(field): + try: + self.stock_location.check_access_rule(cr, uid, [defaults[field]], 'read', context) + except Exception, exc: + assert False, "unreadable location %s: %s" % (field, exc) + self.assertEqual(defaults['type'], type, "wrong move type") + + + def test_10_multicompany_onchange_move_type(self): + """check onchange_move_type does not return unreadable in multicompany setting""" + cr, uid, context = self.cr, self.multicompany_user_id, {} + fields = ['location_id', 'location_dest_id'] + for type in ('in', 'internal', 'out'): + result = self.stock_move.onchange_move_type(cr, uid, [], type, context)['value'] + for field in fields: + if result.get(field): + try: + self.stock_location.check_access_rule(cr, uid, [result[field]], 'read', context) + except Exception, exc: + assert False, "unreadable location %s: %s" % (field, exc) + + + def test_20_multicompany_default_stock_fill_inventory(self): + """check default location readability for stock_fill_inventory in multicompany setting""" + cr, uid, context = self.cr, self.multicompany_user_id, {} + defaults = self.stock_fill_inventory.default_get(cr, uid, ['location_id'], context) + if defaults.get('location_id'): + try: + self.stock_location.check_access_rule(cr, uid, [defaults['location_id']], 'read', context) + except Exception, exc: + assert False, "unreadable source location: %s" % exc + + + def test_30_multicompany_default_warehouse_location(self): + """check default locations for warehouse in multicompany setting""" + cr, uid, context = self.cr, self.multicompany_user_id, {} + fields = ['lot_input_id', 'lot_stock_id', 'lot_output_id'] + defaults = self.stock_warehouse.default_get(cr, uid, fields, context) + for field in fields: + if defaults.get(field): + try: + self.stock_location.check_access_rule(cr, uid, [defaults[field]], 'read', context) + except Exception, exc: + assert False, "unreadable default %s: %s" % (field, exc) diff --git a/addons/stock/wizard/stock_fill_inventory.py b/addons/stock/wizard/stock_fill_inventory.py index e3341bd6a80..b367e6069d8 100644 --- a/addons/stock/wizard/stock_fill_inventory.py +++ b/addons/stock/wizard/stock_fill_inventory.py @@ -19,7 +19,7 @@ # ############################################################################## -from openerp.osv import fields, osv +from openerp.osv import fields, osv, orm from openerp.tools.translate import _ class stock_fill_inventory(osv.osv_memory): @@ -28,8 +28,10 @@ class stock_fill_inventory(osv.osv_memory): def _default_location(self, cr, uid, ids, context=None): try: - loc_model, location_id = self.pool.get('ir.model.data').get_object_reference(cr, uid, 'stock', 'stock_location_stock') - except ValueError, e: + location = self.pool.get('ir.model.data').get_object(cr, uid, 'stock', 'stock_location_stock') + location.check_access_rule('read', context=context) + location_id = location.id + except (ValueError, orm.except_orm), e: return False return location_id or False diff --git a/addons/stock_invoice_directly/i18n/en_GB.po b/addons/stock_invoice_directly/i18n/en_GB.po new file mode 100644 index 00000000000..b97e2d4c6a6 --- /dev/null +++ b/addons/stock_invoice_directly/i18n/en_GB.po @@ -0,0 +1,23 @@ +# English (United Kingdom) translation for openobject-addons +# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013 +# This file is distributed under the same license as the openobject-addons package. +# FIRST AUTHOR <EMAIL@ADDRESS>, 2013. +# +msgid "" +msgstr "" +"Project-Id-Version: openobject-addons\n" +"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" +"POT-Creation-Date: 2012-12-21 17:06+0000\n" +"PO-Revision-Date: 2013-08-23 16:45+0000\n" +"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" +"Language-Team: English (United Kingdom) <en_GB@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: 2013-08-24 05:03+0000\n" +"X-Generator: Launchpad (build 16738)\n" + +#. module: stock_invoice_directly +#: model:ir.model,name:stock_invoice_directly.model_stock_partial_picking +msgid "Partial Picking Processing Wizard" +msgstr "Partial Picking Processing Wizard" diff --git a/addons/web_shortcuts/i18n/en_GB.po b/addons/web_shortcuts/i18n/en_GB.po new file mode 100644 index 00000000000..f81d0065a68 --- /dev/null +++ b/addons/web_shortcuts/i18n/en_GB.po @@ -0,0 +1,25 @@ +# English (United Kingdom) translation for openobject-addons +# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013 +# This file is distributed under the same license as the openobject-addons package. +# FIRST AUTHOR <EMAIL@ADDRESS>, 2013. +# +msgid "" +msgstr "" +"Project-Id-Version: openobject-addons\n" +"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" +"POT-Creation-Date: 2012-12-21 17:06+0000\n" +"PO-Revision-Date: 2013-08-23 16:45+0000\n" +"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" +"Language-Team: English (United Kingdom) <en_GB@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: 2013-08-24 05:03+0000\n" +"X-Generator: Launchpad (build 16738)\n" + +#. module: web_shortcuts +#. openerp-web +#: code:addons/web_shortcuts/static/src/xml/web_shortcuts.xml:21 +#, python-format +msgid "Add / Remove Shortcut..." +msgstr "Add / Remove Shortcut..." |
