/** * Creates a collection item that represents a customer for the customer Grid. * * @param CustomerInterface $customer Input data for creating the item. * @return \Magento\Framework\Object Collection item that represents a customer */ protected function createCustomerItem(CustomerInterface $customer) { $customerNameParts = [$customer->getPrefix(), $customer->getFirstname(), $customer->getMiddlename(), $customer->getLastname(), $customer->getSuffix()]; $customerItem = new \Magento\Framework\Object(); $customerItem->setId($customer->getId()); $customerItem->setEntityId($customer->getId()); // All parts of the customer name must be displayed in the name column of the grid $customerItem->setName(implode(' ', array_filter($customerNameParts))); $customerItem->setEmail($customer->getEmail()); $customerItem->setWebsiteId($customer->getWebsiteId()); $customerItem->setCreatedAt($customer->getCreatedAt()); $customerItem->setGroupId($customer->getGroupId()); $billingAddress = null; foreach ($customer->getAddresses() as $address) { if ($address->isDefaultBilling()) { $billingAddress = $address; break; } } if ($billingAddress !== null) { $customerItem->setBillingTelephone($billingAddress->getTelephone()); $customerItem->setBillingPostcode($billingAddress->getPostcode()); $customerItem->setBillingCountryId($billingAddress->getCountryId()); $region = $billingAddress->getRegion() === null ? '' : $billingAddress->getRegion()->getRegion(); $customerItem->setBillingRegion($region); } return $customerItem; }
/** @inheritdoc */ public function getBusCodeForCustomerGroup(\Magento\Customer\Api\Data\CustomerInterface $customer) { $result = self::B_CUST_GROUP_RETAIL; $groupId = $customer->getGroupId(); if ($groupId == self::M_CUST_GROUP_DISTRIBUTOR) { $result = self::B_CUST_GROUP_DISTRIBUTOR; } elseif ($groupId == self::M_CUST_GROUP_WHOLESALE) { $result = self::B_CUST_GROUP_WHOLESALE; } return $result; }
/** * Send customer email * * @return bool * @SuppressWarnings(PHPMD.CyclomaticComplexity) * @SuppressWarnings(PHPMD.NPathComplexity) * @SuppressWarnings(PHPMD.ExcessiveMethodLength) */ public function send() { if ($this->_website === null || $this->_customer === null) { return false; } if ($this->_type == 'price' && count($this->_priceProducts) == 0 || $this->_type == 'stock' && count($this->_stockProducts) == 0) { return false; } if (!$this->_website->getDefaultGroup() || !$this->_website->getDefaultGroup()->getDefaultStore()) { return false; } if ($this->_customer->getStoreId() > 0) { $store = $this->_storeManager->getStore($this->_customer->getStoreId()); } else { $store = $this->_website->getDefaultStore(); } $storeId = $store->getId(); if ($this->_type == 'price' && !$this->_scopeConfig->getValue(self::XML_PATH_EMAIL_PRICE_TEMPLATE, \Magento\Store\Model\ScopeInterface::SCOPE_STORE, $storeId)) { return false; } elseif ($this->_type == 'stock' && !$this->_scopeConfig->getValue(self::XML_PATH_EMAIL_STOCK_TEMPLATE, \Magento\Store\Model\ScopeInterface::SCOPE_STORE, $storeId)) { return false; } if ($this->_type != 'price' && $this->_type != 'stock') { return false; } $this->_appEmulation->startEnvironmentEmulation($storeId); if ($this->_type == 'price') { $this->_getPriceBlock()->setStore($store)->reset(); foreach ($this->_priceProducts as $product) { $product->setCustomerGroupId($this->_customer->getGroupId()); $this->_getPriceBlock()->addProduct($product); } $block = $this->_getPriceBlock(); $templateId = $this->_scopeConfig->getValue(self::XML_PATH_EMAIL_PRICE_TEMPLATE, \Magento\Store\Model\ScopeInterface::SCOPE_STORE, $storeId); } else { $this->_getStockBlock()->setStore($store)->reset(); foreach ($this->_stockProducts as $product) { $product->setCustomerGroupId($this->_customer->getGroupId()); $this->_getStockBlock()->addProduct($product); } $block = $this->_getStockBlock(); $templateId = $this->_scopeConfig->getValue(self::XML_PATH_EMAIL_STOCK_TEMPLATE, \Magento\Store\Model\ScopeInterface::SCOPE_STORE, $storeId); } $alertGrid = $this->_appState->emulateAreaCode(\Magento\Framework\App\Area::AREA_FRONTEND, [$block, 'toHtml']); $this->_appEmulation->stopEnvironmentEmulation(); $transport = $this->_transportBuilder->setTemplateIdentifier($templateId)->setTemplateOptions(['area' => \Magento\Framework\App\Area::AREA_FRONTEND, 'store' => $storeId])->setTemplateVars(['customerName' => $this->_customerHelper->getCustomerName($this->_customer), 'alertGrid' => $alertGrid])->setFrom($this->_scopeConfig->getValue(self::XML_PATH_EMAIL_IDENTITY, \Magento\Store\Model\ScopeInterface::SCOPE_STORE, $storeId))->addTo($this->_customer->getEmail(), $this->_customerHelper->getCustomerName($this->_customer))->getTransport(); $transport->sendMessage(); return true; }
/** * Set customer object and setting customer id in session * * @param CustomerData $customer * @return $this */ public function setCustomerData(CustomerData $customer) { $this->_customer = $customer; if ($customer === null) { $this->setCustomerId(null); } else { $this->_httpContext->setValue(Context::CONTEXT_GROUP, $customer->getGroupId(), \Magento\Customer\Model\Group::NOT_LOGGED_IN_ID); $this->setCustomerId($customer->getId()); } return $this; }
/** * Get AvaTax Customer Usage Type for customer * * @param \Magento\Customer\Api\Data\CustomerInterface $customer * @return null|string */ public function getAvataxTaxCodeForCustomer(\Magento\Customer\Api\Data\CustomerInterface $customer) { $customerGroupId = $customer->getGroupId(); if (!$customerGroupId) { return null; } try { $customerGroup = $this->customerGroupRepository->getById($customerGroupId); $taxClassId = $customerGroup->getTaxClassId(); } catch (\Magento\Framework\Exception\NoSuchEntityException $e) { return null; } return $this->getAvaTaxTaxCode($taxClassId); }