百分百源码网-让建站变得如此简单! 登录 注册 签到领金币!

主页 | 如何升级VIP | TAG标签

当前位置: 主页>网站教程>Ecshop教程> 解决ecshop当前订单发货数量不能超出订单商品数量
分享文章到:

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

发布时间:12/03 来源: 浏览: 关键词:
最近接手了一个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}   <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}  //www.zuimoban.com   <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']。完结
打赏

打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

百分百源码网 建议打赏1~10元,土豪随意,感谢您的阅读!

相关文章

共有9人阅读,期待你的评论!发表评论
昵称: 网址: 验证码: 点击我更换图片
最新评论

本文标签

广告赞助

能出一分力是一分吧!

订阅获得更多模板

本文标签

广告赞助

订阅获得更多模板