/** * 改变订单中商品库存 * @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) { if ($is_dec) { //减库存 return change_morestorck_morecity_stock_jian($order_id); } else { //加库存 return change_morestorck_morecity_stock_jia($order_id); } return; /* 查询订单商品信息 */ switch ($storage) { case 0: $sql = "SELECT goods_id, SUM(send_number) AS num, MAX(extension_code) AS extension_code, product_id FROM " . $GLOBALS['ecs']->table('order_goods') . " WHERE order_id = '{$order_id}' AND is_real = 1 GROUP BY goods_id, product_id"; break; case 1: $sql = "SELECT goods_id, SUM(goods_number) AS num, MAX(extension_code) AS extension_code, product_id FROM " . $GLOBALS['ecs']->table('order_goods') . " WHERE order_id = '{$order_id}' AND is_real = 1 GROUP BY goods_id, product_id"; break; } $res = $GLOBALS['db']->query($sql); while ($row = $GLOBALS['db']->fetchRow($res)) { if ($row['extension_code'] != "package_buy") { if ($is_dec) { change_goods_storage($row['goods_id'], $row['product_id'], -$row['num']); } else { change_goods_storage($row['goods_id'], $row['product_id'], $row['num']); } $GLOBALS['db']->query($sql); } else { $sql = "SELECT goods_id, goods_number" . " FROM " . $GLOBALS['ecs']->table('package_goods') . " WHERE package_id = '" . $row['goods_id'] . "'"; $res_goods = $GLOBALS['db']->query($sql); while ($row_goods = $GLOBALS['db']->fetchRow($res_goods)) { $sql = "SELECT is_real" . " FROM " . $GLOBALS['ecs']->table('goods') . " WHERE goods_id = '" . $row_goods['goods_id'] . "'"; $real_goods = $GLOBALS['db']->query($sql); $is_goods = $GLOBALS['db']->fetchRow($real_goods); if ($is_dec) { change_goods_storage($row_goods['goods_id'], $row['product_id'], -($row['num'] * $row_goods['goods_number'])); } elseif ($is_goods['is_real']) { change_goods_storage($row_goods['goods_id'], $row['product_id'], $row['num'] * $row_goods['goods_number']); } } } } }
} } } if (isset($_POST['finish'])) { /* 完成 */ if ($step_act == 'add') { /* 订单改为已确认,(已付款) */ $arr['order_status'] = OS_CONFIRMED; $arr['confirm_time'] = gmtime(); if ($order['order_amount'] <= 0) { $arr['pay_status'] = PS_PAYED; $arr['pay_time'] = gmtime(); } update_order($order_id, $arr); if ($_CFG['use_storage'] == '1' && $_CFG['stock_dec_time'] == SDT_PLACE) { change_morestorck_morecity_stock_jian($order_id); } } /* 初始化提示信息和链接 */ $msgs = array(); $links = array(); /* 如果已付款,检查金额是否变动,并执行相应操作 */ $order = order_info($order_id); handle_order_money_change($order, $msgs, $links); /* 显示提示信息 */ if (!empty($msgs)) { sys_msg(join(chr(13), $msgs), 0, $links); } else { ecs_header("Location: order.php?act=info&order_id=" . $order_id . "\n"); exit; }