From 3384bcb2317754d88d9641ef7a714b06638410e7 Mon Sep 17 00:00:00 2001 From: Returnless Date: Wed, 22 Jun 2022 01:12:07 +0300 Subject: [PATCH] Added fields: di_shipping_costs, di_shipping_costs_vat. Added validating Invoices, Items. Implemented: shipping_amount, adjustment_positive, adjustment_negative. --- Model/Api/OrderCreditMemo.php | 34 +++++++++++++++++++++++++++++++++- Model/Api/OrderInfo.php | 3 +++ 2 files changed, 36 insertions(+), 1 deletion(-) diff --git a/Model/Api/OrderCreditMemo.php b/Model/Api/OrderCreditMemo.php index 7db1cff..34f38cb 100644 --- a/Model/Api/OrderCreditMemo.php +++ b/Model/Api/OrderCreditMemo.php @@ -113,6 +113,13 @@ public function createCreditMemo($requestParams) $order = $this->retHelper->searchOrder($requestParams['order_id']); + if (!$order->hasInvoices()) { + $response['code'] = 404; + $response['return_message'] = __("Order is not invoiced."); + + return $response; + } + $orderId = $order->getId(); if (!$orderId) { $response['code'] = 404; @@ -125,8 +132,25 @@ public function createCreditMemo($requestParams) $itemToCredit = []; $creditMemoData['shipping_amount'] = 0; + if (isset($requestParams['shipping_amount']) + && !empty($requestParams['shipping_amount']) + ) { + $creditMemoData['shipping_amount'] = (float) $requestParams['shipping_amount']; + } + $creditMemoData['adjustment_positive'] = 0; + if (isset($requestParams['adjustment_positive']) + && !empty($requestParams['adjustment_positive']) + ) { + $creditMemoData['adjustment_positive'] = (float) $requestParams['adjustment_positive']; + } + $creditMemoData['adjustment_negative'] = 0; + if (isset($requestParams['adjustment_negative']) + && !empty($requestParams['adjustment_negative']) + ) { + $creditMemoData['adjustment_negative'] = (float) $requestParams['adjustment_negative']; + } $creditMemoData['do_offline'] = 0; if (isset($requestParams['payment_refund']) @@ -152,10 +176,18 @@ public function createCreditMemo($requestParams) foreach ($requestParams['items'] as $requestItem) { $item = $this->retHelper->getItemBySku($order, $requestItem['sku']); + + if (!$item) { + $response['code'] = 404; + $response['return_message'] = __("Sku is not associated to Order."); + + return $response; + } + $orderItemId = $item->getId(); $itemToCredit[$orderItemId] = [ - 'qty' => $requestItem['qty'] + 'qty' => (float) $requestItem['qty'] ]; } $creditMemoData['items'] = $itemToCredit; diff --git a/Model/Api/OrderInfo.php b/Model/Api/OrderInfo.php index 2cd37dc..1b6fd57 100644 --- a/Model/Api/OrderInfo.php +++ b/Model/Api/OrderInfo.php @@ -182,6 +182,9 @@ public function getOrderInfoReturnless($incrementId) $orderInfo['customer']['phone'] = $shippingAddress->getTelephone(); } + $orderInfo['di_shipping_costs'] = $order->getShippingAmount(); + $orderInfo['di_shipping_costs_vat'] = $order->getShippingTaxAmount(); + $separateBundle = $this->config->getSeparateBundle(); $orderItems = $separateBundle ? $order->getAllItems() : $order->getAllVisibleItems();