diff --git a/src/lib/components/MonthlyFuelReportContent.svelte b/src/lib/components/MonthlyFuelReportContent.svelte
index 08c3a38..bb83174 100644
--- a/src/lib/components/MonthlyFuelReportContent.svelte
+++ b/src/lib/components/MonthlyFuelReportContent.svelte
@@ -23,10 +23,19 @@
availableYears.push(currentYear - i);
}
+ let initialLoadDone = false;
+
onMount(async () => {
await loadFuelData();
+ initialLoadDone = true;
});
+ // Watch for year changes and reload data
+ $: if (initialLoadDone && selectedYear) {
+ loadFuelData();
+ expandedMonths = new Set();
+ }
+
async function loadFuelData() {
if (!user) {
error = 'Kullanıcı bilgisi bulunamadı.';
@@ -38,10 +47,6 @@
error = '';
try {
- // Get approved fuel slips for this goods manager for the selected year
- const startDate = `${selectedYear}-01-01`;
- const endDate = `${selectedYear}-12-31`;
-
const url = `/api/fuel-slips?manager_id=${user.id}&status=approved`;
const response = await fetch(url);
@@ -55,15 +60,12 @@
const slipDate = new Date(slip.date);
return slipDate.getFullYear() === selectedYear;
})
- .sort((a, b) => new Date(b.date) - new Date(a.date)); // Sort by date descending
-
- console.log(`✅ Loaded ${fuelData.length} fuel slips for year ${selectedYear}`);
+ .sort((a, b) => new Date(b.date) - new Date(a.date));
} else {
error = 'Yakıt verileri yüklenemedi.';
}
} catch (err) {
- console.error('Load fuel data error:', err);
- error = 'Bağlantı hatası.';
+ error = `Bağlantı hatası: ${err.message}`;
} finally {
loading = false;
}
@@ -75,7 +77,7 @@
} else {
expandedMonths.add(monthIndex);
}
- expandedMonths = expandedMonths; // Trigger reactivity
+ expandedMonths = expandedMonths;
}
function getMonthData(monthIndex) {
@@ -114,13 +116,34 @@
return getMonthData(monthIndex).length;
}
- $: monthlyData = Array.from({length: 12}, (_, i) => ({
- month: i,
- data: getMonthData(i),
- total: getMonthTotal(i),
- count: getSlipCount(i),
- isExpanded: expandedMonths.has(i)
- }));
+ function getMonthDataSummary() {
+ const months = ['Ocak', 'Şubat', 'Mart', 'Nisan', 'Mayıs', 'Haziran', 'Temmuz', 'Ağustos', 'Eylül', 'Ekim', 'Kasım', 'Aralık'];
+ return months.map((month, index) => ({
+ month,
+ count: getSlipCount(index),
+ total: getMonthTotal(index)
+ })).filter(m => m.count > 0);
+ }
+
+ // Reactive statement that rebuilds when fuelData or expandedMonths changes
+ $: monthlyData = (() => {
+ const months = [];
+
+ // Show all 12 months for the selected year
+ for (let i = 11; i >= 0; i--) {
+ const data = getMonthData(i);
+ const monthData = {
+ month: i,
+ data: data,
+ total: getMonthTotal(i),
+ count: data.length,
+ isExpanded: expandedMonths.has(i)
+ };
+ months.push(monthData);
+ }
+
+ return months;
+ })();
@@ -171,68 +194,66 @@
{#each monthlyData as month (month.month)}
- {#if !isMonthInFuture(month.month)}
-
-
-
- {#if month.isExpanded && month.count > 0}
-
-
-
-
-
- | S.No |
- Araç Plakası |
- Tarih |
- Yakıt Cinsi |
- Miktar |
- Teslim Alan |
- Teslim Eden |
-
-
-
- {#each month.data.sort((a, b) => new Date(a.date) - new Date(b.date)) as slip, index}
-
- | {index + 1} |
- {slip.vehicle_info?.plate || '-'} |
- {formatDate(slip.date)} |
- {getFuelTypeLabel(slip.fuel_type)} |
- {formatLiters(slip.liters)} |
- {slip.personnel_info?.rank} {slip.personnel_info?.full_name || '-'} |
- {slip.fuel_manager_info?.full_name || '-'} |
-
- {/each}
-
-
+
+
+ {#if month.isExpanded && month.count > 0}
+
+
+
+
+
+ | S.No |
+ Araç Plakası |
+ Tarih |
+ Yakıt Cinsi |
+ Miktar |
+ Teslim Alan |
+ Teslim Eden |
+
+
+
+ {#each month.data.sort((a, b) => new Date(a.date) - new Date(b.date)) as slip, index}
+
+ | {index + 1} |
+ {slip.vehicle_info?.plate || '-'} |
+ {formatDate(slip.date)} |
+ {getFuelTypeLabel(slip.fuel_type)} |
+ {formatLiters(slip.liters)} |
+ {slip.personnel_info?.rank} {slip.personnel_info?.full_name || '-'} |
+ {slip.fuel_manager_info?.full_name || '-'} |
+
+ {/each}
+
+
+
{/if}
+
{/each}
{/if}
@@ -350,8 +371,9 @@
gap: 2rem;
padding: 1.5rem;
margin-bottom: 2rem;
- background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
- color: white;
+ background: #E0E7FF;
+ color: #4338CA;
+ border: 1px solid #C7D2FE;
}
.summary-item {
diff --git a/src/routes/api/fuel-slips/+server.js b/src/routes/api/fuel-slips/+server.js
index 3f07993..9196ee4 100644
--- a/src/routes/api/fuel-slips/+server.js
+++ b/src/routes/api/fuel-slips/+server.js
@@ -16,6 +16,7 @@ export async function GET({ request, url }) {
const status = searchParams.get('status');
const manager_id = searchParams.get('manager_id');
const fuel_manager_id = searchParams.get('fuel_manager_id');
+
return new Promise((resolve) => {
const db = getDatabase();
@@ -41,9 +42,14 @@ export async function GET({ request, url }) {
params.push(fuel_manager_id);
}
+
+
// Tarihe göre ters sırala
query += ' ORDER BY created_at DESC';
+ console.log(`🔍 API Query: ${query}`);
+ console.log(`📋 API Parameters:`, params);
+
db.all(query, params, (err, rows) => {
db.close();
@@ -53,6 +59,8 @@ export async function GET({ request, url }) {
return;
}
+ console.log(`📊 Database returned ${rows.length} rows`);
+
// JSON string olarak saklanan alanları parse et
const fuelSlips = rows.map(row => ({
...row,
@@ -62,6 +70,16 @@ export async function GET({ request, url }) {
fuel_manager_info: row.fuel_manager_info ? JSON.parse(row.fuel_manager_info) : null
}));
+ console.log(`✅ Processed ${fuelSlips.length} fuel slips for API response`);
+ console.log(`📋 Fuel slips summary:`, fuelSlips.map(s => ({
+ id: s.id,
+ date: s.date,
+ goods_manager_id: s.goods_manager_id,
+ status: s.status,
+ liters: s.liters,
+ vehicle: s.vehicle_info?.plate
+ })));
+
resolve(json({ fuelSlips }));
});
});