گزارش های پی دی اف
با استودیو می توانید گزارش های PDF موجود (به عنوان مثال، فاکتورها، پیش فاکتورها و غیره) را ویرایش کنید یا گزارش های جدید ایجاد کنید.
پیکربندی طرح سند
طرح پیش فرض گزارش ها در خارج از استودیو مدیریت می شود. به تنظیمات بروید، سپس در بخش شرکت ها، روی پیکربندی طرح سند کلیک کنید. تنظیمات طرح بندی مختص شرکت است اما برای همه گزارش ها اعمال می شود.
از تنظیمات زیر استفاده کنید:
پیکربندی طرح سند: چهار طرح در دسترس است:
Light | Boxed |
Bold | Striped |
فونت: هفت فونت موجود است: Lato، Roboto، Open Sans، Montserrat، Oswald، Raleway و Tajawal (که از متن های فارسی و لاتین پشتیبانی می کند). برای پیش نمایش آنها به وب سایت Google Fonts بروید.
لوگوی شرکت: برای آپلود یا تغییر لوگو روی دکمه ویرایش کلیک کنید. با این کار لوگو به رکورد شرکت در مدل شرکت اضافه می شود که می توانید با رفتن به تنظیمات و سپس کلیک بر روی ذخیره در بخش شرکت ها به آن دسترسی داشته باشید.
رنگ ها: رنگ های اصلی و ثانویه مورد استفاده برای ساختار گزارش ها را تغییر دهید. رنگ های پیش فرض به طور خودکار بر اساس رنگ لوگو تولید می شوند.
پس زمینه طرح: پس زمینه های زیر در دسترس هستند:
- خالی: هیچ چیز نمایش داده نمی شود.
- هندسی: تصویری با اشکال هندسی در پس زمینه نمایش داده می شود.
- سفارشی: یک تصویر پس زمینه سفارشی آپلود کنید.
شعار شرکت: این در سربرگ گزارش های خارجی نمایش داده می شود. می توانید چندین خط نوشتاری اضافه کنید.
جزئیات شرکت: اینها در سرصفحه گزارش های خارجی نمایش داده می شوند. می توانید چندین خط نوشتاری اضافه کنید.
پاورقی: این متن در پاورقی گزارش های خارجی استفاده می شود. می توانید چندین خط نوشتاری اضافه کنید. همچنین می توانید پاورقی را با استفاده از ویرایشگر گزارش ویرایش کنید.
قالب کاغذ: برای تعریف اندازه کاغذ پیش فرض گزارش ها. می توانید صفحه A4 (21 سانتی متر در 29.7 سانتی متر)، US Letter (21.59 سانتی متر در 27.54 سانتی متر) یا صفحه کدهای QR را انتخاب کنید. قالب کاغذ را می توان برای گزارش های سفارشی در قسمت قالب کاغذ در استودیو نیز تعریف کرد.
ایجاد گزارش PDF جدید
برای ایجاد یک گزارش جدید برای یک مدل، به مدل دسترسی پیدا کنید، روی دکمه استودیو کلیک کنید، سپس روی گزارش ها کلیک کنید. روی جدید کلیک کنید و در پنجره باز شده، نوع گزارش را انتخاب کنید. این فقط برای تعیین آنچه در هدر و پاورقی نمایش داده می شود استفاده می شود:
- خارجی
- هدر لوگو، شعار و جزئیات شرکت را نمایش میدهد
- پاورقی مقادیر تنظیم شده در قسمت پاورقی و شماره صفحه را نمایش می دهد.
- داخلی: سربرگ تاریخ و زمان فعلی کاربر، نام شرکت و شماره صفحه را نشان می دهد. پاورقی وجود ندارد.
- خالی: نه سرصفحه وجود دارد و نه پاورقی. برای ویرایش گزارش در گوشه سمت چپ بالای صفحه کلیک کنید.
پس از ایجاد گزارش، میتوانید ویرایش آن را شروع کنید.
ویرایش گزارش PDF
برای دسترسی به گزارش های موجود برای یک مدل، به مدل دسترسی پیدا کنید (به عنوان مثال، سفارشات فروش)، روی دکمه استودیو کلیک کنید، سپس روی گزارش ها کلیک کنید. یک گزارش موجود را برای باز کردن یا ایجاد گزارش جدید انتخاب کنید.
گزینه
هنگامی که گزارشی را انتخاب یا ایجاد کردید، می توانید از گزینه های موجود در قسمت سمت راست صفحه استفاده کنید تا:
- نام گزارش را تغییر دهید. نام جدید در همه جا اعمال می شود (در استودیو، زیر دکمه چاپ و در نام فایل PDF).
- قالب کاغذ را تغییر دهید. اگر هیچ مقداری انتخاب نشده باشد، از قالب تعریف شده در طرح پیش فرض استفاده می شود.
- نمایش در منوی چاپ: برای افزودن گزارش در منوی چاپ رکورد.
- بارگیری مجدد از پیوست: برای ذخیره گزارش به عنوان پیوست در اولین باری که تولید می شود و بارگیری مجدد نسخه اصلی گزارش در هر زمان بعدی. این از نظر قانونی برای فاکتورها الزامی است و عمدتا در این مورد استفاده می شود.
- محدود کردن قابلیت دید به گروه ها: برای محدود کردن در دسترس بودن گزارش PDF به گروه های کاربری خاص.
- ویرایش منابع: برای تغییر گزارش به طور مستقیم در فایل XML.
- بازنشانی گزارش: برای کنار گذاشتن تمام تغییرات ایجاد شده در گزارش و بازنشانی آن به نسخه استاندارد خود.
- پیش نمایش چاپ: برای ایجاد و بارگیری پیش نمایش گزارش.
ویرایشگر گزارش
ویرایشگر گزارش به شما امکان می دهد قالب بندی و محتوای گزارش را تغییر دهید.
بلوک های شرطی
مستطیل های بلوک های شرطی (دستورات if/else) را نشان می دهند. اینها برای نمایش/پنهان کردن محتوا بر اساس شرایط خاص استفاده می شوند. برای مشاهده شرایط روی بلوک کلیک کنید.
مقداری را برای پیش نمایش خروجی مربوطه انتخاب کنید و در صورت لزوم آن را ویرایش کنید.
مطالب دیگر
دو نوع محتوای نوشتاری در گزارش ها وجود دارد:
- متن استاتیک، یعنی متنی که با رنگ آبی برجسته نشده است، که می تواند مستقیما در ویرایشگر تغییر کند.
- متن پویا، یعنی متنی که با رنگ آبی برجسته شده است، که هنگام تولید گزارش با مقادیر فیلد جایگزین می شود، به عنوان مثال، شماره سفارش فروش یا تاریخ سند حسابداری.
می توانید با استفاده از دستورات محتوا (مثلا فیلدها، لیست ها، جداولها، تصاویر، بنرها و غیره) را به گزارش اضافه کنید. علامت / برای باز کردن پاورباکس بفشارید، سپس نام دستور را تایپ کنید یا آن را از لیست انتخاب کنید.
برای افزودن نوشتار ثابت به گزارش، نوشتار را در جایی که می خواهید تایپ کنید.
برای تغییرات پیشرفته تر، می توانید گزارش را مستقیما در XML ویرایش کنید.
افزودن فیلد
برای افزودن فیلد، تایپ کنید / و دستور فیلد را انتخاب کنید. در لیستی که باز می شود، فیلد را انتخاب یا جستجو کنید. روی فلش سمت چپ کنار نام فیلد کلیک کنید تا در صورت نیاز به لیست فیلدهای مرتبط دسترسی پیدا کنید. سپس، مقدار پیش فرض را مشخص کرده و اینتر فشار دهید.
افزودن جدول داده
جداول داده برای نمایش فیلدهای رابطه ای استفاده می شود. برای افزودن جدول داده، تایپ کنید /، دستور Dynamic Table را انتخاب کنید و رابطه ای را که در جدول نمایش داده می شود انتخاب کنید.
پس از اضافه شدن جدول، می توانید با استفاده از ابزارهای جدول ستون ها را اضافه کنید. مکان نما را در بالای ستون قرار دهید، سپس روی مستطیل بنفش کلیک کنید و گزینه ای را انتخاب کنید.
سپس می توانید فیلد مورد نظر خود را در ستون ها وارد کنید. کادر محاوره ای که باز می شود، شیء منبع فیلد (به عنوان مثال، مدل برچسب) و لیست فیلدهای موجود را نشان می دهد.
قالب بندی
برای قالب بندی متن در گزارش، آن را انتخاب کنید، سپس آن را با استفاده از گزینه های موجود در ویرایشگر متن قالب بندی کنید.
ویرایش XML گزارش
برای ویرایش XML گزارش، روی ویرایش منابع در کادر سمت راست کلیک کنید.
نمونه
- اصلاح ساختار جداول
گاهی اوقات، جداول به دلیل ساختارهای پیچیده به درستی تشخیص داده نمی شوند. در این موارد، همچنان می توانید آنها را به صورت دستی در XML گزارش تغییر دهید. به عنوان مثال، با یک سفارش فروش، می توانید ساختار زیر را در XML پیدا کنید (ساده شده برای اهداف مستندسازی):
</table </tbody> </tr> />"line.price"t-out= <td />"line.name"t-out= <td <!-- for each line, we output the name and price as table cells --> >"line"t-as= "record.some_relation_ids"t-foreach= <tr <!-- we create a row for each subrecord with t-foreach --> <tbody> <!-- table body, the main content --> </thead> </tr> </th>Price<th> </th>Name<th> <!-- table header element --> <tr> <!-- table row element --> <thead> <!-- thead = table header, the row with column titles --> <table> <!-- table root element -->
برای تغییر یک جدول، باید اطمینان حاصل کنید که هر ردیف تعداد سلول های داده یکسانی دارد. به عنوان مثال، در مورد بالا، باید یک سلول در بخش سرصفحه (به عنوان مثال، عنوان ستون) و یک سلول دیگر در بخش بدنه با محتوای فیلد (معمولا با یک t-out یا t-field).
<table> <!-- table root element --> <thead> <!-- thead = table header, the row with column titles --> <tr> <!-- table row element --> <th>Name</th> <!-- table header element --> <th>Price</th> <th>Category</th> </tr> </thead> <tbody> <!-- table body, the main content --> <tr t-foreach="record.some_relation_ids" t-as="line"> <!-- we create a row for each subrecord with t-foreach --> <td t-out="line.name"/> <!-- for each line, we output the name and price as table cells --> <td t-out="line.price"/> <td t-out="line.category_id.display_name"/> </tr> </tbody> </table>
به عنوان مثال، می توانید گزارش پیش فاکتور/سفارش فروش را تغییر دهید تا ستونی برای نمایش دسته بندی محصول در جدول اصلی اضافه کنید:
<table class="table table-sm o_main_table table-borderless mt-4"> <!-- In case we want to repeat the header, remove "display: table-row-group" --> <thead style="display: table-row-group"> <tr> <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> [...] <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 name="td_name"><span t-field="line.name">Bacon Burger</span></td> <td t-out="line.product_id.categ_id.display_name"/> <td name="td_quantity" class="text-end"> <span t-field="line.product_uom_qty">3</span> <span t-field="line.product_uom">units</span> <span t-if="line.product_packaging_id">
- افزودن جدول داده
برای افزودن جدول در XML، باید نام فیلدها و اشیایی را که می خواهید به آنها دسترسی داشته باشید و نمایش دهید، بدانید. به عنوان مثال، بیایید جدولی اضافه کنیم که جزئیات برچسب های یک سفارش فروش را نشان می دهد:
<!-- table root element --> <table class="table"> <!-- 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>
- بلوک های شرطی
اگر می خواهید محتوا را بر اساس شرایط خاص نشان دهید/پنهان کنید، می توانید به صورت دستی 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">پروفورما # </span><span t-elif="doc.state in ['draft','sent']">پیش فاکتور # </span><span t-else="">سفارش # </span><span t-field="doc.name">SO0000</span></h2>
عنوان پروفورما بسته به برخی شرایط استفاده می شود. اگر این شرایط برآورده نشود و وضعیت سند یا پیشنویس (draft) یا ارسال شده (sent) باشد، از عنوان پیش فاکتور استفاده می شود. اگر هیچ یک از این شرایط برآورده نشود، عنوان گزارش سفارش است.
- تصاویر
کار با تصاویر در یک گزارش می تواند چالش برانگیز باشد، زیرا کنترل دقیق اندازه و رفتار تصویر همیشه ساده نیست. می توانید فیلدهای تصویر را با استفاده از ویرایشگر گزارش (با استفاده از دستور /فیلد) وارد کنید، اما با استفاده از دستور 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 برچسب; کلاس های بوت استرپ در دسترس هستند.
- alt متن جایگزین تصویر:
- style ویژگی سبک؛ این به شما امکان می دهد سبک ها را آزادانه تر از کلاس های بوت استرپ لغو کنید.
این ویژگی ها باید حاوی رشته هایی باشند، یعنی متنی که در گیومه ها درج شده است، به عنوان مثال،
t-options-width="'64px'"
(یا به طور متناوب، یک عبارت معتبر پایتون).
به عنوان مثال، بیایید یک ستون با تصویر محصول در جدول پیش فاکتور اضافه کنیم:
<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 پیکسل محدود می کند و کلاس های بوت استرپ مورد استفاده در t-options-class یک حاشیه کوچک با گوشه های گرد و یک سایه ایجاد می کنند.