Tutorial Odoo 9.0 Part 14 : Reporting

จาก Morange Wiki
รุ่นแก้ไขเมื่อ 11:01, 19 กรกฎาคม 2559 โดย Sirawich (คุย | มีส่วนร่วม) (หน้าที่ถูกสร้างด้วย '<h2>Reporting</h2> *<h3>Printed reports</h3> แก้ไขไฟล์ดังนี้ <br/><br/> openacademy/__openerp__.py <pre> ...')
(ต่าง) ←รุ่นแก้ไขก่อนหน้า | รุ่นแก้ไขล่าสุด (ต่าง) | รุ่นแก้ไขถัดไป→ (ต่าง)

Reporting

  • Printed reports

แก้ไขไฟล์ดังนี้

openacademy/__openerp__.py

        'views/openacademy.xml',
        'views/partner.xml',
        'views/session_workflow.xml',
        'reports.xml',
    ],
    # only loaded in demonstration mode
    'demo': [


openacademy/reports.xml

<openerp>
<data>
    <report
        id="report_session"
        model="openacademy.session"
        string="Session Report"
        name="openacademy.report_session_view"
        file="openacademy.report_session"
        report_type="qweb-pdf" />

    <template id="report_session_view">
        <t t-call="report.html_container">
            <t t-foreach="docs" t-as="doc">
                <t t-call="report.external_layout">
                    <div class="page">
                        <h2 t-field="doc.name"/>
                        <p>From <span t-field="doc.start_date"/> to <span t-field="doc.end_date"/></p>
                        <h3>Attendees:</h3>
                        <ul>
                            <t t-foreach="doc.attendee_ids" t-as="attendee">
                                <li><span t-field="attendee.name"/></li>
                            </t>
                        </ul>
                    </div>
                </t>
            </t>
        </t>
    </template>
</data>
</openerp>


จากการแก้ไขโค้ดข้างต้น จะมีตัวเลือก print ปรากฏ และสามารถออกรายงานเป็นไฟล์ pdf ดังภาพ
Odoo14-1.png

ตัวอย่างไฟล์ pdf
Odoo14-2.png

  • View Inheritance

แก้ไขไฟล์ดังนี้

openacademy/__openerp__.py

        # 'security/ir.model.access.csv',
        'templates.xml',
        'views/openacademy.xml',
        'views/partner.xml',
    ],
    # only loaded in demonstration mode
    'demo': [


openacademy/views/partner.xml

<?xml version="1.0" encoding="UTF-8"?>
 <openerp>
    <data>
        <!-- Add instructor field to existing view -->
        <record model="ir.ui.view" id="partner_instructor_form_view">
            <field name="name">partner.instructor</field>
            <field name="model">res.partner</field>
            <field name="inherit_id" ref="base.view_partner_form"/>
            <field name="arch" type="xml">
                <notebook position="inside">
                    <page string="Sessions">
                        <group>
                            <field name="instructor"/>
                            <field name="session_ids"/>
                        </group>
                    </page>
                </notebook>
            </field>
        </record>

        <record model="ir.actions.act_window" id="contact_list_action">
            <field name="name">Contacts</field>
            <field name="res_model">res.partner</field>
            <field name="view_mode">tree,form</field>
        </record>
        <menuitem id="configuration_menu" name="Configuration"
                  parent="main_openacademy_menu"/>
        <menuitem id="contact_menu" name="Contacts"
                  parent="configuration_menu"
                  action="contact_list_action"/>
    </data>
</openerp>



ทำการเพิ่มฟิลด์เข้าไปใน Form ของ partner (ที่ได้สืบทอดมา) ได้ผลลัพธ์ดังนี้

มีข้อผิดพลาดในการสร้างรูปย่อ: ไฟล์สูญหาย



และทำการเพิ่ม Contact ใน menuitem ดังภาพ

มีข้อผิดพลาดในการสร้างรูปย่อ: ไฟล์สูญหาย



  • Dashboards

แก้ไขไฟล์ดังนี้

openacademy/models.py

    duration = fields.Float(digits=(6, 2), help="Duration in days")
    seats = fields.Integer(string="Number of seats")

    instructor_id = fields.Many2one('res.partner', string="Instructor",
        domain=[('instructor', '=', True)])
    course_id = fields.Many2one('openacademy.course',
        ondelete='cascade', string="Course", required=True)
    attendee_ids = fields.Many2many('res.partner', string="Attendees")


เป็นการเพิ่มเงือนไขให้การเลือก instructor ให้กับ session โดยจะเลือกจาก partner ที่มี field instructor เป็น true

    instructor_id = fields.Many2one('res.partner', string="Instructor",
        domain=[('instructor', '=', True)])



สังเกตุได้จากการเลือก instructor ให้แต่ละ session

มีข้อผิดพลาดในการสร้างรูปย่อ: ไฟล์สูญหาย



ทำการแก้ไขค่า instructor ให้กับ partner โดยให้ค่าเป็น true แล้วบันทึก จะได้ผลลัพธ์ดังภาพ

มีข้อผิดพลาดในการสร้างรูปย่อ: ไฟล์สูญหาย



และทำการเลือก instructor ให้ session อีกครั้ง จะปรากฏ partner ที่มีสถานะ instructor เป็น true ขึ้นมาในตัวเลือก ดังภาพ

มีข้อผิดพลาดในการสร้างรูปย่อ: ไฟล์สูญหาย




  • More complex domains

แก้ไขไฟล์ดังนี้

openacademy/models.py

        seats = fields.Integer(string="Number of seats")

    instructor_id = fields.Many2one('res.partner', string="Instructor",
        domain=['|', ('instructor', '=', True),
                     ('category_id.name', 'ilike', "Teacher")])
    course_id = fields.Many2one('openacademy.course',
        ondelete='cascade', string="Course", required=True)
    attendee_ids = fields.Many2many('res.partner', string="Attendees")


ในส่วนนี้จะเป็นการปรับแก้ให้การเลือก instructor ให้กับ session
จากเดิม เลือกจาก partner ที่มีสถานะ instructor เป็น true
ปรับแก้เป็น
เลือกจาก partner ที่มีสถานะ instructor เป็น true "หรือ" partner ที่ติด tag Teacher

        domain=['|', ('instructor', '=', True),
                     ('category_id.name', 'ilike', "Teacher")])

ดังภาพ

มีข้อผิดพลาดในการสร้างรูปย่อ: ไฟล์สูญหาย



openacademy/views/partner.xml

 <menuitem id="contact_menu" name="Contacts"
                  parent="configuration_menu"
                  action="contact_list_action"/>

        <record model="ir.actions.act_window" id="contact_cat_list_action">
            <field name="name">Contact Tags</field>
            <field name="res_model">res.partner.category</field>
            <field name="view_mode">tree,form</field>
        </record>
        <menuitem id="contact_cat_menu" name="Contact Tags"
                  parent="configuration_menu"
                  action="contact_cat_list_action"/>

        <record model="res.partner.category" id="teacher1">
            <field name="name">Teacher / Level 1</field>
        </record>
        <record model="res.partner.category" id="teacher2">
            <field name="name">Teacher / Level 2</field>
        </record>
    </data>
</openerp>


เป็นการเพิ่ม Tag Teacher / Level 1 และ Teacher / Level 2 ลงใน Contact Tags

มีข้อผิดพลาดในการสร้างรูปย่อ: ไฟล์สูญหาย



หัวข้อถัดไป Tutorial Odoo 9.0 Part 7 : Computed fields and default values