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

    • Search
    • Guides

      • Entity Flows

        • مقدمة عن مسارات الكيان
        • Field Values Calculator
        • Importing Data from Excel or Queries
        • EAGenerateEntityFromEntityAction
        • .
      • الفواتير والضرائب والخصومات
      • Supply Chain
      • e-commerce integration (Magento)
      • .
    • Examples
    • Reprocessing Transactions
    • Frequently Asked Questions
    • 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
      • .

Field Values Calculator

The article Field Maps in Nama ERP - Complete Guide contains more details about field maps

altCode=mask(code,XXX.XXX.XXX)
  • الحرف X يمثل حرفًا من الكود الأصلي.
  • أي رمز آخر (مثل - أو . أو *) سيتم نسخه كما هو إلى الناتج.

مثال 1:

إذا كان كود الصنف هو 111222333، واستخدمنا mask(code,XXX-XXX*XXX)، سيكون الكود البديل هو 111-222*333.

مثال 2:

إذا كان كود الصنف هو ABC155713، واستخدمنا mask(code,XXX-XXX@XXX)، سيكون الكود البديل هو ABC-155@713.

n1=totalize(details,details.price.unitPrice)
  • لحساب مجموع القيم داخل حقل معين في جدول (grid)، نستخدم الدالة totalize. المثال أعلاه يجمع كل قيم details.price.unitPrice.
n1=totalizeif(details,details.price.unitPrice,select case when {details.item.item.section.code} = 'SEC001' then 1 else 0 end)
  • تجمع القيم فقط إذا تحقق شرط معين. في هذا المثال يتم جمع unitPrice فقط إذا كان section.code يساوي SEC001.
n1=max(details.price.unitPrice)
  • للحصول على أكبر قيمة داخل حقل معين في جدول (grid)، نستخدم الدالة max. المثال أعلاه يجد أكبر قيمة من details.price.unitPrice.
n1=min(details.price.unitPrice)
  • للحصول على أصغر قيمة داخل حقل معين في جدول (grid)، نستخدم الدالة min. المثال أعلاه يجد أصغر قيمة من details.price.unitPrice.
n1=totalizesql(select {details.price.unitPrice} * {details.n1} / {n3})
  • يجمع ناتج عملية حسابية على الحقول باستخدام SQL مدمج.
n1=maxsql(select {details.price.unitPrice} * {details.n1} / {n3})
  • يجد أكبر قيمة لناتج عملية حسابية على الحقول باستخدام SQL مدمج.
n1=minsql(select {details.price.unitPrice} * {details.n1} / {n3})
  • يجد أصغر قيمة لناتج عملية حسابية على الحقول باستخدام SQL مدمج.
n1=sql(select sum(netValue) from SalesInvoice where customer_id = {customer.id})
  • ترجع الدالة ناتج استعلام SQL لحساب إجمالي مبيعات عميل معين.
n1=mlsql(select case when {code} = 'abc' then 5 when {code} = 'cde' then 6 else 7 end)endmlsql
  • نفس وظيفة sql ولكن يمكن كتابة الاستعلام على عدة أسطر.
details.ref1=firstNotEmpty(details.ref1,ref1)
details.n1=firstNotEmpty(details.n5,netValue,n4)
  • تعيد أول قيمة غير فارغة من مجموعة الحقول المحددة.

Tips

يمكن استخدام عدد غير محدود من الحقول داخل firstNotEmpty.

description1=name(name1,name2)
description2=name("Arabic","English")
  • تُستخدم لدعم اللغات المتعددة. ترجع name1 (النص العربي) في البيئة العربية، و name2 (النص الإنجليزي) في البيئة الإنجليزية.
details.text1=mask(details.text2,XX-XX:X--X)
book="BookCode"
book=null
term=book.code
ref5=$this
ref4=ref("SalesInvoice","SIV150160")
  • هذه الأوامر لملء أو تفريغ القيم، أو استخدام مرجع حالي أو ثابت.
ref4=ref(ref2.$toReal.ref1.entitType,sql(select top 1 id from Customer where ref4id = {ref4.$toReal.id}))
  • تُستخدم لإنشاء مرجع ديناميكي مستندًا إلى نتيجة استعلام SQL.
runCommand="edit"
runCommand="save"
  • لتعديل وحفظ سجل.
details.item.item.runCommand="edit"
details.item.item.n1=details.n1
details.item.item.runCommand="Save"
  • لتحديث سجل مرتبط مثل صنف من داخل فاتورة.
runCommand="forcestable"
runCommand="unforcestable"
  • لتحديث البيانات دون المرور بآلية التعديل التقليدية.
runCommand="guessPeriod"
valueDate=sql(select getdate())
  • لتحديد الفترة الزمنية تلقائيًا عند الحفظ.
runCommand="makeValueDateToday"
runCommand="flush"
runCommand="runManualEntityFlow(EF005)"
runCommand="systemUpdateCalculatedFields"
  • أوامر لتحديثات وحركات النظام.
addDiscussion="New Discussion added by entity flow"
selectLine="details(2)"
n3=currentLine.n3
n3=$line.n3
  • لاختيار سطر محدد والعمل عليه.
selectLine="details(1)"
$line.n1="15"
  • لتعديل بيانات سطر معين باستخدام $line.
selectLine="details(last)"
description1=remarks.$left_5
description1=remarks.$right_2
description1=remarks.$mid_3_4
details=[clear]
details=[5]
details=[lines]
  • عمليات على الجدول: إفراغ، تحديد عدد الأسطر، أو مطابقته مع جدول آخر.
details1=[addLines(details2)]
details=[addLines(5)]
details1=addedLinesOnly(details1.n1=details2.n5)
  • لإنشاء أسطر جديدة ونسخ بيانات من جدول آخر.
selectLine="details(0)"
$line.n1=n5
switchTarget=ref1(details.n1=n2)endSwitchTarget
switchTarget=ref1(
  details.n1=n1
  details.n2=n2
  details.ref5=details.ref2
)endSwitchTarget
switchSource=ref1(details.n1=n2)endSwitchSource
  • لنقل البيانات بين الكيانات المصدر والهدف.
matchLinesBy=details.item.item=lines.ref1,details.text1=lines.text1(
  details.n1=lines.n2
  details.description5=lines.text1
)endMatchLinesBy
  • نسخ سطور معينة فقط بناءا على شروط محددة
filterLinesBy=(
filterSourceDetail=creditLimits
filterSourceBy=sql(select case when {creditLimits.paymentPeriod} > 5 then 1 else 0 end)
keywordLines=[creditLimits]
keywordLines.keyword=creditLimits.paymentPeriod
)endFilterLinesBy

يمكنك استعمال حقل رقمي من السطر بدلا من جملة SQL وفي هذه الحالة سيتم اعتبار السطور التي بها هذا الحقل له قيمة سوى الصفر

  • لمطابقة ونقل بيانات الأسطر بين كيانين.

تشفير النصوص

description1=code.$encrypt1
description2=description1.$decrypt1
ref1=sql(select entityType,id from SalesInvoice where code = {description1.$decrypt1})

في التقارير يمكن استخدام:

NamaRep.encrypt1($F{code})
NamaRep.decrypt1($F{description1})
  • encrypt1 للتشفير، decrypt1 لفك التشفير.
  • يوجد أيضًا encrypt2/decrypt2 و encryptX/decryptX بكلمات سر مختلفة.

OTP Support

ندعم إنشاء رموز OTP رقمية أو أبجدية رقمية، بطول من 4 إلى 8 خانات.

description1=$createNumericOTP4
description2=$createNumericOTP5
description3=$createNumericOTP8

description1=$createOTP4
description2=$createOTP6
description3=$createOTP7

لمزيد من التفاصيل راجع: Excel and SQL importing using entity flows

Edit On github
Last Updated:: 8/17/25, 2:54 PM
Prev
مقدمة عن مسارات الكيان
Next
Importing Data from Excel or Queries