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

يأتي 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

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

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

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

محرك 'وسوم الضرائب'

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

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

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(xml_id | report_id)

يُستخدم لمطابقة تعبير من تقرير آخر مستهدف بواسطة xml_id أو معرف التقرير نفسه.

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

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

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
هي صيغة فرعية صحيحة تمزج كلا السلوكين.

محرك 'دالة بايثون مخصصة'

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

الأعمدة

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

أعمدة التقرير.

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

تجميع السطور

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

ملاحظة

يتطلب تجميع السطور أن يحتوي التقرير على سطور تقرير صريحة يمكن تعديلها. التقارير المؤجلة، على سبيل المثال، لا تدعم تجميع السطور لأنها تستخدم سطورًا ديناميكية يتم إنشاؤها.

إنشاء حقل جديد على عنصر اليومية

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

  • اسم الحقل: الاسم التقني للحقل

  • تسمية الحقل: التسمية التي سيتم عرضها للحقل

  • نوع الحقل: نوع الحقل الذي يجب أن يشير إليه هذا الحقل المرتبط

  • مخزن: اترك هذا الحقل غير محدد حيث يمكن استخدام الحقول غير المخزنة فقط لتجميع السطور.

  • النموذج المرتبط: إذا كان نوع الحقل one2many أو many2many أو many2one، حدد نموذج الحقل الأصلي للتجميع حسبه.

  • تعريف الحقل المرتبط: المسار التقني إلى الحقل الذي تريد التجميع حسبه

    Example

    للتجميع حسب فريق المبيعات للشريك التجاري، عيّن تعريف الحقل المرتبط إلى move_id.team_id.

تجميع السطور

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

نصيحة

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

إعداد تقرير ضريبي مخصص

إعدادات التقرير

نصيحة

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

لإنشاء تقرير ضريبي مخصص، افتح تطبيق المحاسبة، انتقل إلى الإعدادات ‣ تقارير المحاسبة، ثم انقر على جديد:

  • أدخل اسماً لتقريرك.

  • حدد التقرير الجذر.

  • ضمن حقل التوفر، حدد يطابق البلد، ثم حدد البلد المطابق لشركتك.

بعد ذلك، أنشئ سطر تقرير من خلال النقر على إضافة سطر. بمجرد إنشائه، انقر على سطر التقرير هذا لإعداده:

  • انقر على إضافة سطر مرة أخرى لإنشاء تعبير وقم بتسميته.

  • في علامة التبويب التعريف، حدد محرك الحساب لهذا التعبير حسب السيناريوهات التالية:

في هذا السيناريو، شركتك تستخدم شبكات الضرائب:

  • حدد علامات الضرائب كمحرك الحساب. يستخدم Odoo هذا الحقل لربط سطر التقرير بضرائبك.

  • في حقل الصيغة، اكتب معرف الشبكة القصير الخاص بك (مثل vat_sales_base). يقوم Odoo تلقائياً بإنشاء متغيرات + و - من هذه العلامة لتعيينها داخل الإعدادات ‣ الضرائب.

  • في حقل الصيغة الفرعية، أدخل إما base للإبلاغ عن المبلغ غير الخاضع للضريبة، أو tax للإبلاغ عن مبلغ الضريبة الفعلي المحصل/المدفوع.

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

بدلاً من ذلك، يمكنك:

  • حدد تجميع الصيغ الأخرى كمحرك الحساب. يستخدم Odoo هذا الحقل لإجراء عمليات حسابية على السطور الموجودة بالفعل في التقرير بدلاً من فحص المعاملات الأولية.

  • في حقل الصيغة، استخدم الجبر الأساسي بالإشارة إلى رموز السطور الخاصة بك (مثل LINE_10 - LINE_20).

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

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

Example

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

إعداد الضريبة

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

Example

إعدادات شبكات الضرائب.

قيد الإقفال

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

نصيحة

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

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

انظر أيضًا

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