Implement dynamic payment columns for Table 1

This commit is contained in:
2026-07-03 15:28:09 +05:30
parent 8477dbcb82
commit 0ef83aa542
2 changed files with 39 additions and 70 deletions

View File

@@ -18,36 +18,12 @@ class DailySalePaymentReportModuleController extends Controller
{
$report_date = $request->input('report_date', Carbon::today()->toDateString());
// Helper function (Closure) to calculate payment breakdown from a collection of payments
$calculatePayments = function ($payments) {
$breakdown = [
'cash' => 0,
'card1' => 0,
'card2' => 0,
'card3' => 0,
'online_transfer' => 0,
'link_pay' => 0
];
foreach ($payments as $payment) {
$method = strtolower(trim($payment->paying_method));
if ($method == 'cash') {
$breakdown['cash'] += $payment->total_amount;
} elseif ($method == 'card 1' || $method == 'card1') {
$breakdown['card1'] += $payment->total_amount;
} elseif ($method == 'card 2' || $method == 'card2') {
$breakdown['card2'] += $payment->total_amount;
} elseif ($method == 'card 3' || $method == 'card3') {
$breakdown['card3'] += $payment->total_amount;
} elseif (str_contains($method, 'online')) {
$breakdown['online_transfer'] += $payment->total_amount;
} elseif (str_contains($method, 'link')) {
$breakdown['link_pay'] += $payment->total_amount;
}
}
return $breakdown;
};
// Fetch dynamic payment options using DB facade since the model is missing in this branch
$paymentOptions = DB::table('payment_options')->where('is_active', 1)
->orderBy('id')
->get(['id', 'name']);
// --- TABLE 1: Daily Sales ---
$sales = DB::table('sales')
->leftJoin('users', 'sales.user_id', '=', 'users.id')
->leftJoin('customers', 'sales.customer_id', '=', 'customers.id')
@@ -68,25 +44,27 @@ class DailySalePaymentReportModuleController extends Controller
$payments = DB::table('payments')
->where('sale_id', $sale->id)
->whereDate('created_at', $report_date)
->select('paying_method', DB::raw('SUM(amount) as total_amount'))
->groupBy('paying_method')
->select('payment_option_id', DB::raw('SUM(amount) as total_amount'))
->groupBy('payment_option_id')
->get();
$breakdown = $calculatePayments($payments);
$methodTotals = [];
foreach ($payments as $payment) {
$methodTotals[$payment->payment_option_id] = $payment->total_amount;
}
$sales_data[] = (object) array_merge([
$sales_data[] = (object) [
'date' => Carbon::parse($sale->date)->format('Y-m-d'),
'reference_no' => $sale->reference_no,
'cashier' => $sale->cashier ?? 'N/A',
'customer' => $sale->customer ?? 'N/A',
'grand_total' => $sale->grand_total,
'due_amount' => $sale->due_amount
], $breakdown);
'due_amount' => $sale->due_amount,
'methods' => $methodTotals
];
}
return view('dailysalepaymentreportmodule::index', compact('sales_data', 'report_date'));
return view('dailysalepaymentreportmodule::index', compact('sales_data', 'report_date', 'paymentOptions'));
}
/**