79 lines
2.4 KiB
Python
79 lines
2.4 KiB
Python
# -*- coding: utf-8 -*-
|
|
# This file is part of the cashbook-module from m-ds for Tryton.
|
|
# The COPYRIGHT file at the top level of this repository contains the
|
|
# full copyright notices and license terms.
|
|
|
|
from trytond.model import ModelView, fields
|
|
from trytond.wizard import Wizard, StateView, StateReport
|
|
from trytond.pool import Pool
|
|
from trytond.transaction import Transaction
|
|
|
|
|
|
sel_edocument = [
|
|
('edocument.xrechnung.invoice', 'XRechnung UBL Invoice 2.1.1'),
|
|
('edocument.uncefact.invoice', 'CII CrossIndustryInvoice D16B'),
|
|
]
|
|
|
|
|
|
class RunXRechnungReportStart(ModelView):
|
|
'eDocument Report'
|
|
__name__ = 'account_invoice_xrechnung.runrep.start'
|
|
|
|
invoice = fields.Many2One(string='Invoice', readonly=True,
|
|
model_name='account.invoice', required=True)
|
|
edocument = fields.Selection(string='eDocument', required=True,
|
|
selection=sel_edocument)
|
|
|
|
@classmethod
|
|
def default_edocument(cls):
|
|
""" default xrechnung
|
|
"""
|
|
return 'edocument.xrechnung.invoice'
|
|
|
|
# end RunXRechnungReportStart
|
|
|
|
|
|
class RunXRechnungReport(Wizard):
|
|
'eDocument Report'
|
|
__name__ = 'account_invoice_xrechnung.runrep'
|
|
|
|
start_state = 'open_'
|
|
export = StateReport('account_invoice_xrechnung.export')
|
|
open_ = StateView(
|
|
model_name='account_invoice_xrechnung.runrep.start',
|
|
view='account_invoice_xrechnung.wiz_start_form',
|
|
buttons=[
|
|
Button(string='Cancel', state='cleanup', icon='tryton-cancel'),
|
|
Button(string='Export', state='export', icon='tryton-export'),
|
|
],
|
|
)
|
|
|
|
def default_open_(self):
|
|
""" set defaults
|
|
"""
|
|
context = Transaction().context
|
|
|
|
result = {
|
|
'edocument': 'edocument.xrechnung.invoice',
|
|
'invoice': context.get('active_id', -1),
|
|
}
|
|
return result
|
|
|
|
def do_export(self, action):
|
|
""" run form
|
|
"""
|
|
pool = Pool()
|
|
Invoice = pool.get('account.invoice')
|
|
EDocument = pool.get('edocument.xrechnung.invoice')
|
|
context = Transaction().context
|
|
|
|
invoice, = Invoice.browse([context.get('active_id', -1)])
|
|
template = EDocument(invoice)
|
|
invoice_string = template.render('XRechnung-2.2')
|
|
print('\n## invoice_string:', invoice_string.decode('utf8'))
|
|
with open('x-rechnung.xml', 'wt') as fhdl:
|
|
fhdl.write(invoice_string.decode('utf8'))
|
|
|
|
return action, {}
|
|
|
|
# end RunXRechnungReport
|