getMessage();
}
$categories = [];
$suppliers = [];
try {
$pdo = db();
$categories = $pdo->query('SELECT id, name_ar, name_en FROM categories ORDER BY name_ar ASC')->fetchAll();
$suppliers = $pdo->query('SELECT id, name FROM suppliers ORDER BY name ASC')->fetchAll();
} catch (Throwable $e) {
// Ignore if not present
}
// Search logic
$search = $_GET['q'] ?? '';
$filteredStock = [];
if ($search && empty($dbError)) {
$lowerSearch = mb_strtolower($search);
foreach ($allStock as $key => $row) {
if (
str_contains(mb_strtolower($row['sku']), $lowerSearch) ||
str_contains(mb_strtolower($row['name']), $lowerSearch)
) {
$filteredStock[$key] = $row;
}
}
} else {
$filteredStock = $allStock;
}
// Pagination logic
$page = max(1, (int)($_GET['p'] ?? 1));
$limit = 10;
$total = count($filteredStock);
$totalPages = max(1, ceil($total / $limit));
$offset = ($page - 1) * $limit;
$stockRows = array_slice($filteredStock, $offset, $limit, true);
require __DIR__ . '/includes/header.php';
?>
= h(tr('احتساب مبسط = الرصيد الابتدائي - الكميات المباعة في هذا الإصدار الأول.', 'Starter calculation = opening stock minus sold quantities in this first version.')) ?>= h(tr('قائمة الأصناف والمخزون', 'Items & Stock List')) ?>
SKU
= h(tr('الصنف', 'Product')) ?>
= h(tr('السعر', 'Price')) ?>
= h(tr('افتتاحي', 'Opening')) ?>
= h(tr('مباع', 'Sold')) ?>
= h(tr('متاح', 'Available')) ?>
= h(tr('التنبيه', 'Signal')) ?>
= h(tr('إجراءات', 'Actions')) ?>
= h(tr('لا توجد بيانات', 'No data found')) ?>
= h($row['sku']) ?>
= h($row['name']) ?>
= h(currency($row['price'])) ?>
= h((string) $row['base_stock']) ?>
= h((string) $row['sold']) ?>
= h((string) $row['available']) ?>
= h(tr('منخفض', 'Low')) ?>
= h(tr('مستقر', 'Stable')) ?>