odoo/addons/l10n_lu/wizard/print_vat.py

75 lines
2.8 KiB
Python

# -*- coding: utf-8 -*-
#Copyright (c) Vincent Cardon <vincent.cardon@tranquil-it-systems.fr>
# Denis Cardon <denis.cardon@tranquilitsystems.com> and Emmanuel RICHARD.
#Ingenieur fondateur
#Tranquil IT Systems
from osv import osv, fields
import pooler
import tools
from tools.translate import _
from report.render import render
from report.interface import report_int
class external_pdf(render):
def __init__(self, pdf):
render.__init__(self)
self.pdf = pdf
self.output_type='pdf'
def _render(self):
return self.pdf
class report_custom(report_int):
def create(self, cr, uid, ids, datas, context={}):
pool = pooler.get_pool(cr.dbname)
taxobj = pool.get('account.tax.code')
code_ids = taxobj.search(cr, uid, [('parent_id','child_of',[datas['form']['tax_code_id']])])
result = {}
for t in taxobj.browse(cr, uid, code_ids, {'period_id': datas['form']['period_id']}):
if str(t.code):
result['case_'+str(t.code)] = '%.2f' % (t.sum_period or 0.0, )
user = pool.get('res.users').browse(cr, uid, uid, context)
# Not Clean, to be changed
partner = user.company_id.partner_id
result['info_name'] = user.company_id.name
result['info_vatnum'] = partner.vat
if partner.address:
result['info_address'] = partner.address[0].street
result['info_address2'] = (partner.address[0].zip or '') + ' ' + (partner.address[0].city or '')
try:
tools.pdf_utils.fill_pdf(tools.config['addons_path']+'/l10n_lu/wizard/2008_DECL_F_M10.pdf', '/tmp/output.pdf', result)
self.obj = external_pdf(file('/tmp/output.pdf').read())
self.obj.render()
return (self.obj.pdf, 'pdf')
except Exception, e:
raise osv.except_osv(_('pdf not created !'), _('Please check if package pdftk is installed!'))
report_custom('report.l10n_lu.tax.report.print')
class vat_declaration_report(osv.osv_memory):
_name = 'vat.declaration.report'
_description = 'VAT Declaration Report'
_columns = {
'tax_code_id': fields.many2one('account.tax.code', 'Company', required=True, domain=[('parent_id','=',False)]),
'period_id' : fields.many2one('account.period', 'Period', required=True)
}
def print_vat_declaration_report(self, cr, uid, ids, context=None):
active_ids = context.get('active_ids',[])
data = {}
data['form'] = {}
data['ids'] = active_ids
data['form']['tax_code_id'] = self.browse(cr, uid, ids)[0].tax_code_id.id
data['form']['period_id'] = self.browse(cr, uid, ids)[0].period_id.id
return { 'type': 'ir.actions.report.xml', 'report_name': 'l10n_lu.tax.report.print', 'datas': data}
vat_declaration_report()
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: