/** * 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; }