Register wizard and button for manual invoice search

This commit is contained in:
Daniel Möller 2018-06-08 16:21:05 +02:00
parent 07ba7638e8
commit ddbf189fed
9 changed files with 217 additions and 19 deletions

View file

@ -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
View file

@ -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)

View file

@ -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"

View file

@ -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
View 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
View 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>

View file

@ -11,6 +11,7 @@ extras_depend:
xml:
account.xml
aeat.xml
search_invoices.xml
invoice.xml
party.xml
company.xml

View 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>

View file

@ -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"/>