@@ -1019,6 +1019,13 @@ public function collectShippingRates()
1019
1019
*/
1020
1020
public function requestShippingRates (AbstractItem $ item = null )
1021
1021
{
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
+
1022
1029
/** @var $request RateRequest */
1023
1030
$ request = $ this ->_rateRequestFactory ->create ();
1024
1031
$ request ->setAllItems ($ item ? [$ item ] : $ this ->getAllItems ());
@@ -1028,31 +1035,30 @@ public function requestShippingRates(AbstractItem $item = null)
1028
1035
$ request ->setDestStreet ($ this ->getStreetFull ());
1029
1036
$ request ->setDestCity ($ this ->getCity ());
1030
1037
$ 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 ();
1032
1041
$ packageWithDiscount = $ item ? $ item ->getBaseRowTotal () -
1033
- $ item ->getBaseDiscountAmount () : $ this -> getBaseSubtotalWithDiscount () ;
1042
+ $ item ->getBaseDiscountAmount () : $ baseSubtotalWithDiscount ;
1034
1043
$ request ->setPackageValueWithDiscount ($ packageWithDiscount );
1035
1044
$ request ->setPackageWeight ($ item ? $ item ->getRowWeight () : $ this ->getWeight ());
1036
1045
$ request ->setPackageQty ($ item ? $ item ->getQty () : $ this ->getItemQty ());
1037
1046
1038
1047
/**
1039
1048
* Need for shipping methods that use insurance based on price of physical products
1040
1049
*/
1041
- $ packagePhysicalValue = $ item ? $ item ->getBaseRowTotal () : $ this ->getBaseSubtotal () -
1042
- $ this ->getBaseVirtualAmount ();
1050
+ $ packagePhysicalValue = $ item ? $ item ->getBaseRowTotal () : $ baseSubtotal - $ this ->getBaseVirtualAmount ();
1043
1051
$ request ->setPackagePhysicalValue ($ packagePhysicalValue );
1044
1052
1045
1053
$ request ->setFreeMethodWeight ($ item ? 0 : $ this ->getFreeMethodWeight ());
1046
1054
1047
1055
/**
1048
1056
* Store and website identifiers specified from StoreManager
1049
1057
*/
1058
+ $ request ->setStoreId ($ storeId );
1050
1059
if ($ this ->getQuote ()->getStoreId ()) {
1051
- $ storeId = $ this ->getQuote ()->getStoreId ();
1052
- $ request ->setStoreId ($ storeId );
1053
1060
$ request ->setWebsiteId ($ this ->storeManager ->getStore ($ storeId )->getWebsiteId ());
1054
1061
} else {
1055
- $ request ->setStoreId ($ this ->storeManager ->getStore ()->getId ());
1056
1062
$ request ->setWebsiteId ($ this ->storeManager ->getWebsite ()->getId ());
1057
1063
}
1058
1064
$ request ->setFreeShipping ($ this ->getFreeShipping ());
0 commit comments