لماذا يمنع النظام حذف المورد برسالة "لا يمكن حذف السجل حيث انه مستعمل بالحقل اخر تواريخ | مورد في ItemDimensionCost"؟

Viewed 5

عند محاولة حذف مورد من ملف الموردين (مثال: المورد بالكود WS0011000052) يرفض النظام الحذف وتظهر الرسالة التالية:

لا يمكن حذف السجل حيث انه مستعمل بالحقل اخر تواريخ | مورد في ItemDimensionCost بالمعرف ffff00019a6a07582b000100ff0d1543

المشكلة أن المستخدم لا يجد أي مستند أو حركة ظاهرة له مرتبطة بهذا المورد يمكن حذفها أولًا، والرسالة تشير إلى ItemDimensionCost وهو ليس شاشة يتعامل معها المستخدم مباشرة.

ما معنى هذه الرسالة تحديدًا؟ وهل الحقل المذكور يؤثر على تكاليف أو أرصدة المخزون؟ وما هي الطريقة الصحيحة لإتمام حذف المورد؟

1 Answers

الرسالة تشير إلى الحقل data.lastSupplier (آخر مورد) داخل سجلات تكلفة الصنف بالأبعاد ItemDimensionCost.

ما هو هذا الحقل؟

يحتفظ النظام في كل سجل تكلفة (صنف + أبعاد) بمجموعة من البيانات الإحصائية بجانب التكلفة والكمية: «آخر تواريخ» (آخر شراء، آخر بيع، آخر تحويل … إلخ) و«آخر مورد» ورّد هذا الصنف بهذه الأبعاد. هذه بيانات معلوماتية للعرض والتقارير فقط، ولا تدخل في حساب التكلفة ولا في الأرصدة والكميات.

وبما أن كود المورد مسجّل في هذا الحقل، فإن فحص الارتباطات في النظام يمنع حذف المورد حفاظًا على سلامة المراجع — حتى لو لم تكن هناك أي مستندات مرتبطة به.

الحل: تفريغ الحقل ثم إعادة الحذف

١ – خذ نسخة احتياطية من قاعدة البيانات قبل أي تعديل مباشر، ويفضّل تنفيذ الخطوات بالتنسيق مع الدعم الفني.

٢ – تحقّق أولًا من عدد السجلات المتأثرة:

select count(*)
from ItemDimensionCost c
inner join Supplier s on s.id = c.lastSupplier_id
where s.code = '<كود المورد>'

٣ – نفّذ التفريغ:

update c set lastSupplier_id = null
from ItemDimensionCost c
inner join Supplier s on s.id = c.lastSupplier_id
where s.code = '<كود المورد>'

٤ – أعد محاولة حذف المورد من الشاشة، ويُفترض أن تتم العملية بنجاح.

ملاحظات مهمة

لا تحذف سجل ItemDimensionCost نفسه — فهو يحمل تكلفة ورصيد الصنف بهذه الأبعاد، وحذفه يفسد التكاليف. المطلوب تفريغ عمود lastSupplier_id فقط.

  • بعد التفريغ تُفقد معلومة «آخر مورد» لهذه الأصناف فقط (وهي معلومة عرض)، ويعيد النظام تعبئتها عند أول عملية توريد لاحقة للصنف بنفس الأبعاد.
  • الرسالة تعرض أول سجل مانع فقط، وقد تتكرر لأكثر من صنف/أبعاد؛ لذلك يفضّل استخدام الاستعلام أعلاه بكود المورد بدلًا من معالجة السجل الوارد في الرسالة وحده.

قاعدة عامة

نفس الأسلوب ينطبق على أي رسالة من نوع «لا يمكن حذف السجل حيث انه مستعمل بالحقل X في الكيان Y» بشرط أن يكون الحقل إحصائيًا أو معلوماتيًا (آخر مورد، آخر عميل، آخر سعر …). أما إذا كان الارتباط بمستند فعلي (فاتورة شراء، أمر شراء، سند صرف …) فلا يجوز التعديل المباشر على قاعدة البيانات، ويجب حذف أو تعديل المستند من داخل النظام أولًا.