public function importCustomerApproverMap($input_csv, $corporate) { try { $errors = array(); $success = array(); $customerGroups = getCustomerGroups(); if (!isset($customerGroups[$corporate])) { $error[] = "Customer Group " . $corporate . " should be created before importing csv"; } if (($handle = fopen($input_csv, "r")) !== FALSE) { $columns = fgetcsv($handle, 0, ","); foreach ($columns as $key => $value) { $map[trim($value)] = $key; } $corporate_option = getAllOptionByLabel('ziscorporate'); while (($data = fgetcsv($handle, 0, ",")) !== FALSE) { if (count($data) != count($map)) { $errors[] = "Bad row - count does not match header. Skipping."; continue; } $website = Mage::getModel('core/website')->load('base'); $customer = Mage::getModel("customer/customer"); $approver = Mage::getModel("customer/customer"); $approver->setWebsiteId($website->getId())->loadByEmail($data[$map['ApproverEmail']]); if (!$approver->getId()) { $errors[] = "Approver " . $data[$map['ApproverEmail']] . " of " . $data[$map['EmpEmail']] . " should be a registered user"; continue; } Mage::Log('Employee Name' . $data[$map["EmpFirstName"]]); $customer->setWebsiteId($website->getId())->loadByEmail($data[$map['EmpEmail']]); $customer->setFirstname($data[$map["EmpFirstName"]]); $customer->setLastname($data[$map["EmpLastName"]]); $customer->setEmail($data[$map["EmpEmail"]]); $customer->setZiscorporate($corporate_option["Corporate"]); $customer->setZcorporatename($corporate); $customer->setZcorporateapprover(0); $customer->setIsSubscribed(1); $customer->setGroupId($customerGroups[$corporate]); $customer->setZmyapprover($approver->getId()); if (!$customer->getId()) { /** * Customer does not exists - do the basic things */ $password = $customer->generatePassword(8); $customer->setStoreId(0); /* default store only */ $customer->setPassword($password); $customer->setWebsiteId($website->getId()); $customer->sendNewAccountEmail(); } $customer->save(); $address = Mage::getModel("customer/address"); // you need a customer object here, or simply the ID as a string. $address->setCustomerId($customer->getId()); $address->setFirstname($data[$map["EmpFirstName"]]); $address->setLastname($data[$map["EmpLastName"]]); $address->setCountryId($data[$map["EmpCountry"]]); //Country code here $address->setStreet(array($data[$map["EmpStreet1"]], $data[$map["EmpStreet2"]])); $address->setPostcode($data[$map["EmpPostalcode"]]); $address->setRegionId($data[$map["EmpRegionId"]]); $address->setCity($data[$map["EmpCity"]]); $address->setTelephone($data[$map["EmpTelephone"]]); $address->save(); //$this->sendWelcomeEmail($customer); $success[] = $data[$map["EmpEmail"]]; } fclose($handle); } else { $errors[] = "Cannot open " . $input_csv; throw Mage::exception('Mage_Core', "Errors"); } } catch (Exception $e) { } return array($success, $errors); }
public function saveAction() { $msg = ""; $update_microsite = false; /* short code cannot have spaces */ if ($data = $this->getRequest()->getPost()) { try { $data['shortcode'] = preg_replace('/\\s+/', '_', trim($data['shortcode'])); $cvFolderPath = Mage::getBaseDir('media') . DS . 'corporate'; $uploader_emp = NULL; if (isset($_FILES['employee']['name']) && $_FILES['employee']['name'] != '') { $uploader_emp = new Varien_File_Uploader('employee'); $uploader_emp->setAllowedExtensions(array('csv')); // or pdf or anything $uploader_emp->setAllowRenameFiles(TRUE); $uploader_emp->setFilesDispersion(FALSE); $fileName = $_FILES['employee']['name']; $fileExt = strtolower(substr(strrchr($fileName, "."), 1)); $fileNamewoe = rtrim($fileName, $fileExt); $fileName = str_replace(' ', '', $data['name'] . '_employee') . '.' . $fileExt; if (file_exists($cvFolderPath . DS . $fileName)) { unlink($cvFolderPath . DS . $fileName); } $uploader_emp->save($cvFolderPath, $fileName); Mage::getSingleton('core/session')->setEmployeeCsv($fileName); //validation employee file start $emp_file = $cvFolderPath . DS . $fileName; //if(file_exists($cvFolderPath.DS.$fileName)) //{ $destination = $cvFolderPath . DS . $fileName; $handle = fopen($destination, "r"); $i = 1; while (($empData = fgetcsv($handle, 0, ",")) !== FALSE) { if ($i >= 2) { if (empty($empData[3])) { Mage::getSingleton('adminhtml/session')->addError(Mage::helper('corporate')->__("Approver Email id is blank at line {$i} in employee csv")); $this->_redirect('*/*/'); return; } else { $cus = Mage::getModel('customer/customer')->getCollection()->addFieldToFilter('email', $empData[3]); if (count($cus) == 0) { Mage::getSingleton('adminhtml/session')->addError(Mage::helper('corporate')->__("Approver Email id not register at line {$i} in employee csv")); $this->_redirect('*/*/'); return; } if (empty($empData[0]) || empty($empData[1]) || empty($empData[2]) || empty($empData[3]) || empty($empData[4]) || empty($empData[5]) || empty($empData[6]) || empty($empData[7]) || empty($empData[8]) || empty($empData[9]) || empty($empData[10])) { Mage::getSingleton('adminhtml/session')->addError(Mage::helper('corporate')->__("Some field is empty in at line {$i} in employee csv")); $this->_redirect('*/*/'); return; } } } $i++; } //} } $uploader_prd = NULL; if (isset($_FILES['prices']['name']) && $_FILES['prices']['name'] != '') { $uploader_prd = new Varien_File_Uploader('prices'); $uploader_prd->setAllowedExtensions(array('csv')); // or pdf or anything $uploader_prd->setAllowRenameFiles(TRUE); $uploader_prd->setFilesDispersion(FALSE); $fileName = $_FILES['prices']['name']; $fileExt = strtolower(substr(strrchr($fileName, "."), 1)); $fileNamewoe = rtrim($fileName, $fileExt); $fileName = str_replace(' ', '', $data['name'] . '_product') . '.' . $fileExt; //mohan remove the previour order tier price $group = Mage::getModel('customer/group')->getCollection()->addFieldToFilter('customer_group_code', $data['shortcode'])->getData(); $resource = Mage::getSingleton('core/resource'); $writeConnection = $resource->getConnection('core_write'); $customer11 = Mage::getModel('customer/customer')->getCollection()->addFieldToFilter('group_id', $group[0][customer_group_id]); foreach ($customer11 as $cus11) { $qu_view_pro = "DELETE FROM report_viewed_product_index where customer_id = " . $cus11->getEntityId(); $writeConnection->query($qu_view_pro); } $qu = "DELETE FROM catalog_product_entity_tier_price WHERE customer_group_id = '" . $group[0][customer_group_id] . "'"; $writeConnection->query($qu); //mohan end if (file_exists($cvFolderPath . DS . $fileName)) { unlink($cvFolderPath . DS . $fileName); } $uploader_prd->save($cvFolderPath, $fileName); Mage::getSingleton('core/session')->setProductCsv($fileName); //validation product file start $pro_file = $cvFolderPath . DS . $fileName; //if(file_exists($cvFolderPath.DS.$fileName)) //{ $destination = $cvFolderPath . DS . $fileName; $handle = fopen($destination, "r"); $i = 1; while (($prodata = fgetcsv($handle, 0, ",")) !== FALSE) { if ($i >= 2) { //$product = Mage::getModel('catalog/product')->loadBySku($prodata[0]); //$id = Mage::getModel('catalog/product')->getIdBySku($sku); if (empty($prodata[0]) || empty($prodata[1]) || empty($prodata[2])) { Mage::getSingleton('adminhtml/session')->addError(Mage::helper('corporate')->__("Empty field in row no {$i} in product csv")); $this->_redirect('*/*/'); return; } $product1 = Mage::getModel('catalog/product')->loadByAttribute('sku', $prodata[0]); if (!$product1) { //echo $prodata[0]." not avail <br>"; Mage::getSingleton('adminhtml/session')->addError(Mage::helper('corporate')->__("SKU not avail in row no {$i} in product csv")); $this->_redirect('*/*/'); return; } else { if ($product1->getStatus() != 1) { Mage::getSingleton('adminhtml/session')->addError(Mage::helper('corporate')->__("SKU not avail in row no {$i} in product csv")); $this->_redirect('*/*/'); return; } //echo $product1->getStatus().",".$prodata[0]."<br>"; } //echo $prodata[0].",".$prodata[1].",".$prodata[2]."<br>"; } $i++; } //} } //} if (isset($_FILES['cimage']['name']) && $_FILES['cimage']['name'] != '') { $uploader = new Varien_File_Uploader('cimage'); $uploader->setAllowedExtensions(array('png')); $uploader->setAllowRenameFiles(true); $uploader->setFilesDispersion(false); $fileName = $_FILES['cimage']['name']; $fileExt = strtolower(substr(strrchr($fileName, "."), 1)); $fileNamewoe = rtrim($fileName, $fileExt); $fileName = str_replace(' ', '', $data['shortcode']) . '.' . $fileExt; $imageFolderPath = Mage::getBaseDir('media') . DS . 'corporate' . DS . 'logos'; if (is_writable($imageFolderPath)) { if (file_exists($imageFolderPath . DS . $fileName)) { unlink($imageFolderPath . DS . $fileName); } $uploader->save($imageFolderPath, $fileName); $update_microsite = true; } else { $msg .= "Destination folder is not writable or does not exist."; throw new Exception($msg); } } $model = Mage::getModel('corporate/corporate'); if ($this->getRequest()->getParam('id')) { $model->load($this->getRequest()->getParam('id')); if ($model->getName() != $data['name'] || $model->getShortcode() != "" && $model->getShortcode() != $data['shortcode']) { $msg = "Cannot modify corporate name or short code"; throw new Exception($msg); } } else { if (!(isset($_FILES['cimage']['name']) && $_FILES['cimage']['name'] != '')) { $msg = "New corporate site - please upload logo"; throw new Exception($msg); } if (in_array($data['name'], self::$disallowed_names)) { $msg = "Site name reserved - please use a different name"; throw new Exception($msg); } $collection = $model->getCollection()->addFieldToFilter('name', $data['name'])->getFirstItem(); if ($collection->getId()) { $msg = "Company Name Already Exist"; throw new Exception($msg); } $collection = $model->getCollection()->addFieldToFilter('shortcode', $data['shortcode'])->getFirstItem(); if ($collection->getId()) { $msg = "Company Shortcode Already Exist"; throw new Exception($msg); } /* new model - allow modification of shortcode */ $model->setName($data['name']); $model->setShortcode($data['shortcode']); $model->setCreatedAt(now()); Mage::Log("setting shortcode " . $data['shortcode'] . "=>" . $model->getShortcode()); } $model->setShortcode($data['shortcode']); $model->setComment($data['comment']); if ($model->getStatus() != $data['status'] && $this->getRequest()->getParam('id')) { /* status changed - do the needful */ $update_microsite = true; } $model->setStatus($data['status']); $model->save(); /* create the microsite - if the logo is given */ if ($update_microsite) { if ($model->getStatus()) { Mage::helper('corporate')->createCorporateDirectory($model); } else { Mage::helper('corporate')->disableCorporateDirectory($model); } } /* create customer group if it does not exist */ $existing_customer_groups = getCustomerGroups(); $corporate = $data['shortcode']; if (!isset($existing_customer_groups[$corporate])) { $default_group = Mage::getModel('customer/group')->load($existing_customer_groups['General']); /* create this customer group */ $cust_group = Mage::getModel('customer/group'); $cust_group->setCustomerGroupCode($corporate); $cust_group->setTaxClassId($default_group->getTaxClassId()); $cust_group->save(); $msg .= "Created customer group " . $corporate . "</br>"; } else { $cust_group = Mage::getModel('customer/group')->load($existing_customer_groups[$corporate]); } /* Proccess employee csv file. csv file has 2 columns employee email (login id), approver email if login does not exist, create it Add login to customer group if user new or just added to group, email them. */ if ($uploader_emp) { list($success_emp, $errors_emp) = Mage::helper('corporate')->importCustomerApproverMap($cvFolderPath . DS . $uploader_emp->getUploadedFileName(), $corporate); $msg .= count($success_emp) . " employees successful " . count($errors_emp) . " failed</br>"; } // SENDING MAIL /* $translate = Mage::getSingleton('core/translate'); $template = Mage::getModel('core/email_template')->getCollection() ->addFieldToFilter('template_code', 'corporate_user_welcome_template') ->addFieldToFilter('template_type', 2) ->getData(); $senderName = Mage::getStoreConfig('trans_email/ident_support/name'); $senderEmail = Mage::getStoreConfig('trans_email/ident_support/email'); $sender = array( 'name' => $senderName, 'email' => $senderEmail ); $receiverEmail = $post['email']; $reciverName = $post['firstname'].' '.$post['lastname']; $emails = Mage::getModel('core/email_template'); $emails->sendTransactional( $template[0]['template_id'], $sender, $receiverName, $receiverEmail, array( 'contact_firstname' => $post['firstname'], 'contact_lastname' => $post['lastname'], 'contact_email' => $post['email'], 'telephone' => $post['telephone'], 'rate' => $post['rate'], 'comment' => $post['comment'] ), $storeId ); $translate->setTranslateInline(TRUE); */ /* Proccess product csv file. csv file has 2 columns product sku, price This is the group special price for the product */ if ($uploader_prd) { list($success_prd, $errors_prd) = Mage::helper('corporate')->importProductGroupPrice($cvFolderPath . DS . $uploader_prd->getUploadedFileName(), $corporate); $msg .= count($success_prd) . " products successful " . count($errors_prd) . " failed</br>"; /* generate the menu */ Mage::helper('corporate')->genNavigation($cust_group->getId(), Mage::getBaseDir() . DS . $corporate . DS . "navigation.xml"); } Mage::getSingleton('adminhtml/session')->addSuccess($msg); Mage::getSingleton('adminhtml/session')->setFormData(FALSE); if ($this->getRequest()->getParam('back')) { $this->_redirect('*/*/edit', array('id' => $model->getId())); return; } $this->_redirect('*/*/'); return; } catch (Exception $e) { Mage::getSingleton('adminhtml/session')->addError($e->getMessage()); Mage::getSingleton('adminhtml/session')->setFormData($data); Mage::Log("exception " . $e->getMessage()); $this->_redirect('*/*/edit', array('id' => $this->getRequest()->getParam('id'))); return; } } Mage::getSingleton('adminhtml/session')->addError(Mage::helper('corporate')->__('Unable to find item to save')); $this->_redirect('*/*/'); }