Logic fixed

This commit is contained in:
2025-11-08 17:20:36 +03:00
parent b091a0e3fc
commit fb3aaefb98
3 changed files with 57 additions and 14 deletions

View File

@@ -39,7 +39,7 @@ let formData = {
const response = await fetch('/api/unit-personnel');
if (response.ok) {
const data = await response.json();
personnel = data.goodsManagers || [];
personnel = data.unitPersonnel || [];
} else {
error = 'Personel bilgileri yüklenemedi.';
}

View File

@@ -45,6 +45,7 @@
let units = [];
let personnel = [];
let goodsManagers = [];
let filteredGoodsManagers = [];
let formError = "";
let formSuccess = "";
let isSubmitting = false;
@@ -181,10 +182,8 @@
if (goodsManagersRes.ok) {
const goodsData = await goodsManagersRes.json();
goodsManagers =
goodsData.goodsManagers?.filter((gm) => gm.is_active) || [];
if (!formData.goods_manager_id && goodsManagers.length) {
formData.goods_manager_id = goodsManagers[0].id;
}
goodsData.unitPersonnel?.filter((gm) => gm.is_active) || [];
syncGoodsManagerSelection();
}
} catch (err) {
console.error("Yakıt verileri yüklenemedi:", err);
@@ -204,9 +203,40 @@
liters: "",
km: "",
personnel_id: "",
goods_manager_id: goodsManagers[0]?.id || "",
goods_manager_id: "",
notes: ""
};
syncGoodsManagerSelection("");
}
function getGoodsManagersByUnit(unitId) {
if (!unitId) return [];
const normalized = parseInt(unitId);
return goodsManagers.filter((manager) => manager.unit_id === normalized);
}
function syncGoodsManagerSelection(unitId = formData.unit_id) {
const candidates = getGoodsManagersByUnit(unitId);
filteredGoodsManagers = candidates;
if (!unitId || candidates.length === 0) {
formData.goods_manager_id = "";
return;
}
const hasCurrent = candidates.some(
(manager) =>
manager.id.toString() === (formData.goods_manager_id ?? "").toString()
);
if (!hasCurrent) {
formData.goods_manager_id = candidates[0].id.toString();
}
}
function handleUnitChange(event) {
formData.unit_id = event.target.value;
syncGoodsManagerSelection(formData.unit_id);
}
async function handleCreateSlip() {
@@ -1164,11 +1194,12 @@
id="unit_id"
class="form-select"
bind:value={formData.unit_id}
on:change={handleUnitChange}
required
>
<option value="">Birlik Seçin</option>
{#each units as unit}
<option value={unit.id}>{unit.name}</option>
<option value={unit.id.toString()}>{unit.name}</option>
{/each}
</select>
</div>
@@ -1248,14 +1279,26 @@
id="goods_manager_id"
class="form-select"
bind:value={formData.goods_manager_id}
disabled={
!formData.unit_id ||
filteredGoodsManagers.length === 0
}
required
>
<option value="">Mal Sorumlusu Seçin</option>
{#each goodsManagers as manager}
<option value={manager.id}
>{manager.rank} {manager.full_name}</option
>
{/each}
{#if !formData.unit_id}
<option value="">Önce birlik seçin</option>
{:else if filteredGoodsManagers.length === 0}
<option value="">
Bu birliğe atanmış personel yok
</option>
{:else}
<option value="">Mal Sorumlusu Seçin</option>
{#each filteredGoodsManagers as manager}
<option value={manager.id.toString()}>
{manager.rank} {manager.full_name}
</option>
{/each}
{/if}
</select>
</div>
<div class="form-group full-width">

View File

@@ -47,7 +47,7 @@ async function loadGoodsManagers() {
const response = await fetch('/api/unit-personnel');
if (response.ok) {
const data = await response.json();
personnel = data.goodsManagers || [];
personnel = data.unitPersonnel || [];
} else {
error = 'Personel bilgileri yüklenemedi.';
}