diff --git a/app/Classes/General/Eloquent/Filters/BillNo.php b/app/Classes/General/Eloquent/Filters/BillNo.php new file mode 100644 index 00000000..167dcd51 --- /dev/null +++ b/app/Classes/General/Eloquent/Filters/BillNo.php @@ -0,0 +1,20 @@ +where('bill_no', $value); + } + +} \ No newline at end of file diff --git a/app/Classes/Modules/PackingLists/Processors/FetchContainersUpdatesFromYdPortalProcessor.php b/app/Classes/Modules/PackingLists/Processors/FetchContainersUpdatesFromYdPortalProcessor.php index ecc99f4e..93ad4471 100644 --- a/app/Classes/Modules/PackingLists/Processors/FetchContainersUpdatesFromYdPortalProcessor.php +++ b/app/Classes/Modules/PackingLists/Processors/FetchContainersUpdatesFromYdPortalProcessor.php @@ -51,7 +51,7 @@ class FetchContainersUpdatesFromYdPortalProcessor foreach ($containers as $container) { $time_start = microtime(true); - $packingList = $container->packingLists()->random(); + $packingList = $container->packingLists()->first(); $trackingRequest = $this->fetchesDataFRomYDPortal->clientRequest('http://www.yd-wl.com/api/ApiTracking.ashx', 'GET', [ 'trakingno' => $packingList->reference @@ -108,6 +108,8 @@ class FetchContainersUpdatesFromYdPortalProcessor } } + dump($delayDate, $unstuffingDate); + if($delayDate){ $delayDate = $delayDate->addDays(2); $transport = $container->transports()->first(); diff --git a/app/Classes/Modules/PerfexCRM/Processors/TransactionToPerfexCRMProcessor.php b/app/Classes/Modules/PerfexCRM/Processors/TransactionToPerfexCRMProcessor.php index d7aeeff2..de12b30f 100644 --- a/app/Classes/Modules/PerfexCRM/Processors/TransactionToPerfexCRMProcessor.php +++ b/app/Classes/Modules/PerfexCRM/Processors/TransactionToPerfexCRMProcessor.php @@ -51,11 +51,11 @@ class TransactionToPerfexCRMProcessor PerfexCRMProjectStatus::IN_PROGRESS, [], [ - PerfexCRMTasks::TASK_1, - PerfexCRMTasks::TASK_POST_PAYMENT_1, - PerfexCRMTasks::TASK_POST_PAYMENT_2, - PerfexCRMTasks::TASK_POST_PAYMENT_3, - PerfexCRMTasks::TASK_POST_PAYMENT_4, +// PerfexCRMTasks::TASK_1, +// PerfexCRMTasks::TASK_POST_PAYMENT_1, +// PerfexCRMTasks::TASK_POST_PAYMENT_2, +// PerfexCRMTasks::TASK_POST_PAYMENT_3, +// PerfexCRMTasks::TASK_POST_PAYMENT_4, ] ); diff --git a/app/Classes/Modules/Transactions/ControllersLogic/ListMappableTransactionsLogic.php b/app/Classes/Modules/Transactions/ControllersLogic/ListMappableTransactionsLogic.php new file mode 100644 index 00000000..7fab513d --- /dev/null +++ b/app/Classes/Modules/Transactions/ControllersLogic/ListMappableTransactionsLogic.php @@ -0,0 +1,53 @@ + 'Retrieved Transactions', + 'message' => 'You have successfully retrieved a list of transactions' + ]; + } + + + /** @var ListsTransactions */ + private $listsTransactions; + + /** + * ListTransactionsLogic constructor. + * @param ListsTransactions $listsTransactions + */ + public function __construct(ListsTransactions $listsTransactions) + { + $this->listsTransactions = $listsTransactions; + } + + + + public function logic(Request $request) : JsonResponse + { + + $query = $this->listsTransactions->execute($this->listsTransactions->deserializeFilters($request->input('filters'))); + + return $this->collectionResponse(MappableTransactionResource::collection($query)); + + } + + + +} diff --git a/app/Classes/Modules/Transactions/Processors/CreatePaymentTransactionProcessor.php b/app/Classes/Modules/Transactions/Processors/CreatePaymentTransactionProcessor.php index 454ffaf9..568bc4fb 100644 --- a/app/Classes/Modules/Transactions/Processors/CreatePaymentTransactionProcessor.php +++ b/app/Classes/Modules/Transactions/Processors/CreatePaymentTransactionProcessor.php @@ -20,6 +20,7 @@ use App\Models\Wallet; use App\Classes\Modules\Orders\Processors\UpdateDoFromVTPortalProcessor; use App\Classes\Modules\Orders\Processors\UpdateDoFromYDPortalProcessor; use App\Classes\Modules\Transactions\Services\UpdatesTransactionStatus; +use Illuminate\Support\Facades\Log; class CreatePaymentTransactionProcessor { @@ -38,7 +39,7 @@ class CreatePaymentTransactionProcessor /** @var UpdatesWalletBalance */ private $updatesWalletBalance; - + /** @var UpdateDoFromVTPortalProcessor */ private $updateDoFromVTPortalProcessor; @@ -69,7 +70,7 @@ class CreatePaymentTransactionProcessor UpdateDoFromVTPortalProcessor $updateDoFromVTPortalProcessor, UpdateDoFromYDPortalProcessor $updateDoFromYDPortalProcessor, UpdatesTransactionStatus $updatesTransactionStatus - ) + ) { $this->generatesTransactionBillNumber = $generatesTransactionBillNumber; $this->createsPaymentTransaction = $createsPaymentTransaction; @@ -87,7 +88,8 @@ class CreatePaymentTransactionProcessor public function execute(Transaction $invoice, $payment_method, $bank_code) { $amount = $invoice->amount; - $company_module = $invoice->owner()->first()->owner()->first()->companyModule()->first(); + Log::info($invoice->owner); + $company_module = $invoice->owner->owner->companyModule()->first(); $approvalStatus = ApprovalStatus::PENDING_SUBMISSION; $billNumber = $this->generatesTransactionBillNumber->execute('PYMT-'); $payment_reference = null; @@ -97,12 +99,12 @@ class CreatePaymentTransactionProcessor // create billplz transaction $payment_method = PaymentMethodType::PAYMENT_GATEWAY; $billPlzBill = $this->createsBillplzBill->execute( - $company_module->name, + $company_module->name, (app()->environment(['production'])) ? $company_module->employees()->first()->email : 'uldvstar@gmail.com', 'This payment is for the invoice number . ' . $billNumber, $amount, - $billNumber, - $bank_code, + $billNumber, + $bank_code, true ); @@ -117,7 +119,7 @@ class CreatePaymentTransactionProcessor } $walletPaymentBillNumber = $this->generatesTransactionBillNumber->execute('PYMT-'); - + $transaction_object = new TransactionObject($walletPaymentBillNumber, TransactionType::PAYMENT, 1, $company_module->id, 1, PaymentMethodType::WALLET, $amount, $amount, 1, 1, 1, 0, 0, null, ApprovalStatus::APPROVED, [], ''); $transaction = $this->createsTransactionableTransaction->execute($wallet, $transaction_object); diff --git a/app/Classes/Notifications/InvoiceIssuedEmail.php b/app/Classes/Notifications/InvoiceIssuedEmail.php index f3cb4b97..8a5c90cc 100644 --- a/app/Classes/Notifications/InvoiceIssuedEmail.php +++ b/app/Classes/Notifications/InvoiceIssuedEmail.php @@ -6,7 +6,6 @@ namespace App\Classes\Notifications; use App\Classes\ValueObjects\Constants\ApprovalStatus; use App\Classes\ValueObjects\Constants\TransactionType; use App\Models\PackingList; -use App\Models\PasswordReset; use App\Models\User; use Illuminate\Notifications\Messages\MailMessage; use Illuminate\Support\Facades\Storage; @@ -39,7 +38,7 @@ class InvoiceIssuedEmail extends AbstractEmail return (new MailMessage) ->subject('Att: '.$this->user->name.' - Invoice for order no.'. $this->packingList->owner->reference) - ->attach(Storage::disk('documents')->get($invoiceDocument->file->file_info->original->file), [ + ->attach(Storage::disk('documents')->get($invoiceDocument->first()->file->file_info->original->file), [ 'as' => 'name.pdf', 'mime' => 'application/pdf', ])->view('emails.shipment.invoice', ['user' => $this->user, 'packingList' => $this->packingList]); diff --git a/app/Classes/Notifications/ShipmentDepartureEmail.php b/app/Classes/Notifications/ShipmentDepartureEmail.php index 8fab151d..44362d44 100644 --- a/app/Classes/Notifications/ShipmentDepartureEmail.php +++ b/app/Classes/Notifications/ShipmentDepartureEmail.php @@ -9,6 +9,7 @@ use App\Models\PackingList; use App\Models\PasswordReset; use App\Models\User; use Illuminate\Notifications\Messages\MailMessage; +use Illuminate\Support\Facades\Storage; class ShipmentDepartureEmail extends AbstractEmail { @@ -42,7 +43,7 @@ class ShipmentDepartureEmail extends AbstractEmail return (new MailMessage) ->subject('Your packages are on the way to malaysia - Invoice pending payment for order no.'. $this->packingList->owner->reference) - ->attach(Storage::disk('documents')->get($invoiceDocument->file->file_info->original->file), [ + ->attach(Storage::disk('documents')->get($invoiceDocument->first()->file->file_info->original->file), [ 'as' => 'name.pdf', 'mime' => 'application/pdf', ])->bcc(['email_test@cief-malaysia.com'])->view('emails.shipment.ETD', ['user' => $this->user, 'packingList' => $this->packingList]); diff --git a/app/Http/Controllers/Transactions/ListMappableTransactionsController.php b/app/Http/Controllers/Transactions/ListMappableTransactionsController.php new file mode 100644 index 00000000..abf83758 --- /dev/null +++ b/app/Http/Controllers/Transactions/ListMappableTransactionsController.php @@ -0,0 +1,20 @@ +execute($request); + } +} diff --git a/app/Http/Resources/MappableTransactionResource.php b/app/Http/Resources/MappableTransactionResource.php new file mode 100644 index 00000000..d69c145c --- /dev/null +++ b/app/Http/Resources/MappableTransactionResource.php @@ -0,0 +1,41 @@ +type === TransactionType::TOP_UP) { + $reference = $this->owner->owner->inviters()->withPivot('invitee_reference')->first()->pivot->invitee_reference; + } + + if($this->type === TransactionType::PAYMENT && $this->owner !== Wallet::class){ + $reference = $this->owner->owner->owner->reference; + } + + return [ + 'system' => 'SHIPPING_PORTAL', + 'type' => $this->type, + 'owner_type' => $this->owner_type, + 'owner_id'=> $this->id, + 'owner_reference'=> $reference, + ]; + } +} diff --git a/app/Http/Resources/OrderResource.php b/app/Http/Resources/OrderResource.php index 207231ee..8b72130a 100644 --- a/app/Http/Resources/OrderResource.php +++ b/app/Http/Resources/OrderResource.php @@ -7,6 +7,7 @@ use App\Classes\ValueObjects\Constants\OrderRoleTypes; use App\Classes\ValueObjects\Constants\PackingListType; use App\Classes\ValueObjects\Constants\TransactionType; use App\Classes\ValueObjects\Constants\TransportType; +use App\Models\Transaction; use Carbon\Carbon; use Illuminate\Http\Resources\Json\JsonResource; @@ -20,6 +21,8 @@ class OrderResource extends JsonResource */ public function toArray($request) { + $orderId = $this->id; + return [ 'id' => $this->id, 'reference' => $this->reference, @@ -47,7 +50,7 @@ class OrderResource extends JsonResource 'received_packages' => PackingListResource::collection($this->packingLists()->where('type', PackingListType::WAREHOUSE_RECEIVE_LIST)->whereHas('packages')->get()), ]; }), - 'invoices' => $this->whenLoaded('packingLists', function() { + 'invoices' => $this->whenLoaded('packingLists', function() use ($orderId) { return TransactionResource::collection($this->transactions()->whereNotIn('transactions.status', [0, 1])->where('transactions.type', TransactionType::SHIPPING_INVOICE)->get()); }), 'remarks' => RemarkResource::collection($this->remarks), diff --git a/app/Http/Resources/OrderV2Resource.php b/app/Http/Resources/OrderV2Resource.php index 7ca77149..c8b82e19 100644 --- a/app/Http/Resources/OrderV2Resource.php +++ b/app/Http/Resources/OrderV2Resource.php @@ -5,6 +5,7 @@ namespace App\Http\Resources; use App\Classes\ValueObjects\Constants\ApprovalStatus; use App\Classes\ValueObjects\Constants\OrderRoleTypes; use App\Classes\ValueObjects\Constants\PackingListType; +use App\Classes\ValueObjects\Constants\TransactionType; use App\Classes\ValueObjects\Constants\TransportType; use Carbon\Carbon; use Illuminate\Http\Resources\Json\JsonResource; @@ -30,7 +31,7 @@ class OrderV2Resource extends JsonResource 'address' => new AddressResource($this->addresses()->where('status', '=', ApprovalStatus::APPROVED)->first()), 'address_change_request' => new AddressResource($this->addressesPendingVerification()->first()), 'invoices' => $this->whenLoaded('packingLists', function() { - return TransactionResource::collection($this->transactions()->whereNotIn('transactions.status', [0, 1])->get()); + return TransactionResource::collection($this->transactions()->whereNotIn('transactions.status', [0, 1])->where('transactions.type', TransactionType::SHIPPING_INVOICE)->get()); }), 'remarks' => RemarkResource::collection($this->remarks), 'created_at' => $this->created_at->format('d-m-Y') diff --git a/app/Http/Resources/TransactionResource.php b/app/Http/Resources/TransactionResource.php index 9e9e5771..43540820 100644 --- a/app/Http/Resources/TransactionResource.php +++ b/app/Http/Resources/TransactionResource.php @@ -22,6 +22,7 @@ class TransactionResource extends JsonResource { return [ 'id' => $this->id, + 'owner_type' => $this->owner_type, 'order' => ($this->owner instanceof Transaction) ? new OrderResource($this->owner->owner->owner) : new OrderResource($this->owner->owner), 'documents' => DocumentResource::collection($this->documents), 'type' => (int) $this->type, diff --git a/app/Models/Transaction.php b/app/Models/Transaction.php index 33d47fb7..9983a2f4 100644 --- a/app/Models/Transaction.php +++ b/app/Models/Transaction.php @@ -103,6 +103,10 @@ class Transaction extends AbstractModel implements Documentable, Transactionable use SoftDeletes; use LogData; + protected $casts = [ + 'type' => 'int' + ]; + protected $table = 'transactions'; public function owner(): morphTo diff --git a/resources/assets/vue/components/paymentsBilling/elements/PaymentHistoryComponent.vue b/resources/assets/vue/components/paymentsBilling/elements/PaymentHistoryComponent.vue index a3ffd197..49869473 100644 --- a/resources/assets/vue/components/paymentsBilling/elements/PaymentHistoryComponent.vue +++ b/resources/assets/vue/components/paymentsBilling/elements/PaymentHistoryComponent.vue @@ -18,6 +18,12 @@ {{item.currency.short_code}} {{(Math.round((item.amount + Number.EPSILON) * 100) / 100).toFixed(2).toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",")}} +
Payment Date
Bill Number
+