public static function combinePackage($tableName, $plateform_arr, $carrierIds, $id_array, $storeId = 1) { self::initDB(); $list = self::selectList($tableName, $plateform_arr, $carrierIds, $id_array); //var_dump($list); exit; if (!$list) { self::$errCode = 301; self::$errMsg = "没有需要合并的订单!"; return false; } /*foreach($list as $key=>$value){ $key = $value['id']; } var_dump($key); exit;*/ BaseModel::begin(); $combineNum = 0; foreach ($list as $key => $value) { $where = "b.userName = '******'userName']}' \n\t\t\t\t\tAND b.countryName = '{$value['countryName']}' \n\t\t\t\t\tAND a.accountId = {$value['accountId']} \n\t\t\t\t\tAND a.transportId = {$value['transportId']} \n\t\t\t\t\tAND b.state='{$value['state']}' \n\t\t\t\t\tAND b.city='{$value['city']}' \n\t\t\t\t\tAND b.street='{$value['street']}' \n\t\t\t\t\tAND a.orderType={$value['orderType']}\n\t\t\t\t\tAND a.calcWeight<=2 \n\t\t\t\t\tAND a.isLock=0 \n\t\t\t\t\tAND a.is_delete=0 \n\t\t\t\t\tAND a.combinePackage=0 \n\t\t\t\t\tAND a.orderStatus={$value['orderStatus']}\n\t\t\t\t\tAND a.orderType={$value['orderType']}\n\t\t\t\t\tAND is_delete = 0 AND storeId = " . $storeId; $records = combinePackageModel::selectRecord($tableName, $where, $id_array); //var_dump($records); exit; if (!$records) { continue; } else { $weightlists = array(); $orderinfo = array(); $countryName = $records[0]['countryName']; $transportId = $records[0]['transportId']; foreach ($records as $record) { $omOrderId = $record['id']; $omOrderId = $record['id']; $orderinfo[$record['id']] = $record; $arrinfo = CommonModel::calcNowOrderWeight($omOrderId); //var_dump($arrinfo); exit; $realweight = $arrinfo[0]; $realcosts = $arrinfo[2]; $itemprices = $arrinfo[3]; $weightlists[$omOrderId] = $realweight; } //var_dump($weightlists); exit; $keyarray = array(); $keyarrays = array(); $checkweight = 0; foreach ($weightlists as $wk => $weightlist) { $checkweight += $weightlist; if ($checkweight > 1.85) { $keyarrays[] = $keyarray; $keyarray = array(); $checkweight = $weightlist; $keyarray[] = $wk; } else { $keyarray[] = $wk; } } if (!empty($keyarray)) { $keyarrays[] = $keyarray; } //var_dump($keyarrays); echo "<br>"; foreach ($keyarrays as $orderlist) { if (count($orderlist) < 2) { continue; } $ordervalueweight = array(); $ordervalueactualTotal = array(); foreach ($orderlist as $orderid) { $ordervalueweight[$orderid] = $weightlists[$orderid]; $ordervalueactualTotal[$orderid] = $orderinfo[$orderid]['actualTotal']; } //var_dump($ordervalueactualTotal); exit; //var_dump($ordervalueweight); exit; $firstorder = array_shift($orderlist); //第一个订单编号信息 //var_dump($firstorder); $combineInfo = CommonModel::calcshippingfee(array_sum($ordervalueweight), $countryName, array_sum($ordervalueactualTotal), $transportId); //邮寄方式计算 //var_dump($combineInfo); exit; $weight2fee = calceveryweight($ordervalueweight, $combineInfo['fee']['fee']); //var_dump($weight2fee); exit; $firstweightfee = array_shift($weight2fee); //第一个订单重量运费信息 $data = array(); $data['combinePackage'] = 1; $data['orderStatus'] = C('STATEPENDING'); $data['orderType'] = C('STATEPENDING_CONPACK'); $where = ' WHERE id = ' . $firstorder; if (!OrderindexModel::updateOrder($tableName, $data, $where)) { self::$errCode = 303; self::$errMsg = "更新主订单失败!"; BaseModel::rollback(); return false; } foreach ($orderlist as $sonorder) { $data['combinePackage'] = 2; $data['orderStatus'] = C('STATEPENDING'); $data['orderType'] = C('STATEPENDING_CONPACK'); $where = ' WHERE id = ' . $sonorder; if (!OrderindexModel::updateOrder($tableName, $data, $where)) { self::$errCode = 304; self::$errMsg = "更新子订单失败!"; BaseModel::rollback(); return false; } if (!OrderRecordModel::insertCombineRecord($firstorder, $sonorder)) { self::$errCode = 305; self::$errMsg = "插入订单合并记录失败!"; BaseModel::rollback(); return false; } } $combineNum++; } } } self::$errCode = 200; self::$errMsg = "合并包裹操作成功!"; BaseModel::commit(); BaseModel::autoCommit(); return $combineNum; }
function function_merging_parcel($ebay_ids, $ebay_countryname, $ebay_id, $ebay_account) { //合并包裹功能----手动合并功能。 //add by Herman.Xi @ 20130228 global $dbcon, $user, $mctime; echo "\n===合并子订单号为" . join(",", $ebay_ids) . "===主订单号为{$ebay_id}\n"; $mailsql = "SELECT mailway FROM ebay_scan_mailway WHERE ebay_id={$ebay_id} "; $mailsql = $dbcon->execute($mailsql); $mailsql = $dbcon->fetch_one($mailsql); $sql = "SELECT * FROM ebay_order WHERE ebay_id in (" . join(",", $ebay_ids) . ") and combine_package = 0 and ebay_user = '******' "; $sql = $dbcon->execute($sql); $sameorders = $dbcon->getResultArray($sql); //判断组合后订单是否超重(2KG) $totalweight = 0; $totalmoney = 0; $weightarray = array(); $order_sn = array(); $shippinglist = array(); foreach ($sameorders as $sameorder) { $totalweight += $sameorder['orderweight']; $totalmoney += $sameorder['ebay_total']; $order_sn[] = $sameorder['ebay_ordersn']; $weightarray[] = $sameorder['orderweight']; } //开始合并准备操作 $combineorder = array(); $firstorder = array_shift($sameorders); $fees = calcshippingfee($totalweight, $ebay_countryname, $ebay_id, $ebay_account, $totalmoney); $ebay_carrier = $fees[0]; $totalweight = $fees[2]; $weight2fee = calceveryweight($weightarray, $fees[1]); //ebay_unmerge_temp_table $firstweightfee = array_shift($weight2fee); foreach ($sameorders as $_k => $sameorder) { $combineorder[] = $sameorder['ebay_id']; $ebay_noteb = "该订单被{$firstorder['ebay_id']}合并"; $sql = "UPDATE ebay_order SET ebay_noteb='{$ebay_noteb}',combine_package={$firstorder['ebay_id']}, ordershipfee={$weight2fee[$_k]} WHERE ebay_id={$sameorder['ebay_id']}"; $dbcon->execute($sql); $sql = "insert into ebay_splitorder (recordnumber, main_order_id, split_order_id, mode, create_date) values ('1', '{$firstorder['ebay_id']}', '{$sameorder['ebay_id']}', 3, '" . date("Y-m-d H:i:s") . "')"; $dbcon->execute($sql); } $sql = "REPLACE INTO ebay_unmerge_temp_table SET ebay_id={$ebay_id},merge_str='" . join(",", $ebay_ids) . "',now_primaryid='{$firstorder['ebay_id']}',mailway='{$mailsql['mailway']}',addtime={$mctime}"; $dbcon->execute($sql); $combinestr = implode(',', $combineorder); $ebay_noteb = "该订单为#[{$combinestr}]#合并包裹发货"; //同步合并后信息 $sql = "UPDATE ebay_order SET ebay_noteb='{$ebay_noteb}', ordershipfee={$firstweightfee} WHERE ebay_id ={$firstorder['ebay_id']}"; $dbcon->execute($sql); echo "\n==重新合并从订单,首订单{$firstorder['ebay_id']}==从订单为{$combinestr}\n"; }