109 lines
5.4 KiB
PHP
109 lines
5.4 KiB
PHP
<?php
|
|
declare(strict_types=1);
|
|
require_once __DIR__ . '/app.php';
|
|
require_permission('suppliers');
|
|
|
|
$errors = [];
|
|
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
|
|
verify_csrf();
|
|
|
|
$name = trim((string)($_POST['name'] ?? ''));
|
|
$phone = trim((string)($_POST['phone'] ?? ''));
|
|
$email = trim((string)($_POST['email'] ?? ''));
|
|
$suppliedRaw = trim((string)($_POST['supplied_skus'] ?? ''));
|
|
$notes = trim((string)($_POST['notes'] ?? ''));
|
|
$suppliedSkus = parse_csv_list($suppliedRaw);
|
|
|
|
if ($name === '') {
|
|
$errors[] = 'اسم المورد مطلوب.';
|
|
}
|
|
|
|
if (!$errors) {
|
|
create_record('supplier', $name, next_code('SUP', 'supplier'), [
|
|
'phone' => $phone,
|
|
'email' => $email,
|
|
'supplied_skus' => $suppliedSkus,
|
|
'notes' => $notes,
|
|
]);
|
|
set_flash('success', 'تمت إضافة المورد بنجاح.');
|
|
redirect('suppliers.php');
|
|
}
|
|
}
|
|
|
|
$suppliers = fetch_records('supplier');
|
|
$detail = isset($_GET['id']) ? fetch_record('supplier', (int)$_GET['id']) : null;
|
|
render_header('إدارة الموردين', 'إضافة الموردين وربط الأصناف التي يوردونها مع قسم المشتريات.', 'suppliers');
|
|
?>
|
|
<div class="row g-4">
|
|
<div class="col-lg-5">
|
|
<div class="panel-card">
|
|
<div class="section-header compact">
|
|
<div>
|
|
<h1 class="section-title mb-1">إضافة مورد</h1>
|
|
<p class="section-copy">عرّف المورد وبياناته والأصناف التي يوردها لربطه لاحقًا بأوامر الشراء.</p>
|
|
</div>
|
|
</div>
|
|
<?php if ($errors): ?>
|
|
<div class="alert alert-danger py-2"><?php foreach ($errors as $error): ?><div><?= e($error) ?></div><?php endforeach; ?></div>
|
|
<?php endif; ?>
|
|
<form method="post" class="vstack gap-3">
|
|
<input type="hidden" name="csrf_token" value="<?= e(csrf_token()) ?>">
|
|
<div>
|
|
<label class="form-label">اسم المورد</label>
|
|
<input type="text" class="form-control" name="name" required>
|
|
</div>
|
|
<div class="row g-3">
|
|
<div class="col-md-6"><label class="form-label">الهاتف</label><input type="text" class="form-control" name="phone"></div>
|
|
<div class="col-md-6"><label class="form-label">البريد الإلكتروني</label><input type="email" class="form-control" name="email"></div>
|
|
</div>
|
|
<div>
|
|
<label class="form-label">الأصناف الموردة</label>
|
|
<input type="text" class="form-control" name="supplied_skus" placeholder="RAW-001, P-100">
|
|
<div class="form-text">افصل الـ SKU بفاصلة.</div>
|
|
</div>
|
|
<div>
|
|
<label class="form-label">ملاحظات</label>
|
|
<textarea class="form-control" name="notes" rows="3"></textarea>
|
|
</div>
|
|
<button class="btn btn-dark" type="submit">حفظ المورد</button>
|
|
</form>
|
|
</div>
|
|
</div>
|
|
<div class="col-lg-7">
|
|
<div class="panel-card mb-4">
|
|
<div class="section-header"><div><h2 class="section-title">سجل الموردين</h2><p class="section-copy">اعرض الموردين وربطهم بالأصناف الموردة.</p></div></div>
|
|
<div class="table-responsive">
|
|
<table class="table align-middle app-table">
|
|
<thead><tr><th>المورد</th><th>التواصل</th><th>الأصناف</th><th>تفاصيل</th></tr></thead>
|
|
<tbody>
|
|
<?php foreach ($suppliers as $supplier): $payload = $supplier['payload_data']; ?>
|
|
<tr>
|
|
<td><div class="fw-semibold"><?= e($supplier['title']) ?></div><div class="small text-secondary"><?= e($supplier['code']) ?></div></td>
|
|
<td><?= e($payload['phone'] ?? '') ?><div class="small text-secondary"><?= e($payload['email'] ?? '') ?></div></td>
|
|
<td><?= e(implode('، ', $payload['supplied_skus'] ?? [])) ?></td>
|
|
<td><a class="btn btn-sm btn-outline-secondary" href="suppliers.php?id=<?= (int)$supplier['id'] ?>">عرض</a></td>
|
|
</tr>
|
|
<?php endforeach; ?>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
<div class="panel-card">
|
|
<div class="section-header compact"><div><h2 class="section-title">تفاصيل المورد</h2></div></div>
|
|
<?php if ($detail): $payload = $detail['payload_data']; ?>
|
|
<div class="detail-grid mb-3">
|
|
<div class="detail-block"><span class="detail-label">اسم المورد</span><strong><?= e($detail['title']) ?></strong></div>
|
|
<div class="detail-block"><span class="detail-label">الرقم</span><strong><?= e($detail['code']) ?></strong></div>
|
|
<div class="detail-block"><span class="detail-label">الهاتف</span><strong><?= e($payload['phone'] ?? '') ?></strong></div>
|
|
<div class="detail-block"><span class="detail-label">البريد</span><strong><?= e($payload['email'] ?? '') ?></strong></div>
|
|
</div>
|
|
<div class="subtle-card"><div class="detail-label mb-2">الأصناف الموردة</div><div><?= e(implode('، ', $payload['supplied_skus'] ?? [])) ?: '—' ?></div></div>
|
|
<div class="mt-3 text-secondary small"><?= e($payload['notes'] ?? '') ?></div>
|
|
<?php else: ?>
|
|
<div class="empty-inline">اختر موردًا من الجدول لعرض التفاصيل.</div>
|
|
<?php endif; ?>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<?php render_footer(); ?>
|