public function do_delivery_form() { $s_account_info = es_session::get("account_info"); $account_id = intval($s_account_info['id']); $account_data = $GLOBALS['db']->getRow("select a.allow_delivery,s.name as name,a.account_name as account_name, a.supplier_id as supplier_id from " . DB_PREFIX . "supplier_account as a left join " . DB_PREFIX . "supplier as s on a.supplier_id = s.id where a.id = " . $account_id); if (intval($account_data['allow_delivery']) == 0) { showErr($GLOBALS['lang']['NO_DELIVERY_AUTH']); } $order_id = intval($_REQUEST['order_id']); $supplier_id = intval($GLOBALS['db']->getOne("select supplier_id from " . DB_PREFIX . "supplier_account where id = " . intval($s_account_info['id']))); $order_info = $GLOBALS['db']->getAll("select do.*,d.name,d.sub_name,doi.number,doi.delivery_status,doi.id as doiid from " . DB_PREFIX . "deal_order_item as doi left join " . DB_PREFIX . "deal as d on doi.deal_id = d.id left join " . DB_PREFIX . "deal_order as do on doi.order_id = do.id left join " . DB_PREFIX . "deal_location_link as l on l.deal_id = d.id where l.location_id in (" . implode(",", $s_account_info['location_ids']) . ") and do.id = " . $order_id . " and d.supplier_id = " . $supplier_id . " and do.is_delete = 0 and do.pay_status = 2 and d.is_delivery = 1"); if (!$order_info) { showErr($GLOBALS['lang']['NO_AUTH']); } $order_deals = $_REQUEST['order_deals']; $delivery_sn = htmlspecialchars(addslashes($_REQUEST['delivery_sn'])); $express_id = intval($_REQUEST['express_id']); $memo = htmlspecialchars(addslashes($_REQUEST['memo'])); if (!$order_deals) { showErr($GLOBALS['lang']["PLEASE_SELECT_DELIVERY_ITEM"]); } else { $deal_names = array(); foreach ($order_deals as $order_deal_id) { $order_deal_id = intval($order_deal_id); $deal_info = $GLOBALS['db']->getOne("select d.* from " . DB_PREFIX . "deal as d left join " . DB_PREFIX . "deal_order_item as doi on doi.deal_id = d.id where doi.id = " . $order_deal_id); $deal_name = $deal_info['sub_name']; array_push($deal_names, $deal_name); $rs = make_delivery_notice($order_id, $order_deal_id, $delivery_sn, $memo, $express_id); if ($rs) { $GLOBALS['db']->query("update " . DB_PREFIX . "deal_order_item set delivery_status = 1 where id = " . $order_deal_id); update_balance($order_deal_id, $deal_info['id']); } } $deal_names = implode(",", $deal_names); send_delivery_mail($delivery_sn, $deal_names, $order_id); send_delivery_sms($delivery_sn, $deal_names, $order_id); //开始同步订单的发货状态 $order_deal_items = $GLOBALS['db']->getAll("select * from " . DB_PREFIX . "deal_order_item where order_id = " . $order_id); foreach ($order_deal_items as $k => $v) { if (intval($GLOBALS['db']->getOne("select is_delivery from " . DB_PREFIX . "deal where id = " . $v['deal_id'])) == 0) { unset($order_deal_items[$k]); } } $delivery_deal_items = $order_deal_items; foreach ($delivery_deal_items as $k => $v) { if ($v['delivery_status'] == 0) { unset($delivery_deal_items[$k]); } } if (count($delivery_deal_items) == 0 && count($order_deal_items) != 0) { $GLOBALS['db']->query("update " . DB_PREFIX . "deal_order set delivery_status = 0 where id = " . $order_id); //未发货 } elseif (count($delivery_deal_items) > 0 && count($order_deal_items) != 0 && count($delivery_deal_items) < count($order_deal_items)) { $GLOBALS['db']->query("update " . DB_PREFIX . "deal_order set delivery_status = 1 where id = " . $order_id); //部分发 } else { $GLOBALS['db']->query("update " . DB_PREFIX . "deal_order set delivery_status = 2 where id = " . $order_id); //全部发 } $GLOBALS['db']->query("update " . DB_PREFIX . "deal_order set update_time = '" . get_gmtime() . "' where id = " . $order_id); order_log($account_data['name'] . $account_data['account_name'] . ":" . $GLOBALS['lang']["DELIVERY_SUCCESS"] . $delivery_sn . $_REQUEST['memo'], $order_id); showSuccess($GLOBALS['lang']["DELIVERY_SUCCESS"], 0, url("biz", "order#view", array("id" => $order_id))); } }
public function do_delivery() { $silent = intval($_REQUEST['silent']); $order_id = intval($_REQUEST['order_id']); $order_deals = $_REQUEST['order_deals']; $delivery_sn = $_REQUEST['delivery_sn']; $express_id = intval($_REQUEST['express_id']); $memo = $_REQUEST['memo']; if (!$order_deals) { if ($silent == 0) { $this->error(l("PLEASE_SELECT_DELIVERY_ITEM")); } } else { $deal_names = array(); foreach ($order_deals as $order_deal_id) { $deal_info = $GLOBALS['db']->getRow("select d.*,doi.id as doiid from " . DB_PREFIX . "deal as d left join " . DB_PREFIX . "deal_order_item as doi on doi.deal_id = d.id where doi.id = " . $order_deal_id); $deal_name = $deal_info['sub_name']; array_push($deal_names, $deal_name); $rs = make_delivery_notice($order_id, $order_deal_id, $delivery_sn, $memo, $express_id); if ($rs) { $GLOBALS['db']->query("update " . DB_PREFIX . "deal_order_item set delivery_status = 1,is_arrival = 0 where id = " . $order_deal_id); update_balance($order_deal_id, $deal_info['id']); } } $deal_names = implode(",", $deal_names); send_delivery_mail($delivery_sn, $deal_names, $order_id); send_delivery_sms($delivery_sn, $deal_names, $order_id); //开始同步订单的发货状态 $order_deal_items = M("DealOrderItem")->where("order_id=" . $order_id)->findAll(); foreach ($order_deal_items as $k => $v) { if (M("Deal")->where("id=" . $v['deal_id'])->getField("is_delivery") == 0) { //无需发货的商品 unset($order_deal_items[$k]); } } $delivery_deal_items = $order_deal_items; foreach ($delivery_deal_items as $k => $v) { if ($v['delivery_status'] == 0) { //未发货去除 unset($delivery_deal_items[$k]); } } if (count($delivery_deal_items) == 0 && count($order_deal_items) != 0) { $GLOBALS['db']->query("update " . DB_PREFIX . "deal_order set delivery_status = 0 where id = " . $order_id); //未发货 } elseif (count($delivery_deal_items) > 0 && count($order_deal_items) != 0 && count($delivery_deal_items) < count($order_deal_items)) { $GLOBALS['db']->query("update " . DB_PREFIX . "deal_order set delivery_status = 1 where id = " . $order_id); //部分发 } else { $GLOBALS['db']->query("update " . DB_PREFIX . "deal_order set delivery_status = 2 where id = " . $order_id); //全部发 } M("DealOrder")->where("id=" . $order_id)->setField("update_time", NOW_TIME); M("DealOrder")->where("id=" . $order_id)->setField("is_refuse_delivery", 0); $refund_item_count = $GLOBALS['db']->getOne("select count(*) from " . DB_PREFIX . "deal_order_item where (refund_status = 1 or is_arrival = 2) and order_id = " . $order_id); $coupon_item_count = $GLOBALS['db']->getOne("select count(*) from " . DB_PREFIX . "deal_coupon where refund_status = 1 and order_id = " . $order_id); if ($refund_item_count == 0 && $coupon_item_count == 0) { $GLOBALS['db']->query("update " . DB_PREFIX . "deal_order set refund_status = 0,is_refuse_delivery=0 where id = " . $order_id); } $msg = l("DELIVERY_SUCCESS"); //发货完毕,开始同步相应支付接口中的发货状态 if (intval($_REQUEST['send_goods_to_payment']) == 1) { $payment_notices = $GLOBALS['db']->getAll("select * from " . DB_PREFIX . "payment_notice where order_id = " . $order_id); foreach ($payment_notices as $k => $v) { $payment_info = $GLOBALS['db']->getRow("select * from " . DB_PREFIX . "payment where id = " . $v['payment_id']); if ($v['outer_notice_sn'] != '') { require_once APP_ROOT_PATH . "system/payment/" . $payment_info['class_name'] . "_payment.php"; $payment_class = $payment_info['class_name'] . "_payment"; $payment_object = new $payment_class(); if (method_exists($payment_object, "do_send_goods")) { $result = $payment_object->do_send_goods($v['id'], $delivery_sn); $msg = $msg . "[" . $payment_info['name'] . $result . "]"; } else { $msg = $msg . "[" . $payment_info['name'] . l("NOT_SUPPORT_SEND_GOODS") . "]"; } } else { $msg = $msg . "[" . $payment_info['name'] . l("NOT_TRADE_SN") . "]"; } } } $this->assign("jumpUrl", U("DealOrder/view_order", array("id" => $order_id))); //查询快递名 $express_name = M("Express")->where("id=" . $express_id)->getField("name"); require_once APP_ROOT_PATH . "system/model/deal_order.php"; order_log(l("DELIVERY_SUCCESS") . $express_name . $delivery_sn . $_REQUEST['memo'], $order_id); update_order_cache($order_id); distribute_order($order_id); $order_info = M("DealOrder")->getById($order_id); send_msg($order_info['user_id'], $deal_info['name'] . "等发货了,发货单号:" . $delivery_sn, "orderitem", $deal_info['doiid']); if ($silent == 0) { $this->success($msg); } } }
public function do_delivery() { $s_account_info = $GLOBALS['account_info']; $supplier_id = intval($s_account_info['supplier_id']); require_once APP_ROOT_PATH . "system/model/deal_order.php"; $order_item_table_name = get_supplier_order_item_table_name($supplier_id); $order_table_name = get_supplier_order_table_name($supplier_id); $id = intval($_REQUEST['id']); //发货商品的ID $delivery_sn = strim($_REQUEST['delivery_sn']); $memo = strim($_REQUEST['memo']); $express_id = intval($_REQUEST['express_id']); $location_id = intval($_REQUEST['location_id']); $order_id = $GLOBALS['db']->getOne("select order_id from " . $order_item_table_name . " where id = " . $id); $order_info = $GLOBALS['db']->getRow("select * from " . $order_table_name . " where id = '" . $order_id . "'"); if (empty($delivery_sn)) { $data['status'] = 0; $data['info'] = "请输入快递单号"; ajax_return($data); } $item = $GLOBALS['db']->getRow("select doi.* from " . $order_item_table_name . " as doi left join " . DB_PREFIX . "deal_location_link as l on doi.deal_id = l.deal_id where doi.id = " . $id . " and l.location_id in (" . implode(",", $s_account_info['location_ids']) . ")"); if ($item) { $rs = make_delivery_notice($order_id, $id, $delivery_sn, $memo, $express_id, $location_id); if ($rs) { $GLOBALS['db']->query("update " . DB_PREFIX . "deal_order_item set delivery_status = 1 where id = " . $id); } send_delivery_mail($delivery_sn, $item['name'], $order_id); send_delivery_sms($delivery_sn, $item['name'], $order_id); //开始同步订单的发货状态 $order_deal_items = $GLOBALS['db']->getAll("select * from " . DB_PREFIX . "deal_order_item where order_id = " . $order_id); foreach ($order_deal_items as $k => $v) { if ($v['delivery_status'] == 5) { unset($order_deal_items[$k]); } } $delivery_deal_items = $order_deal_items; foreach ($delivery_deal_items as $k => $v) { if ($v['delivery_status'] == 0) { unset($delivery_deal_items[$k]); } } if (count($delivery_deal_items) == 0 && count($order_deal_items) != 0) { $GLOBALS['db']->query("update " . DB_PREFIX . "deal_order set delivery_status = 0,update_time = '" . NOW_TIME . "' where id = " . $order_id); //未发货 } elseif (count($delivery_deal_items) > 0 && count($order_deal_items) != 0 && count($delivery_deal_items) < count($order_deal_items)) { $GLOBALS['db']->query("update " . DB_PREFIX . "deal_order set delivery_status = 1,update_time = '" . NOW_TIME . "' where id = " . $order_id); //部分发 } else { $GLOBALS['db']->query("update " . DB_PREFIX . "deal_order set delivery_status = 2,update_time = '" . NOW_TIME . "' where id = " . $order_id); //全部发 } order_log($item['name'] . "发货了,发货单号:" . $delivery_sn, $order_id); update_order_cache($order_id); distribute_order($order_id); send_msg($order_info['user_id'], $item['name'] . "发货了,发货单号:" . $delivery_sn, "orderitem", $item['id']); $data['status'] = 1; $data['info'] = "发货成功"; ajax_return($data); } else { $data['status'] = 0; $data['info'] = "非法的数据"; ajax_return($data); } }