mirror of
https://gitlab.com/datalifeit/trytond-aeat_sii
synced 2023-12-13 20:30:37 +01:00
Register wizard and button for manual invoice search
This commit is contained in:
parent
07ba7638e8
commit
ddbf189fed
9 changed files with 217 additions and 19 deletions
|
@ -8,6 +8,7 @@ from . import company
|
|||
from . import load_pkcs12
|
||||
from . import account
|
||||
from . import aeat_mapping
|
||||
from . import search_invoices
|
||||
|
||||
|
||||
def register():
|
||||
|
@ -25,7 +26,9 @@ def register():
|
|||
aeat.SIIReportLineTax,
|
||||
aeat_mapping.IssuedTrytonInvoiceMapper,
|
||||
aeat_mapping.RecievedTrytonInvoiceMapper,
|
||||
search_invoices.StartView,
|
||||
module='aeat_sii', type_='model')
|
||||
Pool.register(
|
||||
load_pkcs12.LoadPKCS12,
|
||||
search_invoices.SearchInvoicesWizard,
|
||||
module='aeat_sii', type_='wizard')
|
||||
|
|
11
aeat.py
11
aeat.py
|
@ -324,7 +324,11 @@ class SIIReport(Workflow, ModelSQL, ModelView):
|
|||
'load_invoices': {
|
||||
'invisible': ~(Eval('state').in_(['draft']) &
|
||||
Eval('operation_type').in_(['A0', 'A1'])),
|
||||
}
|
||||
},
|
||||
'search_invoices': {
|
||||
'invisible': ~(Eval('state').in_(['draft']) &
|
||||
Eval('operation_type').in_(['A0', 'A1', 'D0'])),
|
||||
},
|
||||
})
|
||||
cls._error_messages.update({
|
||||
'delete_cancel': ('Report "%s" must be cancelled before '
|
||||
|
@ -467,6 +471,11 @@ class SIIReport(Workflow, ModelSQL, ModelView):
|
|||
if to_create:
|
||||
ReportLine.create(to_create)
|
||||
|
||||
@classmethod
|
||||
@ModelView.button_action('aeat_sii.search_invoices_act_wizard')
|
||||
def search_invoices(cls, reports):
|
||||
pass
|
||||
|
||||
def submit_issued_invoices(self):
|
||||
pool = Pool()
|
||||
mapper = pool.get('aeat.sii.issued.invoice.mapper')(pool=pool)
|
||||
|
|
|
@ -374,6 +374,18 @@ msgctxt "field:aeat.sii.report.lines,write_uid:"
|
|||
msgid "Write User"
|
||||
msgstr "Usuario de modificación"
|
||||
|
||||
msgctxt "field:aeat.sii.search_invoices.start,company:"
|
||||
msgid "Company"
|
||||
msgstr "Empresa"
|
||||
|
||||
msgctxt "field:aeat.sii.search_invoices.start,id:"
|
||||
msgid "ID"
|
||||
msgstr "Identificador"
|
||||
|
||||
msgctxt "field:aeat.sii.search_invoices.start,invoices:"
|
||||
msgid "Invoices"
|
||||
msgstr "Factures"
|
||||
|
||||
msgctxt "field:company.company,encrypted_private_key:"
|
||||
msgid "Encrypted Private Key"
|
||||
msgstr "Clave privada encriptada"
|
||||
|
@ -390,14 +402,6 @@ msgctxt "field:party.party,sii_identifier_type:"
|
|||
msgid "SII Identifier Type"
|
||||
msgstr "SII Identificador"
|
||||
|
||||
msgctxt "field:party.party,sii_vat_code:"
|
||||
msgid "SII VAT Code"
|
||||
msgstr "Número NIF SII"
|
||||
|
||||
msgctxt "field:party.party,sii_vat_country:"
|
||||
msgid "SII VAT Country"
|
||||
msgstr "País NIF SII"
|
||||
|
||||
msgctxt "model:aeat.sii.issued.invoice.mapper,name:"
|
||||
msgid "Tryton Issued Invoice to AEAT mapper"
|
||||
msgstr "Correspondencia Tryton - Aeat facturas emitidas"
|
||||
|
@ -422,6 +426,10 @@ msgctxt "model:aeat.sii.report.lines,name:"
|
|||
msgid "AEAT SII Issued"
|
||||
msgstr "Emitidas"
|
||||
|
||||
msgctxt "model:aeat.sii.search_invoices.start,name:"
|
||||
msgid "Search Invoices Start View"
|
||||
msgstr "Vista Inicial Cercar Factures"
|
||||
|
||||
msgctxt "model:ir.action,name:act_aeat_sii_intra_report"
|
||||
msgid "SII Report Intracommunity"
|
||||
msgstr "Informe Intracomunitarias"
|
||||
|
@ -458,7 +466,11 @@ msgctxt "model:ir.action,name:act_aeat_sii_report_lines"
|
|||
msgid "SII Report Lines"
|
||||
msgstr "Líneas informe SII"
|
||||
|
||||
msgctxt "model:ir.ui.menu,name:None"
|
||||
msgctxt "model:ir.action,name:search_invoices_act_wizard"
|
||||
msgid "Search Invoices"
|
||||
msgstr "Cercar Factures"
|
||||
|
||||
msgctxt "model:ir.ui.menu,name:"
|
||||
msgid "AEAT SII Report"
|
||||
msgstr "Informe AEAT SII"
|
||||
|
||||
|
@ -1622,10 +1634,18 @@ msgctxt "view:aeat.sii.report:"
|
|||
msgid "Load Invoices"
|
||||
msgstr "Cargar facturas"
|
||||
|
||||
msgctxt "view:aeat.sii.report:"
|
||||
msgid "Manual Search"
|
||||
msgstr "Cerca Manual"
|
||||
|
||||
msgctxt "view:aeat.sii.report:"
|
||||
msgid "Send"
|
||||
msgstr "Enviar"
|
||||
|
||||
msgctxt "view:aeat.sii.search_invoices.start:"
|
||||
msgid "Search Invoices"
|
||||
msgstr "Cercar Factures"
|
||||
|
||||
msgctxt "view:company.company:"
|
||||
msgid "Certificate"
|
||||
msgstr "Certificado"
|
||||
|
@ -1637,3 +1657,11 @@ msgstr "Cancelar"
|
|||
msgctxt "wizard_button:aeat.sii.load_pkcs12,start,load:"
|
||||
msgid "Load"
|
||||
msgstr "Cargar"
|
||||
|
||||
msgctxt "wizard_button:aeat.sii.search_invoices.wizard,start,attach:"
|
||||
msgid "Attach"
|
||||
msgstr "Afegir"
|
||||
|
||||
msgctxt "wizard_button:aeat.sii.search_invoices.wizard,start,end:"
|
||||
msgid "Cancel"
|
||||
msgstr "Cancel·lar"
|
||||
|
|
|
@ -374,6 +374,18 @@ msgctxt "field:aeat.sii.report.lines,write_uid:"
|
|||
msgid "Write User"
|
||||
msgstr "Usuario de modificación"
|
||||
|
||||
msgctxt "field:aeat.sii.search_invoices.start,company:"
|
||||
msgid "Company"
|
||||
msgstr "Empresa"
|
||||
|
||||
msgctxt "field:aeat.sii.search_invoices.start,id:"
|
||||
msgid "ID"
|
||||
msgstr "Identificador"
|
||||
|
||||
msgctxt "field:aeat.sii.search_invoices.start,invoices:"
|
||||
msgid "Invoices"
|
||||
msgstr "Facturas"
|
||||
|
||||
msgctxt "field:company.company,encrypted_private_key:"
|
||||
msgid "Encrypted Private Key"
|
||||
msgstr "Clave privada encriptada"
|
||||
|
@ -390,14 +402,6 @@ msgctxt "field:party.party,sii_identifier_type:"
|
|||
msgid "SII Identifier Type"
|
||||
msgstr "SII Identificador"
|
||||
|
||||
msgctxt "field:party.party,sii_vat_code:"
|
||||
msgid "SII VAT Code"
|
||||
msgstr "Número NIF SII"
|
||||
|
||||
msgctxt "field:party.party,sii_vat_country:"
|
||||
msgid "SII VAT Country"
|
||||
msgstr "País NIF SII"
|
||||
|
||||
msgctxt "model:aeat.sii.issued.invoice.mapper,name:"
|
||||
msgid "Tryton Issued Invoice to AEAT mapper"
|
||||
msgstr "Correspondencia Tryton - Aeat facturas emitidas"
|
||||
|
@ -422,6 +426,10 @@ msgctxt "model:aeat.sii.report.lines,name:"
|
|||
msgid "AEAT SII Issued"
|
||||
msgstr "Emitidas"
|
||||
|
||||
msgctxt "model:aeat.sii.search_invoices.start,name:"
|
||||
msgid "Search Invoices Start View"
|
||||
msgstr "Vista Inicial Buscar Facturas"
|
||||
|
||||
msgctxt "model:ir.action,name:act_aeat_sii_intra_report"
|
||||
msgid "SII Report Intracommunity"
|
||||
msgstr "Informe Intracomunitarias"
|
||||
|
@ -458,7 +466,11 @@ msgctxt "model:ir.action,name:act_aeat_sii_report_lines"
|
|||
msgid "SII Report Lines"
|
||||
msgstr "Líneas informe SII"
|
||||
|
||||
msgctxt "model:ir.ui.menu,name:None"
|
||||
msgctxt "model:ir.action,name:search_invoices_act_wizard"
|
||||
msgid "Search Invoices"
|
||||
msgstr "Buscar Facturas"
|
||||
|
||||
msgctxt "model:ir.ui.menu,name:"
|
||||
msgid "AEAT SII Report"
|
||||
msgstr "Informe AEAT SII"
|
||||
|
||||
|
@ -1622,10 +1634,18 @@ msgctxt "view:aeat.sii.report:"
|
|||
msgid "Load Invoices"
|
||||
msgstr "Cargar facturas"
|
||||
|
||||
msgctxt "view:aeat.sii.report:"
|
||||
msgid "Manual Search"
|
||||
msgstr "Búsqueda Manual"
|
||||
|
||||
msgctxt "view:aeat.sii.report:"
|
||||
msgid "Send"
|
||||
msgstr "Enviar"
|
||||
|
||||
msgctxt "view:aeat.sii.search_invoices.start:"
|
||||
msgid "Search Invoices"
|
||||
msgstr "Buscar Facturas"
|
||||
|
||||
msgctxt "view:company.company:"
|
||||
msgid "Certificate"
|
||||
msgstr "Certificado"
|
||||
|
@ -1637,3 +1657,11 @@ msgstr "Cancelar"
|
|||
msgctxt "wizard_button:aeat.sii.load_pkcs12,start,load:"
|
||||
msgid "Load"
|
||||
msgstr "Cargar"
|
||||
|
||||
msgctxt "wizard_button:aeat.sii.search_invoices.wizard,start,attach:"
|
||||
msgid "Attach"
|
||||
msgstr "Añadir"
|
||||
|
||||
msgctxt "wizard_button:aeat.sii.search_invoices.wizard,start,end:"
|
||||
msgid "Cancel"
|
||||
msgstr "Cancelar"
|
||||
|
|
103
search_invoices.py
Normal file
103
search_invoices.py
Normal file
|
@ -0,0 +1,103 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
# The COPYRIGHT file at the top level of this repository contains the full
|
||||
# copyright notices and license terms.
|
||||
from logging import getLogger
|
||||
|
||||
from trytond.pool import Pool
|
||||
from trytond.transaction import Transaction
|
||||
from trytond.model import ModelView, fields
|
||||
from trytond.wizard import Wizard, StateView, StateTransition, Button
|
||||
from trytond.pyson import Eval, If, Equal
|
||||
|
||||
from .aeat import BOOK_KEY, COMMUNICATION_TYPE
|
||||
|
||||
__all__ = [
|
||||
'StartView',
|
||||
'SearchInvoicesWizard',
|
||||
]
|
||||
|
||||
_logger = getLogger(__name__)
|
||||
|
||||
|
||||
# TODO: fix account.invoice `sii_state` searcher performance
|
||||
# and uncomment all code blocks regarding `operation_type`
|
||||
|
||||
class StartView(ModelView):
|
||||
'Search Invoices Start View'
|
||||
__name__ = 'aeat.sii.search_invoices.start'
|
||||
|
||||
company = fields.Many2One('company.company', 'Company')
|
||||
period = fields.Many2One('account.period', 'Period')
|
||||
book = fields.Selection(BOOK_KEY, 'Book')
|
||||
operation_type = fields.Selection(COMMUNICATION_TYPE, 'Operation Type')
|
||||
|
||||
invoices = fields.Many2Many(
|
||||
'account.invoice', None, None, 'Invoices',
|
||||
domain=[
|
||||
If(
|
||||
Equal(Eval('book'), 'E'), # issued
|
||||
('type', 'in', ['out_invoice', 'out_credit_note']),
|
||||
If(
|
||||
Equal(Eval('book'), 'R'), # recieved
|
||||
('type', 'in', ['in_invoice', 'in_credit_note']),
|
||||
('id', '!=', None) # dummy clause
|
||||
)
|
||||
),
|
||||
('state', 'in', ['posted', 'paid']),
|
||||
('company', '=', Eval('company')),
|
||||
('move.period', '=', Eval('period')),
|
||||
# If(
|
||||
# Equal(Eval('operation_type'), 'A0'), # create
|
||||
# ('sii_state', 'in', [None, 'Incorrecto']),
|
||||
# If(
|
||||
# In(Eval('operation_type'), ['A1', 'D0']), # edit/delete
|
||||
# ('sii_state', 'in', [
|
||||
# 'Correcto', 'Correcta',
|
||||
# 'AceptadoConErrores', 'AceptadaConErrores']),
|
||||
# ('id', '!=', None) # dummy clause
|
||||
# )
|
||||
# ),
|
||||
],
|
||||
depends=[
|
||||
'company', 'period', 'book', # 'operation_type',
|
||||
],
|
||||
)
|
||||
|
||||
|
||||
class SearchInvoicesWizard(Wizard):
|
||||
'Search Invoices Wizard'
|
||||
__name__ = 'aeat.sii.search_invoices.wizard'
|
||||
|
||||
start = StateView(
|
||||
'aeat.sii.search_invoices.start',
|
||||
'aeat_sii.search_invoices_start_view_form',
|
||||
[
|
||||
Button('Cancel', 'end', 'tryton-cancel'),
|
||||
Button('Attach', 'attach', 'tryton-ok', default=True),
|
||||
]
|
||||
)
|
||||
attach = StateTransition()
|
||||
|
||||
def default_start(self, fields):
|
||||
SIIReport = Pool().get('aeat.sii.report')
|
||||
sii_report = SIIReport(
|
||||
Transaction().context['active_id']
|
||||
)
|
||||
return {
|
||||
'company': sii_report.company.id,
|
||||
'period': sii_report.period.id,
|
||||
'book': sii_report.book,
|
||||
'operation_type': sii_report.operation_type,
|
||||
}
|
||||
|
||||
def transition_attach(self):
|
||||
SIIReportLine = Pool().get('aeat.sii.report.lines')
|
||||
report_id = Transaction().context['active_id']
|
||||
SIIReportLine.create([
|
||||
{
|
||||
'report': report_id,
|
||||
'invoice': invoice.id,
|
||||
}
|
||||
for invoice in self.start.invoices
|
||||
])
|
||||
return 'end'
|
19
search_invoices.xml
Normal file
19
search_invoices.xml
Normal file
|
@ -0,0 +1,19 @@
|
|||
<?xml version="1.0"?>
|
||||
<!-- The COPYRIGHT file at the top level of this repository contains the full
|
||||
copyright notices and license terms. -->
|
||||
<tryton>
|
||||
<data>
|
||||
|
||||
<record model="ir.ui.view" id="search_invoices_start_view_form">
|
||||
<field name="model">aeat.sii.search_invoices.start</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">search_invoices_start</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.action.wizard" id="search_invoices_act_wizard">
|
||||
<field name="name">Search Invoices</field>
|
||||
<field name="wiz_name">aeat.sii.search_invoices.wizard</field>
|
||||
</record>
|
||||
|
||||
</data>
|
||||
</tryton>
|
|
@ -11,6 +11,7 @@ extras_depend:
|
|||
xml:
|
||||
account.xml
|
||||
aeat.xml
|
||||
search_invoices.xml
|
||||
invoice.xml
|
||||
party.xml
|
||||
company.xml
|
||||
|
|
6
view/search_invoices_start.xml
Normal file
6
view/search_invoices_start.xml
Normal file
|
@ -0,0 +1,6 @@
|
|||
<?xml version="1.0"?>
|
||||
<!-- The COPYRIGHT file at the top level of this repository contains the full
|
||||
copyright notices and license terms. -->
|
||||
<form string="Search Invoices" col="2">
|
||||
<field name="invoices" colspan="2"/>
|
||||
</form>
|
|
@ -21,6 +21,7 @@
|
|||
<label name="send_date"/>
|
||||
<field name="send_date"/>
|
||||
<button string="Load Invoices" name="load_invoices" colspan="2"/>
|
||||
<button string="Manual Search" name="search_invoices" colspan="2"/>
|
||||
<field name="lines" colspan="6"
|
||||
mode="tree"
|
||||
view_ids="aeat_sii.aeat_sii_report_line_tree_seq_view"/>
|
||||
|
|
Loading…
Reference in a new issue