TIP: You can type at any time to perform a new search.

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 info_outline

Views touched (244)
XML IDNameModelTypeStatus
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)HandlerAuthTypeMethodsFlags
(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)

New fields (1)
  • website_id Many2one → website
    comodel_name='website' help='Website through which this invoice was created for eCommerce orders.' readonly=True
Public methods (1)
  • preview_invoice(self)

New fields (3)
  • abandoned_carts_amount Integer
    compute='_compute_abandoned_carts' string='Amount of Abandoned Carts'
  • abandoned_carts_count Integer
    compute='_compute_abandoned_carts' string='Number of Abandoned Carts'
  • website_ids One2many → website
    comodel_name='website' inverse_name='salesteam_id' string='Websites'
Public methods (1)
  • get_abandoned_carts(self)

New fields (5)
  • delivery_calendar_id Many2one → resource.calendar
    check_company=True comodel_name='resource.calendar'
  • delivery_estimate_lead_days Integer
  • delivery_estimate_range_days Integer
  • enable_delivery_estimate Boolean
    help='Display estimated date to your customer. Editable if range is defined.' string='Estimated Delivery'
  • website_description Text
    readonly=False related='product_id.description_sale' string='Description for Online Quotations'
Public methods (1)
  • write(self, vals)
    Reset estimated delivery settings if delivery type is incompatible.

New fields (2)
  • kpi_website_sale_total Boolean
    string='eCommerce Sales'
  • kpi_website_sale_total_value Monetary
    compute='_compute_kpi_website_sale_total_value'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (5)
  • category_id Many2one → product.attribute.category
    comodel_name='product.attribute.category' help='Set a category to regroup similar attributes under the same section in the Comparison page of eCommerce.' index=True string='Category'
  • external_identifier Char
    help='External Identifier will ensure a precise matching between your attributes and attributes in SEO and other external platforms.' string='External Identifier'
  • is_thumbnail_visible Boolean
    help='Use product variant images instead of the attribute values displays.' string='Show Thumbnails'
  • preview_variants Selection
    default='hidden' help='Instantly created variants are available for selection from your /shop page.' selection=[('visible', 'Visible'), ('hidden', 'Hidden'), ('hover', 'Hover')] string='On Product Cards'
  • visibility Selection
    default='visible' selection=[('visible', 'Visible'), ('hidden', 'Hidden')]
Public methods (0)

No public methods.

New fields (3)
  • attribute_ids One2many → product.attribute
    domain="[('category_id', '=', False)]" string='Related Attributes' args: 'product.attribute', 'category_id'
  • name Char
    required=True translate=True args: 'Category Name'
  • sequence Integer
    default=10 index=True args: 'Sequence'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (1)
  • attached_on_sale Selection
    help='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')]
Public methods (0)

No public methods.

New fields (12)
  • access_token Char
    copy=False default=<expr> readonly=True required=True
  • cache_expiry Datetime
    default=fields.Datetime.now readonly=True required=True
  • feed_cache Binary
    compute='_compute_feed_cache' readonly=True store=True
  • lang_id Many2one → res.lang
    compute='_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=True readonly=False required=True store=True string='Language' args: 'res.lang'
  • last_notification_date Date
  • name Char
    required=True
  • pricelist_id Many2one → product.pricelist
    domain="[('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_ids Many2many → product.public.category
    string='Categories' args: 'product.public.category'
  • target Selection
    default='gmc' required=True selection=[('gmc', 'Google Merchant Center')]
  • url Char
    compute='_compute_url'
  • website_id Many2one → website
    default=<expr> index=True required=True args: 'website'
  • website_lang_ids Many2many
    related='website_id.language_ids'
Public methods (1)
  • action_invalidate_cache(self)

New fields (9)
  • attribute_value_ids Many2many → product.template.attribute.value
    comodel_name='product.template.attribute.value' copy=False relation='product_image_attribute_value_rel'
  • can_image_1024_be_zoomed Boolean
    compute='_compute_can_image_1024_be_zoomed' store=True string='Can Image 1024 be zoomed'
  • has_attribute_value Boolean
    compute='_compute_has_attribute_value' store=True
  • image_1920 Image
  • name Char
    required=True string='Name'
  • product_tmpl_id Many2one → product.template
    comodel_name='product.template' index=True ondelete='cascade' string='Product Template'
  • sequence Integer
    default=10
  • type Selection
    selection=[('primary', 'Primary'), ('secondary', 'Secondary')]
  • video_url Char
    help='URL of a video for showcasing your product.' string='Video URL'
Public methods (3)
  • create(self, vals_list)
    @api.model_create_multi
  • unlink(self)
  • write(self, vals)

New fields (4)
  • code Char
    groups='base.group_user' string='Access Code'
  • selectable Boolean
    help='Allow the end user to choose this price list'
  • tax_display Selection
    selection=[('tax_included', 'Taxes Included'), ('tax_excluded', 'Taxes Excluded')] string='eCommerce Price Display'
  • website_id Many2one → website
    comodel_name='website' default=_default_website domain="[('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
Public methods (1)
  • create(self, vals_list)
    @api.model_create_multi

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (5)
  • product_template_image_ids One2many
    readonly=False related='product_tmpl_id.product_template_image_ids'
  • variant_image_ids Many2many → product.image
    comodel_name='product.image' compute='_compute_variant_image_ids' relation='product_product_image_rel' store=True string='Variant Extra Images'
  • variant_ribbon_id Many2one → product.ribbon
    comodel_name='product.ribbon' string='Variant Ribbon'
  • website_id Many2one
    readonly=False related='product_tmpl_id.website_id'
  • website_url Char
    compute='_compute_product_website_url' help='The full URL to access the document through the website.' string='Website URL'
Public methods (5)
  • 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)

New fields (13)
  • child_id One2many → product.public.category
    comodel_name='product.public.category' inverse_name='parent_id' string='Children Categories'
  • cover_image Image
    help='Displayed only in the Category List Snippet.' string='Cover Image'
  • has_published_products Boolean
    compute='_compute_has_published_products' compute_sudo=True search='_search_has_published_products'
  • is_published Boolean
    compute='_compute_is_published'
  • name Char
    required=True translate=True
  • not_in_shop Boolean
    compute='_compute_not_in_shop' help='If checked, the category will not be displayed in the main catalog page' readonly=False recursive=True store=True string='Not in Shop'
  • parent_id Many2one → product.public.category
    comodel_name='product.public.category' index=True ondelete='cascade' string='Parent'
  • parent_path Char
    index=True
  • parents_and_self Many2many → product.public.category
    comodel_name='product.public.category' compute='_compute_parents_and_self'
  • product_tmpl_ids Many2many → product.template
    comodel_name='product.template' relation='product_public_category_product_template_rel'
  • sequence Integer
    default=_default_sequence index=True
  • website_description Html
    sanitize_attributes=False sanitize_form=False sanitize_overridable=True string='Description' translate=html_translate
  • website_footer Html
    sanitize_attributes=False sanitize_form=False string='Category Footer' translate=html_translate
Public methods (1)
  • get_available_snippet_categories(self, website_id)
    @api.model
    Return 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]

New fields (8)
  • assign Selection
    default='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=True selection=[('manual', 'Manually'), ('sale', 'On Sale'), ('new', 'When New'), ('out_of_stock', 'When out of stock')] string='Assign'
  • bg_color Char
    default='#000000' required=True string='Background Color'
  • name Char
    required=True size=20 string='Ribbon Name' translate=True
  • new_period Integer
    default=30
  • position Selection
    default='left' required=True selection=[('left', 'Left'), ('right', 'Right')] string='Position'
  • sequence Integer
    default=10
  • style Selection
    default='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=True selection=[('ribbon', 'Ribbon'), ('tag', 'Badge')] string='Style'
  • text_color Char
    default='#FFFFFF' required=True string='Text Color'
Public methods (0)

No public methods.

New fields (3)
  • partner_id Many2one → res.partner
    ondelete='cascade' required=True args: 'res.partner'
  • product_id Many2one → product.product
    ondelete='cascade' required=True args: 'product.product'
  • website_id Many2one → website
    ondelete='cascade' required=True args: 'website'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (27)
  • accessory_product_ids Many2many → product.product
    check_company=True column1='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_order Boolean
    default=True string='Sell when Out-of-Stock'
  • alternative_product_ids Many2many → product.template
    check_company=True column1='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_threshold Float
    default=5.0 string='Show Threshold'
  • compare_list_price Monetary
    help='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'
  • description Html
    index='trigram'
  • description_ecommerce Html
    index='trigram' sanitize_attributes=False sanitize_form=False sanitize_overridable=True string='eCommerce Description' translate=html_translate
  • description_sale Text
    index='trigram'
  • dropzone_above_price Html
    sanitize_overridable=True string='Drop Zone Above Price' translate=html_translate
  • dropzone_above_specification Html
    sanitize_overridable=True string='Drop Zone Above Specification' translate=html_translate
  • is_published Boolean
    compute='_compute_is_published' readonly=False store=True
  • minimum_quantity Integer
    string='Minimum Quantity'
  • out_of_stock_message Html
    string='Out-of-Stock Message' translate=html_translate
  • product_template_image_ids One2many → product.image
    comodel_name='product.image' copy=True inverse_name='product_tmpl_id' string='Extra Product Media'
  • public_categ_ids Many2many → product.public.category
    comodel_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_date Datetime
    compute='_compute_publish_date' default=fields.Datetime.now required=True store=True string='Publish Date'
  • show_availability Boolean
    default=False string='Show availability Qty'
  • suggest_accessory_products Boolean
    compute='_compute_suggest_accessory_products' readonly=False store=True string='Suggest Accessory Products'
  • suggest_alternative_products Boolean
    compute='_compute_suggest_alternative_products' readonly=False store=True string='Suggest Alternative Products'
  • suggest_optional_products Boolean
    compute='_compute_suggest_optional_products' readonly=False store=True string='Suggest Optional Products'
  • suggested_products_last_update Datetime
    string='Last update of suggested products'
  • variants_default_code Char
    compute='_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_description Html
    index='trigram' sanitize_attributes=False sanitize_form=False sanitize_overridable=True string='Description for the website' translate=html_translate
  • website_ribbon_id Many2one → product.ribbon
    comodel_name='product.ribbon' string='Ribbon'
  • website_sequence Integer
    copy=False default=_default_website_sequence help='Determine the display order in the Website E-commerce' index=True init_storage='_init_column_website_sequence' string='Website Sequence'
  • website_size_x Integer
    default=1 string='Size X'
  • website_size_y Integer
    default=1 string='Size Y'
Public methods (10)
  • 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)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (7)
  • active Boolean
    default=True required=True
  • currency_id Many2one → res.currency
    readonly=True related='website_id.currency_id' args: 'res.currency'
  • partner_id Many2one → res.partner
    index='btree_not_null' string='Owner' args: 'res.partner'
  • price Monetary
    currency_field='currency_id' help='Price of the product when it has been added in the wishlist' string='Price'
  • pricelist_id Many2one → product.pricelist
    help='Pricelist when added' string='Pricelist' args: 'product.pricelist'
  • product_id Many2one → product.product
    required=True string='Product' args: 'product.product'
  • website_id Many2one → website
    index=True ondelete='cascade' required=True args: 'website'
Public methods (1)
  • current(self)
    @api.model
    Get all wishlist items that belong to current user or session, filter products that are unpublished.

New fields (1)
  • free_order_label Char
    default='Confirm Order' help='The label to be displayed on the payment buttons for orders with Total Amount zero' string='Free Order Label' translate=True
Public methods (0)

No public methods.

New fields (27)
  • account_on_checkout Selection
    compute='_compute_account_on_checkout' inverse='_inverse_account_on_checkout' readonly=False required=True selection=[('optional', 'Optional'), ('disabled', 'Disabled'), ('mandatory', 'Mandatory')] string='Customer Accounts'
  • cart_abandoned_delay Float
    readonly=False related='website_id.cart_abandoned_delay'
  • cart_recovery_mail_template Many2one
    readonly=False related='website_id.cart_recovery_mail_template_id'
  • confirmation_email_template_id Many2one
    readonly=False related='website_id.confirmation_email_template_id'
  • contact_us_link_url Char
    readonly=False related='website_id.contact_us_link_url'
  • default_allow_out_of_stock_order Boolean
    default=True default_model='product.template' string='Continue selling when out-of-stock'
  • default_available_threshold Float
    default=5.0 default_model='product.template' string='Show Threshold'
  • default_show_availability Boolean
    default=False default_model='product.template' string='Show availability Qty'
  • ecommerce_access Selection
    readonly=False related='website_id.ecommerce_access'
  • group_automate_suggested_products Boolean
    group='website.group_website_restricted_editor' implied_group='website_sale.group_automate_suggested_products' string='Automate suggested products'
  • group_gmc_feed Boolean
    group='base.group_user' implied_group='website_sale.group_product_feed' string='Google Merchant Center'
  • group_product_price_comparison Boolean
    group='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_stock Boolean
    group='website.group_website_restricted_editor' implied_group='website_sale.group_unpublish_out_of_stock' string='Unpublish Out-of-Stock Products'
  • journal_id Many2one
    readonly=False related='website_id.journal_id'
  • module_website_sale_collect Boolean
    args: 'Click & Collect'
  • prevent_sale Boolean
    readonly=False related='website_id.prevent_sale'
  • prevent_sale_for Selection
    readonly=False related='website_id.prevent_sale_for'
  • prevent_sale_for_categories Many2many
    readonly=False related='website_id.prevent_sale_for_categories'
  • rating_email_delay Integer
    readonly=False related='website_id.rating_email_delay'
  • rating_email_template_id Many2one
    readonly=False related='website_id.rating_email_template_id'
  • restricted_uom_ids Many2many
    readonly=False related='website_id.restricted_uom_ids'
  • salesperson_id Many2one
    readonly=False related='website_id.salesperson_id'
  • salesteam_id Many2one
    readonly=False related='website_id.salesteam_id'
  • send_abandoned_cart_followup Boolean
    readonly=False related='website_id.send_abandoned_cart_followup'
  • send_order_rating_emails Boolean
    readonly=False related='website_id.send_order_rating_emails'
  • show_line_subtotals_tax_selection Selection
    readonly=False related='website_id.show_line_subtotals_tax_selection'
  • website_show_reference_price Boolean
    readonly=False related='website_id.show_product_reference_price'
Public methods (3)
  • action_open_product_feeds(self)
    @api.readonly
    Open the list view to manage the feed specific to the current website.
  • action_open_sale_mail_templates(self)
    @api.readonly
  • set_values(self)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (1)
  • wishlist_ids One2many → product.wishlist
    comodel_name='product.wishlist' domain=[('active', '=', True)] inverse_name='partner_id' string='Wishlist'
Public methods (1)
  • write(self, vals)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (9)
  • amount_delivery Monetary
    compute='_compute_amount_delivery' help='Tax included or excluded depending on the website configuration.' string='Delivery Amount'
  • assigned_website_id Many2one → website
    check_company=True comodel_name='website' compute='_compute_assigned_website_id' store=True string='Website'
  • cart_quantity Integer
    compute='_compute_cart_info' string='Cart Quantity'
  • cart_recovery_email_sent Boolean
    string='Cart recovery email already sent'
  • is_abandoned_cart Boolean
    compute='_compute_abandoned_cart' search='_search_abandoned_cart' string='Abandoned Cart'
  • is_rating_email_sent Boolean
    string='Rating email already sent'
  • only_services Boolean
    compute='_compute_cart_info' string='Only Services'
  • website_id Many2one → website
    check_company=True comodel_name='website' help='Website through which this order was placed for eCommerce orders.' readonly=True string='eCommerce Website'
  • website_order_line One2many → sale.order.line
    comodel_name='sale.order.line' compute='_compute_website_order_line' string='Order Lines displayed on Website'
Public methods (6)
  • 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.model
    Retrieve 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

New fields (2)
  • is_donation Boolean
    compute='_compute_is_donation'
  • name_short Char
    compute='_compute_name_short'
Public methods (1)
  • get_description_following_lines(self)

New fields (3)
  • is_abandoned_cart Boolean
    readonly=True string='Abandoned Cart'
  • public_categ_ids Many2many
    related='product_tmpl_id.public_categ_ids' string='eCommerce Categories'
  • website_id Many2one → website
    readonly=True args: 'website'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (1)
  • enable_view(self, xml_id)
    @api.model
    Override of `theme.utils` to disable all category style templates when enabling one.

New fields (49)
  • account_on_checkout Selection
    default='optional' selection=[('optional', 'Optional'), ('disabled', 'Disabled (buy as guest)'), ('mandatory', 'Mandatory (no guest checkout)')] string='Customer Accounts'
  • align_category_content Boolean
    default=False help="Align the category content on the shop page. Corresponds to the 'Center Content' editor option." string='Align Category Content'
  • auth_signup_uninvited Selection
    default='b2c'
  • cart_abandoned_delay Float
    default=10.0 string='Abandoned Delay'
  • cart_recovery_mail_template_id Many2one → mail.template
    comodel_name='mail.template' default=_default_recovery_mail_template domain=[('model', '=', 'sale.order')] string='Cart Recovery Email'
  • confirmation_email_template_id Many2one → mail.template
    comodel_name='mail.template' default=_default_confirmation_email_template domain=[('model', '=', 'sale.order')]
  • contact_us_link_url Char
    default='/contactus' string='Link URL' translate=True
  • currency_id Many2one → res.currency
    comodel_name='res.currency' compute='_compute_currency_id' compute_sql='_compute_sql_currency_id' compute_sudo=True string='Default Currency'
  • ecommerce_access Selection
    default='everyone' required=True selection=[('everyone', 'All users'), ('logged_in', 'Logged in users')]
  • extra_step_category_ids Many2many → product.public.category
    comodel_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_id Many2one → account.journal
    check_company=True comodel_name='account.journal' domain=[('type', '=', 'sale')] string='Default Website Journal'
  • prevent_sale Boolean
    string='Hide Add To Cart'
  • prevent_sale_for Selection
    default='zero_price' selection=[('zero_price', '0 price products'), ('specific_categories', 'Specific categories')] string='Prevent Sale For'
  • prevent_sale_for_categories Many2many → product.public.category
    comodel_name='product.public.category' string='Categories'
  • pricelist_id Many2one → product.pricelist
    comodel_name='product.pricelist' compute='_compute_pricelist_id' compute_sudo=True inverse='_inverse_pricelist_id'
  • pricelist_ids One2many → product.pricelist
    comodel_name='product.pricelist' compute='_compute_pricelist_ids' string='Price list available for this Ecommerce/Website'
  • product_page_cols_order Selection
    default='regular' selection=[('regular', 'Regular order'), ('inverse', 'Inverse order')] string='Product Page main columns order'
  • product_page_container Selection
    default='unset' selection=[('unset', 'Unset'), ('regular', 'Regular'), ('fluid', 'Full-width')]
  • product_page_grid_columns Integer
    default=2
  • product_page_image_layout Selection
    default='carousel' required=True selection=[('carousel', 'Carousel'), ('grid', 'Grid')]
  • product_page_image_ratio Selection
    default='1_1' required=True selection=[('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_mobile Selection
    default='auto' required=True selection=[('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_roundness Selection
    default='none' required=True selection=[('none', 'None'), ('small', 'Small'), ('medium', 'Medium'), ('big', 'Big')]
  • product_page_image_spacing Selection
    default='none' required=True selection=[('none', 'None'), ('small', 'Small'), ('medium', 'Medium'), ('big', 'Big')]
  • product_page_image_width Selection
    default='50_pc' required=True selection=[('none', 'Hidden'), ('33_pc', '33 %'), ('50_pc', '50 %'), ('66_pc', '66 %'), ('100_pc', '100 %')]
  • rating_email_delay Integer
    default=5 string='Days After Order to Send Rating Email'
  • rating_email_template_id Many2one → mail.template
    comodel_name='mail.template' default=<expr> domain=[('model', '=', 'sale.order')]
  • restricted_uom_ids Many2many → uom.uom
    comodel_name='uom.uom' string='Restrict Packagings'
  • salesperson_id Many2one → res.users
    comodel_name='res.users' domain=[('share', '=', False)] string='Salesperson'
  • salesteam_id Many2one → crm.team
    comodel_name='crm.team' default=_default_salesteam_id index='btree_not_null' ondelete='set null' string='Sales Team'
  • send_abandoned_cart_email_activation_time Datetime
    compute='_compute_send_abandoned_cart_email_activation_time' store=True string="Time when the 'Send abandoned cart' feature was activated for emails followup."
  • send_abandoned_cart_followup Boolean
    string='Send Follow-up'
  • send_order_rating_emails Boolean
    default=False string='Request ratings'
  • shop_default_sort Selection
    default='website_sequence asc' required=True selection=[('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_ids One2many → website.sale.extra.field
    comodel_name='website.sale.extra.field' inverse_name='website_id' string='E-Commerce Extra Fields'
  • shop_gap Char
    default='16px' required=False string='Grid-gap on the shop'
  • shop_opt_products_design_classes Char
    default='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_container Selection
    default='regular' selection=[('regular', 'Regular'), ('fluid', 'Full-width')]
  • shop_ppg Integer
    default=21 string='Number of products in the grid on the shop'
  • shop_ppr Integer
    default=3 string='Number of grid columns on the shop'
  • show_category_description Boolean
    default=True help="Display the category description on the shop page. Corresponds to the 'Show Description' editor option." string='Show Category Description'
  • show_category_title Boolean
    default=False help="Display the category title on the shop page. Corresponds to the 'Show Title' editor option." string='Show Category Title'
  • show_line_subtotals_tax_selection Selection
    compute='_compute_show_line_subtotals_tax_selection' precompute=True readonly=False required=True selection=[('tax_excluded', 'Tax Excluded'), ('tax_included', 'Tax Included')] store=True string='Display Product Prices'
  • show_product_reference_price Boolean
    string='Product Reference Price'
  • tax_display Selection
    compute='_compute_tax_display' selection=[('tax_excluded', 'Tax Excluded'), ('tax_included', 'Tax Included')]
  • wishlist_gap Char
    default='16px' help='Gap between products on the wishlist page' string='Wishlist Grid Gap'
  • wishlist_grid_columns Integer
    default=5 help='Number of columns to display on the wishlist page' string='Wishlist Grid Columns'
  • wishlist_mobile_columns Integer
    default=2 help='Number of columns to display on mobile for the wishlist page (1 or 2)' string='Wishlist Mobile Columns'
  • wishlist_opt_products_design_classes Char
    default='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'
Public methods (14)
  • 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.model
    Override 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.model
    Format 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.model
    Format 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)

New fields (1)
  • alerts Json
Public methods (0)

No public methods.

New fields (7)
  • back_button_label Char
    translate=True
  • main_button_label Char
    translate=True
  • name Char
    copy=True required=True translate=True
  • sequence Integer
  • show_in_breadcrumb Boolean
    default=True
  • step_href Char
    required=True string='Href'
  • website_id Many2one → website
    ondelete='cascade' args: 'website'
Public methods (1)
  • validate_checkout_progress(self, step_href, order_sudo, **kwargs)
    @api.model@api.private
    Check 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

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (5)
  • field_id Many2one → ir.model.fields
    comodel_name='ir.model.fields' domain=[('model_id.model', '=', 'product.template'), ('ttype', 'in', ['char', 'binary'])] ondelete='cascade' required=True
  • label Char
    related='field_id.field_description'
  • name Char
    related='field_id.name'
  • sequence Integer
    default=10
  • website_id Many2one → website
    comodel_name='website' index='btree_not_null'
Public methods (0)

No public methods.

New fields (1)
  • product_cross_selling Boolean
    help='True only for product filters that require a product_id because they relate to cross selling' string='About cross selling products'
Public methods (1)
  • default_get(self, fields)
    @api.model

New fields (1)
  • product_id Many2one → product.product
    comodel_name='product.product' index='btree_not_null' ondelete='cascade' readonly=True
Public methods (0)

No public methods.

New fields (3)
  • product_count Integer
    compute='_compute_product_statistics' help='Total number of product viewed' string='Products Views'
  • product_ids Many2many → product.product
    comodel_name='product.product' compute='_compute_product_statistics' string='Visited Products'
  • visitor_product_count Integer
    compute='_compute_product_statistics' help='Total number of views on products' string='Product Views'
Public methods (0)

No public methods.

New fields (5)
  • email Char
    required=True string='Your Email'
  • log_message Text
    string='Message'
  • order_id Many2one → sale.order
    comodel_name='sale.order' index=True required=True string='Order'
  • order_reference Char
    readonly=False related='order_id.name' store=True
  • recipient_emails Char
    string='Recipient Emails'
Public methods (2)
  • 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…