如何将订单参考更改为编号参考

Posted

技术标签:

【中文标题】如何将订单参考更改为编号参考【英文标题】:How to change the Order Reference to Number Reference 【发布时间】:2014-01-20 18:06:29 【问题描述】:

使用新版本的 Prestashop 1.5.2.0。我想将订单参考(字母)更改为字母数字值。我尝试在论坛中搜索并看到了这个论坛。不幸的是,它对我不起作用。

任何人都可以在整个应用程序中将订单参考(字母)更改为字母数字值。

我的意思是“AQMKATRQG”到“LD1001”并将其递增到“LD1002”我想将订单参考(字母)更改为字母数字值。我尝试在论坛中搜索并看到了这个论坛。不幸的是,它对我不起作用。

任何人都可以在整个应用程序中将订单参考(字母)更改为字母数字值。

我的意思是“AQMKATRQG”到“LD1001”并将其增加到“LD1002”

【问题讨论】:

【参考方案1】:

上述解决方案基本上是正确的,但如果您可以避免修改任何核心代码,您真的应该避免修改任何核心代码。在对 prestashop 或我的主题引擎进行任何升级后,我将所有的 mod 放在本地的一个特殊文件夹中,然后我将修改一一上传(在每个都经过测试之后)。

这些说明适用于 1.6.x 用户 - 但可能适用于 1.5.x - 我没有要测试的代码。

1) 创建一个名为 order.php 的文件并将下面的代码放入该文件中

2)接下来,将文件上传到/override/classes/order/order.php

3) 导航到 /cache 文件夹并删除文件 class_index.php(它将在下一个页面请求时重新创建)

<?php
/*
 *  RETURN ORDER REFERENCE TO SEQUENTIAL NUMERIC VALUE
 *
 *  2016 PrestaShop v1.6.1.x
 *  Override by obewanz
 *
 *  You can use the following SQL query to change the starting order no if desired
 *  where the number 101 is the next desired order number:
 *  ALTER TABLE `ps_orders` AUTO_INCREMENT = 101
 *  --------------------------------------------
 *  OPTION: (ALL NUMERIC)
 *  str_pad((int)$last_id + 1, 9, '000000000', STR_PAD_LEFT);
 *  OPTION SET TO ORIG 1.5.x STYLE REFERENCE NUMBERS: 
 *  str_pad((int)$last_id + 1, 6, '000000', STR_PAD_LEFT);
 */

Class Order extends OrderCore 
  public static function generateReference() 
    $last_id = Db::getInstance()->getValue('SELECT MAX(id_order)
                                            FROM '._DB_PREFIX_.'orders');
    return str_pad((int)$last_id + 1, 9, 'NR-000000', STR_PAD_LEFT);
  

您现在应该完成了,您的下一个订单将有一个类似的参考:NR-000101

代码 cmets 中的第二个“OPTION”将订单参考号返回到本质上是 PS 1.5.x 的那个 - (我在旧文件中引用了它。)

如果需要,我还在代码 cmets 中包含了适当的 SQL 语句来设置下一个订单号。

【讨论】:

【参考方案2】:

在 PrestaShop 1.6(在 v1.6.0.14 中测试并确认工作)中,您可以通过以下方法完成此操作。

    复制文件/classes/PaymentModule.php/override/classes/PaymentModule.php

    编辑文件/override/classes/PaymentModule.php如下。

第 337-341 行是一个代码块,应该如下所示:

if (!result)

  PrestaShopLogger::addLog('PaymentModule::validateOrder - Order cannot be created',
    3, null, 'Cart', (int)$id_cart, true);
  throw new PrestaShopException('Can\'t save Order');

在该代码块之后,立即插入以下两行代码:

$order->reference = str_pad($order->id, 9, '0', STR_PAD_LEFT);
$order->update();

    删除文件/cache/class_index.php,以便 Prestashop 自动重新创建此文件,同时考虑到新的覆盖文件。

    可以使用 phpMyAdmin 等工具手动更新 PrestaShop 数据库中的任何现有记录以使用数字参考。

我想这些步骤会与 PrestaShop v1.5 的步骤非常相似,但目前我还没有使用 PrestaShop v1.5 测试过这个解决方案。如果有人发现这个解决方案适用于 v1.5,也许他们可以在 cmets 中确认这一点。谢谢。

【讨论】:

以上是关于如何将订单参考更改为编号参考的主要内容,如果未能解决你的问题,请参考以下文章

如何将以下代码更改为 lambda 方法参考

php如何生成订单号

如何将自定义订单状态添加到 shopware 6

如何将在 shopware 6 中创建的订单的订单状态从开放更改为报价?

ABAP生产订单号码是哪张表

在 Woocommerce 中自动将订单状态从处理更改为完成