[IMP] account, point_of_sale: improve menu, filters and search views

Specifications: improve menu organization, search filters and groupby, reorder
filters, update some field labels.

This commit is related to task #1878516 and PR #26929 .
This commit is contained in:
Pratima Gupta
2018-09-19 13:17:55 +02:00
committed by Thibault Delavallée
parent 21e5198da1
commit 5aad33098a
4 changed files with 21 additions and 22 deletions
@@ -27,8 +27,8 @@ class AccountInvoiceReport(models.Model):
record.user_currency_price_average = base_currency_id._convert(record.price_average, user_currency_id, company, date)
record.user_currency_residual = base_currency_id._convert(record.residual, user_currency_id, company, date)
number = fields.Char('Invoice Number', readonly=True)
date = fields.Date(readonly=True)
number = fields.Char('Invoice #', readonly=True)
date = fields.Date(readonly=True, string="Invoice Date")
product_id = fields.Many2one('product.product', string='Product', readonly=True)
product_qty = fields.Float(string='Product Quantity', readonly=True)
uom_name = fields.Char(string='Reference Unit of Measure', readonly=True)
@@ -41,7 +41,7 @@ class AccountInvoiceReport(models.Model):
commercial_partner_id = fields.Many2one('res.partner', string='Partner Company', help="Commercial Entity")
company_id = fields.Many2one('res.company', string='Company', readonly=True)
user_id = fields.Many2one('res.users', string='Salesperson', readonly=True)
price_total = fields.Float(string='Total Without Tax', readonly=True)
price_total = fields.Float(string='Untaxed Total', readonly=True)
user_currency_price_total = fields.Float(string="Total Without Tax in Currency", compute='_compute_amounts_in_user_currency', digits=0)
price_average = fields.Float(string='Average Price', readonly=True, group_operator="avg")
user_currency_price_average = fields.Float(string="Average Price in Currency", compute='_compute_amounts_in_user_currency', digits=0)
@@ -61,13 +61,14 @@ class AccountInvoiceReport(models.Model):
('cancel', 'Cancelled')
], string='Invoice Status', readonly=True)
date_due = fields.Date(string='Due Date', readonly=True)
account_id = fields.Many2one('account.account', string='Account', readonly=True, domain=[('deprecated', '=', False)])
account_line_id = fields.Many2one('account.account', string='Account Line', readonly=True, domain=[('deprecated', '=', False)])
account_id = fields.Many2one('account.account', string='Receivable/Payable Account', readonly=True, domain=[('deprecated', '=', False)])
account_line_id = fields.Many2one('account.account', string='Revenue/Expense Account', readonly=True, domain=[('deprecated', '=', False)])
partner_bank_id = fields.Many2one('res.partner.bank', string='Bank Account', readonly=True)
residual = fields.Float(string='Due Amount', readonly=True)
user_currency_residual = fields.Float(string="Total Residual", compute='_compute_amounts_in_user_currency', digits=0)
country_id = fields.Many2one('res.country', string='Country of the Partner Company')
country_id = fields.Many2one('res.country', string="Partner Company's Country")
account_analytic_id = fields.Many2one('account.analytic.account', string='Analytic Account', groups="analytic.group_analytic_accounting")
amount_total = fields.Float(string='Total', readonly=True)
_order = 'date desc'
@@ -95,7 +96,7 @@ class AccountInvoiceReport(models.Model):
sub.payment_term_id, sub.uom_name, sub.currency_id, sub.journal_id,
sub.fiscal_position_id, sub.user_id, sub.company_id, sub.nbr, sub.invoice_id, sub.type, sub.state,
sub.categ_id, sub.date_due, sub.account_id, sub.account_line_id, sub.partner_bank_id,
sub.product_qty, sub.price_total as price_total, sub.price_average as price_average,
sub.product_qty, sub.price_total as price_total, sub.price_average as price_average, sub.amount_total as amount_total,
COALESCE(cr.rate, 1) as currency_rate, sub.residual as residual, sub.commercial_partner_id as commercial_partner_id
"""
return select_str
@@ -113,6 +114,7 @@ class AccountInvoiceReport(models.Model):
ai.partner_bank_id,
SUM ((invoice_type.sign_qty * ail.quantity) / u.factor * u2.factor) AS product_qty,
SUM(ail.price_subtotal_signed * invoice_type.sign) AS price_total,
SUM(ai.amount_total * invoice_type.sign) AS amount_total,
SUM(ABS(ail.price_subtotal_signed)) / CASE
WHEN SUM(ail.quantity / u.factor * u2.factor) <> 0::numeric
THEN SUM(ail.quantity / u.factor * u2.factor)
@@ -69,31 +69,29 @@
<filter string="My Invoices" name="my_invoice" domain="[('user_id', '=', uid)]"/>
<separator/>
<field name="date"/>
<filter string="This Year" name="thisyear" domain="['|', ('date', '=', False), '&amp;',('date','&lt;=', time.strftime('%%Y-12-31')),('date','&gt;=',time.strftime('%%Y-01-01'))]" help="Journal invoices with period in current year"/>
<separator/>
<filter string="To Invoice" name="toinvoice" domain="[('state','=','draft')]" help = "Draft Invoices"/>
<filter string="Invoiced" name="current" domain="[('state','not in', ('draft','cancel'))]"/>
<separator/>
<filter string="Date" name="date_filter" date="date"/>
<filter string="Customer" name="customer" domain="['|', ('type','=','out_invoice'),('type','=','out_refund')]"/>
<filter string="Vendor" name="supplier" domain="['|', ('type','=','in_invoice'),('type','=','in_refund')]"/>
<filter string="Customers" name="customer" domain="['|', ('type','=','out_invoice'),('type','=','out_refund')]"/>
<filter string="Vendors" name="supplier" domain="['|', ('type','=','in_invoice'),('type','=','in_refund')]"/>
<separator/>
<filter string="Invoice" name="invoice" domain="['|', ('type','=','out_invoice'),('type','=','in_invoice')]"/>
<filter string="Credit Note" name="creditnote" domain="['|', ('type','=','out_refund'),('type','=','in_refund')]"/>
<filter string="Invoices" name="invoice" domain="['|', ('type','=','out_invoice'),('type','=','in_invoice')]"/>
<filter string="Credit Notes" name="creditnote" domain="['|', ('type','=','out_refund'),('type','=','in_refund')]"/>
<field name="partner_id" operator="child_of"/>
<field name="user_id" />
<field name="product_id" />
<field name="categ_id" filter_domain="[('categ_id', 'child_of', self)]"/>
<field name="account_analytic_id"/>
<group expand="1" string="Group By">
<filter string="Partner" name="partner_id" context="{'group_by':'partner_id','residual_visible':True}"/>
<filter string="Salesperson" name='user' context="{'group_by':'user_id'}"/>
<filter string="Partner" name="partner_id" context="{'group_by':'partner_id','residual_visible':True}"/>
<filter string="Product Category" name="category_product" context="{'group_by':'categ_id','residual_invisible':True}"/>
<filter string="Status" name="status" context="{'group_by':'state'}"/>
<filter string="Analytic Account" name="account_analytic_id" context="{'group_by':'account_analytic_id'}" groups="analytic.group_analytic_accounting" />
<filter string="Company" name="company" context="{'group_by':'company_id'}" groups="base.group_multi_company"/>
<separator orientation="vertical" />
<filter string="Date" name="date" context="{'group_by':'date'}"/>
<filter string="Due Date" name="duemonth" context="{'group_by':'date_due:month'}"/>
<filter string="Analytic Account" name="account_analytic_id" context="{'group_by':'account_analytic_id'}" groups="analytic.group_analytic_accounting" />
</group>
</search>
</field>
@@ -118,7 +116,7 @@
<field name="help">From this report, you can have an overview of the amount invoiced to your customers. The search tool can also be used to personalise your Invoices reports and so, match this analysis to your needs.</field>
</record>
<menuitem name="Invoices" action="action_account_invoice_report_all" id="menu_action_account_invoice_report_all" parent="account.account_reports_management_menu" sequence="25"/>
<menuitem name="Invoices" action="action_account_invoice_report_all" id="menu_action_account_invoice_report_all" parent="account.account_reports_management_menu" sequence="1"/>
</data>
</odoo>
@@ -632,7 +632,8 @@
<field name="arch" type="xml">
<search string="Search Invoice">
<field name="number" string="Invoice" filter_domain="['|','|','|', ('number','ilike',self), ('origin','ilike',self), ('reference', 'ilike', self), ('partner_id', 'child_of', self)]"/>
<field name="journal_id" />
<filter domain="[('user_id','=',uid)]" name="myinvoices" help="My Invoices"/>
<separator/>
<filter name="draft" string="Draft" domain="[('state','=','draft')]"/>
<filter name="unpaid" string="Open" domain="[('state', '=', 'open')]"/>
<filter name="in_payment" string="In Payment" domain="[('state', '=', 'in_payment')]"/>
@@ -643,8 +644,6 @@
<field name="user_id" string="Salesperson" domain="[('share','=', False)]"/>
<field name="date" string="Period"/>
<separator/>
<filter domain="[('user_id','=',uid)]" name="myinvoices" help="My Invoices"/>
<separator/>
<filter string="My Activities" name="activities_my"
domain="[('activity_ids.user_id', '=', uid)]"/>
<separator/>
@@ -29,9 +29,9 @@
<field name="model">account.journal</field>
<field name="inherit_id" ref="account.view_account_journal_search" />
<field name="arch" type="xml">
<field name="name" position="after">
<xpath expr="//filter[@name='inactive']" position="before">
<filter name="available_in_pos" string="Available for Point of Sale" domain="[('journal_user', '=', True)]"/>
</field>
</xpath>
</field>
</record>