123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152 |
- <?php
- /**
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
- */
- namespace Magento\Sales\Service\V1;
- use Magento\Sales\Api\OrderRepositoryInterface;
- use Magento\Sales\Model\Order;
- use Magento\TestFramework\TestCase\WebapiAbstract;
- /**
- * Class CreditMemoCreateRefundTest
- */
- class CreditMemoCreateRefundTest extends WebapiAbstract
- {
- const RESOURCE_PATH = '/V1/creditmemo/refund';
- const SERVICE_READ_NAME = 'salesCreditmemoManagementV1';
- const SERVICE_VERSION = 'V1';
- /**
- * @var \Magento\Framework\ObjectManagerInterface
- */
- protected $objectManager;
- protected function setUp()
- {
- $this->objectManager = \Magento\TestFramework\Helper\Bootstrap::getObjectManager();
- }
- /**
- * @magentoApiDataFixture Magento/Sales/_files/invoice.php
- */
- public function testInvoke()
- {
- /** @var \Magento\Sales\Model\Order $order */
- $orderCollection = $this->objectManager->get(\Magento\Sales\Model\ResourceModel\Order\Collection::class);
- $order = $orderCollection->getFirstItem();
- $items = [];
- if (TESTS_WEB_API_ADAPTER == self::ADAPTER_REST) {
- $items = $this->getItemsForRest($order);
- } else {
- $items = $this->getItemsForSoap($order);
- }
- $serviceInfo = [
- 'rest' => [
- 'resourcePath' => self::RESOURCE_PATH,
- 'httpMethod' => \Magento\Framework\Webapi\Rest\Request::HTTP_METHOD_POST,
- ],
- 'soap' => [
- 'service' => self::SERVICE_READ_NAME,
- 'serviceVersion' => self::SERVICE_VERSION,
- 'operation' => self::SERVICE_READ_NAME.'refund',
- ],
- ];
- $data = [
- 'order_id' => $order->getId(),
- 'subtotal' => $order->getSubtotal(),
- 'grand_total' => $order->getGrandTotal(),
- 'base_grand_total' => $order->getBaseGrandTotal(),
- 'base_shipping_amount' => $order->getBaseShippingAmount(),
- 'shipping_address_id' => $order->getShippigAddressId(),
- 'billing_address_id' => $order->getBillingAddressId(),
- 'invoiceId' => $order->getInvoiceCollection()->getFirstItem()->getId(),
- 'adjustment' => null,
- 'adjustment_negative' => null,
- 'adjustment_positive' => null,
- 'base_adjustment' => null,
- 'base_adjustment_negative' => null,
- 'base_adjustment_positive' => null,
- 'base_currency_code' => null,
- 'base_discount_amount' => null,
- 'base_discount_tax_compensation_amount' => null,
- 'base_shipping_discount_tax_compensation_amnt' => null,
- 'base_shipping_incl_tax' => null,
- 'base_shipping_tax_amount' => null,
- 'base_subtotal' => null,
- 'base_subtotal_incl_tax' => null,
- 'base_tax_amount' => null,
- 'base_to_global_rate' => null,
- 'base_to_order_rate' => null,
- 'created_at' => null,
- 'creditmemo_status' => null,
- 'discount_amount' => null,
- 'discount_description' => null,
- 'email_sent' => null,
- 'entity_id' => null,
- 'global_currency_code' => null,
- 'discount_tax_compensation_amount' => null,
- 'increment_id' => null,
- 'invoice_id' => null,
- 'order_currency_code' => null,
- 'shipping_amount' => null,
- 'shipping_discount_tax_compensation_amount' => null,
- 'shipping_incl_tax' => null,
- 'shipping_tax_amount' => null,
- 'state' => null,
- 'store_currency_code' => null,
- 'store_id' => null,
- 'store_to_base_rate' => null,
- 'store_to_order_rate' => null,
- 'subtotal_incl_tax' => null,
- 'tax_amount' => null,
- 'transaction_id' => null,
- 'updated_at' => null,
- 'items' => $items,
- ];
- $result = $this->_webApiCall(
- $serviceInfo,
- ['creditmemo' => $data, 'offline_requested' => true]
- );
- $this->assertNotEmpty($result);
- $order = $this->objectManager->get(OrderRepositoryInterface::class)->get($order->getId());
- $this->assertEquals(Order::STATE_CLOSED, $order->getState());
- }
- private function getItemsForRest($order)
- {
- $items = [];
- /** @var \Magento\Sales\Model\Order\Item $orderItem */
- foreach ($order->getAllItems() as $orderItem) {
- $items[] = [
- 'order_item_id' => $orderItem->getId(),
- 'qty' => $orderItem->getQtyInvoiced(),
- 'price' => $orderItem->getPrice(),
- 'row_total' => $orderItem->getRowTotal(),
- 'entity_id' => null,
- ];
- }
- return $items;
- }
- private function getItemsForSoap($order)
- {
- $items = [];
- /** @var \Magento\Sales\Model\Order\Item $orderItem */
- foreach ($order->getAllItems() as $orderItem) {
- $items[] = array_merge($orderItem->getData(), [
- 'order_item_id' => $orderItem->getId(),
- 'qty' => $orderItem->getQtyInvoiced(),
- 'price' => $orderItem->getPrice(),
- 'row_total' => $orderItem->getRowTotal(),
- 'entity_id' => null,
- ]);
- }
- return $items;
- }
- }
|