گزارش‌های PDF

با استودیو، می‌توانید گزارش‌های PDF موجود را ویرایش کنید (مانند فاکتورها، پیشنهادات، و غیره) یا گزارش‌های جدید ایجاد کنید.

طرح پیش‌فرض

چیدمان پیش‌فرض گزارش‌ها خارج از Studio مدیریت می‌شود. به مسیر تنظیمات بروید، سپس در بخش شرکت‌ها در صفحه اصلی، روی پیکربندی چیدمان اسناد کلیک کنید. تنظیمات چیدمان مختص شرکت هستند اما برای تمامی گزارش‌ها اعمال می‌شوند.

نکته

شما می‌توانید ببینید که تنظیمات مختلف چگونه بر طرح‌بندی گزارش تأثیر می‌گذارند، در پیش‌نمایش گزارش در سمت راست پنجره پیکربندی طرح‌بندی سند شما. هنگام ایجاد یا ویرایش یک گزارش، می‌توانید با کلیک بر روی پیش‌نمایش چاپ در سمت چپ صفحه، پیش‌نمایشی از گزارش را مشاهده کنید.

از تنظیمات زیر استفاده کنید:

  • طرح‌بندی: هفت طرح‌بندی موجود است:

    نمونه طرح‌بندی گزارش سبک
  • پس‌زمینه: پس‌زمینه‌های زیر در دسترس هستند:

    • خالی: هیچ چیزی نمایش داده نمی‌شود.

    • لوگوی نمایشی: یک لوگوی نمایشی در پس‌زمینه نمایش داده می‌شود.

    • سفارشی: یک تصویر پس‌زمینه سفارشی بارگذاری کنید.

  • متن: هشت فونت موجود هستند: Lato، Roboto، Open Sans، Montserrat، Oswald، Raleway، Tajawal (که از اسکریپت‌های عربی و لاتین پشتیبانی می‌کند)، و Fira Mono. برای پیش‌نمایش آن‌ها به وب‌سایت فونت‌های گوگل مراجعه کنید.

  • رنگ‌ها: رنگ‌های اصلی و فرعی مورد استفاده برای ساختاردهی گزارش‌ها را تغییر دهید. رنگ‌های پیش‌فرض به‌طور خودکار بر اساس رنگ‌های لوگو تولید می‌شوند.

  • آدرس: نام و آدرس شرکت در سربرگ گزارش‌های خارجی نمایش داده می‌شود. شما می‌توانید چندین خط متن اضافه کنید.

  • شعار: این متن در سربرگ گزارش‌های خارجی با استفاده از طرح‌های سبک، راه‌راه، حبابی، موج و پوشه نمایش داده می‌شود و در پاورقی گزارش‌های خارجی با استفاده از طرح‌های جعبه‌ای و برجسته نمایش داده می‌شود. شما می‌توانید چندین خط متن اضافه کنید.

  • فرمت کاغذ: این گزینه اندازه پیش‌فرض کاغذ گزارش‌ها را تعریف می‌کند. می‌توانید A4 (۲۱ سانتی‌متر × ۲۹.۷ سانتی‌متر) و US Letter (۲۱.۵۹ سانتی‌متر × ۲۷.۵۴ سانتی‌متر) را انتخاب کنید. این گزینه همچنین می‌تواند برای گزارش‌های جداگانه در فیلد فرمت کاغذ در استودیو تعریف شود.

    توجه

    فرمت‌های دیگر کاغذ ممکن است بسته به اینکه کدام برنامه‌ها یا ماژول‌ها را نصب کرده‌اید در دسترس باشند، به عنوان مثال، برگه‌های برچسب برای برنامه انبار یا نشان‌های رویداد برای برنامه رویدادها.

ایجاد گزارش‌های جدید PDF

برای ایجاد یک گزارش جدید برای یک مدل (مثلاً سفارش‌های فروش)، به مدل دسترسی پیدا کنید، روی دکمه (تغییر به استودیو) کلیک کنید، سپس روی گزارش‌ها کلیک کنید. روی جدید کلیک کنید و در پنجره پاپ‌آپی که باز می‌شود، نوع گزارش را انتخاب کنید. این فقط برای تعیین آنچه در سربرگ و پاورقی نمایش داده می‌شود استفاده می‌شود.

پس از ایجاد گزارش، می‌توانید ویرایش آن را شروع کنید.

ویرایش گزارش‌های PDF

برای دسترسی به گزارش‌های موجود برای یک مدل، وارد مدل شوید، روی دکمه (تغییر حالت استودیو) کلیک کنید، سپس روی گزارش‌ها کلیک کنید. یک گزارش موجود را انتخاب کنید تا باز شود.

همچنین می‌توانید استودیو را باز کنید، روی گزارش‌ها کلیک کنید و به دنبال گزارش یا مدل خاصی بگردید.

مهم

توصیه می‌شود که گزارش استاندارد را کپی کرده و تغییرات را در نسخه کپی شده اعمال کنید. برای کپی کردن یک گزارش، نشانگر ماوس را روی گوشه بالا سمت راست گزارش ببرید، روی آیکون (سه نقطه عمودی) کلیک کنید و سپس گزینه کپی کردن را انتخاب کنید.

تکثیر گزارش PDF

گزینه‌ها

پس از انتخاب یا ایجاد گزارش، می‌توانید از گزینه‌های موجود در قسمت چپ صفحه استفاده کنید تا:

  • تغییر نام گزارش: نام جدید در همه جا اعمال می‌شود (در Studio، در منوی چاپ زیر آیکون (چرخ‌دنده) در نمای فرم، و در نام فایل PDF).

  • ویرایش فرمت کاغذ: اگر هیچ مقداری انتخاب نشود، فرمت تعریف‌شده در چیدمان پیش‌فرض استفاده می‌شود.

  • :گزارش را به منوی :گuilabel:`چاپ` در نمای فرم اضافه کنید.

  • بارگذاری مجدد از پیوست: برای ذخیره گزارش به‌عنوان یک پیوست در رکورد در اولین باری که تولید می‌شود و بارگذاری نسخه اصلی گزارش در دفعات بعدی. این مورد به‌صورت قانونی برای فاکتورها الزامی است و عمدتاً در این مورد استفاده می‌شود.

  • محدود کردن دید به گروه‌ها: برای محدود کردن دسترسی به گزارش PDF به گروه‌های کاربری خاص <../general/users/access_rights>.

  • ویرایش منابع: برای ویرایش گزارش به‌طور مستقیم در فایل XML.

  • بازنشانی گزارش: برای لغو تمام تغییرات اعمال‌شده بر گزارش و بازگرداندن آن به نسخه استاندارد.

  • پیش‌نمایش چاپ: برای ایجاد و دانلود پیش‌نمایش گزارش.

ویرایشگر گزارش

ویرایشگر گزارش به شما امکان می‌دهد محتوای گزارش و قالب‌بندی آن را تغییر دهید.

نکته

  • شما می‌توانید تغییرات را با استفاده از دکمه‌های مربوطه یا میانبرهای CTRL + Z و CTRL + Y بازگردانی یا تکرار کنید.

  • تغییرات به‌صورت خودکار هنگام ترک گزارش یا به‌صورت دستی با استفاده از دکمه ذخیره ذخیره می‌شوند.

  • شما می‌توانید گزارش را به نسخه استاندارد آن بازنشانی کنید با کلیک بر روی دکمه بازنشانی گزارش در بخش سمت چپ صفحه.

مهم

ویرایش سربرگ و پابرگ یک گزارش بر تمامی گزارش‌های استاندارد و سفارشی تأثیر می‌گذارد.

بلوک‌های شرطی

مستطیل‌های خط‌چین نشان‌دهنده بلوک‌های شرطی (دستورات if/else) هستند. این بلوک‌ها برای نمایش/پنهان کردن محتوا بر اساس شرایط خاص استفاده می‌شوند. برای مشاهده شرایط، روی بلوک کلیک کنید.

مشاهده شرایط اعمال‌شده به یک بلوک.

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

پیش‌نمایش خروجی یک شرط دیگر.

توجه

شرایط فقط می‌توانند در XML ویرایش شوند.

سایر محتوا

دو نوع محتوای متنی در گزارش‌ها وجود دارد:

  • متن ثابت، یعنی متنی که با رنگ آبی مشخص نشده و می‌توان آن را مستقیماً در ویرایشگر تغییر داد.

  • متن پویا، یعنی متنی که با رنگ آبی برجسته شده است و هنگام تولید گزارش با مقادیر فیلد جایگزین می‌شود، مانند شماره سفارش فروش یا تاریخ پیش‌فاکتور.

شما می‌توانید با استفاده از دستورات، محتوا (مانند فیلدها، لیست‌ها، جداول، تصاویر، بنرها و غیره) را به گزارش اضافه کنید. کلید / را فشار دهید تا powerbox باز شود، سپس نام دستور را تایپ کنید یا آن را از لیست انتخاب کنید.

برای افزودن متن ثابت به گزارش، متن را در جایی که می‌خواهید تایپ کنید.

برای تغییرات پیشرفته‌تر، می‌توانید گزارش را مستقیماً در XML ویرایش کنید.

افزودن یک فیلد

برای افزودن یک فیلد، علامت / را تایپ کنید و دستور Field را انتخاب کنید. در لیستی که باز می‌شود، فیلد مورد نظر را انتخاب یا جستجو کنید؛ اگر نیاز باشد، روی فلش سمت راست کنار نام فیلد کلیک کنید تا به لیست فیلدهای مرتبط دسترسی پیدا کنید. سپس مقدار پیش‌فرضی را مشخص کنید که در صورت تکمیل نشدن فیلد در رکورد نمایش داده شود و کلید Enter را فشار دهید.

یک فیلد مرتبط را انتخاب کنید.
افزودن یا ویرایش جدول

دو نوع جدول در گزارش‌ها وجود دارد:

  • جداول ثابت که برای نمایش متن یا فیلدهای ثابت استفاده می‌شوند. برای این نوع جدول، تعداد ستون‌ها و ردیف‌ها را هنگام افزودن جدول تعریف می‌کنید.

  • جداول پویا که برای نمایش داده‌ها از فیلدهای رابطه‌ای استفاده می‌شوند. برای این نوع جدول، شما فقط تعداد ستون‌ها را هنگام افزودن جدول تعریف می‌کنید. تعداد ردیف‌ها در گزارش تولید شده بر اساس تعداد رکوردهای موجود در مدل مرتبط که با مدل فعلی لینک شده‌اند تعیین می‌شود.

    Example

    در گزارش سفارش فروش، یک جدول پویا برای نمایش خطوط سفارش مرتبط با سفارش فروش استفاده می‌شود. اگر سفارش فروش شامل ۱۰ خط سفارش باشد، جدول در گزارش تولید شده ۱۰ ردیف دارد؛ اگر شامل دو خط سفارش باشد، جدول دو ردیف خواهد داشت.

افزودن یا ویرایش یک جدول ثابت

برای افزودن یک جدول ثابت، علامت / را تایپ کنید و دستور Table را انتخاب کنید. تعداد ستون‌ها و ردیف‌های جدول را تعیین کنید. پس از افزودن جدول، می‌توانید ویرایش آن را آغاز کنید.

شما می‌توانید ستون‌ها و ردیف‌ها را با استفاده از ابزارهای جدول وارد کنید، جابجا کنید و حذف کنید. نشانگر را بالای ستون یا سمت چپ ردیف قرار دهید، سپس روی مستطیل بنفش کلیک کرده و گزینه‌ای را انتخاب کنید.

فهرست گزینه‌های موجود برای ویرایش ساختار جدول.

برای تغییر اندازه یک ستون، مرز ستون را به موقعیت دلخواه بکشید؛ برای بازنشانی تمام ستون‌ها به اندازه استانداردشان، گزینه بازنشانی اندازه را از ابزارهای جدول انتخاب کنید.

در یک سلول، فیلد مورد نظر خود را اضافه کنید یا متن ثابت را با تایپ کردن اضافه کنید.

نکته

برای افزودن متن به صورت ساختاریافته بدون استفاده از جدول، می‌توانید از ستون‌ها استفاده کنید. ستون‌ها را با تایپ کردن / و انتخاب دستور مناسب اضافه کنید: 2 ستون، 3 ستون یا 4 ستون.

افزودن یا ویرایش جدول پویا

توجه

  • تنها روابط از نوع one2many یا many2many می‌توانند به صورت جداول پویا نمایش داده شوند.

  • یک جدول پویا موجود در یک گزارش استاندارد دارای ساختاری پیچیده‌تر از جدولی است که خودتان اضافه می‌کنید. برای چنین جداولی، امکان درج یا حذف ستون‌ها وجود دارد؛ اما امکان جابجایی ستون‌ها یا درج، جابجایی یا حذف ردیف‌ها وجود ندارد.

برای افزودن یک جدول پویا، / را تایپ کرده و دستور جدول پویا را انتخاب کنید. در لیستی که باز می‌شود، رابطه‌ای که جدول بر اساس آن خواهد بود را انتخاب یا جستجو کرده و Enter را فشار دهید. پس از افزودن جدول، می‌توانید ویرایش آن را آغاز کنید.

شما می‌توانید با استفاده از ابزارهای جدول، ستون‌ها را وارد کنید، جابجا کنید و حذف کنید، همانطور که برای یک جدول ثابت انجام می‌شود. همچنین امکان وارد کردن ردیف‌های ثابت وجود دارد که بالاتر یا پایین‌تر از ردیف‌های تولید شده نمایش داده می‌شوند.

برای افزودن یک فیلد به یک سلول، هر متن جایگزین را حذف کنید و سپس فیلد مورد نظر خود را اضافه کنید. کادر محاوره‌ای که باز می‌شود، شیء منبع فیلد (برای مثال، مدل خطوط سفارش) و لیست فیلدهای موجود را نشان می‌دهد.

فهرست فیلدهای موجود برای مدل خطوط سفارش فروش.

برچسب نام ستون را با برچسب دلخواه خود جایگزین کنید.

توجه

ردیف پیش‌فرض به‌طور خودکار بر محتوای فیلد تکرار می‌شود و برای هر مقدار فیلد یک ردیف در گزارش ایجاد می‌کند (مثلاً یک ردیف برای هر خط سفارش).

قالب‌بندی

برای قالب‌بندی متن در گزارش، آن را انتخاب کرده و سپس با استفاده از گزینه‌های موجود در ویرایشگر متن قالب‌بندی کنید.

قالب‌بندی متن با استفاده از ویرایشگر متن.

ویرایش 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"/>

گزینه‌های زیر برای ویجت‌های تصویر در دسترس هستند:

  • عرض: عرض تصویر، معمولاً به پیکسل یا واحدهای طول CSS (مانند rem) (برای عرض خودکار خالی بگذارید).

  • ارتفاع: ارتفاع تصویر، معمولاً بر حسب پیکسل یا واحدهای طول CSS (مانند rem) (برای ارتفاع خودکار خالی بگذارید).

  • class: کلاس‌های CSS که بر روی تگ img اعمال می‌شوند؛ کلاس‌های Bootstrap در دسترس هستند.

  • alt: متن جایگزین تصویر

  • style: ویژگی 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 عرض تصویر را به ۶۴ پیکسل محدود می‌کند و کلاس‌های Bootstrap استفاده‌شده در t-options-class یک حاشیه شبیه به تصویر بندانگشتی با گوشه‌های گرد و سایه ایجاد می‌کنند.

اضافه کردن یک ستون با تصویر محصول در جدول پیش‌فاکتور.