如何以完全结算的方式导入客户;以编程方式发货地址?

时间:2014-11-10 18:04:25

标签: magento magento-1.9

如何以完全结算方式导入客户&以编程方式从csv发送地址?

我想从命令行运行php脚本。

2 个答案:

答案 0 :(得分:0)

您需要创建一个脚本:

  • 加载Magento应用程序一次。

  • 将.csv的每一行迭代为单个记录,或将所有记录加载到一个数组中,然后可以迭代。

  • 根据客户记录的Magento数据验证规则验证所有数据元素。

  • 使用导入记录的电子邮件地址检查是否存在客户记录。

  • 在电子邮件匹配或更新记录中跳过记录(无论您选择什么)。

  • 创建无匹配的客户记录。

  • 根据Magento的地址数据验证规则验证导入记录中的帐单邮寄地址。

  • 创建一个从该记录填充的类型记帐的地址,并将其标记为默认值(如果您希望如此标记)。

  • 根据Magento的地址数据验证规则验证导入记录中的送货地址。

  • 创建一个从该记录填充的运输类型的地址,并将其标记为默认值(如果您希望如此标记)。

这将导致您的建议。您可能会发现那些已经接近您正在寻找的脚本。

答案 1 :(得分:0)

脚本的框架如下所示:

require_once('../app/Mage.php');
Mage::app()->setCurrentStore(Mage::app()->getStore());

if ($_FILES['csv']['error'] == 0) {
    // import csv to array
}

foreach ($customers as $customer) {
    $email = /* email */;
    $newCustomer = Mage::getModel('customer/customer');
    $newCustomer->setWebsiteId( Mage::app()->getWebsite()->getId() );
    $newCustomer->setStore( Mage::app()->getStore() );
    $newCustomer->loadByEmail( $email );
    $exists = $newcustomer->getId();
    if(!$exists){
        $newCustomer->setEmail( $email );
        $newCustomer->setFirstname( /* first name */ );
        $newCustomer->setMiddlename( /* middle name */ );
        $newCustomer->setLastname( /* last name */ );

        // this creates a new password
        // importing a passwords is a whole other thing
        $newPassword = $newCustomer->generatePassword();
        $newCustomer->setPassword( $newPassword );
        $createdDate= new Zend_Date( /* date created */ );
        $newCustomer->setCreatedAt($createdDate->toString('Y-M-d H:m:s'));

        // save new customer
        try {
            $newCustomer->setConfirmation(null);
            $newCustomer->save();
        }

        catch (Exception $ex) {
            Zend_Debug::dump($ex->getMessage());
        }

        // create address to save

        $newAddress=array(
            'firstname'     => /* address first name */,
            'lastname'      => /* address last name */,
            'street'            => array(
                    '0' => /* address street line 1 */,
                    '1' => /* address street line 2 */,
            ),
            'city'          => /* address city */,
            'region_id'     => /* address region id */,
            'region'        => /* address region */,
            'postcode'      => /* address postcode */,
            'country_id'    => /* address country id */,
            'telephone'     => /* address telephone */,
        );

        // save address

        $address=Mage::getModel('customer/address');
        $address->setData($newAddress)
            ->setCustomerId($newCustomer->getId())
            ->setIsDefaultBilling('1')
            ->setIsDefaultShipping('1')
            ->setSaveInAddressBook('1');
        try {
            $address->save();
        }

        catch (Exception $ex) {
            Zend_Debug::dump($ex->getMessage());
        }
    }
}