Example #1
0
 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('*/*/');
 }