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
- Księgowość
- Zapasy
- PoS
- Project
- MRP
To pytanie dostało ostrzeżenie
5132
Widoki
Podoba Ci się ta dyskusja? Dołącz do niej!
Stwórz konto dzisiaj, aby cieszyć się ekskluzywnymi funkcjami i wchodzić w interakcje z naszą wspaniałą społecznością!
Zarejestruj sięPowiązane posty | Odpowiedzi | Widoki | Czynność | |
---|---|---|---|---|
|
2
gru 17
|
3132 | ||
|
1
lis 16
|
4405 | ||
|
0
mar 15
|
2902 | ||
|
0
mar 15
|
3134 | ||
|
0
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/