[FIX] crm: when loggin a phonecall from Opportunity, note added to the opportunity...
[odoo/odoo.git] / addons / l10n_lu / wizard / print_vat.py
1 # -*- coding: utf-8 -*-
2 #Copyright (c) Vincent Cardon <vincent.cardon@tranquil-it-systems.fr>
3 # Denis Cardon <denis.cardon@tranquilitsystems.com> and Emmanuel RICHARD.
4 #Ingenieur fondateur
5 #Tranquil IT Systems
6
7 from __future__ import with_statement
8 from openerp.osv import fields, osv
9 from openerp import pooler
10 from openerp import tools
11 from openerp.tools.translate import _
12 from openerp.report.render import render
13 from openerp.report.interface import report_int
14 from openerp import addons
15 import tempfile
16 import os
17
18 class external_pdf(render):
19
20     def __init__(self, pdf):
21         render.__init__(self)
22         self.pdf = pdf
23         self.output_type='pdf'
24
25     def _render(self):
26         return self.pdf
27
28
29 class report_custom(report_int):
30
31     def create(self, cr, uid, ids, datas, context=None):
32
33         pool = pooler.get_pool(cr.dbname)
34         taxobj = pool.get('account.tax.code')
35
36         if context is None:
37             context = {}
38         code_ids = taxobj.search(cr, uid, [('parent_id','child_of',[datas['form']['tax_code_id']])])
39         result = {}
40         for t in taxobj.browse(cr, uid, code_ids, {'period_id': datas['form']['period_id']}):
41             if str(t.code):
42                 result['case_'+str(t.code)] = '%.2f' % (t.sum_period or 0.0, )
43         user = pool.get('res.users').browse(cr, uid, uid, context)
44
45         # Not Clean, to be changed
46         partner = user.company_id.partner_id
47         result['info_name'] = user.company_id.name
48         result['info_vatnum'] = partner.vat
49         if partner:
50             result['info_address'] = partner.street
51             result['info_address2'] = (partner.zip or '') + ' ' + (partner.city or '')
52         try:
53             tmp_file = tempfile.mkstemp(".pdf")[1]
54             try:
55                 tools.pdf_utils.fill_pdf(addons.get_module_resource('l10n_lu','wizard', '2008_DECL_F_M10.pdf'), tmp_file, result)
56                 with open(tmp_file, "r") as ofile:
57                     self.obj = external_pdf(ofile.read())
58             finally:
59                 try:
60                     os.remove(tmp_file)
61                 except:
62                     pass # nothing to do
63             self.obj.render()
64             return (self.obj.pdf, 'pdf')
65         except Exception:
66             raise osv.except_osv(_('PDF Not Created!'), _('Please check if package pdftk is installed!'))
67
68 report_custom('report.l10n_lu.tax.report.print')
69
70 class vat_declaration_report(osv.osv_memory):
71     _name = 'vat.declaration.report'
72     _description = 'VAT Declaration Report'
73
74     _columns = {
75          'tax_code_id': fields.many2one('account.tax.code', 'Company', readonly=False, required=True, domain=[('parent_id','=',False)]),
76          'type': fields.selection([('monthly','Monthly'),('quarterly','Quaterly'),('yearly','Yearly')], 'Type', required=True),
77          'period_id' : fields.many2one('account.period', 'From Period', required=True),
78          'to_period_id': fields.many2one('account.period', 'To Period', required=True),
79     }
80
81     _defaults = {
82         'type': 'monthly',
83     }
84
85     def print_vat_declaration_report(self, cr, uid, ids, context=None):
86         active_ids = context.get('active_ids',[])
87         data = {}
88         data['form'] = {}
89         data['ids'] = active_ids
90         data['form']['tax_code_id'] = self.browse(cr, uid, ids)[0].tax_code_id.id
91         data['form']['period_id'] = self.browse(cr, uid, ids)[0].period_id.id
92         return { 'type': 'ir.actions.report.xml', 'report_name': 'l10n_lu.tax.report.print', 'datas': data}
93
94 vat_declaration_report()
95
96 # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: