-1

我有一个优惠券代码的csv,我想将它导入magento。请帮助我如何导入它。我有一个脚本,但它不起作用:-

<?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>';

?>

我在 root 上上传了这个脚本和 csv。但它不工作。请告诉我这个,因为我是 magento 的新手。

4

1 回答 1

1

@Brar Kirmal, you can try the below script, I created this script for one of my project you can try in your project.

$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>';
于 2014-03-28T09:06:27.667 回答