ما معنى رسالة "There are inconsistent transfer costs" وكيف يتم حلها؟

Viewed 6

تظهر لدينا رسالة تحذير حرجة (Critical Error) بالنص التالي:

There are inconsistent transfer costs, please contact customer support - THIS IS URGENT

ما سبب ظهور هذه الرسالة؟ وما الخطوات اللازمة لحلها؟

1 Answers

ما معنى الرسالة؟

تظهر هذه الرسالة عندما يكتشف النظام عدم تطابق في تكلفة التحويلات المخزنية بين المخازن.

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

ملاحظة مهمة: هذه المشكلة تخص طريقة تسعير المتوسط (Average) فقط، ولا تظهر مع طريقة الوارد أولًا صادر أولًا (FIFO).

أسباب ظهورها

السبب الأكثر شيوعًا هو التحويلات على المكشوف (Overdraft Transfers):

التحويل على المكشوف هو أن يتم صرف الصنف من المخزن المصدر قبل توفّر رصيده فعليًا (يصبح الرصيد سالبًا وقت التحويل). في هذه الحالة لا تكون التكلفة معلومة بشكل صحيح وقت التحويل، فتنشأ فروقات بين التكلفة الخارجة والداخلة، وينتج عنها عدم اتساق في التكاليف.

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

قبل الحل: مراجعة التحويلات المتأثرة وتواريخها

قبل تحديد تاريخ البدء، يُنصح بتشغيل الاستعلام التالي لعرض المستندات المتأثرة وتواريخها ومقدار الفرق في التكلفة، حتى تختار تاريخ البدء المناسب بناءً على أقدم مستند به مشكلة فعلية:

select i.originType, i.originCode, i.originId, i.valueDate, abs(i.totalCost-i.additionalCost-o.totalCost)
from CostInTransLine i
inner join CostOutTransLine o on i.originLineId = o.originLineId
where i.originType in ('StockTransfer','IssueStockTransfer','ReceiptStockTransfer')
  and abs(i.totalCost-i.additionalCost-o.totalCost) >= 1
  and i.valueDate >= '20250201'
order by i.strSequence

يعرض الاستعلام لكل تحويل غير متطابق: نوع المستند وكوده وتاريخه ومقدار الفرق. راجع النتائج وحدّد أقدم تاريخ (valueDate) تريد البدء منه، ثم استخدمه في الخطوة التالية.

كيفية الحل

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

يتم تشغيل الأداة من خلال فتح الرابط التالي في المتصفح (مع استبدال yyyyMMdd بالتاريخ المطلوب البدء منه):

http://<server>/erp/utils?util=com.namasoft.modules.supplychain.domain.utils.FastReprocessInvalidTransfersFromDate-yyyyMMdd

مثال: لإعادة المعالجة اعتبارًا من 1 فبراير 2025:

http://<server>/erp/utils?util=com.namasoft.modules.supplychain.domain.utils.FastReprocessInvalidTransfersFromDate-20250201

ماذا تفعل الأداة؟

  1. تبحث عن التحويلات التي بها فرق بين التكلفة الداخلة والخارجة اعتبارًا من التاريخ المحدد.
  2. تجهّز قائمة بتسلسلات التكلفة المتأثرة وتطلب من النظام إعادة معالجتها.
  3. تبدأ معالج طلبات المخزون بإعادة احتساب هذه التكاليف بدءًا من التاريخ المحدد.

إرشادات عند التشغيل:

  • اختر التاريخ بحكمة: كلما كان التاريخ أقدم زاد عدد التسلسلات التي تُعاد معالجتها وطال زمن التنفيذ. يُفضّل البدء من أقرب تاريخ معقول تظهر عنده المشكلة.
  • لا يمكن تشغيل عملية إعادة معالجة جديدة أثناء وجود عملية أخرى قيد التنفيذ؛ إذا ظهرت رسالة بأن هناك عملية جارية بالفعل، انتظر حتى تنتهي.
  • بعد اكتمال المعالجة، تختفي الرسالة الحرجة تلقائيًا عند التحقق التالي طالما أصبحت التكاليف متطابقة.