示例#1
0
 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;
 }
示例#2
0
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";
}