[MERGE] trunk-application_setting_cleanup-atp (clean up config wizards, and adapt forms to new style)

bzr revid: rco@openerp.com-20120625142342-59tc4d9ycozzxalg
This commit is contained in:
Raphael Collet 2012-06-25 16:23:42 +02:00
commit 6787048b80
38 changed files with 571 additions and 428 deletions

View File

@ -37,14 +37,14 @@ class account_config_settings(osv.osv_memory):
'company_id': fields.many2one('res.company', 'Company', required=True),
'has_default_company': fields.boolean('Has default company', readonly=True),
'expects_chart_of_accounts': fields.related('company_id', 'expects_chart_of_accounts', type='boolean',
string='Chart of Accounts for this Company',
string='This Company Has its Own Chart of Accounts',
help="""Check this box if this company is a legal entity."""),
'currency_id': fields.related('company_id', 'currency_id', type='many2one', relation='res.currency', required=True,
string='Default Company Currency', help="Main currency of the company."),
'paypal_account': fields.related('company_id', 'paypal_account', type='char', size=128,
string='Paypal Account', help="Paypal account (email) for receiving online payments (credit card, etc.)"),
string='Paypal Account', help="Paypal account (email) for receiving online payments (credit card, etc.) If you set a paypal account, the customer will be able to pay your invoices or quotations with a button \"Pay with Paypal\" in automated emails or through the OpenERP portal."),
'company_footer': fields.related('company_id', 'rml_footer2', type='char', size=250, readonly=True,
string='Bank Accounts on Reports', help="Bank accounts as printed on footer of reports."),
string='Bank Accounts on Reports', help="Bank accounts as printed in the footer of each customer document. This is for information purpose only, you should configure these bank accounts through the above button \"Configure Bank Accounts\"."),
'has_chart_of_accounts': fields.boolean('Company has a chart of accounts'),
'chart_template_id': fields.many2one('account.chart.template', 'Chart Template', domain="[('visible','=', True)]"),
@ -77,12 +77,12 @@ class account_config_settings(osv.osv_memory):
help="""This allows you to check writing and printing.
This installs the module account_check_writing."""),
'module_account_accountant': fields.boolean('Accountant Features',
help="""If you do not check this box, you will be able to do Invoicing & Payments, but not accounting (Journal Items, Chart of Accounts, ...)."""),
help="""If you do not check this box, you will be able to do invoicing & payments, but not accounting (Journal Items, Chart of Accounts, ...)"""),
'module_account_asset': fields.boolean('Assets Management',
help="""This allows you to manage the assets owned by a company or a person.
It keeps track of the depreciation occurred on those assets, and creates account move for those depreciation lines.
This installs the module account_asset. If you do not check this box, you will be able to do invoicing & payments,
but not accounting (Journal Items, Chart of Accounts, ...) """),
This installs the module account_asset. If you do not check this box, you will be able to do invoicing & payments,
but not accounting (Journal Items, Chart of Accounts, ...)"""),
'module_account_budget': fields.boolean('Budget Management',
help="""This allows accountants to manage analytic and crossovered budgets.
Once the master budgets and the budgets are defined,
@ -110,10 +110,12 @@ class account_config_settings(osv.osv_memory):
'group_proforma_invoices': fields.boolean('Allow Pro-forma Invoices',
implied_group='account.group_proforma_invoices',
help="Allows you to put invoices in pro-forma state."),
'default_sale_tax': fields.many2one('account.tax', 'Default Sale Tax'),
'default_purchase_tax': fields.many2one('account.tax', 'Default Purchase Tax'),
'decimal_precision': fields.integer('Decimal Precision',
help="""Set the decimal precision for rounding results in accounting."""),
'default_sale_tax': fields.many2one('account.tax', 'Default Sale Tax',
help="This sale tax will be assigned by default on new products."),
'default_purchase_tax': fields.many2one('account.tax', 'Default Purchase Tax',
help="This purchase tax will be assigned by default on new products."),
'decimal_precision': fields.integer('Decimal Precision on Journal Entries',
help="""As an example, a decimal precision of 2 will allow journal entries like: 9.99 EUR, whereas a decimal precision of 4 will allow journal entries like: 0.0231 EUR."""),
}
def _default_company(self, cr, uid, context=None):

View File

@ -17,52 +17,66 @@
<field name="arch" type="xml">
<form string="Configure Accounting" version="7.0">
<header>
<button string="Apply" type="object" name="execute"/>
<button string="Apply" type="object" name="execute" class="oe_highlight_on_dirty"/>
<button string="Cancel" special="cancel"/>
</header>
<group col="4">
<field name="has_default_company" invisible="1" />
<field name="has_chart_of_accounts" invisible="1"/>
<field name="company_id" widget="selection" on_change="onchange_company_id(company_id)"
<sheet>
<field name="has_default_company" invisible="1" />
<field name="has_chart_of_accounts" invisible="1"/>
<field name="complete_tax_set" invisible="1"/>
<field name="has_fiscal_year" invisible="1"/>
<group groups="base.group_multi_company">
<field name="company_id" string="Select Company" widget="selection"
on_change="onchange_company_id(company_id)"
attrs="{'invisible': [('has_default_company', '=', True)]}"/>
<field name="expects_chart_of_accounts"/>
</group>
<group string="Select a Chart of Accounts to Install" col="4" attrs="{'invisible': ['|', ('expects_chart_of_accounts','=',False), ('has_chart_of_accounts','=',True)]}">
<field name="chart_template_id" widget="selection" on_change="onchange_chart_template_id(chart_template_id)" domain="[('visible','=', True)]"/>
<div class="oe_form_button_save_dirty">
<group string="Select a Chart of Accounts to Install"
attrs="{'invisible': ['|', ('expects_chart_of_accounts','=',False), ('has_chart_of_accounts','=',True)]}">
<group>
<field name="chart_template_id" widget="selection" domain="[('visible','=', True)]"
on_change="onchange_chart_template_id(chart_template_id)"/>
<field name="code_digits" groups="account.group_account_user"/>
<field name="sale_tax" attrs="{'invisible': ['|', ('chart_template_id','=',False), ('complete_tax_set','=',False)]}"
domain="[('chart_template_id', '=', chart_template_id),('parent_id','=',False),('type_tax_use','in',('sale','all'))]"/>
<field name="purchase_tax" attrs="{'invisible': ['|', ('chart_template_id','=',False), ('complete_tax_set','=',False)]}"
domain="[('chart_template_id', '=', chart_template_id),('parent_id','=',False),('type_tax_use','in',('purchase', 'all'))]"/>
<field name="sale_tax_rate" attrs="{'invisible': ['|', ('chart_template_id','=',False), ('complete_tax_set','=',True)]}" on_change="onchange_tax_rate(sale_tax_rate)"/>
<field name="purchase_tax_rate" attrs="{'invisible': ['|', ('chart_template_id','=',False), ('complete_tax_set','=',True)]}"/>
</group>
<button string="Install More Chart Templates" icon="gtk-go-forward"
name="%(open_account_charts_modules)d" type="action"/>
<newline/>
<field name="code_digits" groups="account.group_account_user"/>
<newline/>
<field name="complete_tax_set" invisible="1"/>
<field name="sale_tax" attrs="{'invisible': ['|', ('chart_template_id','=',False), ('complete_tax_set','=',False)]}"
domain="[('chart_template_id', '=', chart_template_id),('parent_id','=',False),('type_tax_use','in',('sale','all'))]"/>
<field name="purchase_tax" attrs="{'invisible': ['|', ('chart_template_id','=',False), ('complete_tax_set','=',False)]}"
domain="[('chart_template_id', '=', chart_template_id),('parent_id','=',False),('type_tax_use','in',('purchase', 'all'))]"/>
<field name="sale_tax_rate" attrs="{'invisible': ['|', ('chart_template_id','=',False), ('complete_tax_set','=',True)]}" on_change="onchange_tax_rate(sale_tax_rate)"/>
<field name="purchase_tax_rate" attrs="{'invisible': ['|', ('chart_template_id','=',False), ('complete_tax_set','=',True)]}"/>
</group>
</div>
<field name="has_fiscal_year" invisible="1"/>
<group string="No Fiscal Year Defined for this Company" col="4" attrs="{'invisible': ['|', ('expects_chart_of_accounts','=',False), ('has_fiscal_year','=',True)]}">
<field name="date_start" on_change="onchange_start_date(date_start)"/>
<field name="date_stop"/>
<field name="period" colspan="4"/>
<div class="oe_form_button_save_dirty">
<group string="No Fiscal Year Defined for This Company"
attrs="{'invisible': ['|', ('expects_chart_of_accounts','=',False), ('has_fiscal_year','=',True)]}">
<label for="date_start" string="Date Range"/>
<div>
<field name="date_start" on_change="onchange_start_date(date_start)" class="oe_inline"/> -
<field name="date_stop" class="oe_inline"/>
</div>
<field name="period"/>
</group>
</div>
<field name="complete_tax_set" invisible="1"/>
<group string="Accounting Configuration">
<group>
<field name="default_sale_tax" domain="[('type_tax_use','=','sale'), ('company_id','=',company_id)]" attrs="{'invisible': [('has_chart_of_accounts','=',False)]}"/>
<field name="default_sale_tax" domain="[('type_tax_use','=','sale'), ('company_id','=',company_id)]"
attrs="{'invisible': [('has_chart_of_accounts','=',False)]}"/>
<field name="module_account_accountant"/>
<field name="module_account_asset"/>
<field name="currency_id"/>
<field name="decimal_precision"/>
</group>
<group>
<field name="default_purchase_tax" domain="[('type_tax_use','=','purchase'), ('company_id','=',company_id)]" attrs="{'invisible': [('has_chart_of_accounts','=',False)]}"/>
<field name="currency_id"/>
<field name="default_purchase_tax" domain="[('type_tax_use','=','purchase'), ('company_id','=',company_id)]"
attrs="{'invisible': [('has_chart_of_accounts','=',False)]}"/>
<field name="module_account_asset"/>
<field name="module_account_budget"/>
<field name="decimal_precision"/>
</group>
</group>
@ -72,47 +86,55 @@
<field name="purchase_refund_journal_id" invisible="1"/>
<group>
<group string="Customer Invoices">
<label string="Invoice Sequence" for="sale_sequence_prefix"/>
<div>
<field name="sale_sequence_prefix" class="oe_inline"/>
<field name="sale_sequence_next" class="oe_inline" attrs="{'readonly': [('sale_journal_id','=',False)]}"/>
</div>
<label string="Credit Note Sequence" for="sale_refund_sequence_prefix"/>
<div>
<field name="sale_refund_sequence_prefix" class="oe_inline"/>
<field name="sale_refund_sequence_next" class="oe_inline" attrs="{'readonly': [('sale_refund_journal_id','=',False)]}"/>
</div>
<label for="sale_sequence_next"/>
<group>
<field name="sale_sequence_prefix" class="oe_inline" nolabel="1"
help='If you put "%%(year)s" in the prefix, it will be replaced by the current year.'/>
<field name="sale_sequence_next" class="oe_inline" nolabel="1" attrs="{'readonly': [('sale_journal_id','=',False)]}"/>
</group>
<label for="sale_refund_sequence_next"/>
<group>
<field name="sale_refund_sequence_prefix" class="oe_inline" nolabel="1"
help='If you put "%%(year)s" in the prefix, it will be replaced by the current year.'/>
<field name="sale_refund_sequence_next" class="oe_inline" nolabel="1" attrs="{'readonly': [('sale_refund_journal_id','=',False)]}"/>
</group>
<field name="module_account_invoice_layout"/>
<field name="module_account_voucher"/>
<field name="module_account_followup"/>
<field name="group_proforma_invoices"/>
</group>
<group string="Supplier Invoices">
<label string="Supplier Invoice Sequence" for="purchase_sequence_prefix"/>
<div>
<field name="purchase_sequence_prefix" class="oe_inline"/>
<field name="purchase_sequence_next" class="oe_inline" attrs="{'readonly': [('purchase_journal_id','=',False)]}"/>
</div>
<label string="Supplier Credit Note Sequence" for="purchase_refund_sequence_prefix"/>
<div>
<field name="purchase_refund_sequence_prefix" class="oe_inline"/>
<field name="purchase_refund_sequence_next" class="oe_inline"
<label for="purchase_sequence_next"/>
<group>
<field name="purchase_sequence_prefix" class="oe_inline" nolabel="1"
help='If you put "%%(year)s" in the prefix, it will be replaced by the current year.'/>
<field name="purchase_sequence_next" class="oe_inline" nolabel="1" attrs="{'readonly': [('purchase_journal_id','=',False)]}"/>
</group>
<label for="purchase_refund_sequence_next"/>
<group>
<field name="purchase_refund_sequence_prefix" class="oe_inline" nolabel="1"
help='If you put "%%(year)s" in the prefix, it will be replaced by the current year.'/>
<field name="purchase_refund_sequence_next" class="oe_inline" nolabel="1"
attrs="{'readonly': [('purchase_refund_journal_id','=',False)]}"/>
</div>
</group>
<field name="module_account_payment"/>
</group>
<group string="Electronic Payments">
<field name="paypal_account"/>
<field name="paypal_account" placeholder="sales@openerp.com"/>
</group>
<group string="Bank &amp; Cash">
<label string="Configure Bank Accounts :"/>
<label for="id" string="Configure Bank Accounts"/>
<button name="%(action_bank_tree)d" string="Configure Bank Accounts" icon="gtk-go-forward" type="action"/>
<field name="company_footer"/>
<field name="module_account_check_writing"/>
</group>
<group name="analytic_accounting" invisible="1" string="Analytic Accounting"/>
</group>
</sheet>
</form>
</field>
</record>

View File

@ -97,27 +97,4 @@ class specify_partner_terminology(osv.osv_memory):
self.make_translations(cr, uid, ids, act_ref, 'model', act_id.help, _case_insensitive_replace(act_id.help,'Customer',o.partner), res_id=act_id.id, context=context)
return {}
# Preferences wizard for Sales & CRM.
# It is defined here because it is inherited independently in modules sale, crm,
# plugin_outlook and plugin_thunderbird.
class sale_config_settings(osv.osv_memory):
_name = 'sale.config.settings'
_inherit = 'res.config.settings'
_columns = {
'module_crm': fields.boolean('CRM'),
'module_plugin_thunderbird': fields.boolean('Thunderbird Plugin',
help="""The plugin allows you archive email and its attachments to the selected
OpenERP objects. You can select a partner, a task, a project, an analytical
account, or any other object and attach the selected mail as a .eml file in
the attachment of a selected record. You can create documents for CRM Lead,
HR Applicant and Project Issue from the selected emails.
This installs the module plugin_thunderbird."""),
'module_plugin_outlook': fields.boolean('Outlook Plugin',
help="""The Outlook plugin allows you to select an object that you would like to add
to your email and its attachments from MS Outlook. You can select a partner, a task,
a project, an analytical account, or any other object and archive a selected
email into an OpenERP mail message with attachments.
This installs the module plugin_outlook."""),
}
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

View File

@ -43,43 +43,5 @@
<field name="target">new</field>
</record>
<record id="base.view_sale_config_settings" model="ir.ui.view">
<field name="name">sale settings</field>
<field name="model">sale.config.settings</field>
<field name="type">form</field>
<field name="arch" type="xml">
<form string="Configure Sales" version="7.0">
<header>
<button string="Apply" type="object" name="execute"/>
<button string="Cancel" special="cancel"/>
</header>
<group>
<group name="config_sale" colspan="4"/>
<!-- this part is necessary to allow the plugins to extend the view -->
<field name="module_crm" invisible="1"/>
<group name="config_fetchmail" colspan="2" attrs="{'invisible': [('module_crm','=',False)]}">
<separator string="Emails"/>
</group>
<field name="module_plugin_thunderbird" attrs="{'invisible': [('module_crm','=',False)]}"/>
<newline/>
<field name="module_plugin_outlook" attrs="{'invisible': [('module_crm','=',False)]}"/>
<group name="config_crm" colspan="2"/>
</group>
</form>
</field>
</record>
<!-- Sale config wizard -->
<record id="base.action_sale_config" model="ir.actions.act_window">
<field name="name">Configure Sales</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">sale.config.settings</field>
<field name="view_id" ref="base.view_sale_config_settings"/>
<field name="view_mode">form</field>
<field name="target">inline</field>
</record>
</data>
</openerp>

View File

@ -28,13 +28,44 @@ class base_config_settings(osv.osv_memory):
'module_multi_company': fields.boolean('Multi Company',
help="""Work in multi-company environments, with appropriate security access between companies.
This installs the module multi_company."""),
'module_portal': fields.boolean('Portal',
help="""Define a portal for your customers or suppliers. The portal is a group of
external users that has specific access rights and rules.
This installs the module portal."""),
'module_share': fields.boolean('Share',
help="""Share OpenERP documents (records) with external users.
This installs the module share."""),
'module_portal': fields.boolean('Activate Customer Portal',
help="""The portal will give access to a series of documents for your customers; his quotations, his invoices, his projects, etc."""),
'module_share': fields.boolean('Allow Sharing Resources to External Users',
help="""As an example, you will be able to share a project or some tasks to your customers, or quotes/sales to several persons at your customer company, or your agenda availabilities to your contacts."""),
}
def open_company(self, cr, uid, ids, context=None):
user = self.pool.get('res.users').browse(cr, uid, uid, context)
return {
'type': 'ir.actions.act_window',
'name': 'Your Company',
'view_type': 'form',
'view_mode': 'form',
'res_model': 'res.company',
'res_id': user.company_id.id,
}
# Preferences wizard for Sales & CRM.
# It is defined here because it is inherited independently in modules sale, crm,
# plugin_outlook and plugin_thunderbird.
class sale_config_settings(osv.osv_memory):
_name = 'sale.config.settings'
_inherit = 'res.config.settings'
_columns = {
'module_crm': fields.boolean('CRM'),
'module_plugin_thunderbird': fields.boolean('Thunderbird Plugin',
help="""The plugin allows you archive email and its attachments to the selected
OpenERP objects. You can select a partner, or a lead and
attach the selected mail as a .eml file in
the attachment of a selected record. You can create documents for CRM Lead,
Partner from the selected emails.
This installs the module plugin_thunderbird."""),
'module_plugin_outlook': fields.boolean('Outlook Plugin',
help="""The Outlook plugin allows you to select an object that you would like to add
to your email and its attachments from MS Outlook. You can select a partner,
or a lead object and archive a selected
email into an OpenERP mail message with attachments.
This installs the module plugin_outlook."""),
}
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

View File

@ -8,24 +8,32 @@
<field name="arch" type="xml">
<form string="General Settings" version="7.0">
<header>
<button string="Apply" type="object" name="execute"/>
<button string="Apply" type="object" name="execute" class="oe_highlight_on_dirty"/>
<button string="Cancel" special="cancel"/>
</header>
<group>
<sheet>
<group string="Company Settings">
<field name="module_multi_company"/>
</group>
<group string="Others">
<label string="Outgoing Mail Servers"/>
<button type="action" name="%(base.action_ir_mail_server_list)d"
string="Configure" icon="gtk-execute"/>
<group>
<field name="module_multi_company"/>
</group>
<group>
<div>
You will also find several configuration options on your company data:
address for the header and footer, overdue payments texts, etc.
</div>
<button type="object" name="open_company" string="Configure Your Company Data" icon="gtk-execute"/>
</group>
</group>
<group string="External Accesses">
<field name="module_share"/>
<field name="module_portal"/>
</group>
</group>
<group string="Others">
<label for="id" string="Outgoing Mail Servers"/>
<button type="action" name="%(base.action_ir_mail_server_list)d"
string="Configure" icon="gtk-execute"/>
</group>
</sheet>
</form>
</field>
</record>
@ -39,5 +47,38 @@
<menuitem id="menu_general_configuration" parent="base.menu_config"
sequence="100" action="action_general_configuration"/>
<!-- Sale config wizard -->
<record id="view_sale_config_settings" model="ir.ui.view">
<field name="name">sale settings</field>
<field name="model">sale.config.settings</field>
<field name="type">form</field>
<field name="arch" type="xml">
<form string="Configure Sales" version="7.0">
<header>
<button string="Apply" type="object" name="execute" class="oe_highlight_on_dirty"/>
<button string="Cancel" special="cancel"/>
</header>
<sheet>
<field name="module_crm" invisible="1"/>
<group name="config_sale"/>
<group name="config_fetchmail" string="Emails" attrs="{'invisible': [('module_crm','=',False)]}">
<field name="module_plugin_thunderbird"/>
<field name="module_plugin_outlook"/>
</group>
<group name="config_crm"/>
</sheet>
</form>
</field>
</record>
<record id="action_sale_config" model="ir.actions.act_window">
<field name="name">Configure Sales</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">sale.config.settings</field>
<field name="view_id" ref="view_sale_config_settings"/>
<field name="view_mode">form</field>
<field name="target">inline</field>
</record>
</data>
</openerp>

View File

@ -26,7 +26,7 @@ class crm_configuration(osv.osv_memory):
_inherit = ['sale.config.settings', 'fetchmail.config.settings']
_columns = {
'fetchmail_lead': fields.boolean("Create Leads from Incoming Mails", readonly=True,
'fetchmail_lead': fields.boolean("Create Leads from Incoming Mails",
fetchmail_model='crm.lead', fetchmail_name='Incoming Leads',
help="""Allows you to configure your incoming mail server, and create leads from incoming emails."""),
'module_crm_caldav': fields.boolean("Caldav Synchronization",

View File

@ -6,30 +6,37 @@
<field name="name">crm settings</field>
<field name="model">sale.config.settings</field>
<field name="type">form</field>
<field name="inherit_id" ref="base.view_sale_config_settings"/>
<field name="inherit_id" ref="base_setup.view_sale_config_settings"/>
<field name="arch" type="xml">
<group name="config_fetchmail" position="after">
<field name="fetchmail_lead"/>
<button colspan="2" type="object" name="configure_fetchmail_lead" string="Configure" icon="gtk-execute"/>
<group name="config_fetchmail" version="7.0" position="inside">
<label for="fetchmail_lead"/>
<div>
<field name="fetchmail_lead"/>
<button name="configure_fetchmail_lead" type="object" string="Configure" icon="gtk-go-forward"
attrs="{'invisible': [('fetchmail_lead','=',False)]}"/>
</div>
</group>
<group name="config_crm" position="after">
<separator string="Import and Synchronize Data from an Other Application" colspan="4"/>
<field name="module_import_sugarcrm"/>
<field name="module_crm_caldav"/>
<field name="module_import_google"/>
<group string="Import and Synchronize Data from an Other Application">
<field name="module_import_sugarcrm"/>
<field name="module_crm_caldav"/>
<field name="module_import_google"/>
</group>
<separator string="Documents and Wiki" colspan="4"/>
<field name="module_wiki_sale_faq" />
<group string="Documents and Wiki">
<field name="module_wiki_sale_faq"/>
</group>
<separator string="Customer Form" colspan="4"/>
<field name="module_google_map"/>
<group string="Customer Form">
<field name="module_google_map"/>
</group>
</group>
</field>
</record>
<menuitem id="base.menu_sale_config" name="Sales" parent="base.menu_config"
sequence="1" action="base.action_sale_config"/>
sequence="1" action="base_setup.action_sale_config"/>
</data>
</openerp>

View File

@ -26,7 +26,7 @@ class crm_claim_settings(osv.osv_memory):
_inherit = ['sale.config.settings', 'fetchmail.config.settings']
_columns = {
'fetchmail_claim': fields.boolean("Create Claims from Incoming Mails", readonly=True,
'fetchmail_claim': fields.boolean("Create Claims from Incoming Mails",
fetchmail_model='crm.claim', fetchmail_name='Incoming Claims',
help="""Allows you to configure your incoming mail server, and create claims from incoming emails."""),
}

View File

@ -6,12 +6,16 @@
<field name="name">crm_claim settings</field>
<field name="model">sale.config.settings</field>
<field name="type">form</field>
<field name="inherit_id" ref="base.view_sale_config_settings"/>
<field name="priority" eval="12"/> <!-- to put fetchmail_lead before fetchmail_claim -->
<field name="inherit_id" ref="base_setup.view_sale_config_settings"/>
<field name="priority" eval="20"/> <!-- to put fetchmail_lead before fetchmail_claim -->
<field name="arch" type="xml">
<group name="config_fetchmail" position="after">
<field name="fetchmail_claim"/>
<button colspan="2" type="object" name="configure_fetchmail_claim" string="Configure" icon="gtk-execute"/>
<group name="config_fetchmail" version="7.0" position="inside">
<label for="fetchmail_claim"/>
<div>
<field name="fetchmail_claim"/>
<button colspan="2" type="object" name="configure_fetchmail_claim" string="Configure" icon="gtk-go-forward"
attrs="{'invisible': [('fetchmail_claim','=',False)]}"/>
</div>
</group>
</field>
</record>

View File

@ -32,7 +32,7 @@ class fetchmail_config_settings(osv.osv_memory):
_inherit = ['res.config.settings', 'fetchmail.config.settings']
_columns = {
'fetchmail_stuff': fields.boolean(..., readonly=True,
'fetchmail_stuff': fields.boolean(...,
fetchmail_model='my.stuff', fetchmail_name='Incoming Stuff'),
}
@ -67,6 +67,18 @@ class fetchmail_config_settings(osv.osv_memory):
res[f] = bool(server_ids)
return res
def set_fetchmail(self, cr, uid, ids, context=None):
""" deactivate fetchmail servers for all fields like 'fetchmail_XXX' that are False """
config = self.browse(cr, uid, ids[0], context)
fetchmail_fields = [f for f in self._columns if f.startswith('fetchmail_')]
# determine which models should not have active fetchmail servers, and
# deactivate all active servers for those models
models = [self._columns[f].fetchmail_model for f in fetchmail_fields if not config[f]]
if models:
fetchmail_server = self.pool.get('fetchmail.server')
server_ids = fetchmail_server.search(cr, uid, [('object_id.model', 'in', models), ('state', '=', 'done')])
fetchmail_server.set_draft(cr, uid, server_ids, context)
def configure_fetchmail(self, cr, uid, field, context=None):
""" open the form view of the fetchmail.server to configure """
action = {

View File

@ -31,7 +31,7 @@ class hr_config_settings(osv.osv_memory):
'module_hr_attendance': fields.boolean('Track Attendances',
help ="""This installs the module hr_attendance."""),
'module_hr_timesheet': fields.boolean('Manage Timesheets',
help ="""This installs the module hr_timesheet."""),
help ="""This installs the module hr_timesheet."""),
'module_hr_holidays': fields.boolean('Leaves & Holidays',
help ="""This installs the module hr_holidays."""),
'module_hr_expense': fields.boolean('Expenses',
@ -46,4 +46,16 @@ class hr_config_settings(osv.osv_memory):
help ="""This installs the module hr_payroll."""),
}
def onchange_hr_timesheet(self, cr, uid, ids, timesheet, context=None):
""" module_hr_timesheet implies module_hr_attendance """
if timesheet:
return {'value': {'module_hr_attendance': True}}
return {}
def onchange_hr_attendance(self, cr, uid, ids, attendance, context=None):
""" module_hr_timesheet implies module_hr_attendance """
if not attendance:
return {'value': {'module_hr_timesheet': False}}
return {}
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

View File

@ -16,28 +16,37 @@
<field name="arch" type="xml">
<form string="Configure Human Resources" version="7.0">
<header>
<button string="Apply" type="object" name="execute"/>
<button string="Apply" type="object" name="execute" class="oe_highlight_on_dirty"/>
<button string="Cancel" special="cancel"/>
</header>
<group col="4">
<separator string="Additional Features" colspan="4"/>
<field name="module_hr_expense"/>
<field name="module_hr_recruitment"/>
<field name="module_hr_evaluation"/>
<field name="module_hr_contract"/>
<field name="module_hr_holidays"/>
<newline/>
<field name="module_hr_payroll"/>
<button colspan="2" name="%(open_payroll_modules)d" type="action"
string="Install Country-Specific Payroll" icon="gtk-go-forward"/>
<separator string="Timesheets" colspan="4"/>
<field name="module_hr_attendance"/>
<field name="module_hr_timesheet"/>
<field name="module_hr_timesheet_sheet"/>
<group name="config_recruitment" colspan="4"/>
</group>
<sheet>
<group string="Additional Features">
<group>
<field name="module_hr_expense"/>
<field name="module_hr_evaluation"/>
<field name="module_hr_holidays"/>
</group>
<group>
<field name="module_hr_recruitment"/>
<field name="module_hr_contract"/>
<label for="module_hr_payroll"/>
<div>
<field name="module_hr_payroll"/>
<button name="%(open_payroll_modules)d" type="action"
string="Install Country-Specific Payroll" icon="gtk-go-forward"
attrs="{'invisible': [('module_hr_payroll','=',False)]}"/>
</div>
</group>
</group>
<group>
<group string="Timesheets">
<field name="module_hr_attendance" on_change="onchange_hr_attendance(module_hr_attendance)"/>
<field name="module_hr_timesheet" on_change="onchange_hr_timesheet(module_hr_timesheet)"/>
<field name="module_hr_timesheet_sheet"/>
</group>
<group name="config_recruitment"/>
</group>
</sheet>
</form>
</field>
</record>

View File

@ -25,5 +25,5 @@ class human_resources_configuration(osv.osv_memory):
_inherit = 'hr.config.settings'
_columns = {
'module_hr_payroll_account': fields.boolean('Manage Account Payroll',
help ="""This installs the module hr_payroll_account."""),
help ="""Create Journal Entries from Payslips"""),
}

View File

@ -7,9 +7,10 @@
<field name="type">form</field>
<field name="inherit_id" ref="hr.view_human_resources_configuration"/>
<field name="arch" type="xml">
<field name="module_hr_holidays" position="after">
<!-- put after the element <div><field name="module_hr_payroll" class="oe_inline"/> ...</div> -->
<xpath expr="//field[@name='module_hr_payroll']/.." position="after">
<field name="module_hr_payroll_account"/>
</field>
</xpath>
</field>
</record>
</data>

View File

@ -28,9 +28,9 @@ class hr_applicant_settings(osv.osv_memory):
_columns = {
'module_document_ftp': fields.boolean('Automatic Indexation of Resumes',
help="""Manage your CV's and motivation letter related to all applicants.
This installs the module document_ftp."""),
'fetchmail_applicants': fields.boolean('Create Applicants from Incoming Mails', readonly=True,
fetchmail_model='hr.applicant', fetchmail_name='Incoming HR Applications',
This installs the module document_ftp. This will install the knowledge management module in order to allow you to search using specific keywords through the content of all documents (PDF, .DOCx...)"""),
'fetchmail_applicants': fields.boolean('Create Applicants from Incoming Mails',
fetchmail_model='hr.applicant', fetchmail_name='Incoming HR Applications',
help ="""Allow applicants to send their job application to an email address (jobs@mycompany.com),
and create automatically application documents in the system."""),
}

View File

@ -7,12 +7,16 @@
<field name="type">form</field>
<field name="inherit_id" ref="hr.view_human_resources_configuration"/>
<field name="arch" type="xml">
<group name="config_recruitment" position="after">
<separator string="Recruitment" colspan="4"/>
<field name="module_document_ftp"/>
<newline/>
<field name="fetchmail_applicants"/>
<button colspan="2" type="object" name="configure_fetchmail_applicants" string="Configure" icon="gtk-execute"/>
<group name="config_recruitment" position="replace">
<group name="config_recruitment" string="Recruitment">
<field name="module_document_ftp"/>
<label for="fetchmail_applicants"/>
<div>
<field name="fetchmail_applicants"/>
<button name="configure_fetchmail_applicants" type="object" string="Configure" icon="gtk-go-forward"
attrs="{'invisible': [('fetchmail_applicants','=',False)]}"/>
</div>
</group>
</group>
</field>
</record>

View File

@ -8,9 +8,8 @@
<field name="inherit_id" ref="hr.view_human_resources_configuration"/>
<field name="arch" type="xml">
<field name="module_hr_timesheet_sheet" position="after">
<newline/>
<field name="timesheet_range" attrs="{'invisible':[('module_hr_timesheet_sheet','=',False)],'required': [('module_hr_timesheet_sheet','=',True)]}"/>
<field name="timesheet_max_difference" attrs="{'invisible':[('module_hr_timesheet_sheet','=',False)],'required': [('module_hr_timesheet_sheet','=',True)]}"/>
<field name="timesheet_range" attrs="{'invisible': [('module_hr_timesheet_sheet','=',False)], 'required': [('module_hr_timesheet_sheet','=',True)]}"/>
<field name="timesheet_max_difference" attrs="{'invisible': [('module_hr_timesheet_sheet','=',False)], 'required': [('module_hr_timesheet_sheet','=',True)]}"/>
</field>
</field>
</record>

View File

@ -8,21 +8,22 @@
<field name="arch" type="xml">
<form string="Configure Knowledge" version="7.0">
<header>
<button string="Apply" type="object" name="execute"/>
<button string="Apply" type="object" name="execute" class="oe_highlight_on_dirty"/>
<button string="Cancel" special="cancel"/>
</header>
<newline/>
<separator string="Wiki" colspan="4"/>
<field name="module_wiki_faq"/>
<newline/>
<field name="module_wiki_quality_manual"/>
<separator string="Documents" colspan="4"/>
<field name="module_document"/>
<newline/>
<field name="module_document_ftp"/>
<newline/>
<field name="module_document_webdav"/>
<sheet>
<group>
<group string="Wiki">
<field name="module_wiki_faq"/>
<field name="module_wiki_quality_manual"/>
</group>
<group string="Documents">
<field name="module_document"/>
<field name="module_document_ftp"/>
<field name="module_document_webdav"/>
</group>
</group>
</sheet>
</form>
</field>
</record>

View File

@ -8,10 +8,10 @@
<field name="arch" type="xml">
<form string="Configure Marketing" version="7.0">
<header>
<button string="Apply" type="object" name="execute"/>
<button string="Apply" type="object" name="execute" class="oe_highlight_on_dirty"/>
<button string="Cancel" special="cancel"/>
</header>
<group col="4" string="Campaigns">
<group string="Campaigns">
<field name="module_marketing_campaign"/>
<field name="module_marketing_campaign_crm_demo"/>
<field name="module_crm_profiling"/>

View File

@ -28,7 +28,7 @@ class mrp_config_settings(osv.osv_memory):
_inherit = 'res.config.settings'
_columns = {
'module_stock_planning': fields.boolean('Master Manufacturing Order Schedule',
'module_stock_planning': fields.boolean('Master Production Schedule',
help ="""This allows to create a manual procurement plan apart of the normal MRP scheduling,
which works automatically based on minimum stock rules.
This installs the module stock_planning."""),
@ -68,6 +68,13 @@ class mrp_config_settings(osv.osv_memory):
'group_mrp_properties': fields.boolean("Allow Several BoMs per Product",
implied_group='product.group_mrp_properties',
help="""The selection of the right Bill of Material to use will depend on the properties specified on the sale order and the Bill of Material."""),
'module_product_manufacturer': fields.boolean("Define Manufacturers on Products",
help="""This allows you to define the following for a product:
* Manufacturer
* Manufacturer Product Name
* Manufacturer Product Code
* Product Attributes.
This installs the module product_manufacturer."""),
}
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

View File

@ -8,24 +8,28 @@
<field name="arch" type="xml">
<form string="Configure Manufacturing" version="7.0">
<header>
<button string="Apply" type="object" name="execute"/>
<button string="Apply" type="object" name="execute" class="oe_highlight_on_dirty"/>
<button string="Cancel" special="cancel"/>
</header>
<newline/>
<group col="4" string="Manufacturing Order">
<field name="module_mrp_operations"/>
<field name="module_stock_planning"/>
<field name="module_mrp_subproduct"/>
<field name="module_mrp_repair"/>
</group>
<group string="Logistics" col="4">
<field name="module_mrp_jit"/>
<field name="module_stock_no_autopicking"/>
</group>
<group string="Bill Of Material" col="4">
<field name="group_mrp_routings"/>
<field name="group_mrp_properties"/>
</group>
<sheet>
<group string="Manufacturing Order">
<field name="module_mrp_operations"/>
<field name="module_stock_planning"/>
<field name="module_mrp_subproduct"/>
<field name="module_mrp_repair"/>
</group>
<group string="Logistics">
<field name="module_mrp_jit"/>
<field name="module_stock_no_autopicking"/>
</group>
<group string="Bill Of Material">
<field name="group_mrp_routings"/>
<field name="group_mrp_properties"/>
</group>
<group string="Products">
<field name="module_product_manufacturer"/>
</group>
</sheet>
</form>
</field>
</record>

View File

@ -22,29 +22,21 @@
from osv import fields
from osv import osv
import addons
import base64
class outlook_installer(osv.osv_memory):
_name = 'outlook.installer'
_inherit = 'res.config.installer'
_columns = {
'name':fields.char('Outlook Plug-in 32bits', size=64, readonly=True, help="outlook plug-in file. Save as this file and install this plug-in in outlook."),
'name2':fields.char('Outlook Plug-in 64bits', size=64, readonly=True, help="outlook plug-in file. Save as this file and install this plug-in in outlook."),
'description':fields.text('Description', readonly=True)
'plugin32': fields.char('Outlook Plug-in 32bits', size=256, readonly=True, help="Outlook plug-in file. Save this file and install it in Outlook."),
'plugin64': fields.char('Outlook Plug-in 64bits', size=256, readonly=True, help="Outlook plug-in file. Save this file and install it in Outlook."),
}
_defaults = {
'name' : '/plugin_outlook/static/openerp-outlook-plugin/OpenERPOutlookPluginSetup32.msi',
'name2' : '/plugin_outlook/static/openerp-outlook-plugin/OpenERPOutlookPluginSetup64.msi',
'description' : """
Click on icon next to the link above to download the installer either for 32 or 64 bits and execute it.
System requirements:
1. MS Outlook 2005 or above.
2. MS .Net Framework 3.5 or above.
"""
}
def default_get(self, cr, uid, fields, context=None):
res = super(outlook_installer, self).default_get(cr, uid, fields, context)
base_url = self.pool.get('ir.config_parameter').get_param(cr, uid, 'web.base.url')
res['plugin32'] = base_url + '/plugin_outlook/static/openerp-outlook-plugin/OpenERPOutlookPluginSetup32.msi'
res['plugin64'] = base_url + '/plugin_outlook/static/openerp-outlook-plugin/OpenERPOutlookPluginSetup64.msi'
return res
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

View File

@ -19,14 +19,18 @@
</xpath>
<xpath expr="//button[@string='Cancel']" position="replace">
</xpath>
<xpath expr="//separator[@string='title']" position="after">
<group colspan="8" height="450" width="750">
<field name="name" widget="url" colspan="4"/>
<field name="name2" widget="url" colspan="4"/>
<newline/>
<separator string="Installation and Configuration Steps" colspan="4"/>
<field name="description" nolabel="1" colspan="8"/>
<xpath expr="//separator[@string='title']" position="after" version="7.0">
<group>
<field name="plugin32" widget="url"/>
<field name="plugin64" widget="url"/>
</group>
<separator string="Installation and Configuration Steps"/>
<p>Click on the link above to download the installer for either 32 or 64 bits, and execute it.</p>
<p>System requirements:</p>
<ul>
<li>1. MS Outlook 2005 or above.</li>
<li>2. MS .Net Framework 3.5 or above.</li>
</ul>
</xpath>
<separator string="title" position="attributes">
<attribute name="string">Install Outlook Plug-In</attribute>
@ -50,13 +54,15 @@
<field name="name">Sales Application</field>
<field name="model">sale.config.settings</field>
<field name="type">form</field>
<field name="inherit_id" ref="base.view_sale_config_settings"/>
<field name="inherit_id" ref="base_setup.view_sale_config_settings"/>
<field name="arch" type="xml">
<field name="module_plugin_outlook" position="after">
<group colspan="2" attrs="{'invisible': [('module_crm','=',False)]}">
<button name="%(action_outlook_installer)d" type="action"
string="Configure Outlook Plugin" icon="gtk-execute"/>
</group>
<field name="module_plugin_outlook" version="7.0" position="replace">
<label for="module_plugin_outlook"/>
<div>
<field name="module_plugin_outlook"/>
<button name="%(action_outlook_installer)d" type="action" string="Configure" icon="gtk-execute"
attrs="{'invisible': [('module_plugin_outlook','=',False)]}"/>
</div>
</field>
</field>
</record>

View File

@ -27,28 +27,22 @@ class plugin_thunderbird_installer(osv.osv_memory):
_inherit = 'res.config.installer'
_columns = {
'name':fields.char('File name', size=34),
'pdf_name':fields.char('File name', size=64),
'thunderbird':fields.boolean('Thunderbird Plug-in', help="Allows you to select an object that you would like to add to your email and its attachments."),
'plugin_file':fields.char('Thunderbird Plug-in', size=256, readonly=True, help="Thunderbird plug-in file. Save as this file and install this plug-in in thunderbird."),
'pdf_file':fields.char('Installation Manual', size=264, help="The documentation file :- how to install Thunderbird Plug-in.", readonly=True),
'description':fields.text('Description', readonly=True)
'thunderbird': fields.boolean('Thunderbird Plug-in', help="Allows you to select an object that you would like to add to your email and its attachments."),
'plugin_name': fields.char('File name', size=64),
'plugin_file': fields.char('Thunderbird Plug-in', size=256, readonly=True, help="Thunderbird plug-in file. Save this file and install it in Thunderbird."),
'pdf_file': fields.char('Installation Manual', size=256, help="The documentation file :- how to install Thunderbird Plug-in.", readonly=True),
}
_defaults = {
'thunderbird' : True,
'name' : 'openerp_plugin.xpi',
'pdf_file' : 'http://doc.openerp.com/book/2/2_6_Comms/2_6_Comms_thunderbird.html',
'plugin_file' : '/plugin_thunderbird/static/openerp_plugin.xpi',
'description' : """
Thunderbird plugin installation:
1. Save the Thunderbird plug-in.
2. From the Thunderbird menubar: Tools ­> Add-ons -> Screwdriver/Wrench Icon -> Install add-on from file...
4. Select the plug-in (the file named openerp_plugin.xpi).
5. Click "Install Now".
6. Restart Thunderbird.
7. From the Thunderbird menubar: OpenERP -> Configuration.
8. Configure your openerp server.
"""
'thunderbird': True,
'plugin_name': 'openerp_plugin.xpi',
'pdf_file': 'http://doc.openerp.com/book/2/2_6_Comms/2_6_Comms_thunderbird.html',
}
def default_get(self, cr, uid, fields, context=None):
res = super(plugin_thunderbird_installer, self).default_get(cr, uid, fields, context)
base_url = self.pool.get('ir.config_parameter').get_param(cr, uid, 'web.base.url')
res['plugin_file'] = base_url + '/plugin_thunderbird/static/openerp_plugin.xpi'
return res
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

View File

@ -19,18 +19,23 @@
</xpath>
<xpath expr="//button[@string='Cancel']" position="replace"></xpath>
<xpath expr="//separator[@string='title']" position="after">
<group colspan="8" height="450" width="750">
<group>
<field name="thunderbird" invisible="1"/>
<field name="name" invisible="1"/>
<field name="pdf_name" invisible="1"/>
<newline/>
<field name="plugin_file" filename="name" widget="url"/>
<newline/>
<field name="pdf_file" filename="pdf_name" widget="url"/>
<newline/>
<separator string="Installation and Configuration Steps" colspan="4"/>
<field name="description" nolabel="1" colspan="8"/>
<field name="plugin_name" invisible="1"/>
<field name="plugin_file" filename="plugin_name" widget="url"/>
<field name="pdf_file" widget="url"/>
</group>
<separator string="Installation and Configuration Steps"/>
<p>Thunderbird plugin installation:</p>
<ul>
<li>1. Save the Thunderbird plug-in.</li>
<li>2. From the Thunderbird menubar: Tools ­> Add-ons -> Screwdriver/Wrench Icon -> Install add-on from file...</li>
<li>3. Select the plug-in (the file named openerp_plugin.xpi).</li>
<li>4. Click "Install Now".</li>
<li>5. Restart Thunderbird.</li>
<li>6. From the Thunderbird menubar: OpenERP -> Configuration.</li>
<li>7. Configure your openerp server.</li>
</ul>
</xpath>
<separator string="title" position="attributes">
<attribute name="string">Install Thunderbird Plug-In</attribute>
@ -48,19 +53,21 @@
<field name="view_mode">form</field>
<field name="target">new</field>
</record>
<!-- Sales Configuration -->
<record id="view_config_thunderbird_installer" model="ir.ui.view">
<field name="name">Sales Application</field>
<field name="model">sale.config.settings</field>
<field name="type">form</field>
<field name="inherit_id" ref="base.view_sale_config_settings"/>
<field name="inherit_id" ref="base_setup.view_sale_config_settings"/>
<field name="arch" type="xml">
<field name="module_plugin_thunderbird" position="after">
<group colspan="2" attrs="{'invisible': [('module_crm','=',False)]}">
<button name="%(action_thunderbird_installer)d" type="action"
string="Configure Thunderbird Plugin" icon="gtk-execute"/>
</group>
<field name="module_plugin_thunderbird" version="7.0" position="replace">
<label for="module_plugin_thunderbird"/>
<div>
<field name="module_plugin_thunderbird"/>
<button name="%(action_thunderbird_installer)d" type="action" string="Configure" icon="gtk-execute"
attrs="{'invisible': [('module_plugin_thunderbird','=',False)]}"/>
</div>
</field>
</field>
</record>

View File

@ -748,9 +748,9 @@
<field name="inherit_id" ref="base.view_company_form"/>
<field name="arch" type="xml">
<page string="Configuration" position="inside">
<separator string="Project Management" colspan="4"/>
<field name="project_time_mode_id" domain="[('category_id','=','Working Time')]"/>
<newline/>
<group string="Project Management">
<field name="project_time_mode_id" domain="[('category_id','=','Working Time')]"/>
</group>
</page>
</field>
</record>

View File

@ -20,6 +20,7 @@
##############################################################################
from osv import osv, fields
from tools.translate import _
class project_configuration(osv.osv_memory):
_name = 'project.config.settings'
@ -46,6 +47,8 @@ class project_configuration(osv.osv_memory):
'module_project_issue': fields.boolean("Issues and Bug Tracking",
help="""Provides management of issues/bugs in projects.
This installs the module project_issue."""),
'time_unit': fields.many2one('product.uom', 'Working Time Unit', required=True,
help="""This will set the unit of measure used in projects and tasks."""),
'module_project_issue_sheet': fields.boolean("Track and Invoice Issues Working Time",
help="""Provides timesheet support for the issues/bugs management in project.
This installs the module project_issue_sheet."""),
@ -55,9 +58,18 @@ class project_configuration(osv.osv_memory):
'group_time_work_estimation_tasks': fields.boolean("Time Estimation on Tasks",
implied_group='project.group_time_work_estimation_tasks',
help="Allows you to compute Time Estimation on tasks."),
'group_manage_delegation_task': fields.boolean("Manage Taks Delegation",
'group_manage_delegation_task': fields.boolean("Manage Task Delegation",
implied_group='project.group_delegate_task',
help="Allows you to delegate tasks to other users."),
help="Allows you to delegate tasks to other users."),
}
def get_default_time_unit(self, cr, uid, fields, context=None):
user = self.pool.get('res.users').browse(cr, uid, uid, context=context)
return {'time_unit': user.company_id.project_time_mode_id.id}
def set_time_unit(self, cr, uid, ids, context=None):
config = self.browse(cr, uid, ids[0], context)
user = self.pool.get('res.users').browse(cr, uid, uid, context)
user.company_id.write({'project_time_mode_id': config.time_unit.id})
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

View File

@ -1,6 +1,5 @@
<openerp>
<data>
<record id="view_config_settings" model="ir.ui.view">
<field name="name">project settings</field>
<field name="model">project.config.settings</field>
@ -9,26 +8,31 @@
<field name="arch" type="xml">
<form string="Configure Project" version="7.0">
<header>
<button string="Apply" type="object" name="execute"/>
<button string="Apply" type="object" name="execute" class="oe_highlight_on_dirty"/>
<button string="Cancel" special="cancel"/>
</header>
<group col="4">
<separator string="Project" colspan="4"/>
<field name="module_project_mrp"/>
<field name="module_project_timesheet"/>
<field name="module_pad"/>
<field name="group_tasks_work_on_tasks"/>
<field name="group_time_work_estimation_tasks"/>
<field name="group_manage_delegation_task"/>
<separator string="Planning" colspan="4"/>
<field name="module_project_long_term"/>
<separator string="Helpdesk and Support" colspan="4"/>
<field name="module_project_issue"/>
<field name="module_project_issue_sheet"/>
<group name="support" colspan="4"/>
</group>
<sheet>
<group string="Project">
<group>
<field name="module_project_mrp"/>
<field name="module_project_timesheet"/>
<field name="module_pad"/>
</group>
<group>
<field name="group_tasks_work_on_tasks"/>
<field name="group_time_work_estimation_tasks"/>
<field name="group_manage_delegation_task"/>
<field name="time_unit" domain="[('category_id.name','=','Working Time')]"/>
</group>
</group>
<group string="Planning">
<field name="module_project_long_term"/>
</group>
<group string="Helpdesk and Support" name="support">
<field name="module_project_issue"/>
<field name="module_project_issue_sheet"/>
</group>
</sheet>
</form>
</field>
</record>

View File

@ -26,7 +26,7 @@ class project_issue_settings(osv.osv_memory):
_inherit = ['project.config.settings', 'fetchmail.config.settings']
_columns = {
'fetchmail_issue': fields.boolean("Create Issues from Incoming Mails", readonly=True,
'fetchmail_issue': fields.boolean("Create Issues from Incoming Mails",
fetchmail_model='project.issue', fetchmail_name='Incoming Issues',
help="""Allows you to configure your incoming mail server, and create issues from incoming emails."""),
}

View File

@ -8,9 +8,13 @@
<field name="type">form</field>
<field name="inherit_id" ref="project.view_config_settings"/>
<field name="arch" type="xml">
<group name="support" position="after">
<field name="fetchmail_issue"/>
<button colspan="2" type="object" name="configure_fetchmail_issue" string="Configure" icon="gtk-execute"/>
<group name="support" position="inside">
<label for="fetchmail_issue"/>
<div>
<field name="fetchmail_issue"/>
<button name="configure_fetchmail_issue" type="object" string="Configure" icon="gtk-go-forward"
attrs="{'invisible': [('fetchmail_issue','=',False)]}"/>
</div>
</group>
</field>
</record>

View File

@ -32,7 +32,7 @@ class purchase_config_settings(osv.osv_memory):
[('manual', 'Based on Purchase Order Lines'),
('picking', 'Based on Receptions'),
('order', 'Pre-Generate Draft Invoices based on Purchase Orders'),
], 'Invoicing Method', required=True, default_model='purchase.order'),
], 'Default Invoicing Control Method', required=True, default_model='purchase.order'),
'group_purchase_pricelist':fields.boolean("Pricelist per Supplier",
implied_group='product.group_purchase_pricelist',
help="""Allows to manage different prices based on rules per category of Supplier.
@ -48,24 +48,18 @@ class purchase_config_settings(osv.osv_memory):
lines on a purchase order between several accounts and analytic plans.
This installs the module purchase_analytic_plans."""),
'module_warning': fields.boolean("Alerts by Products or Supplier",
help="""Allow to configure warnings on products and trigger them when a user wants to purchase a given product or a given supplier.
help="""Allow to configure warnings on products and trigger them when a user wants to purchase a given product or a given supplier.
Example: Product: this product is deprecated, do not purchase more than 5.
Supplier: don't forget to ask for an express delivery."""),
'module_product_manufacturer': fields.boolean("Define Manufacturers on Products",
help="""This allows you to define the following for a product:
* Manufacturer
* Manufacturer Product Name
* Manufacturer Product Code
* Product Attributes.
This installs the module product_manufacturer."""),
'module_purchase_double_validation': fields.boolean("Two Levels of Approval",
help="""Provide a double validation mechanism for purchases exceeding minimum amount.
This installs the module purchase_double_validation."""),
'module_purchase_requisition': fields.boolean("Use Purchase Requisition",
help="""Purchase Requisitions are used when you want to request quotations from several suppliers for a given set of products.
You can configure per product if you directly do a Request for Quotation
'module_purchase_requisition': fields.boolean("Manage Purchase Requisitions",
help="""Purchase Requisitions are used when you want to request quotations from several suppliers for a given set of products.
You can configure per product if you directly do a Request for Quotation
to one supplier or if you want a purchase requisition to negotiate with several suppliers."""),
'decimal_precision': fields.integer('Decimal Precision on Price'),
'decimal_precision': fields.integer('Decimal Precision on Price',help="As an example, a decimal precision of 2 will allow prices like: 9.99 EUR, whereas a decimal precision of 4 will allow prices like: 0.0231 EUR per unit."),
}
_defaults = {
@ -87,10 +81,14 @@ class account_config_settings(osv.osv_memory):
_inherit = 'account.config.settings'
_columns = {
'module_purchase_analytic_plans': fields.boolean('Several Analytic Accounts on Purchases',
help="""This allows install module purchase_analytic_plans."""),
help="""This allows install module purchase_analytic_plans."""),
'group_analytic_account_for_purchases': fields.boolean('Analytic Accounting for Purchases',
implied_group='purchase.group_analytic_accounting',
help="Allows you to specify an analytic account on purchase orders."),
}
def onchange_purchase_analytic_plans(self, cr, uid, ids, module_purchase_analytic_plans, context=None):
""" change group_analytic_account_for_purchases following module_purchase_analytic_plans """
return {'value': {'group_analytic_account_for_purchases': module_purchase_analytic_plans}}
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

View File

@ -8,26 +8,28 @@
<field name="arch" type="xml">
<form string="Configure Purchases" version="7.0">
<header>
<button string="Apply" type="object" name="execute"/>
<button string="Apply" type="object" name="execute" class="oe_highlight_on_dirty"/>
<button string="Cancel" special="cancel"/>
</header>
<group col="4">
<separator string="Invoicing" colspan="4"/>
<field name="default_invoice_method"/>
<field name="decimal_precision"/>
<separator string="Purchase Order" colspan="4"/>
<field name="group_purchase_pricelist"/>
<field name="group_uom"/>
<field name="group_purchase_delivery_address"/>
<field name="module_purchase_double_validation"/>
<field name="module_purchase_requisition"/>
<field name="module_warning"/>
<field name="module_purchase_analytic_plans"/>
<separator string="Products" colspan="4"/>
<field name="module_product_manufacturer"/>
</group>
<sheet>
<group string="Invoicing">
<field name="default_invoice_method"/>
<field name="decimal_precision"/>
</group>
<group string="Purchase Order">
<group>
<field name="group_purchase_pricelist"/>
<field name="group_uom"/>
<field name="group_purchase_delivery_address"/>
</group>
<group>
<field name="module_purchase_double_validation"/>
<field name="module_purchase_requisition"/>
<field name="module_warning"/>
<field name="module_purchase_analytic_plans"/>
</group>
</group>
</sheet>
</form>
</field>
</record>
@ -55,7 +57,7 @@
</group>
<group name="analytic_accounting" position="inside">
<field name="group_analytic_account_for_purchases"/>
<field name="module_purchase_analytic_plans"/>
<field name="module_purchase_analytic_plans" on_change="onchange_purchase_analytic_plans(module_purchase_analytic_plans)"/>
</group>
</field>
</record>

View File

@ -24,7 +24,7 @@ from osv import fields, osv
class purchase_config_settings(osv.osv_memory):
_inherit = 'purchase.config.settings'
_columns = {
'limit_amount': fields.integer('Double Validation Limit',required=True,
'limit_amount': fields.integer('Limit to Require a Second Approval',required=True,
help="Amount after which validation of purchase is required."),
}

View File

@ -27,7 +27,7 @@ class sale_configuration(osv.osv_memory):
_inherit = 'sale.config.settings'
_columns = {
'group_invoice_so_lines': fields.boolean('Based on Sales Orders',
'group_invoice_so_lines': fields.boolean('Based on Sale Orders',
implied_group='sale.group_invoice_so_lines',
help="To allow your salesman to make invoices for sale order lines using the menu 'Lines to Invoice'."),
'group_invoice_deli_orders': fields.boolean('Based on Delivery Orders',
@ -44,24 +44,24 @@ class sale_configuration(osv.osv_memory):
This installs the module account_analytic_analysis."""),
'module_account_analytic_analysis': fields.boolean('Manage Customer Contracts',
help = """Allows to define your customer contracts conditions: invoicing
method (fixed price, on timesheet, advance invoice), the exact pricing
(650/day for a developer), the duration (one year support contract).
You will be able to follow the progress of the contract and invoice automatically.
method (fixed price, on timesheet, advance invoice), the exact pricing
(650/day for a developer), the duration (one year support contract).
You will be able to follow the progress of the contract and invoice automatically.
It installs the account_analytic_analysis module."""),
'default_order_policy': fields.selection(
[('manual', 'Invoice Based on Sales Orders'), ('picking', 'Invoice Based on Deliveries')],
'Default Method', default_model='sale.order',
help="You can generate invoices based on sales orders or based on shippings."),
'module_delivery': fields.boolean('Charge Shipping Cost',
'module_delivery': fields.boolean('Allow Charging Shipping Costs',
help ="""Allows you to add delivery methods in sale orders and delivery orders.
You can define your own carrier and delivery grids for prices.
This installs the module delivery."""),
'time_unit': fields.many2one('product.uom', 'Working Time Unit'),
'default_picking_policy' : fields.boolean("Deliver all Products at Once",
help = "You can set picking policy on sale order that will allow you to deliver all products at once."),
'default_picking_policy' : fields.boolean("Configurable Shipping Policy",
help = "You will be able to configure, per sale order, if you deliver all products at once or if you deliver each product when it is available. This may have an impact on the shipping price."),
'group_sale_pricelist':fields.boolean("Pricelist per Customer",
implied_group='product.group_sale_pricelist',
help="""Allows to manage different prices based on rules per category of customers.
help="""Allows to manage different prices based on rules per category of customers.
Example: 10% for retailers, promotion of 5 EUR on this product, etc."""),
'group_uom':fields.boolean("Allow Different Units of Measure",
implied_group='product.group_uom',
@ -74,12 +74,12 @@ class sale_configuration(osv.osv_memory):
help="Allows you to apply some discount per sale order line."),
'group_multiple_shops': fields.boolean("Manage Multiple Shops",
implied_group='stock.group_locations',
help="This allows to configure and use multiple shops."),
help="This allows to configure and use multiple shops."),
'module_sale_layout': fields.boolean("Notes & Subtotals per Line",
help="""Allows to format sale order lines using notes, separators, titles and subtotals.
This installs the module sale_layout."""),
'module_warning': fields.boolean("Alerts by Products or Customers",
help="""Allow to configure warnings on products and trigger them when a user wants to sale a given product or a given customer.
help="""Allow to configure warnings on products and trigger them when a user wants to sale a given product or a given customer.
Example: Product: this product is deprecated, do not purchase more than 5.
Supplier: don't forget to ask for an express delivery."""),
'module_sale_margin': fields.boolean("Display Margins on Sale Orders",
@ -101,8 +101,17 @@ class sale_configuration(osv.osv_memory):
'module_project_timesheet': fields.boolean("Project Timesheet"),
'module_project_mrp': fields.boolean("Project MRP"),
'module_project': fields.boolean("Project"),
'decimal_precision': fields.integer('Decimal Precision on Price'),
'decimal_precision': fields.integer('Decimal Precision on Price',help="As an example, a decimal precision of 2 will allow prices like: 9.99 EUR, whereas a decimal precision of 4 will allow prices like: 0.0231 EUR per unit."),
}
def _check_decimal(self, cr, uid, ids, context=None):
for decimal in self.browse(cr, uid, ids, context=context):
if decimal.decimal_precision > 20:
return False
return True
_constraints = [
(_check_decimal, 'Digits must be between 0 to 20 ', ['decimal_precision']),
]
def default_get(self, cr, uid, fields, context=None):
ir_model_data = self.pool.get('ir.model.data')
@ -185,10 +194,14 @@ class account_config_settings(osv.osv_memory):
_inherit = 'account.config.settings'
_columns = {
'module_sale_analytic_plans': fields.boolean('Several Analytic Accounts on Sales',
help="""This allows install module sale_analytic_plans."""),
help="""This allows install module sale_analytic_plans."""),
'group_analytic_account_for_sales': fields.boolean('Analytic Accounting for Sales',
implied_group='sale.group_analytic_accounting',
help="Allows you to specify an analytic account on sale orders."),
}
def onchange_sale_analytic_plans(self, cr, uid, ids, module_sale_analytic_plans, context=None):
""" change group_analytic_account_for_sales following module_sale_analytic_plans """
return {'value': {'group_analytic_account_for_sales': module_sale_analytic_plans}}
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

View File

@ -6,47 +6,55 @@
<field name="name">sale settings</field>
<field name="model">sale.config.settings</field>
<field name="type">form</field>
<field name="inherit_id" ref="base.view_sale_config_settings"/>
<field name="inherit_id" ref="base_setup.view_sale_config_settings"/>
<field name="arch" type="xml">
<group name="config_sale" position="after">
<separator string="Invoicing Policy" colspan="4"/>
<field name="module_project_timesheet" invisible="1"/>
<field name="module_project_mrp" invisible="1"/>
<field name="group_invoice_so_lines" on_change="onchange_invoice_methods(group_invoice_so_lines, group_invoice_deli_orders)"/>
<field name="default_order_policy" attrs="{'invisible':['|',('group_invoice_so_lines','=',False),('group_invoice_deli_orders','=',False)],'required': ['|',('group_invoice_so_lines','=',True),('group_invoice_deli_orders','=',True)]}"/>
<newline/>
<field name="group_invoice_deli_orders" on_change="onchange_invoice_methods(group_invoice_so_lines, group_invoice_deli_orders)"/>
<field name="module_delivery" attrs="{'invisible':[('group_invoice_so_lines','=',False), ('group_invoice_deli_orders','=',False)]}"/>
<newline/>
<field name="task_work" on_change="onchange_task_work(task_work)"/>
<newline/>
<field name="timesheet" on_change="onchange_timesheet(timesheet)"/>
<field name="time_unit" domain="[('category_id.name','=','Working Time')]"
attrs="{'invisible': [('task_work','=',False), ('module_account_analytic_analysis','=',False)],'required': ['|', ('task_work','=',True), ('module_account_analytic_analysis','=',True)]}"/>
<group string="Invoicing Policy">
<group>
<field name="group_invoice_so_lines" on_change="onchange_invoice_methods(group_invoice_so_lines, group_invoice_deli_orders)"/>
<field name="group_invoice_deli_orders" on_change="onchange_invoice_methods(group_invoice_so_lines, group_invoice_deli_orders)"/>
<field name="task_work" on_change="onchange_task_work(task_work)"/>
<field name="timesheet" on_change="onchange_timesheet(timesheet)"/>
</group>
<group>
<field name="default_order_policy" attrs="{'invisible':['|',('group_invoice_so_lines','=',False),('group_invoice_deli_orders','=',False)],'required': ['|',('group_invoice_so_lines','=',True),('group_invoice_deli_orders','=',True)]}"/>
<field name="module_delivery" attrs="{'invisible':[('group_invoice_so_lines','=',False), ('group_invoice_deli_orders','=',False)]}"/>
<field name="time_unit" domain="[('category_id.name','=','Working Time')]"
attrs="{'invisible': [('task_work','=',False), ('module_account_analytic_analysis','=',False)],'required': ['|', ('task_work','=',True), ('module_account_analytic_analysis','=',True)]}"/>
</group>
</group>
<separator string="Sale Order" colspan="4"/>
<field name="group_sale_pricelist"/>
<field name="group_uom"/>
<field name="group_sale_delivery_address"/>
<field name="group_discount_per_so_line"/>
<field name="module_sale_margin"/>
<field name="module_sale_layout"/>
<field name="module_warning"/>
<field name="module_sale_journal"/>
<field name="group_multiple_shops"/>
<field name="decimal_precision"/>
<field name="default_picking_policy" attrs="{'invisible':[('group_invoice_deli_orders','=',False)]}"/>
<group string="Sale Order">
<group>
<field name="group_uom"/>
<field name="group_sale_delivery_address"/>
<field name="group_sale_pricelist"/>
<field name="group_multiple_shops"/>
<field name="module_warning"/>
<field name="decimal_precision"/>
</group>
<group>
<field name="default_picking_policy" attrs="{'invisible':[('group_invoice_deli_orders','=',False)]}"/>
<field name="group_discount_per_so_line"/>
<field name="module_sale_margin"/>
<field name="module_sale_layout"/>
<field name="module_sale_journal"/>
</group>
</group>
<separator string="Contracts" colspan="4"/>
<field name="module_account_analytic_analysis" on_change="onchange_timesheet(module_account_analytic_analysis)"/>
<field name="module_analytic_user_function" attrs="{'invisible':[('module_account_analytic_analysis','=',False)]}"/>
<field name="module_analytic_journal_billing_rate" attrs="{'invisible':[('module_account_analytic_analysis','=',False)]}"/>
<group string="Contracts">
<field name="module_account_analytic_analysis" on_change="onchange_timesheet(module_account_analytic_analysis)"/>
<field name="module_analytic_user_function" attrs="{'invisible':[('module_account_analytic_analysis','=',False)]}"/>
<field name="module_analytic_journal_billing_rate" attrs="{'invisible':[('module_account_analytic_analysis','=',False)]}"/>
</group>
</group>
</field>
</record>
<menuitem id="base.menu_sale_config" name="Sales" parent="base.menu_config"
sequence="1" action="base.action_sale_config"/>
sequence="1" action="base_setup.action_sale_config"/>
<record id="view_account_config" model="ir.ui.view">
<field name="name">account settings</field>
@ -60,7 +68,7 @@
</group>
<group name="analytic_accounting" position="inside">
<field name="group_analytic_account_for_sales"/>
<field name="module_sale_analytic_plans"/>
<field name="module_sale_analytic_plans" on_change="onchange_sale_analytic_plans(module_sale_analytic_plans)"/>
</group>
</field>
</record>

View File

@ -65,15 +65,15 @@ class stock_config_settings(osv.osv_memory):
help="""Allows you to get the upstream or downstream traceability of the products contained in lot."""),
'group_stock_inventory_valuation': fields.boolean("Generate Accounting Entries per Stock Movement",
implied_group='stock.group_inventory_valuation',
help="""This allows to split stock inventory lines according to serial numbers."""),
help="""Allows to configure inventory valuations on products and product categories."""),
'group_stock_multiple_locations': fields.boolean("Manage Multiple Locations and Warehouses",
implied_group='stock.group_locations',
help="""This allows to configure and use multiple stock locations and warehouses,
instead of having a single default one."""),
'group_product_variant': fields.boolean("Product Variant",
'group_product_variant': fields.boolean("Support Multiple Variants per Product",
implied_group='product.group_product_variant',
help="""This allows to configure and use Product Variant."""),
'decimal_precision': fields.integer('Decimal Precision on Weight'),
help="""Allow to manage several variants per product. As an example, if you sell T-Shirts, for the same "Linux T-Shirt", you may have variants on sizes or colors; S, M, L, XL, XXL."""),
'decimal_precision': fields.integer('Decimal Precision on Weights', help="As an example, a decimal precision of 2 will allow weights like: 9.99 kg, whereas a decimal precision of 4 will allow weights like: 0.0231 kg."),
}
def get_default_dp(self, cr, uid, fields, context=None):

View File

@ -9,33 +9,41 @@
<field name="arch" type="xml">
<form string="Configure Warehouse" version="7.0">
<header>
<button string="Apply" type="object" name="execute"/>
<button string="Apply" type="object" name="execute" class="oe_highlight_on_dirty"/>
<button string="Cancel" special="cancel"/>
</header>
<group col="4">
<separator string="Traceability" colspan="4"/>
<field name="group_stock_production_lot"/>
<field name="module_product_expiry"
attrs="{'invisible': [('group_stock_production_lot','=',False)]}"/>
<newline/>
<field name="group_stock_tracking_lot"/>
<separator string="Logistics" colspan="4"/>
<field name="group_stock_multiple_locations"/>
<field name="module_stock_location"/>
<field name="module_stock_invoice_directly"/>
<field name="decimal_precision"/>
<separator string="Products" colspan="4"/>
<field name="group_stock_packaging"/>
<field name="group_stock_inventory_valuation"/>
<field name="group_uom"/>
<field name="group_uos"/>
<field name="group_product_variant"/>
<separator string="Partners" colspan="4"/>
<field name="module_claim_from_delivery"/>
</group>
<sheet>
<group string="Traceability">
<field name="group_stock_production_lot"/>
<field name="group_stock_tracking_lot"/>
<field name="module_product_expiry"
attrs="{'invisible': [('group_stock_production_lot','=',False)]}"/>
</group>
<group string="Logistics">
<group>
<field name="group_stock_multiple_locations"/>
<field name="module_stock_invoice_directly"/>
</group>
<group>
<field name="module_stock_location"/>
<field name="decimal_precision"/>
</group>
</group>
<group string="Products">
<group>
<field name="group_stock_packaging"/>
<field name="group_uom"/>
<field name="group_uos"/>
</group>
<group>
<field name="group_stock_inventory_valuation"/>
<field name="group_product_variant"/>
</group>
</group>
<group string="Partners">
<field name="module_claim_from_delivery"/>
</group>
</sheet>
</form>
</field>
</record>