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

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

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


قم بإنشاء مجموعة الكيانات الرئيسية، ومجموعة العقود، ومجموعة بنود المنتجات المصممة أعلاه (اختر الحقول الأساسية فقط).
| فئة الحقل | اسم عرض الحقل | اسم الحقل | واجهة الحقل |
|---|---|---|---|
| حقول المفتاح الأساسي والمفتاح الأجنبي | |||
| ID | id | Integer | |
| Buyer ID | buyer_id | Integer | |
| Seller ID | seller_id | Integer | |
| حقول الربط | |||
| Contract Items | contract_items | One to many | |
| Buyer (Party A) | buyer | Many to one | |
| Seller (Party B) | seller | Many to one | |
| حقول عامة | |||
| Contract Number | contract_no | Single line text | |
| Delivery Start Date | start_date | Datetime (with time zone) | |
| Delivery End Date | end_date | Datetime (with time zone) | |
| Deposit Ratio (%) | deposit_ratio | Percent | |
| Payment Days After Delivery | payment_days_after | Integer | |
| Bank Account Name (Beneficiary) | bank_account_name | Single line text | |
| Bank Name | bank_name | Single line text | |
| Bank Account Number (Beneficiary) | bank_account_number | Single line text | |
| Total Amount | total_amount | Number | |
| Currency Codes | currency_codes | Single select | |
| Balance Ratio (%) | balance_ratio | Percent | |
| Balance Days After Delivery | balance_days_after | Integer | |
| Delivery Place | delivery_place | Long text | |
| Party A Signatory Name | party_a_signatory_name | Single line text | |
| Party A Signatory Title | party_a_signatory_title | Single line text | |
| Party B Signatory Name | party_b_signatory_name | Single line text | |
| Party B Signatory Title | party_b_signatory_title | Single line text | |
| حقول النظام | |||
| Created At | createdAt | Created at | |
| Created By | createdBy | Created by | |
| Last Updated At | updatedAt | Last updated at | |
| Last Updated By | updatedBy | Last updated by |
| فئة الحقل | اسم عرض الحقل | اسم الحقل | واجهة الحقل |
|---|---|---|---|
| حقول المفتاح الأساسي والمفتاح الأجنبي | |||
| ID | id | Integer | |
| حقول عامة | |||
| Party Name | party_name | Single line text | |
| Address | address | Single line text | |
| Contact Person | contact_person | Single line text | |
| Contact Phone | contact_phone | Phone | |
| Position | position | Single line text | |
| Website | website | URL | |
| حقول النظام | |||
| Created At | createdAt | Created at | |
| Created By | createdBy | Created by | |
| Last Updated At | updatedAt | Last updated at | |
| Last Updated By | updatedBy | Last updated by |
| فئة الحقل | اسم عرض الحقل | اسم الحقل | واجهة الحقل |
|---|---|---|---|
| حقول المفتاح الأساسي والمفتاح الأجنبي | |||
| ID | id | Integer | |
| Contract ID | contract_id | Integer | |
| حقول الربط | |||
| Contract | contract | Many to one | |
| حقول عامة | |||
| Product Name | product_name | Single line text | |
| Specification / Model | spec | Single line text | |
| Quantity | quantity | Integer | |
| Unit Price | unit_price | Number | |
| Total Amount | total_amount | Number | |
| Delivery Date | delivery_date | Datetime (with time zone) | |
| Remark | remark | Long text | |
| حقول النظام | |||
| Created At | createdAt | Created at | |
| Created By | createdBy | Created by | |
| Last Updated At | updatedAt | Last updated at | |
| Last Updated By | updatedBy | Last updated by |
إدخال بيانات نموذجية:


تهيئة قواعد الربط على النحو التالي، لحساب السعر الإجمالي والدفعات اللاحقة تلقائيًا:

أنشئ كتلة عرض، وبعد تأكيد البيانات، قم بتمكين إجراء "الطباعة من القالب":


أضف تهيئة قالب جديدة، مثل "عقد التوريد والشراء":


بعد ذلك، ننتقل إلى علامة تبويب قائمة الحقول، حيث يمكننا رؤية جميع حقول الكائن الحالي. بعد النقر على "نسخ"، يمكننا البدء في تعبئة القالب.

ملف قالب عقد Word
قم بإعداد قالب العقد (.docx) مسبقًا، على سبيل المثال: SUPPLY AND PURCHASE CONTRACT.docx
في هذا المثال، نقدم نسخة مبسطة من "عقد التوريد والشراء"، والتي تتضمن عناصر نائبة نموذجية:
{d.contract_no}: رقم العقد{d.buyer.party_name}، {d.seller.party_name}: أسماء المشتري والبائع{d.total_amount}: إجمالي مبلغ العقدبعد ذلك، يمكنك نسخ الحقول من مجموعتك ولصقها في مستند Word.
تعبئة الحقول الأساسية:
على سبيل المثال، رقم العقد في الأعلى، أو كائن الكيان الموقّع على العقد. ننقر على "نسخ"، ثم نلصقه مباشرة في المساحة الفارغة المقابلة في العقد.


في القوالب، غالبًا ما نحتاج إلى تنسيق الحقول، خاصة حقول التاريخ. عادة ما يكون تنسيق التاريخ المنسوخ مباشرة طويلاً (مثل Wed Jan 01 2025 00:00:00 GMT)، ويحتاج إلى تنسيق لعرض النمط الذي نريده.
بالنسبة لحقول التاريخ، يمكنك استخدام دالة formatD() لتحديد تنسيق الإخراج:
مثال:
على سبيل المثال، إذا كان الحقل الأصلي الذي نسخناه هو {d.created_at}، ونحتاج إلى تنسيق التاريخ ليصبح 2025-01-01، فسنقوم بتعديل هذا الحقل ليصبح:
أنماط تنسيق التاريخ الشائعة:
YYYY - السنة (أربعة أرقام)MM - الشهر (رقمان)DD - اليوم (رقمان)HH - الساعة (بتنسيق 24 ساعة)mm - الدقائقss - الثوانيمثال 2:
لنفترض وجود حقل للمبلغ، مثل {d.total_amount} في العقد. يمكننا استخدام دالة formatN() لتنسيق الأرقام، مع تحديد عدد المنازل العشرية وفاصل الآلاف.
الصيغة:
2 تعني الاحتفاظ بمنزلتين عشريتين.true أو false.مثال 1: تنسيق المبلغ بفاصل آلاف ومنزلتين عشريتين
سيؤدي هذا إلى تنسيق d.amount بمنزلتين عشريتين وإضافة فاصل الآلاف.
مثال 2: تنسيق المبلغ كعدد صحيح بدون منازل عشرية
سيؤدي هذا إلى تنسيق d.amount كعدد صحيح وإضافة فاصل الآلاف.
مثال 3: تنسيق المبلغ بمنزلتين عشريتين ولكن بدون فاصل آلاف
هنا يتم تعطيل فاصل الآلاف، ويتم الاحتفاظ بمنزلتين عشريتين فقط.
احتياجات تنسيق المبلغ الأخرى:
بالنسبة لحقول السلاسل النصية، يمكنك استخدام :upperCase لتحديد تنسيق النص، مثل تحويل حالة الأحرف.
الصيغة:
طرق التحويل الشائعة:
upperCase - التحويل إلى أحرف كبيرة بالكاملlowerCase - التحويل إلى أحرف صغيرة بالكاملupperCase:ucFirst - تحويل الحرف الأول إلى حرف كبيرمثال:
عندما نحتاج إلى طباعة جدول يحتوي على بنود فرعية متعددة (مثل تفاصيل المنتج)، فإننا عادة ما نستخدم طريقة الطباعة التكرارية. بهذه الطريقة، سيقوم النظام بإنشاء صف من المحتوى لكل بند في القائمة حتى يتم اجتياز جميع البنود.
لنفترض أن لدينا قائمة منتجات (على سبيل المثال، contract_items)، والتي تحتوي على كائنات منتجات متعددة. كل كائن منتج له خصائص متعددة، مثل اسم المنتج، المواصفات، الكمية، سعر الوحدة، المبلغ الإجمالي، والملاحظات.
الخطوة 1: تعبئة الحقول في الصف الأول من الجدول
أولاً، في الصف الأول من الجدول (وليس الرأس)، نقوم بنسخ متغيرات القالب وتعبئتها مباشرة. سيتم استبدال هذه المتغيرات بالبيانات المقابلة، وعرضها في الإخراج.
على سبيل المثال، الصف الأول من الجدول هو كما يلي:
| Product Name | Specification / Model | Quantity | Unit Price | Total Amount | Remark |
|---|---|---|---|---|---|
| {d.contract_items[i].product_name} | {d.contract_items[i].spec} | {d.contract_items[i].quantity} | {d.contract_items[i].unit_price} | {d.contract_items[i].total_amount} | {d.contract_items[i].remark} |
هنا، d.contract_items[i] يمثل البند رقم i في قائمة المنتجات، وi هو فهرس يمثل ترتيب المنتج الحالي.
الخطوة 2: تعديل الفهرس في الصف الثاني
بعد ذلك، في الصف الثاني من الجدول، سنقوم بتعديل فهرس الحقل إلى i+1، ونقوم بتعبئة الخاصية الأولى فقط. هذا لأنه عند الطباعة التكرارية، نحتاج إلى استرداد البند التالي من البيانات من القائمة وعرضه في الصف التالي.
على سبيل المثال، يتم تعبئة الصف الثاني كما يلي:
| Product Name | Specification / Model | Quantity | Unit Price | Total Amount | Remark |
|---|---|---|---|---|---|
| {d.contract_items[i+1].product_name} |
في هذا المثال، قمنا بتغيير [i] إلى [i+1]، وبالتالي يمكننا الحصول على بيانات المنتج التالي في القائمة.
الخطوة 3: الطباعة التكرارية التلقائية أثناء عرض القالب
عندما يقوم النظام بمعالجة هذا القالب، سيعمل وفقًا للمنطق التالي:
d.contract_items، وتعبئة كل صف بشكل تكراري بتنسيق الجدول حتى يتم طباعة جميع تفاصيل المنتج.سيزداد i في كل صف، مما يضمن أن كل صف يعرض معلومات منتج مختلفة.


في هذه المرحلة، اخرج من النافذة المنبثقة الحالية وانقر على "تنزيل القالب" للحصول على القالب الكامل الذي تم إنشاؤه.
نصائح:
.doc أو تنسيقات أخرى، فقد يحتاج إلى التحويل إلى .docx، وذلك حسب دعم الإضافة.نتمنى لكم استخدامًا موفقًا! من خلال ميزة "الطباعة من القالب"، يمكنكم توفير الكثير من العمل المتكرر في إدارة العقود، وتجنب أخطاء النسخ واللصق اليدوية، وتحقيق إخراج عقود موحد ومؤتمت.