التقارير المخصصة¶
يأتي أودو مزوداً بإطار عمل قوي وسهل الاستخدام لإعداد التقارير. يتيح لك المحرك إنشاء تقارير جديدة، مثل التقارير الضريبية أو الميزانيات العمومية و كشوفات الدخل مع التجميعات المحددة و المخططات.
مهم
قم بتفعيل وضع المطور للوصول إلى واجهة إنشاء التقارير المحاسبية.
لإنشاء تقرير جديد، افتح تطبيق المحاسبة وانتقل إلى . من هنا، يمكنك إما إنشاء تقرير جذر أو متغير.
التقارير الجذرية¶
يمكن اعتبار التقارير الجذرية تقارير محاسبية عامة ومحايدة. وهي بمثابة نماذج تُبنى عليها الإصدارات المحاسبية المحلية. إذا لم يكن التقرير يحتوي على تقرير جذري، فسيتم اعتباره تقريراً جذرياً بحد ذاته.
Example
A tax report for Belgium and the US would both use the same generic version as a base and adapt it for their domestic regulations.
عند إنشاء تقرير جذر جديد، تحتاج إلى إنشاء عنصر قائمة له. للقيام بذلك، افتح التقرير وانقر على نفس التقرير على أيقونة (الإجراءات)، ثم اختر Create Menu Item. حدّث الصفحة؛ أصبح التقرير الآن متاحًا ضمن .
ملاحظة
الحالات التي تتطلب إنشاء تقرير جذري جديد نادرة، كما هو الحال عندما تطلب السلطات الضريبية في دولة ما نوعاً جديداً ومحدداً من التقارير.
المتغيرات¶
المتغيرات هي إصدارات من التقارير الجذرية خاصة بالدول، وبالتالي، تشير دائماً إلى تقرير جذري. لإنشاء متغير، قم بتحديد تقرير عام (جذري) في الحقل التقرير الجذري عند إنشاء تقرير جديد.
عند فتح تقرير جذري من إحدى القوائم الرئيسية لتطبيق المحاسبة، يتم عرض كافة متغيراته في مُحدِّد المتغيرات في الزاوية العليا إلى اليسار من نافذة العرض.
Example
في الصورة التالية، تقرير ضريبة القيمة المضافة (BE) هو بديل التقرير الجذري التقرير الضريبي العادي.
سطور التقرير¶
بعد إنشاء تقرير (سواء كان جذرًا أو متغيرًا)، تحتاج إلى ملئه بسطور التقرير. يمكنك إما إنشاء سطر جديد بالنقر على Add a line، أو تعديل سطر تقرير موجود بالنقر عليه. تتطلب جميع سطور التقرير بالضرورة الاسم، ويمكن أن يكون لها الرمز إضافي اختياري (من اختيارك) إذا كنت ترغب في استخدام قيمتها في الصيغ.
التعابير¶
يمكن أن يحتوي كل سطر تقرير على تعبير واحد أو أكثر. يمكن اعتبار التعبيرات متغيرات فرعية مطلوبة من قبل سطر التقرير. لإنشاء تعبير، انقر على Add a line داخل سطر التقرير.
عند إنشاء تعبير، يجب عليك تحديد التسمية المستخدمة للإشارة إلى ذلك التعبير. لذلك، يجب أن تكون فريدة بين تعبيرات كل سطر. يجب أيضًا الإشارة إلى كل من Computation Engine و:guilabel:الصيغة. يحدد المحرك كيفية تفسير الصيغة (الصيغ) و**الصيغة (الصيغ) الفرعية** الخاصة بك. من الممكن مزج التعبيرات باستخدام محركات حساب مختلفة تحت نفس السطر إذا كنت بحاجة إلى ذلك.
ملاحظة
بناءً على المحرك، قد تكون هناك حاجة أيضاً إلى الصيغ الفرعية.
محرك 'نطاق أودو'¶
باستخدام هذا المحرك، يتم تفسير الصيغة على أنها نطاق أودو يستهدف كائنات account.move.line.
تتيح لك الصيغة الفرعية تحديد كيفية استخدام بنود الحركة المطابقة للنطاق لحساب قيمة التعبير:
المجموعوالنتيجة هي مجموع كافة أرصدة بنود الحركة المطابقة.
sum_if_posوالنتيجة هي مجموع كافة أرصدة بنود الحركة المطابقة إذا كان هذا المبلغ موجباً. وإلا، فسيكون "0".
sum_if_negوالنتيجة هي مجموع كافة أرصدة بنود الحركة المطابقة إذا كان هذا المبلغ سالباً. وإلا، فسيكون "0".
count_rowsالنتيجة هي عدد السطور الفرعية لهذا التعبير. إذا كان سطر التقرير يحتوي على قيمة تجميع، فسوف يتوافق هذا مع عدد مفاتيح التجميع المميزة في سطور الحركة المطابقة. وإلا، سيكون عدد سطور الحركة المطابقة.
يمكنك أيضاً وضع علامة - في بداية الصيغة الفرعية لعكس علامة النتيجة.
محرك 'تجميع الصيغ الأخرى'¶
استخدم هذا المحرك عندما تحتاج إلى إجراء عمليات حسابية على المبالغ التي تم الحصول عليها لتعبيرات أخرى. تتكون الصيغ هنا من إشارات إلى التعبيرات مفصولة بأحد العوامل الحسابية الأساسية الأربعة (الجمع +، الطرح -، القسمة /، والضرب *). للإشارة إلى تعبير، اكتب رمز سطر التقرير الخاص به متبوعًا بنقطة . و**تسمية** التعبير (مثال 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 هو كود العملة مكتوب بأحرف كبيرة، و`الكمية` هي كمية الحد المعبر عنها بتلك العملة.
يمكنك أيضاً استخدام الصيغة الفرعية لـ cross_report لمطابقة تعبير تم إيجاده في تقرير آخر.
محرك 'بادئات أكواد الحساب'¶
يُستخدم هذا المحرك لمطابقة المبالغ في الحسابات باستخدام بادئات رموز هذه الحسابات كمتغيرات في التعبير الحسابي.
Example
21Example
21 + 10 - 521 و`10`، وتطرح رصيد تلك الموجودة في الحسابات ذات البادئة 5.من الممكن أيضاً تجاهل مجموعة مختارة من البادئات الفرعية.
Example
21 + 10\(101, 102) - 5\(57)101 و`102` و`57`.يمكنك تطبيق "التصفية الفرعية" على الائتمانات والخصومات باستخدام اللاحقتين C و`D`. في تلك الحالة، لن يتم النظر في الحساب إلا إذا كانت البادئة الخاصة به متطابقة، و إذا كان إجمالي رصيد بنود الحركة التي تم إجراؤها في هذا الحساب هو دائن/خصم.
Example
يحتوي الحساب 210001 على رصيد -42 والحساب 210002 لديه رصيد 25. الصيغة 21D تتطابق فقط مع الحساب 210002، وبالتالي تُرجع 25. 210001 غير متطابقة، لأن رصيده هو ائتمان.
يمكن خلط استثناءات البادئة مع لاحقات C و`D`.
Example
21D + 10\(101, 102)C - 5\(57)21 إذا كان مديناً (D) و`10` إذا كان دائناً (C)، لكنه يتجاهل البادئات ` 101`، 102، ويطرح رصيد الحسابات ذات البادئة 5، مع تجاهل البادئة 57.لمطابقة الحرف C أو D في بادئة وعدم استخدامه كلاحقة، استخدم استبعاداً فارغاً ().
Example
21D\()21D، بغض النظر عن علامة الرصيد الخاصة بها.إضافة إلى استخدام بادئات الكود لتضمين الحسابات، يمكنك أيضاً مطابقتها بـ علامات الحساب. يكون ذلك مفيداً بشكل خاص، إذا لم يكن لدولتك شجرة حسابات موحدة، على سبيل المثال، حيث يمكن استخدام نفس البادئة لأغراض مختلفة عبر الشركات.
Example
tag(25)إذا كانت علامة التصنيف التي أشرت إليها محددة في ملف بيانات، يمكن استخدام ملف xmlid عوضاً عن المعرف.
Example
tag(my_module.my_tag)يمكنك أيضًا استخدام تعبيرات حسابية مع العلامات، مع إمكانية دمجها مع اختيارات البادئة.
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.محرك 'القيمة الخارجية'¶
يُستخدم محرك 'القيمة الخارجية' للإشارة إلى القيم اليدوية و**قيم الترحيل**. لا يتم تخزين هذه القيم باستخدام account.move.line، ولكن باستخدام account.report.external.value. يشير كل من هذه الكائنات مباشرة إلى التعبير الذي يؤثر عليه، لذلك لا يلزم القيام بالكثير بشأن اختيارها هنا.
الصيغ يمكن أن تكون واحدة مما يلي:
المجموعإذا كانت النتيجة يجب أن تكون مجموع كل القيم الخارجية في الفترة.
most_recentإذا كانت النتيجة يجب أن تكون قيمة أحدث قيمة خارجية في الفترة.
بالإضافة إلى ذلك، يمكن استخدام الصيغ الفرعية بطريقتين:
rounding=Xاستبدال
Xبرقم يُعطي تعليمات بتقريب المبلغ إلى X من الأرقام العشرية.editableيشير إلى أن هذا التعبير يمكن تعديله يدويًا، مما يؤدي إلى عرض أيقونة في التقرير، مما يسمح للمستخدم بتنفيذ هذا الإجراء.
ملاحظة
يتم إنشاء القيم اليدوية في date_to المحدد حاليًا في التقرير.
يمكن مزج كلتا الصيغتين الفرعيتين بفصلهما بـ ;.
Example
editable;rounding=2محرك 'دالة Python المخصصة'¶
هذا المحرك هو وسيلة للمطورين لإدخال حساب مخصص للتعبيرات على أساس كل حالة على حدة. الصيغة هي اسم دالة python المراد استدعاؤها، والصيغة الفرعية هي مفتاح لاسترجاعه في القاموس الذي تُرجعه هذه الدالة. استخدمه فقط إذا كنت تقوم بإنشاء وحدة مخصصة خاصة بك.
الأعمدة¶
يمكن أن يكون للتقارير عدد غير محدود من الأعمدة للعرض. يحصل كل عمود على قيمه من التعبيرات المعلنة في السطور. يعطي الحقل expression_label للعمود تسمية التعبيرات التي يتم عرض قيمتها. إذا لم يكن لدى السطر تعبير في هذا الحقل، فلن يتم عرض أي شيء له في هذا العمود. إذا كانت هناك حاجة إلى أعمدة متعددة، فيجب عليك استخدام تسميات تعبير مختلفة.
عند استخدام ميزة مقارنة الفترة الموجودة ضمن علامة التبويب الخيارات في تقرير محاسبي، يتم تكرار جميع الأعمدة في كل فترة ولأجلها.
تجميع السطور¶
التجميع غير القياسي ممكن عن طريق إضافة أو استخدام الحقول الموجودة في نموذج عنصر اليومية، بشرط أن تكون الحقول مرتبطة وغير مخزنة.
ملاحظة
يتطلب تجميع السطور أن يحتوي التقرير على سطور تقرير صريحة يمكن تعديلها. التقارير المؤجلة، على سبيل المثال، لا تدعم تجميع السطور لأنها تستخدم سطورًا ديناميكية يتم إنشاؤها.
إنشاء حقل جديد على عنصر اليومية¶
لإنشاء حقل غير مخزن ومرتبط في نموذج عنصر اليومية، انتقل أولاً إلى ، وانقر على أيقونة (خطأ)، ثم انقر على الحقول. انقر على جديد لإنشاء حقل جديد، وأكمل الحقول التالية:
اسم الحقل: الاسم التقني للحقل
تسمية الحقل: التسمية التي سيتم عرضها للحقل
نوع الحقل: نوع الحقل الذي يجب أن يشير إليه هذا الحقل المرتبط
مخزن: اترك هذا الحقل غير محدد حيث يمكن استخدام الحقول غير المخزنة فقط لتجميع السطور.
النموذج المرتبط: إذا كان نوع الحقل one2many أو many2many أو many2one، حدد نموذج الحقل الأصلي للتجميع حسبه.
تعريف الحقل المرتبط: المسار التقني إلى الحقل الذي تريد التجميع حسبه
Example
للتجميع حسب فريق المبيعات للشريك التجاري، عيّن تعريف الحقل المرتبط إلى
move_id.team_id.
تجميع السطور¶
لتجميع السطور، انتقل إلى علامة التبويب السطور للتقرير المطلوب، وانقر على السطر الذي تريد تجميعه، وحرر حقل Group by. أدخل الاسم التقني (Field Name) للحقل المراد استخدامه كمفتاح تجميع.
نصيحة
للعثور على قائمة بجميع حقول النموذج وأسمائها التقنية، انتقل إلى ، وانقر على أيقونة (خطأ برمجي)، ثم انقر على الحقول. يتم إدراج الاسم التقني لكل حقل في عمود اسم الحقل.
انظر أيضًا
إعداد تقرير ضريبي مخصص¶
تكوين التقرير¶
نصيحة
يتم شرح جميع المصطلحات التقنية ووظائف محرك التقارير في Odoo في الأقسام السابقة من هذه الصفحة. نوصي بشدة بقراءة هذه الأقسام قبل إعداد تقرير ضريبي مخصص.
لإنشاء تقرير ضريبي مخصص، افتح تطبيق المحاسبة، ثم انتقل إلى ، ثم انقر فوق جديد:
أدخل اسمًا لتقريرك.
حدد تقرير جذر.
ضمن حقل التوفر، حدد تطابق الدولة، ثم حدد الدولة المطابقة لشركتك.
بعد ذلك، أنشئ سطر تقرير بالنقر فوق إضافة سطر. بمجرد إنشائه، انقر فوق سطر التقرير هذا لتكوينه:
انقر فوق إضافة سطر مرة أخرى لإنشاء تعبير وقم بتسميته.
في علامة التبويب التعريف، حدد محرك الحساب لهذا التعبير اعتمادًا على السيناريوهات التالية:
في هذا السيناريو، تستخدم شركتك تستخدم شبكات ضريبية:
حدد علامات الضرائب كمحرك الحساب. يستخدم Odoo هذا الحقل لربط سطر التقرير بضرائبك.
في حقل الصيغة، اكتب معرف الشبكة القصير الخاص بك (مثل
vat_sales_base). يقوم Odoo تلقائيًا بإنشاء أشكال+و-من هذه العلامة لك لربطها داخل .في حقل الصيغة الفرعية، أدخل إما
baseللإبلاغ عن المبلغ غير الخاضع للضريبة، أوtaxللإبلاغ عن مبلغ الضريبة الفعلي المحصل/المدفوع.
كرر هذه العملية حسب الحاجة. ثم احفظ وأغلق.
بدلاً من ذلك، يمكنك:
حدد تجميع صيغ أخرى كمحرك الحساب. يستخدم Odoo هذا الحقل لإجراء عمليات حسابية على السطور الموجودة بالفعل في التقرير بدلاً من فحص المعاملات الأولية.
في حقل الصيغة، استخدم الجبر الأساسي للإشارة إلى رموز السطور الخاصة بك (مثل
LINE_10 - LINE_20).
كرر هذه العملية حسب الحاجة. ثم احفظ وأغلق.
في هذا السيناريو، شركتك لا تستخدم جداول الضرائب. بدلاً من ذلك، تتتبع كل شيء بدقة عبر حسابات دفتر الأستاذ العام:
حدد بادئة رموز الحسابات كمحرك الحساب: يستخدم Odoo هذا للبنود التي تحتاج إلى سحب الإجماليات المالية. بدلاً من البحث عن علامات المعاملات، يسحب Odoo الأرصدة المباشرة مباشرة من دليل الحسابات الخاص بك.
في حقل الصيغة، اكتب الأرقام الأولى للحسابات التي تريد تتبعها، (على سبيل المثال،
40سيسحب المجموع المدمج لجميع حسابات الإيرادات التي تبدأ بـ400000،401000، إلخ).
كرر هذه العملية حسب الحاجة. ثم احفظ وأغلق.
بدلاً من ذلك، يمكنك:
حدد تجميع الصيغ الأخرى كمحرك الحساب. يستخدم Odoo هذا لحساب الإجماليات الفرعية، أو صافي الضريبة، أو الإجماليات الكلية عن طريق إضافة أو طرح بنود التقرير الأخرى.
في حقل الصيغة، استخدم الجبر الأساسي للإشارة إلى رموز السطور الخاصة بك (مثل
LINE_10 - LINE_20).
كرر هذه العملية حسب الحاجة. ثم احفظ وأغلق.
في هذا السيناريو، تتطلب شركتك تصفية متقدمة، أو تجاوزات يدوية من المستخدم، أو منطق خوارزمي معقد لا يمكن للعلامات القياسية وبادئات الحسابات التعامل معه:
حدد نطاق Odoo كمحرك الحساب: يستخدم Odoo هذا لتجاوز علامات الضرائب بالكامل وتصفية بنود اليومية الأولية (
account.move.line) باستخدام بناء جملة البحث القياسي في Odoo.في حقل الصيغة، أدخل نطاقاً صالحاً يبدأ بأقواس لعزل المعاملات المعفاة من الضرائب لفئات شركاء معينة.
بدلاً من ذلك، يمكنك:
حدد القيمة الخارجية كمحرك الحساب. يستخدم Odoo هذا لتسجيل التجاوزات اليدوية أو قيم الترحيل التاريخية.
في حقل الصيغة، اكتب إما
sum(لإضافة جميع القيم اليدوية معاً عبر تقارير متعددة الفترات) أوmost_recent(لعرض القيمة الأحدث فقط).في حقل الصيغة الفرعية، اكتب
editableلعرض أيقونة التحرير على التقرير المباشر، مما يسمح للمستخدمين بتعديل القيمة يدوياً. بالإضافة إلى ذلك، يمكنك تقريب الأرقام عن طريق كتابةrounding=x.
بدلاً من ذلك، يمكنك:
حدد دالة Python مخصصة كمحرك الحساب. يستخدم Odoo هذا كمحرك تنفيذ لإجراء حسابات محددة من خلال الترميز الخلفي عندما تتضمن القواعد أقواساً تدريجية، أو حلقات، أو عتبات متعددة المستويات.
في حقل الصيغة، أدخل الاسم التقني الدقيق لطريقة Python المحددة في وحدة التوطين المخصصة الخاصة بك.
كرر هذه العملية حسب الحاجة. ثم احفظ وأغلق.
في علامة التبويب الخيارات لـ التعبير، املأ حقل الترحيل إلى بصيغة لترحيل الأرصدة دائماً أو ترحيلها فقط عندما يكون المبلغ سالباً. اترك هذا الحقل فارغاً إذا كنت لا تريد استخدام هذه الميزة.
Example
if_below(EUR(0))إعداد الضرائب¶
بعد ذلك، انتقل إلى وانقر على جديد لإنشاء و:ref:تكوين ضرائب جديدة <taxes/configuration> لتقرير الضرائب المخصص الخاص بك. أنشئ ضرائب المبيعات و**المشتريات** الخاصة بك، واملأ جداول الضرائب لجميع الضرائب باستخدام جداول الضرائب المطابقة التي أنشأتها سابقاً. أخيراً، تأكد من تحديد كل من حساب الضريبة المستحقة الدفع وحساب الضريبة المستحقة القبض لكل ضريبة.
Example
إدخال الإقفال¶
لإغلاق الضرائب، يجب تحديد مجموعة ضريبية لكل ضريبة مستخدمة في تقرير الضرائب المخصص الخاص بك. للقيام بذلك، افتح تطبيق المحاسبة، وانتقل إلى ، وافتح ضريبة تتطلب مجموعة ضريبية، وانقر فوق علامة التبويب الخيارات المتقدمة، وحدد مجموعة في حقل المجموعة الضريبية. بمجرد التعيين، انقر فوق رمز (السهم الأيمن) وقم بتعيين كل من حساب الضريبة المستحقة الدفع و حساب الضريبة المستحقة القبض.
نصيحة
عندما يتم إعداد كل شيء، تأكد من اختبار التقرير الخاص بك عن طريق إنشاء فواتير وفواتير الشراء والإشعارات الدائنة باستخدام الضرائب الخاصة بهذا التقرير. وأخيراً، اختبر قيد الإغلاق نفسه.
إذا كنت تريد إخفاء حساب معين من العرض في قيد إغلاق الضرائب، فانتقل إلى ، وحدد الضريبة، وانقر فوق رمز (ضبط الإعدادات). من هناك، حدد مربع قيد إغلاق الضرائب لضبط ظهوره.
انظر أيضًا