گزارشهای سفارشی¶
Odoo با یک چارچوب گزارشدهی قدرتمند و آسان برای استفاده همراه است. این موتور به شما اجازه میدهد گزارشهای جدیدی ایجاد کنید، مانند گزارشهای مالیاتی یا ترازنامهها و صورتهای درآمد با گروهبندیهای خاص و چیدمانها.
مهم
حالت توسعهدهنده را فعال کنید تا به رابط ایجاد گزارش حسابداری دسترسی پیدا کنید.
برای ایجاد یک گزارش جدید، به گزارش ریشهای یا یک متغیر ایجاد کنید.
بروید. از اینجا، میتوانید یکگزارشهای ریشهای¶
گزارشهای ریشهای میتوانند بهعنوان گزارشهای حسابداری عمومی و بیطرف در نظر گرفته شوند. آنها بهعنوان مدلهایی عمل میکنند که نسخههای محلی حسابداری بر اساس آنها ساخته میشوند. اگر گزارشی گزارش ریشهای نداشته باشد، بهعنوان یک گزارش ریشهای در نظر گرفته میشود.
مثال
یک گزارش مالیاتی برای بلژیک و ایالات متحده هر دو از همان نسخه عمومی بهعنوان پایه استفاده میکنند و آن را برای مقررات داخلی خود تطبیق میدهند.
هنگام ایجاد یک گزارش ریشهای جدید، باید یک آیتم منو برای آن ایجاد کنید. برای انجام این کار، گزارش را باز کنید و سپس در همان گزارش روی
کلیک کنید. صفحه را تازه کنید؛ اکنون گزارش در در دسترس است.توجه
مواردی که نیاز به ایجاد یک گزارش ریشهای جدید دارند نادر هستند، مانند زمانی که مقامات مالیاتی یک کشور به یک نوع گزارش جدید و خاص نیاز دارند.
نسخههای متغیر¶
نسخههای متغیر نسخههای خاص کشوری از گزارشهای ریشهای هستند و بنابراین همیشه به یک گزارش ریشهای ارجاع میدهند. برای ایجاد یک نسخه متغیر، یک گزارش عمومی (ریشهای) را در فیلد گزارش ریشهای هنگام ایجاد یک گزارش جدید انتخاب کنید.
هنگامی که یک گزارش ریشهای از یکی از منوهای اصلی برنامه حسابداری باز میشود، تمام نسخههای متغیر آن در انتخابگر نسخه در گوشه بالا سمت راست نمایه نمایش داده میشوند.
مثال
در تصویر زیر، گزارش مالیات بر ارزش افزوده (BE) نسخه متغیری از گزارش مالیات عمومی است.
خطوط¶
پس از ایجاد یک گزارش (چه ریشهای و چه متغیر)، باید آن را با خطوط پر کنید. میتوانید یک خط جدید با کلیک روی افزودن خط ایجاد کنید یا یک خط موجود را با کلیک بر روی آن اصلاح کنید. تمام خطوط به یک نام نیاز دارند و میتوانند یک کد اختیاری (به انتخاب شما) برای استفاده در فرمولها داشته باشند.
عبارتها¶
هر خط میتواند شامل یک یا چند عبارت باشد. عبارتها بهعنوان زیرمتغیرهایی در نظر گرفته میشوند که برای یک خط گزارش مورد نیاز هستند. برای ایجاد یک عبارت، روی گزینه افزودن خط درون یک گزارش خط کلیک کنید.
هنگام ایجاد یک عبارت، باید یک برچسب به آن اختصاص دهید که برای ارجاع به آن عبارت استفاده شود. بنابراین، باید بین عبارتهای هر خط منحصربهفرد باشد. همچنین باید یک موتور محاسباتی و یک فرمول مشخص شوند. موتور تعیین میکند که چگونه فرمول(ها) و زیرفرمول(ها) تفسیر میشوند. اگر لازم باشد، میتوان عبارتهایی با استفاده از موتورهای محاسباتی مختلف را در یک خط ترکیب کرد.
توجه
بسته به موتور، ممکن است زیرفرمولها نیز لازم باشند.
موتور دامنه اودو¶
در این موتور، یک فرمول بهعنوان دامنه اودو که اشیاء account.move.line
را هدف قرار میدهد، تفسیر میشود.
زیرفرمول به شما اجازه میدهد مشخص کنید که چگونه خطوط جابجایی مطابق با دامنه برای محاسبه مقدار عبارت استفاده میشوند:
- جمع
نتیجه جمع تمام ماندههای خطوط جابجایی مطابق است.
- جمع_اگر_مثبت
نتیجه جمع تمام ماندههای خطوط جابجایی مطابق است اگر این مقدار مثبت باشد. در غیر این صورت،
0
خواهد بود.- جمع_اگر_منفی
نتیجه جمع تمام ماندههای خطوط جابجایی مطابق است اگر این مقدار منفی باشد. در غیر این صورت،
0
خواهد بود.- تعداد_ردیفها
نتیجه تعداد زیرفرمولهای این عبارت است. اگر خط اصلی دارای مقدار گروهبندی باشد، این مقدار با تعداد کلیدهای گروهبندی متمایز در خطوط جابجایی مطابق مطابقت خواهد داشت. در غیر این صورت، این تعداد خطوط جابجایی مطابق خواهد بود.
همچنین میتوانید علامت -
را در ابتدای زیرفرمول قرار دهید تا علامت نتیجه را معکوس کنید.
موتور تجمیع فرمولهای دیگر¶
از این موتور زمانی استفاده کنید که نیاز دارید عملیات حسابی را روی مقادیر حاصل از عبارتهای دیگر انجام دهید. در اینجا، فرمولها از ارجاع به عبارتها تشکیل میشوند که با یکی از چهار عملگر اصلی حسابی (جمع +
، تفریق -
، تقسیم /
و ضرب *
) از هم جدا شدهاند. برای ارجاع به یک عبارت، کد خط والد آن را تایپ کنید، سپس یک نقطه .
و در ادامه برچسب عبارت را وارد کنید (مثلاً 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)
اگر برچسبی که به آن ارجاع میدهید در یک فایل داده تعریف شده باشد، میتوان از xmlid بهجای شناسه استفاده کرد.
مثال
tag(my_module.my_tag)
همچنین میتوانید از عبارتهای حسابی با برچسبها استفاده کنید و آنها را با انتخاب پیشوندها ترکیب کنید.
مثال
tag(my_module.my_tag) + tag(42) + 10
10
جمع میشوند.پسوندهای C
و D
را میتوان به همان روش با برچسبها استفاده کرد.
مثال
tag(my_module.my_tag)C
استثناهای پیشوندی با برچسبها نیز کار میکنند.
مثال
tag(my_module.my_tag)\(10)
10
شروع نمیشود را مطابقت میدهد.موتور مقدار خارجی¶
موتور مقدار خارجی برای ارجاع به مقادیر دستی و منتقله استفاده میشود. این مقادیر با استفاده از account.move.line
ذخیره نمیشوند بلکه با account.report.external.value
ذخیره میشوند. هر یک از این اشیاء به طور مستقیم به عبارت تأثیرگذار اشاره میکنند، بنابراین در اینجا کار زیادی برای انتخاب آنها لازم نیست.
فرمولها میتوانند یکی از موارد زیر باشند:
جمع
اگر نتیجه باید جمع تمام مقادیر خارجی در دوره باشد.
most_recent
اگر نتیجه باید مقدار آخرین مقدار خارجی در دوره باشد.
علاوه بر این، زیرفرمولها را میتوان به دو روش استفاده کرد:
rounding=X
جایگزینی
X
با یک عدد نشان میدهد که مقدار باید تا X رقم اعشار گرد شود.editable
نشان میدهد که این عبارت را میتوان بهصورت دستی ویرایش کرد و این عمل باعث نمایش یک آیکون در گزارش میشود و به کاربر اجازه انجام این کار را میدهد.
توجه
مقادیر دستی در date_to
که در حال حاضر در گزارش انتخاب شده است ایجاد میشوند.
هر دو زیرفرمول را میتوان با جدا کردن آنها با ;
ترکیب کرد.
مثال
editable;rounding=2
موتور تابع سفارشی پایتون¶
این موتور وسیلهای برای توسعهدهندگان است تا محاسبات سفارشی عبارات را بهصورت موردی معرفی کنند. فرمول نام یک تابع پایتون برای فراخوانی است و زیرفرمول یک کلید برای استخراج از دیکشنری بازگرداندهشده توسط این تابع است. فقط زمانی از آن استفاده کنید که در حال ساخت یک ماژول سفارشی خود هستید.
ستونها¶
گزارشها میتوانند تعداد نامحدودی ستون برای نمایش داشته باشند. هر ستون مقادیر خود را از عبارتهایی که در خطوط اعلام شدهاند میگیرد. فیلد برچسب عبارت ستون برچسب عبارتهایی را که مقدار آنها نمایش داده میشود نشان میدهد. اگر یک خط در آن فیلد عبارت نداشته باشد، در این ستون چیزی برای آن نمایش داده نمیشود. اگر چندین ستون مورد نیاز باشد، باید از برچسبهای عبارت مختلف استفاده کنید.
هنگام استفاده از ویژگی مقایسه دوره که در زیر تب گزینهها یک گزارش حسابداری یافت میشود، تمام ستونها در هر دوره تکرار میشوند.