[IMP] website_sale: improve tooldtips + strings on views
Better tooltips for settings options:
- Pricing Strategy: remove tooltip
- Sales Price:
- Specific prices per customer segment, currency, etc.: new pricing table available in product detail form (Sales tab).
- Advanced pricing based on formulas (discounts, margins, rounding): apply price rules from a new *Pricelists* menu in Configuration.
- Optional products: Installs *e-Commerce Optional Products*
Better tooltips in product page:
- Website Categories: Categories can be published on the Shop page (online catalog grid) to help customers find all the items within a category. To publish them, go to the Shop page, hit Customize and turn *Product Categories* on. A product can belong to several categories.
- Suggested Products
- Relabel the field on product detail form, web page + web customize menu: should be Alternative Products
- new tooltip: Propose more expensive alternatives to your customers (upsell strategy). Those products show up on the product page.
- Accessory Products: Accessories show up when the customer reviews the cart before paying (cross-sell strategy, e.g. for computers: mouse, keyboard, etc.). An algorithm figures out a list of accessories based on all the products added to cart.
- Optional Products: Optional Products are suggested whenever the customer hits *Add to Cart* (cross-sell strategy, e.g. for computers: warranty, software, etc.).
- Availability: Adds an availability status on the web product page.
This commit is contained in:
@@ -110,21 +110,26 @@ class ProductTemplate(models.Model):
|
||||
)
|
||||
website_description = fields.Html('Description for the website', sanitize_attributes=False, translate=True)
|
||||
alternative_product_ids = fields.Many2many('product.template', 'product_alternative_rel', 'src_id', 'dest_id',
|
||||
string='Suggested Products', help='Appear on the product page')
|
||||
string='Alternative Products', help='Suggest more expensive alternatives to '
|
||||
'your customers (upsell strategy). Those products show up on the product page.')
|
||||
accessory_product_ids = fields.Many2many('product.product', 'product_accessory_rel', 'src_id', 'dest_id',
|
||||
string='Accessory Products', help='Appear on the shopping cart')
|
||||
string='Accessory Products', help='Accessories show up when the customer reviews the '
|
||||
'cart before paying (cross-sell strategy, e.g. for computers: mouse, keyboard, etc.). '
|
||||
'An algorithm figures out a list of accessories based on all the products added to cart.')
|
||||
website_size_x = fields.Integer('Size X', default=1)
|
||||
website_size_y = fields.Integer('Size Y', default=1)
|
||||
website_style_ids = fields.Many2many('product.style', string='Styles')
|
||||
website_sequence = fields.Integer('Website Sequence', help="Determine the display order in the Website E-commerce",
|
||||
default=lambda self: self._default_website_sequence())
|
||||
public_categ_ids = fields.Many2many('product.public.category', string='Website Product Category',
|
||||
help="Those categories are used to group similar products for e-commerce.")
|
||||
help="Categories can be published on the Shop page (online catalog grid) to help "
|
||||
"customers find all the items within a category. To publish them, go to the Shop page, "
|
||||
"hit Customize and turn *Product Categories* on. A product can belong to several categories.")
|
||||
availability = fields.Selection([
|
||||
('empty', 'Display Nothing'),
|
||||
('in_stock', 'In Stock'),
|
||||
('warning', 'Warning'),
|
||||
], "Availability", default='empty', help="This field is used to display a availability banner with a message on the ecommerce")
|
||||
], "Availability", default='empty', help="Adds an availability status on the web product page.")
|
||||
availability_warning = fields.Text("Availability Warning", translate=True)
|
||||
product_image_ids = fields.One2many('product.image', 'product_tmpl_id', string='Images')
|
||||
|
||||
|
||||
@@ -36,23 +36,19 @@ class WebsiteConfigSettings(models.TransientModel):
|
||||
module_website_sale_options = fields.Selection([
|
||||
(0, 'One-step "add to cart"'),
|
||||
(1, 'Suggest optional products when adding to cart (e.g. for a computer: warranty, software, etc.)')
|
||||
], "Optional Products", help='Install the module website_sale_options')
|
||||
], "Optional Products", help='Installs *e-Commerce Optional Products*')
|
||||
module_portal = fields.Boolean("Activate the customer portal", help="""Give your customers access to their documents.""")
|
||||
# the next 2 fields represent sale_pricelist_setting from sale.config.settings, they are split here for the form view, to improve usability
|
||||
sale_pricelist_setting_split_1 = fields.Selection([
|
||||
(0, 'A single sales price per product'),
|
||||
(1, 'Several prices selectable through a drop-down list or applied automatically via Geo-IP'),
|
||||
], default=0, string="Pricing Strategy",
|
||||
help='Fix Price: all price manage from products sale price.\n'
|
||||
'Different prices per Customer: you can assign price on buying of minimum quantity in products sale tab.\n'
|
||||
'Advanced pricing based on formula: You can have all the rights on pricelist')
|
||||
], default=0, string="Pricing Strategy")
|
||||
sale_pricelist_setting_split_2 = fields.Selection([
|
||||
(0, 'Specific prices per customer segment, currency, etc.'),
|
||||
(1, 'Advanced pricing based on formulas (discounts, margins, rounding)')
|
||||
], default=0, string="Sales Price",
|
||||
help='Fix Price: all price manage from products sale price.\n'
|
||||
'Different prices per Customer: you can assign price on buying of minimum quantity in products sale tab.\n'
|
||||
'Advanced pricing based on formula: You can have all the rights on pricelist')
|
||||
help='Specific prices per customer segment, currency, etc.: new pricing table available in product detail form (Sales tab).\n'
|
||||
'Advanced pricing based on formulas (discounts, margins, rounding): apply price rules from a new *Pricelists* menu in Configuration.')
|
||||
group_sale_pricelist = fields.Boolean("Use pricelists to adapt your price per customers",
|
||||
implied_group='product.group_sale_pricelist',
|
||||
help="""Allows to manage different prices based on rules per category of customers.
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
<p class="oe_mt32">
|
||||
Simply drag & drop pre-made building blocks to set your desired elements into place. Edit text inline straight on the web page to fine tune the product description, characteristics and images.</p>
|
||||
<p class="oe_mt8">
|
||||
Emphasize your best products on your storefront. Add suggested products and product attributes like color or size. Customize the color, layout and font of your theme.
|
||||
Emphasize your best products on your storefront. Add alternative products and product attributes like color or size. Customize the color, layout and font of your theme.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -59,7 +59,7 @@ odoo.define("website_sale.tour_shop", function (require) {
|
||||
}, {
|
||||
trigger: ".o_web_settings_dashboard_progress_title,.progress",
|
||||
extra_trigger: "body:not(.editor_enable)",
|
||||
content: _t("Follow the steps and advises in the Odoo Planner to deploy your e-Commerce website in no time!"),
|
||||
content: _t("Follow the steps and advices in the Odoo Planner to deploy your e-Commerce website in no time!"),
|
||||
position: "bottom",
|
||||
}]);
|
||||
});
|
||||
|
||||
@@ -483,10 +483,10 @@
|
||||
</t>
|
||||
</template>
|
||||
|
||||
<template id="recommended_products" inherit_id="website_sale.product" customize_show="True" name="Suggested Products">
|
||||
<template id="recommended_products" inherit_id="website_sale.product" customize_show="True" name="Alternative Products">
|
||||
<xpath expr="//div[@id='product_full_description']" position="after">
|
||||
<div class="container mt32" t-if="product.alternative_product_ids">
|
||||
<h3>Suggested Products:</h3>
|
||||
<h3>Alternative Products:</h3>
|
||||
<div class="row mt16" style="">
|
||||
<t t-foreach="product.alternative_product_ids" t-as="alt_product">
|
||||
<div class="col-md-2 thumbnail" style="width: 170px; height:130px; float:left; display:inline; margin-right: 10px; overflow:hidden;">
|
||||
@@ -942,7 +942,7 @@
|
||||
</t>
|
||||
</template>
|
||||
|
||||
<template id="suggested_products_list" inherit_id="website_sale.cart_lines" customize_show="True" name="Suggested Products in my cart">
|
||||
<template id="suggested_products_list" inherit_id="website_sale.cart_lines" customize_show="True" name="Alternative Products in my cart">
|
||||
<xpath expr="//table[@id='cart_products']" position="after">
|
||||
<table t-if="suggested_products" class="js_cart_lines table table-striped table-condensed">
|
||||
<colgroup>
|
||||
|
||||
@@ -7,4 +7,7 @@ from odoo import fields, models
|
||||
class ProductTemplate(models.Model):
|
||||
_inherit = "product.template"
|
||||
|
||||
optional_product_ids = fields.Many2many('product.template', 'product_optional_rel', 'src_id', 'dest_id', string='Optional Products', help="Products to propose when add to cart.")
|
||||
optional_product_ids = fields.Many2many('product.template', 'product_optional_rel', 'src_id', 'dest_id',
|
||||
string='Optional Products', help="Optional Products are suggested "
|
||||
"whenever the customer hits *Add to Cart* (cross-sell strategy, "
|
||||
"e.g. for computers: warranty, software, etc.).")
|
||||
|
||||
Reference in New Issue
Block a user