/** * Returns array of data for request * * @param array|\XLite\Logic\Order\Modifier\Shipping $inputData Array of input data or a shipping order modifier * * @return array */ protected function prepareInputData($inputData) { $data = array(); $commonData = array(); if ($inputData instanceof \XLite\Logic\Order\Modifier\Shipping) { if ('CA' == \XLite\Core\Config::getInstance()->Company->location_country) { $commonData['srcAddress'] = array('zipcode' => \XLite\Core\Config::getInstance()->Company->location_zipcode); } $commonData['dstAddress'] = \XLite\Model\Shipping::getInstance()->getDestinationAddress($inputData); if (!empty($commonData['srcAddress']) && !empty($commonData['dstAddress'])) { $data['packages'] = $this->getPackages($inputData); } } else { $data = $inputData; } if (!empty($data['packages'])) { foreach ($data['packages'] as $key => $package) { $package = array_merge($package, $commonData); $package['weight'] = \XLite\Core\Converter::convertWeightUnits($package['weight'], \XLite\Core\Config::getInstance()->Units->weight_unit, 'kg'); $package['subtotal'] = \XLite\Module\XC\CanadaPost\Core\API::applyConversionRate($package['subtotal']); $data['packages'][$key] = $package; } } else { $data = array(); } return $data; }
/** * Post process input data * * @param array $inputData Prepared input data * * @return array */ protected function postProcessInputData(array $inputData) { $commonData = isset($inputData['commonData']) ? $inputData['commonData'] : array(); unset($inputData['commonData']); if (!empty($inputData['packages'])) { foreach ($inputData['packages'] as $key => $package) { $package = array_merge($package, $commonData); $package['weight'] = \XLite\Core\Converter::convertWeightUnits($package['weight'], \XLite\Core\Config::getInstance()->Units->weight_unit, 'kg'); \XLite\Module\XC\CanadaPost\Core\API::setCanadaPostConfig($this->getConfiguration()); $package['subtotal'] = \XLite\Module\XC\CanadaPost\Core\API::applyConversionRate($package['subtotal']); $inputData['packages'][$key] = $package; } } else { $inputData = array(); } return parent::postProcessInputData($inputData); }