إنشاء شيك مباشرة — POST /api/cheque-log/external

نقطة واحدة تُنشئ صف شيك مطبوع من نظامك بلا شاشة ولا معاينة — للأنظمة التي تطبع بنفسها وتريد السجل في برنامج الشيكات. حقولها وقواعدها الحرفية، الحرّاس التي ترمي 422، شكل الردّ 201، وما يجب أن تعرفه عن التكرار والصورة.

آخر تحديث: 2026-09-21

في الصفحة دي

متى تستعملها؟

حين يطبع نظامك الشيك بنفسه (أو لا يطبعه أصلًا) وتريد صفًّا في حركات الشيكات بحالته الابتدائية لمتابعته من البرنامج. لا معاينة ولا طباعة هنا — للطباعة من شاشة البرنامج استعمل تدفّق Dynamics.

المسار: POST /api/cheque-log/external — واسمه البديل POST /api/cheque-logs (يُسجَّل في التدقيق بالاسم الأول).

الحقول

الحقل القاعدة الحرفية إلزامي الافتراضي
bank_name required|string|max:255
template_name nullable|string|max:255 null
cheque_type IN أو OUT null ⟹ بلا حالة
cheque_date · stub_date nullable|date null
recipient_name · place · signed_by · reason · reference_number · stub_name · stub_reason nullable|string|max:255 null
amount_text · note · liner_text nullable|string null
amount nullable|numeric — ≤ 13 خانة صحيحة، والكسر بخانات العملة null
stub_amount nullable|numeric — ≤ 8 خانات null
currency nullable|string|max:10 EGP
cheque_number nullable|string|max:50 + فريد على البنك بين المطبوع null
company_id nullable|integer|exists:companies,id شركة المفتاح — إن أُرسل وخالفها ⟹ 422
bank_account_id · cheque_book_id · cheque_leaf_id · partner_id nullable|integer|exists null
liner_enabled · two_lines boolean false
image nullable|image|max:200048 (KB)
image_base64 nullable|string
save_cheque_image nullable|boolean false
external_source · external_id nullable|string null — مفتاح التكرار الاختياري

ملاحظات على العقد:

  • cheque_status_id يُهمل بصمت — الحالة تُشتق من cheque_type: OUT ⟹ قيد الإصدار · IN ⟹ بالمحفظة · مجهول ⟹ بلا حالة (وهو ما لا تريده — أرسل الاتجاه دائمًا).
  • bank_id يُقبل ولا يُقرأ هنا — البنك يُحلّ من bank_name وحده بمطابقة حرفية بعد إزالة المسافات الطرفية؛ اكتب الاسم كما يعيده /api/banks.
  • الصورة لا تُحفظ إلا بـsave_cheque_image: true مع image_base64/image — وبلا علامة مائية.

حرّاس ترمي 422

الحالة الرسالة
الرقم يخصّ ورقة دفتر هذا الرقم يخص دفتر شيكات — اطبعه من وضع الدفتر
الرقم محجوز في دفعة مفتوحة الرقم :number محجوز في دفعة مفتوحة (الدفعة #:batch) — اطبعها أو ألغِها أولًا.
الرقم مكرَّر على نفس البنك رقم الشيك {N} مستعمَل بالفعل على بنك {البنك} — اختر رقمًا آخر
المبلغ كبير القيمة كبيرة جدًا — لا يزيد الجزء الصحيح عن 13 خانة.
كسر المبلغ كسر المبلغ يتجاوز خانات {العملة} (خانتان عشريتان).
مرجع من شركة أخرى المستفيد لا يتبع شركة الشيك. · الحساب البنكي المختار لا يتبع شركة الشيك. · دفتر الشيكات المختار … · ورقة الشيك المختار …
المفتاح بلا شركة مفتاح الـAPI غير منسوب لشركة — عيّن شركته من شاشة «التكامل ← مفاتيح API».
company_id يخالف المفتاح الحمولة تطلب شركة «…» بينما مفتاح الـAPI منسوب لشركة «…» — احذف الحقل أو استعمل مفتاح الشركة الصحيحة.

المثال

bash
curl -s -X POST "APP_URL/api/cheque-log/external" \
  -H "X-API-KEY: KEY" -H "Content-Type: application/json" -H "Accept: application/json" \
  -d '{
        "bank_name": "بنك مصر",
        "template_name": "بنك مصر - نموذج 1",
        "cheque_type": "OUT",
        "recipient_name": "شركة النيل للتوريدات",
        "amount": 1250.50,
        "currency": "EGP",
        "cheque_date": "2026-10-15",
        "cheque_number": "100200",
        "reference_number": "PV-1001",
        "reason": "دفعة مورّد",
        "signed_by": "خالد عبد الرحمن"
      }'

201:

json
{
  "success": true,
  "message": "تم الحفظ بنجاح",
  "data": { "id": 4321, "bank_name": "بنك مصر", "cheque_number": "100200", "amount": "1250.500", "…": "صف cheque_logs كاملًا" },
  "image_saved": false
}

data هو الصف الكامل (أكثر من مئة عمود، ومنها أعمدة دورة الحياة الفارغة الآن) — اعتمد على id وcheque_number وbank_name وamount وcheque_date وcurrency، ولا تبنِ على الباقي.

الأخطاء

الكود الجسم
422 {"message":"Validation failed","errors":{"cheque_number":["…"]}} — الرسائل بالعربية
500 {"message":"Error saving cheque log","error":"…"}
503 · 401 · 403 · 429 من سلّم المفتاح

ما يُختم سيرفريًا

printed_at = now() · printed_by = null · الحالة الابتدائية من الاتجاه · و**company_id = شركة المفتاح دائمًا**. الحمولة تُفحص ضدها: company_id مخالف أو مرجع (حساب · دفتر · ورقة · شريك) من شركة أخرى ⟹ 422. لا سلّم ولا شركة افتراضية على مسار المفتاح.

الصف مؤكَّد — والتكرار (idempotency)

الصف يُنشأ مطبوعًا مؤكَّدًا (الورق خرج خارج البرنامج): رقمه لا يُعدَّل بعد الإنشاء كأي مؤكَّد، ويدخل تقارير المؤكَّد والتذكيرات — فأرسل الرقم صحيحًا من أول مرة.

ثلاث حمايات من التكرار (منذ 1.8.0):

  1. رقم الشيك على البنك: النداء الثاني بنفس الرقم ⟹ 422 «مستعمَل بالفعل» — عامله كنجاح سابق في منطقك.
  2. المفتاح الخارجي (اختياري): أرسل external_source + external_id (كما في Dynamics) — إعادة الإرسال تعيد الصف القائم بـ200 و"reused": true بلا صف جديد (في Dynamics الصيغة action: "reused").
  3. صف مختوم لشركة أخرى أو نهائي (تالف · ملغى · مُعاد إصداره) ⟹ 422 بدل التحديث.

التوصية: أرسل cheque_number وexternal_id معًا.

صفحات ذات صلة

اطلب نسختك التجريبية مجانًا