الربط مع Odoo

من خادم Odoo عند تأكيد الدفع — إجراء مؤتمت بكود بايثون قصير، أو وحدة مخصّصة تعيد تعريف action_post. المفتاح في ir.config_parameter لا في الكود، وbank_name من دفتر يومية البنك.

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

في الصفحة دي

المبدأ

لا كود خاص بـOdoo في البرنامج: خادم Odoo (Community أو Enterprise) يرسل من بايثون إلى POST /api/cheque-logs (= الإنشاء المباشر) عند تأكيد account.payment. الصف يُنشأ مؤكَّدًا، وbank_name إلزامي وغير فارغ.

الطريق الأول: إجراء مؤتمت

وضع المطوّر ← الإعدادات ← التقنية ← الإجراءات المؤتمتة ← إجراء على account.payment «عند الإنشاء والتحديث» بشرط state == 'posted' ← كود بايثون:

python
bank = record.journal_id.bank_id.name or record.journal_id.name
if not bank:
    raise UserError("اسم البنك مطلوب لبرنامج الشيكات")
payload = {
    "bank_name": bank,
    "cheque_type": "OUT" if record.payment_type == "outbound" else "IN",
    "recipient_name": record.partner_id.name,
    "amount": record.amount,
    "currency": record.currency_id.name,
    "cheque_date": str(record.date),
    "cheque_number": record.name,
    "external_source": "odoo",
    "external_id": "%s-%s" % (record.company_id.id, record.id),
}
api_key = env["ir.config_parameter"].sudo().get_param("cheques.api_key")
base_url = env["ir.config_parameter"].sudo().get_param("cheques.base_url")
requests.post(base_url + "/api/cheque-logs", json=payload,
              headers={"X-API-KEY": api_key, "Accept": "application/json"}, timeout=15)

الطريق الثاني: وحدة مخصّصة

أعد تعريف action_post() في account.payment واستدعِ النداء نفسه بعد super(). المفتاح في ir.config_parameter (cheques.api_key · cheques.base_url) لا داخل الكود — ليُبدَّل من الواجهة عند التدوير.

خريطة الحقول

Odoo الشيك ملاحظة
partner_id.name recipient_name
amount amount
currency_id.name currency
date cheque_date str() تعطي YYYY-MM-DD
name cheque_number أو رقم الشيك من وسيلة الدفع إن كان مختلفًا
journal_id.bank_id.name bank_name إلزامي — لو فارغًا أوقف الإرسال؛ الفارغ يُرفض 422
payment_type cheque_type outboundOUT · inboundIN
company_id + id external_id مفتاح التكرار

مشاكل شائعة

  • 422 «اسم البنك مطلوب.» — دفتر اليومية بلا بنك مربوط؛ اربطه أو استعمل اسم اليومية.
  • لا يصل شيء — خادم Odoo لا يصل إلى خادم الشيكات (جدار ناري/اتصال صادر)؛ اختبر بـcurl من خادم Odoo.
  • الإجراء يُرسل مرتين — «عند الإنشاء والتحديث» بلا شرط الحالة؛ external_id يجعل الثانية 200 reused.

صفحات ذات صلة

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