Autosave: 20260218-031142
This commit is contained in:
parent
05f00caf70
commit
7fda017576
100
index.php
100
index.php
@ -457,6 +457,10 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') {
|
||||
$min_stock = (float)($_POST['min_stock_level'] ?? 0);
|
||||
$vat_rate = (float)($_POST['vat_rate'] ?? 0);
|
||||
$expiry = $_POST['expiry_date'] ?: null;
|
||||
$is_promotion = isset($_POST['is_promotion']) ? 1 : 0;
|
||||
$promo_start = $_POST['promotion_start'] ?: null;
|
||||
$promo_end = $_POST['promotion_end'] ?: null;
|
||||
$promo_percent = (float)($_POST['promotion_percent'] ?? 0);
|
||||
|
||||
$image_path = null;
|
||||
if (isset($_FILES['image']) && $_FILES['image']['error'] === UPLOAD_ERR_OK) {
|
||||
@ -469,8 +473,8 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') {
|
||||
}
|
||||
|
||||
if ($name_en && $name_ar) {
|
||||
$stmt = db()->prepare("INSERT INTO stock_items (category_id, unit_id, supplier_id, name_en, name_ar, sku, purchase_price, sale_price, stock_quantity, min_stock_level, expiry_date, image_path, vat_rate) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)");
|
||||
$stmt->execute([$cat_id, $unit_id, $supplier_id, $name_en, $name_ar, $sku, $p_price, $s_price, $qty, $min_stock, $expiry, $image_path, $vat_rate]);
|
||||
$stmt = db()->prepare("INSERT INTO stock_items (category_id, unit_id, supplier_id, name_en, name_ar, sku, purchase_price, sale_price, stock_quantity, min_stock_level, expiry_date, image_path, vat_rate, is_promotion, promotion_start, promotion_end, promotion_percent) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)");
|
||||
$stmt->execute([$cat_id, $unit_id, $supplier_id, $name_en, $name_ar, $sku, $p_price, $s_price, $qty, $min_stock, $expiry, $image_path, $vat_rate, $is_promotion, $promo_start, $promo_end, $promo_percent]);
|
||||
$message = "Item added successfully!";
|
||||
}
|
||||
}
|
||||
@ -504,6 +508,10 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') {
|
||||
$min_stock = (float)($_POST['min_stock_level'] ?? 0);
|
||||
$vat_rate = (float)($_POST['vat_rate'] ?? 0);
|
||||
$expiry = $_POST['expiry_date'] ?: null;
|
||||
$is_promotion = isset($_POST['is_promotion']) ? 1 : 0;
|
||||
$promo_start = $_POST['promotion_start'] ?: null;
|
||||
$promo_end = $_POST['promotion_end'] ?: null;
|
||||
$promo_percent = (float)($_POST['promotion_percent'] ?? 0);
|
||||
|
||||
$stmt = db()->prepare("SELECT image_path FROM stock_items WHERE id = ?");
|
||||
$stmt->execute([$id]);
|
||||
@ -523,8 +531,8 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') {
|
||||
}
|
||||
|
||||
if ($name_en && $name_ar) {
|
||||
$stmt = db()->prepare("UPDATE stock_items SET category_id = ?, unit_id = ?, supplier_id = ?, name_en = ?, name_ar = ?, sku = ?, purchase_price = ?, sale_price = ?, stock_quantity = ?, min_stock_level = ?, expiry_date = ?, image_path = ?, vat_rate = ? WHERE id = ?");
|
||||
$stmt->execute([$cat_id, $unit_id, $supplier_id, $name_en, $name_ar, $sku, $p_price, $s_price, $qty, $min_stock, $expiry, $image_path, $vat_rate, $id]);
|
||||
$stmt = db()->prepare("UPDATE stock_items SET category_id = ?, unit_id = ?, supplier_id = ?, name_en = ?, name_ar = ?, sku = ?, purchase_price = ?, sale_price = ?, stock_quantity = ?, min_stock_level = ?, expiry_date = ?, image_path = ?, vat_rate = ?, is_promotion = ?, promotion_start = ?, promotion_end = ?, promotion_percent = ? WHERE id = ?");
|
||||
$stmt->execute([$cat_id, $unit_id, $supplier_id, $name_en, $name_ar, $sku, $p_price, $s_price, $qty, $min_stock, $expiry, $image_path, $vat_rate, $is_promotion, $promo_start, $promo_end, $promo_percent, $id]);
|
||||
$message = "Item updated successfully!";
|
||||
}
|
||||
}
|
||||
@ -1772,7 +1780,7 @@ switch ($page) {
|
||||
ORDER BY q.id DESC");
|
||||
$stmt->execute($params);
|
||||
$data['quotations'] = $stmt->fetchAll();
|
||||
$data['items_list'] = db()->query("SELECT id, name_en, name_ar, sale_price, purchase_price, stock_quantity, vat_rate FROM stock_items ORDER BY name_en ASC")->fetchAll();
|
||||
$data['items_list'] = db()->query("SELECT id, name_en, name_ar, sale_price, purchase_price, stock_quantity, vat_rate, is_promotion, promotion_start, promotion_end, promotion_percent FROM stock_items ORDER BY name_en ASC")->fetchAll();
|
||||
$data['customers_list'] = db()->query("SELECT id, name FROM customers WHERE type = 'customer' ORDER BY name ASC")->fetchAll();
|
||||
break;
|
||||
case 'payment_methods':
|
||||
@ -1822,7 +1830,7 @@ switch ($page) {
|
||||
}
|
||||
unset($inv);
|
||||
|
||||
$data['items_list'] = db()->query("SELECT id, name_en, name_ar, sale_price, purchase_price, stock_quantity, vat_rate FROM stock_items ORDER BY name_en ASC")->fetchAll();
|
||||
$data['items_list'] = db()->query("SELECT id, name_en, name_ar, sale_price, purchase_price, stock_quantity, vat_rate, is_promotion, promotion_start, promotion_end, promotion_percent FROM stock_items ORDER BY name_en ASC")->fetchAll();
|
||||
$data['customers_list'] = db()->query("SELECT id, name FROM customers WHERE type = '" . ($type === 'sale' ? 'customer' : 'supplier') . "' ORDER BY name ASC")->fetchAll();
|
||||
break;
|
||||
|
||||
@ -2864,7 +2872,12 @@ $projectDescription = $_SERVER['PROJECT_DESCRIPTION'] ?? 'Accounting System';
|
||||
</td>
|
||||
<td><?= htmlspecialchars($item['sku']) ?></td>
|
||||
<td>
|
||||
<div class="fw-bold"><?= htmlspecialchars($item['name_en']) ?></div>
|
||||
<div class="fw-bold">
|
||||
<?= htmlspecialchars($item['name_en']) ?>
|
||||
<?php if (isset($item['is_promotion']) && $item['is_promotion']): ?>
|
||||
<span class="badge bg-success ms-1" style="font-size: 0.65rem;" data-en="Promo" data-ar="عرض">Promo</span>
|
||||
<?php endif; ?>
|
||||
</div>
|
||||
<div class="small text-muted"><?= htmlspecialchars($item['name_ar']) ?></div>
|
||||
</td>
|
||||
<td><span data-en="<?= htmlspecialchars($item['cat_en']) ?>" data-ar="<?= htmlspecialchars($item['cat_ar']) ?>"><?= htmlspecialchars($item['cat_en']) ?></span></td>
|
||||
@ -3001,6 +3014,32 @@ $projectDescription = $_SERVER['PROJECT_DESCRIPTION'] ?? 'Accounting System';
|
||||
<label class="form-label">Item Picture</label>
|
||||
<input type="file" name="image" class="form-control" accept="image/*">
|
||||
</div>
|
||||
<div class="col-12">
|
||||
<hr>
|
||||
<h6 data-en="Promotion Details" data-ar="تفاصيل العرض">Promotion Details</h6>
|
||||
</div>
|
||||
<div class="col-md-4">
|
||||
<div class="form-check form-switch mt-4">
|
||||
<input class="form-check-input isPromotionToggleEdit" type="checkbox" name="is_promotion" value="1" <?= $item['is_promotion'] ? 'checked' : '' ?> id="isPromotionToggleEdit<?= $item['id'] ?>" data-id="<?= $item['id'] ?>">
|
||||
<label class="form-check-label" for="isPromotionToggleEdit<?= $item['id'] ?>" data-en="On Promotion?" data-ar="في العرض؟">On Promotion?</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-8">
|
||||
<div class="row g-3 promotionFieldsContainerEdit" id="promotionFieldsContainerEdit<?= $item['id'] ?>" style="display: <?= $item['is_promotion'] ? 'flex' : 'none' ?>;">
|
||||
<div class="col-md-4">
|
||||
<label class="form-label">Start Date</label>
|
||||
<input type="date" name="promotion_start" class="form-control" value="<?= $item['promotion_start'] ?>">
|
||||
</div>
|
||||
<div class="col-md-4">
|
||||
<label class="form-label">End Date</label>
|
||||
<input type="date" name="promotion_end" class="form-control" value="<?= $item['promotion_end'] ?>">
|
||||
</div>
|
||||
<div class="col-md-4">
|
||||
<label class="form-label">Percent (%)</label>
|
||||
<input type="number" step="0.01" name="promotion_percent" class="form-control" value="<?= (float)$item['promotion_percent'] ?>">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
@ -6043,6 +6082,32 @@ $projectDescription = $_SERVER['PROJECT_DESCRIPTION'] ?? 'Accounting System';
|
||||
<label class="form-label" data-en="Expiry Date" data-ar="تاريخ الانتهاء">Expiry Date</label>
|
||||
<input type="date" name="expiry_date" class="form-control">
|
||||
</div>
|
||||
<div class="col-12 mt-3">
|
||||
<hr>
|
||||
<h6 data-en="Promotion Details" data-ar="تفاصيل العرض">Promotion Details</h6>
|
||||
</div>
|
||||
<div class="col-md-4">
|
||||
<div class="form-check form-switch mt-4">
|
||||
<input class="form-check-input" type="checkbox" name="is_promotion" id="isPromotionToggle">
|
||||
<label class="form-check-label" for="isPromotionToggle" data-en="On Promotion?" data-ar="في العرض؟">On Promotion?</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-8">
|
||||
<div class="row g-3" id="promotionFieldsContainer" style="display: none;">
|
||||
<div class="col-md-4">
|
||||
<label class="form-label" data-en="Start Date" data-ar="تاريخ البدء">Start Date</label>
|
||||
<input type="date" name="promotion_start" class="form-control">
|
||||
</div>
|
||||
<div class="col-md-4">
|
||||
<label class="form-label" data-en="End Date" data-ar="تاريخ الانتهاء">End Date</label>
|
||||
<input type="date" name="promotion_end" class="form-control">
|
||||
</div>
|
||||
<div class="col-md-4">
|
||||
<label class="form-label" data-en="Percent (%)" data-ar="النسبة (%)">Percent (%)</label>
|
||||
<input type="number" step="0.01" name="promotion_percent" class="form-control" value="0.00">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
@ -6293,10 +6358,27 @@ document.addEventListener('DOMContentLoaded', function() {
|
||||
if (hasExpiryToggle && expiryDateContainer) {
|
||||
hasExpiryToggle.addEventListener('change', function() {
|
||||
expiryDateContainer.style.display = this.checked ? 'block' : 'none';
|
||||
if (!this.checked) {
|
||||
expiryDateContainer.querySelector('input').value = '';
|
||||
});
|
||||
}
|
||||
|
||||
const isPromotionToggle = document.getElementById('isPromotionToggle');
|
||||
const promotionFieldsContainer = document.getElementById('promotionFieldsContainer');
|
||||
if (isPromotionToggle && promotionFieldsContainer) {
|
||||
isPromotionToggle.addEventListener('change', function() {
|
||||
promotionFieldsContainer.style.display = this.checked ? 'flex' : 'none';
|
||||
});
|
||||
}
|
||||
|
||||
document.querySelectorAll('.isPromotionToggleEdit').forEach(toggle => {
|
||||
toggle.addEventListener('change', function() {
|
||||
const id = this.getAttribute('data-id');
|
||||
const container = document.getElementById('promotionFieldsContainerEdit' + id);
|
||||
if (container) {
|
||||
container.style.display = this.checked ? 'flex' : 'none';
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
// Status change logic for Paid Amount field
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user