IMP account_usability: set sale date on invoice (#101)

* IMP account_usability: set sale date on invoice
This commit is contained in:
David Beal
2019-08-19 13:06:41 +02:00
committed by GitHub
parent c5ffe375a5
commit e220da006f
3 changed files with 39 additions and 3 deletions

View File

@@ -14,10 +14,13 @@ Account Usability
The usability enhancements include:
* show the supplier invoice number in the tree view of supplier invoices
* add an *Overdue* filter on invoice search view (this feature was previously located in te module *account_invoice_overdue_filter*)
* Increase the default limit of 80 lines in account move and account move line view.
* Fast search on *Reconcile Ref* for account move line.
* add an *Overdue* filter on invoice search view (this feature was previously
located in te module *account_invoice_overdue_filter*)
* increase the default limit of 80 lines in account move and account move line view.
* fast search on *Reconcile Ref* for account move line.
* disable reconciliation "guessing"
* add sale dates to invoice report to be compliant with
https://www.service-public.fr/professionnels-entreprises/vosdroits/F31808
Together with this module, I recommend the use of the following modules:
* account_invoice_supplier_ref_unique (OCA project account-invoicing)
@@ -40,6 +43,7 @@ This module has been written by Alexis de Lattre from Akretion <alexis.delattre@
'account_invoice_report_view.xml',
'partner_view.xml',
'wizard/account_invoice_mark_sent_view.xml',
'report/invoice_report.xml',
],
'installable': True,
}

View File

@@ -37,6 +37,10 @@ class AccountInvoice(models.Model):
has_attachment = fields.Boolean(
compute='_compute_has_attachment',
search='_search_has_attachment', readonly=True)
sale_dates = fields.Char(
compute="_compute_sales_dates", readonly=True,
help="This information appears on invoice qweb report "
"(you may use it for your own report)")
def _compute_has_discount(self):
prec = self.env['decimal.precision'].precision_get('Discount')
@@ -170,6 +174,24 @@ class AccountInvoice(models.Model):
# ]
return res
def _compute_sales_dates(self):
""" French law requires to set sale order dates into invoice
returned string: "sale1 (date1), sale2 (date2) ..."
"""
for inv in self:
sales = inv.invoice_line_ids.mapped(
'sale_line_ids').mapped('order_id')
lang = inv.partner_id.commercial_partner_id.lang
date_format = self.env["res.lang"]._lang_get(
lang or "").date_format
dates = ["%s%s" % (
x.name,
x.confirmation_date and " (%s)" %
# only when confirmation_date display it
x.confirmation_date.strftime(date_format) or "")
for x in sales]
inv.sale_dates = ", ".join(dates)
class AccountInvoiceLine(models.Model):
_inherit = 'account.invoice.line'

View File

@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<template id="report_invoice_document" inherit_id="account.report_invoice_document">
<xpath expr="//div[@name='origin']/p" position="replace">
<p class="m-0" t-field="o.sale_dates"/>
</xpath>
</template>
</odoo>