گزارشهای سفارشی¶
Odoo با یک framework گزارشدهی قدرتمند و آسان برای استفاده میآید. این موتور به شما اجازه میدهد گزارشهای جدیدی ایجاد کنید، مانند گزارشهای مالیاتی، ترازنامهها و income statementها با گروهبندیها و طرحهای خاص.
مهم
developer mode را فعال کنید تا به پیکربندی گزارش accounting دسترسی پیدا کنید.
برای ایجاد یک گزارش جدید، به بروید. از اینجا، یا یک گزارش مرجع یا یک واریانت ایجاد کنید.
نکته
در نظر بگیرید که گزارشهای تغییریافته را بهعنوان واریانتهای گزارش ذخیره کنید تا گزارشهای مرجع آنها دستنخورده باقی بمانند.
برای دسترسی به رابط مدیریت یک گزارش موجود از خود گزارش، روی آیکون (gears) کلیک کنید.
گزارشهای مرجع¶
گزارشهای مرجع را میتوان بهعنوان گزارشهای حسابداری عمومی و خنثی در نظر گرفت. آنها بهعنوان مدلهایی عمل میکنند که نسخههای حسابداری محلی روی آنها ساخته میشوند. اگر یک گزارش هیچ گزارش مرجعی نداشته باشد، خودش بهعنوان یک گزارش مرجع در نظر گرفته میشود.
Example
یک گزارش مالیاتی برای Belgium و US هر دو از همان نسخهٔ generic بهعنوان پایه استفاده میکنند و آن را برای مقررات داخلی خود تطبیق میدهند.
ایجاد یک آیتم منو برای دسترسی به یک گزارش مرجع جدید لازم است. برای انجام این کار، پیکربندی گزارش را باز کنید، روی عملیات، ایجاد آیتم منو کلیک کنید و صفحه را تازهسازی کنید. گزارش اکنون زیر در دسترس است.
توجه
مواردی که نیاز به ایجاد یک گزارش مرجع جدید دارند نادر هستند، مانند زمانی که مقامات مالیاتی یک کشور یک نوع گزارش جدید و خاص نیاز دارند.
واریانتها¶
واریانتها نسخههای مختص کشور گزارشهای مرجع هستند و بنابراین همیشه به یک گزارش مرجع اشاره میکنند. برای ایجاد یک واریانت، یک گزارش عمومی (مرجع) را در فیلد گزارش مرجع هنگام ایجاد یک گزارش جدید انتخاب کنید.
هنگامی که یک گزارش مرجع از منوی گزارش اپ حسابداری باز میشود، همهٔ واریانتهای آن در انتخابگر واریانت گزارش در گوشهٔ بالا سمت راست نما نمایش داده میشوند.
Example
VAT Report (BE) یک واریانت از گزارش مرجع Generic Tax report است.
خطوط¶
پس از ایجاد یک گزارش (یا مرجع یا واریانت)، مرحلهٔ بعدی پر کردن آن با خطوط است. برای ایجاد یک خط جدید، روی افزودن یک سطر کلیک کنید. برای تغییر یک خط موجود، روی خود خط کلیک کنید و پنجرهٔ بازشو را ویرایش کنید. همهٔ خطوط نیاز به یک نام دارند و میتوانند یک کد اختیاری داشته باشند که اجازه میدهد مقدار خط در فرمولها استفاده شود.
عبارتها¶
هر خط میتواند شامل یک یا چند expression باشد. Expressionها را میتوان بهعنوان sub-variableهایی که توسط یک خط گزارش مورد نیاز هستند در نظر گرفت. برای ایجاد یک expression، روی افزودن یک سطر در داخل پنجرهٔ بازشوی یک خط کلیک کنید.
هنگام ایجاد یک عبارت، باید یک بر چسب وارد کنید که برای ارجاع به آن عبارت استفاده میشود. برچسب باید در میان عبارتهای هر خط گزارش یکتا باشد. فیلدهای موتور محاسبه و فرمول باید نیز تکمیل شوند. موتور محاسبه تعریف میکند چگونه فرمول(ها) و زیرفرمول(ها) تفسیر میشوند. میتوان عبارتها را با استفاده از موتورهای محاسبهٔ مختلف زیر همان خط در صورت لزوم ترکیب کرد.
توجه
بسته به engine، subformulas نیز ممکن است مورد نیاز باشد.
موتور محاسبهٔ دامنهٔ Odoo¶
هنگام استفاده از موتور محاسبهٔ دامنهی اودوو، یک فرمول بهعنوان یک دامنهٔ Odoo که هدفگذاری روی شیء account.move.line است تفسیر میشود.
subformula به شما اجازه میدهد تعریف کنید چگونه move lineهایی که با domain مطابقت دارند برای محاسبهٔ مقدار expression استفاده میشوند:
sumنتیجه مجموع همهٔ موجودیهای move lineهای تطبیقدادهشده است.
sum_if_posنتیجه مجموع همهٔ موجودیهای move lineهای تطبیقدادهشده است اگر این مبلغ مثبت باشد. در غیر این صورت،
0است.sum_if_negنتیجه مجموع همهٔ موجودیهای move lineهای تطبیقدادهشده است اگر این مبلغ منفی باشد. در غیر این صورت،
0است.count_rowsنتیجه تعداد sub-lineهای این expression است. اگر خط parent یک مقدار group-by داشته باشد، این با تعداد کلیدهای گروهبندی متمایز در move lineهای تطبیقدادهشده مطابقت خواهد داشت. در غیر این صورت، تعداد move lineهای تطبیقدادهشده خواهد بود.
نکته
برای معکوس کردن علامت نتیجه، یک علامت - در ابتدای subformula قرار دهید.
موتور محاسبهٔ مجموع سایر فرمولها¶
computation engine مجموع سایر فرمولها عملیات حسابی را روی مبالغ بهدستآمده از expressionهای دیگر انجام میدهد. فرمولها در اینجا از ارجاعات به expressionها جدا شده توسط یکی از چهار عملگر حسابی پایه (جمع +، تفریق -، تقسیم / و ضرب *) تشکیل شدهاند. برای ارجاع به یک expression، code خط parent آن را تایپ کنید سپس یک نقطه . و label expression (مثلاً، code.label).
Subformulas میتوانند یکی از موارد زیر باشند:
if_above(CUR(amount))مقدار expression حسابی فقط در صورتی برگردانده میشود که بزرگتر از مرز ارائهشده باشد. در غیر این صورت، نتیجه
0خواهد بود.if_below(CUR(amount))مقدار expression حسابی فقط در صورتی برگردانده میشود که کمتر از مرز ارائهشده باشد. در غیر این صورت، نتیجه
0خواهد بود.if_between(CUR1(amount1), CUR2(amount2))مقدار expression حسابی فقط در صورتی برگردانده میشود که اکیداً بین مرزهای ارائهشده باشد. در غیر این صورت، به نزدیکترین مرز بازگردانده میشود.
if_other_expr_above(LINE_CODE.EXPRESSION_LABEL, CUR(amount))مقدار expression حسابی فقط در صورتی برگردانده میشود که مقدار expression نشاندادهشده توسط کد خط و label expression ارائهشده بزرگتر از مرز ارائهشده باشد. در غیر این صورت، نتیجه
0خواهد بود.if_other_expr_below(LINE_CODE.EXPRESSION_LABEL, CUR(amount))مقدار expression حسابی فقط در صورتی برگردانده میشود که مقدار expression نشاندادهشده توسط کد خط و label expression ارائهشده کمتر از مرز ارائهشده باشد. در غیر این صورت، نتیجه
0خواهد بود.
CUR کد ارز با حروف بزرگ است، و amount مقدار مرز است که به آن ارز بیان شده است.
cross_report(xml_id | report_id)برای تطبیق یک expression از گزارش دیگر که توسط xml_id یا خود شناسهٔ گزارش هدفگذاری شده استفاده میشود.
موتور محاسبهٔ پیشوند کدهای حساب¶
computation engine پیشوند کدهای حساب برای تطبیق مبالغ روی حسابها با استفاده از پیشوندهای کدهای این حسابها بهعنوان متغیرها در یک expression حسابی استفاده میشود.
Example
21Example
21 + 10 - 521 و 10 شروع میشوند را جمع میکند و موجودی آنهایی که روی حسابهایی با پیشوند 5 هستند را کم میکند.همچنین میتوان یک انتخاب از sub-prefixها را نادیده گرفت.
Example
21 + 10\(101, 102) - 5\(57)101، 102 و 57 را نادیده میگیرد.میتوانید 'sub-filtering' روی creditها و debitها با استفاده از پسوندهای C و D اعمال کنید. در این صورت، یک حساب فقط در صورتی در نظر گرفته میشود که پیشوند آن مطابقت داشته باشد، و اگر کل موجودی move lineهای روی این حساب credit/debit باشد.
Example
حساب 210001 موجودی -42 دارد و حساب 210002 موجودی 25 دارد. فرمول 21D فقط با حساب 210002 تطبیق میدهد و بنابراین 25 برمیگرداند. 210001 تطبیق نمییابد، زیرا موجودی آن credit است.
حذف پیشوند میتواند با پسوندهای C و D ترکیب شود.
Example
21D + 10\(101, 102)C - 5\(57)21 شروع میشود اگر debit (D) باشد و 10 اگر credit (C) باشد را جمع میکند، اما پیشوندهای 101، 102 را نادیده میگیرد، و موجودی آنهایی که روی حسابهایی با پیشوند 5 هستند را کم میکند، با نادیده گرفتن پیشوند 57.برای تطبیق حرف C یا D در یک پیشوند و استفاده نکردن از آن بهعنوان پسوند، از یک exclusion خالی () استفاده کنید.
Example
21D\()21D شروع میشود، صرفنظر از علامت موجودی آنها، تطبیق میدهد.علاوه بر استفاده از پیشوندهای کد برای گنجاندن حسابها، میتوانید آنها را با برچسبهای حساب نیز تطبیق دهید. این بهخصوص مفید است، برای مثال، اگر کشور شما فاقد یک دفتر حسابهای استاندارد است، که در آن همان پیشوند ممکن است برای اهداف مختلف در شرکتها استفاده شود.
Example
tag(25)اگر برچسبی که به آن ارجاع میدهید در یک فایل داده تعریف شده است، یک XMLID میتواند بهجای ID استفاده شود.
Example
tag(my_module.my_tag)همچنین میتوانید از expressionهای حسابی با برچسبها استفاده کنید، احتمالاً آنها را با انتخاب پیشوند ترکیب کنید.
Example
tag(my_module.my_tag) + tag(42) + 1010 جمع میشوندپسوندهای C و D میتوانند به همان روش با برچسبها استفاده شوند.
Example
tag(my_module.my_tag)Cحذف پیشوند نیز با برچسبها کار میکند.
Example
tag(my_module.my_tag)\(10)10 شروع نمیشود را تطبیق میدهد.موتور محاسبهٔ ارزش خارجی¶
computation engine ارزش خارجی برای ارجاع به مقادیر manual و carryover استفاده میشود. آن مقادیر با استفاده از account.move.line ذخیره نمیشوند، بلکه با account.report.external.value. هر یک از این اشیاء مستقیماً به expression که تحت تأثیر قرار میدهد اشاره میکند، بنابراین دربارهٔ انتخاب آنها در اینجا کار بسیار کمی لازم است.
فرمولها میتوانند یکی از موارد زیر باشند:
sumاگر نتیجه باید مجموع همهٔ external valueها در دوره باشد.
most_recentاگر نتیجه باید مقدار جدیدترین external value در دوره باشد.
علاوه بر این، subformulas را میتوان به دو روش استفاده کرد:
rounding=Xجایگزین کردن
Xبا یک عدد دستور میدهد مبلغ را به X اعشار round کند.editableنشان میدهد این expression میتواند بهصورت دستی ویرایش شود، که باعث نمایش یک آیکون در گزارش میشود و به کاربر اجازه میدهد این اقدام را انجام دهد.
توجه
مقادیر دستی در date_to انتخابشدهٔ فعلی در گزارش ایجاد میشوند.
هر دو subformula میتوانند با جدا کردن آنها با یک ; ترکیب شوند.
Example
editable;rounding=2موتور محاسبهٔ Custom Python Function¶
موتور محاسبهٔ تابع پایتون گمرک یک ابزار برای توسعهدهندگان است تا محاسبهٔ سفارشی عبارتها را بهصورت موردی معرفی کنند. فرمول نام یک تابع پایتون برای فراخوانی است، و زیر فرمول یک کلید برای واکشی در دیکشنری برگرداندهشده توسط این تابع است. از این موتور محاسبه فقط در صورت ساخت یک ماژول سفارشی استفاده کنید.
ستونها¶
گزارشها میتوانند تعداد نامحدودی از ستونها برای نمایش داشته باشند. هر ستون مقادیر خود را از expressionهای اعلامشده روی خطوط دریافت میکند. فیلد expression_label ستون label expressionهایی که مقدار آنها نمایش داده میشود را میدهد. اگر یک خط هیچ expression در آن فیلد نداشته باشد، آنگاه چیزی برای آن در این ستون نمایش داده نمیشود. اگر چندین ستون مورد نیاز است، باید از labelهای expression مختلف استفاده کنید.
هنگام استفاده از ویژگی مقایسهٔ دوره که در زبانهٔ گزینهها یک گزارش حسابداری یافت میشود، همهٔ ستونها در و برای هر دوره تکرار میشوند.
گروهبندی خطوط¶
گروهبندی غیراستاندارد با افزودن یا استفاده از فیلدهای موجود روی مدل آیتم روزنامه امکانپذیر است، بهشرط آنکه فیلدها مرتبط و غیرذخیرهشده باشند.
توجه
گروهبندی خطوط نیاز دارد گزارش خطوط گزارش صریح داشته باشد که قابل ویرایش هستند. گزارشهای deferred، برای مثال، از گروهبندی خطوط پشتیبانی نمیکنند زیرا از خطوط پویا که تولید میشوند استفاده میکنند.
ایجاد یک فیلد جدید در آیتم روزنامه¶
برای ایجاد یک فیلد غیرذخیرهشده و مرتبط در مدل آیتم روزنامه، ابتدا به بروید و روی آیکون (bug) کلیک کنید، سپس روی فیلدها کلیک کنید. روی جدید کلیک کنید تا یک فیلد جدید ایجاد کنید، و فیلدهای زیر را تکمیل کنید:
نام فیلد: یک نام فنی برای فیلد
برچسب فیلد: برچسبی که برای فیلد نمایش داده میشود
نوع فیلد: نوع فیلدی که این فیلد مرتبط باید به آن اشاره کند
ذخیره شده: این فیلد را تیک نزنید زیرا فقط فیلدهای غیرذخیرهشده میتوانند برای گروهبندی خطوط استفاده شوند.
مدل مرتبط: اگر نوع فیلد one2many، many2many یا many2one است، مدل فیلد اصلی برای گروهبندی را انتخاب کنید.
Related Field Definition: مسیر فنی به فیلدی که میخواهید بر اساس آن گروهبندی کنید
Example
برای گروهبندی بر اساس تیم فروش شریک تجاری، تعریف فیلد مرتبط را به
move_id.team_idتنظیم کنید.
گروهبندی خطوط¶
برای گروهبندی خطوط، به زبانهٔ Lines گزارش مورد نظر بروید، روی خطی که میخواهید گروهبندی کنید کلیک کنید و فیلد گروهبندی برمبنای را ویرایش کنید. نام فنی (نام فیلد) فیلدی که بهعنوان کلید گروهبندی استفاده شود را وارد کنید.
نکته
برای یافتن یک فهرست از همهٔ فیلدهای مدل و نامهای فنی آنها، به بروید، و روی آیکون (bug) کلیک کنید، سپس روی فیلدها کلیک کنید. نام فنی هر فیلد در ستون نام فیلد فهرست شده است.
همچنین ببینید