|
|
@@ -36,13 +36,26 @@ class OwnerStoreOutFeeReportService implements SettlementBillReportInterface
|
|
|
$end = Carbon::parse($this->reportDate)->endOfMonth()->toDateString();
|
|
|
$details =
|
|
|
DB::table('owner_store_out_fee_details')
|
|
|
- ->leftJoin('owner_fee_details', 'owner_fee_detail_id', '=', 'owner_fee_details.id')
|
|
|
- ->selectRaw("DATE_FORMAT(owner_store_out_fee_details.created_at,'%Y-%m') as counting_month,
|
|
|
- owner_store_out_fee_details.work_name,unit_id,unit_price,sum(amount) as amounts ,
|
|
|
- owner_store_out_fee_details.owner_id,owner_fee_detail_id,
|
|
|
- sum(owner_fee_details.work_fee) as work_fee,step")
|
|
|
+ ->leftJoin('owner_fee_details', 'owner_store_out_fee_details.owner_fee_detail_id', '=', 'owner_fee_details.id')
|
|
|
+ ->leftJoin('owner_price_operations', 'owner_store_out_fee_details.owner_price_operation_id', '=', 'owner_price_operations.id')
|
|
|
+ ->selectRaw("
|
|
|
+ DATE_FORMAT(owner_store_out_fee_details.created_at,'%Y-%m') as counting_month,
|
|
|
+ owner_store_out_fee_details.unit_id,
|
|
|
+ owner_store_out_fee_details.unit_price,
|
|
|
+ sum(owner_store_out_fee_details.amount) as amounts ,
|
|
|
+ owner_store_out_fee_details.owner_id,
|
|
|
+ owner_store_out_fee_details.owner_fee_detail_id,
|
|
|
+ owner_store_out_fee_details.owner_price_operation_id,
|
|
|
+ owner_store_out_fee_details.step,
|
|
|
+ sum(owner_fee_details.work_fee) as work_fee,
|
|
|
+ owner_price_operations.name
|
|
|
+ ")
|
|
|
->whereBetween('owner_store_out_fee_details.created_at', [$start, $end])
|
|
|
- ->groupBy('counting_month', 'owner_store_out_fee_details.owner_id', 'owner_store_out_fee_details.work_name', 'unit_id', 'unit_price', 'step')
|
|
|
+ ->groupBy('counting_month',
|
|
|
+ 'owner_store_out_fee_details.owner_id',
|
|
|
+ 'owner_store_out_fee_details.step',
|
|
|
+ 'owner_price_operations.id'
|
|
|
+ )
|
|
|
->get();
|
|
|
$reports = [];
|
|
|
foreach ($details as $detail) {
|
|
|
@@ -53,18 +66,19 @@ class OwnerStoreOutFeeReportService implements SettlementBillReportInterface
|
|
|
->where('counting_month', $counting_month)->first();
|
|
|
$reports[] = [
|
|
|
'owner_bill_report_id' => $ownerBillReport->id ?? null,
|
|
|
- 'owner_price_operation_id' => null,//$detail->ownerFeeDetail->ownerPriceOperation->id??null,
|
|
|
+ 'owner_price_operation_id' => $detail->owner_price_operation_id,
|
|
|
'owner_id' => $detail->owner_id,
|
|
|
'counting_month' => $counting_month,
|
|
|
'step' => $detail->step,
|
|
|
'unit_id' => $detail->unit_id,
|
|
|
'unit_price' => $detail->unit_price,
|
|
|
'amount' => $detail->amounts,
|
|
|
- 'work_name' => $detail->work_name,
|
|
|
'fee' => $detail->work_fee,
|
|
|
];
|
|
|
}
|
|
|
- OwnerStoreOutFeeReport::query()->insertOrIgnore($reports);
|
|
|
+ foreach (array_chunk($reports, 1000) as $reports_chunked) {
|
|
|
+ OwnerStoreOutFeeReport::query()->insertOrIgnore($reports_chunked);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
public function getSql($owner_id, $counting_month): Builder
|
|
|
@@ -95,17 +109,22 @@ class OwnerStoreOutFeeReportService implements SettlementBillReportInterface
|
|
|
$fee_total = $archived->information['fee_total'];
|
|
|
} else {
|
|
|
$reports = OwnerStoreOutFeeReport::query()
|
|
|
- ->with('unit')
|
|
|
+ ->with(['unit:id,name'])
|
|
|
->where('owner_id', $kvPairs['owner_id'])
|
|
|
->where('counting_month', $kvPairs['counting_month'])
|
|
|
- ->orderBy('work_name')
|
|
|
+ ->orderBy('owner_price_operation_id')
|
|
|
->get();
|
|
|
|
|
|
- $work_name_fee_total = DB::table('owner_store_out_fee_reports')
|
|
|
- ->selectRaw("work_name,sum(fee) as fee")
|
|
|
+ $work_name_fee_total = OwnerStoreOutFeeReport::query()
|
|
|
+ ->leftJoin('owner_price_operations', 'owner_store_out_fee_reports.owner_price_operation_id', '=', 'owner_price_operations.id')
|
|
|
+ ->selectRaw("
|
|
|
+ sum(owner_store_out_fee_reports.fee) as fee,
|
|
|
+ owner_price_operations.name,
|
|
|
+ owner_price_operations.id
|
|
|
+ ")
|
|
|
->where('owner_id', $kvPairs['owner_id'])
|
|
|
->where('counting_month', $kvPairs['counting_month'])
|
|
|
- ->groupBy('work_name')
|
|
|
+ ->groupBy('owner_price_operations.name')
|
|
|
->get();
|
|
|
|
|
|
$fee_total = OwnerStoreOutFeeReport::query()
|