الربط مع 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' ← كود بايثون:
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 |
outbound ⟹ OUT · inbound ⟹ IN |
company_id + id |
external_id |
مفتاح التكرار |
مشاكل شائعة
- 422 «اسم البنك مطلوب.» — دفتر اليومية بلا بنك مربوط؛ اربطه أو استعمل اسم اليومية.
- لا يصل شيء — خادم Odoo لا يصل إلى خادم الشيكات (جدار ناري/اتصال صادر)؛ اختبر بـ
curlمن خادم Odoo. - الإجراء يُرسل مرتين — «عند الإنشاء والتحديث» بلا شرط الحالة؛
external_idيجعل الثانية200 reused.
صفحات ذات صلة
هل أجابت هذه الصفحة عن سؤالك؟
شكرًا — رأيك يصلنا ويساعدنا نحسّن الدليل.
تعذّر الإرسال — حاول مرة أخرى بعد قليل.