/** * Get "parcel-characteristics" XML data for "Create Non-Contract Shipment" and "Create Shipment" requests * * @param \XLite\Module\XC\CanadaPost\Model\Order\Parcel $parcel Canada Post parcel * @param string $quoteType Quote type * * @return string */ protected function getParcelCharacteristicsXmlData(\XLite\Module\XC\CanadaPost\Model\Order\Parcel $parcel, $quoteType = self::QUOTE_TYPE_NON_CONTRACTED) { // Convert dimensions (dimensions must be in CM) $dimensions = array(); foreach (array('length', 'width', 'height') as $v) { $dimensions[$v] = static::adjustFloatValue($parcel->{'getBox' . \XLite\Core\Converter::convertToCamelCase($v)}(), 1, 0.1, 999.9); } $xmlData = <<<XML <weight>{$parcel->getWeightInKg(true)}</weight> <dimensions> <length>{$dimensions['length']}</length> <width>{$dimensions['width']}</width> <height>{$dimensions['height']}</height> </dimensions> XML; // Parcel characteristic options $parcelTypes = array('unpackaged', 'mailing_tube'); if (static::QUOTE_TYPE_NON_CONTRACTED == $quoteType) { // Allowed only for "Non-Contracted" shipments $parcelTypes[] = 'document'; } else { // Allowed only for "Contracted" shipments $parcelTypes[] = 'oversized'; } foreach ($parcelTypes as $v) { if ($parcel->{'getIs' . \XLite\Core\Converter::convertToCamelCase($v)}()) { $printTagName = str_replace('_', '-', $v); $xmlData .= <<<XML <{$printTagName}>true</{$printTagName}> XML; } } $xmlData = <<<XML <parcel-characteristics> {$xmlData} </parcel-characteristics> XML; return $xmlData; }
/** * {@inheritDoc} */ public function getWeightInKg($adjustFloatValue = false) { $this->__initializer__ && $this->__initializer__->__invoke($this, 'getWeightInKg', array($adjustFloatValue)); return parent::getWeightInKg($adjustFloatValue); }