Reporting in OpenERP (RML) -Part 2-

Pembahasan kali ini adalah lanjutan dari tutorial pembuatan reporting di OpenERP dengan RML, setelah kita berhasil membuat tombol & menampilkannya, maka sekarang pembahasan intinya adalah untuk membuat tampilan dari report tersebut. Sedangkan inti dari tampilan report tersebut berada di file dengan ekstensi *.rml.
Untuk itu mari kita bedah source code rml report dibawah ini :


<template pageSize="(23cm,29.5cm)" title="Sale Order" author="RADIO RODJA 756 AM" allowSplitting="20">

# Membuat canvas dengan menset parameter pageSize senilai (panjang, lebar)
   
<frame id="first" x1="1.0cm" y1="2.0cm" width="20cm" height="27cm"/>

# Menentukan luas dari canvas yang dapat kita 'tulis' dengan parameter widht & height, beserta titik awal penulisan identasi/margin


            <pageGraphics>
                <setFont name="Helvetica" size="7"/>
                <drawString x="19.0cm" y="1cm">Hal <pageNumber/></drawString>
                <image x="1.2cm" y="27.4cm" height="35.0" >[[ company.logo or removeParentNode('image') ]]</image>
                <setFont name="Helvetica-Bold" size="12"/>
                <drawString x="3.4cm" y="28.2cm">PT. EAGLE INDUSTRY INDONESIA</drawString>
                <setFont name="Helvetica" size="7"/>
                <drawString x="18cm" y="28.2cm">EFM-741-PUR-004</drawString>
                <drawString x="3.4cm" y="27.9cm">EJIP Industrial Park Plot 7G - 4, Cikarang Selatan, Bekasi 17550</drawString>
                <drawString x="3.4cm" y="27.6cm">Phone : 021-8970178, 8975165   Fax : 021-8970179</drawString>
            </pageGraphics>

# Code diatas digunakan untuk membuat tulisan sesuai dengan presisi yang tepat dengan menggunakan titik koordinat, dan ini merupakan kelebihan dari RML.

# Code dibawah ini adalah pendefinisian css/style untuk table yang akan kita gunakan pada report ini :

    <blockTableStyle id="Tableau1">
      <blockAlignment value="LEFT"/>
      <blockValign value="TOP"/>
    </blockTableStyle>

    <blockTableStyle id="Table2">
      <blockAlignment value="LEFT"/>
      <blockValign value="TOP"/>
      <lineStyle kind="LINEBEFORE" colorName="#000000" start="0,0" stop="0,-1"/>
      <lineStyle kind="LINEABOVE" colorName="#000000" start="0,0" stop="0,0"/>
      <lineStyle kind="LINEBELOW" colorName="#000000" start="0,-1" stop="0,-1"/>
      <lineStyle kind="LINEBEFORE" colorName="#000000" start="1,0" stop="1,-1"/>
      <lineStyle kind="LINEABOVE" colorName="#000000" start="1,0" stop="1,0"/>
      <lineStyle kind="LINEBELOW" colorName="#000000" start="1,-1" stop="1,-1"/>
      <lineStyle kind="LINEBEFORE" colorName="#000000" start="2,0" stop="2,-1"/>
      <lineStyle kind="LINEABOVE" colorName="#000000" start="2,0" stop="2,0"/>
      <lineStyle kind="LINEBELOW" colorName="#000000" start="2,-1" stop="2,-1"/>
      <lineStyle kind="LINEBEFORE" colorName="#000000" start="3,0" stop="3,-1"/>
      <lineStyle kind="LINEABOVE" colorName="#000000" start="3,0" stop="3,0"/>
      <lineStyle kind="LINEBELOW" colorName="#000000" start="3,-1" stop="3,-1"/>
      <lineStyle kind="LINEBEFORE" colorName="#000000" start="4,0" stop="4,-1"/>
      <lineStyle kind="LINEAFTER" colorName="#000000" start="4,0" stop="4,-1"/>
      <lineStyle kind="LINEABOVE" colorName="#000000" start="4,0" stop="4,0"/>
      <lineStyle kind="LINEBELOW" colorName="#000000" start="4,-1" stop="4,-1"/>
      <lineStyle kind="LINEBEFORE" colorName="#000000" start="5,0" stop="5,-1"/>
      <lineStyle kind="LINEAFTER" colorName="#000000" start="5,0" stop="5,-1"/>
      <lineStyle kind="LINEABOVE" colorName="#000000" start="5,0" stop="5,0"/>
      <lineStyle kind="LINEBELOW" colorName="#000000" start="5,-1" stop="5,-1"/>
      <lineStyle kind="LINEBEFORE" colorName="#000000" start="6,0" stop="6,-1"/>
      <lineStyle kind="LINEAFTER" colorName="#000000" start="6,0" stop="6,-1"/>
      <lineStyle kind="LINEABOVE" colorName="#000000" start="6,0" stop="6,0"/>
      <lineStyle kind="LINEBELOW" colorName="#000000" start="6,-1" stop="6,-1"/>
      <lineStyle kind="LINEBEFORE" colorName="#000000" start="7,0" stop="7,-1"/>
      <lineStyle kind="LINEAFTER" colorName="#000000" start="7,0" stop="7,-1"/>
      <lineStyle kind="LINEABOVE" colorName="#000000" start="7,0" stop="7,0"/>
      <lineStyle kind="LINEBELOW" colorName="#000000" start="7,-1" stop="7,-1"/>
    </blockTableStyle>


    <blockTableStyle id="Table21">
      <blockAlignment value="LEFT"/>
      <blockValign value="TOP"/>
      <lineStyle kind="LINEBEFORE" colorName="#000000" start="0,0" stop="0,-1"/>
      <lineStyle kind="LINEBEFORE" colorName="#000000" start="1,0" stop="1,-1"/>
      <lineStyle kind="LINEBEFORE" colorName="#000000" start="2,0" stop="2,-1"/>
      <lineStyle kind="LINEBEFORE" colorName="#000000" start="3,0" stop="3,-1"/>
      <lineStyle kind="LINEBEFORE" colorName="#000000" start="4,0" stop="4,-1"/>
      <lineStyle kind="LINEAFTER" colorName="#000000" start="4,0" stop="4,-1"/>
      <lineStyle kind="LINEBEFORE" colorName="#000000" start="5,0" stop="5,-1"/>
      <lineStyle kind="LINEAFTER" colorName="#000000" start="5,0" stop="5,-1"/>
      <lineStyle kind="LINEBEFORE" colorName="#000000" start="6,0" stop="6,-1"/>
      <lineStyle kind="LINEAFTER" colorName="#000000" start="6,0" stop="6,-1"/>
      <lineStyle kind="LINEBEFORE" colorName="#000000" start="7,0" stop="7,-1"/>
      <lineStyle kind="LINEAFTER" colorName="#000000" start="7,0" stop="7,-1"/>
    </blockTableStyle>
    
    <blockTableStyle id="Table22">
      <blockAlignment value="LEFT"/>
      <blockValign value="TOP"/>
      <lineStyle kind="LINEBEFORE" colorName="#000000" start="0,0" stop="0,-1"/>
      <lineStyle kind="LINEBELOW" colorName="#000000" start="0,-1" stop="0,-1"/>
      <lineStyle kind="LINEBEFORE" colorName="#000000" start="1,0" stop="1,-1"/>
      <lineStyle kind="LINEBELOW" colorName="#000000" start="1,-1" stop="1,-1"/>
      <lineStyle kind="LINEBEFORE" colorName="#000000" start="2,0" stop="2,-1"/>
      <lineStyle kind="LINEBELOW" colorName="#000000" start="2,-1" stop="2,-1"/>
      <lineStyle kind="LINEBEFORE" colorName="#000000" start="3,0" stop="3,-1"/>
      <lineStyle kind="LINEBELOW" colorName="#000000" start="3,-1" stop="3,-1"/>
      <lineStyle kind="LINEBEFORE" colorName="#000000" start="4,0" stop="4,-1"/>
      <lineStyle kind="LINEAFTER" colorName="#000000" start="4,0" stop="4,-1"/>
      <lineStyle kind="LINEBELOW" colorName="#000000" start="4,-1" stop="4,-1"/>
      <lineStyle kind="LINEBEFORE" colorName="#000000" start="5,0" stop="5,-1"/>
      <lineStyle kind="LINEAFTER" colorName="#000000" start="5,0" stop="5,-1"/>
      <lineStyle kind="LINEBELOW" colorName="#000000" start="5,-1" stop="5,-1"/>
      <lineStyle kind="LINEBEFORE" colorName="#000000" start="6,0" stop="6,-1"/>
      <lineStyle kind="LINEAFTER" colorName="#000000" start="6,0" stop="6,-1"/>
      <lineStyle kind="LINEBELOW" colorName="#000000" start="6,-1" stop="6,-1"/>
      <lineStyle kind="LINEBEFORE" colorName="#000000" start="7,0" stop="7,-1"/>
      <lineStyle kind="LINEAFTER" colorName="#000000" start="7,0" stop="7,-1"/>
      <lineStyle kind="LINEBELOW" colorName="#000000" start="7,-1" stop="7,-1"/>
    </blockTableStyle>
    
# Sedangkan code dibawah ini adalah pendefinisian css/style untuk font yang akan kita gunakan pada report ini :

    <paraStyle name="terp_default_Bold_81" fontName="Helvetica-Bold" fontSize="9.0" leading="10" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
    <paraStyle name="terp_default_9" fontName="Helvetica" fontSize="10.0" leading="12" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
    <paraStyle name="terp_default_Centre_Bold_9" fontName="Helvetica-Bold" fontSize="12.0" leading="12" alignment="CENTER" spaceBefore="0.0" spaceAfter="0.0"/>
    <paraStyle name="terp_default_1" fontName="Helvetica" fontSize="3.0" leading="3" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
    <paraStyle name="terp_default_7" fontName="Helvetica" fontSize="10.0" leading="10" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
    <paraStyle name="terp_default_71" fontName="Helvetica" fontSize="8.0" leading="10" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
    <paraStyle name="terp_default_Center_7" fontName="Helvetica" fontSize="10.0" leading="10" alignment="CENTER" spaceBefore="0.0" spaceAfter="0.0"/>
    <paraStyle name="terp_default_Right_7" fontName="Helvetica" fontSize="10.0" leading="10" alignment="RIGHT" spaceBefore="0.0" spaceAfter="0.0"/>
    <paraStyle name="terp_default_Center_Bold_7" fontName="Helvetica-Bold" fontSize="8.0" leading="10" alignment="CENTER" spaceBefore="0.0" spaceAfter="0.0"/>

 
   # Code dibawah ini untuk melempar data dari record/form yang aktif pada object/tabel OpenERP :

    <para style="terp_default_9">[[repeatIn(objects,'o')]]</para>

   # Code ini untuk membuat judul dari report, bisa menggunakan tabel ataupun langsung menggunakan syntax <para></para>
    
    <blockTable colWidths="540.0" repeatRows="1" style="Tableau1">
    <tr>
      <td>
          <para style="terp_default_Centre_Bold_9"><font color="white"> S </font></para>
          <para style="terp_default_Centre_Bold_9"><font color="white"> S </font></para>
          <para style="terp_default_Centre_Bold_9"><font color="white"> S </font></para>
          <para style="terp_default_Centre_Bold_9"><u>SALE ORDER</u></para>
      </td>
    </tr>
    </blockTable>
    
   
    # Code ini untuk membuat informasi header dari report yang kita buat , datanya bisa kita ambil langsung dari record yang aktif (berdasarkan nama kolomya) yang telah kita 'lempar' diatas:

    <blockTable colWidths="80.0,250.0,80.0,130.0" repeatRows="1" style="Tableau1">
    <tr>
       <td><para style="terp_default_7">Sold To :</para></td>
       <td>
               <para style="terp_default_Bold_81">[[ o.partner_id.name or 'Customer' ]]</para>
               <para style="terp_default_71">[[ o.partner_invoice_id.name or 'PIC' ]] </para>
               <para style="terp_default_71">[[ o.partner_invoice_id.street or 'Street' ]] </para>
            <para style="terp_default_71">[[ o.partner_invoice_id.zip or 'Zip Postal' ]], [[o.partner_invoice_id.city or 'City' ]]</para>
            <para style="terp_default_71">[[ o.partner_invoice_id.state_id.name or 'State']], [[ o.partner_invoice_id.country_id.name or 'Country' ]]</para>
            <para style="terp_default_71"><font color="white"> </font></para>
       </td>
       <td>
           <para style="terp_default_7">Order :</para>
           <para style="terp_default_7">Date :</para>
       </td>
       <td>
           <para style="terp_default_7">[[ o.name ]]</para>
           <para style="terp_default_7">[[ o.date_order ]]</para>
       </td>
    </tr>
    </blockTable>
    
    # Code ini untuk membuat header dari tabel utama :

    <blockTable colWidths="25.0,225.0,50.0,70.0,90.0,90.0" style="Table2">
    <tr>
      <td><para style="terp_default_Center_Bold_7">No.</para></td>
      <td><para style="terp_default_Center_Bold_7">Product</para></td>
      <td><para style="terp_default_Center_Bold_7">UoM</para></td>
      <td><para style="terp_default_Center_Bold_7">Qty</para></td>
      <td><para style="terp_default_Center_Bold_7">Price</para></td>
      <td><para style="terp_default_Center_Bold_7">Subtotal</para></td>
    </tr>
    </blockTable>
   
   # Code ini untuk membuat content dari tabel utama, biasanya digunakan syntax <section> untuk menampung kondisi looping :

    <section>
    <para style="terp_default_1">[[repeatIn(o.order_line, 'line')]]</para>
    <blockTable colWidths="25.0,225.0,50.0,70.0,90.0,90.0" style="Table21">
    <tr>
      # Pada baris dibawah ini, kita gunakan method python nourut() untuk memparsing data dari file python
      <td><para style="terp_default_Center_7">[[ nourut(o.order_line, line) ]].</para></td>
      <td><para style="terp_default_7"> [['[']] [[line.product_id.default_code]] [[']']] [[line.product_id.name]]</para></td>
      <td><para style="terp_default_7">[[ line.product_uom.name ]]</para></td>
      <td><para style="terp_default_Right_7">[[ line.product_uom_qty ]]</para></td>
      <td><para style="terp_default_Right_7">[[ line.price_unit ]]</para></td>
      <td><para style="terp_default_Right_7">[[ line.price_subtotal ]]</para></td>
    </tr>
    </blockTable>
    </section>
   
    # Code ini untuk membuat footer dari tabel utama :

    <blockTable colWidths="370.0,90.0,90.0" style="Table21">
    <tr>
        <td>
           <para style="terp_default_Right_7"></para>
        </td>
        <td>
          <para style="terp_default_Right_7">Total :</para>
          <para style="terp_default_Right_7">PPN 10% :</para>
          <para style="terp_default_Right_7">Grand Total :</para>
        </td>
        <td>
          <para style="terp_default_Right_7">[[ o.amount_untaxed ]]</para>
          <para style="terp_default_Right_7">[[ o.amount_tax ]] </para>
          <para style="terp_default_Right_7">[[ o.amount_total ]] </para>
        </td>
    </tr>
    </blockTable>
   
    
    # Dan yang terakhir code ini untuk membuat tabel-tabel approval dari masing2 user yang bersangkutan :
    
    <blockTable colWidths="100.0,100.0,100.0" style="Tableau1">
    <tr>
      <td>
          <blockTable colWidths="100.0" style="Table2">
              <tr>
                <td><para style="terp_default_Center_7">Received by</para></td>
              </tr>
              <tr>
                <td>
                      <para style="terp_default_Center_7"><font color="white">t</font></para>
                      <para style="terp_default_Center_7"><font color="white">t</font></para>
                      <para style="terp_default_Center_7"><font color="white">t</font></para>
                      <para style="terp_default_Center_7"><font color="white">t</font></para>
                    <para style="terp_default_Center_7">(............................)</para>
                      <para style="terp_default_Center_7">Customer</para>
                </td>
              </tr>
            </blockTable>
      </td>
      <td>
          <blockTable colWidths="100.0" style="Table2">
              <tr>
                <td><para style="terp_default_Center_7">Delivered by</para></td>
              </tr>
              <tr>
                <td>
                    <para style="terp_default_Center_7"><font color="white">t</font></para>
                      <para style="terp_default_Center_7"><font color="white">t</font></para>
                      <para style="terp_default_Center_7"><font color="white">t</font></para>
                      <para style="terp_default_Center_7"><font color="white">t</font></para>
                    <para style="terp_default_Center_7">(............................)</para>
                      <para style="terp_default_Center_7">Salesman</para>
                </td>
              </tr>
            </blockTable>
      </td>
      <td>
          <blockTable colWidths="100.0" style="Table2">
              <tr>
                <td><para style="terp_default_Center_7">Approved by</para></td>
              </tr>
              <tr>
                <td>
                      <para style="terp_default_Center_7"><font color="white">t</font></para>
                      <para style="terp_default_Center_7"><font color="white">t</font></para>
                      <para style="terp_default_Center_7"><font color="white">t</font></para>
                      <para style="terp_default_Center_7"><font color="white">t</font></para>
                      <para style="terp_default_Center_7">(............................)</para>
                    <para style="terp_default_Center_7">Accounting</para>
                </td>
              </tr>
            </blockTable>
      </td>
    </tr>
    </blockTable>

Sekian pembahasan pembuatan reporting dengan RML di OpenERP, agar teman-teman mudah memahami, sebaiknya langsung dicoba/praktekan saja. Misal untuk membuat report di object Purchase Order. Jika telah selesai, silahkan kirikan modulnya dengan mereply email ini. Thanks …

Advertisements

2 thoughts on “Reporting in OpenERP (RML) -Part 2-

  1. Pingback: Technical Training -Part 11- | Tutorial OpenERP

  2. Pingback: Print Multi Record Dengan 1 Halaman | Tutorial OpenERP

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s