Ali Mohamed

منع البيع بالسالب في أوامر البيع

أمر البيع ميتأكدش لو الكمية أكبر من المتاح في المخزن.

نسخة مجانية الكاملة 750 ج.م
  • بيشتغل على أودو 19 و20
  • محتاج Sales + Inventory + Automation Rules
  • حجم الكود 196 سطر

المجاني ولا الكامل؟

بيعمل إيهالمجانيالكامل
زرار تفعيل وإيقاف لكل شركة
المنع على كل الأصناف وكل المخازن
الرسالة بتقول أنهي صنف، والمطلوب كام، والمتاح كام
تمنع في فئات أصناف بعينها، والفئات اللي تحتها داخلة معاها
تمنع في مخازن بعينها
مستخدمين مسموح لهم يأكدوا عادي
حمّل750 ج.م

الكامل بيعمل إيه بالتفصيل

مكان الإعداد: المبيعات ← الإعدادات ← «البيع بالسالب» ← «منع البيع بأكتر من المتاح». الإعداد لكل شركة لوحدها.

المنع:

  • لما يتفعّل، تأكيد أمر البيع بيترفض لو كمية أي صنف أكبر من المتاح في مخزن الأمر.
  • الرسالة بتقول أنهي صنف، والمطلوب كام، والمتاح كام.
  • المتاح = الرصيد في المخزن، ناقص اللي لسه هيخرج لأوامر وتحويلات متأكدة ومتسلّمتش.
  • لو نفس الصنف في أكتر من سطر، الكميات بتتجمع.

الاختيارات (لو سبت أي واحدة فاضية تبقى على الكل):

  • الفئات الممنوعة: الفئات اللي تحتها داخلة معاها.
  • المخازن الممنوعة: بيتشيك على مخزن الأمر.
  • المسموح لهم بالبيع بالسالب: المستخدمين دول يقدروا يأكدوا عادي.

اللي مش بيتأثر:

  • نقطة البيع.
  • طلبات المتجر الإلكتروني والبوابة (لما العميل يدفع أو يوقّع بنفسه).
  • الأصناف اللي مش متتبعة في المخزون.

التسطيب

  1. فعّل وضع المطوّر (الإعدادات ← تفعيل وضع المطوّر).
  2. ادخل التطبيقات ← «استيراد وحدة» (Import Module)، ارفع الملف، واضغط تثبيت.
  3. المبيعات ← الإعدادات ← «البيع بالسالب»: فعّل المنع، واختار الفئات والمخازن والمستخدمين لو محتاج، واحفظ.

ملحوظة: لو أودو أونلاين لازم تكون على باقة Custom.

تبنيها بنفسك من غير ملف

الكود والخطوات (نفس النسخة المجانية)

النسخة دي قاعدة أتمتة واحدة بتمنع في كل الأصناف وكل المخازن، من غير إعدادات. التحكم في الفئات والمخازن والمستخدمين في الموديول بس.

  1. الإعدادات ← تقنية ← قواعد الأتمتة ← جديد.
  2. الموديل: أمر البيع (Sales Order).
  3. المشغّل: عند التحديث (On save)، والحقل الحالة (Status).
  4. قبل التحديث: الحالة ≠ أمر بيع. بعد التحديث: الحالة = أمر بيع.
  5. الإجراء: تنفيذ كود (Execute Code)، والصق الكود.
# النسخة المجانية: قاعدة أتمتة على أمر البيع بتمنع البيع بالسالب في كل الأصناف وكل المخازن، من غير إعدادات.
# Free version: one automation rule, blocks every storable product in every warehouse, no settings.
for order in records:
    if env.user.share:  # website and portal orders are never blocked
        continue
    warehouse = order.warehouse_id
    wanted = {}
    for line in order.order_line:
        product = line.product_id
        if line.display_type or not product or not product.is_storable:
            continue
        wanted[product.id] = wanted.get(product.id, 0.0) + line.product_qty
    short = []
    for product in env['product.product'].browse(list(wanted)).with_context(warehouse_id=warehouse.id):
        available = product.qty_available - product.outgoing_qty
        if wanted[product.id] > available + 0.0001:
            short.append('- %s: المطلوب %s · المتاح %s' % (product.display_name, wanted[product.id], available))
    if short:
        raise UserError('مينفعش تأكيد %s: الكمية أكبر من المتاح في مخزن %s.\n\n%s' % (order.name, warehouse.name, '\n'.join(short)))

اطلب النسخة الكاملة

750 ج.م

لو إنت من بره مصر، اكتب بلدك في الطلب ونتفق على السعر بالدولار وطريقة الدفع على واتساب.