گزارشهای PDF¶
با استفاده از استودیو، میتوانید گزارشهای PDF موجود را ویرایش کنید (مانند فاکتورها، پیشفاکتورها و غیره) یا گزارشهای جدید ایجاد کنید.
طرح پیشفرض¶
طرحبندی پیشفرض گزارشها خارج از استودیو مدیریت میشود. به شرکتها در صفحه اصلی، پیکربندی طرح سند را کلیک کنید. تنظیمات طرحبندی مختص شرکت هستند اما برای تمام گزارشها اعمال میشوند.
بروید، سپس، در بخشنکته
میتوانید نحوه تأثیر تنظیمات مختلف بر طرحبندی گزارش را در پیشنمایش سمت چپ پنجره پیکربندی طرحبندی سند مشاهده کنید. هنگام ایجاد یا ویرایش گزارش، میتوانید با کلیک بر روی پیشنمایش چاپ در سمت راست صفحه، پیشنمایشی از گزارش را مشاهده کنید.
از تنظیمات زیر استفاده کنید:
طرحبندی: هفت طرحبندی موجود است:
پسزمینه: پسزمینههای زیر موجود هستند:
خالی: چیزی نمایش داده نمیشود.
لوگوی دمو: یک لوگوی نمایشی در پسزمینه نمایش داده میشود.
سفارشی: یک تصویر پسزمینه سفارشی آپلود کنید.
متن: هشت فونت موجود است: Lato، Roboto، Open Sans، Montserrat، Oswald، Raleway، Tajawal (که از اسکریپتهای عربی و لاتین پشتیبانی میکند) و Fira Mono. برای پیشنمایش آنها به وب سایت فونتهای گوگل بروید.
لوگوی شرکت: برای آپلود یا تغییر لوگو، روی دکمه ویرایش کلیک کنید. این کار لوگو را به رکورد شرکت در مدل شرکت اضافه میکند که میتوانید با رفتن به و سپس کلیک روی بهروزرسانی اطلاعات در بخش شرکتها به آن دسترسی پیدا کنید.
رنگها: رنگهای اصلی و فرعی مورد استفاده برای ساختار گزارشها را تغییر دهید. رنگهای پیشفرض به طور خودکار بر اساس رنگهای لوگو تولید میشوند.
آدرس: نام و آدرس شرکت در سربرگ گزارشهای خارجی نمایش داده میشود. میتوانید چند خط متن اضافه کنید.
شعار: در سربرگ گزارشهای خارجی با استفاده از طرحبندیهای روشن، راهراه، حبابی، موجی و پوشهای و در پابرگ گزارشهای خارجی با استفاده از طرحبندیهای جعبهای و پررنگ نمایش داده میشود. میتوانید چند خط متن اضافه کنید.
فرمت کاغذ: این اندازه کاغذ پیشفرض گزارشها را تعریف میکند. میتوانید A4 (۲۱ سانتیمتر × ۲۹.۷ سانتیمتر) و US Letter (۲۱.۵۹ سانتیمتر × ۲۷.۵۴ سانتیمتر) را انتخاب کنید. این فرمت همچنین میتواند برای گزارشهای فردی در فیلد فرمت کاغذ در استودیو تعریف شود.
توجه
بسته به برنامهها یا ماژولهایی که نصب کردهاید، ممکن است فرمتهای کاغذ دیگری نیز موجود باشند، برای مثال، برگههای برچسب برای برنامه انبار یا نشانهای رویداد برای برنامه رویدادها.
ایجاد گزارشهای PDF جدید¶
برای ایجاد گزارش جدید برای یک مدل، (مثلاً سفارشهای فروش) به مدل دسترسی پیدا کنید، دکمه :icon:`oi-studio` (تغییر وضعیت استودیو) را کلیک کنید، سپس گزارشها را بزنید. جدید را کلیک کنید و در پنجره باز شده نوع گزارش را انتخاب کنید. این فقط برای تعیین آنچه در سربرگ و پابرگ نمایش داده میشود استفاده میشود:
پس از ایجاد گزارش، میتوانید شروع به ویرایش آن کنید.
ویرایش گزارشهای PDF¶
برای دسترسی به گزارشهای موجود برای یک مدل، به مدل دسترسی پیدا کنید، دکمه :icon:`oi-studio` (تغییر وضعیت استودیو) را کلیک کنید، سپس گزارشها را انتخاب کنید. یک گزارش موجود را برای باز کردن آن انتخاب کنید.
همچنین میتوانید استودیو را باز کنید، روی گزارشها کلیک کنید و یک گزارش یا مدل خاص را جستجو کنید.
مهم
اکیداً توصیه میشود گزارش استاندارد را تکثیر کرده و تغییرات را در نسخه تکثیر شده اعمال کنید. برای تکثیر یک گزارش، نشانگر ماوس را روی گوشه بالا و چپ گزارش ببرید، آیکون :icon:`fa-ellipsis-vertical` (سهنقطه عمودی) را کلیک کنید و سپس تکثیر را انتخاب کنید.

گزینهها¶
پس از انتخاب یا ایجاد گزارش، میتوانید از گزینههای موجود در قسمت راست صفحه برای موارد زیر استفاده کنید:
تغییر نام گزارش: نام جدید در همه جا اعمال میشود (در استودیو، در منوی چاپ زیر آیکون :icon:`fa-cog` (چرخدنده) در نمای فرم و در نام فایل PDF).
اصلاح فرمت کاغذ: اگر مقداری انتخاب نشود، فرمت تعریف شده در طرح پیشفرض استفاده میشود.
نمایش در منوی چاپ: برای افزودن گزارش به منوی چاپ در نمای فرم.
بارگیری مجدد از پیوست: برای ذخیره گزارش بهعنوان پیوست روی رکورد در اولین باری که تولید میشود و بارگیری مجدد نسخه اصلی گزارش در دفعات بعدی. این مورد برای فاکتورها الزامی است و عمدتاً در این مورد استفاده میشود.
محدود کردن قابلیت مشاهده به گروهها: برای محدود کردن دسترسی به گزارش PDF به گروههای کاربری مشخص.
ویرایش منابع: برای ویرایش مستقیم گزارش در فایل XML.
بازنشانی گزارش: برای کنار گذاشتن تمام تغییرات اعمال شده روی گزارش و بازنشانی آن به نسخه استاندارد.
پیشنمایش چاپ: برای ایجاد و دانلود پیشنمایش گزارش.
ویرایشگر گزارش¶
ویرایشگر گزارش به شما امکان میدهد محتوا و قالببندی گزارش را اصلاح کنید.
نکته
میتوانید تغییرات را با استفاده از دکمههای مربوطه یا میانبرهای
CTRL
+Z
وCTRL
+Y
بازگردانی یا باز انجام کنید.تغییرات بهطور خودکار هنگام ترک گزارش یا بهصورت دستی با استفاده از دکمه ذخیره، ذخیره میشوند.
میتوانید گزارش را با کلیک روی دکمه بازنشانی گزارش در سمت راست صفحه به نسخه استاندارد بازنشانی کنید.
مهم
ویرایش سربرگ و پابرگ گزارش بر تمام گزارشهای استاندارد و سفارشی تأثیر میگذارد.
بلوکهای شرطی¶
مستطیلهای خطچین نشاندهندهی بلوکهای شرطی (دستورات if/else) هستند. از این بلوکها برای نمایش یا مخفی کردن محتوا بر اساس شرایط خاص استفاده میشود. برای مشاهدهی شرایط، روی بلوک کلیک کنید.

یک مقدار را انتخاب کنید تا خروجی مربوطه را پیشنمایش کرده و در صورت نیاز آن را ویرایش کنید.

توجه
شرایط فقط در XML قابل ویرایش هستند.
سایر محتوا¶
دو نوع محتوای متنی در گزارشها وجود دارد:
متن ایستا، یعنی متنی که با رنگ آبی برجسته نشده است، که میتوان آن را مستقیماً در ویرایشگر اصلاح کرد.
متن پویا، یعنی متنی که با رنگ آبی برجسته شده است، که هنگام تولید گزارش با مقادیر فیلد جایگزین میشود، مثلاً شماره سفارش فروش یا تاریخ پیشفاکتور.
میتوانید با استفاده از دستورات، محتوا (مثلاً فیلدها، لیستها، جداول، تصاویر، بنرها و غیره) را به گزارش اضافه کنید. برای باز کردن جعبهابزار قدرتمند، /
را تایپ کنید، سپس نام دستور را تایپ کرده یا آن را از لیست انتخاب کنید.
برای اضافه کردن متن ثابت به گزارش، متن را در محل مورد نظر تایپ کنید.
برای تغییرات پیشرفتهتر، میتوانید گزارش را مستقیماً در XML ویرایش کنید.
افزودن یک فیلد¶
برای افزودن یک فیلد، /
را تایپ کرده و دستور فیلد را انتخاب کنید. در لیستی که باز میشود، فیلد را انتخاب یا جستجو کنید؛ در صورت نیاز، برای دسترسی به لیست فیلدهای مرتبط، فلش سمت چپ کنار نام فیلد را کلیک کنید. سپس، مقدار پیشفرضی را که در صورت عدم تکمیل فیلد در رکورد نمایش داده میشود، مشخص کرده و اینتر
را فشار دهید.

افزودن یا ویرایش جدول¶
دو نوع جدول در گزارشها وجود دارد:
جداول ایستا، که برای نمایش متن ایستا یا فیلدها استفاده میشوند. برای این نوع جدول، هنگام افزودن جدول، تعداد ستونها و ردیفها را تعریف میکنید.
جداول پویا، که برای نمایش دادهها از فیلدهای رابطهای استفاده میشوند. برای این نوع جدول، فقط تعداد ستونها را هنگام افزودن جدول تعریف میکنید. تعداد ردیفها در گزارش تولید شده توسط تعداد رکوردهای موجود در مدل مرتبط که با مدل فعلی پیوند داده شدهاند، تعیین میشود.
Example
در یک گزارش سفارش فروش، از جدول پویا برای نمایش سطرهای سفارش مربوط به سفارش فروش استفاده میشود. اگر سفارش فروش شامل ۱۰ سطر سفارش باشد، جدول در گزارش تولید شده ۱۰ ردیف خواهد داشت؛ اگر شامل دو سطر سفارش باشد، جدول دو ردیف خواهد داشت.
افزودن یا ویرایش جدول ایستا¶
برای افزودن جدول ایستا، /
را تایپ کرده و دستور جدول را انتخاب کنید. تعداد ستونها و ردیفها را برای جدول تعیین کنید. پس از افزودن جدول، میتوانید شروع به ویرایش آن کنید.
میتوانید با استفاده از ابزارهای جدول، ستونها و ردیفها را درج، جابهجا و حذف کنید. نشانگر را در بالای ستون یا سمت راست ردیف قرار دهید، سپس مستطیل بنفش را کلیک کرده و یک گزینه را انتخاب کنید.

برای تغییر اندازه ستون، مرز ستون را به موقعیت مورد نظر بکشید؛ با انتخاب بازنشانی اندازه از ابزارهای جدول، تمام ستونها را به اندازه استاندارد خود بازنشانی کنید.
در یک سلول، فیلد مورد نظر خود را اضافه کنید یا با تایپ کردن، متن ایستا اضافه کنید.
نکته
برای افزودن متن بهصورت ساختاریافته بدون استفاده از جدول، میتوانید از ستونها استفاده کنید. با تایپ /
و انتخاب دستور مناسب، ستونها را اضافه کنید: ۲ ستون، ۳ ستون یا ۴ ستون.
افزودن یا ویرایش جدول پویا¶
توجه
فقط روابط از نوع
یکبهچند
یاچندبهچند
میتوانند بهعنوان جداول پویا نمایش داده شوند.یک جدول پویای موجود در گزارش استاندارد ساختار پیچیدهتری نسبت به جدول پویایی که خودتان اضافه میکنید دارد. برای چنین جداولی، امکان درج یا حذف ستونها وجود دارد؛ امکان جابجایی ستونها یا درج، جابجایی یا حذف ردیفها وجود ندارد.
برای افزودن جدول پویا، /
را تایپ کرده و دستور جدول پویا را انتخاب کنید. در لیستی که باز میشود، رابطهای را که جدول بر اساس آن خواهد بود انتخاب یا جستجو کرده و اینتر
را فشار دهید. پس از افزودن جدول، میتوانید شروع به ویرایش آن کنید.
میتوانید با استفاده از ابزارهای جدول، ستونها را درج، جابجا و حذف کنید، همانند یک جدول ایستا. همچنین امکان درج ردیفهای ایستا که در بالا یا پایین ردیفهای تولید شده ظاهر میشوند، وجود دارد.
برای افزودن یک فیلد به یک سلول، هرگونه متن نگهدارنده را حذف کرده و سپس فیلد مورد نظر خود را اضافه کنید. کادری که باز میشود، شیء منبع را برای فیلد (مثلاً مدل سطرهای سفارش) و لیست فیلدهای موجود را نشان میدهد.

برچسب نام ستون را با برچسب مورد نظر خود جایگزین کنید.
توجه
ردیف پیشفرض بهطور خودکار روی محتوای فیلد تکرار میشود و برای هر مقدار فیلد یک ردیف در گزارش تولید میکند (مثلاً یک ردیف برای هر سطر سفارش).
فرمتبمئی¶
برای قالببندی متن در گزارش، آن را انتخاب کرده، سپس با استفاده از گزینههای موجود در ویرایشگر متن آن را قالببندی کنید.
ویرایش XML گزارش¶
هشدار
ویرایش مستقیم XML ممکن است باعث ایجاد مشکلاتی در گزارش در حین ارتقاء شود. اگر این اتفاق افتاد، به سادگی تغییرات خود را از پایگاه داده قدیمی به پایگاه داده ارتقا یافته کپی کنید.
برای ویرایش XML گزارش، روی ویرایش منابع در پنل سمت راست کلیک کنید.
مثالها¶
برای تغییر نحوه ارائه دادهها در گزارش خود، میتوانید ویجت پیشفرض یک فیلد را بهصورت دستی اصلاح کنید. در مثال زیر، تاریخ سفارش بهطور پیشفرض تاریخ و زمان را نشان میدهد، در حالی که قیمت واحد بهطور پیشفرض دارای دقت دو رقم اعشار است.
<div class="oe_structure"> <span t-field="doc.date_order"/> <span t-field="doc.price_unit"/> </div>
با استفاده از t-options
، در این مثال گزینه widget
، این فیلدها را میتوان بهگونهای اصلاح کرد که بهترتیب فقط تاریخ و دقتی با چهار رقم اعشار را نشان دهند:
<div class="oe_structure"> <span t-field="doc.date_order" t-options="{'widget': 'date'}"/> <span t-field="doc.price_unit" t-options="{'widget': 'float', 'precision': 4}"/> </div>
اگر میخواهید محتوا را بر اساس شرایط خاصی نمایش/مخفی کنید، میتوانید به صورت دستی دستورات کنترل if/else
را در XML گزارش اضافه کنید.
بهعنوان مثال، اگر میخواهید یک جدول دادههای سفارشی را در صورت عدم وجود برچسب مخفی کنید، میتوانید از ویژگی t-if
برای تعیین شرط استفاده کنید، که سپس به عنوان True
یا False
ارزیابی میشود. اگر در پیشفاکتور برچسب وجود نداشته باشد، جدول نمایش داده نخواهد شد.
<!-- table root element -->
<table class="table" t-if="len(doc.tag_ids) > 0">
<!-- thead = table header, the row with column titles -->
<thead>
<!-- table row element -->
<tr>
<!-- table header element -->
<th>ID</th>
<th>Name</th>
</tr>
</thead>
<!-- table body, the main content -->
<tbody>
<!-- we create a row for each subrecord with t-foreach -->
<tr t-foreach="doc.tag_ids" t-as="tag">
<!-- for each line, we output the name and price as table cells -->
<td t-out="tag.id"/>
<td t-out="tag.name"/>
</tr>
</tbody>
</table>
اگر میخواهید در صورتی که عبارت t-if
به عنوان False
ارزیابی شود، بلوک دیگری نمایش داده شود، میتوانید آن را با استفاده از عبارت t-else
مشخص کنید. بلوک t-else
باید مستقیماً پس از بلوک t-if
در ساختار سند قرار گیرد. نیازی به تعیین شرطی در ویژگی t-else
نیست. بهعنوان مثال، بیایید یک پیام سریع نشان دهیم که توضیح میدهد در پیشفاکتور برچسبی وجود ندارد:
<!-- table root element -->
<table class="table" t-if="len(doc.tag_ids) > 0">
<!-- thead = table header, the row with column titles -->
<thead>
<!-- table row element -->
<tr>
<!-- table header element -->
<th>ID</th>
<th>Name</th>
</tr>
</thead>
<!-- table body, the main content -->
<tbody>
<!-- we create a row for each subrecord with t-foreach -->
<tr t-foreach="doc.tag_ids" t-as="tag">
<!-- for each line, we output the name and price as table cells -->
<td t-out="tag.id"/>
<td t-out="tag.name"/>
</tr>
</tbody>
</table>
<div class="text-muted" t-else="">No tag present on this document.</div>
با استفاده از آیکون t-if/t-else
، ویرایشگر گزارش تشخیص میدهد که این بخشها به صورت متقابل انحصاری هستند و باید به عنوان بلوکهای شرطی نمایش داده شوند:

میتوانید با استفاده از ویرایشگر شرایط را تغییر دهید تا خروجی آنها را پیشنمایش کنید:

اگر میخواهید چند گزینه داشته باشید، میتوانید از دستورات t-elif
برای افزودن شرایط میانی استفاده کنید. بهعنوان مثال، عنوان گزارشهای سفارش فروش بر اساس وضعیت سند پایه تغییر میکند.
<h2 class="mt-4">
<span t-if="env.context.get('proforma', False) or is_pro_forma">Pro-Forma Invoice # </span>
<span t-elif="doc.state in ['draft','sent']">Quotation # </span>
<span t-else="">Order # </span>
<span t-field="doc.name">SO0000</span>
</h2>
عنوان پیشفاکتور بسته به برخی شرایط زمینهای استفاده میشود. اگر این شرایط برآورده نشود و وضعیت سند پیشنویس
یا ارسال شده
باشد، از پیشفاکتور استفاده میشود. اگر هیچیک از این شرایط برآورده نشود، عنوان گزارش سفارش خواهد بود.
کار با تصاویر در یک گزارش میتواند چالشبرانگیز باشد، زیرا کنترل دقیق بر اندازه و رفتار تصویر همیشه واضح نیست. میتوانید فیلدهای تصویر را با استفاده از ویرایشگر گزارش (با استفاده از دستور فیلد) درج کنید، اما درج آنها در XML با استفاده از دستورالعمل t-field
و ویژگیهای t-options
همراه، کنترل بهتری بر اندازه و موقعیتیابی ارائه میدهد.
بهعنوان مثال، کد زیر فیلد image_128
محصول سطر را به شکل یک تصویر 64 پیکسلی (با ارتفاع خودکار بر اساس نسبت ابعاد تصویر) خروجی میدهد.
<span t-field="line.product_id.image_128" t-options-widget="image" t-options-width="64px"/>
گزینههای زیر برای ویجتهای تصویر موجود است:
width
: عرض تصویر، معمولاً بر حسب پیکسل یا واحدهای طول CSS (مانندrem
) (برای عرض خودکار خالی بگذارید).height
: ارتفاع تصویر، معمولاً بر حسب پیکسل یا واحدهای طول CSS (مانندrem
) (برای ارتفاع خودکار خالی بگذارید).class
: کلاسهای CSS اعمال شده روی تگimg
؛ کلاسهای Bootstrap در دسترس هستند.alt
: متن جایگزین تصویرstyle
: ویژگی استایل؛ این امکان را به شما میدهد که استایلها را آزادانهتر از کلاسهای Bootstrap بازنویسی کنید.
این ویژگیها باید شامل رشتههایی باشند، یعنی متنی که درون علامت نقل قول قرار گرفته است، بهعنوان مثال، t-options-width="'64px'"
(یا یک عبارت معتبر پایتون).
توجه
ویجت تصویر را نمیتوان روی تگ img
استفاده کرد. در عوض، دستور t-field
را روی یک گره span
(برای محتوای درونخطی) یا div
(برای محتوای بلوکی) تنظیم کنید.
بهعنوان مثال، بیایید یک ستون با تصویر محصول به جدول پیشفاکتور اضافه کنیم:
<table class="table table-sm o_main_table table-borderless mt-4">
<thead style="display: table-row-group">
<tr>
<th>Image</th>
<th name="th_description" class="text-start">Description</th>
<th>Product Category</th>
<th name="th_quantity" class="text-end">Quantity</th>
<th name="th_priceunit" class="text-end">Unit Price</th>
[...]
<t t-foreach="lines_to_report" t-as="line">
<t t-set="current_subtotal" t-value="current_subtotal + line.price_subtotal"/>
<tr t-att-class="'bg-200 fw-bold o_line_section' if line.display_type == 'line_section' else 'fst-italic o_line_note' if line.display_type == 'line_note' else ''">
<t t-if="not line.display_type">
<td>
<span t-field="line.product_template_id.image_128"
t-options-widget="'image'"
t-options-width="'64px'"
t-options-class="'rounded-3 shadow img-thumbnail'"
/>
</td>
<td name="td_name"><span t-field="line.name">Bacon Burger</span></td>
<td t-out="line.product_id.categ_id.display_name"/>
ویژگی t-options-width
عرض تصویر را به 64 پیکسل محدود میکند و کلاسهای Bootstrap استفاده شده در t-options-class
یک حاشیه شبیه به تصویر کوچک با گوشههای گرد و سایه ایجاد میکنند.
