Skip to content

Commit 83ecea7

Browse files
authored
Merge pull request #2594 from magento-tango/MAGETWO-87872
MAGETWO-87872: Free Shipping Cart Price Rule not working when UPS shipping method is enabled
2 parents a2a2a5d + 2796309 commit 83ecea7

File tree

2 files changed

+34
-4
lines changed

2 files changed

+34
-4
lines changed

app/code/Magento/Shipping/Model/Carrier/AbstractCarrier.php

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -436,6 +436,12 @@ protected function _updateFreeMethodQuote($request)
436436
}
437437
}
438438
}
439+
} else {
440+
/**
441+
* if we can apply free shipping for all order we should force price
442+
* to $0.00 for shipping with out sending second request to carrier
443+
*/
444+
$price = 0;
439445
}
440446

441447
/**

dev/tests/integration/testsuite/Magento/Ups/Model/CarrierTest.php

Lines changed: 28 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,18 +5,19 @@
55
*/
66
namespace Magento\Ups\Model;
77

8+
use Magento\TestFramework\Helper\Bootstrap;
9+
use Magento\Quote\Model\Quote\Address\RateRequestFactory;
10+
811
class CarrierTest extends \PHPUnit\Framework\TestCase
912
{
1013
/**
11-
* @var \Magento\Ups\Model\Carrier
14+
* @var Carrier
1215
*/
1316
private $carrier;
1417

1518
protected function setUp()
1619
{
17-
$this->carrier = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->create(
18-
\Magento\Ups\Model\Carrier::class
19-
);
20+
$this->carrier = Bootstrap::getObjectManager()->create(Carrier::class);
2021
}
2122

2223
public function testGetShipAcceptUrl()
@@ -51,4 +52,27 @@ public function testGetShipConfirmUrlLive()
5152
$this->carrier->getShipConfirmUrl()
5253
);
5354
}
55+
56+
/**
57+
* @magentoConfigFixture current_store carriers/ups/active 1
58+
* @magentoConfigFixture current_store carriers/ups/allowed_methods 1DA,GND
59+
* @magentoConfigFixture current_store carriers/ups/free_method GND
60+
*/
61+
public function testCollectRates()
62+
{
63+
$rateRequest = Bootstrap::getObjectManager()->get(RateRequestFactory::class)->create();
64+
$rateRequest->setDestCountryId('US');
65+
$rateRequest->setDestRegionId('CA');
66+
$rateRequest->setDestPostcode('90001');
67+
$rateRequest->setPackageQty(1);
68+
$rateRequest->setPackageWeight(1);
69+
$rateRequest->setFreeMethodWeight(0);
70+
$rateRequest->setLimitCarrier($this->carrier::CODE);
71+
72+
$rateResult = $this->carrier->collectRates($rateRequest);
73+
$result = $rateResult->asArray();
74+
$methods = $result[$this->carrier::CODE]['methods'];
75+
$this->assertEquals(0, $methods['GND']['price']);
76+
$this->assertNotEquals(0, $methods['1DA']['price']);
77+
}
5478
}

0 commit comments

Comments
 (0)