Skip to Content
Odoo เมนู
  • ลงชื่อเข้าใช้
  • ทดลองใช้ฟรี
  • แอป
    การเงิน
    • ระบบบัญชี
    • ระบบการออกใบแจ้งหนี้
    • ระบบบัญชีรายจ่าย
    • ระบบการจัดการข้อมูลผ่านสเปรดชีต (BI)
    • เอกสาร
    • ระบบลงลายเซ็น
    การขาย
    • ลูกค้าสัมพันธ์
    • การขาย
    • POS ร้านค้า
    • POS ร้านอาหาร
    • ระบบสมัครสมาชิก
    • การเช่า
    การจัดการเว็บไซต์
    • เครื่องมือสร้างเว็บไซต์
    • ระบบการขายออนไลน์
    • บล็อก
    • ฟอรั่ม
    • ไลฟ์แชท
    • ระบบการอบรมออนไลน์
    ซัพพลายเชน
    • คลังสินค้า
    • ระบบการผลิต
    • PLM
    • ระบบการจัดซื้อ
    • การซ่อมบำรุง
    • ระบบจัดการคุณภาพ
    ทรัพยากรบุคคล
    • ข้อมูลพนักงาน
    • ระบบสรรหาบุคลากร
    • ระบบการลา
    • การประเมิน
    • ระบบการแนะนำพนักงาน
    • ระบบจัดการยานพาหนะ
    การตลาด
    • โซเชียลมาร์เก็ตติ้ง
    • การตลาดผ่านอีเมล
    • ระบบการตลาดผ่าน SMS
    • ระบบการจัดงานอีเวนต์
    • การตลาดแบบอัตโนมัติ
    • ระบบแบบสำรวจ
    การบริการ
    • โปรเจกต์
    • ระบบบันทึกเวลา
    • ระบบการจัดการบริการภาคสนาม
    • ระบบดูแลช่วยเหลือ
    • การวางแผน
    • การนัดหมาย
    ประสิทธิผล
    • ระบบแสดงความคิดเห็น
    • ระบบการอนุมัติ
    • ไอโอที
    • VoIP
    • คลังข้อมูล
    • WhatsApp
    แอปพลิเคชันของบุคคลที่สาม Odoo สตูดิโอ แพลตฟอร์มคลาวด์ของ Odoo
  • อุตสาหกรรม
    การค้าปลีก
    • ร้านขายหนังสือ
    • ร้านขายเสื้อผ้า
    • ร้านขายเฟอร์นิเจอร์
    • ร้านขายของชำ
    • ร้านขายฮาร์ดแวร์
    • ร้านขายของเล่น
    Food & Hospitality
    • บาร์และผับ
    • ร้านอาหาร
    • อาหารฟาสต์ฟู้ด
    • Guest House
    • ตัวแทนจำหน่ายเครื่องดื่ม
    • Hotel
    อสังหาริมทรัพย์
    • Real Estate Agency
    • บริษัทสถาปัตยกรรม
    • บริษัทรับเหมา
    • การจัดการอสังหาริมทรัพย์
    • การจัดสวน
    • สมาคมเจ้าของอสังหาริมทรัพย์
    ปรึกษา
    • สำนักงานบัญชี
    • Odoo พาร์ทเนอร์
    • เอเจนซี่การตลาด
    • สำนักงานกฎหมาย
    • บริการสรรหาบุคลากร
    • การตรวจสอบและการรับรอง
    ระบบการผลิต
    • Textile
    • เหล็ก
    • เฟอร์นิเจอร์
    • อาหาร
    • Brewery
    • ของขวัญขององค์กร
    สุขภาพ & ฟิตเนส
    • ชมรมกีฬา
    • ร้านขายแว่นตา
    • ฟิตเนส
    • ผู้ประกอบวิชาชีพด้านสุขภาพ
    • ร้านขายยา
    • ร้านทำผม
    Trades
    • ช่างซ่อม
    • ฮาร์ดแวร์และการสนับสนุนด้านไอที
    • ระบบพลังงานแสงอาทิตย์
    • ช่างทำรองเท้า
    • บริการทำความสะอาด
    • HVAC Services
    อื่น ๆ
    • Nonprofit Organization
    • สำนักงานสิ่งแวดล้อม
    • ร้านเช่าป้ายโฆษณา
    • การถ่ายภาพ
    • ร้านเช่าจักรยาน
    • ตัวแทนจำหน่ายซอฟต์แวร์
    Browse all Industries
  • คอมมูนิตี้
    ศึกษา
    • บทเรียน
    • เอกสารกำกับโปรแกรม
    • การรับรอง
    • การฝึกอบรม
    • บล็อก
    • พอดแคสต์
    เพิ่มศักยภาพให้กับการศึกษา
    • โปรแกรมการศึกษา
    • Scale Up! Business Game
    • เยี่ยมชม Odoo
    รับซอฟต์แวร์
    • ดาวน์โหลด
    • เปรียบเทียบรุ่น
    • เผยแพร่
    ทำงานร่วมกัน
    • Github
    • ฟอรั่ม
    • ระบบการจัดงานอีเวนต์
    • การแปล
    • ร่วมเป็นพาร์ทเนอร์
    • Services for Partners
    • ลงทะเบียนเพื่อสร้างบัญชีบริษัทของคุณ
    รับบริการ
    • ค้นหาพาร์ทเนอร์
    • ค้นหานักบัญชี
    • พบกับที่ปรึกษา
    • บริการติดตั้งระบบเพื่อใช้งาน
    • ข้อมูลอ้างอิงลูกค้า
    • การสนับสนุน
    • อัปเกรด
    Github Youtube Twitter Linkedin Instagram Facebook Spotify
    +1 (650) 691-3277
    รับการสาธิต
  • ราคา
  • ช่วยเหลือ

Odoo is the world's easiest all-in-one management software.
It includes hundreds of business apps:

  • ลูกค้าสัมพันธ์
  • e-Commerce
  • ระบบบัญชี
  • สินค้าคงคลัง
  • PoS
  • โปรเจกต์
  • MRP
All apps
คุณต้องลงทะเบียนเพื่อโต้ตอบกับคอมมูนิตี้
All Posts คน เหรียญรางวัล
แท็ก (View all)
odoo accounting v14 pos v15
เกี่ยวกับฟอรั่มนี้
คุณต้องลงทะเบียนเพื่อโต้ตอบกับคอมมูนิตี้
All Posts คน เหรียญรางวัล
แท็ก (View all)
odoo accounting v14 pos v15
เกี่ยวกับฟอรั่มนี้
ช่วยเหลือ

Reportlab: Conditional Table Header

ติดตาม

รับการแจ้งเตือนเมื่อมีกิจกรรมในโพสต์นี้

คำถามนี้ถูกตั้งค่าสถานะ
blocktablereportlab
2 ตอบกลับ
10903 มุมมอง
อวตาร
Sergii Kauk

I'm trying to make a conditional table header in reports which shows Discount column only when there is a discount. The condition works fine but I have an issue with formatting. Since blockTable colWidths parameter should correspond to the number of columns, I get an error when one of the columns gets deleted.

So far I came up with this markup as a test case:

<docAssign var='d' expr='0'/>

<section>
  <para>[[repeatIn(o.order_line,'line')]]</para>
  <para>[[ line.discount > 0 or removeParentNode('para') ]] <docExec stmt='d+=1'/></para>
</section>

<docIf cond='d>0'>
  <para style="Standard">There are discounts</para>
  <docElse/>
    <para style="Standard">No discounts</para>
</docIf>

<docPara expr='d' format='The number of discounts is %(__expr__)d' />

However, I don't see any output from docIf condition and docPara. Moreover, examples of conditional format operators from RML User Guide doesn't produce any output either. Does someone have any idea of how to work around that?

Thanks!

1
อวตาร
ละทิ้ง
อวตาร
Ivan
คำตอบที่ดีที่สุด

AFAIK, conditional formatting is not implemented in the OpenERP's RML processing. A way to work around it is to use [[ ]] block, such as:

[[ line.discount > 0 and 'There are discounts' or 'No discounts' ]]

If this is supposed to be based on total discount, then you need to create the function to calculate/check the total discount.

The similar approach goes for the "The number of discounts is XXXX" line:

 <para>
     The number of discounts is [[ getDiscountedLine() and getDiscountedLine() or removeParentNode('para') ]]
</para>

Where getDiscountedLine() method need to be implemented in the python code (the same method can be used for the logic above)

1
อวตาร
ละทิ้ง
อวตาร
Brett Lehrer
คำตอบที่ดีที่สุด

Ivan's answer would be the correct way to approach this particular issue.

However, I recently needed to implement the docIf RML flowable (in OpenERP 7.0) to guarantee that invoices generated would always be an even number of pages so they could be easily printed double-sided.  I figured I'd share the implementation, as there is very little explanation elsewhere on how to do this.

Here's the RML of the bottom of the invoice:

    </pto>
    <docIf cond="doc.page%2==1">
        <pageBreak/>
    </docIf>
    </story>
</document>

To make OpenERP properly parse the docIf flowable, you need to edit the following file:

./odoo/openerp/report/render/rml2pdf/trml2pdf.py

Before line 888 (the else block reporting that the flowable is not implemented), add the following lines:

 elif node.tag == 'docIf':
    return platypus.flowables.DocIf(node.get('cond'), self.render(node))

For reference, the surrounding code in trml2pdf.py should now look something like this (new lines in bold):

elif node.tag == 'frameEnd':
    return EndFrameFlowable()
elif node.tag == 'hr':
    width_hr=node.get('width') or '100%'
    color_hr=node.get('color')  or 'black'
    thickness_hr=node.get('thickness') or 1
    lineCap_hr=node.get('lineCap') or 'round'
    return platypus.flowables.HRFlowable(width=width_hr,color=color.get(color_hr),thickness=float(thickness_hr),lineCap=str(lineCap_hr))
elif node.tag == 'docIf':
    return platypus.flowables.DocIf(node.get('cond'), self.render(node))
else:
    sys.stderr.write('Warning: flowable not yet implemented: %s !\n' % (node.tag,))
    return None

The end result is that you can now utilize RML docIf statements in templates, and in my example, all invoices printed will always be an even number of pages.


0
อวตาร
ละทิ้ง
สนุกกับการพูดคุยนี้ใช่ไหม? เข้าร่วมเลย!

สร้างบัญชีวันนี้เพื่อเพลิดเพลินไปกับฟีเจอร์พิเศษและมีส่วนร่วมกับคอมมูนิตี้ที่ยอดเยี่ยมของเรา!

ลงชื่อ
Related Posts ตอบกลับ มุมมอง กิจกรรม
create pdf and save as
pdf reportlab
อวตาร
0
มี.ค. 15
7651
I get the error: ImportError: No module named _renderPM แก้ไขแล้ว
reportlab cfdi odoo12.0
อวตาร
อวตาร
อวตาร
อวตาร
อวตาร
4
มี.ค. 25
25494
Open ERP 7 report designer string operations แก้ไขแล้ว
reportlab string reports7.0
อวตาร
อวตาร
2
พ.ย. 15
4483
Number formatting in ReportLab ?
formatting number reportlab
อวตาร
อวตาร
1
มี.ค. 15
7587
Display line number in ReportLab ?
line number reportlab
อวตาร
อวตาร
อวตาร
อวตาร
3
มี.ค. 15
9307
คอมมูนิตี้
  • บทเรียน
  • เอกสารกำกับโปรแกรม
  • ฟอรั่ม
โอเพนซอร์ส
  • ดาวน์โหลด
  • Github
  • Runbot
  • การแปล
บริการ
  • โฮสติ้ง odoo.sh เซิร์ฟเวอร์
  • การสนับสนุน
  • อัปเกรด
  • การพัฒนาที่กำหนดเอง
  • การศึกษา
  • ค้นหานักบัญชี
  • ค้นหาพาร์ทเนอร์
  • ร่วมเป็นพาร์ทเนอร์
เกี่ยวกับเรา
  • บริษัทของเรา
  • ทรัพย์สินในรูปของเครื่องหมายการค้า
  • ติดต่อเรา
  • งาน
  • ระบบการจัดงานอีเวนต์
  • พอดแคสต์
  • บล็อก
  • ลูกค้า
  • กฎหมาย • ความเป็นส่วนตัว
  • ความปลอดภัย
الْعَرَبيّة Català 简体中文 繁體中文 (台灣) Čeština Dansk Nederlands English Suomi Français Deutsch हिंदी Bahasa Indonesia Italiano 日本語 한국어 (KR) Lietuvių kalba Język polski Português (BR) română русский язык Slovenský jazyk slovenščina Español (América Latina) Español ภาษาไทย Türkçe українська Tiếng Việt

Odoo เป็นชุดแอปธุรกิจแบบเปิดที่ครอบคลุมทุกความต้องการของบริษัทของคุณ อาธิ CRM eCommerce ระบบบัญชี ระบบสินค้าคงคลัง ระบบการขายหน้าร้าน โปรเจกต์ และ อีกมากมาย

ความเหนือกว่าอันเป็นเอกลักษณ์ของ Odoo คือการใช้งานที่ง่ายดายและผสานการทำงานอย่างสมบูรณ์แบบในเวลาเดียวกัน

Website made with

Odoo Experience on YouTube

1. Use the live chat to ask your questions.
2. The operator answers within a few minutes.

Live support on Youtube
Watch now