收银单长久化,Ecshop系统增多免运费赠品后购物

flow.php

Atitit. 订单管理 收银单持久化 功能设计  基于ecshop订单结构

 代码如下

 

/* 添加赠品到购物车 */
foreach ($favourable['gift'] as $gift)
{
    if (in_array($gift['id'], $_POST['gift']))
    {
        add_gift_to_cart($act_id, $gift['id'], $gift['price']);
    }
}

 

出问题的地方正是函数“add_gift_to_cart”,找到函数的定义,仍在在flow.php文件,

1. 54.order_info  订单 数据结构1

我把该函数修改后的源码贴出来,大家对照一下就明白了:

2. Ecshop 的订单api1

 代码如下

2.1. 生成订单 code by1

function add_gift_to_cart($act_id, $id, $price)
{
    $sql = "INSERT INTO " . $GLOBALS['ecs']->table('cart') . " (" .
                "user_id, session_id, goods_id, goods_sn, goods_name, market_price, goods_price, ".
                "goods_number, is_real, extension_code, parent_id, is_gift, rec_type, is_shipping ) ".
            "SELECT '$_SESSION[user_id]', '" . SESS_ID . "', goods_id, goods_sn, goods_name,

2.2. 相关文件路径2

market_price, ".
                "'$price', 1, is_real, extension_code, 0, '$act_id', '" . CART_GENERAL_GOODS . "' ,

2.3. 取得订单信息 function order_info($order_id, $order_sn = '')2

is_shipping " .
            "FROM " . $GLOBALS['ecs']->table('goods') .
            " WHERE goods_id = '$id'";
    $GLOBALS['db']->query($sql);
}

2.4. 取得订单商品function order_goods($order_id)2

这样就很好的解决了Ecshop系统添加免运费赠品后,购物车变为收取运费的bug这个问题了。

2.5. 取得订单总金额  function order_amount($order_id, $include_gift = true)2

2.6. 修改订单 function update_order($order_id, $order)3

2.7. * 订单退款order_refund(3

2.8. * 合并订单merge_order4

2.9. * 改变订单中商品库存change_order_goods_storage4

3. Ati order api4

3.1. 生成订单insert /save4

4. 高级功能4

 

1. 54.order_info  订单 数据结构

参考备注

 

 

2. Ecshop 的订单api

 

2.1. 生成订单 code by

flow.php

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

//-- 完成所有订单操作,提交到数据库

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

elseif ($_REQUEST['step'] == 'done')

{

 

    /* 插入订单表 */

    $error_no = 0;

    do

    {

        $order['order_sn'] = get_order_sn(); //获取新订单号

        $GLOBALS['db']->autoExecute($GLOBALS['ecs']->table('order_info'), $order, 'INSERT');

2.2. 相关文件路径

D:wampwwwecsxincludeslib_order.php

/**

 * 取得订单信息

 * @param   int     $order_id   订单id(如果order_id > 0 就按id查,否则按sn查)

 * @param   string  $order_sn   订单号

 * @return  array   订单信息(金额都有相应格式化的字段,前缀是formated_)

 */

 

作者:: 老哇的爪子 Attilax 艾龙,  EMAIL:1466519819@qq.com

转载请注明来源: 

 

2.3. 取得订单信息 function order_info($order_id, $order_sn = '')

 

/**

 * 取得订单商品

 * @param   int     $order_id   订单id

 * @return  array   订单商品数组

 */

2.4. 取得订单商品function order_goods($order_id)

/**

 * 取得订单总金额

 * @param   int     $order_id   订单id

 * @param   bool    $include_gift   是否包括赠品

 * @return  float   订单总金额

 */

2.5. 取得订单总金额  function order_amount($order_id, $include_gift = true)

{

    $sql = "SELECT SUM(goods_price * goods_number) " .

            "FROM " . $GLOBALS['ecs']->table('order_goods') .

            " WHERE order_id = '$order_id'";

    if (!$include_gift)

    {

        $sql .= " AND is_gift = 0";

    }

 

    return floatval($GLOBALS['db']->getOne($sql));

}

 

 

/**

 * 修改订单

 * @param   int     $order_id   订单id

 * @param   array   $order      key => value

 * @return  bool

 */

2.6. 修改订单 function update_order($order_id, $order)

{

    return $GLOBALS['db']->autoExecute($GLOBALS['ecs']->table('order_info'),

        $order, 'UPDATE', "order_id = '$order_id'");

}

 

 

/**

2.7.  * 订单退款order_refund(

 * @param   array   $order          订单

 * @param   int     $refund_type    退款方式 1 到帐户余额 2 到退款申请(先到余额,再申请提款) 3 不处理

 * @param   string  $refund_note    退款说明

 * @param   float   $refund_amount  退款金额(如果为0,取订单已付款金额)

 * @return  bool

 */

function order_refund($order, $refund_type, $refund_note, $refund_amount = 0)

{

 

 

/**

2.8.  * 合并订单merge_order

 * @param   string  $from_order_sn  从订单号

 * @param   string  $to_order_sn    主订单号

 * @return  成功返回true,失败返回错误信息

 */

function merge_order($from_order_sn, $to_order_sn)

 

 

/**

2.9.  * 改变订单中商品库存change_order_goods_storage

 * @param   int     $order_id   订单号

 * @param   bool    $is_dec     是否减少库存

 * @param   bool    $storage     减库存的时机,1,下订单时;0,发货时;

 */

function change_order_goods_storage($order_id, $is_dec = true, $storage = 0)

 

 

3. Ati order api

3.1. 生成订单insert /save 

来源于sql与orm的api继承。。

 

 

4. ---code

 

public class OrderService extends absService {

 

public static void main(String[] args) {

final long time_intFmt = new Date().getTime() / 1000;

System.out.println(time_intFmt);

OrderService os = IocX4casher.getBean(OrderService.class);

os.insert(new HashMap() {

{

this.put("good_amount", 12.50);

this.put("add_time", time_intFmt);

this.put("confirm_time", time_intFmt);

this.put("order_sn",filex.getUUidName());

}

});

System.out.println("--f");

}

 

@Inject

DBX dx;

 

public int insert(Map order) {

String sql = "insert into ecs_order_info(order_sn,order_status,shipping_status,pay_status,goods_amount,add_time,confirm_time,agency_id,inv_type,tax,discount)values('@order_sn@',1,1,1,@good_amount@,@add_time@,@confirm_time@,0,0,0,0) ";

 

sql = SqlFormatter.exe(sql, order);

System.out.println(sql);

// DBX IocX4casher.getBean(DBX.class)

dx.execSql(sql);

return 0;

 

}

 

 

5. 高级功能

错误的金额----  太小,太大的的数

审核机制...(可以只使用在太小,太大金额或者别的异常的情形哈)

 

 

参考

ECSHOP 数据库结构说明 (适用版本v2.7.3).htm

 

 

 

本文由365bet体育在线官网发布于关于计算机,转载请注明出处:收银单长久化,Ecshop系统增多免运费赠品后购物

TAG标签:
Ctrl+D 将本页面保存为书签,全面了解最新资讯,方便快捷。