التقارير المخصصة¶
يأتي Odoo مع إطار عمل قوي وسهل الاستخدام لإعداد التقارير. يتيح لك المحرك إنشاء تقارير جديدة، مثل التقارير الضريبية، أو الميزانيات العمومية و**قوائم الدخل** مع تجميعات و**تخطيطات محددة**.
مهم
قم بتفعيل وضع المطور للوصول إلى واجهة إنشاء تقارير المحاسبة.
لإنشاء تقرير جديد، افتح تطبيق المحاسبة وانتقل إلى . من هنا، يمكنك إنشاء تقرير جذر أو متغير.
التقارير الجذرية¶
يمكن اعتبار التقارير الجذرية تقارير محاسبية عامة ومحايدة. وهي بمثابة نماذج تُبنى عليها الإصدارات المحاسبية المحلية. إذا لم يكن التقرير يحتوي على تقرير جذري، فسيتم اعتباره تقريراً جذرياً بحد ذاته.
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.
عند إنشاء تقرير جذر جديد، تحتاج إلى إنشاء عنصر قائمة له. للقيام بذلك، افتح التقرير وعلى نفس التقرير، انقر فوق رمز (الإجراءات)، ثم حدد إنشاء عنصر قائمة. قم بتحديث الصفحة؛ أصبح التقرير الآن متاحًا ضمن .
ملاحظة
الحالات التي تتطلب إنشاء تقرير جذري جديد نادرة، كما هو الحال عندما تطلب السلطات الضريبية في دولة ما نوعاً جديداً ومحدداً من التقارير.
المتغيرات¶
المتغيرات هي إصدارات من التقارير الجذرية خاصة بالدول، وبالتالي، تشير دائماً إلى تقرير جذري. لإنشاء متغير، قم بتحديد تقرير عام (جذري) في الحقل التقرير الجذري عند إنشاء تقرير جديد.
عند فتح تقرير جذر من أحد القوائم الرئيسية لتطبيق المحاسبة، يتم عرض جميع متغيراته في محدد المتغيرات في الزاوية اليمنى العليا من العرض.
Example
في الصورة التالية، تقرير ضريبة القيمة المضافة (BE) هو متغير من جذر التقرير الضريبي العام.
سطور التقرير¶
بعد إنشاء تقرير (سواء كان جذرياً أو متغيراً)، تحتاج إلى ملئه بسطور التقرير. يمكنك إما إنشاء سطر جديد بالنقر على إضافة سطر، أو تعديل سطر تقرير موجود بالنقر عليه. جميع سطور التقرير تتطلب اسم، ويمكن أن يكون لها رمز إضافي اختياري (من اختيارك) إذا كنت ترغب في استخدام قيمتها في الصيغ.
التعابير¶
يمكن أن يحتوي كل سطر تقرير على تعبير واحد أو أكثر. يمكن اعتبار التعبيرات متغيرات فرعية مطلوبة بواسطة سطر التقرير. لإنشاء تعبير، انقر على إضافة سطر داخل سطر التقرير.
عند إنشاء تعبير، يجب أن تحدد تسمية تُستخدم للإشارة إلى هذا التعبير. لذلك، يجب أن تكون فريدة بين تعبيرات كل سطر. يجب أيضاً الإشارة إلى محرك الحساب و صيغة. يحدد المحرك كيفية تفسير صيغك و صيغك الفرعية. من الممكن مزج تعبيرات تستخدم محركات حساب مختلفة تحت نفس السطر إذا كنت بحاجة إلى ذلك.
ملاحظة
بناءً على المحرك، قد تكون هناك حاجة أيضاً إلى الصيغ الفرعية.
محرك 'نطاق Odoo'¶
مع هذا المحرك، تُفسَّر الصيغة على أنها نطاق Odoo يستهدف كائنات 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(xml_id | report_id)يُستخدم لمطابقة تعبير من تقرير آخر مستهدف بواسطة xml_id أو معرف التقرير نفسه.
محرك 'بادئة رموز الحسابات'¶
يُستخدم هذا المحرك لمطابقة المبالغ المُدخلة على الحسابات باستخدام بادئات رموز هذه الحسابات كمتغيرات في تعبير حسابي.
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محرك 'دالة بايثون مخصصة'¶
هذا المحرك وسيلة للمطورين لإدخال حساب مخصص للتعبيرات على أساس كل حالة على حدة. الصيغة هي اسم دالة بايثون المطلوب استدعاؤها، والصيغة الفرعية هي مفتاح لجلبه في القاموس الذي تُرجعه هذه الدالة. استخدمها فقط إذا كنت تقوم بإنشاء وحدة مخصصة خاصة بك.
الأعمدة¶
يمكن أن يكون للتقارير عدد غير محدود من الأعمدة للعرض. يحصل كل عمود على قيمه من التعبيرات المعلنة في السطور. يعطي الحقل expression_label للعمود تسمية التعبيرات التي يتم عرض قيمتها. إذا لم يكن لدى السطر تعبير في هذا الحقل، فلن يتم عرض أي شيء له في هذا العمود. إذا كانت هناك حاجة إلى أعمدة متعددة، فيجب عليك استخدام تسميات تعبير مختلفة.
عند استخدام ميزة مقارنة الفترة الموجودة ضمن علامة التبويب الخيارات في تقرير محاسبي، يتم تكرار جميع الأعمدة في كل فترة ولأجلها.
تجميع السطور¶
التجميع غير القياسي ممكن عن طريق إضافة أو استخدام الحقول الموجودة في نموذج عنصر اليومية، بشرط أن تكون الحقول مرتبطة وغير مخزنة.
ملاحظة
يتطلب تجميع السطور أن يحتوي التقرير على سطور تقرير صريحة يمكن تعديلها. التقارير المؤجلة، على سبيل المثال، لا تدعم تجميع السطور لأنها تستخدم سطورًا ديناميكية يتم إنشاؤها.
إنشاء حقل جديد على عنصر اليومية¶
لإنشاء حقل غير مخزن ومرتبط في نموذج عنصر اليومية، انتقل أولاً إلى ، وانقر على أيقونة (خطأ)، ثم انقر على الحقول. انقر على جديد لإنشاء حقل جديد، وأكمل الحقول التالية:
اسم الحقل: الاسم التقني للحقل
تسمية الحقل: التسمية التي سيتم عرضها للحقل
نوع الحقل: نوع الحقل الذي يجب أن يشير إليه هذا الحقل المرتبط
مخزن: اترك هذا الحقل غير محدد حيث يمكن استخدام الحقول غير المخزنة فقط لتجميع السطور.
النموذج المرتبط: إذا كان نوع الحقل one2many أو many2many أو many2one، حدد نموذج الحقل الأصلي للتجميع حسبه.
تعريف الحقل المرتبط: المسار التقني إلى الحقل الذي تريد التجميع حسبه
Example
للتجميع حسب فريق المبيعات للشريك التجاري، عيّن تعريف الحقل المرتبط إلى
move_id.team_id.
تجميع السطور¶
لتجميع السطور، انتقل إلى علامة التبويب السطور في التقرير المطلوب، انقر على السطر الذي تريد تجميعه، وحرر حقل تجميع حسب. أدخل الاسم التقني (اسم الحقل) للحقل لاستخدامه كمفتاح تجميع.
نصيحة
للعثور على قائمة بجميع حقول النموذج وأسمائها التقنية، انتقل إلى ، وانقر على أيقونة (خطأ برمجي)، ثم انقر على الحقول. يتم إدراج الاسم التقني لكل حقل في عمود اسم الحقل.
انظر أيضًا
إعداد تقرير ضريبي مخصص¶
إعدادات التقرير¶
نصيحة
جميع المصطلحات التقنية ووظائف محرك التقارير في 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
قيد الإقفال¶
لإقفال الضرائب، يجب تحديد مجموعة ضريبية لكل ضريبة مستخدمة في تقرير الضرائب المخصص الخاص بك. للقيام بذلك، افتح تطبيق المحاسبة، وانتقل إلى ، وافتح الضريبة التي تتطلب مجموعة ضريبية، وانقر على علامة التبويب خيارات متقدمة، ثم حدد مجموعة في حقل المجموعة الضريبية. بمجرد التعيين، انقر على أيقونة (سهم لليمين) وحدد كلاً من حساب الضرائب المستحقة الدفع و:guilabel:حساب الضرائب المستحقة القبض.
نصيحة
عندما يتم إعداد كل شيء، تأكد من اختبار تقريرك عن طريق إنشاء فواتير وفواتير شراء وإشعارات دائنة باستخدام الضرائب الخاصة بذلك التقرير. أخيرًا، اختبر قيد الإقفال نفسه.
إذا كنت تريد إخفاء حساب معين من الظهور في قيد إقفال الضرائب، انتقل إلى ، وحدد الضريبة، وانقر على أيقونة (ضبط الإعدادات). من هناك، حدد مربع قيد إقفال الضرائب لضبط ظهوره.
انظر أيضًا