المزايا طريقة العمل السعر الأسئلة الشائعة اشترِ الآن

سجل التغييرات

هذه الصفحة تعرض أحدث إصدارات إضافة JoFotara WooCommerce Pro وأهم التغييرات في كل إصدار. يمكن لأصحاب التراخيص الفعّالة تحميل آخر إصدار من حساباتهم أو مباشرةً من لوحة ووردبريس.

v2.2.1 أمني 2026-08-16
### تم الإصلاح
- **تم رفض إشعارات الدائن مع الفاتورة `[CORE-400-003]: يجب أن يتطابق سعر الوحدة مع
سعر الوحدة في الفاتورة الأصلية.`** أعاد إشعار الدائن حساب أرقامه من الطلب الفعلي بدلاً من إعادة استخدام الأرقام التي تم تقديمها فعلياً، لذلك تم رفض أي فرق بين الحسابين من قبل JoFotara. أسوأ الحالات: عندما تعذر ربط سطر مسترد بعنصر الطلب الخاص به، تم إعادة اشتقاق سعر الوحدة من إجمالي الاسترداد ذي الرقمين العشريين في WooCommerce - سطر قسيمة 30.00 → 25.00 تم تقديمه بسعر `10.000000000` تم اعتماده بسعر `8.333333333`. الآن، **تعيد إشعارات الدائن عرض الأسطر نفسها التي تم تقديمها**؛ بالنسبة للاسترداد الجزئي، تتغير الكمية فقط، وليس السعر.


- **لم تعد مبالغ الفواتير تختلف عن الطلب.** كان سعر الوحدة يُرسل كحاصل قسمة غير مُقرّب لمجموع السطر الفرعي على الكمية، لذا فإن سطرًا بقيمة 10.00 على 3 وحدات كان يُسجّل على النحو التالي: `3.333333333` × 3 = `9.999999999` بدلاً من 10.00 التي يعرضها WooCommerce.

تُوضع أسعار الوحدات الآن على شبكة الأرقام العشرية التسعة التي تُرتّب بها الفاتورة، و يُدمج الفرق الناتج عن التقريب في خصم ذلك السطر، بحيث يتطابق كل سطر - وإجمالي الفاتورة مع الطلب تمامًا.

- **لم تعد خصومات إشعارات الدائن تختلف.** تم إعادة حساب خصم السطر المُسجّل على النحو التالي: `5.000000000` في إشعار الدائن، أُعيد حسابه على النحو التالي: `round(5 / 3, 9) × 3` = `5.000000001`.
لم تعد خصومات إشعارات الدائن تختلف.** تم إرسال خصم سطر مُسجّل على النحو التالي: `5.000000000`


أُعيد حسابه في إشعار الدائن على النحو التالي: `round(5 / 3, 9) × 3` = `5.000000001`. - قد تفشل إشعارات الخصم الجزئي قبل الإرسال بسبب ظهور رسالة خطأ: "سيؤدي إجمالي مبلغ الضريبة

إلى جعل المبلغ شامل الضريبة غير صالح"*. كانت حزمة تطوير البرامج (SDK) المرفقة تتحقق من:

(السعر الإجمالي - الخصم + الضريبة)

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

(السعر الإجمالي + الضريبة - الخصم)

وهما متساويان رياضيًا، لكنهما قد يختلفان بمقدار وحدة واحدة في الخانة الأخيرة في نظام الفاصلة العائمة الثنائية. تُطبق الدالة `InvoiceTotals::setTaxTotalAmount()` الآن نفس نسبة التسامح `0.000000001` التي كانت تستخدمها حزمة تطوير البرامج (SDK) في الدالة `setPayableAmount()`. يفشل بند الاسترداد الذي لا يمكن مطابقته مع الفاتورة الأصلية الآن برسالة خطأ صريحة بدلاً من إنشاء سعر وحدة قد ترفضه مصلحة الضرائب.


### مُضاف
- يتم تسجيل بنود الفاتورة المُرسلة بدقة - المعرّف، والكمية، وسعر الوحدة، والخصم، وفئة الضريبة، ومعدل الضريبة - في الطلب في `_jofotara_invoice_data['lines']`، بحيث يمكن لإشعار دائن لاحق إعادة إنتاجها بايتًا بايتًا.

- **استعادة الفواتير المُرسلة من إصدارات سابقة**، والتي لم تُسجل بيانات البنود.

يتم إنشاء إشعار دائن لأحد هذه الفواتير، حسب ترتيب الأفضلية:
1. بنود الفاتورة المُخزنة، إن وُجدت؛
2. مستند الفاتورة المُرسل الذي أعاد JoFotara إرساله (`submittedInvoice`)، بعد تحليله لاستخراج قيم `cbc:PriceAmount` الدقيقة التي تحتفظ بها مصلحة الضرائب؛
3. إعادة بناء باستخدام العمليات الحسابية للإصدار *السابق* - وليس الإصدار الجديد عمدًا لأنه سينتج سعر وحدة لم يتم تقديمه. يُعتمد المبلغ المرجعي لإشعار الدائن على قيمة `cbc:PayableAmount` المسجلة في ذلك المستند بدلاً من إجمالي طلب WooCommerce المُقرّب.

### التغييرات
- يتم إنشاء بنود الفاتورة مرة واحدة كمواصفة صريحة وتطبيقها على SDK في مكان واحد مشترك بين الفواتير وإشعارات الدائن، بدلاً من تجميعها مرتين بواسطة روتينين قد يختلفان.
v2.2.0 أمني 2026-07-20
### مُضاف
- **تم الآن تطبيق الحظر عن بُعد (مفتاح إيقاف المورّد) على مستوى لوحة التحكم بالكامل.** عند حظر موقع من لوحة تحكم المورّد، يعرض الملحق صفحة كاملة **تم حظر هذا الملحق"** بدلاً من علامة تبويب إعدادات JoFotara وشاشة الترخيص - حتى على موقع بدون ترخيص - ويُعطّل الملحق لا يتم إرسال أي فواتير أو إشعارات دائنة إلى JoFotara. تُعطى حالة الحظر الأولوية على واجهة المستخدم الخاصة بالترخيص/التفعيل، وترتبط الصفحة بالمطور للحصول على الدعم (بوابة العملاء + تيليجرام).
- **إرشادات حول كيفية الحصول على ترخيص** على شاشة التفعيل، مع رابط مباشر
لشراء ترخيص، بالإضافة إلى رابط "الحصول على ترخيص" في إشعار الإدارة الخاص بالمواقع غير المرخصة


## مُغيّر
- **تتطلب علامة تبويب إعدادات JoFotara الآن ترخيصًا نشطًا.** جميع حقول التكوين
مخفية - ويتم حظر الحفظ - حتى يتم تفعيل الملحق بمفتاح صالح مفتاح صالح؛ يظهر في الموقع غير المرخص أو الملغى ترخيصه لوحة "الترخيص مطلوب". يُنسب الفضل للمطور في تذييل الصفحة، مع روابط للدعم (البوابة الإلكترونية + تيليجرام).
- تشير روابط رأسية الإضافات والمؤلفين الآن إلى موقع البائع وبوابة العملاء.

### الأمان
- يتم فحص حظر البائع **قبل** فحص الترخيص في جميع واجهات الإدارة وفي مسار الفاتورة/إشعار الدائن، لذا لا يمكن لنسخة مُعدّلة أو غير مرخصة تجاوز الحظر عن طريق إزالة منطق الترخيص.
v2.1.0 أمني 2026-07-09
### التغييرات
- **يتم الآن إرسال الفواتير إلى JoFotara فقط عند اكتمال الطلب.** تم حذف مُشغّل المعالجة؛ ولا تتسبب حالات "في انتظار الدفع" و"قيد المعالجة" و"معلق" و"مسودة" والحالات المخصصة (مثل "طلب استرداد") في إرسال أي فاتورة. يتم تطبيق هذه القاعدة داخل المُولّد نفسه، لذا فإن إجراءات الطلب اليدوية والاستدعاءات البرمجية تحترمها أيضًا (الفلتر: `jofotara_wc_invoice_trigger_statuses`).

- **فاتورة ائتمان واحدة فقط لكل طلب.** بمجرد حصول فاتورة ائتمان على مُعرّف JoFotara الفريد (UUID)، لن يتم إرسال أي فاتورة ائتمان أخرى لهذا الطلب (سواءً كان ذلك بسبب الإلغاء أو الاسترداد أو إجراء يدوي) - تُضاف ملاحظة إلى الطلب توضح سبب التخطي.


## الإضافات
- **حماية صارمة من تكرار الفواتير**: لا يتم إرسال أي طلب لديه مُعرّف JoFotara فريد (UUID) مرة أخرى، من أي مسار برمجي؛ وتُضاف ملاحظة توضيحية للطلب في حال التخطي.

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

### تم الإصلاح

- لم يعد إجراء "إنشاء فاتورة JoFotara" اليدوي يتجاوز فحص التكرار، ولم يعد يضيف ملاحظات مضللة حول الطلبات المكررة/الفاشلة (يسجل المُنشئ الآن النتيجة مرة واحدة فقط).
v1.1.0 2026-06-30
### إضافات
- **فواتير الائتمان (إشعارات الائتمان)**: يتم الآن إصدار فاتورة ائتمان JoFotara (نوع UBL `381`)
تلقائيًا عند إلغاء الطلب أو استرداد قيمته - وهي ميزة
كانت موثقة سابقًا ولكن لم يتم تفعيلها.

- `woocommerce_order_status_cancelled` ← إشعار ائتمان كامل مطابق للفاتورة الأصلية.

- عمليات استرداد WooCommerce (`woocommerce_order_refunded`) ← إشعار ائتمان للعناصر/المبلغ المسترد

يدعم عمليات الاسترداد الجزئي.

- تغيير الحالة يدويًا إلى "تم الاسترداد" بدون عنصر استرداد ← إشعار ائتمان كامل.

- إجراء جديد للطلب يدويًا: **إصدار فاتورة ائتمان JoFotara (إلغاء)**.

- منع التكرار: إشعار ائتمان *كامل* واحد فقط لكل طلب؛ قد يحصل كل استرداد جزئي

على إشعار ائتمان خاص به. مُخزَّنة في `_jofotara_credit_invoices` (بالإضافة إلى أحدث نسخة في

`_jofotara_credit_invoice_data`).

- خطافات جديدة: `jofotara_wc_credit_invoice_generated`، `jofotara_wc_credit_invoice_generation_failed`.

- **رمز الاستجابة السريعة الرسمي من JoFotara على فواتير PDF**: يتم الآن إدراج رمز الاستجابة السريعة الذي يُرجعه JoFotara عند نجاح الإرسال
في الفواتير التي يُنشئها مُلحق WebToffee.

*فواتير WooCommerce بصيغة PDF، وقوائم التعبئة، وإشعارات التسليم، وملصقات الشحن* (عبر

فلتر `wt_pklist_alter_final_order_template_html`)، ويتم عرضها **فقط** عند إرسال الطلب فعليًا إلى JoFotara.

يدعم أيضًا مُلحق WP Overnight PDF

(`wpo_wcpdf_after_order_details`).


- فلاتر قابلة للتخصيص: `jofotara_wc_webtoffee_document_types`، `jofotara_wc_webtoffee_qr_block`.

- **مساعد عرض رمز الاستجابة السريعة القوي** (`JoFotara_WC_QR`): يقبل أي بيانات يُرجعها JoFotara —

معرّف بيانات، أو رابط صورة، أو صورة بصيغة base64، أو محتوى رمز الاستجابة السريعة الخام — ويُنتج دائمًا

صورة قابلة للعرض (عن طريق إنشاء رمز الاستجابة السريعة باستخدام المُشفّر المُضمّن للمحتوى الخام). يُستخدم من قِبل

مربع بيانات الإدارة وتكامل ملفات PDF.

- **عداد فواتير ICV التسلسلي**: تحمل كل فاتورة الآن عدادًا فريدًا ومتزايدًا

`ICV` (من 1 إلى ما لا نهاية) كما هو مطلوب من JoFotara، بدلًا من القيمة الافتراضية لـ SDK وهي دائمًا `1`.


- **تعديلات على ثوابت ملف wp-config**: `JOFOTARA_WC_CLIENT_ID`، `JOFOTARA_WC_CLIENT_SECRET`،

`JOFOTARA_WC_SELLER_TIN`، `JOFOTARA_WC_SELLER_NAME`، `JOFOTARA_WC_SUPPLIER_INCOME_SOURCE`،

`JOFOTARA_WC_INVOICE_TYPE`، `JOFOTARA_WC_PAYMENT_METHOD`، `JOFOTARA_WC_TAX_RATE`،

`JOFOTARA_WC_ENABLED`، `JOFOTARA_WC_AUTO_GENERATE` تُفعّل الآن.


مُشفّر رمز الاستجابة السريعة المدمج: `lib/qrcode/qrcode.php` (رمز الاستجابة السريعة TCPDF، مُصنّف حسب المساحة لتجنب التعارضات).



### تم الإصلاح
- يتم الآن عرض رمز الاستجابة السريعة (QR) في مربع بيانات الإدارة بشكل صحيح. كان يتم عرضه باستخدام `esc_url()`، والتي

تزيل عناوين URI التي تبدأ بـ `data:`، لذا لم تكن صور رمز الاستجابة السريعة تظهر أبدًا.

- تم تحديد نسبة الضريبة على كل بند بحد أقصى 16% وفقًا لـ JoFotara، وحمايتها من

القسمة على صفر / القيم الخارجة عن النطاق التي قد تتسبب في رفض SDK للفاتورة.

- يتم الآن إصدار إشعارات الدائن في **تاريخ الإلغاء** (وليس تاريخ الطلب الأصلي)، و
تشير إلى معرّف `cbc:ID` / `cbc:UUID` الأصلي والإجمالي المُقدّم.



- **تُعيد إشعارات استرداد الرصيد الآن استخدام أسعار الوحدات ومعرفات البنود الأصلية للفاتورة بدقة**،

معبّرةً عن الجزء المُسترد ككمية (قد تكون كسرية) - مما يُصلح مشكلة رفض JoFotara
*"يجب أن يتطابق سعر الوحدة مع سعر الوحدة في الفاتورة الأصلية"* التي كانت تحدث

في عمليات الاسترداد التي تتضمن خصومات أو شحنًا جزئيًا (الشحن عبارة عن بند واحد بدون كمية).

- يتم حذف رمز مدينة العميل عندما يكون غير معروف بدلاً من تعيين عمّان افتراضيًا لجميع العملاء.

- يُفعّل الآن مفاتيح الخيارات الفردية التي يقرأها الملحق فعليًا (لم يتم استخدام مصفوفة `jofotara_wc_settings` السابقة).

### التغييرات
- أُعيد تصميم مُولّد الفواتير لمشاركة إنشاء بيانات العميل/البنود بين فواتير المبيعات والائتمان

لتحقيق التناسق.

- يُشير عمود قائمة الطلبات الآن أيضًا إلى وقت إصدار إشعار الرصيد.

- تم اختبار WC حتى الإصدار 9.4.
v1.0.1 2026-02-16
### إضافات
- إعلان توافق كامل مع نظام تخزين الطلبات عالي الأداء (HPOS)
- دعم مُحسّن لصناديق البيانات الوصفية في شاشات طلبات HPOS
- توثيق حول توافق HPOS

### تغييرات
- تحديث تسجيل صناديق البيانات الوصفية لدعم شاشات الطلبات التقليدية وشاشات طلبات HPOS
- تحسين عرض صناديق البيانات الوصفية للتعامل مع كائنات WP_Post وWC_Order
- إضافة دالة `declare_hpos_compatibility()` باستخدام أداة FeaturesUtil من WooCommerce

### إصلاحات
- حل مشكلة تحذير عدم التوافق مع WooCommerce عند تفعيل HPOS
- ضمان عرض صناديق البيانات الوصفية بشكل صحيح في شاشات تعديل طلبات HPOS
v1.0.0 2025-10-21
### إضافات
- الإصدار الأولي لتكامل JoFotara مع WooCommerce
- إنشاء الفواتير تلقائيًا عند اكتمال الطلبات أو معالجتها
- دمج صفحة إعدادات المدير مع إعدادات WooCommerce
- إنشاء الفواتير يدويًا عبر إجراءات الطلب
- عرض حالة الفاتورة في قائمة الطلبات
- معلومات تفصيلية عن الفاتورة في مربع بيانات صفحة تعديل الطلب
- نظام تسجيل شامل مع وضع تصحيح الأخطاء
- دعم أنواع متعددة من الفواتير (مبيعات عامة، مبيعات خاصة، إيرادات)
- معالجة مرنة لطرق الدفع (تلقائي، نقدي، مستحق القبض)
- التكامل مع JoFotara PHP SDK الإصدار 0.9
- التوافق مع معايير برمجة WordPress وWooCommerce
- توثيق كامل مضمن
- معالجة الأخطاء والتحقق من الصحة
- ملاحظات الطلب لنجاح/فشل إنشاء الفاتورة
- حقول بيانات الطلب المخصصة لتخزين بيانات الفاتورة
- التوافق مع HPOS (نظام تخزين الطلبات عالي الأداء)
- دعم WordPress 5.8+
- دعم WooCommerce 5.0+
- متطلبات PHP 8.0+

### الميزات
- **إنشاء الفواتير تلقائيًا**: يُنشئ إصدار الفواتير تلقائيًا عند اكتمال الطلبات أو بدء معالجتها

- **إعدادات المسؤول**: صفحة إعدادات شاملة لتكوين بيانات الاعتماد وخيارات الفواتير

- **إنشاء يدوي**: إنشاء الفواتير يدويًا من قائمة خيارات الطلب المنسدلة

- **تخزين الفواتير**: تخزين بيانات الفاتورة كاملةً في بيانات تعريف الطلب

- **مؤشرات الحالة**: شارات حالة مرئية في قائمة الطلبات

- **دعم رمز الاستجابة السريعة**: عرض رموز الاستجابة السريعة من JoFotara في تفاصيل الطلب

- **تسجيل الأخطاء**: تسجيل مفصل لتحديد المشكلات وإصلاحها

- **الخطافات والفلاتر**: قابلة للتوسيع عبر إجراءات وفلاتر ووردبريس

- **معالجة الأخطاء**: معالجة سلسة للأخطاء مع رسائل واضحة للمستخدم

- **جاهز للغات متعددة**: جاهز للترجمة مع نطاق نصي

### الجوانب التقنية
- بنية الإضافة متوافقة مع معايير ووردبريس
- بنية قائمة على الفئات مع أنماط Singleton
- التحميل التلقائي عبر Composer
- تنظيف وتهريب مناسبان
- أفضل ممارسات الأمان
- WPCS (ووردبريس) متوافق مع معايير البرمجة
- توثيق شامل مدمج

### الأمان
- التحقق من صحة المدخلات وتنظيفها
- معالجة المخرجات
- التحقق من قيمة Nonce للإجراءات
- التحقق من صلاحيات وظائف الإدارة
- تخزين بيانات الاعتماد بشكل آمن
- لا توجد بيانات اعتماد مُضمنة في الكود

← العودة إلى الرئيسية

تواصل عبر تيليجرام