插入订单信息的程序执行?

2016-07-07 15:01 来源:www.chinab4c.com 作者:ecshop专家

前台下订单的时候,订单的数据信息到底是在 flow.php 还是在别的程序文件里执行 提交数据到
表 order_info 里呢?偶找了下flow.php 里
/* 插入订单表 */
$error_no = 0;
do
{
$order['order_sn'] = get_order_sn(); //获取新订单号
$GLOBALS['db']->autoExecute($GLOBALS['ecs']->table('order_info'), $order, 'INSERT');
只有这些,而lib_order.php 也没找到在哪里执行提交数据到表里语句的呢?偶向把市场价也提交到order_info
所以那位能指点下 应该在在哪里找这个程序代码 更改 呢?谢谢

回答:
你把市场价捞出来也没地方可用吧,更何况order_goods(table)里面已经有market_price这值了不是吗?

你把市场价捞出来也没地方可用吧,更何况order_goods(table)里面已经有market_price这值了不是吗?
denise92 发表于 2011-5-22 08:14



这个我知道,我既然想提交到数据库肯定是有用的咯,我就是想在后台的打印订单这里,把销售价改为显示“市场价”,因为偶是分销的,这里不好显示直接的销售价






那我会建议你针对打印的程式去做调整,将商品的价格栏位goods_price取代成market_price,或许订单页面也需要跟着修改~

EX: 开启: admin/order.php

找到 批量打印订单的判断式...elseif ($_REQUEST['act'] == 'operate')
{
........(约2984行)
  1. $row['formated_subtotal'] = price_format($row['goods_price'] * $row['goods_number']);
  2. $row['formated_goods_price'] = price_format($row['goods_price']);
复制代码


改成
  1. //$row['formated_subtotal'] = price_format($row['goods_price'] * $row['goods_number']);
  2. //$row['formated_goods_price'] = price_format($row['goods_price']);
  3. //将商品单价改成商品市价
  4. $row['formated_subtotal'] = price_format($row['market_price'] * $row['goods_number']);
  5. $row['formated_goods_price'] = price_format($row['market_price']);
复制代码


毕竟这些价格本来就已经有做在数据库中了,而你之所以想要这样改的原因是可能有开放供应商进入後台的订单管理,那麽是否直接针对供应商的权限去做相关的判断,只有他们的群组才能看到市价内容,而一般的管理员则是能看到正常的销售价,方便双方各自分析数据~
如果不考虑双方都要有正确的精确数字,那乾脆直接将售价&市价调成一样也是可以啦...




谢谢你那么耐心的指导
其实按照你这样的方式改,把订单的价格也改为市场价格了,我只能重新编辑个字段了,因为我是做分销的,而这个订单(配货单)是打印出来 跟商品一起发给买家的,所以不能给买家指导代理价格,只能改为 市场价,而按照你的方式改了 后面这个商品的总额是没变化的,必须在 includes/lib_order.php 里改,不过在里面'market_price'的值 无法读取出来,郁闷

怎么没人指点的呢

订单的内容是在flow.php页面的$order = array()里面存放的,通过调用autoExecute()函数实现插入数据库。你要改变提交订单数据,先找到“$order = array(”,以及其后的语句,就是最后提交的订单内容。autoExecute()函数在includees/cls_mysql.php

订单的内容是在flow.php页面的$order = array()里面存放的,通过调用autoExecute()函数实现插入数据库。你要改变提交订单数据,先找到“$order = array(”,以及其后的语句,就是最后提交的订单内容。autoExecute()函数在includees/cls_mysql.php

第一种方法:表order_info本身是没有market_price字段的。你如果要直接写入到数据库,那么要按照以下方式修改:
// 第一处修改,给表 order_info 添加字段,字段名称 market_price。
// 第二处修改,在文件flow.php里
//1487行左右,order_fee()包含了订单的各种价格,可以看lib_order.php文件有关该函数的部分。
$total = order_fee($order, $cart_goods, $c**ignee);
$order['market_price'] = $total['market_price'];// 添加市场价到订单信息

好了,修改好之后,后台取数据时,取出来即可!


第二种方法:也可以不修改数据库。后台取数据时,比如显示订单信息的时候,计算下订单的市场价格。可以参考 order_fee() 这个函数计算市场价的部分。可以使用 order_goods() 函数获得订单商品!

补充:

关于你不明白order是怎么插入到数据库的,其实这句代码实现了:
$GLOBALS['db']->autoExecute($GLOBALS['ecs']->table('order_info'), $order, 'INSERT');

请查看 cls_mysql.php 文件里,autoExecute() 方法。
这个方法先从order_info表里取出所有字段,然后遍历字段,从$order里取对应的键和值,最后构建sql语句,并执行sql语句完成插入。

谢谢各位的耐心指导,偶试试看上面的方式看,还有什么问题,再反馈,再次感谢大家