以编程方式将订单从CSV导入Magento
我们正在从旧的,过时的销售点系统切换到仅使用Magento 1.7作为我们的POS。毫不意外的是,我们面临的挑战之一是如何在不造成灾难的情况下从旧系统到Mage获得近20年的记录。 撇开甚至迁移客户记录的挑战,我在此问题上关注的问题是如何将历史订单数据从旧POS迁移到Mage。当我们要谈论的订单记录很多时,我不确定100%的确切数字,但是我至少要说一百万。 这是我在考虑如何实现此目标方面的想法: 弄清楚如何格式化数据才能使Magento更好地使用它。我们是否能够以一种可行的格式将其从旧POS机中取出是值得怀疑的,但是让我们暂时假设它运行良好... 使用格式正确的历史数据创建一个.CSV文件 找到一种将.CSV $order逐行读入Magento 对象的方法-> save() 利润! 我的问题是我对如何逼近第2点和第3点有点困惑。我可以格式化从旧POS发出的数据,尽管它非常麻烦并且涉及Perl,但是我需要格式化,但是一旦有了.CSV文件(或此过程实际上可以使用的任何文件类型),我就不清楚我如何将其输入到Magento的订单对象中。 我已经完成了一些谷歌搜索工作,并列举了一些人使用Mage的order对象以编程方式导入订单的示例,但是很少有人讨论他们如何将前端购物车以外的数据源连接到所述对象。我一直在研究订单对象的版本: $id=1; // get Customer Id $customer = Mage::getModel('customer/customer')->load($id); $transaction = Mage::getModel('core/resource_transaction'); $storeId = $customer->getStoreId(); $reservedOrderId = Mage::getSingleton('eav/config')->getEntityType('order')->fetchNewIncrementId($storeId); $order = Mage::getModel('sales/order') ->setIncrementId($reservedOrderId) ->setStoreId($storeId) ->setQuoteId(0) ->setGlobal_currency_code('USD') ->setBase_currency_code('USD') ->setStore_currency_code('USD') ->setOrder_currency_code('USD'); // set Customer data $order->setCustomer_email($customer->getEmail()) ->setCustomerFirstname($customer->getFirstname()) ->setCustomerLastname($customer->getLastname()) ->setCustomerGroupId($customer->getGroupId()) ->setCustomer_is_guest(0) ->setCustomer($customer); …