diff --git a/packages/Webkul/Sales/src/Repositories/InvoiceRepository.php b/packages/Webkul/Sales/src/Repositories/InvoiceRepository.php index 4ed72f12b..8b667c997 100755 --- a/packages/Webkul/Sales/src/Repositories/InvoiceRepository.php +++ b/packages/Webkul/Sales/src/Repositories/InvoiceRepository.php @@ -83,7 +83,7 @@ class InvoiceRepository extends Repository * @param array $data * @return \Webkul\Sales\Contracts\Invoice */ - public function create(array $data) + public function create(array $data, $invoiceState = null, $orderState = null) { DB::beginTransaction(); @@ -93,11 +93,17 @@ class InvoiceRepository extends Repository $order = $this->orderRepository->find($data['order_id']); $totalQty = array_sum($data['invoice']['items']); + + if (isset($invoiceState)) { + $state = $invoiceState; + } else { + $state = "paid"; + } $invoice = $this->model->create([ 'order_id' => $order->id, 'total_qty' => $totalQty, - 'state' => 'paid', + 'state' => $state, 'base_currency_code' => $order->base_currency_code, 'channel_currency_code' => $order->channel_currency_code, 'order_currency_code' => $order->order_currency_code, @@ -195,7 +201,11 @@ class InvoiceRepository extends Repository $this->orderRepository->collectTotals($order); - $this->orderRepository->updateOrderStatus($order); + if (isset($orderState)) { + $this->orderRepository->updateOrderStatus($order, $orderState); + } else { + $this->orderRepository->updateOrderStatus($order); + } Event::dispatch('sales.invoice.save.after', $invoice); } catch (\Exception $e) { @@ -256,4 +266,4 @@ class InvoiceRepository extends Repository return $invoice; } -} \ No newline at end of file +} diff --git a/packages/Webkul/Sales/src/Repositories/OrderRepository.php b/packages/Webkul/Sales/src/Repositories/OrderRepository.php index 462c94eb3..598708204 100755 --- a/packages/Webkul/Sales/src/Repositories/OrderRepository.php +++ b/packages/Webkul/Sales/src/Repositories/OrderRepository.php @@ -304,18 +304,22 @@ class OrderRepository extends Repository * @param \Webkul\Sales\Contracts\Order $order * @return void */ - public function updateOrderStatus($order) + public function updateOrderStatus($order, $orderState = null) { - $status = 'processing'; + if (!empty($orderState)) { + $status = $orderState; + } else { + $status = "processing"; - if ($this->isInCompletedState($order)) { - $status = 'completed'; - } + if ($this->isInCompletedState($order)) { + $status = 'completed'; + } - if ($this->isInCanceledState($order)) { - $status = 'canceled'; - } elseif ($this->isInClosedState($order)) { - $status = 'closed'; + if ($this->isInCanceledState($order)) { + $status = 'canceled'; + } elseif ($this->isInClosedState($order)) { + $status = 'closed'; + } } $order->status = $status;