توثيق ERPOSالمرجع التنفيذي للمطورين

الموكّلون والأطراف والعلاقاتClients, parties and relationships

B02الملفات والأطرافمتطلب وارد في الملفات اقتراح هندسي

كل شخص أو جهة يتعامل معها المكتب (موكّل، خصم، وكيل خصم، شاهد، خبير، جهة) يُسجل مرة واحدة في Legal Party، ويُشار إليه من كل ملف. الموكّل يرتبط أيضًا بـ Customer في ERPNext للفوترة.

بطاقة الميزة

البندالقيمة
1. اسم الميزةالموكّلون والأطراف والعلاقات — Clients, parties and relationships
2. المعرّف (Feature ID)B02
3. مصدر المتطلبدليل المطور ص5، 10-11، 31، دليل الميزة 1 ص6-10، 13-14، الوثيقة المعمارية: نموذج البيانات، تقرير التدقيق AUD-03
4. تصنيف المحتوىمتطلب وارد في الملفات سجل مستقل لكل شخص أو جهة، معرّفات، علاقات. اقتراح هندسي توحيد Party وCustomer في Legal Party واحد مربوط بـ Customer (حسم التعارض C-04).
الوحدةالملفات والأطراف
الأدوار المعنيةشريك، محامٍ، سكرتارية
درجة الخطورةعالية
حالة الاعتمادمعتمد في الوثائق
المنصات المرتبطةوزارة التجارة — واثق (بيانات السجل التجاري)، ناجز وناجز للمطورين

5الهدف التجاري والمشكلة التي تعالجها

فحص التعارض مستحيل إذا كُتب اسم الخصم نصًا حرًا داخل الملف (دليل الميزة 1 ص6، 18). السجل المستقل هو «أهم قرار تصميمي في الميزة» (دليل الميزة 1 ص6).

المشكلة: الاسم الواحد يُكتب بصيغ مختلفة في ملفات مختلفة، فيضيع الربط بين الملفات.

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

المعرّفات الوطنية عشر خانات، أولها 1 للمواطن و2 للمقيم و7 للرقم الموحد للمنشأة national-id (دليل الميزة 1 ص3).

7المستخدمون والأدوار والصلاحيات

الشريك والمحامي: قراءة وإنشاء وتعديل، بلا حذف؛ المحمي هو الملف لا اسم الطرف (دليل الميزة 1 ص14). السكرتارية: إنشاء الطرف عند الحجز بالحد الأدنى (اسم، جوال). المحاسب: يرى Customer للفوترة فقط.

8شروط البدء والاعتماديات

B01 المستخدمون والأدوار والصلاحيات مفعّلة.

تشفير الحقول الحساسة وإعداد مفتاح HMAC في خزنة الأسرار التشفير وإدارة الأسرار.

9السيناريو الأساسي خطوة بخطوة

  1. يبحث المستخدم بالاسم أو رقم المعرّف قبل الإنشاء لتفادي التكرار.
  2. ينشئ Legal Party بنوعه (فرد، منشأة، جهة حكومية) واسمه الكامل كما في الهوية أو السجل.
  3. يدخل نوع المعرّف ورقمه إن توفّر؛ يُطبّع (أرقام لاتينية) ويُشفّر وتُحسب بصمته.
  4. عند تحوّل الطرف إلى موكّل: يُنشأ Customer ويُربط بالحقل legal_party.
  5. يضيف العلاقات المعروفة في Related Party (مالك، تابعة، قريب، جهة عمل) بتاريخ سريان.

10السيناريوهات البديلة والاستثناءات

11المدخلات والحقول

الاسم العربيالاسم البرمجيالنوعإلزاميالتحققالقيمة الافتراضيةمصدر البيانات
نوع الطرفparty_kindSelectنعمفرد / منشأة / جهة حكومية—المستخدم (دليل المطور ص11)
الاسم الكاملfull_nameDataنعمإزالة المسافات الزائدة فقط—الهوية أو السجل
الاسم الموحّد للبحثnormalized_nameData (مخفي)تلقائيمن دالة التطبيع—تطبيع الأسماء والنصوص العربية
الأسماء البديلةaliasesSmall Textلاسطر لكل اسم—المستخدم (دليل المطور ص11)
الاسم باللاتينيةname_enDataلا——العقود (دليل المطور ص31)
نوع المعرّفid_typeSelectلاهوية وطنية / إقامة / رقم موحد / سجل تجاري / جواز سفر—(دليل الميزة 1 ص8)
رقم المعرّفid_numberData (مشفّر)لا (مهم)10 خانات تبدأ 1 أو 2 أو 7 ← تحذير إن خالف—المستخدم
بصمة المعرّفid_hmacData (مخفي، فهرس)تلقائيHMAC-SHA256 للرقم المطبّع—الخادم (دليل المطور ص15)
السجل التجاريcr_numberDataلاأرقام فقط—المستخدم أو واثق
الجوالmobileDataلايقبل 05… و+9665… ويُحفظ دوليًا—(دليل الميزة 1 ص14)
الموكّل المرتبطcustomerLink → Customerلاواحد لكل طرف—عند التحوّل لموكّل
ملاحظاتnotesSmall Textلا——المستخدم

12المخرجات والإشعارات والسجلات والتقارير

13قواعد العمل بصيغة قابلة للتحويل إلى كود

قواعد
RULE B02.1  normalize_digits(id_number, mobile, cr_number)   # ٠-٩ -> 0-9
RULE B02.2  mobile: strip spaces/dashes; "05XXXXXXXX" -> "+9665XXXXXXXX"; reject otherwise
RULE B02.3  IF id_number AND NOT match("^[127][0-9]{9}$") AND id_type in (هوية, إقامة, رقم موحد): WARN (not block)
RULE B02.4  id_hmac = HMAC_SHA256(secret_key, digits(id_number)); unique per (id_type, id_hmac)
RULE B02.5  normalized_name = normalize_arabic(full_name)   # يُحدَّث عند كل حفظ
RULE B02.6  no Delete permission for any role; merge instead
RULE B02.7  Related Party: party != related_party; valid_to IS NULL OR valid_to >= valid_from

المصادر: (دليل الميزة 1 ص13-14) (دليل المطور ص15، 31). قاعدة التفرّد على البصمة اقتراح هندسي.

14حالات السجل وانتقالاتها وشروطها

لا يحمل الطرف حالة سير عمل. علاقة الموكّل بالمكتب تُشتق: محتمل (زائر أو حجز)، نشط (له ملف مفتوح)، سابق (كل ملفاته مغلقة) (تقرير التدقيق (Gemini) ص13).

15نموذج البيانات والعلاقات والقيود والفهارس

العلاقةالنوعملاحظة
Legal Party ← Customerواحد لواحد اختياريالموكّل فقط
Legal Party ← Matter Partyواحد لمتعددالطرف في ملفات كثيرة
Legal Party ← Related Partyمتعدد لمتعدد عبر جدولشبكة العلاقات
Legal Party ← Office Visitواحد لمتعددالزوار
فهرسالغرض
(id_type, id_hmac) فريدمنع التكرار والمطابقة الدقيقة
normalized_nameالبحث والتعارض
mobileتعرّف السكرتير الذكي على المرسل

16DocTypes المطلوبة في Frappe

17الشاشات والعناصر والأزرار ورسائل الخطأ

18خدمات Backend ومسؤولية كل خدمة

الخدمةالمسؤولية
legal_erp.parties.normalizeتنظيف الأرقام والجوال والاسم الموحد
legal_erp.security.crypto.hmac_idحساب البصمة بمفتاح من الخزنة
legal_erp.parties.mergeدمج سجلين مع نقل الإشارات وحفظ الأثر

19واجهات API الداخلية

POST /api/method/legal_erp.api.v1.parties.find_or_create

يبحث بالبصمة أولًا ثم بالاسم الموحد، ويعيد المطابقات قبل الإنشاء.

الصلاحية: شريك، محامٍ، سكرتارية.

JSON · الطلب
{
  "party_kind": "فرد",
  "full_name": "مُحمّد بن عبدالله التجريبي",
  "id_type": "هوية وطنية",
  "id_number": "١٠٠٠٠٠٠٠٠١",
  "mobile": "0500000001"
}
JSON · الاستجابة
{
  "status": "exists",
  "party": "PTY-00042",
  "match": "id_exact"
}

20الأحداث والمهام الخلفية والجدولة وإعادة المحاولة

عند تغيّر بيانات طرف (ملاك شركة، معرّف) تُجدول إعادة فحص التعارض للملفات المفتوحة المرتبطة B16 فحص تعارض المصالح (دليل المطور ص31).

21التكاملات المرتبطة بالميزة وحدودها

وزارة التجارة — واثق (بيانات السجل التجاري) لبيانات السجل التجاري عند الاعتماد؛ ناجز وناجز للمطورين قد يعيد بيانات الأطراف بعد ربط القضية، وتظهر الفروق في سجل الفروق لا كتابة صامتة (خطة ناجز ص8).

22الأمن والخصوصية والتدقيق والاحتفاظ والحذف

أرقام الهويات مشفّرة وتظهر مقنّعة (10******34) إلا لمستوى صلاحية أعلى (دليل المطور ص15). البصمة لا تُعاد إلى الواجهة. الطرف الذي لم يصبح موكّلًا تُحذف بياناته الزائدة بعد مدة الحفظ ويبقى ما يلزم للتعارض B38 الاحتفاظ والإتلاف والتجميد القانوني يحتاج اعتمادًا قانونيًا.

23حالات الاختبار

المعرّفالنوعالسيناريوالنتيجة المتوقعة
B02-T01طبيعيإنشاء موكّل فرد برقم هوية بأرقام عربية ٩٨٧٦٥٤٣٢٠١ (يبدأ بـ9)يُحفظ بأرقام لاتينية مع تحذير الصيغة.
B02-T02طبيعيجوال 0501234567يُحفظ +966501234567 (دليل الميزة 1 ص16).
B02-T03حدّيإنشاء طرف ثانٍ بالمعرّف نفسهيُعرض الطرف الموجود ولا يُنشأ مكرر.
B02-T04سلبيجوال 12345يُرفض الحفظ برسالة.
B02-T05صلاحياتمحاولة حذف طرف بحساب الشريكلا يوجد خيار حذف.
B02-T06صلاحياتالمحاسب يقرأ Legal Partyلا يرى رقم الهوية.
B02-T07طبيعيإضافة علاقة «مالك» بين طرفينتظهر في شبكة العلاقات وتدخل في فحص التعارض.

24معايير القبول

25تعريف الاكتمال (Definition of Done)

26القرارات المفتوحة والمخاطر والاعتمادات المطلوبة

دمج الأطراف المكررة: يحتاج تحديد من يملك الصلاحية (الشريك افتراض تنفيذي).