mirror of
https://gitlab.com/CIEFWorldwideSdnBhd/exchange-2.0.git
synced 2026-08-26 07:53:58 +00:00
Merge branch 'dillon/74-admin-workflow-2-20250228' into vapor/development
This commit is contained in:
@@ -106,6 +106,7 @@ class CreateBookingPaymentProcessor
|
||||
* @param string|null $voucherCode
|
||||
* @param string|null $bankCode
|
||||
* @param string $email
|
||||
* @param bool $checkSysRecordedOutstanding
|
||||
* @return Transaction
|
||||
* @throws MalformedRequestException
|
||||
*/
|
||||
|
||||
+12
-9
@@ -7,7 +7,7 @@ use App\Classes\General\Abstracts\AbstractControllerLogic;
|
||||
use App\Classes\Modules\Questionnaires\Standards\Rules\CanFetchQuestion;
|
||||
use App\Classes\ValueObjects\Constants\ApprovalStatus;
|
||||
use App\Classes\Modules\Bookings\Services\FetchesBooking;
|
||||
use App\Http\Resources\BookingBaseResource;
|
||||
use App\Http\Resources\BookingAdminWorkflowResource;
|
||||
use App\Models\Booking;
|
||||
use App\Models\KeyValuePair;
|
||||
use Carbon\Carbon;
|
||||
@@ -75,13 +75,16 @@ class FetchAdminWF1688BookingLogic extends AbstractControllerLogic
|
||||
$booking = Booking::where('service_id', $serviceId)
|
||||
->where('status', ApprovalStatus::APPROVED)
|
||||
->whereNotIn('id', $excludedBookingIds)
|
||||
->whereHas('bills', function ($query) {
|
||||
$query->whereHas('groupTransaction', function ($query) {
|
||||
$query->whereHas('group', function ($query) {
|
||||
$query->whereDoesntHave('billGroup')->whereIn('issuer', [2]);
|
||||
});
|
||||
});
|
||||
->whereHas('transactions', function ($query) {
|
||||
$query->payments()->whereIn('status', [ApprovalStatus::PENDING_VERIFICATION, ApprovalStatus::APPROVED, ApprovalStatus::COMPLETED]);
|
||||
})
|
||||
// ->whereHas('bills', function ($query) {
|
||||
// $query->whereHas('groupTransaction', function ($query) {
|
||||
// $query->whereHas('group', function ($query) {
|
||||
// $query->whereDoesntHave('billGroup')->whereIn('issuer', [2]);
|
||||
// });
|
||||
// });
|
||||
// })
|
||||
->where('created_at', '>=', $timeAgo)
|
||||
->latest()
|
||||
->first();
|
||||
@@ -103,9 +106,9 @@ class FetchAdminWF1688BookingLogic extends AbstractControllerLogic
|
||||
// ]);
|
||||
|
||||
// return responseJson([
|
||||
// 'booking' => new BookingBaseResource($booking)
|
||||
// 'booking' => new BookingAdminWorkflowResource($booking)
|
||||
// ]);
|
||||
|
||||
return $this->resourceResponse(new BookingBaseResource($booking));
|
||||
return $this->resourceResponse(new BookingAdminWorkflowResource($booking));
|
||||
}
|
||||
}
|
||||
|
||||
+2
-2
@@ -7,7 +7,7 @@ use App\Classes\General\Abstracts\AbstractControllerLogic;
|
||||
use App\Classes\Modules\Questionnaires\Standards\Rules\CanFetchQuestion;
|
||||
use App\Classes\ValueObjects\Constants\BookingAttributeNames;
|
||||
use App\Classes\Modules\Bookings\Services\FetchesBooking;
|
||||
use App\Http\Resources\BookingBaseResource;
|
||||
use App\Http\Resources\BookingAdminWorkflowResource;
|
||||
use App\Http\Resources\BookingResource;
|
||||
use App\Models\Booking;
|
||||
use ErrorException;
|
||||
@@ -76,7 +76,7 @@ class FetchAdminWFModelAttributesLogic extends AbstractControllerLogic
|
||||
// 'total_amount' =>$transaction->currency->short_code . ' ' . number_format((float)$transaction->amount, 2, '.', '')
|
||||
// ]);
|
||||
|
||||
return $this->resourceResponse(new BookingBaseResource($booking));
|
||||
return $this->resourceResponse(new BookingAdminWorkflowResource($booking));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
+4
-4
@@ -8,7 +8,7 @@ use App\Classes\Modules\Questionnaires\Standards\Rules\CanFetchQuestion;
|
||||
use App\Classes\Modules\Bookings\Services\FetchesBooking;
|
||||
use App\Classes\ValueObjects\Constants\ApprovalStatus;
|
||||
use App\Classes\ValueObjects\Constants\TransactionType;
|
||||
use App\Http\Resources\BookingBaseResource;
|
||||
use App\Http\Resources\BookingAdminWorkflowResource;
|
||||
use App\Http\Resources\BookingResource;
|
||||
use App\Models\KeyValuePair;
|
||||
use Carbon\Carbon;
|
||||
@@ -87,13 +87,13 @@ class FetchAdminWFPendingApprovalPOLogic extends AbstractControllerLogic
|
||||
|
||||
markedProcessing($booking, 'approve_po_admin_workflow_processing');
|
||||
|
||||
// $result = new BookingBaseResource($booking);
|
||||
// $result = new BookingAdminWorkflowResource($booking);
|
||||
// return responseJson([
|
||||
// 'booking' => $result,
|
||||
// ]);
|
||||
// return $booking ? responseJson(new BookingBaseResource($booking)) : responseJson(null, 'No booking found', 404);
|
||||
// return $booking ? responseJson(new BookingAdminWorkflowResource($booking)) : responseJson(null, 'No booking found', 404);
|
||||
|
||||
return $this->resourceResponse(new BookingBaseResource($booking));
|
||||
return $this->resourceResponse(new BookingAdminWorkflowResource($booking));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
+3
-3
@@ -8,7 +8,7 @@ use App\Classes\Modules\Questionnaires\Standards\Rules\CanFetchQuestion;
|
||||
use App\Classes\Modules\Bookings\Services\FetchesBooking;
|
||||
use App\Classes\ValueObjects\Constants\ApprovalStatus;
|
||||
use App\Classes\ValueObjects\Constants\TransactionType;
|
||||
use App\Http\Resources\BookingBaseResource;
|
||||
use App\Http\Resources\BookingAdminWorkflowResource;
|
||||
use App\Models\KeyValuePair;
|
||||
use Carbon\Carbon;
|
||||
use App\Models\Booking;
|
||||
@@ -84,13 +84,13 @@ class FetchAdminWFPendingFillPOLogic extends AbstractControllerLogic
|
||||
|
||||
markedProcessing($booking, 'fill_po_admin_workflow_processing');
|
||||
|
||||
// $result = new BookingBaseResource($booking);
|
||||
// $result = new BookingAdminWorkflowResource($booking);
|
||||
// return responseJson([
|
||||
// 'booking' => $result,
|
||||
// ]);
|
||||
// return $booking ? responseJson(new BookingResource($booking)) : responseJson(null, 'No booking found', 404);
|
||||
|
||||
return $this->resourceResponse(new BookingBaseResource($booking));
|
||||
return $this->resourceResponse(new BookingAdminWorkflowResource($booking));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
+2
-2
@@ -13,7 +13,7 @@ use App\Classes\ValueObjects\Constants\BookingAttributeNames;
|
||||
use Illuminate\Http\Resources\Json\JsonResource;
|
||||
use Carbon\Carbon;
|
||||
|
||||
class BookingBaseResource extends JsonResource
|
||||
class BookingAdminWorkflowResource extends JsonResource
|
||||
{
|
||||
/**
|
||||
* Transform the resource into an array.
|
||||
@@ -30,7 +30,7 @@ class BookingBaseResource extends JsonResource
|
||||
'bank' => new BankResource($this->bank),
|
||||
'service' => new ServiceTypeResource($this->service),
|
||||
'marking' => $this->marking,
|
||||
// 'amount' => $this->fix_amount,
|
||||
'amount' => $this->fix_amount,
|
||||
// 'floating_amount' => floatval((App()->make(CalculatesBookingFloatingAmount::class))->execute($this->resource, $this->fix_currency_id)),
|
||||
'paid_amount' => floatval((App()->make(CalculatesBookingPayableAmount::class))->execute($this->resource, $this->fix_currency_id)) - floatval((App()->make(CalculatesBookingRefundAmount::class))->execute($this->resource, $this->fix_currency_id)),
|
||||
// 'outstanding_amount' => floatval((App()->make(CalculatesBookingOutstanding::class))->execute($this->resource)),
|
||||
@@ -128,7 +128,7 @@ class QAWorkFlowSeeder extends Seeder
|
||||
[
|
||||
'question_number' => '1688_order_verify',
|
||||
'question_title' => 'Order Amount (CNY)',
|
||||
'question_description' => 'Please key in the order amount',
|
||||
'question_description' => 'Please confirm whether the order amount on 1688 matches the total order amount',
|
||||
'question_' => 'Order Amount',
|
||||
'question_type' => QAType::FLOAT_MONEY,
|
||||
'next_nested_question' => '1688_order_verification',
|
||||
@@ -296,7 +296,7 @@ class QAWorkFlowSeeder extends Seeder
|
||||
[
|
||||
'question_number' => '1688_underpaid_order_2',
|
||||
'question_title' => 'Underpaid Order',
|
||||
'question_description' => 'Insufficient wallet balance. Refund request to be sent',
|
||||
'question_description' => 'Insufficient wallet balance. Refund request sent.',
|
||||
'question_type' => QAType::MULTIPLE_CHOICES,
|
||||
'is_start' => false,
|
||||
'is_end' => false,
|
||||
@@ -316,16 +316,16 @@ class QAWorkFlowSeeder extends Seeder
|
||||
// ['display_text' => 'Done', 'value' => '1688_issue_submit', 'next_question_number' => '1688_issue_submit'],
|
||||
// ],
|
||||
// 'group' => '1688',
|
||||
// ],
|
||||
// ],
|
||||
[
|
||||
'question_number' => '1688_overpaid_order',
|
||||
'question_title' => 'Overpaid Order',
|
||||
'question_description' => 'Exceeded amount to be refunded to customer’s wallet',
|
||||
'question_description' => 'A refund request has been sent for the excess amount',
|
||||
'question_type' => QAType::MULTIPLE_CHOICES,
|
||||
'is_start' => false,
|
||||
'is_end' => false,
|
||||
'answer_options' => [
|
||||
['display_text' => 'Next', 'value' => '1688_overpaid_proceed_order', 'next_question_number' => '1688_overpaid_proceed_order'],
|
||||
['display_text' => 'Proceed', 'value' => '1688_overpaid_proceed_order', 'next_question_number' => '1688_overpaid_proceed_order'],
|
||||
],
|
||||
'group' => '1688',
|
||||
],
|
||||
|
||||
+3
-3
@@ -4,11 +4,11 @@
|
||||
<div class="row m-l-15 m-r-5 p-t-10 b-a align-items-center pointer shadow bg-white rounded b-white">
|
||||
<div class="col-12">
|
||||
<div class="row m-b-10">
|
||||
<div class="col-2">{{ item.id }} <br> {{ item.created_at_with_time }} <br> {{ item.source_email }}</div>
|
||||
<div class="col-2 text-break">{{ item.id }} <br> {{ item.created_at_with_time }} <br> {{ item.source_email }}</div>
|
||||
<div class="col-1">{{ item.questionnaire.version }} <br> {{ item.questionnaire.description }}</div>
|
||||
<div class="col-2">{{ item.question_title }} <br> Time(s): {{ item.time }} </div>
|
||||
<div class="col-2 text-break">{{ item.question_title }} <br> Time(s): {{ item.time }} </div>
|
||||
<div class="col-1">{{ parsedAnswer === 'go_back' ? '' : item.answer }}</div>
|
||||
<div class="col-2">{{ parsedAnswer }}</div>
|
||||
<div class="col-2 text-break">{{ parsedAnswer }}</div>
|
||||
<div class="col-1" style="display: flex; flex-wrap: nowrap; gap: 5px;" v-if="item.documentsList != null && item.documentsList.length > 1" >
|
||||
<div
|
||||
v-for="document in item.documentsList"
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
<div class="col-2">{{ item.question_title }}</div>
|
||||
<div class="col-1">{{ item.answer }}</div>
|
||||
<div class="col-1">{{ item.answer_value }}</div>
|
||||
<div class="col-2">{{ item.source_email }}</div>
|
||||
<div class="col-2 text-break">{{ item.source_email }}</div>
|
||||
<div class="col-1">{{ item.time }}</div>
|
||||
<div class="col-1">{{ item.created_at_with_time }}</div>
|
||||
<div class="col parentContainer position-static">
|
||||
|
||||
+3
-3
@@ -5,9 +5,9 @@
|
||||
<div class="col-12">
|
||||
<div class="row m-b-10">
|
||||
<div class="col-1">{{ item.id }}</div>
|
||||
<div class="col-2">{{ item.question_title }}</div>
|
||||
<div class="col-1">{{ parsedAnswer === 'go_back' ? '' : item.answer }}</div>
|
||||
<div class="col-2">{{ parsedAnswer }}</div>
|
||||
<div class="col-2 text-break">{{ item.question_title }}</div>
|
||||
<div class="col-1 text-break">{{ parsedAnswer === 'go_back' ? '' : item.answer }}</div>
|
||||
<div class="col-2 text-break">{{ parsedAnswer }}</div>
|
||||
|
||||
<div class="col-1" style="display: flex; flex-wrap: nowrap; gap: 5px;" v-if="item.documentsList != null && item.documentsList.length > 1" >
|
||||
<div
|
||||
|
||||
@@ -333,12 +333,15 @@
|
||||
<div class="row justify-content-center align-items-center text-center">
|
||||
<h6 class="font-heading all-caps bold">Total Paid: </h6>
|
||||
<h6>
|
||||
<!-- <span v-if="question.answer && question.question_number === '1688_order_verification'" class="bold m-r-5"
|
||||
:class="[{'text-danger' : (Math.round((parseFloat(question.answer.answer) + Number.EPSILON) * 1000) / 1000).toFixed(3) !== (Math.round((externalApiResponse.data.paid_amount + Number.EPSILON) * 1000) / 1000).toFixed(3)},
|
||||
{'text-success' : (Math.round((parseFloat(question.answer.answer) + Number.EPSILON) * 1000) / 1000).toFixed(3) === (Math.round((externalApiResponse.data.paid_amount + Number.EPSILON) * 1000) / 1000).toFixed(3)}]">{{(Math.round(( parseFloat(question.answer.answer) + Number.EPSILON) * 1000) / 1000).toFixed(3)}}/</span> -->
|
||||
<span class="text-primary bold m-l-5">{{(Math.round((externalApiResponse.data.paid_amount + Number.EPSILON) * 1000) / 1000).toFixed(3)}} {{externalApiResponse.data.fixed_currency.short_code}}</span>
|
||||
</h6>
|
||||
</div>
|
||||
<div class="row justify-content-center align-items-center text-center">
|
||||
<h6 class="font-heading all-caps bold">Total (Booking): </h6>
|
||||
<h6>
|
||||
<span class="text-primary bold m-l-5">{{(Math.round((externalApiResponse.data.amount + Number.EPSILON) * 1000) / 1000).toFixed(3)}} {{externalApiResponse.data.fixed_currency.short_code}}</span>
|
||||
</h6>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user