
ترحيل البيانات والأرصدة الافتتاحية إلى Odoo: ترتيب الاستيراد والإقفال
كيف تُنقل أرصدة العملاء والموردين والمخزون إلى Odoo دون أن تنكسر المطابقة مع النظام القديم؟ ترتيب استيراد البيانات، ثم الأرصدة فاتورة بفاتورة، ثم إقفال الفترة بتاريخ القفل.
ملخص
- بحسب توثيق Odoo الرسمي، الإصدار 19.0: أداة الاستيراد العامة تعمل على أي كائن بيانات بملف CSV أو XLSX، وتربط السجلات بعمود المعرّف الخارجي (External ID)، وتشترط استيراد السجل المشار إليه قبل السجل الذي يشير إليه.
- ويتضمن دليل Get started في توثيق المحاسبة خطوات الانتقال من نظام آخر: البيانات الأساسية أولاً، ثم القيود الافتتاحية — ميزان المراجعة قيداً مستورداً متوازناً بذاته، والفواتير المفتوحة، والمخزون، وأرصدة البنوك.
- لا تُحسب أرصدة العملاء والموردين مرتين: يحل محل حسابيهما في الميزان الافتتاحي حسابان وسيطان، وتُستورد كل فاتورة مفتوحة بمفردها بالمبلغ المتبقي منها على الحساب الوسيط.
- كميات المخزون تُستورد من صفحة Physical Inventory بعد ضبط تكلفة الأصناف، وقيمته يحملها الميزان الافتتاحي مساويةً للتكلفة مضروبة في الكمية.
- الأصول الثابتة: يصف التوثيق إنشاءها فرادى أو من نموذج أصل، ولا يصف استيراد الأصول القائمة ولا مجمع إهلاكها.
- بعد تصفير الحسابات الوسيطة ومطابقة الأرصدة بميزان المراجعة القديم، تُقفل الفترة السابقة بتحديد Lock Everything من Accounting ‣ Accounting ‣ Lock Dates.
ترتيب البيانات الأساسية وأداة الاستيراد
الاستيراد في Odoo عام: من عرض أي قائمة سجلات، أيقونة Action ثم Import records، بقالب جاهز تُطابق أعمدته حقول Odoo مسبقاً (مثال موثَّق: Import Template for Customers) أو بملف خاص تُطابَق أعمدته يدوياً، ثم Test فـImport.
وعمود المعرّف الخارجي (External ID) هو أداة الربط بين الملفات: معرّف فريد لكل سجل، يُفضَّل أن يبدأ باسم مصدره («company_1» لا «1»)، تُستورد به العلاقات (عمود مثل Related Company/External ID) ويُحدَّث به السجل نفسه عند إعادة الاستيراد بدل تكراره؛ وتغييره أو حذفه قد يُنشئ سجلاً مكرراً. والشرط الحاكم للترتيب: «the records of the related object need to be imported first». ويطبّقه دليل الانتقال على المحاسبة: شجرة الحسابات تُنشأ قبل أي سجل آخر، وفئات الأصناف قبل الأصناف. والحساب الذي له نظير في الشجرة القياسية لحزمة التوطين يُعاد تسميته وترقيمه ولا يُحذف، لأن بعض الحسابات القياسية افتراضية على الأصناف وفئاتها وجهات الاتصال وفي إعدادات المحاسبة؛ وما عداه يُنشأ أو يُستورد بحد أدنى Code وAccount Name وType (والكود اختياري في Odoo 20 الصادر في سبتمبر 2026). أما الضرائب المصرية فتصل معدَّة مع حزمة التوطين l10n_eg، «حزمة التوطين المالي الافتراضية» لمصر بنص التوثيق، فالخطوة العملية مراجعة مطابقتها لأكواد الضرائب في النظام القديم لا استيرادها من جديد.
الأرصدة الافتتاحية
يعرض التوثيق ثلاثة توقيتات للانتقال: نهاية السنة المالية، وهو الأيسر لأنه يقلل البيانات المنقولة؛ أو نهاية فترة ضريبية؛ أو منتصفها، وهو ما لا يوصي به لأن إقرار تلك الفترة يجمع حينئذ بيانات النظامين.
ويُنقل ميزان المراجعة القديم إلى قالب استيراد القيود من Accounting ‣ Accounting ‣ Journal Entries: قيد واحد، مرجعه وتاريخه ويوميته في سطره الأول فقط، ولكل حساب سطر بمدين أو بدائن، دون 0.00 ودون قيم سالبة. ويجب أن يتوازن الميزان بذاته، ويُستورد مسودةً تُراجَع ثم تُرحَّل. ولكل يومية بنك أو نقدية أو بطاقة ائتمان كشف افتتاحي يُضبط فيه Starting Balance على رصيد الحساب الفعلي قبل أول حركة؛ وتضيف ملاحظات إصدار Odoo 20 أن أي قيد يمس حساباً بنكياً يجب أن ينشأ من حركة بنكية.
أرصدة العملاء والموردين: فاتورة بفاتورة
إذا حمل ميزان المراجعة رصيد حساب العملاء ثم أُنشئت الفواتير المفتوحة أيضاً، تضاعف الرصيد، كما يبيّن مثال التوثيق نفسه، والأمر كذلك في الموردين. وحلّه الحسابات الوسيطة: يُستبدل في ملف الميزان حساب العملاء بحساب AR Clearing وحساب الموردين بحساب AP Clearing.
ثم تُستورد الفواتير المفتوحة، ومعها إشعارات الدائن والمرتجعات، فاتورةً فاتورة بقوالب Odoo من قوائمها تحت Accounting ‣ Customers وAccounting ‣ Vendors. وتحمل كل فاتورة الشريك باسمه المطابق تماماً لجهة الاتصال، ورقمها بشرط ألا يكون موجوداً في قاعدة البيانات، وتاريخها في سنة الرقم نفسها، وتاريخ استحقاق أو شروط سداد لا الاثنين، وسطراً واحداً بالمبلغ المتبقي على الحساب الوسيط؛ ويوصي التوثيق بهذا السطر الواحد بدل بنود الفاتورة الأصلية حتى لا تتأثر حسابات الضريبة مرتين. والفاتورة بعملة أجنبية تحتاج قبل الاستيراد سعر صرف تاريخياً بتاريخها. ثم تُعتمد المسودات المستوردة (Actions ‣ Confirm Entries).
والاختبار محدد سلفاً: الفواتير المفتوحة ناقص إشعارات الدائن تساوي رصيد العملاء في الميزان الافتتاحي، وفواتير الموردين ناقص المرتجعات تساوي رصيد الموردين؛ فيصير رصيد الحسابين الوسيطين صفراً بعد الاستيراد.
المخزون: الكميات والقيمة
ينص التوثيق على أن إدخال المخزون الافتتاحي يتبع الخطوات نفسها أياً كان المعيار المحاسبي أو طريقة التقييم؛ وتُضبط الطريقة وحساباتها مسبقاً من Accounting ‣ Configuration ‣ Settings، قسم Inventory Valuation. وتُدخل تكلفة الأصناف أولاً، ثم يُعدّ الجرد في قالب استيراد تسويات المخزون من Inventory ‣ Operations ‣ Physical Inventory — الصنف، والكمية في Counted، والموقع ورقم التشغيلة أو الرقم التسلسلي حيث يلزم — ويُستورد ويُطبَّق بـApply All مع سبب في Inventory Reason مثل «Opening inventory» وتاريخ في Counting Date، ثم Update Quantities.
والقيمة يحملها ميزان المراجعة الافتتاحي: يجب أن تساوي حسابات المخزون فيه مجموع التكلفة مضروبة في الكمية لكل الأصناف. ويبيّن تقرير Inventory Valuation (من Accounting ‣ Review) في بند Stock Variation أي فرق بين قيمة المخزون المرحَّلة محاسبياً وتقييمه المسجل في تطبيق المخزون.
الأصول الثابتة
يُسجَّل الأصل على حساب من نوع Fixed Assets أو Non-current Assets، ويصف توثيق الأصول إنشاءه من Accounting ‣ Accounting ‣ Assets ‣ Create، أو من بند في يومية المشتريات، أو بسرعة أكبر من نموذج أصل (Assets Models) حين يتكرر النوع نفسه؛ وفي Odoo 20 تحل نماذج الإهلاك (depreciation models) محل نماذج الأصول بحسب ملاحظات إصداره. ولا تصف صفحة الأصول ولا دليل الانتقال استيراد الأصول القائمة أو مجمع إهلاكها. ومن الناحية العملية تؤخذ تكلفة كل أصل ومجمع إهلاكه حتى تاريخ الانتقال وعمره المتبقي من السجل القديم، وتُراجَع عليه لوحة الإهلاك قبل اعتماد الأصل، لأن الميزان الافتتاحي يحمل ذلك المجمع أصلاً.
المطابقة والإقفال
قبل تحديد أي قفل، تُطابَق الأرصدة المرحَّلة بميزان مراجعة النظام القديم ودفاتره المساعدة حساباً حساباً — بتقارير Trial Balance وGeneral Ledger وAged Receivable/Payable وPartner Ledger — وتُوثَّق المطابقة بمذكرة موقعة تُحفظ مع ملف الترحيل. والخطوة الختامية في دليل الانتقال التحقق من توازن كل حساب وسيط وتغيير نوعه (Account Type) إلى Off-Balance Sheet. ثم تُقفل الفترة القديمة بتحديد Lock Everything من Accounting ‣ Accounting ‣ Lock Dates، فلا يُعدَّل قيد مرحَّل بتاريخ محاسبي سابق عليه أو مساوٍ له، ويُرحَّل أي قيد جديد مؤرخ داخله في اليوم التالي لتاريخ القفل؛ وتواريخ الإقفال الأخرى والاستثناءات موضوع مستقل. ويبقى الالتزام بحفظ سجلات النظام القديم قائماً، للمدة التي تحددها المادة 38 من قانون الإجراءات الضريبية الموحد 206 لسنة 2020، وتفصيلها في الدفاتر التجارية الإلزامية والإلكترونية.
ما يترتب على المنشآت
- تنظيف بيانات العملاء والموردين والمنتجات ودمج تكرارها قبل التصدير من النظام القديم، لا بعد الاستيراد.
- إعداد شجرة الحسابات أولاً بإعادة تسمية الحسابات القياسية وترقيمها لا حذفها، ثم باقي البيانات الأساسية بمعرّف خارجي ثابت لكل سجل طوال المشروع.
- الانتقال في نهاية سنة مالية أو فترة ضريبية، لا في منتصف فترة ضريبية.
- استبدال حسابي العملاء والموردين في الميزان الافتتاحي بحسابين وسيطين، واستيراد كل فاتورة مفتوحة بمبلغها المتبقي عليهما.
- ضبط تكلفة الأصناف قبل استيراد الجرد، ومطابقة حسابات المخزون في الميزان للتكلفة مضروبة في الكمية.
- أخذ تكلفة كل أصل ومجمع إهلاكه وعمره المتبقي من السجل القديم قبل إدخاله.
- الحصول على مذكرة مطابقة موقعة، والحسابات الوسيطة صفرية، قبل تحديد Lock Everything.
ويتولى قسم استشارات أنظمة ERP بالمكتب تخطيط الترحيل وتنفيذ استيراد البيانات ومطابقة الأرصدة قبل اعتماد الإقفال.
محمود ناصف — محاسب قانوني، الشريك المؤسس
عضو جمعية المحاسبين والمراجعين المصرية
عضو جمعية الضرائب المصرية
عضو الجمعية المصرية للمالية العامة والضرائب
تنويه: أُعدت هذه النشرة لأغراض العلم العام بالتشريع الساري في تاريخ نشرها، ولا تُشكّل رأياً مهنياً ولا استشارة ضريبية أو قانونية بشأن واقعة بعينها، ولا يجوز التعويل عليها بديلاً عن مشورة مبنية على فحص ظروف كل حالة على حدة. ولا تتحمل «ناصف وشركاه الدولية — محاسبون ومراجعون» مسؤولية عن أي تصرف اتُّخذ أو امتُنع عنه استناداً إلى ما ورد بها. وتظل الأحكام الواردة بها رهناً بما قد يصدر من تشريعات أو قرارات لاحقة.
