finishing to dev
All checks were successful
Build, Push and Deploy / build-and-push (push) Successful in 3m41s
Gitea Actions Demo / Explore-Gitea-Actions (push) Successful in 16s
Build, Push and Deploy / deploy-staging (push) Successful in 42s
Build, Push and Deploy / deploy-production (push) Has been skipped

This commit is contained in:
2026-05-14 22:50:44 +07:00
parent 2fabdf8fc9
commit 8307b9e66d
212 changed files with 2451 additions and 4493 deletions

View File

@@ -6,11 +6,10 @@
use App\Traits\DateFilterTrait;
use Illuminate\Support\Facades\DB;
use App\Http\Controllers\Controller;
use App\Traits\DateRangeTrait;
class AcnooLossProfitHistoryReportController extends Controller
{
use DateFilterTrait, DateRangeTrait;
use DateFilterTrait;
public function index(Request $request)
{
@@ -23,56 +22,39 @@ public function index(Request $request)
}
$duration = $request->custom_days ?: 'today';
[$filter_from_date, $filter_to_date] = $this->applyDateRange($duration, $request->from_date, $request->to_date);
$salesQuery = DB::table('sales')
->select(
DB::raw('"saleDate"::date as date'),
DB::raw("
CASE
WHEN \"lossProfit\" >= 0 THEN 'positive'
ELSE 'negative'
END as profit_type
"),
DB::raw('DATE("saleDate") as date'),
DB::raw('SUM(actual_total_amount) as total_sales'),
DB::raw('SUM("lossProfit") as total_sale_income')
)
->where('business_id', $businessId)
->when($branchId, fn ($q) =>
$q->where('branch_id', $branchId)
$q->where('branch_id', $branchId)
)
->groupBy(
DB::raw('"saleDate"::date'),
DB::raw("
CASE
WHEN \"lossProfit\" >= 0 THEN 'positive'
ELSE 'negative'
END
")
);
->groupBy(DB::raw('DATE("saleDate")'));
$this->applyDateFilter($salesQuery, $duration, 'saleDate', $request->from_date, $request->to_date);
$dailySales = $salesQuery->get();
$sale_datas = $dailySales->map(fn ($sale) => (object)[
'type' => 'Sale',
'date' => $sale->date,
'profit_type' => $sale->profit_type,
'total_sales' => $sale->total_sales,
'total_incomes' => $sale->total_sale_income,
]);
$incomeQuery = DB::table('incomes')
->select(
DB::raw('"incomeDate"::date as date'),
DB::raw('DATE("incomeDate") as date'),
DB::raw('SUM(amount) as total_incomes')
)
->where('business_id', $businessId)
->when($branchId, fn ($q) =>
$q->where('branch_id', $branchId)
)
->groupBy(DB::raw('"incomeDate"::date'));
->groupBy(DB::raw('DATE("incomeDate")'));
$this->applyDateFilter($incomeQuery, $duration, 'incomeDate', $request->from_date, $request->to_date);
$dailyIncomes = $incomeQuery->get();
@@ -95,10 +77,7 @@ public function index(Request $request)
$mergedIncomeSaleData->push($income);
}
// multiple sale rows handle
$salesOfDate = $sale_datas->where('date', $date);
foreach ($salesOfDate as $sale) {
if ($sale = $sale_datas->firstWhere('date', $date)) {
$mergedIncomeSaleData->push($sale);
}
}
@@ -108,14 +87,14 @@ public function index(Request $request)
if (moduleCheck('HrmAddon')) {
$payrollQuery = DB::table('payrolls')
->select(
DB::raw('"date"::date as date'),
DB::raw('DATE("date") as date'),
DB::raw('SUM(amount) as total_payrolls')
)
->where('business_id', $businessId)
->when($branchId, fn ($q) =>
$q->where('branch_id', $branchId)
)
->groupBy(DB::raw('"date"::date'));
->groupBy(DB::raw('DATE("date")'));
$this->applyDateFilter($payrollQuery, $duration, 'date', $request->from_date, $request->to_date);
$dailyPayrolls = $payrollQuery->get();
@@ -123,14 +102,14 @@ public function index(Request $request)
$expenseQuery = DB::table('expenses')
->select(
DB::raw('"expenseDate"::date as date'),
DB::raw('DATE("expenseDate") as date'),
DB::raw('SUM(amount) as total_expenses_only')
)
->where('business_id', $businessId)
->when($branchId, fn ($q) =>
$q->where('branch_id', $branchId)
)
->groupBy(DB::raw('"expenseDate"::date'));
->groupBy(DB::raw('DATE("expenseDate")'));
$this->applyDateFilter($expenseQuery, $duration, 'expenseDate', $request->from_date, $request->to_date);
$dailyExpenses = $expenseQuery->get();
@@ -166,6 +145,34 @@ public function index(Request $request)
$totalExpenses = $mergedExpenseData->sum('total_expenses');
$netProfit = $grossIncomeProfit - $totalExpenses;
$allTimeSales = DB::table('sales')
->where('business_id', $businessId)
->when($branchId, fn ($q) => $q->where('branch_id', $branchId))
->sum('actual_total_amount');
$allTimeIncomes = DB::table('incomes')
->where('business_id', $businessId)
->when($branchId, fn ($q) => $q->where('branch_id', $branchId))
->sum('amount');
$allTimePayrolls = moduleCheck('HrmAddon')
? DB::table('payrolls')
->where('business_id', $businessId)
->when($branchId, fn ($q) => $q->where('branch_id', $branchId))
->sum('amount')
: 0;
$allTimeExpensesOnly = DB::table('expenses')
->where('business_id', $businessId)
->when($branchId, fn ($q) => $q->where('branch_id', $branchId))
->sum('amount');
$allTimeSaleProfit = DB::table('sales')->where('business_id', $businessId)->when($branchId, fn ($q) => $q->where('branch_id', $branchId))->sum('lossProfit');
$cardGrossProfit = $allTimeIncomes + $allTimeSaleProfit;
$totalCardExpenses = $allTimePayrolls + $allTimeExpensesOnly;
$cardNetProfit = $cardGrossProfit - $totalCardExpenses;
return view('business::loss-profit-histories.index', compact(
'mergedIncomeSaleData',
'mergedExpenseData',
@@ -173,9 +180,9 @@ public function index(Request $request)
'grossIncomeProfit',
'totalExpenses',
'netProfit',
'duration',
'filter_from_date',
'filter_to_date'
'cardGrossProfit',
'totalCardExpenses',
'cardNetProfit'
));
}