eCommerce
website_sale · odoo/odoo
Security findings
- Repository
- odoo/odoo · module folder
- Module version
- 1.1
- Category
- Website/Website
- Folder size
- 22.9 MB
- License
- LGPL-3
- Application
- Yes
- Auto-installable
- No
- Website
- https://www.odoo.com/app/ecommerce
- Last tracking update
- 2026-10-05 12:14:55
- Authors
- Odoo S.A.
- Maintainers
- Odoo S.A.
- Committers
- Xavier Morel, Xavier ALT, Raphael Collet, Thibault Delavallée, odoo, Josse Colpaert, Odoo Translation Bot, Christophe Matthieu, Denis Ledoux, Nicolas Lempereur, Aaron Bohy, Géry Debongnie, Lucas Perais (lpe), qsm-odoo, Julien Castiaux, Xavier-Do, Victor Feyens, Adrien Dieudonné, Sébastien Theys, Julien Mougenot, Achraf (abz), Prakash Prajapati, Rémy Voet (ryv), Tiffany Chang (tic), Gorash, Benjamin Vray, Kishan Gajjar, william-andre, Antoine Guenet, Louis Baudoux, Antoine Vandevenne (anv), Mathieu Walravens, Valentin Chevalier, jbw-odoo, Victor Piryns (pivi), Mahamadasif Ansari, Pierre-Yves Dufays, Robin Lejeune (role), Louis (loco), Levi Siuzdak (sile), Dylan Kiss (dyki), Antoine Boonen, FrancoisGe, Valeriya(vchu), Chong Wang (cwg), Brieuc-brd, divy-odoo, Walid (wasa), Deependra Solanki, lase@odoo.com, Quentin Wolfs, Aurelien MARIE (auma), Louis (loti), jorv-odoo, Mehdi Outagant (MOU), reka-odoo, kcv-odoo, Julien Segers (juse), Louis Gobert, Lina (liew), Adnan Saiyed, Chrysanthe (chgo), mano-odoo, Harsh Shah, Majed Alhanash (malh), Victorien (viso), thle-odoo, kago-odoo, Patricia Daloze (pda), Manisha Tulsiyani, Xavier Luyckx (xlu), Stéphane Diez, Claire (clbr), Antoine (anso), Abdo Mongy, prep-odoo, Sébastien (blse), Victor Miguel Armenta Carrillo, dija-odoo, sben-odoo, abdelrahmanfawzy, pkgu-odoo, Mohammad Abdulmoneim (abdu), khsr-odoo, Pierre Lamotte (pila), Pierre Pulinckx, Michaël Mattiello, Corentin Heinix (cohe), Valeriya (vchu), Shrey Mehta, Carmine, Mahdi Alijani (malj), anko-odoo, Krzysztof Magusiak (krma), Florian Malfroid, Ajit Singh, krip-odoo, kdes-odoo, Guillaume V, utma-odoo, Ester Andreetto, Rushil Patel, Elier Ayala Bernal, nsirjacobs, pajo, bhna-odoo, Brett Cutler, defl, bikh-odoo, akha, josm-odoo, MAGREMENT, Junqi, agbr-odoo, Lulu Grimalkin (lugr), sawer, Lancelot Semal, Julien Launois (jula), Laetitia (ldau), rusp-odoo, dtda-odoo, adip-odoo, alap-odoo, Augustin (duau), Garvish Panchal, Parth Pujara, Serhii Rubanskyi, chdh-odoo, romo, Alessandro Lupo, Yagnik ✗ (yagp), Waleed Elgamal, Saurabh, Nisarg (nipl), assh-odoo, Beekoan, Leila Kerroum Balaguer, Lionel Piraux (lipi), livaios, Akash Parmar, Benoit Socias (bso), lecr, YoussefM890, maap-odoo, Ravij Parikh, Merlin Guillaume, Mazen, srap-odoo, Sébastien Geelen, Oskar Wielgos, Rudra Patel, assk-odoo, Eve Lin (evlin), yoelf, Atovange, Zachary (zavan), Kadam Darji, Julien (jdeh), h4818 (ayh), Alay Patel, Farah (ahmfa), Nikhil Kajavadra, ELCO, Khaj-odoo, khaj-odoo, chpa-odoo, Guillaume Jacquet, Dhruv Chauhan, Akshaya Patil, Oussema Heni, stefanorigano (sri), Krishna Patel, metu-odoo, claireclan, Julien Coppin (jucop), ahham, chga-odoo, nealwebdev, rudo, Julien Piron, Jean Schoenlaub, Corentin Deruyck, Ahmed Hamila, Cezar Bulancea (cebul), mekot-odoo, sasri-odoo, lkerroum, Christopher du Toit (chto), brcut-odoo
- Odoo dependencies
- Python dependencies
- geoip2
- System dependencies
- None
- Required by
- l10n_ar_website_sale, l10n_br_website_sale, l10n_es_website_sale, l10n_tw_edi_ecpay_website_sale, spreadsheet_dashboard_website_sale, test_discuss_full, test_website_modules, website_event_booth_sale, website_event_sale, website_sale_gelato, website_sale_loyalty, website_sale_mass_mailing, website_sale_project, website_sale_slides, website_sale_stock
- Description
Code Analysis
Views touched (244)
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
accept_terms_and_conditions |
Accept Terms & Conditions | ir.ui.view | qweb | Inherits navigation_buttons |
account_move_view_form |
account.move.form.inherit.website_sale | account.move | form | Inherits account.view_move_form |
address_on_checkout |
Address on payment | ir.ui.view | qweb | New |
attribute_tree_view |
product.attribute.list | product.attribute | list | Inherits product.attribute_tree_view |
checkout_layout |
Checkout layout page | ir.ui.view | qweb | New |
digest_digest_view_form |
digest.digest.view.form.inherit.website_sale | digest.digest | form | Inherits digest.digest_digest_view_form |
gmc_xml |
gmc_xml | ir.ui.view | qweb | New |
navigation_buttons |
Navigation buttons | ir.ui.view | qweb | New |
order_tax_lines |
order_tax_lines | ir.ui.view | qweb | New |
product_add_to_compare |
Add to comparison in product page | ir.ui.view | qweb | Inherits website_sale.cta_wrapper |
product_attribute_category_tree_view |
product.attribute.category.list | product.attribute.category | list | New |
product_attribute_view_form |
product.attribute.view.form | product.attribute | form | Inherits product.product_attribute_view_form |
product_attributes_body |
Product attributes table | ir.ui.view | qweb | Inherits website_sale.product |
product_document_search |
product.document.search.sale | product.document | search | Inherits sale.product_document_search |
product_feed_form |
product.feed.view.form | product.feed | form | New |
product_feed_list |
product.feed.view.list | product.feed | list | New |
product_feed_search |
product.feed.view.search | product.feed | search | New |
product_image_view_kanban |
product.image.view.kanban | product.image | kanban | New |
product_normal_form_view |
product.product.form.website_sale | product.product | form | Inherits product.product_normal_form_view |
product_product_view_form_normalized |
product.product.view.form.normalized.website.sale | product.product | form | Inherits product.product_product_view_form_normalized |
product_product_view_form_normalized_website_sale |
product.product.view.form.normalized.website.sale.inherit | product.product | form | Inherits product.product_product_view_form_normalized |
product_product_website_tree_view |
product.product.website.list | product.product | list | Inherits product.product_product_tree_view |
product_public_category_form_view |
product.public.category.form | product.public.category | form | New |
product_public_category_tree_view |
product.public.category.list | product.public.category | list | New |
product_ribbon_form_view |
product.ribbon.form.view | product.ribbon | form | New |
product_ribbon_view_tree |
product.ribbon.list | product.ribbon | list | New |
product_template_form_view |
product.template.product.website.form | product.template | form | Inherits product.product_template_form_view |
product_template_only_website_form_view |
product.template.product.only.website.form | product.template | form | Inherits product.product_template_only_form_view |
product_template_search_view_website |
product.template.search.published | product.template | search | Inherits product.product_template_search_view |
product_template_view_kanban_website_sale |
product.template.view.kanban.website_sale | product.template | kanban | Inherits product.product_template_kanban_view |
product_template_view_tree |
product.template.view.list.inherit.website_sale | product.template | list | Inherits product.product_template_tree_view |
product_template_view_tree_website_sale |
product.template.view.list.website_sale | product.template | list | Inherits website_sale.product_template_view_tree |
product_variant_product_image_view_kanban |
product.variant.product.image.view.kanban | product.image | kanban | Inherits website_sale.product_image_view_kanban |
reduction_code |
Promo Code | ir.ui.view | qweb | Inherits website_sale.total |
res_config_settings_view_form |
res.config.settings.view.form.inherit.website.sale | res.config.settings | form | Inherits website_payment.res_config_settings_view_form |
res_config_settings_view_form_inherit_sale |
res.config.settings.view.form.inherit.sale | res.config.settings | form | Inherits sale.res_config_settings_view_form |
robots |
robots | ir.ui.view | qweb | Inherits website.robots |
s_add_to_cart |
Add to Cart Button | ir.ui.view | qweb | New |
s_donation |
Donation | ir.ui.view | qweb | New |
s_donation_form |
Donation Form | ir.ui.view | qweb | New |
s_donation_inline |
Donation Inline | ir.ui.view | qweb | New |
sale_order_abandoned_cart_search |
sale.order.abandoned.cart.search | sale.order | search | New |
sale_order_kanban_view_ecommerce |
sale.order.kanban.inherit.website.sale.dashboard | sale.order | kanban | Inherits sale.view_sale_order_kanban |
sale_order_list_view_ecommerce |
website.sale.order.list.dashboard | sale.order | list | New |
sale_order_tree |
sale.order.list.inherit.website.sale | sale.order | list | Inherits sale.sale_order_tree |
sale_order_view_form |
sale.order.form | sale.order | form | Inherits sale.view_order_form |
sale_report_view_graph_website |
sale.report.view.graph.website | sale.report | graph | New |
sale_report_view_pivot_website |
sale.report.view.pivot.website | sale.report | pivot | New |
sale_report_view_search_website |
sale.report.search | sale.report | search | New |
sale_report_view_tree |
sale.report.view.list.inherit.website.sale | sale.report | list | Inherits sale.sale_report_view_tree |
specifications_table |
Specifications Table | ir.ui.view | qweb | New |
total |
total | ir.ui.view | qweb | New |
view_delivery_carrier_form_website_delivery |
delivery.carrier.website.form | delivery.carrier | form | Inherits delivery.view_delivery_carrier_form |
view_delivery_carrier_search |
delivery.carrier.search.inherit | delivery.carrier | search | Inherits delivery.view_delivery_carrier_search |
view_delivery_carrier_tree |
delivery.carrier.list.inherit | delivery.carrier | list | Inherits delivery.view_delivery_carrier_tree |
view_product_image_form |
product.image.view.form | product.image | form | New |
view_sales_order_filter_ecommerce |
sale.order.ecommerce.search.view | sale.order | search | Inherits sale.view_sales_order_filter |
view_sales_order_filter_ecommerce_unpaid |
sale.order.ecommerce.search.unpaid.view | sale.order | search | Inherits sale.view_sales_order_filter |
view_website_sale_website_form |
website_sale.website.form | website | form | Inherits website.view_website_form |
website_sale.accordion_more_information |
More Information Accordion Item | ir.ui.view | qweb | Inherits website_sale.product_accordion |
website_sale.accordion_specs_item |
Specifications Accordion Item | ir.ui.view | qweb | Inherits website_sale.product_accordion |
website_sale.add_to_compare |
Comparison List Button | ir.ui.view | qweb | Inherits website_sale.shop_product_buttons |
website_sale.add_to_wishlist |
Wishlist Button | ir.ui.view | qweb | Inherits website_sale.shop_product_buttons |
website_sale.address |
Address Management | ir.ui.view | qweb | New |
website_sale.address_b2b |
Show b2b fields | ir.ui.view | qweb | Inherits website_sale.address |
website_sale.address_card |
website_sale.address_card | ir.ui.view | qweb | Inherits portal.address_card |
website_sale.address_edit_button |
Address edit button | ir.ui.view | qweb | New |
website_sale.address_form_fields |
website_sale.address_form_fields | ir.ui.view | qweb | Inherits portal.address_form_fields |
website_sale.address_list |
website_sale.address_list | ir.ui.view | qweb | Inherits portal.address_list |
website_sale.alert_inline |
website_sale.alert_inline | ir.ui.view | qweb | New |
website_sale.all_products_link_name |
All Products name | ir.ui.view | qweb | New |
website_sale.alternative_products |
Alternative Products | ir.ui.view | qweb | Inherits website_sale.product |
website_sale.badge_extra_price |
Badge Extra Price | ir.ui.view | qweb | New |
website_sale.base_unit_price |
Product Base unit price | ir.ui.view | qweb | New |
website_sale.billing_address_list |
website_sale.billing_address_list | ir.ui.view | qweb | New |
website_sale.brand_promotion |
website_sale.brand_promotion | ir.ui.view | qweb | Inherits website.brand_promotion |
website_sale.carousel_product_indicators |
Carousel Product | ir.ui.view | qweb | New |
website_sale.carousel_product_indicators_bottom |
Carousel Product Indicators Bottom | ir.ui.view | qweb | Inherits website_sale.shop_product_carousel |
website_sale.carousel_product_indicators_left |
Carousel Product Indicators Left | ir.ui.view | qweb | Inherits website_sale.shop_product_carousel |
website_sale.cart |
Shopping Cart | ir.ui.view | qweb | New |
website_sale.cart_combo_item_line |
website_sale.cart_combo_item_line | ir.ui.view | qweb | New |
website_sale.cart_line_description_following_lines |
Shopping Cart Line Description Following Lines | ir.ui.view | qweb | New |
website_sale.cart_line_product_link |
Shopping Cart Line Product Link | ir.ui.view | qweb | New |
website_sale.cart_lines |
Shopping Cart Lines | ir.ui.view | qweb | New |
website_sale.cart_lines_price |
Shopping Cart Line Price | ir.ui.view | qweb | New |
website_sale.cart_lines_quantity |
Shopping Cart Line quantity | ir.ui.view | qweb | New |
website_sale.cart_product_price |
website_sale.cart_product_price | ir.ui.view | qweb | New |
website_sale.cart_summary_content |
website_sale.cart_summary_content | ir.ui.view | qweb | New |
website_sale.categorie_link |
Category Link | ir.ui.view | qweb | New |
website_sale.categories_recursive |
Category list | ir.ui.view | qweb | New |
website_sale.checkout |
website_sale.checkout | ir.ui.view | qweb | New |
website_sale.checkout_container_dropzone |
website_sale.checkout_container_dropzone | ir.ui.view | qweb | New |
website_sale.comparison_button |
website_sale.comparison_button | ir.ui.view | qweb | New |
website_sale.confirmation |
website_sale.confirmation | ir.ui.view | qweb | New |
website_sale.container_dropzone_above_price |
website_sale.container_dropzone_above_price | ir.ui.view | qweb | New |
website_sale.container_dropzone_above_product_details |
website_sale.container_dropzone_above_product_details | ir.ui.view | qweb | New |
website_sale.container_dropzone_above_specification |
website_sale.container_dropzone_above_specification | ir.ui.view | qweb | New |
website_sale.container_dropzone_below_product_details |
website_sale.container_dropzone_below_product_details | ir.ui.view | qweb | New |
website_sale.coupon_form |
Coupon form | ir.ui.view | qweb | New |
website_sale.cta_separator |
Product Info - Dividers | ir.ui.view | qweb | Inherits website_sale.product |
website_sale.cta_wrapper |
CTA Wrapper | ir.ui.view | qweb | New |
website_sale.cta_wrapper_boxed |
Bordered CTA Wrapper | ir.ui.view | qweb | Inherits website_sale.cta_wrapper |
website_sale.cta_wrapper_large |
Large CTA Wrapper | ir.ui.view | qweb | Inherits website_sale.cta_wrapper |
website_sale.delivery_address_list |
website_sale.delivery_address_list | ir.ui.view | qweb | New |
website_sale.delivery_form |
website_sale.delivery_form | ir.ui.view | qweb | New |
website_sale.delivery_method |
website_sale.delivery_method | ir.ui.view | qweb | New |
website_sale.documents |
website_sale.documents | ir.ui.view | qweb | New |
website_sale.dynamic_filter_template_product_product_products_item |
Generic Product Template (customizable) | ir.ui.view | qweb | New |
website_sale.dynamic_filter_template_product_public_category_clickable_items |
website_sale.dynamic_filter_template_product_public_category_clickable_items | ir.ui.view | qweb | Inherits website_sale.dynamic_filter_template_product_public_category_default |
website_sale.dynamic_filter_template_product_public_category_default |
website_sale.dynamic_filter_template_product_public_category_default | ir.ui.view | qweb | New |
website_sale.ecom_show_extra_fields |
Show Extra Fields | ir.ui.view | qweb | Inherits website_sale.product |
website_sale.editor_previews |
Enable edit previews | ir.ui.view | qweb | Inherits website_sale.products |
website_sale.empty_cart_svg |
website_sale.empty_cart_svg | ir.ui.view | qweb | New |
website_sale.empty_wishlist_svg |
website_sale.empty_wishlist_svg | ir.ui.view | qweb | New |
website_sale.extra_info |
Checkout Extra Info | ir.ui.view | qweb | New |
website_sale.filmstrip_categories |
Categories Filmstrip | ir.ui.view | qweb | New |
website_sale.filmstrip_categories_bordered |
Categories Filmstrip Bordered | ir.ui.view | qweb | Inherits website_sale.filmstrip_categories |
website_sale.filmstrip_categories_grid |
Categories Filmstrip Grid | ir.ui.view | qweb | Inherits website_sale.filmstrip_categories |
website_sale.filmstrip_categories_images |
Categories Filmstrip Basic | ir.ui.view | qweb | Inherits website_sale.filmstrip_categories |
website_sale.filmstrip_categories_large_images |
Categories Filmstrip Cover | ir.ui.view | qweb | Inherits website_sale.filmstrip_categories |
website_sale.filmstrip_categories_pills |
Categories Filmstrip Tabs | ir.ui.view | qweb | Inherits website_sale.filmstrip_categories |
website_sale.filmstrip_categories_tabs |
Categories Filmstrip Tabs | ir.ui.view | qweb | Inherits website_sale.filmstrip_categories |
website_sale.filter_color_attributes |
Color attributes in Filter | ir.ui.view | qweb | New |
website_sale.filter_image_attributes |
Image attributes in Filter | ir.ui.view | qweb | New |
website_sale.filter_pills_attributes |
Pills attributes in Filter | ir.ui.view | qweb | New |
website_sale.filter_products_price |
Filter by Prices | ir.ui.view | qweb | New |
website_sale.filter_products_tags |
Filter by Tags | ir.ui.view | qweb | New |
website_sale.filter_products_tags_list |
website_sale.filter_products_tags_list | ir.ui.view | qweb | New |
website_sale.filter_radio_and_multi_attributes |
Radio and Multi attributes in Filter | ir.ui.view | qweb | New |
website_sale.filter_range_attributes |
Range attributes in Filter | ir.ui.view | qweb | New |
website_sale.filter_select_attributes |
Select attributes in Filter | ir.ui.view | qweb | New |
website_sale.floating_bar |
Shop Floating Bar | ir.ui.view | qweb | Inherits website_sale.products |
website_sale.footer_pricelist_selector |
Footer Pricelist Selector | ir.ui.view | qweb | Inherits portal.frontend_layout |
website_sale.footer_pricelist_selector_with_language_selector |
website_sale.footer_pricelist_selector_with_language_selector | ir.ui.view | qweb | Inherits website_sale.footer_pricelist_selector |
website_sale.header_cart_link |
Header Cart Link | ir.ui.view | qweb | New |
website_sale.header_hide_empty_cart_link |
Header Hide Empty Cart link | ir.ui.view | qweb | Inherits website_sale.header_cart_link |
website_sale.header_hide_empty_wishlist_link |
website_sale.header_hide_empty_wishlist_link | ir.ui.view | qweb | Inherits website_sale.header_wishlist_link |
website_sale.header_pricelist_selector |
Header Pricelist Selector | ir.ui.view | qweb | Inherits website_sale.placeholder_header_pricelist_selector |
website_sale.header_wishlist_link |
Header Wishlist Link | ir.ui.view | qweb | New |
website_sale.o_wsale_offcanvas |
Offcanvas | ir.ui.view | qweb | New |
website_sale.option_collapse_categories_recursive |
Collapse Category Recursive | ir.ui.view | qweb | New |
website_sale.option_collapse_products_categories |
Collapsible Category List | ir.ui.view | qweb | Inherits website_sale.products_categories_list |
website_sale.packaging_title |
Packaging title | ir.ui.view | qweb | New |
website_sale.payment |
Payment | ir.ui.view | qweb | New |
website_sale.payment_confirmation_status |
website_sale.payment_confirmation_status | ir.ui.view | qweb | New |
website_sale.placeholder_header_pricelist_selector |
Placeholder Header Pricelist Selector | ir.ui.view | qweb | New |
website_sale.price_dynamic_filter_template_product_product |
Dynamic Product Filter Price | ir.ui.view | qweb | New |
website_sale.pricelist_selector |
Pricelist Selector | ir.ui.view | qweb | New |
website_sale.product |
Product | ir.ui.view | qweb | New |
website_sale.product_accordion |
Accordion On Product Page | ir.ui.view | qweb | New |
website_sale.product_add_to_wishlist |
Wishlist Button | ir.ui.view | qweb | Inherits website_sale.cta_wrapper |
website_sale.product_attribute_filters_form |
Product Attribute Filters Form | ir.ui.view | qweb | New |
website_sale.product_buy_now |
Buy Now Button | ir.ui.view | qweb | Inherits website_sale.cta_wrapper |
website_sale.product_buy_now_large |
Large Buy Now Button | ir.ui.view | qweb | Inherits website_sale.product_buy_now |
website_sale.product_cart_lines |
website_sale.product_cart_lines | ir.ui.view | qweb | Inherits website_sale.cart_lines |
website_sale.product_comment |
Discussion and Rating | ir.ui.view | qweb | Inherits website_sale.product |
website_sale.product_compare |
Comparator Page | ir.ui.view | qweb | New |
website_sale.product_image_and_ribbon |
Products Images and Ribbons | ir.ui.view | qweb | New |
website_sale.product_packaging_selector |
Product Packaging Selector | ir.ui.view | qweb | New |
website_sale.product_picture_magnify_click |
Image Zoom On Click | ir.ui.view | qweb | Inherits website_sale.product |
website_sale.product_price |
website_sale.product_price | ir.ui.view | qweb | New |
website_sale.product_quantity |
Select Quantity | ir.ui.view | qweb | Inherits website_sale.cta_wrapper |
website_sale.product_quantity_large |
Select Quantity Large | ir.ui.view | qweb | Inherits website_sale.product_quantity |
website_sale.product_ribbon |
website_sale.product_ribbon | ir.ui.view | qweb | New |
website_sale.product_search |
Searchbar On Product Page | ir.ui.view | qweb | Inherits website_sale.product |
website_sale.product_tags |
Product Tags | ir.ui.view | qweb | New |
website_sale.product_tile_element_visibility |
Product tile elements visibility | ir.ui.view | qweb | New |
website_sale.product_title |
website_sale.product_title | ir.ui.view | qweb | New |
website_sale.product_title_and_details |
website_sale.product_title_and_details | ir.ui.view | qweb | New |
website_sale.product_variant_preview |
website_sale.product_variant_preview | ir.ui.view | qweb | New |
website_sale.product_wishlist |
Wishlist Page | ir.ui.view | qweb | New |
website_sale.products |
Products | ir.ui.view | qweb | New |
website_sale.products_attributes |
Attributes & Variants filters | ir.ui.view | qweb | Inherits website_sale.products |
website_sale.products_attributes_collapsible |
Collapsed Attributes & Variants filters | ir.ui.view | qweb | Inherits website_sale.product_attribute_filters_form |
website_sale.products_attributes_top |
Attributes in top-nav | ir.ui.view | qweb | New |
website_sale.products_breadcrumb |
Products Breadcrumb | ir.ui.view | qweb | New |
website_sale.products_categories |
Categories in Left Side | ir.ui.view | qweb | New |
website_sale.products_categories_list |
eCommerce Categories | ir.ui.view | qweb | New |
website_sale.products_categories_list_collapsible |
Collapsed eCommerce Categories | ir.ui.view | qweb | Inherits website_sale.products_categories_list |
website_sale.products_categories_top |
Categories in top-nav | ir.ui.view | qweb | New |
website_sale.products_item |
Products item | ir.ui.view | qweb | New |
website_sale.products_mobile_cols_single |
Mobile: Show 1 product for row | ir.ui.view | qweb | Inherits website_sale.products |
website_sale.products_shop_title |
Show Shop Title | ir.ui.view | qweb | New |
website_sale.products_shop_title_align |
Align Shop Title | ir.ui.view | qweb | New |
website_sale.quick_reorder_button |
website_sale.quick_reorder_button | ir.ui.view | qweb | New |
website_sale.quick_reorder_history |
website_sale.quick_reorder_history | ir.ui.view | qweb | New |
website_sale.quick_reorder_sidebar |
website_sale.quick_reorder_sidebar | ir.ui.view | qweb | New |
website_sale.required_attributes |
Required b2b fields | ir.ui.view | qweb | Inherits website_sale.address_form_fields |
website_sale.ribbon_filter_pills |
Ribbon Filter Pills | ir.ui.view | qweb | New |
website_sale.s_dynamic_snippet_category_list |
Category List | ir.ui.view | qweb | New |
website_sale.s_dynamic_snippet_category_preview_data |
Category List Preview Data | ir.ui.view | qweb | New |
website_sale.s_dynamic_snippet_product_grid_template |
website_sale.s_dynamic_snippet_product_grid_template | ir.ui.view | qweb | Inherits website.s_dynamic_snippet_template |
website_sale.s_dynamic_snippet_products |
Products | ir.ui.view | qweb | New |
website_sale.s_dynamic_snippet_products_carousel |
Products Carousel | ir.ui.view | qweb | Inherits website_sale.s_dynamic_snippet_products |
website_sale.s_dynamic_snippet_products_grid |
Products Grid | ir.ui.view | qweb | Inherits website_sale.s_dynamic_snippet_products_carousel |
website_sale.s_dynamic_snippet_products_grid_preview_data |
Products Grid Preview Data | ir.ui.view | qweb | New |
website_sale.s_dynamic_snippet_products_preview_cards |
Products Preview Cards | ir.ui.view | qweb | New |
website_sale.s_dynamic_snippet_products_preview_data |
Products Carousel Preview Data | ir.ui.view | qweb | New |
website_sale.sale_order_portal_content_inherit_website_sale |
Orders Followup Products Links | ir.ui.view | qweb | Inherits sale.sale_order_portal_content |
website_sale.sale_order_re_order_btn |
Sale Order Order Again | ir.ui.view | qweb | Inherits sale.sale_order_portal_template |
website_sale.search |
Search Box | ir.ui.view | qweb | New |
website_sale.search_result_items |
website_sale.search_result_items | ir.ui.view | qweb | Inherits website.search_result_items |
website_sale.shop_page_empty_screen |
website_sale.shop_page_empty_screen | ir.ui.view | qweb | New |
website_sale.shop_product_buttons |
Products Actions | ir.ui.view | qweb | New |
website_sale.shop_product_carousel |
Shop Product Carousel | ir.ui.view | qweb | New |
website_sale.shop_product_grid |
Shop Product Grid | ir.ui.view | qweb | New |
website_sale.shop_product_image |
website_sale.shop_product_image | ir.ui.view | qweb | New |
website_sale.shop_product_images |
Shop Product Images | ir.ui.view | qweb | New |
website_sale.shorter_cart_summary |
website_sale.shorter_cart_summary | ir.ui.view | qweb | New |
website_sale.sidebar_dropzone_at_bottom |
website_sale.sidebar_dropzone_at_bottom | ir.ui.view | qweb | New |
website_sale.sidebar_dropzone_at_top |
website_sale.sidebar_dropzone_at_top | ir.ui.view | qweb | New |
website_sale.snippets |
e-commerce snippets | ir.ui.view | qweb | Inherits website.snippets |
website_sale.sort |
Sort-by Template | ir.ui.view | qweb | New |
website_sale.submit_button |
website_sale.submit_button | ir.ui.view | qweb | Inherits payment.submit_button |
website_sale.suggested_products_list |
Accessory Products in my cart | ir.ui.view | qweb | New |
website_sale.tax_indication |
website_sale.tax_indication | ir.ui.view | qweb | New |
website_sale.template_footer_website_sale |
eCommerce Footer | ir.ui.view | qweb | Inherits website.layout |
website_sale.template_header_boxed |
website_sale.template_header_boxed | ir.ui.view | qweb | Inherits website.template_header_boxed |
website_sale.template_header_default |
website_sale.template_header_default | ir.ui.view | qweb | Inherits website.template_header_default |
website_sale.template_header_hamburger |
website_sale.template_header_hamburger | ir.ui.view | qweb | Inherits website.template_header_hamburger |
website_sale.template_header_mobile |
website_sale.template_header_mobile | ir.ui.view | qweb | Inherits website.template_header_mobile |
website_sale.template_header_sales_four |
website_sale.template_header_sales_four | ir.ui.view | qweb | Inherits website.template_header_sales_four |
website_sale.template_header_sales_one |
website_sale.template_header_sales_one | ir.ui.view | qweb | Inherits website.template_header_sales_one |
website_sale.template_header_sales_three |
website_sale.template_header_sales_three | ir.ui.view | qweb | Inherits website.template_header_sales_three |
website_sale.template_header_sales_two |
website_sale.template_header_sales_two | ir.ui.view | qweb | Inherits website.template_header_sales_two |
website_sale.template_header_search |
website_sale.template_header_search | ir.ui.view | qweb | Inherits website.template_header_search |
website_sale.template_header_sidebar |
website_sale.template_header_sidebar | ir.ui.view | qweb | Inherits website.template_header_sidebar |
website_sale.template_header_stretch |
website_sale.template_header_stretch | ir.ui.view | qweb | Inherits website.template_header_stretch |
website_sale.template_header_vertical |
website_sale.template_header_vertical | ir.ui.view | qweb | Inherits website.template_header_vertical |
website_sale.typeahead_language_selector |
website_sale.typeahead_language_selector | ir.ui.view | qweb | Inherits portal.language_selector |
website_sale.variants |
website_sale.variants | ir.ui.view | qweb | New |
website_sale.website_sale_layout |
website_sale.website_sale_layout | ir.ui.view | qweb | Inherits website.layout |
website_sale.wishlist_button |
website_sale.wishlist_button | ir.ui.view | qweb | New |
website_sale.wizard_checkout |
Wizard Checkout | ir.ui.view | qweb | New |
website_sale_pricelist_form_view |
website_sale.pricelist.form | product.pricelist | form | Inherits product.product_pricelist_view |
website_sale_pricelist_tree_view |
product.pricelist.list.inherit.product | product.pricelist | list | Inherits product.product_pricelist_view_tree |
website_sale_visitor_page_view_graph |
website.track.view.graph | website.track | graph | New |
website_sale_visitor_page_view_search |
website.track.view.search | website.track | search | Inherits website.website_visitor_page_view_search |
website_sale_visitor_page_view_tree |
website.track.view.list | website.track | list | New |
website_sale_visitor_track_view_graph |
website.track.view.graph | website.track | graph | Inherits website.website_visitor_track_view_graph |
website_sale_visitor_track_view_tree |
website.track.view.list | website.track | list | Inherits website.website_visitor_track_view_tree |
website_sale_visitor_view_form |
website.visitor.view.form | website.visitor | form | Inherits website.website_visitor_view_form |
website_sale_visitor_view_kanban |
website.visitor.view.kanban | website.visitor | kanban | Inherits website.website_visitor_view_kanban |
website_sale_visitor_view_tree |
website.visitor.view.list | website.visitor | list | Inherits website.website_visitor_view_tree |
HTTP endpoints (62)
| Route(s) | Handler | Auth | Type | Methods | Flags |
|---|---|---|---|---|---|
| (inherited route override) | Cart.add_to_cart |
public | jsonrpc | POST | sudo website |
| (inherited route override) | Cart.cart |
public | http | ALL | sudo website |
| (inherited route override) | Cart.quick_add |
user | jsonrpc | POST | website |
| (inherited route override) | Cart.update_cart |
public | jsonrpc | POST | website |
/my/orders/reorder |
CustomerPortal.my_orders_reorder |
public | jsonrpc | ALL | sudo website |
| (inherited route override) | CustomerPortal.portal_order_page |
inherited | http | ALL | |
| (inherited route override) | Delivery.express_checkout_process_delivery_address |
public | jsonrpc | ALL | website |
/shop/delivery_methods |
Delivery.shop_delivery_methods |
public | jsonrpc | ALL | website |
/shop/get_delivery_rate |
Delivery.shop_get_delivery_rate |
public | jsonrpc | POST | sudo website |
/shop/set_delivery_method |
Delivery.shop_set_delivery_method |
public | jsonrpc | ALL | sudo website |
/website_sale/set_delivery_date |
Delivery.website_sale_set_delivery_date |
public | jsonrpc | ALL | website |
/shop/payment/transaction/<int:order_id> |
PaymentPortal.shop_payment_transaction |
public | jsonrpc | ALL | website |
/shop/compare/get_product_data |
ProductComparison.get_product_data |
public | jsonrpc | ALL | website |
/shop/compare |
ProductComparison.product_compare |
public | http | ALL | website |
/gmc.xml |
ProductFeed.gmc_feed |
public | http | ALL | website |
/shop/add/stock_notification |
ProductWishlist.add_stock_email_notification |
public | jsonrpc | ALL | sudo website |
/shop/wishlist/add |
ProductWishlist.add_to_wishlist |
public | jsonrpc | ALL | sudo website |
/shop/wishlist/remove/<int:wish_id> |
ProductWishlist.remove_from_wishlist |
public | jsonrpc | ALL | sudo website |
/shop/wishlist |
ProductWishlist.shop_wishlist |
public | http | ALL | website |
/shop/wishlist/get_product_ids |
ProductWishlist.shop_wishlist_get_product_ids |
public | jsonrpc | ALL | website |
| (inherited route override) | ThreadController.mail_message_post |
inherited | http | ALL | website |
| (inherited route override) | Website.autocomplete |
inherited | http | ALL | |
| (inherited route override) | Website.change_lang |
inherited | http | ALL | |
| (inherited route override) | Website.get_current_currency |
inherited | http | ALL | |
/shop/config/tag |
WebsiteSale._change_tag_config |
user | jsonrpc | ALL | |
/shop/config/website |
WebsiteSale._change_website_config |
user | jsonrpc | ALL | website |
/shop/product/extra-media |
WebsiteSale.add_product_media |
user | jsonrpc | ALL | website |
/shop/config/attribute |
WebsiteSale.change_attribute_config |
user | jsonrpc | ALL | |
/shop/config/product |
WebsiteSale.change_product_config |
user | jsonrpc | ALL | |
/shop/extra_info |
WebsiteSale.extra_info |
public | http | ALL | website |
/shop/product/is_add_to_cart_allowed |
WebsiteSale.is_add_to_cart_allowed |
public | jsonrpc | ALL | sudo website |
/shop/pricelist |
WebsiteSale.pricelist |
public | http | ALL | sudo website |
/shop/change_pricelist/<int:pricelist_id> |
WebsiteSale.pricelist_change |
public | http | ALL | website |
/shop/print/invoice |
WebsiteSale.print_invoice |
public | http | ALL | sudo website |
/shop/print |
WebsiteSale.print_saleorder |
public | http | ALL | sudo website |
| (inherited route override) | WebsiteSale.process_express_checkout |
public | jsonrpc | POST | website |
| (inherited route override) | WebsiteSale.product |
public | http | ALL | website |
/shop/<model("product.template"):product_template>/document/<int:document_id> |
WebsiteSale.product_document |
public | http | ALL | sudo website |
/shop/products/recently_viewed_delete |
WebsiteSale.products_recently_viewed_delete |
public | jsonrpc | ALL | sudo website |
/shop/product/resequence-image |
WebsiteSale.resequence_product_image |
user | jsonrpc | ALL | website |
/snippets/category/set_image |
WebsiteSale.set_category_image |
user | jsonrpc | ALL | |
| (inherited route override) | WebsiteSale.shop |
public | http | ALL | sudo website |
/shop/address |
WebsiteSale.shop_address |
public | http | GET | website |
/shop/address/submit |
WebsiteSale.shop_address_submit |
public | http | POST | website |
/shop/checkout |
WebsiteSale.shop_checkout |
public | http | GET | website |
/shop/payment |
WebsiteSale.shop_payment |
public | http | ALL | website |
/shop/confirmation |
WebsiteSale.shop_payment_confirmation |
public | http | ALL | sudo website |
/shop/payment/validate |
WebsiteSale.shop_payment_validate |
public | http | ALL | sudo website |
/shop/reload |
WebsiteSale.shop_reload |
public | jsonrpc | ALL | website |
/shop/unarchive_user_addresses |
WebsiteSale.shop_unarchive_user_addresses |
user | http | ALL | sudo |
/shop/update_address |
WebsiteSale.shop_update_address |
public | jsonrpc | ALL | sudo website |
| (inherited route override) | WebsiteSaleComboConfiguratorController.website_sale_combo_configurator_get_data |
public | jsonrpc | ALL | website |
| (inherited route override) | WebsiteSaleComboConfiguratorController.website_sale_combo_configurator_get_price |
public | jsonrpc | ALL | website |
/shop/donation/info |
WebsiteSaleDonation.donation_info |
public | jsonrpc | ALL | sudo website |
/website/form/shop.sale.order |
WebsiteSaleForm.website_form_saleorder |
public | http | POST | sudo website |
| (inherited route override) | WebsiteSaleProductConfiguratorController.website_sale_product_configurator_create_product |
public | jsonrpc | POST | website |
| (inherited route override) | WebsiteSaleProductConfiguratorController.website_sale_product_configurator_get_optional_products |
public | jsonrpc | ALL | website |
| (inherited route override) | WebsiteSaleProductConfiguratorController.website_sale_product_configurator_get_values |
public | jsonrpc | ALL | website |
| (inherited route override) | WebsiteSaleProductConfiguratorController.website_sale_product_configurator_update_combination |
public | jsonrpc | POST | website |
/sale/create_product_variant |
WebsiteSaleVariantController.create_product_variant |
public | jsonrpc | POST | |
/website_sale/get_combination_info |
WebsiteSaleVariantController.get_combination_info_website |
public | jsonrpc | POST | website |
/website_sale/get_attribute_images |
WebsiteSaleVariantController.get_dynamic_attribute_images |
public | jsonrpc | POST | website |
Models touched (43)
-
website_idMany2one → websitecomodel_name='website'help='Website through which this invoice was created for eCommerce orders.'readonly=True
-
preview_invoice(self)
-
abandoned_carts_amountIntegercompute='_compute_abandoned_carts'string='Amount of Abandoned Carts' -
abandoned_carts_countIntegercompute='_compute_abandoned_carts'string='Number of Abandoned Carts' -
website_idsOne2many → websitecomodel_name='website'inverse_name='salesteam_id'string='Websites'
-
get_abandoned_carts(self)
-
delivery_calendar_idMany2one → resource.calendarcheck_company=Truecomodel_name='resource.calendar' -
delivery_estimate_lead_daysInteger -
delivery_estimate_range_daysInteger -
enable_delivery_estimateBooleanhelp='Display estimated date to your customer. Editable if range is defined.'string='Estimated Delivery' -
website_descriptionTextreadonly=Falserelated='product_id.description_sale'string='Description for Online Quotations'
-
write(self, vals)Reset estimated delivery settings if delivery type is incompatible.
-
kpi_website_sale_totalBooleanstring='eCommerce Sales' -
kpi_website_sale_total_valueMonetarycompute='_compute_kpi_website_sale_total_value'
No public methods.
No new fields.
Public methods (0)No public methods.
No new fields.
Public methods (0)No public methods.
No new fields.
Public methods (0)No public methods.
-
category_idMany2one → product.attribute.categorycomodel_name='product.attribute.category'help='Set a category to regroup similar attributes under the same section in the Comparison page of eCommerce.'index=Truestring='Category' -
external_identifierCharhelp='External Identifier will ensure a precise matching between your attributes and attributes in SEO and other external platforms.'string='External Identifier' -
is_thumbnail_visibleBooleanhelp='Use product variant images instead of the attribute values displays.'string='Show Thumbnails' -
preview_variantsSelectiondefault='hidden'help='Instantly created variants are available for selection from your /shop page.'selection=[('visible', 'Visible'), ('hidden', 'Hidden'), ('hover', 'Hover')]string='On Product Cards' -
visibilitySelectiondefault='visible'selection=[('visible', 'Visible'), ('hidden', 'Hidden')]
No public methods.
-
attribute_idsOne2many → product.attributedomain="[('category_id', '=', False)]"string='Related Attributes' args: 'product.attribute', 'category_id' -
nameCharrequired=Truetranslate=True args: 'Category Name' -
sequenceIntegerdefault=10index=True args: 'Sequence'
No public methods.
No new fields.
Public methods (0)No public methods.
-
attached_on_saleSelectionhelp='Allows you to share the document with your customers within a sale.\nFrom Quotation: the document will be sent to and accessible by customers at any time.\ne.g. this option can be useful to share Product description files.\nOn Order Confirmation: the document will be sent to and accessible by customers.\ne.g. this option can be useful to share User Manual or digital content bought on ecommerce. \nOn Product Page: the document will be accessible by customers on the product page.\ne.g. this option can be useful to share Product description files.'ondelete={'shown_on_product_page': 'set default'}selection_add=[('shown_on_product_page', 'On Product Page'), ('quotation')]
No public methods.
-
access_tokenCharcopy=Falsedefault=<expr>readonly=Truerequired=True -
cache_expiryDatetimedefault=fields.Datetime.nowreadonly=Truerequired=True -
feed_cacheBinarycompute='_compute_feed_cache'readonly=Truestore=True -
lang_idMany2one → res.langcompute='_compute_lang_id'domain="[('id', 'in', website_lang_ids)]"help='Select the language to translate product names, descriptions, and other text in the feed.'precompute=Truereadonly=Falserequired=Truestore=Truestring='Language' args: 'res.lang' -
last_notification_dateDate -
nameCharrequired=True -
pricelist_idMany2one → product.pricelistdomain="[('website_id', 'in', (False, website_id)), ('selectable', '=', True)]"help='Specify a pricelist to localize the feed with a specific currency. If not set, the default website pricelist will be used.\nNote that the pricelist must be selectable on the website.' args: 'product.pricelist' -
product_category_idsMany2many → product.public.categorystring='Categories' args: 'product.public.category' -
targetSelectiondefault='gmc'required=Trueselection=[('gmc', 'Google Merchant Center')] -
urlCharcompute='_compute_url' -
website_idMany2one → websitedefault=<expr>index=Truerequired=True args: 'website' -
website_lang_idsMany2manyrelated='website_id.language_ids'
-
action_invalidate_cache(self)
-
attribute_value_idsMany2many → product.template.attribute.valuecomodel_name='product.template.attribute.value'copy=Falserelation='product_image_attribute_value_rel' -
can_image_1024_be_zoomedBooleancompute='_compute_can_image_1024_be_zoomed'store=Truestring='Can Image 1024 be zoomed' -
has_attribute_valueBooleancompute='_compute_has_attribute_value'store=True -
image_1920Image -
nameCharrequired=Truestring='Name' -
product_tmpl_idMany2one → product.templatecomodel_name='product.template'index=Trueondelete='cascade'string='Product Template' -
sequenceIntegerdefault=10 -
typeSelectionselection=[('primary', 'Primary'), ('secondary', 'Secondary')] -
video_urlCharhelp='URL of a video for showcasing your product.'string='Video URL'
-
create(self, vals_list)@api.model_create_multi -
unlink(self) -
write(self, vals)
-
codeChargroups='base.group_user'string='Access Code' -
selectableBooleanhelp='Allow the end user to choose this price list' -
tax_displaySelectionselection=[('tax_included', 'Taxes Included'), ('tax_excluded', 'Taxes Excluded')]string='eCommerce Price Display' -
website_idMany2one → websitecomodel_name='website'default=_default_websitedomain="[('company_id', '=?', company_id)]"help='If you want a pricelist to be available on a website,you must fill in this field or make it selectable.Otherwise, the pricelist will not apply to any website.'ondelete='restrict'string='Website'tracking=20
-
create(self, vals_list)@api.model_create_multi
No new fields.
Public methods (0)No public methods.
-
product_template_image_idsOne2manyreadonly=Falserelated='product_tmpl_id.product_template_image_ids' -
variant_image_idsMany2many → product.imagecomodel_name='product.image'compute='_compute_variant_image_ids'relation='product_product_image_rel'store=Truestring='Variant Extra Images' -
variant_ribbon_idMany2one → product.ribboncomodel_name='product.ribbon'string='Variant Ribbon' -
website_idMany2onereadonly=Falserelated='product_tmpl_id.website_id' -
website_urlCharcompute='_compute_product_website_url'help='The full URL to access the document through the website.'string='Website URL'
-
action_unschedule(self)Keep variants aligned with their template scheduling. -
create(self, vals_list)@api.model_create_multi -
open_website_url(self) -
website_publish_button(self) -
write(self, vals)
-
child_idOne2many → product.public.categorycomodel_name='product.public.category'inverse_name='parent_id'string='Children Categories' -
cover_imageImagehelp='Displayed only in the Category List Snippet.'string='Cover Image' -
has_published_productsBooleancompute='_compute_has_published_products'compute_sudo=Truesearch='_search_has_published_products' -
is_publishedBooleancompute='_compute_is_published' -
nameCharrequired=Truetranslate=True -
not_in_shopBooleancompute='_compute_not_in_shop'help='If checked, the category will not be displayed in the main catalog page'readonly=Falserecursive=Truestore=Truestring='Not in Shop' -
parent_idMany2one → product.public.categorycomodel_name='product.public.category'index=Trueondelete='cascade'string='Parent' -
parent_pathCharindex=True -
parents_and_selfMany2many → product.public.categorycomodel_name='product.public.category'compute='_compute_parents_and_self' -
product_tmpl_idsMany2many → product.templatecomodel_name='product.template'relation='product_public_category_product_template_rel' -
sequenceIntegerdefault=_default_sequenceindex=True -
website_descriptionHtmlsanitize_attributes=Falsesanitize_form=Falsesanitize_overridable=Truestring='Description'translate=html_translate -
website_footerHtmlsanitize_attributes=Falsesanitize_form=Falsestring='Category Footer'translate=html_translate
-
get_available_snippet_categories(self, website_id)@api.modelReturn parent categories available for selection in the dynamic category snippet. :param int website_id: ID of the current website :return: Available parent categories :rtype: list[dict]
-
assignSelectiondefault='manual'help='Defines how this ribbon is assigned to products:\n- Manually: You assign the ribbon manually to products.\n- Sale: Applied when the product is visibly on sale.\n- New: Applied based on the New period you will define.\n- Out Of Stock: Applied when the product is out of stock.'required=Trueselection=[('manual', 'Manually'), ('sale', 'On Sale'), ('new', 'When New'), ('out_of_stock', 'When out of stock')]string='Assign' -
bg_colorChardefault='#000000'required=Truestring='Background Color' -
nameCharrequired=Truesize=20string='Ribbon Name'translate=True -
new_periodIntegerdefault=30 -
positionSelectiondefault='left'required=Trueselection=[('left', 'Left'), ('right', 'Right')]string='Position' -
sequenceIntegerdefault=10 -
styleSelectiondefault='ribbon'help='Defines the display style:\n- Ribbon: Shows a ribbon banner on the product image.\n- Badge: Shows a small badge label on the product image.'required=Trueselection=[('ribbon', 'Ribbon'), ('tag', 'Badge')]string='Style' -
text_colorChardefault='#FFFFFF'required=Truestring='Text Color'
No public methods.
-
partner_idMany2one → res.partnerondelete='cascade'required=True args: 'res.partner' -
product_idMany2one → product.productondelete='cascade'required=True args: 'product.product' -
website_idMany2one → websiteondelete='cascade'required=True args: 'website'
No public methods.
No new fields.
Public methods (0)No public methods.
-
accessory_product_idsMany2many → product.productcheck_company=Truecolumn1='src_id'column2='dest_id'comodel_name='product.product'help='Accessories show up when the customer reviews the cart before payment (cross-sell strategy).'relation='product_accessory_rel'string='Accessory Products' -
allow_out_of_stock_orderBooleandefault=Truestring='Sell when Out-of-Stock' -
alternative_product_idsMany2many → product.templatecheck_company=Truecolumn1='src_id'column2='dest_id'comodel_name='product.template'help='Suggest alternatives to your customer (upsell strategy). Those products show up on the product page.'relation='product_alternative_rel'string='Alternative Products' -
available_thresholdFloatdefault=5.0string='Show Threshold' -
compare_list_priceMonetaryhelp='Add a strikethrough price to your /shop and product pages for comparison purposes.It will not be displayed if pricelists apply.'string='Compare to Price' -
descriptionHtmlindex='trigram' -
description_ecommerceHtmlindex='trigram'sanitize_attributes=Falsesanitize_form=Falsesanitize_overridable=Truestring='eCommerce Description'translate=html_translate -
description_saleTextindex='trigram' -
dropzone_above_priceHtmlsanitize_overridable=Truestring='Drop Zone Above Price'translate=html_translate -
dropzone_above_specificationHtmlsanitize_overridable=Truestring='Drop Zone Above Specification'translate=html_translate -
is_publishedBooleancompute='_compute_is_published'readonly=Falsestore=True -
minimum_quantityIntegerstring='Minimum Quantity' -
out_of_stock_messageHtmlstring='Out-of-Stock Message'translate=html_translate -
product_template_image_idsOne2many → product.imagecomodel_name='product.image'copy=Trueinverse_name='product_tmpl_id'string='Extra Product Media' -
public_categ_idsMany2many → product.public.categorycomodel_name='product.public.category'help="The product will be available in each mentioned eCommerce category. Go to Shop > Edit Click on the page and enable 'Categories' to view all eCommerce categories."relation='product_public_category_product_template_rel'string='Website Product Category' -
publish_dateDatetimecompute='_compute_publish_date'default=fields.Datetime.nowrequired=Truestore=Truestring='Publish Date' -
show_availabilityBooleandefault=Falsestring='Show availability Qty' -
suggest_accessory_productsBooleancompute='_compute_suggest_accessory_products'readonly=Falsestore=Truestring='Suggest Accessory Products' -
suggest_alternative_productsBooleancompute='_compute_suggest_alternative_products'readonly=Falsestore=Truestring='Suggest Alternative Products' -
suggest_optional_productsBooleancompute='_compute_suggest_optional_products'readonly=Falsestore=Truestring='Suggest Optional Products' -
suggested_products_last_updateDatetimestring='Last update of suggested products' -
variants_default_codeCharcompute='_compute_variants_default_code'help='Technical field to enhance performance when looking up default code of productvariants (LIKE/ILIKE)'index='trigram'init_storage='_init_column_variants_default_code'store=True -
website_descriptionHtmlindex='trigram'sanitize_attributes=Falsesanitize_form=Falsesanitize_overridable=Truestring='Description for the website'translate=html_translate -
website_ribbon_idMany2one → product.ribboncomodel_name='product.ribbon'string='Ribbon' -
website_sequenceIntegercopy=Falsedefault=_default_website_sequencehelp='Determine the display order in the Website E-commerce'index=Trueinit_storage='_init_column_website_sequence'string='Website Sequence' -
website_size_xIntegerdefault=1string='Size X' -
website_size_yIntegerdefault=1string='Size Y'
-
action_update_suggested_products(self) -
copy(self, default=None) -
create(self, vals_list)@api.model_create_multi -
create_product_variant(self, product_template_attribute_value_ids)Create if necessary and possible and return the id of the product variant matching the given combination for this template. Note AWA: Known "exploit" issues with this method: - This method could be used by an unauthenticated user to generate a lot of useless variants. Unfortunately, after discussing the matter with ODO, there's no easy and user-friendly way to block that behavior. We would have to use captcha/server actions to clean/... that are all not user-friendly/overkill mechanisms. - This method could be used to try to guess what product variant ids are created in the system and what product template ids are configured as "dynamic", but that does not seem like a big deal. The error messages are identical on purpose to avoid giving too much information to a potential attacker: - returning 0 when failing - returning the variant id whether it already existed or not :param product_template_attribute_value_ids: the combination for which to get or create variant :type product_template_attribute_value_ids: list of id of `product.template.attribute.value` :return: id of the product variant matching the combination or 0 :rtype: int -
get_attribute_value_mapping(self)Return variant attribute values grouped by attribute. :return: A list of dictionaries with the keys `id` (attribute id) and `values` (list of active PTAV ids and names). :rtype: list[dict] -
set_sequence_bottom(self) -
set_sequence_down(self) -
set_sequence_top(self) -
set_sequence_up(self) -
write(self, vals)
No new fields.
Public methods (0)No public methods.
No new fields.
Public methods (0)No public methods.
-
activeBooleandefault=Truerequired=True -
currency_idMany2one → res.currencyreadonly=Truerelated='website_id.currency_id' args: 'res.currency' -
partner_idMany2one → res.partnerindex='btree_not_null'string='Owner' args: 'res.partner' -
priceMonetarycurrency_field='currency_id'help='Price of the product when it has been added in the wishlist'string='Price' -
pricelist_idMany2one → product.pricelisthelp='Pricelist when added'string='Pricelist' args: 'product.pricelist' -
product_idMany2one → product.productrequired=Truestring='Product' args: 'product.product' -
website_idMany2one → websiteindex=Trueondelete='cascade'required=True args: 'website'
-
current(self)@api.modelGet all wishlist items that belong to current user or session, filter products that are unpublished.
-
free_order_labelChardefault='Confirm Order'help='The label to be displayed on the payment buttons for orders with Total Amount zero'string='Free Order Label'translate=True
No public methods.
-
account_on_checkoutSelectioncompute='_compute_account_on_checkout'inverse='_inverse_account_on_checkout'readonly=Falserequired=Trueselection=[('optional', 'Optional'), ('disabled', 'Disabled'), ('mandatory', 'Mandatory')]string='Customer Accounts' -
cart_abandoned_delayFloatreadonly=Falserelated='website_id.cart_abandoned_delay' -
cart_recovery_mail_templateMany2onereadonly=Falserelated='website_id.cart_recovery_mail_template_id' -
confirmation_email_template_idMany2onereadonly=Falserelated='website_id.confirmation_email_template_id' -
contact_us_link_urlCharreadonly=Falserelated='website_id.contact_us_link_url' -
default_allow_out_of_stock_orderBooleandefault=Truedefault_model='product.template'string='Continue selling when out-of-stock' -
default_available_thresholdFloatdefault=5.0default_model='product.template'string='Show Threshold' -
default_show_availabilityBooleandefault=Falsedefault_model='product.template'string='Show availability Qty' -
ecommerce_accessSelectionreadonly=Falserelated='website_id.ecommerce_access' -
group_automate_suggested_productsBooleangroup='website.group_website_restricted_editor'implied_group='website_sale.group_automate_suggested_products'string='Automate suggested products' -
group_gmc_feedBooleangroup='base.group_user'implied_group='website_sale.group_product_feed'string='Google Merchant Center' -
group_product_price_comparisonBooleangroup='base.group_user'help='Add a strikethrough price to your /shop and product pages for comparison purposes.It will not be displayed if pricelists apply.'implied_group='website_sale.group_product_price_comparison'string='Comparison Price' -
group_unpublish_out_of_stockBooleangroup='website.group_website_restricted_editor'implied_group='website_sale.group_unpublish_out_of_stock'string='Unpublish Out-of-Stock Products' -
journal_idMany2onereadonly=Falserelated='website_id.journal_id' -
module_website_sale_collectBooleanargs: 'Click & Collect' -
prevent_saleBooleanreadonly=Falserelated='website_id.prevent_sale' -
prevent_sale_forSelectionreadonly=Falserelated='website_id.prevent_sale_for' -
prevent_sale_for_categoriesMany2manyreadonly=Falserelated='website_id.prevent_sale_for_categories' -
rating_email_delayIntegerreadonly=Falserelated='website_id.rating_email_delay' -
rating_email_template_idMany2onereadonly=Falserelated='website_id.rating_email_template_id' -
restricted_uom_idsMany2manyreadonly=Falserelated='website_id.restricted_uom_ids' -
salesperson_idMany2onereadonly=Falserelated='website_id.salesperson_id' -
salesteam_idMany2onereadonly=Falserelated='website_id.salesteam_id' -
send_abandoned_cart_followupBooleanreadonly=Falserelated='website_id.send_abandoned_cart_followup' -
send_order_rating_emailsBooleanreadonly=Falserelated='website_id.send_order_rating_emails' -
show_line_subtotals_tax_selectionSelectionreadonly=Falserelated='website_id.show_line_subtotals_tax_selection' -
website_show_reference_priceBooleanreadonly=Falserelated='website_id.show_product_reference_price'
-
action_open_product_feeds(self)@api.readonlyOpen the list view to manage the feed specific to the current website. -
action_open_sale_mail_templates(self)@api.readonly -
set_values(self)
No new fields.
Public methods (0)No public methods.
-
wishlist_idsOne2many → product.wishlistcomodel_name='product.wishlist'domain=[('active', '=', True)]inverse_name='partner_id'string='Wishlist'
-
write(self, vals)
No new fields.
Public methods (0)No public methods.
-
amount_deliveryMonetarycompute='_compute_amount_delivery'help='Tax included or excluded depending on the website configuration.'string='Delivery Amount' -
assigned_website_idMany2one → websitecheck_company=Truecomodel_name='website'compute='_compute_assigned_website_id'store=Truestring='Website' -
cart_quantityIntegercompute='_compute_cart_info'string='Cart Quantity' -
cart_recovery_email_sentBooleanstring='Cart recovery email already sent' -
is_abandoned_cartBooleancompute='_compute_abandoned_cart'search='_search_abandoned_cart'string='Abandoned Cart' -
is_rating_email_sentBooleanstring='Rating email already sent' -
only_servicesBooleancompute='_compute_cart_info'string='Only Services' -
website_idMany2one → websitecheck_company=Truecomodel_name='website'help='Website through which this order was placed for eCommerce orders.'readonly=Truestring='eCommerce Website' -
website_order_lineOne2many → sale.order.linecomodel_name='sale.order.line'compute='_compute_website_order_line'string='Order Lines displayed on Website'
-
action_confirm(self) -
action_preview_sale_order(self) -
action_recovery_email_send(self) -
create(self, vals_list)@api.model_create_multi -
get_base_url(self) -
retrieve_ecommerce_dashboard(self, period_days)@api.modelRetrieve statistics for the eCommerce dashboard for a given period(number of days). :param int period_days: The selected days used to filter orders and visitors. :return: A dictionary containing all computed dashboard statistics. :rtype: dict
-
is_donationBooleancompute='_compute_is_donation' -
name_shortCharcompute='_compute_name_short'
-
get_description_following_lines(self)
-
is_abandoned_cartBooleanreadonly=Truestring='Abandoned Cart' -
public_categ_idsMany2manyrelated='product_tmpl_id.public_categ_ids'string='eCommerce Categories' -
website_idMany2one → websitereadonly=True args: 'website'
No public methods.
No new fields.
Public methods (1)-
enable_view(self, xml_id)@api.modelOverride of `theme.utils` to disable all category style templates when enabling one.
-
account_on_checkoutSelectiondefault='optional'selection=[('optional', 'Optional'), ('disabled', 'Disabled (buy as guest)'), ('mandatory', 'Mandatory (no guest checkout)')]string='Customer Accounts' -
align_category_contentBooleandefault=Falsehelp="Align the category content on the shop page. Corresponds to the 'Center Content' editor option."string='Align Category Content' -
auth_signup_uninvitedSelectiondefault='b2c' -
cart_abandoned_delayFloatdefault=10.0string='Abandoned Delay' -
cart_recovery_mail_template_idMany2one → mail.templatecomodel_name='mail.template'default=_default_recovery_mail_templatedomain=[('model', '=', 'sale.order')]string='Cart Recovery Email' -
confirmation_email_template_idMany2one → mail.templatecomodel_name='mail.template'default=_default_confirmation_email_templatedomain=[('model', '=', 'sale.order')] -
contact_us_link_urlChardefault='/contactus'string='Link URL'translate=True -
currency_idMany2one → res.currencycomodel_name='res.currency'compute='_compute_currency_id'compute_sql='_compute_sql_currency_id'compute_sudo=Truestring='Default Currency' -
ecommerce_accessSelectiondefault='everyone'required=Trueselection=[('everyone', 'All users'), ('logged_in', 'Logged in users')] -
extra_step_category_idsMany2many → product.public.categorycomodel_name='product.public.category'help='If set, the extra step is only shown when the cart contains products from these eCommerce categories.'relation='website_extra_step_category_rel'string='Extra Step Categories' -
journal_idMany2one → account.journalcheck_company=Truecomodel_name='account.journal'domain=[('type', '=', 'sale')]string='Default Website Journal' -
prevent_saleBooleanstring='Hide Add To Cart' -
prevent_sale_forSelectiondefault='zero_price'selection=[('zero_price', '0 price products'), ('specific_categories', 'Specific categories')]string='Prevent Sale For' -
prevent_sale_for_categoriesMany2many → product.public.categorycomodel_name='product.public.category'string='Categories' -
pricelist_idMany2one → product.pricelistcomodel_name='product.pricelist'compute='_compute_pricelist_id'compute_sudo=Trueinverse='_inverse_pricelist_id' -
pricelist_idsOne2many → product.pricelistcomodel_name='product.pricelist'compute='_compute_pricelist_ids'string='Price list available for this Ecommerce/Website' -
product_page_cols_orderSelectiondefault='regular'selection=[('regular', 'Regular order'), ('inverse', 'Inverse order')]string='Product Page main columns order' -
product_page_containerSelectiondefault='unset'selection=[('unset', 'Unset'), ('regular', 'Regular'), ('fluid', 'Full-width')] -
product_page_grid_columnsIntegerdefault=2 -
product_page_image_layoutSelectiondefault='carousel'required=Trueselection=[('carousel', 'Carousel'), ('grid', 'Grid')] -
product_page_image_ratioSelectiondefault='1_1'required=Trueselection=[('auto', 'Auto'), ('21_9', 'Wider (21/9)'), ('16_9', 'Wide (16/9)'), ('4_3', 'Landscape (4/3)'), ('6_5', 'Horizontal (6/5)'), ('1_1', 'Default (1/1)'), ('4_5', 'Portrait (4/5)'), ('2_3', 'Vertical (2/3)')] -
product_page_image_ratio_mobileSelectiondefault='auto'required=Trueselection=[('auto', 'Auto'), ('21_9', 'Wider (21/9)'), ('16_9', 'Wide (16/9)'), ('4_3', 'Landscape (4/3)'), ('6_5', 'Horizontal (6/5)'), ('1_1', 'Default (1/1)'), ('4_5', 'Portrait (4/5)'), ('2_3', 'Vertical (2/3)')] -
product_page_image_roundnessSelectiondefault='none'required=Trueselection=[('none', 'None'), ('small', 'Small'), ('medium', 'Medium'), ('big', 'Big')] -
product_page_image_spacingSelectiondefault='none'required=Trueselection=[('none', 'None'), ('small', 'Small'), ('medium', 'Medium'), ('big', 'Big')] -
product_page_image_widthSelectiondefault='50_pc'required=Trueselection=[('none', 'Hidden'), ('33_pc', '33 %'), ('50_pc', '50 %'), ('66_pc', '66 %'), ('100_pc', '100 %')] -
rating_email_delayIntegerdefault=5string='Days After Order to Send Rating Email' -
rating_email_template_idMany2one → mail.templatecomodel_name='mail.template'default=<expr>domain=[('model', '=', 'sale.order')] -
restricted_uom_idsMany2many → uom.uomcomodel_name='uom.uom'string='Restrict Packagings' -
salesperson_idMany2one → res.userscomodel_name='res.users'domain=[('share', '=', False)]string='Salesperson' -
salesteam_idMany2one → crm.teamcomodel_name='crm.team'default=_default_salesteam_idindex='btree_not_null'ondelete='set null'string='Sales Team' -
send_abandoned_cart_email_activation_timeDatetimecompute='_compute_send_abandoned_cart_email_activation_time'store=Truestring="Time when the 'Send abandoned cart' feature was activated for emails followup." -
send_abandoned_cart_followupBooleanstring='Send Follow-up' -
send_order_rating_emailsBooleandefault=Falsestring='Request ratings' -
shop_default_sortSelectiondefault='website_sequence asc'required=Trueselection=[('website_sequence asc', 'Featured'), ('publish_date desc', 'Newest Arrivals'), ('name asc', 'Name (A-Z)'), ('list_price asc', 'Price - Low to High'), ('list_price desc', 'Price - High to Low')] -
shop_extra_field_idsOne2many → website.sale.extra.fieldcomodel_name='website.sale.extra.field'inverse_name='website_id'string='E-Commerce Extra Fields' -
shop_gapChardefault='16px'required=Falsestring='Grid-gap on the shop' -
shop_opt_products_design_classesChardefault='o_wsale_products_opt_layout_catalog o_wsale_products_opt_design_thumbs o_wsale_products_opt_name_color_regular o_wsale_products_opt_rounded_2 o_wsale_products_opt_thumb_cover o_wsale_products_opt_img_secondary_show o_wsale_products_opt_img_hover_zoom_out_light o_wsale_products_opt_has_cta o_wsale_products_opt_actions_onhover o_wsale_products_opt_has_wishlist o_wsale_products_opt_wishlist_fixed o_wsale_products_opt_has_description o_wsale_products_opt_actions_subtle o_wsale_products_opt_cc1'help='CSS class for shop products design'string='Shop Design Class' -
shop_page_containerSelectiondefault='regular'selection=[('regular', 'Regular'), ('fluid', 'Full-width')] -
shop_ppgIntegerdefault=21string='Number of products in the grid on the shop' -
shop_pprIntegerdefault=3string='Number of grid columns on the shop' -
show_category_descriptionBooleandefault=Truehelp="Display the category description on the shop page. Corresponds to the 'Show Description' editor option."string='Show Category Description' -
show_category_titleBooleandefault=Falsehelp="Display the category title on the shop page. Corresponds to the 'Show Title' editor option."string='Show Category Title' -
show_line_subtotals_tax_selectionSelectioncompute='_compute_show_line_subtotals_tax_selection'precompute=Truereadonly=Falserequired=Trueselection=[('tax_excluded', 'Tax Excluded'), ('tax_included', 'Tax Included')]store=Truestring='Display Product Prices' -
show_product_reference_priceBooleanstring='Product Reference Price' -
tax_displaySelectioncompute='_compute_tax_display'selection=[('tax_excluded', 'Tax Excluded'), ('tax_included', 'Tax Included')] -
wishlist_gapChardefault='16px'help='Gap between products on the wishlist page'string='Wishlist Grid Gap' -
wishlist_grid_columnsIntegerdefault=5help='Number of columns to display on the wishlist page'string='Wishlist Grid Columns' -
wishlist_mobile_columnsIntegerdefault=2help='Number of columns to display on mobile for the wishlist page (1 or 2)'string='Wishlist Mobile Columns' -
wishlist_opt_products_design_classesChardefault='o_wsale_products_opt_layout_catalog o_wsale_products_opt_design_thumbs o_wsale_products_opt_name_color_regular o_wsale_products_opt_thumb_cover o_wsale_products_opt_img_secondary_show o_wsale_products_opt_img_hover_zoom_out_light o_wsale_products_opt_has_cta o_wsale_products_opt_actions_inline o_wsale_products_opt_has_description o_wsale_products_opt_actions_promote o_wsale_products_opt_cc1 'help='CSS class for wishlist page design'string='Wishlist Page Design Class'
-
action_dashboard_redirect(self)@api.model -
configurator_addons_apply(self, industry_name=None, **kwargs)Override of `website` to generate eCommerce categories for a given industry using AI. -
configurator_apply(self, *, shop_page_style_option=None, product_page_style_option=None, **kwargs)@api.modelOverride of `website` to apply eCommerce page style configurations. :param str shop_page_style_option: The key of the selected shop page style option. See `const.SHOP_PAGE_STYLE_MAPPING`. :param str product_page_style_option: The key of the selected product page style option. See `const.PRODUCT_PAGE_STYLE_MAPPING`. -
create(self, vals_list)@api.model_create_multi -
get_configurator_product_page_styles(self)@api.modelFormat and return ids and images of each product page style for website onboarding. :return: The product page style information. :rtype: list[dict] -
get_configurator_shop_page_styles(self)@api.modelFormat and return the ids and images of each shop page style for website onboarding. :return: The shop page style information. :rtype: list[dict] -
get_cta_data(self, website_purpose, website_type) -
get_pricelist_available(self, show_visible=False)Return the list of pricelists that can be used on website for the current user. Country restrictions will be detected with GeoIP (if installed). :param bool show_visible: if True, we don't display pricelist where selectable is False (Eg: Code promo) :returns: pricelist recordset -
get_suggested_controllers(self) -
has_ecommerce_access(self)Return whether the current user is allowed to access eCommerce-related content. -
is_pricelist_available(self, pl_id)Return a boolean to specify if a specific pricelist can be manually set on the website. Warning: It check only if pricelist is in the 'selectable' pricelists or the current pricelist. :param int pl_id: The pricelist id to check :returns: Boolean, True if valid / available -
sale_product_domain(self) -
sale_reset(self) -
write(self, vals)
-
alertsJson
No public methods.
-
back_button_labelChartranslate=True -
main_button_labelChartranslate=True -
nameCharcopy=Truerequired=Truetranslate=True -
sequenceInteger -
show_in_breadcrumbBooleandefault=True -
step_hrefCharrequired=Truestring='Href' -
website_idMany2one → websiteondelete='cascade' args: 'website'
-
validate_checkout_progress(self, step_href, order_sudo, **kwargs)@api.model@api.privateCheck whether all checkout steps preceding `step_href` are valid and complete, and return the incomplete page otherwise. :param str step_href: Href of the current checkout step :param sale.order order_sudo: The current cart, sudoed. :param dict kwargs: Extra arguments forwarded to each step validation methods. :return: The incomplete or invalid step href if any; otherwise, None. :rtype: str | None
No new fields.
Public methods (0)No public methods.
No new fields.
Public methods (0)No public methods.
-
field_idMany2one → ir.model.fieldscomodel_name='ir.model.fields'domain=[('model_id.model', '=', 'product.template'), ('ttype', 'in', ['char', 'binary'])]ondelete='cascade'required=True -
labelCharrelated='field_id.field_description' -
nameCharrelated='field_id.name' -
sequenceIntegerdefault=10 -
website_idMany2one → websitecomodel_name='website'index='btree_not_null'
No public methods.
-
product_cross_sellingBooleanhelp='True only for product filters that require a product_id because they relate to cross selling'string='About cross selling products'
-
default_get(self, fields)@api.model
-
product_idMany2one → product.productcomodel_name='product.product'index='btree_not_null'ondelete='cascade'readonly=True
No public methods.
-
product_countIntegercompute='_compute_product_statistics'help='Total number of product viewed'string='Products Views' -
product_idsMany2many → product.productcomodel_name='product.product'compute='_compute_product_statistics'string='Visited Products' -
visitor_product_countIntegercompute='_compute_product_statistics'help='Total number of views on products'string='Product Views'
No public methods.
-
emailCharrequired=Truestring='Your Email' -
log_messageTextstring='Message' -
order_idMany2one → sale.ordercomodel_name='sale.order'index=Truerequired=Truestring='Order' -
order_referenceCharreadonly=Falserelated='order_id.name'store=True -
recipient_emailsCharstring='Recipient Emails'
-
create(self, vals_list)@api.model_create_multi -
website_form_input_filter(self, request, values)
Loading…
Loading…
Loading…
Loading…
Loading…
Loading…
Loading…
Loading…
Loading…
Loading…
Loading…
Loading…