diff --git a/modules/purchase_trade/sale.py b/modules/purchase_trade/sale.py
index 1f59204..0b0893e 100755
--- a/modules/purchase_trade/sale.py
+++ b/modules/purchase_trade/sale.py
@@ -598,7 +598,7 @@ class Sale(metaclass=PoolMeta):
return '\n'.join(periods)
return ''
- @property
+ @property
def report_payment_date(self):
line = self._get_report_first_line()
if line:
@@ -609,6 +609,51 @@ class Sale(metaclass=PoolMeta):
if payment_date:
payment_date = format_date_en(payment_date)
return payment_date
+
+ def _get_report_bill_amount(self):
+ invoices = [
+ invoice for invoice in (self.invoices or [])
+ if getattr(invoice, 'state', None) != 'cancelled'
+ ]
+ if invoices:
+ invoice = sorted(
+ invoices,
+ key=lambda i: (
+ getattr(i, 'invoice_date', None) or datetime.date.min,
+ getattr(i, 'id', 0)))[0]
+ return Decimal(str(getattr(invoice, 'total_amount', 0) or 0))
+ return Decimal(str(self.total_amount or 0))
+
+ @property
+ def report_bill_amount(self):
+ return self._get_report_bill_amount()
+
+ @property
+ def report_bill_amount_words(self):
+ value = self._get_report_bill_amount()
+ if self.currency and (self.currency.rec_name or '').upper() == 'USC':
+ return amount_to_currency_words(value, 'USC', 'USC')
+ return amount_to_currency_words(value)
+
+ @property
+ def report_bill_maturity_date(self):
+ maturity_dates = []
+ for invoice in (self.invoices or []):
+ if getattr(invoice, 'state', None) == 'cancelled':
+ continue
+ for line in (invoice.lines_to_pay or []):
+ if getattr(line, 'maturity_date', None):
+ maturity_dates.append(line.maturity_date)
+ if maturity_dates:
+ return min(maturity_dates)
+
+ if self.lc_date:
+ return self.lc_date
+
+ line = self._get_report_first_line()
+ if line and self.payment_term and self.payment_term.lines:
+ Date = Pool().get('ir.date')
+ return self.payment_term.lines[0].get_date(Date.today(), line)
@property
def report_shipment(self):
diff --git a/modules/sale/bill.fodt b/modules/sale/bill.fodt
index 7750d7e..9fba300 100644
--- a/modules/sale/bill.fodt
+++ b/modules/sale/bill.fodt
@@ -466,7 +466,7 @@
<format_date(sale.sale_date, sale.party.lang)>
- <sale.payment_term.rec_name if sale.payment_term else ''>
+ <format_date(sale.report_bill_maturity_date, sale.party.lang) if sale.report_bill_maturity_date else ''>
@@ -477,12 +477,12 @@
- <format_currency(sale.lines[0].unit_price, sale.party.lang, sale.currency) if sale.lines else ''>
+ <format_currency(sale.report_bill_amount, sale.party.lang, sale.currency)>
- <sale.reference if sale.reference else ''>
+ ***<sale.report_bill_amount_words>***
@@ -501,7 +501,7 @@
<sale.currency.symbol if sale.currency else ''>
- <sale.party.addresses[0].country.name if sale.party and sale.party.addresses else ''>
+ <(sale.party.addresses[0].country.name.upper()) if sale.party and sale.party.addresses and sale.party.addresses[0].country else ''>