در این آموزش شما یاد خواهید گرفت که چگونه گزارش های QWeb موجود را در یک ماژول سفارشی به ارث ببرید. پس از این آموزش شما می توانید هر گزارش QWeb موجود در Odoo را به ارث برده و تغییر دهید!
در این مثال، گزارش پیشفرض نقل قول/سفارش را از طریق وراثت تغییر میدهم و چند عنصر را از گزارش حذف میکنم.
1. ایجاد یک ماژول جدید:
اولین قدم ایجاد یک ماژول جدید است. رفتار صحیح در اودوو این است که همیشه به ارث ببرید، هرگز فایل های موجود را تغییر ندهید. با ایجاد یک ماژول جدید برای خود شروع کنید.
نکته: از دستور Scaffold از Odoo استفاده کنید!
این یک ماژول جدید از ابتدا ایجاد می کند و ساختار پیش فرض ماژول شما از قبل وجود دارد که به اینکار میگن ارث بری.
2. ایجاد فایل XML شما:
گام بعدی باز کردن فایل XML (در مثال من templates.xml) و ایجاد یک رکورد جدید برای به ارث بردن گزارش است. برای به ارث بردن یک گزارش، باید بدانید که در کدام ماژول قرار دارد و شناسه اصلی XML گزارش چیست. بنابراین، چگونه این را پیدا می کنید؟
سادهترین راه این است که به «تنظیمات» > «گزارشها» > «گزارشها» بروید و گزارشی را که میخواهید تغییر دهید جستجو کنید. در این آموزش، این گزارش نقل قول/سفارش خواهد بود، بنابراین من "سفارش" را جستجو می کنم:
نقل قول / گزارش سفارش(Quotation /Order Report )
حالا که گزارش خود را پیدا کردید روی آن کلیک کنید. این یک نمای جدید را باز می کند که در آن تمام اطلاعات فنی مورد نیاز خود را پیدا خواهید کرد! به عنوان مثال با گزارش نقل قول:
Report Details
در سمت راست یک پیوند قابل کلیک به نام «جستجوی نماهای مرتبط QWeb» را مشاهده خواهید کرد. روی آن کلیک کنید. با این کار فهرستی از تمام رکوردهای مرتبط با این گزارش خاص به شما نشان داده می شود. در مثال گزارش نقل قول :
Qweb XMLView
بنابراین این معمولاً دو رکورد XML را به شما نشان می دهد. چگونه می دانید به کدام یک نیاز دارید؟ موردی که با _document ختم میشود، رکورد XML صحیحی است که باید به ارث برسانید. در زیر ستون "External ID" یک نام منحصر به فرد وجود دارد، در این مثال sale.report_saleorder_document. قسمت اول این متن (فروش) ماژولی است که گزارش از آن است، قسمت دوم (report_saleorder_document) نام گزارشی است که می خواهید به ارث برده و تغییر دهید.
همین است! شما اکنون در گزارش صحیح هستید و آن را به ارث می برید. بنابراین، اکنون چگونه عناصر را اضافه یا حذف می کنید؟ برای انجام این کار به عبارات Xpath برای یافتن، تغییر، جایگزینی یا افزودن عناصر نیاز دارید.
نکته: نمی دانید عبارات Xpath چگونه کار می کنند؟این قسمت رو هم براتون در یک بلاگ جدید ایجاد کرده ام.
برای این مثال، ستون هایی را که مقدار، مالیات و قیمت هر مورد را نشان می دهد حذف می کنم. اولین قدم اصلاح سرفصل جدول است:
پس از اصلاح هدر جدول، محتوای جدول نیز باید اصلاح شود.
این کد عنصر td چهارم، سوم و دوم و تمام محتوای آن را حذف می کند، اما فقط برای tbody با کلاس "sale_tbody" و داخل tr.
بنابراین این جایگزین هدر و محتوای جدول از این گزارش می شود. برای ارث بردن و اصلاح گزارش QWeb خود به کد کامل نگاهی بیندازید:
اگر اکنون گزارش را پرینت میکردید، نتیجه زیر را دریافت میکردید:
Resault modified quotation report
3. افزودن وابستگی برای گزارش QWeb خارجی:
مرحله بعدی و نهایی اضافه کردن یک وابستگی است. از آنجا که این گزارش QWeb داخل ماژول دیگری است اودوو باید در مورد این ماژول و محتوای آن بداند، بنابراین شما باید یک وابستگی اضافه کنید. بدون این ماژول شما کار نخواهد کرد و با خطا مواجه خواهید شد.
فایل __openerp__.py خود را در ماژول سفارشی خود باز کنید و خط با بستگی را پیدا کنید.
اکنون آن «شناسه خارجی» را از گزارش QWeb پس بگیرید و قسمت اول شناسه خارجی (قبل از نقطه) را بردارید. این به شما می گوید که کدام ماژول را باید به عنوان یک وابستگی اضافه کنید:
External ID Qweb Report
در این مثال QWeb من از ماژول فروش می آید، بنابراین من آن را به عنوان یک وابستگی اضافه می کنم.
4. نتیجه گیری :
خودشه! کار شما با به ارث بردن و اصلاح گزارش QWeb تمام شده است. هنگامی که اکنون این ماژول را در اودوو خود نصب می کنید، گزارش اصلاح شده را مشاهده خواهید کرد.
به ارث بردن و اصلاح گزارش های QWeb در اودوو ۱۶ در ویراوب ۱۲۳