Beispiel #1
0
    /**
     * 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);
 }