Files
tryton/account.py
T
Cédric Krier 8a8435b063 Use depends on methods
issue5191
review45481002
2018-05-31 13:25:29 +02:00

64 lines
2.4 KiB
Python

# This file is part of Tryton. The COPYRIGHT file at the top level of
# this repository contains the full copyright notices and license terms.
from trytond.pool import Pool, PoolMeta
from trytond.model import fields
__all__ = ['TaxRuleLineTemplate', 'TaxRuleLine', 'InvoiceLine']
class TaxRuleLineTemplate:
__metaclass__ = PoolMeta
__name__ = 'account.tax.rule.line.template'
from_country = fields.Many2One('country.country', 'From Country',
ondelete='RESTRICT')
to_country = fields.Many2One('country.country', 'To Country',
ondelete='RESTRICT')
def _get_tax_rule_line_value(self, rule_line=None):
value = super(TaxRuleLineTemplate, self)._get_tax_rule_line_value(
rule_line=rule_line)
if not rule_line or rule_line.from_country != self.from_country:
value['from_country'] = (
self.from_country.id if self.from_country else None)
if not rule_line or rule_line.to_country != self.to_country:
value['to_country'] = (
self.to_country.id if self.to_country else None)
return value
class TaxRuleLine:
__metaclass__ = PoolMeta
__name__ = 'account.tax.rule.line'
from_country = fields.Many2One('country.country', 'From Country',
ondelete='RESTRICT')
to_country = fields.Many2One('country.country', 'To Country',
ondelete='RESTRICT')
class InvoiceLine:
__metaclass__ = PoolMeta
__name__ = 'account.invoice.line'
@fields.depends('origin')
def _get_tax_rule_pattern(self):
pool = Pool()
SaleLine = pool.get('sale.line')
PurchaseLine = pool.get('purchase.line')
pattern = super(InvoiceLine, self)._get_tax_rule_pattern()
from_country, to_country = None, None
if isinstance(self.origin, SaleLine):
if self.origin.warehouse.address:
from_country = self.origin.warehouse.address.country
to_country = self.origin.sale.shipment_address.country
elif isinstance(self.origin, PurchaseLine):
from_country = self.origin.purchase.invoice_address.country
if self.origin.purchase.warehouse.address:
to_country = self.origin.purchase.warehouse.address.country
pattern['from_country'] = from_country.id if from_country else None
pattern['to_country'] = to_country.id if to_country else None
return pattern