예제 #1
0
 /**
  * Validate customer address
  *
  * @param Mage_Sales_Model_Quote_Address $address
  * @return bool
  */
 public function validateAddress(Mage_Sales_Model_Quote_Address $address)
 {
     $errors = array();
     $helper = Mage::helper('customer');
     $address->implodeStreetAddress();
     if (!Zend_Validate::is($address->getFirstname(), 'NotEmpty')) {
         $errors[] = $helper->__('Please enter the first name.');
     }
     /*
             if (!Zend_Validate::is($address->getLastname(), 'NotEmpty')) {
                 $errors[] = $helper->__('Please enter the last name.');
             }
     */
     if (!Zend_Validate::is($address->getStreet(1), 'NotEmpty')) {
         $errors[] = $helper->__('Please enter the street.');
     }
     if (!Zend_Validate::is($address->getCity(), 'NotEmpty')) {
         $errors[] = $helper->__('Please enter the city.');
     }
     if (!Zend_Validate::is($address->getTelephone(), 'NotEmpty')) {
         $errors[] = $helper->__('Please enter the telephone number.');
     }
     /*
             $_havingOptionalZip = Mage::helper('directory')->getCountriesWithOptionalZip();
             if (!in_array($address->getCountryId(), $_havingOptionalZip) && !Zend_Validate::is($address->getPostcode(), 'NotEmpty')) {
                 $errors[] = $helper->__('Please enter the zip/postal code.');
             }
     */
     if (!Zend_Validate::is($address->getCountryId(), 'NotEmpty')) {
         $errors[] = $helper->__('Please enter the country.');
     }
     if ($address->getCountryModel()->getRegionCollection()->getSize() && !Zend_Validate::is($address->getRegionId(), 'NotEmpty')) {
         $errors[] = $helper->__('Please enter the state/province.');
     }
     if (empty($errors) || $address->getShouldIgnoreValidation()) {
         return true;
     }
     return $errors;
 }
예제 #2
0
 /**
  * Update the resource model
  *
  * @param Mage_Sales_Model_Quote_Address $resource
  * @param array                          $data
  *
  * @return Mage_Sales_Model_Quote_Address
  */
 public function updateResource(Mage_Sales_Model_Quote_Address $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();
     // Filter raw incoming data
     $data = $filter->in($data);
     // Check if the update is setting a customer address ID to use
     if (array_key_exists('customer_address_id', $data) && $data['customer_address_id']) {
         /** @var Mage_Customer_Model_Address $customerAddress */
         $customerAddress = Mage::getModel('customer/address')->load($data['customer_address_id']);
         if ($customerAddress->getId()) {
             if ($customerAddress->getCustomerId() != $resource->getQuote()->getCustomerId()) {
                 $this->_critical(Mage::helper('checkout')->__('Customer Address is not valid.'), Mage_Api2_Model_Server::HTTP_BAD_REQUEST);
             }
             $resource->importCustomerAddress($customerAddress);
             $resource->setSaveInAddressBook(0);
         }
     } else {
         // Fix region/country data
         $data = $this->getHelper()->fixAddressData($data, $resource->getCountryId(), $resource->getRegionId());
         // Get allowed attributes
         $allowedAttributes = $filter->getAllowedAttributes(Mage_Api2_Model_Resource::OPERATION_ATTRIBUTE_WRITE);
         // Update model
         $this->saveResourceAttributes($resource, array_merge($allowedAttributes, ['region_id']), $data);
     }
     // Update the shipping address if it is meant to match the billing address
     if ($resource->getQuote()->getShippingAddress()->getSameAsBilling()) {
         $shippingAddress = $resource->getQuote()->getShippingAddress();
         $shippingAddress->importCustomerAddress($resource->exportCustomerAddress());
         $shippingAddress->setSameAsBilling(1);
     }
     // Validate address
     $addressErrors = $this->getHelper()->validateQuoteAddress($resource);
     if (!empty($addressErrors)) {
         $resource->setData('validation_errors', $addressErrors);
     }
     // Fire event - after
     $data = new Varien_Object($data);
     Mage::dispatchEvent('aoe_cartapi_billingaddress_update_after', ['data' => $data, 'filter' => $filter, 'resource' => $resource]);
     // Restore old state
     $this->setActionType($actionType);
     $this->setOperation($operation);
     // Return updated resource
     return $resource;
 }
예제 #3
0
파일: Address.php 프로젝트: onepica/avatax
 /**
  * Get region filter
  *
  * @param Mage_Sales_Model_Quote_Address $address
  * @param int                            $storeId
  *
  * @return string|bool
  */
 protected function _getFilterRegion($address, $storeId)
 {
     $filter = false;
     $regionFilters = explode(',', $this->_getConfigData()->getRegionFilterList($storeId));
     $entityId = $address->getRegionId() ?: $address->getCountryId();
     if (!in_array($entityId, $regionFilters)) {
         $filter = 'region';
     }
     return $filter;
 }
예제 #4
0
 /**
  * Convert quote address to order address
  *
  * @param   Mage_Sales_Model_Quote_Address $address
  * @return  Mage_Sales_Model_Order_Address
  */
 public function addressToOrderAddress(Mage_Sales_Model_Quote_Address $address)
 {
     $orderAddress = Mage::getModel('sales/order_address')->setStoreId($address->getStoreId())->setAddressType($address->getAddressType())->setCustomerId($address->getCustomerId())->setCustomerAddressId($address->getCustomerAddressId())->setFirstname($address->getFirstname())->setLastname($address->getLastname())->setCompany($address->getCompany())->setStreet($address->getStreet(-1))->setCity($address->getCity())->setRegion($address->getRegion())->setRegionId($address->getRegionId())->setPostcode($address->getPostcode())->setCountryId($address->getCountryId())->setTelephone($address->getTelephone())->setFax($address->getFax());
     return $orderAddress;
 }