مقدمة
في Odoo، تحدد النماذج كيفية هيكلة البيانات وتخزينها في قاعدة البيانات. كل قطعة من بيانات الأعمال التي تعمل معها، من أوامر المبيعات إلى الفواتير إلى قيود اليومية، تعيش في نموذج.
فهم نماذج Odoo أمر ضروري لكل من المطورين والمستشارين الوظيفيين. النماذج هي أساس بنية بيانات Odoo. إنها تحدد حقول Odoo والعلاقات والمنطق التجاري.
تتناول هذه المقالة أحد أهم النماذج في محاسبة Odoo: account.move.line. سواء كنت تقوم بإنشاء تقارير مخصصة، أو دمج أنظمة خارجية، أو تكوين سير عمل التسوية، ستعمل مع هذا النموذج.
ما هو نموذج account.move.line
يمثل نموذج account.move.line خطوط قيد اليومية الفردية في Odoo. كل خط هو إما مدين أو دائن في قيد اليومية. معًا، يجب أن تتوازن خطوط قيد اليومية: يجب أن تساوي إجمالي المدينين إجمالي الدائنين.
يتم استخدام هذا النموذج في Odoo بواسطة وحدة المحاسبة. إنه تابع لـ account.move، الذي يمثل قيد اليومية نفسه (الفواتير، الفواتير، كشوف الحسابات البنكية، قيود اليومية). يحتوي كل قيد يومية على خط أو أكثر.
يتم تعريف النموذج في وحدة الحساب. تقوم وحدات أخرى بتمديده من خلال وراثة نموذج Odoo. تضيف وحدة المبيعات تفاصيل خط الفاتورة. تضيف وحدة الشراء تفاصيل خط الفاتورة. تضيف وحدة الحساب التحليلي التوزيع التحليلي. تضيف كل وحدة ما تحتاجه دون تكرار الهيكل الأساسي.
الحقول الرئيسية في النموذج
إليك أهم حقول Odoo في نموذج account.move.line. سيساعدك فهم هذه الحقول على العمل بفعالية مع قيود اليومية وبيانات المحاسبة.
1. الاسم
النوع: Char. يخزن هذا الحقل التسمية أو الوصف للخط. إنه مطلوب وعادة ما يتم عرضه في عرض قيود اليومية والتقارير. بالنسبة لخطوط الفواتير، غالبًا ما يأتي من اسم المنتج أو وصف مخصص.
2. move_id
النوع: Many2one (account.move). يربط الخط بقيد اليومية الأب الخاص به. ينتمي كل خط إلى قيد واحد بالضبط. هذه هي العلاقة الرئيسية في النموذج.
3. account_id
النوع: Many2one (account.account). الحساب الذي يتم نشر هذا الخط إليه. مطلوب. يجب أن يكون حسابًا غير عرضي وغير مغلق. يُستخدم لتقارير ورسم بياني للحسابات.
4. المدين
النوع: Float. مبلغ المدين. القيمة الافتراضية هي 0.0. لكل خط، يتم تعيين إما مدين أو دائن، وليس كلاهما. تزيد المدينون من حسابات الأصول والمصروفات.
5. الائتمان
النوع: عائم. مبلغ الائتمان. الافتراضي هو 0.0. تزيد الاعتمادات من المسؤولية وحقوق الملكية وحسابات الإيرادات. يجب أن يساوي مجموع جميع المدينين مجموع جميع الاعتمادات في الحركة.
6. الرصيد
النوع: عائم. حقل محسوب: المدين ناقص الائتمان. يمثل التأثير الصافي للسطر. إيجابي للمدينين، سلبي للاعتمادات. يستخدم في التقارير والمصالحة.
7. partner_id
النوع: Many2one (res.partner). العميل أو البائع أو الطرف الآخر المرتبط بهذا السطر. يستخدم لتتبع المستحقات والمدفوعات، وتقارير الشيخوخة، والمصالحة.
8. التاريخ
النوع: تاريخ. التاريخ الفعلي للسطر. عادة ما يتم وراثته من الحركة الأصلية. يستخدم لإغلاق الفترات، والتقارير، والشيخوخة.
9. تاريخ الاستحقاق
النوع: تاريخ. تاريخ الاستحقاق للدفع. ذو صلة بالمستحقات والمدفوعات. يستخدم لتقارير الشيخوخة وجدولة المدفوعات.
10. currency_id
النوع: Many2one (res.currency). العملة الخاصة بالسطر. يمكن أن تختلف عن عملة الشركة للمدخلات متعددة العملات.
11. amount_currency
النوع: عدد عشري. المبلغ بالعملة الخاصة بالسطر. يُستخدم عندما تكون قيود اليومية بعملة أجنبية. مع currency_id، يمكّن المحاسبة متعددة العملات.
12. quantity
النوع: عدد عشري. الكمية الاختيارية. تُستخدم لخطوط المنتجات (الفواتير، الفواتير المستحقة). تمكّن من إعداد تقارير قائمة على الكمية وحسابات سعر الوحدة.
13. product_id
النوع: Many2one (product.product). المنتج المرتبط بهذا السطر. يتم تعبئته عندما يأتي السطر من طلب بيع أو طلب شراء أو سطر فاتورة.
14. product_uom_id
النوع: Many2one (uom.uom). وحدة القياس للكمية. تُستخدم مع product_id لعرض الكمية بشكل صحيح وتحويلها.
15. price_unit
النوع: عدد عشري. سعر الوحدة. يُستخدم مع الكمية لحساب المبالغ على فواتير وسطور الفواتير المستحقة.
16. tax_ids
النوع: Many2many (account.tax). الضرائب المطبقة على هذا السطر. يقوم Odoo بإنشاء خطوط إضافية لمبالغ الضرائب عند النشر. تُستخدم لحساب ضريبة القيمة المضافة والضرائب الأخرى.
17. tax_line_id
النوع: Many2one (account.tax). بالنسبة لخطوط الضرائب، يشير هذا إلى الضريبة التي أنشأت الخط. يميز خطوط الضرائب عن خطوط الحساب العادية.
18. analytic_account_id
النوع: Many2one (account.analytic.account). الحساب التحليلي لتتبع التكاليف والإيرادات. يُستخدم عند تفعيل المحاسبة التحليلية.
19. analytic_distribution
النوع: Json أو نص. يخزن التوزيع التحليلي عبر حسابات تحليلية متعددة. يحل محل analytic_account_id في إصدارات أودو الأحدث عند استخدام الخطط التحليلية.
20. ref
النوع: Char. عادة ما يكون مرتبطًا بالحركة الأصلية. مرجع خارجي أو ملاحظة. يُعرض في التقارير ويُستخدم لمطابقة التسويات.
21. narration
النوع: نص. عادة ما يكون مرتبطًا بالحركة الأصلية. ملاحظة داخلية أو ملاحظة. لا يتم طباعتها على الوثائق الموجهة للعملاء بشكل افتراضي.
22. journal_id
النوع: Many2one (account.journal). دفتر اليومية للحركة الأصلية. يُستخدم للتصفية والتقارير حسب الدفتر.
23. company_id
النوع: Many2one (res.company). الشركة. في إعدادات الشركات المتعددة، تنتمي كل سطر إلى شركة واحدة. يؤثر على رؤية السجلات والتوحيد.
24. reconciled
النوع: Boolean. يشير إلى ما إذا كان السطر قد تم تسويته بالكامل. يُستخدم لتصفية العناصر غير المسواة في عروض التسوية.
25. full_reconcile_id
النوع: Many2one (account.full.reconcile). يربط جميع الأسطر التي تم تسويتها معًا. يمكّن من تتبع مجموعات التسوية.
26. payment_id
النوع: Many2one (account.payment). لأسطر الدفع، يربط بسجل الدفع. يُستخدم عند تسوية الفواتير مع المدفوعات.
27. statement_id
النوع: Many2one (account.bank.statement). لأسطر بيانات البنك، يربط بالبيان. يُستخدم في تسوية البنك.
28. statement_line_id
النوع: Many2one (account.bank.statement.line). يربط بسطر بيان البنك المحدد. يُستخدم عند مطابقة الحركات مع المعاملات البنكية.
29. display_type
النوع: اختيار. يمكن أن يكون 'line_section' أو 'line_note' لعناوين الأقسام والملاحظات في سجل اليومية. هذه الخطوط ليس لها مدين أو دائن وهي للعرض فقط.
30. create_date
النوع: تاريخ ووقت. يخزن متى تم إنشاء السجل. يتم إدارته تلقائيًا بواسطة Odoo. مفيد للتدقيق.
31. write_date
النوع: تاريخ ووقت. يخزن متى تم تعديل السجل آخر مرة. يتم إدارته تلقائيًا. يساعد في تتبع التغييرات بمرور الوقت.
كيف يتم استخدام هذا النموذج في سير العمل التجاري
1. فواتير العملاء
عند تأكيد فاتورة، يقوم Odoo بإنشاء سجلات account.move.line. تذهب خطوط الإيرادات إلى حسابات الدخل. تذهب خطوط الحسابات المستحقة إلى حساب العميل المستحق. يتم إنشاء خطوط الضرائب لكل ضريبة. يرتبط partner_id بالعميل للتقادم والمصالحة.
2. فواتير الموردين
تقوم الفواتير بإنشاء خطوط للنفقات، وضريبة القيمة المضافة المدخلة، والمستحقات. تحتوي كل خط على account_id، ومدين أو دائن، وpartner_id. الهيكل يعكس فواتير العملاء ولكن مع أنواع حسابات مختلفة.
3. المصالحة البنكية
تتطابق خطوط بيان البنك مع خطوط الحركة عبر statement_line_id. عند المصالحة، يقوم Odoo بربط الخطوط من خلال full_reconcile_id. يتم تعيين الحقل المعاد تسويته إلى True.
4. إدخالات السجل اليدوي
يقوم المستخدمون بإنشاء إدخالات سجل متعددة الخطوط. تحتوي كل خط على حساب، مدين أو دائن، وشريك اختياري. يفرض Odoo أن تكون المدينين مساوية للدائنين قبل النشر.
5. التقارير التحليلية وتكاليف
عندما يتم تمكين المحاسبة التحليلية، تحمل الخطوط معرف الحساب التحليلي أو توزيع التحليل. تقوم التقارير بتجميع البيانات حسب الحساب التحليلي لعرض التكاليف والإيرادات حسب المشروع أو القسم أو بُعد آخر.
كيف يقوم المطورون بتمديد هذا النموذج
يقوم المطورون بتمديد account.move.line باستخدام عدة أنماط. يعتبر وراثة نموذج Odoo الآلية الرئيسية.
وراثة النموذج
استخدم _inherit = 'account.move.line' لتمديد النموذج. أضف حقول Odoo جديدة، أو تجاوز الطرق، أو أضف قيود. يحتفظ النموذج الموروث في Odoo بتغييراتك في وحدة منفصلة لتسهيل التحديثات.
إضافة الحقول
حدد حقول Odoo جديدة في النموذج الموروث. استخدم نوع الحقل الصحيح: Char، Many2one، Boolean، Integer، Text، Selection. ضع في اعتبارك الحقول المعتمدة على الشركة للشركات المتعددة. كن حذرًا مع الحقول المحسوبة واعتمادياتها.
امتدادات بايثون
تجاوز create، write، أو unlink لإضافة منطق. استخدم super() لاستدعاء الأصل. تجنب كسر قاعدة المدين يساوي الدائن. يكشف نموذج API في Odoo عن هذه الطرق للتكاملات الخارجية.
استوديو Odoo
يتيح لك Odoo Studio إضافة حقول إلى account.move.line بدون كود. جيد للتخصيصات السريعة مثل التسميات أو العلامات الإضافية. بالنسبة للمنطق المعقد أو قواعد التسوية، فإن الوحدات المخصصة أكثر قابلية للصيانة.
أفضل الممارسات
- لا تقم بإنشاء أو تعديل خطوط الحركة مباشرة دون المرور عبر الحركة. استخدم واجهة برمجة التطبيقات الخاصة بالحركة (مثل line_ids) حتى تتمكن Odoo من الحفاظ على الاتساق وتشغيل جميع الفحوصات.
- عند بناء التقارير، قم بتصفية بواسطة move_id.state = 'posted' لاستبعاد المسودات والإدخالات الملغاة.
- استخدم account_id مع نوع الحساب الصحيح (قابل للتحصيل، قابل للدفع، إلخ) للحصول على سلوك صحيح في التقدم والتسوية.
- عند التكامل عبر واجهة برمجة التطبيقات، قم بإنشاء الحركة أولاً، ثم أضف الخطوط. تأكد من أن المدينين يساوون الدائنين قبل النشر.
- بالنسبة للحقول المخصصة، استخدم بادئة
x_أو بادئة وحدة لتجنب التعارضات مع إصدارات Odoo المستقبلية.
الأخطاء الشائعة
- تعيين كل من المدين والدائن على نفس السطر. يجب أن يحتوي كل سطر على إما مدين أو دائن، وليس كليهما.
- إنشاء حركات غير متوازنة. يجب أن تساوي مجموع المدينين مجموع الدائنين. تتحقق Odoo من ذلك عند النشر.
- تعديل الخطوط المنشورة دون استخدام سير العمل الصحيح للإلغاء أو التعديل. يجب تعديل الإدخالات المنشورة عبر حركات جديدة، وليس تعديلات مباشرة.
- نسيان تعيين partner_id على خطوط القابل للتحصيل والقابل للدفع. هذا يكسر تقارير التقدم والتسوية.
- تجاوز الطرق الأساسية دون استدعاء super(). يمكن أن يؤدي ذلك إلى كسر التسوية أو القفل أو وحدات أخرى.
الخاتمة
نموذج account.move.line هو محور محاسبة Odoo. يخزن كل مدين ودائن في قيود اليومية، والفواتير، والفواتير. سيساعدك فهم حقوله وكيفية توسيع الوحدات له في تكوين Odoo وتخصيصه ودمجه بفعالية.
سواء كنت مستشارًا وظيفيًا يقوم برسم تدفقات المحاسبة أو مطورًا يقوم ببناء تقارير مخصصة وعمليات تكامل، فإن فهمًا قويًا لـ account.move.line سيوفر الوقت ويمنع الأخطاء.
هل تحتاج إلى مساعدة في تنفيذ Odoo الخاص بك؟
تساعد Dasolo الشركات على تنفيذ وتخصيص وتحسين Odoo. نحن متخصصون في تكاملات API وتطوير Odoo. يتمتع فريقنا بخبرة عميقة في بنية بيانات Odoo ونماذج مثل account.move.line.
إذا كنت بحاجة إلى مساعدة في تنفيذ Odoo الخاص بك، أو الوحدات المخصصة، أو عمليات التكامل، فنحن هنا للمساعدة. احجز عرضًا توضيحيًا لمناقشة مشروعك.