📦 جاي من طابور التغليف
إعادة طباعة الفاتورة
ℹ️ About — طباعة أوردرات القاهرة (Order Printer)
🏭 الصفحة دي جوّه مركز عمليات المخزن

الصفحة دي جزء من الهب — الدخول بيحصل مرة واحدة في الشاشة الرئيسية، والهوية بتوصل هنا من sessionStorage.

🚚 قناة بوسطة

  • أوردر بوسطة بياخد بوليصة بس — من غير فاتورة (قرار أحمد 07-09-2026)، والطباعة على ملصق حراري. الـ PDF بيتطبع زي ما جه من بوسطة بالظبط: مفيش إعادة رسم ومفيش تحجيم — عشان يطلع مطابق للي بيطلع من داشبورد بوسطة.
  • الطباعة هي اللي بتحوّل الأوردر لـ Ready — زي مسار الفاتورة بالظبط: تاج Printed(S1) + printing_time_s1 + الحالة. يعني أوردر بوسطة بيدخل طابور التغليف بعد الطباعة.
  • الشحنة غير المؤهلة بتتقال بالاسم — ملغية · راجعة للتاجر · منتهية · ضايعة. بوسطة مابتطلّعش بوليصة للحالات دي، وفي الدفعة بترفضها في صمت، فالأداة بتستبعدها قبل الإرسال وبتعدّ صفحات الـ PDF كشبكة أمان.
  • أكتر من شحنة صادرة حيّة على نفس الأوردر = مافيش تخمين. الأوردر بيطلع من الدفعة والتحديد بيتم بإيدك من داشبورد بوسطة — ملصق غلط على كرتونة أسوأ من صف مستني.
  • «آخر طباعة في بوسطة» للعرض بس. بوسطة بتحدّث الرقم ده مع كل جلب للبوليصة حتى لو الورقة ما خرجتش من الطابعة، فهو بيقول «حد جابها» مش «اتطبعت» — وعشان كده حارس إعادة الطباعة بيقرا من سجل D1 لوحده.
  • أوردرات الاستبدال/الاسترجاع (S2) على بوسطة مخفية مؤقتًا بقرار، والعدد بيتعرض فوق الجدول.

🔴 بوابة المراجعة قبل الطباعة

  • نافذة واحدة بتجمع تلات تنبيهات بالخطورة، وكل أوردر بيتعرض مرة واحدة تحت أعلى فئة تنطبق عليه:
  • 🔴 فاتورة لاغية — أوردر رجع للطابور (Confirmed + Edit أو Confirmed) وعليه أثر طباعة سابقة، يعني فيه ورقة بمحتوى قديم في المخزن. تأكيد إلزامي لكل أوردر إن الورقة اتقطّعت. ولو الأوردر متغلّف (s1_packing_date_time) الشارة بتقول كده — الفاتورة جوّه الطرد.
  • 🟠 اتطبع خلال آخر ٣٠ دقيقة (REPRINT_WARN_MINUTES) — سجل اليوم بيتجاب طازة من D1 قبل كل دفعة.
  • 🟡 سبق طباعته قبل كده — عدّاد مرات الطباعة.
  • مفيش نافذة خالص لو الدفعة نضيفة — اليوم العادي مايتغيّرش فيه حاجة.
  • «اطبع الباقيين» و«إلغاء» عمرهم ما بيتعطّلوا — دايمًا فيه مخرج من غير ما الموظف يكدب. وفشل الفحص مايمنعش الطباعة: كمّل واقول ليه.
  • إقرار القطع بيتسجّل في D1 جوّه extra.guard بتاع صف الطباعة — من غير type جديد.

?order= — الجاي من طابور التغليف

🔴 الباراميتر بيفلتر ويحدّد — مايطبعش. طباعة تلقائية من رابط = ورق بيطلع من غير ما حد يضغط. الموظف بيراجع وبيضغط بنفسه.

🔁 إعادة طباعة أوردر خرج من الطابور (v1.6.0)

  • طابور الطباعة بيعرض حالات «مؤكَّد» بس — وأوردر اتطبع خلاص حالته Ready، يعني مش موجود في الجدول بحكم التعريف. لما ?order= مايطابقش أي صف، الصفحة بتنادي POST /lookup وبتطلّع كارت 🔁 إعادة طباعة الفاتورة.
  • الحالة مابتتغيّرش. /track عنده فرع صريح: الحالة الحالية = الهدف → مفيش كتابة ومفيش خطأ. اللي بيتحدّث: التاج + ميتافيلد وقت الطباعة بالوقت الجديد + صف جديد في السجل باسم الموظف.
  • ⏱️ وقت الطباعة بيتدهس عن قصد — الميتافيلد معناه «آخر طباعة» مش «أول طباعة». الثمن: عمود «الوقت منذ الطباعة» في طابور التغليف بيرجع لأول اليوم، والكارت بيقول ده قبل الضغط.
  • 🔴 الصف بيعدّي على نفس بوابة المراجعة — أوردر إعادة الطباعة بيتصنّف 🟡 «سبق طباعته» على الأقل، حتى لو السجل مالوش صف (LOGS_FETCH_MAX بيقص، والصفوف القديمة مفيهاش موظف).
  • 🔴 نوع الفاتورة بيتبعت صريح في المسار ده — أوردر S2 حالته Ready كان هيتقري S1 في القاعدة الافتراضية، والنوع بيختار بنود الفاتورة مش العنوان. محتاج Worker v2.4.0؛ الأقدم بيدّي رسالة صريحة في الكارت.
  • ❌ مفيش أي كتابة على شوبيفاي في /lookup — قراءة بحتة.
📋 وصف الأداة

الهدف: الموظف بيختار الأوردرات الجاهزة للطباعة (عادي · استبدال/استرجاع)، بيطبع فواتيرها، والأداة بتسجّل الطباعة باسمه وبتحدّث حالة الأوردر لـ Ready على شوبيفاي.

المستخدمون المستهدفون: موظفو المخزن.

كيف تعمل — Workflow

  1. الموظف بيسجّل دخول باسمه + PIN (Universal D1 Auth).
  2. الأداة بتجيب أوردرات Confirmed وConfirmed + Edit (S1) وConfirmed + RETURN وConfirmed + EXCHANGE (S2) المنشأة من 2026-04-01.
  3. بتعرض كل القنوات (allZones) — مناديب وشو روم بيطبعوا فاتورة شوبيفاي، وOther_Regions بيطبع بوليصة بوسطة. والأوردر اللي زونه فاضي أو مش من القايمة بيتعرض ومربع تحديده مقفول.
  4. الموظف بيحدد الأوردرات ويضغط طباعة؛ لو فيه أوردر سبق طباعته بتظهر نافذة تأكيد.
  5. الأداة بتجيب بيانات كل فاتورة، بترسمها، وبتفتح نافذة طباعة المتصفح (Save as PDF).
  6. بعدها بتنادي /track لكل أوردر، وبتفتح نافذة النتيجة: العدد بتلات حالات (تم · تم جزئيًا · فشل)، والتفاصيل بتتعرض بس لو فيه تحذير أو فشل.

الـ Endpoints الرئيسية

المسار / actionالوصف
POST /ordersالأوردرات الجاهزة — عادي (S1) واستبدال/استرجاع (S2) — وzone/channel وzoneExcluded وprintingTimeS1/packingTimeS1 (حارس الفاتورة اللاغية · S1 بس)
?action=bosta_lookupتحويل أرقام الأوردرات لشحنات بوسطة — قراءة بحتة. بترجّع المعرّف والحالة والنوع والتحصيل، وبتسجّل «مش على بوسطة»
?action=bosta_awbالبوليصة كـ PDF — مفردة أو مجمّعة، مع التحقق من عدد الصفحات
POST /invoiceبيانات فاتورة أوردر واحد (+ truncatedLineItems · truncatedReturns · multiCycle · cycleCount)
POST /trackتسجيل الطباعة + تاج + ميتافيلد الوقت + الحالة Ready — بيطلب employee، وبياخد guard اختياري (إقرار قطع الفاتورة → extra.guard)
POST /logsسجل الطباعة (+ cap · total · truncated)
get_employees · check_employee · verify_employee · register_pin · log_logoutUniversal D1 Auth
diagفحص ذاتي بدون كتابة — متغيرات · D1 · موظفين · OAuth · صلاحيات · Origin
get_configWORKER_VERSION — بيتقارن بـ MIN_WORKER_VERSION

⚙️ إجراءات كل خيار

النوعالإجراءات على شوبيفاي بالترتيب
S1قراءة custom.manual_status → تاج Printed(S1) → custom.printing_time_s1 → custom.manual_status = Ready (بعد تحقق التحوّل) → صف metafields_change في D1
S2قراءة custom.status_2_r_e → تاج Printed(S2) → custom.printing_time_s2 → custom.status_2_r_e = Ready (بعد تحقق التحوّل) → صف metafields_change في D1
🔧 تشريح الكود

FEATURE MAP

  • §STYLES — التوكنز وكل CSS الأداة
  • §LOGIN — شاشة الدخول على خطوتين (PIN)
  • §SHELL — الهيدر الـ sticky + شريط التابات + chip التاب
  • §TOOL — تاب الطباعة: KPIs · شريط الطباعة · القسم الموحّد (فلاتر + جدول)
  • §LOG — تاب السجل: KPIs · بانر التقصّ · القسم الموحّد
  • §MODALS — الإعدادات · تأكيد إعادة الطباعة · نتيجة تسجيل الطباعة · About · Changelog
  • §CONFIG — WORKER_URL · LS_SECRET · apiRequest/apiPath/apiGet/apiPost
  • §SHELL-JS — النسخ · حارس الـ Worker · التوست · playBeep · runDiag · Freeze on Scroll
  • §AUTH-JS — ماكينة حالات الدخول الأربعة
  • §TABLE-JS — منطق عام للقسمين: multi-select · الفترة · الترتيب · الـ chips
  • §TOOL-JS — تحميل الأوردرات · الاختيار · mapLimit (حد التزامن) · الطباعة · نافذة النتيجة
  • §LOG-JS — تحميل السجل · KPIs · التصدير
  • §INVOICE-JS — رسم فواتير S1/S2 + الطباعة عبر iframe

KEY VARIABLES

  • currentEmployee — بييجي من sessionStorage عبر requireSession() (استثناء الهب الموثّق من بند ٥). بيموت مع قفل التاب، ولكل تاب لوحده، ومابيديش أي صلاحية جديدة
  • TOOL_VERSION — نسخة الواجهة، مصدر واحد بيغذّي زرار الهيدر وشاشة الدخول والـ Changelog
  • MIN_WORKER_VERSION — أقل نسخة Worker مقبولة. مالهاش علاقة بـ TOOL_VERSION
  • LS_SECRET = 'order_printer_worker_secret' — المفتاح الوحيد في localStorage
  • WORKER_URL — ثابت في §CONFIG، مش حقل إعدادات (Standards #28)
  • msState — حالة كل فلاتر التابين بمفاتيح مسبوقة بـ p (طباعة) أو l (سجل)
  • TYPE_LABEL — تسميات العرض بس (عادي / استبدال/استرجاع). قيم D1 وعقد الـ Worker بتفضل S1/S2
  • sec.print / sec.log — حالة البحث والتاريخ والترتيب لكل قسم على حدة
  • PRINT_CONCURRENCY = 4 — أقصى عدد نداءات /invoice أو /track شغّالة في نفس الوقت. مش ضبط أداء — هو اللي بيمنع فشل الدفعة كلها (R15)

NOTES / QUIRKS

  • «الأوردر مش ظاهر» بقت إجابتها على الشاشة. الصفحة بتعرض كل القنوات وكمان الأوردرات بلا زون، فالأوردر الغايب دلوقتي إما حالته مش في الطابور أصلاً وإما مفلتر بفلتر شغّال — مش مستبعَد في صمت زي قبل كده.
  • الأوردر ده على بوسطة ومش لاقيينه؟ يبقى ما اترفعش على داشبورد بوسطة (أو اترفع بمرجع مختلف). الرفع خطوة إلزامية قبل الطباعة.
  • Delivered حالة نهائية — الطباعة بتتسجّل بس الحالة مش بتتكتب، والنتيجة بترجع warning.
  • عدّاد «مرات الطباعة» بيتبني من سجل D1، وبيقصّ عند سقف الـ Worker — البانر فوق جدول السجل بيقول لو ده حصل.
  • مستند الـ iframe بتاع الفاتورة مالوش وصول لكتلة التوكنز، فألوانه حرفية — استثناء تقني موثّق من Standards #35.
  • نافذة نتيجة الطباعة بتعرض العدد بس لما كله ينجح؛ تفاصيل الأوردرات بتتبني بس لو warning أو error — ومع ذلك العدّادات التلاتة بتتعرض دايمًا، فالصفر الأصفر/الأحمر بيفضل ظاهر ومش مستنتَج.
  • فلترة الجدولين client-side على البيانات المحمّلة — الأداة بتحمّل السجل كله عشان تبني عدّاد الطباعة، فمفيش pagination من السيرفر.
  • الطباعة بتمشي بحد تزامن ٤ (mapLimit)، مش Promise.all على الدفعة كلها. قبل v3.4.0 دفعة ٥٠ أوردر كانت بتولّد ٥٠ نداء متزامن، وأي واحد يفشل يلغي الخمسين برسالة CORS واحدة — صفر فاتورة وصفر صف في D1. لو رجّعت Promise.all، الباج بيرجع معاها.
  • فشل تحضير فاتورة أوردر مابيوقّفش الدفعة — الأوردر بيترجع كصف error في نافذة النتايج جنب نتايج التسجيل. الصفوف دي مالهاش logged عن قصد: مفيش أي فعل حصل، فتحذير «تمت لكن ما اتسجلتش» هيبقى مضلّل.
  • MIN_WORKER_VERSION بقت 2.3.0 — الواجهة بقت معتمدة فعلاً على printingTimeS1 وpackingTimeS1 في رد /orders (حارس الفاتورة اللاغية)، وده بالظبط شرط ترفيع الحد الأدنى. Worker أقدم = الحارس بيشتغل بسجل D1 بس + توست صريح.
📋 سجل التحديثات
v1.25.1 آخر نسخة 14-09-2026
تغيير📦 عمود «الأصناف» بقى صنف في كل سطر بدل ما الأصناف تتلزق جنب بعض في كتلة واحدة — العدّ بقى بالعين.
تغيير🔢 الكمية جنب كل صنف في بادچ واضح — وبتتعرض على كل صنف حتى لو قطعة واحدة (×1). قبل كده كانت بتختفي على القطعة الواحدة، فغياب الرقم كان بيتقري «مش معروف» مش «واحدة».
v1.25.0 14-09-2026
تغيير🎨 مربع «شو روم» وعمود «نوع الفاتورة» بقوا تركواز بدل الأخضر. نفس اللون بالظبط في الشاشة الرئيسية وفي قسم التغليف — الموظف بيتعلّمه مرة واحدة.
v1.24.1 14-09-2026
إصلاح🔴 طباعة بوليصة الاستبدال كانت بتطلع من الطابعة من غير ما تتسجّل خالص. الـ Worker كان لسه فيه حارس قديم بيرفض تسجيل بوليصة لأوردر استبدال/استرجاع — والبوليصة بتتجاب وتتفتح قبل التسجيل، فالورق كان بيخرج ومفيش تاج ولا وقت طباعة ولا صف في السجل، والأوردر يفضل في الطابور كأنه ما اتطبعش.
ملاحظة⚠️ محتاج Promote للـ Worker v2.8.1. على v2.8.0 البوليصة الصح بتطلع بس التسجيل بيفشل برسالة حمرا — الورق بيبقى خرج خلاص، فالحارس بيوفّر الورقة مش بس الرسالة.
v1.24.0 14-09-2026
جديد🚚 قناة بوسطة بقت بتطبع دورة الاستبدال/الاسترجاع (S2) زي الشحن (S1) بالظبط. كانت صفوف S2 مخفية من طابور بوسطة بقرار مؤقت من 07-09-2026، والموظف كان بيضطر يكتب printing_time_s2 بإيده في الأدمن.
إصلاح🔴 السبب الحقيقي اللي كان وراء الإخفاء اتقفل في الـ Worker. الأوردر بيبقى عليه شحنتين على بوسطة تحت نفس رقم الأوردر — شحنة الشحن وشحنة الاسترجاع/الاستبدال — والأداة كانت بتختار شحنة الشحن دايمًا. يعني صف S2 كان هياخد ملصق الشحنة الغلط من غير أي رسالة خطأ. دلوقتي الاختيار بيتم بنوع الشحنة (Worker v2.8.0).
تغييرتاج الرفع على بوسطة بقى لكل دورة لوحدها: Bosta_Uploaded_S1 لصف الشحن وBosta_Uploaded_S2 لصف الاستبدال/الاسترجاع. أوردر شحنته الأصلية مرفوعة وشحنة الاستبدال لأ مابيدخلش الطابور — ودي مش حالة نادرة.
جديدرسالة حجب جديدة تفرّق بين «مفيش شحنة خالص» و«فيه شحنة بس بتاعة الدورة التانية» — التانية معناها إن الرفع لسه ناقص، مش إن الأوردر مش على بوسطة.
ملاحظة⚠️ محتاج Promote للـ Worker v2.8.0. من غيره صفوف S2 بتظهر في الطابور بس الطباعة عليها مرفوضة برسالة صريحة — مسموح نوقّفها، مش مسموح نطلّع ملصق ممكن يكون غلط. وصفوف الشحن (S1) شغّالة عادي في الحالتين.
v1.20.0 09-09-2026
إصلاح🔴 تاب السجل كان بيخلط محورين في عمود واحد. عمود «نوع الفاتورة» كان بيعرض AWB / عادي / استبدال-استرجاع مع بعض — وAWB مستند بينما التانيين نوع أوردر. بقى عمودين بنفس قيم جدول الطابور بالظبط: «نوع الأوردر» (عادي · استبدال/استرجاع) و«نوع الفاتورة» (مناديب · شو روم · بوسطة)، وبفلتر وترتيب وتصدير لكل واحد.
تغييرمربعا «S1» و«S2» فوق السجل بقوا «عادي» و«استبدال/استرجاع»، وبيعدّوا نوع الأوردر — قبل كده كانوا بيعدّوا عمود type، فطباعة بوسطة (AWB) ما كانتش بتتحسب في «S1» مع إنها طباعة S1 فعلاً.
جديدعمودان في جدول الطابور: «عدد القطع» (بيعدّ اللي هيخرج فعلاً — في أوردر الاستبدال بيعدّ البديل مش القطعة الراجعة) و«الإجمالي» (شامل الشحن وبعد أي تعديل — نفس الرقم اللي المندوب بيحصّله وبيتقارن بـ cod بتاع بوسطة).
جديدعمود «الأصناف» — بيتملّى تلقائيًا للأوردرات اللي سبق طباعتها (اللي ورقتها القديمة لسه في المخزن)، وباقي الصفوف فيها زرار «👁 عرض» بيجيب صف واحد عند الضغط.
تغيير«جاري جلب الأوردرات» بقت «جاري الاستعلام عن الأوردرات» — وكل نصوص «جلب» التانية في الطباعة والتغليف معاها.
ملاحظة⚠️ صفوف السجل القديمة مافيهاش زون متسجّل، فعمود «نوع الفاتورة» بيقول — عليها. ده مش عطل: «مش معروف» بتفضل فاضية بدل ما تتخمّن من زون الأوردر الحالي — الزون بيتغيّر بعد الطباعة. صفوف بوسطة شغّالة من أول يوم (المستند نفسه بيقولها).
v1.18.0 09-09-2026
إصلاح🔴 تاب البوليصة ما بقاش بيتفتح قبل نافذة المراجعة — كانت شاشة «🚚 جاري تحضير البوليصة…» بتقعد في تاب جنبك وانت لسه ما أقررتش بقطع الورقة. دلوقتي التاب بيتقفل قبل النافذة وبيترجع يتحجز من ضغطة «اطبع» جوّاها.
تغييربوابة المراجعة بقت سؤال واحد — «قطعت الورقة القديمة». سؤال «عدّلت الشحنة على بوسطة» اتشال، ومعاه إقرار bostaUpdated من السجل (إقرار ما اتسألش عنه ماينفعش يتكتب).
جديد🔴 شارة «آخر طباعة: فاتورة / بوليصة بوسطة» في الجدول وفي البوابة وفي كارت إعادة الطباعة — وبتولّع كهرماني لو نوع آخر ورقة مختلف عن اللي هيتطبع دلوقتي (أوردر اتطبعله فاتورة وبعدين اتحوّل لبوسطة أو العكس).
تغييراسم تاب/ملف الطباعة بقى 09-09-2026 - 11.51 - عدد 3 - بوسطة للفاتورة وللبوليصة. اسم البوليصة اتحط جوّه ملف الـ PDF نفسه (خانة /Title بإلحاق في آخر الملف) — الملف لسه بيتطبع بايت ببايت.
v1.15.0 08-09-2026
جديدصفحة 🏷️ باركود SKU بقى ليها تاب «📜 سجل العمليات» — الأداة كانت مالهاش أي أثر لمين طبع إيه وإمتى.
تغييرليبل الباركود بقى سطرين: رقم الأوردر تحت الخطوط اتشال، وخط الليبل بقى محايد (Arial) بدل السيريف.
تغيير🔴 barcode.min بقى 1.2.0 — Promote مطلوب لـ order-sku-barcode-printer-worker v1.2.0 (السجل + [[d1_databases]]).
v1.14.0 08-09-2026
تغييراسم الأداة بقى «قسم الطباعة»، وكلمة «القناة» بقت «نوع الفاتورة» فوق المربعات وفي عمود الجدول.
جديد🔴 لوحة «آخر تحديث» فوق الطابور — بعدّاد بيلوّن نفسه (أخضر → أزرق → كهرماني → أحمر) وزرار تحديث ببادج بالعدد، نفس لوحة قسم التغليف بالحرف. الختم القديم في الهيدر وزرار 🔄 اتشالوا: كانوا ختم بلا عمر — طابور اتجاب من ٤٠ دقيقة شكله زي واحد اتجاب من دقيقة.
تغييرالمربعات بقت في نص الصندوق جنب العدد الكلي، وكلمتَي «فاتورة» و«بوليصة» اتشالوا من عليها: قاهرة+جيزة · بوسطة · شو روم.
تغيير🔴 عمودا «التاريخ» و«الوقت» بقوا عمود واحد «تاريخ الأوردر» ببادج عمر (اليوم · منذ يومين …)، وعمود «النوع» بقى «نوع الأوردر» نص ملوّن بلا بادج — نفس عمودَي جدول التغليف بالحرف. ساعة إنشاء الأوردر مش معلومة المخزن بيتصرّف عليها؛ اللي بيفرق «بقاله قد إيه».
تغيير⚠️ سطر «اختر قناة» تحت المربعات اتشال. الطباعة لسه مقفولة بلا اختيار، واللي بيقول كده بقى البادج — على الزرار المتعطّل ومربعات كلها مطفية — يعني الحالة ظاهرة، بس السبب مابقاش مكتوب.
v1.13.0 07-09-2026
تغيير🔴 الصفحة مابقتش بتفتح على قناة مختارة. «فاتورة — قاهرة+جيزة» كان بيبقى مولّع من غير ما حد يدوس، والجدول بيعرض قناة واحدة وكأنها كل الطابور. دلوقتي مفيش مربع مولّع عند الفتح والجدول بيعرض القنوات كلها.
تغييرمربعات القناة بقت بنفس سلوك مربعَي «بوسطة/مناديب» في قسم التغليف: ضغطة بتفلتر، وضغطة تانية على نفس المربع بترجّع الكل — والعلامة ✕ على المربع المولّع بتقول كده.
جديد🔴 الطباعة مقفولة طول ما مفيش قناة مختارة، وبادج «طباعة الكل» بيقول — مش رقم. القناة هي اللي بتحدد الورق والطابعة والمسار (فاتورة A4 مقابل بوليصة حرارية)، فدفعة من غير قناة معناها ورق مختلط — وسطر تحت المربعات بيقول للموظف السبب بدل زرار رمادي بلا تفسير.
تغييرالشاشة الرئيسية — صف «جاهز للتغليف» بقى بيقسّم بالمندوب (بوسطة / مناديب) بدل «عادي / استبدال-استرجاع». دي نفس تقسيمة الصفحة اللي الصف بيفتح عليها، والقاعدة نسخة واحدة في shared/shell.js §COURIER-GROUP.
v1.12.0 07-09-2026
تغيير🔴 البوليصة بتتفتح في تاب جديد بدل معاينة صغيرة جوّه الصفحة. عارض الـ PDF بتاع المتصفح بيدي الملصق بحجمه الكامل وزرار طباعة حقيقي — والموظف كان بيدوس «افتح في تاب» في كل مرة فعليًا.
جديدالتاب بيتحجز عند ضغطة الموظف قبل نداءات بوسطة، عشان المتصفح ما يمنعوش كـ popup. ولو اتمنع برضه، شريط أحمر بزرار مباشر — مفيش فشل صامت.
تغييرشريط الطباعة اتعاد تصميمه: الزراير في النص وأكبر، وبادج بالعدد جنب «طباعة الكل» و«طباعة المحدد». سطر «تم تحديد N أوردر» اتشال — الرقم بقى على الزرار نفسه.
تغييرقسم الفلاتر مطوي افتراضيًا في الطباعة والسجل — الطابور هو الشغل، والفلاتر بضغطة واحدة.
تغييراتشال مربعا «عادي / استبدال-استرجاع» وشريط الملاحظات الأصفر تحت مبدّل القناة (قرار أحمد 07-09-2026). ⚠️ بادج القناة وبادج «طباعة الكل» بقوا المصدر الوحيد للأرقام — والاتنين بيعدّوا اللي ينفع يتطبع فعلاً.
v1.11.1 07-09-2026
إصلاح🔴 بادج بوسطة كان بيقول ٦٦ والجدول تحته فيه ٦ — البادج بقى بيعدّ اللي بيتعرض فعلاً بنفس بوابة الجدول بالحرف. رقم على زرار مش بيتقرا كحاشية — بيتقرا كوعد بشغل موجود.
إصلاح🔴 نفس الفرق كان على الشاشة الرئيسية — «جاهز للطباعة ٨٤» ومربع «بوسطة ٦٦». الإجمالي والمربعات بقوا اللي ينفع يتطبع دلوقتي.
جديدمربعان في الشاشة الرئيسية: ⏳ مستنية رفع على بوسطة و⏸️ استبدال بوسطة (مؤجّل) — بيظهروا بس لما يكون فيهم فعلاً، فالمستبعَد ما بيختفيش في صمت.
تغييربوابة القناة اتنقلت لـ shared/shell.js §BOSTA-GATE — الرئيسية والطباعة بيعدّوا من مصدر واحد، ومستحيل يفترقوا.
v1.11.0 07-09-2026
تغيير🚚 طابور بوسطة بقى بيعرض الأوردرات اللي اترفعت على بوسطة بس — شرط تاج Bosta_Uploaded_S1. الأوردر اللي لسه ما اترفعش مستحيل تتطبع بوليصته، فكان بياخد مكان في الطابور ويرجع صف أحمر «مش على بوسطة» بعد الطباعة.
جديدعدد الأوردرات اللي لسه ما اترفعتش معروض فوق الجدول — الغياب معلوم مش خفي، والرقم بيقول إن بوابة الرفع واقفة.
إصلاح🔴 الأوردر المطبوع كان بيفضل في الطابور بعد التحديث — فهرس بحث شوبيفاي مش فوري، فالتحديث اللي بعد الطباعة كان بيرجّعه تاني لثواني والموظف يفتكر إن الطباعة ما اتسجّلتش. بقى بيتشال فورًا وبيفضل مشيول لحد ما الفهرس يلحق.
v1.10.0 07-09-2026
جديددفعة أوردرات في صفحة 🏷️ باركود SKU — تسكن أو تكتب أوردر ورا التاني، وأصناف الدفعة كلها بتتطبع في ملف واحد مرتّبة أوردر ورا أوردر.
جديدتلات مداخل في صفحة الباركود زي قسم التغليف: ماسح شوبيفاي (أزرق) · ماسح بوسطة (أحمر) · إدخال يدوي بيقبل أكتر من رقم.
جديدرقم الأوردر بقى مطبوع على ليبل الباركود بخط صغير تحت الخطوط — الدفعة بتطلع مكوّمة من الطابعة.
إصلاح🔴 الصفحات البيضا في طباعة الباركود — ٥ ليبل كانوا بيطلعوا ملف ٣٧ صفحة. السبب visibility:hidden (بيخفي وبيسيب المكان محجوز) وmin-height:100vh على الـ body.
تغييرمربع البحث بـ SKU/باركود في صفحة الباركود اتشال — الدخول بقى بالأوردر بس.
v1.9.0 07-09-2026
جديد🚚 أوردرات بوسطة بقت في نفس أداة الطباعة. القناة الأكبر في المتجر (Other_Regions) كانت مستبعَدة من الطابور خالص — دلوقتي ليها مكان، وبتطبع بوليصة بوسطة على الملصق الحراري.
جديدمبدّل القناة فوق الطابور: قاهرة+جيزة · بوسطة · شو روم. اختيار واحد في المرة — الورق والطابعة والحارس مختلفين، فالدفعة المختلطة ممنوعة، وتبديل القناة بيمسح التحديد.
جديدعمود «القناة» في الجدول. الزون قرار توجيه مش جغرافيا: ١٨٪ من عناوين القاهرة/الجيزة بتروح بوسطة، فالموظف مايقدرش يعرفها من العنوان.
جديدالأوردرات اللي زونها فاضي أو غير معروف بقت ظاهرة — بتتعرض ومربع تحديدها مقفول برسالة «الزون لسه ما اتحددش». الإخفاء كان بيخلّيها تختفي من كل مكان.
جديدالأوردر اللي ما اترفعش على بوسطة بيتقال بالاسم — الرفع خطوة إلزامية قبل الطباعة، والأداة بقت بتكشف تخطّيها بدل ما تعدّي في صمت.
جديدبوابة المراجعة بقت بسؤالين لأوردر بوسطة: «قطعت الورقة القديمة؟» و«عدّلت الشحنة على بوسطة؟» — إعادة طباعة البوليصة مش بتصلّح بيانات غلط، لأنها بتتولد من بيانات بوسطة مش من شوبيفاي.
جديدتنبيه فرق التحصيل — لو الرقم اللي على البوليصة مختلف عن قيمة الأوردر، الأوردر بينزل في البوابة حتى لو حالته عادية تمامًا.
تنبيهلو بوسطة رجّعت بوالص أقل من المطلوب، الأداة بتحدد الشحنة الناقصة بالاسم وبتكمّل بالباقي — مابتقولش «تم» على دفعة ناقصة.
تغييرمربعات الشاشة الرئيسية لطابور الطباعة بقت بالقناة بدل عادي/استبدال.
تغييرأوردرات الاستبدال/الاسترجاع على بوسطة مخفية مؤقتًا — والعدد بيتعرض فوق الجدول عشان الغياب يبقى معلوم.
v1.7.0 06-09-2026
جديدزرار «إعادة 🖨» في طابور التغليف بقى بيشتغل فعلاً. كان بيفتح صفحة الطباعة مفلترة على أوردر مش موجود فيها — لأن طابور الطباعة بيفلتر على حالات «مؤكَّد»، وأوردر اتطبع خلاص حالته Ready. الموظف كان بيشوف «لا توجد أوردرات تطابق الفلاتر» وتوست بيقول إن الجدول اتفلتر عليه، والحل الوحيد كان إن حد يرجّع الحالة يدوي.
جديدكارت 🔁 إعادة طباعة الفاتورة بيطلع أوتوماتيك لما الأوردر مش في الطابور: الحالة · النوع · العميل · آخر طباعة · عدد مرات الطباعة، وبيعدّي على نفس بوابة المراجعة بتاعة الطباعة العادية.
تغيير🔴 الحالة مابتتغيّرش — أوردر Ready بيفضل Ready. اللي بيتحدّث: التاج + ميتافيلد وقت الطباعة بالوقت الجديد + صف جديد في السجل باسم الموظف. ⏱️ الثمن المُعلَن: عمود «الوقت منذ الطباعة» في طابور التغليف بيرجع لأول اليوم.
إصلاح🔴 لغم كان هيطبع فاتورة ببنود غلط: الـ Worker بيحدد نوع الفاتورة من status_2_r_e ∈ {Confirmed + RETURN, Confirmed + EXCHANGE} بس، فأوردر S2 حالته Ready كان هيتقري S1 — والنوع ده بيختار البنود نفسها، وبعدين بيتبعت لـ /track اللي بيكتب على ماكينة S1. النوع بقى بيتبعت صريح في مسار إعادة الطباعة بس.
تغيير🔴 Worker الطباعة لازم Promote لـ v2.4.0 — printer.min بقى 2.4.0. من غيره كارت إعادة الطباعة بيقول بالنص إن النسخة أقدم، وباقي الصفحة شغّال عادي.
v1.6.0 06-09-2026
جديدصفحة 🏷️ باركود SKU — طباعة ليبل ٢×١ إنش لأصناف أوردر، أو بالبحث المباشر بـ SKU/باركود من غير أوردر.
جديدorder-sku-barcode-printer-worker انضم لمجموعة السر warehouse_ops — نفس حقل السر بيخدم الأربعة.
v1.5.1 06-09-2026
إصلاحتاب «📜 سجل العمليات» في صفحة حذف منتج بقى موجود. شريط التابات كان ناقص من الـ HTML — البانل وswitchMainTab وكل §LOG-JS كانوا موجودين بالكامل بس مفيش أي زرار بينادي عليهم، فالتاب كان مستحيل يتفتح. واتضاف كمان تعبئة فلتر الموظف من get_employees — كانت أثر جانبي لشاشة الدخول اللي اتشالت من الصفحة.
v1.5.0 06-09-2026
جديدصفحة 📊 إحصائيات المخزن — أرقام الفترة · جدول الموظفين · توزيع ساعات الشغل · مؤشرات الجودة. قراءة سجل D1 بحتة، صفر تعديل Worker.
إصلاحسلّم «آخر تحديث» (agoInfo) اتنقل لـ shared/shell.js — كان نسخة في الشاشة الرئيسية لوحدها.
v1.4.0 06-09-2026
تغييرلوحة «آخر تحديث» بقت ملزوقة بزرار التحديث في الشاشة الرئيسية، وبنفس شكلها في صفحة التغليف بالحرف.
v1.3.0 06-09-2026
تغييرطوابير الشاشة الرئيسية بقت صفوف بعرض الشاشة بدل كروت جنب بعض — الرقم والتقسيمة والختم والزرار كلهم على سطر واحد.
v1.2.0 06-09-2026
تغييرزرار 🏠 الرئيسية بقى مصمت أزرق وفي نص الهيدر — كان بنفس شكل باقي الزراير بالظبط.
تغييرزرار الموظف بقى «الاسم ✕» بدل «👤 الاسم — خروج».
جديدالشاشة الرئيسية بقى فيها تحديث تلقائي كل ١٥ دقيقة للأعداد + لوحة «آخر تحديث» بعدّاد بيلوّن نفسه.
v1.1.0 06-09-2026
جديدحارس الفاتورة اللاغية. أوردر رجع لطابور الطباعة (Confirmed + Edit أو Confirmed) وسبق طباعته معناه إن فيه ورقة بمحتوى قديم في المخزن — الأداة بقت تطلب من الموظف يأكّد إنه قطّعها قبل ما يطبع الجديدة، أوردر أوردر بالاسم.
جديدالأوردر المتغلّف بيتعلّم بشارة 📦 متغلّف — الفاتورة جوّه طرد مقفول، يعني فتح مش قطع ورقة.
تغييرنافذة مراجعة واحدة قبل الطباعة بدل نافذتين متتاليتين — الفواتير اللاغية والطباعة المتكررة وسابق الطباعة كلهم في شاشة واحدة، وكل أوردر بيتعرض مرة واحدة تحت أعلى تنبيه.
جديدشارة 🔴 فاتورة لاغية في الجدول + سطر «آخر طباعة من كذا» + عدّاد تحت كارت «عادي» + فلتر «تنبيهات» عشان تخلّص القطع دفعة واحدة.
جديدكل فاتورة بقى في آخرها سطر صغير جدًا فيه تاريخ ووقت الطباعة بتوقيت القاهرة بالثانية + اسم الموظف — عشان ورقتين لنفس الأوردر يبقى بينهم فرق يتقرا.
تغييرإقرار قطع الفاتورة بيتسجّل في السجل جوّه صف الطباعة نفسه (extra.guard).
تغييرالحد الأدنى لنسخة الـ Worker بقى 2.3.0 — الواجهة بقت معتمدة على بيانات جديدة في /orders. الـ Worker الأقدم بيدّي تنبيه صريح والحارس بيشتغل بالسجل بس.
v3.4.0 05-09-2026
إصلاحدفعة طباعة كبيرة كانت بتفشل كلها. الأداة كانت بتبعت نداء لكل أوردر في نفس اللحظة بلا أي حد — دفعة ٥٠ أوردر = ٥٠ نداء متزامن — وأي نداء يفشل كان بيلغي الدفعة كلها برسالة «تعذّر الوصول للـ Worker». دلوقتي ٤ نداءات في المرة.
تغييرأوردر واحد يفشل مابيوقّفش الباقي — بيتطبع اللي نجح، والفاشل بيظهر باسمه ورقمه في نافذة النتايج عشان يتعاد لوحده.
جديدشاشة التحميل بتعرض تقدّم الدفعة («جاري تحضير الفواتير... 12/50») بدل رسالة ثابتة.
إصلاحلو فشل تحضير كل الفواتير، مفيش طباعة ومفيش تسجيل، والنافذة بتعرض الأوردرات كلها بسبب الفشل.
v3.3.0 03-09-2026
جديدتنبيه للمغلِّف لو الأوردر عنده أكتر من دورة إرجاع/استبدال — الفاتورة بتعرض أحدث دورة بس (R7).
جديدتنبيه لو دورات الإرجاع/الاستبدال اتقصّت في الاستعلام، فممكن يكون فيه بنود مرتجعة مش ظاهرة في الفاتورة (R8).
تغييرالحد الأدنى لنسخة الـ Worker بقى 2.1.0.
v3.2.0 03-09-2026
تغييرنتيجة تسجيل الطباعة بقت نافذة منبثقة بدل القسم اللي كان فوق الجدول — بتفتح لوحدها بعد ما الطباعة تخلص.
تغييرلما كل الأوردرات تنجح، النافذة بتعرض العدد بس بدون تفاصيل. تفاصيل كل أوردر («ما تم فعليًا» + سبب التحذير/الفشل) بتظهر بس لو فيه حالة تحذير أو فشل.
تغييرلما التفاصيل تظهر، الأوردرات بتترتّب بالفشل الأول ثم التحذير ثم اللي تم — اللي محتاج تدخّل فوق.
v3.1.1 03-09-2026
إصلاحالطباعة كانت بتقف بخطأ formatInvoiceDate is not defined — الدالة كانت اتشالت سهوًا في v3.0.0 والنداء عليها فضل. رجعت، وتاريخ الفاتورة بقى بيوم القاهرة زي باقي التواريخ.
v3.1.0 03-09-2026
تغييرالنوع بقى مكتوب بالعربي: «عادي» و«استبدال/استرجاع» بدل S1 و S2 — في الجدولين والفلاتر والتصدير.
تغييراتشال مربّع «مستبعَد بفلتر الـ zone».
تغييراتشال عمود «الإجمالي» من جدول الطباعة، ومعاه الفلتر بتاعه.
v3.0.0 03-09-2026
تغييرشريط تابات بعرض الأداة كامل، والهيدر بيتقفل مضغوط مع السكرول وبيظهر chip لتبديل التاب.
تغييرالتابين بقوا قسم موحّد: فلاتر + جدول في كارت واحد، بفلاتر اختيار متعدد وترتيب على الأعمدة.
جديدسجل الطباعة بقى جدول بأعمدة تاريخ ووقت منفصلة، والموظف اللي طبع بقى عمود.
جديدكل رقم أوردر بقى لينك بيفتح الأوردر على شوبيفاي في تاب جديد.
جديدنافذتا «عن الأداة» و«سجل التحديثات».
إصلاحمربّع «النهارده» كان بيتحسب بيوم UTC — بقى بيوم القاهرة، فالطباعة بين ١٢ و٣ الفجر مابقتش تتحسب على اليوم اللي فات.
إصلاحعرض الوقت كان بتوقيت جهاز الموظف — بقى بتوقيت القاهرة دايمًا وبالصيغة الموحّدة.
v2.0.003-09-2026
جديدشاشة دخول بالـ PIN — كل عملية طباعة بقت مسجّلة باسم الموظف.
جديدنتيجة كل تسجيل طباعة بتلات حالات: تم · تم جزئيًا · فشل، مع سطر «ما تم فعليًا».
جديدزرار 🩺 فحص النظام في الإعدادات + تحذير لو نسخة الـ Worker أقدم من المطلوب.
إصلاحفشل تسجيل الطباعة كان بيتبلع في صمت — بقى بيوصل للموظف.
تغييررابط الـ Worker بقى ثابت في الكود؛ الإعدادات فيها الـ SECRET بس.
v1.xقبل النقل
جديدالنسخة الأصلية: اختيار الأوردرات، طباعة الفواتير، تسجيل الطباعة، وتحديث الحالة لـ Ready.