/** * EITHER CREATE OR UPDATE THE CUSTOMER * * TO CREATE * http://help.paytrace.com/api-create-customer-profile * * TO UPDATE * http://help.paytrace.com/api-update-customer-profile * * TO DELETE * if $card is empty then we delete the card from paytrace * * @param Mage_Customer_Model_Customer $customer */ public function paytraceCustomer(Mage_Customer_Model_Customer $customer, Widgetized_Level3_Model_Card $card = null) { $defaults = array('UN' => $this->getConfigData('login'), 'PSWD' => $this->getConfigData('trans_key'), 'TERMS' => 'Y', 'METHOD' => 'CreateCustomer', 'CUSTID' => $customer->getId(), 'BNAME' => $customer->getFirstname() . ' ' . $customer->getLastname(), 'CC' => '', 'EXPMNTH' => '', 'EXPYR' => ''); $addressId = $customer->getDefaultBilling(); $billing = Mage::getModel('sales/order_address')->load($addressId); if ($billing) { $defaults['BADDRESS'] = $billing->getPostcode(); $defaults['BCITY'] = $billing->getCity(); $defaults['BSTATE'] = $billing->getRegion(); $defaults['BZIP'] = $billing->getPostcode(); $defaults['BCOUNTRY'] = $billing->getCountryId(); } if ($card) { $defaults['CC'] = $card->getNumber(); $defaults['EXPMNTH'] = $card->getMonth(); $defaults['EXPYR'] = $card->getYear(); } try { $result = $this->call(array_keys($defaults), $defaults); } catch (Exception $ex) { $message = $this->__($ex->getMessage()); if ($card) { $card->setToken($message); $card->save(); } } }
/** * @param Mage_Customer_Model_Customer $customer * @return array|null */ protected function _getAddresses(Mage_Customer_Model_Customer $customer) { $addrData = array(); $addresses = $customer->getAddresses(); if (!empty($addresses)) { foreach ($addresses as $address) { $tags = null; if ($customer->getDefaultBilling() == $address->getEntityId()) { $tags = array(Xcom_Chronicle_Helper_Data::ADDRESS_TAG_BILLING); } $addrData[] = Mage::helper('xcom_chronicle')->createAddress($address, $tags); } } return $addrData; }
/** * Retrieve customer address (default billing or default shipping) ID on which tax calculation must be based * * @param Mage_Customer_Model_Customer $customer * @param Mage_Core_Model_Store|string|int|null $store * @return int|string */ protected function _getVatRequiredCustomerAddress(Mage_Customer_Model_Customer $customer, $store = null) { $configAddressType = Mage::helper('customer/address')->getTaxCalculationAddressType($store); $requiredAddress = null; switch ($configAddressType) { case Mage_Customer_Model_Address_Abstract::TYPE_SHIPPING: $requiredAddress = $customer->getDefaultShipping(); break; default: $requiredAddress = $customer->getDefaultBilling(); } return $requiredAddress; }
/** * Set up the billing address for the quote and on the customer, and set the customer's * default billing address. * * @param $customer Mage_Customer_Model_Customer * * @return Mage_Sales_Model_Quote_Address $billingAddress | null */ protected function _prepareCustomerBilling(Mage_Customer_Model_Customer $customer) { $billing = $this->_quote->getBillingAddress(); if (!$billing->getCustomerId() || $billing->getSaveInAddressBook()) { $customerBilling = $billing->exportCustomerAddress(); $customer->addAddress($customerBilling); $billing->setCustomerAddress($customerBilling); if (!$customer->getDefaultBilling()) { $customerBilling->setIsDefaultBilling(true); } return $customerBilling; } return null; }
/** * Retrieve customer addresses list * * @param Mage_Customer_Model_Customer $customer * * @return array */ protected function getAddressItems($customer) { $result = array(); foreach ($customer->getAddresses() as $address) { $data = $address->toArray(); $row = array(); foreach ($this->_mapAddressAttributes as $attributeAlias => $attributeCode) { $row[$attributeAlias] = isset($data[$attributeCode]) ? $data[$attributeCode] : null; } foreach ($this->getAllowedAttributes($address) as $attributeCode => $attribute) { if (isset($data[$attributeCode])) { $row[$attributeCode] = $data[$attributeCode]; } } $row['is_default_billing'] = $customer->getDefaultBilling() == $address->getId(); $row['is_default_shipping'] = $customer->getDefaultShipping() == $address->getId(); $result[] = $row; } return $result; }