/**
  * Get item collection filters common for all address types.
  *
  * @param Mage_Sales_Model_Order_Address
  * @return array
  */
 protected function _getDefaultItemFilters(Mage_Sales_Model_Order_Address $address)
 {
     return ['order_id' => $address->getParentId(), 'is_virtual' => $this->_isAddressBillingAddress($address)];
 }
 /**
  *
  * @param Mage_Sales_Model_Order_Address $address
  *
  * @return boolean
  */
 protected function _communicateAddresUpdateToDpd(Mage_Sales_Model_Order_Address $address)
 {
     $shipsCollectionForOrder = Mage::getResourceModel('zitec_dpd/dpd_ship_collection');
     /* @var $shipsCollectionForOrder Zitec_Dpd_Model_Mysql4_Dpd_Ship_Collection */
     $shipsCollectionForOrder->setOrderFilter($address->getParentId());
     if (!$shipsCollectionForOrder->count()) {
         return false;
     }
     foreach ($shipsCollectionForOrder as $ship) {
         /* @var $ship Zitec_Dpd_Model_Dpd_Ship */
         $dpdShipment = unserialize($ship->getSaveShipmentCall());
         /* @var $dpdShipmnent Zitec_Dpd_Api_Shipment_Save */
         try {
             $response = $dpdShipment->setReceiverAddress($address)->execute();
             /* @var $response Zitec_Dpd_Api_Shipment_Save_Response */
         } catch (Exception $e) {
             Mage::throwException(sprintf($this->__('An error occurred updating the shipping address details with DPD: <br /> "%s"', $e->getMessage())));
         }
         if ($response->hasError()) {
             Mage::throwException(sprintf($this->__('DPD could not update the shipment address. The following error was returned: <br /> "%s: %s"'), $response->getErrorCode(), $response->getErrorText()));
         }
         try {
             $labelPdfStr = $this->_getWsHelper()->getNewPdfShipmentLabelsStr($response->getDpdShipmentId(), $response->getDpdShipmentReferenceNumber());
         } catch (Exception $e) {
             Mage::throwException(sprintf($this->__('An error occurred retrieving the updated shipping labels from DPD. <br />"s%"'), $e->getMessage()));
         }
         $ship->setSaveShipmentCall(serialize($dpdShipment))->setSaveShipmentResponse(serialize($response))->setShippingLabels(base64_encode($labelPdfStr))->save();
         Mage::getModel('sales/order_shipment')->load($ship->getShipmentId())->setShippingLabel($labelPdfStr)->save();
     }
     return true;
 }