feat(accounting): 優化會計報表與公共事業費 UI,並統一全域日期處理格式
All checks were successful
Koori-ERP-Deploy-System / deploy-demo (push) Successful in 1m7s
Koori-ERP-Deploy-System / deploy-production (push) Has been skipped

This commit is contained in:
2026-01-20 17:45:38 +08:00
parent 89183ca124
commit 9a50bbf887
9 changed files with 251 additions and 120 deletions

View File

@@ -7,13 +7,14 @@ use App\Models\UtilityFee;
use Illuminate\Http\Request;
use Inertia\Inertia;
use Illuminate\Support\Carbon;
use Illuminate\Pagination\LengthAwarePaginator;
class AccountingReportController extends Controller
{
public function index(Request $request)
{
$dateStart = $request->input('date_start', Carbon::now()->startOfMonth()->toDateString());
$dateEnd = $request->input('date_end', Carbon::now()->endOfMonth()->toDateString());
$dateStart = $request->input('date_start', Carbon::now()->toDateString());
$dateEnd = $request->input('date_end', Carbon::now()->toDateString());
// 1. Get Purchase Orders (Completed or Received that are ready for accounting)
$purchaseOrders = PurchaseOrder::with(['vendor'])
@@ -23,7 +24,7 @@ class AccountingReportController extends Controller
->map(function ($po) {
return [
'id' => 'PO-' . $po->id,
'date' => $po->created_at->toDateString(),
'date' => Carbon::parse($po->created_at)->timezone(config('app.timezone'))->toDateString(),
'source' => '採購單',
'category' => '進貨支出',
'item' => $po->vendor->name ?? '未知廠商',
@@ -39,7 +40,7 @@ class AccountingReportController extends Controller
->map(function ($fee) {
return [
'id' => 'UF-' . $fee->id,
'date' => $fee->transaction_date,
'date' => $fee->transaction_date->format('Y-m-d'),
'source' => '公共事業費',
'category' => $fee->category,
'item' => $fee->description ?: $fee->category,
@@ -54,6 +55,19 @@ class AccountingReportController extends Controller
->sortByDesc('date')
->values();
// 3. Manual Pagination
$perPage = $request->input('per_page', 10);
$page = $request->input('page', 1);
$offset = ($page - 1) * $perPage;
$paginatedRecords = new LengthAwarePaginator(
$allRecords->slice($offset, $perPage)->values(),
$allRecords->count(),
$perPage,
$page,
['path' => $request->url(), 'query' => $request->query()]
);
$summary = [
'total_amount' => $allRecords->sum('amount'),
'purchase_total' => $purchaseOrders->sum('amount'),
@@ -62,19 +76,20 @@ class AccountingReportController extends Controller
];
return Inertia::render('Accounting/Report', [
'records' => $allRecords,
'records' => $paginatedRecords,
'summary' => $summary,
'filters' => [
'date_start' => $dateStart,
'date_end' => $dateEnd,
'per_page' => (int)$perPage,
],
]);
}
public function export(Request $request)
{
$dateStart = $request->input('date_start', Carbon::now()->startOfMonth()->toDateString());
$dateEnd = $request->input('date_end', Carbon::now()->endOfMonth()->toDateString());
$dateStart = $request->input('date_start', Carbon::now()->toDateString());
$dateEnd = $request->input('date_end', Carbon::now()->toDateString());
$purchaseOrders = PurchaseOrder::with(['vendor'])
->whereIn('status', ['received', 'completed'])