114 lines
3.0 KiB
Python
114 lines
3.0 KiB
Python
from decimal import Decimal
|
|
|
|
from trytond.pool import PoolMeta
|
|
|
|
|
|
class Invoice(metaclass=PoolMeta):
|
|
__name__ = 'account.invoice'
|
|
|
|
def _get_report_sale(self):
|
|
sales = list(self.sales or [])
|
|
return sales[0] if sales else None
|
|
|
|
def _get_report_sale_line(self):
|
|
sale = self._get_report_sale()
|
|
if sale and sale.lines:
|
|
return sale.lines[0]
|
|
|
|
@property
|
|
def report_address(self):
|
|
sale = self._get_report_sale()
|
|
if sale and sale.report_address:
|
|
return sale.report_address
|
|
if self.invoice_address and self.invoice_address.full_address:
|
|
return self.invoice_address.full_address
|
|
return ''
|
|
|
|
@property
|
|
def report_contract_number(self):
|
|
sale = self._get_report_sale()
|
|
if sale and sale.full_number:
|
|
return sale.full_number
|
|
return self.origins or ''
|
|
|
|
@property
|
|
def report_shipment(self):
|
|
sale = self._get_report_sale()
|
|
if sale and sale.report_shipment:
|
|
return sale.report_shipment
|
|
return self.description or ''
|
|
|
|
@property
|
|
def report_product_description(self):
|
|
line = self._get_report_sale_line()
|
|
if line and line.product:
|
|
return line.product.description or ''
|
|
return ''
|
|
|
|
@property
|
|
def report_crop_name(self):
|
|
sale = self._get_report_sale()
|
|
if sale and sale.crop:
|
|
return sale.crop.name or ''
|
|
return ''
|
|
|
|
@property
|
|
def report_attributes_name(self):
|
|
line = self._get_report_sale_line()
|
|
if line:
|
|
return line.attributes_name or ''
|
|
return ''
|
|
|
|
@property
|
|
def report_price(self):
|
|
sale = self._get_report_sale()
|
|
if sale and sale.report_price:
|
|
return sale.report_price
|
|
return ''
|
|
|
|
@property
|
|
def report_payment_date(self):
|
|
sale = self._get_report_sale()
|
|
if sale and sale.report_payment_date:
|
|
return sale.report_payment_date
|
|
return ''
|
|
|
|
@property
|
|
def report_payment_description(self):
|
|
sale = self._get_report_sale()
|
|
if sale and sale.payment_term:
|
|
return sale.payment_term.description or ''
|
|
if self.payment_term:
|
|
return self.payment_term.description or ''
|
|
return ''
|
|
|
|
@property
|
|
def report_nb_bale(self):
|
|
sale = self._get_report_sale()
|
|
if sale and sale.report_nb_bale:
|
|
return sale.report_nb_bale
|
|
return ''
|
|
|
|
@property
|
|
def report_gross(self):
|
|
sale = self._get_report_sale()
|
|
if sale and sale.report_gross != '':
|
|
return sale.report_gross
|
|
return ''
|
|
|
|
@property
|
|
def report_net(self):
|
|
sale = self._get_report_sale()
|
|
if sale and sale.report_net != '':
|
|
return sale.report_net
|
|
if self.lines:
|
|
return self.lines[0].quantity
|
|
return ''
|
|
|
|
@property
|
|
def report_lbs(self):
|
|
net = self.report_net
|
|
if net == '':
|
|
return ''
|
|
return Decimal(net) * Decimal('2.20462')
|