From bc6f2de1b456c2e0b04cff315858230247e8b988 Mon Sep 17 00:00:00 2001 From: Glenn Hermans Date: Sat, 23 Oct 2021 13:18:29 +0200 Subject: [PATCH 1/5] fixed transactions --- .../Http/Controllers/Sales/TransactionController.php | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/Webkul/Admin/src/Http/Controllers/Sales/TransactionController.php b/packages/Webkul/Admin/src/Http/Controllers/Sales/TransactionController.php index f458e709d..13823e415 100644 --- a/packages/Webkul/Admin/src/Http/Controllers/Sales/TransactionController.php +++ b/packages/Webkul/Admin/src/Http/Controllers/Sales/TransactionController.php @@ -123,17 +123,17 @@ class TransactionController extends Controller $transactionData['payment_method'] = $request->payment_method; $transactionData['invoice_id'] = $invoice->id; $transactionData['order_id'] = $invoice->order_id; + $transactionData['amount'] = $request->amount; $transactionData['status'] = 'paid'; $transactionData['data'] = json_encode($data); $this->orderTransactionRepository->create($transactionData); - if ($invoice->base_grand_total == $request->amount) { + $transactionTotal = $this->orderTransactionRepository->where('invoice_id', $invoice->id)->sum('amount'); + + if ($transactionTotal >= $invoice->base_grand_total) { $this->orderRepository->updateOrderStatus($order, 'processing'); $update = $this->invoiceRepository->updateState($invoice, "paid"); - } else { - $this->orderRepository->updateOrderStatus($order, 'pending'); - $update = $this->invoiceRepository->updateState($invoice, "pending"); } session()->flash('success', trans('admin::app.sales.transactions.response.transaction-saved')); @@ -187,4 +187,4 @@ class TransactionController extends Controller return $detailsData; } -} \ No newline at end of file +} From 1ed243ebd5c0a1bd845934918a06adae32f7a1cb Mon Sep 17 00:00:00 2001 From: Glenn Hermans Date: Sat, 23 Oct 2021 13:20:38 +0200 Subject: [PATCH 2/5] Added transaction amount column --- ...3_125017_add_transaction_amount_column.php | 32 +++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 packages/Webkul/Sales/src/Database/Migrations/2021_10_23_125017_add_transaction_amount_column.php diff --git a/packages/Webkul/Sales/src/Database/Migrations/2021_10_23_125017_add_transaction_amount_column.php b/packages/Webkul/Sales/src/Database/Migrations/2021_10_23_125017_add_transaction_amount_column.php new file mode 100644 index 000000000..2615e84b9 --- /dev/null +++ b/packages/Webkul/Sales/src/Database/Migrations/2021_10_23_125017_add_transaction_amount_column.php @@ -0,0 +1,32 @@ +decimal('amount', 12, 4)->default(0)->nullable(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('order_transactions', function (Blueprint $table) { + $table->dropColumn('amount'); + }); + } +} From 10e7415472eb1464984d3603dec67d7c7eedac21 Mon Sep 17 00:00:00 2001 From: Glenn Hermans Date: Sat, 23 Oct 2021 14:33:02 +0200 Subject: [PATCH 3/5] Added method to check for pending invoices --- packages/Webkul/Sales/src/Models/Order.php | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/packages/Webkul/Sales/src/Models/Order.php b/packages/Webkul/Sales/src/Models/Order.php index 2b21ba4f4..42b79f1d0 100755 --- a/packages/Webkul/Sales/src/Models/Order.php +++ b/packages/Webkul/Sales/src/Models/Order.php @@ -273,6 +273,24 @@ class Order extends Model implements OrderContract return false; } + + /** + * Verify if a invoice is still unpaid + * + * @return bool + */ + public function hasOpenInvoice(): bool + { + $pendingInvoice = $this->invoices()->where('state', 'pending') + ->orWhere('state', 'pending_payment') + ->get(); + + if ($pendingInvoice) { + return true; + } + + return false; + } /** * Checks if order can be canceled or not From 65b0ff0ac1db1d26de0fa78abec04e6c1c493894 Mon Sep 17 00:00:00 2001 From: Glenn Hermans Date: Sat, 23 Oct 2021 14:34:34 +0200 Subject: [PATCH 4/5] fix #5047 --- packages/Webkul/Sales/src/Repositories/ShipmentRepository.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packages/Webkul/Sales/src/Repositories/ShipmentRepository.php b/packages/Webkul/Sales/src/Repositories/ShipmentRepository.php index c8bd5b0cf..c8bdf2225 100755 --- a/packages/Webkul/Sales/src/Repositories/ShipmentRepository.php +++ b/packages/Webkul/Sales/src/Repositories/ShipmentRepository.php @@ -158,6 +158,8 @@ class ShipmentRepository extends Repository if (isset($orderState)) { $this->orderRepository->updateOrderStatus($order, $orderState); + } elseif ($order->hasOpenInvoice()) { + $this->orderRepository->updateOrderStatus($order, 'pending_payment'); } else { $this->orderRepository->updateOrderStatus($order); } From 8dd1cb10374045f1034bbd24af9b7ea721acc627 Mon Sep 17 00:00:00 2001 From: Glenn Hermans Date: Sat, 23 Oct 2021 14:36:35 +0200 Subject: [PATCH 5/5] fixed state if shipment exists --- .../Http/Controllers/Sales/TransactionController.php | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/packages/Webkul/Admin/src/Http/Controllers/Sales/TransactionController.php b/packages/Webkul/Admin/src/Http/Controllers/Sales/TransactionController.php index 13823e415..2903384b4 100644 --- a/packages/Webkul/Admin/src/Http/Controllers/Sales/TransactionController.php +++ b/packages/Webkul/Admin/src/Http/Controllers/Sales/TransactionController.php @@ -132,8 +132,15 @@ class TransactionController extends Controller $transactionTotal = $this->orderTransactionRepository->where('invoice_id', $invoice->id)->sum('amount'); if ($transactionTotal >= $invoice->base_grand_total) { - $this->orderRepository->updateOrderStatus($order, 'processing'); - $update = $this->invoiceRepository->updateState($invoice, "paid"); + $shipments = $this->shipmentRepository->where('order_id', $invoice->order_id); + + if ($shipments) { + $this->orderRepository->updateOrderStatus($order, 'completed'); + } else { + $this->orderRepository->updateOrderStatus($order, 'processing'); + } + + $this->invoiceRepository->updateState($invoice, "paid"); } session()->flash('success', trans('admin::app.sales.transactions.response.transaction-saved'));