2014-03-28 4 views
-1

나는 쿠폰 코드의 CSV를 가지고 있는데, 나는 그것을 magento로 가져오고 싶습니다. 가져 오는 방법을 알려주세요. 내가 스크립트를 가지고 있지만 작동하지 않습니다 : - 내가 루트에서이 스크립트 및 CSV를 업로드magento admin에서 할인 쿠폰 CSV 파일을 가져 오는 방법

<?php 
$mageFilename = '/opt/bitnami/apps/magento/htdocs/app/Mage.php'; 

require_once $mageFilename; 

Varien_Profiler::enable(); 

Mage::setIsDeveloperMode(true); 

ini_set('display_errors', 1); 

umask(0); 
Mage::app('default'); 
Mage::register('isSecureArea', 1); 

function getAllWbsites(){ 
    //get all wabsites 
    $websites = Mage::getModel('core/website')->getCollection(); 
    $websiteIds = array(); 
    foreach ($websites as $website){ 
     $websiteIds[] = $website->getId(); 
    } 
    return $websiteIds; 
} 
//read comments for each line 
function generateRule($rulename, $desc, $status, $customerGroups, $couponCode, $fromDate, $toDate, $discountType, $discountAmount){ 

    $couponCheck = Mage::getModel('salesrule/rule')->getCollection() 
         ->addFieldToFilter('code',$couponCode) 
         ->load(); 
    $couponCheckArr = $couponCheck->getData(); 
    if(count($couponCheckArr)>0) { 
     return false; 
    } 

    $rule = Mage::getModel('salesrule/rule'); 
    $rule->setName($rulename); 
    $rule->setDescription($desc); 
    $rule->setFromDate($fromDate);//starting today 
    if($toDate!="") { 
     $rule->setToDate($toDate);//if you need an expiration date 
    } 
    $rule->setCouponCode($couponCode); 
    $rule->setUsesPerCoupon(1);//number of allowed uses for this coupon 
    $rule->setUsesPerCustomer(1);//number of allowed uses for this coupon for each customer 
    $customerGroups = explode(',',$customerGroups); 
    $rule->setCustomerGroupIds($customerGroups);//if you want only certain groups replace getAllCustomerGroups() with an array of desired ids 
    $rule->setIsActive($status); 
    $rule->setStopRulesProcessing(0);//set to 1 if you want all other rules after this to not be processed 
    $rule->setIsRss(0);//set to 1 if you want this rule to be public in rss 
    $rule->setIsAdvanced(1);//have no idea what it means :) 
    $rule->setProductIds(''); 
    $rule->setSortOrder(0);// order in which the rules will be applied 

    $rule->setSimpleAction($discountType); 
    //all available discount types 
    //by_percent - Percent of product price discount 
    //by_fixed - Fixed amount discount 
    //cart_fixed - Fixed amount discount for whole cart 
    //buy_x_get_y - Buy X get Y free (discount amount is Y) 

    $rule->setDiscountAmount($discountAmount);//the discount amount/percent. if SimpleAction is by_percent this value must be <= 100 
    $rule->setDiscountQty(0);//Maximum Qty Discount is Applied to 
    $rule->setDiscountStep(0);//used for buy_x_get_y; This is X 
    $rule->setSimpleFreeShipping(0);//set to 1 for Free shipping 
    $rule->setApplyToShipping(0);//set to 0 if you don't want the rule to be applied to shipping 
    $rule->setWebsiteIds(getAllWbsites());//if you want only certain websites replace getAllWbsites() with an array of desired ids 

    $conditions = array(); 
    $conditions[1] = array(
    'type' => 'salesrule/rule_condition_combine', 
    'aggregator' => 'all', 
    'value' => 1, 
    'new_child' => '' 
    ); 

    $rule->setData('conditions',$conditions); 
    $rule->loadPost($rule->getData()); 
    $rule->setCouponType(2); 
    if($rule->save()) { 
     return true; 
    } 
    else { 
     return false; 
    } 

} 

$fp = fopen('coupons-feed.csv','r') or die("can't open file"); 
$count = 0; 
$countNotImpt = 0; 
$i = 0; 
while($csv_line = fgetcsv($fp,1024,"\t")) { 
    if($i>0) { 
     $OneTime = $csv_line[0]; 
     $Name = $csv_line[1]; 
     $AlternateCode = $csv_line[2]; 
     $DiscountType = $csv_line[3]; 
     $MinCartValue = $csv_line[4]; 
     $ProductsAssigned = $csv_line[5]; 
     $Limitedtoone = $csv_line[6]; 
     $ExcludeProducts = $csv_line[7]; 
     $ExpirationDate = $csv_line[8]; 
     $DateCreated = $csv_line[9]; 
     if(generateRule($OneTime,$Name,$AlternateCode,$DiscountType,$MinCartValue,$ProductsAssigned,$Limitedtoone,$ExcludeProducts $ExpirationDate,$DateCreated)) { 
      $count++; 
     } 
     else{ 
      $countNotImpt++; 
     } 

    } 

    $i++; 
} 
fclose($fp) or die("can't close file"); 
echo $count.' coupon successfully added.<br>'; 
echo $countNotImpt.' coupon already exits.<br>'; 

?> 

. 하지만 작동하지 않습니다. 이 새장에 대해 말해주세요. 나는 새 마젠타 색입니다.

+0

어떤 오류가 발생합니까? – Marius

+0

오류가 발생하지 않습니다. 실행되지 않았습니다. –

답변

1

@Brar Kirmal, 아래 스크립트를 사용해 볼 수 있습니다. 프로젝트에서 시도 할 수있는 프로젝트에이 스크립트를 만들었습니다.

$mageFilename = 'Mage.php'; // it may different as per the location of this file 
require_once $mageFilename; 
Varien_Profiler::enable(); 
Mage::setIsDeveloperMode(true); 
ini_set('display_errors', 1);  
umask(0); 
Mage::app('default'); 
Mage::register('isSecureArea', 1); 

function getAllWbsites(){ 
    //get all wabsites 
    $websites = Mage::getModel('core/website')->getCollection(); 
    $websiteIds = array(); 
    foreach ($websites as $website){ 
     $websiteIds[] = $website->getId(); 
    } 
    return $websiteIds; 
} 
//read comments for each line 
function generateRule($rulename, $desc, $status, $customerGroups, $couponCode, $fromDate, $toDate, $discountType, $discountAmount){ 

    $couponCheck = Mage::getModel('salesrule/rule')->getCollection() 
         ->addFieldToFilter('code',$couponCode) 
         ->load(); 
    $couponCheckArr = $couponCheck->getData(); 
    if(count($couponCheckArr)>0) { 
     return false; 
    } 

    $rule = Mage::getModel('salesrule/rule'); 
    $rule->setName($rulename); 
    $rule->setDescription($desc); 
    $rule->setFromDate($fromDate);//starting today 
    if($toDate!="") { 
     $rule->setToDate($toDate);//if you need an expiration date 
    } 
    $rule->setCouponCode($couponCode); 
    $rule->setUsesPerCoupon(1);//number of allowed uses for this coupon 
    $rule->setUsesPerCustomer(1);//number of allowed uses for this coupon for each customer 
    $customerGroups = explode(',',$customerGroups); 
    $rule->setCustomerGroupIds($customerGroups);//if you want only certain groups replace getAllCustomerGroups() with an array of desired ids 
    $rule->setIsActive($status); 
    $rule->setStopRulesProcessing(0);//set to 1 if you want all other rules after this to not be processed 
    $rule->setIsRss(0);//set to 1 if you want this rule to be public in rss 
    $rule->setIsAdvanced(1);//have no idea what it means :) 
    $rule->setProductIds(''); 
    $rule->setSortOrder(0);// order in which the rules will be applied 

    $rule->setSimpleAction($discountType); 
    //all available discount types 
    //by_percent - Percent of product price discount 
    //by_fixed - Fixed amount discount 
    //cart_fixed - Fixed amount discount for whole cart 
    //buy_x_get_y - Buy X get Y free (discount amount is Y) 

    $rule->setDiscountAmount($discountAmount);//the discount amount/percent. if SimpleAction is by_percent this value must be <= 100 
    $rule->setDiscountQty(0);//Maximum Qty Discount is Applied to 
    $rule->setDiscountStep(0);//used for buy_x_get_y; This is X 
    $rule->setSimpleFreeShipping(0);//set to 1 for Free shipping 
    $rule->setApplyToShipping(0);//set to 0 if you don't want the rule to be applied to shipping 
    $rule->setWebsiteIds(getAllWbsites());//if you want only certain websites replace getAllWbsites() with an array of desired ids 

    $conditions = array(); 
    $conditions[1] = array(
    'type' => 'salesrule/rule_condition_combine', 
    'aggregator' => 'all', 
    'value' => 1, 
    'new_child' => '' 
    ); 

    $rule->setData('conditions',$conditions); 
    $rule->loadPost($rule->getData()); 
    $rule->setCouponType(2); 
    if($rule->save()) { 
     return true; 
    } 
    else { 
     return false; 
    } 

} 

$fp = fopen('coupon.csv','r') or die("can't open file");// replace it with your file name and location 
$count = 0; 
$countNotImpt = 0; 
$i = 0; 
while($csv_line = fgetcsv($fp,1024,"\t")) { 
    if($i>0) { 
     $rulename = $csv_line[0]; 
     $desc = $csv_line[1]; 
     $status = $csv_line[2]; 
     $customerGroups = $csv_line[3]; 
     $couponCode = $csv_line[4]; 
     $fromDate = $csv_line[5]; 
     $toDate = $csv_line[6]; 
     $discountType = $csv_line[7]; 
     $discountAmount = $csv_line[8]; 
     if(generateRule($rulename, $desc, $status, $customerGroups, $couponCode, $fromDate, $toDate, $discountType, $discountAmount)) { 
      $count++; 
     } 
     else{ 
      $countNotImpt++; 
     } 

    } 

    $i++; 
} 
fclose($fp) or die("can't close file"); 
echo $count.' coupon successfully added.<br>'; 
echo $countNotImpt.' coupon already exits.<br>';