首页建站经验 解决ecshop当前订单发货数量不能超出订单商品数量

解决ecshop当前订单发货数量不能超出订单商品数量

最近接手了一个ecshop2.7.3版本的商城,发现后台发货时无法修改发货状态,然后查看库存发现没有缺货。于是开始追踪错误。“此单发货数量不能超出订单商品数量”提示的是这些文…

最近接手了一个ecshop2.7.3版本的商城,发现后台发货时无法修改发货状态,然后查看库存发现没有缺货。于是开始追踪错误。

“此单发货数量不能超出订单商品数量”提示的是这些文字,所以我先找到了languages/zh_cn/admin/order.php的语言配置文件。

第74行:$_LANG['act_ship_num'] = '此单发货数量不能超出订单商品数量';

查找调用此全局变量的页面,果然,对应的admin/order.php文件。

分析ecshop模板文件,order_delivery_info.htm

{foreach from=$goods.package_goods_list item=package}

-- {$package.goods_name}

{$package.goods_sn}

{$package.product_sn}

{$package.goods_attr_str}

{if $suppliers_list neq 0} //www.zuimoban.com

{$suppliers_name[$package.suppliers_id]|default:$lang.restaurant}

{/if}

{$package.storage}

{$package.order_send_number}

{$package.sended}

{/foreach}

send_number[{$goods.rec_id}][{$package.g_p}]

数组通过form表单传递到order.php?act=operate_post动作下。这个数组蛮别致的,个人理解是用来区分多个商品的信息,以免商品订单出现混淆。

追踪到order.php下的act=operate_post下,

/*------------------------------------------------------ */

//-- 操作订单状态(处理批量提交)

/*------------------------------------------------------ */

elseif ($_REQUEST['act'] == 'batch_operate_post')

{

/* 检查权限 */

admin_priv('order_os_edit');

/* 取得参数 */

$order_id = $_REQUEST['order_id']; // 订单id(逗号格开的多个订单id)

$operation = $_REQUEST['operation']; // 订单操作

$action_note= $_REQUEST['action_note']; // 操作备注

$order_id_list = explode(',', $order_id);

/* 初始化处理的订单sn */

$sn_list = array();

$sn_not_list = array();

好吧 一直往下分析……头晕眼花中终于找到了可疑目标

/* 发货数量与总量不符 */

if (!isset($value['package_goods_list']) || !is_array($value['package_goods_list']))

{

$sended = order_delivery_num($order_id, $value['goods_id'], $value['product_id']);

//echo $sended."
";

//echo $send_number[$value['rec_id']].'
';

//print_r($value);

if (($value['storage'] - $sended - $send_number[$value['rec_id']]) < 0)

{

/* 操作失败 */

$links[] = array('text' => $_LANG['order_info'], 'href' => 'order.php?act=info&order_id=' . $order_id);

sys_msg($_LANG['act_ship_num'], 1, $links);

}

}

else

{

/* 超值礼包 */

foreach ($goods_list[$key]['package_goods_list'] as $pg_key => $pg_value)

{

if (($pg_value['order_send_number'] - $pg_value['sended'] - $send_number[$value['rec_id']][$pg_value['g_p']]) < 0)

{

/* 操作失败 */

$links[] = array('text' => $_LANG['order_info'], 'href' => 'order.php?act=info&order_id=' . $order_id);

sys_msg($_LANG['act_ship_num'], 1, $links);

}

}

}

调试后发现数组$value中显示库存的数组id并非['goods_number']字段,而是['storage']。完结

本文来自网络,不代表1号站长-站长学院|资讯交流平台立场。转载请注明出处: https://www.1cn.cc/jianzhan/jingyan/17769.html
上一篇在PHP程序中使用Rust扩展的方法
下一篇 列举PHP的Yii 2框架的开发优势
admin

作者: admin

这里可以再内容模板定义一些文字和说明,也可以调用对应作者的简介!或者做一些网站的描述之类的文字或者HTML!

为您推荐

评论列表()

    联系我们

    联系我们

    0898-88888888

    在线咨询: QQ交谈

    邮箱: email@wangzhan.com

    工作时间:周一至周五,9:00-17:30,节假日休息

    关注微信
    微信扫一扫关注我们

    微信扫一扫关注我们

    关注微博
    返回顶部