Openerp/histest3

จาก Theory Wiki
ไปยังการนำทาง ไปยังการค้นหา

หน้านี้รวมข้อมูลสำหรับการทดสอบการพัฒนาระบบด้วย OpenERP

การสร้างรายงาน

  • สร้างไดเรคตอรี่ชื่อ report และสร้างไฟล์ __init__.py ไว้ภายในนั้น
  • ดาวน์โหลด ไฟล์:Histest patient.odt เพื่อใช้เตรียมเทมเพลทสำหรับรายงาน เซฟไฟล์นี้ไว้ในไดเรคตอรี report
  • ใช้คำสั่ง openerp_sxw2rml.py แปลงไฟล์ของ OpenOffice ให้เป็นไฟล์ RML (Report Markup Language) เพื่อนำไปใช้กับระบบสร้างรายงานของ OpenERP ต่อไป (หมายเหตุ: <openerp-path> หมายถึงพาธที่ติดตั้ง OpenERP)
python <openerp-path>/openerp/addons/base_report_designer/openerp_sxw2rml/openerp_sxw2rml.py histest_patient.odt > histest_patient.rml

ไฟล์ histest.py

เพิ่มโมเดล HISAppointment และแก้ไขโมเดล HISPatient ให้เชื่อมโยงถึงกัน

from osv import osv, fields

class HISPatient(osv.Model):
    _name='histest.patient'

    def get_full_name(self, cr, uid, ids, field_name, arg, context):
        patients = self.browse(cr, uid, ids)
        result = {}
        for p in patients:
            result[p.id] = (u'%s %s %s' % (p.title,
                                           p.first_name,
                                           p.last_name))
        return result


    _rec_name='full_name'

    _columns={
        'title': fields.char(size=50,
                             string=u'คำนำหน้าชื่อ',
                             required=True),
        'first_name': fields.char(size=256,
                                  string=u'ชื่อ',
                                  required=True),
        'last_name': fields.char(size=256,
                                 string=u'นามสกุล',
                                 required=True),
        'sex': fields.selection([('M',u'ชาย'),('F',u'หญิง'),],
                                string=u'เพศ',
                                required=True),
        'id_number': fields.char(size=20,
                                 string=u'เลขบัตรประชาชน',
                                 required=True),
        'full_name': fields.function(get_full_name,
                                     type='char'),
        'appointment_ids': fields.one2many('histest.appointment',
                                           'patient_id',
                                           'Appointments'),
    }
    
:

class HISAppointment(osv.Model):
    _name = 'histest.appointment'
    _columns = {
            'date': fields.date(string=u'วันนัดหมาย', required=True),
            'patient_id': fields.many2one('histest.patient', 'Patient'),
            }

ไฟล์ histest_view.xml

เพิ่มการแสดงผลฟิลด์ appointment_ids ในฟอร์มของโมเดล HISPatient

    <record model="ir.ui.view" id="view_histest_patient_form">
      <field name="name">histest.patient.form</field>
      <field name="model">histest.patient</field>
      <field name="arch" type="xml">
        <form string="Patient" version="7.0">
          <group cols="2">
            <group colspan="1">
              <field name="title"/>
              <field name="first_name" widget="firstname" />
              <field name="last_name" widget="lastname" />
            </group>
            <group colspan="1">
              <field name="sex"/>
              <field name="id_number" widget="person_id" />
              <field name="appointment_ids" />
            </group>
          </group>
        </form>
      </field>
    </record>

ไฟล์ histest_report.xml

ใช้ไฟล์นี้ระบุองค์ประกอบของรายงานการนัดหมายผู้ป่วย

<?xml version="1.0" encoding="utf-8"?>
<openerp>
  <data>

    <report
      auto="True"
      id="report_histest_patient"
      model="histest.patient"
      name="histest.patient"
      rml="histest/report/histest_patient.rml"
      string="Print Appointments"
      header="False"
      menu="True"
      />

  </data>
</openerp>

ไฟล์ __openerp__.py

ระบุให้ใช้ไฟล์ histest_report.xml เป็น data

{
    :
    'data': [
        'histest_view.xml',
        'histest_report.xml',
    ],
    :
}

เอกสารครั้งก่อน ๆ