/* Bonyan ERP — إدارة المخازن: قوائم المخازن والفئات المُدارة
- إضافة/تعديل/حذف مخزن أو فئة (الحذف ممنوع إن كانت مستخدمة في مواد).
- إعادة التسمية تنعكس تلقائيًا على كل المواد المرتبطة (محليًا وفي القاعدة). */
function WarehousesScreen({ user }) {
const I = window.BnyIcon;
const D = window.BnyData;
const { Card, Button, Input, Badge } = window.BonyanDesignSystem_ad3ca0;
const isMobile = window.useBnyMobile();
const [, forceRender] = React.useReducer((x) => x + 1, 0);
const canEdit = window.BnyCan(user, "inventory_edit");
if (!canEdit) {
return (
لا تملك صلاحية الوصول
إدارة المخازن متاحة لمن يملك صلاحية «تعديل المواد والإعدادات».
);
}
return (
}
items={D.warehouses || []}
countOf={(w) => window.BnyOps.countMaterialsIn("wh", w.name)}
countLabel={(n) => n + " مادة"}
placeholder="اسم مخزن جديد (مثال: فرع الجديدة)"
onAdd={async (name) => { await window.BnyOps.addWarehouse(name); forceRender(); }}
onRename={async (item, name) => { await window.BnyOps.renameWarehouse(item, name); forceRender(); }}
onDelete={async (item) => { await window.BnyOps.deleteWarehouse(item); forceRender(); }}
hint="إعادة تسمية المخزن تُحدِّث كل المواد المرتبطة به تلقائيًا. لا يمكن حذف مخزن فيه مواد — انقلها أولًا من شاشة المواد."
/>
}
items={D.categories || []}
countOf={(c) => window.BnyOps.countMaterialsIn("cat", c.name)}
countLabel={(n) => n + " مادة"}
placeholder="اسم فئة جديدة (مثال: عوازل)"
onAdd={async (name) => { await window.BnyOps.addCategory(name); forceRender(); }}
onRename={async (item, name) => { await window.BnyOps.renameCategory(item, name); forceRender(); }}
onDelete={async (item) => { await window.BnyOps.deleteCategory(item); forceRender(); }}
hint="الفئة إلزامية عند إضافة أي مادة. إعادة التسمية تُحدِّث المواد المرتبطة، ولا يمكن حذف فئة مستخدمة."
/>