update export refund

This commit is contained in:
Jia Sheng
2024-07-04 23:03:43 +08:00
parent 416ec42ebc
commit 659a48d7ad
+51 -31
View File
@@ -440,26 +440,54 @@ Route::get('/pending_orders', function(){
Route::get('/approve_refunds', function(Request $request){
$type = $request->query('type');
$payments = Transaction::where('type', TransactionType::PAYMENT)->where('owner_type', Booking::class)->whereIn('status', [ApprovalStatus::APPROVED, ApprovalStatus::COMPLETED, ApprovalStatus::REFUNDED])
->whereHas('transactions', function ($query) use ($type) {
$query->where('type', TransactionType::REFUND)->where('status', ApprovalStatus::APPROVED);
if (str_contains($type, 'partial')) {
$query->whereColumn('original_amount', '!=','transactions.original_amount');
} else {
$query->whereColumn('original_amount', 'transactions.original_amount');
}
});
if (str_contains($type, 'post')) {
$payments->whereHas('transactions', function($query) {
$query->where('type', TransactionType::SUPPLIER_REFUND);
$approve_refunds = Transaction::where('type', TransactionType::REFUND)->whereIn('status', [ApprovalStatus::APPROVED, ApprovalStatus::COMPLETED]);
if (str_contains($type, 'partial')) {
$approve_refunds->whereHas('owner', function ($q) {
$q->whereColumn('original_amount', '!=', 'transactions.original_amount');
});
} else {
$payments->whereDoesntHave('transactions', function($query) {
$query->where('type', TransactionType::SUPPLIER_REFUND);
$approve_refunds->whereHas('owner', function ($q) {
$q->whereColumn('original_amount', 'transactions.original_amount');
});
}
if (str_contains($type, 'post')) {
$approve_refunds->whereHas('owner', function ($q) {
$q->whereHas('transactions', function($query) {
$query->where('type', TransactionType::SUPPLIER_REFUND);
});
});
} else {
$approve_refunds->whereHas('owner', function ($q) {
$q->whereDoesntHave('transactions', function($query) {
$query->where('type', TransactionType::SUPPLIER_REFUND);
});
});
}
// $payments = Transaction::where('type', TransactionType::PAYMENT)->where('owner_type', Booking::class)->whereIn('status', [ApprovalStatus::APPROVED, ApprovalStatus::COMPLETED, ApprovalStatus::REFUNDED])
// ->whereHas('transactions', function ($query) use ($type) {
// $query->where('type', TransactionType::REFUND)->where('status', ApprovalStatus::APPROVED);
// if (str_contains($type, 'partial')) {
// $query->whereColumn('original_amount', '!=','transactions.original_amount');
// } else {
// $query->whereColumn('original_amount', 'transactions.original_amount');
// }
// });
// if (str_contains($type, 'post')) {
// $payments->whereHas('transactions', function($query) {
// $query->where('type', TransactionType::SUPPLIER_REFUND);
// });
// } else {
// $payments->whereDoesntHave('transactions', function($query) {
// $query->where('type', TransactionType::SUPPLIER_REFUND);
// });
// }
echo '<table>';
echo '<tr>';
echo '<td>No.</td>';
@@ -478,12 +506,11 @@ Route::get('/approve_refunds', function(Request $request){
echo '<td>Bank Holder Name</td>';
echo '<td>Note Remark</td>';
echo '</tr>';
foreach ($payments->orderBy('created_at', 'DESC')->get() as $index => $payment){
$booking = $payment->owner;
$original_refunds = floatval((App()->make(CalculatesBookingRefundAmount::class))->calculateRefundAmount($payment, $booking->fix_currency_id));
$refunds = $original_refunds / $payment->currency_rate;
foreach ($approve_refunds->orderBy('created_at', 'DESC')->get() as $index => $refund){
$payment = $refund->owner;
$booking = $refund->owner->owner;
if(!$booking instanceof Booking){
dd($payment);
dd($refund);
}
$bankType = str::length($booking->bank->holder_name) > 4 ? 'Company' : 'Personal';
@@ -492,8 +519,7 @@ Route::get('/approve_refunds', function(Request $request){
$bankType = str_word_count($booking->bank->holder_name) > 4 ? 'Company' : 'Personal';
}
$refundTransaction = $payment->transactions()->refunds()->whereIn('status', [ApprovalStatus::APPROVED, ApprovalStatus::COMPLETED])->first();
$remark = $refundTransaction->original_amount === $payment->original_amount ? 'Fully Refund' : 'Partial Refund';
$remark = $refund->original_amount === $refund->owner->original_amount ? 'Fully Refund' : 'Partial Refund';
if (str_contains($type, 'post')) {
$remark = 'Post ' . $remark;
@@ -501,25 +527,19 @@ Route::get('/approve_refunds', function(Request $request){
$remark = 'Pre ' . $remark;
}
$refundTransactions = $payment->transactions()->refunds()->whereIn('status', [ApprovalStatus::APPROVED, ApprovalStatus::COMPLETED])->get();
$noteRemark = '';
foreach ($refundTransactions as $refund) {
$noteRemark .= implode(', ', $refund->remarks->pluck('content')->toArray()) . ' ';
}
$noteRemark = implode(', ', $refund->remarks->pluck('content')->toArray());
echo '<tr>';
echo '<td>'.($index + 1).'.</td>';
echo '<td>'.$payment->created_at->format('d-M-y').'</td>';
echo '<td>'.$refund->created_at->format('d-M-y').'</td>';
echo '<td>'.$booking->marking.'</td>';
echo '<td>'.\App\Classes\ValueObjects\Constants\PaymentMethodType::PAYMENT_METHODS_ID[$payment->payment_method].'</td>';
echo '<td>'.$payment->currency->short_code.'</td>';
echo '<td>'.number_format($refunds, 5, '.', '').'</td>';
echo '<td>'.number_format($refund->amount, 5, '.', '').'</td>';
echo '<td>'.$booking->company->reference.'</td>';
echo '<td></td>';
echo '<td>'.$payment->original_currency->short_code.'</td>';
echo '<td>'.number_format($original_refunds, 5, '.', '').'</td>';
echo '<td>'.number_format($refund->original_amount, 5, '.', '').'</td>';
echo '<td></td>';
echo '<td>'.$remark.'</td>';
echo '<td>'.$booking->service->name.'</td>';