[Refactor] Ubah format laporan
This commit is contained in:
parent
88207ea1fc
commit
97192bb05a
@ -57,15 +57,15 @@ class LaporanHelper
|
||||
$dataTerjual = $salesData->get($item->id);
|
||||
return [
|
||||
'nama_produk' => $item->nama,
|
||||
'jumlah_item_terjual' => (int) $dataTerjual->jumlah_item_terjual,
|
||||
'jumlah_item_terjual' => (int) $dataTerjual->jumlah_item_terjual, // Selalu int
|
||||
'berat_terjual' => $this->formatWeight($dataTerjual->berat_terjual),
|
||||
'pendapatan' => $this->formatCurrency($dataTerjual->pendapatan),
|
||||
];
|
||||
}
|
||||
|
||||
return [
|
||||
return [ // Untuk kosong, return dengan 0 (akan difilter nanti)
|
||||
'nama_produk' => $item->nama,
|
||||
'jumlah_item_terjual' => self::DEFAULT_DISPLAY,
|
||||
'jumlah_item_terjual' => 0,
|
||||
'berat_terjual' => self::DEFAULT_DISPLAY,
|
||||
'pendapatan' => self::DEFAULT_DISPLAY,
|
||||
];
|
||||
|
||||
@ -211,7 +211,7 @@ class ProdukController extends Controller
|
||||
$foto->delete();
|
||||
}
|
||||
|
||||
// Hapus produk (soft delete)
|
||||
$produk->items()->delete();
|
||||
$produk->delete();
|
||||
|
||||
DB::commit();
|
||||
|
||||
@ -24,7 +24,7 @@ class Item extends Model
|
||||
parent::boot();
|
||||
|
||||
static::creating(function ($item) {
|
||||
$prefix = 'ITM';
|
||||
$prefix = 'TMJC';
|
||||
$date = now()->format('Ymd');
|
||||
|
||||
// Cari item terakhir yg dibuat hari ini
|
||||
|
||||
@ -116,15 +116,25 @@ class LaporanService
|
||||
'berat_terjual' => $item->berat_terjual ? $this->helper->formatWeight($item->berat_terjual) : '-',
|
||||
'pendapatan' => $item->pendapatan ? $this->helper->formatCurrency($item->pendapatan) : '-',
|
||||
];
|
||||
})->filter(function ($item) {
|
||||
return $item['jumlah_item_terjual'] > 0;
|
||||
});
|
||||
|
||||
$paginatedFiltered = new \Illuminate\Pagination\LengthAwarePaginator(
|
||||
$detailItem->forPage($page, $perPage),
|
||||
$detailItem->count(),
|
||||
$perPage,
|
||||
$page,
|
||||
['path' => request()->url(), 'query' => request()->query()]
|
||||
);
|
||||
// --- Step 5: Assemble final response ---
|
||||
$filterInfo = $this->helper->buildProdukFilterInfo($tanggal, $params);
|
||||
|
||||
return [
|
||||
'filter' => $filterInfo,
|
||||
'rekap_harian' => $rekapHarian,
|
||||
'produk' => $detailItem,
|
||||
// 'produk' => $detailItem,
|
||||
'produk' => $paginatedFiltered->getCollection(),
|
||||
'pagination' => $this->helper->buildPaginationInfo($semuaProdukPaginated),
|
||||
];
|
||||
}
|
||||
@ -151,14 +161,27 @@ class LaporanService
|
||||
|
||||
$totals = $this->helper->calculateTotals($nampanTerjual);
|
||||
$semuaNampanPaginated = $this->helper->getAllNampanWithPagination($page, $perPage);
|
||||
$detailItem = $this->helper->mapNampanWithSalesData($semuaNampanPaginated, $nampanTerjual);
|
||||
// $detailItem = $this->helper->mapNampanWithSalesData($semuaNampanPaginated, $nampanTerjual);
|
||||
$filterInfo = $this->helper->buildNampanFilterInfo($tanggal, $params);
|
||||
$detailItem = $this->helper->mapNampanWithSalesData($semuaNampanPaginated, $nampanTerjual)
|
||||
->filter(function ($item) { // TAMBAH: Filter out kosong
|
||||
return $item['jumlah_item_terjual'] !== $this->helper::DEFAULT_DISPLAY && $item['jumlah_item_terjual'] > 0;
|
||||
});
|
||||
|
||||
// Rebuild paginator serupa seperti di atas
|
||||
$paginatedFiltered = new \Illuminate\Pagination\LengthAwarePaginator(
|
||||
$detailItem->forPage($page, $perPage),
|
||||
$detailItem->count(),
|
||||
$perPage,
|
||||
$page,
|
||||
['path' => request()->url(), 'query' => request()->query()]
|
||||
);
|
||||
|
||||
return [
|
||||
'filter' => $filterInfo,
|
||||
'rekap_harian' => $totals,
|
||||
'nampan' => $detailItem->values(),
|
||||
'pagination' => $this->helper->buildPaginationInfo($semuaNampanPaginated),
|
||||
'nampan' => $paginatedFiltered->getCollection(),
|
||||
'pagination' => $this->helper->buildPaginationInfo($paginatedFiltered),
|
||||
];
|
||||
}
|
||||
|
||||
@ -280,6 +303,8 @@ class LaporanService
|
||||
'berat_terjual' => LaporanHelper::DEFAULT_DISPLAY,
|
||||
'pendapatan' => LaporanHelper::DEFAULT_DISPLAY,
|
||||
];
|
||||
})->filter(function ($item) {
|
||||
return $item['jumlah_item_terjual'] > 0;
|
||||
});
|
||||
|
||||
$filterInfo = $this->helper->buildProdukFilterInfo($tanggal, $params);
|
||||
@ -335,6 +360,8 @@ class LaporanService
|
||||
'berat_terjual' => LaporanHelper::DEFAULT_DISPLAY,
|
||||
'pendapatan' => LaporanHelper::DEFAULT_DISPLAY,
|
||||
];
|
||||
})->filter(function ($item) {
|
||||
return $item['jumlah_item_terjual'] > 0;
|
||||
});
|
||||
|
||||
$filterInfo = $this->helper->buildNampanFilterInfo($tanggal, $params);
|
||||
|
||||
@ -33,11 +33,10 @@ class DatabaseSeeder extends Seeder
|
||||
User::factory(2)->create();
|
||||
Sales::factory(5)->create();
|
||||
|
||||
$kodeNampan = ['A', 'B'];
|
||||
foreach ($kodeNampan as $kode) {
|
||||
for ($i=0; $i < 4; $i++) {
|
||||
for ($i=0; $i <= 30; $i++) {
|
||||
if ($i != 13) {
|
||||
Nampan::factory()->create([
|
||||
'nama' => $kode . ($i + 1) // A1, A2, ... B4
|
||||
'nama' => 'A' . ($i + 1)
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
@ -113,7 +113,7 @@
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr v-else-if="!sortedNampan.length">
|
||||
<tr v-else-if="sortedNampan.length == 0">
|
||||
<td colspan="4" class="p-4 text-center">Tidak ada data untuk ditampilkan.</td>
|
||||
</tr>
|
||||
<template v-else v-for="item in sortedNampan" :key="item.nama_nampan">
|
||||
@ -151,6 +151,7 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<button @click="njir">njir</button>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
@ -159,6 +160,10 @@ import InputSelect from './InputSelect.vue';
|
||||
import InputField from './InputField.vue';
|
||||
import axios from 'axios';
|
||||
|
||||
const njir = ()=>{
|
||||
console.log(sortedNampan.value);
|
||||
|
||||
}
|
||||
// --- State ---
|
||||
const isExportOpen = ref(false);
|
||||
const exportDropdownRef = ref(null);
|
||||
|
||||
@ -279,10 +279,8 @@ async function deleteProduk() {
|
||||
products.value = products.value.filter((p) => p.id !== detail.value.id);
|
||||
deleting.value = false;
|
||||
showOverlay.value = false;
|
||||
alert("Produk berhasil dihapus!");
|
||||
} catch (err) {
|
||||
console.error("Gagal hapus produk:", err);
|
||||
alert("Gagal menghapus produk!");
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
Loading…
Reference in New Issue
Block a user