Ejemplo n.º 1
0
 /**
  * Update the resource model
  *
  * @param Mage_Sales_Model_Quote_Payment $resource
  * @param array                          $data
  *
  * @return Mage_Sales_Model_Quote_Item
  */
 public function updateResource(Mage_Sales_Model_Quote_Payment $resource, array $data)
 {
     // Store current state
     $actionType = $this->getActionType();
     $operation = $this->getOperation();
     // Change state
     $this->setActionType(self::ACTION_TYPE_ENTITY);
     $this->setOperation(self::OPERATION_UPDATE);
     // Get a filter instance
     $filter = $this->getFilter();
     // Fire event - before filter
     $data = new Varien_Object($data);
     Mage::dispatchEvent('aoe_cartapi_payment_update_before', ['data' => $data, 'filter' => $filter, 'resource' => $resource]);
     $data = $data->getData();
     // Filter raw incoming data
     $data = $filter->in($data);
     // Clean up input format to what Magento expects
     if (isset($data['data']) && is_array($data['data'])) {
         $base = $data;
         unset($base['data']);
         $data = array_merge($data['data'], $base);
     } else {
         unset($data['data']);
     }
     // Map data keys
     $data = $this->mapAttributes($data);
     // Manual data setting
     $quote = $resource->getQuote();
     if ($quote->isVirtual()) {
         $quote->getBillingAddress()->setPaymentMethod(isset($data['method']) ? $data['method'] : null);
     } else {
         $quote->getShippingAddress()->setPaymentMethod(isset($data['method']) ? $data['method'] : null);
         // Shipping totals may be affected by payment method
         $quote->getShippingAddress()->setCollectShippingRates(true);
     }
     // Define validation checks
     $data['checks'] = Mage_Payment_Model_Method_Abstract::CHECK_USE_CHECKOUT | Mage_Payment_Model_Method_Abstract::CHECK_USE_FOR_COUNTRY | Mage_Payment_Model_Method_Abstract::CHECK_USE_FOR_CURRENCY | Mage_Payment_Model_Method_Abstract::CHECK_ORDER_TOTAL_MIN_MAX;
     // Update model
     $resource->importData($data);
     // Fire event - after
     $data = new Varien_Object($data);
     Mage::dispatchEvent('aoe_cartapi_payment_update_after', ['data' => $data, 'filter' => $filter, 'resource' => $resource]);
     // Restore old state
     $this->setActionType($actionType);
     $this->setOperation($operation);
     // Return updated resource
     return $resource;
 }