التقارير المخصصة

يأتي أودو مزوداً بإطار عمل قوي وسهل الاستخدام لإعداد التقارير. يتيح لك المحرك إنشاء تقارير جديدة، مثل التقارير الضريبية أو الميزانيات العمومية و كشوفات الدخل مع التجميعات المحددة و المخططات.

مهم

قم بتفعيل وضع المطور للوصول إلى واجهة إنشاء التقارير المحاسبية.

لإنشاء تقرير جديد، افتح تطبيق المحاسبة وانتقل إلى Configuration ‣ Accounting Reports. من هنا، يمكنك إما إنشاء تقرير جذر أو متغير.

التقارير الجذرية

يمكن اعتبار التقارير الجذرية تقارير محاسبية عامة ومحايدة. وهي بمثابة نماذج تُبنى عليها الإصدارات المحاسبية المحلية. إذا لم يكن التقرير يحتوي على تقرير جذري، فسيتم اعتباره تقريراً جذرياً بحد ذاته.

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. حدّث الصفحة؛ أصبح التقرير الآن متاحًا ضمن Accounting ‣ Reporting.

ملاحظة

الحالات التي تتطلب إنشاء تقرير جذري جديد نادرة، كما هو الحال عندما تطلب السلطات الضريبية في دولة ما نوعاً جديداً ومحدداً من التقارير.

المتغيرات

المتغيرات هي إصدارات من التقارير الجذرية خاصة بالدول، وبالتالي، تشير دائماً إلى تقرير جذري. لإنشاء متغير، قم بتحديد تقرير عام (جذري) في الحقل التقرير الجذري عند إنشاء تقرير جديد.

عند فتح تقرير جذري من إحدى القوائم الرئيسية لتطبيق المحاسبة، يتم عرض كافة متغيراته في مُحدِّد المتغيرات في الزاوية العليا إلى اليسار من نافذة العرض.

Example

في الصورة التالية، تقرير ضريبة القيمة المضافة (BE) هو بديل التقرير الجذري التقرير الضريبي العادي.

سطور التقرير

بعد إنشاء تقرير (سواء كان جذرًا أو متغيرًا)، تحتاج إلى ملئه بسطور التقرير. يمكنك إما إنشاء سطر جديد بالنقر على Add a line، أو تعديل سطر تقرير موجود بالنقر عليه. تتطلب جميع سطور التقرير بالضرورة الاسم، ويمكن أن يكون لها الرمز إضافي اختياري (من اختيارك) إذا كنت ترغب في استخدام قيمتها في الصيغ.

خيارات بنود المحرك.

التعابير

يمكن أن يحتوي كل سطر تقرير على تعبير واحد أو أكثر. يمكن اعتبار التعبيرات متغيرات فرعية مطلوبة من قبل سطر التقرير. لإنشاء تعبير، انقر على Add a line داخل سطر التقرير.

عند إنشاء تعبير، يجب عليك تحديد التسمية المستخدمة للإشارة إلى ذلك التعبير. لذلك، يجب أن تكون فريدة بين تعبيرات كل سطر. يجب أيضًا الإشارة إلى كل من Computation Engine و:guilabel:الصيغة. يحدد المحرك كيفية تفسير الصيغة (الصيغ) و**الصيغة (الصيغ) الفرعية** الخاصة بك. من الممكن مزج التعبيرات باستخدام محركات حساب مختلفة تحت نفس السطر إذا كنت بحاجة إلى ذلك.

ملاحظة

بناءً على المحرك، قد تكون هناك حاجة أيضاً إلى الصيغ الفرعية.

محرك 'نطاق أودو'

باستخدام هذا المحرك، يتم تفسير الصيغة على أنها نطاق أودو يستهدف كائنات account.move.line.

تتيح لك الصيغة الفرعية تحديد كيفية استخدام بنود الحركة المطابقة للنطاق لحساب قيمة التعبير:

المجموع

والنتيجة هي مجموع كافة أرصدة بنود الحركة المطابقة.

sum_if_pos

والنتيجة هي مجموع كافة أرصدة بنود الحركة المطابقة إذا كان هذا المبلغ موجباً. وإلا، فسيكون "0".

sum_if_neg

والنتيجة هي مجموع كافة أرصدة بنود الحركة المطابقة إذا كان هذا المبلغ سالباً. وإلا، فسيكون "0".

count_rows

النتيجة هي عدد السطور الفرعية لهذا التعبير. إذا كان سطر التقرير يحتوي على قيمة تجميع، فسوف يتوافق هذا مع عدد مفاتيح التجميع المميزة في سطور الحركة المطابقة. وإلا، سيكون عدد سطور الحركة المطابقة.

يمكنك أيضاً وضع علامة - في بداية الصيغة الفرعية لعكس علامة النتيجة.

بند التعبير داخل تقرير البند.

محرك 'علامات تصنيف الضرائب'

تتكون الصيغة المعدة لهذا المحرك من اسم يستخدم لمطابقة علامات التصنيف الضريبية. إذا لم تكن تلك العلامات موجودة عند إنشاء التعبير، فسيتم إنشاؤها.

عند تقييم التعبير، يمكن التعبير عن حساب التعبير تقريباً على النحو التالي: (عدد بنود الحركة مع علامة `+`) - (عدد بنود الحركة مع علامة `- `).

Example

إذا كانت الصيغة هي 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 هو كود العملة مكتوب بأحرف كبيرة، و`الكمية` هي كمية الحد المعبر عنها بتلك العملة.

يمكنك أيضاً استخدام الصيغة الفرعية لـ cross_report لمطابقة تعبير تم إيجاده في تقرير آخر.

محرك 'بادئات أكواد الحساب'

يُستخدم هذا المحرك لمطابقة المبالغ في الحسابات باستخدام بادئات رموز هذه الحسابات كمتغيرات في التعبير الحسابي.

Example

21
يمكن أيضاً أن تكون التعبيرات الحسابية بادئة واحدة، كما هو الحال هنا.

Example

21 + 10 - 5
تقوم هذه الصيغة بإضافة أرصدة بنود الحركة التي تم إجراؤها في الحسابات التي تبدأ رموزها بـ 21 و`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)
تقوم هذه الصيغة بمطابقة الحسابات التي تحتوي علاماتها المرتبطة على المعرف 25.

إذا كانت علامة التصنيف التي أشرت إليها محددة في ملف بيانات، يمكن استخدام ملف xmlid عوضاً عن المعرف.

Example

tag(my_module.my_tag)
تقوم هذه الصيغة بمطابقة الحسابات التي تشمل علاماتها المرتبطة العلامة المشار إيها بواسطة my_module.my_tag.

يمكنك أيضًا استخدام تعبيرات حسابية مع العلامات، مع إمكانية دمجها مع اختيارات البادئة.

Example

tag(my_module.my_tag) + tag(42) + 10
سيتم جمع أرصدة الحسابات الموسومة بـ my_module.my_tag مع أرصدة الحسابات المرتبطة بالعلامة ذات المعرف 42 والحسابات التي تحمل بادئة الرمز 10

يمكن استخدام اللواحق C و`D` بنفس الطريقة مع العلامات.

Example

tag(my_module.my_tag)C
تطابق هذه الصيغة الحسابات ذات العلامة my_module.my_tag ورصيد دائن.

استبعاد البادئة يعمل أيضًا مع العلامات.

Example

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 المحدد حاليًا في التقرير.

يمكن مزج كلتا الصيغتين الفرعيتين بفصلهما بـ ;.

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).

كرر هذه العملية حسب الحاجة. ثم احفظ وأغلق.

في علامة التبويب الخيارات لـ التعبير، املأ حقل الترحيل إلى بصيغة لترحيل الأرصدة دائماً أو ترحيلها فقط عندما يكون المبلغ سالباً. اترك هذا الحقل فارغاً إذا كنت لا تريد استخدام هذه الميزة.

Example

if_below(EUR(0))
ستقوم هذه الصيغة بترحيل المبالغ التي تقل عن 0.00 يورو فقط.

إعداد الضرائب

بعد ذلك، انتقل إلى الإعدادات ‣ الضرائب وانقر على جديد لإنشاء و:ref:تكوين ضرائب جديدة <taxes/configuration> لتقرير الضرائب المخصص الخاص بك. أنشئ ضرائب المبيعات و**المشتريات** الخاصة بك، واملأ جداول الضرائب لجميع الضرائب باستخدام جداول الضرائب المطابقة التي أنشأتها سابقاً. أخيراً، تأكد من تحديد كل من حساب الضريبة المستحقة الدفع وحساب الضريبة المستحقة القبض لكل ضريبة.

Example

إعداد جداول الضرائب.

إدخال الإقفال

لإغلاق الضرائب، يجب تحديد مجموعة ضريبية لكل ضريبة مستخدمة في تقرير الضرائب المخصص الخاص بك. للقيام بذلك، افتح تطبيق المحاسبة، وانتقل إلى الإعدادات ‣ الضرائب، وافتح ضريبة تتطلب مجموعة ضريبية، وانقر فوق علامة التبويب الخيارات المتقدمة، وحدد مجموعة في حقل المجموعة الضريبية. بمجرد التعيين، انقر فوق رمز (السهم الأيمن) وقم بتعيين كل من حساب الضريبة المستحقة الدفع و حساب الضريبة المستحقة القبض.

نصيحة

  • عندما يتم إعداد كل شيء، تأكد من اختبار التقرير الخاص بك عن طريق إنشاء فواتير وفواتير الشراء والإشعارات الدائنة باستخدام الضرائب الخاصة بهذا التقرير. وأخيراً، اختبر قيد الإغلاق نفسه.

  • إذا كنت تريد إخفاء حساب معين من العرض في قيد إغلاق الضرائب، فانتقل إلى الإعدادات ‣ الضرائب، وحدد الضريبة، وانقر فوق رمز (ضبط الإعدادات). من هناك، حدد مربع قيد إغلاق الضرائب لضبط ظهوره.

انظر أيضًا

إغلاق الضرائب