19.0 vanilla

This commit is contained in:
Ernad Husremovic 2026-03-09 09:32:12 +01:00
parent 79f83631d5
commit 73afc09215
6267 changed files with 1534193 additions and 1130106 deletions

View file

@ -1,20 +1,37 @@
# coding: utf-8
# Part of Odoo. See LICENSE file for full copyright and licensing details.
from odoo import api, fields, models
from odoo import fields, models
class SaleReport(models.Model):
_inherit = 'sale.report'
website_id = fields.Many2one('website', readonly=True)
is_abandoned_cart = fields.Boolean(string="Abandoned Cart", readonly=True)
public_categ_ids = fields.Many2many(
string="eCommerce Categories",
related='product_tmpl_id.public_categ_ids',
)
def _select_additional_fields(self):
res = super()._select_additional_fields()
res['website_id'] = "s.website_id"
res['is_abandoned_cart'] = """
s.date_order <= (timezone('utc', now()) - ((COALESCE(w.cart_abandoned_delay, '1.0') || ' hour')::INTERVAL))
AND s.website_id IS NOT NULL
AND s.state = 'draft'
AND s.partner_id != %s""" % self.env.ref('base.public_partner').id
return res
def _from_sale(self):
res = super()._from_sale()
res += """
LEFT JOIN website w ON w.id = s.website_id"""
return res
def _group_by_sale(self):
res = super()._group_by_sale()
res += """,
s.website_id"""
s.website_id,
w.cart_abandoned_delay"""
return res

View file

@ -0,0 +1,130 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<record id="sale_report_view_search_website" model="ir.ui.view">
<field name="name">sale.report.search</field>
<field name="model">sale.report</field>
<field name="arch" type="xml">
<search string="Sales">
<field name="website_id" groups="website.group_multi_website"/>
<field name="product_id"/>
<field name="categ_id"/>
<field name="partner_id"/>
<field name="country_id"/>
<field name="company_id" groups="base.group_multi_company"/>
<filter string="Confirmed Orders" name="confirmed" domain="[('state', '=', 'sale')]"/>
<separator/>
<filter name="filter_date" date="date" default_period="month"/>
<group>
<filter string="Website" name="groupby_website" context="{'group_by':'website_id'}" groups="website.group_multi_website"/>
<filter string="Product" name="groupby_product" context="{'group_by':'product_id'}"/>
<filter string="Product Category" name="groupby_product_category" context="{'group_by':'categ_id'}"/>
<filter string="Customer" name="groupby_customer" context="{'group_by':'partner_id'}"/>
<filter string="Customer Country" name="groupby_country" context="{'group_by':'country_id'}"/>
<filter string="Status" name="groupby_status" context="{'group_by':'state'}"/>
<filter
string="eCommerce Category"
name="groupby_product_public_category"
context="{'group_by': 'public_categ_ids'}"
/>
<separator orientation="vertical"/>
<filter string="Order Date" name="groupby_order_date" context="{'group_by':'date'}"/>
<!-- Dashboard filter - used by context -->
<filter string="Last Week" invisible="1" name="week" domain="[('date','&gt;=', 'today -7d')]"/>
<filter string="Last Month" invisible="1" name="month" domain="[('date','&gt;=', 'today -30d')]"/>
<filter string="Last Year" invisible="1" name="year" domain="[('date','&gt;=', 'today -365d')]"/>
</group>
</search>
</field>
</record>
<record id="sale_report_view_pivot_website" model="ir.ui.view">
<field name="name">sale.report.view.pivot.website</field>
<field name="model">sale.report</field>
<field name="arch" type="xml">
<pivot string="Sales Analysis" sample="1">
<field name="date" type="row"/>
<field name="state" type="col"/>
<field name="price_subtotal" type="measure"/>
</pivot>
</field>
</record>
<record id="sale_report_view_graph_website" model="ir.ui.view">
<field name="name">sale.report.view.graph.website</field>
<field name="model">sale.report</field>
<field name="arch" type="xml">
<graph string="Sale Analysis" sample="1">
<field name="date"/>
<field name="price_subtotal" type='measure'/>
</graph>
</field>
</record>
<record id="sale_report_view_tree" model="ir.ui.view">
<field name="name">sale.report.view.list.inherit.website.sale</field>
<field name="model">sale.report</field>
<field name="inherit_id" ref="sale.sale_report_view_tree"/>
<field name="arch" type="xml">
<field name="order_reference" position="after">
<field name="website_id" optional="hide"/>
<field name="public_categ_ids" optional="hide"/>
</field>
</field>
</record>
<record id="sale_report_action_dashboard" model="ir.actions.act_window">
<field name="name">Online Sales Analysis</field>
<field name="res_model">sale.report</field>
<field name="path">online-sales-analysis</field>
<field name="view_mode">pivot,graph</field>
<field name="domain">[('website_id', '!=', False)]</field>
<field name="context">{'search_default_confirmed': 1}</field>
<field name="search_view_id" ref="sale_report_view_search_website"/>
<field name="help" type="html">
<p class="o_view_nocontent_empty_folder">
You don't have any order from the website
</p>
</field>
</record>
<record id="sale_report_action_view_pivot_website" model="ir.actions.act_window.view">
<field name="sequence" eval="1"/>
<field name="view_mode">pivot</field>
<field name="view_id" ref="sale_report_view_pivot_website"/>
<field name="act_window_id" ref="sale_report_action_dashboard"/>
</record>
<record id="sale_report_action_view_graph_website" model="ir.actions.act_window.view">
<field name="sequence" eval="1"/>
<field name="view_mode">graph</field>
<field name="view_id" ref="sale_report_view_graph_website"/>
<field name="act_window_id" ref="sale_report_action_dashboard"/>
</record>
<record id="sale_report_action_carts" model="ir.actions.act_window">
<field name="name">Sales</field>
<field name="res_model">sale.report</field>
<field name="view_mode">pivot,graph</field>
<field name="domain">[('website_id', '!=', False)]</field>
<field name="search_view_id" ref="sale_report_view_search_website"/>
<field name="help" type="html">
<p class="o_view_nocontent_empty_folder">
You don't have any order from the website
</p>
</field>
</record>
<record id="sale_report_action_view_pivot_carts" model="ir.actions.act_window.view">
<field name="sequence" eval="1"/>
<field name="view_mode">pivot</field>
<field name="view_id" ref="sale_report_view_pivot_website"/>
<field name="act_window_id" ref="sale_report_action_carts"/>
</record>
<record id="sale_report_action_view_graph_carts" model="ir.actions.act_window.view">
<field name="sequence" eval="1"/>
<field name="view_mode">graph</field>
<field name="view_id" ref="sale_report_view_graph_website"/>
<field name="act_window_id" ref="sale_report_action_carts"/>
</record>
</odoo>