diff --git a/packages/Webkul/Admin/src/Resources/views/sales/orders/view.blade.php b/packages/Webkul/Admin/src/Resources/views/sales/orders/view.blade.php
index 892a8bff9..a2c6b6dc4 100755
--- a/packages/Webkul/Admin/src/Resources/views/sales/orders/view.blade.php
+++ b/packages/Webkul/Admin/src/Resources/views/sales/orders/view.blade.php
@@ -454,8 +454,14 @@
| {{ __('admin::app.sales.orders.total-due') }} |
+
- |
- {{ core()->formatBasePrice($order->base_total_due) }} |
+
+ @if($order->status !== 'canceled')
+ {{ core()->formatBasePrice($order->base_total_due) }} |
+ @else
+ {{ core()->formatBasePrice(0.00) }} |
+ @endif
diff --git a/packages/Webkul/Shop/src/Resources/views/customers/account/orders/view.blade.php b/packages/Webkul/Shop/src/Resources/views/customers/account/orders/view.blade.php
index 6eff6e167..78d34d5d1 100755
--- a/packages/Webkul/Shop/src/Resources/views/customers/account/orders/view.blade.php
+++ b/packages/Webkul/Shop/src/Resources/views/customers/account/orders/view.blade.php
@@ -194,8 +194,14 @@
| {{ __('shop::app.customer.account.order.view.total-due') }} |
+
- |
- {{ core()->formatPrice($order->total_due, $order->order_currency_code) }} |
+
+ @if($order->status !== 'canceled')
+ {{ core()->formatPrice($order->total_due, $order->order_currency_code) }} |
+ @else
+ {{ core()->formatPrice(0.00, $order->order_currency_code) }} |
+ @endif
diff --git a/packages/Webkul/Velocity/src/Resources/views/shop/customers/account/orders/view.blade.php b/packages/Webkul/Velocity/src/Resources/views/shop/customers/account/orders/view.blade.php
index df4f38a46..13882277c 100644
--- a/packages/Webkul/Velocity/src/Resources/views/shop/customers/account/orders/view.blade.php
+++ b/packages/Webkul/Velocity/src/Resources/views/shop/customers/account/orders/view.blade.php
@@ -208,7 +208,12 @@
{{ __('shop::app.customer.account.order.view.total-due') }}
-
|
- {{ core()->formatPrice($order->total_due, $order->order_currency_code) }} |
+
+ @if($order->status !== 'canceled')
+ {{ core()->formatPrice($order->total_due, $order->order_currency_code) }} |
+ @else
+ {{ core()->formatPrice(0.00, $order->order_currency_code) }} |
+ @endif
diff --git a/tests/functional/Admin/Sales/OrderCest.php b/tests/functional/Admin/Sales/OrderCest.php
index f48aa0aa9..2af683051 100644
--- a/tests/functional/Admin/Sales/OrderCest.php
+++ b/tests/functional/Admin/Sales/OrderCest.php
@@ -2,10 +2,16 @@
namespace Tests\Functional\Admin\Sales;
-
+use Faker\Factory;
use FunctionalTester;
+use Codeception\Util\Locator;
use Webkul\Sales\Models\Order;
-
+use Webkul\Core\Models\Channel;
+use Webkul\Customer\Models\Customer;
+use Webkul\Sales\Models\OrderAddress;
+use Webkul\Sales\Models\OrderPayment;
+use Webkul\Checkout\Models\CartAddress;
+use Webkul\Checkout\Models\CartPayment;
class OrderCest
{
@@ -23,4 +29,154 @@ class OrderCest
$I->see($order->id, '//script[@type="text/x-template"]');
$I->see($order->sub_total, '//script[@type="text/x-template"]');
}
+
+ public function testCancelCashOnDeliveryOrder(FunctionalTester $I): void
+ {
+ /* place order for customer */
+ $order = $this->placeCashOnDeliveryOrderForCustomer($I);
+
+ /* go to admin page and login */
+ $this->goToAdminLoginPageAndSignIn($I);
+
+ /* go to order view page */
+ $I->amOnPage(route('admin.sales.orders.view', $order->id));
+ $I->seeCurrentRouteIs('admin.sales.orders.view');
+
+ /* now cancel order test */
+ $I->see('Cancel', Locator::href(route('admin.sales.orders.cancel', $order->id)));
+ $I->click('Cancel', Locator::href(route('admin.sales.orders.cancel', $order->id)));
+ $I->seeCurrentRouteIs('admin.sales.orders.view');
+ $I->see(0.00, '#due-amount-on-cancelled');
+ }
+
+ private function goToAdminLoginPageAndSignIn(FunctionalTester $I): void
+ {
+ $I->amOnRoute('admin.session.create');
+ $I->fillField('email', 'admin@example.com');
+ $I->fillField('password', 'admin123');
+ $I->click('Sign In');
+ $I->seeCurrentRouteIs('admin.dashboard.index');
+ }
+
+ private function placeCashOnDeliveryOrderForCustomer(FunctionalTester $I): object
+ {
+ $customer = $I->loginAsCustomer();
+
+ $faker = Factory::create();
+
+ $addressData = [
+ 'city' => $faker->city,
+ 'company_name' => $faker->company,
+ 'country' => $faker->countryCode,
+ 'email' => $faker->email,
+ 'first_name' => $faker->firstName,
+ 'last_name' => $faker->lastName,
+ 'phone' => $faker->phoneNumber,
+ 'postcode' => $faker->postcode,
+ 'state' => $faker->state,
+ ];
+
+ $mocks = $I->prepareCart([
+ 'customer' => $customer,
+ ]);
+
+ $I->amOnRoute('shop.checkout.onepage.index');
+
+ $I->seeCurrentRouteIs('shop.checkout.onepage.index');
+
+ $I->sendAjaxPostRequest(route('shop.checkout.save-address'), [
+ '_token' => csrf_token(),
+ 'billing' => array_merge($addressData, [
+ 'address1' => ['900 Nobel Parkway'],
+ 'save_as_address' => true,
+ 'use_for_shipping' => true,
+ ]),
+ 'shipping' => array_merge($addressData, [
+ 'address1' => ['900 Nobel Parkway'],
+ 'save_as_address' => true,
+ 'use_for_shipping' => true,
+ ]),
+ ]);
+
+ $I->seeResponseCodeIsSuccessful();
+
+ $I->seeRecord(CartAddress::class, array_merge($addressData, [
+ 'address_type' => CartAddress::ADDRESS_TYPE_SHIPPING,
+ 'cart_id' => $mocks['cart']->id,
+ 'customer_id' => $mocks['customer']->id,
+ ]));
+
+ $I->seeRecord(CartAddress::class, array_merge($addressData, [
+ 'address_type' => CartAddress::ADDRESS_TYPE_BILLING,
+ 'cart_id' => $mocks['cart']->id,
+ 'customer_id' => $mocks['customer']->id,
+ ]));
+
+ $I->sendAjaxPostRequest(route('shop.checkout.save-shipping'), [
+ '_token' => csrf_token(),
+ 'shipping_method' => 'free_free',
+ ]);
+
+ $I->seeResponseCodeIsSuccessful();
+
+ $I->sendAjaxPostRequest(route('shop.checkout.save-payment'), [
+ '_token' => csrf_token(),
+ 'payment' => [
+ 'method' => 'cashondelivery',
+ ],
+ ]);
+
+ $I->seeResponseCodeIsSuccessful();
+
+ $I->seeRecord(CartPayment::class, [
+ 'method' => 'cashondelivery',
+ 'method_title' => null,
+ 'cart_id' => $mocks['cart']->id,
+ ]);
+
+ $I->sendAjaxPostRequest(route('shop.checkout.save-order'),
+ ['_token' => csrf_token()]
+ );
+
+ $I->seeResponseCodeIsSuccessful();
+
+ $order = $I->grabRecord(Order::class, [
+ 'status' => 'pending',
+ 'channel_name' => 'Default',
+ 'is_guest' => 0,
+ 'customer_first_name' => $customer->first_name,
+ 'customer_last_name' => $customer->last_name,
+ 'customer_email' => $customer->email,
+ 'shipping_method' => 'free_free',
+ 'shipping_title' => 'Free Shipping - Free Shipping',
+ 'shipping_description' => 'Free Shipping',
+ 'customer_type' => Customer::class,
+ 'channel_id' => 1,
+ 'channel_type' => Channel::class,
+ 'cart_id' => $mocks['cart']->id,
+ 'customer_id' => $customer->id,
+ 'total_item_count' => count($mocks['cartItems']),
+ 'total_qty_ordered' => $mocks['totalQtyOrdered'],
+ ]);
+
+ $I->seeRecord(OrderAddress::class, array_merge($addressData, [
+ 'order_id' => $order->id,
+ 'address_type' => OrderAddress::ADDRESS_TYPE_SHIPPING,
+ 'customer_id' => $mocks['customer']->id,
+ ]));
+
+ $I->seeRecord(OrderAddress::class, array_merge($addressData, [
+ 'order_id' => $order->id,
+ 'address_type' => OrderAddress::ADDRESS_TYPE_BILLING,
+ 'customer_id' => $mocks['customer']->id,
+ ]));
+
+ $I->seeRecord(OrderPayment::class, [
+ 'method' => 'cashondelivery',
+ 'method_title' => null,
+ 'order_id' => $order->id,
+ ]);
+
+ return $order;
+ }
}