Nama ERP DocsNama ERP Docs
Home
Namasoft.com
Data Model
GitHub
Home
Namasoft.com
Data Model
GitHub
  • Home

    • Search
    • Guides

      • Entity Flows
      • الفواتير والضرائب والخصومات
      • Supply Chain
      • e-commerce integration (Magento)
      • .
    • Examples
    • Reprocessing Transactions
    • Frequently Asked Questions

      • أسئلة عامة
      • أسئلة شائعة حول تعديل الشاشات
      • أسئلة شائعة عن التنبيهات والرسائل
      • أسئلة عامة عن GUI Post Actions
      • أسئلة شائعة عن مسارات الكيان
      • أسئلة شائعة حول الفواتير والدفع
      • أسئلة في موديول التوزيع والمخازن والمبيعات والمشتريات
      • Supply-chain English FAQ
      • أسئلة شائعة حول موديول التصنيع في نظام Nama ERP
      • أسئلة شائعة حول نقاط البيع
      • أسئلة شائعة عن الاستثمار العقاري
      • أسئلة شائعة في موديول الرواتب والموارد البشرية
      • أسئلة شائعة عن تصميم التقارير
      • أسئلة شائعة حول أداة إنشاء التقارير
      • أسئلة شائعة عن الموافقات
      • أسئلة شائعة حول تطبيقات الهواتف المحمولة في نظام Nama ERP
      • أسئلة شائعة حول فلترة الحقول
      • Database Related Errors FAQ
      • .
    • AI Generated Entity Flows Documentation

      • Core
      • Accounting Module
      • AI Module
      • Contracting Module
      • CRM Module
      • EGTax Reader Module
      • Freight Management System Module
      • Hospital Management System Module
      • HR Module
      • e-commerce Integration Module
      • Manufacturing Module
      • POS Module
      • Real Estate Module
      • Service Center Module
      • Supply Chain Module
      • .
    • Release Notes

      • 2016
      • 2017
      • 2018
      • 2019
      • 2020
      • 2021
      • 2022
      • 2025
      • .
    • Video Tutorials

      • Supply Chain Videos
      • Report Wizard Videos
      • Human Resources Videos
      • .

أسئلة شائعة حول فلترة الحقول

كيف يمكن فلترة مرجع 1 في جرد البنود ليعرض نفس الأصناف الموجودة في التفاصيل؟

  • السؤال:

أنا أستخدم مرجع 1 في جرد البنود لجلب الأصناف، وأريد أن يظهر فقط نفس الأصناف التي تم اختيارها في التفاصيل. الكود الذي كتبته هو:

{loop(details)}
termsLines.ref1,Equal,{details.item.item.code},OR;
{endloop}
  • الإجابة:

الواضح أنك تريد فلترة حقل termsLines.ref1 بحيث يعرض فقط الأصناف التي تم اختيارها في details.item.item.

لكن يوجد خطأ في الكود المستخدم:

  • عند كتابة شرط الفلترة، يجب أن تكتب اسم الحقل داخل شاشة الصنف (وهي الشاشة التي يتم الفلترة فيها)، وليس اسم الحقل داخل المستند الذي تستعمله.
  • استخدام termsLines.ref1 داخل الشرط غير صحيح، لأن هذا الحقل يُستخدم فقط لتحديد أين سيتم تطبيق الفلتر، وليس داخل شرط الفلترة نفسه.
  • التصحيح:

استخدم الحقول كما هي موجودة في شاشة الصنف، كالتالي:

إذا أردت الفلترة حسب الكود:

{loop(details)}
code,Equal,{details.item.item.code},OR;
{endloop}

وإذا أردت الفلترة بشكل أدق باستخدام رقم المعرف:

{loop(details)}
id,Equal,{details.item.item.id},OR;
{endloop}

Tips

تأكد من أنك تستخدم اسم الحقل الصحيح الموجود في شاشة الكيان الذي يتم الفلترة عليه، وليس اسم الحقل في المستند المصدر.

ما هي أفضل طريقة عند البحث في سند التوريد أو الصرف لإظهار الأصناف بناءً على توفر الرصيد؟

  • في سند الصرف المخزني: عرض الأصناف التي يوجد منها رصيد فقط.
  • في سند التوريد المخزني: عرض الأصناف التي لا يوجد منها رصيد فقط.

أولاً: فلترة الأصناف ذات الرصيد فقط في سند الصرف المخزني

يحتوي الكيان InvItem على سطور باسم quantities مرتبطة بجدول ItemDimensionsQty. يمكنك استخدام هذه العلاقة لفلترة الأصناف التي لها رصيد كما يلي:

JSON for direct import
{
  "forType": "StockIssue",
  "automaticUsage": true,
  "lines": [
    {
      "fieldId": "details.item.item",
      "dynamicFilter": "quantities.data.net,GreaterThan,0,AND;"
    }
  ]
}

ثانياً: فلترة الأصناف التي لا يوجد منها رصيد في سند التوريد المخزني

نظراً لأن الصنف قد لا يحتوي دائماً على بيانات مباشرة في quantities إذا لم يوجد رصيد، فمن الأفضل تحديث حقل مخصص (مثلاً n5) في كيان InvItem يعكس الكمية الكلية المتاحة، ثم استخدامه في الفلترة.

1. إنشاء مهمة مجدولة لتحديث الحقل n5 بقيمة الرصيد المتاح:

JSON for direct import
{
  "scheduleType": "Action",
  "className": "com.namasoft.infor.domainbase.util.actions.EAExecuteUpdateQuery",
  "title1": "Update Query",
  "parameter1": "update i set n5 = coalesce(qty.net,0) from InvItem i\nouter apply (\nselect sum(q.net) net from ItemDimensionsQty q where q.item_id = i.id\n) qty",
  "title2": "Evict Cache After Execution(true,false)",
  "parameter2": "true",
  "actionDescription": "Execute update query specified in first parameter"
}

2. بعد ذلك، فلترة حقل الصنف في سند التوريد بناءً على القيمة الجديدة في الحقل n5:

JSON for direct import
{
  "forType": "StockReceipt",
  "automaticUsage": true,
  "lines": [
    {
      "fieldId": "details.item.item",
      "dynamicFilter": "quantities.data.net,LessThanOrEqual,0,AND;"
    }
  ]
}

ملاحظة

  • يمكنك أيضًا استبدال quantities.data.net بـ n5 مباشرة إذا أردت ربط الفلترة بالحقل المحسوب، ولكن استخدام quantities.data.net يظل أكثر دقة حيث أن n5 يعتمد على تشغيل المهمة.
  • اختر جدول تشغيل المهمة المجدولة بعناية بحيث تحافظ على دقة الحقل n5 وفي نفس الوقت لا تشكل ضغطعا على موارد الخادم وقاعدة البيانات

💡 تحسين تنفيذ التحديث التلقائي للحقل n5 باستخدام مسار كيان

بدلاً من الاعتماد فقط على مهمة مجدولة مستقلة، يمكنك استخدام مسار كيان (Entity Flow) لتحديث الحقل n5 مباشرة بعد أي حركة مخزنية (صرف، توريد، تحويل)، وذلك لتحقيق تحديث فوري وفعال مع تقليل الضغط على النظام.


  • الخطوات المقترحة:
  1. إنشاء مسار كيان جديد
  • يتم تشغيله بعد التأثير الفعلي على قاعدة البيانات (بعد الحفظ النهائي).
  1. تحديد الجداول المستهدفة في قائمة أنواع:
  • StockIssue (صرف مخزني)
  • StockReceipt (توريد مخزني)
  • StockTransfer (تحويل مخزني)
  1. إضافة إجراء من النوع "تشغيل أمر تحديث SQL" بنفس كود المهمة المجدولة:

  2. تفعيل الخيارات التالية في مسار الكيان:

  • ✅ يعمل بعد حفظ المستند نهائيا و التأثير على قاعدة البيانات
  • ✅ انتظار انتهاء معالجة الكميات

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


  • الفائدة من هذا الأسلوب:
  • تحديث آني لـ n5 دون الحاجة لجدولة زمنية.
  • تقليل الضغط على النظام الناتج عن تكرار التنفيذ.
  • المحافظة على دقة الرصيد في كافة الشاشات التي تعتمد على n5.

وإليك المسار جاهز للاستيراد:

JSON for direct import
{
  "entityTypeList": "StockIssueReceiptTransfer",
  "runAfterCommitDocAndEffectOnDB": true,
  "waitForQuantityProcessing": true,
  "details": [
    {
      "className": "com.namasoft.infor.domainbase.util.actions.EAExecuteUpdateQuery",
      "parameter1": "update i set n5 =  coalesce(qty.net,0) from InvItem i\nouter apply (\nselect sum(q.net)  net from ItemDimensionsQty q where q.item_id = i.id\n) qty",
      "parameter2": "true",
      "targetAction": "PostCommit"
    },
    {
      "className": "com.namasoft.infor.domainbase.util.actions.EAExecuteUpdateQuery",
      "parameter1": "update i set n5 =  coalesce(qty.net,0) from InvItem i\nouter apply (\nselect sum(q.net)  net from ItemDimensionsQty q where q.item_id = i.id\n) qty",
      "parameter2": "true",
      "targetAction": "PostDelete"
    }
  ]
}

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

Edit On github
Last Updated:: 6/26/25, 4:15 PM
Prev
أسئلة شائعة حول تطبيقات الهواتف المحمولة في نظام Nama ERP
Next
Database Related Errors FAQ