139 \
Magento\Quote\Model\Quote\Address\RateResult\ErrorFactory $rateErrorFactory,
140 \Psr\Log\LoggerInterface
$logger,
144 \
Magento\Quote\Model\Quote\Address\RateResult\MethodFactory $rateMethodFactory,
148 \
Magento\Directory\Model\RegionFactory $regionFactory,
149 \
Magento\Directory\Model\CountryFactory $countryFactory,
150 \
Magento\Directory\Model\CurrencyFactory $currencyFactory,
151 \
Magento\Directory\Helper\Data $directoryData,
155 $this->_xmlElFactory = $xmlElFactory;
156 $this->_rateFactory = $rateFactory;
157 $this->_rateMethodFactory = $rateMethodFactory;
158 $this->_trackFactory = $trackFactory;
159 $this->_trackErrorFactory = $trackErrorFactory;
160 $this->_trackStatusFactory = $trackStatusFactory;
161 $this->_regionFactory = $regionFactory;
162 $this->_countryFactory = $countryFactory;
163 $this->_currencyFactory = $currencyFactory;
164 $this->_directoryData = $directoryData;
166 parent::__construct($scopeConfig, $rateErrorFactory,
$logger,
$data);
179 $this->_activeFlag =
$code;
191 return isset($this->_code) ? $this->_code :
null;
203 $result = $this->getTracking($tracking);
206 $trackings =
$result->getAllTrackings();
208 return $trackings[0];
246 if ($countryId !=
null) {
247 return !$this->_directoryData->isZipCodeOptional($countryId);
279 if (
$item->getProduct()->isVirtual() ||
$item->getParentItem()) {
284 if (
$item->getHasChildren() &&
$item->isShipSeparately()) {
285 foreach (
$item->getChildren() as $child) {
286 if (!$child->getFreeShipping() && !$child->getProduct()->isVirtual()) {
330 $maxAllowedWeight = (double)$this->
getConfigData(
'max_package_weight');
333 $defaultErrorMsg =
__(
'The shipping module is not available.');
341 $stockItemData = $this->stockRegistry->getStockItem(
343 $item->getStore()->getWebsiteId()
345 $doValidation =
true;
347 if ($stockItemData->getIsQtyDecimal() && $stockItemData->getIsDecimalDivided()) {
348 if ($stockItemData->getEnableQtyIncrements() && $stockItemData->getQtyIncrements()
350 $weight = $weight * $stockItemData->getQtyIncrements();
352 $doValidation =
false;
354 }
elseif ($stockItemData->getIsQtyDecimal() && !$stockItemData->getIsDecimalDivided()) {
355 $weight = $weight *
$item->getQty();
358 if ($doValidation && $weight > $maxAllowedWeight) {
359 $errorMsg = $configErrorMsg ? $configErrorMsg : $defaultErrorMsg;
366 $errorMsg =
__(
'This shipping method is not available. Please specify the zip code.');
369 if ($errorMsg && $showMethod) {
370 $error = $this->_rateErrorFactory->create();
371 $error->setCarrier($this->_code);
373 $error->setErrorMessage($errorMsg);
391 if (is_array($requestParams)) {
392 $requestParams = implode(
394 array_merge([$this->
getCarrierCode()], array_keys($requestParams), $requestParams)
398 return crc32($requestParams);
414 return isset(self::$_quotesCache[$key]) ? self::$_quotesCache[$key] :
null;
441 $name = strip_tags(preg_replace(
'#&\w+;#',
'',
$name));
455 $phonePattern =
'/[\s\_\-\(\)]+/';
456 $phoneNumber =
$request->getShipperContactPhoneNumber();
457 $phoneNumber = preg_replace($phonePattern,
'', $phoneNumber);
458 $request->setShipperContactPhoneNumber($phoneNumber);
459 $phoneNumber =
$request->getRecipientContactPhoneNumber();
460 $phoneNumber = preg_replace($phonePattern,
'', $phoneNumber);
461 $request->setRecipientContactPhoneNumber($phoneNumber);
473 $packages =
$request->getPackages();
474 if (!is_array($packages) || !$packages) {
477 if (
$request->getStoreId() !=
null) {
478 $this->setStore(
$request->getStoreId());
481 foreach ($packages as $packageId => $package) {
483 $request->setPackagingType($package[
'params'][
'container']);
484 $request->setPackageWeight($package[
'params'][
'weight']);
486 $request->setPackageItems($package[
'items']);
494 'tracking_number' =>
$result->getTrackingNumber(),
495 'label_content' =>
$result->getShippingLabelContent(),
498 if (!isset($isFirstRequest)) {
500 $isFirstRequest =
false;
522 $packages =
$request->getPackages();
523 if (!is_array($packages) || !$packages) {
526 if (
$request->getStoreId() !=
null) {
527 $this->setStore(
$request->getStoreId());
530 foreach ($packages as $packageId => $package) {
532 $request->setPackagingType($package[
'params'][
'container']);
533 $request->setPackageWeight($package[
'params'][
'weight']);
535 $request->setPackageItems($package[
'items']);
543 'tracking_number' =>
$result->getTrackingNumber(),
544 'label_content' =>
$result->getShippingLabelContent(),
547 if (!isset($isFirstRequest)) {
549 $isFirstRequest =
false;
653 'free_shipping_enable' 655 'free_shipping_subtotal' 671 public function parseXml($xmlContent, $customSimplexml =
'SimpleXMLElement')
673 if (!$this->xmlSecurity->scan($xmlContent)) {
677 $xmlElement = simplexml_load_string($xmlContent, $customSimplexml);
714 $error = $this->_rateErrorFactory->create();
717 $error->setErrorMessage($this->
getConfigData(
'specificerrmsg'));
_getQuotesCacheKey($requestParams)
_prepareShipmentRequest(\Magento\Framework\DataObject $request)
elseif(isset( $params[ 'redirect_parent']))
const PUERTORICO_COUNTRY_ID
returnOfShipment($request)
requestToShipment($request)
getMethodPrice($cost, $method='')
isGirthAllowed($countyDest=null, $carrierMethodCode=null)
_getCachedQuotes($requestParams)
_setCachedQuotes($requestParams, $response)
isShippingLabelsAvailable()
getTrackingInfo($tracking)
setActiveFlag($code='active')
parseXml($xmlContent, $customSimplexml='SimpleXMLElement')
getFinalPriceWithHandlingFee($cost)
__construct(\Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig, \Magento\Quote\Model\Quote\Address\RateResult\ErrorFactory $rateErrorFactory, \Psr\Log\LoggerInterface $logger, Security $xmlSecurity, \Magento\Shipping\Model\Simplexml\ElementFactory $xmlElFactory, \Magento\Shipping\Model\Rate\ResultFactory $rateFactory, \Magento\Quote\Model\Quote\Address\RateResult\MethodFactory $rateMethodFactory, \Magento\Shipping\Model\Tracking\ResultFactory $trackFactory, \Magento\Shipping\Model\Tracking\Result\ErrorFactory $trackErrorFactory, \Magento\Shipping\Model\Tracking\Result\StatusFactory $trackStatusFactory, \Magento\Directory\Model\RegionFactory $regionFactory, \Magento\Directory\Model\CountryFactory $countryFactory, \Magento\Directory\Model\CurrencyFactory $currencyFactory, \Magento\Directory\Helper\Data $directoryData, \Magento\CatalogInventory\Api\StockRegistryInterface $stockRegistry, array $data=[])
isZipCodeRequired($countryId=null)
processAdditionalValidation(\Magento\Framework\DataObject $request)
_doShipmentRequest(\Magento\Framework\DataObject $request)
_prepareServiceName($name)
getAllItems(RateRequest $request)
proccessAdditionalValidation(\Magento\Framework\DataObject $request)
if(!isset($_GET['name'])) $name