@@ -1019,6 +1019,13 @@ public function collectShippingRates()
10191019 */
10201020 public function requestShippingRates (AbstractItem $ item = null )
10211021 {
1022+ $ storeId = $ this ->getQuote ()->getStoreId () ?: $ this ->storeManager ->getStore ()->getId ();
1023+ $ taxInclude = $ this ->_scopeConfig ->getValue (
1024+ 'tax/calculation/price_includes_tax ' ,
1025+ ScopeInterface::SCOPE_STORE ,
1026+ $ storeId
1027+ );
1028+
10221029 /** @var $request RateRequest */
10231030 $ request = $ this ->_rateRequestFactory ->create ();
10241031 $ request ->setAllItems ($ item ? [$ item ] : $ this ->getAllItems ());
@@ -1028,31 +1035,30 @@ public function requestShippingRates(AbstractItem $item = null)
10281035 $ request ->setDestStreet ($ this ->getStreetFull ());
10291036 $ request ->setDestCity ($ this ->getCity ());
10301037 $ request ->setDestPostcode ($ this ->getPostcode ());
1031- $ request ->setPackageValue ($ item ? $ item ->getBaseRowTotal () : $ this ->getBaseSubtotal ());
1038+ $ baseSubtotal = $ taxInclude ? $ this ->getBaseSubtotalTotalInclTax () : $ this ->getBaseSubtotal ();
1039+ $ request ->setPackageValue ($ item ? $ item ->getBaseRowTotal () : $ baseSubtotal );
1040+ $ baseSubtotalWithDiscount = $ baseSubtotal + $ this ->getBaseDiscountAmount ();
10321041 $ packageWithDiscount = $ item ? $ item ->getBaseRowTotal () -
1033- $ item ->getBaseDiscountAmount () : $ this -> getBaseSubtotalWithDiscount () ;
1042+ $ item ->getBaseDiscountAmount () : $ baseSubtotalWithDiscount ;
10341043 $ request ->setPackageValueWithDiscount ($ packageWithDiscount );
10351044 $ request ->setPackageWeight ($ item ? $ item ->getRowWeight () : $ this ->getWeight ());
10361045 $ request ->setPackageQty ($ item ? $ item ->getQty () : $ this ->getItemQty ());
10371046
10381047 /**
10391048 * Need for shipping methods that use insurance based on price of physical products
10401049 */
1041- $ packagePhysicalValue = $ item ? $ item ->getBaseRowTotal () : $ this ->getBaseSubtotal () -
1042- $ this ->getBaseVirtualAmount ();
1050+ $ packagePhysicalValue = $ item ? $ item ->getBaseRowTotal () : $ baseSubtotal - $ this ->getBaseVirtualAmount ();
10431051 $ request ->setPackagePhysicalValue ($ packagePhysicalValue );
10441052
10451053 $ request ->setFreeMethodWeight ($ item ? 0 : $ this ->getFreeMethodWeight ());
10461054
10471055 /**
10481056 * Store and website identifiers specified from StoreManager
10491057 */
1058+ $ request ->setStoreId ($ storeId );
10501059 if ($ this ->getQuote ()->getStoreId ()) {
1051- $ storeId = $ this ->getQuote ()->getStoreId ();
1052- $ request ->setStoreId ($ storeId );
10531060 $ request ->setWebsiteId ($ this ->storeManager ->getStore ($ storeId )->getWebsiteId ());
10541061 } else {
1055- $ request ->setStoreId ($ this ->storeManager ->getStore ()->getId ());
10561062 $ request ->setWebsiteId ($ this ->storeManager ->getWebsite ()->getId ());
10571063 }
10581064 $ request ->setFreeShipping ($ this ->getFreeShipping ());
0 commit comments