الفوترة والتجديد
التجربة لشهر واحد بعد دفعة مقدمة بنسبة 10%، والعقد لـ 3 سنوات مع الخروج في السنة 1، والفوترة السنوية، والتجديد، وإلغاء التجربة، وإلغاء التجديد، وعدم وجود استرداد للسنة التي بدأت بالفعل، وما يخزّنه كل طلب.
تبدأ كل باقة بتجربة لشهر واحد بعد دفعة مقدمة بنسبة 10%، ثم عقد لمدة 3 سنوات، يُفوتر مرة في السنة مقدمًا، لكل سفينة. يمكنك المغادرة في السنة 1، قبل التجديد الأول. كل فاتورة هي سنة مفوترة واحدة (12 شهرًا). تحمل الرسوم الأولى أيضًا الإعداد لمرة واحدة لكل سفينة، وإعداد Safety Vision وتركيبها عند شراء الكاميرات، وعدّة البوابة الاختيارية. تأتي الأسعار من @pruva/pricing؛ انظر التسعير.
إشعار الفوترة
التجربة المجانية
- شهر واحد، واحدة لكل عميل. مساحة العمل التي حصلت على تجربة من قبل تدفع الرسوم الأولى كاملة في يوم الطلب.
- دفعة مقدمة بنسبة 10% اليوم. عند إتمام الشراء يختار المشتري وسيلة دفع ويؤشّر على مربع الموافقة. تُحصَّل الدفعة المقدمة في ذلك اليوم. لا تُسترد.
- باقي الرسوم الأولى عند انتهاء الشهر:
trial.firstChargeOnفي الطلب. تمتد التجربة من يوم الشراء حتىtrial.end، أي اليوم السابق. - تبدأ السنة المفوترة الأولى (12 شهرًا) بعد التجربة، في يوم الرسوم الأولى. تلك السنة غير قابلة للاسترداد من ذلك الحين. العقد لمدة 3 سنوات. يمكنك المغادرة في السنة 1، قبل التجديد الأول.
- الإلغاء أثناء التجربة يوقف باقي الرسوم. لا تُسترد الدفعة المقدمة. انظر إلغاء التجربة.
تقول كل بطاقة تسعير على الموقع «تجربة لشهر واحد · عربون 10%».
جدول الدفع
يحسب scheduleFrom(purchase, firstChargeUsd, withTrial) في @pruva/pricing الجدول، ويحوّله scheduleLabel() إلى السطر الذي يعرضه إتمام الشراء قبل زر الطلب. لباقة Operations بثلاث وحدات Pro على 10 سفن، طُلبت في 16 أكتوبر 2026:
| الطلب | تجربة مجانية | اليوم | التحصيل الأول | المدة | يتجدد في | ما يظهر عند الدفع |
|---|---|---|---|---|---|---|
| مع تجربة | من 16 أكتوبر 2026 إلى 15 نوفمبر 2026 | $8,945 | $89,450 في 16 نوفمبر 2026 | من 16 نوفمبر 2026 إلى 15 نوفمبر 2027 | 16 نوفمبر 2027 | اليوم: عربون $8,945 · الباقي في 16 نوفمبر 2026 |
| التجربة مستخدمة من قبل | لا يوجد (استُخدمت من قبل) | $89,450 | $89,450 في 16 أكتوبر 2026 | من 16 أكتوبر 2026 إلى 15 أكتوبر 2027 | 16 أكتوبر 2027 | اليوم: $89,450 · يتجدد في 16 أكتوبر 2027 |
قبل زر الطلب يعرض إتمام الشراء، لمساحة عمل مؤهلة، «اليوم: $… دفعة مقدمة · الباقي في …»، وتواريخ التجربة، وبداية السنة المفوترة ونهايتها وتواريخ التجديد، ومبلغ الرسوم الأولى. يقول الزر بدء تجربة لشهر واحد.
أهلية التجربة
يسأل إتمام الشراء التطبيق GET /api/trial-eligibility?workspace=… (مهلة قصيرة) عما إذا كانت مساحة العمل ما تزال تستطيع الحصول على تجربة.
- التجربة استُخدمت بالفعل. يقول إتمام الشراء «لقد استُخدمت تجربتك المجانية بالفعل»، ويعرض جدول الرسوم اليوم، ويبني الطلب من دون تجربة، ويقول الزر تقديم طلب العرض.
- التطبيق غير متاح. يفترض إتمام الشراء أن التجربة لم تُستخدم ويقول ذلك بنص صغير. يتحقق التطبيق مرة أخرى عند وصول الطلب.
إذا أجاب التطبيق بـ 409 trial_used (مثلًا استخدم لسان ثانٍ التجربة أولًا)، لا يُطلب شيء ولا يُحصَّل شيء. يعرض إتمام الشراء الرسالة، وينتقل إلى الجدول من دون تجربة، ويزيل التأشير عن مربع الموافقة. يجب أن يؤشّر المشتري عليه مرة أخرى ويقدّم الطلب من دون تجربة. لا يعيد الموقع المحاولة من دون تجربة من تلقاء نفسه.
تواريخ المدة
للمدة ثلاثة تواريخ. يعرضها إتمام الشراء كلها قبل أن تشتري، ويحملها الطلب.
| التاريخ | المعنى |
|---|---|
| البداية | يوم الرسوم الأولى، بعد التجربة. من دون تجربة: يوم الطلب. |
| النهاية | آخر يوم في السنة المفوترة: 12 شهرًا بعد البداية، ناقص يوم واحد. |
| يُجدَّد في | اليوم الذي يلي النهاية. تُحصَّل السنة التالية في هذا اليوم. |
مثال: مدة تبدأ في 23 أكتوبر 2026 تنتهي في 22 أكتوبر 2027 وتُجدَّد في 23 أكتوبر 2027. تأتي التواريخ من termFrom() في @pruva/pricing وتستخدم أيام UTC.
إلغاء التجربة
أثناء التجربة، يفتح المالك الإعدادات → الوحدات والفوترة في التطبيق، حيث تعرض الوحدة أيام التجربة المتبقية وزر إلغاء التجربة.
- لا يُحصَّل باقي الرسوم الأولى. لا تُسترد الدفعة المقدمة.
- تُقفل وحدات التجربة فورًا.
- تظل التجربة محسوبة على أنها استُخدمت (واحدة لكل عميل).
وحده المالك يستطيع الإلغاء، وفقط أثناء سريان التجربة. تُكتب كل عملية إلغاء في سجل التدقيق كـ billing.cancel_trial مع "(no charge)".
تحصيل الباقي
تأخذ مهمة باقي الرسوم الأولى عند انتهاء شهر التجربة: runTrialCharges() في @pruva/core (يشغّله وضع العرض تنفيذًا كسولًا) وتوأمها في SQL وهو public.pv_run_trial_charges() (وضع قاعدة البيانات، دور الخدمة فقط). لكل طلب حلّ موعد firstChargeOn فيه، تسجّل تلك الرسوم مرة واحدة وتنقل وحدات الطلب من trial إلى active.
- متماثل الأثر. تضبط
charged_atمرة واحدة. التشغيل الثاني في اليوم نفسه، أو في أي يوم لاحق، لا يحصّل شيئًا مرة أخرى. - لا تحصّل أبدًا تجربة أُلغيت. تُتخطى الطلبات التي ضُبط فيها
trial_cancelled_at. - في هذا الإصدار لا يوجد مزوّد دفع، لذا «التحصيل» يسجّل الرسوم فقط. يأخذ الإصدار الحقيقي الرسوم من مرجع وسيلة الدفع في الطلب (فاتورة Stripe، أو التقاط تفويض مسبق بـ 3-D Secure).
التجديد
تتجدد الخطة لسنة مفوترة أخرى (12 شهرًا) ما لم يُلغَ التجديد قبل تاريخ التجديد. المغادرة في السنة 1 هي الإلغاء قبل التجديد الأول. لا يمكن أن تتغير الأسعار إلا عند التجديد، ويُبلَّغ المالكون قبل تاريخ التجديد.
إلغاء التجديد
بعد التجربة، يفتح المالك الإعدادات → الوحدات والفوترة في التطبيق ويضغط إلغاء التجديد.
- يوقف التجديد التالي ولا شيء غيره.
- يستمر الوصول حتى نهاية المدة التي دفعت مقابلها.
- لا يُسترد شيء.
لا استرداد
بعد التجربة، لا يوجد استرداد للسنة التي بدأت بالفعل، بما في ذلك الأشهر غير المستخدمة أو الوحدات غير المستخدمة أو تخفيض الخطة. بعد انتهاء السنة المفوترة، تُحفظ البيانات لمدة 90 يومًا حتى تتمكن من تصديرها، ثم تُحذف.
وسيلة الدفع: مرجع، وليست بيانات بطاقة أبدًا
يطلب إتمام الشراء وسيلة دفع؛ والخطوة مطلوبة. لا يوجد مزوّد دفع في هذا الإصدار، لذا لا يعرض أبدًا حقول رقم البطاقة أو تاريخ الانتهاء أو CVC ولا يقبل بيانات البطاقة أبدًا. الخيار الوحيد هو «بطاقة العرض · ليست بطاقة حقيقية (وضع اختبار Stripe في الإنتاج — تحقق قبل الإطلاق)». يرفض الخادم أي طلب يحمل حقول بطاقة.
يجمع الإصدار الحقيقي البطاقة عبر Stripe Elements أو تفويض مسبق بـ 3-D Secure، فلا تلمس البطاقة خوادمنا أبدًا. في الحالتين، يحمل الطلب مرجعًا فقط:
| الحقل | قيمة العرض |
|---|---|
payment.provider | demo (أو stripe في إصدار حقيقي) |
payment.reference | pm_demo_visa_4242؛ يجب أن يطابق pm_… |
payment.label | Demo card · no real card؛ يرفض المخطط تسمية تحتوي على رقم بطاقة |
الموافقة المخزَّنة في الطلب
عند إتمام الشراء يجب أن يؤشّر المشتري على مربع. يبدأ غير مؤشَّر، ويبقى زر الطلب معطّلًا حتى تُختار وسيلة الدفع ويؤشَّر المربع. يقول المربع حرفيًا:
أوافق على دفع عربون بنسبة 10% اليوم، يفتح فترة تجريبية مدتها شهر واحد، يليها عقد مدته 3 سنوات يُفوتر سنويًا مقدمًا لكل سفينة بسعر فئة بلد شركة الفوترة الخاصة بي، مضافًا إليه رسم الإعداد لمرة واحدة وأي خطة دعم وأي بند كاميرات Safety Vision وأي معدات على المتن معروضة. تشمل Safety Vision مجموعة الكاميرات والضمان والاستبدال، وتبقى ملكًا لـ Pruva. المعدات بند منفصل؛ وSafety Vision والمعدات سعر واحد بالدولار الأمريكي في كل بلد ولا تخفضها فئة البلد. يمكنني المغادرة في السنة الأولى قبل التجديد الأول. يُحصَّل باقي الدفعة الأولى عند انتهاء شهر التجربة ما لم ألغِ قبل ذلك. لا يُسترد العربون. بعد الفترة التجريبية لا توجد مبالغ مستردة عن السنة التي بدأت، ويمكنني إلغاء التجديد في أي وقت قبل تاريخ التجديد.
يرفض الخادم أي طلب من دون موافقة أو من دون وسيلة دفع، مهما أرسل المتصفح. يحمل الطلب الذي يوقّعه الموقع ويرسله إلى التطبيق (StoreOrderSchema في @pruva/core) ما يلي:
| الحقل | ما يحمله |
|---|---|
consent.accepted | دائمًا true؛ لا يُرسل طلب من دون موافقة أبدًا. |
consent.version | إصدار نص الموافقة، الآن 2026-10-20.2. |
consent.at | وقت وصول النموذج المؤشَّر إلى الخادم (ساعة الخادم، وقت ISO). |
trial | start وend وfirstChargeOn؛ أو null عندما تكون التجربة قد استُخدمت بالفعل. التجربة شهر واحد. تبدأ السنة المفوترة في firstChargeOn. |
chargeTodayUsd | الدفعة المقدمة بنسبة 10% مع تجربة؛ والرسوم الأولى (annualUsd + oneOffUsd) من دونها. |
payment | مرجع وسيلة الدفع أعلاه. |
term.start وterm.end وterm.renewsOn | تواريخ السنة المفوترة أعلاه. يتحقق التطبيق من أنها تمتد 12 شهرًا. العقد لمدة 3 سنوات، مع خروج في السنة 1. |
sku وmodules وvessels | الباقة أو حزمة القطاع، وكل وحدة تفعّلها (النواة ووحدات Pro وcameras مع Safety Vision)، وعدد السفن. support هي خطة الدعم. |
annualUsd | اشتراك السنة لكل السفن. يتحقق التطبيق منه مقابل قائمة الأسعار. |
oneOffUsd | الإعداد لكل سفينة، وإعداد Safety Vision وتركيبها، وعدّة البوابة الاختيارية. |
firstChargeUsd | annualUsd + oneOffUsd. تُحصَّل الدفعة المقدمة اليوم؛ ويُحصَّل الباقي عند انتهاء شهر التجربة (أو المبلغ كاملًا اليوم من دون تجربة). |
تعرض صفحة النجاح معرّف الطلب، والبنود، وشهر التجربة، والدفعة المقدمة المحصَّلة اليوم وتاريخ الباقي (أو المبلغ المحصَّل اليوم عندما لا توجد تجربة)، وتواريخ السنة المفوترة، و«وسيلة الدفع: بطاقة العرض · ليست بطاقة حقيقية»، و«سُجّلت الموافقة: الإصدار … في …»، ورابطًا إلى الإعدادات → الوحدات والفوترة. إلغاء التجربة هناك يوقف باقي الرسوم. لا تُسترد الدفعة المقدمة.
ألوان تمييز الوحدات
لكل وحدة لون تمييز خاص، من @pruva/brand/tokens. يستخدمه التطبيق والموقع وهذه الوثائق للحدود والرقائق والأيقونات فقط، وليس لنص المتن أبدًا. ينتقل النص بلون التمييز إلى درجة أغمق في السمة الفاتحة حتى يحقّق WCAG AA. تبقى العلامة نفسها أحادية اللون، مع النحاس للأزرار الأساسية.