[CLN] sale: sale report fields

Part-of: odoo/odoo#123691
This commit is contained in:
Victor Feyens
2023-06-05 16:17:06 +02:00
parent b1627dd3a7
commit 51edac3364
2 changed files with 60 additions and 43 deletions
+1 -1
View File
@@ -66,7 +66,7 @@ class SaleReport(models.Model):
p.product_tmpl_id,
partner.country_id AS country_id,
partner.industry_id AS industry_id,
partner.zip AS zip,
partner.zip AS partner_zip,
partner.commercial_partner_id AS commercial_partner_id,
(SUM(p.weight) * l.qty / u.factor) AS weight,
(SUM(p.volume) * l.qty / u.factor) AS volume,
+59 -42
View File
@@ -15,39 +15,24 @@ class SaleReport(models.Model):
def _get_done_states(self):
return ['sale', 'done']
name = fields.Char('Order Reference', readonly=True)
date = fields.Datetime('Order 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)
qty_to_deliver = fields.Float('Qty To Deliver', readonly=True)
qty_delivered = fields.Float('Qty Delivered', readonly=True)
qty_to_invoice = fields.Float('Qty To Invoice', readonly=True)
qty_invoiced = fields.Float('Qty Invoiced', readonly=True)
partner_id = fields.Many2one('res.partner', 'Customer', readonly=True)
company_id = fields.Many2one('res.company', 'Company', readonly=True)
user_id = fields.Many2one('res.users', 'Salesperson', readonly=True)
price_total = fields.Monetary('Total', readonly=True)
price_subtotal = fields.Monetary('Untaxed Total', readonly=True)
untaxed_amount_to_invoice = fields.Monetary('Untaxed Amount To Invoice', readonly=True)
untaxed_amount_invoiced = fields.Monetary('Untaxed Amount Invoiced', readonly=True)
product_tmpl_id = fields.Many2one('product.template', 'Product', readonly=True)
categ_id = fields.Many2one('product.category', 'Product Category', readonly=True)
nbr = fields.Integer('# of Lines', readonly=True)
pricelist_id = fields.Many2one('product.pricelist', 'Pricelist', readonly=True)
analytic_account_id = fields.Many2one('account.analytic.account', 'Analytic Account', readonly=True)
team_id = fields.Many2one('crm.team', 'Sales Team', readonly=True)
country_id = fields.Many2one('res.country', 'Customer Country', readonly=True)
industry_id = fields.Many2one('res.partner.industry', 'Customer Industry', readonly=True)
zip = fields.Char('Customer ZIP', readonly=True)
commercial_partner_id = fields.Many2one('res.partner', 'Customer Entity', readonly=True)
state = fields.Selection([
('draft', 'Draft Quotation'),
('sent', 'Quotation Sent'),
('sale', 'Sales Order'),
('done', 'Sales Done'),
('cancel', 'Cancelled'),
# sale.order fields
name = fields.Char(string="Order Reference", readonly=True)
date = fields.Datetime(string="Order Date", readonly=True)
partner_id = fields.Many2one(comodel_name='res.partner', string="Customer", readonly=True)
company_id = fields.Many2one(comodel_name='res.company', readonly=True)
pricelist_id = fields.Many2one(comodel_name='product.pricelist', readonly=True)
team_id = fields.Many2one(comodel_name='crm.team', string="Sales Team", readonly=True)
user_id = fields.Many2one(comodel_name='res.users', string="Salesperson", readonly=True)
state = fields.Selection(
selection=[
('draft', 'Draft Quotation'),
('sent', 'Quotation Sent'),
('sale', 'Sales Order'),
('done', 'Sales Done'),
('cancel', 'Cancelled'),
], string='Status', readonly=True)
analytic_account_id = fields.Many2one(
comodel_name='account.analytic.account', string="Analytic Account", readonly=True)
invoice_status = fields.Selection(
selection=[
('upselling', "Upselling Opportunity"),
@@ -55,17 +40,49 @@ class SaleReport(models.Model):
('to invoice', "To Invoice"),
('no', "Nothing to Invoice"),
], string="Invoice Status", readonly=True)
weight = fields.Float('Gross Weight', readonly=True)
volume = fields.Float('Volume', readonly=True)
discount = fields.Float('Discount %', readonly=True)
discount_amount = fields.Monetary('Discount Amount', readonly=True)
currency_id = fields.Many2one('res.currency', compute='_compute_currency_id')
campaign_id = fields.Many2one('utm.campaign', 'Campaign', readonly=True)
medium_id = fields.Many2one('utm.medium', 'Medium', readonly=True)
source_id = fields.Many2one('utm.source', 'Source', readonly=True)
campaign_id = fields.Many2one(comodel_name='utm.campaign', string="Campaign", readonly=True)
medium_id = fields.Many2one(comodel_name='utm.medium', string="Medium", readonly=True)
source_id = fields.Many2one(comodel_name='utm.source', string="Source", readonly=True)
order_id = fields.Many2one('sale.order', 'Order #', readonly=True)
# res.partner fields
commercial_partner_id = fields.Many2one(
comodel_name='res.partner', string="Customer Entity", readonly=True)
country_id = fields.Many2one(
comodel_name='res.country', string="Customer Country", readonly=True)
industry_id = fields.Many2one(
comodel_name='res.partner.industry', string="Customer Industry", readonly=True)
partner_zip = fields.Char(string="Customer ZIP", readonly=True)
# sale.order.line fields
order_id = fields.Many2one(comodel_name='sale.order', string="Order #", readonly=True)
categ_id = fields.Many2one(
comodel_name='product.category', string="Product Category", readonly=True)
product_id = fields.Many2one(
comodel_name='product.product', string="Product Variant", readonly=True)
product_tmpl_id = fields.Many2one(
comodel_name='product.template', string="Product", readonly=True)
product_uom = fields.Many2one(comodel_name='uom.uom', string="Unit of Measure", readonly=True)
product_uom_qty = fields.Float(string="Qty Ordered", readonly=True)
qty_to_deliver = fields.Float(string="Qty To Deliver", readonly=True)
qty_delivered = fields.Float(string="Qty Delivered", readonly=True)
qty_to_invoice = fields.Float(string="Qty To Invoice", readonly=True)
qty_invoiced = fields.Float(string="Qty Invoiced", readonly=True)
price_subtotal = fields.Monetary(string="Untaxed Total", readonly=True)
price_total = fields.Monetary(string="Total", readonly=True)
untaxed_amount_to_invoice = fields.Monetary(string="Untaxed Amount To Invoice", readonly=True)
untaxed_amount_invoiced = fields.Monetary(string="Untaxed Amount Invoiced", readonly=True)
weight = fields.Float(string="Gross Weight", readonly=True)
volume = fields.Float(string="Volume", readonly=True)
discount = fields.Float(string="Discount %", readonly=True)
discount_amount = fields.Monetary(string="Discount Amount", readonly=True)
# aggregates or computed fields
nbr = fields.Integer(string="# of Lines", readonly=True)
currency_id = fields.Many2one(comodel_name='res.currency', compute='_compute_currency_id')
@api.depends_context('allowed_company_ids')
def _compute_currency_id(self):
@@ -122,7 +139,7 @@ class SaleReport(models.Model):
p.product_tmpl_id,
partner.country_id AS country_id,
partner.industry_id AS industry_id,
partner.zip AS zip,
partner.zip AS partner_zip,
partner.commercial_partner_id AS commercial_partner_id,
CASE WHEN l.product_id IS NOT NULL THEN SUM(p.weight * l.product_uom_qty / u.factor * u2.factor) ELSE 0 END AS weight,
CASE WHEN l.product_id IS NOT NULL THEN SUM(p.volume * l.product_uom_qty / u.factor * u2.factor) ELSE 0 END AS volume,