نظام مطاحن شاكرين لإدارة عمليات تصفية الذهب
منصة تشغيلية ومالية مركزية بُنيت لرقمنة دورة العمل الكاملة في مطاحن وتصفية الذهب — من الزبائن وجلسات الطحن إلى المخزون والأجور والتحصيلات والمحاسبة وصافي الربح النهائي.
- الدور
- بناء البنية الخلفية وتطوير النظام بالكامل
- الجدول الزمني
- نظام فعلي
- الصناعة
- عمليات طحن وتصفية الذهب
- الحالة
- يعمل في الإنتاج
ما هذا النظام
مطاحن شاكرين نظام تشغيلي ومالي وإداري بُني لعمل طحن وتصفية الذهب. يأخذ دورة عمل تتوزع عادةً بين الدفاتر والجداول والذاكرة ويربطها في دورة واحدة مترابطة: يصل الزبون، تُفتح جلسة طحن على ماكينة محددة، تُطحن الزكائب، يُنتج الذهب ويُصفّى، تُحمّل المصروفات المباشرة واستهلاك المخزون على الجلسة، تُستحق الأجور خلال الشهر، تسحب الشركة تحصيلاتها من ربحها، وتنزل كل هذه الحركات في دفتر مالي واحد تقرأ منه التقارير المحاسبية. النتيجة أن الوضع التشغيلي والمالي للمطحنة يمكن قراءته في أي لحظة من مصدر واحد بدل تسويته لاحقًا.
ما الذي احتجنا حله
إدارة المطحنة تعني إبقاء الزكائب وسعر الزكيبة والذهب الناتج ورسوم التصفية وخصومات العملاء والمصروفات المباشرة واستهلاك المخزون والأجور والصيانة وتحصيلات الشركة متسقة مع بعضها. وحين تُحفظ هذه الأرقام في سجلات منفصلة أو حسابات يدوية فإنها تتباعد: تُحتسب المصروفات مرتين، وتختلف الحسابات بين الشاشات، وتتغير التقارير القديمة عند تعديل سعر، ويصبح تحديد الربحية الحقيقية صعبًا جدًا.
كيف أطلقناه
منصة مركزية تكون فيها كل عملية مرتبطة بباقي النظام وكل حساب مالي يمر عبر محرك واحد مشترك. تُحفظ الأسعار كلقطات داخل العملية نفسها فلا تتحرك السجلات التاريخية عند تغيير الإعدادات. ولوحات التحكم والتقرير الإداري وتقرير المحاسب والدفتر المالي تقرأ كلها نفس الأرقام، مما يجعل الوضع التشغيلي والمالي للمطحنة قابلاً للإثبات لا للتقدير.
كيف يُوصل النظام
النظام مبني على Laravel كواجهة REST خلفية مع عميل متصفح خفيف، والقواعد المالية تعيش في طبقة أعمال مستقلة لا داخل الـControllers. الدورة التشغيلية أدناه هي العمود الفقري للمنتج: كل مرحلة تكتب في نفس المصدر المالي، ولهذا لا يمكن أن يختلف رقم بين لوحة التحكم والتقرير الإداري وتقرير المحاسب والدفتر المالي.
سجل الزبون يفتح جلسة طحن على ماكينة محددة، بعدد الزكائب وحساب الطحن الخاص بتلك الجلسة.
يُسجَّل الذهب الناتج بالجرام، ويُحسب منه حساب التصفية، ويُطبَّق خصم الزبون للوصول إلى صافي العميل.
تُحمَّل المصروفات التشغيلية المباشرة واستهلاك المخزون والصيانة على الجلسة ليعكس ربحها التكلفة الحقيقية.
تُستحق الرواتب خلال الشهر وتُسحب تحصيلات الشركة من ربح متاح مُتحقق منه، وكلاهما ينزل في نفس الدفتر.
الدفتر المالي وتقرير المحاسب والتقرير الإداري تصل جميعها إلى صافي ربح واحد للشركة عن الفترة المحددة.
اختيارات هندسية
في الواقع
الخدمات والبيانات
طبقة مالية مركزية بدل حسابات موزعة داخل الـControllers والواجهة. تحسب إيراد الطحن، وقيمة التصفية، والخدمات، والخصومات، وصافي مستحق العميل، والمصروفات التشغيلية، وتكلفة المخزون، والصيانة، والأجور، والتعديلات اليدوية، وتحصيلات الشركة، وربح الطحن، وصافي ربح الشركة النهائي — فتقرأ كل لوحة وكل تقرير نفس الحساب.
دورة حياة الجلسة تشمل الزبون، وماكينة الطحن، وعدد الزكائب، وكمية الذهب، وتكلفة الطحن، وتكلفة التصفية، وخصم الزبون، والمصروفات التشغيلية، واستهلاك المخزون، وصافي العميل، وربح الجلسة.
العاملون، والراتب الشهري، وتاريخ بداية العمل، والأجر اليومي المشتق، وعدد أيام العمل، والراتب المستحق، وحالة الدفع أو التعليق. الاستحقاق يُحسب ولا يُدخل يدويًا.
يُتحقق من التحصيل مقابل ربح الشركة المتاح قبل تسجيله، ويُحفظ مع المستخدم المنفذ والتاريخ والوقت والربح قبل وبعد. ويبقى منفصلاً عن المصروفات التشغيلية.
قائمة الأصناف، والكميات الحالية، والحد الأدنى، وحركات المخزون. الاستهلاك يُحسب على الجلسة ليعكس الربح المواد المستخدمة فعليًا.
تكاليف صيانة مستقلة مصنفة حسب النوع — طارئة ودورية وإصلاح — تُتابع بمعزل عن مصروفات الجلسة لكنها تنزل في نفس الدفتر.
سجل للعرض فقط للعمليات على النظام — من نفّذ، ومتى، ومن أي عنوان، وعلى أي كيان. لا يمكن تعديل أو حذف قيوده، وتشمل إنشاء الفترات المحاسبية وتغييرات الأجور وتحديثات المخزون وأحداث الدخول والخروج.
صلاحيات مبنية على الأدوار — مدير عام، ومدير، ومحاسب، ومشرف، ومساعد مشرف — مطبقة عبر Policies في لارافيل بحيث يصل كل مستخدم إلى ما يسمح به دوره فقط.
الواجهات الخارجية
عميل المتصفح يتعامل مع النظام حصريًا عبر Laravel REST API، مع API Resources تشكّل كل استجابة بحيث لا يعتمد العميل على بنية قاعدة البيانات.
المصادقة تعمل عبر جلسة Sanctum، مع فرض سياسة كلمة مرور عند إنشاء الحساب وتسجيل أحداث الجلسة في سجل التدقيق.
التحقق من المدخلات داخل Form Requests والصلاحيات داخل Policies، حتى لا يقبل أي Controller بيانات غير صحيحة أو يعرض سجلاً لا يملك الدور حق الوصول إليه.
التقرير الإداري وتقرير المحاسب يصدّران بيانات الفترة إلى CSV للأرشفة وللتسليم إلى المحاسبة الخارجية.
ما يتحكم به المسؤولون
الزبون المسجل الذي تنتمي إليه الجلسة، بسجله وإحصاءاته الخاصة.
جلسة تُفتح على ماكينة، تحمل عدد الزكائب وحساب الطحن.
الذهب الناتج عن الجلسة مسجلاً بالجرام، أو بلا ذهب إطلاقًا إذا لم تنتج العملية شيئًا.
حساب التصفية المحسوب من الذهب، ثم مخصومًا منه خصم الزبون إن وُجد.
مصروفات تشغيلية مباشرة مرتبطة بالجلسة نفسها بدل تجميعها في نهاية الشهر.
المواد وقطع الغيار المستهلكة في الجلسة، محسوبة عليها من دفتر حركات المخزون.
رواتب تُستحق خلال الشهر بناءً على تاريخ بداية عمل كل موظف وأيام عمله.
تحصيلات الشركة المسحوبة من الربح المتاح، بعد التحقق منها قبل السماح بتسجيلها.
الدفتر المالي وتقرير المحاسب والتقرير الإداري خلال الفترة المختارة.
الرقم الصافي النهائي للفترة، مشتق من نفس المحرك الذي تقرأ منه كل الشاشات.
مشاكل صعبة، تم التعامل معها
تعديل إعداد مالي كان يغيّر العمليات التاريخية وكل تقرير مبني عليها بأثر رجعي.
تُحفظ الأسعار كلقطة داخل العملية وقت إنشائها، فتُطبَّق تغييرات الإعدادات على المستقبل فقط وتبقى التقارير التاريخية قابلة لإعادة الإنتاج.
نفس الرقم كان معرضًا لأن يُحسب بشكل مختلف في لوحة التحكم والتقرير والدفتر.
نُقلت كل الحسابات المالية خلف طبقة خدمات واحدة يستدعيها كل مستهلك، فانتفت إمكانية اختلاف شاشتين.
المصروفات التشغيلية واستهلاك المخزون كان من السهل احتسابهما مرتين بين الجلسة والتقرير الشهري.
تُربط المصروفات والاستهلاك بالجلسة التي تسببت بهما وتتصاعد منها إلى تقارير الفترة، فتُحتسب كل تكلفة مرة واحدة بالضبط.
كان بالإمكان سحب تحصيلات من ربح غير موجود.
التحصيلات تحسب الربح المتاح أولاً، وترفض أي طلب أكبر منه، وتحفظ الربح قبل وبعد مع المستخدم المنفذ والتوقيت.
مبني ليظل سريعاً
التصميم والتفاعل
جاهز للإطلاق والتشغيل
ما الذي يفعله
كل جلسة تسجل الزبون، والماكينة، والزكائب، وكمية الذهب، وتكلفة الطحن، وتكلفة التصفية، وخصم الزبون، والمصروفات التشغيلية، واستهلاك المخزون، وصافي العميل، وربحها الخاص — معروضة في سجل قابل للبحث والفلترة مع تفاصيل كل جلسة.
واجهة مخصصة للمحاسب تعرض لكل زبون: الطحن، ووزن الذهب، وحساب التصفية، والخصم، والإجمالي، وبيانات المجهر، والملاحظات، يوميًا أو شهريًا، مع ملخص للفترة وتصدير CSV.
كل حركة مالية تظهر في سجل واحد مع مصدرها — طحن، أو مصروف، أو صيانة، أو أجر، أو تعديل مالي، أو تحصيل شركة — ومع المنفذ والدور والداخل والمصروف والأثر الصافي والمرجع، فيمكن تتبع أي رقم إلى مصدره.
تقارير يومية وشهرية وسنوية ونطاق تاريخ مخصص تعرض صافي العملاء، والمصروفات التشغيلية، وأرباح الجلسات، والأجور، والصيانة، والتحصيلات، وصافي ربح الشركة النهائي، مع تصدير CSV.
العاملون براتب شهري وتاريخ بداية عمل وأجر يومي مشتق وعدد أيام عمل وراتب مستحق وحالة مدفوع أو معلق، مع ملخص للإجمالي والمدفوع والمتبقي.
قائمة أصناف بالمورد والفئة والوحدة والكمية الحالية والحد الأدنى وتكلفة الوحدة وقيمة المخزون، مع سجل الحركات ومؤشرات النقص ونفاد الرصيد.
تُسجَّل الطواحين برقم وعنوان، ولكل منها حالة — متاحة أو تحت الصيانة أو غير نشطة مع ذكر السبب — وكل جلسة مرتبطة بالماكينة التي نفذتها.
سعر الزكيبة، وسعر جرام الذهب، وسعر التصفية، وخصومات العملاء، والبنود المالية الإضافية كلها قابلة للتعديل من الإدارة دون تعديل الكود. ويمكن إنشاء البنود وإعادة تسميتها وتسعيرها وتعطيلها.
مدير عام ومدير ومحاسب ومشرف ومساعد مشرف، كل منهم يصل إلى ما يسمح به دوره فقط، تُدار من سجل مستخدمين يعرض الدور والحالة وآخر دخول.
سجل عمليات للعرض فقط يوثق من نفّذ ومتى ومن أي عنوان وما الذي تغيّر — يغطي الدخول والخروج والأجور والمخزون ونشاط الفترات المحاسبية.
العربية والإنجليزية والفرنسية، مع اتجاه RTL للعربية وLTR للإنجليزية والفرنسية. واللغة المختارة تُحفظ للمستخدم بدل إعادة ضبطها كل زيارة.
واجهة مؤسسية بلون الغرافيت والأسود مع لمسة ذهبية، في وضعين ليلي ونهاري، مبنية على جداول احترافية وبطاقات ونماذج متجاوبة ونوافذ منسجمة.
لماذا اخترنا ما اخترناه
حفظ لقطة سعرية تاريخية داخل كل عملية.
عند إنشاء جلسة بسعر زكيبة أو سعر ذهب أو سعر تصفية معين، تُحفظ هذه القيم داخل العملية نفسها. وإذا غيّرت الإدارة السعر لاحقًا لا تتغير العملية القديمة، ولا يتغير أي تقرير مبني عليها. بدون ذلك كان تعديل إعداد مالي واحد سيعيد كتابة أشهر من التاريخ بصمت.
محرك مالي مركزي واحد بدل الحساب داخل كل شاشة.
أُبقيت المنطق المالي خارج الـControllers وخارج الواجهة عمدًا. كل مستهلك — لوحة التحكم، والتقرير الإداري، وتقرير المحاسب، والدفتر — يستدعي نفس الخدمات، وهذه هي الطريقة الوحيدة لضمان ألا تختلف شاشتان على رقم.
حسابات مالية بنظام Decimal.
النظام يحسب المال مقابل أوزان الذهب، حيث يتراكم خطأ التقريب في تمثيل الفاصلة العائمة عبر سلسلة من عمليات الضرب والطرح. الحساب بنظام Decimal في الخلفية يحافظ على استقرار الإجماليات عبر سلسلة الطحن والتصفية والخصم والمصروفات.
استحقاق الأجور محسوب لا مُدخل.
يُحسب الراتب المستحق بمعادلة: الراتب الشهري ÷ عدد أيام الشهر × أيام العمل الفعلية، وهو ما يتعامل مع اختلاف أطوال الشهور والسنوات الكبيسة دون حالات خاصة. وبمجرد دفع الراتب تُجمَّد القيمة المستحقة تاريخيًا حتى لا يغيّر شهر لاحق سجلاً مُقفلاً.
التحقق من التحصيلات مقابل الربح المتاح.
يُفحص تحصيل الشركة مقابل الربح المتاح المحسوب قبل السماح بتسجيله، ويُحفظ مع الربح قبل وبعد. هذا يمنع سحب أكثر مما رُبح فعلاً، ويبقي التحصيلات منفصلة عن المصروفات التشغيلية في كل تقرير.
تعطيل البنود المستخدمة بدل حذفها.
لا يمكن حذف بند مالي إلا إذا لم يُستخدم تاريخيًا. وأي بند مرتبط بعملية قائمة يُعطَّل بدلاً من ذلك، حتى تظل السجلات التاريخية قادرة على قراءة بنودها وتبقى التقارير قابلة لإعادة الإنتاج.
العمليات بلا ذهب مدعومة أصلاً.
بعض الجلسات لا ينتج عنها ذهب فعلاً. وبدل إدخال كمية وهمية لإرضاء بنية البيانات، يتعامل النظام مع هذه الحالة مباشرة، فلا تتلوث التقارير بأوزان مخترعة.
JavaScript خالص في الواجهة بدل إطار عمل.
الواجهة عبارة عن جداول ونماذج ونوافذ كثيفة البيانات تعمل عبر REST API. الاعتماد على HTML5 وCSS3 وJavaScript خالص يبقيها خفيفة وبلا اعتماديات؛ وإضافة إطار عمل أمامي كانت ستُدخل خط بناء ووزنًا وقت التشغيل لا يحتاجهما هذا المنتج.
النتائج
دراسات حالة أخرى
تبني شيئاً مشابهاً؟
هيا نحدد نطاق منصتك — لوحة تحكم وتطبيقات موبايل و APIs والمنصة كاملة.
