dominicwatts/orderhistory

轻松将magento 1订单迁移到magento 2,并在客户账户中独立区域显示订单。在可能的情况下提供重新订购功能。

安装: 54

依赖项: 0

建议者: 0

安全: 0

星级: 2

关注者: 3

分支: 0

开放问题: 2

类型:magento2-module

1.0.2 2020-04-08 23:53 UTC

This package is auto-updated.

Last update: 2024-09-06 22:41:40 UTC


README

phpcs

PHPCompatibility

PHPStan

轻松将magento 1订单迁移到magento 2,并在客户账户中独立区域显示订单。在可能的情况下提供重新订购功能。

安装

步骤 1 - 在magento 1商店中,根据销售数据创建存档订单表

CREATE TABLE m1_sales_flat_order LIKE sales_flat_order; 
INSERT INTO m1_sales_flat_order SELECT * FROM sales_flat_order;

CREATE TABLE m1_sales_flat_order_address LIKE sales_flat_order_address; 
INSERT INTO m1_sales_flat_order_address SELECT * FROM sales_flat_order_address;

CREATE TABLE m1_sales_flat_order_item LIKE sales_flat_order_item; 
INSERT INTO m1_sales_flat_order_item SELECT * FROM sales_flat_order_item;

在仓库中包含基于magento 1示例数据的样本sql数据(./supplied/magento.sql

Screenshot

步骤 1.1 找到无效的列类型

SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE DATA_TYPE ='enum';
SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE DATA_TYPE ='char';

步骤 1.2 转换无效的列类型

ALTER TABLE `m1_sales_flat_order` CHANGE `column_name` `column_name` VARCHAR(255) NULL DEFAULT NULL;

步骤 2 - 从Magento 1导出以下表并导入到您的Magento 2数据库中

m1_sales_flat_order
m1_sales_flat_order_address
m1_sales_flat_order_item

使用 mysqldump 或类似工具

步骤 2.1 - Magento设置:升级错误

undefined index : <index>

检查新导入表的外键。可能需要删除。

SELECT * FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE WHERE REFERENCED_TABLE_NAME = <index>;

例如

SELECT * FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE WHERE REFERENCED_TABLE_NAME = 'core_store';

ALTER TABLE `m1_sales_flat_order` DROP FOREIGN KEY <fk_name>;

步骤 3 - 安装扩展

composer require dominicwatts/orderhistory

php bin/magento setup:upgrade

php bin/magento setup:di:compile

用法

Stores > Configuration > Xigen > Order History

需要少量配置

  • 将magento 1订单状态代码映射到其标签
    • 这是在magento 2前端显示的状态标签
  • 将magento 2商店ID映射到magento 1商店ID
    • 这是为了确保在多站点场景中正确检索订单

Screenshot

如果提供的客户电子邮件与登录的客户匹配,他们将看到他们的账户区域中的“以前订单”部分中的magento 1订单,如果找到匹配的产品,将提供重新订购功能。

我的账户 > 我以前的订单

Screenshot

已知问题

  • 需要将 m1_* 表中的enum列类型转换为varchar,因为magento 2不支持此列类型