كيف يمكن حذف المستندات المرتبطة تلقائيًا عند حذف فاتورة الشراء؟

Viewed 2

في بعض الحالات يطلب العميل أن يتم حذف المستند المرتبط (مثل سند صرف) تلقائيًا عند حذف مستند آخر (مثل فاتورة الشراء)، باستخدام مسار كيان (Entity Flow).

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

ما الحلول الممكنة لتنفيذ هذا المتطلب، وما هي قيود كل حل؟

1 Answers

الحل المقترح 1: استخدام زر يدوي لحذف المستند المرتبط

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

مثال لمسار كيان يحذف سند الصرف المرتبط (يمكن استيراده من Direct Import Menu Item):

{
  "details" : [ {
    "className" : "com.namasoft.infor.domainbase.util.actions.DeleteRelatedEntityAction",
    "title1" : "Target Type",
    "parameter1" : "PaymentVoucher",
    "title2" : "Finder SQL. eg: select id from CreditNote where ref5Id={id}",
    "parameter2" : "select id from PaymentVoucher where fromDoc_id = {id}",
    "targetAction" : "Manual",
    "description" : "Delete Generated Entity from another entity, should be used in combination with EAGenerateEntityFromEntityAction"
  } ]
}

⚠️ هذا المسار لن يعمل تلقائيًا عند حذف الفاتورة إلا إذا لم يكن هناك أي قيد يمنع حذفها (مثل وجود موافقات أو علاقات أخرى). لذا يُفضّل استخدامه في زر يدوي فقط، حيث يحذف المستخدم سند الصرف أولًا ثم الفاتورة.

الحل المقترح 2: تغيير نقطة التنفيذ في مسار الكيان

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

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