[IMP] sale(_*): replace confirmation date with order date
* pos_sale, sale, sale_crm, sale_management, sale_stock, website_sale Purpose of this commit is replace the confirmation date field with order date from sale. As order_date and confirmation_date of sale order are having same value so no need to keep two fields, remove confirmation field and instead use order date. cretae_date use as order Date and replace the order_date on confirmation of the order as confirmation date. task-2027274 closes: #34571 Signed-off-by: Damien Bouvy (dbo) <dbo@odoo.com>
This commit is contained in:
committed by
Barad Mahendra
parent
e87cec8c49
commit
0cc30bf083
@@ -37,7 +37,6 @@ class SaleReport(models.Model):
|
||||
count(*) AS nbr,
|
||||
pos.name AS name,
|
||||
pos.date_order AS date,
|
||||
pos.date_order AS confirmation_date,
|
||||
CASE WHEN pos.state = 'draft' THEN 'pos_draft' WHEN pos.state = 'done' THEN 'pos_done' else pos.state END AS state,
|
||||
pos.partner_id AS partner_id,
|
||||
pos.user_id AS user_id,
|
||||
|
||||
@@ -625,25 +625,25 @@
|
||||
<function model="sale.order" name="action_confirm" eval="[[ref('sale_order_17')]]"/>
|
||||
<function model="sale.order" name="action_confirm" eval="[[ref('sale_order_18')]]"/>
|
||||
|
||||
<!-- Setting confirmation_date in the past for beautiful spread -->
|
||||
<!-- Setting date_order in the past for beautiful spread -->
|
||||
<record id="sale_order_9" model="sale.order">
|
||||
<field name="confirmation_date" eval="datetime.now() - relativedelta(days=7)"/>
|
||||
<field name="date_order" eval="datetime.now() - relativedelta(days=7)"/>
|
||||
</record>
|
||||
|
||||
<record id="sale_order_11" model="sale.order">
|
||||
<field name="confirmation_date" eval="datetime.now() - relativedelta(days=21)"/>
|
||||
<field name="date_order" eval="datetime.now() - relativedelta(days=21)"/>
|
||||
</record>
|
||||
|
||||
<record id="sale_order_15" model="sale.order">
|
||||
<field name="confirmation_date" eval="datetime.now() - relativedelta(days=14)"/>
|
||||
<field name="date_order" eval="datetime.now() - relativedelta(days=14)"/>
|
||||
</record>
|
||||
|
||||
<record id="sale_order_17" model="sale.order">
|
||||
<field name="confirmation_date" eval="datetime.now() - relativedelta(days=28)"/>
|
||||
<field name="date_order" eval="datetime.now() - relativedelta(days=28)"/>
|
||||
</record>
|
||||
|
||||
<record id="sale_order_18" model="sale.order">
|
||||
<field name="confirmation_date" eval="datetime.now() - relativedelta(days=35)"/>
|
||||
<field name="date_order" eval="datetime.now() - relativedelta(days=35)"/>
|
||||
</record>
|
||||
|
||||
<record id="message_sale_1" model="mail.message">
|
||||
@@ -786,7 +786,7 @@ Thanks!</field>
|
||||
<function model="sale.order" name="action_confirm" eval="[[ref('portal_sale_order_2')]]"/>
|
||||
|
||||
<record id="portal_sale_order_2" model="sale.order">
|
||||
<field name="confirmation_date" eval="datetime.now() - relativedelta(months=1)"/>
|
||||
<field name="date_order" eval="datetime.now() - relativedelta(months=1)"/>
|
||||
</record>
|
||||
|
||||
<record id="product_attribute_value_7" model="product.attribute.value">
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
7# -*- coding: utf-8 -*-
|
||||
# -*- coding: utf-8 -*-
|
||||
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
||||
|
||||
from datetime import datetime, timedelta
|
||||
@@ -130,7 +130,7 @@ class SaleOrder(models.Model):
|
||||
('done', 'Locked'),
|
||||
('cancel', 'Cancelled'),
|
||||
], string='Status', readonly=True, copy=False, index=True, tracking=3, default='draft')
|
||||
date_order = fields.Datetime(string='Order Date', required=True, readonly=True, index=True, states={'draft': [('readonly', False)], 'sent': [('readonly', False)]}, copy=False, default=fields.Datetime.now)
|
||||
date_order = fields.Datetime(string='Order Date', required=True, readonly=True, index=True, states={'draft': [('readonly', False)], 'sent': [('readonly', False)]}, copy=False, default=fields.Datetime.now, help="Creation date of draft/sent orders,\nConfirmation date of confirmed orders.")
|
||||
validity_date = fields.Date(string='Expiration', readonly=True, copy=False, states={'draft': [('readonly', False)], 'sent': [('readonly', False)]},
|
||||
help="Beyond this date, the customer is no longer able to accept the quotation from the portal.", default=_default_validity_date)
|
||||
is_expired = fields.Boolean(compute='_compute_is_expired', string="Is expired")
|
||||
@@ -142,7 +142,6 @@ class SaleOrder(models.Model):
|
||||
help='Request an online payment to the customer in order to confirm orders automatically.')
|
||||
remaining_validity_days = fields.Integer(compute='_compute_remaining_validity_days', string="Remaining Days Before Expiration")
|
||||
create_date = fields.Datetime(string='Creation Date', readonly=True, index=True, help="Date on which sales order is created.")
|
||||
confirmation_date = fields.Datetime(string='Confirmation Date', readonly=True, index=True, help="Date on which the sales order is confirmed.", copy=False)
|
||||
user_id = fields.Many2one('res.users', string='Salesperson', index=True, tracking=2, default=lambda self: self.env.user)
|
||||
partner_id = fields.Many2one('res.partner', string='Customer', readonly=True, states={'draft': [('readonly', False)], 'sent': [('readonly', False)]}, required=True, change_default=True, index=True, tracking=1, help="You can find a customer from their name, email, tax ID or reference.")
|
||||
partner_invoice_id = fields.Many2one('res.partner', string='Invoice Address', readonly=True, required=True, states={'draft': [('readonly', False)], 'sent': [('readonly', False)], 'sale': [('readonly', False)]}, help="Invoice address for current sales order.")
|
||||
@@ -197,7 +196,7 @@ class SaleOrder(models.Model):
|
||||
string='Authorized Transactions', copy=False, readonly=True)
|
||||
|
||||
_sql_constraints = [
|
||||
('confirmation_date_conditional_required', "CHECK( (state IN ('sale', 'done') AND confirmation_date IS NOT NULL) OR state NOT IN ('sale', 'done') )", "A confirmed sales order requires a confirmation date."),
|
||||
('date_order_conditional_required', "CHECK( (state IN ('sale', 'done') AND date_order IS NOT NULL) OR state NOT IN ('sale', 'done') )", "A confirmed sales order requires a confirmation date."),
|
||||
]
|
||||
|
||||
@api.constrains('company_id', 'order_line')
|
||||
@@ -229,14 +228,14 @@ class SaleOrder(models.Model):
|
||||
for order in self:
|
||||
order.is_expired = order.state == 'sent' and order.validity_date and order.validity_date < today
|
||||
|
||||
@api.depends('order_line.customer_lead', 'confirmation_date', 'order_line.state')
|
||||
@api.depends('order_line.customer_lead', 'date_order', 'order_line.state')
|
||||
def _compute_expected_date(self):
|
||||
""" For service and consumable, we only take the min dates. This method is extended in sale_stock to
|
||||
take the picking_policy of SO into account.
|
||||
"""
|
||||
for order in self:
|
||||
dates_list = []
|
||||
confirm_date = fields.Datetime.from_string(order.confirmation_date if order.state in ['sale', 'done'] else fields.Datetime.now())
|
||||
confirm_date = fields.Datetime.from_string(order.date_order if order.state in ['sale', 'done'] else fields.Datetime.now())
|
||||
for line in order.order_line.filtered(lambda x: x.state != 'cancel' and not x._is_delivery()):
|
||||
dt = confirm_date + timedelta(days=line.customer_lead or 0.0)
|
||||
dates_list.append(dt)
|
||||
@@ -685,7 +684,7 @@ class SaleOrder(models.Model):
|
||||
order.message_subscribe([order.partner_id.id])
|
||||
self.write({
|
||||
'state': 'sale',
|
||||
'confirmation_date': fields.Datetime.now()
|
||||
'date_order': fields.Datetime.now()
|
||||
})
|
||||
self._action_confirm()
|
||||
if self.env.user.has_group('sale.group_auto_done_setting'):
|
||||
|
||||
@@ -98,7 +98,7 @@ class CrmTeam(models.Model):
|
||||
|
||||
def _graph_date_column(self):
|
||||
if self._context.get('in_sales_app'):
|
||||
return 'confirmation_date'
|
||||
return 'date_order'
|
||||
return super(CrmTeam,self)._graph_date_column()
|
||||
|
||||
def _graph_y_query(self):
|
||||
|
||||
@@ -18,7 +18,6 @@ class SaleReport(models.Model):
|
||||
|
||||
name = fields.Char('Order Reference', readonly=True)
|
||||
date = fields.Datetime('Order Date', readonly=True)
|
||||
confirmation_date = fields.Datetime('Confirmation Date', readonly=True)
|
||||
product_id = fields.Many2one('product.product', 'Product Variant', readonly=True)
|
||||
product_uom = fields.Many2one('uom.uom', 'Unit of Measure', readonly=True)
|
||||
product_uom_qty = fields.Float('Qty Ordered', readonly=True)
|
||||
@@ -77,7 +76,6 @@ class SaleReport(models.Model):
|
||||
count(*) as nbr,
|
||||
s.name as name,
|
||||
s.date_order as date,
|
||||
s.confirmation_date as confirmation_date,
|
||||
s.state as state,
|
||||
s.partner_id as partner_id,
|
||||
s.user_id as user_id,
|
||||
@@ -123,7 +121,6 @@ class SaleReport(models.Model):
|
||||
t.categ_id,
|
||||
s.name,
|
||||
s.date_order,
|
||||
s.confirmation_date,
|
||||
s.partner_id,
|
||||
s.user_id,
|
||||
s.state,
|
||||
|
||||
@@ -42,9 +42,9 @@
|
||||
<strong>Your Reference:</strong>
|
||||
<p class="m-0" t-field="doc.client_order_ref"/>
|
||||
</div>
|
||||
<div t-if="doc.confirmation_date and doc.state not in ['draft','sent']" class="col-auto mw-100 mb-2">
|
||||
<strong>Date Ordered:</strong>
|
||||
<p class="m-0" t-field="doc.confirmation_date"/>
|
||||
<div t-if="doc.date_order and doc.state not in ['draft','sent']" class="col-auto mw-100 mb-2">
|
||||
<strong>Order Date:</strong>
|
||||
<p class="m-0" t-field="doc.date_order"/>
|
||||
</div>
|
||||
<div t-if="doc.date_order and doc.state in ['draft','sent']" class="col-auto mw-100 mb-2">
|
||||
<strong>Quotation Date:</strong>
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
<field name="arch" type="xml">
|
||||
<pivot string="Sales Analysis" disable_linking="True">
|
||||
<field name="team_id" type="col"/>
|
||||
<field name="confirmation_date" interval="month" type="row"/>
|
||||
<field name="date" interval="month" type="row"/>
|
||||
<field name="price_subtotal" type="measure"/>
|
||||
</pivot>
|
||||
</field>
|
||||
@@ -18,7 +18,7 @@
|
||||
<field name="model">sale.report</field>
|
||||
<field name="arch" type="xml">
|
||||
<graph string="Sales Analysis" type="line">
|
||||
<field name="confirmation_date" type="row" interval="day"/>
|
||||
<field name="date" type="row" interval="day"/>
|
||||
<field name="price_subtotal" type="measure"/>
|
||||
</graph>
|
||||
</field>
|
||||
@@ -57,7 +57,6 @@
|
||||
<filter string="Company" name="company" groups="base.group_multi_company" context="{'group_by':'company_id'}"/>
|
||||
<separator/>
|
||||
<filter string="Order Date" name="date" context="{'group_by':'date'}"/>
|
||||
<filter string="Confirmation Date" name="confirm_month" context="{'group_by':'confirmation_date:month'}"/>
|
||||
</group>
|
||||
</search>
|
||||
</field>
|
||||
|
||||
@@ -47,7 +47,7 @@
|
||||
<thead>
|
||||
<tr class="active">
|
||||
<th>Quotation #</th>
|
||||
<th class="text-right">Order Date</th>
|
||||
<th class="text-right">Quotation Date</th>
|
||||
<th class="text-right">Valid Until</th>
|
||||
<th class="text-center"/>
|
||||
<th class="text-right">Total</th>
|
||||
@@ -376,7 +376,13 @@
|
||||
</div>
|
||||
<div class="row" id="so_date">
|
||||
<div class="mb-3 col-6">
|
||||
<strong>Date:</strong> <span t-field="sale_order.date_order" t-options='{"widget": "date"}'/>
|
||||
<t t-if="sale_order.state == 'draft'">
|
||||
<strong>Quotation Date:</strong>
|
||||
</t>
|
||||
<t t-if="sale_order.state in ['sale', 'done', 'cancel']">
|
||||
<strong>Order Date:</strong>
|
||||
</t>
|
||||
<span t-field="sale_order.date_order" t-options='{"widget": "date"}'/>
|
||||
</div>
|
||||
<div class="mb-3 col-6" t-if="sale_order.validity_date">
|
||||
<strong>Expiration Date:</strong> <span t-field="sale_order.validity_date" t-options='{"widget": "date"}'/>
|
||||
|
||||
@@ -189,7 +189,7 @@
|
||||
<tree string="Sales Orders" decoration-bf="message_needaction==True" decoration-muted="state=='cancel'">
|
||||
<field name="message_needaction" invisible="1"/>
|
||||
<field name="name" string="Order Number"/>
|
||||
<field name="confirmation_date" string="Confirmation Date" optional="show"/>
|
||||
<field name="date_order" string="Order Date"/>
|
||||
<field name="commitment_date" groups="sale.group_sale_order_dates"/>
|
||||
<field name="expected_date" groups="sale.group_sale_order_dates"/>
|
||||
<field name="partner_id"/>
|
||||
@@ -213,7 +213,7 @@
|
||||
<tree string="Quotation" class="o_sale_order" decoration-bf="message_needaction==True" decoration-muted="state=='cancel'">
|
||||
<field name="message_needaction" invisible="1"/>
|
||||
<field name="name" string="Quotation Number"/>
|
||||
<field name="date_order" string="Quotation Date" optional="show"/>
|
||||
<field name="create_date" string="Create Date"/>
|
||||
<field name="commitment_date" groups="sale.group_sale_order_dates"/>
|
||||
<field name="expected_date" groups="sale.group_sale_order_dates"/>
|
||||
<field name="partner_id"/>
|
||||
@@ -300,7 +300,14 @@
|
||||
</group>
|
||||
<group>
|
||||
<field name="validity_date" attrs="{'invisible': [('state', 'in', ['sale', 'done'])]}"/>
|
||||
<field name="confirmation_date" attrs="{'invisible': [('state', 'in', ['draft', 'sent', 'cancel'])], 'required': [('state', 'in', ['sale', 'done'])]}"/>
|
||||
<div class="o_td_label" groups="base.group_no_one" attrs="{'invisible': [('state', 'in', ['sale', 'done', 'cancel'])]}">
|
||||
<label for="date_order" string="Quotation Date"/>
|
||||
</div>
|
||||
<field name="date_order" nolabel="1" groups="base.group_no_one" attrs="{'invisible': [('state', 'in', ['sale', 'done', 'cancel'])]}"/>
|
||||
<div class="o_td_label" attrs="{'invisible': [('state', 'in', ['draft', 'sent'])]}">
|
||||
<label for="date_order" string="Order Date"/>
|
||||
</div>
|
||||
<field name="date_order" attrs="{'required': [('state', 'in', ['sale', 'done'])], 'invisible': [('state', 'in', ['draft', 'sent'])]}" nolabel="1"/>
|
||||
<field name="pricelist_id" groups="product.group_sale_pricelist"/>
|
||||
<field name="currency_id" invisible="1"/>
|
||||
<field name="payment_term_id" options="{'no_open':True,'no_create': True}"/>
|
||||
@@ -606,7 +613,6 @@
|
||||
<page string="Other Info" name="other_information">
|
||||
<group>
|
||||
<group name="sales_person" string="Sales">
|
||||
<field name="date_order" attrs="{'invisible': [('state', 'in', ['sale', 'done', 'cancel'])]}" string="Quotation Date" groups="base.group_no_one"/>
|
||||
<field name="user_id"/>
|
||||
<field name="team_id" kanban_view_ref="%(sales_team.crm_team_view_kanban)s" options="{'no_create': True}"/>
|
||||
<field name="company_id" options="{'no_create': True}" groups="base.group_multi_company"/>
|
||||
@@ -720,7 +726,7 @@
|
||||
<filter string="Quotations" name="draft" domain="[('state','in',('draft', 'sent'))]"/>
|
||||
<filter string="Sales Orders" name="sales" domain="[('state','in',('sale','done'))]"/>
|
||||
<separator/>
|
||||
<filter string="Order Date" name="filter_order_date" date="date_order"/>
|
||||
<filter string="Create Date" name="filter_create_date" date="create_date"/>
|
||||
</xpath>
|
||||
</field>
|
||||
</record>
|
||||
@@ -1253,7 +1259,7 @@
|
||||
<field name="res_model">sale.report</field>
|
||||
<field name="view_mode">graph</field>
|
||||
<field name="domain">[('state','not in',('draft','cancel'))]</field>
|
||||
<field name="context">{'search_default_Sales': 1, 'time_ranges': {'field':'confirmation_date', 'range':'last_30_days'}, 'search_default_team_id': [active_id]}</field>
|
||||
<field name="context">{'search_default_Sales': 1, 'time_ranges': {'field':'date_order', 'range':'last_30_days'}, 'search_default_team_id': [active_id]}</field>
|
||||
<field name="help">This report performs analysis on your sales orders. Analysis check your sales revenues and sort it by different group criteria (salesman, partner, product, etc.) Use this report to perform analysis on sales not having invoiced yet. If you want to analyse your turnover, you should use the Invoice Analysis report in the Accounting application.</field>
|
||||
</record>
|
||||
|
||||
|
||||
@@ -25,7 +25,7 @@ class CrmTeam(models.Model):
|
||||
|
||||
def _graph_date_column(self):
|
||||
if self.use_opportunities and self._context.get('in_sales_app'):
|
||||
return 'confirmation_date'
|
||||
return 'date_order'
|
||||
return super(CrmTeam,self)._graph_date_column()
|
||||
|
||||
def _graph_y_query(self):
|
||||
|
||||
@@ -17,8 +17,9 @@ class Digest(models.Model):
|
||||
for record in self:
|
||||
start, end, company = record._get_kpi_compute_parameters()
|
||||
all_channels_sales = self.env['sale.report'].read_group([
|
||||
('confirmation_date', '>=', start),
|
||||
('confirmation_date', '<', end),
|
||||
('date_order', '>=', start),
|
||||
('date_order', '<', end),
|
||||
('state', 'not in', ['draft', 'cancel', 'sent']),
|
||||
('company_id', '=', company.id)], ['price_total'], ['price_total'])
|
||||
record.kpi_all_sale_total_value = sum([channel_sale['price_total'] for channel_sale in all_channels_sales])
|
||||
|
||||
|
||||
@@ -49,7 +49,7 @@ class SaleOrder(models.Model):
|
||||
super(SaleOrder, self)._compute_expected_date()
|
||||
for order in self:
|
||||
dates_list = []
|
||||
confirm_date = fields.Datetime.from_string(order.confirmation_date if order.state in ['sale', 'done'] else fields.Datetime.now())
|
||||
confirm_date = fields.Datetime.from_string(order.date_order if order.state in ['sale', 'done'] else fields.Datetime.now())
|
||||
for line in order.order_line.filtered(lambda x: x.state != 'cancel' and not x._is_delivery()):
|
||||
dt = confirm_date + timedelta(days=line.customer_lead or 0.0)
|
||||
dates_list.append(dt)
|
||||
@@ -377,7 +377,7 @@ class SaleOrderLine(models.Model):
|
||||
"""
|
||||
values = super(SaleOrderLine, self)._prepare_procurement_values(group_id)
|
||||
self.ensure_one()
|
||||
date_planned = self.order_id.confirmation_date\
|
||||
date_planned = self.order_id.date_order\
|
||||
+ timedelta(days=self.customer_lead or 0.0) - timedelta(days=self.order_id.company_id.security_lead)
|
||||
values.update({
|
||||
'group_id': group_id,
|
||||
|
||||
@@ -63,7 +63,7 @@ class TestSaleExpectedDate(common.TransactionCase):
|
||||
# Setting confirmation date of SO to 5 days from today so that the expected/effective date could be checked
|
||||
# against real confirmation date
|
||||
confirm_date = fields.Datetime.now() + timedelta(days=5)
|
||||
sale_order.write({'confirmation_date': confirm_date})
|
||||
sale_order.write({'date_order': confirm_date})
|
||||
|
||||
# if Shipping Policy is set to `one`(when SO is confirmed) then expected date should be
|
||||
# SO confirmation date + longest lead time from all of it's order lines
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
<tree>
|
||||
<field name="name"/>
|
||||
<field name="partner_id"/>
|
||||
<field name="confirmation_date"/>
|
||||
<field name="date_order"/>
|
||||
<field name="state" invisible="1"/>
|
||||
</tree>
|
||||
</field>
|
||||
|
||||
@@ -46,8 +46,8 @@ class WebsiteSaleBackend(WebsiteBackend):
|
||||
domain=[
|
||||
('website_id', '=', current_website.id),
|
||||
('state', 'in', ['sale', 'done']),
|
||||
('confirmation_date', '>=', date_from),
|
||||
('confirmation_date', '<=', fields.Datetime.now())],
|
||||
('date_order', '>=', date_from),
|
||||
('date_order', '<=', fields.Datetime.now())],
|
||||
fields=['product_tmpl_id', 'product_uom_qty', 'price_subtotal'],
|
||||
groupby='product_tmpl_id', orderby='product_uom_qty desc', limit=5)
|
||||
for product_line in report_product_lines:
|
||||
@@ -117,8 +117,8 @@ class WebsiteSaleBackend(WebsiteBackend):
|
||||
sales_domain = [
|
||||
('website_id', '=', current_website.id),
|
||||
('state', 'in', ['sale', 'done']),
|
||||
('confirmation_date', '>=', date_from),
|
||||
('confirmation_date', '<=', fields.Datetime.now())
|
||||
('date_order', '>=', date_from),
|
||||
('date_order', '<=', fields.Datetime.now())
|
||||
]
|
||||
sales_values['graph'] += [{
|
||||
'values': self._compute_sale_graph(date_date_from, date_date_to, sales_domain),
|
||||
@@ -134,8 +134,8 @@ class WebsiteSaleBackend(WebsiteBackend):
|
||||
sale_utm_domain = [
|
||||
('website_id', '!=', False),
|
||||
('state', 'in', ['sale', 'done']),
|
||||
('confirmation_date', '>=', date_from),
|
||||
('confirmation_date', '<=', date_to)
|
||||
('date_order', '>=', date_from),
|
||||
('date_order', '<=', date_to)
|
||||
]
|
||||
|
||||
orders_data_groupby_campaign_id = request.env['sale.order'].read_group(
|
||||
@@ -171,10 +171,10 @@ class WebsiteSaleBackend(WebsiteBackend):
|
||||
|
||||
daily_sales = request.env['sale.report'].read_group(
|
||||
domain=sales_domain,
|
||||
fields=['confirmation_date', 'price_subtotal'],
|
||||
groupby='confirmation_date:day')
|
||||
fields=['date_order', 'price_subtotal'],
|
||||
groupby='date_order:day')
|
||||
|
||||
daily_sales_dict = {p['confirmation_date:day']: p['price_subtotal'] for p in daily_sales}
|
||||
daily_sales_dict = {p['date_order:day']: p['price_subtotal'] for p in daily_sales}
|
||||
|
||||
sales_graph = [{
|
||||
'0': fields.Date.to_string(d) if not previous else fields.Date.to_string(d + timedelta(days=days_between)),
|
||||
|
||||
@@ -287,7 +287,6 @@
|
||||
<field name="pricelist_id" ref="product.list0"/>
|
||||
<field name="team_id" ref="sales_team.salesteam_website_sales"/>
|
||||
<field name="date_order" eval="(datetime.now()-relativedelta(days=7)).strftime('%Y-%m-%d %H:%M:%S')"/>
|
||||
<field name="confirmation_date" eval="(datetime.now()-relativedelta(days=7)).strftime('%Y-%m-%d %H:%M:%S')"/>
|
||||
<field name="state">sale</field>
|
||||
</record>
|
||||
|
||||
@@ -309,7 +308,6 @@
|
||||
<field name="pricelist_id" ref="product.list0"/>
|
||||
<field name="team_id" ref="sales_team.salesteam_website_sales"/>
|
||||
<field name="date_order" eval="(datetime.now()-relativedelta(days=6)).strftime('%Y-%m-%d %H:%M:%S')"/>
|
||||
<field name="confirmation_date" eval="(datetime.now()-relativedelta(days=6)).strftime('%Y-%m-%d %H:%M:%S')"/>
|
||||
<field name="state">sale</field>
|
||||
</record>
|
||||
|
||||
@@ -331,7 +329,6 @@
|
||||
<field name="pricelist_id" ref="product.list0"/>
|
||||
<field name="team_id" ref="sales_team.salesteam_website_sales"/>
|
||||
<field name="date_order" eval="(datetime.now()-relativedelta(days=5)).strftime('%Y-%m-%d %H:%M:%S')"/>
|
||||
<field name="confirmation_date" eval="(datetime.now()-relativedelta(days=5)).strftime('%Y-%m-%d %H:%M:%S')"/>
|
||||
<field name="state">sale</field>
|
||||
</record>
|
||||
|
||||
@@ -353,7 +350,6 @@
|
||||
<field name="pricelist_id" ref="product.list0"/>
|
||||
<field name="team_id" ref="sales_team.salesteam_website_sales"/>
|
||||
<field name="date_order" eval="(datetime.now()-relativedelta(days=4)).strftime('%Y-%m-%d %H:%M:%S')"/>
|
||||
<field name="confirmation_date" eval="(datetime.now()-relativedelta(days=4)).strftime('%Y-%m-%d %H:%M:%S')"/>
|
||||
<field name="state">sale</field>
|
||||
</record>
|
||||
|
||||
@@ -375,7 +371,6 @@
|
||||
<field name="pricelist_id" ref="product.list0"/>
|
||||
<field name="team_id" ref="sales_team.salesteam_website_sales"/>
|
||||
<field name="date_order" eval="(datetime.now()-relativedelta(days=3)).strftime('%Y-%m-%d %H:%M:%S')"/>
|
||||
<field name="confirmation_date" eval="(datetime.now()-relativedelta(days=3)).strftime('%Y-%m-%d %H:%M:%S')"/>
|
||||
<field name="state">sale</field>
|
||||
</record>
|
||||
|
||||
@@ -397,7 +392,6 @@
|
||||
<field name="pricelist_id" ref="product.list0"/>
|
||||
<field name="team_id" ref="sales_team.salesteam_website_sales"/>
|
||||
<field name="date_order" eval="(datetime.now()-relativedelta(days=2)).strftime('%Y-%m-%d %H:%M:%S')"/>
|
||||
<field name="confirmation_date" eval="(datetime.now()-relativedelta(days=2)).strftime('%Y-%m-%d %H:%M:%S')"/>
|
||||
<field name="state">sale</field>
|
||||
</record>
|
||||
|
||||
@@ -419,7 +413,6 @@
|
||||
<field name="pricelist_id" ref="product.list0"/>
|
||||
<field name="team_id" ref="sales_team.salesteam_website_sales"/>
|
||||
<field name="date_order" eval="(datetime.now()-relativedelta(days=1)).strftime('%Y-%m-%d %H:%M:%S')"/>
|
||||
<field name="confirmation_date" eval="(datetime.now()-relativedelta(days=1)).strftime('%Y-%m-%d %H:%M:%S')"/>
|
||||
<field name="state">sale</field>
|
||||
</record>
|
||||
|
||||
@@ -440,7 +433,6 @@
|
||||
<field name="pricelist_id" ref="product.list0"/>
|
||||
<field name="team_id" ref="sales_team.salesteam_website_sales"/>
|
||||
<field name="date_order" eval="datetime.now()"/>
|
||||
<field name="confirmation_date" eval="datetime.now()"/>
|
||||
<field name="state">sale</field>
|
||||
</record>
|
||||
|
||||
@@ -571,7 +563,6 @@
|
||||
<field name="pricelist_id" ref="product.list0"/>
|
||||
<field name="team_id" ref="sales_team.salesteam_website_sales"/>
|
||||
<field name="date_order" eval="datetime.now()-relativedelta(months=1)"/>
|
||||
<field name="confirmation_date" eval="datetime.now()-relativedelta(months=1)"/>
|
||||
<field name="state">sale</field>
|
||||
</record>
|
||||
|
||||
@@ -593,7 +584,6 @@
|
||||
<field name="pricelist_id" ref="product.list0"/>
|
||||
<field name="team_id" ref="sales_team.salesteam_website_sales"/>
|
||||
<field name="date_order" eval="datetime.now()-relativedelta(months=1, days=2)"/>
|
||||
<field name="confirmation_date" eval="datetime.now()-relativedelta(months=1, days=2)"/>
|
||||
</record>
|
||||
|
||||
<record id="website_sale_order_line_17" model="sale.order.line">
|
||||
@@ -615,7 +605,6 @@
|
||||
<field name="pricelist_id" ref="product.list0"/>
|
||||
<field name="team_id" ref="sales_team.salesteam_website_sales"/>
|
||||
<field name="date_order" eval="datetime.now()-relativedelta(months=2)"/>
|
||||
<field name="confirmation_date" eval="datetime.now()-relativedelta(months=2)"/>
|
||||
</record>
|
||||
|
||||
<record id="website_sale_order_line_18" model="sale.order.line">
|
||||
|
||||
@@ -17,8 +17,8 @@ class Digest(models.Model):
|
||||
for record in self:
|
||||
start, end, company = record._get_kpi_compute_parameters()
|
||||
confirmed_website_sales = self.env['sale.order'].search([
|
||||
('confirmation_date', '>=', start),
|
||||
('confirmation_date', '<', end),
|
||||
('date_order', '>=', start),
|
||||
('date_order', '<', end),
|
||||
('state', 'not in', ['draft', 'cancel', 'sent']),
|
||||
('website_id', '!=', False),
|
||||
('company_id', '=', company.id)
|
||||
|
||||
@@ -21,7 +21,6 @@
|
||||
<filter string="Status" name="groupby_status" context="{'group_by':'state'}"/>
|
||||
<separator orientation="vertical"/>
|
||||
<filter string="Order Date" name="groupby_order_date" context="{'group_by':'date'}"/>
|
||||
<filter string="Confirmation Date" name="groupby_confirmation_date" context="{'group_by':'confirmation_date'}"/>
|
||||
</group>
|
||||
</search>
|
||||
</field>
|
||||
|
||||
@@ -12,7 +12,6 @@
|
||||
<field name="user_id" ref="base.user_admin"/>
|
||||
<field name="pricelist_id" ref="product.list0"/>
|
||||
<field name="date_order" eval="DateTime.now() - relativedelta(days=30)"/>
|
||||
<field name="confirmation_date" eval="DateTime.now() - relativedelta(days=30)"/>
|
||||
<field name="team_id" ref="sales_team.salesteam_website_sales"/>
|
||||
<field name="website_id" eval="1"/>
|
||||
<field name="state">sale</field>
|
||||
@@ -34,7 +33,6 @@
|
||||
<field name="user_id" ref="base.user_admin"/>
|
||||
<field name="pricelist_id" ref="product.list0"/>
|
||||
<field name="date_order" eval="DateTime.now() - relativedelta(days=100)"/>
|
||||
<field name="confirmation_date" eval="DateTime.now() - relativedelta(days=100)"/>
|
||||
<field name="team_id" ref="sales_team.salesteam_website_sales"/>
|
||||
<field name="website_id" eval="1"/>
|
||||
<field name="state">sale</field>
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
<field name="model">sale.report</field>
|
||||
<field name="arch" type="xml">
|
||||
<graph string="eLearning Sales Analysis" type="line">
|
||||
<field name="confirmation_date" type="row" interval="day"/>
|
||||
<field name="date" type="row" interval="day"/>
|
||||
<field name="price_subtotal" type="measure"/>
|
||||
</graph>
|
||||
</field>
|
||||
@@ -17,7 +17,7 @@
|
||||
<field name="type">ir.actions.act_window</field>
|
||||
<field name="view_mode">graph,pivot</field>
|
||||
<field name="domain">[("product_id.channel_ids", "!=", False)]</field>
|
||||
<field name="context">{'group_by': ['confirmation_date', 'product_id']}</field>
|
||||
<field name="context">{'group_by': ['date', 'product_id']}</field>
|
||||
<field name="view_id" ref="sale_report_view_graph_slides"/>
|
||||
</record>
|
||||
</odoo>
|
||||
|
||||
Reference in New Issue
Block a user