first commit
This commit is contained in:
182
modules/account_es/account.py
Normal file
182
modules/account_es/account.py
Normal file
@@ -0,0 +1,182 @@
|
||||
# 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.model import fields
|
||||
from trytond.pool import Pool, PoolMeta
|
||||
from trytond.pyson import Bool, Eval
|
||||
from trytond.transaction import Transaction
|
||||
|
||||
|
||||
class TaxCodeTemplate(metaclass=PoolMeta):
|
||||
__name__ = 'account.tax.code.template'
|
||||
|
||||
aeat_report = fields.Selection([
|
||||
(None, ''),
|
||||
('111', "Model 111"),
|
||||
('115', "Model 115"),
|
||||
('303', "Model 303"),
|
||||
], "AEAT Report")
|
||||
|
||||
def _get_tax_code_value(self, code=None):
|
||||
value = super()._get_tax_code_value(code=code)
|
||||
value['aeat_report'] = self.aeat_report
|
||||
return value
|
||||
|
||||
|
||||
class TaxCode(metaclass=PoolMeta):
|
||||
__name__ = 'account.tax.code'
|
||||
|
||||
aeat_report = fields.Selection([
|
||||
(None, ''),
|
||||
('111', "Model 111"),
|
||||
('115', "Model 115"),
|
||||
('303', "Model 303"),
|
||||
], "AEAT Report",
|
||||
states={
|
||||
'readonly': (Bool(Eval('template', -1))
|
||||
& ~Eval('template_override', False)),
|
||||
})
|
||||
|
||||
|
||||
class TaxTemplate(metaclass=PoolMeta):
|
||||
__name__ = 'account.tax.template'
|
||||
|
||||
es_vat_list_code = fields.Char("Spanish VAT List Code")
|
||||
es_ec_purchases_list_code = fields.Char("Spanish EC Purchase List Code")
|
||||
es_reported_with = fields.Many2One('account.tax.template', "Reported With")
|
||||
es_exclude_from_vat_book = fields.Boolean("Exclude from Spanish VAT Book")
|
||||
|
||||
@classmethod
|
||||
def default_es_exclude_from_vat_book(cls):
|
||||
return False
|
||||
|
||||
def _get_tax_value(self, tax=None):
|
||||
value = super()._get_tax_value(tax=tax)
|
||||
for name in [
|
||||
'es_vat_list_code', 'es_ec_purchases_list_code',
|
||||
'es_exclude_from_vat_book']:
|
||||
if not tax or getattr(tax, name) != getattr(self, name):
|
||||
value[name] = getattr(self, name)
|
||||
return value
|
||||
|
||||
@classmethod
|
||||
def create_tax(
|
||||
cls, account_id, company_id, template2account, template2tax=None):
|
||||
pool = Pool()
|
||||
Tax = pool.get('account.tax')
|
||||
super().create_tax(
|
||||
account_id, company_id, template2account, template2tax)
|
||||
|
||||
to_write = []
|
||||
|
||||
for template_id, tax_id in template2tax.items():
|
||||
template = cls(template_id)
|
||||
if not template.es_reported_with:
|
||||
continue
|
||||
reported_with = template2tax[template.es_reported_with.id]
|
||||
to_write.append([Tax(tax_id)])
|
||||
to_write.append({
|
||||
'es_reported_with': reported_with,
|
||||
})
|
||||
|
||||
if to_write:
|
||||
Tax.write(*to_write)
|
||||
|
||||
|
||||
class Tax(metaclass=PoolMeta):
|
||||
__name__ = 'account.tax'
|
||||
|
||||
es_vat_list_code = fields.Char("Spanish VAT List Code",
|
||||
states={
|
||||
'readonly': (Bool(Eval('template', -1))
|
||||
& ~Eval('template_override', False)),
|
||||
})
|
||||
es_ec_purchases_list_code = fields.Char("Spanish EC Purchases List Code",
|
||||
states={
|
||||
'readonly': (Bool(Eval('template', -1))
|
||||
& ~Eval('template_override', False)),
|
||||
})
|
||||
es_reported_with = fields.Many2One('account.tax', "Reported with",
|
||||
states={
|
||||
'readonly': (Bool(Eval('template', -1))
|
||||
& ~Eval('template_override', False)),
|
||||
})
|
||||
es_exclude_from_vat_book = fields.Boolean("Exclude from Spanish VAT Book",
|
||||
states={
|
||||
'readonly': (Bool(Eval('template', -1))
|
||||
& ~Eval('template_override', False)),
|
||||
})
|
||||
|
||||
@classmethod
|
||||
def default_es_exclude_from_vat_book(cls):
|
||||
return False
|
||||
|
||||
@classmethod
|
||||
def update_tax(cls, company_id, template2account, template2tax=None):
|
||||
super().update_tax(company_id, template2account, template2tax)
|
||||
|
||||
to_write = []
|
||||
|
||||
for template_id, tax_id in template2tax.items():
|
||||
tax = cls(tax_id)
|
||||
if not tax.template_override:
|
||||
values = {}
|
||||
reported_with = (tax.es_reported_with.id
|
||||
if tax.es_reported_with else None)
|
||||
if (tax.template.es_reported_with
|
||||
and reported_with != template2tax.get(
|
||||
tax.template.es_reported_with.id)):
|
||||
values['es_reported_with'] = template2tax.get(
|
||||
tax.template.es_reported_with.id)
|
||||
elif (not tax.template.es_reported_with
|
||||
and tax.es_reported_with):
|
||||
values['es_reported_with'] = None
|
||||
if values:
|
||||
to_write.append([tax])
|
||||
to_write.append(values)
|
||||
|
||||
if to_write:
|
||||
cls.write(*to_write)
|
||||
|
||||
|
||||
class CreateChart(metaclass=PoolMeta):
|
||||
__name__ = 'account.create_chart'
|
||||
|
||||
def default_properties(self, fields):
|
||||
pool = Pool()
|
||||
ModelData = pool.get('ir.model.data')
|
||||
defaults = super().default_properties(fields)
|
||||
for type_ in ['normal', 'pyme']:
|
||||
try:
|
||||
template_id = ModelData.get_id('account_es.pgc_0_' + type_)
|
||||
except KeyError:
|
||||
continue
|
||||
if self.account.account_template.id == template_id:
|
||||
defaults['account_receivable'] = self.get_account(
|
||||
'account_es.pgc_4300_' + type_)
|
||||
defaults['account_payable'] = self.get_account(
|
||||
'account_es.pgc_4000_' + type_)
|
||||
break
|
||||
return defaults
|
||||
|
||||
|
||||
class Invoice(metaclass=PoolMeta):
|
||||
__name__ = 'account.invoice'
|
||||
|
||||
@property
|
||||
def es_vat_book_type(self):
|
||||
if self.sequence_type == 'credit_note':
|
||||
return 'R0'
|
||||
if not self.party_tax_identifier:
|
||||
return 'F2'
|
||||
return 'F1'
|
||||
|
||||
@property
|
||||
def es_vat_book_serie(self):
|
||||
return ''
|
||||
|
||||
@property
|
||||
def es_vat_book_number(self):
|
||||
vat_book_type = Transaction().context.get('es_vat_book_type', 'E')
|
||||
if vat_book_type != 'E' and self.reference:
|
||||
return self.reference
|
||||
return self.number
|
||||
Reference in New Issue
Block a user