1: <?php
2: /**
3: * Magento
4: *
5: * NOTICE OF LICENSE
6: *
7: * This source file is subject to the Open Software License (OSL 3.0)
8: * that is bundled with this package in the file LICENSE.txt.
9: * It is also available through the world-wide-web at this URL:
10: * http://opensource.org/licenses/osl-3.0.php
11: * If you did not receive a copy of the license and are unable to
12: * obtain it through the world-wide-web, please send an email
13: * to license@magentocommerce.com so we can send you a copy immediately.
14: *
15: * DISCLAIMER
16: *
17: * Do not edit or add to this file if you wish to upgrade Magento to newer
18: * versions in the future. If you wish to customize Magento for your
19: * needs please refer to http://www.magentocommerce.com for more information.
20: *
21: * @category Mage
22: * @package Mage_GoogleCheckout
23: * @copyright Copyright (c) 2012 Magento Inc. (http://www.magentocommerce.com)
24: * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
25: */
26:
27:
28: /**
29: * Google Checkout Event Observer
30: *
31: * @category Mage
32: * @package Mage_GoogleCheckout
33: */
34: class Mage_GoogleCheckout_Model_Observer
35: {
36: public function salesOrderShipmentTrackSaveAfter(Varien_Event_Observer $observer)
37: {
38: $track = $observer->getEvent()->getTrack();
39:
40: $order = $track->getShipment()->getOrder();
41: $shippingMethod = $order->getShippingMethod(); // String in format of 'carrier_method'
42: if (!$shippingMethod) {
43: return;
44: }
45:
46: // Process only Google Checkout internal methods
47: /* @var $gcCarrier Mage_GoogleCheckout_Model_Shipping */
48: $gcCarrier = Mage::getModel('googlecheckout/shipping');
49: list($carrierCode, $methodCode) = explode('_', $shippingMethod);
50: if ($gcCarrier->getCarrierCode() != $carrierCode) {
51: return;
52: }
53: $internalMethods = $gcCarrier->getInternallyAllowedMethods();
54: if (!isset($internalMethods[$methodCode])) {
55: return;
56: }
57:
58: Mage::getModel('googlecheckout/api')
59: ->setStoreId($order->getStoreId())
60: ->deliver($order->getExtOrderId(), $track->getCarrierCode(), $track->getNumber());
61: }
62:
63: /*
64: * Performs specifical actions on Google Checkout internal shipments saving
65: *
66: * @param Varien_Event_Observer $observer
67: * @return void
68: */
69: public function salesOrderShipmentSaveAfter(Varien_Event_Observer $observer)
70: {
71: $shipment = $observer->getEvent()->getShipment();
72: $order = $shipment->getOrder();
73: $shippingMethod = $order->getShippingMethod(); // String in format of 'carrier_method'
74: if (!$shippingMethod) {
75: return;
76: }
77:
78: // Process only Google Checkout internal methods
79: /* @var $gcCarrier Mage_GoogleCheckout_Model_Shipping */
80: $gcCarrier = Mage::getModel('googlecheckout/shipping');
81: list($carrierCode, $methodCode) = explode('_', $shippingMethod);
82: if ($gcCarrier->getCarrierCode() != $carrierCode) {
83: return;
84: }
85: $internalMethods = $gcCarrier->getInternallyAllowedMethods();
86: if (!isset($internalMethods[$methodCode])) {
87: return;
88: }
89:
90: // Process this saving
91: $items = array();
92: foreach ($shipment->getAllItems() as $item) {
93: if ($item->getOrderItem()->getParentItemId()) {
94: continue;
95: }
96: $items[] = $item->getSku();
97: }
98:
99: if ($items) {
100: Mage::getModel('googlecheckout/api')
101: ->setStoreId($order->getStoreId())
102: ->shipItems($order->getExtOrderId(), $items);
103: }
104: }
105: }
106: