Korat
ميزة

متجر إلكتروني وكاشير المحل على مخزون واحد

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

وُجد نظام المتجر الإلكتروني هذا لأن البائع المحلي الذي يدير متجره داخل محادثة يفقد طلبًا في النهاية. وما يحلّ محلّ المحادثة غير برّاق عن قصد: كتالوج ببحث ومرشِّحات تصنيف، وصفحة منتج تعرض المخزون قبل الضغط، وسلّة لا تلتبس أبدًا في أي متجر هي، وطلب يمرّ بخمس حالات مسمّاة بإشعار عند كل انتقال.

صفحة المنتج: المتغيّرات والمخزون والخصم قبل الضغط

يحمل كل منتج صورًا ووصفًا ومخزونًا وسعرًا قابلًا للتخفيض — سعر عرض يظهر إلى جانب السعر الأصلي مشطوبًا مع شارة نسبة مئوية، فيصير حجم الخصم مقروءًا لا مضمَرًا. وحين ينفد المنتج تُرسم هذه الحقيقة فوق الصورة لا تُكتشف عند الدفع. وهذه قاعدة بُني عليها التطبيق كلّه: كل ما يغيّر معنى الضغطة يجب أن يكون مرئيًا قبلها، ويجب ألّا يَعِد زرّ بشيء ترفضه الشاشة التالية.

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

السلّة تخصّ متجرًا واحدًا

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

متجر واحد لكل سلّة، عن قصد. تبديل المتجر يطلب إفراغ السلّة. فالسلّة الممتدّة على عدة بائعين كانت ستحتاج إلى دفع واحد كي تكون صادقة، ولا يوجد هنا دفع على مستوى السوق كلّه — كل طلب بين مشترٍ ونشاط تجاري واحد.

ورسم الشحن ليس حقلًا يرسله التطبيق. يقرأه الخادم من سجل المتجر نفسه لحظة تقديم الطلب، وهو لا ينطبق إلا على التوصيل.

الدفع: توصيل أو استلام، ورسم لا يحدّده العميل

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

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

خمس حالات للطلب، ورقم تتبّع، وإشعار للطرفين

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

وللنهايتين سبب. من يلغي من الزبائن عليه أن يذكر السبب، ومن يرفض من المتاجر عليه أن يذكر السبب، ويسافر السبب مع الطلب بدل أن يكون رسالة تختفي في محادثة. وكل انتقال يُشعر الطرفين، لأن مسار طلب بلا إشعارات يترك المتاجر تفوّت الطلبات والمشترين يخمّنون.

  • معلَّق — قُدّم الطلب وينتظر المتجر
  • مؤكَّد — قُبل، والمتجر ملتزم به
  • قيد التجهيز — يجري إعداده
  • مشحون — خرج، ومعه رقم تتبّع
  • مُسلَّم — أُغلق، ويصير المشتري مؤهَّلًا للتقييم

جانب البائع: نقطة البيع والطلبات الواردة والمخزون

يحصل نشاط التجزئة على ثلاثة مربّعات في لوحة التحكم: نقطة بيع للبيع المباشر، ولوحة طلبات إلكترونية لكل ما جاء عبر التطبيق، ومنتجات ومخزون بتنبيهات انخفاض الكمّية. وتحمل اللوحة شارات حيّة تُحدَّث كل بضع ثوانٍ، فيعلن الطلب الجديد عن نفسه بدل انتظار من يجده. والبيع في المحلّ والبيع عبر التطبيق يكتبان في السجل نفسه.

ولأن القناتين تهبطان في مكان واحد، تغطّي التقارير النشاط كلّه لا شريحته الإلكترونية: الإيرادات وعدد الطلبات ومتوسط قيمة الطلب وتوزيع بين النقد وPromptPay وغيرهما، وأفضل خمسة مبيعًا، ومخطّط أعمدة لإيرادات سبعة أيام، وفترات اليوم أو 7 أيام أو 30 يومًا أو المدة كلها. ويمكن إعادة طباعة الإيصالات، وتوليد نصّ إيصال قابل للمشاركة من السجل نفسه. ولا يمكن إصدار فاتورة ضريبية: فذلك مقصور على المسجَّلين في ضريبة القيمة المضافة، ولا شيء في هذا النظام يسجّل بعد تسجيل أي متجر. وقائمة الزبائن تُبنى من ذلك السجل أيضًا، مع ملاحظات ووسوم لكل زبون وسجل مشترياته ونقاط ولاء تتراكم بمعدّل يضبطه المتجر بعملته الخاصة، مقابل حدّ أدنى للبيع ومكافأة قابلين للضبط.

ويخضع وصول الموظفين لمصفوفة صلاحيات بأدوار جاهزة وتجاوزات لكل شخص، فيمكن منح مساعد المتجر المنتجات والطلبات من دون الرواتب والتقارير. والمصفوفة نفسها موجودة في قاعدة البيانات باسم has_capability(business_id, capability)، وهي توسّع الأدوار الجاهزة على الخادم لأجل سياسات الأمان على مستوى الصف — فالخادم لا يأخذ بكلام العميل عن الدور الذي يشغله أحد.

تقييمات المنتج لا يكتبها إلا مشترٍ حقيقي

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

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

حين يسجّل الزبون الجهاز الذي اشتراه منك في سجل الأصول، يعود بلاغ العطل إلى المحل الذي باعه — أي إليك أنت.

وما يُعار باليوم أو بالشهر بدل أن يُباع نهائيًا يمرّ عبر التأجير. وإن كان عندك تقديم داخل المحل فإن الطعام يقرأ المنتجات والمخزون نفسها.

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

هل أستطيع الشراء من متجرين في طلب واحد؟

لا. تحمل السلّة متجرًا واحدًا في كل مرة، والتبديل يطلب إفراغها. وكل طلب بينك وبين نشاط تجاري واحد بترتيب التوصيل الخاص به، فلا يوجد دفع موحّد على مستوى السوق.

كيف يُحسب رسم التوصيل؟

يضبطه المتجر، ويقرأه الخادم من سجل المتجر لحظة تقديم الطلب. والتطبيق لا يرسل رسمًا يُوثَق به أبدًا. وطلبات الاستلام بلا رسم شحن أصلًا لا برسم قيمته صفر.

ماذا يحدث إذا عجز المتجر عن تنفيذ طلبي؟

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

هل يستطيع أي أحد تقييم منتجاتي؟

لا. أهلية التقييم عرض في قاعدة البيانات، وشراء الصنف هو ما يؤهّل صاحبه للكتابة عنه. ومن لم يشتروا يرون بطاقة تشرح سبب غياب زر الكتابة، ويعيد مُشغِّل حساب متوسط النجوم من الصفوف الفعلية.

هل أحتاج إلى برنامج منفصل للبيع داخل المحل؟

لا. تتضمّن لوحة التحكم نقطة بيع، والمبيعات داخل المحل تُكتب في دفتر المبيعات نفسه الذي تُكتب فيه الطلبات الإلكترونية — فتغطّي الإيرادات والأكثر مبيعًا وقائمة الزبائن المتجر كلّه لا قناة واحدة منه.

اعرض منتجًا، وقدّم طلبًا

أنشئ نشاط تجزئة في لوحة التحكم وامشِ في نصفَي دورة الطلب بنفسك.