گزارش‌های سفارشی

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

مهم

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

برای ایجاد یک گزارش جدید، به حسابداری ‣ پیکربندی ‣ مدیریت: گزارش‌های حسابداری بروید. از اینجا، می‌توانید یک گزارش ریشه‌ای یا یک متغیر ایجاد کنید.

موتور گزارش‌های حسابداری.

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

گزارش‌های ریشه‌ای می‌توانند به‌عنوان گزارش‌های حسابداری عمومی و بی‌طرف در نظر گرفته شوند. آن‌ها به‌عنوان مدل‌هایی عمل می‌کنند که نسخه‌های محلی حسابداری بر اساس آن‌ها ساخته می‌شوند. اگر گزارشی گزارش ریشه‌ای نداشته باشد، به‌عنوان یک گزارش ریشه‌ای در نظر گرفته می‌شود.

مثال

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

هنگام ایجاد یک گزارش ریشه‌ای جدید، باید یک آیتم منو برای آن ایجاد کنید. برای انجام این کار، گزارش را باز کنید و سپس در همان گزارش روی عملیات ‣ ایجاد آیتم منو کلیک کنید. صفحه را تازه کنید؛ اکنون گزارش در حسابداری ‣ گزارش‌دهی در دسترس است.

توجه

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

دکمه ایجاد آیتم منو.

نسخه‌های متغیر

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

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

مثال

در تصویر زیر، گزارش مالیات بر ارزش افزوده (BE) نسخه متغیری از گزارش مالیات عمومی است.

انتخاب نسخه گزارش.

خطوط

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

گزینه‌های خطوط موتور.

عبارت‌ها

هر خط می‌تواند شامل یک یا چند عبارت باشد. عبارت‌ها به‌عنوان زیرمتغیرهایی در نظر گرفته می‌شوند که برای یک خط گزارش مورد نیاز هستند. برای ایجاد یک عبارت، روی گزینه افزودن خط درون یک گزارش خط کلیک کنید.

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

توجه

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

موتور دامنه اودو

در این موتور، یک فرمول به‌عنوان دامنه اودو که اشیاء account.move.line را هدف قرار می‌دهد، تفسیر می‌شود.

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

جمع

نتیجه جمع تمام مانده‌های خطوط جابجایی مطابق است.

جمع_اگر_مثبت

نتیجه جمع تمام مانده‌های خطوط جابجایی مطابق است اگر این مقدار مثبت باشد. در غیر این صورت، 0 خواهد بود.

جمع_اگر_منفی

نتیجه جمع تمام مانده‌های خطوط جابجایی مطابق است اگر این مقدار منفی باشد. در غیر این صورت، 0 خواهد بود.

تعداد_ردیف‌ها

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

همچنین می‌توانید علامت - را در ابتدای زیرفرمول قرار دهید تا علامت نتیجه را معکوس کنید.

خط عبارت درون یک گزارش خط

موتور برچسب‌های مالیاتی

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

هنگام ارزیابی عبارت، محاسبه عبارت تقریباً به‌صورت زیر بیان می‌شود: (مقدار خطوط جابجایی با برچسب +) - (مقدار خطوط جابجایی با برچسب -).

مثال

اگر فرمول tag_name باشد، موتور برچسب‌های مالیاتی +tag_name و -tag_name را مطابقت می‌دهد و در صورت لزوم آن‌ها را ایجاد می‌کند. برای مثال بیشتر: دو برچسب با فرمول مطابقت داده می‌شوند. اگر فرمول A باشد، به برچسب‌های +A و -A نیاز خواهد داشت (و در صورت نیاز، ایجاد می‌کند).

موتور تجمیع فرمول‌های دیگر

از این موتور زمانی استفاده کنید که نیاز دارید عملیات حسابی را روی مقادیر حاصل از عبارت‌های دیگر انجام دهید. در اینجا، فرمول‌ها از ارجاع به عبارت‌ها تشکیل می‌شوند که با یکی از چهار عملگر اصلی حسابی (جمع +، تفریق -، تقسیم / و ضرب *) از هم جدا شده‌اند. برای ارجاع به یک عبارت، کد خط والد آن را تایپ کنید، سپس یک نقطه . و در ادامه برچسب عبارت را وارد کنید (مثلاً code.label).

زیرفرمول‌ها می‌توانند یکی از موارد زیر باشند:

if_above(CUR(amount))

مقدار عبارت حسابی تنها در صورتی بازگردانده می‌شود که بزرگ‌تر از حد ارائه‌شده باشد. در غیر این صورت، نتیجه 0 خواهد بود.

if_below(CUR(amount))

مقدار عبارت حسابی تنها در صورتی بازگردانده می‌شود که کوچک‌تر از حد ارائه‌شده باشد. در غیر این صورت، نتیجه 0 خواهد بود.

if_between(CUR1(amount1), CUR2(amount2))

مقدار عبارت حسابی تنها در صورتی بازگردانده می‌شود که به‌طور دقیق بین حدود ارائه‌شده باشد. در غیر این صورت، به نزدیک‌ترین حد بازگردانده می‌شود.

if_other_expr_above(LINE_CODE.EXPRESSION_LABEL, CUR(amount))

مقدار عبارت حسابی تنها در صورتی بازگردانده می‌شود که مقدار عبارت مشخص‌شده با کد خط و برچسب عبارت ارائه‌شده بزرگ‌تر از حد ارائه‌شده باشد. در غیر این صورت، نتیجه 0 خواهد بود.

if_other_expr_below(LINE_CODE.EXPRESSION_LABEL, CUR(amount))

مقدار عبارت حسابی تنها در صورتی بازگردانده می‌شود که مقدار عبارت مشخص‌شده با کد خط و برچسب عبارت ارائه‌شده کوچک‌تر از حد ارائه‌شده باشد. در غیر این صورت، نتیجه 0 خواهد بود.

CUR کد ارز با حروف بزرگ است و amount مقدار حدی است که به آن ارز بیان شده است.

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

موتور پیشوند کدهای حساب

این موتور برای مطابقت مقادیر ایجادشده در حساب‌ها با استفاده از پیشوند کدهای این حساب‌ها به‌عنوان متغیر در یک عبارت حسابی استفاده می‌شود.

مثال

21
عبارت‌های حسابی می‌توانند یک پیشوند منفرد نیز باشند، مانند اینجا.

مثال

21 + 10 - 5
این فرمول مانده خطوط جابجایی ایجادشده در حساب‌هایی که کد آن‌ها با 21 و 10 شروع می‌شود را جمع می‌کند و مانده حساب‌هایی با پیشوند 5 را کم می‌کند.

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

مثال

21 + 10\(101, 102) - 5\(57)
این فرمول به همان روش مثال قبلی کار می‌کند اما پیشوندهای 101، 102 و 57 را نادیده می‌گیرد.

می‌توانید از زیر فیلترگذاری بر روی اعتبارات و بدهی‌ها با استفاده از پسوندهای C و D استفاده کنید. در این حالت، یک حساب فقط در صورتی در نظر گرفته می‌شود که پیشوند آن مطابقت داشته باشد و اگر مانده کل خطوط جابجایی ایجادشده در این حساب اعتبار/بدهی باشد.

مثال

حساب 210001 دارای مانده -42 و حساب 210002 دارای مانده 25 است. فرمول 21D فقط با حساب 210002 مطابقت دارد و بنابراین 25 را بازمی‌گرداند. 210001 مطابقت ندارد، زیرا مانده آن اعتبار است.

استثنائات پیشوند می‌توانند با پسوندهای C و D ترکیب شوند.

مثال

21D + 10\(101, 102)C - 5\(57)
این فرمول مانده‌های خطوط جابجایی ایجادشده در حساب‌هایی که کد آن‌ها با 21 شروع می‌شود اگر بدهی (D) باشد و 10 اگر اعتبار (C) باشد را جمع می‌کند، اما پیشوندهای 101، 102 را نادیده می‌گیرد و مانده حساب‌هایی با پیشوند 5 را کم می‌کند، با نادیده گرفتن پیشوند 57.

برای مطابقت دادن حرف C یا D در یک پیشوند و عدم استفاده از آن به‌عنوان پسوند، از استثنای خالی () استفاده کنید.

مثال

21D\()
این فرمول حساب‌هایی را مطابقت می‌دهد که کد آن‌ها با 21D شروع می‌شود، صرف‌نظر از علامت مانده آن‌ها.

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

مثال

tag(25)
این فرمول حساب‌هایی را مطابقت می‌دهد که برچسب‌های مرتبط آن‌ها شامل برچسبی با شناسه 25 باشد.

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

مثال

tag(my_module.my_tag)
این فرمول حساب‌هایی را مطابقت می‌دهد که برچسب‌های مرتبط آن‌ها شامل برچسب مشخص‌شده توسط my_module.my_tag باشد.

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

مثال

tag(my_module.my_tag) + tag(42) + 10
مانده حساب‌هایی که برچسب my_module.my_tag دارند با مانده حساب‌هایی که به برچسب با شناسه 42 مرتبط هستند و حساب‌هایی با پیشوند کد 10 جمع می‌شوند.

پسوندهای C و D را می‌توان به همان روش با برچسب‌ها استفاده کرد.

مثال

tag(my_module.my_tag)C
این فرمول حساب‌هایی با برچسب my_module.my_tag و مانده اعتباری را مطابقت می‌دهد.

استثناهای پیشوندی با برچسب‌ها نیز کار می‌کنند.

مثال

tag(my_module.my_tag)\(10)
این فرمول حساب‌هایی با برچسب my_module.my_tag و کدی که با 10 شروع نمی‌شود را مطابقت می‌دهد.

موتور مقدار خارجی

موتور مقدار خارجی برای ارجاع به مقادیر دستی و منتقله استفاده می‌شود. این مقادیر با استفاده از account.move.line ذخیره نمی‌شوند بلکه با account.report.external.value ذخیره می‌شوند. هر یک از این اشیاء به طور مستقیم به عبارت تأثیرگذار اشاره می‌کنند، بنابراین در اینجا کار زیادی برای انتخاب آن‌ها لازم نیست.

فرمول‌ها می‌توانند یکی از موارد زیر باشند:

جمع

اگر نتیجه باید جمع تمام مقادیر خارجی در دوره باشد.

most_recent

اگر نتیجه باید مقدار آخرین مقدار خارجی در دوره باشد.

علاوه بر این، زیرفرمول‌ها را می‌توان به دو روش استفاده کرد:

rounding=X

جایگزینی X با یک عدد نشان می‌دهد که مقدار باید تا X رقم اعشار گرد شود.

editable

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

توجه

مقادیر دستی در date_to که در حال حاضر در گزارش انتخاب شده است ایجاد می‌شوند.

هر دو زیرفرمول را می‌توان با جدا کردن آن‌ها با ; ترکیب کرد.

مثال

editable;rounding=2
یک زیرفرمول صحیح است که هر دو رفتار را ترکیب می‌کند.

موتور تابع سفارشی پایتون

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

ستون‌ها

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

ستون‌های گزارش.

هنگام استفاده از ویژگی مقایسه دوره که در زیر تب گزینه‌ها یک گزارش حسابداری یافت می‌شود، تمام ستون‌ها در هر دوره تکرار می‌شوند.