[IMP] enterprise settings

This commit is contained in:
Antony Lesuisse
2015-10-01 09:06:33 +02:00
parent bb439b718c
commit ed1bbbb8d0
26 changed files with 226 additions and 75 deletions
+38 -9
View File
@@ -72,6 +72,16 @@ class AccountConfigSettings(models.TransientModel):
module_account_accountant = fields.Boolean(string='Full accounting features: journals, legal statements, chart of accounts, etc.',
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_reports = fields.Boolean("Use dynamic reports for the accounting")
group_multi_currency = fields.Boolean(string='Allow multi currencies',
implied_group='base.group_multi_currency',
help="Allows you multi currency environment")
group_analytic_accounting = fields.Boolean(string='Analytic accounting',
implied_group='analytic.group_analytic_accounting',
help="Allows you to use the analytic accounting.")
currency_exchange_journal_id = fields.Many2one('account.journal',
related='company_id.currency_exchange_journal_id',
string="Rate Difference Journal",)
module_account_asset = fields.Boolean(string='Assets management & Revenue recognition',
help='Asset management: 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.\n\n'
@@ -86,20 +96,39 @@ class AccountConfigSettings(models.TransientModel):
'-This installs the module account_budget.')
module_account_tax_cash_basis = fields.Boolean(string="Allow Tax Cash Basis",
help='Generate tax cash basis entrie when reconciliating entries')
group_proforma_invoices = fields.Boolean(string='Allow pro-forma invoices',
implied_group='account.group_proforma_invoices',
help="Allows you to put invoices in pro-forma state.")
module_account_reports_followup = fields.Boolean("Enable payment followup management",
help='This allows to automate letters for unpaid invoices, with multi-level recalls.\n'
'-This installs the module account_reports_followup.')
default_sale_tax_id = fields.Many2one('account.tax', string="Default Sale Tax", help="This sale tax will be assigned by default on new products.", oldname="default_sale_tax")
default_purchase_tax_id = fields.Many2one('account.tax', string="Default Purchase Tax", help="This purchase tax will be assigned by default on new products.", oldname="default_purchase_tax")
group_multi_currency = fields.Boolean(string='Allow multi currencies',
implied_group='base.group_multi_currency',
help="Allows you multi currency environment")
group_analytic_accounting = fields.Boolean(string='Analytic accounting',
implied_group='analytic.group_analytic_accounting',
help="Allows you to use the analytic accounting.")
currency_exchange_journal_id = fields.Many2one('account.journal',
related='company_id.currency_exchange_journal_id',
string="Rate Difference Journal",)
module_l10n_us_check_printing = fields.Boolean("Allow check printing and deposits")
module_account_batch_deposit = fields.Boolean(string='Use batch deposit',
help='This allows you to group received checks before you deposit them to the bank.\n'
'-This installs the module account_batch_deposit.')
module_account_sepa = fields.Boolean(string='Use SEPA payments',
help='If you check this box, you will be able to register your payment using SEPA.\n'
'-This installs the module account_sepa.')
module_account_plaid = fields.Boolean(string="Import from Plaid.com",
help='Get your bank statements from you bank and import them through plaid.com.\n'
'-that installs the module account_plaid.')
module_account_yodlee = fields.Boolean("Import from Yodlee.com",
help='Get your bank statements from you bank and import them through yodlee.com.\n'
'-that installs the module account_yodlee.')
module_account_bank_statement_import_qif = fields.Boolean("Import .qif files",
help='Get your bank statements from your bank and import them in Odoo in the .QIF format.\n'
'This installs the module account_bank_statement_import_qif.')
module_account_bank_statement_import_ofx = fields.Boolean("Import in .ofx format",
help='Get your bank statements from your bank and import them in Odoo in the .OFX format.\n'
'This installs the module account_bank_statement_import_ofx.')
@api.model
def _default_has_default_company(self):
+50 -4
View File
@@ -109,6 +109,10 @@
</div>
<label for="id" string="Features"/>
<div>
<div>
<field name="module_account_reports" class="oe_inline" widget="upgrade_boolean"/>
<label for="module_account_reports"/>
</div>
<div name="group_multi_currency">
<field name="group_multi_currency" class="oe_inline"/>
<label for="group_multi_currency"/>
@@ -138,7 +142,7 @@
</div>
</div>
</group>
<separator string="eInvoicing &amp; Payments"/>
<separator string="Invoicing &amp; Payments"/>
<group>
<label for="id" string="Customer"/>
<div name="customer_payments">
@@ -146,6 +150,10 @@
<field name="group_proforma_invoices" class="oe_inline"/>
<label for="group_proforma_invoices"/>
</div>
<div>
<field name="module_account_reports_followup" class="oe_inline" widget="upgrade_boolean"/>
<label for="module_account_reports_followup"/>
</div>
</div>
</group>
<group attrs="{'invisible': [('has_chart_of_accounts','=',False)]}">
@@ -165,6 +173,15 @@
</div>
</div>
</group>
<group>
<label for="id" string="Payments"/>
<div name="customer_payments">
<div name='payment_acquirer'>
<label for="paypal_account"/>
<field name="paypal_account" placeholder="e.g. sales@odoo.com" class="oe_inline"/>
</div>
</div>
</group>
<separator string="Bank &amp; Cash"/>
<group name="bank_cash">
<label for="id" string="Configuration"/>
@@ -177,9 +194,38 @@
<label for="transfer_account_id"/>
<field name="transfer_account_id" class="oe_inline" attrs="{'required': [('has_chart_of_accounts','!=',False)]}"/>
</div>
<div name='payment_acquirer'>
<label for="paypal_account"/>
<field name="paypal_account" placeholder="e.g. sales@odoo.com" class="oe_inline"/>
<div>
<field name="module_l10n_us_check_printing" class="oe_inline" widget="upgrade_boolean"/>
<label for="module_l10n_us_check_printing"/>
</div>
<div>
<field name="module_account_batch_deposit" widget="upgrade_boolean"/>
<label for="module_account_batch_deposit"/>
</div>
<div>
<field name="module_account_sepa" class="oe_inline" widget="upgrade_boolean"/>
<label for="module_account_sepa"/>
</div>
</div>
</group>
<group>
<label for="id" string="Bank Statements"/>
<div>
<div>
<field name="module_account_yodlee" class="oe_inline" widget="upgrade_boolean"/>
<label for="module_account_yodlee"/>
</div>
<div>
<field name="module_account_plaid" class="oe_inline" widget="upgrade_boolean"/>
<label for="module_account_plaid"/>
</div>
<div>
<field name="module_account_bank_statement_import_qif" class="oe_inline" widget="upgrade_boolean"/>
<label for="module_account_bank_statement_import_qif"/>
</div>
<div>
<field name="module_account_bank_statement_import_ofx" class="oe_inline" widget="upgrade_boolean"/>
<label for="module_account_bank_statement_import_ofx"/>
</div>
</div>
</group>
+4 -1
View File
@@ -19,7 +19,10 @@ class crm_configuration(osv.TransientModel):
(0, "Each mail sent to the alias creates a new opportunity"),
(1, "Use leads if you need a qualification step before creating an opportunity or a customer")
], "Leads",
implied_group='crm.group_use_lead')
implied_group='crm.group_use_lead'),
'module_crm_voip': fields.boolean("VoIP integration",
help="Integration with Asterisk"),
'module_website_sign': fields.boolean("Online document signature"),
}
_defaults = {
+2
View File
@@ -30,6 +30,8 @@
</div>
</div>
<field name="group_use_lead" widget="radio"/>
<field name="module_crm_voip" widget="upgrade_boolean"/>
<field name="module_website_sign" widget="upgrade_boolean"/>
</group>
</div>
</field>
+1
View File
@@ -19,4 +19,5 @@ class MassMailingConfiguration(osv.TransientModel):
(1, 'Allow the use of a pop-up snippet on website to encourage visitors to sign up on a mass mailing list')
], string="Website Pop-up",
implied_group="mass_mailing.group_website_popup_on_exit"),
'module_mass_mailing_themes': fields.boolean("Mass mailing themes"),
}
+1
View File
@@ -12,6 +12,7 @@
</header>
<group string="Mass Mailing">
<field name="group_mass_mailing_campaign" widget="radio"/>
<field name="module_mass_mailing_themes" widget="upgrade_boolean"/>
<field name="group_website_popup_on_exit" widget="radio"/>
</group>
</form>
+2
View File
@@ -10,6 +10,8 @@ class pos_configuration(osv.TransientModel):
(1, "Restaurant: activate table management")
], "Restaurant",
help='This module adds several restaurant features to the Point of Sale: \n\n- Bill Printing: Allows you to print a receipt before the order is paid \n\n- Bill Splitting: Allows you to split an order into different orders \n\n- Kitchen Order Printing: allows you to print orders updates to kitchen or bar printers'),
'module_pos_loyalty': fields.boolean("Loyalty Program",
help='Allows you to define a loyalty program in the point of sale, where the customers earn loyalty points and get rewards'),
'module_pos_discount': fields.selection([
(0, "Allow discounts on order lines only"),
(1, "Allow global discounts")
+3 -2
View File
@@ -12,13 +12,14 @@
</header>
<group string="Point of Sale">
<field name="module_pos_restaurant" widget="radio"/>
<field name="module_pos_loyalty" widget="upgrade_boolean"/>
<field name="module_pos_discount" widget="radio"/>
<field name="module_pos_mercury" widget="radio"/>
<field name="module_pos_reprint" widget="radio"/>
</group>
</form>
</field>
</record>
</field>
</record>
<record id="action_pos_configuration" model="ir.actions.act_window">
<field name="name">Configure Point of Sale</field>
<field name="res_model">pos.config.settings</field>
-1
View File
@@ -3,4 +3,3 @@
import mail_mail
import portal_sale
import res_config
-1
View File
@@ -30,7 +30,6 @@ by default, you simply need to configure a Paypal account in the Accounting/Invo
'security/portal_security.xml',
'portal_sale_view.xml',
'portal_sale_data.xml',
'res_config_view.xml',
'security/ir.model.access.csv',
],
'auto_install': True,
-14
View File
@@ -1,14 +0,0 @@
# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
from openerp.osv import fields, osv
class sale_portal_config_settings(osv.TransientModel):
_inherit = 'account.config.settings'
_columns = {
'group_payment_options': fields.boolean('Show payment buttons to employees too',
implied_group='portal_sale.group_payment_options',
help="Show online payment options on Sale Orders and Customer Invoices to employees. "
"If not checked, these options are only visible to portal users."),
}
-27
View File
@@ -1,27 +0,0 @@
<?xml version="1.0"?>
<openerp>
<data>
<!-- Add payment options to sale.order and invoice forms -->
<record model="ir.ui.view" id="portal_sale_payment_option_config">
<field name="model">account.config.settings</field>
<field name="inherit_id" ref="account.view_account_config_settings"/>
<field name="arch" type="xml">
<xpath expr="//group[@name='bank_cash']/div" position="inside">
<div>
<field name="group_payment_options" class="oe_inline"/>
<label for="group_payment_options"/>
</div>
</xpath>
</field>
</record>
<record model="ir.ui.view" id="payment_acquirer_option_config">
<field name="model">account.config.settings</field>
<field name="inherit_id" ref="payment.payment_acquirer_installation"/>
<field name="arch" type="xml">
<xpath expr="//div[@name='configure_payments_button']" position="attributes">
<attribute name="invisible">0</attribute>
</xpath>
</field>
</record>
</data>
</openerp>
@@ -2,18 +2,6 @@
<openerp>
<data noupdate="1">
<record id="group_payment_options" model="res.groups">
<field name="name">View Online Payment Options</field>
<field name="category_id" ref="base.module_category_hidden"/>
<field name="comment">Members of this group see the online payment options
on Sale Orders and Customer Invoices. These options are meant for customers who are accessing
their documents through the portal.</field>
</record>
<!-- Make the payment_options group implied for all portal users -->
<record id="base.group_portal" model="res.groups">
<field name="implied_ids" eval="[(4,ref('group_payment_options'))]"/>
</record>
<!-- Sale Portal Access Rules -->
<record id="portal_sale_order_user_rule" model="ir.rule">
<field name="name">Portal Personal Quotations/Sales Orders</field>
+3
View File
@@ -54,6 +54,9 @@ class project_configuration(osv.osv_memory):
(1, "Automatically generate an email alias at the project creation")
], "Project Alias",
help="Odoo will generate an email alias at the project creation from project name."),
'module_project_timesheet_synchro': fields.boolean("Awesome Timesheet",
help="Timesheet App for Chrome/Android/iOS"),
'module_project_forecast': fields.boolean("Forecasts and Planning"),
}
def onchange_time_estimation_project_timesheet(self, cr, uid, ids, group_time_work_estimation_tasks):
+4
View File
@@ -28,6 +28,10 @@
<field name="module_pad" widget="radio"/>
<field name="group_time_work_estimation_tasks" on_change="onchange_time_estimation_project_timesheet(group_time_work_estimation_tasks)" widget="radio"/>
</group>
<group>
<field name="module_project_timesheet_synchro" widget="upgrade_boolean"/>
<field name="module_project_forecast" widget="upgrade_boolean"/>
</group>
<group string="Helpdesk &amp; Support">
<field name="module_rating_project" widget="radio"/>
<field name="module_project_issue_sheet" widget="radio"/>
+3
View File
@@ -72,6 +72,9 @@ class sale_configuration(osv.TransientModel):
(0, "Allow to edit sales order from the 'Sales Order' menu (not from the Quotation menu)"),
(1, "Never allow to modify a confirmed sale order")
], "Sale Order Modification"),
'module_sale_contract': fields.boolean("Subscriptions and recurring revenue"),
'module_website_sale_digital': fields.boolean("Sell digital products"),
'module_website_portal': fields.boolean("Customer portal"),
}
_defaults = {
+5
View File
@@ -21,6 +21,7 @@
<field name="module_website_quote" widget="radio"/>
<field name="module_sale_margin" widget="radio"/>
<field name="auto_done_setting" widget="radio"/>
<field name="module_sale_contract" class="oe_inline" widget="upgrade_boolean"/>
</group>
<group name="manage_price">
<label for="sale_pricelist_setting" string="Sale Price"/>
@@ -31,6 +32,10 @@
<field name="group_product_pricelist" class="oe_inline" invisible="1"/>
</div>
</group>
<group string="Customer portal">
<field name="module_website_portal" class="oe_inline" widget="upgrade_boolean"/>
<field name="module_website_sale_digital" class="oe_inline" widget="upgrade_boolean"/>
</group>
</div>
</field>
</record>
+5
View File
@@ -157,6 +157,11 @@ class stock_config_settings(osv.osv_memory):
(1, "Adapt lead times using the suppliers' open days calendars (advanced)")
], "Minimum Stock Rules",
help='This allows you to handle minimum stock rules differently by the possibility to take into account the purchase and delivery calendars \n-This installs the module stock_calendar.'),
'module_stock_barcode': fields.boolean("Barcode Support"),
'module_delivery_dhl': fields.boolean("DHL integration"),
'module_delivery_fedex': fields.boolean("Fedex integration"),
'module_delivery_ups': fields.boolean("UPS integration"),
'module_delivery_usps': fields.boolean("USPS integration"),
}
def onchange_adv_location(self, cr, uid, ids, group_stock_adv_location, context=None):
+7
View File
@@ -26,6 +26,13 @@
<field name="group_stock_tracking_lot" widget="radio"/>
<field name="group_stock_tracking_owner" widget="radio"/>
</group>
<group>
<field name="module_stock_barcode" widget="upgrade_boolean"/>
<field name="module_delivery_dhl" widget="upgrade_boolean"/>
<field name="module_delivery_fedex" widget="upgrade_boolean"/>
<field name="module_delivery_ups" widget="upgrade_boolean"/>
<field name="module_delivery_usps" widget="upgrade_boolean"/>
</group>
<group string="Location &amp; Warehouse">
<field name="module_procurement_jit" widget="radio"/>
<field name="group_stock_multiple_locations" widget="radio"/>
+76 -1
View File
@@ -1629,6 +1629,80 @@ var FieldToggleBoolean = common.AbstractField.extend({
},
});
/**
This widget is intended to be used in config settings.
When checked, an upgrade popup is showed to the user.
*/
var UpgradeBoolean = FieldBoolean.extend({
template: "FieldUpgradeBoolean",
events: {
'click input': 'click_on_input',
},
init: function() {
this._super.apply(this, arguments);
},
click_on_input: function(event) {
var self = this;
if(this.$checkbox.prop("checked")) {
var message = _t('You need to upgrade to Odoo Enterprise to activate this feature.');
var buttons = [
{
text: _t("Upgrade now"),
classes: 'btn-primary',
close: true,
click: this.confirm_upgrade,
},
{
text: _t("Cancel"),
close: true,
},
];
var dialog = new Dialog(this, {
size: 'medium',
buttons: buttons,
$content: $('<div>', {
text: message,
}),
title: _t("Odoo Enterprise"),
}).open();
dialog.on('closed', this, function() {
this.$checkbox.prop("checked", false);
});
}
},
render_value: function() {
this._super();
this.$el.append(" <span class='label label-primary oe_inline'>Enterprise</span>");
},
confirm_upgrade: function() {
var self = this;
new Model("res.users").call("read", [session.uid, ["partner_id"]]).done(function(data) {
if(data.partner_id) {
new Model("res.partner").call("read", [data.partner_id[0], ["name", "lang", "country_id", "email", "phone"]]).done(function(data) {
// Remove false value
data.country_id = data.country_id[0];
var sanitized_data = _.omit(data, function(value, key, object) {
if (_.isUndefined(value) || ( (_.isBoolean(value)) && (value === false) ) || key === "id") {
return true;
}
});
// prepare to url (+urlencode)
var url_args = $.param(sanitized_data);
framework.redirect("https://www.odoo.com/odoo-enterprise/upgrade?" + url_args);
});
}
});
},
});
/**
* Registry of form fields, called by :js:`instance.web.FormView`.
@@ -1665,7 +1739,8 @@ core.form_widget_registry
.add('kanban_state_selection', KanbanSelection)
.add('statinfo', StatInfo)
.add('timezone_mismatch', TimezoneMismatch)
.add('label_selection', LabelSelection);
.add('label_selection', LabelSelection)
.add('upgrade_boolean', UpgradeBoolean);
/**
+3
View File
@@ -862,6 +862,9 @@
class="field_boolean"/>
</span>
</t>
<div t-name="FieldUpgradeBoolean">
<t t-call="FieldBoolean"/>
</div>
<t t-name="ProgressBar">
<div class="o_progressbar">
<div t-if="widget.title" class="o_progressbar_title"><t t-esc="widget.title"/></div><div class="o_progress">
+2
View File
@@ -24,6 +24,8 @@ class website_config_settings(osv.osv_memory):
'cdn_activated': fields.related('website_id', 'cdn_activated', type="boolean", string='Use CDN'),
'cdn_url': fields.related('website_id', 'cdn_url', type="char", string='CDN Base URL'),
'cdn_filters': fields.related('website_id', 'cdn_filters', type="text", string='CDN Filters'),
'module_website_form_editor': fields.boolean("From builder"),
'module_website_version': fields.boolean("A/B testing and versioning"),
}
def on_change_website_id(self, cr, uid, ids, website_id, context=None):
+4
View File
@@ -62,6 +62,10 @@
</div>
</div>
</group>
<group string="Extra">
<field name="module_website_form_editor" widget="upgrade_boolean"/>
<field name="module_website_version" widget="upgrade_boolean"/>
</group>
<group string="Language">
<label for="language_ids"/>
<div name="language_ids">
+5
View File
@@ -6,3 +6,8 @@ class website_config_settings(models.TransientModel):
salesperson_id = fields.Many2one('res.users', related='website_id.salesperson_id', string='Salesperson')
salesteam_id = fields.Many2one('crm.team', related='website_id.salesteam_id', string='Sales Team')
module_delivery_dhl = fields.Boolean("DHL integration")
module_delivery_fedex = fields.Boolean("Fedex integration")
module_delivery_ups = fields.Boolean("UPS integration")
module_delivery_usps = fields.Boolean("USPS integration")
module_sale_ebay = fields.Boolean("eBay connector")
+5
View File
@@ -8,6 +8,11 @@
<field name="cdn_filters" position="after">
<field name="salesperson_id"/>
<field name="salesteam_id"/>
<field name="module_delivery_ups" widget="upgrade_boolean"/>
<field name="module_delivery_fedex" widget="upgrade_boolean"/>
<field name="module_delivery_ups" widget="upgrade_boolean"/>
<field name="module_delivery_usps" widget="upgrade_boolean"/>
<field name="module_sale_ebay" widget="upgrade_boolean"/>
</field>
</field>
</record>
+3 -3
View File
@@ -472,11 +472,11 @@ class res_config_settings(osv.osv_memory, res_config_module_installation_mixin):
dep_name = [x['display_name'] for x in module_pool.search_read(
cr, uid, ['|', ('id', 'in', installed_module_ids), ('id', 'in', dep_ids), ('application', '=', True)], context=context)]
if dep_name:
message = '\n'.join(dep_name)
message = ["- %s \n" % name for name in dep_name]
return {
'warning': {
'title': _('Warning!'),
'message': _('Enabling this feature you will install following paying application(s) \n%s') % message,
'message': _('Enabling this feature will install the following paying application(s) : \n%s') % message,
}
}
return {}
@@ -531,7 +531,7 @@ class res_config_settings(osv.osv_memory, res_config_module_installation_mixin):
# modules: which modules are installed/to install
for name, module in classified['module']:
res[name] = module and module.state in ('installed', 'to install', 'to upgrade')
res[name] = False if not module else module.state in ('installed', 'to install', 'to upgrade')
if self._fields[name].type == 'selection':
res[name] = int(res[name])