warehouse-return.html لـPackage-Transfer-To-Warehouse.html، مطابقة حرفيًا لاسم ريبو الـ Worker المنفصل (نفس قاعدة Bosta-Orders-Shipped-Scanner.html في v1.34.0). ⚠️ الرابط القديم ما بقاش شغّال — حدّث أي بوكمارك على أجهزة المخزن.Returned/Cancelled) بتتراكم — فالسقف كان بيتضرب من أول يوم والطابور بيقول رقم أقل من الحقيقة.order.updatedAt من الـ Worker. ⚠️ والسبب: شوبيفاي مالهاش حقل بيقول «الطرد رجع إمتى»، وupdatedAt بيتحرّك مع أي تعديل — حتى كتابة الميتافيلد بتاعتنا. فكان تقريب بيتقري تسجيل، وعملية جماعية واحدة كانت بتخلّي صفوف كتير تقول نفس التاريخ.custom.package_whereabouts_s1/_s2 بقيمة Warehouse، والسكان فوري: كل باركود بيتسجّل لوحده من غير دفعة ومن غير زرار تنفيذ.Returned أو Cancelled (S1 أو S2) · اتغلّف فعلاً · وعهدة الطرد لسه مش Warehouse.Warehouse = «خلاص متعمل»، وOffice وCourier هما الحالتان الطبيعيتان (الطرد راجع من المكتب أو من إيد المندوب).Returned وCancelled حالتان نهائيتان بتتراكم (بخلاف Ready العابرة)، ومن غير النافذة الاستعلام بيرجّع آلاف الصفوف. ⚠️ والنافذة عرض بس: الأوردر الأقدم منها بيتسكن عادي والـ Worker هو المرجع.s2_packing_date_time) مش S1 — نفس درس أداة المكتب. ⚠️ ومعنى الشرط هنا أقوى: أوردر اتلغى قبل ما يتغلّف مفيهوش طرد أصلاً.package_whereabouts مش بيتتبع لطرودها أصلاً.Delivered · حالة بره القايمة المعتمدة) — بتكمّل بإقرار مش بتتمنع.الهدف: تسجيل رجوع الطرد للمخزن —
الموظف بيسكن باركود الأوردر المرتجع أو الملغي، والأداة بتكتب
custom.package_whereabouts_s1 (أو _s2 لدورة
الاستبدال/الاسترجاع) بقيمة Warehouse.
ليه الأداة موجودة: «قسم تسليمات المكتب» بيكتب
Office على الطرد الخارج — وكانت دي قيمة بلا طريق
رجوع: الطرد اللي اترفض أو اتلغى بيرجع المخزن ومحدش بيسجّل رجوعه،
فيفضل مكتوب عليه «في المكتب» للأبد. الأداة دي هي شبكة الأمان
اللي بتقفل الدايرة.
المستخدمون المستهدفون: فريق المخزن — لحظة استلام الطرود الراجعة وترجيعها على الرف.
| تسليمات المكتب | استلام المرتجعات (دي) | |
|---|---|---|
| الحالة المؤهلة | Ready | Returned · Cancelled |
| الإلغاء | 🔴 سبب رفض | 🔴 شرط أهلية |
| العهدة المقبولة قبل | Warehouse أو فاضية | Office · Courier · فاضية |
| «خلاص متعمل» | العهدة Office | العهدة Warehouse |
| القيمة المكتوبة | Office | Warehouse |
Bosta والزون مش
Other_Regions. 🔴 مرتجعات بوسطة ليها أداتها («قسم
مرتجعات بوسطة»)، وpackage_whereabouts مش بيتتبع
لطرودها أصلاً.S1 = Returned أو
Cancelled (أو ملغي على شوبيفاي نفسها) فالعهدة بتتكتب على
_s1، أو S2 = Returned فبتتكتب على
_s2.s1_packing_date_time لصف S1 و
s2_packing_date_time لصف S2. ⚠️ أوردر اتلغى قبل ما
يتغلّف مفيهوش طرد أصلاً — مفيش حاجة ترجع على الرف.Warehouse — Warehouse
بترجّع «خلاص متعمل» (محايدة)، وOffice/Courier
مقبولتين: دول بالظبط الطريقان اللي الطرد بيرجع منهم.update
يا rejected.| action | الوصف |
|---|---|
get_ready_to_warehouse | المرتجع/الملغي في آخر ٣٠ يوم (تلات استعلامات) بحقوله الخام — قراءة بحتة |
scan | قراءة الأوردر حيًّا + الحكم + metafieldsSet + صف D1 |
get_logs / get_logs_count / get_logs_export | سجل العمليات — فلاتر server-side (employees · types · results · machines · search · dateFrom/dateTo) + صفحات + ترتيب، والتصدير بيرجّع cap/total/truncated |
get_employees | تعبئة فلتر الموظف في تاب السجل |
diag | فحص ذاتي بدون كتابة — المتغيرات (اسم وطول فقط) · OAuth · صلاحية write_orders · تعريف الميتافيلد الحيّ · D1 · تكلفة الاستعلام · الـ Origin |
get_config | بيرجّع WORKER_VERSION — الواجهة بتقارنه بـ min |
| الحالة | معناها |
|---|---|
| ✓ تم | العهدة اتكتبت واتأكدت من رد شوبيفاي (Warehouse) |
| ⚠ تم بتحذير | اتكتبت، بس كان فيه حاجة محتاجة مراجعة والموظف أقرّ بيها |
| ✗ فشل | النداء وصل لشوبيفاي واترفض — العهدة ما اتكتبتش |
| ⏭ خلاص متعمل | العهدة هي المستهدفة أصلاً (Warehouse) — لا نجاح ولا فشل ولا رفض: مفيش حاجة كانت مطلوبة. عدّاد مستقل ولون محايد |
| ⛔ مرفوض | اتوقف قبل أي محاولة كتابة (بوسطة · زون بره النطاق · لا مرتجع ولا ملغي · ما اتغلّفش) — الصف بيتسجّل بالسبب. ⚠️ الملغي مش هنا — هو مؤهل في الأداة دي |
shared/shell.js — الهوية والهيدر والإعدادات والتوست وحارس النسخة (نسخة واحدة مضمّنة للهب كله)shared/shell.js §WAREHOUSE-GATE — 🔴 مصدر الأهلية الوحيد في الواجهة (wocWarehouseGate · wocWarehouseQueue). الصفحة دي والشاشة الرئيسية بينادوا نفس الدالة على نفس الرد. ⛔ وممنوع ينسخ حارس الإلغاء من §OFFICE-GATE — هناك رفض وهنا أهلية§SCAN — سكانر بمهلة (١٥٠ms للسكانة · ٤٠٠ms للكتابة)، نفس قيم Orders-Packing-Checker.html بالحرف§TOOL-JS::scanOrder — نداء scan فوري لكل باركود، ومعالجة الخمس نتايج§TOOL-JS::outcomeModal — نافذة واحدة بأربع نغمات (مرفوض · خلاص متعمل · إقرار · فشل)، ومدخل واحد showOutcome§TOOL-JS::session — جدول سكانات الجلسة + العدّادات§WAREHOUSE-QUEUE-JS — الطابور بالتحديث التلقائي وحراسه التلاتة§LOG-JS — القسم الموحّد: فلاتر multi-select + فترة سريعة + جدول + صفحات + تصدير§LOG-JS::logParams — المصدر الوحيد لفلاتر التلات نداءات§SHELL-JS::freezeOnScroll — قفل الهيدر وشريط التابات بعتبة مقيسة مش رقم ثابت§SCAN::evaluate (Worker) — 🔴 الحارس الحقيقي: بيقرا الأوردر حيًّا وقت الضغطة§SCAN::resolveOrder (Worker) — الرقم الطويل قراءة بمفتاح، والقصير بحث بمطابقة تامة على الاسم الراجعcheckWorkerVersion(PAGE_WORKERS) + wocRunDiag() (shell) — حارس النسخة وزرار 🩺 الفحص الذاتيcurrentEmployee — { username, displayName } جاي من sessionStorage عبر requireSession()TOOL_VERSION (shell) — نسخة الهب كلهWOC_WORKERS.warehouse.min (shell) — أقل نسخة Worker مقبولة. مالهاش أي علاقة بـ TOOL_VERSION، ولا بحد أداة المكتبLS_SECRET = 'warehouse_ops_worker_secret' (shell) — 🔴 الأداة دي عضو في مجموعة warehouse_ops من أول يوم: مفيش سر قديم خاص بيها لأنها مالهاش نسخة مستقلةWOC_API_TIMEOUT_MS (shell) — مهلة ٩٠ ثانية على كل نداءtool = "metafields_change" (سجل مشترك) + extra.sourceTool = "package_transfer_to_warehouse" · type = "update" أو "rejected". أحداث الدخول/الخروج تحت warehouse_ops_center (الهب)extra.sourceTool — من غيره بيعدّ صفوف أربع أدوات مع بعض (سكانرا بوسطة · تسليمات المكتب · دي)extra.result — success/warning/error/rejected/alreadyextra.machine — S1 أو S2: أنهي طرد اتسجّل، مش حالة الأوردرdoneThisSession — الأوردر اللي اتسجّل في الجلسة دي بيتشال من الطابور فورًا؛ الشاشة لازم تتغيّر بعد النجاحPackage-Transfer-To-Warehouse فيه Worker وبس، والواجهة
الوحيدة هي الصفحة دي.Office كانت بلا طريق رجوع، فالطرد اللي
اترفض أو اتلغى بيفضل مكتوب عليه «في المكتب» للأبد.package_whereabouts_s1
مش قابل للفلترة في بحث شوبيفاي: الفلتر عليه بيتجاهَل في صمت
ويرجّع المتجر كله (١٠٬٠٠٠ صف — مقيس 15-09-2026). فالـ Worker
بيجيب المرتجع/الملغي بس، والأهلية بتتحسب في
§WAREHOUSE-GATE بتاع الـ shell — مصدر واحد
للصفحة وللشاشة الرئيسية.Returned و
Cancelled حالتان نهائيتان بتتراكم — كل مرتجع وكل
ملغي في تاريخ المتجر بيطابق الفلتر، ومن غير النافذة الاستعلام بيرجّع
آلاف الصفوف والطابور يقول رقم مالوش علاقة بالطرود اللي في إيد
الموظف. ⚠️ والنافذة عرض بس — الأوردر الأقدم منها بيتسكن عادي
والـ Worker بيكتب عليه.cancelledAt من غير manual_status =
Cancelled مش بيطابق أي من التلات استعلامات (فلتر
status:cancelled كان هيرجّع كل ملغيات تاريخ المتجر).
وبيتسكن عادي — وده بالظبط معنى «القايمة عرض والـ Worker
مرجع».Warehouse وقت التغليف ولسه ما اتعدّلتش.
عشان كده العهدة الفاضية مقبولة: الطرد راجع فعلاً، وإحنا مش
عارفين هو كان فين. ✅ والأداة دي بتصلّح ده بنفسها — أول سكانة
بتكتب Warehouse صراحةً.read_all_orders مش من صلاحيات التطبيق، والأداة
دي أكتر واحدة معرّضة: بتقرا أوردرات مرتجعة وملغية وهي أقدم
بطبيعتها. شوبيفاي بتخفي أي أوردر أقدم من ٦٠ يوم، والرسالة
وقتها «الأوردر مش موجود على شوبيفاي» — وهي كاذبة تمامًا. بند
في 🩺 الفحص الذاتي بيقولها بالاسم.CHUNK ولا MAX_BATCH في الأداة دي.dateFrom/dateTo بيتقارنوا بالـ timestamp
المخزّن (UTC) بينما العرض بتوقيت القاهرة — فرق الساعات ممكن يحط
عملية بعد ٩ مساءً في يوم UTC اللي بعده. مقبول لفلتر بالأيام، ومكتوب
هنا عشان مايتكتشفش كباج بعدين.diag بس —
مفيش قيمة أي سر بتتعرض.| الوقت | رقم الأوردر | الطرد | النتيجة | ملاحظة |
|---|
| رقم الأوردر | العميل | نوع الأوردر | الحالة | عدد القطع | موقع الشحنة | تاريخ الأوردر |
|---|
| التاريخ | الوقت | الموظف | رقم الأوردر | الطرد | من → إلى | النتيجة | السبب / ملاحظة |
|---|---|---|---|---|---|---|---|
| لا يوجد سجل بعد — اضغط تحديث | |||||||