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:
- 客户关系管理
- e-Commerce
- 会计
- 库存
- PoS
- Project
- MRP
此问题已终结
            
                5637
                
                    查看
                
            
        
    | 相关帖文 | 回复 | 查看 | 活动 | |
|---|---|---|---|---|
|  | 2 12月 17  | 3545 | ||
|  | 1 11月 16  | 5052 | ||
|  | 0 3月 15  | 3191 | ||
|  | 0 3月 15  | 3523 | ||
|  | 0 3月 15  | 3953 | 
 
                        
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/