อยากทราบวิธีการแก้ไข Error if ใน method get_income จะต้องแก้ไขยังไงครับ

แนะนำ สอบถาม ภาษา C สำหรับผู้เริ่มต้น ภาษา Java ภาษา Python

Moderator: mindphp, ผู้ดูแลกระดาน

ภาพประจำตัวสมาชิก
บัวบุญ จันทะโคตร
PHP Super Member
PHP Super Member
โพสต์: 227
ลงทะเบียนเมื่อ: 26/06/2017 10:15 am

อยากทราบวิธีการแก้ไข Error if ใน method get_income จะต้องแก้ไขยังไงครับ

โพสต์โดย บัวบุญ จันทะโคตร » 08/08/2017 7:33 pm

ผมกำลังเขียน method get_income ใน .py โดยผมสร้างฟังก์ชั่น if เข้ามาเพื่อที่จะแยกค่า id ของ category_id โดยผมต้องการให้ ตัวแปรืั้ชื่อว่า income เก็บค่าที่เท่ากับ 2 เมื่อกดปุ่มรีสตาร์ service แล้ว เกิด Error ในไฟล์ log จะต้องแก้ไขยังครับ

ส่วนของโค้ด method get_income ใน .py

โค้ด: เลือกทั้งหมด

 def get_income(self, obj):
        payslip_line = self.pool.get('hr.salary.rule.category')
        res = []
        ids = []
        income = []
        for id in range(len(obj)):
            if obj[id].appears_on_payslip == True:
                ids.append(obj[id].id)
        if ids:
            res = payslip_line.browse(self.cr, self.uid, ids)
            income.append(res[ids].id)

        if income == 2:
         return income[0]


ส่วนของโค้ด rml

โค้ด: เลือกทั้งหมด

         </blockTable>
        <blockTable colWidths="150.0,150.0,150.0" style="Table3">
          <tr>
            <td>
              <para style="P1"> income </para>
            </td>
            <td>
              <para style="P1"> Deduction </para>
            </td>
             <td>
              <para style="P1">  </para>
            </td>
          </tr>
        </blockTable>

        <section>
          <para style="P1">[[repeatIn(get_income(o.line_ids),'bb') ]]</para>
          <blockTable colWidths="170.0,150.0" style="Table3">
            <tr>
              <td>
                <para style="P1"> [[ bb.name ]] </para>
              </td>
               <td>
                <para style="P1"> [[ bb.code ]] </para>
              </td>
            </tr>
          </blockTable>
        </section>


ส่วนของ Error ใน log

โค้ด: เลือกทั้งหมด

2017-08-08 11:49:46,706 20986 INFO demo_mdsoft werkzeug: 127.0.0.1 - - [08/Aug/2017 11:49:46] "POST /web/action/load HTTP/1.1" 200 -
2017-08-08 11:49:46,811 20986 ERROR demo_mdsoft openerp.tools.safe_eval: Cannot eval "repeatIn(get_income(o.line_ids),'bb')"
Traceback (most recent call last):
  File "/openerp7/openerp7-server/openerp/tools/safe_eval.py", line 288, in safe_eval
    return eval(test_expr(expr, _SAFE_OPCODES, mode=mode), globals_dict, locals_dict)
  File "", line 1, in <module>
  File "/home/com010/PycharmProjects/mdsoft_module/mdsoft_salary_slip_print/report/mdsoft_salary_slip_print_report.py", line 118, in get_income
    income.append(res[ids].id)
TypeError: list indices must be integers, not list
2017-08-08 11:49:46,811 20986 ERROR demo_mdsoft openerp.service.web_services: Exception: list indices must be integers, not list
Traceback (most recent call last):
  File "/openerp7/openerp7-server/openerp/service/web_services.py", line 718, in go
    (result, format) = obj.create(cr, uid, ids, datas, context)
  File "/openerp7/openerp7-server/openerp/report/report_sxw.py", line 451, in create
    fnct_ret = fnct(cr, uid, ids, data, report_xml, context)
  File "/openerp7/openerp7-server/openerp/report/report_sxw.py", line 520, in create_source_pdf
    return self.create_single_pdf(cr, uid, ids, data, report_xml, context)
  File "/openerp7/openerp7-server/openerp/report/report_sxw.py", line 542, in create_single_pdf
    pdf = create_doc(etree.tostring(processed_rml),rml_parser.localcontext,logo,title.encode('utf8'))
  File "/openerp7/openerp7-server/openerp/report/interface.py", line 206, in create_pdf
    obj.render()
  File "/openerp7/openerp7-server/openerp/report/render/render.py", line 59, in render
    self._result = self._render()
  File "/openerp7/openerp7-server/openerp/report/render/rml.py", line 41, in _render
    return rml2pdf.parseNode(self.rml, self.localcontext, images=self.bin_datas, path=self.path,title=self.title)
  File "/openerp7/openerp7-server/openerp/report/render/rml2pdf/trml2pdf.py", line 1044, in parseNode
    r.render(fp)
  File "/openerp7/openerp7-server/openerp/report/render/rml2pdf/trml2pdf.py", line 331, in render
    pt_obj.render(el)
  File "/openerp7/openerp7-server/openerp/report/render/rml2pdf/trml2pdf.py", line 1015, in render
    fis += r.render(node_story)
  File "/openerp7/openerp7-server/openerp/report/render/rml2pdf/trml2pdf.py", line 906, in render
    return process_story(node_story)
  File "/openerp7/openerp7-server/openerp/report/render/rml2pdf/trml2pdf.py", line 895, in process_story
    for node in utils._child_get(node_story, self):
  File "/openerp7/openerp7-server/openerp/report/render/rml2pdf/utils.py", line 48, in _child_get
    for ctx in eval(n.get('rml_loop'),{}, self.localcontext):
  File "/openerp7/openerp7-server/openerp/tools/safe_eval.py", line 288, in safe_eval
    return eval(test_expr(expr, _SAFE_OPCODES, mode=mode), globals_dict, locals_dict)
  File "", line 1, in <module>
  File "/home/com010/PycharmProjects/mdsoft_module/mdsoft_salary_slip_print/report/mdsoft_salary_slip_print_report.py", line 118, in get_income
    income.append(res[ids].id)
TypeError: list indices must be integers, not list
2017-08-08 11:49:47,032 20986 ERROR demo_mdsoft openerp.netsvc: list indices must be integers, not list
(<type 'exceptions.TypeError'>, TypeError('list indices must be integers, not list',), <traceback object at 0x7f2f2906d9e0>)
Traceback (most recent call last):
  File "/openerp7/openerp7-server/openerp/netsvc.py", line 306, in dispatch_rpc
    result = ExportService.getService(service_name).dispatch(method, params)
  File "/openerp7/openerp7-server/openerp/service/web_services.py", line 660, in dispatch
    res = fn(db, uid, *params)
  File "/openerp7/openerp7-server/openerp/service/web_services.py", line 766, in exp_report_get
    return self._check_report(report_id)
  File "/openerp7/openerp7-server/openerp/service/web_services.py", line 744, in _check_report
    netsvc.abort_response(exc, exc.message, 'warning', exc.traceback)
  File "/openerp7/openerp7-server/openerp/netsvc.py", line 81, in abort_response
    raise openerp.osv.osv.except_osv(description, details)
except_osv: (u'list indices must be integers, not list', (<type 'exceptions.TypeError'>, TypeError('list indices must be integers, not list',), <traceback object at 0x7f2f2906d9e0>))
2017-08-08 11:49:47,033 20986 INFO demo_mdsoft werkzeug: 127.0.0.1 - - [08/Aug/2017 11:49:47] "POST /web/report HTTP/1.1" 500 -

ย้อนกลับไปยัง

ผู้ใช้งานขณะนี้

กำลังดูบอร์ดนี้: 8 และ บุคคลทั่วไป 0 ท่าน