/** * Create array of customer values for API * * @param Mage_Customer_Model_Customer $customer * @return array */ public function getCustomerData(Mage_Customer_Model_Customer $customer) { try { if ($primaryBillingAddress = $customer->getPrimaryBillingAddress()) { $address = implode(', ', $primaryBillingAddress->getStreet()); $state = $customer->getPrimaryBillingAddress()->getRegion(); $zipcode = $customer->getPrimaryBillingAddress()->getPostcode(); } else { $address = ''; $state = ''; $zipcode = ''; } $data = array('id' => $customer->getEmail(), 'key' => 'email', 'fields' => array('keys' => 1), 'keysconfict' => 'merge', 'vars' => array('id' => $customer->getId(), 'name' => $customer->getName(), 'suffix' => $customer->getSuffix() ? $customer->getSuffix() : '', 'prefix' => $customer->getPrefix() ? $customer->getPrefix() : '', 'firstName' => $customer->getFirstname(), 'middleName' => $customer->getMiddlename() ? $customer->getMiddlename() : '', 'lastName' => $customer->getLastname(), 'address' => $address, 'storeID' => $customer->getStoreId(), 'groupId' => $customer->getGroupId(), 'taxClassId' => $customer->getTaxClassId(), 'createdAt' => date("Y-m-d H:i:s", $customer->getCreatedAtTimestamp()), 'primaryBillingAddress' => $this->getAddress($customer->getPrimaryBillingAddress()), 'defaultBillingAddress' => $this->getAddress($customer->getDefaultBillingAddress()), 'defaultShippingAddress' => $this->getAddress($customer->getDefaultShippingAddress()), 'state' => $state, 'zipCode' => $zipcode), 'lists' => array(Mage::helper('sailthruemail')->getMasterList() => 1)); return $data; } catch (Exception $e) { Mage::logException($e); } }
/** * Define customer object * * @param Mage_Customer_Model_Customer $customer * @return Mage_Sales_Model_Quote */ public function setCustomer(Mage_Customer_Model_Customer $customer) { $this->_customer = $customer; $this->setCustomerId($customer->getId()); $this->setCustomerEmail($customer->getEmail()); $this->setCustomerFirstname($customer->getFirstname()); $this->setCustomerLastname($customer->getLastname()); $this->setCustomerGroupId($customer->getGroupId()); $this->setCustomerTaxClassId($customer->getTaxClassId()); return $this; }
/** * Interrupt core getTaxClassId(). * The core method uses the customer's group to determine which tax class to use. * This method uses the Avectra Tax Exempt Status attribute to select which Tax Class Id to return. * * This allows us to decouple tax class from customer group. (If they were coupled, we would have N*M customer * groups, where N is the number of tax classes and M is the number of customer groups in use (for non-tax-class * purposes) * * @return int|mixed - tax class id */ public function getTaxClassId() { $useAvectraTaxExemptStatus = $this->useAvectraTaxExemptStatus(); if ($useAvectraTaxExemptStatus) { // Set to current value if there is one. Just a safety net. $taxClassId = $this->hasData('tax_class_id') ? $this->getData('tax_class_id') : null; /* Use customer's Avectra tax exempt flag to calculate taxes. * Since a value is not required for this attribute, we default to using Magento's standard calculation. */ $customerAvectraTaxExemptStatus = $this->getData('tax_exempt_status'); switch ($customerAvectraTaxExemptStatus) { case self::AVECTRA_TAX_EXEMPT_STATUS_NO: $taxClassId = self::CUSTOMER_TAX_CLASS_RETAIL; break; case self::AVECTRA_TAX_EXEMPT_STATUS_YES: $taxClassId = self::CUSTOMER_TAX_CLASS_EXEMPT; break; default: return parent::getTaxClassId(); } /* Manually set the value for this model and the group model * which is called instead of this one in some places. */ $this->setTaxClassId($taxClassId); Mage::getModel('customer/group')->setTaxClassId($taxClassId); return $taxClassId; } // Shouldn't reach this unless if statement above is false. return parent::getTaxClassId(); }