diff --git a/addons/account/account.py b/addons/account/account.py
index 29ea824f171..ed460c041c7 100644
--- a/addons/account/account.py
+++ b/addons/account/account.py
@@ -1748,15 +1748,6 @@ class account_config_wizard(osv.osv_memory):
_name = 'account.config.wizard'
_inherit = 'res.config'
- def _get_charts(self, cr, uid, context):
- module_obj=self.pool.get('ir.module.module')
- ids=module_obj.search(cr, uid, [('category_id', '=', 'Account Charts'),
- ('state', '<>', 'installed')])
- res=[(m.id, m.shortdesc) for m in module_obj.browse(cr, uid, ids)]
- res.append((-1, 'None'))
- res.sort(key=lambda x: x[1])
- return res
-
_columns = {
'name':fields.char(
'Name', required=True, size=64,
@@ -1768,7 +1759,6 @@ class account_config_wizard(osv.osv_memory):
'date2': fields.date('End Date', required=True),
'period':fields.selection([('month','Month'), ('3months','3 Months')],
'Periods', required=True),
- 'charts' : fields.selection(_get_charts, 'Charts of Account',required=True)
}
_defaults = {
'code': lambda *a: time.strftime('%Y'),
@@ -1777,14 +1767,6 @@ class account_config_wizard(osv.osv_memory):
'date2': lambda *a: time.strftime('%Y-12-31'),
'period':lambda *a:'month',
}
- def install_account_chart(self, cr, uid, ids, context=None):
- for res in self.read(cr,uid,ids):
- chart_id = res['charts']
- if chart_id > 0:
- mod_obj = self.pool.get('ir.module.module')
- mod_obj.button_install(cr, uid, [chart_id], context=context)
- cr.commit()
- db, pool = pooler.restart_pool(cr.dbname, update_module=True)
def execute(self, cr, uid, ids, context=None):
for res in self.read(cr,uid,ids):
@@ -1804,7 +1786,6 @@ class account_config_wizard(osv.osv_memory):
res_obj.create_period(cr,uid,[new_id])
elif res['period']=='3months':
res_obj.create_period3(cr,uid,[new_id])
- self.install_account_chart(cr,uid,ids)
account_config_wizard()
diff --git a/addons/account/account_installer.xml b/addons/account/account_installer.xml
index 4a1a1274e9f..4c9742fd127 100644
--- a/addons/account/account_installer.xml
+++ b/addons/account/account_installer.xml
@@ -4,43 +4,31 @@
account.installer.view
account.installer
form
-
+
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Install Modules
+
+ Configure Your Accounting System
+
+
+ You can enhance OpenERP's basic accounting support with a few additional OpenERP applications
+
+
+
+
+
+
+
+
+
+
@@ -57,7 +45,7 @@
- 1
+ 3
diff --git a/addons/account/account_view.xml b/addons/account/account_view.xml
index 709009f8481..4ab7e6329a9 100644
--- a/addons/account/account_view.xml
+++ b/addons/account/account_view.xml
@@ -1451,9 +1451,9 @@
-
+
@@ -1461,8 +1461,6 @@
-
-
@@ -1734,16 +1732,14 @@
-
+
-
+
diff --git a/addons/account/company.py b/addons/account/company.py
index e3a1979daf2..2301cc16d9a 100644
--- a/addons/account/company.py
+++ b/addons/account/company.py
@@ -33,52 +33,3 @@ out after this mail was sent, please consider the present one as \
void. Do not hesitate to contact our accounting department'
}
res_company()
-
-class company_setup(osv.osv_memory):
- """
- Insert Information for a company.
- Wizard asks for:
- * A Company with its partner
- * Insert a suitable message for Overdue Payment Report.
- """
- _name='wizard.company.setup'
- _inherit = 'res.config'
-
- _columns = {
- 'company_id':fields.many2one('res.company','Company',required=True),
- 'overdue_msg': fields.text('Overdue Payment Message'),
- }
- def get_message(self,cr,uid,context={}):
- company =self.pool.get('res.users').browse(cr,uid,[uid],context)[0].company_id
- msg = company.overdue_msg
- phone = company.partner_id.address and (company.partner_id.address[0].phone and ' at ' + str(company.partner_id.address[0].phone) + '.' or '.') or '.'
- msg += str(phone)
- return msg
-
- _defaults = {
- 'company_id': lambda self, cr, uid, c: self.pool.get('res.users').browse(cr,uid,[uid],c)[0].company_id.id,
- 'overdue_msg': get_message,
- }
-
- def onchange_company_id(self, cr, uid, ids, company, context=None):
- if not company:
- return {}
- comp_obj = self.pool.get('res.company').browse(cr,uid,company)
- partner_address = comp_obj.partner_id.address
- if partner_address and partner_address[0].phone:
- msg_tail = ' at %s.'%(partner_address[0].phone)
- else:
- msg_tail = '.'
-
- return {'value': {'overdue_msg': comp_obj.overdue_msg + msg_tail } }
-
- def execute(self, cr, uid, ids, context=None):
- content_wiz = self.pool.get('wizard.company.setup')\
- .read(cr,uid,ids,['company_id','overdue_msg'])
- if content_wiz:
- wiz_data = content_wiz[0]
- self.pool.get('res.company').write(
- cr, uid,
- [wiz_data['company_id']],
- {'overdue_msg':wiz_data['overdue_msg']})
-company_setup()
diff --git a/addons/account/company_view.xml b/addons/account/company_view.xml
index 31f8e03a6b3..7892fceee91 100644
--- a/addons/account/company_view.xml
+++ b/addons/account/company_view.xml
@@ -15,45 +15,5 @@
-
-
-
-
- wizard.company.setup.form
- wizard.company.setup
- form
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Overdue Payment Report Message
- ir.actions.act_window
- wizard.company.setup
-
- form
- form
- new
-
-
-
-
-
-
-
diff --git a/addons/account/installer.py b/addons/account/installer.py
index 2e7ebb5ed44..35a09406891 100644
--- a/addons/account/installer.py
+++ b/addons/account/installer.py
@@ -18,21 +18,61 @@
# along with this program. If not, see .
#
##############################################################################
+from operator import itemgetter
+
from osv import fields, osv
+import netsvc
class account_installer(osv.osv_memory):
_name = 'account.installer'
_inherit = 'res.config.installer'
+ def _get_charts(self, cr, uid, context=None):
+ modules = self.pool.get('ir.module.module')
+ ids = modules.search(cr, uid, [('category_id','=','Account Charts')])
+ return list(
+ sorted(((m.name, m.shortdesc)
+ for m in modules.browse(cr, uid, ids)),
+ key=itemgetter(1)))
+
_columns = {
# Accounting
- 'account_analytic_default':fields.boolean('Analytic Accounting'),
- 'account_analytic_plans':fields.boolean('Multiple Analytic Plans'),
- 'account_payment':fields.boolean('Suppliers Payment Management'),
- 'account_followup':fields.boolean('Followups Management'),
- 'account_asset':fields.boolean('Assets Management')
+ 'charts':fields.selection(_get_charts, 'Chart of Accounts',
+ required=True,
+ help="Installs localized accounting charts to match as closely as "
+ "possible the accounting needs of your company based on your "
+ "country."),
+ 'account_analytic_default':fields.boolean('Analytic Accounting',
+ help="Automatically selects analytic accounts based on various "
+ "criteria."),
+ 'account_analytic_plans':fields.boolean('Multiple Analytic Plans',
+ help="Allows invoice lines to impact multiple analytic accounts "
+ "simultaneously."),
+ 'account_payment':fields.boolean('Suppliers Payment Management',
+ help="Streamlines invoice payment and creates hooks to plug "
+ "automated payment systems in."),
+ 'account_followup':fields.boolean('Followups Management',
+ help="Helps you generate reminder letters for unpaid invoices, "
+ "including multiple levels of reminding and customized "
+ "per-partner policies."),
+ 'account_asset':fields.boolean('Assets Management',
+ help="Enables asset management in the accounting application, "
+ "including asset categories and usage periods.")
}
_defaults = {
'account_analytic_default':True,
}
+
+ def modules_to_install(self, cr, uid, ids, context=None):
+ modules = super(account_installer, self).modules_to_install(
+ cr, uid, ids, context=context)
+
+ chart = self.read(cr, uid, ids, ['charts'],
+ context=context)[0]['charts']
+ self.logger.notifyChannel(
+ 'installer', netsvc.LOG_DEBUG,
+ 'Installing chart of accounts %s'%chart)
+ return modules | set([chart])
+
+
account_installer()
diff --git a/addons/account/security/ir.model.access.csv b/addons/account/security/ir.model.access.csv
index bb7ffbae946..e4806d436d0 100644
--- a/addons/account/security/ir.model.access.csv
+++ b/addons/account/security/ir.model.access.csv
@@ -87,6 +87,3 @@
"access_account_fiscal_position_account_template","account.fiscal.position.account.template","model_account_fiscal_position_account_template","account.group_account_manager",1,1,1,1
"access_account_sequence_fiscal_year","account.sequence.fiscalyear","model_account_sequence_fiscalyear","account.group_account_user",1,1,1,1
"access_account_sequence_fiscal_year_user","account.sequence.fiscalyear user","model_account_sequence_fiscalyear","base.group_user",1,0,0,0
-"access_wizard_company_setup_manager","wizard.company.setup manager","model_wizard_company_setup","account.group_account_manager",1,1,1,1
-"access_wizard_company_setup","wizard.company.setup","model_wizard_company_setup","account.group_account_user",1,0,0,0
-"access_wizard_company_setup_user","wizard.company.setup user","model_wizard_company_setup","base.group_user",1,0,0,0
diff --git a/addons/base_setup/__init__.py b/addons/base_setup/__init__.py
index 2e2da2196e5..22e81a488b0 100644
--- a/addons/base_setup/__init__.py
+++ b/addons/base_setup/__init__.py
@@ -20,7 +20,62 @@
##############################################################################
import installer
+import todo
import wizard
+from osv import osv
+import netsvc
+
+class base_setup_config_choice(osv.osv_memory):
+ """
+ """
+ _name = 'base.setup.config'
+ logger = netsvc.Logger()
+
+ def set_default_menu(self, cr, uid, menu, context=None):
+ user = self.pool.get('res.users')\
+ .browse(cr, uid, uid, context=context)
+
+ user.write({'action_id': menu.id,
+ 'menu_id': menu.id})
+
+ def get_default_menu(self, cr, uid, context=None):
+ actions = self.pool.get('ir.actions.act_window')
+
+ current_menu_id = actions.search(cr, uid, [('name','=','Menu')],
+ context=context)
+ assert len(current_menu_id) == 1,\
+ 'A given user should only have one menu item'
+ return actions.browse(cr, uid, current_menu_id[0], context=context)
+
+ def menu(self, cr, uid, ids, context=None):
+ menu = self.get_default_menu(cr, uid, context=context)
+ self.set_default_menu(cr, uid, menu, context=context)
+
+ if menu.view_id.id:
+ view_id = (menu.view_id.id, menu.view_id.name)
+ else:
+ view_id = False
+
+ return {
+ 'name': menu.name,
+ 'type': menu.type,
+ 'view_id': view_id,
+ 'domain': menu.domain,
+ 'res_users': menu.res_model,
+ 'src_model': menu.src_model,
+ 'view_type': menu.view_type,
+ 'view_mode': menu.view_mode,
+ 'views': menu.views,
+ }
+ def config(self, cr, uid, ids, context=None):
+ menu = self.get_default_menu(cr, uid, context=context)
+ self.set_default_menu(cr, uid, menu, context=context)
+
+ return self.pool.get('res.config').next(cr, uid, [], context=context)
+
+base_setup_config_choice()
+
+
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
diff --git a/addons/base_setup/__terp__.py b/addons/base_setup/__terp__.py
index 6f7f4337740..c6dd64d7bcc 100644
--- a/addons/base_setup/__terp__.py
+++ b/addons/base_setup/__terp__.py
@@ -1,6 +1,6 @@
# -*- coding: utf-8 -*-
##############################################################################
-#
+#
# OpenERP, Open Source Management Solution
# Copyright (C) 2004-2010 Tiny SPRL ().
#
@@ -15,7 +15,7 @@
# 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 .
+# along with this program. If not, see .
#
##############################################################################
@@ -42,8 +42,8 @@
'depends': ['base'],
'init_xml': ['base_setup_data.xml'],
'update_xml': ['security/ir.model.access.csv',
- 'base_setup_wizard.xml',
- 'base_setup_installer.xml'],
+ 'base_setup_installer.xml',
+ 'base_setup_todo.xml',],
'demo_xml': ['base_setup_demo.xml'],
'installable': True,
'active': True,
diff --git a/addons/base_setup/base_setup_data.xml b/addons/base_setup/base_setup_data.xml
index c715dbb6992..a28c7744158 100644
--- a/addons/base_setup/base_setup_data.xml
+++ b/addons/base_setup/base_setup_data.xml
@@ -1,17 +1,41 @@
-
-
-
- Setup
- ir.actions.wizard
- base_setup.base_setup
-
-
-
-
-
-
-
-
+
+
+ Setup
+ base.setup.config
+ form
+
+
+
+
+
+
+ Setup
+ base.setup.config
+ ir.actions.act_window
+
+ new
+
+
+
+
+
+
+
diff --git a/addons/base_setup/base_setup_demo.xml b/addons/base_setup/base_setup_demo.xml
index 4255606e3f1..364a0773a4c 100644
--- a/addons/base_setup/base_setup_demo.xml
+++ b/addons/base_setup/base_setup_demo.xml
@@ -3,7 +3,7 @@
-
+
diff --git a/addons/base_setup/base_setup_installer.xml b/addons/base_setup/base_setup_installer.xml
index b01e19a4a84..df2c5908de9 100644
--- a/addons/base_setup/base_setup_installer.xml
+++ b/addons/base_setup/base_setup_installer.xml
@@ -4,51 +4,37 @@
base.setup.installer.view
base.setup.installer
form
-
+
-
+
+
+ Install Modules
+
+
+ Now that OpenERP is installed, we have selected applications commonly useful to users which you can install directly, as well as sets of applications for more specific types or groups of businesses (the vertical modules).
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Install Modules
+If you don't think you need any of these right now, you can easily install them later on.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -65,7 +51,7 @@
- 1
+ 2
diff --git a/addons/base_setup/base_setup_todo.xml b/addons/base_setup/base_setup_todo.xml
new file mode 100644
index 00000000000..c6baf194c6e
--- /dev/null
+++ b/addons/base_setup/base_setup_todo.xml
@@ -0,0 +1,61 @@
+
+
+
+ Setup company information
+ base.setup.company
+ form
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Setup company information
+ ir.actions.act_window
+ base.setup.company
+
+ form
+ form
+ new
+
+
+
+
+ 1
+
+
+
diff --git a/addons/base_setup/base_setup_wizard.xml b/addons/base_setup/base_setup_wizard.xml
deleted file mode 100644
index 9a48bf41f6c..00000000000
--- a/addons/base_setup/base_setup_wizard.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
diff --git a/addons/base_setup/installer.py b/addons/base_setup/installer.py
index cb3dbdfdb9e..2c1ba113e47 100644
--- a/addons/base_setup/installer.py
+++ b/addons/base_setup/installer.py
@@ -19,57 +19,77 @@
#
##############################################################################
from osv import fields, osv
-from itertools import chain
-from operator import itemgetter
import netsvc
class base_setup_installer(osv.osv_memory):
_name = 'base.setup.installer'
_inherit = 'res.config.installer'
- def _get_charts(self, cr, uid, context=None):
- modules = self.pool.get('ir.module.module')
- ids = modules.search(cr, uid, [('category_id','=','Account Charts'),
- ('state','!=','installed')])
- return list(
- sorted(((m.name, m.shortdesc)
- for m in modules.browse(cr, uid, ids)),
- key=itemgetter(1)))
-
- def _if_account(self, cr, uid, ids, context=None):
- chart = self.read(cr, uid, ids, ['charts'],
- context=context)[0]['charts']
- self.logger.notifyChannel(
- 'installer', netsvc.LOG_DEBUG,
- 'Addon "account" selected, installing chart of accounts %s'%chart)
- return [chart]
-
_install_if = {
('sale','crm'): ['sale_crm'],
('sale','project'): ['project_mrp'],
}
_columns = {
# Generic modules
- 'crm':fields.boolean('Customer Relationship Management'),
- 'sale':fields.boolean('Sales Management'),
- 'project':fields.boolean('Project Management'),
- 'knowledge':fields.boolean('Knowledge Management'),
- 'stock':fields.boolean('Warehouse Management'),
- 'mrp':fields.boolean('Manufacturing'),
- 'account':fields.boolean('Financial & Accounting'),
- 'charts':fields.selection(_get_charts, 'Chart of Accounts',
- readonly=True),
- 'purchase':fields.boolean('Purchase Management'),
- 'hr':fields.boolean('Human Resources'),
- 'point_of_sale':fields.boolean('Point of Sales'),
- 'marketing':fields.boolean('Marketing'),
- 'misc_tools':fields.boolean('Miscellaneous Tools'),
- 'report_designer':fields.boolean('Advanced Reporting'),
+ 'crm':fields.boolean('Customer Relationship Management',
+ help="Helps you track and manage relations with customers such as"
+ " leads, requests or issues. Can automatically send "
+ "reminders, escalate requests or trigger business-specific "
+ "actions based on standard events."),
+ 'sale':fields.boolean('Sales Management',
+ help="Helps you handle your quotations, sale orders and invoicing"
+ "."),
+ 'project':fields.boolean('Project Management',
+ help="Helps you manage your projects and tasks by tracking them, "
+ "generating plannings, etc..."),
+ 'knowledge':fields.boolean('Knowledge Management',
+ help="Lets you install addons geared towards sharing knowledge "
+ "with and between your employees."),
+ 'stock':fields.boolean('Warehouse Management',
+ help="Helps you manage your stocks and stocks locations, as well "
+ "as the flow of stock between warehouses."),
+ 'mrp':fields.boolean('Manufacturing',
+ help="Helps you manage your manufacturing processes and generate "
+ "reports on those processes."),
+ 'account':fields.boolean('Financial & Accounting',
+ help="Helps you handle your accounting needs, as well as create "
+ "and track your budgets."),
+ 'purchase':fields.boolean('Purchase Management',
+ help="Helps you manage your purchase-related processes such as "
+ "requests for quotations, supplier invoices, etc..."),
+ 'hr':fields.boolean('Human Resources',
+ help="Helps you manage your human resources by encoding your "
+ "employee structure, generating work sheets, tracking "
+ "attendance and more."),
+ 'point_of_sale':fields.boolean('Point of Sales',
+ help="Helps you get the most out of your points of sales with "
+ "fast sale encoding, simplified payment mode encoding, "
+ "automatic picking lists generation and more."),
+ 'marketing':fields.boolean('Marketing',
+ help="Helps you manage your marketing campaigns step by step."),
+ 'misc_tools':fields.boolean('Miscellaneous Tools',
+ help="Lets you install various interesting but non-essential "
+ "tools."),
+ 'report_designer':fields.boolean('Advanced Reporting',
+ help="Lets you install various tools to simplify and enhance "
+ "OpenERP's report creation."),
# Vertical modules
- 'profile_association':fields.boolean('Associations'),
- 'profile_training':fields.boolean('Training Centers'),
- 'profile_auction':fields.boolean('Auction Houses'),
- 'profile_bookstore':fields.boolean('Book Stores'),
+ 'profile_association':fields.boolean('Associations',
+ help="Installs a preselected set of OpenERP "
+ "applications which will help you manage your association "
+ "more efficiently."),
+ 'profile_training':fields.boolean('Training Centers',
+ help="Helps you manage your training sessions and "
+ "centers, from the conception of a training project to the "
+ "gathering of trainee feedback."),
+ 'profile_auction':fields.boolean('Auction Houses',
+ help="Installs a preselected set of OpenERP "
+ "applications selected to help you manage your auctions "
+ "as well as the business processes around them."),
+ 'profile_bookstore':fields.boolean('Book Stores',
+ help="Installs a preselected set of OpenERP "
+ "applications which will help you manage your book store "
+ "or your library."),
}
_defaults = {
'crm': True,
diff --git a/addons/base_setup/todo.py b/addons/base_setup/todo.py
new file mode 100644
index 00000000000..d23ac71d60b
--- /dev/null
+++ b/addons/base_setup/todo.py
@@ -0,0 +1,152 @@
+# -*- coding: utf-8 -*-
+##############################################################################
+#
+# OpenERP, Open Source Management Solution
+# Copyright (C) 2004-2010 Tiny SPRL ().
+#
+# 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 .
+#
+##############################################################################
+from operator import itemgetter
+
+from osv import osv, fields
+import netsvc
+import tools
+
+class base_setup_company(osv.osv_memory):
+ """
+ """
+ _name = 'base.setup.company'
+ _inherit = 'res.config'
+ logger = netsvc.Logger()
+
+ def _get_all(self, cr, uid, model, context=None):
+ models = self.pool.get(model)
+ all_model_ids = models.search(cr, uid, [])
+
+ output = [(False, '')]
+ output.extend(
+ sorted([(o.id, o.name)
+ for o in models.browse(cr, uid, all_model_ids,
+ context=context)],
+ key=itemgetter(1)))
+ return output
+
+ def _get_all_states(self, cr, uid, context=None):
+ return self._get_all(
+ cr, uid, 'res.country.state', context=context)
+ def _get_all_countries(self, cr, uid, context=None):
+ return self._get_all(cr, uid, 'res.country', context=context)
+ def _get_all_currencies(self, cr, uid, context=None):
+ return self._get_all(cr, uid, 'res.currency', context=context)
+
+ def default_get(self, cr, uid, fields_list=None, context=None):
+ """ get default company if any, and the various other fields
+ from the company's fields
+ """
+ defaults = super(base_setup_company, self)\
+ .default_get(cr, uid, fields_list=fields_list, context=context)
+
+ companies = self.pool.get('res.company')
+ company_id = companies.search(cr, uid, [], limit=1, order="id")
+ if not company_id or 'company_id' not in fields_list:
+ return defaults
+ company = companies.browse(cr, uid, company_id[0])
+
+ defaults['company_id'] = company.id
+ defaults['currency'] = company.currency_id.id
+ for field in ['name','logo','rml_header1','rml_footer1','rml_footer2']:
+ defaults[field] = company[field]
+
+ if company.partner_id.address:
+ address = company.partner_id.address[0]
+ for field in ['street','street2','zip','city','email','phone']:
+ defaults[field] = address[field]
+ for field in ['country_id','state_id']:
+ if address[field]:
+ defaults[field] = address[field].id
+
+ return defaults
+
+ _columns = {
+ 'company_id':fields.many2one('res.company', 'Company'),
+ 'name':fields.char('Company Name', size=64, required=True),
+ 'street':fields.char('Street', size=128),
+ 'street2':fields.char('Street 2', size=128),
+ 'zip':fields.char('Zip Code', size=24),
+ 'city':fields.char('City', size=128),
+ 'state_id':fields.selection(_get_all_states, 'States'),
+ 'country_id':fields.selection(_get_all_countries, 'Countries'),
+ 'email':fields.char('E-mail', size=64),
+ 'phone':fields.char('Phone', size=64),
+ 'currency':fields.selection(_get_all_currencies, 'Currency', required=True),
+ 'rml_header1':fields.char('Report Header', size=200,
+ help='''This sentence will appear at the top right corner of your reports.
+We suggest you to put a slogan here:
+"Open Source Business Solutions".'''),
+ 'rml_footer1':fields.char('Report Footer 1', size=200,
+ help='''This sentence will appear at the bottom of your reports.
+We suggest you to write legal sentences here:
+Web: http://openerp.com - Fax: +32.81.73.35.01 - Fortis Bank: 126-2013269-07'''),
+ 'rml_footer2':fields.char('Report Footer 2', size=200,
+ help='''This sentence will appear at the bottom of your reports.
+We suggest you to put bank information here:
+IBAN: BE74 1262 0121 6907 - SWIFT: CPDF BE71 - VAT: BE0477.472.701'''),
+ 'logo':fields.binary('Logo'),
+ }
+
+ def execute(self, cr, uid, ids, context=None):
+ assert len(ids) == 1, "We should only get one object from the form"
+ payload = self.browse(cr, uid, ids[0], context=context)
+ if not getattr(payload, 'company_id', None):
+ raise ValueError('Case where no default main company is setup '
+ 'not handled yet')
+
+ company = payload.company_id
+ company.write({
+ 'name':payload.name,
+ 'rml_header1':payload.rml_header1,
+ 'rml_footer1':payload.rml_footer1,
+ 'rml_footer2':payload.rml_footer2,
+ 'logo':payload.logo,
+ })
+
+ company.partner_id.write({
+ 'name':payload.name,
+ })
+
+ address_data = {
+ 'name':payload.name,
+ 'street':payload.street,
+ 'street2':payload.street2,
+ 'zip':payload.zip,
+ 'city':payload.city,
+ 'email':payload.email,
+ 'phone':payload.phone,
+ 'country_id':int(payload.country_id),
+ 'state_id':int(payload.state_id),
+ }
+
+ if company.partner_id.address:
+ company.partner_id.address[0].write(
+ address_data)
+ else:
+ self.pool.get('res.partner.address').create(cr, uid,
+ dict(address_data,
+ partner_id=int(company.partner_id)),
+ context=context)
+base_setup_company()
+
+
+# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
diff --git a/addons/base_setup/wizard/__init__.py b/addons/base_setup/wizard/__init__.py
deleted file mode 100644
index a322ae346b3..00000000000
--- a/addons/base_setup/wizard/__init__.py
+++ /dev/null
@@ -1,26 +0,0 @@
-# -*- coding: utf-8 -*-
-##############################################################################
-#
-# OpenERP, Open Source Management Solution
-# Copyright (C) 2004-2010 Tiny SPRL ().
-#
-# 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 .
-#
-##############################################################################
-
-import wizard_base_setup
-
-
-# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
-
diff --git a/addons/base_setup/wizard/wizard_base_setup.py b/addons/base_setup/wizard/wizard_base_setup.py
deleted file mode 100644
index 0dd9175129d..00000000000
--- a/addons/base_setup/wizard/wizard_base_setup.py
+++ /dev/null
@@ -1,416 +0,0 @@
-# -*- coding: utf-8 -*-
-##############################################################################
-#
-# OpenERP, Open Source Management Solution
-# Copyright (C) 2004-2010 Tiny SPRL ().
-#
-# 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 .
-#
-##############################################################################
-
-import wizard
-import pooler
-import time
-import tools
-import os
-
-view_form_profit = """
-"""
-
-
-
-view_form_company = """
-"""
-
-view_form_update = """
-
-"""
-
-view_form_finish = """
-
-"""
-
-class wizard_base_setup(wizard.interface):
-
- def _get_profiles(self, cr, uid, context):
- module_obj=pooler.get_pool(cr.dbname).get('ir.module.module')
- ids=module_obj.search(cr, uid, [('category_id', '=', 'Profile'),
- ('state', '<>', 'uninstallable')])
- res=[(m.id, m.shortdesc) for m in module_obj.browse(cr, uid, ids, context=context)]
- res.append((-1, 'Minimal Profile'))
- res.sort()
- return res
-
- def _get_company(self, cr, uid, data, context):
- pool = pooler.get_pool(cr.dbname)
- company_obj = pool.get('res.company')
- ids=company_obj.search(cr, uid, [])
- if not ids:
- return {}
- company = company_obj.browse(cr, uid, ids)[0]
-
- res = {'currency': company.currency_id.id}
-
- for field in 'name logo rml_header1 rml_footer1 rml_footer2'.split():
- res[field] = company[field]
-
- if company.partner_id.address:
- address = company.partner_id.address[0]
- for field in 'street street2 zip city email phone'.split():
- res[field] = address[field]
-
- for field in 'country_id state_id'.split():
- if address[field]:
- res[field] = address[field].id
-
- serv_pro_id = pool.get('ir.module.module').search(cr, uid, [('name','=','profile_service')]) or False
- if serv_pro_id:
- res['profile'] = serv_pro_id[0]
-
- return res
-
-
- def _get_all(self, cr, uid, context, model):
- pool = pooler.get_pool(cr.dbname)
- obj = pool.get(model)
- ids = obj.search(cr, uid, [])
- res = [(o.id, o.name) for o in obj.browse(cr, uid, ids, context=context)]
- res.append((-1, ''))
- res.sort(key=lambda x: x[1])
- return res
-
- def _get_states(self, cr, uid, context):
- return self._get_all(cr, uid, context, 'res.country.state')
-
- def _get_countries(self, cr, uid, context):
- return self._get_all(cr, uid, context, 'res.country')
-
- def _get_currency(self, cr, uid, context):
- return self._get_all(cr, uid, context, 'res.currency')
-
- def _update(self, cr, uid, data, context):
- pool=pooler.get_pool(cr.dbname)
- form=data['form']
- if 'profile' in data['form'] and data['form']['profile'] > 0:
- module_obj=pool.get('ir.module.module')
- module_obj.state_update(cr, uid, [data['form']['profile']], 'to install', ['uninstalled'], context)
-
- company_obj=pool.get('res.company')
- partner_obj=pool.get('res.partner')
- address_obj=pool.get('res.partner.address')
- ids=company_obj.search(cr, uid, [])
- company=company_obj.browse(cr, uid, ids)[0]
- company_obj.write(cr, uid, [company.id], {
- 'name': form['name'],
- 'rml_header1': form['rml_header1'],
- 'rml_footer1': form['rml_footer1'],
- 'rml_footer2': form['rml_footer2'],
- 'currency_id': form['currency'],
- 'logo': form['logo'],
- })
- partner_obj.write(cr, uid, [company.partner_id.id], {
- 'name': form['name'],
- })
- values={
- 'name': form['name'],
- 'street': form['street'],
- 'street2': form['street2'],
- 'zip': form['zip'],
- 'city': form['city'],
- 'email': form['email'],
- 'phone': form['phone'],
- }
- # we can do this, or set res.append((False, '')) in _get_all()
- if form['country_id'] > 0:
- values['country_id'] = form['country_id']
- if form['state_id'] > 0:
- values['state_id'] = form['state_id']
- if company.partner_id.address:
- address=company.partner_id.address[0]
- address_obj.write(cr, uid, [address.id], values)
- else:
- values['partner_id']=company.partner_id.id
- add_id=address_obj.create(cr, uid, values)
-
- cr.commit()
- (db, pool)=pooler.restart_pool(cr.dbname, update_module=True)
-
- return {}
-
- def _menu(self, cr, uid, data, context):
- users_obj=pooler.get_pool(cr.dbname).get('res.users')
- action_obj=pooler.get_pool(cr.dbname).get('ir.actions.act_window')
-
- ids=action_obj.search(cr, uid, [('name', '=', 'Menu')])
- menu=action_obj.browse(cr, uid, ids)[0]
-
- ids=users_obj.search(cr, uid, [('action_id', '=', 'Setup')])
- users_obj.write(cr, uid, ids, {'action_id': menu.id})
- ids=users_obj.search(cr, uid, [('menu_id', '=', 'Setup')])
- users_obj.write(cr, uid, ids, {'menu_id': menu.id})
-
- return {
- 'name': menu.name,
- 'type': menu.type,
- 'view_id': (menu.view_id and\
- (menu.view_id.id, menu.view_id.name)) or False,
- 'domain': menu.domain,
- 'res_model': menu.res_model,
- 'src_model': menu.src_model,
- 'view_type': menu.view_type,
- 'view_mode': menu.view_mode,
- 'views': menu.views,
- }
-
- def _next(self, cr, uid, data, context):
- if not data['form']['profile'] or data['form']['profile'] <= 0:
- return 'company'
- return 'charts'
-
- def _previous(self, cr, uid, data, context):
- if 'profile' not in data['form'] or data['form']['profile'] <= 0:
- return 'init'
- return 'charts'
-
- def _config(self, cr, uid, data, context=None):
- pool = pooler.get_pool(cr.dbname)
- users_obj=pool.get('res.users')
- action_obj=pool.get('ir.actions.act_window')
-
- ids=action_obj.search(cr, uid, [('name', '=', 'Menu')])
- menu=action_obj.browse(cr, uid, ids)[0]
-
- ids=users_obj.search(cr, uid, [('action_id', '=', 'Setup')])
- users_obj.write(cr, uid, ids, {'action_id': menu.id})
- ids=users_obj.search(cr, uid, [('menu_id', '=', 'Setup')])
- users_obj.write(cr, uid, ids, {'menu_id': menu.id})
-
- return pool.get('res.config').next(cr, uid, [], context=context)
-
- fields={
- 'profile':{
- 'string':'Profile',
- 'type':'selection',
- 'selection':_get_profiles,
- 'required': True,
- },
-
- 'name':{
- 'string': 'Company Name',
- 'type': 'char',
- 'size': 64,
- },
- 'street':{
- 'string': 'Street',
- 'type': 'char',
- 'size': 128,
- },
- 'street2':{
- 'string': 'Street2',
- 'type': 'char',
- 'size': 128,
- },
- 'zip':{
- 'string': 'Zip code',
- 'type': 'char',
- 'size': 24,
- },
- 'city':{
- 'string': 'City',
- 'type': 'char',
- 'size': 128,
- },
- 'state_id':{
- 'string': 'State',
- 'type': 'selection',
- 'selection':_get_states,
- },
- 'country_id':{
- 'string': 'Country',
- 'type': 'selection',
- 'selection':_get_countries,
- },
- 'email':{
- 'string': 'E-mail',
- 'type': 'char',
- 'size': 64,
- },
- 'phone':{
- 'string': 'Phone',
- 'type': 'char',
- 'size': 64,
- },
- 'currency': {
- 'string': 'Currency',
- 'type': 'selection',
- 'selection':_get_currency,
- 'required': True,
- },
- 'rml_header1':{
- 'string': 'Report Header',
- 'type': 'char',
- 'help': """This sentence will appear at the top right corner of your reports.
-We suggest you to put a slogan here:
-"Open Source Business Solutions".""",
- 'size': 200,
- },
- 'rml_footer1':{
- 'string': 'Report Footer 1',
- 'type': 'char',
- 'help': """This sentence will appear at the bottom of your reports.
-We suggest you to write legal sentences here:
-Web: http://openerp.com - Fax: +32.81.73.35.01 - Fortis Bank: 126-2013269-07""",
- 'size': 200,
- },
- 'rml_footer2':{
- 'string': 'Report Footer 2',
- 'help': """This sentence will appear at the bottom of your reports.
-We suggest you to put bank information here:
-IBAN: BE74 1262 0121 6907 - SWIFT: CPDF BE71 - VAT: BE0477.472.701""",
- 'type': 'char',
- 'size': 200,
- },
- 'logo':{
- 'string': 'Logo',
- 'type': 'binary',
- },
- }
- states={
- 'init':{
- 'actions': [_get_company],
- 'result': {'type': 'form', 'arch': view_form_profit, 'fields': fields,
- 'state': [
- ('menu', 'Cancel', 'gtk-cancel'),
- ('company', 'Next', 'gtk-go-forward', True)
- ]
- }
- },
-# 'next': {
-# 'actions': [],
-# 'result': {'type': 'choice', 'next_state': _next}
-# },
-# 'charts':{
-# 'actions': [],
-# 'result': {'type': 'form', 'arch': view_form_charts, 'fields': fields,
-# 'state':[
-# ('init', 'Previous', 'gtk-go-back'),
-# ('company', 'Next', 'gtk-go-forward', True)
-# ]
-# }
-# },
- 'company':{
- 'actions': [],
- 'result': {'type': 'form', 'arch': view_form_company, 'fields': fields,
- 'state': [
- ('init', 'Previous', 'gtk-go-back'),
- ('update', 'Next', 'gtk-go-forward', True)
- ]
- }
- },
-# 'previous':{
-# 'actions': [],
-# 'result': {'type': 'choice', 'next_state': _previous}
-# },
- 'update':{
- 'actions': [],
- 'result': {'type': 'form', 'arch': view_form_update, 'fields': fields,
- 'state': [
- ('company', 'Previous', 'gtk-go-back'),
- ('finish', 'Install', 'gtk-ok', True)
- ]
- }
- },
- 'finish':{
- 'actions': [_update],
- 'result': {'type': 'form', 'arch': view_form_finish, 'fields': {},
- 'state': [
- ('menu', 'Use Directly', 'gtk-ok'),
- ('config', 'Start Configuration', 'gtk-go-forward', True)
- ]
- }
- },
- 'config': {
- 'result': {
- 'type': 'action',
- 'action': _config,
- 'state': 'end',
- },
- },
- 'menu': {
- 'actions': [],
- 'result': {'type': 'action', 'action': _menu, 'state': 'end'}
- },
- }
-
-wizard_base_setup('base_setup.base_setup')
-
-# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
-
diff --git a/addons/document_ftp/document_ftp_view.xml b/addons/document_ftp/document_ftp_view.xml
index 135ed2ea151..9cec3715bae 100644
--- a/addons/document_ftp/document_ftp_view.xml
+++ b/addons/document_ftp/document_ftp_view.xml
@@ -1,5 +1,5 @@
-
+
Browse Files
ftp://localhost:8021/
@@ -21,17 +21,16 @@
-
+
+ string="Choose the address for the Document Management System's FTP server."/>
-
+
@@ -51,4 +50,3 @@
-
diff --git a/addons/document_ics/document_ics_config_wizard.xml b/addons/document_ics/document_ics_config_wizard.xml
index 2f25ccce5db..ea7e5926868 100644
--- a/addons/document_ics/document_ics_config_wizard.xml
+++ b/addons/document_ics/document_ics_config_wizard.xml
@@ -8,13 +8,12 @@
-
+
-
+
diff --git a/addons/hr/hr_installer.xml b/addons/hr/hr_installer.xml
index 4f7c1993963..72202caa24f 100644
--- a/addons/hr/hr_installer.xml
+++ b/addons/hr/hr_installer.xml
@@ -4,45 +4,30 @@
hr.installer.view
hr.installer
form
-
+
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Install Modules
+
+ Configure Human Resources"
+
+
+ The base Human Resources addon will help you manage your employee roster, but your can enhance it even further by installing a few HR-related applications.
+
+
+
+
+
+
+
+
+
+
@@ -59,7 +44,7 @@
- 1
+ 3
diff --git a/addons/hr/installer.py b/addons/hr/installer.py
index 69346199ddb..74047345656 100644
--- a/addons/hr/installer.py
+++ b/addons/hr/installer.py
@@ -26,13 +26,27 @@ class hr_installer(osv.osv_memory):
_columns = {
# Human Resources Management
- 'hr_holidays':fields.boolean('Holidays / Leaves Management'),
- 'hr_expense':fields.boolean('Expenses'),
- 'hr_jobs':fields.boolean('Recruitement Process'),
- 'hr_timesheet_sheet':fields.boolean('Timesheets'),
- 'hr_contract':fields.boolean("Employee's Contracts"),
- 'hr_evaluation':fields.boolean('Periodic Evaluations'),
- 'hr_attendance':fields.boolean('Attendances (Sign In/Out)'),
+ 'hr_holidays':fields.boolean('Holidays / Leaves Management',
+ help="Tracks employee leaves allocations, requests and planning."
+ "\n\nCan also plug into OpenERP's agendas and calendars "
+ "applications in order to display accepted leaves requests on"
+ " OpenERP's calendars."),
+ 'hr_expense':fields.boolean('Expenses',
+ help="Tracks and manages employee expenses, and can "
+ "automatically re-invoice clients if the expenses are "
+ "project-related."),
+ 'crm_hr':fields.boolean('Recruitment Process',
+ help="Helps you manage and streamline your recruitment process."),
+ 'hr_timesheet_sheet':fields.boolean('Timesheets',
+ help="Tracks and helps employees encode and validate timesheets "
+ "and attendance."),
+ 'hr_contract':fields.boolean("Employee's Contracts",
+ help="Extends employee profiles to help manage their contracts."),
+ 'hr_evaluation':fields.boolean('Periodic Evaluations',
+ help="Lets you create and manage the periodic evaluation and "
+ "performance review of employees."),
+ 'hr_attendance':fields.boolean('Attendances (Sign In/Out)',
+ help="Simplifies the management of employee attendances."),
}
_defaults = {
'hr_holidays': True,
diff --git a/addons/knowledge/installer.py b/addons/knowledge/installer.py
index 71c54de8d99..f3ee456944d 100644
--- a/addons/knowledge/installer.py
+++ b/addons/knowledge/installer.py
@@ -26,12 +26,25 @@ class knowledge_installer(osv.osv_memory):
_columns = {
# Knowledge Management
- 'document_ftp':fields.boolean('Shared Repositories (FTP)'),
- 'document_webdav':fields.boolean('Shared Repositories (WebDAV)'),
- 'wiki':fields.boolean('Collaborative Content (Wiki)'),
+ 'document_ftp':fields.boolean('Shared Repositories (FTP)',
+ help="Provides an FTP access to your OpenERP's Document "
+ "Management System. Lets you access attachments and "
+ "virtual documents through a standard FTP client."),
+ 'document_webdav':fields.boolean('Shared Repositories (WebDAV)',
+ help="Provides a WebDAV access to your OpenERP's Document "
+ "Management System. Lets you access attachments and "
+ "virtual documents through your standard file browser."),
+ 'wiki':fields.boolean('Collaborative Content (Wiki)',
+ help="Lets you create wiki pages and page groups in order "
+ "to keep track of business knowledge and share it with "
+ "and between your employees."),
# Templates of Content
- 'wiki_faq':fields.boolean('Internal FAQ'),
- 'wiki_quality_manual':fields.boolean('Quality Manual'),
+ 'wiki_faq':fields.boolean('Internal FAQ',
+ help="Creates a skeleton internal FAQ pre-filled with "
+ "documentation about OpenERP's Document Management "
+ "System."),
+ 'wiki_quality_manual':fields.boolean('Quality Manual',
+ help="Creates an example skeleton for a standard quality manual."),
}
_defaults = {
'document_ftp':True,
diff --git a/addons/knowledge/knowledge_installer.xml b/addons/knowledge/knowledge_installer.xml
index 5f8c19e568c..cd991ac3459 100644
--- a/addons/knowledge/knowledge_installer.xml
+++ b/addons/knowledge/knowledge_installer.xml
@@ -4,45 +4,30 @@
knowledge.installer.view
knowledge.installer
form
-
+
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Install Modules
+
+ Configure Your Knowledge Management System
+
+
+ From this screen, you can select various OpenERP applications which will help employees store information, distribute it and share it with one another.
+
+
+
+
+
+
+
+
+
@@ -59,7 +44,7 @@
- 1
+ 3
diff --git a/addons/l10n_ch/account_journal_view.xml b/addons/l10n_ch/account_journal_view.xml
index 120bb1565ea..3636cc971a1 100755
--- a/addons/l10n_ch/account_journal_view.xml
+++ b/addons/l10n_ch/account_journal_view.xml
@@ -7,13 +7,12 @@
-
+
-
+
diff --git a/addons/l10n_ch_chart_c2c_pcg/tax_template_view.xml b/addons/l10n_ch_chart_c2c_pcg/tax_template_view.xml
index 4ebda575962..8cccce03fc5 100755
--- a/addons/l10n_ch_chart_c2c_pcg/tax_template_view.xml
+++ b/addons/l10n_ch_chart_c2c_pcg/tax_template_view.xml
@@ -14,13 +14,12 @@
-
+
-
+
@@ -47,4 +46,4 @@
5
-
\ No newline at end of file
+
diff --git a/addons/misc_tools/misc_tools_installer.xml b/addons/misc_tools/misc_tools_installer.xml
index a8e98312ffc..6f4a7aa9e9e 100644
--- a/addons/misc_tools/misc_tools_installer.xml
+++ b/addons/misc_tools/misc_tools_installer.xml
@@ -4,42 +4,28 @@
misc_tools.installer.view
misc_tools.installer
form
-
+
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Install Modules
+
+ Select Tools To Install
+
+
+ Here are a few useful applications which, while they don't directly contribute to your business, can improve on it or improve your OpenERP experience
+
+
+
+
+
+
+
@@ -56,7 +42,7 @@
- 1
+ 3
diff --git a/addons/mrp/__terp__.py b/addons/mrp/__terp__.py
index 686cc1154ee..3bf2410cff9 100644
--- a/addons/mrp/__terp__.py
+++ b/addons/mrp/__terp__.py
@@ -54,9 +54,6 @@
* Print a production order
* Stock forecasts
""",
- 'author': 'Tiny',
- 'website': 'http://www.openerp.com',
- 'depends': ['stock', 'hr', 'purchase', 'product', 'process'],
'init_xml': [],
'update_xml': [
'security/mrp_security.xml',
diff --git a/addons/mrp/installer.py b/addons/mrp/installer.py
index 4d7936c91c2..d595860ba39 100644
--- a/addons/mrp/installer.py
+++ b/addons/mrp/installer.py
@@ -26,10 +26,24 @@ class mrp_installer(osv.osv_memory):
_columns = {
# Manufacturing Resource Planning
- 'stock_location':fields.boolean('Advanced Routes'),
- 'mrp_jit':fields.boolean('Just In Time Scheduling'),
- 'mrp_operations':fields.boolean('Manufacturing Operations'),
- 'mrp_subproduct':fields.boolean('MRP Subproducts'),
- 'mrp_repair':fields.boolean('Repairs'),
+ 'stock_location':fields.boolean('Advanced Routes',
+ help="Manages product routes and paths within and between "
+ "locations (e.g. warehouses)"),
+ 'mrp_jit':fields.boolean('Just In Time Scheduling',
+ help="Enables Just In Time computation of procurement orders."
+ "\n\nWhile it's more resource intensive than the default "
+ "setup, the JIT computer avoids having to wait for the "
+ "procurement scheduler to run or having to run the "
+ "procurement scheduler manually."),
+ 'mrp_operations':fields.boolean('Manufacturing Operations',
+ help="Enhances production orders with readiness states as well "
+ "as the dates of start and end of execution of the order."),
+ 'mrp_subproduct':fields.boolean('MRP Subproducts',
+ help="Enables multiple product output from a single production "
+ "order: without this, a productio order can have only one "
+ "output product."),
+ 'mrp_repair':fields.boolean('Repairs',
+ help="Enables warranty and repair management (and their impact "
+ "on stocks and invoicing)."),
}
mrp_installer()
diff --git a/addons/mrp/mrp_installer.xml b/addons/mrp/mrp_installer.xml
index a6b2f7ed1b6..3e42ec2840e 100644
--- a/addons/mrp/mrp_installer.xml
+++ b/addons/mrp/mrp_installer.xml
@@ -4,43 +4,28 @@
mrp.installer.view
mrp.installer
form
-
+
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Install Modules
+
+ Configure Your Manufacturing
+
+
+ After having installed the core manufacturing application, you can extend it with a few more depending on the needs of your organization
+
+
+
+
+
+
+
+
@@ -57,7 +42,7 @@
- 1
+ 3
diff --git a/addons/profile_accounting/profile_accounting.py b/addons/profile_accounting/profile_accounting.py
index b067beea049..b8c3cf7b0fe 100644
--- a/addons/profile_accounting/profile_accounting.py
+++ b/addons/profile_accounting/profile_accounting.py
@@ -1,6 +1,6 @@
# -*- coding: utf-8 -*-
##############################################################################
-#
+#
# OpenERP, Open Source Management Solution
# Copyright (C) 2004-2010 Tiny SPRL ().
#
@@ -15,7 +15,7 @@
# 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 .
+# along with this program. If not, see .
#
##############################################################################
@@ -24,10 +24,9 @@ import pooler
class profile_accounting_config_install_modules_wizard(osv.osv_memory):
_name='profile.accounting.config.install_modules_wizard'
- _inherit = 'res.config'
+ _inherit = 'res.config.installer'
_columns = {
- 'name':fields.char('Name', size=64),
'account_analytic_analysis':fields.boolean('Analytic Accounting'),
'account_analytic_plans':fields.boolean('Multiple Analytic Plans'),
'account_payment':fields.boolean('Suppliers Payment Management'),
@@ -36,18 +35,6 @@ class profile_accounting_config_install_modules_wizard(osv.osv_memory):
'account_budget':fields.boolean('Budgets', help="Helps you to manage financial and analytic budgets."),
'board_document':fields.boolean('Document Management',help= "The Document Management System of Open ERP allows you to store, browse, automatically index, search and preview all kind of documents (internal documents, printed reports, calendar system). It opens an FTP access for the users to easily browse association's document."),
}
-
- def execute(self, cr, uid, ids, context=None):
- result = self.read(cr, uid, ids)
- mod_obj = self.pool.get('ir.module.module')
- for res in result:
- for r in res:
- if r != 'id' and res[r]:
- ids += mod_obj.search(cr, uid, [('name', '=', r)])
- mod_obj.button_install(cr, uid, ids, context=context)
- cr.commit()
- db, pool = pooler.restart_pool(cr.dbname, update_module=True)
profile_accounting_config_install_modules_wizard()
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
-
diff --git a/addons/profile_accounting/profile_accounting.xml b/addons/profile_accounting/profile_accounting.xml
index e3d3c973405..bf1ba9fdf24 100644
--- a/addons/profile_accounting/profile_accounting.xml
+++ b/addons/profile_accounting/profile_accounting.xml
@@ -5,17 +5,19 @@
Accounting Profile : Install extra modules
profile.accounting.config.install_modules_wizard
form
-
+
-
-
-
+
+
+ Install more modules. A few modules are proposed according to the Account Profile you selected. You will be able to install them based on our requirements.
+
+
+
@@ -44,6 +46,7 @@
+ 3
diff --git a/addons/profile_association/profile_association.py b/addons/profile_association/profile_association.py
index 013052222e7..586ed3f8639 100644
--- a/addons/profile_association/profile_association.py
+++ b/addons/profile_association/profile_association.py
@@ -25,7 +25,7 @@ import pooler
class profile_association_config_install_modules_wizard(osv.osv_memory):
_name='profile.association.config.install_modules_wizard'
- _inherit = 'res.config'
+ _inherit = 'res.config.installer'
_columns = {
'hr_expense':fields.boolean('Expenses Tracking', help="Tracks the personal expenses process, from the employee expense encoding, to the reimbursement of the employee up to the reinvoicing to the final customer."),
@@ -38,15 +38,5 @@ class profile_association_config_install_modules_wizard(osv.osv_memory):
'wiki': fields.boolean('Wiki',
help="An integrated wiki content management system. This is really usefull to manage FAQ, quality manuals, etc.")
}
- def execute(self, cr, uid, ids, context=None):
- result = self.read(cr,uid,ids)
- mod_obj = self.pool.get('ir.module.module')
- for res in result:
- for r in res:
- if r != 'id' and res[r]:
- ids = mod_obj.search(cr, uid, [('name', '=', r)])
- mod_obj.button_install(cr, uid, ids, context=context)
- cr.commit()
- db, pool = pooler.restart_pool(cr.dbname, update_module=True)
profile_association_config_install_modules_wizard()
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
diff --git a/addons/profile_association/profile_association.xml b/addons/profile_association/profile_association.xml
index e23af3fdbe5..0f376ea4069 100644
--- a/addons/profile_association/profile_association.xml
+++ b/addons/profile_association/profile_association.xml
@@ -5,17 +5,18 @@
Association Profile : Install extra modules
profile.association.config.install_modules_wizard
form
-
+
-
-
-
+
+
+ Install more modules. A few modules are proposed according to the Association Profile you selected. You will be able to install them based on our requirements.
+
+
+
@@ -41,7 +42,8 @@
-
-
+
+ 3
+
diff --git a/addons/profile_manufacturing/profile_manufacturing.py b/addons/profile_manufacturing/profile_manufacturing.py
index 11276af8c96..40bace350a7 100644
--- a/addons/profile_manufacturing/profile_manufacturing.py
+++ b/addons/profile_manufacturing/profile_manufacturing.py
@@ -25,7 +25,7 @@ import pooler
class profile_manufacturing_config_install_modules_wizard(osv.osv_memory):
_name='profile.manufacturing.config.install_modules_wizard'
- _inherit = 'res.config'
+ _inherit = 'res.config.installer'
_columns = {
'mrp_jit':fields.boolean('Just in Time Scheduling',
@@ -78,16 +78,6 @@ class profile_manufacturing_config_install_modules_wizard(osv.osv_memory):
help="Allows to manage product repairs. Handle the guarantee limit date and the invoicing of products and services."),
}
- def execute(self, cr, uid, ids, context=None):
- result = self.read(cr,uid,ids)
- mod_obj = self.pool.get('ir.module.module')
- for res in result:
- for r in res:
- if r != 'id' and res[r]:
- ids = mod_obj.search(cr, uid, [('name', '=', r)])
- mod_obj.button_install(cr, uid, ids, context=context)
- cr.commit()
- db, pool = pooler.restart_pool(cr.dbname, update_module=True)
profile_manufacturing_config_install_modules_wizard()
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
diff --git a/addons/profile_manufacturing/profile_manufacturing.xml b/addons/profile_manufacturing/profile_manufacturing.xml
index b0bb0301773..ae659245907 100644
--- a/addons/profile_manufacturing/profile_manufacturing.xml
+++ b/addons/profile_manufacturing/profile_manufacturing.xml
@@ -5,14 +5,20 @@
Manufacturing Profile: Install Extra Modules
profile.manufacturing.config.install_modules_wizard
form
-
+
-
-
-
+
+
+ Here are a few modules which might be useful along with the rest of the Manufacturing profile. You can also install them the normal way later on, but if you think you'll need them to fit your requirements, you can select them now and they'll be installed immediately.
+
+
+ Manufacturing Modules
+
+
@@ -29,7 +35,6 @@
-
@@ -44,7 +49,8 @@
-
-
+
+ 3
+
diff --git a/addons/profile_service/profile_service.py b/addons/profile_service/profile_service.py
index 5aee039bc09..f228656a220 100644
--- a/addons/profile_service/profile_service.py
+++ b/addons/profile_service/profile_service.py
@@ -24,7 +24,7 @@ import pooler
class profile_service_config_install_modules_wizard(osv.osv_memory):
_name='profile.service.config.install_modules_wizard'
- _inherit = 'res.config'
+ _inherit = 'res.config.installer'
_rec_name = 'crm_configuration'
_columns = {
'crm_configuration':fields.boolean('CRM & Calendars', help="This installs the customer relationship features like: leads and opportunities tracking, shared calendar, jobs tracking, bug tracker, and so on."),
@@ -47,16 +47,6 @@ class profile_service_config_install_modules_wizard(osv.osv_memory):
help="An integrated wiki content management system. This is really "\
"useful to manage FAQ, quality manuals, etc.")
}
- def execute(self, cr, uid, ids, context=None):
- result = self.read(cr, uid, ids)
- mod_obj = self.pool.get('ir.module.module')
- for res in result:
- for r in res:
- if r != 'id' and res[r]:
- ids = mod_obj.search(cr, uid, [('name', '=', r)])
- mod_obj.button_install(cr, uid, ids, context=context)
- cr.commit()
- db, pool = pooler.restart_pool(cr.dbname, update_module=True)
profile_service_config_install_modules_wizard()
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
diff --git a/addons/profile_service/profile_service.xml b/addons/profile_service/profile_service.xml
index 94a967d1840..b8c51325cb3 100644
--- a/addons/profile_service/profile_service.xml
+++ b/addons/profile_service/profile_service.xml
@@ -5,19 +5,21 @@
Service Profile : Install extra modules
profile.service.config.install_modules_wizard
form
-
+
-
-
-
-
+
+
+ A few modules are proposed according to the 'service profile' you selected. You will be able to install them or more modules later through the Administration menu.
+
+
+ Services Management
+
+
@@ -51,9 +53,8 @@
-
-
-
-
+
+ 3
+
diff --git a/addons/project/installer.py b/addons/project/installer.py
index d6a56bd453c..1848d1e300e 100644
--- a/addons/project/installer.py
+++ b/addons/project/installer.py
@@ -26,15 +26,30 @@ class project_installer(osv.osv_memory):
_columns = {
# Project Management
- 'project_long_term':fields.boolean('Long Term Planning'),
- 'project_wiki':fields.boolean('Specifications in a Wiki'),
- 'hr_timesheet_sheet':fields.boolean('Timesheets'),
- 'hr_timesheet_invoice':fields.boolean('Invoice Based on Hours'),
- 'account_budget':fields.boolean('Budgets'),
- 'project_messages':fields.boolean('Project Messages'),
- 'project_crm':fields.boolean('Issues Tracker & Features Requests'),
+ 'project_long_term':fields.boolean('Long Term Planning',
+ help="Enables long-term projects tracking, including "
+ "multiple-phase projects and resource allocation handling."),
+ 'project_wiki':fields.boolean('Specifications in a Wiki',
+ help=""),
+ 'hr_timesheet_sheet':fields.boolean('Timesheets',
+ help="Tracks and helps employees encode and validate timesheets "
+ "and attendance."),
+ 'hr_timesheet_invoice':fields.boolean('Invoice Based on Hours',
+ help="Helps generate invoice based on based on human resources "
+ "costs and general expenses."),
+ 'account_budget':fields.boolean('Budgets',
+ help="Helps accountants manage analytic and crossover budgets."),
+ 'project_messages':fields.boolean('Project Messages',
+ help="Lets employees send messages to other members of the "
+ "projects they're working on."),
+ 'project_crm':fields.boolean('Issues Tracker',
+ help="Automatically synchronizes project tasks and crm cases."),
# Methodologies
- 'scrum':fields.boolean('SCRUM'),
- 'project_gtd':fields.boolean('Getting Things Done'),
+ 'scrum':fields.boolean('SCRUM',
+ help="Implements and tracks the concepts and task types defined "
+ "in the SCRUM methodology."),
+ 'project_gtd':fields.boolean('Getting Things Done',
+ help="Embeds the Getting Things Done concepts into OpenERP's "
+ "project management."),
}
project_installer()
diff --git a/addons/project/project_installer.xml b/addons/project/project_installer.xml
index 4d8b40103c1..d7ca8c43989 100644
--- a/addons/project/project_installer.xml
+++ b/addons/project/project_installer.xml
@@ -4,49 +4,34 @@
project.installer.view
project.installer
form
-
+
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Install Modules
+
+ Configure Your Project Management
+
+
+ Various OpenERP applications are available to bring your project management to the next levels of control and flexibility.
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -63,7 +48,7 @@
- 1
+ 3
diff --git a/addons/report_designer/report_designer_installer.xml b/addons/report_designer/report_designer_installer.xml
index 6fe998410ad..bbef853ed79 100644
--- a/addons/report_designer/report_designer_installer.xml
+++ b/addons/report_designer/report_designer_installer.xml
@@ -4,41 +4,28 @@
report_designer.installer.view
report_designer.installer
form
-
+
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Install Modules
+
+ Select Reporting Tools To Install
+
+
+ OpenERP's built-in reporting abilities can be improved even further with some of the following applications
+
+
+
+
+
+
@@ -55,7 +42,7 @@
- 1
+ 3
diff --git a/addons/sale/sale_view.xml b/addons/sale/sale_view.xml
index affe9e48a4f..ec7d9d0a081 100644
--- a/addons/sale/sale_view.xml
+++ b/addons/sale/sale_view.xml
@@ -458,13 +458,12 @@
-
+
-
+