hi,
I have a table calldata1 and i want to show its contents in report print. i created pentaho report by adding calldata1 as datasource and uplodaded this report to open erp. Then i created a wizard table calldata_print_report_wiz . i created a pop up window which displays datestart, date end ,caller from this table as filters. (similar to Reporting/Point of sale/Sale details).
i print data by passing filters to report my corrected code is given below
calldetails/calldata.py
from osv import osv,fields
class calldata1(osv.osv):
_name = 'calldata1'
_columns = {
'Call_start': fields.datetime('Call start'),
'Call_duration':fields.datetime('Call duration'),
'Caller':fields.char('Caller'),
}
calldata1()
calldetails/wizard/call_print.py
import logging
from openerp.osv import fields, osv
import time
class calldata_print_report_wiz(osv.osv_memory):
_name = "calldata.print.report.wiz"
def _sel_func(self, cr, uid,context=None):
obj = self.pool.get('calldata1')
ids = obj.search(cr, uid, [])
res = obj.read(cr, uid, ids, ['id','Caller'], context)
res =[(r['id'],r['Caller']) for r in res]
return res
_columns = {
'date_start': fields.date('Date Start', required=True),
'date_end': fields.date('Date End', required=True),
'caller_id':fields.many2one(
'calldata1',
'caller_id',
selection=_sel_func
)
}
_defaults = {
'date_start': lambda *a: time.strftime('%Y-%m-%d'),
'date_end': lambda *a: time.strftime('%Y-%m-%d'),
}
34 def print_report(self, cr, uid, ids, context=None):
35
36 _logger = logging.getLogger(__name__)
37 datas = {}
38 if context is None:
39 context = {}
40 res = self.read(cr, uid, ids, ['date_start', 'date_end', 'caller_id'], context=context)
41 caller_id = ''
42 date_start = res[0]['date_start'] + ' 00:00:00'
43 date_end = res[0]['date_end'] + ' 23:59:59'
44 if res[0]['caller_id']:
45 caller_id = res[0]['caller_id']
46 calldata_obj = self.pool.get('calldata')
47 if caller_id:
48 cr.execute("select caller from calldata where id=%s",(caller_id,))
49 caller = cr.fetchone()
50 ids = calldata_obj.search(cr, uid, [('call_start','>=',date_start),('call_start','<=',date_end),('caller','=',caller[0])])
51 else:
52 ids = calldata_obj.search(cr, uid, [('call_start','>=',date_start),('call_start','<=',date_end)])
53 calldats = calldata_obj.read(cr, uid, ids, ['caller','call_start'], context)
54 datas['ids'] = ids
55 datas['form']= calldats
56 datas['model']= 'calldata'
57 if (ids == []):
58 datas = {}
59 return {
60 'type': 'ir.actions.report.xml',
61 'report_name':'calldata',
62 'datas':datas,
63
64 }
calldata_print_report_wiz()
Odoo is the world's easiest all-in-one management software.
It includes hundreds of business apps:
- CRM
- e-Commerce
- Comptabilitat
- Inventari
- PoS
- Project
- MRP
This question has been flagged
5130
Vistes
Enjoying the discussion? Don't just read, join in!
Create an account today to enjoy exclusive features and engage with our awesome community!
Registrar-seRelated Posts | Respostes | Vistes | Activitat | |
---|---|---|---|---|
|
2
de des. 17
|
3132 | ||
|
1
de nov. 16
|
4405 | ||
|
0
de març 15
|
2901 | ||
|
0
de març 15
|
3134 | ||
|
0
de març 15
|
3423 |
any one der? please help :(
Did you solved it yet? Looking for the same solution.
@evon Yes i solved it . i will update question with correct code.Plz inform if it helped you
@evon i posted correct code . what is the issue ?
line 50, i have same type of work but it gives the error "TypeError: 'list' object is not callable" :(
@evon will u post u r code as different question and give link. i will check
Thanks but it works now.
@evon then vote 4 me :)
:) done
and how do you print the value of a field in wizard to the report?
this is the link pls check http://help.openerp.com/question/34705/print-value-of-a-field-in-wizard-to-report/