mirror of
https://gitlab.com/CIEFWorldwideSdnBhd/shipping-portal.git
synced 2026-08-30 09:54:04 +00:00
89 lines
3.5 KiB
PHP
89 lines
3.5 KiB
PHP
<?php
|
|
|
|
namespace App\Classes\Jobs\Commands\V2;
|
|
|
|
|
|
use Carbon\Carbon;
|
|
use Illuminate\Bus\Queueable;
|
|
use Illuminate\Contracts\Queue\ShouldQueue;
|
|
use Illuminate\Foundation\Bus\Dispatchable;
|
|
use Illuminate\Queue\InteractsWithQueue;
|
|
use Illuminate\Queue\SerializesModels;
|
|
use App\Classes\Modules\Billplzs\Services\GetBillplzBill;
|
|
use App\Classes\Modules\Orders\Processors\UpdateDoFromVTPortalProcessor;
|
|
use App\Classes\Modules\Orders\Processors\UpdateDoFromYDPortalProcessor;
|
|
use App\Classes\Modules\Transactions\Services\FetchesTransaction;
|
|
use App\Classes\Modules\Transactions\Services\UpdatesTransactionStatus;
|
|
use App\Classes\ValueObjects\Constants\ApprovalStatus;
|
|
use App\Classes\ValueObjects\Constants\PaymentMethodType;
|
|
use App\Classes\ValueObjects\Constants\TransactionType;
|
|
use App\Models\Transaction;
|
|
use Illuminate\Support\Facades\Log;
|
|
|
|
class SuccessUpdatePaymentStatusV2CommandJob implements ShouldQueue
|
|
{
|
|
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
|
|
|
|
public function handle()
|
|
{
|
|
Log::info(Carbon::now() . ': Start job - Success Updated Payment Status.');
|
|
$start = new Carbon();
|
|
|
|
// ini_set('memory_limit', '-1');
|
|
// $this->outputArray = [];
|
|
|
|
$approvalStatusArray = ApprovalStatus::APPROVAL_STATUS_ID;
|
|
|
|
$transactions = Transaction::where('type', TransactionType::PAYMENT)
|
|
->where('payment_method', PaymentMethodType::PAYMENT_GATEWAY)
|
|
->whereIn('status', [ApprovalStatus::APPROVED, ApprovalStatus::COMPLETED])
|
|
->get();
|
|
|
|
foreach ($transactions as $payment) {
|
|
$invoice = $payment->owner ?? null;
|
|
if (!$invoice) {
|
|
Log::info('Payment has no owner. Payment ID: ' . $payment->id);
|
|
continue;
|
|
}
|
|
|
|
$packingList = $invoice->owner ?? null;
|
|
if (!$packingList) {
|
|
Log::info('Invoice has no owner. Invoice ID: ' . $invoice->id);
|
|
continue;
|
|
}
|
|
|
|
$order = $packingList->owner;
|
|
if (!$invoice) {
|
|
Log::info('PackingList has no owner. PackingList ID: ' . $packingList->id);
|
|
continue;
|
|
}
|
|
|
|
if ($invoice->status == ApprovalStatus::APPROVED) {
|
|
|
|
$totalPaidAmount = $invoice->transactions->where('type', TransactionType::PAYMENT)->whereIn('status', [ApprovalStatus::APPROVED, ApprovalStatus::COMPLETED])->sum('amount');
|
|
|
|
if(($invoice->amount - $totalPaidAmount) < 0.01) {
|
|
(App()->make(UpdatesTransactionStatus::class))->execute($invoice, ApprovalStatus::COMPLETED);
|
|
|
|
$packingList->status = ApprovalStatus::APPROVED;
|
|
$packingList->save();
|
|
|
|
if(app()->environment('production')){
|
|
(App()->make(UpdateDoFromVTPortalProcessor::class))->execute($packingList);
|
|
(App()->make(UpdateDoFromYDPortalProcessor::class))->execute($packingList);
|
|
}
|
|
|
|
dump('Updated invoice ' . $invoice->id . '. Order: '. $order->reference);
|
|
} else {
|
|
Log::info('Failed Update invoice ' . $invoice->id . ' because payment not enough. Invoice Amount: ' . $invoice->amount . ' . Paid Amount: ' . $totalPaidAmount . ' . Order: '. $order->reference);
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
$end = new Carbon();
|
|
$elapsedTime = $start->diff($end)->format('%H:%I:%S');
|
|
Log::info(Carbon::now() . ': End job - Success Updated Payment Status. ElapsedTime: ' . $elapsedTime . '.');
|
|
}
|
|
}
|