improved Lunch Order
authorapa-tiny <apa@tinyerp.com>
Fri, 15 Oct 2010 09:44:13 +0000 (15:14 +0530)
committerapa-tiny <apa@tinyerp.com>
Fri, 15 Oct 2010 09:44:13 +0000 (15:14 +0530)
bzr revid: apa@tinyerp.com-20101015094413-3eblkjmbx82100aw

addons/lunch/report/order.py
addons/lunch/report/order.rml

index 838ab10..29c9d38 100644 (file)
@@ -26,18 +26,38 @@ from osv import osv
 
 class order(report_sxw.rml_parse):
 
-    def sum_price(self, orders):
-        res = 0.0
-        for o in orders:
-            res += o.price
-        return res
+    def get_lines(self, user,objects):
+        lines=[]
+        for obj in objects:
+            if user.id==obj.user_id.id:
+                lines.append(obj)
+        return lines
+
+    def get_total(self, user,objects):
+        lines=[]
+        for obj in objects:
+            if user.id==obj.user_id.id:
+                lines.append(obj)
+        total=0.0
+        for line in lines:
+            total+=line.price
+        return total
+
+    def get_users(self, objects):
+        users=[]
+        for obj in objects:
+            if obj.user_id not in users:
+                users.append(obj.user_id)
+        return users
 
     def __init__(self, cr, uid, name, context):
         super(order, self).__init__(cr, uid, name, context)
 
         self.localcontext.update({
             'time': time,
-            'sum_price': self.sum_price,
+            'get_lines': self.get_lines,
+            'get_users': self.get_users,
+            'get_total': self.get_total,
         })
 
 report_sxw.report_sxw('report.lunch.order', 'lunch.order',
index 6200347..7a6dca6 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0"?>
-<document filename="test.pdf">
-  <template pageSize="(595.0,842.0)" title="Lunch Order" author="OpenERP S.A. (sales@openerp.com)" allowSplitting="20">
+<document filename="Lunch Order.pdf">
+  <template pageSize="(595.0,842.0)" title="Lunch Order" author="OpenERP S.A.(sales@openerp.com)" allowSplitting="20">
     <pageTemplate id="first">
       <frame id="first" x1="34.0" y1="42.0" width="527" height="758"/>
     </pageTemplate>
       <blockAlignment value="LEFT"/>
       <blockValign value="TOP"/>
     </blockTableStyle>
-    <blockTableStyle id="Table5">
+    <blockTableStyle id="Table1">
       <blockAlignment value="LEFT"/>
       <blockValign value="TOP"/>
-      <lineStyle kind="LINEBEFORE" colorName="#ffffff" start="0,0" stop="0,-1"/>
-      <lineStyle kind="LINEABOVE" colorName="#ffffff" start="0,0" stop="0,0"/>
-      <lineStyle kind="LINEBELOW" colorName="#ffffff" start="0,-1" stop="0,-1"/>
-      <lineStyle kind="LINEBEFORE" colorName="#ffffff" start="1,0" stop="1,-1"/>
-      <lineStyle kind="LINEABOVE" colorName="#ffffff" start="1,0" stop="1,0"/>
-      <lineStyle kind="LINEBELOW" colorName="#ffffff" start="1,-1" stop="1,-1"/>
-      <lineStyle kind="LINEBEFORE" colorName="#ffffff" start="2,0" stop="2,-1"/>
-      <lineStyle kind="LINEAFTER" colorName="#ffffff" start="2,0" stop="2,-1"/>
-      <lineStyle kind="LINEABOVE" colorName="#ffffff" start="2,0" stop="2,0"/>
-      <lineStyle kind="LINEBELOW" colorName="#ffffff" start="2,-1" stop="2,-1"/>
     </blockTableStyle>
-    <blockTableStyle id="Table4">
+    <blockTableStyle id="Table2">
       <blockAlignment value="LEFT"/>
       <blockValign value="TOP"/>
-      <lineStyle kind="LINEBEFORE" colorName="#ffffff" start="0,0" stop="0,-1"/>
-      <lineStyle kind="LINEAFTER" colorName="#ffffff" start="0,0" stop="0,-1"/>
-      <lineStyle kind="LINEABOVE" colorName="#ffffff" start="0,0" stop="0,0"/>
-      <lineStyle kind="LINEBELOW" colorName="#ffffff" start="0,-1" stop="0,-1"/>
+      <lineStyle kind="LINEBELOW" colorName="#000000" start="0,-1" stop="0,-1"/>
+      <lineStyle kind="LINEBELOW" colorName="#000000" start="1,-1" stop="1,-1"/>
+      <lineStyle kind="LINEBELOW" colorName="#000000" start="2,-1" stop="2,-1"/>
+      <lineStyle kind="LINEBELOW" colorName="#000000" start="3,-1" stop="3,-1"/>
+      <lineStyle kind="LINEBELOW" colorName="#000000" start="4,-1" stop="4,-1"/>
     </blockTableStyle>
     <blockTableStyle id="Table3">
       <blockAlignment value="LEFT"/>
       <blockValign value="TOP"/>
-      <lineStyle kind="LINEBEFORE" colorName="#cccccc" start="0,0" stop="0,-1"/>
-      <lineStyle kind="LINEABOVE" colorName="#cccccc" start="0,0" stop="0,0"/>
-      <lineStyle kind="LINEBELOW" colorName="#cccccc" start="0,-1" stop="0,-1"/>
-      <lineStyle kind="LINEBEFORE" colorName="#cccccc" start="1,0" stop="1,-1"/>
-      <lineStyle kind="LINEABOVE" colorName="#cccccc" start="1,0" stop="1,0"/>
-      <lineStyle kind="LINEBELOW" colorName="#cccccc" start="1,-1" stop="1,-1"/>
-      <lineStyle kind="LINEBEFORE" colorName="#cccccc" start="2,0" stop="2,-1"/>
-      <lineStyle kind="LINEABOVE" colorName="#cccccc" start="2,0" stop="2,0"/>
-      <lineStyle kind="LINEBELOW" colorName="#cccccc" start="2,-1" stop="2,-1"/>
-      <lineStyle kind="LINEBEFORE" colorName="#cccccc" start="3,0" stop="3,-1"/>
-      <lineStyle kind="LINEAFTER" colorName="#cccccc" start="3,0" stop="3,-1"/>
-      <lineStyle kind="LINEABOVE" colorName="#cccccc" start="3,0" stop="3,0"/>
-      <lineStyle kind="LINEBELOW" colorName="#cccccc" start="3,-1" stop="3,-1"/>
-    </blockTableStyle>
-    <blockTableStyle id="Table1">
-      <blockAlignment value="LEFT"/>
-      <blockValign value="TOP"/>
-      <lineStyle kind="LINEBEFORE" colorName="#b3b3b3" start="0,0" stop="0,-1"/>
-      <lineStyle kind="LINEABOVE" colorName="#b3b3b3" start="0,0" stop="0,0"/>
-      <lineStyle kind="LINEBELOW" colorName="#b3b3b3" start="0,-1" stop="0,-1"/>
-      <lineStyle kind="LINEBEFORE" colorName="#b3b3b3" start="1,0" stop="1,-1"/>
-      <lineStyle kind="LINEABOVE" colorName="#b3b3b3" start="1,0" stop="1,0"/>
-      <lineStyle kind="LINEBELOW" colorName="#b3b3b3" start="1,-1" stop="1,-1"/>
-      <lineStyle kind="LINEBEFORE" colorName="#cccccc" start="2,0" stop="2,-1"/>
-      <lineStyle kind="LINEABOVE" colorName="#cccccc" start="2,0" stop="2,0"/>
-      <lineStyle kind="LINEBELOW" colorName="#cccccc" start="2,-1" stop="2,-1"/>
-      <lineStyle kind="LINEBEFORE" colorName="#cccccc" start="3,0" stop="3,-1"/>
-      <lineStyle kind="LINEAFTER" colorName="#cccccc" start="3,0" stop="3,-1"/>
-      <lineStyle kind="LINEABOVE" colorName="#cccccc" start="3,0" stop="3,0"/>
-      <lineStyle kind="LINEBELOW" colorName="#cccccc" start="3,-1" stop="3,-1"/>
+      <lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="0,-1" stop="0,-1"/>
+      <lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="1,-1" stop="1,-1"/>
+      <lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="2,-1" stop="2,-1"/>
+      <lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="3,-1" stop="3,-1"/>
+      <lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="4,-1" stop="4,-1"/>
     </blockTableStyle>
-    <blockTableStyle id="Table2">
+    <blockTableStyle id="Table4">
       <blockAlignment value="LEFT"/>
       <blockValign value="TOP"/>
-      <lineStyle kind="LINEBELOW" colorName="#ffffff" start="0,-1" stop="0,-1"/>
-      <lineStyle kind="LINEBEFORE" colorName="#ffffff" start="1,0" stop="1,-1"/>
-      <lineStyle kind="LINEBELOW" colorName="#ffffff" start="1,-1" stop="1,-1"/>
+      <lineStyle kind="LINEABOVE" colorName="#000000" start="1,0" stop="1,0"/>
       <lineStyle kind="LINEABOVE" colorName="#000000" start="2,0" stop="2,0"/>
-      <lineStyle kind="LINEABOVE" colorName="#000000" start="3,0" stop="3,0"/>
     </blockTableStyle>
     <initialize>
       <paraStyle name="all" alignment="justify"/>
     </initialize>
-    <paraStyle name="P1" fontName="Helvetica-BoldOblique" fontSize="9.0" leading="11" alignment="LEFT"/>
-    <paraStyle name="P2" fontName="Helvetica-BoldOblique" fontSize="9.0" leading="11"/>
-    <paraStyle name="P3" fontName="Helvetica-Bold" fontSize="9.0" leading="11" alignment="CENTER"/>
-    <paraStyle name="P4" fontName="Helvetica-Bold" fontSize="9.0" leading="11" alignment="RIGHT"/>
-    <paraStyle name="P5" fontName="Helvetica" fontSize="8.0" leading="10" alignment="LEFT"/>
-    <paraStyle name="P6" fontName="Helvetica" fontSize="8.0" leading="10" alignment="RIGHT"/>
-    <paraStyle name="P7" fontName="Helvetica" fontSize="8.0" leading="10" alignment="CENTER"/>
-    <paraStyle name="P8" fontName="Helvetica" fontSize="9.0" leading="11"/>
-    <paraStyle name="P9" fontName="Helvetica" fontSize="9.0" leading="11" alignment="LEFT"/>
-    <paraStyle name="P10" fontName="Helvetica-Bold" fontSize="9.0" leading="11" alignment="LEFT"/>
-    <paraStyle name="P11" fontName="Helvetica-Bold" fontSize="14.0" leading="17" alignment="CENTER"/>
-    <paraStyle name="P12" fontName="Helvetica" fontSize="8.0" leading="10" alignment="CENTER"/>
-    <paraStyle name="P13" fontName="Helvetica" fontSize="8.0" leading="10" alignment="RIGHT"/>
-    <paraStyle name="P14" fontName="Helvetica" fontSize="8.0" leading="10" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
-    <paraStyle name="P15" fontName="Helvetica" fontSize="9.0" leading="11" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
     <paraStyle name="Standard" fontName="Helvetica"/>
     <paraStyle name="Text body" fontName="Helvetica" spaceBefore="0.0" spaceAfter="6.0"/>
     <paraStyle name="Heading" fontName="Helvetica" fontSize="14.0" leading="17" spaceBefore="12.0" spaceAfter="6.0"/>
     <paraStyle name="terp_header" fontName="Helvetica-Bold" fontSize="15.0" leading="19" alignment="LEFT" spaceBefore="12.0" spaceAfter="6.0"/>
     <paraStyle name="terp_default_8" fontName="Helvetica" fontSize="8.0" leading="10" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
     <paraStyle name="terp_default_9" fontName="Helvetica" fontSize="9.0" leading="11" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
+    <paraStyle name="terp_tbl_detail_header" fontName="Helvetica-Bold" fontSize="9.0" leading="11" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
+    <paraStyle name="terp_tbl_detail_header_right" fontName="Helvetica-Bold" fontSize="9.0" leading="11" alignment="RIGHT" spaceBefore="0.0" spaceAfter="0.0"/>
+    <paraStyle name="terp_tbl_detail_header_center" fontName="Helvetica-Bold" fontSize="9.0" leading="11" alignment="CENTER" spaceBefore="0.0" spaceAfter="0.0"/>
+    <paraStyle name="terp_default_9_right" fontName="Helvetica" fontSize="9.0" leading="11" alignment="RIGHT" spaceBefore="0.0" spaceAfter="0.0"/>
+    <paraStyle name="terp_default_9_right_bold" fontName="Helvetica-Bold" fontSize="9.0" leading="11" alignment="RIGHT" spaceBefore="0.0" spaceAfter="0.0"/>
+    <paraStyle name="terp_header_center" fontName="Helvetica-Bold" fontSize="15.0" leading="19" alignment="CENTER" spaceBefore="0.0" spaceAfter="0.0"/>
+    <paraStyle name="terp_default_9_center" fontName="Helvetica" fontSize="9.0" leading="11" alignment="CENTER" spaceBefore="0.0" spaceAfter="0.0"/>
     <images/>
   </stylesheet>
   <story>
-    <para style="P15">[[repeatIn(objects,'o')]]</para>
+    <para style="terp_default_8">[[repeatIn(get_users(objects),'o')]]</para>
+    <blockTable colWidths="293.0,235.0" style="Table1">
+      <tr>
+        <td>
+          <para style="terp_default_8">
+            <font color="white"> </font>
+          </para>
+        </td>
+        <td>
+          <para style="terp_default_8">[[ (o.address_id and o.address_id.partner_id and o.address_id.partner_id.title and o.address_id.partner_id.title.name) or '' ]] [[ (o.address_id and o.address_id.partner_id and o.address_id.partner_id.name) or '' ]]</para>
+          <para style="terp_default_8">[[ (o.address_id and o.address_id.street) or '' ]]</para>
+          <para style="terp_default_8">[[ (o.address_id and o.address_id.street2) or removeParentNode('para') ]]</para>
+          <para style="terp_default_8">[[ (o.address_id and o.address_id.zip) or '' ]] [[ (o.address_id and o.user_id.address_id.city) or '' ]]</para>
+          <para style="terp_default_8">[[ (o.address_id and o.address_id.state_id and o.address_id.state_id.name) or removeParentNode('para')]]</para>
+          <para style="terp_default_8">[[ (o.address_id and o.address_id.country_id and o.address_id.country_id.name) or '' ]]</para>
+        </td>
+      </tr>
+    </blockTable>
+    <para style="terp_header">Lunch Order</para>
+    <blockTable colWidths="80.0,70.0,141.0,172.0,65.0" style="Table2">
+      <tr>
+        <td>
+          <para style="terp_tbl_detail_header">Name</para>
+        </td>
+        <td>
+          <para style="terp_tbl_detail_header_center">Date</para>
+        </td>
+        <td>
+          <para style="terp_tbl_detail_header">Order</para>
+        </td>
+        <td>
+          <para style="terp_tbl_detail_header">Description</para>
+        </td>
+        <td>
+          <para style="terp_tbl_detail_header_right">Unit Price</para>
+        </td>
+      </tr>
+    </blockTable>
     <section>
-      <para style="P15">
-        <font color="white"> </font>
-      </para>
-      <blockTable colWidths="262.0,6.0,260.0" style="Table5">
+      <para style="terp_default_8">[[ repeatIn(get_lines(o,objects),'lines') ]]</para>
+      <blockTable colWidths="80.0,70.0,141.0,172.0,64.0" style="Table3">
         <tr>
           <td>
-            <para style="P15">
-              <font color="white"> </font>
-            </para>
+            <para style="terp_default_9">[[ (lines.user_id and lines.user_id.name) or '']]</para>
           </td>
           <td>
-            <para style="P9">
-              <font color="white"> </font>
-            </para>
+            <para style="terp_default_9_center">[[ formatLang(lines.date,date='True') ]]</para>
           </td>
           <td>
-            <para style="P14">[[ o.user_id.address_id.partner_id.title.name or '' ]] [[ o.user_id.address_id.partner_id.name ]]</para>
-            <para style="P14">[[ o.user_id.address_id.street ]]</para>
-            <para style="P14">[[ o.user_id.address_id.street2 or removeParentNode('para') ]]</para>
-            <para style="P14">[[ o.user_id.address_id.zip or '' ]] [[ o.user_id.address_id.city or '' ]]</para>
-            <para style="P14">[[ (o.user_id.address_id.state_id and o.user_id.address_id.state_id.name) or removeParentNode('para')]] [[ (o.user_id.address_id.country_id and o.user_id.address_id.country_id.name) or '' ]]</para>
-            <para style="P14">
-              <font color="white"> </font>
-            </para>
+            <para style="terp_default_9">[[ (lines.product and lines.product.name) or '' ]]</para>
           </td>
-        </tr>
-      </blockTable>
-      <para style="P1">
-        <font color="white"> </font>
-      </para>
-      <para style="P1">
-        <font color="white"> </font>
-      </para>
-      <blockTable colWidths="527.0" style="Table4">
-        <tr>
           <td>
-            <para style="P11">Lunch Order</para>
+            <para style="terp_default_9">[[ lines.descript]]</para>
           </td>
-        </tr>
-      </blockTable>
-      <para style="P1">
-        <font color="white"> </font>
-      </para>
-      <para style="P1">
-        <font color="white"> </font>
-      </para>
-      <blockTable colWidths="132.0,153.0,141.0,101.0" style="Table3">
-        <tr>
           <td>
-            <para style="P10">Name</para>
-          </td>
-          <td>
-            <para style="P3">Order</para>
-          </td>
-          <td>
-            <para style="P3">Description</para>
-          </td>
-          <td>
-            <para style="P4">Unit Price</para>
+            <para style="terp_default_9_right">[[ lines.price ]] [[ (o.company_id and o.company_id.currency_id and o.company_id.currency_id.symbol) or '' ]]</para>
           </td>
         </tr>
       </blockTable>
     </section>
-    <blockTable colWidths="132.0,153.0,142.0,101.0" style="Table1">
+    <blockTable colWidths="409.0,55.0,64.0" style="Table4">
       <tr>
         <td>
-          <para style="P5">[[ o.user_id.name ]]</para>
-        </td>
-        <td>
-          <para style="P7">[[o.product.name ]]</para>
-        </td>
-        <td>
-          <para style="P12">[[ o.descript ]]</para>
-        </td>
-        <td>
-          <para style="P6">[[formatLang(o.price) ]] [[company.currency_id.symbol]]</para>
-        </td>
-      </tr>
-    </blockTable>
-    <blockTable colWidths="132.0,153.0,142.0,101.0" style="Table2">
-      <tr>
-        <td>
-          <para style="P8">
-            <font color="white"> </font>
-          </para>
-        </td>
-        <td>
-          <para style="P8">
+          <para style="terp_default_8">
             <font color="white"> </font>
           </para>
         </td>
         <td>
-          <para style="P3">Total:</para>
+          <para style="terp_tbl_detail_header">Total:</para>
         </td>
         <td>
-          <para style="P13">[[ formatLang(sum_price(objects)) ]] <font face="Helvetica">[[company.currency_id.symbol]]</font></para>
+          <para style="terp_default_9_right_bold">[[ formatLang(get_total(o,objects)) ]] [[ (o.company_id and o.company_id.currency_id and o.company_id.currency_id.symbol) or '' ]]</para>
         </td>
       </tr>
     </blockTable>
-    <para style="P2">
+    <para style="terp_default_8">
       <font color="white"> </font>
     </para>
   </story>