# -*- 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