استرجاع تابي وتمارا في أودو: جزئي، من الفاتورة، ومن نقطة البيع
كيف تسترجع دفعة تابي أو تمارا من أودو، كامل أو جزئي، من سجل الدفعة أو الفاتورة أو نقطة البيع، ووش يصير لما يتزامن استرجاع الكاشير مع المنصة.
العميل اشترى ثلاث قطع يوم الخميس ودفع بتابي، ورجع السبت بقطعة وحدة. الموظف يبي يرجّع له قيمتها، لكن الفلوس ما جت من بطاقة العميل أصلاً، جت من المنصة. هنا يبدأ أول اختبار حقيقي لأي ربط دفع آجل: مو أول بيعة، بل أول إرجاع.
لو سجلت الاسترجاع في أودو وما وصل لتابي أو تمارا، العميل يكمل يدفع أقساط على شيء رجّعه، وأنت تعرف بالموضوع من شكوى أو من تقييم على قوقل. هذا المقال يشرح كيف يشتغل الاسترجاع في Tabby & Tamara for Odoo من الأماكن الثلاثة اللي ممكن يبدأ منها، ووش يحميك من إرسال نفس الاسترجاع مرتين، ووش تسوي لو المنصة رفضت.
الخلاصة قبل التفاصيل
- بيعة من المتجر الإلكتروني أو بوابة العميل: من سجل الدفعة في أودو، بزر الاسترداد القياسي، وتقدر تكتب المبلغ اللي تبيه.
- بيعة كاونتر يرجعها الكاشير: استرجاع عادي في شاشة نقطة البيع، والإضافة ترسل الاسترجاع للمنصة تلقائياً لما يتزامن الطلب.
- بيعة كاونتر مفوترة والعميل اتصل بعدين: زر «Refund on Tabby» في رأس الفاتورة، يرجّع المتبقي كله بضغطة.
الباقي تفاصيل، لكنها تفاصيل تفرق لما تكون الفلوس حقيقية.
ليش الاسترجاع في التقسيط يختلف عن البطاقة
في البطاقة، الاسترجاع يعكس خصم. في التقسيط الفلوس تمشي بطريق ثاني: المنصة دفعت لك أو بتدفع لك في التسوية، والعميل مديون للمنصة بأقساط. فالاسترجاع معناه أنك ترجّع المبلغ للمنصة عبر واجهتها البرمجية، وهي بدورها تتصرف مع العميل حسب شروطها. ما تعطي العميل كاش في بيعة مقسطة، أبداً.
ويترتب على هذا شيئين تحتاج تثبتهما عند فريقك:
- الاسترجاع ما يصير حقيقي إلا لما المنصة تقبله. إشعار دائن في أودو لحاله ما يغير شيء في خطة العميل.
- ما ينفع تسترجع إلا دفعة تم تحصيلها فعلاً. العملية اللي اتصرح فيها وما تحصلت ما فيها شيء يُسترجع، هذي تُفك بدل ما تُسترجع.
المسار الأول: من سجل الدفعة لبيعة المتجر أو البوابة
لو الدفع صار من صفحة الدفع في المتجر، أو من فاتورة في بوابة العميل، أو من عرض سعر، الإضافة ما تضيف شاشة خاصة فيها. تستخدم مسار الاسترداد القياسي في أودو. المزودان يعلنان لإطار الدفع في أودو أنهما يدعمان الاسترجاع الجزئي، فأودو يعرض لك المعالج كامل بدل ما يقيّدك بالمبلغ الكلي.
الخطوات
افتح الفاتورة المدفوعة واضغط الزر الذكي الخاص بمعاملة الدفع، أو افتح سجل الدفعة المرتبط بها. في سجل الدفعة فيه زر استرداد (Refund) يظهر لمستخدمي الفوترة طول ما فيه مبلغ يقبل الاسترجاع. تفتح نافذة صغيرة فيها مبلغ الدفعة، المبلغ المسترجع سابقاً، الحد الأقصى المسموح، وخانة المبلغ اللي تبي ترجعه. اتركه على الحد الأقصى لاسترجاع كامل، أو اكتب قيمة القطعة المرتجعة لاسترجاع جزئي. هذا المعالج جزء من أودو نفسه من الإصدار 15 إلى 19.
وش يصير بعد التأكيد
أودو ينشئ معاملة استرجاع فرعية مرتبطة بالمعاملة الأصلية، والإضافة ترسل الطلب للمنصة: نقطة الاسترجاع في تابي لدفعة تابي، ونقطة الاسترجاع المبسط في تمارا لدفعة تمارا. في الحالتين يُرسل مرجع الاسترجاع من أودو كمفتاح يمنع التكرار.
المعاملة ما تنقلب إلى «تم» إلا برد صريح من المنصة يؤكد الاسترجاع. رد فيه رسالة خطأ، أو انقطاع في الشبكة، أو مفتاح ما يناسب البيئة، كلها تخلي المعاملة في حالة خطأ مع رسالة المنصة كما هي. ما فيه شيء في الفاتورة يوحي إن الاسترجاع صار وهو ما صار.
بعد ما تصير معاملة الاسترجاع «تم»، المعالجة اللاحقة في أودو تنشئ دفعة صادرة مقابلة في دفتر يومية المزود، فالمحاسبة تشوف الفلوس طالعة من نفس الحساب اللي دخلت فيه. وانتبه لشيء ما يسويه المعالج: ما ينشئ إشعار دائن. لو البيعة نفسها بتنعكس، أصدر إشعار الدائن بالطريقة المعتادة. استرجاع المنصة والمستند المحاسبي عمليتان منفصلتان قصداً.
كل نداء في هذا المسار يُسجل في سجل الـ API مع إخفاء المفاتيح، فالاسترجاع المرفوض تقرأه كطلب ورد بدل ما تخمّن. طريقة قراءة السجل والأكواد اللي ترجع منه مشروحة في دليل حل مشكلة تابي ما يظهر في صفحة الدفع.
المسار الثاني: إرجاع عند الكاونتر
بيع الفرع مختلف لأن التحصيل صار عبر مسار نقطة البيع في الإضافة نفسها، مسار رمز QR اللي يشرحه مقال تابي وتمارا في نقاط البيع في أودو. السجل المهم هنا اسمه جلسة دفع تابي، وتلقاه تحت نقطة البيع، ثم الطلبات، ثم Tabby Payments. كل دفعة كاونتر تم تحصيلها لها جلسة فيها المبلغ، ورقم الدفعة عند المنصة، والحالة، والمبلغ المسترجع.
وش يسوي الكاشير
ولا شيء غير معتاد، وهذي النقطة. يفتح قائمة الطلبات في شاشة نقطة البيع، يدور الإيصال الأصلي، يضغط استرجاع، يختار القطع والكميات الراجعة، ويروح لشاشة الدفع. يختار طريقة تابي. في طلب الاسترجاع ما تفتح نافذة QR، الإضافة تضيف سطر دفع عادي بمبلغ سالب وتخلي الكاشير يأكد الطلب.
وش يصير عند المزامنة
الشغل الحقيقي يصير لما طلب الاسترجاع يوصل السيرفر:
- الإضافة تلقى أسطر الدفع السالبة بطريقة تابي في طلب الاسترجاع.
- تتبع القطع المرتجعة للطلب الأصلي ولجلسته المحصّلة.
- ترسل للمنصة استرجاع بالمبلغ الأصغر بين مبلغ الإرجاع والرصيد اللي لسا يقبل الاسترجاع في الجلسة، بمفتاح مبني من رقم طلب الاسترجاع.
- عند النجاح تضيف المبلغ لإجمالي المسترجع في الجلسة، وتحوّل حالتها إلى «مسترجع» لما يتغطى كامل المبلغ المحصّل، وتكتب ملاحظة في محادثة الجلسة باسم طلب الاسترجاع.
ولأن المبلغ جاي من القطع اللي اختارها الكاشير، الاسترجاع الجزئي هو ببساطة استرجاع قطع أقل. والاسترجاع المتكرر على نفس البيعة يشتغل بعد، إلى حد المبلغ المحصّل، لأن الجلسة تظل قابلة للاسترجاع إلى أن يصير رصيدها صفر.
لو فشل النداء
طلب الاسترجاع يتزامن على أي حال. الإضافة ما توقف مزامنة نقطة البيع أبداً بسبب مشكلة في البوابة، لأن تعليق المزامنة أسوأ من استرجاع متأخر. بدالها تحفظ رسالة الخطأ في الجلسة، وتجدول نشاط من نوع مهمة على السجل لمن زامن الطلب، يقول إن الاسترجاع التلقائي فشل ويطلب إعادة المحاولة من الزر. هذا النشاط هو اللي تراقبه في الأسابيع الأولى بعد التشغيل.
نقطة لازم تعرفها من الحين: الاسترجاع التلقائي عند المزامنة يبحث عن طرق دفع تابي. لبيعة تمارا في الكاونتر، افتح سجل الجلسة واستخدم الزر المشروح تحت، وهو يرسل الاسترجاع لنقطة تمارا نفسها.
المسار الثالث: من الفاتورة مباشرة، أو من الجلسة
لو بيعة الكاونتر صدرت لها فاتورة، ما تحتاج تطلع منها. فاتورة العميل فيها زر ذكي «Tabby» يفتح جلسة الدفع المرتبطة، وزر «Refund on Tabby» في رأس الفاتورة. هذا الزر يسترجع المبلغ المتبقي المحصّل لكل جلسة مرتبطة بالفاتورة، بعد رسالة تأكيد. وهو أسرع طريق لما يتصل العميل بعد ما طلع من المحل والبيعة كلها بتنعكس.
نفس الزر موجود على سجل الجلسة نفسه، ويشتغل للمزودين الاثنين. ما يظهر إلا والجلسة محصّلة وفيها رصيد لسا يقبل الاسترجاع.
الزرين يرجّعان الرصيد المتبقي بدون ما يسألان عن مبلغ. لو تبي استرجاع جزئي لبيعة كاونتر، مرّرها من مسار نقطة البيع اللي فوق، لأن القطع هي اللي تحدد المبلغ.
مين يقدر يضغط الزر
الاسترجاع يحرك فلوس حقيقية، فالأزرار اليدوية محمية بصلاحية مخصصة اسمها «Tabby Refund» تلقاها في قسم «Tabby BNPL» من صلاحيات المستخدم. ما أحد يملكها افتراضياً بعد التثبيت، فامنحها للأشخاص المسموح لهم بالاسترجاع بالذات. والفحص مطبق داخل الدالة نفسها، مو مجرد إخفاء للزر، فما ينفع أحد يتجاوزه بنداء الإجراء عبر RPC.
أما الاسترجاع التلقائي اللي يطلقه استرجاع الكاشير فما يحتاج هذي الصلاحية، لأنه يشتغل على السيرفر أثناء المزامنة. وهذا مقصود: الكاشير أصلاً مسموح له يسترجع بيعة، ودور الإضافة إن المنصة تمشي مع اللي سواه.
ليش الضغط مرتين ما يسترجع مرتين
كل استرجاع يحمل مفتاح منع تكرار موجود في أودو قبل ما يطلع نداء HTTP، مو بعده. استرجاع نقطة البيع يستخدم مفتاح مشتق من طلب الاسترجاع، والزر اليدوي مفتاح مشتق من الجلسة، ومسار المتجر يستخدم مرجع الاسترجاع في أودو. ولو ضاع الرد في الطريق وأعدت المحاولة، تنبعث بنفس المفتاح، فتوصل للمنصة كنفس الاسترجاع مو كاسترجاع جديد.
ومحلياً، الجلسة تحتفظ بقائمة المفاتيح اللي انطبقت فعلاً. نقطة بيع كانت أوفلاين وأعادت مزامنة نفس طلب الاسترجاع، أو ضغطة مزدوجة على الزر، أو إرسال ثاني بعد انتهاء المهلة، كلها تصطدم بهذي القائمة وتُتجاهل. نفس فكرة الحماية من التكرار مطبقة على جانب التحصيل، وهذا جزء مما يشرحه مقال ليش رابط النجاح المزوّر ما يقدر يخلي الطلب مدفوع.
لما المنصة تقول لا
الاسترجاع ممكن يُرفض. الأسباب الشائعة: دفعة ما تحصلت أصلاً، أو مبلغ أكبر من المتبقي، أو مفاتيح لا تناسب البيئة اللي فيها الدفعة. في مسار المتجر تروح معاملة الاسترجاع لحالة خطأ مع رسالة المنصة، والطلب والرد موجودان في سجل الـ API. في مسار نقطة البيع تنحفظ الرسالة في الجلسة تحت الأخطاء، وينجدول النشاط، والزر يعيد المحاولة بنفس المفتاح.
اللي ما تقدر الإضافة تقوله لك هو كيف تتعامل المنصة مع رسومها في بيعة مسترجعة، ولا كم تاخذ من وقت لتعديل أقساط العميل. الاثنين حسب اتفاقك مع تابي أو تمارا. وهذا ربط مستقل من Kerneltics بدون أي شراكة أو اعتماد من الشركتين، فاقرأ هذي الشروط في عقد التاجر عندك، مو هنا.
جرّبه قبل أول إرجاع حقيقي
ضيف الاسترجاع لقائمة ما قبل التشغيل، جنب أول بيعة تجريبية اللي يمر عليها دليل ربط تابي مع أودو خطوة بخطوة. في وضع الاختبار مرّر طلب صغير من كل مسار تستخدمه فعلاً: بيعة متجر ترجّعها من معالج الدفعة، بيعة كاونتر ترجّعها من نقطة البيع، وبيعة كاونتر مفوترة ترجّعها من الفاتورة. بعدها افتح الجلسة وسجل الـ API واقرأ وش انبعث ووش رجع.
مسار الاسترجاع اللي شفته مرة بعينك هو اللي تقدر تثق فيه والعميل واقف عند الكاونتر.
أسئلة متكررة
هل أقدر أسترجع جزء من دفعة تابي أو تمارا من أودو؟
نعم. لبيعة المتجر أو البوابة، معالج الاسترداد على سجل الدفعة فيه خانة مبلغ تكتب فيها قيمة القطعة المرتجعة. لبيعة الكاونتر، الكاشير يسترجع القطع المحددة من شاشة نقطة البيع والإضافة ترسل نفس المبلغ للمنصة عند المزامنة. أما زر Refund on Tabby على الفاتورة أو الجلسة فيرجّع المتبقي كله.
إذا سجلت إشعار دائن في أودو، هل يترجع المبلغ للعميل عند تابي تلقائياً؟
لا. إشعار الدائن مستند محاسبي ولا يكلم المنصة. الاسترجاع الفعلي يصير لما تضغط زر الاسترداد على الدفعة، أو يسترجع الكاشير من نقطة البيع، أو تضغط Refund on Tabby من الفاتورة، ويُعتبر ناجح فقط لما ترد المنصة بتأكيد صريح.
وش يصير لما الكاشير يسترجع بيعة تابي من نقطة البيع؟
يسوي استرجاع عادي ويختار طريقة تابي، وما تفتح نافذة QR. لما يتزامن طلب الاسترجاع مع السيرفر، الإضافة تلقى جلسة الدفعة الأصلية وترسل استرجاع بنفس المبلغ لتابي، وتسجل النتيجة في الجلسة. لو فشل النداء، الطلب يتزامن على أي حال وينجدول نشاط لإعادة المحاولة من الزر. لبيعة تمارا في الكاونتر، الاسترجاع يتم من زر الجلسة.
مين يقدر يسترجع من الخلفية الإدارية؟
أزرار Refund on Tabby على الفاتورة وعلى الجلسة محمية بصلاحية اسمها Tabby Refund تحت قسم Tabby BNPL في صلاحيات المستخدم، وما أحد يملكها افتراضياً. الاسترجاع التلقائي الناتج عن استرجاع الكاشير ما يحتاج هذي الصلاحية لأنه يشتغل على السيرفر.
هل ممكن ينبعث نفس الاسترجاع مرتين لو ضغطت الزر مرتين أو أعادت نقطة البيع المزامنة؟
لا. كل استرجاع يحمل مفتاح منع تكرار يُحدد قبل النداء، وأي إعادة محاولة تنبعث بنفس المفتاح. والجلسة تحتفظ محلياً بقائمة المفاتيح اللي انطبقت، فإعادة مزامنة نفس طلب الاسترجاع أو الضغطة المزدوجة تُتجاهل ولا تُحسب مرة ثانية.