ما القاعدة الأساسية في نقاط البيع العاملة دون اتصال؟

القاعدة الأساسية هي: يكتمل قيد البيع في الصندوق، ويعلم به المركز لاحقًا. فتطبيق الصندوق يكتب السطر في قاعدة البيانات المحلّية، ويطبع الإيصال، ويضع العملية في طابور لإرسالها إلى المركز. وحين يتعذّر الوصول إلى المركز لا يتوقّف البيع؛ بل تتأخّر الرؤية في المركز فحسب. أمّا في تصميم ينتظر موافقة المركز، فانقطاع الخطّ خسارة مبيعات مباشرة.

ما يجب حفظه محلّيًا في الصندوق

  • المنتج، والباركود، والوحدة، ونسب الضريبة
  • قائمة الأسعار السارية وقواعد الحملات (بتواريخ بدايتها ونهايتها)
  • بطاقة العميل ورصيد النقاط (ويجب تعريف حدّ للرصيد دون اتصال)
  • صلاحيات أمين الصندوق وقواعد الإرجاع والإلغاء
  • الإيصال المفتوح، ورصيد بداية اليوم، وبيانات جرد الصندوق

ويجب توزيع بيانات الأسعار والحملات على الصندوق مسبقًا. فسؤال المركز عن السعر لحظة البيع يُبطل ادّعاء القدرة على العمل دون اتصال.

أين ينبغي أن يعمل محرّك الحملات؟

يجب أن يعمل محرّك الحملات في الصندوق؛ والمركز يوزّع مجموعة القواعد فقط. وهذا يُنشئ متطلّبين: إصدار القواعد بأرقام، ومتابعة أيّ صندوق يطبّق أيّ إصدار. فحين تُحسب حملة حسابًا خاطئًا، يجب أن يوجد في السجلّات جواب سؤال «أيّ صندوق كان يعمل بأيّ إصدار قاعدة».

التكامل مع جهاز الدفع والجهاز المالي

الدفع بالبطاقة والعملية المالية عالم مختلف عن طابور التطبيق نفسه: فهذه العمليات تجري في جانب الجهاز والبنك، ويخضع التراجع عنها لقواعدها الخاصّة. والسيناريو الحرج هو نجاح الدفع مع عدم تلقّي تطبيق الصندوق الردَّ. وفي هذه الحالة على التطبيق:

  • أن يسم العملية بأنّها «غير محسومة النتيجة»،
  • وأن يستطيع الاستعلام من الجهاز عن حالة آخر عملية،
  • وأن يعرض تنبيهًا يمنع أمين الصندوق من التحصيل مرّة ثانية.

وفي التركيبات التي تُشغَّل من دون اختبار هذا السيناريو، يصير التحصيل المزدوج وفرق نهاية اليوم أمرًا حتميًا.

مطابقة نهاية اليوم

في نهاية اليوم تُقارَن أربع مجموعات: مجموع مبيعات تطبيق الصندوق، وتقرير الجهاز المالي، ومجموع نقطة البيع البنكية، والجرد الفعلي للصندوق. ولإمكان العثور على مصدر الفروق يجب حفظ كلّ عملية بيع مع معرّف الصندوق، وأمين الصندوق، ونوع الدفع، ورقم عملية الجهاز، ومرجع الإرجاع إن وُجد. وما لم تُصمَّم هذه الحقول من البداية، تحوّل تحليل الفروق إلى عمل يدوي.

السلوك المنتظر في جانب المركز

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

ثلاثة أمور تتغيّر عند الانتقال إلى بنية متعدّدة المتاجر

  • المخزون: يلزم مخزون على مستوى المتجر ومسار تحويل بين المتاجر.
  • السعر: يجب تعريف فرق السعر على مستوى المتجر أو المنطقة وتفويض الصلاحية.
  • الصلاحية: أيّ خصم يستطيع مدير المتجر اعتماده، وأيّ عملية تتطلّب موافقة المنطقة؟

ونموذج بيانات كُتب لمتجر واحد ينكسر عند هذه النقاط الثلاث؛ فيجب كتابة البنية متعدّدة المتاجر في نموذج البيانات من البداية.

الأسئلة الشائعة

كيف يبقى المخزون صحيحًا والصندوق دون اتصال؟

يخصم الصندوق من عدّاد المخزون المحلّي، ويحدّث المركز رصيده حين تصله قيود البيع. ويُقبَل انحراف قصير الأمد. والحاسم هو أن ينبّه الصندوق ويَسِم القيد بدل حجب البيع عند نزول المخزون إلى السالب؛ وإلّا انتفى الغرض من العمل دون اتصال.

كم يمكن أن تبلغ مدّة العمل دون اتصال؟

يحدّد الحدَّ حجمُ الطابور وحداثةُ بيانات الأسعار والحملات. ويُعرَّف عمليًا حدّ أعلى، وعند تجاوزه يعرض الصندوق تنبيهًا للمسؤول. أمّا العمل دون اتصال بلا حدّ فيكبّر خطر البيع بالسعر القديم.

هل يمكن تنفيذ الإرجاع دون اتصال؟

يمكن إذا كان مرجع الإيصال موجودًا في الصندوق. أمّا إرجاع بيع جرى في متجر آخر فليس آمنًا دون اتصال؛ وينبغي أن تتطلّب العملية في هذا السيناريو الوصول إلى المركز.