mirror of
https://gitlab.com/datalifeit/trytond-aeat_sii
synced 2023-12-13 20:30:37 +01:00
update to 4.0
This commit is contained in:
parent
8ee79ab118
commit
323be8c166
6 changed files with 25 additions and 29 deletions
30
aeat.py
30
aeat.py
|
@ -126,9 +126,9 @@ AEAT_COMMUNICATION_STATE = [
|
||||||
|
|
||||||
AEAT_INVOICE_STATE = [
|
AEAT_INVOICE_STATE = [
|
||||||
(None, ''),
|
(None, ''),
|
||||||
('Correcto', 'Accepted'),
|
('Correcto', 'Accepted '),
|
||||||
('Correcta', 'Accepted'), # You guys are disgusting
|
('Correcta', 'Accepted'), # You guys are disgusting
|
||||||
('AceptadoConErrores', 'Accepted with Errors'),
|
('AceptadoConErrores', 'Accepted with Errors '),
|
||||||
('AceptadaConErrores', 'Accepted with Errors'), # Shame on AEAT
|
('AceptadaConErrores', 'Accepted with Errors'), # Shame on AEAT
|
||||||
('Anulada', 'Deleted'),
|
('Anulada', 'Deleted'),
|
||||||
('Incorrecto', 'Rejected')
|
('Incorrecto', 'Rejected')
|
||||||
|
@ -234,7 +234,7 @@ class SIIReport(Workflow, ModelSQL, ModelView):
|
||||||
}, depends=['state'])
|
}, depends=['state'])
|
||||||
|
|
||||||
period = fields.Many2One('account.period', 'Period', required=True,
|
period = fields.Many2One('account.period', 'Period', required=True,
|
||||||
domain = [('fiscalyear','=', Eval('fiscalyear'))],
|
domain=[('fiscalyear', '=', Eval('fiscalyear'))],
|
||||||
states={
|
states={
|
||||||
'readonly': Eval('state') != 'draft',
|
'readonly': Eval('state') != 'draft',
|
||||||
}, depends=['state'])
|
}, depends=['state'])
|
||||||
|
@ -258,7 +258,7 @@ class SIIReport(Workflow, ModelSQL, ModelView):
|
||||||
('sent', 'Sent'),
|
('sent', 'Sent'),
|
||||||
], 'State', readonly=True)
|
], 'State', readonly=True)
|
||||||
|
|
||||||
communication_state = fields.Selection( AEAT_COMMUNICATION_STATE,
|
communication_state = fields.Selection(AEAT_COMMUNICATION_STATE,
|
||||||
'Communication State', readonly=True)
|
'Communication State', readonly=True)
|
||||||
|
|
||||||
csv = fields.Char(
|
csv = fields.Char(
|
||||||
|
@ -275,7 +275,6 @@ class SIIReport(Workflow, ModelSQL, ModelView):
|
||||||
'readonly': ~Eval('state').in_(['draft']),
|
'readonly': ~Eval('state').in_(['draft']),
|
||||||
}, depends=['state'])
|
}, depends=['state'])
|
||||||
|
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def __setup__(cls):
|
def __setup__(cls):
|
||||||
super(SIIReport, cls).__setup__()
|
super(SIIReport, cls).__setup__()
|
||||||
|
@ -299,7 +298,7 @@ class SIIReport(Workflow, ModelSQL, ModelView):
|
||||||
},
|
},
|
||||||
'load_invoices': {
|
'load_invoices': {
|
||||||
'invisible': ~(Eval('state').in_(['draft']) &
|
'invisible': ~(Eval('state').in_(['draft']) &
|
||||||
Eval('operation_type').in_(['A0','A1'])),
|
Eval('operation_type').in_(['A0', 'A1'])),
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
@ -313,7 +312,6 @@ class SIIReport(Workflow, ModelSQL, ModelView):
|
||||||
))
|
))
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def default_company():
|
def default_company():
|
||||||
|
|
||||||
|
@ -339,7 +337,7 @@ class SIIReport(Workflow, ModelSQL, ModelView):
|
||||||
@fields.depends('company')
|
@fields.depends('company')
|
||||||
def on_change_with_company_vat(self):
|
def on_change_with_company_vat(self):
|
||||||
if self.company:
|
if self.company:
|
||||||
return self.company.party.vat_number
|
return self.company.party.vat_code
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
@ModelView.button
|
@ModelView.button
|
||||||
|
@ -418,7 +416,7 @@ class SIIReport(Workflow, ModelSQL, ModelView):
|
||||||
_logger.info('Sending report %s to AEAT SII', self.id)
|
_logger.info('Sending report %s to AEAT SII', self.id)
|
||||||
headers = mapping.get_headers(
|
headers = mapping.get_headers(
|
||||||
name=self.company.party.name,
|
name=self.company.party.name,
|
||||||
vat=self.company.party.vat_number,
|
vat=self.company.party.vat_code,
|
||||||
comm_kind=self.operation_type)
|
comm_kind=self.operation_type)
|
||||||
pool = Pool()
|
pool = Pool()
|
||||||
mapper = pool.get('aeat.sii.issued.invoice.mapper')(pool=pool)
|
mapper = pool.get('aeat.sii.issued.invoice.mapper')(pool=pool)
|
||||||
|
@ -445,7 +443,7 @@ class SIIReport(Workflow, ModelSQL, ModelView):
|
||||||
def delete_issued_invoices(self):
|
def delete_issued_invoices(self):
|
||||||
headers = mapping.get_headers(
|
headers = mapping.get_headers(
|
||||||
name=self.company.party.name,
|
name=self.company.party.name,
|
||||||
vat=self.company.party.vat_number,
|
vat=self.company.party.vat_code,
|
||||||
comm_kind=self.operation_type)
|
comm_kind=self.operation_type)
|
||||||
pool = Pool()
|
pool = Pool()
|
||||||
mapper = pool.get('aeat.sii.issued.invoice.mapper')(pool=pool)
|
mapper = pool.get('aeat.sii.issued.invoice.mapper')(pool=pool)
|
||||||
|
@ -475,7 +473,7 @@ class SIIReport(Workflow, ModelSQL, ModelView):
|
||||||
Invoice = pool.get('account.invoice')
|
Invoice = pool.get('account.invoice')
|
||||||
headers = mapping.get_headers(
|
headers = mapping.get_headers(
|
||||||
name=self.company.party.name,
|
name=self.company.party.name,
|
||||||
vat=self.company.party.vat_number,
|
vat=self.company.party.vat_code,
|
||||||
comm_kind=self.operation_type)
|
comm_kind=self.operation_type)
|
||||||
|
|
||||||
with self.company.tmp_ssl_credentials() as (crt, key):
|
with self.company.tmp_ssl_credentials() as (crt, key):
|
||||||
|
@ -522,7 +520,7 @@ class SIIReport(Workflow, ModelSQL, ModelView):
|
||||||
_logger.info('Sending report %s to AEAT SII', self.id)
|
_logger.info('Sending report %s to AEAT SII', self.id)
|
||||||
headers = mapping.get_headers(
|
headers = mapping.get_headers(
|
||||||
name=self.company.party.name,
|
name=self.company.party.name,
|
||||||
vat=self.company.party.vat_number,
|
vat=self.company.party.vat_code,
|
||||||
comm_kind=self.operation_type)
|
comm_kind=self.operation_type)
|
||||||
pool = Pool()
|
pool = Pool()
|
||||||
mapper = pool.get('aeat.sii.recieved.invoice.mapper')(pool=pool)
|
mapper = pool.get('aeat.sii.recieved.invoice.mapper')(pool=pool)
|
||||||
|
@ -549,7 +547,7 @@ class SIIReport(Workflow, ModelSQL, ModelView):
|
||||||
def delete_recieved_invoices(self):
|
def delete_recieved_invoices(self):
|
||||||
headers = mapping.get_headers(
|
headers = mapping.get_headers(
|
||||||
name=self.company.party.name,
|
name=self.company.party.name,
|
||||||
vat=self.company.party.vat_number,
|
vat=self.company.party.vat_code,
|
||||||
comm_kind=self.operation_type)
|
comm_kind=self.operation_type)
|
||||||
pool = Pool()
|
pool = Pool()
|
||||||
mapper = pool.get('aeat.sii.recieved.invoice.mapper')(pool=pool)
|
mapper = pool.get('aeat.sii.recieved.invoice.mapper')(pool=pool)
|
||||||
|
@ -579,7 +577,7 @@ class SIIReport(Workflow, ModelSQL, ModelView):
|
||||||
Invoice = pool.get('account.invoice')
|
Invoice = pool.get('account.invoice')
|
||||||
headers = mapping.get_headers(
|
headers = mapping.get_headers(
|
||||||
name=self.company.party.name,
|
name=self.company.party.name,
|
||||||
vat=self.company.party.vat_number,
|
vat=self.company.party.vat_code,
|
||||||
comm_kind=self.operation_type)
|
comm_kind=self.operation_type)
|
||||||
|
|
||||||
with self.company.tmp_ssl_credentials() as (crt, key):
|
with self.company.tmp_ssl_credentials() as (crt, key):
|
||||||
|
@ -632,14 +630,14 @@ class BaseTrytonInvoiceMapper(Model):
|
||||||
|
|
||||||
year = attrgetter('move.period.fiscalyear.name')
|
year = attrgetter('move.period.fiscalyear.name')
|
||||||
period = attrgetter('move.period.start_date.month')
|
period = attrgetter('move.period.start_date.month')
|
||||||
nif = attrgetter('company.party.vat_number')
|
nif = attrgetter('company.party.vat_code')
|
||||||
issue_date = attrgetter('invoice_date')
|
issue_date = attrgetter('invoice_date')
|
||||||
invoice_kind = attrgetter('sii_operation_key')
|
invoice_kind = attrgetter('sii_operation_key')
|
||||||
rectified_invoice_kind = mapping.hardcode('I')
|
rectified_invoice_kind = mapping.hardcode('I')
|
||||||
description = attrgetter('description')
|
description = attrgetter('description')
|
||||||
not_exempt_kind = attrgetter('sii_subjected')
|
not_exempt_kind = attrgetter('sii_subjected')
|
||||||
counterpart_name = attrgetter('party.name')
|
counterpart_name = attrgetter('party.name')
|
||||||
counterpart_nif = attrgetter('party.vat_number')
|
counterpart_nif = attrgetter('party.vat_code')
|
||||||
counterpart_id_type = attrgetter('party.identifier_type')
|
counterpart_id_type = attrgetter('party.identifier_type')
|
||||||
counterpart_country = attrgetter('party.vat_country')
|
counterpart_country = attrgetter('party.vat_country')
|
||||||
counterpart_id = counterpart_nif
|
counterpart_id = counterpart_nif
|
||||||
|
|
13
aeat.xml
13
aeat.xml
|
@ -107,7 +107,7 @@
|
||||||
<field name="global_p" eval="True"/>
|
<field name="global_p" eval="True"/>
|
||||||
</record>
|
</record>
|
||||||
<record model="ir.rule" id="rule_sii_report1">
|
<record model="ir.rule" id="rule_sii_report1">
|
||||||
<field name="domain">[('company', '=', user.company.id if user.company else None)]</field>
|
<field name="domain" eval="[('company', '=', Eval('user' ,{}).get('company', None))]" pyson="1" />
|
||||||
<field name="rule_group" ref="rule_group_sii_report"/>
|
<field name="rule_group" ref="rule_group_sii_report"/>
|
||||||
</record>
|
</record>
|
||||||
|
|
||||||
|
@ -116,7 +116,7 @@
|
||||||
<field name="global_p" eval="True"/>
|
<field name="global_p" eval="True"/>
|
||||||
</record>
|
</record>
|
||||||
<record model="ir.rule" id="rule_sii_report_line1">
|
<record model="ir.rule" id="rule_sii_report_line1">
|
||||||
<field name="domain">[('company', '=', user.company.id if user.company else None)]</field>
|
<field name="domain" eval="[('company', '=',Eval('user', {}).get('company', None))]" pyson="1"/>
|
||||||
<field name="rule_group" ref="rule_group_sii_report_line"/>
|
<field name="rule_group" ref="rule_group_sii_report_line"/>
|
||||||
</record>
|
</record>
|
||||||
|
|
||||||
|
@ -144,7 +144,7 @@
|
||||||
<record model="ir.action.act_window" id="act_aeat_sii_issued_report">
|
<record model="ir.action.act_window" id="act_aeat_sii_issued_report">
|
||||||
<field name="name">SII Report Issued</field>
|
<field name="name">SII Report Issued</field>
|
||||||
<field name="res_model">aeat.sii.report</field>
|
<field name="res_model">aeat.sii.report</field>
|
||||||
<field name="domain">[('book', '=', 'E')]</field>
|
<field name="domain" eval="[('book', '=', 'E')]" pyson="1"/>
|
||||||
<field name="search_value"></field>
|
<field name="search_value"></field>
|
||||||
</record>
|
</record>
|
||||||
<menuitem action="act_aeat_sii_issued_report"
|
<menuitem action="act_aeat_sii_issued_report"
|
||||||
|
@ -155,7 +155,7 @@
|
||||||
<record model="ir.action.act_window" id="act_aeat_sii_invest_report">
|
<record model="ir.action.act_window" id="act_aeat_sii_invest_report">
|
||||||
<field name="name">SII Report Invest</field>
|
<field name="name">SII Report Invest</field>
|
||||||
<field name="res_model">aeat.sii.report</field>
|
<field name="res_model">aeat.sii.report</field>
|
||||||
<field name="domain">[('book', '=', 'I')]</field>
|
<field name="domain" eval="[('book', '=', 'I')]" pyson="1"/>
|
||||||
<field name="search_value"></field>
|
<field name="search_value"></field>
|
||||||
</record>
|
</record>
|
||||||
<menuitem action="act_aeat_sii_invest_report"
|
<menuitem action="act_aeat_sii_invest_report"
|
||||||
|
@ -166,7 +166,8 @@
|
||||||
<record model="ir.action.act_window" id="act_aeat_sii_received_report">
|
<record model="ir.action.act_window" id="act_aeat_sii_received_report">
|
||||||
<field name="name">SII Report Received</field>
|
<field name="name">SII Report Received</field>
|
||||||
<field name="res_model">aeat.sii.report</field>
|
<field name="res_model">aeat.sii.report</field>
|
||||||
<field name="domain">[('book', '=', 'R')]</field>
|
<field name="domain" eval="[('book', '=', 'R')]" pyson="1"/>
|
||||||
|
|
||||||
<field name="search_value"></field>
|
<field name="search_value"></field>
|
||||||
</record>
|
</record>
|
||||||
<menuitem action="act_aeat_sii_received_report"
|
<menuitem action="act_aeat_sii_received_report"
|
||||||
|
@ -177,7 +178,7 @@
|
||||||
<record model="ir.action.act_window" id="act_aeat_sii_intra_report">
|
<record model="ir.action.act_window" id="act_aeat_sii_intra_report">
|
||||||
<field name="name">SII Report Intracommunity</field>
|
<field name="name">SII Report Intracommunity</field>
|
||||||
<field name="res_model">aeat.sii.report</field>
|
<field name="res_model">aeat.sii.report</field>
|
||||||
<field name="domain">[('book', '=', 'U')]</field>
|
<field name="domain" eval="[('book', '=', 'U')]" pyson="1"/>
|
||||||
<field name="search_value"></field>
|
<field name="search_value"></field>
|
||||||
</record>
|
</record>
|
||||||
<menuitem action="act_aeat_sii_intra_report"
|
<menuitem action="act_aeat_sii_intra_report"
|
||||||
|
|
|
@ -96,7 +96,7 @@ class Invoice:
|
||||||
|
|
||||||
table = SIILines.__table__()
|
table = SIILines.__table__()
|
||||||
|
|
||||||
cursor = Transaction().cursor
|
cursor = Transaction().connection.cursor()
|
||||||
cursor.execute(*table.select(Max(table.id), table.invoice,
|
cursor.execute(*table.select(Max(table.id), table.invoice,
|
||||||
group_by=table.invoice))
|
group_by=table.invoice))
|
||||||
|
|
||||||
|
@ -126,7 +126,7 @@ class Invoice:
|
||||||
result[name] = dict((i.id, '') for i in invoices)
|
result[name] = dict((i.id, '') for i in invoices)
|
||||||
|
|
||||||
table = SIILines.__table__()
|
table = SIILines.__table__()
|
||||||
cursor = Transaction().cursor
|
cursor = Transaction().connection.cursor()
|
||||||
cursor.execute(*table.select(Max(table.id), table.invoice,
|
cursor.execute(*table.select(Max(table.id), table.invoice,
|
||||||
where=table.invoice.in_([x.id for x in invoices]),
|
where=table.invoice.in_([x.id for x in invoices]),
|
||||||
group_by=table.invoice))
|
group_by=table.invoice))
|
||||||
|
|
|
@ -3,14 +3,12 @@
|
||||||
<data>
|
<data>
|
||||||
<record model="ir.ui.view" id="aeat_sii_invoice_form_view">
|
<record model="ir.ui.view" id="aeat_sii_invoice_form_view">
|
||||||
<field name="model">account.invoice</field>
|
<field name="model">account.invoice</field>
|
||||||
<field name="type">form</field>
|
|
||||||
<field name="inherit" ref="account_invoice.invoice_view_form"/>
|
<field name="inherit" ref="account_invoice.invoice_view_form"/>
|
||||||
<field name="name">account_invoice_form</field>
|
<field name="name">account_invoice_form</field>
|
||||||
</record>
|
</record>
|
||||||
|
|
||||||
<record model="ir.ui.view" id="aeat_sii_invoice_list_view">
|
<record model="ir.ui.view" id="aeat_sii_invoice_list_view">
|
||||||
<field name="model">account.invoice</field>
|
<field name="model">account.invoice</field>
|
||||||
<field name="type">tree</field>
|
|
||||||
<field name="inherit" ref="account_invoice.invoice_view_tree"/>
|
<field name="inherit" ref="account_invoice.invoice_view_tree"/>
|
||||||
<field name="name">account_invoice_list</field>
|
<field name="name">account_invoice_list</field>
|
||||||
</record>
|
</record>
|
||||||
|
|
3
party.py
3
party.py
|
@ -7,11 +7,10 @@ from . import aeat
|
||||||
|
|
||||||
__all__ = ['Party']
|
__all__ = ['Party']
|
||||||
|
|
||||||
|
|
||||||
class Party:
|
class Party:
|
||||||
__name__ = 'party.party'
|
__name__ = 'party.party'
|
||||||
__metaclass__ = PoolMeta
|
__metaclass__ = PoolMeta
|
||||||
|
|
||||||
# TODO: v4 change to party.identifier module
|
# TODO: v4 change to party.identifier module
|
||||||
identifier_type = fields.Selection( [('','')] + aeat.PARTY_IDENTIFIER_TYPE,
|
identifier_type = fields.Selection([('', '')] + aeat.PARTY_IDENTIFIER_TYPE,
|
||||||
'Identifier Type', )
|
'Identifier Type', )
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
[tryton]
|
[tryton]
|
||||||
version=3.4.0
|
version=4.0
|
||||||
depends:
|
depends:
|
||||||
account_invoice
|
account_invoice
|
||||||
xml:
|
xml:
|
||||||
|
|
Loading…
Reference in a new issue