Skip to content
English

السماح للأصناف ذات الدفعات وتواريخ الصلاحية بحمل كميات غير موسومة (Allowing Items With Batch & Expiry to Hold Untagged Quantities)

طلب تطوير: SRDRQ06261 (شركة دار الإمارة التجارية)

المشكلة

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

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

والطلب بسيط في صياغته: دعِ الصنف يحمل النوعين من المخزون في الوقت نفسه — كميات موسومة بدفعة (أو مسلسل، أو مقاس، أو لون، …) وكميات غير موسومة — وتوقّف عن إجبار إدخال رقم دفعة حين تكون الكمية المنقولة فعليًا غير موسومة.

الفكرة: تاريخ فاصل لكل محدِّد

يقوم الحل على فكرة واحدة بديهية: تاريخ تُقبَل قبله القيم الفارغة.

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

ويوجد هذا التحكّم في إعدادات الصنف، ويُضبَط لكل محدِّد تتبع على حِدة. فالدفعة (Lot)، والرقم المسلسل، والإصدار، والمقاس، واللون، والمقاييس، والتغليف، ونسبتا الفعّال/غير الفعّال، والصنف الفرعي — لكلٍّ منها إعداده الخاص، فتستطيع تخفيف القاعدة لأرقام الدفعات بينما تبقي — مثلًا — الأرقام المسلسلة مطلوبة بصرامة.

الحقلان

ستجد في كل محدِّد تتبع ضمن إعدادات الصنف حقلين جديدين:

  • Allow Empty Values Before Date (السماح بترك القيم فارغة قبل تاريخ) — التاريخ الفاصل. عند ضبطه، يُسمح للمستندات المؤرَّخة في ذلك اليوم أو قبله بترك هذا المحدِّد فارغًا رغم أن الصنف يتطلبه عادةً. واترْكه فارغًا فلا يتغيّر شيء؛ يبقى المحدِّد إلزاميًا كما كان دائمًا.
  • Allow Admin To Receipt With Empty Value (السماح لمدير النظام بالاستلام بقيمة فارغة) — مفتاح أكثر صرامة يحكم المخزون الوارد (انظر أدناه).

هذان الإعدادان حسّاسان

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

كيف يتصرّف النظام عمليًا

التمييز الجوهري الذي ترسمه هذه الميزة هو بين المخزون الخارج أو المنقول والمخزون الذي يُنشَأ.

صرف الكميات غير الموسومة ونقلها

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

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

استلام المخزون — أكثر صرامة بحكم التصميم

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

لذا تُضبَط الاستلامات بإحكام أشد. فلن يقبل سند الاستلام المخزني قيمة فارغة إلا عند تحقّق كلا الشرطين:

  1. تفعيل Allow Admin To Receipt With Empty Value لذلك المحدِّد، و
  2. أن يكون منفّذ العملية مدير نظام (أو في حكمه).

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

لماذا هي آمنة لبقية العملاء

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

وفي العمق، يحتفظ محرّك المخزون والتكلفة الآن بالكميات غير الموسومة في وعائها الخاص المفهرَس فهرسةً صحيحة، بدلًا من خلطها مع دفعة عشوائية، فتبقى الأرصدة المتاحة وحسابات التكلفة صحيحة سواء أكان المخزون موسومًا أم لا. فالكميات الموسومة وغير الموسومة لنفس الصنف تتعايش بنظافة، وكلٌّ منها متتبَّع على حِدة.

باختصار

هل يُسمح بالمخزون غير الموسوم؟
الصرف / النقل / التجميع / الجرد، بتاريخ ≤ التاريخ الفاصلنعم، إن وُجد مخزون غير موسوم
سند الاستلام المخزني (يُنشئ الإمداد)، بتاريخ ≤ التاريخ الفاصللمدير النظام فقط، وفقط عند تفعيل مفتاح استلام المدير
أي مستند بتاريخ بعد التاريخ الفاصللا — يعود المحدِّد إلزاميًا
محدِّد بلا تاريخ فاصل مضبوطلا تغيير — إلزامي كما كان دائمًا

يمنح هذا العملاءَ مسارَ ترحيلٍ نظيفًا ومحدَّدًا بتاريخ نحو تتبع الدفعات وتواريخ الصلاحية: إبقاء الكميات القديمة في حركة دون عناء، وبدء كل استلام جديد متتبَّعًا بشكل صحيح، وحصر إنشاء المخزون غير الموسوم في إجراء متعمَّد من مدير النظام.