public static function createorderFromPurchase($params) { $payment = $params['payment']; $ShipLogis = $params['ShipLogis']; $ship = $params['ship']; $orderIdArr = array(); $kd = 0; foreach ($params['purchaseGoods'] as $k => $purchase) { $sellerID = $purchase['SellerID']; $min_price = isset($purchase['MinTurnover']) ? $purchase['MinTurnover'] : 0; //获取经销商订单折扣率--商城订单 $discount = PapOrderDiscount::model()->find(array("condition" => " OrderType = 1")); if (!is_null($discount)) { if ($payment == 1) { $dis = $discount['OrderAlipay']; } else { if ($payment == 2) { $dis = $discount['OrderLogis']; } } if (isset($dis) && !empty($dis)) { $dis = $dis; } else { $dis = 100; } } else { $dis = 100; } $orderArr = array(); $purchaseIdArr = array(); $goodsPrice = 0; $shipCost = 0; $totalPrice = 0; $listCount = 0; $count = 0; $amountlist = 0; //循环获得商品总价 foreach ($purchase["GoodsList"] as $list) { $listCount += $list['Quantity']; if ($list['ProPrice']) { $count += $list['ProPrice'] * $list['Quantity']; $counts += round($list['ProPrice'] * $purchase['discount'] / 100, 2) * $list['Quantity']; } else { $count += $list['Price'] * $list['Quantity']; $counts += round($list['Price'] * $purchase['discount'] / 100, 2) * $list['Quantity']; } } //生成平摊金额 if ($min_price && round($count * $dis / 100, 2) < $min_price) { $minus = round(($min_price - $count) / $listCount, 2); // $list['ProPrice']=$list['ProPrice']+$minus; $amountlist += $count + $minus * $listCount; if ($amountlist < $min_price) { $amountlist = $min_price; } } else { $amountlist += round($count * $dis / 100, 2); //$list['ProPrice']=round(($list['ProPrice'] + $minus)*$dis/100,2); $minus = 0; } $order_sn = self::gen_order_sn(); $orderArr["order"] = array("OrderSN" => "DD" . $order_sn, "OrderName" => "嘉配订单:DD" . $order_sn, "SellerID" => $purchase["SellerID"], "SellerName" => $purchase["SellerName"], "BuyerID" => Yii::app()->user->getOrganID(), "BuyerName" => $purchase["BuyerName"], "Payment" => $payment, "OrderType" => 1, 'Discount' => $dis, "ShipLogis" => $ShipLogis[$kd], "Status" => $payment == 1 ? 1 : 2, "CreateTime" => time(), "UpdateTime" => time()); $orderArr["address"] = array("ShippingName" => $ship['ContactName'], "ZipCode" => $ship['ZipCode'], "Mobile" => $ship['Phone'], "Province" => $ship['State'], "City" => $ship['City'], "Area" => $ship['District'], "Address" => $ship['Address'], "CreateTime" => time()); foreach ($purchase["GoodsList"] as $key => $list) { // $list = $list->getAttributes(); if ($min_price && $counts < $min_price) { $minus = round(($min_price - $count) / $listCount, 2); $list['ProPrice'] = round($list['ProPrice'] * $dis / 100, 2); // $list['ProPrice'] = $list['ProPrice'] + $minus; } else { $list['ProPrice'] = round(($list['ProPrice'] + $minus) * $dis / 100, 2); } //获取商品oe $oes = PapGoods::getOENOSByGoodsID($list['GoodsID']); $data = array("GoodsID" => $list['GoodsID'], "GoodsNum" => $list['GoodsNum'], "GoodsOE" => $oes ? $oes : $list['GoodsOE'], "GoodsName" => $list['GoodsName'], "CpName" => $list['CpName'], "Brand" => $list['Brand'], "Price" => $list['Price'], "ProPrice" => $list['ProPrice'], "Quantity" => $list['Quantity'], "ShipCost" => $list['ShipCost'] * $list['Quantity'], "GoodsAmount" => $list['ProPrice'] ? $list['ProPrice'] * $list['Quantity'] : $list['Price'] * $list['Quantity'], "Version" => $list['Version'], "CreateTime" => time(), "UpdateTime" => time()); $goodsPrice += $data['GoodsAmount']; $shipCost += $data['ShipCost']; $totalPrice = $goodsPrice + $shipCost; //订单金额(商品总价+物流总价) //订单实付金额折扣率 $amountPrice = $amountlist; //商品总价 $orderArr['order']['Discount'] = '100%'; if ($orderArr["goodsList"][$list['GoodsID']]) { $orderArr["goodsList"][$list['GoodsID']]['GoodsAmount'] += $data['GoodsAmount']; $orderArr["goodsList"][$list['GoodsID']]['Quantity'] += $data['Quantity']; } else { $orderArr["goodsList"][$list['GoodsID']] = $data; } $purchaseIdArr[] = $list['purchaseID']; } $realPrice = $amountPrice + $shipCost; //实付金额:折后价+物流费 $orderArr["order"]["GoodsAmount"] = $goodsPrice; $orderArr["order"]["ShipCost"] = $shipCost; $orderArr["order"]["TotalAmount"] = $totalPrice; //实付金额 $orderArr["order"]["RealPrice"] = $realPrice; //订单金额 $orderId = OrderService::create($orderArr); $orderIdArr[] = $orderId; if ($orderId) { //将订单号添加到purchase中 self::addOrderToPurchase($orderId, $purchaseIdArr); } $kd++; } $orderIdStr = implode(',', $orderIdArr); return $orderIdStr; }
public static function createorder($quoID, $schID, $payment, $address) { $sql_findQuo = 'select * from pap_quotation where QuoID=' . $quoID; $Quoinfo = self::excutesql(array('sql' => $sql_findQuo, 'db' => 'pap')); $Quoinfo = $Quoinfo[0]; //获取方案信息 $sql_findshem = 'select * from pap_quotation_scheme where SchID=' . $schID; $schemeinfo = self::excutesql(array('sql' => $sql_findshem, 'db' => 'pap')); $schemeinfo = $schemeinfo[0]; //获取方案对应的商品 $sql_goods = 'select * from pap_quotation_goods where SchID=' . $schID; $goodsinfo = self::excutesql(array('sql' => $sql_goods, 'db' => 'pap')); //获取商品数量,以便生成均价 $totalnum = 0; //总数量 $lmstotal = 0; //总价 $factdiscount = 100; $discount = PapOrderDiscount::model()->find('OrderType=:OrderType', array(':OrderType' => 2)); if ($discount) { if ($payment == 1) { $factdiscount = $discount['OrderAlipay'] ? $discount['OrderAlipay'] : 100; } else { if ($payment == 2) { $factdiscount = $discount['OrderLogis'] ? $discount['OrderLogis'] : 100; } } } else { $factdiscount = 100; } $totalgoods; foreach ($goodsinfo as $kk => $value) { if (!empty($value['Version'])) { $_sql_find_version = 'select Info from pap_goods_version where GoodsID=' . $value['GoodsID'] . ' and Version=' . $value['Version']; $goods_versi = Yii::app()->papdb->createCommand($_sql_find_version)->queryRow(); $goodsbyid = json_decode($goods_versi['Info'], true); $oes; if ($goodsbyid['oeno']) { if (!is_array($goodsbyid['oeno'][0])) { $oes = implode('、', $goodsbyid['oeno']); } } else { $oes = PapGoods::getOENOSByGoodsID($value['GoodsID']); } } else { $goodsbyid = PapGoods::model()->findByPK($value['GoodsID']); $oes = PapGoods::getOENOSByGoodsID($value['GoodsID']); } if ($goodsbyid) { $lmstotal += round($value['Price'] * $value['Num'] * $factdiscount / 100, 2); $ppprice = $value['Price'] * $factdiscount / 100; $totalnum += $value['Num']; $totalgoods[$kk] = array("GoodsID" => $value['GoodsID'], "GoodsNum" => $goodsbyid['GoodsNO'], "GoodsOE" => $oes ? $oes : '', "GoodsName" => $goodsbyid['Name'], "CpName" => $goodsbyid['StandCode'] ? self::getCpName($goodsbyid['StandCode']) : '', "Brand" => self::getBrand($goodsbyid['BrandID']), "Price" => $goodsbyid['Price'], "ProPrice" => round($ppprice, 2), "Quantity" => $value['Num'], "GoodsAmount" => round($value['Num'] * $ppprice, 2), "CreateTime" => time(), "UpdateTime" => time(), "Version" => $goodsbyid['Version']); } } //获取经销商最小价格 $min_price = PapOrderMinTurnover::model()->find('OrganID=:OrganID', array(':OrganID' => $Quoinfo['DealerID'])); $min_price = $min_price['MinTurnover']; //获取经销商信息 $sql_dealer = 'select * from jpd_organ where ID=' . $Quoinfo['DealerID']; $dealerinfo = self::excutesql(array('sql' => $sql_dealer, 'db' => 'jpd')); $dealerinfo = $dealerinfo[0]; //生成订单编号 $order_sn = self::gen_order_sn(); // 修改询价单状态 $updateinquiry = PapInquiry::model()->updateByPK($Quoinfo['InquiryID'], array('Status' => 2)); //修改别的报价单状态,改为已拒绝 $sql_dppend = 'select * from pap_quotation where InquiryID=' . $Quoinfo['InquiryID']; $dppall = self::excutesql(array('sql' => $sql_dppend, 'db' => 'pap')); foreach ($dppall as $keyy => $valuee) { if ($valuee['QuoID'] != $quoID) { PapQuotation::model()->updateByPK($valuee['QuoID'], array('Status' => 4)); } } if ($updateinquiry != 1) { //确认询价单失败 return array('success' => false, 'msg' => 'check inquiry fail', 'QuoID' => $quoID, 'data' => '确认询价单失败'); exit; } //修改方案状态 $updateschemsql = 'update pap_quotation_scheme set Status="2" where SchID=' . $schID; $updateschem = Yii::app()->papdb->createCommand($updateschemsql)->execute(); if ($updateschem != 1) { //确认报价单方案失败 return array('success' => false, 'msg' => 'check quo scheme fail', 'QuoID' => $quoID, 'data' => '确认报价单方案失败'); exit; } // 修改报价单状态 $discountdesc = self::getpriceratio($Quoinfo['DealerID'], $Quoinfo['ServiceID']); $updateQuo = PapQuotation::model()->updateByPK($quoID, array('Status' => 2, 'Discount' => $discountdesc['type'] . ',' . $discountdesc['discount'])); if ($updateQuo != 1) { //更新报价单状态失败 return array('success' => false, 'msg' => 'update quo status fail', 'QuoID' => $quoID, 'data' => '更新报价单状态失败'); exit; } //生成平摊金额 $amountlist = 0; $minus = 0; if ($min_price && $min_price > $lmstotal) { $minus = round(($min_price - $lmstotal) / $totalnum, 2); $amountlist = $lmstotal + $minus * $totalnum; if ($amountlist < $min_price) { $amountlist = $min_price; } } else { $amountlist += $lmstotal; } $find_lsm_orgname = 'select OrganName from jpd_organ where ID=' . $Quoinfo['ServiceID']; $lms_orgname = Yii::app()->jpdb->createCommand($find_lsm_orgname)->queryRow(); $params = array("OrderSN" => "DD" . $order_sn, "OrderName" => "嘉配订单:DD" . $order_sn, "SellerID" => $dealerinfo["ID"], "OrganID" => $dealerinfo["ID"], "SellerName" => $dealerinfo["OrganName"], "BuyerID" => $Quoinfo['ServiceID'], "BuyerName" => $lms_orgname['OrganName'], "Payment" => $payment, "OrderType" => 2, 'Discount' => $factdiscount, 'GoodsAmount' => $amountlist, 'ShipCost' => $schemeinfo['ShipFee'], 'TotalAmount' => $amountlist + $schemeinfo['ShipFee'], 'RealPrice' => $amountlist + $schemeinfo['ShipFee'], "Status" => $payment == 1 ? 1 : 2, "CreateTime" => time(), "UpdateTime" => time()); $orderID = self::saveorderinfo($params); if (!$orderID) { //创建订单失败 return array('success' => false, 'msg' => 'create order fail', 'QuoID' => $quoID, 'data' => '创建订单失败'); exit; } //保存订单编号到询价单表 PapInquiry::model()->updateByPK($Quoinfo['InquiryID'], array('OrderSn' => "DD" . $order_sn)); //保存订单ID到报价单表 PapQuotation::model()->updateByPK($quoID, array('OrderID' => $orderID)); //保存订单商品 self::saveordergoods($totalgoods, $orderID, $minus); //保存地址 if ($orderID) { $adressinfo = self::getaddressbypk($address); $addr = array('OrderID' => $orderID, 'ShippingName' => $adressinfo['ContactName'], 'ZipCode' => $adressinfo['ZipCode'], 'Mobile' => $adressinfo['Phone'], 'TelePhone' => $adressinfo['TelPhone'], 'Province' => $adressinfo['State'], 'City' => $adressinfo['City'], 'Area' => $adressinfo['District'], 'Address' => $adressinfo['Address'], 'CreateTime' => time()); self::saveinquiryaddress($addr); } //生成订单通知经销商 if ($payment == 1) { //待付款 $params = array('OrganID' => $Quoinfo['DealerID'], 'OrganType' => 2, 'HandleID' => $orderID); $params['type'] = array('name' => 'DD', 'key' => 1); RemindService::sendRemind($params); } elseif ($payment == 2) { //待发货 $params = array('OrganID' => $Quoinfo['DealerID'], 'OrganType' => 2, 'HandleID' => $orderID); $params['type'] = array('name' => 'DD', 'key' => 2); //命令行链接 $params['from'] = 'http://192.168.2.29:8000/pap/sellerorder/detail&ID=' . $orderID; RemindService::sendRemind($params); } //更改报价单待确认状态为已处理 $sql = 'update pap_remind_business set HandleStatus=2 where HandleID=' . $quoID . ' and OrganID=' . $Quoinfo['ServiceID']; Yii::app()->papdb->createCommand($sql)->execute(); //创建订单成功 return array('success' => true, 'msg' => 'carate order success', 'QuoID' => $quoID, 'data' => '创建订单成功', 'orderID' => $orderID, 'ordersn' => $order_sn); }