[MERGE] sale,pos_sale,website_sale: prepare for sale_enterprise

We want to add a dashboard view for sale in enterprise, for this we need
to make changes in the way views are defined on the actions (use
act_window.views) in sale.

We also need to modify the demo data in order to have beutiful display
in demo mode.

Task: #59409
Closes #25940
This commit is contained in:
RomainLibert
2018-08-03 11:18:20 +02:00
6 changed files with 119 additions and 10 deletions
+4 -1
View File
@@ -56,7 +56,10 @@ class SaleReport(models.Model):
(select sum(t.volume*l.qty/u.factor) from pos_order_line l
join product_product p on (l.product_id=p.id)
left join product_template t on (p.product_tmpl_id=t.id)
left join uom_uom u on (u.id=t.uom_id)) AS volume
left join uom_uom u on (u.id=t.uom_id)) AS volume,
l.discount as discount,
sum((l.price_unit * l.discount / 100.0 / COALESCE(cr.rate, 1.0))) as discount_amount,
NULL as order_id
'''
for field in fields.keys():
+12 -2
View File
@@ -46,6 +46,11 @@ class SaleReport(models.Model):
weight = fields.Float('Gross Weight', readonly=True)
volume = fields.Float('Volume', readonly=True)
discount = fields.Float('Discount %', readonly=True)
discount_amount = fields.Float('Discount Amount', readonly=True)
order_id = fields.Integer('Order ID', readonly=True)
def _query(self, with_clause='', fields={}, groupby='', from_clause=''):
with_ = """currency_rate as (%s) %s""" % (self.env['res.currency']._select_companies_rates(), with_clause)
@@ -78,7 +83,10 @@ class SaleReport(models.Model):
partner.country_id as country_id,
partner.commercial_partner_id as commercial_partner_id,
sum(p.weight * l.product_uom_qty / u.factor * u2.factor) as weight,
sum(p.volume * l.product_uom_qty / u.factor * u2.factor) as volume
sum(p.volume * l.product_uom_qty / u.factor * u2.factor) as volume,
l.discount as discount,
sum((l.price_unit * l.discount / 100.0 / COALESCE(cr.rate, 1.0))) as discount_amount,
s.id as order_id
"""
for field in fields.values():
@@ -117,7 +125,9 @@ class SaleReport(models.Model):
s.team_id,
p.product_tmpl_id,
partner.country_id,
partner.commercial_partner_id %s
partner.commercial_partner_id,
l.discount,
s.id %s
""" % (groupby)
return 'WITH %s (SELECT %s FROM %s WHERE l.product_id IS NOT NULL GROUP BY %s)' % (with_, select_, from_, groupby_)
+6 -3
View File
@@ -17,7 +17,7 @@
<field name="name">sale.report.graph</field>
<field name="model">sale.report</field>
<field name="arch" type="xml">
<graph string="Sales Analysis">
<graph string="Sales Analysis" type="line">
<field name="date" type="row" interval="day"/>
<field name="price_subtotal" type="measure"/>
</graph>
@@ -31,9 +31,12 @@
<search string="Sales Analysis">
<field name="date"/>
<filter string="Date" name="year" invisible="1" date="date" default_period="this_year"/>
<filter name="Quotations" string="Quotations" domain="[('state','in', ('draft', 'sent'))]"/>
<filter name="Sales" string="Sales" domain="[('state','not in',('draft', 'cancel', 'sent'))]"/>
<filter name="Quotations" string="Quotations" domain="[('state','=', 'draft')]"/>
<filter name="quotation_sent" string="Quotation Sent" domain="[('state', '=', 'sent')]"/>
<filter name="Sales" string="Sales Orders" domain="[('state','not in',('draft', 'cancel', 'sent'))]"/>
<separator/>
<filter name="to_invoice" string="To Invoice" domain="[('invoice_status', '=', 'to invoice')]"/>
<filter name="fully_invoiced" string="Fully Invoiced" domain="[('invoice_status', '=', 'invoiced')]"/>
<field name="partner_id"/>
<field name="product_id"/>
<field name="user_id"/>
+85 -4
View File
@@ -566,7 +566,7 @@
<field name="partner_id" operator="child_of"/>
<field name="user_id"/>
<field name="team_id" string="Sales Team"/>
<field name="analytic_account_id"/>
<field name="analytic_account_id" groups="analytic.group_analytic_accounting"/>
<!-- We only allow to search on the following sale order line fields (product, name) because the other fields, such as price, quantity, ...
will not be searched as often, and if they need to be searched it's usually in the context of products
and then they can be searched from the page listing the sale order lines related to a product (from the product itself).
@@ -649,6 +649,48 @@
</field>
</record>
<record id="sale_order_action_view_order_tree" model="ir.actions.act_window.view">
<field name="sequence" eval="1"/>
<field name="view_mode">tree</field>
<field name="view_id" ref="sale.view_order_tree"/>
<field name="act_window_id" ref="action_orders"/>
</record>
<record id="sale_order_action_view_order_kanban" model="ir.actions.act_window.view">
<field name="sequence" eval="2"/>
<field name="view_mode">kanban</field>
<field name="view_id" ref="sale.view_sale_order_kanban"/>
<field name="act_window_id" ref="action_orders"/>
</record>
<record id="sale_order_action_view_order_form" model="ir.actions.act_window.view">
<field name="sequence" eval="3"/>
<field name="view_mode">form</field>
<field name="view_id" ref="sale.view_order_form"/>
<field name="act_window_id" ref="action_orders"/>
</record>
<record id="sale_order_action_view_order_calendar" model="ir.actions.act_window.view">
<field name="sequence" eval="4"/>
<field name="view_mode">calendar</field>
<field name="view_id" ref="sale.view_sale_order_calendar"/>
<field name="act_window_id" ref="action_orders"/>
</record>
<record id="sale_order_action_view_order_pivot" model="ir.actions.act_window.view">
<field name="sequence" eval="5"/>
<field name="view_mode">pivot</field>
<field name="view_id" ref="sale.view_sale_order_pivot"/>
<field name="act_window_id" ref="action_orders"/>
</record>
<record id="sale_order_action_view_order_graph" model="ir.actions.act_window.view">
<field name="sequence" eval="6"/>
<field name="view_mode">graph</field>
<field name="view_id" ref="sale.view_sale_order_graph"/>
<field name="act_window_id" ref="action_orders"/>
</record>
<menuitem id="menu_sale_order"
name="Orders"
action="action_orders"
@@ -732,9 +774,6 @@
<field name="name">Quotations</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">sale.order</field>
<field name="view_type">form</field>
<field name="view_id" ref="view_quotation_tree"/>
<field name="view_mode">tree,kanban,form,calendar,pivot,graph</field>
<field name="search_view_id" ref="sale_order_view_search_inherit_quotation"/>
<field name="help" type="html">
<p class="o_view_nocontent_smiling_face">
@@ -745,6 +784,48 @@
</field>
</record>
<record id="sale_order_action_view_quotation_tree" model="ir.actions.act_window.view">
<field name="sequence" eval="1"/>
<field name="view_mode">tree</field>
<field name="view_id" ref="sale.view_quotation_tree"/>
<field name="act_window_id" ref="action_quotations"/>
</record>
<record id="sale_order_action_view_quotation_kanban" model="ir.actions.act_window.view">
<field name="sequence" eval="2"/>
<field name="view_mode">kanban</field>
<field name="view_id" ref="sale.view_sale_order_kanban"/>
<field name="act_window_id" ref="action_quotations"/>
</record>
<record id="sale_order_action_view_quotation_form" model="ir.actions.act_window.view">
<field name="sequence" eval="3"/>
<field name="view_mode">form</field>
<field name="view_id" ref="sale.view_order_form"/>
<field name="act_window_id" ref="action_quotations"/>
</record>
<record id="sale_order_action_view_quotation_calendar" model="ir.actions.act_window.view">
<field name="sequence" eval="4"/>
<field name="view_mode">calendar</field>
<field name="view_id" ref="sale.view_sale_order_calendar"/>
<field name="act_window_id" ref="action_quotations"/>
</record>
<record id="sale_order_action_view_quotation_pivot" model="ir.actions.act_window.view">
<field name="sequence" eval="5"/>
<field name="view_mode">pivot</field>
<field name="view_id" ref="sale.view_sale_order_pivot"/>
<field name="act_window_id" ref="action_quotations"/>
</record>
<record id="sale_order_action_view_quotation_graph" model="ir.actions.act_window.view">
<field name="sequence" eval="6"/>
<field name="view_mode">graph</field>
<field name="view_id" ref="sale.view_sale_order_graph"/>
<field name="act_window_id" ref="action_quotations"/>
</record>
<menuitem id="menu_sale_quotations"
action="action_quotations_with_onboarding"
parent="sale_order_menu"
+6
View File
@@ -572,4 +572,10 @@
<!-- action_confirm for confirmation date -->
<function model="sale.order" name="action_confirm" eval="[[ref('website_sale_order_14')]]"/>
<function model="sale.order" name="_set_demo_create_date">
<value eval="[ref('website_sale_order_1'), ref('website_sale_order_2'), ref('website_sale_order_3'), ref('website_sale_order_4'),
ref('website_sale_order_5'), ref('website_sale_order_6'), ref('website_sale_order_7')]"/>
<value eval="(datetime.now()-timedelta(days=8)).strftime('%Y-%m-%d %H:%M:%S')"/>
</function>
</odoo>
+6
View File
@@ -256,3 +256,9 @@ class SaleOrder(models.Model):
self.payment_tx_id.state = 'done'
else:
raise ValidationError(_("The quote should be sent and the payment acquirer type should be manual or wire transfer"))
def _set_demo_create_date(self, create_date):
self.env.cr.execute("""UPDATE sale_order SET create_date=%s WHERE id IN %s """, (create_date, tuple(self.ids)))
self.modified(['create_date'])
if self.env.recompute and self.env.context.get('recompute', True):
self.recompute()