ecshop2.7.3bug 此单发货数量不能超出订单商品数量
来源:互联网 发布:行程提醒软件 编辑:程序博客网 时间:2024/06/11 18:50
接手了一个ecshop2.7.3版本的商城,发现后台发货时无法修改发货状态,然后查看库存发现没有缺货。于是开始追踪错误。
将
调试后发现数组$value中显示库存的数组id并非['goods_number']字段,而是['storage']。完结
“此单发货数量不能超出订单商品数量”提示的是这些文字,所以我先找到了languages/zh_cn/admin/order.php的语言配置文件。
第74行:$_LANG['act_ship_num'] = '此单发货数量不能超出订单商品数量';
查找调用此全局变量的页面,果然,对应的admin/order.php文件。
分析模板文件,order_delivery_info.htm
{foreach from=$goods.package_goods_list item=package} <tr> <td>-- <a href="../goods.php?id={$package.goods_id}" target="_blank">{$package.goods_name}</a></td> <td>{$package.goods_sn}</td> <td>{$package.product_sn}</td> <td>{$package.goods_attr_str}</td> {if $suppliers_list neq 0} <td><div align="right">{$suppliers_name[$package.suppliers_id]|default:$lang.restaurant}</div></td> {/if} <td><div align="right">{$package.storage}</div></td> <td><div align="right">{$package.order_send_number}</div></td> <td><div align="right">{$package.sended}</div></td> <td><div align="right"><input name="send_number[{$goods.rec_id}][{$package.g_p}]" type="text" id="send_number_{$goods.rec_id}_{$package.g_p}" value="{$package.send}" size="10" maxlength="11" {$package.readonly}/></div></td> </tr> {/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."<br>";//echo $send_number[$value['rec_id']].'<br>';//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']。完结
- ecshop2.7.3bug 此单发货数量不能超出订单商品数量
- 销售订单发货后能否更改订单行项目数量?
- ajax 实现订单商品数量的增减及订单的删除进行异步更新界面
- 更新订单内多个商品的数量---在存在相同商品id时。
- 更新订单内多个商品的数量---在存在相同商品id时。
- Ant Design中模态框中订单金额随商品数量与商品类别动态变化的记录
- 商品数量排行榜
- vue商品数量加减
- 订单数量超过forecast数量问题
- 购物车数据模型(相同商品id,订单数量相加,数组改变)
- 数量
- 数量
- 修改相关商品显示数量
- angularJS商品添加数量加减
- 修改购物车商品数量
- SAP 限制出货数量小于销售订单数量
- android 编译错误--超出接口数量限制
- 数据泵导入下标超出数量问题解决
- 字符串匹配的Boyer-Moore算法
- inode
- 算法理解——统计二进制位1的个数
- 关于一些IP配置
- x264编码器的参数设置
- ecshop2.7.3bug 此单发货数量不能超出订单商品数量
- AS3 getDefinitionByName
- 直接拿来用!最火的Android开源项目(一)
- wince6.0驱动开发
- QQ透明皮肤:多层算法,一键适配各种背景 .
- 使用Maven
- linux系统服务
- ubuntu虚拟机中resolv.conf文件配置dns被覆盖的问题
- 怎么去阅读文献-转自小木虫