[MERGE] trunk

bzr revid: qdp-launchpad@openerp.com-20120710124253-eu7h88iss7lbcrw6
This commit is contained in:
Quentin (OpenERP) 2012-07-10 14:42:53 +02:00
commit 5a7e06c4a4
116 changed files with 3542 additions and 2797 deletions

View File

@ -8,14 +8,14 @@ msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-02-08 00:35+0000\n"
"PO-Revision-Date: 2012-06-20 16:18+0000\n"
"Last-Translator: Raphael Collet (OpenERP) <Unknown>\n"
"PO-Revision-Date: 2012-07-06 02:41+0000\n"
"Last-Translator: Akira Hiyama <Unknown>\n"
"Language-Team: Japanese <ja@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-06-22 04:38+0000\n"
"X-Generator: Launchpad (build 15461)\n"
"X-Launchpad-Export-Date: 2012-07-07 05:13+0000\n"
"X-Generator: Launchpad (build 15558)\n"
#. module: account
#: view:account.invoice.report:0
@ -4942,7 +4942,7 @@ msgstr "会計表"
#. module: account
#: field:account.journal.column,name:0
msgid "Column Name"
msgstr "カラム名"
msgstr "名"
#. module: account
#: view:account.general.journal:0

View File

@ -21,7 +21,7 @@
or
<button string="Cancel" type="object" name="cancel" class="oe_link"/>
</header>
<sheet>
<field name="has_default_company" invisible="1" />
<field name="has_chart_of_accounts" invisible="1"/>
<field name="complete_tax_set" invisible="1"/>
@ -134,7 +134,6 @@
<group name="analytic_accounting" invisible="1" string="Analytic Accounting"/>
</group>
</sheet>
</form>
</field>
</record>

View File

@ -3,3 +3,5 @@ access_account_analytic_analysis_summary_user_sale,account_analytic_analysis.sum
access_account_analytic_analysis_summary_month_sale,account_analytic_analysis.summary.month sale,model_account_analytic_analysis_summary_month,base.group_sale_salesman,1,0,0,0
access_account_analytic_analysis_summary_user,account_analytic_analysis.summary.user,model_account_analytic_analysis_summary_user,account.group_account_manager,1,0,0,0
access_account_analytic_analysis_summary_month,account_analytic_analysis.summary.month,model_account_analytic_analysis_summary_month,account.group_account_manager,1,0,0,0
access_account_analytic_analysis_summary_user_project_user,account_analytic_analysis.summary.user project,model_account_analytic_analysis_summary_user,project.group_project_user,1,0,0,0
access_account_analytic_analysis_summary_month_project_user,account_analytic_analysis.summary.month project,model_account_analytic_analysis_summary_month,project.group_project_user,1,0,0,0

1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
3 access_account_analytic_analysis_summary_month_sale account_analytic_analysis.summary.month sale model_account_analytic_analysis_summary_month base.group_sale_salesman 1 0 0 0
4 access_account_analytic_analysis_summary_user account_analytic_analysis.summary.user model_account_analytic_analysis_summary_user account.group_account_manager 1 0 0 0
5 access_account_analytic_analysis_summary_month account_analytic_analysis.summary.month model_account_analytic_analysis_summary_month account.group_account_manager 1 0 0 0
6 access_account_analytic_analysis_summary_user_project_user account_analytic_analysis.summary.user project model_account_analytic_analysis_summary_user project.group_project_user 1 0 0 0
7 access_account_analytic_analysis_summary_month_project_user account_analytic_analysis.summary.month project model_account_analytic_analysis_summary_month project.group_project_user 1 0 0 0

View File

@ -0,0 +1,793 @@
# Mongolian translation for openobject-addons
# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012
# This file is distributed under the same license as the openobject-addons package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2012.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-02-08 01:37+0100\n"
"PO-Revision-Date: 2012-07-10 03:13+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Mongolian <mn@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-07-10 05:34+0000\n"
"X-Generator: Launchpad (build 15558)\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.depreciation.confirmation.wizard:0
msgid "Compute Asset"
msgstr "Үндсэн хөрөнгө тооцоолох"
#. module: account_asset
#: view:asset.asset.report:0
msgid "Group By..."
msgstr ""
#. module: account_asset
#: field:asset.asset.report,gross_value:0
msgid "Gross Amount"
msgstr ""
#. module: account_asset
#: view:account.asset.asset:0 field:account.asset.asset,name: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 ""
#. 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
#: field:account.asset.history,name:0
msgid "History name"
msgstr "Түүхийн нэр"
#. 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 ""
#. module: account_asset
#: view:asset.modify:0
msgid "Modify"
msgstr ""
#. module: account_asset
#: selection:account.asset.asset,state:0 view:asset.asset.report:0
#: selection:asset.asset.report,state:0
msgid "Running"
msgstr ""
#. module: account_asset
#: field:account.asset.depreciation.line,amount:0
msgid "Depreciation Amount"
msgstr ""
#. 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 "Хөрөнгийн судалгаа шинжилгээ"
#. module: account_asset
#: field:asset.modify,name:0
msgid "Reason"
msgstr ""
#. 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 "Хөрөнгийн зэрэглэл"
#. module: account_asset
#: view:asset.depreciation.confirmation.wizard:0
msgid ""
"This wizard will post the depreciation lines of running assets that belong "
"to the selected period."
msgstr ""
#. module: account_asset
#: 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 ""
#. module: account_asset
#: view:account.asset.asset:0
#: field:account.asset.asset,depreciation_line_ids:0
msgid "Depreciation Lines"
msgstr ""
#. 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
#: field:account.asset.depreciation.line,depreciation_date:0
#: view:asset.asset.report:0 field:asset.asset.report,depreciation_date:0
msgid "Depreciation Date"
msgstr ""
#. module: account_asset
#: field:account.asset.category,account_asset_id:0
msgid "Asset Account"
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 ""
#. 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 ""
#. module: account_asset
#: field:account.asset.depreciation.line,move_id:0
msgid "Depreciation Entry"
msgstr ""
#. module: account_asset
#: sql_constraint:account.move.line:0
msgid "Wrong credit or debit value in accounting entry !"
msgstr ""
#. module: account_asset
#: view:asset.asset.report:0 field:asset.asset.report,nbr:0
msgid "# of Depreciation Lines"
msgstr ""
#. 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 ""
#. module: account_asset
#: constraint:account.invoice:0
msgid "Invalid BBA Structured Communication !"
msgstr ""
#. 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.depreciation.line,sequence:0
msgid "Sequence of the depreciation"
msgstr ""
#. module: account_asset
#: field:account.asset.asset,method_period:0
#: field:account.asset.category,method_period:0
#: field:account.asset.history,method_period:0
#: field:asset.modify,method_period:0
msgid "Period Length"
msgstr ""
#. module: account_asset
#: selection:account.asset.asset,state:0 view:asset.asset.report:0
#: selection:asset.asset.report,state:0
msgid "Draft"
msgstr ""
#. module: account_asset
#: view:asset.asset.report:0
msgid "Date of asset purchase"
msgstr ""
#. module: account_asset
#: help:account.asset.asset,method_number:0
msgid "Calculates Depreciation within specified interval"
msgstr ""
#. module: account_asset
#: view:account.asset.asset:0
msgid "Change Duration"
msgstr ""
#. module: account_asset
#: field:account.asset.category,account_analytic_id:0
msgid "Analytic account"
msgstr ""
#. module: account_asset
#: field:account.asset.asset,method:0 field:account.asset.category,method:0
msgid "Computation Method"
msgstr ""
#. module: account_asset
#: help:account.asset.asset,method_period:0
msgid "State here the time during 2 depreciations, in months"
msgstr ""
#. 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
#: 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
#: field:account.asset.asset,purchase_value:0
msgid "Gross value "
msgstr ""
#. module: account_asset
#: constraint:account.asset.asset:0
msgid "Error ! You can not create recursive assets."
msgstr ""
#. module: account_asset
#: help:account.asset.history,method_period:0
msgid "Time in month between two depreciations"
msgstr ""
#. module: account_asset
#: view:asset.asset.report:0 field:asset.asset.report,name:0
msgid "Year"
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
#: view:account.asset.asset:0
msgid "Other Information"
msgstr ""
#. module: account_asset
#: field:account.asset.asset,salvage_value:0
msgid "Salvage Value"
msgstr ""
#. module: account_asset
#: field:account.invoice.line,asset_category_id:0 view:asset.asset.report:0
msgid "Asset Category"
msgstr ""
#. module: account_asset
#: view:account.asset.asset:0
msgid "Set to Close"
msgstr ""
#. module: account_asset
#: model:ir.actions.wizard,name:account_asset.wizard_asset_compute
msgid "Compute assets"
msgstr ""
#. module: account_asset
#: model:ir.actions.wizard,name:account_asset.wizard_asset_modify
msgid "Modify asset"
msgstr ""
#. 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:asset.asset.report:0
msgid "Assets purchased in current year"
msgstr ""
#. module: account_asset
#: field:account.asset.asset,state:0 field:asset.asset.report,state:0
msgid "State"
msgstr ""
#. module: account_asset
#: model:ir.model,name:account_asset.model_account_invoice_line
msgid "Invoice Line"
msgstr ""
#. module: account_asset
#: constraint:account.move.line:0
msgid ""
"The selected account of your Journal Entry forces to provide a secondary "
"currency. You should remove the secondary currency on the account or select "
"a multi-currency view on the journal."
msgstr ""
#. module: account_asset
#: view:asset.asset.report:0
msgid "Month"
msgstr ""
#. module: account_asset
#: view:account.asset.asset:0
msgid "Depreciation Board"
msgstr ""
#. module: account_asset
#: model:ir.model,name:account_asset.model_account_move_line
msgid "Journal Items"
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:account.asset.category:0
msgid "Analytic Information"
msgstr ""
#. module: account_asset
#: view:asset.modify:0
msgid "Asset Durations to Modify"
msgstr ""
#. module: account_asset
#: constraint:account.move.line:0
msgid ""
"The date of your Journal Entry is not in the defined period! You should "
"change the date or remove this constraint from the journal."
msgstr ""
#. module: account_asset
#: field:account.asset.asset,note:0 field:account.asset.category,note:0
#: field:account.asset.history,note:0
msgid "Note"
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: Remaining Value * Degressive Factor"
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 ""
#. module: account_asset
#: field:account.asset.asset,partner_id:0
#: field:asset.asset.report,partner_id:0
msgid "Partner"
msgstr ""
#. module: account_asset
#: view:asset.asset.report:0 field:asset.asset.report,depreciation_value:0
msgid "Amount of Depreciation Lines"
msgstr ""
#. module: account_asset
#: view:asset.asset.report:0
msgid "Posted depreciation lines"
msgstr ""
#. module: account_asset
#: constraint:account.move.line:0
msgid "Company must be the same for its related account and period."
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 ""
#. module: account_asset
#: field:account.asset.history,date:0
msgid "Date"
msgstr ""
#. module: account_asset
#: view:asset.asset.report:0
msgid "Assets purchased in current month"
msgstr ""
#. module: account_asset
#: constraint:account.move.line:0
msgid "You can not create journal items on an account of type view."
msgstr ""
#. module: account_asset
#: view:asset.asset.report:0
msgid "Extended Filters..."
msgstr ""
#. module: account_asset
#: view:account.asset.asset:0 view:asset.depreciation.confirmation.wizard:0
msgid "Compute"
msgstr ""
#. module: account_asset
#: view:account.asset.category:0
msgid "Search Asset Category"
msgstr ""
#. 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 ""
#. module: account_asset
#: model:ir.actions.wizard,name:account_asset.wizard_asset_close
msgid "Close asset"
msgstr ""
#. module: account_asset
#: field:account.asset.depreciation.line,parent_state:0
msgid "State of Asset"
msgstr ""
#. 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 ""
#. module: account_asset
#: sql_constraint:account.invoice:0
msgid "Invoice Number must be unique per Company!"
msgstr ""
#. module: account_asset
#: field:asset.depreciation.confirmation.wizard,period_id:0
msgid "Period"
msgstr ""
#. module: account_asset
#: view:account.asset.asset:0
msgid "General"
msgstr ""
#. module: account_asset
#: field:account.asset.asset,prorata:0 field:account.asset.category,prorata:0
msgid "Prorata Temporis"
msgstr ""
#. module: account_asset
#: view:account.asset.category:0
msgid "Accounting Information"
msgstr ""
#. module: account_asset
#: model:ir.model,name:account_asset.model_account_invoice
msgid "Invoice"
msgstr ""
#. module: account_asset
#: model:ir.actions.act_window,name:account_asset.action_account_asset_asset_form_normal
msgid "Review Asset Categories"
msgstr ""
#. module: account_asset
#: view:asset.depreciation.confirmation.wizard:0 view:asset.modify:0
msgid "Cancel"
msgstr ""
#. module: account_asset
#: selection:account.asset.asset,state:0 selection:asset.asset.report,state:0
msgid "Close"
msgstr ""
#. module: account_asset
#: view:account.asset.asset:0 view:account.asset.category:0
msgid "Depreciation Method"
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 ""
#. module: account_asset
#: selection:account.asset.asset,method:0
#: selection:account.asset.category,method:0
msgid "Degressive"
msgstr ""
#. 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 ""
#. module: account_asset
#: field:account.asset.depreciation.line,remaining_value:0
msgid "Amount to Depreciate"
msgstr ""
#. module: account_asset
#: field:account.asset.category,open_asset:0
msgid "Skip Draft State"
msgstr ""
#. module: account_asset
#: view:account.asset.asset:0 view:account.asset.category:0
#: view:account.asset.history:0
msgid "Depreciation Dates"
msgstr ""
#. module: account_asset
#: field:account.asset.asset,currency_id:0
msgid "Currency"
msgstr ""
#. module: account_asset
#: field:account.asset.category,journal_id:0
msgid "Journal"
msgstr ""
#. module: account_asset
#: field:account.asset.depreciation.line,depreciated_value:0
msgid "Amount Already Depreciated"
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 ""
#. module: account_asset
#: help:account.asset.asset,state:0
msgid ""
"When an asset is created, the state is 'Draft'.\n"
"If the asset is confirmed, the state 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 state."
msgstr ""
#. module: account_asset
#: field:account.asset.category,name:0
msgid "Name"
msgstr ""
#. 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
#: view:account.asset.asset:0
msgid "Set to Draft"
msgstr ""
#. module: account_asset
#: selection:account.asset.asset,method:0
#: selection:account.asset.category,method:0
msgid "Linear"
msgstr ""
#. module: account_asset
#: view:asset.asset.report:0
msgid "Month-1"
msgstr ""
#. module: account_asset
#: model:ir.model,name:account_asset.model_account_asset_depreciation_line
msgid "Asset depreciation line"
msgstr ""
#. module: account_asset
#: field:account.asset.asset,category_id:0 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 ""
#. module: account_asset
#: view:asset.asset.report:0
msgid "Assets purchased in last month"
msgstr ""
#. module: account_asset
#: code:addons/account_asset/wizard/wizard_asset_compute.py:49
#, python-format
msgid "Created Asset Moves"
msgstr ""
#. module: account_asset
#: constraint:account.move.line:0
msgid "You can not create journal items on closed account."
msgstr ""
#. module: account_asset
#: model:ir.actions.act_window,help:account_asset.action_asset_asset_report
msgid ""
"From this report, you can have an overview on all depreciation. The tool "
"search can also be used to personalise your Assets reports and so, match "
"this analysis to your needs;"
msgstr ""
#. 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.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:asset.depreciation.confirmation.wizard:0
msgid "Post Depreciation Lines"
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 ""

View File

@ -4,3 +4,4 @@ access_account_budget_post,account.budget.post,model_account_budget_post,account
access_account_budget_post_accountant,account.budget.post accountant,model_account_budget_post,account.group_account_user,1,1,1,1
access_crossovered_budget_accountant,crossovered.budget accountant,model_crossovered_budget,account.group_account_user,1,1,1,1
access_crossovered_budget_lines_accountant,crossovered.budget.lines accountant,model_crossovered_budget_lines,account.group_account_user,1,1,1,1
access_budget,crossovered.budget.lines manager,model_crossovered_budget_lines,base.group_user,1,0,0,0

1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
4 access_account_budget_post_accountant account.budget.post accountant model_account_budget_post account.group_account_user 1 1 1 1
5 access_crossovered_budget_accountant crossovered.budget accountant model_crossovered_budget account.group_account_user 1 1 1 1
6 access_crossovered_budget_lines_accountant crossovered.budget.lines accountant model_crossovered_budget_lines account.group_account_user 1 1 1 1
7 access_budget crossovered.budget.lines manager model_crossovered_budget_lines base.group_user 1 0 0 0

View File

@ -4,3 +4,4 @@ access_analytic_user_funct_manager,analytic user funct manager,model_analytic_us
access_analytic_user_funct_account_manager,analytic user funct account manager,model_analytic_user_funct_grid,account.group_account_manager,1,1,1,1
access_analytic_user_funct_grid_hr_user,analytic user funct grid hr user,model_analytic_user_funct_grid,base.group_hr_user,1,0,0,0
access_analytic_user_funct_grid_hr_manager,analytic user funct grid hr manager,model_analytic_user_funct_grid,base.group_hr_manager,1,1,1,1
access_analytic_user_funct_grid_all,analytic user funct grid,model_analytic_user_funct_grid,base.group_user,1,0,0,0

1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
4 access_analytic_user_funct_account_manager analytic user funct account manager model_analytic_user_funct_grid account.group_account_manager 1 1 1 1
5 access_analytic_user_funct_grid_hr_user analytic user funct grid hr user model_analytic_user_funct_grid base.group_hr_user 1 0 0 0
6 access_analytic_user_funct_grid_hr_manager analytic user funct grid hr manager model_analytic_user_funct_grid base.group_hr_manager 1 1 1 1
7 access_analytic_user_funct_grid_all analytic user funct grid model_analytic_user_funct_grid base.group_user 1 0 0 0

View File

@ -8,14 +8,14 @@ msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-02-08 00:36+0000\n"
"PO-Revision-Date: 2012-06-08 02:21+0000\n"
"PO-Revision-Date: 2012-07-07 21:07+0000\n"
"Last-Translator: Akira Hiyama <Unknown>\n"
"Language-Team: Japanese <ja@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-06-28 04:39+0000\n"
"X-Generator: Launchpad (build 15505)\n"
"X-Launchpad-Export-Date: 2012-07-08 04:41+0000\n"
"X-Generator: Launchpad (build 15558)\n"
#. module: base_action_rule
#: help:base.action.rule,act_mail_to_user:0
@ -31,7 +31,7 @@ msgstr "パートナを思い出させる"
#. module: base_action_rule
#: field:base.action.rule,trg_partner_categ_id:0
msgid "Partner Category"
msgstr "取引先分類"
msgstr "パートナ分類"
#. module: base_action_rule
#: field:base.action.rule,act_mail_to_watchers:0
@ -156,7 +156,7 @@ msgid ""
"14 days might trigger an automatic reminder email."
msgstr ""
"多種の画面のために自動的なアクションを自動的にトリガー実行するために使います。例えば、特定のユーザにより作成されたリードには自動的に特定の営業チームを設定"
"したり、オポチュニティが保留中になって14日を経過したので、自動的に通知Eメールの送信をトリガーしたりできます。"
"したり、商談が保留中になって14日を経過したので、自動的に通知Eメールの送信をトリガーしたりできます。"
#. module: base_action_rule
#: help:base.action.rule,act_mail_to_email:0

View File

@ -0,0 +1,26 @@
# -*- coding: utf-8 -*-
##############################################################################
#
# OpenERP, Open Source Management Solution
# Copyright (C) 2004-2010 Tiny SPRL (<http://tiny.be>).
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
##############################################################################
import base_calendar
import crm_meeting
import wizard
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

View File

@ -22,7 +22,7 @@
{
"name": "Calendar Layer",
"version": "1.0",
"depends": ["base", "mail"],
"depends": ["base", "base_status", "mail"],
'description': """
This is a full-featured calendar system.
========================================
@ -46,7 +46,8 @@ If you need to manage your meetings, you should install the CRM module.
'security/calendar_security.xml',
'security/ir.model.access.csv',
'wizard/base_calendar_invite_attendee_view.xml',
'base_calendar_view.xml'
'base_calendar_view.xml',
'crm_meeting_view.xml',
],
"test" : ['test/base_calendar_test.yml'],
"installable": True,

View File

@ -0,0 +1,82 @@
# -*- 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 osv import osv, fields
import tools
from tools.translate import _
import base_calendar
from 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.
#
class crm_meeting_type(osv.Model):
_name = 'crm.meeting.type'
_description = 'Meeting Type'
_columns = {
'name': fields.char('Name', size=64, required=True, translate=True),
}
class crm_meeting(base_state, osv.Model):
""" Model for CRM meetings """
_name = 'crm.meeting'
_description = "Meeting"
_order = "id desc"
_inherit = ["calendar.event", 'ir.needaction_mixin', "mail.thread"]
_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),
'date_closed': fields.datetime('Closed', readonly=True),
'partner_id': fields.many2one('res.partner', 'Partner', states={'done': [('readonly', True)]}),
'email_from': fields.char('Email', size=128, states={'done': [('readonly', True)]},
help="These people will receive email."),
'state': fields.selection(
[('draft', 'Unconfirmed'), ('open', 'Confirmed'), ('cancel', 'Cancelled'), ('done', 'Done')],
string='Status', size=16, readonly=True),
# Meeting fields
'name': fields.char('Summary', size=128, required=True, states={'done': [('readonly', True)]}),
'categ_id': fields.many2one('crm.meeting.type', 'Meeting Type'),
'attendee_ids': fields.many2many('calendar.attendee', 'meeting_attendee_rel',\
'event_id', 'attendee_id', 'Attendees', states={'done': [('readonly', True)]}),
}
_defaults = {
'state': 'draft',
}
# ----------------------------------------
# OpenChatter
# ----------------------------------------
def case_get_note_msg_prefix(self, cr, uid, id, context=None):
return 'Meeting'
def case_open_send_note(self, cr, uid, ids, context=None):
return self.message_append_note(cr, uid, ids, body=_("Meeting has been <b>confirmed</b>."), context=context)
def case_close_send_note(self, cr, uid, ids, context=None):
return self.message_append_note(cr, uid, ids, body=_("Meeting has been <b>done</b>."), context=context)

View File

@ -0,0 +1,371 @@
<?xml version="1.0"?>
<openerp>
<data>
<!-- Read/Unread actions -->
<record id="actions_server_crm_meeting_read" model="ir.actions.server">
<field name="name">Mark read</field>
<field name="condition">True</field>
<field name="type">ir.actions.server</field>
<field name="model_id" ref="model_crm_meeting"/>
<field name="state">code</field>
<field name="code">self.message_check_and_set_read(cr, uid, context.get('active_ids'), context=context)</field>
</record>
<record id="action_crm_meeting_read" model="ir.values">
<field name="name">action_crm_meeting_read</field>
<field name="action_id" ref="actions_server_crm_meeting_read"/>
<field name="value" eval="'ir.actions.server,' + str(ref('actions_server_crm_meeting_read'))" />
<field name="key">action</field>
<field name="model_id" ref="model_crm_meeting" />
<field name="model">crm.meeting</field>
<field name="key2">client_action_multi</field>
</record>
<record id="actions_server_crm_meeting_unread" model="ir.actions.server">
<field name="name">Mark unread</field>
<field name="condition">True</field>
<field name="type">ir.actions.server</field>
<field name="model_id" ref="model_crm_meeting"/>
<field name="state">code</field>
<field name="code">self.message_check_and_set_unread(cr, uid, context.get('active_ids'), context=context)</field>
</record>
<record id="action_crm_meeting_unread" model="ir.values">
<field name="name">action_crm_meeting_unread</field>
<field name="action_id" ref="actions_server_crm_meeting_unread"/>
<field name="value" eval="'ir.actions.server,' + str(ref('actions_server_crm_meeting_unread'))" />
<field name="key">action</field>
<field name="model_id" ref="model_crm_meeting" />
<field name="model">crm.meeting</field>
<field name="key2">client_action_multi</field>
</record>
<!-- CRM Meetings Types Form View -->
<record id="view_crm_meeting_type_tree" model="ir.ui.view">
<field name="name">Meeting Types Tree</field>
<field name="model">crm.meeting.type</field>
<field name="type">tree</field>
<field name="arch" type="xml">
<tree string="Meeting Types" editable="bottom">
<field name="name"/>
</tree>
</field>
</record>
<record id="action_crm_meeting_type" model="ir.actions.act_window">
<field name="name">Meeting Types</field>
<field name="res_model">crm.meeting.type</field>
<field name="view_type">form</field>
<field name="view_id" ref="view_crm_meeting_type_tree"/>
<field name="help">Create different meeting categories to better organize and classify your meetings.</field>
</record>
<menuitem id="menu_crm_meeting_type" parent="base.menu_calendar_configuration" sequence="1"
action="action_crm_meeting_type" groups="base.group_no_one"/>
<!-- CRM Meetings Form View -->
<record model="ir.ui.view" id="view_crm_meeting_form">
<field name="name">CRM - Meetings Form</field>
<field name="model">crm.meeting</field>
<field name="type">form</field>
<field name="arch" type="xml">
<form string="Meetings" version="7.0">
<header>
<button name="case_open" string="Confirm" type="object" class="oe_highlight"
states="draft"/>
<button name="case_close" string="Done" type="object" class="oe_highlight"
states="open"/>
<button name="case_reset" string="Reset to Unconfirmed" type="object"
states="cancel,done"/>
<button name="case_cancel" string="Cancel" type="object"
states="draft,open"/>
<field name="state" widget="statusbar" statusbar_visible="draft,open,done"/>
</header>
<sheet>
<div class="oe_title">
<div class="oe_edit_only">
<label for="name" string="Title"/>
(<field name="allday" on_change="onchange_dates(date,False,False,allday)" class="oe_inline"/>
<label for="allday" string="All Day?"/>)
</div>
<h1>
<field name="name"/>
</h1>
<h2>
<label for="date" string="Starting at"/>
<field name="date" required="1" class="oe_inline"/>
<label for="location" string="in" class="oe_inline" attrs="{'invisible': [('location', '=', False)]}"/>
<field name="location" placeholder="Specify the location here" class="oe_inline"/>
</h2>
<h2>
<label for="duration" string="Duration" />
<field name="duration" widget="float_time"
on_change="onchange_dates(date,duration,False,allday)"
class="oe_inline"/> (
<field name="date_deadline"
string="End Date" required="1"
on_change="onchange_dates(date,False,date_deadline)"
class="oe_inline"/> )
</h2>
</div>
<group>
<group>
<field name="user_id" />
<field name="organizer"/>
</group>
<group>
<field name="alarm_id" string="Reminder" widget="selection" />
<field name="class" string="Privacy"/>
<field name="show_as" string="Show Time as"/>
<field name="recurrency" string="Recurrence" attrs="{'readonly': ['|', ('recurrent_uid','!=',False), ('state','=','done')]}"/>
</group>
<group>
<field name="partner_id" string="Partner"
on_change="onchange_partner_id(partner_id)" />
<field name="email_from"/>
</group>
<group>
<field name="categ_id" widget="selection"/>
<field name="rrule" invisible="1" readonly="1"/>
<field name="recurrent_id" invisible="1"/>
<field name="recurrent_uid" invisible="1"/>
</group>
</group>
<separator string="Description"/>
<field name="description"/>
<notebook>
<page string="Invitation Detail">
<button string="Invite People"
name="%(base_calendar.action_view_calendar_invite_attendee_wizard)d"
icon="terp-partner" type="action"
attrs="{'readonly': [('state', '=', 'done')]}"
context="{'model' : 'crm.meeting', 'attendee_field':'attendee_ids'}" colspan="2"/>
<field name="attendee_ids" widget="one2many" mode="tree">
<tree string="Invitation details" editable="top">
<field name="sent_by_uid" string="From"/>
<field name="user_id" string="To"/>
<field name="email" string="Mail To"/>
<field name="role" />
<field name="state" />
<button name="do_tentative"
states="needs-action,declined,accepted"
string="Uncertain" type="object"
icon="terp-crm" />
<button name="do_accept" string="Accept"
states="needs-action,tentative,declined"
type="object" icon="gtk-apply" />
<button name="do_decline" string="Decline"
states="needs-action,tentative,accepted"
type="object" icon="gtk-cancel" />
<button
name="%(base_calendar.action_view_calendar_invite_attendee_wizard)d"
string="Delegate" type="action"
icon="gtk-sort-descending"
states="needs-action,tentative,declined,accepted"
context="{'model' : 'calendar.attendee', 'attendee_field' : 'child_ids'}" />
</tree>
<form string="Invitation details" version="7.0">
<header>
<button name="do_tentative" type="object"
states="needs-action,declined,accepted"
string="Uncertain" icon="terp-crm" />
<button name="do_accept" type="object"
states="needs-action,tentative,declined"
string="Accept" icon="gtk-apply" />
<button name="do_decline" type="object"
states="needs-action,tentative,accepted"
string="Decline" icon="gtk-cancel" />
<button name="%(base_calendar.action_view_calendar_invite_attendee_wizard)d" type="action"
states="needs-action,tentative,declined,accepted"
string="Delegate" icon="gtk-sort-descending"
context="{'model' : 'calendar.attendee', 'attendee_field' : 'child_ids'}" />
<field name="state" widget="statusbar" statusbar_visible="draft,open,done"/>
</header>
<group>
<group>
<field name="email" />
<field name="rsvp" />
<field name="cutype" />
<field name="role" />
</group>
<group>
<field name="user_id"/>
</group>
</group>
</form>
</field>
</page>
<page string="Recurrence Options"><!-- attrs="{'invisible': [('recurrency','=',False)], 'readonly': ['|', ('recurrent_uid','!=',False), ('state','=','done')]}">-->
<group col="4" colspan="4" name="rrule">
<group col="4" colspan="4">
<field name="rrule_type" string=" Recurrence Pattern" />
<field name="interval" />
<field name="end_type" />
<label string=" " colspan="2" />
<newline />
<field name="count" attrs="{'invisible' : [('end_type', '!=', 'count')] }"/>
<label string=" " colspan="2" />
<newline />
<field name="end_date" attrs="{'invisible' : [('end_type', '!=', 'end_date')], 'required': [('end_type', '=', 'end_date')]}"/>
<newline />
</group>
<group col="8" colspan="4" name="Select weekdays" attrs="{'invisible' :[('rrule_type','not in', ['weekly'])]}">
<separator string="Choose day where repeat the meeting" colspan="8"/>
<field name="mo" colspan="1" />
<field name="tu" colspan="1" />
<field name="we" colspan="1" />
<field name="th" colspan="1" />
<newline/>
<field name="fr" colspan="1" />
<field name="sa" colspan="1" />
<field name="su" colspan="1" />
<newline />
</group>
<group col="10" colspan="4"
attrs="{'invisible' : [('rrule_type','!=','monthly')]}">
<separator string="Choose day in the month where repeat the meeting" colspan="12"/>
<group col="2" colspan="1">
<field name="select1" />
</group>
<group col="2" colspan="1">
<field name="day"
attrs="{'required' : [('select1','=','date'), ('rrule_type','=','monthly')],
'invisible' : [('select1','=','day')]}" />
</group>
<group col="3" colspan="1">
<field name="byday" string="The"
attrs="{'required' : [('select1','=','day'), ('rrule_type','=','monthly')], 'invisible' : [('select1','=','date')]}" />
<field name="week_list" nolabel="1"
attrs="{'required' : [('select1','=','day'), ('rrule_type','=','monthly')], 'invisible' : [('select1','=','date')]}" />
</group>
</group>
</group>
</page>
</notebook>
</sheet>
<footer>
<field name="message_ids" widget="mail_thread"/>
</footer>
</form>
</field>
</record>
<!-- CRM Meeting Tree View -->
<record model="ir.ui.view" id="view_crm_meeting_tree">
<field name="name">CRM - Meetings Tree</field>
<field name="model">crm.meeting</field>
<field name="type">tree</field>
<field name="arch" type="xml">
<tree string="Meetings" fonts="bold:needaction_pending==True"
colors="red:state=='open';black:state in ('draft', 'cancel','done','pending')">
<field name="name" string="Subject" />
<field name="user_id"/>
<field name="date"/>
<field name="state"/>
<field name="duration" />
<field name="partner_id" string="Partner" />
<field name="location" />
<field name="categ_id"/>
<field name="needaction_pending" invisible="1"/>
</tree>
</field>
</record>
<!-- CRM Meeting Calendar -->
<record model="ir.ui.view" id="view_crm_meeting_calendar">
<field name="name">CRM - Meetings Calendar</field>
<field name="model">crm.meeting</field>
<field name="type">calendar</field>
<field name="priority" eval="2"/>
<field name="arch" type="xml">
<calendar string="Meetings" date_start="date" color="user_id" date_stop="date_deadline" date_delay="duration">
<field name="name"/>
<field name="partner_id"/>
</calendar>
</field>
</record>
<!-- CRM Meeting Gantt -->
<record id="view_crm_meeting_gantt" model="ir.ui.view">
<field name="name">CRM - Meetings Gantt</field>
<field name="model">crm.meeting</field>
<field name="type">gantt</field>
<field name="arch" type="xml">
<gantt date_delay="duration" date_start="date" string="Meetings"/>
</field>
</record>
<!-- CRM Meeting Search View -->
<record id="view_crm_meeting_search" model="ir.ui.view">
<field name="name">CRM - Meetings Search</field>
<field name="model">crm.meeting</field>
<field name="type">search</field>
<field name="arch" type="xml">
<search string="Search Meetings">
<group>
<field name="name" string="Meeting / Partner"
filter_domain="['|',('name','ilike',self),('partner_id','ilike', self)]"/>
<filter string="Inbox" help="Unread messages" icon="terp-mail-message-new"
name="needaction_pending" domain="[('needaction_pending','=',True)]"/>
<separator orientation="vertical"/>
<filter string="My Meetings" help="My Meetings" icon="terp-personal"
domain="[('user_id','=',uid)]"/>
<separator orientation="vertical"/>
<field name="user_id"/>
<field name="partner_id"/>
</group>
</search>
</field>
</record>
<!-- CRM Meetings action and menu -->
<record id="action_crm_meeting" model="ir.actions.act_window">
<field name="name">Meetings</field>
<field name="res_model">crm.meeting</field>
<field name="view_mode">calendar,tree,form,gantt</field>
<field name="view_id" ref="view_crm_meeting_calendar"/>
<field name="search_view_id" ref="view_crm_meeting_search"/>
<field name="context">{"calendar_default_user_id": uid}</field>
<field name="help">
The meeting calendar is shared between the sales teams and fully integrated with other applications
such as the employee holidays or the business opportunities.
You can also synchronize meetings with your mobile phone using the caldav interface.
</field>
</record>
<record model="ir.actions.act_window.view" id="action_view_crm_meeting_calendar">
<field name="act_window_id" ref="action_crm_meeting"/>
<field name="sequence" eval="1"/>
<field name="view_mode">calendar</field>
<field name="view_id" ref="view_crm_meeting_calendar"/>
</record>
<record model="ir.actions.act_window.view" id="action_view_crm_meeting_tree">
<field name="act_window_id" ref="action_crm_meeting"/>
<field name="sequence" eval="2"/>
<field name="view_mode">tree</field>
<field name="view_id" ref="view_crm_meeting_tree"/>
</record>
<record model="ir.actions.act_window.view" id="action_view_crm_meeting_form">
<field name="act_window_id" ref="action_crm_meeting"/>
<field name="sequence" eval="3"/>
<field name="view_mode">form</field>
<field name="view_id" ref="view_crm_meeting_form"/>
</record>
<record model="ir.actions.act_window.view" id="action_view_crm_meeting_gantt">
<field name="act_window_id" ref="action_crm_meeting"/>
<field name="sequence" eval="4"/>
<field name="view_mode">gantt</field>
<field name="view_id" ref="view_crm_meeting_gantt"/>
</record>
<menuitem id="menu_crm_meeting" parent="base.menu_sales" sequence="8"
name="Meetings" action="action_crm_meeting"/>
</data>
</openerp>

View File

@ -5,3 +5,9 @@ access_res_alarm,res.alarm,model_res_alarm,base.group_user,1,1,1,1
access_calendar_todo,calendar.todo,model_calendar_todo,base.group_user,1,1,1,1
access_calendar_event,calendar.event,model_calendar_event,base.group_user,1,1,1,1
access_calendar_attendee_survey_user,calendar.attendee,model_calendar_attendee,base.group_survey_user,1,0,0,0
access_crm_meeting_manager,crm.meeting.manager,model_crm_meeting,base.group_sale_manager,1,1,1,1
access_crm_meeting,crm.meeting,model_crm_meeting,base.group_sale_salesman,1,1,1,0
access_crm_meeting_all,crm.meeting_allll,model_crm_meeting,base.group_user,1,0,0,0
access_crm_meeting_partner_manager,crm.meeting.partner.manager,model_crm_meeting,base.group_partner_manager,1,1,1,1
access_crm_meeting_type_manager,crm.meeting.type.manager,model_crm_meeting_type,base.group_sale_manager,1,1,1,0
access_crm_meeting_type_manager,crm.meeting.type.manager,model_crm_meeting_type,base.group_system,1,1,1,1

1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
5 access_calendar_todo calendar.todo model_calendar_todo base.group_user 1 1 1 1
6 access_calendar_event calendar.event model_calendar_event base.group_user 1 1 1 1
7 access_calendar_attendee_survey_user calendar.attendee model_calendar_attendee base.group_survey_user 1 0 0 0
8 access_crm_meeting_manager crm.meeting.manager model_crm_meeting base.group_sale_manager 1 1 1 1
9 access_crm_meeting crm.meeting model_crm_meeting base.group_sale_salesman 1 1 1 0
10 access_crm_meeting_all crm.meeting_allll model_crm_meeting base.group_user 1 0 0 0
11 access_crm_meeting_partner_manager crm.meeting.partner.manager model_crm_meeting base.group_partner_manager 1 1 1 1
12 access_crm_meeting_type_manager crm.meeting.type.manager model_crm_meeting_type base.group_sale_manager 1 1 1 0
13 access_crm_meeting_type_manager crm.meeting.type.manager model_crm_meeting_type base.group_system 1 1 1 1

View File

@ -12,29 +12,27 @@
or
<button string="Cancel" type="object" name="cancel" class="oe_link"/>
</header>
<sheet>
<group string="Company Settings">
<group>
<field name="module_multi_company"/>
</group>
<group>
<div>
You will also find several configuration options on your company data:
address for the header and footer, overdue payments texts, etc.
</div>
<button type="object" name="open_company" string="Configure Your Company Data" icon="gtk-execute"/>
</group>
<group string="Company Settings">
<group>
<field name="module_multi_company"/>
</group>
<group string="External Accesses">
<field name="module_share"/>
<field name="module_portal"/>
<group>
<div>
You will also find several configuration options on your company data:
address for the header and footer, overdue payments texts, etc.
</div>
<button type="object" name="open_company" string="Configure Your Company Data" icon="gtk-execute"/>
</group>
<group string="Others">
<label for="id" string="Outgoing Mail Servers"/>
<button type="action" name="%(base.action_ir_mail_server_list)d"
string="Configure" icon="gtk-execute"/>
</group>
</sheet>
</group>
<group string="External Accesses">
<field name="module_share"/>
<field name="module_portal"/>
</group>
<group string="Others">
<label for="id" string="Outgoing Mail Servers"/>
<button type="action" name="%(base.action_ir_mail_server_list)d"
string="Configure" icon="gtk-execute"/>
</group>
</form>
</field>
</record>
@ -60,15 +58,13 @@
or
<button string="Cancel" type="object" name="cancel" class="oe_link"/>
</header>
<sheet>
<field name="module_crm" invisible="1"/>
<group name="config_sale"/>
<group name="config_fetchmail" string="Emails" attrs="{'invisible': [('module_crm','=',False)]}">
<field name="module_plugin_thunderbird"/>
<field name="module_plugin_outlook"/>
</group>
<group name="config_crm"/>
</sheet>
<field name="module_crm" invisible="1"/>
<group name="config_sale"/>
<group name="config_fetchmail" string="Emails" attrs="{'invisible': [('module_crm','=',False)]}">
<field name="module_plugin_thunderbird"/>
<field name="module_plugin_outlook"/>
</group>
<group name="config_crm"/>
</form>
</field>
</record>

View File

@ -29,6 +29,7 @@ class base_state(object):
- ``date_closed`` (datetime field)
- ``user_id`` (many2one to res.users)
- ``partner_id`` (many2one to res.partner)
- ``email_from`` (char field)
- ``state`` (selection field)
"""

View File

@ -0,0 +1,32 @@
# 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: 2011-01-11 11:14+0000\n"
"PO-Revision-Date: 2012-07-08 19:30+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Mongolian <mn@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-07-09 04:51+0000\n"
"X-Generator: Launchpad (build 15558)\n"
#. module: base_tools
#: model:ir.module.module,shortdesc:base_tools.module_meta_information
msgid "Common base for tools modules"
msgstr "Багажийн модулиудын ерөнхий суурь"
#. module: base_tools
#: model:ir.module.module,description:base_tools.module_meta_information
msgid ""
"\n"
" "
msgstr ""
"\n"
" "

View File

@ -22,8 +22,8 @@
import crm
import crm_action_rule
import crm_segmentation
import crm_meeting
import crm_lead
import crm_meeting
import crm_phonecall
import report
import wizard

View File

@ -69,10 +69,10 @@
<field name="name">Meetings</field>
<field name="res_model">crm.meeting</field>
<field name="view_mode">calendar,tree,form,gantt</field>
<field name="view_id" ref="crm.crm_case_tree_view_meet"/>
<field name="view_id" ref="base_calendar.view_crm_meeting_tree"/>
<field name="context">{"calendar_default_user_id":uid}</field>
<field name="domain">[('state','=','open'),('date','&gt;',datetime.date.today().strftime("%Y-%m-%d %H:%M:%S"))]</field>
<field name="search_view_id" ref="view_crm_case_meetings_filter"/>
<field name="search_view_id" ref="base_calendar.view_crm_meeting_search"/>
</record>
<record model="ir.ui.view" id="board_crm_statistical_form">

View File

@ -9,7 +9,7 @@
<field name="name">Meetings</field>
<field name="resource">ir.ui.menu</field>
<field name="user_id" ref="base.user_demo"/>
<field name="res_id" ref="crm.menu_crm_case_categ_meet"/>
<field name="res_id" ref="base_calendar.menu_crm_meeting"/>
</record>
<record model="crm.case.section" id="section_sales_marketing_department">

View File

@ -41,6 +41,7 @@ class crm_lead(base_stage, osv.osv):
_description = "Lead/Opportunity"
_order = "priority,date_action,id desc"
_inherit = ['ir.needaction_mixin', 'mail.thread']
_mail_compose_message = True
def _get_default_section_id(self, cr, uid, context=None):
""" Gives default section by checking if present in the context """
@ -763,43 +764,21 @@ class crm_lead(base_stage, osv.osv):
}
def action_makeMeeting(self, cr, uid, ids, context=None):
""" This opens Meeting's calendar view to schedule meeting on current Opportunity
@return : Dictionary value for created Meeting view
"""
This opens Meeting's calendar view to schedule meeting on current Opportunity
@return : Dictionary value for created Meeting view
"""
if context is None:
context = {}
value = {}
data_obj = self.pool.get('ir.model.data')
for opp in self.browse(cr, uid, ids, context=context):
# Get meeting views
tree_view = data_obj.get_object_reference(cr, uid, 'crm', 'crm_case_tree_view_meet')
form_view = data_obj.get_object_reference(cr, uid, 'crm', 'crm_case_form_view_meet')
calander_view = data_obj.get_object_reference(cr, uid, 'crm', 'crm_case_calendar_view_meet')
search_view = data_obj.get_object_reference(cr, uid, 'crm', 'view_crm_case_meetings_filter')
context.update({
'default_opportunity_id': opp.id,
'default_partner_id': opp.partner_id and opp.partner_id.id or False,
'default_user_id': uid,
'default_section_id': opp.section_id and opp.section_id.id or False,
'default_email_from': opp.email_from,
'default_state': 'open',
'default_name': opp.name
})
value = {
'name': _('Meetings'),
'context': context,
'view_type': 'form',
'view_mode': 'calendar,form,tree',
'res_model': 'crm.meeting',
'view_id': False,
'views': [(calander_view and calander_view[1] or False, 'calendar'), (form_view and form_view[1] or False, 'form'), (tree_view and tree_view[1] or False, 'tree')],
'type': 'ir.actions.act_window',
'search_view_id': search_view and search_view[1] or False,
'nodestroy': True
}
return value
opportunity = self.browse(cr, uid, ids[0], context)
res = self.pool.get('ir.actions.act_window').for_xml_id(cr, uid, 'base_calendar', 'action_crm_meeting', context)
res['context'] = {
'default_opportunity_id': opportunity.id,
'default_partner_id': opportunity.partner_id and opportunity.partner_id.id or False,
'default_user_id': uid,
'default_section_id': opportunity.section_id and opportunity.section_id.id or False,
'default_email_from': opportunity.email_from,
'default_state': 'open',
'default_name': opportunity.name,
}
return res
def unlink(self, cr, uid, ids, context=None):
for lead in self.browse(cr, uid, ids, context):

View File

@ -316,7 +316,7 @@
<t t-if="record.date_action.raw_value"> : </t>
<field name="title_action"/>
</div>
<div class="oe_right">
<div class="oe_kanban_bottom_right">
<a t-if="record.priority.raw_value == 1" type="object" name="set_normal_priority" class="oe_e oe_star_on">7</a>
<a t-if="record.priority.raw_value != 1" type="object" name="set_high_priority" class="oe_e oe_star_off">7</a>
<!--
@ -468,7 +468,7 @@
<h2>
<field name="planned_revenue" class="oe_inline"/>
<field name="company_currency" class="oe_inline"/> at
<field name="probability" class="oe_inline"/> %% success rate
<field name="probability" class="oe_inline"/>%% success rate
</h2>
</div>
<group>

View File

@ -19,56 +19,23 @@
#
##############################################################################
from base_calendar import base_calendar
from base_status.base_state import base_state
from base_status.base_stage import base_stage
import logging
from osv import fields, osv
import tools
from tools.translate import _
import logging
_logger = logging.getLogger(__name__)
class crm_lead(base_stage, osv.osv):
""" CRM Leads """
_name = 'crm.lead'
class crm_meeting(base_state, osv.Model):
#
# crm.meeting is defined in module base_calendar
#
class crm_meeting(osv.Model):
""" Model for CRM meetings """
_name = 'crm.meeting'
_description = "Meeting"
_order = "id desc"
_inherit = ["calendar.event", 'ir.needaction_mixin', "mail.thread"]
_inherit = 'crm.meeting'
_columns = {
# base_state required fields
'partner_id': fields.many2one('res.partner', 'Partner', states={'done': [('readonly', True)]}),
'section_id': fields.many2one('crm.case.section', 'Sales Team', states={'done': [('readonly', True)]},
select=True, groups='base.group_sale_salesman', help='Sales team to which Case belongs to.'),
'email_from': fields.char('Email', size=128, states={'done': [('readonly', True)]}, help="These people will receive email."),
'create_date': fields.datetime('Creation Date' , readonly=True),
'write_date': fields.datetime('Write Date' , readonly=True),
'date_action_last': fields.datetime('Last Action', readonly=1),
'date_action_next': fields.datetime('Next Action', readonly=1),
# Meeting fields
'name': fields.char('Summary', size=124, required=True, states={'done': [('readonly', True)]}),
'categ_id': fields.many2one('crm.case.categ', 'Meeting Type', \
domain="[('object_id.model', '=', 'crm.meeting')]", \
),
'phonecall_id': fields.many2one ('crm.phonecall', 'Phonecall'),
'opportunity_id': fields.many2one ('crm.lead', 'Opportunity', domain="[('type', '=', 'opportunity')]"),
'attendee_ids': fields.many2many('calendar.attendee', 'meeting_attendee_rel',\
'event_id', 'attendee_id', 'Attendees', states={'done': [('readonly', True)]}),
'date_closed': fields.datetime('Closed', readonly=True),
'date_deadline': fields.datetime('Deadline', states={'done': [('readonly', True)]}),
'state': fields.selection([ ('draft', 'Unconfirmed'),
('open', 'Confirmed'),
('cancel', 'Cancelled'),
('done', 'Done')],
string='Status', size=16, readonly=True),
}
_defaults = {
'state': 'draft',
'active': 1,
'user_id': lambda self, cr, uid, ctx: uid,
}
def create(self, cr, uid, vals, context=None):
@ -76,52 +43,28 @@ class crm_meeting(base_state, osv.Model):
self.create_send_note(cr, uid, [obj_id], context=context)
return obj_id
def case_open(self, cr, uid, ids, context=None):
""" Confirms meeting """
res = super(crm_meeting, self).case_open(cr, uid, ids, context)
for (id, name) in self.name_get(cr, uid, ids):
id=base_calendar.base_calendar_id2real_id(id)
return res
# ----------------------------------------
# OpenChatter
# ----------------------------------------
def case_get_note_msg_prefix(self, cr, uid, id, context=None):
return 'Meeting'
def create_send_note(self, cr, uid, ids, context=None):
if context is None:
context = {}
# update context: if come from phonecall, default state values can make the message_append_note crash
context.pop('default_state', False)
for meeting in self.browse(cr, uid, ids, context=context):
# convert datetime field to a datetime, using server format, then
# convert it to the user TZ and re-render it with %Z to add the timezone
meeting_datetime = fields.DT.datetime.strptime(meeting.date, tools.DEFAULT_SERVER_DATETIME_FORMAT)
meeting_date_str = fields.datetime.context_timestamp(cr, uid, meeting_datetime, context=context).strftime(tools.DATETIME_FORMATS_MAP['%+'] + " (%Z)")
message = _("A meeting has been <b>scheduled</b> on <em>%s</em>.") % (meeting_date_str)
# in the message, transpose meeting.date to the timezone of the current user
meeting_date = fields.DT.datetime.strptime(meeting.date, tools.DEFAULT_SERVER_DATETIME_FORMAT)
meeting_date_tz = fields.datetime.context_timestamp(cr, uid, meeting_date, context=context).strftime(tools.DATETIME_FORMATS_MAP['%+'] + " (%Z)")
if meeting.opportunity_id: # meeting can be create from phonecalls or opportunities, therefore checking for the parent
lead = meeting.opportunity_id
parent_message = _("Meeting linked to the opportunity <em>%s</em> has been <b>created</b> and <b>cscheduled</b> on <em>%s</em>.") % (lead.name, meeting.date)
message = _("Meeting linked to the opportunity <em>%s</em> has been <b>created</b> and <b>scheduled</b> on <em>%s</em>.") % (lead.name, meeting_date_tz)
lead.message_append_note(_('System Notification'), message)
elif meeting.phonecall_id:
phonecall = meeting.phonecall_id
parent_message = _("Meeting linked to the phonecall <em>%s</em> has been <b>created</b> and <b>cscheduled</b> on <em>%s</em>.") % (phonecall.name, meeting.date)
message = _("Meeting linked to the phonecall <em>%s</em> has been <b>created</b> and <b>scheduled</b> on <em>%s</em>.") % (phonecall.name, meeting_date_tz)
phonecall.message_append_note(body=message)
else:
parent_message = message
if parent_message:
meeting.message_append_note(body=parent_message)
message = _("A meeting has been <b>scheduled</b> on <em>%s</em>.") % (meeting_date_tz)
meeting.message_append_note(body=message)
return True
def case_open_send_note(self, cr, uid, ids, context=None):
return self.message_append_note(cr, uid, ids, body=_("Meeting has been <b>confirmed</b>."), context=context)
def case_close_send_note(self, cr, uid, ids, context=None):
return self.message_append_note(cr, uid, ids, body=_("Meeting has been <b>done</b>."), context=context)
class calendar_attendee(osv.osv):
""" Calendar Attendee """
@ -155,8 +98,6 @@ class calendar_attendee(osv.osv):
relation="crm.case.categ", multi='categ_id'),
}
calendar_attendee()
class res_users(osv.osv):
_name = 'res.users'
_inherit = 'res.users'
@ -177,7 +118,4 @@ class res_users(osv.osv):
_logger.debug('Skipped meetings shortcut for user "%s"', data.get('name','<new'))
return user_id
res_users()
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

View File

@ -4,22 +4,16 @@
<!-- CASE CATEGORY(categ_id) -->
<record model="crm.case.categ" id="categ_meet1">
<record model="crm.meeting.type" id="categ_meet1">
<field name="name">Customer Meeting</field>
<field name="section_id" ref="section_sales_department"/>
<field name="object_id" search="[('model','=','crm.meeting')]" model="ir.model"/>
</record>
<record model="crm.case.categ" id="categ_meet2">
<record model="crm.meeting.type" id="categ_meet2">
<field name="name">Internal Meeting</field>
<field name="section_id" ref="section_sales_department"/>
<field name="object_id" search="[('model','=','crm.meeting')]" model="ir.model"/>
</record>
<record model="crm.case.categ" id="categ_meet3">
<record model="crm.meeting.type" id="categ_meet3">
<field name="name">Phone Call</field>
<field name="section_id" ref="section_sales_department"/>
<field name="object_id" search="[('model','=','crm.meeting')]" model="ir.model"/>
</record>
<record model="res.request.link" id="request_link_meeting">

View File

@ -1,102 +1,9 @@
<?xml version="1.0"?>
<openerp>
<data>
<act_window
id="crm_case_categ_meet_create_partner"
name="Schedule a Meeting"
res_model="crm.meeting"
view_mode="calendar,tree,form,gantt"
context="{'default_partner_id': active_id, 'default_duration': 4.0}"
/>
<record model="ir.actions.act_window.view" id="action_crm_tag_calendar_meet_partner">
<field name="sequence" eval="1"/>
<field name="view_mode">calendar</field>
<field name="view_id" ref="crm_case_calendar_view_meet"/>
<field name="act_window_id" ref="crm_case_categ_meet_create_partner"/>
</record>
<record model="ir.actions.act_window.view" id="action_crm_tag_tree_meet_partner">
<field name="sequence" eval="2"/>
<field name="view_mode">tree</field>
<field name="view_id" ref="crm_case_tree_view_meet"/>
<field name="act_window_id" ref="crm_case_categ_meet_create_partner"/>
</record>
<record model="ir.actions.act_window.view" id="action_crm_tag_form_meet_partner">
<field name="sequence" eval="3"/>
<field name="view_mode">form</field>
<field name="view_id" ref="crm_case_form_view_meet"/>
<field name="act_window_id" ref="crm_case_categ_meet_create_partner"/>
</record>
<record model="ir.actions.act_window.view" id="action_crm_tag_gantt_meet_partner">
<field name="sequence" eval="3"/>
<field name="view_mode">gantt</field>
<field name="view_id" ref="crm_case_gantt_view_meet"/>
<field name="act_window_id" ref="crm_case_categ_meet_create_partner"/>
</record>
<record model="ir.actions.act_window" id="crm_case_categ_meet">
<field name="name">Meetings</field>
<field name="res_model">crm.meeting</field>
<field name="view_mode">calendar,tree,form,gantt</field>
<field name="view_id" ref="crm_case_calendar_view_meet"/>
<field name="context">{"calendar_default_user_id":uid}</field>
<field name="search_view_id" ref="view_crm_case_meetings_filter"/>
<field name="help">The meeting calendar is shared between the sales teams and fully integrated with other applications such as the employee holidays or the business opportunities. You can also synchronize meetings with your mobile phone using the caldav interface.
</field>
</record>
<record model="ir.actions.act_window.view" id="action_crm_tag_calendar_meet">
<field name="sequence" eval="1"/>
<field name="view_mode">calendar</field>
<field name="view_id" ref="crm_case_calendar_view_meet"/>
<field name="act_window_id" ref="crm_case_categ_meet"/>
</record>
<record model="ir.actions.act_window.view" id="action_crm_tag_tree_meet">
<field name="sequence" eval="2"/>
<field name="view_mode">tree</field>
<field name="view_id" ref="crm_case_tree_view_meet"/>
<field name="act_window_id" ref="crm_case_categ_meet"/>
</record>
<record model="ir.actions.act_window.view" id="action_crm_tag_form__meet">
<field name="sequence" eval="3"/>
<field name="view_mode">form</field>
<field name="view_id" ref="crm_case_form_view_meet"/>
<field name="act_window_id" ref="crm_case_categ_meet"/>
</record>
<record model="ir.actions.act_window.view" id="action_crm_tag_gantt_meet">
<field name="sequence" eval="1"/>
<field name="view_mode">gantt</field>
<field name="view_id" ref="crm_case_gantt_view_meet"/>
<field name="act_window_id" ref="crm_case_categ_meet"/>
</record>
<!-- ALL MEETINGS -->
<menuitem name="Import &amp; Synchronize" id="base.menu_import_crm"
parent="base.menu_base_partner"/>
<menuitem name="Meetings" id="menu_crm_case_categ_meet"
action="crm_case_categ_meet" parent="base.menu_sales"
sequence="8" />
<record id="action_view_attendee_form" model="ir.actions.act_window">
<field name="name">Meeting Invitations</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">calendar.attendee</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
<field name="view_id" ref="base_calendar.base_calendar_attendee_tree_view" />
<field name="domain">[('ref','like','crm.meeting,')]</field>
<field name="context">{"search_default_toreview":1, "search_default_user_id":uid}</field>
<field name="help">With Meeting Invitations you can create and manage the meeting invitations sent/to be sent to your colleagues/partners. You can not only invite OpenERP users, but also external parties, such as a customer.</field>
</record>
</data>
</openerp>

View File

@ -6,7 +6,7 @@
<field name="name">Meetings</field>
<field name="resource">ir.ui.menu</field>
<field name="user_id" ref="base.user_root"/>
<field name="res_id" ref="crm.menu_crm_case_categ_meet"/>
<field name="res_id" ref="base_calendar.menu_crm_meeting"/>
</record>
</data>

View File

@ -2,361 +2,48 @@
<openerp>
<data>
<!-- Read/Unread actions -->
<record id="actions_server_crm_meeting_unread" model="ir.actions.server">
<field name="name">Mark unread</field>
<field name="condition">True</field>
<field name="type">ir.actions.server</field>
<field name="model_id" ref="model_crm_meeting"/>
<field name="state">code</field>
<field name="code">self.message_check_and_set_unread(cr, uid, context.get('active_ids'), context=context)</field>
</record>
<record id="action_crm_meeting_unread" model="ir.values">
<field name="name">action_crm_meeting_unread</field>
<field name="action_id" ref="actions_server_crm_meeting_unread"/>
<field name="value" eval="'ir.actions.server,' + str(ref('actions_server_crm_meeting_unread'))" />
<field name="key">action</field>
<field name="model_id" ref="model_crm_meeting" />
<field name="model">crm.meeting</field>
<field name="key2">client_action_multi</field>
</record>
<record id="actions_server_crm_meeting_read" model="ir.actions.server">
<field name="name">Mark read</field>
<field name="condition">True</field>
<field name="type">ir.actions.server</field>
<field name="model_id" ref="model_crm_meeting"/>
<field name="state">code</field>
<field name="code">self.message_check_and_set_read(cr, uid, context.get('active_ids'), context=context)</field>
</record>
<record id="action_crm_meeting_read" model="ir.values">
<field name="name">action_crm_meeting_read</field>
<field name="action_id" ref="actions_server_crm_meeting_read"/>
<field name="value" eval="'ir.actions.server,' + str(ref('actions_server_crm_meeting_read'))" />
<field name="key">action</field>
<field name="model_id" ref="model_crm_meeting" />
<field name="model">crm.meeting</field>
<field name="key2">client_action_multi</field>
</record>
<!-- CRM Meetings Categories Form View -->
<record id="crm_meeting_categ_action" model="ir.actions.act_window">
<field name="name">Meeting Categories</field>
<field name="res_model">crm.case.categ</field>
<field name="view_type">form</field>
<field name="view_id" ref="crm.crm_case_categ_tree-view"/>
<field name="domain">[('object_id.model', '=', 'crm.meeting')]</field>
<field name="context" eval="{'object_id': ref('model_crm_meeting')}"/>
<field name="help">Create different meeting categories to better organize and classify your meetings.</field>
</record>
<menuitem action="crm_meeting_categ_action"
groups="base.group_no_one"
id="menu_crm_case_meeting-act" parent="base.menu_calendar_configuration" sequence="1"/>
<!-- CRM Meetings Form View -->
<record model="ir.ui.view" id="crm_case_form_view_meet">
<record model="ir.ui.view" id="view_crm_meeting_form">
<field name="name">CRM - Meetings Form</field>
<field name="model">crm.meeting</field>
<field name="type">form</field>
<field name="inherit_id" ref="base_calendar.view_crm_meeting_form"/>
<field name="arch" type="xml">
<form string="Meetings" version="7.0">
<header>
<button name="case_open" string="Confirm" type="object" class="oe_highlight"
states="draft"/>
<button name="case_close" string="Done" type="object" class="oe_highlight"
states="open"/>
<button name="case_reset" string="Reset to Unconfirmed" type="object"
states="cancel,done"/>
<button name="case_cancel" string="Cancel" type="object"
states="draft,open"/>
<field name="state" widget="statusbar" statusbar_visible="draft,open,done"/>
</header>
<sheet>
<div class="oe_title">
<div class="oe_edit_only">
<label for="name" string="Title"/>
(<field name="allday" on_change="onchange_dates(date,False,False,allday)" class="oe_inline"/>
<label for="allday" string="All Day?"/>)
</div>
<h1>
<field name="name"/>
</h1>
</div>
<group>
<h2>
<label for="date" string="Starting at"/>
<field name="date" required="1" class="oe_inline"/>
<label string="in" class="oe_inline" attrs="{'invisible': [('location', '=', False)]}"/> <field name="location" placeholder="Specify the location here" class="oe_inline"/>
</h2>
</group>
<group>
<h2>
<label for="duration" string="Duration" />
<field name="duration" widget="float_time"
on_change="onchange_dates(date,duration,False,allday)"
class="oe_inline"/> (
<field name="date_deadline"
string="End Date" required="1"
on_change="onchange_dates(date,False,date_deadline)"
class="oe_inline"/> )
</h2>
</group>
<group colspan="4" col="4">
<group colspan="2">
<field name="user_id" />
<field name="organizer"/>
<field name="section_id" widget="selection"/>
</group>
<group colspan="2">
<field name="alarm_id" string="Reminder" widget="selection" />
<field name="class" string="Privacy"/>
<field name="show_as" string="Show Time as"/>
<field name="recurrency" string="Recurrence" attrs="{'readonly': ['|', ('recurrent_uid','!=',False), ('state','=','done')]}"/>
</group>
<group colspan="2">
<field name="partner_id" string="Partner"
on_change="onchange_partner_id(partner_id)" />
<field name="email_from"/>
</group>
<group colspan="2">
<field name="categ_id" widget="selection"
string="Meeting Type"
domain="[('object_id.model', '=', 'crm.meeting')]" />
<field name="rrule" invisible="1" readonly="1"/>
<field name="recurrent_id" invisible="1"/>
<field name="recurrent_uid" invisible="1"/>
</group>
</group>
<separator string="Description" colspan="4" />
<field name="description" nolabel="1" colspan="4" />
<notebook>
<page string="Invitation Detail">
<button string="Invite People"
name="%(base_calendar.action_view_calendar_invite_attendee_wizard)d"
icon="terp-partner" type="action"
attrs="{'readonly': [('state', '=', 'done')]}"
context="{'model' : 'crm.meeting', 'attendee_field':'attendee_ids'}" colspan="2"/>
<field name="attendee_ids" colspan="4"
nolabel="1" widget="one2many" mode="tree">
<tree string="Invitation details" editable="top">
<field name="sent_by_uid" string="From"/>
<field name="user_id" string="To"/>
<field name="email" string="Mail To"/>
<field name="role" />
<field name="state" />
<button name="do_tentative"
states="needs-action,declined,accepted"
string="Uncertain" type="object"
icon="terp-crm" />
<button name="do_accept" string="Accept"
states="needs-action,tentative,declined"
type="object" icon="gtk-apply" />
<button name="do_decline" string="Decline"
states="needs-action,tentative,accepted"
type="object" icon="gtk-cancel" />
<button
name="%(base_calendar.action_view_calendar_invite_attendee_wizard)d"
string="Delegate" type="action"
icon="gtk-sort-descending"
states="needs-action,tentative,declined,accepted"
context="{'model' : 'calendar.attendee', 'attendee_field' : 'child_ids'}" />
</tree>
<form string="Invitation details" version="7.0">
<notebook colspan="4">
<page string="Details">
<field name="email" />
<field name="rsvp" />
<field name="cutype" />
<field name="role" />
<separator colspan="4" string="" />
<group col="6" colspan="4">
<field name="state" />
<button name="do_tentative"
states="needs-action,declined,accepted"
string="Uncertain"
type="object"
icon="terp-crm" />
<button name="do_accept"
string="Accept"
states="needs-action,tentative,declined"
type="object"
icon="gtk-apply" />
<button name="do_decline"
string="Decline"
states="needs-action,tentative,accepted"
type="object"
icon="gtk-cancel" />
<button
name="%(base_calendar.action_view_calendar_invite_attendee_wizard)d"
string="Delegate"
type="action"
icon="gtk-sort-descending"
states="needs-action,tentative,declined,accepted"
context="{'model' : 'calendar.attendee', 'attendee_field' : 'child_ids'}" />
</group>
</page>
<page string="Other">
<field name="user_id"/>
<newline />
</page>
</notebook>
</form>
</field>
</page>
<page string="Recurrence Options"><!-- attrs="{'invisible': [('recurrency','=',False)], 'readonly': ['|', ('recurrent_uid','!=',False), ('state','=','done')]}">-->
<group col="4" colspan="4" name="rrule">
<group col="4" colspan="4">
<field name="rrule_type" string=" Recurrence Pattern" />
<field name="interval" />
<field name="end_type" />
<label string=" " colspan="2" />
<newline />
<field name="count" attrs="{'invisible' : [('end_type', '!=', 'count')] }"/>
<label string=" " colspan="2" />
<newline />
<field name="end_date" attrs="{'invisible' : [('end_type', '!=', 'end_date')], 'required': [('end_type', '=', 'end_date')]}"/>
<newline />
</group>
<group col="8" colspan="4" name="Select weekdays" attrs="{'invisible' :[('rrule_type','not in', ['weekly'])]}">
<separator string="Choose day where repeat the meeting" colspan="8"/>
<field name="mo" colspan="1" />
<field name="tu" colspan="1" />
<field name="we" colspan="1" />
<field name="th" colspan="1" />
<newline/>
<field name="fr" colspan="1" />
<field name="sa" colspan="1" />
<field name="su" colspan="1" />
<newline />
</group>
<group col="10" colspan="4"
attrs="{'invisible' : [('rrule_type','!=','monthly')]}">
<separator string="Choose day in the month where repeat the meeting" colspan="12"/>
<group col="2" colspan="1">
<field name="select1" />
</group>
<group col="2" colspan="1">
<field name="day"
attrs="{'required' : [('select1','=','date'), ('rrule_type','=','monthly')],
'invisible' : [('select1','=','day')]}" />
</group>
<group col="3" colspan="1">
<field name="byday" string="The"
attrs="{'required' : [('select1','=','day'), ('rrule_type','=','monthly')], 'invisible' : [('select1','=','date')]}" />
<field name="week_list" nolabel="1"
attrs="{'required' : [('select1','=','day'), ('rrule_type','=','monthly')], 'invisible' : [('select1','=','date')]}" />
</group>
</group>
</group>
</page>
</notebook>
</sheet>
<footer>
<field name="message_ids" widget="mail_thread"/>
</footer>
</form>
</field>
</record>
<!-- CRM Meeting Tree View -->
<record model="ir.ui.view" id="crm_case_tree_view_meet">
<field name="name">CRM - Meetings Tree</field>
<field name="model">crm.meeting</field>
<field name="type">tree</field>
<field name="arch" type="xml">
<tree string="Meetings" fonts="bold:needaction_pending==True"
colors="red:state=='open';black:state in ('draft', 'cancel','done','pending')">
<field name="name" string="Subject" />
<field name="user_id"/>
<field name="date"/>
<field name="state"/>
<field name="duration" />
<field name="partner_id" string="Partner" />
<field name="location" />
<field name="categ_id"/>
<field name="needaction_pending" invisible="1"/>
</tree>
<field name="organizer" position="after">
<field name="section_id" widget="selection"/>
</field>
</field>
</record>
<!-- CRM Meeting Calendar -->
<record model="ir.ui.view" id="crm_case_calendar_view_meet">
<record model="ir.ui.view" id="view_crm_meeting_calendar">
<field name="name">CRM - Meetings Calendar</field>
<field name="model">crm.meeting</field>
<field name="type">calendar</field>
<field name="inherit_id" ref="base_calendar.view_crm_meeting_calendar"/>
<field name="priority" eval="2"/>
<field name="arch" type="xml">
<calendar string="Meetings" date_start="date" color="user_id" date_stop="date_deadline" date_delay="duration">
<field name="name"/>
<field name="partner_id"/>
<field name="partner_id" position="after">
<field name="section_id" widget="selection"/>
</calendar>
</field>
</record>
<!-- CRM Meeting Gantt -->
<record id="crm_case_gantt_view_meet" model="ir.ui.view">
<field name="name">CRM - Meetings Gantt</field>
<field name="model">crm.meeting</field>
<field name="type">gantt</field>
<field name="arch" type="xml">
<gantt date_delay="duration" date_start="date" string="Meetings">
</gantt>
</field>
</record>
<!-- CRM Meeting Search View -->
<record id="view_crm_case_meetings_filter" model="ir.ui.view">
<field name="name">CRM - Meetings Search</field>
<field name="model">crm.meeting</field>
<field name="type">search</field>
<field name="arch" type="xml">
<search string="Search Meetings">
<group>
<filter icon="terp-mail-message-new"
string="Inbox" help="Unread messages"
name="needaction_pending"
domain="[('needaction_pending','=',True)]"/>
<separator orientation="vertical"/>
<field name="name" string="Meeting / Partner"
filter_domain="['|',('name','ilike',self),('partner_id','ilike', self)]"/>
<separator orientation="vertical"/>
<filter string="My Meetings"
icon="terp-personal"
domain="[('user_id','=',uid)]"
help="My Meetings" />
<separator orientation="vertical"/>
<field name="user_id"/>
<field name="partner_id"/>
</group>
</search>
</field>
</record>
</field>
</record>
<!-- Calendar Attendee Form View -->
<!-- Calendar Attendee Form View -->
<record id="attendee_form_view_inherit" model="ir.ui.view">
<field name="name">calendar.attendee.form.inherit</field>
<field name="model">calendar.attendee</field>
<field name="type">form</field>
<field name="inherit_id" ref="base_calendar.base_calendar_attendee_form_view"/>
<field name="arch" type="xml">
<field name="ref" position="after">
<field name="categ_id" string="Event Type"/>
</field>
<record id="attendee_form_view_inherit" model="ir.ui.view">
<field name="name">calendar.attendee.form.inherit</field>
<field name="model">calendar.attendee</field>
<field name="type">form</field>
<field name="inherit_id" ref="base_calendar.base_calendar_attendee_form_view"/>
<field name="arch" type="xml">
<field name="ref" position="after">
<field name="categ_id" string="Event Type"/>
</field>
</record>
</field>
</record>
</data>
</openerp>

View File

@ -241,49 +241,20 @@ class crm_phonecall(base_state, osv.osv):
return opportunity_dict
def action_make_meeting(self, cr, uid, ids, context=None):
""" This opens Meeting's calendar view to schedule meeting on current Phonecall
@return : Dictionary value for created Meeting view
"""
This opens Meeting's calendar view to schedule meeting on current Phonecall
@return : Dictionary value for created Meeting view
"""
value = {}
for phonecall in self.browse(cr, uid, ids, context=context):
data_obj = self.pool.get('ir.model.data')
# Get meeting views
result = data_obj._get_id(cr, uid, 'crm', 'view_crm_case_meetings_filter')
res = data_obj.read(cr, uid, result, ['res_id'])
id1 = data_obj._get_id(cr, uid, 'crm', 'crm_case_calendar_view_meet')
id2 = data_obj._get_id(cr, uid, 'crm', 'crm_case_form_view_meet')
id3 = data_obj._get_id(cr, uid, 'crm', 'crm_case_tree_view_meet')
if id1:
id1 = data_obj.browse(cr, uid, id1, context=context).res_id
if id2:
id2 = data_obj.browse(cr, uid, id2, context=context).res_id
if id3:
id3 = data_obj.browse(cr, uid, id3, context=context).res_id
context = {
'default_phonecall_id': phonecall.id,
'default_partner_id': phonecall.partner_id and phonecall.partner_id.id or False,
'default_email': phonecall.email_from ,
'default_name': phonecall.name
}
value = {
'name': _('Meetings'),
'domain' : "[('user_id','=',%s)]" % (uid),
'context': context,
'view_type': 'form',
'view_mode': 'calendar,form,tree',
'res_model': 'crm.meeting',
'view_id': False,
'views': [(id1, 'calendar'), (id2, 'form'), (id3, 'tree')],
'type': 'ir.actions.act_window',
'search_view_id': res['res_id'],
'nodestroy': True
}
return value
phonecall = self.browse(cr, uid, ids[0], context)
res = self.pool.get('ir.actions.act_window').for_xml_id(cr, uid, 'base_calendar', 'action_crm_meeting', context)
res['context'] = {
'default_phonecall_id': phonecall.id,
'default_partner_id': phonecall.partner_id and phonecall.partner_id.id or False,
'default_user_id': uid,
'default_email_from': phonecall.email_from,
'default_state': 'open',
'default_name': phonecall.name,
}
return res
# ----------------------------------------
# OpenChatter

File diff suppressed because it is too large Load Diff

View File

@ -127,7 +127,7 @@
<xpath expr="//div[@name='buttons']" position="inside">
<button type="action"
string="Schedule a Meeting"
name="%(crm.crm_case_categ_meet_create_partner)d"
name="%(base_calendar.action_crm_meeting)d"
context="{'search_default_partner_id': active_id, 'default_duration': 4.0}"/>
<button type="action" string="Schedule a Call"
name="%(crm.crm_case_categ_phone_create_partner)d"

View File

@ -7,12 +7,9 @@ access_crm_case_channel_user,crm.case.channel user,model_crm_case_channel,base.g
access_crm_case_channel_manager,crm.case.channel manager,model_crm_case_channel,base.group_sale_manager,1,1,1,1
access_crm_case_section,crm.case.section,model_crm_case_section,base.group_user,1,0,0,0
access_crm_case_categ,crm.case.categ,model_crm_case_categ,base.group_sale_salesman,1,1,1,0
access_crm_meeting_manager,crm.meeting.manager,model_crm_meeting,base.group_sale_manager,1,1,1,1
access_crm_lead_manager,crm.lead.manager,model_crm_lead,base.group_sale_manager,1,1,1,1
access_crm_phonecall_manager,crm.phonecall.manager,model_crm_phonecall,base.group_sale_manager,1,1,1,1
access_crm_case_categ,crm.case.categ,model_crm_case_categ,base.group_user,1,0,0,0
access_crm_meeting,crm.meeting,model_crm_meeting,base.group_sale_salesman,1,1,1,0
access_crm_meeting_all,crm.meeting_allll,model_crm_meeting,base.group_user,1,0,0,0
access_crm_lead,crm.lead,model_crm_lead,base.group_sale_salesman,1,1,1,0
access_crm_lead_all,crm.lead.all,model_crm_lead,base.group_user,1,0,0,0
access_crm_phonecall,crm.phonecall,model_crm_phonecall,base.group_sale_salesman,1,1,1,0
@ -40,4 +37,3 @@ access_crm_lead_report_user,crm.lead.report user,model_crm_lead_report,base.grou
access_res_partner_bank_type_crm_user,res.partner.bank.type.crm.user,base.model_res_partner_bank_type,base.group_sale_salesman,1,0,0,0
access_crm_lead_partner_manager,crm.lead.partner.manager,model_crm_lead,base.group_partner_manager,1,0,0,0
access_crm_phonecall_partner_manager,crm.phonecall.partner.manager,model_crm_phonecall,base.group_partner_manager,1,1,1,1
access_crm_meeting_partner_manager,crm.meeting.partner.manager,model_crm_meeting,base.group_partner_manager,1,1,1,1

1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
7 access_crm_case_channel_manager crm.case.channel manager model_crm_case_channel base.group_sale_manager 1 1 1 1
8 access_crm_case_section crm.case.section model_crm_case_section base.group_user 1 0 0 0
9 access_crm_case_categ crm.case.categ model_crm_case_categ base.group_sale_salesman 1 1 1 0
access_crm_meeting_manager crm.meeting.manager model_crm_meeting base.group_sale_manager 1 1 1 1
10 access_crm_lead_manager crm.lead.manager model_crm_lead base.group_sale_manager 1 1 1 1
11 access_crm_phonecall_manager crm.phonecall.manager model_crm_phonecall base.group_sale_manager 1 1 1 1
12 access_crm_case_categ crm.case.categ model_crm_case_categ base.group_user 1 0 0 0
access_crm_meeting crm.meeting model_crm_meeting base.group_sale_salesman 1 1 1 0
access_crm_meeting_all crm.meeting_allll model_crm_meeting base.group_user 1 0 0 0
13 access_crm_lead crm.lead model_crm_lead base.group_sale_salesman 1 1 1 0
14 access_crm_lead_all crm.lead.all model_crm_lead base.group_user 1 0 0 0
15 access_crm_phonecall crm.phonecall model_crm_phonecall base.group_sale_salesman 1 1 1 0
37 access_res_partner_bank_type_crm_user res.partner.bank.type.crm.user base.model_res_partner_bank_type base.group_sale_salesman 1 0 0 0
38 access_crm_lead_partner_manager crm.lead.partner.manager model_crm_lead base.group_partner_manager 1 0 0 0
39 access_crm_phonecall_partner_manager crm.phonecall.partner.manager model_crm_phonecall base.group_partner_manager 1 1 1 1
access_crm_meeting_partner_manager crm.meeting.partner.manager model_crm_meeting base.group_partner_manager 1 1 1 1

View File

@ -2,10 +2,9 @@
I create a record rule.
-
!python {model: base.action.rule}: |
modle_id = self.pool.get("ir.model").search(cr, uid, [('name', '=', 'crm.lead')])
model_ids = self.pool.get("ir.model").search(cr, uid, [('model', '=', 'crm.lead')])
from datetime import datetime
new_id = self.create(cr, uid, {'name': 'New Rule', 'model_id': modle_id[0], 'trg_user_id': ref('base.user_root'), 'trg_partner_id': ref('base.res_partner_asus'), 'act_user_id': ref('base.user_demo') })
lead_obj = self.pool.get("crm.lead")
new_id = self.create(cr, uid, {'name': 'New Rule', 'model_id': model_ids[0], 'trg_user_id': ref('base.user_root'), 'trg_partner_id': ref('base.res_partner_asus'), 'act_user_id': ref('base.user_demo') })
self._check(cr, uid)
-
I create new lead to check record rule.

View File

@ -19,7 +19,6 @@
#
##############################################################################
import mail_compose_message
import crm_add_note
import crm_lead_to_partner

View File

@ -41,58 +41,23 @@ class crm_phonecall2meeting(osv.osv_memory):
return {'type':'ir.actions.act_window_close'}
def action_make_meeting(self, cr, uid, ids, context=None):
""" This opens Meeting's calendar view to schedule meeting on current Phonecall
@return : Dictionary value for created Meeting view
"""
This opens Meeting's calendar view to schedule meeting on current Phonecall
@param self: The object pointer
@param cr: the current row, from the database cursor,
@param uid: the current users ID for security checks,
@param ids: List of Phonecall to Meeting IDs
@param context: A standard dictionary for contextual values
@return : Dictionary value for created Meeting view
"""
value = {}
record_id = context and context.get('active_id', False) or False
if record_id:
phonecall_obj = self.pool.get('crm.phonecall')
data_obj = self.pool.get('ir.model.data')
# Get meeting views
result = data_obj._get_id(cr, uid, 'crm', 'view_crm_case_meetings_filter')
res = data_obj.read(cr, uid, result, ['res_id'])
id1 = data_obj._get_id(cr, uid, 'crm', 'crm_case_calendar_view_meet')
id2 = data_obj._get_id(cr, uid, 'crm', 'crm_case_form_view_meet')
id3 = data_obj._get_id(cr, uid, 'crm', 'crm_case_tree_view_meet')
if id1:
id1 = data_obj.browse(cr, uid, id1, context=context).res_id
if id2:
id2 = data_obj.browse(cr, uid, id2, context=context).res_id
if id3:
id3 = data_obj.browse(cr, uid, id3, context=context).res_id
phonecall = phonecall_obj.browse(cr, uid, record_id, context=context)
context = {
'default_phonecall_id': phonecall.id,
'default_partner_id': phonecall.partner_id and phonecall.partner_id.id or False,
'default_email': phonecall.email_from ,
'default_name': phonecall.name
}
value = {
'name': _('Meetings'),
'domain' : "[('user_id','=',%s)]" % (uid),
'context': context,
'view_type': 'form',
'view_mode': 'calendar,form,tree',
'res_model': 'crm.meeting',
'view_id': False,
'views': [(id1, 'calendar'), (id2, 'form'), (id3, 'tree')],
'type': 'ir.actions.act_window',
'search_view_id': res['res_id']
}
return value
res = {}
phonecall_id = context and context.get('active_id', False) or False
if phonecall_id:
phonecall = self.pool.get('crm.phonecall').browse(cr, uid, phonecall_id, context)
res = self.pool.get('ir.actions.act_window').for_xml_id(cr, uid, 'base_calendar', 'action_crm_meeting', context)
res['context'] = {
'default_phonecall_id': phonecall.id,
'default_partner_id': phonecall.partner_id and phonecall.partner_id.id or False,
'default_user_id': uid,
'default_email_from': phonecall.email_from,
'default_state': 'open',
'default_name': phonecall.name,
}
return res
crm_phonecall2meeting()

View File

@ -1,63 +0,0 @@
# -*- coding: utf-8 -*-
##############################################################################
#
# OpenERP, Open Source Management Solution
# Copyright (C) 2010-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 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 General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>
#
##############################################################################
from osv import osv
from osv import fields
import tools
SUPPORTED_MODELS = ['crm.lead',]
class mail_compose_message(osv.osv_memory):
_inherit = 'mail.compose.message'
def get_value(self, cr, uid, model, res_id, context=None):
"""Returns a defaults-like dict with initial values for the composition
wizard when sending an email related to the document record identified
by ``model`` and ``res_id``.
Overrides the default implementation to provide more default field values
related to the corresponding CRM case.
:param str model: model name of the document record this mail is related to.
:param int res_id: id of the document record this mail is related to.
:param dict context: several context values will modify the behavior
of the wizard, cfr. the class description.
"""
result = super(mail_compose_message, self).get_value(cr, uid, model, res_id, context=context)
if model in SUPPORTED_MODELS and res_id:
model_obj = self.pool.get(model)
data = model_obj.browse(cr, uid , res_id, context)
user = self.pool.get('res.users').browse(cr, uid, uid, context=context)
result.update({
'subject' : data.name or False,
'email_to' : data.email_from or False,
'email_from' : user.user_email or tools.config.get('email_from', False),
'body_text' : '\n' + tools.ustr(user.signature or ''),
'email_cc' : tools.ustr(data.email_cc or ''),
'model': model,
'res_id': res_id,
'subtype': 'plain',
})
if hasattr(data, 'section_id'):
result.update({'reply_to' : data.section_id and data.section_id.reply_to or False})
return result
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

View File

@ -29,7 +29,7 @@
<field name="calendar_id" ref="basic_calendar_meetings0"/>
<field name="domain">[('user_id','=', dctx_user_id)]</field>
<field name="name">vevent</field>
<field name="object_id" ref="crm.model_crm_meeting"/>
<field name="object_id" ref="base_calendar.model_crm_meeting"/>
</record>
@ -103,7 +103,7 @@
<record id="basic_calendar_fields_12" model="basic.calendar.fields">
<field name="name" ref="caldav.field_event_organizer"/>
<field name="type_id" ref="basic_calendar_lines_vevent0"/>
<field name="field_id" ref="crm.field_crm_meeting_organizer"/>
<field name="field_id" ref="base_calendar.field_crm_meeting_organizer"/>
<field name="fn">field</field>
</record>
<record id="basic_calendar_fields_13" model="basic.calendar.fields">
@ -127,7 +127,7 @@
<record id="basic_calendar_fields_16" model="basic.calendar.fields">
<field name="name" ref="caldav.field_event_attendee"/>
<field name="type_id" ref="basic_calendar_lines_vevent0"/>
<field name="field_id" ref="crm.field_crm_meeting_attendee_ids"/>
<field name="field_id" ref="base_calendar.field_crm_meeting_attendee_ids"/>
<field name="fn">field</field>
</record>
<record id="basic_calendar_fields_17" model="basic.calendar.fields">
@ -163,7 +163,7 @@
<record id="basic_calendar_fields_22" model="basic.calendar.fields">
<field name="name" ref="caldav.field_event_status"/>
<field name="type_id" ref="basic_calendar_lines_vevent0"/>
<field name="field_id" ref="crm.field_crm_meeting_state"/>
<field name="field_id" ref="base_calendar.field_crm_meeting_state"/>
<field name="mapping">{'tentative': 'draft', 'confirmed': 'open', 'cancelled': 'cancel'}</field>
<field name="fn">field</field>
</record>
@ -176,7 +176,7 @@
<record id="basic_calendar_fields_24" model="basic.calendar.fields">
<field name="name" ref="caldav.field_event_dtstamp"/>
<field name="type_id" ref="basic_calendar_lines_vevent0"/>
<field name="field_id" ref="crm.field_crm_meeting_write_date"/>
<field name="field_id" ref="base_calendar.field_crm_meeting_write_date"/>
<field name="fn">datetime_utc</field>
</record>
<record id="basic_calendar_fields_25" model="basic.calendar.fields">

View File

@ -22,14 +22,11 @@
from base_status.base_stage import base_stage
import binascii
from crm import crm
from crm import wizard
from osv import fields, osv
import time
import tools
from tools.translate import _
wizard.mail_compose_message.SUPPORTED_MODELS.append('crm.claim')
CRM_CLAIM_PENDING_STATES = (
crm.AVAILABLE_STATES[2][0], # Cancelled
crm.AVAILABLE_STATES[3][0], # Done
@ -75,6 +72,7 @@ class crm_claim(base_stage, osv.osv):
_description = "Claim"
_order = "priority,date desc"
_inherit = ['mail.thread']
_mail_compose_message = True
_columns = {
'id': fields.integer('ID', readonly=True),
'name': fields.char('Claim Subject', size=128, required=True),

View File

@ -8,19 +8,19 @@ msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-02-08 00:36+0000\n"
"PO-Revision-Date: 2012-06-09 18:59+0000\n"
"PO-Revision-Date: 2012-07-07 21:23+0000\n"
"Last-Translator: Akira Hiyama <Unknown>\n"
"Language-Team: Japanese <ja@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-06-10 04:37+0000\n"
"X-Generator: Launchpad (build 15376)\n"
"X-Launchpad-Export-Date: 2012-07-08 04:41+0000\n"
"X-Generator: Launchpad (build 15558)\n"
#. module: crm_claim
#: field:crm.claim.report,nbr:0
msgid "# of Cases"
msgstr "件数"
msgstr "数"
#. module: crm_claim
#: view:crm.claim:0
@ -249,7 +249,7 @@ msgstr "次のアクション"
#. module: crm_claim
#: view:crm.claim.report:0
msgid "My Sales Team(s)"
msgstr "私の販売チーム"
msgstr "私の営業チーム"
#. module: crm_claim
#: model:crm.case.stage,name:crm_claim.stage_claim3
@ -670,7 +670,7 @@ msgstr "クレームを検索する"
#: field:crm.claim,section_id:0
#: view:crm.claim.report:0
msgid "Sales Team"
msgstr "販売チーム"
msgstr "営業チーム"
#. module: crm_claim
#: selection:crm.claim.report,month:0

View File

@ -21,12 +21,9 @@
from base_status.base_stage import base_stage
from crm import crm
from crm import wizard
from osv import fields, osv
from tools.translate import _
wizard.mail_compose_message.SUPPORTED_MODELS.append('crm.fundraising')
class crm_fundraising(base_stage, osv.osv):
""" Fund Raising Cases """
@ -34,6 +31,7 @@ class crm_fundraising(base_stage, osv.osv):
_description = "Fund Raising"
_order = "id desc"
_inherit = ['mail.thread']
_mail_compose_message = True
_columns = {
'id': fields.integer('ID', readonly=True),
'name': fields.char('Name', size=128, required=True),

View File

@ -8,14 +8,14 @@ msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-02-08 00:36+0000\n"
"PO-Revision-Date: 2012-06-09 19:04+0000\n"
"PO-Revision-Date: 2012-07-08 22:15+0000\n"
"Last-Translator: Akira Hiyama <Unknown>\n"
"Language-Team: Japanese <ja@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-06-10 04:37+0000\n"
"X-Generator: Launchpad (build 15376)\n"
"X-Launchpad-Export-Date: 2012-07-09 04:51+0000\n"
"X-Generator: Launchpad (build 15558)\n"
#. module: crm_fundraising
#: field:crm.fundraising,planned_revenue:0
@ -236,7 +236,7 @@ msgstr "最低"
#: view:crm.fundraising:0
#: view:crm.fundraising.report:0
msgid "My Sales Team(s)"
msgstr "私の販売チーム"
msgstr "私の営業チーム"
#. module: crm_fundraising
#: field:crm.fundraising,create_date:0
@ -324,7 +324,7 @@ msgid ""
"Have a general overview of all fund raising activities by sorting them with "
"specific criteria such as the estimated revenue, average success probability "
"and delay to close."
msgstr "予測金額、平均成功確率、締切の延期などの基準で分類して全ての資金調達の一覧を表示する。"
msgstr "予測売上、平均成功確率、締切の延期などの特定の基準で分類することで、全ての資金調達活動の一般的な概要を持ちます。"
#. module: crm_fundraising
#: selection:crm.fundraising.report,month:0
@ -626,7 +626,7 @@ msgstr "責任者"
msgid ""
"Sales team to which Case belongs to. Define Responsible user and Email "
"account for mail gateway."
msgstr "案件が割当てられた販売チーム。担当ユーザとEメール・アカウントを指定します。"
msgstr "案件が割当てられた営業チーム。担当ユーザとEメール・アカウントを指定します。"
#. module: crm_fundraising
#: model:ir.model,name:crm_fundraising.model_crm_fundraising_report
@ -763,7 +763,7 @@ msgstr "高い"
#: field:crm.fundraising,section_id:0
#: view:crm.fundraising.report:0
msgid "Sales Team"
msgstr "販売チーム"
msgstr "営業チーム"
#. module: crm_fundraising
#: field:crm.fundraising.report,create_date:0

View File

@ -21,7 +21,6 @@
from base_status.base_state import base_state
from crm import crm
from crm import wizard
from osv import fields, osv
import tools
from tools.translate import _
@ -32,8 +31,6 @@ CRM_HELPDESK_STATES = (
crm.AVAILABLE_STATES[4][0], # Pending
)
wizard.mail_compose_message.SUPPORTED_MODELS.append('crm.helpdesk')
class crm_helpdesk(base_state, osv.osv):
""" Helpdesk Cases """
@ -41,6 +38,7 @@ class crm_helpdesk(base_state, osv.osv):
_description = "Helpdesk"
_order = "id desc"
_inherit = ['mail.thread']
_mail_compose_message = True
_columns = {
'id': fields.integer('ID', readonly=True),
'name': fields.char('Name', size=128, required=True),

View File

@ -8,14 +8,14 @@ msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-02-08 00:36+0000\n"
"PO-Revision-Date: 2012-05-28 19:12+0000\n"
"Last-Translator: Masaki Yamaya <Unknown>\n"
"PO-Revision-Date: 2012-07-06 04:05+0000\n"
"Last-Translator: Akira Hiyama <Unknown>\n"
"Language-Team: Japanese <ja@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-05-29 04:46+0000\n"
"X-Generator: Launchpad (build 15316)\n"
"X-Launchpad-Export-Date: 2012-07-07 05:13+0000\n"
"X-Generator: Launchpad (build 15558)\n"
#. module: crm_helpdesk
#: field:crm.helpdesk.report,delay_close:0
@ -207,7 +207,7 @@ msgstr "Eメールの数"
#: view:crm.helpdesk:0
#: view:crm.helpdesk.report:0
msgid "My Sales Team(s)"
msgstr "私の販売チーム"
msgstr "私の営業チーム"
#. module: crm_helpdesk
#: field:crm.helpdesk,create_date:0
@ -533,7 +533,7 @@ msgstr "催促を送る"
msgid ""
"Sales team to which Case belongs to. Define "
"Responsible user and Email account for mail gateway."
msgstr "事象を割り当てる販売チーム。メールゲートウェイにと担当ユーザとEメールアカウントを作って下さい。"
msgstr "事象を割り当てる営業チーム。メールゲートウェイにと担当ユーザとEメールアカウントを作って下さい。"
#. module: crm_helpdesk
#: view:crm.helpdesk:0
@ -708,7 +708,7 @@ msgstr "高い"
#: field:crm.helpdesk,section_id:0
#: view:crm.helpdesk.report:0
msgid "Sales Team"
msgstr "販売チーム"
msgstr "営業チーム"
#. module: crm_helpdesk
#: field:crm.helpdesk,date_action_last:0

View File

@ -8,14 +8,14 @@ msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-02-08 00:36+0000\n"
"PO-Revision-Date: 2012-05-25 04:47+0000\n"
"PO-Revision-Date: 2012-07-08 19:19+0000\n"
"Last-Translator: Akira Hiyama <Unknown>\n"
"Language-Team: Japanese <ja@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-06-28 04:40+0000\n"
"X-Generator: Launchpad (build 15505)\n"
"X-Launchpad-Export-Date: 2012-07-09 04:51+0000\n"
"X-Generator: Launchpad (build 15558)\n"
#. module: crm_partner_assign
#: field:crm.lead.forward.to.partner,send_to:0
@ -329,7 +329,7 @@ msgstr "パートナの割当て"
#. module: crm_partner_assign
#: help:crm.lead.report.assign,type:0
msgid "Type is used to separate Leads and Opportunities"
msgstr "リードと機会を区別するためにタイプを使います。"
msgstr "リードと商談を区別するためにタイプを使います。"
#. module: crm_partner_assign
#: selection:crm.lead.report.assign,month:0
@ -362,7 +362,7 @@ msgstr "ジオロケーション"
#: view:crm.lead.report.assign:0
#: view:crm.partner.report.assign:0
msgid "Opportunities Assignment Analysis"
msgstr "好機割当て分析"
msgstr "商談割当分析"
#. module: crm_partner_assign
#: view:res.partner:0
@ -409,7 +409,7 @@ msgstr "重量"
#. module: crm_partner_assign
#: view:crm.lead.report.assign:0
msgid "Delay to open"
msgstr "開始を延期する"
msgstr "開始を延期する"
#. module: crm_partner_assign
#: view:crm.lead.report.assign:0
@ -455,7 +455,7 @@ msgstr "分類"
#. module: crm_partner_assign
#: view:crm.lead.report.assign:0
msgid "#Opportunities"
msgstr "好機の数"
msgstr "商談の数"
#. module: crm_partner_assign
#: view:crm.lead:0
@ -492,7 +492,7 @@ msgstr "パートナに大量に転送"
#: view:res.partner:0
#: field:res.partner,opportunity_assigned_ids:0
msgid "Assigned Opportunities"
msgstr "割り当てられた好機"
msgstr "割当済商談"
#. module: crm_partner_assign
#: field:crm.lead,date_assign:0
@ -527,12 +527,12 @@ msgstr "6月"
#. module: crm_partner_assign
#: help:crm.lead.report.assign,delay_open:0
msgid "Number of Days to open the case"
msgstr "件を開くまでの日数"
msgstr "件を開くまでの日数"
#. module: crm_partner_assign
#: field:crm.lead.report.assign,delay_open:0
msgid "Delay to Open"
msgstr "開始を延期する"
msgstr "開始を延期する"
#. module: crm_partner_assign
#: selection:crm.lead.forward.to.partner,send_to:0
@ -566,7 +566,7 @@ msgstr "ジオ緯度"
#. module: crm_partner_assign
#: field:crm.partner.report.assign,opp:0
msgid "# of Opportunity"
msgstr "好機の数"
msgstr "商談の数"
#. module: crm_partner_assign
#: view:crm.lead.report.assign:0
@ -738,7 +738,7 @@ msgstr "住所"
#. module: crm_partner_assign
#: selection:crm.lead.report.assign,type:0
msgid "Opportunity"
msgstr "好機"
msgstr "商談"
#. module: crm_partner_assign
#: view:crm.lead.forward.to.partner:0
@ -776,7 +776,7 @@ msgstr "メッセージの見出し"
#. module: crm_partner_assign
#: view:res.partner:0
msgid "Convert to Opportunity"
msgstr "好機に転換する"
msgstr "商談に変換"
#. module: crm_partner_assign
#: field:crm.lead.forward.to.partner,email_bcc:0
@ -858,7 +858,7 @@ msgstr "高"
#: field:crm.lead.report.assign,section_id:0
#: field:crm.partner.report.assign,section_id:0
msgid "Sales Team"
msgstr "販売チーム"
msgstr "営業チーム"
#. module: crm_partner_assign
#: field:crm.lead.report.assign,create_date:0

View File

@ -8,14 +8,14 @@ msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-02-08 00:36+0000\n"
"PO-Revision-Date: 2012-05-10 18:04+0000\n"
"Last-Translator: Raphael Collet (OpenERP) <Unknown>\n"
"PO-Revision-Date: 2012-07-06 04:06+0000\n"
"Last-Translator: Akira Hiyama <Unknown>\n"
"Language-Team: Japanese <ja@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-05-11 05:04+0000\n"
"X-Generator: Launchpad (build 15225)\n"
"X-Launchpad-Export-Date: 2012-07-07 05:13+0000\n"
"X-Generator: Launchpad (build 15558)\n"
#. module: crm_profiling
#: view:crm_profiling.questionnaire:0
@ -30,7 +30,7 @@ msgid ""
"segmentation tool allows you to automatically assign a partner to a category "
"according to his answers to the different questionnaires."
msgstr ""
"特定のトピックに関連した質問票を作成して、それを使って販売チームが適切な質問をするように指導できます。区分ツールを使って、質問に対する回答に応じて、パート"
"特定のトピックに関連した質問票を作成して、それを使って営業チームが適切な質問をするように指導できます。区分ツールを使って、質問に対する回答に応じて、パート"
"ナを自動的に区分することができます。"
#. module: crm_profiling

View File

@ -8,14 +8,14 @@ msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-02-08 00:36+0000\n"
"PO-Revision-Date: 2012-04-20 03:47+0000\n"
"Last-Translator: Tomomi Mengelberg <tomomi.mengelberg@aquasys.co.jp>\n"
"PO-Revision-Date: 2012-07-07 21:25+0000\n"
"Last-Translator: Akira Hiyama <Unknown>\n"
"Language-Team: Japanese <ja@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-04-21 05:01+0000\n"
"X-Generator: Launchpad (build 15120)\n"
"X-Launchpad-Export-Date: 2012-07-08 04:41+0000\n"
"X-Generator: Launchpad (build 15558)\n"
#. module: crm_todo
#: model:ir.model,name:crm_todo.model_project_task
@ -82,7 +82,7 @@ msgstr "その他の情報"
#. module: crm_todo
#: field:project.task,lead_id:0
msgid "Lead / Opportunity"
msgstr "見込み客 / 商談"
msgstr "リード / 商談"
#. module: crm_todo
#: view:crm.lead:0

View File

@ -238,51 +238,27 @@
<field name="model">ir.attachment</field>
<field name="priority" eval="1"/>
<field name="type">form</field>
<field name="inherit_id" ref="base.view_attachment_form"/>
<field name="arch" type="xml">
<form string="Documents" version="7.0">
<sheet>
<group col="4">
<field name="name"/>
<field name="parent_id"/>
<field name="user_id"/>
<field name="company_id" groups="base.group_multi_company" widget="selection"/>
</group>
<notebook colspan="4">
<page string="Attachment">
<group>
<group string="Data">
<field name="type"/>
<newline />
<field name="datas" filename="datas_fname" attrs="{'invisible':[('type','=','url')]}"/>
<field name="datas_fname" attrs="{'invisible':[('type','=','url')]}"/>
<field name="url" widget="url" attrs="{'invisible':[('type','=','binary')]}"/>
</group>
<group>
<field name="res_id" invisible="True"/>
<field name="res_model" readonly="True" invisible="True" attrs="{'invisible': [('res_id','=',0)]}"/>
<field name="res_name" readonly="1" attrs="{'invisible': [('res_id','=',0)]}"/>
<separator string="Related to" colspan="2"/>
<field name="partner_id"/>
</group>
<group groups="base.group_no_one" string="Created">
<field name="create_uid" readonly="1"/>
<field name="create_date" readonly="1"/>
</group>
<group groups="base.group_no_one" string="Modified">
<field name="write_uid" readonly="1"/>
<field name="write_date" readonly="1"/>
</group>
</group>
</page>
<page string="Indexed Content - experimental" groups="base.group_no_one">
<field name="index_content"/>
</page>
<page string="Notes">
<field name="description"/>
</page>
</notebook>
</sheet>
</form>
<field name="url" position="after">
<field name="user_id"/>
</field>
<field name="company_id" position="before">
<field name="parent_id"/>
<field name="partner_id"/>
</field>
<xpath expr="//div[@name='creation_div']" position='after'>
<label for="write_uid" string="Modification"/>
<div>
<field name="write_uid" readonly="1" class="oe_inline"/> on
<field name="write_date" readonly="1" class="oe_inline"/>
</div>
</xpath>
<xpath expr="//group[@name='description_group']" position='after'>
<group string="Indexed Content" colspan="4">
<field name="index_content" nolabel="1"/>
</group>
</xpath>
</field>
</record>

View File

@ -12,7 +12,6 @@
or
<button string="Cancel" class="oe_link" special="cancel" />
</header>
<separator string="Browse Document"/>
<group>
<field name="url" widget="url"/>
</group>

View File

@ -8,19 +8,19 @@ msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-02-08 01:37+0100\n"
"PO-Revision-Date: 2012-04-06 00:12+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"PO-Revision-Date: 2012-07-06 02:21+0000\n"
"Last-Translator: Ahmad Khayyat <Unknown>\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: 2012-04-07 04:56+0000\n"
"X-Generator: Launchpad (build 15060)\n"
"X-Launchpad-Export-Date: 2012-07-07 05:13+0000\n"
"X-Generator: Launchpad (build 15558)\n"
#. module: edi
#: sql_constraint:res.currency:0
msgid "The currency code must be unique per company!"
msgstr ""
msgstr "يجب أن يكون رمز العملة فريداً للشركة!"
#. module: edi
#: model:ir.model,name:edi.model_res_partner_address
@ -30,12 +30,12 @@ msgstr "عناوين الشريك"
#. module: edi
#: sql_constraint:res.company:0
msgid "The company name must be unique !"
msgstr "اسم الشركة يجب أن يكون فريداً !"
msgstr "يجب أن يكون اسم الشركة فريداً !"
#. module: edi
#: constraint:res.partner:0
msgid "Error ! You cannot create recursive associated members."
msgstr ""
msgstr "خطأ ! لا يمكنك إنشاء أعضاء مرتبطين و متداخلين."
#. module: edi
#: field:edi.document,name:0
@ -111,12 +111,12 @@ msgstr "مستند"
#. openerp-web
#: /home/odo/repositories/addons/trunk/edi/static/src/xml/edi.xml:23
msgid "View/Print"
msgstr ""
msgstr "عرض/طباعة"
#. openerp-web
#: /home/odo/repositories/addons/trunk/edi/static/src/xml/edi.xml:28
msgid "Import this document"
msgstr ""
msgstr "إستيراد هذه الوثيقة"
#. openerp-web
#: /home/odo/repositories/addons/trunk/edi/static/src/xml/edi.xml:33
@ -126,7 +126,7 @@ msgstr ""
#. openerp-web
#: /home/odo/repositories/addons/trunk/edi/static/src/xml/edi.xml:36
msgid "OpenERP instance address:"
msgstr "عنوان مثال أوبنيرب:"
msgstr "عنوان نسخة أوبن إي آر بي:"
#. openerp-web
#: /home/odo/repositories/addons/trunk/edi/static/src/xml/edi.xml:39
@ -177,7 +177,7 @@ msgstr ""
#. openerp-web
#: /home/odo/repositories/addons/trunk/edi/static/src/xml/edi.xml:60
msgid "OpenERP documentation"
msgstr "وثائق أوبنيرب"
msgstr "توثيق أوبن إي آر بي"
#. openerp-web
#: /home/odo/repositories/addons/trunk/edi/static/src/xml/edi.xml:61
@ -202,12 +202,12 @@ msgstr "تحميل"
#. openerp-web
#: /home/odo/repositories/addons/trunk/edi/static/src/xml/edi.xml:87
msgid "Powered by"
msgstr "مدعوم من kifcaliph و"
msgstr "يتم تشغيل هذا التطبيق بواسطة"
#. openerp-web
#: /home/odo/repositories/addons/trunk/edi/static/src/xml/edi.xml:87
msgid "OpenERP"
msgstr "أوبنيرب"
msgstr "أوبن إي آر بي"
#. openerp-web
#: /home/odo/repositories/addons/trunk/edi/static/src/xml/edi_account.xml:34

View File

@ -24,21 +24,6 @@ button.oe_edi_action_print img {
height: 32px;
}
.openerp input.invalid {
background-color: #F66 !important;
border: 1px solid #D00 !important;
color: #000;
}
/* following browse-specific hacks need to be separate rules, as browsers are
required to ignore rules with unknown selectors. At time of writing, there
is no standard way to style HTML5 placeholders */
.openerp input.invalid:-moz-placeholder {
color: #FFF;
}
.openerp input.invalid::-webkit-input-placeholder {
color: #FFF;
}
/** EDI Sidebar **/
.oe_edi_sidebar_title {
border-bottom: 1px solid #D2CFCF;
@ -81,9 +66,6 @@ button.oe_edi_action_print img {
/** Paperbox, from http://www.sitepoint.com/pure-css3-paper-curl/ **/
body {
background: #EEE; /* contrast with paper */
}
.oe_edi_paperbox {
position: relative;
width: 700px;
@ -225,4 +207,4 @@ table.oe_edi_data, .oe_edi_doc_title {
.python .nu0 {color: #ff4500;}
.python .me1 {color: black;}
.python span.xtra { display:block; }
.python ol { padding: 0px; }
.python ol { padding: 0px; }

View File

@ -51,7 +51,7 @@ Note that:
'res_partner_view.xml',
'email_template.xml',
],
'demo_xml': ['event_demo.xml'],
'demo_xml': ['event_demo.yml'],
'test': ['test/process/event_draft2done.yml'],
'css': ['static/src/css/event.css'],
'installable': True,

View File

@ -55,22 +55,14 @@ class event_event(osv.osv):
return []
res = []
for record in self.browse(cr, uid, ids, context=context):
date = record.date_begin.split(" ")
date = date[0]
registers=''
if record.register_max !=0:
register_max = str(record.register_max)
register_tot = record.register_current+record.register_prospect
register_tot = str(register_tot)
registers = register_tot+'/'+register_max
name = record.name+' ('+date+') '+registers
res.append((record['id'], name))
date = record.date_begin.split(" ")[0]
date_end = record.date_end.split(" ")[0]
if date != date_end:
date += ' - ' + date_end
display_name = record.name + ' (' + date + ')'
res.append((record['id'], display_name))
return res
def _name_get_fnc(self, cr, uid, ids,prop,unknow, context=None):
res = self.name_get(cr, uid, ids, context=context)
return dict(res)
def create(self, cr, uid, vals, context=None):
obj_id = super(event_event, self).create(cr, uid, vals, context)
self.create_send_note(cr, uid, [obj_id], context=context)
@ -210,10 +202,12 @@ class event_event(osv.osv):
help='If event is created, the state is \'Draft\'.If event is confirmed for the particular dates the state is set to \'Confirmed\'. If the event is over, the state is set to \'Done\'.If event is cancelled the state is set to \'Cancelled\'.'),
'email_registration_id' : fields.many2one('email.template','Registration Confirmation Email', help='This field contains the template of the mail that will be automatically sent each time a registration for this event is confirmed.'),
'email_confirmation_id' : fields.many2one('email.template','Event Confirmation Email', help="If you set an email template, each participant will receive this email announcing the confirmation of the event."),
'full_name' : fields.function(_name_get_fnc, type="char", string='Name'),
'reply_to': fields.char('Reply-To Email', size=64, readonly=False, states={'done': [('readonly', True)]}, help="The email address of the organizer is likely to be put here, with the effect to be in the 'Reply-To' of the mails sent automatically at event or registrations confirmation. You can also put the email address of your mail gateway if you use one."),
'main_speaker_id': fields.many2one('res.partner','Main Speaker', readonly=False, states={'done': [('readonly', True)]}, help="Speaker who will be giving speech at the event."),
'address_id': fields.many2one('res.partner','Location Address', readonly=False, states={'done': [('readonly', True)]}),
'street': fields.related('address_id','street',type='char',string='Street'),
'zip': fields.related('address_id','zip',type='char',string='zip'),
'city': fields.related('address_id','city',type='char',string='city'),
'speaker_confirmed': fields.boolean('Speaker Confirmed', readonly=False, states={'done': [('readonly', True)]}),
'country_id': fields.related('address_id', 'country_id',
type='many2one', relation='res.country', string='Country', readonly=False, states={'done': [('readonly', True)]}),
@ -302,7 +296,7 @@ class event_registration(osv.osv):
"""Event Registration"""
_name= 'event.registration'
_description = __doc__
_inherit = ['ir.needaction_mixin','mail.thread','res.partner']
_inherit = ['ir.needaction_mixin','mail.thread']
_columns = {
'id': fields.integer('ID'),
'origin': fields.char('Source', size=124,readonly=True,help="Name of the sale order which create the registration"),
@ -316,13 +310,16 @@ class event_registration(osv.osv):
'log_ids': fields.one2many('mail.message', 'res_id', 'Logs', domain=[('email_from', '=', False),('model','=',_name)]),
'event_end_date': fields.related('event_id','date_end', type='datetime', string="Event End Date", readonly=True),
'event_begin_date': fields.related('event_id', 'date_begin', type='datetime', string="Event Start Date", readonly=True),
'user_id': fields.many2one('res.users', 'Attendee', states={'done': [('readonly', True)]}),
'user_id': fields.many2one('res.users', 'User', states={'done': [('readonly', True)]}),
'company_id': fields.related('event_id', 'company_id', type='many2one', relation='res.company', string='Company', store=True, readonly=True, states={'draft':[('readonly',False)]}),
'state': fields.selection([('draft', 'Unconfirmed'),
('cancel', 'Cancelled'),
('open', 'Confirmed'),
('done', 'Attended')], 'Status',
size=16, readonly=True),
'email': fields.char('Email', size=64),
'phone': fields.char('Phone', size=64),
'name': fields.char('Name', size=128, select=True),
}
_defaults = {
@ -331,7 +328,6 @@ class event_registration(osv.osv):
}
_order = 'name, create_date desc'
def do_draft(self, cr, uid, ids, context=None):
self.do_draft_send_note(cr, uid, ids, context=context)
return self.write(cr, uid, ids, {'state': 'draft'}, context=context)
@ -400,18 +396,15 @@ class event_registration(osv.osv):
return True
def onchange_contact_id(self, cr, uid, ids, contact, partner, context=None):
data ={}
if not contact:
return data
return {}
addr_obj = self.pool.get('res.partner')
contact_id = addr_obj.browse(cr, uid, contact, context=context)
data = {
return {'value': {
'email':contact_id.email,
'contact_id':contact_id.id,
'name':contact_id.name,
'phone':contact_id.phone,
}
return {'value': data}
}}
def onchange_event(self, cr, uid, ids, event_id, context=None):
"""This function returns value of Product Name, Unit Price based on Event.

View File

@ -1,98 +0,0 @@
<?xml version="1.0"?>
<openerp>
<data>
<record id="base.user_demo" model="res.users">
<field name="groups_id" eval="[(4, ref('event.group_event_user'))]"/>
</record>
<!-- Demo Data for Event Type -->
<record id="event_type_0" model="event.type">
<field name="name">Seminar</field>
</record>
<record id="event_type_1" model="event.type">
<field name="name">Exhibition</field>
</record>
<record id="event_type_2" model="event.type">
<field name="name">Conference</field>
</record>
<record id="event_type_3" model="event.type">
<field name="name">Show</field>
</record>
<record id="event_type_4" model="event.type">
<field name="name">Training</field>
</record>
<!-- Demo data for Event -->
<record id="event_0" model="event.event">
<field name="name">Concert of Bon Jovi</field>
<field eval="time.strftime('%Y-%m-01 19:05:15')" name="date_begin"/>
<field eval="time.strftime('%Y-%m-01 23:05:15')" name="date_end"/>
<field name="register_max">500</field>
<field name="type" ref="event_type_1"/>
</record>
<record id="event_1" model="event.event">
<field name="name">Opera of Verdi</field>
<field eval="(DateTime.today()+ timedelta(days=1)).strftime('%Y-%m-%d 18:00:00')" name="date_begin"/>
<field eval="(DateTime.today()+ timedelta(days=2)).strftime('%Y-%m-%d 21:00:00')" name="date_end"/>
<field name="type" ref="event_type_1"/>
<field name="register_min">50</field>
<field name="register_max">350</field>
</record>
<record id="event_2" model="event.event">
<field name="name">Conference on ERP Business</field>
<field eval="(DateTime.today()+ timedelta(days=2)).strftime('%Y-%m-%d 14:00:00')" name="date_begin"/>
<field eval="(DateTime.today()+ timedelta(days=2)).strftime('%Y-%m-%d 16:30:00')" name="date_end"/>
<field name="type" ref="event_type_2"/>
<field name="register_max">200</field>
</record>
<function model="event.event" name="button_confirm" eval="[ref('event_2')]"/>
<function model="event.event" name="button_confirm" eval="[ref('event_2')]"/>
<!-- Demo data for Event Registration-->
<record id="reg_1_1" model="event.registration">
<field name="name">Agrolait</field>
<field name="email">s.l@agrolait.be</field>
<field name="phone">003281588558</field>
<field name="event_id" ref="event_1"/>
<field name="partner_id" ref="base.res_partner_agrolait"/>
<field name="nb_register">5</field>
</record>
<record id="reg_1_2" model="event.registration">
<field name="name">ASUStek</field>
<field name="email">info@asustek.com</field>
<field name="phone">+ 1 64 61 04 01</field>
<field name="partner_id" ref="base.res_partner_asus"/>
<field name="event_id" ref="event_1"/>
<field name="nb_register">10</field>
</record>
<record id="reg_0_1" model="event.registration">
<field name="name">Syleam</field>
<field name="email">contact@syleam.fr</field>
<field name="phone">+33 (0) 2 33 31 22 10</field>
<field name="partner_id" ref="base.res_partner_sednacom"/>
<field name="event_id" ref="event_0"/>
<field name="nb_register">6</field>
</record>
<record id="reg_0_2" model="event.registration">
<field name="name">Camptocamp</field>
<field name="email">openerp@camptocamp.com</field>
<field name="phone">+41 21 619 10 04 </field>
<field name="event_id" ref="event_2"/>
<field name="partner_id" ref="base.res_partner_c2c"/>
<field name="nb_register">5</field>
</record>
</data>
</openerp>

View File

@ -0,0 +1,73 @@
-
from datetime import datetime, timedelta
-
!record {model: event.type, id: event_type_0}:
name: 'Seminar'
-
!record {model: event.type, id: event_type_1}:
name: 'Exhibition'
-
!record {model: event.type, id: event_type_2}:
name: 'Conference'
-
!record {model: event.type, id: event_type_3}:
name: 'Show'
-
!record {model: event.type, id: event_type_4}:
name: 'Training'
-
!record {model: event.event, id: event_0}:
name: 'Concert of Bon Jovi'
date_begin: !eval time.strftime('%Y-%m-01 19:05:15')
date_end: !eval time.strftime('%Y-%m-01 23:05:15')
register_max: 500
type: event_type_1
-
!record {model: event.event, id: event_1}:
name: 'Opera of Verdi'
date_begin: !eval (datetime.today()+ timedelta(days=1)).strftime('%Y-%m-%d 18:00:00')
date_end: !eval (datetime.today()+ timedelta(days=1)).strftime('%Y-%m-%d 21:00:00')
register_min: 50
register_max: 350
type: event_type_1
-
!record {model: event.event, id: event_2}:
name: 'Conference on ERP Business'
date_begin: !eval (datetime.today()+ timedelta(days=20)).strftime('%Y-%m-%d 14:00:00')
date_end: !eval (datetime.today()+ timedelta(days=20)).strftime('%Y-%m-%d 16:30:00')
register_min: 50
register_max: 350
type: event_type_2
-
!record {model: event.registration, id: reg_1_1}:
name: 'Agrolait'
email: 's.l@agrolait.be'
phone: '003281588558'
event_id: event_1
partner_id: base.res_partner_asus
nb_register: 5
-
!record {model: event.registration, id: reg_1_2}:
name: 'ASUStek'
email: 'info@asustek.com'
phone: '+ 1 64 61 04 01'
event_id: event_1
partner_id: base.res_partner_asus
nb_register: 10
-
!record {model: event.registration, id: reg_0_1}:
name: 'Syleam'
email: 'contact@syleam.fr'
phone: '+33 (0) 2 33 31 22 10'
event_id: event_0
partner_id: base.res_partner_sednacom
nb_register: 6
-
!record {model: event.registration, id: reg_0_2}:
name: 'Camptocamp'
email: 'openerp@camptocamp.com'
phone: '+41 21 619 10 04'
event_id: event_2
partner_id: base.res_partner_c2c
nb_register: 5

View File

@ -1,7 +1,14 @@
<?xml version="1.0"?>
<openerp>
<data>
<act_window
id="act_event_list_register_event"
name="Registration"
res_model="event.registration"
src_model="event.event"
view_mode="calendar,tree,form,graph"
context="{'search_default_event_id': active_id, 'default_event_id': active_id}"
view_type="form"/>
<menuitem name="Events" id="event_main_menu"/>
<menuitem name="Events Organisation" id="base.menu_event_main" parent="event_main_menu" />
@ -17,10 +24,10 @@
<group col="4">
<field name="name"/>
<field name="default_reply_to"/>
<field name="default_email_event" domain="[('model_id.model','=','event.registration')]"/>
<field name="default_email_registration" domain="[('model_id.model','=','event.registration')]"/>
<field name="default_registration_min"/>
<field name="default_email_event" domain="[('model_id.model','=','event.registration')]"/>
<field name="default_registration_max"/>
<field name="default_email_registration" domain="[('model_id.model','=','event.registration')]"/>
</group>
</form>
</field>
@ -89,88 +96,103 @@
<field name="model">event.event</field>
<field name="type">form</field>
<field name="arch" type="xml">
<form string="Events" version="7.0">
<header>
<button string="Confirm Event" name="button_confirm" states="draft" type="object" class="oe_highlight"/>
<button string="Event Ended" name="button_done" states="confirm" type="object" class="oe_highlight"/>
<button string="Set To Draft" name="button_draft" states="cancel,done" type="object" />
<button string="Cancel Event" name="button_cancel" states="draft,confirm" type="object"/>
<field name="state" widget="statusbar" statusbar_visible="draft,confirm,done"/>
</header>
<sheet>
<div class="oe_right" style="height: 200px"></div>
<div class="oe_title">
<h1><field name="name"/></h1>
<group>
<group>
<field name="type" on_change="onchange_event_type(type,context)"/>
<field name="user_id"/>
<field name="address_id" widget="many2one_address_google_map" widget_option="{'placeholder':'.oe_google_map'}"/>
</group>
<group>
<field name="date_begin"/>
<field name="date_end"/>
<field name="register_min"/>
<field name="register_max"/>
</group>
</group>
</div>
<notebook>
<page string="Event Description">
<field name="note" colspan="4" nolabel="1"/>
</page>
<page string="Internal Data">
<group class="oe_group_label_border" colspan="2" col="2">
<field name="register_current"/>
<field name="register_prospect"/>
<field name="register_attended"/>
</group>
<group class="oe_group_label_border" colspan="2" col="2">
<field name="main_speaker_id" domain="[('speaker','=',True)]" context="{'default_speaker':1}"/>
<field name="speaker_confirmed"/>
</group>
<field name="registration_ids" colspan="4" nolabel="1" groups="event.group_event_manager,event.group_event_user">
<tree string="Registration" editable="top">
<field name="name" />
<field name="email" />
<field name="phone"/>
<field name="nb_register" />
<field name="state"/>
<button name="registration_open" string="Confirm Registration" states="draft" type="object" icon="gtk-apply"/>
<button name="button_reg_close" string="Attented the Event" states="open" type="object" icon="gtk-jump-to"/>
<button name="button_reg_cancel" string="Cancel Registration" states="draft,open" type="object" icon="gtk-cancel"/>
</tree>
<form string="Registration">
<field name="partner_id" attrs="{'readonly':[('state','!=', 'draft')]}" on_change="onchange_partner_id(partner_id, context)" />
<field name="name"/>
<group colspan="4" col="4">
<field name="email"/>
<field name="phone"/>
<form string="Events" version="7.0">
<header>
<button string="Confirm Event" name="button_confirm" states="draft" type="object" class="oe_highlight"/>
<button string="Event Ended" name="button_done" states="confirm" type="object" class="oe_highlight"/>
<button string="Set To Draft" name="button_draft" states="cancel,done" type="object" />
<button string="Cancel Event" name="button_cancel" states="draft,confirm" type="object"/>
<field name="state" widget="statusbar" statusbar_visible="draft,confirm,done"/>
</header>
<sheet>
<div class="oe_right oe_button_box">
<button name="%(event.act_event_list_register_event)d" type="action" string="Registration" icon="gtk-index" help="Register with this event"/>
</div>
<div class="oe_title">
<label for="name" class="oe_edit_only"/>
<h1><field name="name"/></h1>
</div>
<div>
<h2>From <field name="date_begin" class="oe_inline" /> to <field name="date_end" class="oe_inline"/>
</h2>
<group>
<group>
<label for="address_id" string="Location Address"/>
<div>
<field name="address_id" widget="many2one_address_google_map" widget_option="{'placeholder':'.oe_google_map'}"/>
<field name="street" placeholder="Street..."/>
<div>
<field name="zip" class="oe_inline" placeholder="Zip"/>
<field name="city" class="oe_inline" placeholder="City"/>
</div>
</div>
</group>
<group colspan="4" col="4">
<field name="nb_register"/>
</group>
<group colspan="4" col="4">
</group>
<group col="8" colspan="4">
<separator string="" colspan="4"/>
<newline/>
<field name="state" colspan="2"/>
<button name="registration_open" string="Confirm Registration" states="draft" type="object" icon="gtk-apply"/>
<button name="button_reg_close" string="Attended the Event" states="open" type="object" icon="gtk-jump-to"/>
<button name="button_reg_cancel" string="Cancel Registration" states="draft,open" type="object" icon="gtk-cancel"/>
<group>
<field name="type" on_change="onchange_event_type(type,context)"/>
<field name="register_min"/>
<field name="register_max"/>
<label for="register_current" string="Current Registrations"/>
<div>
Confirmed: <field name="register_current" class="oe_inline"/>, Unconfirmed: <field name="register_prospect" class="oe_inline"/>
</div>
</group>
</group>
</div>
<!-- <div class="oe_right" style="height: 200px"></div> -->
<notebook>
<page string="Event Description">
<field name="note" colspan="4" nolabel="1"/>
</page>
<page string="Internal Data">
<group>
<group>
<field name="main_speaker_id" domain="[('speaker','=',True)]" context="{'default_speaker':1}"/>
<field name="speaker_confirmed"/>
</group>
</form>
</field>
</page>
</notebook>
<group>
<field name="register_attended"/>
</group>
</group>
<field name="registration_ids" colspan="4" nolabel="1" groups="event.group_event_manager,event.group_event_user">
<tree string="Registration" editable="top">
<field name="name" />
<field name="email" />
<field name="phone"/>
<field name="nb_register" />
<field name="state"/>
<button name="registration_open" string="Confirm Registration" states="draft" type="object" icon="gtk-apply"/>
<button name="button_reg_close" string="Attented the Event" states="open" type="object" icon="gtk-jump-to"/>
<button name="button_reg_cancel" string="Cancel Registration" states="draft,open" type="object" icon="gtk-cancel"/>
</tree>
<form string="Registration">
<field name="partner_id" attrs="{'readonly':[('state','!=', 'draft')]}" on_change="onchange_partner_id(partner_id, context)" />
<field name="name"/>
<group colspan="4" col="4">
<field name="email"/>
<field name="phone"/>
</group>
<group colspan="4" col="4">
<field name="nb_register"/>
</group>
<group colspan="4" col="4">
</group>
<group col="8" colspan="4">
<separator string="" colspan="4"/>
<newline/>
<field name="state" colspan="2"/>
<button name="registration_open" string="Confirm Registration" states="draft" type="object" icon="gtk-apply"/>
<button name="button_reg_close" string="Attended the Event" states="open" type="object" icon="gtk-jump-to"/>
<button name="button_reg_cancel" string="Cancel Registration" states="draft,open" type="object" icon="gtk-cancel"/>
</group>
</form>
</field>
</page>
</notebook>
</sheet>
<footer>
<field name="message_ids" colspan="4" widget="mail_thread" nolabel="1"/>
</footer>
</form>
</form>
</field>
</record>
@ -351,15 +373,6 @@
<field name="help">Event is the low level object used by meeting and others documents that should be synchronized with mobile devices or calendar applications through caldav. Most of the users should work in the Calendar menu, and not in the list of events.</field>
</record>
<act_window
id="act_event_list_register_event"
name="Registration"
res_model="event.registration"
src_model="event.event"
view_mode="calendar,tree,form,graph"
context="{'search_default_event_id': [active_id], 'default_event_id': active_id}"
view_type="form"/>
<act_window
id="act_register_event_partner"
name="Subscribe"
@ -436,44 +449,40 @@
<field name="type">form</field>
<field name="arch" type="xml">
<form version="7.0">
<header>
<button name="registration_open" string="Confirm" states="draft" type="object" class="oe_highlight"/>
<button name="button_reg_close" string="Attended" states="open" type="object" class="oe_highlight"/>
<button string="Set To Unconfirmed" name="do_draft" states="cancel,done" type="object" />
<button name="button_reg_cancel" string="Cancel Registration" states="draft,open" type="object"/>
<field name="state" nolabel="1" colspan="2" widget="statusbar" statusbar_visible="draft,open,done"/>
</header>
<sheet string="Registration">
<group col="6" colspan="4">
<field name="event_id" on_change="onchange_event(event_id, context)" domain="[('state','in',('draft','confirm'))]"/>
<field name="partner_id" attrs="{'readonly':[('state','!=', 'draft')]}" on_change="onchange_partner_id(partner_id, context)"/>
<field name="nb_register"/>
<field name="user_id" attrs="{'readonly':[('state','!=', 'draft')]}"/>
<field name="origin"/>
</group>
<notebook colspan="4">
<page string="Additional Information">
<group colspan="2" col="2">
<separator string="Contact Information" colspan="2"/>
<header>
<button name="registration_open" string="Confirm" states="draft" type="object" class="oe_highlight"/>
<button name="button_reg_close" string="Attended" states="open" type="object" class="oe_highlight"/>
<button string="Set To Unconfirmed" name="do_draft" states="cancel,done" type="object" />
<button name="button_reg_cancel" string="Cancel Registration" states="draft,open" type="object"/>
<field name="state" nolabel="1" colspan="2" widget="statusbar" statusbar_visible="draft,open,done"/>
</header>
<sheet string="Registration">
<label for="event_id" class="oe_edit_only"/>
<h1>
<field name="event_id" on_change="onchange_event(event_id, context)" domain="[('state','in',('draft','confirm'))]"/>
</h1>
<group>
<group>
<field name="partner_id" attrs="{'readonly':[('state','!=', 'draft')]}" on_change="onchange_partner_id(partner_id, context)"/>
<field name="name"/>
<field name="email"/>
<field name="phone"/>
<label for="email"/>
<div>
<field name="email" class="oe_inline"/>
<button class="oe_inline oe_right" string="Send Email"
name="%(mail.action_email_compose_message_wizard)d"
icon="terp-mail-message-new" context= '{"default_email_to":email}' type="action"/>
</div>
</group>
<group colspan="2" col="2" groups="base.group_no_one">
<separator string="Dates" colspan="2"/>
<group>
<field name="nb_register"/>
<field name="user_id" attrs="{'readonly':[('state','!=', 'draft')]}"/>
</group>
<group groups="base.group_no_one">
<field name="create_date"/>
<field name="date_closed"/>
<field name="event_begin_date" />
<field name="event_end_date" />
</group>
</page>
<page string="Emails">
<button string="Send New Email"
name="%(mail.action_email_compose_message_wizard)d"
icon="terp-mail-message-new" context= '{"default_email_to":email}' type="action"/>
</page>
</notebook>
</group>
</sheet>
<footer>
<field name="message_ids" colspan="4" widget="mail_thread" nolabel="1"/>

View File

@ -77,12 +77,10 @@ class report_event_registration(osv.osv):
r.state AS registration_state
FROM
event_event e
LEFT JOIN
event_registration r ON (e.id=r.event_id)
WHERE r.active = 'true'
GROUP BY
event_id,
user_id_registration,

View File

@ -1,8 +1,8 @@
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_event_type,event.type,model_event_type,event.group_event_user,1,0,0,0
access_event_type_manager,event.type manager,model_event_type,event.group_event_manager,1,1,1,1
access_event_event,event.event,model_event_event,event.group_event_user,1,1,1,0
access_event_registration,event.registration,model_event_registration,event.group_event_user,1,1,1,0
access_event_event,event.event,model_event_event,event.group_event_user,1,1,1,1
access_event_registration,event.registration,model_event_registration,event.group_event_user,1,1,1,1
access_report_event_registration,report.event.registration,model_report_event_registration,event.group_event_user,1,1,1,1
access_event_event_manager,event.event manager,model_event_event,event.group_event_manager,1,0,0,0
access_event_registration_manager,event.registration manager,model_event_registration,event.group_event_manager,1,0,0,0
access_event_event_portal,event.event,model_event_event,,1,0,0,0
access_event_registration_portal,event.registration,model_event_registration,,1,0,0,0

1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
2 access_event_type event.type model_event_type event.group_event_user 1 0 0 0
3 access_event_type_manager event.type manager model_event_type event.group_event_manager 1 1 1 1
4 access_event_event event.event model_event_event event.group_event_user 1 1 1 0 1
5 access_event_registration event.registration model_event_registration event.group_event_user 1 1 1 0 1
6 access_report_event_registration report.event.registration model_report_event_registration event.group_event_user 1 1 1 1
7 access_event_event_manager access_event_event_portal event.event manager event.event model_event_event event.group_event_manager 1 0 0 0
8 access_event_registration_manager access_event_registration_portal event.registration manager event.registration model_event_registration event.group_event_manager 1 0 0 0

View File

@ -7,14 +7,13 @@
<field name="type">form</field>
<field name="inherit_id" ref="event.view_event_registration_form" />
<field name="arch" type="xml">
<xpath expr="//page[@string='Emails']" position="after">
<page string="Moodle">
<field name="moodle_user_password" readonly='1' colspan="2"/>
<field name="moodle_uid" readonly="1"/>
</page>
<xpath expr="//field[@name='user_id']" position="after">
<field name="moodle_user_password" readonly='1'/>
<field name="moodle_uid" readonly="1"/>
</xpath>
<field name="email" position="replace">
<field name="email" required="1" />
<!-- set the email as required -->
<field name="email" nolabel="1" required="1" />
</field>
<field name="name" position="replace">
<field name="moodle_username" colspan="2" on_change="onchange_moodle_name(moodle_user_password)"/>
@ -29,12 +28,12 @@
<field name="inherit_id" ref="event.view_event_form" />
<field name="arch" type="xml">
<xpath expr="//field[@name='registration_ids']/tree/field[@name='name']" position="replace">
<field name="moodle_username" on_change="onchange_moodle_name(moodle_user_password)"/>
<field name="name" required="1" />
<field name="moodle_username" on_change="onchange_moodle_name(moodle_user_password)"/>
<field name="name" required="1" />
</xpath>
<field name="email" position="replace">
<field name="email" required="1" />
</field>
<field name="email" position="replace">
<field name="email" required="1" />
</field>
</field>
</record>
</data>

View File

@ -370,10 +370,6 @@
<field name="department_id" class="oe_inline"/>
<label class="oe_inline" string=")" attrs="{'invisible': [('department_id', '=', False)]}"/>
</h1>
<label for="employee_ids" class="oe_edit_only"/>
<h2>
<field name="employee_ids" widget="many2many_tags" mode="tree,form"/>
</h2>
<group>
<group>
<field name="no_of_employee"/>

View File

@ -20,34 +20,32 @@
or
<button string="Cancel" type="object" name="cancel" class="oe_link"/>
</header>
<sheet>
<group string="Additional Features">
<group>
<field name="module_hr_expense"/>
<field name="module_hr_evaluation"/>
<field name="module_hr_holidays"/>
</group>
<group>
<field name="module_hr_recruitment"/>
<field name="module_hr_contract"/>
<label for="module_hr_payroll"/>
<div>
<field name="module_hr_payroll"/>
<button name="%(open_payroll_modules)d" type="action"
string="Install Country-Specific Payroll" icon="gtk-go-forward"
attrs="{'invisible': [('module_hr_payroll','=',False)]}"/>
</div>
</group>
<group string="Additional Features">
<group>
<field name="module_hr_expense"/>
<field name="module_hr_evaluation"/>
<field name="module_hr_holidays"/>
</group>
<group>
<group string="Timesheets">
<field name="module_hr_attendance" on_change="onchange_hr_attendance(module_hr_attendance)"/>
<field name="module_hr_timesheet" on_change="onchange_hr_timesheet(module_hr_timesheet)"/>
<field name="module_hr_timesheet_sheet"/>
</group>
<group name="config_recruitment"/>
<field name="module_hr_recruitment"/>
<field name="module_hr_contract"/>
<label for="module_hr_payroll"/>
<div>
<field name="module_hr_payroll"/>
<button name="%(open_payroll_modules)d" type="action"
string="Install Country-Specific Payroll" icon="gtk-go-forward"
attrs="{'invisible': [('module_hr_payroll','=',False)]}"/>
</div>
</group>
</sheet>
</group>
<group>
<group string="Timesheets">
<field name="module_hr_attendance" on_change="onchange_hr_attendance(module_hr_attendance)"/>
<field name="module_hr_timesheet" on_change="onchange_hr_timesheet(module_hr_timesheet)"/>
<field name="module_hr_timesheet_sheet"/>
</group>
<group name="config_recruitment"/>
</group>
</form>
</field>
</record>

View File

@ -71,19 +71,18 @@
<sheet>
<div class="oe_title">
<h1>
<field name="name" class="oe_inline"/>, <field name="employee_id" class="oe_inline"/>
<field name="name" placeholder="Contract Reference"/>
</h1>
<h2>
<div>
<label for="job_id" class="oe_edit_only"/>
<field name="job_id"/>
</div>
<div>
<label for="type_id" class="oe_edit_only"/>
<field name="type_id"/>
</div>
</h2>
</div>
<group>
<group>
<field name="employee_id"/>
<field name="job_id"/>
</group>
<group>
<field name="type_id"/>
</group>
</group>
<notebook>
<page string="Information" name="information">
<group>

View File

@ -50,7 +50,7 @@ Note that:
for example, you maybe will do it for the user 'admin'.
""",
'images': ['images/hr_allocation_requests.jpeg', 'images/hr_leave_requests.jpeg', 'images/leaves_analysis.jpeg'],
'depends': ['hr', 'crm', 'process', 'resource'],
'depends': ['hr', 'base_calendar', 'process', 'resource'],
'init_xml': [],
'update_xml': [
'security/ir.model.access.csv',

View File

@ -74,7 +74,8 @@ class hr_holidays_status(osv.osv):
_columns = {
'name': fields.char('Leave Type', size=64, required=True, translate=True),
'categ_id': fields.many2one('crm.case.categ', 'Meeting', domain="[('object_id.model', '=', 'crm.meeting')]", help='If you set a meeting type, OpenERP will create a meeting in the calendar once a leave is validated.'),
'categ_id': fields.many2one('crm.meeting.type', 'Meeting Type',
help='Once a leave is validated, OpenERP will create a corresponding meeting of this type in the calendar.'),
'color_name': fields.selection([('red', 'Red'),('blue','Blue'), ('lightgreen', 'Light Green'), ('lightblue','Light Blue'), ('lightyellow', 'Light Yellow'), ('magenta', 'Magenta'),('lightcyan', 'Light Cyan'),('black', 'Black'),('lightpink', 'Light Pink'),('brown', 'Brown'),('violet', 'Violet'),('lightcoral', 'Light Coral'),('lightsalmon', 'Light Salmon'),('lavender', 'Lavender'),('wheat', 'Wheat'),('ivory', 'Ivory')],'Color in Report', required=True, help='This color will be used in the leaves summary located in Reporting\Leaves by Departement'),
'limit': fields.boolean('Allow to Override Limit', help='If you select this checkbox, the system allows the employees to take more leaves than the available ones for this type.'),
'active': fields.boolean('Active', help="If the active field is set to false, it will allow you to hide the leave type without removing it."),
@ -128,7 +129,7 @@ class hr_holidays(osv.osv):
'notes': fields.text('Reasons',readonly=True, states={'draft':[('readonly',False)], 'confirm':[('readonly',False)]}),
'number_of_days_temp': fields.float('Number of Days', readonly=True, states={'draft':[('readonly',False)], 'confirm':[('readonly',False)]}),
'number_of_days': fields.function(_compute_number_of_days, string='Number of Days', store=True),
'case_id': fields.many2one('crm.meeting', 'Meeting'),
'meeting_id': fields.many2one('crm.meeting', 'Meeting'),
'type': fields.selection([('remove','Leave Request'),('add','Allocation Request')], 'Request Type', required=True, readonly=True, states={'draft':[('readonly',False)], 'confirm':[('readonly',False)]}, help="Choose 'Leave Request' if someone wants to take an off-day. \nChoose 'Allocation Request' if you want to increase the number of leaves available for someone", select=True),
'parent_id': fields.many2one('hr.holidays', 'Parent'),
'linked_request_ids': fields.one2many('hr.holidays', 'parent_id', 'Linked Requests',),
@ -217,19 +218,12 @@ class hr_holidays(osv.osv):
}
return result
def onchange_sec_id(self, cr, uid, ids, status, context=None):
warning = {}
def onchange_status_id(self, cr, uid, ids, status_id, context=None):
double_validation = False
obj_holiday_status = self.pool.get('hr.holidays.status')
if status:
holiday_status = obj_holiday_status.browse(cr, uid, status, context=context)
if status_id:
holiday_status = self.pool.get('hr.holidays.status').browse(cr, uid, status_id, context=context)
double_validation = holiday_status.double_validation
if holiday_status.categ_id and holiday_status.categ_id.section_id and not holiday_status.categ_id.section_id.allow_unlink:
warning = {
'title': "Warning for ",
'message': "You won\'t be able to cancel this leave request because the CRM Sales Team of the leave type disallows."
}
return {'warning': warning, 'value': {'double_validation': double_validation}}
return {'value': {'double_validation': double_validation}}
def set_to_draft(self, cr, uid, ids, context=None):
self.write(cr, uid, ids, {
@ -271,7 +265,7 @@ class hr_holidays(osv.osv):
holiday_ids.append(record.id)
if record.holiday_type == 'employee' and record.type == 'remove':
meeting_obj = self.pool.get('crm.meeting')
vals = {
meeting_vals = {
'name': record.name,
'categ_id': record.holiday_status_id.categ_id.id,
'duration': record.number_of_days_temp * 8,
@ -280,11 +274,11 @@ class hr_holidays(osv.osv):
'date': record.date_from,
'end_date': record.date_to,
'date_deadline': record.date_to,
'leave_id': record.id,
'state': 'done', # to block that meeting date in the calendar
}
case_id = meeting_obj.create(cr, uid, vals)
meeting_id = meeting_obj.create(cr, uid, meeting_vals)
self._create_resource_leave(cr, uid, [record], context=context)
self.write(cr, uid, ids, {'case_id': case_id})
self.write(cr, uid, ids, {'meeting_id': meeting_id})
elif record.holiday_type == 'category':
emp_ids = obj_emp.search(cr, uid, [('category_ids', 'child_of', [record.category_id.id])])
leave_ids = []
@ -330,11 +324,11 @@ class hr_holidays(osv.osv):
return True
def holidays_cancel(self, cr, uid, ids, context=None):
obj_crm_meeting = self.pool.get('crm.meeting')
meeting_obj = self.pool.get('crm.meeting')
for record in self.browse(cr, uid, ids):
# Delete the meeting
if record.case_id:
obj_crm_meeting.unlink(cr, uid, [record.case_id.id])
if record.meeting_id:
meeting_obj.unlink(cr, uid, [record.meeting_id.id])
# If a category that created several holidays, cancel all related
wf_service = netsvc.LocalService("workflow")
@ -519,10 +513,4 @@ class hr_employee(osv.osv):
hr_employee()
class crm_meeting(osv.osv):
_inherit = 'crm.meeting'
_columns = {
'leave_id': fields.many2one('hr.holidays','Leave'),
}
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

View File

@ -119,7 +119,7 @@
<field name="department_id" attrs="{'readonly':[('holiday_type','=','category')]}" groups="base.group_hr_user"/>
</group>
<group>
<field name="holiday_status_id" on_change="onchange_sec_id(holiday_status_id)" context="{'employee_id':employee_id}"/>
<field name="holiday_status_id" on_change="onchange_status_id(holiday_status_id)" context="{'employee_id':employee_id}"/>
<label for="number_of_days_temp" string="Duration"/>
<div>
<field name="date_from" on_change="onchange_date_from(date_to, date_from)" required="1" class="oe_inline"/> -
@ -178,7 +178,7 @@
<field name="department_id" attrs="{'readonly':['|', ('holiday_type','=','category'), ('state','not in' ,('draft', 'confirm'))]}"/>
</group>
<group>
<field name="holiday_status_id" on_change="onchange_sec_id(holiday_status_id)" context="{'employee_id':employee_id}"/>
<field name="holiday_status_id" on_change="onchange_status_id(holiday_status_id)" context="{'employee_id':employee_id}"/>
<field name="number_of_days_temp"/>
</group>
</group>

View File

@ -42,11 +42,10 @@ system to store and search in your CV base.
'decimal_precision',
'hr',
'survey',
'crm',
'base_calendar',
'fetchmail',
],
'update_xml': [
'wizard/hr_recruitment_phonecall_view.xml',
'wizard/hr_recruitment_employee_hired.xml',
'wizard/hr_recruitment_create_partner_job_view.xml',
'hr_recruitment_view.xml',

View File

@ -24,15 +24,10 @@ import time
from datetime import datetime, timedelta
from osv import fields, osv
from crm import crm
import tools
import collections
import binascii
import tools
from tools.translate import _
from crm import wizard
wizard.mail_compose_message.SUPPORTED_MODELS.append('hr.applicant')
AVAILABLE_STATES = [
('draft', 'New'),
@ -98,6 +93,7 @@ class hr_applicant(base_stage, osv.Model):
_description = "Applicant"
_order = "id desc"
_inherit = ['ir.needaction_mixin', 'mail.thread']
_mail_compose_message = True
def _get_default_department_id(self, cr, uid, context=None):
""" Gives default department by checking if present in the context """
@ -239,7 +235,7 @@ class hr_applicant(base_stage, osv.Model):
'stage_id': lambda s, cr, uid, c: s._get_default_stage_id(cr, uid, c),
'department_id': lambda s, cr, uid, c: s._get_default_department_id(cr, uid, c),
'priority': lambda *a: '',
'company_id': lambda s, cr, uid, c: s.pool.get('res.company')._company_default_get(cr, uid, 'crm.helpdesk', context=c),
'company_id': lambda s, cr, uid, c: s.pool.get('res.company')._company_default_get(cr, uid, 'hr.applicant', context=c),
'color': 0,
}
@ -293,49 +289,22 @@ class hr_applicant(base_stage, osv.Model):
return False
def action_makeMeeting(self, cr, uid, ids, context=None):
""" This opens Meeting's calendar view to schedule meeting on current applicant
@return: Dictionary value for created Meeting view
"""
This opens Meeting's calendar view to schedule meeting on current Opportunity
@param self: The object pointer
@param cr: the current row, from the database cursor,
@param uid: the current users ID for security checks,
@param ids: List of Opportunity to Meeting IDs
@param context: A standard dictionary for contextual values
@return: Dictionary value for created Meeting view
"""
data_obj = self.pool.get('ir.model.data')
if context is None:
context = {}
value = {}
for opp in self.browse(cr, uid, ids, context=context):
# Get meeting views
search_view = data_obj.get_object(cr, uid, 'crm', 'view_crm_case_meetings_filter', context)
calendar_view = data_obj.get_object(cr, uid, 'crm', 'crm_case_calendar_view_meet', context)
form_view = data_obj.get_object(cr, uid, 'crm', 'crm_case_form_view_meet', context)
tree_view = data_obj.get_object(cr, uid, 'crm', 'crm_case_tree_view_meet', context)
category = data_obj.get_object(cr, uid, 'hr_recruitment', 'categ_meet_interview', context)
context.update({
'default_applicant_id': opp.id,
'default_partner_id': opp.partner_id and opp.partner_id.id or False,
'default_email_from': opp.email_from,
'default_state': 'open',
'default_categ_id': category.id,
'default_name': opp.name,
})
value = {
'name': ('Meetings'),
'domain': "[('user_id','=',%s)]" % (uid),
'context': context,
'view_type': 'form',
'view_mode': 'calendar,form,tree',
'res_model': 'crm.meeting',
'view_id': False,
'views': [(calendar_view.id, 'calendar'), (form_view.id, 'form'), (tree_view.id, 'tree')],
'type': 'ir.actions.act_window',
'search_view_id': search_view.id,
'nodestroy': True,
}
return value
applicant = self.browse(cr, uid, ids[0], context)
category = self.pool.get('ir.model.data').get_object(cr, uid, 'hr_recruitment', 'categ_meet_interview', context)
res = self.pool.get('ir.actions.act_window').for_xml_id(cr, uid, 'base_calendar', 'action_crm_meeting', context)
res['context'] = {
'default_applicant_id': applicant.id,
'default_partner_id': applicant.partner_id and applicant.partner_id.id or False,
'default_user_id': uid,
'default_email_from': applicant.email_from,
'default_state': 'open',
'default_name': applicant.name,
'default_categ_id': category.id,
}
return res
def action_print_survey(self, cr, uid, ids, context=None):
"""

View File

@ -5,11 +5,9 @@
-->
<data>
<!-- Case category (for interview meetings) -->
<record model="crm.case.categ" id="categ_meet_interview">
<!-- Meeting Types (for interview meetings) -->
<record model="crm.meeting.type" id="categ_meet_interview">
<field name="name">Interview</field>
<field name="section_id" ref="crm.section_sales_department"/>
<field name="object_id" search="[('model','=','crm.meeting')]" model="ir.model"/>
</record>
<!-- HR Recruitment Source -->

View File

@ -16,18 +16,6 @@
view_mode="tree,form,calendar,graph"
view_type="form"/>
# ------------------------------------------------------
# Job Categories
# ------------------------------------------------------
<record id="hr_job_categ_action" model="ir.actions.act_window">
<field name="name">Applicant Categories</field>
<field name="res_model">crm.case.categ</field>
<field name="view_type">form</field>
<field name="view_id" ref="crm.crm_case_categ_tree-view"/>
<field name="domain">[('object_id.model', '=', 'hr.applicant')]</field>
<field name="context" eval="{'object_id': ref('model_hr_applicant')}"/>
</record>
# ------------------------------------------------------
# Stage
# ------------------------------------------------------
@ -517,21 +505,15 @@
action="hr_recruitment_source_action"
sequence="10" groups="base.group_no_one"/>
<record model="ir.ui.view" id="crm_meeting_form_view">
<record model="ir.ui.view" id="view_crm_meeting_form">
<field name="name">CRM - Meetings Form</field>
<field name="model">crm.meeting</field>
<field name="type">form</field>
<field name="inherit_id" ref="crm.crm_case_form_view_meet"/>
<field name="inherit_id" ref="base_calendar.view_crm_meeting_form"/>
<field name="arch" type="xml">
<field name="partner_id" position="before">
<field name="applicant_id" attrs="{'invisible': [('categ_id','!=',%(hr_recruitment.categ_meet_interview)d)]}"/>
</field>
<field name="partner_id" position="attributes">
<attribute name="attrs">{'invisible': [('categ_id','=',%(hr_recruitment.categ_meet_interview)d)]}</attribute>
</field>
<field name="section_id" position="attributes">
<attribute name="attrs">{'invisible': [('categ_id','=',%(hr_recruitment.categ_meet_interview)d)]}</attribute>
</field>
</field>
</record>

View File

@ -6,7 +6,6 @@ access_hr_recruitment_degree,hr.recruitment.degree,model_hr_recruitment_degree,b
access_mail_message_user,mail.message.user,mail.model_mail_message,base.group_hr_user,1,1,1,1
access_res_partner_hr_user,res.partner.user,base.model_res_partner,base.group_hr_user,1,1,1,1
access_survey_hr_user,survey.hr.user,survey.model_survey,base.group_hr_user,1,1,1,0
access_crm_phonecall_hruser,crm.phonecall hruser,crm.model_crm_phonecall,base.group_hr_user,1,1,1,1
access_crm_meeting_hruser,crm.meeting.hruser,crm.model_crm_meeting,base.group_hr_user,1,1,1,1
access_crm_meeting_hruser,crm.meeting.hruser,base_calendar.model_crm_meeting,base.group_hr_user,1,1,1,1
access_hr_recruitment_source_hr_officer,hr.recruitment.source,model_hr_recruitment_source,base.group_hr_user,1,1,1,1
access_hr_recruitment_source_all,hr.recruitment.source,model_hr_recruitment_source,,1,0,0,0

1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
6 access_mail_message_user mail.message.user mail.model_mail_message base.group_hr_user 1 1 1 1
7 access_res_partner_hr_user res.partner.user base.model_res_partner base.group_hr_user 1 1 1 1
8 access_survey_hr_user survey.hr.user survey.model_survey base.group_hr_user 1 1 1 0
9 access_crm_phonecall_hruser access_crm_meeting_hruser crm.phonecall hruser crm.meeting.hruser crm.model_crm_phonecall base_calendar.model_crm_meeting base.group_hr_user 1 1 1 1
access_crm_meeting_hruser crm.meeting.hruser crm.model_crm_meeting base.group_hr_user 1 1 1 1
10 access_hr_recruitment_source_hr_officer hr.recruitment.source model_hr_recruitment_source base.group_hr_user 1 1 1 1
11 access_hr_recruitment_source_all hr.recruitment.source model_hr_recruitment_source 1 0 0 0

View File

@ -50,13 +50,6 @@
-
!python {model: hr.applicant}: |
self.write(cr, uid, [ref('hr_case_programmer')], {'job_id':ref('hr.job_developer')})
-
I start communication with applicant, first schedule phonecall.
-
!python {model: hr.recruitment.job2phonecall}: |
context.update({'active_model': 'hr.applicant', 'active_id': ref("hr_case_programmer"), 'active_ids': [ref("hr_case_programmer")], 'survey_id': ref("survey_job_0")})
id = self.create(cr, uid, {}, context=context)
self.make_phonecall(cr, uid, [id], context=context)
-
I schedule meeting with applicant for interview.
-

View File

@ -20,7 +20,6 @@
##############################################################################
import hr_recruitment_phonecall
import hr_recruitment_create_partner_job
import hr_recruitment_employee_hired

View File

@ -1,126 +0,0 @@
# -*- coding: utf-8 -*-
##############################################################################
#
# OpenERP, Open Source Management Solution
# Copyright (C) 2004-2009 Tiny SPRL (<http://tiny.be>). All Rights Reserved
# $Id$
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
##############################################################################
import time
from osv import osv, fields
from tools.translate import _
class job2phonecall(osv.osv_memory):
_name = 'hr.recruitment.job2phonecall'
_description = 'Schedule Phone Call'
_columns = {
'user_id': fields.many2one('res.users', 'Assign To'),
'deadline': fields.datetime('Planned Date'),
'note': fields.text('Goals'),
'category_id': fields.many2one('crm.case.categ', 'Category', required=True),
}
def _date_user(self, cr, uid, context=None):
case_obj = self.pool.get('hr.applicant')
if context is None:
context = {}
case = case_obj.browse(cr, uid, context.get('active_id', False), context=context)
return case.user_id and case.user_id.id or False
def _date_category(self, cr, uid, context=None):
case_obj = self.pool.get('hr.applicant')
if context is None:
context = {}
case = case_obj.browse(cr, uid, context.get('active_id', False), context=context)
categ_id = self.pool.get('crm.case.categ').search(cr, uid, [('name','=','Outbound')], context=context)
return categ_id and categ_id[0] or case.categ_id and case.categ_id.id or False
def _get_note(self, cr, uid, context=None):
mail_message = self.pool.get('mail.message')
if context is None:
context = {}
if context.get('active_id'):
case = self.pool.get('hr.applicant').browse(cr, uid, context['active_id'], context=context)
if case.description:
return case.description
else:
msg_ids = mail_message.search(cr, uid, [('model', '=', 'hr.applicant'), ('res_id', '=', case.id), ('email_from', '!=', ''), ('email_to', '!=', '')], limit=1)
if msg_ids:
return mail_message.browse(cr, uid, msg_ids[0], context=context).body_text
return False
_defaults = {
'user_id': _date_user,
'category_id': _date_category,
'note': _get_note
}
def make_phonecall(self, cr, uid, ids, context=None):
mod_obj = self.pool.get('ir.model.data')
job_case_obj = self.pool.get('hr.applicant')
data_obj = self.pool.get('ir.model.data')
phonecall_case_obj = self.pool.get('crm.phonecall')
if context is None:
context = {}
form = self.browse(cr, uid, ids, context=context)[0]
result = mod_obj._get_id(cr, uid, 'crm', 'view_crm_case_phonecalls_filter')
res = mod_obj.read(cr, uid, result, ['res_id'], context=context)
# Select the view
id2 = data_obj._get_id(cr, uid, 'crm', 'crm_case_phone_tree_view')
id3 = data_obj._get_id(cr, uid, 'crm', 'crm_case_phone_form_view')
if id2:
id2 = data_obj.browse(cr, uid, id2, context=context).res_id
if id3:
id3 = data_obj.browse(cr, uid, id3, context=context).res_id
new_phonecall_id = []
for job in job_case_obj.browse(cr, uid, context.get('active_ids', []), context=context):
#TODO: Take other info from job
new_phonecall_id = phonecall_case_obj.create(cr, uid, {
'name': job.name,
'user_id': form.user_id.id,
'categ_id': form.category_id.id,
'description': form.note,
'date': form.deadline,
'description': job.description,
'partner_id': job.partner_id.id,
'partner_phone': job.partner_phone,
'partner_mobile': job.partner_mobile,
'description': job.description,
'date':job.date,
}, context=context)
new_phonecall = phonecall_case_obj.browse(cr, uid, new_phonecall_id, context=context)
vals = {}
job_case_obj.write(cr, uid, [job.id], vals, context=context)
# job_case_obj.case_cancel(cr, uid, [job.id])
phonecall_case_obj.case_open(cr, uid, [new_phonecall_id])
return {
'name': _('Phone Call'),
'view_type': 'form',
'view_mode': 'tree,form',
'res_model': 'crm.phonecall',
'res_id': new_phonecall_id,
'views': [(id3,'form'), (id2,'tree'), (False,'calendar'), (False,'graph')],
'type': 'ir.actions.act_window',
'search_view_id': res['res_id']
}
job2phonecall()
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

View File

@ -1,40 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
<record id="view_hr_recruitment_phonecall" model="ir.ui.view">
<field name="name">hr.recruitment.job2phonecall.form</field>
<field name="model">hr.recruitment.job2phonecall</field>
<field name="type">form</field>
<field name="arch" type="xml">
<form string="Schedule Phone Call" version="7.0">
<header>
<button name="make_phonecall" string="Schedule Phone Call" type="object" class="oe_highlight"/>
or
<button string="Cancel" class="oe_link" special="cancel" />
</header>
<group col="4" colspan="6">
<separator string="Phone Call Description" colspan="4" />
<newline />
<field name='user_id' />
<field name='deadline' />
<newline />
<field name='note' colspan="4"/>
<newline />
<field name='category_id' domain="[('object_id.model', '=', 'crm.phonecall')]"/>
</group>
</form>
</field>
</record>
<record id="action_hr_recruitment_phonecall" model="ir.actions.act_window">
<field name="name">Schedule Phone Call</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">hr.recruitment.job2phonecall</field>
<field name="view_type">form</field>
<field name="view_mode">form</field>
<field name="target">new</field>
</record>
</data>
</openerp>

View File

@ -49,7 +49,7 @@ class idea_idea(osv.osv):
'create_uid': fields.many2one('res.users', 'Creator', required=True, readonly=True),
'name': fields.char('Idea Summary', size=64, required=True, readonly=True, oldname='title', states={'draft':[('readonly',False)]}),
'description': fields.text('Description', help='Content of the idea', readonly=True, states={'draft':[('readonly',False)]}),
'category_ids': fields.many2many('idea.category', 'Tags', readonly=True, states={'draft':[('readonly',False)]}),
'category_ids': fields.many2many('idea.category', string='Tags', readonly=True, states={'draft':[('readonly',False)]}),
'state': fields.selection([('draft', 'New'),
('open', 'Accepted'),
('cancel', 'Refused'),

View File

@ -72,11 +72,14 @@
<button name="idea_cancel" string="Refuse" states="open" class="oe_highlight"/>
<field name="state" widget="statusbar" statusbar_visible="draft,open,close"/>
</header>
<sheet>
<label for="name" class="oe_edit_only"/>
<h1><field name="name"/></h1>
<label for="category_ids"/>
<h2><field name="category_ids"/></h2>
<label for="category_ids" class="oe_edit_only"/>
<field name="category_ids" widget="many2many_tags"/>
<label for="description"/><newline/>
<field name="description"/>
</sheet>
<footer>
<field name="message_ids" widget="mail_thread"/>
</footer>

View File

@ -26,7 +26,7 @@
'description': """The module adds google contact in partner address and add google calendar events details in Meeting""",
'author': 'OpenERP SA',
'website': 'http://www.openerp.com',
'depends': ['base', 'import_base', 'google_base_account','crm'],
'depends': ['base', 'import_base', 'google_base_account', 'base_calendar'],
'init_xml': [],
'update_xml': ['security/ir.model.access.csv',
'sync_google_calendar_view.xml',

View File

@ -0,0 +1,217 @@
# 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-02-08 00:36+0000\n"
"PO-Revision-Date: 2012-07-07 15:59+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\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: 2012-07-08 04:41+0000\n"
"X-Generator: Launchpad (build 15558)\n"
#. module: import_google
#: help:synchronize.google.import,group_name:0
msgid "Choose which group to import, By default it takes all."
msgstr ""
#. module: import_google
#: view:synchronize.google.import:0
msgid "Import Google Calendar Events"
msgstr ""
#. module: import_google
#: view:synchronize.google.import:0
msgid "_Import Events"
msgstr "_جلب الأحداث"
#. module: import_google
#: code:addons/import_google/wizard/import_google_data.py:71
#, python-format
msgid ""
"No Google Username or password Defined for user.\n"
"Please define in user view"
msgstr ""
#. module: import_google
#: code:addons/import_google/wizard/import_google_data.py:127
#, python-format
msgid ""
"Invalid login detail !\n"
" Specify Username/Password."
msgstr ""
#. module: import_google
#: field:synchronize.google.import,supplier:0
msgid "Supplier"
msgstr ""
#. module: import_google
#: view:synchronize.google.import:0
msgid "Import Options"
msgstr ""
#. module: import_google
#: field:synchronize.google.import,group_name:0
msgid "Group Name"
msgstr ""
#. module: import_google
#: model:ir.model,name:import_google.model_crm_case_categ
msgid "Category of Case"
msgstr ""
#. module: import_google
#: model:ir.actions.act_window,name:import_google.act_google_login_contact_form
#: model:ir.ui.menu,name:import_google.menu_sync_contact
msgid "Import Google Contacts"
msgstr "جلب اتصالات قوقل"
#. module: import_google
#: view:google.import.message:0
msgid "Import Google Data"
msgstr ""
#. module: import_google
#: view:crm.meeting:0
msgid "Meeting Type"
msgstr ""
#. module: import_google
#: code:addons/import_google/wizard/import_google.py:38
#: code:addons/import_google/wizard/import_google_data.py:28
#, python-format
msgid ""
"Please install gdata-python-client from http://code.google.com/p/gdata-"
"python-client/downloads/list"
msgstr ""
#. module: import_google
#: model:ir.model,name:import_google.model_google_login
msgid "Google Contact"
msgstr ""
#. module: import_google
#: view:synchronize.google.import:0
msgid "Import contacts from a google account"
msgstr ""
#. module: import_google
#: code:addons/import_google/wizard/import_google_data.py:133
#, python-format
msgid "Please specify correct user and password !"
msgstr ""
#. module: import_google
#: field:synchronize.google.import,customer:0
msgid "Customer"
msgstr ""
#. module: import_google
#: view:synchronize.google.import:0
msgid "_Cancel"
msgstr ""
#. module: import_google
#: model:ir.model,name:import_google.model_synchronize_google_import
msgid "synchronize.google.import"
msgstr ""
#. module: import_google
#: view:synchronize.google.import:0
msgid "_Import Contacts"
msgstr ""
#. module: import_google
#: model:ir.actions.act_window,name:import_google.act_google_login_form
#: model:ir.ui.menu,name:import_google.menu_sync_calendar
msgid "Import Google Calendar"
msgstr ""
#. module: import_google
#: code:addons/import_google/wizard/import_google_data.py:50
#, python-format
msgid "Import google"
msgstr ""
#. module: import_google
#: code:addons/import_google/wizard/import_google_data.py:127
#: code:addons/import_google/wizard/import_google_data.py:133
#, python-format
msgid "Error"
msgstr ""
#. module: import_google
#: code:addons/import_google/wizard/import_google_data.py:71
#, python-format
msgid "Warning !"
msgstr ""
#. module: import_google
#: field:synchronize.google.import,create_partner:0
msgid "Options"
msgstr ""
#. module: import_google
#: view:google.import.message:0
msgid "_Ok"
msgstr ""
#. module: import_google
#: code:addons/import_google/wizard/import_google.py:38
#: code:addons/import_google/wizard/import_google_data.py:28
#, python-format
msgid "Google Contacts Import Error!"
msgstr ""
#. module: import_google
#: model:ir.model,name:import_google.model_google_import_message
msgid "Import Message"
msgstr ""
#. module: import_google
#: field:synchronize.google.import,calendar_name:0
msgid "Calendar Name"
msgstr ""
#. module: import_google
#: help:synchronize.google.import,supplier:0
msgid "Check this box to set newly created partner as Supplier."
msgstr ""
#. module: import_google
#: selection:synchronize.google.import,create_partner:0
msgid "Import only address"
msgstr ""
#. module: import_google
#: field:crm.case.categ,user_id:0
msgid "User"
msgstr ""
#. module: import_google
#: view:synchronize.google.import:0
msgid "Partner Status for this Group:"
msgstr ""
#. module: import_google
#: field:google.import.message,name:0
msgid "Message"
msgstr ""
#. module: import_google
#: selection:synchronize.google.import,create_partner:0
msgid "Create partner for each contact"
msgstr ""
#. module: import_google
#: help:synchronize.google.import,customer:0
msgid "Check this box to set newly created partner as Customer."
msgstr ""

View File

@ -8,14 +8,14 @@ msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-02-08 00:36+0000\n"
"PO-Revision-Date: 2012-05-24 18:56+0000\n"
"PO-Revision-Date: 2012-07-09 04:44+0000\n"
"Last-Translator: Akira Hiyama <Unknown>\n"
"Language-Team: Japanese <ja@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-05-25 04:40+0000\n"
"X-Generator: Launchpad (build 15288)\n"
"X-Launchpad-Export-Date: 2012-07-10 05:34+0000\n"
"X-Generator: Launchpad (build 15558)\n"
#. module: import_google
#: help:synchronize.google.import,group_name:0
@ -70,7 +70,7 @@ msgstr "グループ名"
#. module: import_google
#: model:ir.model,name:import_google.model_crm_case_categ
msgid "Category of Case"
msgstr "ケースの分類"
msgstr "案件の分類"
#. module: import_google
#: model:ir.actions.act_window,name:import_google.act_google_login_contact_form

View File

@ -21,11 +21,11 @@
from osv import fields,osv
class crm_case_categ(osv.osv):
""" Category of Case """
_inherit = "crm.case.categ"
class crm_meeting_type(osv.osv):
""" Meeting Types """
_inherit = "crm.meeting.type"
_columns = {
'user_id': fields.many2one('res.users', 'User')
}
crm_case_categ()
# vim:expandtab:smartindent:toabstop=4:softtabstop=4:shiftwidth=4:

View File

@ -1,30 +1,14 @@
<?xml version="1.0"?>
<openerp>
<data>
<record model="ir.ui.view" id="crm_case_form_view_meet_inherit">
<record model="ir.ui.view" id="view_crm_meeting_form">
<field name="name">CRM - Meetings Form (Inherited)</field>
<field name="model">crm.meeting</field>
<field name="type">form</field>
<field name="inherit_id" ref="crm.crm_case_form_view_meet"/>
<field name="inherit_id" ref="base_calendar.view_crm_meeting_form"/>
<field name="arch" type="xml">
<field name="categ_id" position="replace">
<field name="categ_id" widget="selection"
string="Meeting Type"
domain="[('object_id.model', '=', 'crm.meeting'),('user_id','in',[uid, False])]" />
</field>
</field>
</record>
<record model="ir.ui.view" id="crm_case_tree_view_meet_inherit">
<field name="name">CRM - Meetings Tree (Inherited)</field>
<field name="model">crm.meeting</field>
<field name="type">tree</field>
<field name="inherit_id" ref="crm.crm_case_tree_view_meet"/>
<field name="arch" type="xml">
<field name="categ_id" position="replace">
<field name="categ_id" widget="selection"
string="Meeting Type"
domain="[('object_id.model', '=', 'crm.meeting'),('user_id','in',[uid, False])]" />
<field name="categ_id" widget="selection" domain="[('user_id', 'in', [uid, False])]"/>
</field>
</field>
</record>

View File

@ -235,10 +235,10 @@ class google_import(import_framework):
def get_event_category(self, val, name):
fields = ['name', 'object_id']
nameid = 'event_category_'+name
data = [name, 'crm.meeting']
return self.import_object(fields, data, 'crm.case.categ', "crm_case_categ", nameid, [('name', 'ilike', name)])
nameid = 'event_category_' + name
fields = ['name']
data = [name]
return self.import_object(fields, data, 'crm.meeting.type', "crm_meeting_type", nameid, [('name', 'ilike', name)])
def get_rec(self, val):
if val.get("recurrency"):

View File

@ -8,14 +8,14 @@ msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-02-08 00:36+0000\n"
"PO-Revision-Date: 2012-05-09 09:19+0000\n"
"Last-Translator: Tomomi Mengelberg <tomomi.mengelberg@aquasys.co.jp>\n"
"PO-Revision-Date: 2012-07-09 18:11+0000\n"
"Last-Translator: Akira Hiyama <Unknown>\n"
"Language-Team: Japanese <ja@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-05-11 05:15+0000\n"
"X-Generator: Launchpad (build 15225)\n"
"X-Launchpad-Export-Date: 2012-07-10 05:34+0000\n"
"X-Generator: Launchpad (build 15558)\n"
#. module: import_sugarcrm
#: code:addons/import_sugarcrm/import_sugarcrm.py:1105
@ -28,7 +28,7 @@ msgstr "エラー"
#: view:import.sugarcrm:0
msgid ""
"Use the SugarSoap API URL (read tooltip) and a full access SugarCRM login."
msgstr ""
msgstr "SugarSoap API URLツールヒントを参照とフルアクセスのSugarCRMログインを使用します。"
#. module: import_sugarcrm
#: view:import.sugarcrm:0
@ -51,11 +51,12 @@ msgid ""
"Choose data you want to import. Click 'Import' to get data manually or "
"'Schedule Reccurent Imports' to get recurrently and automatically data."
msgstr ""
"インポートしたいデータを選択します。データを手動で取得するにはインポートを、データを繰り返し自動で取得するにはスケジュール反復インポートをクリックします。"
#. module: import_sugarcrm
#: field:import.sugarcrm,contact:0
msgid "Contacts"
msgstr "連絡先"
msgstr "コンタクト"
#. module: import_sugarcrm
#: view:import.sugarcrm:0
@ -65,12 +66,12 @@ msgstr "人事"
#. module: import_sugarcrm
#: help:import.sugarcrm,bug:0
msgid "Check this box to import sugarCRM Bugs into OpenERP project issues"
msgstr ""
msgstr "OpenERPのプロジェクト問題にSugarCRMのバグをインポートするには、このボックスをクリックします。"
#. module: import_sugarcrm
#: field:import.sugarcrm,instance_name:0
msgid "Instance's Name"
msgstr "事例の名前"
msgstr "インスタンスの名前"
#. module: import_sugarcrm
#: field:import.sugarcrm,project_task:0
@ -80,7 +81,7 @@ msgstr "プロジェクトのタスク"
#. module: import_sugarcrm
#: field:import.sugarcrm,email_from:0
msgid "Notify End Of Import To:"
msgstr "へインポートの終了を通知する。"
msgstr "インポート終了の通知先:"
#. module: import_sugarcrm
#: help:import.sugarcrm,user:0
@ -89,35 +90,37 @@ msgid ""
"user with the same login exist in OpenERP, user information will be erase by "
"sugarCRM user information"
msgstr ""
"OpenERPユーザにSugarCRMユーザをインポートするには、このボックスをチェックします。OpenERPの中に同じログインユーザが存在する場合は、S"
"ugarCRMユーザ情報によりユーザ情報が消されることに注意して下さい。"
#. module: import_sugarcrm
#: code:addons/import_sugarcrm/sugarsoap_services.py:23
#, python-format
msgid "Please install SOAP for python - ZSI-2.0-rc3.tar.gz - python-zci"
msgstr "Python SOAPをインストールしてください。- ZSI-2.0-rc3.tar.gz - python-zci"
msgstr "Python SOAPをインストールしてさい。- ZSI-2.0-rc3.tar.gz - python-zci"
#. module: import_sugarcrm
#: view:import.sugarcrm:0
msgid "_Schedule Recurrent Imports"
msgstr ""
msgstr "スケジュール反復インポート"
#. module: import_sugarcrm
#: view:import.sugarcrm:0
msgid ""
"Do not forget the email address to be notified of the success of the import."
msgstr "インポート完了を通知するEメールを忘れないで下さい。"
msgstr "インポート完了を通知するEメールアドレスを忘れないで下さい。"
#. module: import_sugarcrm
#: help:import.sugarcrm,call:0
msgid "Check this box to import sugarCRM Calls into OpenERP calls"
msgstr ""
msgstr "OpenERP通話にSugarCRM通話をインポートするには、このボックスをチェックします。"
#. module: import_sugarcrm
#: view:import.sugarcrm:0
msgid ""
"If you make recurrent or ponctual import, data already in OpenERP will be "
"updated by SugarCRM data."
msgstr ""
msgstr "反復あるいは定時インポートをする場合、OpenERP内のデータはSugarCRMのデータによって更新されます。"
#. module: import_sugarcrm
#: field:import.sugarcrm,employee:0
@ -132,12 +135,12 @@ msgstr "ドキュメント"
#. module: import_sugarcrm
#: help:import.sugarcrm,document:0
msgid "Check this box to import sugarCRM Documents into OpenERP documents"
msgstr "SugarCRMドキュメントをOpenERPドキュメントへインポートするには、このボックスをチェックしてください。"
msgstr "SugarCRMドキュメントをOpenERPドキュメントへインポートするには、このボックスをチェックします。"
#. module: import_sugarcrm
#: view:import.sugarcrm:0
msgid "Import Data From SugarCRM"
msgstr "SugarCRMからデータをインポートする。"
msgstr "SugarCRMからデータのインポート"
#. module: import_sugarcrm
#: view:import.sugarcrm:0
@ -149,7 +152,7 @@ msgstr "CRM"
msgid ""
"Data are importing, the process is running in the background, an email will "
"be sent to the given email address if it was defined."
msgstr ""
msgstr "データインポートのプロセスはバックグラウンドで実行されます。それが定義されている場合、所定のEメールアドレスにEメールが送信されます。"
#. module: import_sugarcrm
#: field:import.sugarcrm,call:0
@ -159,19 +162,19 @@ msgstr "通話"
#. module: import_sugarcrm
#: view:import.sugarcrm:0
msgid "Multi Instance Management"
msgstr ""
msgstr "複数インスタンスの管理"
#. module: import_sugarcrm
#: view:import.message:0
msgid "_Ok"
msgstr "_OK"
msgstr "OK"
#. module: import_sugarcrm
#: help:import.sugarcrm,opportunity:0
msgid ""
"Check this box to import sugarCRM Leads and Opportunities into OpenERP Leads "
"and Opportunities"
msgstr ""
msgstr "OpenERPのリードと商談の中に、SugarCRMのリードと商談をインポートするには、このボックスをチェックします。"
#. module: import_sugarcrm
#: field:import.sugarcrm,email_history:0
@ -186,6 +189,9 @@ msgid ""
"application "
"http://trial.sugarcrm.com/qbquyj4802/index.php?module=Home&action=index"
msgstr ""
"データを取得するためのWebサービスのURL。例'http://example.com/sugarcrm/soap.php'、または、あなたのSugar"
"CRMアプリケーションのアドレスをコピーします。 "
"http://trial.sugarcrm.com/qbquyj4802/index.php?module=Home&action=index"
#. module: import_sugarcrm
#: model:ir.actions.act_window,name:import_sugarcrm.action_import_sugarcrm
@ -196,7 +202,7 @@ msgstr "SugarCRMをインポート"
#. module: import_sugarcrm
#: view:import.sugarcrm:0
msgid "_Import"
msgstr "インポート(_I)"
msgstr "インポート"
#. module: import_sugarcrm
#: field:import.sugarcrm,user:0
@ -208,18 +214,18 @@ msgstr "ユーザ"
#: code:addons/import_sugarcrm/import_sugarcrm.py:1131
#, python-format
msgid "%s data required %s Module to be installed, Please install %s module"
msgstr ""
msgstr "%s のデータは %s モジュールがインストールされていることを要求します。%s モジュールをインストールして下さい。"
#. module: import_sugarcrm
#: field:import.sugarcrm,claim:0
msgid "Cases"
msgstr "お問合せ"
msgstr "案件"
#. module: import_sugarcrm
#: help:import.sugarcrm,meeting:0
msgid ""
"Check this box to import sugarCRM Meetings and Tasks into OpenERP meetings"
msgstr ""
msgstr "OpenERPミーティングにSugarCRMのミーティングとタスクをインポートするには、このボックスをチェックします。"
#. module: import_sugarcrm
#: help:import.sugarcrm,email_history:0
@ -227,6 +233,7 @@ msgid ""
"Check this box to import sugarCRM Emails, Notes and Attachments into OpenERP "
"Messages and Attachments"
msgstr ""
"OpenERPメッセージと添付ファイにSugarCRMのEメール、ート、添付ファイルをインポートするには、このボックスをチェックします。"
#. module: import_sugarcrm
#: field:import.sugarcrm,project:0
@ -240,13 +247,13 @@ msgid ""
"Please install SOAP for python - ZSI-2.0-rc3.tar.gz from "
"http://pypi.python.org/pypi/ZSI/"
msgstr ""
"Python SOAPをインストールしてください。- ZSI-2.0-rc3.tar.gz from "
"Python SOAPをインストールしてさい。- ZSI-2.0-rc3.tar.gz from "
"http://pypi.python.org/pypi/ZSI/"
#. module: import_sugarcrm
#: help:import.sugarcrm,project:0
msgid "Check this box to import sugarCRM Projects into OpenERP projects"
msgstr ""
msgstr "OpenERPプロジェクトにSugarCRMプロジェクトをインポートするには、このボックスをチェックして下さい。"
#. module: import_sugarcrm
#: code:addons/import_sugarcrm/import_sugarcrm.py:1098
@ -263,12 +270,12 @@ msgstr "ミーティング"
#. module: import_sugarcrm
#: help:import.sugarcrm,employee:0
msgid "Check this box to import sugarCRM Employees into OpenERP employees"
msgstr ""
msgstr "OpenERP従業員にSugarCRM従業員をインポートするには、このボックスをチェックします。"
#. module: import_sugarcrm
#: field:import.sugarcrm,url:0
msgid "SugarSoap Api url:"
msgstr "SugarSoap Api url:"
msgstr "SugarSoap API URL"
#. module: import_sugarcrm
#: view:import.sugarcrm:0
@ -282,6 +289,8 @@ msgid ""
"Authentication error !\n"
"Bad Username or Password bad SugarSoap Api url !"
msgstr ""
"認証エラー。\n"
"ユーザ名、パスワード、SugarSoap API URLの何れかに問題があります。"
#. module: import_sugarcrm
#: field:import.sugarcrm,bug:0
@ -296,12 +305,12 @@ msgstr "プロジェクト"
#. module: import_sugarcrm
#: help:import.sugarcrm,project_task:0
msgid "Check this box to import sugarCRM Project Tasks into OpenERP tasks"
msgstr ""
msgstr "OpenERPタスクにSugarCRMプロジェクトタスクをインポートするには、このボックスをチェックします。"
#. module: import_sugarcrm
#: field:import.sugarcrm,opportunity:0
msgid "Leads & Opp"
msgstr "見込み客 商談"
msgstr "リード 商談"
#. module: import_sugarcrm
#: code:addons/import_sugarcrm/import_sugarcrm.py:79
@ -310,6 +319,8 @@ msgid ""
"Authentication error !\n"
"Bad Username or Password or bad SugarSoap Api url !"
msgstr ""
"認証エラー。\n"
"ユーザ名、パスワード、SugarSoap API URLの何れかに問題があります。"
#. module: import_sugarcrm
#: code:addons/import_sugarcrm/import_sugarcrm.py:79
@ -330,12 +341,12 @@ msgstr "警告"
msgid ""
"Prefix of SugarCRM id to differentiate xml_id of SugarCRM models datas come "
"from different server."
msgstr ""
msgstr "SugarCRMモデルデータの xml_id を区別するためのSugarCRM IDのサフィックス接頭辞は異なるサーバから来ます。"
#. module: import_sugarcrm
#: help:import.sugarcrm,contact:0
msgid "Check this box to import sugarCRM Contacts into OpenERP addresses"
msgstr ""
msgstr "OpenERP住所録にSugarCRMコンタクトをインポートするには、このボックスをチェックします。"
#. module: import_sugarcrm
#: field:import.sugarcrm,password:0
@ -350,12 +361,12 @@ msgstr "ログイン情報"
#. module: import_sugarcrm
#: help:import.sugarcrm,claim:0
msgid "Check this box to import sugarCRM Cases into OpenERP claims"
msgstr ""
msgstr "OpenERP苦情にSugarCRMケースをインポートするには、このボックスをチェックします。"
#. module: import_sugarcrm
#: view:import.sugarcrm:0
msgid "Email Notification When Import is Finished"
msgstr ""
msgstr "インポート完了時にEメール通知"
#. module: import_sugarcrm
#: field:import.sugarcrm,username:0
@ -366,17 +377,17 @@ msgstr "ユーザ名"
#: view:import.message:0
#: model:ir.model,name:import_sugarcrm.model_import_message
msgid "Import Message"
msgstr "メッセージをインポートする。"
msgstr "メッセージのインポート"
#. module: import_sugarcrm
#: help:import.sugarcrm,account:0
msgid "Check this box to import sugarCRM Accounts into OpenERP partners"
msgstr ""
msgstr "OpenERPパートナにSugarCRMアカウントをインポートするには、このボックスをチェックします。"
#. module: import_sugarcrm
#: view:import.sugarcrm:0
msgid "Online documentation:"
msgstr ""
msgstr "オンラインドキュメンテーション:"
#. module: import_sugarcrm
#: field:import.sugarcrm,account:0
@ -386,7 +397,7 @@ msgstr "顧客情報"
#. module: import_sugarcrm
#: view:import.sugarcrm:0
msgid "_Cancel"
msgstr "キャンセル(_C)"
msgstr "キャンセル"
#. module: import_sugarcrm
#: code:addons/import_sugarcrm/sugarsoap_services.py:23
@ -403,4 +414,4 @@ msgstr "SugarCRMのデータをインポート"
#. module: import_sugarcrm
#: view:import.sugarcrm:0
msgid "Email Address to Notify"
msgstr ""
msgstr "通知のEメールアドレス"

View File

@ -13,19 +13,17 @@
<button string="Cancel" type="object" name="cancel" class="oe_link"/>
</header>
<sheet>
<group>
<group string="Wiki">
<field name="module_wiki_faq"/>
<field name="module_wiki_quality_manual"/>
</group>
<group string="Documents">
<field name="module_document"/>
<field name="module_document_ftp"/>
<field name="module_document_webdav"/>
</group>
<group>
<group string="Wiki">
<field name="module_wiki_faq"/>
<field name="module_wiki_quality_manual"/>
</group>
</sheet>
<group string="Documents">
<field name="module_document"/>
<field name="module_document_ftp"/>
<field name="module_document_webdav"/>
</group>
</group>
</form>
</field>
</record>

View File

@ -134,8 +134,8 @@ class lunch_order(osv.osv):
'product': fields.many2one('lunch.product', 'Product', required=True, \
readonly=True, states={'draft':[('readonly', False)]}, change_default=True),
'date': fields.date('Date', readonly=True, states={'draft':[('readonly', False)]}),
'cashmove': fields.many2one('lunch.cashmove', 'CashMove' , readonly=True),
'descript': fields.char('Description Order', readonly=True, size=250, \
'cashmove': fields.many2one('lunch.cashmove', 'Cash Move' , readonly=True),
'descript': fields.char('Comment', readonly=True, size=250, \
states = {'draft':[('readonly', False)]}),
'state': fields.selection([('draft', 'New'), ('confirmed', 'Confirmed'), ], \
'Status', readonly=True, select=True),

View File

@ -30,14 +30,18 @@
<field name="state" widget="statusbar" statusbar_visible="draft,confirmed"/>
</header>
<sheet string="Order">
<group col="4">
<field name="user_id"/>
<field name="date"/>
<field name="product" on_change="onchange_product(product)"/>
<field name="category"/>
<field name="descript"/>
<field name="price"/>
<field name="cashmove"/>
<group>
<group>
<field name="product" on_change="onchange_product(product)"/>
<field name="descript"/>
<field name="price"/>
<field name="category"/>
</group>
<group>
<field name="user_id"/>
<field name="cashmove"/>
<field name="date"/>
</group>
</group>
</sheet>
</form>
@ -105,8 +109,10 @@
<field name="model">lunch.cashbox</field>
<field name="arch" type="xml">
<form string="Cashboxes" version="7.0">
<field name="name"/>
<field name="manager"/>
<group colspan="4">
<field name="name"/>
<field name="manager"/>
</group>
</form>
</field>
</record>
@ -145,14 +151,16 @@
<field name="model">lunch.cashmove</field>
<field name="arch" type="xml">
<form string="CashMove" version="7.0">
<group col="4">
<field name="name"/>
<field name="user_cashmove"/>
<field name="amount"/>
<field name="box"/>
<field name="create_date"/>
<field name="active"/>
</group>
<sheet>
<group col="4">
<field name="name"/>
<field name="user_cashmove"/>
<field name="amount"/>
<field name="box"/>
<field name="create_date"/>
<field name="active"/>
</group>
</sheet>
</form>
</field>
</record>
@ -216,8 +224,9 @@
<field name="model">lunch.category</field>
<field name="arch" type="xml">
<form string="Category" version="7.0">
<separator string="Category Related to Products" colspan="4"/>
<field name="name"/>
<group>
<field name="name"/>
</group>
</form>
</field>
</record>
@ -250,18 +259,19 @@
<field name="model">lunch.product</field>
<field name="arch" type="xml">
<form string="Products" version="7.0">
<group col="6">
<field name="name"/>
<field name="category_id"/>
<field name="price" />
</group>
<notebook colspan="4">
<page string="General Information">
<field name="active"/>
<separator string="Description" colspan="4" />
<field name="description" nolabel="1" colspan="4" />
</page>
</notebook>
<sheet>
<group>
<group>
<field name="name"/>
<field name="category_id"/>
<field name="price" />
</group>
<group>
<field name="active"/>
</group>
<field name="description" placeholder="Add a description" nolabel="1" colspan="4"/>
</group>
</sheet>
</form>
</field>
</record>

View File

@ -20,36 +20,41 @@
##############################################################################
{
'name': 'Emails Management',
'name': 'Social Network',
'version': '1.0',
'category': 'Hidden/Dependency',
'category':'Social Network',
"sequence": 2,
'description': """
A generic email subsystem with message storage and queuing
==========================================================
A bussiness oriented Social Networking with a fully-integrated email
and message management.
=====================================================================
The Social Networking module provides an unified social network
abstraction layer allowing applications to display a complete
communication history on documents.It gives the users the possibility
to read and send messages and emails in an unified way.
This email subsystem is not intended to be used as as standalone
application, but to provide a unified email abstraction that all
other applications can use.
It also provides a feeds page combined to a subscription mechanism, that
allows to follow documents, and to be constantly updated about recent
news.
The main features of the module are :
The main features are:
* Relies on the global Outgoing Mail Servers configured in the
Administration menu for delivering outgoing mail
* Provides an API for sending messages and archiving them,
grouped by conversation
* Any OpenERP document can act as a conversation topic, provided
it includes the necessary support for handling incoming emails
(see the ``mail.thread`` class for more details).
* Includes queuing mechanism with automated configurable
scheduler-based processing
* Includes a generic email composition assistant, that can turn
* a clean and renewed communication history for any OpenERP
document that can act as a discussion topic,
* a discussion mean on documents,
* a subscription mechanism to be updated about new messages on
interesting documents,
* an unified feeds page to see recent messages and activity
on followed documents,
* user communication through the feeds page,
* a threaded discussion design,
* relies on the global outgoing mail server, an integrated email
management system allowing to send emails with a configurable
scheduler-based processing engine
* includes an extensible generic email composition assistant, that can turn
into a mass-mailing assistant, and is capable of interpreting
simple *placeholder expressions* that will be replaced with
dynamic data when each email is actually sent.
This generic assistant is easily extensible to provide advanced
features (see ``email_template`` for example, which adds email
templating features to this assistant)
dynamic data when each email is actually sent
""",
'author': 'OpenERP SA',
'website': 'http://www.openerp.com',
@ -69,6 +74,7 @@ The main features are:
],
'installable': True,
'auto_install': False,
'application':True,
'certificate': '001056784984222247309',
'images': [
'images/customer_history.jpeg',
@ -94,6 +100,6 @@ The main features are:
],
'demo': [
'mail_demo.xml',
],
],
}
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

View File

@ -69,7 +69,7 @@ class mail_thread(osv.Model):
subscriber_ids = self.message_get_subscribers(cr, uid, [id], context=context)
res[id] = {
'message_ids': message_ids,
'message_summary': "<span>Msg: %d</span> . <span>Fol: %d</span>" % (len(message_ids), len(subscriber_ids)),
'message_summary': "<span><span class='oe_e'>9</span> %d</span> . <span><span class='oe_e'>+</span> %d</span>" % (len(message_ids), len(subscriber_ids)),
}
return res

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.6 KiB

View File

@ -540,7 +540,11 @@ openerp.mail = function(session) {
this._super.apply(this, arguments);
var self = this;
this.reinit();
if (! this.view.datarecord.id) { this.$element.find('.oe_mail_thread').hide(); return; }
if (! this.view.datarecord.id ||
instance.web.BufferedDataSet.virtual_id_regex.test(this.view.datarecord.id)) {
this.$element.find('.oe_mail_thread').hide();
return;
}
// fetch followers
var fetch_sub_done = this.fetch_subscribers();
// create and render Thread widget

View File

@ -292,4 +292,43 @@ class mail_compose_message(osv.osv_memory):
return tools.ustr(result)
return template and EXPRESSION_PATTERN.sub(merge, template)
class mail_compose_message_extended(osv.osv_memory):
""" Extension of 'mail.compose.message' to support default field values related
to CRM-like models that follow the following conventions:
1. The model object must have an attribute '_mail_compose_message' equal to True.
2. The model should define the following fields:
- 'name' as subject of the message (required);
- 'email_from' as destination email address (required);
- 'email_cc' as cc email addresses (required);
- 'section_id.reply_to' as reply-to address (optional).
"""
_inherit = 'mail.compose.message'
def get_value(self, cr, uid, model, res_id, context=None):
"""Overrides the default implementation to provide more default field values
related to the corresponding CRM case.
"""
result = super(mail_compose_message_extended, self).get_value(cr, uid, model, res_id, context=context)
model_obj = self.pool.get(model)
if getattr(model_obj, '_mail_compose_message', False) and res_id:
data = model_obj.browse(cr, uid , res_id, context)
user = self.pool.get('res.users').browse(cr, uid, uid, context=context)
result.update({
'model': model,
'res_id': res_id,
'email_from': user.user_email or tools.config.get('email_from', False),
'email_to': data.email_from or False,
'email_cc': tools.ustr(data.email_cc or ''),
'subject': data.name or False,
'body_text': '\n' + tools.ustr(user.signature or ''),
'subtype': 'plain',
})
if hasattr(data, 'section_id'):
result['reply_to'] = data.section_id and data.section_id.reply_to or False
return result
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

View File

@ -12,25 +12,23 @@
or
<button string="Cancel" type="object" name="cancel" class="oe_link"/>
</header>
<sheet>
<group string="Manufacturing Order">
<field name="module_mrp_operations"/>
<field name="module_stock_planning"/>
<field name="module_mrp_subproduct"/>
<field name="module_mrp_repair"/>
</group>
<group string="Logistics">
<field name="module_mrp_jit"/>
<field name="module_stock_no_autopicking"/>
</group>
<group string="Bill Of Material">
<field name="group_mrp_routings"/>
<field name="group_mrp_properties"/>
</group>
<group string="Products">
<field name="module_product_manufacturer"/>
</group>
</sheet>
<group string="Manufacturing Order">
<field name="module_mrp_operations"/>
<field name="module_stock_planning"/>
<field name="module_mrp_subproduct"/>
<field name="module_mrp_repair"/>
</group>
<group string="Logistics">
<field name="module_mrp_jit"/>
<field name="module_stock_no_autopicking"/>
</group>
<group string="Bill Of Material">
<field name="group_mrp_routings"/>
<field name="group_mrp_properties"/>
</group>
<group string="Products">
<field name="module_product_manufacturer"/>
</group>
</form>
</field>
</record>

View File

@ -80,3 +80,4 @@ access_product_pricelist_item_mrp_manager,product.pricelist.item mrp_manager,pro
access_resource_calendar_manufacturinguser,resource.calendar manufacturing.user,resource.model_resource_calendar,mrp.group_mrp_user,1,0,0,0
access_account_journal_mrp_manager,account.journal mrp manager,account.model_account_journal,mrp.group_mrp_manager,1,0,0,0
access_purchase_order_stock_user,purchase.order stock user,purchase.model_purchase_order,stock.group_stock_user,1,1,1,0
access_mrp_bom_purchase_manager,mrp.bom,model_mrp_bom,purchase.group_purchase_manager,1,0,0,0

1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
80 access_resource_calendar_manufacturinguser resource.calendar manufacturing.user resource.model_resource_calendar mrp.group_mrp_user 1 0 0 0
81 access_account_journal_mrp_manager account.journal mrp manager account.model_account_journal mrp.group_mrp_manager 1 0 0 0
82 access_purchase_order_stock_user purchase.order stock user purchase.model_purchase_order stock.group_stock_user 1 1 1 0
83 access_mrp_bom_purchase_manager mrp.bom model_mrp_bom purchase.group_purchase_manager 1 0 0 0

View File

@ -1,3 +1,4 @@
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_mrp_subproduct_user,mrp.subproduct,model_mrp_subproduct,mrp.group_mrp_user,1,1,1,1
access_mrp_subproduct_manager,mrp.subproduct manager,model_mrp_subproduct,mrp.group_mrp_manager,1,0,0,0
access_mrp_subproduct_user,mrp.subproduct,model_mrp_subproduct,mrp.group_mrp_user,1,0,0,0
access_mrp_subproduct_manager,mrp.subproduct manager,model_mrp_subproduct,mrp.group_mrp_manager,1,1,1,1
access_mrp_subproduct_all,mrp.subproduct,model_mrp_subproduct,base.group_user,1,0,0,0

1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
2 access_mrp_subproduct_user mrp.subproduct model_mrp_subproduct mrp.group_mrp_user 1 1 0 1 0 1 0
3 access_mrp_subproduct_manager mrp.subproduct manager model_mrp_subproduct mrp.group_mrp_manager 1 0 1 0 1 0 1
4 access_mrp_subproduct_all mrp.subproduct model_mrp_subproduct base.group_user 1 0 0 0

View File

@ -7,14 +7,14 @@ msgstr ""
"Project-Id-Version: OpenERP Server 6.0dev\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2012-02-08 01:37+0100\n"
"PO-Revision-Date: 2010-08-03 09:16+0000\n"
"Last-Translator: Mantavya Gajjar (Open ERP) <Unknown>\n"
"PO-Revision-Date: 2012-07-06 12:24+0000\n"
"Last-Translator: Marko Carevic <Unknown>\n"
"Language-Team: Vinteh\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-06-28 04:36+0000\n"
"X-Generator: Launchpad (build 15505)\n"
"X-Launchpad-Export-Date: 2012-07-07 05:12+0000\n"
"X-Generator: Launchpad (build 15558)\n"
"Language: hr\n"
#. module: project
@ -108,7 +108,7 @@ msgstr "Sati za procjenu"
#. module: project
#: view:project.project:0
msgid "Pending Projects"
msgstr ""
msgstr "Projekti na čekanju"
#. module: project
#: help:project.task,remaining_hours:0
@ -191,7 +191,7 @@ msgstr "Tvrtka"
#. module: project
#: view:report.project.task.user:0
msgid "Pending tasks"
msgstr ""
msgstr "Zadaci na čekanju"
#. module: project
#: field:project.task.delegate,prefix:0
@ -206,7 +206,7 @@ msgstr ""
#. module: project
#: model:process.transition.action,name:project.process_transition_action_openpendingtask0
msgid "Set pending"
msgstr "Postavite u tijeku"
msgstr "Staviti na čekanje"
#. module: project
#: selection:project.task,priority:0
@ -281,7 +281,7 @@ msgstr "Zadatak"
#. module: project
#: view:project.project:0
msgid "Members"
msgstr ""
msgstr "Članovi"
#. module: project
#: view:board.board:0
@ -641,7 +641,7 @@ msgstr "Srednji"
#. module: project
#: view:project.task:0 view:project.task.history.cumulative:0
msgid "Pending Tasks"
msgstr ""
msgstr "Zadaci na čekanju"
#. module: project
#: view:project.task:0 field:project.task,remaining_hours:0
@ -705,7 +705,7 @@ msgstr ""
#: selection:project.vs.hours,state:0 view:report.project.task.user:0
#: selection:report.project.task.user,state:0 selection:task.by.days,state:0
msgid "Pending"
msgstr "U toku"
msgstr "Na čekanju"
#. module: project
#: field:project.task.delegate,name:0

View File

@ -8,14 +8,14 @@ msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-02-08 01:37+0100\n"
"PO-Revision-Date: 2012-06-20 17:12+0000\n"
"Last-Translator: Akira Hiyama <Unknown>\n"
"PO-Revision-Date: 2012-07-10 00:39+0000\n"
"Last-Translator: Tomomi Mengelberg <tomomi.mengelberg@aquasys.co.jp>\n"
"Language-Team: Japanese <ja@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-06-28 04:36+0000\n"
"X-Generator: Launchpad (build 15505)\n"
"X-Launchpad-Export-Date: 2012-07-10 05:33+0000\n"
"X-Generator: Launchpad (build 15558)\n"
#. module: project
#: view:report.project.task.user:0
@ -1825,7 +1825,7 @@ msgstr "タスク %s は閉じられました。"
#. module: project
#: field:project.task,id:0
msgid "ID"
msgstr ""
msgstr "ID"
#. module: project
#: model:ir.actions.act_window,name:project.action_view_task_history_burndown

View File

@ -215,7 +215,7 @@ class project(osv.osv):
'type_ids': fields.many2many('project.task.type', 'project_task_type_rel', 'project_id', 'type_id', 'Tasks Stages', states={'close':[('readonly',True)], 'cancelled':[('readonly',True)]}),
'task_count': fields.function(_task_count, type='integer', string="Open Tasks"),
'color': fields.integer('Color Index'),
'privacy_visibility': fields.selection([('public','Public'), ('followers','Followers Only')], 'Privacy / Visibility'),
'privacy_visibility': fields.selection([('public','Public'), ('followers','Followers Only')], 'Privacy / Visibility', required=True),
'state': fields.selection([('template', 'Template'),('draft','New'),('open','In Progress'), ('cancelled', 'Cancelled'),('pending','Pending'),('close','Closed')], 'Status', required=True,),
'followers': fields.function(_get_followers, method=True, fnct_search=_search_followers,
type='many2many', relation='res.users', string='Followers'),
@ -236,6 +236,7 @@ class project(osv.osv):
'priority': 1,
'sequence': 10,
'type_ids': _get_type_common,
'privacy_visibility': 'public',
}
# TODO: Why not using a SQL contraints ?

View File

@ -12,28 +12,26 @@
or
<button string="Cancel" type="object" name="cancel" class="oe_link"/>
</header>
<sheet>
<group string="Project">
<group>
<field name="module_project_mrp"/>
<field name="module_project_timesheet"/>
<field name="module_pad"/>
</group>
<group>
<field name="group_tasks_work_on_tasks"/>
<field name="group_time_work_estimation_tasks"/>
<field name="group_manage_delegation_task"/>
<field name="time_unit" domain="[('category_id.name','=','Working Time')]"/>
</group>
<group string="Project">
<group>
<field name="module_project_mrp"/>
<field name="module_project_timesheet"/>
<field name="module_pad"/>
</group>
<group string="Planning">
<field name="module_project_long_term"/>
<group>
<field name="group_tasks_work_on_tasks"/>
<field name="group_time_work_estimation_tasks"/>
<field name="group_manage_delegation_task"/>
<field name="time_unit" domain="[('category_id.name','=','Working Time')]"/>
</group>
<group string="Helpdesk and Support" name="support">
<field name="module_project_issue"/>
<field name="module_project_issue_sheet"/>
</group>
</sheet>
</group>
<group string="Planning">
<field name="module_project_long_term"/>
</group>
<group string="Helpdesk and Support" name="support">
<field name="module_project_issue"/>
<field name="module_project_issue_sheet"/>
</group>
</form>
</field>
</record>

View File

@ -1,6 +1,8 @@
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_project_project,project.project,model_project_project,project.group_project_user,1,1,1,1
access_account_analytic_account,account.analytic.account,analytic.model_account_analytic_account,project.group_project_user,1,1,1,1
access_project_project,project.project,model_project_project,project.group_project_user,1,0,0,0
access_project_project_manager,project.project,model_project_project,project.group_project_manager,1,1,1,1
access_account_analytic_account_user,account.analytic.account,analytic.model_account_analytic_account,project.group_project_user,1,0,0,0
access_account_analytic_account,account.analytic.account,analytic.model_account_analytic_account,project.group_project_manager,1,1,1,1
access_project_task_type_user,project.task.type user,model_project_task_type,project.group_project_user,1,1,1,1
access_project_task,project.task,model_project_task,project.group_project_user,1,1,1,1
access_project_task_work,project.task.work,model_project_task_work,project.group_project_user,1,1,1,1
@ -8,7 +10,9 @@ access_report_project_task_user,report.project.task.user,model_report_project_ta
access_partner_task user,base.res.partner user,base.model_res_partner,project.group_project_user,1,0,0,0
access_task_on_partner,project.task on partners,model_project_task,base.group_user,1,0,0,0
access_project_on_partner,project.project on partners,model_project_project,base.group_user,1,0,0,0
access_project_task_sale_user,project.task salesman,model_project_task,base.group_sale_salesman,1,0,0,0
access_project_task_sale_user,project.task salesman,model_project_task,base.group_sale_salesman,1,1,1,1
access_project_task_type_sale_user,project.task.type salesman,project.model_project_task_type,base.group_sale_salesman,1,1,1,1
access_project_task_history_sale_user,project.task.history salesman,project.model_project_task_history,base.group_sale_salesman,1,1,1,1
access_project_project_sale_user,project.project salesman,model_project_project,base.group_sale_salesman,1,0,0,0
access_account_analytic_line_project,account.analytic.line project,analytic.model_account_analytic_line,project.group_project_manager,1,1,1,1
access_project_task_history,project.task.history project,project.model_project_task_history,project.group_project_user,1,1,1,0

1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
2 access_project_project project.project model_project_project project.group_project_user 1 1 0 1 0 1 0
3 access_account_analytic_account access_project_project_manager account.analytic.account project.project analytic.model_account_analytic_account model_project_project project.group_project_user project.group_project_manager 1 1 1 1
4 access_account_analytic_account_user account.analytic.account analytic.model_account_analytic_account project.group_project_user 1 0 0 0
5 access_account_analytic_account account.analytic.account analytic.model_account_analytic_account project.group_project_manager 1 1 1 1
6 access_project_task_type_user project.task.type user model_project_task_type project.group_project_user 1 1 1 1
7 access_project_task project.task model_project_task project.group_project_user 1 1 1 1
8 access_project_task_work project.task.work model_project_task_work project.group_project_user 1 1 1 1
10 access_partner_task user base.res.partner user base.model_res_partner project.group_project_user 1 0 0 0
11 access_task_on_partner project.task on partners model_project_task base.group_user 1 0 0 0
12 access_project_on_partner project.project on partners model_project_project base.group_user 1 0 0 0
13 access_project_task_sale_user project.task salesman model_project_task base.group_sale_salesman 1 0 1 0 1 0 1
14 access_project_task_type_sale_user project.task.type salesman project.model_project_task_type base.group_sale_salesman 1 1 1 1
15 access_project_task_history_sale_user project.task.history salesman project.model_project_task_history base.group_sale_salesman 1 1 1 1
16 access_project_project_sale_user project.project salesman model_project_project base.group_sale_salesman 1 0 0 0
17 access_account_analytic_line_project account.analytic.line project analytic.model_account_analytic_line project.group_project_manager 1 1 1 1
18 access_project_task_history project.task.history project project.model_project_task_history project.group_project_user 1 1 1 0

View File

@ -8,14 +8,14 @@ msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-02-08 01:37+0100\n"
"PO-Revision-Date: 2012-06-11 23:10+0000\n"
"PO-Revision-Date: 2012-07-09 05:11+0000\n"
"Last-Translator: Akira Hiyama <Unknown>\n"
"Language-Team: Japanese <ja@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-06-13 04:56+0000\n"
"X-Generator: Launchpad (build 15389)\n"
"X-Launchpad-Export-Date: 2012-07-10 05:33+0000\n"
"X-Generator: Launchpad (build 15558)\n"
#. module: project_issue
#: view:project.issue.report:0
@ -398,7 +398,7 @@ msgstr "プロジェクトの問題"
#. module: project_issue
#: view:project.issue:0
msgid "Communication & History"
msgstr "コミュニケーションと履歴"
msgstr "通信と履歴"
#. module: project_issue
#: view:project.issue.report:0
@ -836,10 +836,10 @@ msgid ""
" \n"
"If the case needs to be reviewed then the state is set to 'Pending'."
msgstr ""
"事象が作成されると、状態はドラフトにセットされます。\n"
"事象が進行中になると、状態は開くにセットされます。\n"
"事業が終了すると、状態は完了にセットされます。\n"
"事象がレビューが必要な場合、状態は保留中にセットされます。"
"案件が作成されると、状態はドラフトにセットされます。\n"
"案件が進行中になると、状態は開くにセットされます。\n"
"案件が終了すると、状態は完了にセットされます。\n"
"案件のレビューが必要な場合、状態は保留中にセットされます。"
#. module: project_issue
#: selection:project.issue.report,month:0

View File

@ -27,9 +27,6 @@ from tools.translate import _
import binascii
import time
import tools
from crm import wizard
wizard.mail_compose_message.SUPPORTED_MODELS.append('project.issue')
class project_issue_version(osv.osv):
_name = "project.issue.version"
@ -50,6 +47,7 @@ class project_issue(base_stage, osv.osv):
_description = "Project Issue"
_order = "priority, create_date desc"
_inherit = ['ir.needaction_mixin', 'mail.thread']
_mail_compose_message = True
def _get_default_project_id(self, cr, uid, context=None):
""" Gives default project by checking if present in the context """

View File

@ -9,3 +9,5 @@ access_resource_calendar_project_manager,resource.calendar.project.manager,resou
access_project_issue_report_user,project.issue.report user,model_project_issue_report,project.group_project_user,1,0,0,0
access_mail_message_issue_project_user,mail.message.user,mail.model_mail_message,project.group_project_user,1,1,1,0
access_crm_case_section,crm.case.section,crm.model_crm_case_section,project.group_project_user,1,0,0,0
access_project_issue_salesman,project.issue,model_project_issue,base.group_sale_salesman,1,0,0,0
access_project_issue_manager,project.issue,model_project_issue,base.group_sale_manager,1,0,0,0

1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
9 access_project_issue_report_user project.issue.report user model_project_issue_report project.group_project_user 1 0 0 0
10 access_mail_message_issue_project_user mail.message.user mail.model_mail_message project.group_project_user 1 1 1 0
11 access_crm_case_section crm.case.section crm.model_crm_case_section project.group_project_user 1 0 0 0
12 access_project_issue_salesman project.issue model_project_issue base.group_sale_salesman 1 0 0 0
13 access_project_issue_manager project.issue model_project_issue base.group_sale_manager 1 0 0 0

View File

@ -7,3 +7,6 @@ access_resource_resource_user,user.user user,resource.model_resource_resource,pr
access_resource_calendar_leaves_user,user.calendar.leaves user,resource.model_resource_calendar_leaves,project.group_project_user,1,1,1,1
access_resource_resource_manager,user.user manager,resource.model_resource_resource,project.group_project_manager,1,1,1,1
access_project_user_allocation_manager,project.user.allocation.manager,model_project_user_allocation,project.group_project_manager,1,1,1,1
access_project_resource_calendar_attendance,resource.calendar.attendance,resource.model_resource_calendar_attendance,project.group_project_manager,1,0,0,0

1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
7 access_resource_calendar_leaves_user user.calendar.leaves user resource.model_resource_calendar_leaves project.group_project_user 1 1 1 1
8 access_resource_resource_manager user.user manager resource.model_resource_resource project.group_project_manager 1 1 1 1
9 access_project_user_allocation_manager project.user.allocation.manager model_project_user_allocation project.group_project_manager 1 1 1 1
10 access_project_resource_calendar_attendance resource.calendar.attendance resource.model_resource_calendar_attendance project.group_project_manager 1 0 0 0
11
12

View File

@ -2,3 +2,5 @@ id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_report_timesheet_task_user_manager,report.timesheet.task.user.manager,model_report_timesheet_task_user,project.group_project_manager,1,1,1,1
access_hr_analytic_timesheet_user,hr.analytic.timesheet.user,hr_timesheet_sheet.model_hr_analytic_timesheet,project.group_project_user,1,1,1,0
access_hr_timesheet_sheet_sheet_user,hr.timesheet.sheet.sheet.user,hr_timesheet_sheet.model_hr_timesheet_sheet_sheet,project.group_project_user,1,1,1,0
access_sale_order_manager,sale.order,sale.model_sale_order,project.group_project_manager,1,0,0,0
access_sale_order_user,sale.order,sale.model_sale_order,project.group_project_user,1,0,0,0

1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
2 access_report_timesheet_task_user_manager report.timesheet.task.user.manager model_report_timesheet_task_user project.group_project_manager 1 1 1 1
3 access_hr_analytic_timesheet_user hr.analytic.timesheet.user hr_timesheet_sheet.model_hr_analytic_timesheet project.group_project_user 1 1 1 0
4 access_hr_timesheet_sheet_sheet_user hr.timesheet.sheet.sheet.user hr_timesheet_sheet.model_hr_timesheet_sheet_sheet project.group_project_user 1 1 1 0
5 access_sale_order_manager sale.order sale.model_sale_order project.group_project_manager 1 0 0 0
6 access_sale_order_user sale.order sale.model_sale_order project.group_project_user 1 0 0 0

Some files were not shown because too many files have changed in this diff Show More