[MERGE] base_setup dynamic introspecting ir_module_module

bzr revid: al@openerp.com-20111005165504-ohkyy7edqhykirei
This commit is contained in:
Antony Lesuisse 2011-10-05 18:55:04 +02:00
commit 7a06e4c05d
211 changed files with 552 additions and 1190 deletions

View File

@ -22,7 +22,7 @@
"name" : "Accounting and Financial Management",
"version" : "1.1",
"author" : "OpenERP SA",
"category": 'Finance',
"category": 'Accounting & Finance',
'complexity': "normal",
"description": """
Accounting and Financial Management.

View File

@ -43,26 +43,6 @@
</field>
</record>
<record id="view_account_modules_installer" model="ir.ui.view">
<field name="name">account.installer.modules.form</field>
<field name="model">base.setup.installer</field>
<field name="type">form</field>
<field name="inherit_id" ref="base_setup.view_base_setup_installer"/>
<field name="arch" type="xml">
<data>
<xpath expr="//group[@name='account_accountant']" position="replace">
<newline/>
<separator string="Accounting &amp; Finance Features" colspan="4"/>
<field name="account_followup"/>
<field name="account_payment"/>
<field name="account_analytic_plans"/>
<field name="account_anglo_saxon"/>
<field name="account_asset"/>
</xpath>
</data>
</field>
</record>
<record id="action_account_configuration_installer" model="ir.actions.act_window">
<field name="name">Install your Chart of Accounts</field>
<field name="type">ir.actions.act_window</field>

View File

@ -224,26 +224,4 @@ class account_installer(osv.osv_memory):
account_installer()
class account_installer_modules(osv.osv_memory):
_inherit = 'base.setup.installer'
_columns = {
'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_anglo_saxon': fields.boolean('Anglo-Saxon Accounting',
help="This module will support the Anglo-Saxons accounting methodology by "
"changing the accounting logic with stock transactions."),
'account_asset': fields.boolean('Assets Management',
help="Helps you to manage your assets and their depreciation entries."),
}
account_installer_modules()
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

View File

@ -22,7 +22,7 @@
"name" : "Accountant Access",
"version" : "1.1",
"author" : "OpenERP SA",
"category": 'Finance',
"category": 'Hidden',
'complexity': "normal",
"description": """
Accounting Access Rights.

View File

@ -23,7 +23,7 @@
{
'name' : 'Analytic Account View',
'version' : '1.1',
'category' : 'Finance',
'category' : 'Hidden',
'complexity': "normal",
'description': """
This module is for modifying account analytic view to show important data to project manager of services companies.

View File

@ -22,7 +22,7 @@
{
'name' : 'Account Analytic Defaults',
'version' : '1.0',
'category' : 'Finance',
'category' : 'Hidden',
'complexity': "normal",
'description': """Set default values for your analytic accounts
Allows to automatically select analytic accounts based on criterions:

View File

@ -21,9 +21,9 @@
{
'name' : 'Manage multiple plans in Analytic Accounting',
'name' : 'Multiple Analytic Plans',
'version' : '1.0',
'category' : 'Finance',
'category' : 'Accounting & Finance',
'complexity': "normal",
'description': """
This module allows to use several analytic plans, according to the general journal.

View File

@ -19,7 +19,7 @@
##############################################################################
{
"name" : "Stock Accounting for Anglo-Saxon countries",
"name" : "Anglo-Saxon Accouting",
"version" : "1.2",
"author" : "OpenERP SA, Veritos",
"website" : "http://tinyerp.com - http://veritos.nl",
@ -36,7 +36,7 @@ when the invoice is created to transfer this amount to the debtor or creditor ac
Secondly, price differences between actual purchase price and fixed product standard price are booked on a separate account""",
"images" : ["images/account_anglo_saxon.jpeg"],
"depends" : ["product", "purchase"],
"category" : "Warehouse",
"category" : "Accounting & Finance",
"init_xml" : [],
"demo_xml" : [],
"update_xml" : ["product_view.xml",],

View File

@ -20,16 +20,16 @@
##############################################################################
{
"name" : "Asset management",
"name" : "Assets Management",
"version" : "1.0",
"depends" : ["account"],
"author" : "Tiny",
"author" : "OpenERP S.A.",
"description": """Financial and accounting asset management.
This Module manages the assets owned by a company or an individual. It will keep track of depreciation's occurred on
those assets. And it allows to create Move's of the depreciation lines.
""",
"website" : "http://www.openerp.com",
"category" : "Generic Modules/Accounting",
"category" : "Accounting & Finance",
"init_xml" : [
],
"demo_xml" : [ 'account_asset_demo.xml'

View File

@ -21,9 +21,9 @@
{
'name': 'Budget Management',
'name': 'Budgets',
'version': '1.0',
'category': 'Finance',
'category': 'Project Management',
'complexity': "normal",
'description': """
This module allows accountants to manage analytic and crossovered budgets.

View File

@ -23,7 +23,7 @@
"name" : "Cancel Entries",
"version" : "1.1",
"author" : "OpenERP SA",
"category": 'Finance',
"category": 'Hidden',
'complexity': "normal",
"description": """
Allows cancelling accounting entries.

View File

@ -23,7 +23,7 @@
{
'name': 'Charts of Accounts',
'version': '1.1',
'category': 'Finance',
'category': 'Hidden',
'description': """
Remove minimal account chart.
=============================

View File

@ -23,7 +23,7 @@
"name" : "Account CODA - import bank statements from coda file",
"version" : "1.0",
"author" : "OpenERP SA",
"category" : "Finance",
"category" : "Hidden",
'complexity': "normal",
"description": """
Module provides functionality to import bank statements from coda files.

View File

@ -20,9 +20,9 @@
##############################################################################
{
'name': 'Reminders',
'name': 'Followups Management',
'version': '1.0',
'category': 'Finance',
'category': 'Accounting & Finance',
'complexity': "normal",
'description': """
Modules to automate letters for unpaid invoices, with multi-level recalls.

View File

@ -23,7 +23,7 @@
{
'name': 'Improve Invoice Layout',
'version': '1.0',
'category': 'Finance',
'category': 'Hidden',
'complexity': "easy",
'description': """
This module provides some features to improve the layout of the invoices.

View File

@ -20,10 +20,10 @@
##############################################################################
{
"name": "Payment Management",
"name": "Suppliers Payment Management",
"version": "1.1",
"author": "OpenERP SA",
"category": "Finance",
"category": "Accounting & Finance",
'complexity': "easy",
"description": """
Module to manage invoice payment.

View File

@ -22,7 +22,7 @@
{
'name': 'Entries Sequence Numbering',
'version': '1.1',
'category': 'Finance',
'category': 'Hidden',
'complexity': "easy",
'description': """
This module maintains internal sequence number for accounting entries.

View File

@ -32,7 +32,7 @@ Account Voucher module includes all the basic requirements of Voucher Entries fo
* Voucher Receipt
* Cheque Register
""",
"category" : "Finance",
"category" : "Hidden",
"website" : "http://tinyerp.com",
"images" : ["images/customer_payment.jpeg","images/journal_voucher.jpeg","images/sales_receipt.jpeg","images/supplier_voucher.jpeg"],
"depends" : ["account"],

View File

@ -24,7 +24,7 @@
"version": "1.1",
"author" : "OpenERP SA",
"website" : "http://www.openerp.com",
"category" : "Finance",
"category" : "Hidden",
"depends" : ["base", "decimal_precision"],
"description": """
Module for defining analytic accounting object.

View File

@ -22,7 +22,7 @@
{
'name': 'Analytic Journal Billing Rate, Define the default invoicing rate for a specific journal',
'version': '1.0',
'category': 'Human Resources',
'category': 'Hidden',
'description': """
This module allows you to define what is the default invoicing rate for a specific journal on a given account.
==============================================================================================================

View File

@ -23,7 +23,7 @@
{
'name': 'Human Resources',
'version': '1.0',
'category': 'Generic Modules/Others',
'category': 'Hidden',
'description': """
This module allows you to define what is the default function of a specific user on a given account.
====================================================================================================

View File

@ -24,7 +24,7 @@
{
'name': 'Database Anonymization',
'version': '1.0',
'category': 'Tools',
'category': 'Hidden',
'complexity': "easy",
'description': """
This module allows you to anonymize a database.

View File

@ -18,6 +18,5 @@
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
##############################################################################
import profile_association
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

View File

@ -23,8 +23,7 @@
{
'name': 'Association profile',
'version': '0.1',
'category': 'General',
'category': 'Profile',
'category': 'Vertical Applications',
'complexity': "normal",
'description': """
This module is to configure modules related to an association.

View File

@ -1,53 +0,0 @@
# -*- coding: utf-8 -*-
##############################################################################
#
# OpenERP, Open Source Management Solution
# Copyright (C) 2004-2010 Tiny SPRL (<http://tiny.be>).
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
##############################################################################
from lxml import etree
from osv import fields, osv
class profile_association_config_install_modules_wizard(osv.osv_memory):
_inherit = 'base.setup.installer'
_columns = {
'hr_expense':fields.boolean('Resources Management: Expenses Tracking', help="Tracks and manages employee expenses, and can "
"automatically re-invoice clients if the expenses are "
"project-related."),
'event_project':fields.boolean('Event Management: Events', help="Helps you to manage and organize your events."),
'project_gtd':fields.boolean('Getting Things Done',
help="GTD is a methodology to efficiently organise yourself and your tasks. This module fully integrates GTD principle with OpenERP's project management."),
'wiki': fields.boolean('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."),
}
# Will be removed when rd-v61-al-config-depends will be done
def fields_view_get(self, cr, user, view_id=None, view_type='form', context=None, toolbar=False, submenu=False):
res = super(profile_association_config_install_modules_wizard, self).fields_view_get(cr, user, view_id, view_type, context, toolbar=toolbar, submenu=submenu)
doc = etree.XML(res['arch'])
for module in ['project_gtd','hr_expense']:
count = 0
for node in doc.xpath("//field[@name='%s']" % (module)):
count = count + 1
if count > 1:
node.set('invisible', '1')
res['arch'] = etree.tostring(doc)
return res
profile_association_config_install_modules_wizard()
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

View File

@ -1,24 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
<record id="view_confirm_install_module_form" model="ir.ui.view">
<field name="name">Association Application Configuration</field>
<field name="model">base.setup.installer</field>
<field name="type">form</field>
<field name="inherit_id" ref="base_setup.view_base_setup_installer"/>
<field name="arch" type="xml">
<data>
<xpath expr="//group[@name='association']" position="replace">
<newline/>
<separator string="Associations Features" colspan="4" />
<field name="project_gtd" />
<field name="wiki" />
<field name="event_project" />
<field name="hr_expense" />
</xpath>
</data>
</field>
</record>
<menuitem
name="Association"
id="base.menu_association"

View File

@ -23,7 +23,7 @@
{
'name': 'Auction Management',
'version': '1.0',
'category': 'General',
'category': 'Vertical Applications',
'complexity': "normal",
'description': """
This module manages the records of artists, auction articles, buyers and sellers.

View File

@ -23,7 +23,7 @@
{
'name': 'Audit Trail',
'version': '1.0',
'category': 'Tools',
'category': 'Hidden',
'description': """
This module lets administrator track every user operation on all the objects of the system.
===========================================================================================

View File

@ -23,7 +23,7 @@
{
'name': 'OpenID',
'version': '2.0',
'category': 'Authentification',
'category': 'Hidden',
'description': """Allow users to login through OpenID.""",
'author': 'OpenERP s.a.',
'maintainer': 'OpenERP s.a.',

View File

@ -22,9 +22,7 @@
{
'name': 'Action Rule',
'version': '1.0',
'category': 'Tools',
'complexity': "expert",
'category': 'Generic Modules/Others',
'category': 'Hidden',
'description': """
This module allows to implement action rules for any object.
============================================================

View File

@ -34,7 +34,7 @@ It supports:
- Recurring events
- Invitations to people""",
"author" : "OpenERP SA",
'category': 'Tools',
'category': 'Hidden',
'website': 'http://www.openerp.com',
"init_xml" : [
'base_calendar_data.xml'

View File

@ -23,7 +23,7 @@
{
'name': 'Base Contact',
'version': '1.0',
'category': 'Tools',
'category': 'Hidden',
'complexity': "expert",
'description': """
This module allows you to manage your contacts entirely.

View File

@ -24,7 +24,7 @@
"author" : ['OpenERP SA', "FS3"],
"maintainer" : "OpenERP SA",
"website" : "http://www.openerp.com",
"category" : "Tools",
"category" : "Hidden",
'complexity': "easy",
"description": """
Replaces cleartext passwords in the database with a secure hash

View File

@ -21,7 +21,7 @@
{
'name': 'Create IBAN bank accounts',
'version': '1.0',
'category': 'Finance',
'category': 'Hidden',
'complexity': "easy",
'description': """
This module installs the base for IBAN (International Bank Account Number) bank accounts and checks for its validity.

View File

@ -22,7 +22,7 @@
{
'name': 'Module Technical Guide in Restructured Text ',
'version': '1.0',
'category': 'Tools',
'category': 'Hidden',
'description': """
This module generates the Technical Guides of selected modules in Restructured Text format (RST).
=================================================================================================

View File

@ -23,7 +23,7 @@
{
'name': 'Base module quality - To check the quality of other modules' ,
'version': '1.0',
'category': 'Tools',
'category': 'Hidden',
'description': """
The aim of this module is to check the quality of other modules.
================================================================

View File

@ -23,7 +23,7 @@
{
'name': 'Module Record',
'version': '1.0',
'category': 'Tools',
'category': 'Hidden',
'description': """
This module allows you to create a new module without any development.
======================================================================

View File

@ -21,9 +21,9 @@
{
'name': 'Statistical Report Creator',
'name': 'Query Builder',
'version': '1.0',
'category': 'Tools',
'category': 'Advanced Reporting',
'complexity': "expert",
'description': """
This module allows you to create any statistic report on several objects.

View File

@ -21,9 +21,9 @@
{
'name': 'OpenOffice Report Designer Interface',
'name': 'OpenOffice Report Designer',
'version': '0.1',
'category': 'Tools',
'category': 'Advanced Reporting',
'complexity': "normal",
'description': """
This module is used along with OpenERP OpenOffice Plugin.

View File

@ -23,7 +23,7 @@
{
'name': 'Base Setup',
'version': '1.0',
'category': 'Tools',
'category': 'Hidden',
'complexity': "easy",
'description': """
This module helps to configure the system at the installation of a new database.

View File

@ -20,123 +20,319 @@
##############################################################################
import pytz
import simplejson
import cgi
import pooler
import tools
from osv import fields, osv
from tools.translate import _
from lxml import etree
#Application and feature chooser, this could be done by introspecting ir.modules
DEFAULT_MODULES = {
'Customer Relationship Management' : ['crm',],
'Sales Management' : ['sale',],
'Project Management' : ['project',],
'Knowledge Management' : ['document',],
'Warehouse Management' : ['stock',],
'Manufacturing' : ['mrp', 'procurement'],
'Accounting & Finance' : ['account,'],
'Purchase Management' : ['purchase,'],
'Human Resources' : ['hr',],
'Point of Sales' : ['pos',],
'Marketing' : ['marketing',],
}
class base_setup_installer(osv.osv_memory):
_name = 'base.setup.installer'
_inherit = 'res.config.installer'
_install_if = {
('sale','crm'): ['sale_crm'],
('sale','project'): ['project_mrp'],
}
_columns = {
# Generic modules
'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 inventory and main stock operations: delivery orders, receptions, etc."),
'mrp':fields.boolean('Manufacturing',
help="Helps you manage your manufacturing processes and generate "
"reports on those processes."),
'account_voucher':fields.boolean('Invoicing & Payments',
help="Allows you to create your invoices and track the payments. It is an easier version of the accounting module for managers who are not accountants."),
'account_accountant':fields.boolean('Accounting & Finance',
help="Helps you handle your accounting needs, if you are not an accountant, we suggest you to install only the Invoicing "),
'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 employees 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."),
'profile_tools':fields.boolean('Extra Tools',
help="Lets you install various interesting but non-essential tools "
"like Survey, Lunch and Ideas box."),
'report_designer':fields.boolean('Advanced Reporting',
help="Lets you install various tools to simplify and enhance "
"OpenERP's report creation."),
# Vertical modules
'product_expiry':fields.boolean('Food Industry',
help="Installs a preselected set of OpenERP applications "
"which will help you manage your industry."),
'association':fields.boolean('Associations',
help="Installs a preselected set of OpenERP "
"applications which will help you manage your association "
"more efficiently."),
'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."),
'selection' : fields.text('Selection'),
}
def fields_get(self, cr, uid, fields=None, context=None):
if context is None:
context = {}
if fields is None:
fields = {}
fields = {}
category_proxy = self.pool.get('ir.module.category')
domain = [('parent_id', '=', False),
('name', '!=', 'Uncategorized'),
('visible', '=', True)]
category_ids = category_proxy.search(cr, uid, domain, context=context)
for category in category_proxy.browse(cr, uid, category_ids, context=context):
category_name = 'category_%d' % (category.id,)
fields[category_name] = {
'type' : 'boolean',
'string' : category.name,
'name' : category_name,
'help' : category.description,
}
module_proxy = self.pool.get('ir.module.module')
module_ids = module_proxy.search(cr, uid, [], context=context)
for module in module_proxy.browse(cr, uid, module_ids, context=context):
module_name = 'module_%d' % (module.id,)
module_is_installed = module.state == 'installed'
fields[module_name] = {
'type' : 'boolean',
'string' : module.shortdesc,
'name' : module_name,
'help' : module.description,
}
return fields
def default_get(self, cr, uid, fields=None, context=None):
if context is None:
context = {}
if fields is None:
fields = {}
result = {}
if 'dont_compute_virtual_attributes' not in context:
module_proxy = self.pool.get('ir.module.module')
module_ids = module_proxy.search(cr, uid, [], context=context)
for module in module_proxy.browse(cr, uid, module_ids, context=context):
result['module_%d' % (module.id,)] = module.state == 'installed'
cat_proxy = self.pool.get('ir.module.category')
cat_ids = cat_proxy.search(cr, uid, [], context=context)
for cat in cat_proxy.browse(cr, uid, cat_ids, context=context):
m = DEFAULT_MODULES.get(cat.name,[])
r = module_proxy.search(cr, uid, [('state','=','installed'),('name','in',m)])
result['category_%d' % (cat.id,)] = bool(r)
return result
def fields_view_get(self, cr, uid, view_id=None, view_type='from', context=None, toolbar=False, submenu=False):
def in_extended_view_group(cr, uid, context=None):
try:
model, group_id = self.pool.get('ir.model.data').get_object_reference(cr, uid, 'base', 'group_extended')
except ValueError:
return False
return group_id in self.pool.get('res.users').read(cr, uid, uid, ['groups_id'], context=context)['groups_id']
result = super(base_setup_installer, self).fields_view_get(cr, uid, view_id, view_type, context, toolbar, submenu)
module_category_proxy = self.pool.get('ir.module.category')
domain = [('parent_id', '=', False),
('name', '!=', 'Uncategorized'),
('visible', '=', True)]
module_category_ids = module_category_proxy.search(cr, uid, domain, context=context, order='sequence asc')
arch = ['<form string="%s">' % _('Automatic Base Setup')]
arch.append('<separator string="%s" colspan="4" />' % _('Install Applications'))
module_proxy = self.pool.get('ir.module.module')
extended_view = in_extended_view_group(cr, uid, context=context)
for module_category in module_category_proxy.browse(cr, uid, module_category_ids, context=context):
domain = [('category_id', '=', module_category.id)]
if not extended_view:
domain.append(('complexity', '!=', 'expert'))
default_modules = DEFAULT_MODULES.get(module_category.name, False)
if default_modules:
domain.append(('name', 'not in', default_modules))
modules = module_proxy.browse(cr, uid, module_proxy.search(cr, uid, domain, context=context), context=context)
if not modules:
continue
readonly = any(module.state == 'installed' for module in modules)
attributes = {
'name' : 'category_%d' % (module_category.id,),
'on_change' : 'on_change_%s_%d(category_%d)' % ('category', module_category.id, module_category.id,),
}
if readonly:
attributes['modifiers'] = simplejson.dumps({'readonly' : True})
arch.append("""<field %s />""" % (" ".join(["%s='%s'" % (key, value,)
for key, value in attributes.iteritems()]),))
# Compute the module to show
for module_category in module_category_proxy.browse(cr, uid, module_category_ids, context=context):
domain = [('category_id', '=', module_category.id)]
if not extended_view:
domain.append(('complexity', '!=', 'expert'))
default_modules = DEFAULT_MODULES.get(module_category.name, False)
if default_modules:
domain.append(('name', 'not in', default_modules))
modules = module_proxy.browse(cr, uid, module_proxy.search(cr, uid, domain, context=context), context=context)
if not modules:
continue
modifiers = {
'invisible' : [('category_%d' % (module_category.id), '=', False)],
}
module_modifiers = dict(modifiers)
arch.append("""<separator string="%s Features" colspan="4" modifiers='%s'/>""" % (
cgi.escape(module_category.name),
simplejson.dumps(modifiers))
)
for module in modules:
#module_modifiers['readonly'] = module.state == 'installed'
arch.append("""<field name="module_%d" modifiers='%s' />""" % (
module.id,
simplejson.dumps(module_modifiers))
)
arch.append(
'<separator colspan="4" />'
'<group colspan="4" col="2">'
'<button special="cancel" string="Cancel" icon="gtk-cancel" />'
'<button string="Install Modules" type="object" name="apply_cb" icon="gtk-apply" />'
'</group>'
)
arch.append('</form>')
result['arch'] = ''.join(arch)
return result
def __getattr__(self, name):
if name.startswith('on_change_category_'):
def proxy(cr, uid, ids, value, context=None):
item = 'category_%s' % name[len('on_change_category_'):]
return self._on_change_selection(cr, uid, ids, item, value, context=context)
return proxy
return getattr(super(base_setup_installer, self), name)
def _on_change_selection(self, cr, uid, ids, item, value, context=None):
if not isinstance(item, basestring) or not value:
return {}
if item.startswith('category_') or item.startswith('module_'):
object_name, identifier = item.split('_')
else:
return {}
values = {
}
def _if_knowledge(self, cr, uid, ids, context=None):
if self.pool.get('res.users').browse(cr, uid, uid, context=context)\
.view == 'simple':
return ['document_ftp']
return None
#if object_name == 'category':
# module_ids = self.pool.get('ir.module.module').search(cr, uid, [('category_id', '=', int(identifier))], context=context)
# for module_id in module_ids:
# values['module_%d' % module_id] = 1
def _if_misc_tools(self, cr, uid, ids, context=None):
return ['profile_tools']
return {'value': values}
def onchange_moduleselection(self, cr, uid, ids, *args, **kargs):
value = {}
# Calculate progress
closed, total = self.get_current_progress(cr, uid)
progress = round(100. * closed / (total + len(filter(None, args))))
value.update({'progress':progress})
if progress < 10.:
progress = 10.
return {'value':value}
def create(self, cr, uid, values, context=None):
to_install = {'categories' : [], 'modules' : []}
for key, value in values.iteritems():
if value == 1 and (key.startswith('module_') or key.startswith('category_')):
kind, identifier = key.split('_')
if kind == 'category':
to_install['categories'].append(long(identifier))
if kind == 'module':
to_install['modules'].append(long(identifier))
def execute(self, cr, uid, ids, context=None):
module_pool = self.pool.get('ir.module.module')
modules_selected = []
datas = self.read(cr, uid, ids, context=context)[0]
for mod in datas.keys():
if mod in ('id', 'progress'):
continue
if datas[mod] == 1:
modules_selected.append(mod)
values = {
'selection' : simplejson.dumps(to_install),
}
context.update(dont_compute_virtual_attributes=True)
return super(base_setup_installer, self).create(cr, uid, values, context=context)
module_ids = module_pool.search(cr, uid, [('name', 'in', modules_selected)], context=context)
need_install = False
for module in module_pool.browse(cr, uid, module_ids, context=context):
if module.state == 'uninstalled':
module_pool.state_update(cr, uid, [module.id], 'to install', ['uninstalled'], context)
need_install = True
def apply_cb(self, cr, uid, ids, context=None):
category_proxy = self.pool.get('ir.module.category')
for installer in self.browse(cr, uid, ids, context=context):
to_install = simplejson.loads(installer.selection)
proxy = self.pool.get('ir.module.module')
module_ids = proxy.search(cr, uid, [('id', 'in', to_install['modules'])], context=context)
modules = set(record['name']
for record in proxy.read(cr, uid, module_ids, ['name'], context=context))
category_ids = category_proxy.search(cr, uid, [('id', 'in', to_install['categories'])], context=context)
selected_categories = set(record['name']
for record in category_proxy.read(cr, uid, category_ids, ['name'], context=context))
# FIXME: Use a workaround, but can do better
for category_name, default_modules in DEFAULT_MODULES.iteritems():
if category_name in selected_categories:
modules.update(default_modules)
# Special Cases:
# * project_mrp: the dependencies are sale, project, procurement, mrp_jit
if 'sale' in modules and 'project' in modules:
modules.add('project_mrp')
need_update = False
module_ids = proxy.search(cr, uid, [('name', 'in', list(modules))], context=context)
if module_ids:
proxy.state_update(cr, uid, module_ids, 'to install', ['uninstalled'], context=context)
need_update = True
category_id = self.pool.get('ir.model.data').get_object_reference(cr, uid, 'base', 'module_category_link')
while True and category_id:
cr.execute("select id, name from ir_module_module m where category_id = %s \
and (select count(d.id) from ir_module_module_dependency d \
where d.module_id = m.id) = (select count(d.id) from \
ir_module_module_dependency d inner join ir_module_module m2 on d.name = m2.name \
where d.module_id=m.id and m2.state in %s ) and state = %s",
(category_id[1], ('installed', 'to install', 'to upgrade', ), 'uninstalled',))
modules = [name for _, name in cr.fetchall()]
module_ids = proxy.search(cr, uid, [('name', 'in', modules)], context=context)
if not module_ids:
break
proxy.state_update(cr, uid, module_ids, 'to install', ['uninstalled'], context=context)
need_update = True
if need_update:
cr.commit()
elif module.state == 'installed':
cr.execute("update ir_actions_todo set state='open' \
from ir_model_data as data where data.res_id = ir_actions_todo.id \
and ir_actions_todo.type='special'\
and data.model = 'ir.actions.todo' and data.module=%s", (module.name, ))
if need_install:
self.pool = pooler.restart_pool(cr.dbname, update_module=True)[1]
return
self.pool = pooler.restart_pool(cr.dbname, update_module=True)[1]
if 'html' in context:
return {'type' : 'ir.actions.reload'}
else:
return {'type' : 'ir.actions.act_window_close'}
# TODO: To implement in this new wizard
#def execute(self, cr, uid, ids, context=None):
# module_pool = self.pool.get('ir.module.module')
# modules_selected = []
# datas = self.read(cr, uid, ids, context=context)[0]
# for mod in datas.keys():
# if mod in ('id', 'progress'):
# continue
# if datas[mod] == 1:
# modules_selected.append(mod)
# module_ids = module_pool.search(cr, uid, [('name', 'in', modules_selected)], context=context)
# need_install = False
# for module in module_pool.browse(cr, uid, module_ids, context=context):
# if module.state == 'uninstalled':
# module_pool.state_update(cr, uid, [module.id], 'to install', ['uninstalled'], context)
# need_install = True
# cr.commit()
# elif module.state == 'installed':
# cr.execute("update ir_actions_todo set state='open' \
# from ir_model_data as data where data.res_id = ir_actions_todo.id \
# and ir_actions_todo.type='special'\
# and data.model = 'ir.actions.todo' and data.module=%s", (module.name, ))
# if need_install:
# self.pool = pooler.restart_pool(cr.dbname, update_module=True)[1]
# return
#Migrate data from another application Conf wiz
@ -158,11 +354,10 @@ class product_installer(osv.osv_memory):
_name = 'product.installer'
_inherit = 'res.config'
_columns = {
'customers': fields.selection([('create','Create'), ('import','Import')], 'Customers', size=32, required=True, help="Import or create customers"),
'customers': fields.selection([('create','Create'), ('import','Import')], 'Customers', size=32, required=True, help="Import or create customers"),
}
_defaults = {
'customers': 'create',
'customers': 'create',
}
def execute(self, cr, uid, ids, context=None):

View File

@ -1,87 +1,35 @@
<openerp>
<data>
<record id="view_base_setup_installer" model="ir.ui.view">
<field name="name">base.setup.installer.view</field>
<field name="model">base.setup.installer</field>
<field name="type">form</field>
<field name="inherit_id" ref="base.res_config_installer"/>
<field name="arch" type="xml">
<data>
<form position="attributes">
<attribute name="string">Install Applications</attribute>
</form>
<xpath expr="//label[@string='description']" position="attributes">
<attribute name="string">Select the Applications you want your system to cover. If you are not sure about your exact needs at this stage, you can easily install them later.</attribute>
</xpath>
<xpath expr="//separator[@string=&quot;vsep&quot;]" position="attributes">
<attribute name="string"/>
<attribute name="rowspan">15</attribute>
</xpath>
<xpath expr="//button[@string='Install Modules']" position="attributes">
<attribute name="string">Install</attribute>
</xpath>
<separator string="title" position="attributes">
<attribute name="string">Install Applications</attribute>
</separator>
<group colspan="8">
<field name="crm" />
<field name="sale" />
<field name="project" />
<field name="knowledge" />
<field name="stock" />
<field name="mrp" />
<field name="account_voucher" />
<field name="account_accountant" />
<field name="purchase" />
<field name="hr" />
<field name="profile_tools" />
<field name="marketing" groups="base.group_extended" />
<field name="point_of_sale"/>
<field name="report_designer" groups="base.group_extended" />
<separator string="Install Specific Industry Applications" colspan="4"/>
<field name="association" />
<field name="auction" />
<field name="product_expiry" />
<group name="crm"/>
<group name="sale"/>
<group name="project"/>
<group name="knowledge"/>
<group name="mrp"/>
<group name="account_accountant"/>
<group name="purchase"/>
<group name="hr"/>
<group name="profile_tools"/>
<group name="marketing"/>
<group name="report_designer"/>
<group name="association"/>
</group>
</data>
</field>
</record>
<record id="action_base_setup_installer" model="ir.actions.act_window">
<field name="name">Install Applications</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">base.setup.installer</field>
<field name="view_id" ref="view_base_setup_installer"/>
<field name="view_type">form</field>
<field name="view_mode">form</field>
<field name="target">new</field>
</record>
<record id="base_setup_installer_todo" model="ir.actions.todo">
<field name="action_id" ref="action_base_setup_installer"/>
<field name="category_id" ref="base.category_administration_config"/>
<field name="sequence">2</field>
</record>
<record model="ir.actions.act_window" id="action_base_setup_installer_beta">
<field name="name">Install Applications</field>
<field name="res_model">base.setup.installer</field>
<field name="view_type">form</field>
<field name="view_mode">form</field>
<field name="target">new</field>
</record>
<record id="action_start_configurator" model="ir.actions.server">
<field name="name">Start Configuration</field>
<field name="model_id" ref="base.model_ir_actions_todo"/>
<field name="state">code</field>
<field name="code" eval="'# obj is a browse_record and will provide stupid ids to method\n' 'action = pool.get(\'ir.actions.todo\').action_launch(cr, uid, ' + str([ref('base_setup_installer_todo')]) + ', context=context)'"/>
</record>
<menuitem name="Add More Features" action="action_start_configurator" id="menu_view_base_module_configuration" parent="base.menu_config" type="server" icon="STOCK_EXECUTE" sequence="100"/>
<record id="base_setup_installer_todo" model="ir.actions.todo">
<field name="action_id" ref="action_base_setup_installer_beta" />
<field name="category_id" ref="base.category_administration_config"/>
<field name="sequence">2</field>
</record>
<record id="action_start_configurator" model="ir.actions.server">
<field name="name">Start Configuration</field>
<field name="model_id" ref="base.model_ir_actions_todo"/>
<field name="state">code</field>
<field name="code" eval="'# obj is a browse_record and will provide stupid ids to method\n' 'action = pool.get(\'ir.actions.todo\').action_launch(cr, uid, ' + str([ref('base_setup_installer_todo')]) + ', context=context)'"/>
</record>
<menuitem name="Add More Features" action="action_start_configurator" id="menu_view_base_module_configuration" parent="base.menu_config" type="server" icon="STOCK_EXECUTE" sequence="100"/>
<record id="ir_ui_view_sc_configuration" model="ir.ui.view_sc">
<field name="name">Add More Features</field>
<field name="resource">ir.ui.menu</field>
<field name="user_id" ref="base.user_root"/>
<field name="res_id" ref="menu_view_base_module_configuration" />
</record>
<!-- Import or create customers configartion view -->
<record id="action_import_create_installer" model="ir.actions.act_window">

View File

@ -23,7 +23,7 @@
"name":"Server Object Synchronization",
"version":"0.1",
"author":"OpenERP SA",
"category":"Tools",
"category":"Hidden",
"description": """
Synchronization with all objects.
=================================

View File

@ -4,7 +4,7 @@
"author": "OpenERP SA",
"version": "1.0",
"depends": ["base"],
"category" : "Tools",
"category" : "Hidden",
'complexity': "easy",
'description': """
Common base for tools modules.

View File

@ -22,7 +22,7 @@
{
'name': 'VAT Number Validation',
'version': '1.0',
'category': 'Finance',
'category': 'Hidden',
'complexity': "easy",
'description': """
VAT validation for Partners' VAT numbers

View File

@ -22,7 +22,7 @@
{
'name': 'Dashboard Creator',
'version': '1.0',
'category': 'Tools',
'category': 'Hidden',
'complexity': "normal",
'description': """
Lets the user create a custom dashboard.

View File

@ -49,7 +49,7 @@ To access OpenERP Calendar using WebCal to remote site use the URL like:
DATABASE_NAME: Name of database on which OpenERP Calendar is created
CALENDAR_NAME: Name of calendar to access
""",
'category': 'Tools',
'category': 'Hidden',
"author" : "OpenERP SA",
'website': 'http://www.openerp.com',
"init_xml" : ["caldav_data.xml"],

View File

@ -21,7 +21,7 @@
"name" : "Claim from Delivery",
"version" : "1.0",
"author" : "OpenERP SA",
"category" : "Warehouse",
"category" : "Hidden",
"depends" : ["base", "crm_claim", "stock"],
"init_xml" : [],
"demo_xml" : [],

View File

@ -25,7 +25,6 @@ import crm_segmentation
import crm_meeting
import crm_lead
import crm_phonecall
import crm_installer
import report
import wizard
import res_partner

View File

@ -23,7 +23,7 @@
{
'name': 'Customer & Supplier Relationship Management',
'version': '1.0',
'category': 'Sales',
'category': 'Customer Relationship Management',
'complexity': "easy",
'description': """
The generic OpenERP Customer Relationship Management.

View File

@ -1,59 +0,0 @@
# -*- coding: utf-8 -*-
##############################################################################
#
# OpenERP, Open Source Management Solution
# Copyright (C) 2004-2009 Tiny SPRL (<http://tiny.be>).
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
##############################################################################
from lxml import etree
from osv import fields, osv
class crm_installer(osv.osv_memory):
_inherit = 'base.setup.installer'
_columns = {
'name': fields.char('Name', size=64),
'crm_helpdesk': fields.boolean('Helpdesk', help="Manages a Helpdesk service."),
'crm_fundraising': fields.boolean('Fundraising', help="This may help associations in their fundraising process and tracking."),
'crm_claim': fields.boolean('Claims', help="Manages the suppliers and customers claims, including your corrective or preventive actions."),
'import_sugarcrm': fields.boolean('Import Data from SugarCRM', help="Help you to import and update data from SugarCRM to OpenERP"),
'crm_caldav': fields.boolean('Calendar Synchronizing', help="Helps you to synchronize the meetings with other calendar clients and mobiles."),
'sale_crm': fields.boolean('Opportunity to Quotation', help="Create a Quotation from an Opportunity."),
'fetchmail': fields.boolean('Fetch Emails', help="Allows you to receive E-Mails from POP/IMAP server."),
'thunderbird': fields.boolean('Thunderbird Plug-In', help="Allows you to link your e-mail to OpenERP's documents. You can attach it to any existing one in OpenERP or create a new one."),
'outlook': fields.boolean('MS-Outlook Plug-In', help="Allows you to link your e-mail to OpenERP's documents. You can attach it to any existing one in OpenERP or create a new one."),
'wiki_sale_faq': fields.boolean('Sale FAQ', help="Helps you manage wiki pages for Frequently Asked Questions on Sales Application."),
'import_google': fields.boolean('Google Import', help="Imports contacts and events from your google account."),
}
def fields_view_get(self, cr, uid, view_id=None, view_type='form', context=None, toolbar=False, submenu=False):
res = super(crm_installer, self).fields_view_get(cr, uid, view_id=view_id, view_type=view_type, context=context, toolbar=toolbar,submenu=False)
#Checking sale module is installed or not
cr.execute("SELECT * from ir_module_module where state='installed' and name = 'sale'")
count = cr.fetchall()
if count:
doc = etree.XML(res['arch'])
nodes = doc.xpath("//field[@name='sale_crm']")
for node in nodes:
node.set('invisible', '0')
node.set('modifiers', '{}')
res['arch'] = etree.tostring(doc)
return res
crm_installer()
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

View File

@ -1,29 +1,5 @@
<openerp>
<data>
<record id="view_crm_installer" model="ir.ui.view">
<field name="name">crm.installer.view</field>
<field name="model">base.setup.installer</field>
<field name="type">form</field>
<field name="inherit_id" ref="base_setup.view_base_setup_installer"/>
<field name="arch" type="xml">
<data>
<xpath expr="//group[@name='crm']" position="replace">
<newline/>
<separator string="Customer Relationship Management Features" colspan="4"/>
<field name="crm_claim" groups="base.group_extended"/>
<field name="crm_helpdesk" groups="base.group_extended"/>
<field name="crm_fundraising" groups="base.group_extended"/>
<field name="wiki_sale_faq" groups="base.group_extended"/>
<field name="sale_crm" invisible="1" groups="base.group_extended"/>
<field name="crm_caldav"/>
<field name="import_sugarcrm"/>
<field name="fetchmail"/>
<field name="thunderbird"/>
<field name="outlook"/>
</xpath>
</data>
</field>
</record>
<record model="ir.actions.act_window" id="crm_case_section_view_form_installer">
<field name="name">Define Sales Team</field>

View File

@ -22,10 +22,9 @@
{
'name': 'Extended Module to Add CalDav feature on Meeting',
'name': 'Calendar Synchronizing',
'version': '1.1',
'category': 'Sales',
'category': 'Generic Modules/CRM & SRM',
'category': 'Customer Relationship Management',
'complexity': "normal",
'description': """
Caldav features in Meeting.

View File

@ -21,9 +21,9 @@
{
'name': 'Customer & Supplier Claims Management',
'name': 'Claims',
'version': '1.0',
'category': 'Sales',
'category': 'Customer Relationship Management',
'complexity': "easy",
'description': """
This modules allows you to track your customers/suppliers claims and grievances.

View File

@ -21,8 +21,8 @@
{
'category': 'Sales',
'name': 'CRM Fundraising',
'category': 'Customer Relationship Management',
'name': 'Fundraising',
'version': '1.0',
'complexity': "easy",
'description': """

View File

@ -21,8 +21,8 @@
{
'category': 'Sales',
'name': 'CRM Helpdesk',
'category': 'Customer Relationship Management',
'name': 'Helpdesk',
'version': '1.0',
'complexity': "easy",
'description': """

View File

@ -23,7 +23,7 @@
{
'name': 'Partner Geo-Localization',
'version': '1.0',
'category': 'Sales',
'category': 'Hidden',
'complexity': "normal",
'description': """
This is the module used by OpenERP SA to redirect customers to its partners, based on geolocalization.

View File

@ -21,9 +21,9 @@
{
'name': 'CRM Profiling Management - To Perform Segmentation within Partners',
'name': 'Profiling Tools',
'version': '1.3',
'category': 'Sales',
'category': 'Marketing',
'complexity': "easy",
'description': """
This module allows users to perform segmentation within partners.

View File

@ -30,7 +30,7 @@ The decimal precision is configured per company.
"author": "OpenERP SA",
"version": "0.1",
"depends": ["base"],
"category" : "Tools",
"category" : "Hidden",
'complexity': "easy",
"init_xml": [],
"update_xml": [

View File

@ -21,9 +21,9 @@
{
'name': 'Carriers and Deliveries',
'name': 'Delivery Costs',
'version': '1.0',
'category': 'Warehouse',
'category': 'Sales Management',
'complexity': "normal",
'description': """
Allows you to add delivery methods in sale orders and picking.

View File

@ -23,8 +23,7 @@
{
'name': 'Integrated Document Management System',
'version': '2.1',
'category': 'Tools',
'category': 'Generic Modules/Others',
'category': 'Knowledge Management',
'complexity': "normal",
'description': """
This is a complete document management system.

View File

@ -21,9 +21,9 @@
{
'name': 'Integrated FTP Server with Document Management System',
'name': 'Shared Repositories (FTP)',
'version': '1.99',
'category': 'Tools',
'category': 'Knowledge Management',
'complexity': "normal",
'description': """
This is a support FTP Interface with document management system.

View File

@ -23,7 +23,7 @@
{
'name': 'Support for iCal based on Document Management System',
'version': '1.0',
'category': 'Tools',
'category': 'Hidden',
'complexity': "normal",
'description': """
Allows to synchronise calendars with others applications.

View File

@ -29,10 +29,10 @@
##############################################################################
{
"name" : "WebDAV server for Document Management",
"name" : "Shared Repositories (WebDAV)",
"version" : "2.3",
"author" : "OpenERP SA",
"category" : "Tools",
"category" : "Knowledge Management",
'complexity': "normal",
"website": "http://www.openerp.com",
"description": """

View File

@ -21,11 +21,11 @@
##############################################################################
{
"name" : "Email Templates",
"name" : "Automated E-Mails",
"version" : "1.1",
"author" : "Openlabs",
"website" : "http://openerp.com",
"category" : "Tools",
"category" : "Marketing",
'complexity': "expert",
"depends" : ['mail'],
"description": """

View File

@ -23,7 +23,7 @@
{
'name': 'Event',
'version': '0.1',
'category': 'Tools',
'category': 'Hidden',
'complexity': "easy",
'description': """
Organization and management of Events.

View File

@ -22,7 +22,7 @@
{
'name': 'Event Project - Create Retro-Planning to manage your Events',
'version': '0.1',
'category': 'Tools',
'category': 'Hidden/Link',
'complexity': "easy",
'description': """
Organization and management of events.

View File

@ -21,11 +21,11 @@
##############################################################################
{
"name" : "Automated Email Retriever",
"name" : "Fetch Emails",
"version" : "1.0",
"depends" : ["base", 'mail'],
"author" : "OpenERP SA",
"category": 'Tools',
"category": 'Customer Relationship Management',
"description": """
Retrieve incoming email on POP / IMAP servers
=============================================

View File

@ -24,7 +24,7 @@
"version" : "1.0",
"depends" : ["fetchmail", "crm"],
"author" : "OpenERP SA",
"category": 'Tools',
"category": 'Hidden/Link',
"description": """
""",
'website': 'http://www.openerp.com',

View File

@ -24,7 +24,7 @@
"version" : "1.0",
"depends" : ["fetchmail", "crm_claim"],
"author" : "OpenERP SA",
"category": 'Tools',
"category": 'Hidden/Link',
"description": """
""",
'website': 'http://www.openerp.com',

View File

@ -24,7 +24,7 @@
"version" : "1.0",
"depends" : ["fetchmail", "hr_recruitment"],
"author" : "OpenERP SA",
"category": 'Tools',
"category": 'Hidden/Link',
"description": """
""",
'website': 'http://www.openerp.com',

View File

@ -24,7 +24,7 @@
"version" : "1.0",
"depends" : ["fetchmail", "project_issue"],
"author" : "OpenERP SA",
"category": 'Tools',
"category": 'Hidden/Link',
"description": """
""",
'website': 'http://www.openerp.com',

View File

@ -23,8 +23,8 @@
{
'name': 'Google user',
'version': '1.0',
'category': 'Generic Modules/Others',
'description': """The module adds google user in res user""",
'category': 'Hidden',
'description': """The module adds google user in res user""",
'author': 'OpenERP SA',
'website': 'http://www.openerp.com',
'depends': ['base'],

View File

@ -23,9 +23,7 @@
{
'name': 'Google Map',
'version': '1.0',
'category': 'Tools',
'complexity': "easy",
'category': 'Generic Modules/Others',
'category': 'Hidden',
'description': """
The module adds Google Map field in partner address.
====================================================

View File

@ -21,9 +21,8 @@
import hr_department
import hr
import installer
import report
import wizard
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

View File

@ -1,29 +1,6 @@
<openerp>
<data>
<record id="view_hr_installer" model="ir.ui.view">
<field name="name">hr.installer.view</field>
<field name="model">base.setup.installer</field>
<field name="type">form</field>
<field name="inherit_id" ref="base_setup.view_base_setup_installer"/>
<field name="arch" type="xml">
<data>
<xpath expr="//group[@name='hr']" position="replace">
<newline/>
<separator string="Human Resources Features" colspan="4"/>
<field name="hr_holidays"/>
<field name="hr_expense"/>
<field name="hr_recruitment"/>
<field name="hr_timesheet_sheet"/>
<field name="hr_contract"/>
<field name="hr_attendance"/>
<field name="hr_evaluation"/>
<field name="hr_payroll"/>
<field name="hr_payroll_account" groups="base.group_extended"/>
</xpath>
</data>
</field>
</record>
<record id="category_hr_management_config" model="ir.actions.todo.category">
<field name="name">HR Management</field>

View File

@ -1,52 +0,0 @@
# -*- coding: utf-8 -*-
##############################################################################
#
# OpenERP, Open Source Management Solution
# Copyright (C) 2004-2009 Tiny SPRL (<http://tiny.be>).
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
##############################################################################
from osv import fields, osv
class hr_installer(osv.osv_memory):
_inherit = 'base.setup.installer'
_columns = {
# Human Resources Management
'hr_holidays': fields.boolean('Leaves Management',
help="Tracks employee leaves, allocation requests and planning."),
'hr_expense': fields.boolean('Expenses',
help="Tracks and manages employee expenses, and can "
"automatically re-invoice clients if the expenses are "
"project-related."),
'hr_recruitment': 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 attendances."),
'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',
help="Simplifies the management of employee's attendances."),
'hr_payroll': fields.boolean('Payroll',
help="Generic Payroll system."),
'hr_payroll_account': fields.boolean('Payroll Accounting',
help="Generic Payroll system Integrated with Accountings."),
}
hr_installer()
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

View File

@ -21,7 +21,7 @@
{
'name': 'Attendances Of Employees',
'name': 'Attendances',
'version': '1.1',
'category': 'Human Resources',
'complexity': "easy",

View File

@ -21,7 +21,7 @@
{
'name': 'Human Resources Contracts',
'name': "Employee's Contracts",
'version': '1.0',
'category': 'Human Resources',
'complexity': "easy",

View File

@ -20,7 +20,7 @@
##############################################################################
{
"name" : "Human Resources Evaluation",
"name" : "Periodic Evaluations",
"version": "0.1",
"author": "OpenERP SA",
"category": "Human Resources",

View File

@ -21,7 +21,7 @@
{
'name': 'Human Resources Expenses Tracking',
'name': 'Expenses',
'version': '1.0',
'category': 'Human Resources',
'complexity': "easy",

View File

@ -21,7 +21,7 @@
{
"name": "Human Resources: Holidays management",
"name": "Leaves Management",
"version": "1.5",
"author": ['OpenERP SA', 'Axelor'],
"category": "Human Resources",

View File

@ -20,7 +20,7 @@
#
##############################################################################
{
'name': 'Human Resource Payroll',
'name': 'Payroll',
'version': '1.0',
'category': 'Human Resources',
'complexity': "expert",

View File

@ -20,7 +20,7 @@
#
##############################################################################
{
'name': 'Human Resource Payroll Accounting',
'name': 'Payroll Accounting',
'version': '1.0',
'category': 'Human Resources',
'complexity': "expert",

View File

@ -20,7 +20,7 @@
#
##############################################################################
{
'name': 'HR - Recruitment',
'name': 'Recruitment Process',
'version': '1.0',
'category': 'Human Resources',
'complexity': "easy",

View File

@ -23,7 +23,7 @@
{
'name': 'Human Resources (Timesheet encoding)',
'version': '1.0',
'category': 'Human Resources',
'category': 'Hidden',
'complexity': "easy",
'description': """
This module implements a timesheet system.

View File

@ -23,7 +23,7 @@
{
'name': 'Invoice on analytic lines',
'version': '1.0',
'category': 'Human Resources',
'category': 'Hidden/Link',
'description': """Generate your Invoices from Expenses, Timesheet Entries, ...
Module to generate invoices based on costs (human resources, expenses, ...).
============================================================================

View File

@ -2,7 +2,7 @@
"name" : "Html View",
"version" : "1.1",
"author" : "OpenERP SA",
"category" : "Tools",
"category" : "Hidden",
"depends" : ['base'],
"init_xml" : ['html_view.xml'],
"demo_xml" : [],

View File

@ -21,9 +21,9 @@
{
'name': 'Idea Manager',
'name': 'Ideas Box',
'version': '0.1',
'category': 'Tools',
'category': 'Hidden',
'complexity': "easy",
'description': """
This module allows your user to easily and efficiently participate in enterprise innovation.

View File

@ -22,7 +22,7 @@
{
'name': 'Base framework for module that need to import complex data',
'version': '0.9',
'category': 'Generic Modules',
'category': 'Hidden',
'description': """
This module provide a class import_framework to help importing
complex data from other software

View File

@ -22,7 +22,7 @@
{
'name': 'Google Import',
'version': '1.0',
'category': 'Generic Modules/Others',
'category': 'Customer Relationship Management',
'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',

View File

@ -20,9 +20,9 @@
##############################################################################
{
'name': 'Import SugarCRM Data into OpenERP Module.',
'name': 'Import Data from SugarCRM',
'version': '1.0',
'category': 'Generic Modules',
'category': 'Customer Relationship Management',
'description': """This Module Import SugarCRM "Leads", "Opportunities", "Users", "Accounts",
"Contacts", "Employees", Meetings, Phonecalls, Emails, and Project, Project Tasks Data into OpenERP Module.""",
'author': 'OpenERP SA',

View File

@ -19,6 +19,5 @@
#
##############################################################################
import installer
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

View File

@ -25,21 +25,20 @@
"version" : "1.0",
"depends" : ["base","base_setup"],
"author" : "OpenERP SA",
"category": 'Tools',
"category": 'Hidden',
'complexity': "easy",
"description": """
Installer for knowledge-based tools.
Installer for knowledge-based Hidden.
====================================
Makes the Knowledge Application Configuration available from where you can install
document and Wiki based tools.
document and Wiki based Hidden.
""",
'website': 'http://www.openerp.com',
'init_xml': [],
'update_xml': [
'security/knowledge_security.xml',
'security/ir.model.access.csv',
'knowledge_installer.xml',
'knowledge_view.xml',
],
'demo_xml': ['knowledge_demo.xml'],

View File

@ -1,52 +0,0 @@
# -*- coding: utf-8 -*-
##############################################################################
#
# OpenERP, Open Source Management Solution
# Copyright (C) 2004-2009 Tiny SPRL (<http://tiny.be>).
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
##############################################################################
from osv import fields, osv
class knowledge_installer(osv.osv_memory):
_inherit = 'base.setup.installer'
_columns = {
# Knowledge Management
'document_ftp':fields.boolean('Shared Repositories (FTP)',
help="Provides an FTP access to your OpenERP's "
"Document Management System. It 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."),
# Content templates
'wiki_faq':fields.boolean('Template: Internal FAQ',
help="Creates a skeleton internal FAQ pre-filled with "
"documentation about OpenERP's Document Management "
"System."),
'wiki_quality_manual':fields.boolean('Template: Quality Manual',
help="Creates an example skeleton for a standard quality manual."),
}
_defaults = {
'document_ftp':True,
}
knowledge_installer()

View File

@ -1,23 +0,0 @@
<openerp>
<data>
<record id="view_knowledge_installer" model="ir.ui.view">
<field name="name">knowledge.installer.view</field>
<field name="model">base.setup.installer</field>
<field name="type">form</field>
<field name="inherit_id" ref="base_setup.view_base_setup_installer"/>
<field name="arch" type="xml">
<data>
<xpath expr="//group[@name='knowledge']" position="replace">
<newline/>
<separator string="Knowledge Management Features" colspan="4" />
<field name="document_ftp" />
<field name="document_webdav" />
<field name="wiki" />
<field name="wiki_faq" />
<field name="wiki_quality_manual" />
</xpath>
</data>
</field>
</record>
</data>
</openerp>

View File

@ -24,7 +24,7 @@
"version" : "1.0",
"author" : "conexus.at",
"website" : "http://www.conexus.at",
"category" : "Localisation/Account Charts",
"category" : "Localization/Account Charts",
"depends" : ["account_chart", 'base_vat'],
"description": "This module provides the standard Accounting Chart for Austria which is based on the Template from BMF.gv.at. Please keep in mind that you should review and adapt it with your Accountant, before using it in a live Environment.",
"demo_xml" : [],

View File

@ -20,7 +20,7 @@
##############################################################################
{ 'name': 'Belgium - Plan Comptable Minimum Normalise',
'version': '1.1',
'category': 'Finance',
'category': 'Localization/Account Charts',
'description': """
This is the base module to manage the accounting chart for Belgium in OpenERP.
==============================================================================

View File

@ -20,7 +20,7 @@
##############################################################################
{
'name': 'Belgian Payroll Rules',
'category': 'payroll',
'category': 'Localization/Payroll',
'author': 'OpenERP SA',
'depends': ['hr_payroll','hr_contract'],
'version': '1.0',

View File

@ -21,7 +21,7 @@
{
'name': 'Brazilian Localization',
'description': 'Brazilian Localization',
'category': 'Finance',
'category': 'Localization/Account Charts',
'description': """
This is the base module to manage the accounting chart for Brazil in OpenERP.
=============================================================================

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