C

مركز الدعم والتثبيت · Cetara

Support & Installation Center — v1.8.0
دليل ميداني للمشغّل ومهندس الدعم

ثبّت Cetara، وشغّله، وعالج أي مشكلة — من صفحة واحدة.

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

🖥️ ويندوز 10/11 · 64‑بت 🔌 يعمل دون إنترنت 💾 بياناتك محلية على الجهاز 🔎 اكتب في البحث للتصفية الفورية

مسارات البيانات · Data paths

قاعدة البيانات%APPDATA%\Cetara\data\cetara.db
النسخ (يومية ×7)%APPDATA%\Cetara\backups\
لقطات التراجع%APPDATA%\Cetara\rollback\
التثبيت%LOCALAPPDATA%\Programs\Cetara\

أول دخول · First login

مشرف النظامadmin
كلمة المرور الافتراضيةcetara2024
صاحب المتجرstore + user + pass
⚠️ غيّر كلمة adminفور أول دخول

عند أي بلاغ · On any ticket

١) خذ نسخة أولاًbackup / snapshot
٢) افتحصحة النظام
٣) اقرأintegrity · disk · license
٤) صنّفبيانات/ترخيص/قرص/إدخال
01

التثبيت · Installation

من ويندوز نظيف إلى أول تسجيل دخول. التثبيت لكل‑مستخدم — لا يحتاج صلاحيات مدير ولا يظهر تحذير UAC.

المتطلّبات

  • ويندوز 10 أو 11 (64‑بت).
  • لا حاجة للإنترنت للتشغيل (يُستحسن فقط لأول تحميل للمثبّت).
  • مساحة قرص ~500MB للتطبيق، ومساحة كافية لنموّ قاعدة البيانات والنسخ.

خطوات التثبيت (للعميل)

  1. شغّل ملف Cetara-Setup-1.8.0.exe.
  2. اختر مجلّد التثبيت (أو اترك الافتراضي %LOCALAPPDATA%\Programs\Cetara) ثم أكمل.
  3. يُنشئ المثبّت اختصاراً على سطح المكتب وقائمة ابدأ باسم Cetara.
  4. يُفتح التطبيق تلقائياً بعد الانتهاء — تظهر شاشة تسجيل الدخول.
مضاد الفيروسات: قبل أول تشغيل، أضِف استثناءً لمجلّد التثبيت ولمجلّد %APPDATA%\Cetara. بعض مكافحات الفيروسات تحجُر ملف better-sqlite3.node (محرّك قاعدة البيانات) فيمنع الفتح — هذا أشيع سبب لـ«لا يفتح».

أول دخول

  • مشرف النظام: اسم المستخدم admin وكلمة المرور الافتراضية cetara2024غيّرها فوراً من الإعدادات. المشرف يفتح سطح المشغّل لإنشاء المتاجر.
  • صاحب المتجر: يدخل باسم المتجر + اسم المستخدم + كلمة المرور التي أنشأها المشغّل، فيُفتح متجره مباشرة.
  • في أول تثبيت لا توجد متاجر بعد — أنشئ أول متجر من سطح المشغّل، أو عبر «معالج الإعداد الأول».

التحديث والإزالة

  • تحديث: شغّل مثبّت الإصدار الأحدث فوق القديم — البيانات تبقى. الأفضل: من مركز الدعم نفّذ «فحص التحديث» ثم «تحضير» (لقطة تراجع) أولاً.
  • إزالة: من «التطبيقات» في ويندوز أو Uninstall Cetara.exe. الإزالة لا تحذف بياناتك — مجلّد %APPDATA%\Cetara يبقى.

Requirements

  • Windows 10 or 11 (64‑bit).
  • No internet needed to run (only to download the installer once).
  • ~500 MB disk for the app, plus room for the database and backups to grow.

Install steps (for a customer)

  1. Run Cetara-Setup-1.8.0.exe.
  2. Choose an install folder (or keep the default %LOCALAPPDATA%\Programs\Cetara) and finish.
  3. It creates a Desktop and Start‑Menu shortcut named Cetara.
  4. The app opens automatically when done — the Login screen appears.
Antivirus: before first launch, add an exclusion for the install folder and %APPDATA%\Cetara. Some AV products quarantine better-sqlite3.node (the database engine), which blocks startup — the single most common cause of "won't open."

First login

  • Platform admin: username admin, default password cetara2024change it immediately in Settings. The admin opens the Operator panel to create stores.
  • Store owner: signs in with store + username + password created by the operator, which opens their store directly.
  • A brand‑new install has no stores yet — create the first from the Operator panel or the first‑run wizard.

Update & uninstall

  • Update: run the newer installer over the old one — data is preserved. Best practice: run "update precheck" then "prepare" (rollback snapshot) from the Support Center first.
  • Uninstall: via Windows "Apps" or Uninstall Cetara.exe. Uninstall keeps your data — the %APPDATA%\Cetara folder remains.
02

التشغيل والوصول إلى هذا الدليل · Running & Accessing this Guide

كيف تفتح التطبيق كل يوم — وكيف تصل إلى هذا المرجع نفسه وقت الحاجة.

تشغيل التطبيق

  • انقر اختصار Cetara على سطح المكتب أو من قائمة ابدأ.
  • نسخة واحدة فقط: النقر المزدوج مرتين لا يفتح نافذتين — يُعيد التركيز إلى النافذة القائمة (حماية مضمّنة تمنع تنازع نسختين على البيانات).

الوصول إلى هذا الدليل لاحقاً

  • الملف المحلي (دون إنترنت): افتح support-center.html بأي متصفّح — انقره مزدوجاً. ضعه في مكان سهل (سطح المكتب أو داخل مجلّد التثبيت) لتفتحه في أي وقت.
  • طباعة / PDF: زر الطباعة أعلى الصفحة ← «حفظ كـ PDF» لنسخة تحملها أو تشاركها مع فريق الدعم.
  • رابط خاص: إن نُشِر كصفحة، احتفظ بالرابط في المفضّلة لفتحه من أي جهاز أو هاتف.
  • ابحث بسرعة: استخدم مربّع البحث أعلى الصفحة لتصفية الأقسام فوراً (مثلاً: «وردية»، «ترخيص»، رمز خطأ).
نصيحة: ثبّت اختصاراً لهذا الملف بجانب اختصار Cetara على أجهزة العملاء — فيصبح المرجع في متناول اليد وقت أي مشكلة.

Launching the app

  • Click the Cetara shortcut on the Desktop or in the Start Menu.
  • Single instance: double‑clicking twice never opens two windows — it re‑focuses the running one (built‑in guard against two copies fighting over the data).

Getting back to this guide

  • Local file (offline): open support-center.html in any browser — just double‑click it. Keep it somewhere handy (Desktop or the install folder) to open anytime.
  • Print / PDF: the Print button at the top → "Save as PDF" for a copy to carry or share with your support team.
  • Private link: if published as a page, bookmark the URL to open it from any device or phone.
  • Search fast: use the search box up top to filter sections instantly (e.g. "shift", "license", an error code).
Tip: place a shortcut to this file next to the Cetara shortcut on customer machines — the reference is then one click away when anything goes wrong.
03

منهجية الدعم · The Support Method

نفس الدورة لكل بلاغ — تمنع الأخطاء وتبني ثقة العميل.

١. الأعراض → ٢. السبب → ٣. التشخيص → ٤. الإصلاح → ٥. التحقّق (ثم: الوقاية)
القاعدة الذهبية: لا تُصلِح قبل أن تأخذ نسخة احتياطية / لقطة تراجع. الإصلاح بلا نسخة = مخاطرة على بيانات العميل.

روتين الفرز — أول دقيقتين

  1. اسمع العَرَض بدقّة: ماذا كان المستخدم يفعل؟ ما الرسالة الحرفية؟ متى بدأت؟
  2. افتح «صحة النظام» واقرأ: هل database.integrity = ok؟ هل disk.free كافٍ؟ هل النسخة حديثة (ليست needed)؟ هل license.status = active؟
  3. صنّف البلاغ: بيانات / ترخيص / قرص / إدخال مستخدم / أداء / تحديث.
  4. إن كان الجهاز بعيداً: ابدأ جلسة دعم عن بُعد.
1. Symptoms → 2. Cause → 3. Diagnosis → 4. Repair → 5. Verify (then: Prevention)
Golden rule: never repair before taking a backup / rollback snapshot. Repairing without a copy risks the customer's data.

Triage routine — the first two minutes

  1. Hear the symptom precisely: what was the user doing? What is the exact message? When did it start?
  2. Open System health and read: is database.integrity = ok? Is disk.free sufficient? Is the backup recent (not needed)? Is license.status = active?
  3. Classify the ticket: data / license / disk / user‑input / performance / update.
  4. If the machine is remote: start a remote‑support session.
04

أدواتك — مركز الدعم المدمج · The built‑in Support Center

في سطح المشغّل (للمشرف فقط). كل أداة هنا موجودة فعلاً في المنتج.

الأداة
ماذا تفعل
متى تستخدمها
صحة النظام
لقطة: إصدار، قاعدة (حجم/WAL/سلامة سريعة)، قرص، آخر نسخة، ترخيص، إضافات، البيئة
أول شيء في أي بلاغ
سلامة قاعدة البيانات
فحص كامل + فحص المفاتيح الخارجية + عدّ الصفحات/القائمة الحرّة
عند الشك في تلف البيانات
حزمة التشخيص (zip)
تجمع الصحة + السلامة + البيئة + الإعداد + سجلّ الأخطاء + تحقّق النسخ + ذيل السجلّ
لتوثيق بلاغ أو تصعيده
سجلّ الأخطاء
أخطاء التدقيق (kind='error') + سطور app.log
لفهم ما حدث فعلاً
تحقّق النسخ
يفتح كل نسخة .db للقراءة ويفحصها (ok/تالف/خطأ) + عدد الجداول
قبل الاعتماد على نسخة للاستعادة
التحسين (optimize)
checkpoint + لقطة قبل التحسين + optimize/ANALYZE/VACUUM
بطء أو تضخّم ملف القاعدة
الإصلاح الشائع (repair)
ينشئ المجلّدات الناقصة + checkpoint + foreign_keys=ON + REINDEX/ANALYZE + يحذف نسخاً فارغة
معظم الأعطال الخفيفة
فحص/تحضير التحديث
precheck (سلامة/نسخة/قرص/ورديات) ثم prepare (لقطة تراجع)
قبل أي تحديث
قائمة التراجع
لقطات pre-update-*.db المتاحة
للرجوع بعد تحديث فاشل
الدعم عن بُعد
يكتشف RustDesk/AnyDesk ويشغّله ويولّد رمز جلسة
للاتصال بجهاز العميل
الخصوصية: حزمة التشخيص تستثني عمداً بيانات العملاء والمبيعات والمالية — تحوي بيانات فنية فقط (سلامة/بيئة/إعداد/أخطاء). آمنة للإرسال داخلياً.
Tool
What it does
When to use
System health
Snapshot: version, database (size/WAL/quick integrity), disk, last backup, license, plugins, environment
First thing on any ticket
DB integrity
Full integrity_check + foreign‑key check + page/freelist counts
When you suspect corruption
Diagnostics → zip
Bundles health + integrity + environment + config + error log + backup verify + log tail
To document or escalate a ticket
Error log
Audit errors (kind='error') + app.log lines
To learn what actually happened
Backup verify
Opens each .db read‑only and checks it (ok/corrupt/error) + table count
Before relying on a backup
Optimize
checkpoint + pre‑optimize snapshot + optimize/ANALYZE/VACUUM
Slowness or a bloated DB
Common repair
Recreates folders + checkpoint + foreign_keys=ON + REINDEX/ANALYZE + removes empty backups
Most light faults
Update precheck/prepare
precheck (integrity/backup/disk/shifts) then prepare (rollback snapshot)
Before any update
Rollback list
Available pre-update-*.db snapshots
To revert a failed update
Remote support
Detects RustDesk/AnyDesk, launches it, generates a session code
To connect to the customer
Privacy: the diagnostic package intentionally excludes customer, sales, and financial data — technical data only (integrity/environment/config/errors). Safe to share internally.
05

شجرة القرار العامة · The General Decision Tree

ابدأ من هنا لتوجيه أي بلاغ إلى الشجرة الصحيحة في القسم التالي.

هل يفتح البرنامج؟ ├─ لا → شجرة «البرنامج لا يبدأ» (6.1) └─ نعم ├─ رسالة خطأ برمز معروف؟ → «رسائل الأخطاء» (قسم 08) — غالباً سلوك مقصود ├─ بطء / تعليق؟ → شجرة «الأداء» (6.4) ├─ أرقام / تقارير خاطئة؟ → شجرة «البيانات لا تطابق» (6.3) ├─ لا يُحفَظ بيع جديد؟ → شجرة «للقراءة فقط/الترخيص» (6.2) └─ بعد تحديث؟ → تراجع (6.5)
Does the app open? ├─ No → "App won't start" tree (6.1) └─ Yes ├─ Known error code? → "Error Codes" (section 08) — usually intended ├─ Slow / hangs? → "Performance" tree (6.4) ├─ Wrong numbers? → "Data doesn't match" tree (6.3) ├─ Sale won't save? → "Read‑only / license" tree (6.2) └─ After an update? → Rollback (6.5)
06

أشجار الأعطال · Troubleshooting Trees

كل شجرة: العَرَض ← السبب ← التشخيص ← الإصلاح ← التحقّق ← الوقاية. انقر لفتحها.

لا يبدأ٦.١ البرنامج لا يبدأ / يُغلق فوراً · App won't start
العَرَض

نقر الاختصار فلا شيء، أو وميض نافذة ثم اختفاء، أو شاشة بيضاء.

السبب

حجب مكافح الفيروسات لملف better-sqlite3.node؛ تلف ملف قاعدة البيانات؛ مجلّد بيانات بلا صلاحية كتابة؛ تثبيت ناقص.

التشخيص
  1. تحقّق من حجر مكافح الفيروسات (سجلّ الحماية).
  2. تأكّد أن %APPDATA%\Cetara\data\cetara.db موجود وحجمه > 0.
  3. اقرأ آخر أسطر سجلّ الأخطاء من مركز الدعم.
الإصلاح
  1. أضِف استثناء مجلّد لمكافح الفيروسات (التثبيت + %APPDATA%\Cetara) واستعد الملف المحجوز.
  2. إن كان ملف القاعدة تالفاً/صفرياً: استعد أحدث نسخة سليمة من backups\ (تحقّق منها أولاً عبر «تحقّق النسخ»).
  3. إن استمر: أعد تثبيت نفس الإصدار فوق القديم (البيانات تبقى).
التحقّق

يفتح البرنامج، «صحة النظام» = ok، وأول بيع تجريبي ينجح.

الوقاية

جهّز استثناء المجلّد أثناء النشر (خطوة مضاد الفيروسات في قسم التثبيت).

Symptom

Clicking the shortcut does nothing, a window flashes and vanishes, or a blank screen.

Cause

Antivirus blocked better-sqlite3.node; corrupt DB file; data folder without write permission; incomplete install.

Diagnose
  1. Check AV quarantine (protection history).
  2. Confirm %APPDATA%\Cetara\data\cetara.db exists and size > 0.
  3. Read the last lines of the error log in the Support Center.
Repair
  1. Add an AV folder exclusion (install folder + %APPDATA%\Cetara) and restore the quarantined file.
  2. If the DB is corrupt/zero: restore the newest healthy backup from backups\ (verify it first).
  3. If it persists: reinstall the same version over the old one (data preserved).
Verify

The app opens, System health = ok, one test sale succeeds.

Prevent

Set up the folder exclusion during deployment (AV step in the Install section).

ترخيص٦.٢ لا يُحفَظ بيع جديد / «للقراءة فقط» · Read‑only
العَرَض

البيع يرفض الحفظ؛ رسالة ترخيص؛ أو المتجر معطّل.

السبب

الترخيص انتقل إلى expired/suspended بعد المهلة (grace).

التشخيص

«صحة النظام» ← license.status؛ أو سطح المشغّل ← ترخيص المتجر.

الإصلاح

جدّد الاشتراك واضبط تاريخ انتهاء جديد من سطح المشغّل حتى تصبح الحالة active.

التحقّق

أعد فتح المتجر واحفظ بيعاً تجريبياً.

الوقاية

تابع تواريخ انتهاء المتاجر (تنبيه «قريب الانتهاء» في لوحة المشغّل).

Symptom

The sale refuses to save; a license message; or the store is disabled.

Cause

The license moved to expired/suspended past its grace period.

Diagnose

System health → license.status; or Operator panel → store license.

Repair

Renew the subscription and set a new expiry from the Operator panel until status is active.

Verify

Reopen the store; save a test sale.

Prevent

Watch store expiry dates ("expiring soon" on the operator board).

بيانات٦.٣ الأرقام / التقارير لا تطابق التوقّع · Numbers don't match
العَرَض

«الربح غلط»، «الرصيد لا يطابق»، «التقرير ناقص صفوفاً».

السبب

غالباً ليس عطلاً بل سوء فهم: نطاق تاريخ، وردية مفتوحة، بيع آجل غير محصّل، ضريبة/خصم، أو رصيد افتتاحي غير مُدخَل.

التشخيص
  1. ثبّت نطاق التاريخ المقصود.
  2. تحقّق من الورديات المفتوحة (تؤثّر في نقد اليوم).
  3. راجع الآجل غير المحصّل والشيكات تحت التحصيل.
  4. للمحاسبة: افتح ميزان المراجعة وتأكّد Σمدين = Σدائن ومطابقته للدفاتر التجارية.
الإصلاح

غالباً شرح المفهوم للعميل. إن وُجد فارق مطابقة حقيقي: الطبقة المحاسبية ذاتية الشفاء — أعد فتح الشاشة المحاسبية لتُعاد المزامنة.

التحقّق

الرقم يطابق مصدره بعد ضبط النطاق؛ المطابقة = صفر.

الوقاية

درّب العميل على معنى «الآجل» و«الوردية» و«النطاق الزمني».

Symptom

"Profit is wrong," "the balance doesn't match," "the report is missing rows."

Cause

Usually not a fault but a misunderstanding: date range, an open shift, an uncollected credit sale, tax/discount, or an opening balance not entered.

Diagnose
  1. Fix the intended date range.
  2. Check for open shifts (they affect today's cash).
  3. Review uncollected credit (receivables) and cheques under collection.
  4. For accounting: open the Trial Balance, confirm Σdebit = Σcredit and it reconciles with the commercial ledgers.
Repair

Usually explain the concept. If a real gap exists: the accounting layer self‑heals — reopen the accounting screen to re‑sync.

Verify

The number matches its source once the range is fixed; reconciliation is zero.

Prevent

Train the customer on what "credit," "shift," and "date range" mean.

أداء٦.٤ بطء أو تعليق · Slow or hanging
العَرَض

فتح الشاشات بطيء، البحث متأخّر، الحفظ يتجمّد لحظياً.

السبب

ملف قاعدة بيانات متضخّم؛ WAL كبير؛ قرص شبه ممتلئ؛ جهاز ضعيف.

التشخيص

«صحة النظام» ← database.size وwalSize وdisk.free.

الإصلاح

شغّل التحسين (optimize) — يأخذ لقطة ثم VACUUM/ANALYZE ويقلّص الملف. فرّغ مساحة قرص إن لزم.

التحقّق

beforeSize > afterSize؛ الشاشات أسرع.

الوقاية

تحسين ربع سنوي ضمن الصيانة الدورية.

Symptom

Screens open slowly, search lags, saving freezes briefly.

Cause

A bloated DB file; a large WAL; a nearly‑full disk; a weak machine.

Diagnose

System health → database.size, walSize, disk.free.

Repair

Run Optimize — snapshot then VACUUM/ANALYZE, shrinking the file. Free disk space if needed.

Verify

beforeSize > afterSize; screens are faster.

Prevent

Quarterly optimize as part of periodic maintenance.

تحديث٦.٥ مشكلة بعد تحديث · After an update
العَرَض

سلوك جديد غير متوقّع بعد ترقية.

التشخيص

«صحة النظام» ← الإصدار؛ سجلّ الأخطاء؛ قائمة التراجع.

الإصلاح

التراجع: انسخ أحدث pre-update-*.db من rollback\ فوق data\cetara.db، ثم أعد التشغيل.

التحقّق

الإصدار السابق يعمل؛ البيانات سليمة.

الوقاية

التزم دائماً بـ precheck ثم prepare قبل أي تحديث.

Symptom

Unexpected new behavior after an upgrade.

Diagnose

System health → version; error log; rollback list.

Repair

Rollback: copy the newest pre-update-*.db from rollback\ over data\cetara.db, then restart.

Verify

The previous version works; data is intact.

Prevent

Always run precheck then prepare before any update.

تلف٦.٦ شك في تلف قاعدة البيانات · Suspected DB corruption
العَرَض

رسائل SQLite غريبة، فشل حفظ متكرّر، «صحة» integrity ليست ok.

التشخيص

شغّل سلامة قاعدة البيانات الكامل + فحص المفاتيح الخارجية.

الإصلاح

١) الإصلاح الشائع (checkpoint/REINDEX/foreign_keys). إن بقي التلف: ٢) استعد أحدث نسخة سليمة (متحقَّق منها) من backups\.

التحقّق

integrityOk = true، foreignKeyViolations = 0.

الوقاية

إغلاق سليم للبرنامج؛ لا تنسخ ملف القاعدة أثناء تشغيله.

Symptom

Odd SQLite messages, repeated save failures, health integrity not ok.

Diagnose

Run full DB integrity + foreign‑key check.

Repair

1) Common repair (checkpoint/REINDEX/foreign_keys). If corruption remains: 2) restore the newest healthy (verified) backup from backups\.

Verify

integrityOk = true, foreignKeyViolations = 0.

Prevent

Clean shutdown; never copy the DB file while it is running.

07

مشاكل ميدانية شائعة · Common Field Issues

معظمها ليس عطلاً — بل قاعدة تؤدّي دورها، أو خطوة نُفّذت بترتيب خاطئ.

الصندوق لا يطابق عند الإغلاق (زيادة/عجز)

متوقّع أحياناً — رصيد الدرج عدّ فعلي والفرق يُسجَّل بأمانة. راجع سجلّ حركات الصندوق: هل نُسِيَ قبض/صرف؟ هل رُحّل النقد الزائد عبر «ترحيل النقدية» لا بسحب غير مسجّل؟ سجّل الفرق وبلّغ إن كان كبيراً أو متكرّراً.

شيك مستلَم لم يُنقِص دين العميل نقداً

صحيح بالتصميم: الشيك يسدّد العميل فوراً لكن النقد يتحرّك عند التحصيل فقط. حتى التحصيل تعيش القيمة في «الشيكات تحت التحصيل». حصّله عند استحقاقه ليدخل النقد.

«لا أستطيع البيع» أو زر الدفع لا يعمل

غالباً لا توجد وردية مفتوحة — افتح وردية من «الورديات والصندوق». إن كان بيعاً آجلاً، تأكّد من اختيار العميل أولاً.

مسح الباركود لا يُضيف الصنف

تأكّد أن المؤشّر داخل شريط البحث واضغط Enter. إن ظهر تنبيه، فالباركود غير مسجّل على أي منتج — أضِفه لبطاقة المنتج من «المخزون».

المخزون يبدو خاطئاً

افتح «إدارة المخزون» وراجع سجلّ حركات الصنف. نفّذ جرداً لضبط الرصيد على العدّ الفعلي (يسجّل الفرق كهالك). إن كان الفارق في مستودع محدّد، راجع التحويلات الأخيرة.

لا يمكن حذف عميل/مورد

له رصيد قائم. سدِّد أو صفّر الرصيد أولاً ثم احذف — حماية من فقدان تاريخ مالي.

حقل الخصم مقفل في نقطة البيع

الخصم اليدوي يتطلّب صلاحية discount_manual غير الممنوحة للكاشير افتراضياً. اطلب من المالك منحها، أو اعتمد خصومات السياسة.

The drawer doesn't balance at close (over/short)

Sometimes expected — the drawer is a physical count and the difference is recorded honestly. Review the cash‑movement log: a forgotten cash in/out? Was surplus moved out via "cash carry‑over" rather than an unrecorded withdrawal? Record it and report a large or recurring gap.

A received cheque didn't reduce the customer's debt in cash

Correct by design: the cheque settles the customer at once but cash moves only at collection. Until then the value lives in "cheques under collection." Collect it at maturity for the cash to arrive.

"Can't sell" / the pay button does nothing

Usually no shift is open — open one from "Shifts & Cash." For a credit sale, make sure a customer is selected first.

Scanning a barcode adds nothing

Ensure the cursor is in the search bar and press Enter. A warning means the barcode is not registered on any product — add it to the product card in "Products."

Stock looks wrong

Open "Inventory Management" and review the item's movement ledger. Run a stock count to set the balance to the physical count (records the variance as shrinkage). If the gap is in one warehouse, review recent transfers.

Can't delete a customer/supplier

They have an outstanding balance. Settle or zero it first, then delete — this protects financial history.

The discount field is locked in POS

Manual discount requires the discount_manual permission, not granted to cashiers by default. Ask the owner to grant it, or rely on policy discounts.

08

رسائل الأخطاء ومعناها · Error Codes

عندما يرفض Cetara إجراءً فهو غالباً يحمي بياناتك — كادت قاعدة أن تُكسَر. الرموز مأخوذة من db/database.js وdb/accounting.js الفعليّين.

الرمز · Codeالمعنى · Meaningالحل · What to do
المبيعات والعملاء · Sales & Customers
credit_limit_exceededالبيع الآجل يتجاوز حدّ ائتمان العميل · credit sale exceeds the customer's credit limitحصّل دفعة، أو ارفع الحدّ من بطاقة العميل، أو بِع نقداً · collect first, raise the limit, or sell cash
blocked (customer)حذف عميل له رصيد · deleting a customer with a balanceسدِّد الرصيد أو صفّره ثم احذف · settle/zero the balance, then delete
الموردون والمشتريات · Suppliers & Purchases
blocked (supplier)حذف مورد له رصيد · deleting a supplier with a balanceادفع الرصيد أو صفّره أولاً · settle first
payment_method_requiredترحيل شراء دون طريقة دفع · posting a purchase with no payment methodاختر نقدي/شيك/تحويل/بطاقة/آجل · choose a method
cheque_needs_supplierدفع بشيك دون مورد محدّد · paying by cheque with no supplierاختر المورد قبل الدفع بشيك · pick the supplier first
الورديات والصندوق · Shifts & Cash
shift_already_openتوجد وردية مفتوحة بالفعل · a shift is already openأغلق الوردية الحالية قبل فتح أخرى · close the current shift first
no_open_shiftلا توجد وردية مفتوحة · no open shiftافتح وردية قبل البيع أو حركات الصندوق · open a shift first
amount_invalidمبلغ صفري أو غير صالح · a zero/invalid amountأدخل مبلغاً موجباً · enter a positive amount
reason_requiredحركة صندوق دون سبب · a cash movement with no reasonاكتب سبب القبض/الصرف · type the reason
exceeds_drawerترحيل نقد أكثر مما في الدرج · carrying over more than the drawer holdsراجع المتاح (available) وابقَ ضمنه · stay within available
bank_required / bank_not_foundترحيل لبنك دون/بخطأ في اختياره · carry‑over to a missing/invalid bankاختر بنكاً صحيحاً من الدليل · choose a valid bank
الشيكات · Cheques
invalid_statusحالة شيك غير معروفة · unknown cheque statusاستخدم حالة صحيحة (received/deposited/collected/returned/cancelled)
bank_name_requiredإضافة بنك بلا اسم · adding a bank with no nameأدخل اسم البنك (صلاحية bank_add) · enter the bank name
المخزون · Inventory
would_go_negativeتسوية تُنزل الرصيد تحت الصفر · adjustment would take stock below zeroصحّح الكمية، أو فعّل «السماح بالمخزون السالب» إن كان مقصوداً · fix qty or allow negative
insufficient_in_sourceتحويل يتجاوز رصيد المستودع المصدر · transfer exceeds source warehouseحوّل ضمن المتاح · transfer within available
insufficient_in_sales_warehouseبيع يتجاوز رصيد مستودع البيع المفروض · sale exceeds the enforced sales warehouseاستلم/حوّل بضاعة، أو راجع إعداد الفرض · receive/transfer or review setting
المحاسبة · Accounting
period_lockedقيد بتاريخ داخل فترة مُقفلة · entry dated in a closed periodالتاريخ المُقفل لا يتغيّر؛ استخدم فترة مفتوحة · use an open period
unbalancedقيد يدوي غير متوازن (مدين ≠ دائن) · a manual entry not balancedساوِ المدين والدائن · make debit = credit
period_overlap / end_before_startفترة مالية متداخلة أو نهايتها قبل بدايتها · overlapping/backwards periodصحّح تواريخ الفترة · fix the period dates
no_equity_account / no_cash_accountحساب نظام مفقود · a required system account is missingأعد فتح دليل الحسابات لإعادة بناء الأساسيّة · reopen the chart of accounts
code_exists / name_required / system_accountتعارض عند إضافة/تعديل حساب · conflict adding/editing an accountاستخدم رمزاً/اسماً فريداً؛ حسابات النظام لا تُعطَّل · unique code/name
الترخيص ليس رمزاً واحداً بل حالة مشتقّة من التواريخ: active / grace / expired / suspended. بعد المهلة قد يصبح المتجر للقراءة فقط. الحل: جدّد من سطح المشغّل. · Licensing is a date‑derived status, not a single code; past grace a store may go read‑only — renew from the Operator panel.
09

النسخ الاحتياطي والاستعادة · Backup & Restore

النسخ يومية تلقائية (آخر 7 محفوظة). الاستعادة الكاملة تتم بملف .db فقط.

قبل أي إجراء استعادة: انسخ ملف قاعدة البيانات كما هو. لا تُصلح فوق نسختك الوحيدة.

استعادة كاملة من نسخة

  1. أغلق Cetara تماماً (تأكّد ألا تبقى عملية عاملة — لا يعمل في الخلفية).
  2. انسخ ملف النسخة .db فوق ملف القاعدة الحالي cetara.db.
  3. افتح Cetara — بياناتك عند لحظة تلك النسخة.
ملاحظة: تصدير JSON من صفحة النسخ ليس استعادة كاملة — الاستعادة الكاملة بملف .db فقط. تحقّق من سلامة أي نسخة قبل الاعتماد عليها عبر «تحقّق النسخ».
Before any restore: copy the database file as‑is. Don't repair over your only copy.

Full restore from a backup

  1. Close Cetara completely (make sure no process is left; it doesn't run in the background).
  2. Copy the backup .db file over the current cetara.db.
  3. Open Cetara — your data is as of that backup's moment.
Note: the JSON export is not a full restore — full restore uses the .db file only. Verify any backup with "Backup verify" before relying on it.
10

الترخيص و«للقراءة فقط» · Licensing

حالة الاشتراك مشتقّة من التواريخ: activegrace (مهلة) → expired → قد يصبح المتجر للقراءة فقط (لا يُحفظ بيع جديد)، أو suspended (موقوف من الإدارة). الحل دائماً: جدّد الاشتراك واضبط تاريخ انتهاء جديد من سطح المشغّل حتى تعود الحالة active، ثم أعد فتح المتجر واحفظ بيعاً تجريبياً.

الوقاية: تابع تنبيه «قريب الانتهاء» في لوحة المشغّل وجدّد قبل انتهاء المهلة.

Subscription status is derived from dates: activegraceexpired → the store may go read‑only (new sales won't save), or suspended (disabled by the operator). The fix is always: renew and set a new expiry from the Operator panel until status is active, then reopen the store and save a test sale.

Prevention: watch the "expiring soon" alert on the operator board and renew before grace ends.

11

الدعم عن بُعد — إجراء آمن · Remote Support

  1. من مركز الدعم: اكتشف أدوات الدعم (RustDesk مفضّل، AnyDesk بديل).
  2. إن لم تكن مثبّتة، أرشِد العميل لتثبيت RustDesk (مجاني).
  3. ولّد رمز جلسة وشارك معرّف الجهاز مع العميل عبر قناة موثوقة.
  4. اطلب إذن العميل الصريح قبل أي تعديل. لا تُدخِل بيانات حسّاسة نيابةً عنه.
  5. بعد الانتهاء: أنهِ الجلسة وتأكّد أن العميل أغلق أداة الدعم.
  1. From the Support Center: detect the remote tools (RustDesk preferred, AnyDesk fallback).
  2. If none is installed, guide the customer to install RustDesk (free).
  3. Generate a session code and share the machine ID over a trusted channel.
  4. Ask the customer's explicit permission before any change. Do not enter sensitive data on their behalf.
  5. When done: end the session and confirm the customer closed the remote tool.
12

التصعيد وكيف تشرح للعميل · Escalation

متى تُصعّد

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

كيف تشرح للعميل

  • تكلّم بالنتيجة لا بالتقنية: «بياناتك سليمة، أخذت نسخة قبل الإصلاح، وأول بيع نجح».
  • إن كان الأمر سوء فهم (نطاق تاريخ/آجل): اشرح المفهوم بهدوء.
  • إن أخذت نسخة/لقطة: أخبره صراحةً — يبني الثقة.
  • لا تَعِد بما لا يفعله البرنامج. الدليل هو المرجع.

When to escalate

Export the zipped diagnostic package and attach it when escalating if: corruption persists after repair and restore; an error not listed in "Error Codes" recurs; or the customer wants a feature that doesn't exist (not a fault — log it as a request). First collect: the literal message, the screen, the reproduction steps, and the latest backup.

How to explain to the customer

  • Speak outcomes, not internals: "Your data is safe, I took a copy before the fix, and a test sale worked."
  • If it's a misunderstanding (date range/credit): explain the concept calmly.
  • If you took a backup/snapshot: say so explicitly — it builds trust.
  • Never promise what the software doesn't do. The manual is the source of truth.
لا نتائج مطابقة. جرّب كلمة أخرى أو امسح البحث. · No matches — try another term or clear the search.