Ejemplo n.º 1
0
$accouts = "'360beauty','365digital','befashion','befdi','befdimall','bestinthebox','betterdeals255','cafase88','charmday88','choiceroad','cndirect55','cndirect998','dealinthebox','digitalzone88','doeon','dresslink','easebon','easydeal365','easydealhere','easyshopping678','easytrade2099','elerose88','enicer','enjoy24hours','eshop2098','freemart21cn','futurestar99','happydeal88','ishop2099','itshotsale77','keyhere','niceforu365','niceinthebox','starangle88','sunwebhome','sunwebzone','tradekoo','voguebase55','wellchange','work4best','zealdora'";
$country = "United States";
//$author		= array('vipchen','guanyongjun','孙学轩','陈前');
$today = date('Y-m-d', time());
$stime = strtotime($today . "-1 day 00:00:01");
$etime = strtotime($today . " 23:59:59");
//$condition	= "1 AND ebay_id IN({$orderids}) AND ebay_carrier='UPS美国专线' ";
//$filename	= "ship_ups_us_".$truename."_".$today."_".time().".xml";
//$shipxml	= WEB_PATH."/html/temp/".$filename;
$shipfrom = "\n<ShipFrom>\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t<CompanyOrName>Shenzhen Sailvan Network TECHNOLOGY</CompanyOrName>\t\t\t\t\t\n\t\t\t\t\t<Attention>Miss Zhang</Attention>\t\t\t\t\t\n\t\t\t\t\t<Address1>Yaoan Ind Park No. 53</Address1>\t\t\t\t\t\n\t\t\t\t\t<Address2>Xiantian RD Shenzhen China</Address2>\t\t\t\t\t\n\t\t\t\t\t<Address3></Address3>\t\t\t\t\t\n\t\t\t\t\t<CountryTerritory>CN</CountryTerritory>\t\t\t\t\t\n\t\t\t\t\t<PostalCode>518116</PostalCode>\t\t\t\t\t\n\t\t\t\t\t<CityOrTown>ShenZhen</CityOrTown>\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t<Telephone>86-075589619635</Telephone>\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t<UpsAccountNumber>R9W668</UpsAccountNumber>\t\t\t\t\t\t\t\t\n\t\t\t\t</ShipFrom>\n";
############## 基础信息配置END ####################
//if (!in_array($truename,$author)) exit('{"errCode":"-1","errMsg":"您暂无权限使用此功能"}');
$xml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\t\t\t<OpenShipments xmlns=\"x-schema:OpenShipments.xdr\">";
$orderid_arr = explode(',', $orderid_arr);
foreach ($orderid_arr as $orderid) {
    $res = WhShippingOrderModel::select_shiping_by_id_country($country, $orderid);
    if (empty($res)) {
        continue;
    }
    //发货信息
    $r_name = $res['username'];
    $r_name = str_replace(array("&#039;", "&acute;", "&amp;", "&"), array("'", "'", " ", " "), $r_name);
    $r_postcode = $res['zipCode'];
    $r_phone = $res['phone'];
    $r_country = 'US';
    $r_province = strlen(trim($res['state'])) == 2 ? $res['state'] : $res['ups_code'];
    $r_city = $res['city'];
    $r_street = $res['street'];
    if (!empty($res['address2'])) {
        $r_street .= " " . $res['address2'];
    }
Ejemplo n.º 2
0
 /**
  * OrderPrintAct::act_check_order()
  * 检查发货单信息
  * @return void
  */
 public function act_check_order()
 {
     $shipOrderId = intval($_REQUEST['order']);
     $is_preview = isset($_REQUEST['is_preview']) ? $_REQUEST['is_preview'] : 0;
     if (!$shipOrderId) {
         self::$errCode = '201';
         self::$errMsg = '请输入发货单';
         return FALSE;
     }
     $shipOrderInfo = WhShippingOrderModel::get_order_info(array('orderStatus', 'transportId', 'accountId'), $shipOrderId);
     if (empty($shipOrderInfo)) {
         self::$errCode = 202;
         self::$errMsg = '发货单' . $shipOrderInfo . ':没有该发货单信息!';
         return FALSE;
     }
     if (!$is_preview) {
         //打印模式
         if ($shipOrderInfo[0]['orderStatus'] != PKS_PRINT_SHIPPING_INVOICE) {
             self::$errCode = 203;
             self::$errMsg = '发货单' . $shipOrderInfo . ':不是待打印面单状态!';
             return FALSE;
         }
     }
     //得到非快递的运输方式ID
     $arr_transportId = C('flat_transport');
     $arr_transportId = array_keys($arr_transportId);
     $res = self::orderPrint($shipOrderId, $shipOrderInfo[0]['transportId'], $shipOrderInfo[0]['accountId']);
     if ($res) {
         $partion = WhOrderPartionRecordsModel::get_OrderPartionRecords($shipOrderId);
         //获取分区记录
         $partion = empty($partion) ? '' : $partion['partion'];
         self::$errCode = 200;
         self::$errMsg = $shipOrderId . '打印面单:' . $partion;
         $res = str_replace("'", '"', $res);
         if ($shipOrderInfo[0]['orderStatus'] == PKS_PRINT_SHIPPING_INVOICE && !$is_preview) {
             $status = in_array($shipOrderInfo[0]['transportId'], $arr_transportId) ? PKS_WAITING_SHIPPING_CHECKING : PKS_WAITING_LOADING;
             $info = WhShippingOrderModel::update(array('orderStatus' => $status), $shipOrderId);
             if (!$info) {
                 self::$errCode = 204;
                 self::$errMsg = '更新发货单状态失败!';
                 $res = $info;
             }
             $status = in_array($shipOrderInfo[0]['transportId'], $arr_transportId) ? 'PKS_WAITING_SHIPPING_CHECKING' : 'PKS_WAITING_LOADING';
             WhPushModel::pushOrderStatus($shipOrderId, $status, $_SESSION['userId'], time());
             //状态推送,需要改为发货组复核(订单系统提供状态常量)
         }
     } else {
         return $res;
     }
     return $res;
 }
Ejemplo n.º 3
0
 public function act_manualSortingCheck()
 {
     $userId = $_SESSION['userId'];
     $waveId = isset($_POST['waveId']) ? $_POST['waveId'] : "";
     $where = "number='{$waveId}'";
     $waveInfo = WhWaveInfoModel::get_wave_info("*", $where);
     if (!$waveInfo) {
         self::$errCode = 502;
         self::$errMsg = "此配货单号不存在!";
         return false;
     }
     if ($waveInfo[0]['waveStatus'] != WAVE_FINISH_GET_GOODS) {
         self::$errCode = 514;
         self::$errMsg = "此配货单不在【配货完成】状态,不能进行分拣操作!";
         return false;
     }
     if ($waveInfo[0]['waveType'] == 3) {
         self::$errCode = 518;
         self::$errMsg = "此配货单属于多SKU生成的配货单,不能进行人工分拣!";
         return false;
     }
     //一个发货单对应多个配货单的时候,发货单是唯一的,
     if ($waveInfo[0]['waveType'] == 1) {
         $waveId = $waveInfo[0]['id'];
         $result = WhWaveShippingRelationModel::select_not_scanning($waveId);
         $shipOrderId = $result[0]['shipOrderId'];
         if ($result[0]['pickUserId'] != 0) {
             self::$errCode = 520;
             self::$errMsg = "此配货单已经分拣过了!";
             return false;
         }
         WhShippingOrderModel::begin();
         $update = WhWaveShippingRelationModel::update(array('pickUserId' => $userId, 'pickTime' => time()), array('is_delete' => 0, 'waveId' => $waveId));
         if (!$update) {
             self::$errCode = 519;
             self::$errMsg = "扫描该配货单失败,请联系负责人!";
             WhShippingOrderModel::rollback();
             return false;
             // $result = WhWaveShippingRelationModel::getShippingOrderIdsByWaveId($waveId);
             //$shipOrderId = $result[0]['shipOrderId'];
             //查询还没有扫描的配货单
         }
         $select_not_scanning = WhWaveShippingRelationModel::select_not_scanning_by_id($shipOrderId);
         $not_scanning_waveId = '';
         //还没有分拣的配货单
         if ($select_not_scanning) {
             foreach ($select_not_scanning as $val) {
                 $not_scanning_waveId .= $val['waveId'] . ',';
             }
             self::$errMsg = "扫描该配货单'{$waveId}'成功,对应发货单'{$shipOrderId}'的配货单'{$not_scanning_waveId}'还没有分拣!";
         } else {
             self::$errMsg = "扫描该配货单'{$waveId}'成功,对应的发货单'{$shipOrderId}'已经分拣完成,请处理完成之后拿去复核!";
             //获取一个发货单对应多个配货单的每个配货单号
             $result = OmAvailableModel::getTNameList("wh_wave_shipping_relation", "waveId", "where shipOrderId='{$shipOrderId}'  and is_delete=0 ");
             $wave_all = '';
             foreach ($result as $values) {
                 $wave_all .= $values['waveId'] . ',';
             }
             $wave_all = trim($wave_all, ',');
             //得到该发货单下所有配货单的信息
             $scan_record = OmAvailableModel::getTNameList("wh_wave_scan_record", "waveId,sku,skuAmount,amount", "where waveId in ('{$wave_all}')  and scanStatus = 1  and is_delete=0 ");
             $picklist_all = array();
             foreach ($scan_record as $record) {
                 $data = array('waveId' => $record['waveId'], 'shipOrderId' => $shipOrderId, 'sku' => $record['sku'], 'skuAmount' => $record['skuAmount'], 'amount' => $record['amount'], 'pickStatus' => 1, 'pickUserId' => intval($_SESSION['userId']), 'pickTime' => time(), 'deleteUserId' => '0', 'deleteTime' => '0', 'is_delete' => '0');
                 $picklist_all[] = $data;
             }
             if (!WhWavePickRecordModel::insert($picklist_all, true)) {
                 WhShippingOrderModel::rollback();
                 self::$errCode = 517;
                 self::$errMsg = "该配货单插入分拣记录失败!";
                 return false;
             }
             $where = "id = '{$shipOrderId}' AND orderStatus='" . PKS_WAITING_SORTING . "'";
             if (!WhShippingOrderModel::update_shipping_order($where, "orderStatus='" . PKS_WIQC . "'")) {
                 WhShippingOrderModel::rollback();
                 self::$errCode = 516;
                 self::$errMsg = "此配货单所属发货单{$shipOrderId}更新状态失败!";
                 return false;
             }
         }
         WhPushModel::pushOrderStatus($shipOrderId, 'PKS_WIQC', $_SESSION['userId'], time());
         //状态推送,需要改为待复核单(订单系统提供状态常量)
         WhShippingOrderModel::commit();
         self::$errCode = 200;
         return true;
     }
     /*
     		if(empty($waveInfo[0]['sku'])){
     			self::$errCode = 515;
     			self::$errMsg = "此配货单不属于单SKU生成的配货单,不能进行人工分拣!";
     			return false;
     		}
     */
     $waveId = $waveInfo[0]['id'];
     //echo $waveId;
     $shippOrders = WhWaveShippingRelationModel::getShippingOrderIdsByWaveId($waveId);
     //var_dump($shippOrders);
     WhShippingOrderModel::begin();
     foreach ($shippOrders as $shippOrder) {
         $shipOrderId = $shippOrder['shipOrderId'];
         $where = "id = '{$shipOrderId}' AND orderStatus='" . PKS_WAITING_SORTING . "'";
         if (!WhShippingOrderModel::update_shipping_order($where, "orderStatus='" . PKS_WIQC . "'")) {
             WhShippingOrderModel::rollback();
             self::$errCode = 516;
             self::$errMsg = "此配货单所属发货单{$shipOrderId}更新状态失败!";
             return false;
         }
     }
     $pick = WhWavePickRecordModel::find("waveId='{$waveId}'");
     if (!$pick) {
         $picklist = array();
         $list = WhShippingOrderdetailModel::getShippingOrderSkuList($waveId);
         foreach ($list as $val) {
             $data = array('waveId' => $val['waveId'], 'shipOrderId' => $val['shipOrderId'], 'sku' => $val['sku'], 'skuAmount' => $val['amount'], 'amount' => 0, 'pickStatus' => 1, 'pickUserId' => intval($_SESSION['userId']), 'pickTime' => time(), 'deleteUserId' => '0', 'deleteTime' => '0', 'is_delete' => '0');
             $picklist[] = $data;
         }
         if (!WhWavePickRecordModel::insert($picklist, true)) {
             WhShippingOrderModel::rollback();
             self::$errCode = 517;
             self::$errMsg = "该配货单插入分拣记录失败!";
             return false;
         } else {
             foreach ($picklist as $lists) {
                 WhPushModel::pushOrderStatus($lists['shipOrderId'], 'PKS_WIQC', $_SESSION['userId'], time());
                 //状态推送,需要改为待复核单(订单系统提供状态常量)
             }
         }
     }
     WhShippingOrderModel::commit();
     self::$errCode = 200;
     self::$errMsg = "该配货单分拣成功,请处理完成之后拿去复核!";
     return true;
 }
Ejemplo n.º 4
0
 /**
  * WaveBuildAct::make_wave()
  * 生成配货单  (单料号和单发货单)
  * @param int $shipOrderId  发货单ID
  * @param int $wave_id  发货单ID
  * @param integer $wave_status wave_id 没有传递时 生成的配货单状态 0可以继续添加 1完结配货单不许再添加
  * @param array $order_detail  订单明细
  * @param int $wave_type 配货单类型  1=》单个发货单 2-单料号 3-多料号
  * @return bool
  */
 public function make_wave($shipOrderId, $wave_id = 0, $wave_status = 0, $order_detail = '', $wave_type = 1)
 {
     $shipOrderId = intval(trim($shipOrderId));
     $wave_id = intval(trim($wave_id));
     $wave_status = intval(trim($wave_status));
     //print_r($shipOrderId);exit;
     if (!$shipOrderId) {
         self::$errCode = 200;
         self::$errMsg = '无效发货单ID!';
         return FALSE;
     }
     if (empty($order_detail)) {
         $order_detail = WhShippingOrderdetailModel::getShipDetails($shipOrderId);
         //获取订单明细
         if (empty($order_detail)) {
             //没有订单明细则直接返回
             self::$errCode = 201;
             self::$errMsg = '该发货单没有料号明细!';
             return FALSE;
         }
     }
     $order_limit = self::get_order_limit_info($order_detail);
     //获取当前订单的重量、料号数量、体积信息
     $area_info = self::get_area_info($order_detail);
     //获取订单区域、楼层信息
     //print_r($area_info);exit;
     WhBaseModel::begin();
     if (!$wave_id) {
         //不存在配货单号
         $startArea = current($area_info['areas']);
         //print_r($startArea);exit;
         $startArea = WhWaveAreaInfoModel::get_area_info('areaName', $startArea);
         //判断配货单区域类型
         $waveZone = self::judge_wave_zone($area_info['storey'], $area_info['areas']);
         //判断配货单区域类型
         if ($waveZone === FALSE) {
             self::$errCode = 203;
             self::$errMsg = '获取配货单区域类型失败!';
             return FALSE;
         }
         $data = array('storey' => implode(',', $area_info['storey']), 'startArea' => $startArea[0]['areaName'], 'totalWeight' => $order_limit['limitWeight'], 'totalVolume' => $order_limit['limitVolume'], 'totalSkus' => $order_limit['limitSkuNums'], 'totalOrders' => 1, 'waveStatus' => $wave_status, 'waveZone' => $waveZone, 'waveType' => $wave_type, 'createTime' => time(), 'printStorey' => $area_info['storey'][0]);
         if ($wave_type == 2) {
             //单料号配货单
             $data['sku'] = $order_detail[0]['sku'];
         }
         //print_r($data);exit;
         $wave_id = WhWaveInfoModel::insert_wave_info($data);
         //echo '生成配货单'.$wave_id."<br />";
         if ($wave_id === FALSE) {
             self::$errCode = 100;
             self::$errMsg = '生成配货单失败!';
             WhBaseModel::rollback();
             return FALSE;
         }
         $wave_number = WhWaveInfoModel::number_encode($wave_id);
         //生成配货单编号
         //print_r($wave_number);exit;
         /** 更新配货单编号**/
         $info = WhWaveInfoModel::update_wave_info(array('number' => $wave_number), array('id' => $wave_id));
         if (!$info) {
             self::$errCode = 108;
             self::$errMsg = '更新配货单编号失败!';
             WhBaseModel::rollback();
             return FALSE;
         }
         //echo '更新配货单编号'.$wave_number."<br />";
         /** end**/
     } else {
         //已存在配货单号
         $where = array('id' => $wave_id);
         $wave_info = WhWaveInfoModel::get_wave_info('*', $where);
         //获取配货单信息
         if (empty($wave_info)) {
             self::$errCode = 101;
             self::$errMsg = '没有该配货单信息!';
             return FALSE;
         }
         $wave_info = $wave_info[0];
         if ($wave_info['waveStatus'] != 0) {
             self::$errCode = 102;
             self::$errMsg = '该配货单已不能添加订单!';
             return FALSE;
         }
         $wave_type = $wave_info['waveType'];
         //配货单类型 单料号 多料号
         $order_limit['limitSkuNums'] += $wave_info['totalSkus'];
         $order_limit['limitWeight'] += $wave_info['totalWeight'];
         $order_limit['limitVolume'] += $wave_info['totalVolume'];
         $order_limit['limitOrderNums'] = $wave_info['totalOrders'] + 1;
         $is_wave = self::judge_single_shiporder($order_limit, $wave_type);
         //判断加上新订单是否超过单个配货单限制
         //var_dump($is_wave);exit;
         if ($is_wave === TRUE) {
             //完结配货单
             $update = array('waveStatus' => 1);
             $where = array('id' => $wave_id);
             $info = WhWaveInfoModel::update_wave_info($update, $where);
             //超过限制则完结该配货单
             return self::make_wave($shipOrderId, 0, $wave_status, $order_detail, $wave_type);
             //重新分配配货单
         } else {
             /** 更新配货单信息**/
             $update = array('totalSkus' => $order_limit['limitSkuNums'], 'totalWeight' => $order_limit['limitWeight'], 'totalVolume' => $order_limit['limitVolume'], 'totalOrders' => $order_limit['limitOrderNums']);
             $combine_area = self::combine_area_info($wave_info['startArea'], $area_info['areas']);
             //合并新加入订单的区域信息
             //print_r($combine_area);exit;
             $startArea = WhWaveAreaInfoModel::get_area_info('areaName', current($combine_area));
             $combine_storey = self::combine_storey_info($wave_info['storey'], $area_info['storey']);
             //合并楼层
             $waveZone = self::judge_wave_zone($combine_storey, $combine_area);
             //判断配货单区域类型
             $update['storey'] = implode(',', $combine_storey);
             $update['startArea'] = $startArea[0]['areaName'];
             $update['waveZone'] = $waveZone;
             $update['printStorey'] = $combine_storey[0];
             $where = array('id' => $wave_id);
             $info = WhWaveInfoModel::update_wave_info($update, $where);
             if (!$info) {
                 self::$errCode = 103;
                 self::$errMsg = '更新配货单信息失败!';
                 WhBaseModel::rollback();
                 return FALSE;
             }
             //echo '更新配货单'.$wave_id."<br />";
             /** 更新配货单信息end**/
         }
     }
     /** 插入收货记录表数据**/
     if (empty($area_info['areas'])) {
         self::$errCode = 111;
         self::$errMsg = '发货单区域信息为空!';
         WhBaseModel::rollback();
         return false;
     }
     $area_names = self::get_area_names($area_info['areas']);
     $storey = self::get_storey_list();
     //获取楼层列表
     //print_r($area_names);exit;
     $info = WhWaveReceiveRecordModel::insert_receive_data($wave_id, $area_names, $storey);
     //插入收获记录表区域信息
     if ($info === FALSE) {
         self::$errCode = 104;
         self::$errMsg = '插入收货记录表失败!';
         WhBaseModel::rollback();
         return false;
     }
     //echo '插入收货记录'.json_encode($area_names)."<br />";
     /** end**/
     /** 插入配货记录表数据**/
     $order_detail = self::merge_order_detail($order_detail);
     //合并同一生成时间下相同料号,相同仓位的料号信息
     //print_r($order_detail);exit;
     $scan_details = self::process_scan_details($order_detail);
     //处理订单详情生成相对应配货记录
     $info = WhWaveScanRecordModel::inser_scan_data($wave_id, $scan_details);
     if ($info === FALSE) {
         self::$errCode = 105;
         self::$errMsg = '插入配货记录表失败!';
         WhBaseModel::rollback();
         return false;
     }
     //echo '插入配货记录'.json_encode($scan_details)."<br />";
     /** end**/
     /** 插入配货单、发货单关系表**/
     $info = WhWaveShippingRelationModel::insert_relation_data($wave_id, $shipOrderId);
     if ($info === FALSE) {
         self::$errCode = 106;
         self::$errMsg = '插入配货单关系表失败!';
         WhBaseModel::rollback();
         return false;
     }
     //echo '插入配货单关系'.$wave_id.'----'.$shipOrderId."<br />";
     /** end**/
     /** 更新发货单分配状态**/
     $info = WhShippingOrderModel::update(array('is_wave' => 1), array('id' => $shipOrderId));
     if ($info === FALSE) {
         self::$errCode = 107;
         self::$errMsg = '更新发货单分配状态失败!';
         WhBaseModel::rollback();
         return false;
     }
     //echo '更新发货单分配状态'.$shipOrderId."<br />";
     /** end**/
     /** 更新多料号临时存放表**/
     if ($wave_type == 3) {
         //多料号发货单
         $info = whWaveMultiShipAreaRecordModel::update(array('is_wave' => 1), array('shipOrderId' => $shipOrderId));
         if ($info === FALSE) {
             self::$errCode = 108;
             self::$errMsg = '更新多料号订单临时存放表状态失败!';
             WhBaseModel::rollback();
             return false;
         }
         //echo '更新多料号订单临时存放表'.$shipOrderId."<br />";
     }
     /** end**/
     WhBaseModel::commit();
     return TRUE;
 }
Ejemplo n.º 5
0
.f101{font-size:6px;}
.f18{font-size:18px;}
.tick{font-weight:bold;font-size:14px;}
-->
</style>
</head>
<body>
<?php 
error_reporting(1);
//@session_start();
require_once WEB_PATH . "framework.php";
Core::getInstance();
global $dbConn;
$shipOrderId = intval($_SESSION['shipOrderId']);
$transport = trim($_SESSION['transport']);
$shipOrderInfo = WhShippingOrderModel::get_order_info_union_table($shipOrderId);
//获取发货单基本信息
$transportId = $shipOrderInfo['transportId'];
//运输方式ID
if (in_array($transportId, array(79, 80))) {
    $ebay_id = $shipOrderInfo['id'];
    $ebay_tracknumber = $shipOrderInfo['tracknumber'];
    $ebay_userid = $shipOrderInfo['platformUsername'];
    $ebay_total = $shipOrderInfo['total'];
    $ebay_total = $ebay_total >= 10 ? 10 : ($ebay_total == 0 ? rand(5, 10) : $ebay_total);
    $ebay_usermail = $shipOrderInfo['email'];
    $packingtype = $shipOrderInfo['packingtype'];
    $orderweight = round($shipOrderInfo['actualWeight'] / 1000, 3);
    $ordershipfee = $shipOrderInfo['actualShipping'];
    $ebay_account = CommonModel::getAccountNameById($shipOrderInfo['accountId']);
    $cname = $shipOrderInfo['username'];
Ejemplo n.º 6
0
 public function view_savepacket()
 {
     $packageid = intval($_POST['packageid']);
     $packet = WhOrderPartionPrintModel::find($packageid, 'status,partion,partitionId');
     if (!$packet) {
         $result = array('status' => 0, 'msg' => '口袋编号不存在');
         echo json_encode($result);
         exit;
     }
     $status = $packet['status'];
     $partion = $packet['partion'];
     $partionId = $packet['partitionId'];
     unset($packet);
     if ($status != 0) {
         $result = array('status' => 0, 'msg' => '该包裹已使用,请更换包裹编号!');
         echo json_encode($result);
         exit;
     }
     if (!$_SESSION['userId']) {
         $result = array('status' => 0, 'msg' => '请先登录系统');
         echo json_encode($result);
         exit;
     }
     $record = WhOrderPartionRecordsModel::getPartionRecords($partionId, $_SESSION['userId']);
     $totalnum = $record['totalnum'];
     $totalweight = $record['totalweight'];
     if (!$totalnum && !$totalweight) {
         $result = array('status' => 0, 'msg' => '该包裹分区下没有订单');
         echo json_encode($result);
         exit;
     }
     //更新口袋分区
     $data = array('packageId' => $packageid, 'modifyTime' => time());
     WhOrderPartionRecordsModel::update($data, "partitionId='" . $partionId . "' AND packageId=0 AND scanUserId='" . $_SESSION['userId'] . "'");
     //更新口袋打包
     $packet_data = array('totalWeight' => $totalweight, 'totalNum' => $totalnum, 'status' => 1, 'modifyTime' => time());
     WhOrderPartionPrintModel::update($packet_data, $packageid);
     $result = array('status' => 1, 'totalWeight' => round($totalweight / 1000, 3), 'totalNum' => $totalnum, 'msg' => '口袋打包成功');
     //更新订单状态
     $orders = WhOrderPartionRecordsModel::select("partitionId='" . $partionId . "' AND packageId='" . $packageid . "' AND scanUserId='" . $_SESSION['userId'] . "'");
     foreach ($orders as $val) {
         $orderIds[] = $val['shipOrderId'];
         WhPushModel::pushOrderStatus($val['shipOrderId'], 'PKS_DISTRICT_CHECKING', $_SESSION['userId'], time());
         //状态推送,需要改为待分区复核(订单系统提供状态常量)
     }
     $data = array('orderStatus' => PKS_DISTRICT_CHECKING);
     WhShippingOrderModel::update($data, array('id in' => $orderIds));
     echo json_encode($result);
 }
 /**
  * pda_shippingGroupReviewAct::act_outReview()
  *  扫描口袋编号通过AJAX传递口袋编号来对该编号进行操作
  * @author cxy
  * @return boolean array
  */
 public function act_outReview()
 {
     $userId = $_SESSION['userId'];
     $packageId = intval(trim($_POST['packageid']));
     //得到发货单分区列表信息
     $get_orderPartion = WhOrderPartionPrintModel::get_OrderPartion($packageId);
     if (empty($get_orderPartion)) {
         self::$errCode = '202';
         self::$errMsg = '该口袋编号不存在分区列表中';
         return false;
     }
     if ($get_orderPartion['status'] == 0) {
         self::$errCode = '202';
         self::$errMsg = '该口袋编号还没有进行打包!';
         return false;
     }
     //得到该口袋编号下的发货单
     $all_order = WhOrderPartionRecordsModel::get_OrderPartionRecordsByPackageId($packageId);
     if ($all_order) {
         foreach ($all_order as $value) {
             $result_status = WhShippingOrderModel::get_order_info('orderStatus', array('id' => $value['shipOrderId']));
             if ($result_status[0]['orderStatus'] != PKS_WAITING_SHIPPING_CHECKING) {
                 self::$errCode = '202';
                 self::$errMsg = '该口袋编号下有发货单的状态不是在待发货组复核!';
                 return false;
             }
         }
     }
     //发货组复核信息
     $get_groupReview = WhWaveOrderPartionShippingReviewModel::get_pocket($packageId);
     if ($get_groupReview) {
         self::$errCode = '211';
         self::$errMsg = '该口袋编号已经在发货组复核中复核过了';
         return true;
     }
     //分区复核的信息
     $get_orderReview = WhWaveOrderPartionScanReviewModel::get_shippingNews($packageId);
     // print_r($get_orderReview);
     // echo $get_orderReview['review_weight'];exit;
     if ($get_orderPartion['totalWeight'] == $get_orderReview['review_weight'] && $get_orderPartion['totalNum'] == $get_orderReview['review_num']) {
         $is_error = 0;
         self::$errCode = '200';
         self::$errMsg = '请随机扫描一个订单!';
         $data = array('packageId' => $packageId, 'is_error' => $is_error, 'userId' => $userId, 'scantime' => time());
         $partion_arr = array();
         $review_arr = array();
         //分区扫描得到的发货单
         $get_orderPartion_detail = WhOrderPartionRecordsModel::get_OrderPartionRecordsByPackageId($packageId);
         //得到分区复核的发货单列表
         $get_review_detail = WhWaveOrderPartionScanReviewModel::get_shipping_review($packageId);
         foreach ($get_orderPartion_detail as $v) {
             $partion_arr[$v['shipOrderId']] = $v;
         }
         foreach ($get_review_detail as $v) {
             $review_arr[$v['shipOrderId']] = $v;
         }
         $diversity_a = array_diff_key($partion_arr, $review_arr);
         $diversity_b = array_diff_key($review_arr, $partion_arr);
         if (!empty($diversity_a) || !empty($diversity_b)) {
             self::$errCode = '500';
             self::$errMsg = '分区的发货单与分区复核的发货单不符合';
             $order_str = '';
             if ($diversity_a) {
                 foreach ($diversity_a as $k => $val) {
                     $order_str .= $k . ',';
                 }
             } elseif ($diversity_b) {
                 foreach ($diversity_b as $k => $val) {
                     $order_str .= $k . ',';
                 }
             }
             return trim($order_str, ',');
         }
         $res = array();
         WhBaseModel::begin();
         $result = WhWaveOrderPartionShippingReviewModel::insert($data);
         if ($result) {
             foreach ($get_review_detail as $ks => $val) {
                 //更新发货操作记录表
                 $update = WhWaveOrderPartionShippingReviewModel::updateOrderRecords($val['shipOrderId'], $userId);
                 if (!$update) {
                     self::$errCode = '206';
                     self::$errMsg = '更新操作记录失败,请联系负责人!';
                     WhBaseModel::rollback();
                     return false;
                 }
                 //更新发货表状态
                 $ostatus = WhWaveOrderPartionScanReviewModel::updateShippingOrderStatus($val['shipOrderId'], $status = PKS_WAITING_LOADING);
                 if (!$ostatus) {
                     self::$errCode = 608;
                     self::$errMsg = "更新发货单状态失败!";
                     WhBaseModel::rollback();
                     return false;
                 }
                 WhPushModel::pushOrderStatus($val['shipOrderId'], 'PKS_WAITING_LOADING', $_SESSION['userId'], time());
                 //状态推送,需要改为装车扫描(订单系统提供状态常量)
             }
             self::$errCode = '200';
             self::$errMsg = '该口袋编号正确,请复核下该口袋编号下的发货单!';
             $get_orderPartion['totalWeight'] = round($get_orderPartion['totalWeight'] / 1000, 3);
             $get_orderReview['review_weight'] = round($get_orderReview['review_weight'] / 1000, 3);
             $res['partion_data'] = $get_orderPartion;
             $res['review_data'] = $get_orderReview;
             $res['packageid'] = $packageId;
         } else {
             self::$errCode = '206';
             self::$errMsg = '该发货组复核口袋编号失败,请联系负责人!';
             WhBaseModel::rollback();
             return false;
         }
         WhBaseModel::commit();
         return $res;
     } else {
         self::$errCode = '201';
         self::$errMsg = '分区和分区复核的数据不一致!';
     }
     $res['partion_data'] = $get_orderPartion;
     $res['review_data'] = $get_orderReview;
     $res['packageid'] = $packageId;
     return $res;
 }
Ejemplo n.º 8
0
 public function view_stoppicking()
 {
     $_POST['waveId'] = $_POST['waveId'] ? $_POST['waveId'] : $_GET['waveId'];
     $waveId = WhWaveInfoModel::number_decode($_POST['waveId']);
     if ($waveId) {
         $wave = WhWaveInfoModel::find($waveId);
     }
     if (!$waveId || !$wave) {
         $msg = array('status' => 'A00', 'waveStatus' => 'A00', 'msg' => '波次配货单不存在,参数错误');
         echo json_encode($msg);
     }
     //检查当前波次是否已分拣完结
     $list = WhWavePickRecordModel::getSkuPickRecord($waveId);
     if ($list) {
         //把未完结的发货记录手动完结,修改配货记录状态为手动完结
         $Pickmessage = '异常发货单:<br/>';
         foreach ($list as $val) {
             if (WhWavePickRecordModel::update(array('pickStatus' => 3), ' shipOrderId=' . $val['shipOrderId'] . ' AND pickStatus = 0 AND is_delete = 0')) {
                 //修改配货单的状态为待复核
                 if (WhShippingOrderModel::update(array('orderStatus' => PKS_UNUSUAL_SHIPPING_INVOICE), ' id=' . $val['shipOrderId'])) {
                     $Pickmessage .= "发货单:{$val['shipOrderId']}--桶号:{$val['pickLight']}<br/>";
                 }
             }
         }
         $msg = array('waveStatus' => 'A99', 'msg' => $Pickmessage);
     } else {
         $msg = array('status' => 'A00', 'waveStatus' => 'A99', 'msg' => '波次已完成分拣,不需要手动完结');
     }
     echo json_encode($msg);
 }
Ejemplo n.º 9
0
 /**
  * 快递复核标记为发货异常
  * @return boolean
  * @author czq
  */
 public function act_signUnusual()
 {
     $shipOrderId = isset($_POST['shipOrderId']) ? intval($_POST['shipOrderId']) : 0;
     if (empty($shipOrderId)) {
         self::$errCode = 0;
         self::$errMsg = '请输入发货单信息!';
         return;
     }
     $shipOrder = WhShippingOrderModel::find(' id=' . $shipOrderId . ' AND is_delete = 0', 'id');
     if (!$shipOrder) {
         self::$errCode = 0;
         self::$errMsg = '发货单' . $shipOrder . '不存在!';
         return;
     }
     WhShippingOrderModel::begin();
     //更新状态为 发货单异常
     if (!WhShippingOrderModel::update(array('orderStatus' => PKS_UNUSUAL_SHIPPING_INVOICE), $shipOrderId)) {
         self::$errCode = 0;
         self::$errMsg = '发货单' . $shipOrder . '不存在!';
         WhShippingOrderModel::rollback();
         return false;
     }
     self::$errCode = 1;
     self::$errMsg = '发货单标记异常成功';
     WhShippingOrderModel::commit();
     return true;
 }
Ejemplo n.º 10
0
 /**
  * WaveInfoManageView::makeSingleWave()
  * 生成单料号及单发货单配货单
  * @author Gary 
  * @return void
  */
 public function makeSingleWave($time)
 {
     $update = array('createUserId' => $_SESSION['userId'], 'createTime' => time(), 'waveStatus' => 1);
     $where = array('waveType in' => array(1, 2), 'createTime <=' => $time, 'createUserId' => 0, 'is_delete' => 0);
     $waveinfo = WhWaveInfoModel::get_wave_info('id', $where);
     //获取所有符合条件的配货单号
     WhBaseModel::begin();
     //更新配货单状态
     $info = WhWaveInfoModel::update_wave_info($update, $where);
     if (!$info) {
         WhBaseModel::rollback();
         return $info;
     }
     $waveIds = get_filed_array('id', $waveinfo);
     $waveIds = empty($waveIds) ? array(0) : $waveIds;
     $shipOrderIds = WhWaveShippingRelationModel::select(array('waveId in' => $waveIds), 'shipOrderId');
     //print_r($waveIds);exit;
     $shipOrderIds = get_filed_array('shipOrderId', $shipOrderIds);
     $shipOrderIds = empty($shipOrderIds) ? array(0) : $shipOrderIds;
     $info = WhShippingOrderModel::update(array('orderStatus' => PKS_PROCESS_GET_GOODS), array('id in' => $shipOrderIds));
     if (!$info) {
         WhBaseModel::rollback();
         return $info;
     }
     $info = WhBaseModel::affected_rows();
     WhBaseModel::commit();
     return $info;
 }
Ejemplo n.º 11
0
 /**
  * printAct::act_abnormalRestore()
  * 异常发货单恢复
  * @return
  */
 public function act_abnormalRestore()
 {
     $userId = $_SESSION['userId'];
     $orderids = isset($_POST['orderids']) ? trim($_POST['orderids']) : '';
     if (empty($userId)) {
         self::$errCode = 0;
         self::$errMsg = '请重新登录!';
         return false;
     }
     if (empty($orderids)) {
         self::$errCode = 0;
         self::$errMsg = '请选择发货单号!';
         return false;
     }
     $order_arr = explode(',', $orderids);
     foreach ($order_arr as $shipOrderId) {
         $where = "where id={$shipOrderId}";
         $order = orderPartionModel::selectOrder($where);
         if (!$order) {
             self::$errCode = 0;
             self::$errMsg .= "此发货单'{$shipOrderId}'不存在!";
             continue;
         } else {
             $status = PKS_WIQC;
             $update_result = WhShippingOrderModel::update_shipping_order_by_id("id = '{$shipOrderId}' and is_delete = 0", "orderStatus = '{$status}'");
             if ($update_result) {
                 self::$errMsg .= "此发货单'{$shipOrderId}'状态还原为待复核状态!";
             } else {
                 self::$errMsg .= "此发货单'{$shipOrderId}'异常恢复失败!";
             }
         }
     }
     self::$errCode = 200;
     self::$errMsg .= '操作完成';
     return true;
 }
Ejemplo n.º 12
0
 /**
  * 配货收货
  * @return boolean
  * @author czq
  */
 public function act_orderPicking()
 {
     $zone = isset($_POST['zone']) ? strtoupper(trim($_POST['zone'])) : "";
     $invoiceNumber = isset($_POST['invoice']) ? trim($_POST['invoice']) : "";
     if (empty($zone)) {
         self::$errCode = 502;
         self::$errMsg = "区域不能为空";
         return false;
     }
     if (empty($invoiceNumber)) {
         self::$errCode = 502;
         self::$errMsg = "配货单号不能为空!";
         return false;
     }
     /*$start = time();*/
     $waveId = WhWaveInfoModel::number_decode($invoiceNumber);
     /*$firstF				= strpos($zone,'F');
     		$floor				= substr($zone,0,$firstF);
     		$area				= substr($zone,$firstF+1);*/
     /*$end = time();
     		echo $end - $start; echo "<br>";
     		$start = $end;*/
     $waveReceiveInfo = WhWaveReceiveRecordModel::find(array('waveId' => $waveId, 'area' => $zone));
     /*$end = time();
     		echo $end - $start; echo "<br>";
     		$start = $end;*/
     if (!$waveReceiveInfo) {
         //检查是否已经配货完成
         self::$errCode = 502;
         self::$errMsg = "此区域无需处理该配货单!";
         return false;
     }
     if ($waveReceiveInfo['scanStatus'] == 0) {
         //检查是否已经配货完成
         self::$errCode = 502;
         self::$errMsg = "此区域未配货完成!";
         return false;
     } else {
         if ($waveReceiveInfo['scanStatus'] == 2) {
             //检查是否已收货,防止重复收货
             self::$errCode = 502;
             self::$errMsg = "请不要重复收货!";
             return false;
         }
     }
     //插入记录配货表
     $receiveData = array('userId' => $_SESSION['userId'], 'time' => time(), 'scanStatus' => 2);
     WhWaveReceiveRecordModel::begin();
     if (!WhWaveReceiveRecordModel::update($receiveData, array('waveId' => $waveId, 'area' => $zone, 'is_delete' => 0))) {
         self::$errCode = 502;
         self::$errMsg = "更新收货失败!";
         WhWaveReceiveRecordModel::rollback();
         return false;
     }
     //查找是否已经全部收货
     $waveReceiveNum = WhWaveReceiveRecordModel::count(" waveId='{$waveId}' AND scanStatus !=2 AND is_delete=0 ");
     $statusMessage = '';
     if ($waveReceiveNum == 0) {
         //已经完结,更新波次为完结状态
         $waveInfoData = array('waveStatus' => WAVE_FINISH_GET_GOODS);
         if (!WhWaveInfoModel::update($waveInfoData, $waveId)) {
             self::$errCode = 502;
             self::$errMsg = "更新配货单完结状态失败!";
             WhWaveReceiveRecordModel::rollback();
             return false;
         }
         $statusMessage = '此配货单已经完结';
         //如果此波次全部已收货,那么需要把发货单的状态改为待分拣
         $shippingOrders = WhWaveShippingRelationModel::getShippingOrderIdsByWaveId($waveId);
         //更新发货单状态为待分拣
         foreach ($shippingOrders as $shipOrder) {
             if (!WhShippingOrderModel::update(array('orderStatus' => PKS_WAITING_SORTING), $shipOrder['shipOrderId'])) {
                 self::$errCode = 502;
                 self::$errMsg = '更新发货单状态失败!';
                 WhWaveReceiveRecordModel::rollback();
                 return false;
             }
         }
     }
     WhWaveReceiveRecordModel::commit();
     self::$errCode = 200;
     self::$errMsg = "收货成功!请扫描下一个配货单 " . $statusMessage;
     return true;
 }
Ejemplo n.º 13
0
 /**
  * 1001014对这个发货单号进行测试
  * abnormalInvoiceAct::act_abnormalInvoice()
  * 拆分异常发货单
  * @author chenxianyu
  * @return array 
  */
 public function act_abnormalInvoice()
 {
     $userId = $_SESSION['userId'];
     $status = trim($_POST['status']);
     $orderids = isset($_POST['orderids']) ? $_POST['orderids'] : '';
     if (empty($orderids)) {
         self::$errCode = 0;
         self::$errMsg = '请选择发货单号!';
         return false;
     }
     //得到发货单号为一维数组
     $order_arr = explode(',', $orderids);
     $status_isSplit = '';
     //发货单已经是拆分过了的
     $one_sku = '';
     //单个SKU和单个组合料号的发货单
     $err_str = '';
     //发货单错误信息的提示
     $cuccess_str = '';
     //发货单成功信息的提示
     $data = array();
     //添加到拆分记录的数组
     $data_api = array();
     //通过接口传递到订单系统的数组
     $j = 0;
     //标识这个发货单拆分的时候之前是在分拣标识异常的状态还是在复核的时候标识为异常的状态
     foreach ($order_arr as $val) {
         $order = WhShippingOrderdetailModel::getShipDetailsById($val);
         if (!$order) {
             self::$errCode = 0;
             self::$errMsg .= "{$val}此发货单不存在!";
             continue;
         }
         if ($order[0]['orderStatus'] != PKS_UNUSUAL_SHIPPING_INVOICE) {
             continue;
         }
         if ($order[0]['isSplit'] == 2) {
             self::$errMsg .= "{$val}发货单是已经拆分过了,不能拆分!";
             $status_isSplit .= $val . ':发货单是已经拆分过了,不能拆分';
             continue;
         }
         //得到发货单号对应订单系统的订单号
         $result = WhShippingOrderModel::select_shipping_order_relation($val);
         $originOrderId = $result['originOrderId'];
         $arr_combine = array();
         //单个SKU
         if (count($order) == 1) {
             self::$errCode = 0;
             self::$errMsg .= "{$val}发货单是单个SKU的,不能拆分!";
             $one_sku .= $val . ':发货单是单个SKU的,不能拆分';
             continue;
         }
         $i = 0;
         //标识该发货单有不是组合料号的SKU
         foreach ($order as $values) {
             //如果有组合料号,先获取真实的SKU
             if (!empty($values['combineSku'])) {
                 $arr_combine[$values['combineSku']][] = $values;
             } else {
                 $i++;
                 //标识该发货单有不是组合料号的SKU
                 $shipOrderId = $val;
                 $sku = $values['sku'];
                 //获取配货单分拣复核记录信息
                 $result = OrderReviewModel::getReviewList('amount,sku', "where isScan = 1 and is_delete = 0 and shipOrderId = '{$shipOrderId}' and sku ='{$sku}'");
                 if (!empty($result)) {
                     $j = 1;
                     //表示是在复核的时候标识为异常的状态
                     $sku_count_all = 0;
                     //已经分拣的总数量
                     foreach ($result as $Pick) {
                         $sku_count_all += $Pick['amount'];
                         //已经分拣的数量
                     }
                     if ($sku_count_all < $values['amount']) {
                         $isShortage = 1;
                     } else {
                         $isShortage = 2;
                     }
                     $skuAmount = $values['amount'];
                     //应配货数量
                     $amount = $sku_count_all;
                     //已配货数量
                 } else {
                     //如果没有分拣复核的信息,那么就查找分拣记录
                     $pick_record = WhWavePickRecordModel::get_pickByIdSku($shipOrderId, $sku);
                     if ($pick_record) {
                         if ($pick_record[0]['skuAmount'] > $pick_record[0]['amount']) {
                             $isShortage = 1;
                         } else {
                             $isShortage = 2;
                         }
                         $skuAmount = $pick_record[0]['skuAmount'];
                         //应配货数量
                         $amount = $pick_record[0]['amount'];
                         //已配货数量
                         //如果分拣和分拣复核都没有数据的就跳过
                     } else {
                         if (strpos($err_str, $val) === false) {
                             self::$errMsg .= $val . '分拣和分拣复核都没有数据,';
                             $err_str .= $val . ':分拣和分拣复核都没有数据';
                         }
                     }
                 }
                 //传递到订单系统的
                 $data_api[$originOrderId][$isShortage][$values['sku']] = $values['amount'];
                 //添加到拆分记录表的
                 $data[$shipOrderId][] = array('oldshipOrderId' => $shipOrderId, 'sku' => $sku, 'createdTime' => time(), 'skuAmount' => $skuAmount, 'amount' => $amount, 'userId' => $userId, 'isShortage' => $isShortage);
             }
         }
         if (count($arr_combine) == 1 && $i == 0) {
             $one_sku .= $val . ',';
             continue;
         }
         //对组合起来的组合料号数组进行拆分
         if (!empty($arr_combine)) {
             foreach ($arr_combine as $keys => $v) {
                 $combineSku = $keys;
                 //组合料号
                 $arr_data = array();
                 $shortage = false;
                 foreach ($v as $list) {
                     $shipOrderId = $list['shipOrderId'];
                     $sku = $list['sku'];
                     $amount_datail = $list['amount'];
                     //获取配货单分拣复核记录信息
                     $re_combine = OrderReviewModel::getReviewList('amount,sku', "where isScan = 1 and is_delete = 0 and shipOrderId = '{$shipOrderId}' and sku ='{$sku}'");
                     if (!empty($re_combine)) {
                         $j = 1;
                         //表示是在复核的时候标识为异常的状态
                         $sku_count = 0;
                         foreach ($re_combine as $Pick) {
                             $sku_count += $Pick['amount'];
                         }
                         //当复核数量小于需要配货数量的时候
                         if ($sku_count < $amount_datail) {
                             $shortage = true;
                         }
                     } else {
                         //如果没有分拣复核的信息,那么就查找分拣记录
                         $pick_record = WhWavePickRecordModel::get_pickByIdSku($shipOrderId, $sku);
                         if ($pick_record) {
                             if ($pick_record[0]['skuAmount'] > $pick_record[0]['amount']) {
                                 $shortage = true;
                             }
                             $amount_datail = $pick_record[0]['skuAmount'];
                             $sku_count = $pick_record[0]['amount'];
                         } else {
                             //如果分拣和分拣复核都没有数据的就跳过
                             if (strpos($err_str, $val) === false) {
                                 self::$errMsg .= $val . '分拣和分拣复核都没有数据,';
                                 $err_str .= $val . ':分拣和分拣复核都没有数据';
                             }
                         }
                     }
                     $arr_data[] = array('oldshipOrderId' => $shipOrderId, 'sku' => $sku, 'createdTime' => time(), 'skuAmount' => $amount_datail, 'amount' => $sku_count, 'userId' => $userId, 'combineSku' => $combineSku);
                 }
                 if ($shortage) {
                     $isShortage = 1;
                 } else {
                     $isShortage = 2;
                 }
                 foreach ($arr_data as $data_value) {
                     //传递到订单系统的
                     $data_api[$originOrderId][$isShortage][$data_value['sku']] = $data_value['skuAmount'];
                     //添加到拆分记录表的
                     $data[$shipOrderId][] = array('oldshipOrderId' => $data_value['oldshipOrderId'], 'sku' => $data_value['sku'], 'createdTime' => time(), 'skuAmount' => $data_value['skuAmount'], 'amount' => $data_value['amount'], 'userId' => $data_value['userId'], 'combineSku' => $data_value['combineSku'], 'isShortage' => $isShortage);
                 }
             }
         }
         //以上是拆分发货单到拆分记录表的操作
         //把需要拆分的数组传递到订单系统
         WhBaseModel::begin();
         $ipa_res = CommonModel::get_shipDetail($data_api);
         /*
          $ipa_res = array(
         "status"=>true,
          "data"=> array(
                  $originOrderId=>array(
                      '1'=>array(
                          'omOrderId'=>14478451,
                          'actualTotal'=>7.43,
                          'usefulChannelId'=>66,
                          'calcOrderShipping'=>2.39,
                          'calOrderWeight'=>0.192,
                       ),
                       '2'=>array(
                         'omOrderId'=>15029562,
                          'actualTotal'=>22.29,
                          'usefulChannelId'=>66,
                          'calcOrderShipping'=>9.88,
                          'calOrderWeight'=>0.653
                          
                       ),
                  ),
              ),
         );
         */
         // var_dump($ipa_res);
         // print_r($data_api);
         //  print_r($data);
         //exit();
         //调用订单拆分接口成功
         if ($ipa_res['status']) {
             foreach ($data[$val] as $insert_list) {
                 //查询发货单拆分记录
                 $select_Invoice = WhWaveInvoiceSplitRecordModel::getInvoiceSplitBySku($insert_list['oldshipOrderId'], $insert_list['sku']);
                 if ($select_Invoice) {
                     continue;
                 } else {
                     //把拆分记录插入拆分记录数据表
                     $result_insert = WhWaveInvoiceSplitRecordModel::insert($insert_list);
                     if (!$result_insert) {
                         WhBaseModel::rollback();
                     }
                 }
                 //如果需配货数量与已配货数量不同,则把发货明细列表更新为逻辑删除
                 if ($insert_list['isShortage'] == 1) {
                     $update_result = WhShippingOrderdetailModel::updateShipDetailByShipOrderId($insert_list['oldshipOrderId'], $insert_list['sku']);
                     if (!$update_result) {
                         WhBaseModel::rollback();
                     }
                 }
             }
             //拆分有返回值
             if ($ipa_res['data'][$originOrderId]) {
                 foreach ($ipa_res['data'][$originOrderId] as $k => $list) {
                     //把原来的发货单与订单的关系更新为旧的发货单与新的有货的订单为对应关系
                     if ($k == 2) {
                         //2是代表有货的拆分 1是无货
                         $omOrderId = $list['omOrderId'];
                         $update_relation = WhShippingOrderRelationModel::update_shipping_by_orderId("shipOrderId = '{$val}'", "originOrderId = '{$omOrderId}'");
                         if (!$update_relation) {
                             WhBaseModel::rollback();
                         }
                         if ($j == 1) {
                             $orderStatus = PKS_WWEIGHING;
                         } else {
                             $orderStatus = PKS_WIQC;
                         }
                         //拆分成功后,旧的发货单就更新发货单列表的状态为待称重,估计重量,金额,估算运费
                         $calcShipping = $list['calcOrderShipping'];
                         $calcWeight = $list['calOrderWeight'];
                         $total = $list['actualTotal'];
                         $update_shipping_order = WhShippingOrderModel::update_shipping_order_by_id("id = '{$shipOrderId}' and is_delete = 0", "orderStatus = {$orderStatus},isSplit =2,calcShipping = '{$calcShipping}',calcWeight = '{$calcWeight}',total = '{$total}'");
                         if (!$update_shipping_order) {
                             WhBaseModel::rollback();
                         }
                     }
                 }
                 $cuccess_str .= '发货单为' . $val . ',';
             } else {
                 //拆分失败
                 if (strpos($err_str, $val) === false) {
                     self::$errMsg .= $val . '拆分发货单失败,';
                     $err_str .= $val . ':拆分发货单失败,订单系统不允许该发货单拆分';
                 }
                 WhBaseModel::rollback();
             }
         } else {
             //调用接口失败
             if (strpos($err_str, $val) === false) {
                 self::$errMsg .= $val . '调用订单系统的接口失败,';
                 $err_str .= $val . ':调用订单系统的接口失败';
             }
             WhBaseModel::rollback();
         }
         WhBaseModel::commit();
     }
     if (empty($cuccess_str)) {
         self::$errCode = 20;
         self::$errMsg .= '拆分失败,点击的异常发货单是单个料号或者是单个组合料号';
         $res['one_sku'] = $one_sku;
         $res['status_isSplit'] = $status_isSplit;
         $res['err'] = $err_str;
         return $res;
     }
     self::$errCode = 200;
     self::$errMsg .= '拆分已经完成,请注意拆分失败的发货单';
     $res['err'] = $err_str;
     $res['cuccess'] = $cuccess_str;
     $res['one_sku'] = $one_sku;
     $res['status_isSplit'] = $status_isSplit;
     return $res;
 }
Ejemplo n.º 14
0
 /**
  * pda_ExpressWeighingAct::act_trackingCount()
  * @author cxy 
  *快递箱子和跟踪号数量添加到数据库
  * @return
  */
 public function act_trackingCount()
 {
     $userId = $_SESSION['userId'];
     $ebay_id = trim($_POST['ebay_id']);
     $count_box = trim(intval($_POST['count_box']));
     $tracking_count = trim(intval($_POST['tracking']));
     $weighing = trim($_POST['weighing']);
     $weighing = $weighing * 1000;
     if (empty($userId)) {
         self::$errCode = '0';
         self::$errMsg = '系统登录超时,请先关闭浏览器 然后登录扫描!!';
         return false;
     }
     if (empty($ebay_id)) {
         self::$errCode = 0;
         self::$errMsg = '请填写单号!';
         return;
     }
     if ($count_box <= 1) {
         self::$errCode = 0;
         self::$errMsg = '请输入正确的箱子数量,最小是2!';
         return false;
     }
     if ($tracking_count < 1) {
         self::$errCode = 0;
         self::$errMsg = '请输入正确的跟踪号数量,最小是1!';
         return false;
     }
     if ($weighing <= 0) {
         self::$errCode = 0;
         self::$errMsg = '请输入正确的重量!';
         return;
     }
     $where = "where id={$ebay_id}";
     $order = orderPartionModel::selectOrder($where);
     if ($order[0]['transportId'] == 48) {
         //顺丰快递的跟踪号值能是一个
         $tracking_count = 1;
     } else {
         if ($tracking_count != $count_box) {
             self::$errCode = 0;
             self::$errMsg = '跟踪号数量与箱子数量不相等!';
             return;
         }
     }
     //逻辑删除以前称重的记录
     $update = WhWaveTrackingBoxModel::update(array('is_delete' => 1), array('shipOrderId' => $ebay_id));
     $data = array('boxCount' => $count_box, 'trackingCount' => $tracking_count, 'shipOrderId' => $ebay_id, 'weighTime' => time());
     $result = WhWaveTrackingBoxModel::insert($data);
     if ($result) {
         WhBaseModel::begin();
         $status = PKS_PRINT_SHIPPING_INVOICE;
         $result = WhShippingOrderModel::update_shipping_order_by_id("id = '{$ebay_id}' and is_delete = 0", "orderStatus = '{$status}',orderWeight = '{$weighing}'");
         if (!$result) {
             WhBaseModel::rollback();
             self::$errCode = 0;
             self::$errMsg = '称重添加失败,请联系负责人';
             return false;
         }
         $msg = orderWeighingModel::insertRecord($ebay_id, $userId);
         if (!$msg) {
             self::$errCode = 511;
             self::$errMsg = "插入称重记录失败!";
             WhBaseModel::rollback();
             return false;
         }
         $msg_update = orderWeighingModel::updateRecord($ebay_id, $weighing, $userId);
         if (!$msg_update) {
             self::$errCode = 512;
             self::$errMsg = "更新操作记录表失败!";
             WhBaseModel::rollback();
             return false;
         }
         WhPushModel::pushOrderStatus($ebay_id, 'PKS_PRINT_SHIPPING_INVOICE', $_SESSION['userId'], time());
         //状态推送,需要改为待打印面单(订单系统提供状态常量)
         WhBaseModel::commit();
         self::$errCode = 200;
         self::$errMsg = '操作成功,请称重下一个发货单号';
         return true;
     } else {
         self::$errCode = 211;
         self::$errMsg = '操作失败,请联系IT部门';
         return false;
     }
 }
Ejemplo n.º 15
0
 public function act_orderWeighingFlat()
 {
     $orderid = isset($_POST['orderid']) ? $_POST['orderid'] : "";
     $mailway = isset($_POST['channelId']) ? $_POST['channelId'] : "";
     //$partionId   = isset($_POST['partionId'])?$_POST['partionId']:"";//不作处理
     $orderweight = isset($_POST['orderweight']) ? $_POST['orderweight'] : "";
     if (!is_numeric($orderid) || empty($orderid)) {
         self::$errCode = 501;
         self::$errMsg = "错误的发货单号!";
         return false;
     }
     $where = "where id={$orderid}";
     $lists = orderWeighingModel::selectRecord($where);
     $calcweight = $lists[0]['calcWeight'] * 1000;
     //估算重量
     $userName = $_SESSION['userCnName'];
     /**重量拦截的逻辑**/
     $vip_users = C('weight_vip');
     //获取具有VIP权限的
     $lists = orderWeighingModel::selectOrderDetail($orderid);
     if (!in_array($userName, $vip_users)) {
         //判断是否具有vip操作权限
         $minRate = 0.8;
         $maxRate = 1.2;
     } else {
         $minRate = 0.5;
         $maxRate = 2;
     }
     if ($calcweight < 50 && $orderweight < 50) {
         if (abs($orderweight - $calcweight) >= 20) {
             self::$errCode = 509;
             self::$errMsg = "该订单重量与实际不符合!系统重量为{$calcweight}称重重量为{$orderweight}";
             return false;
         }
     } else {
         if (($orderweight < $calcweight * $minRate || $orderweight > $calcweight * $maxRate) && $calcweight != 0) {
             self::$errCode = 510;
             self::$errMsg = "该订单重量与实际不符合!系统重量为{$calcweight}称重重量为{$orderweight}";
             return false;
         }
     }
     TransactionBaseModel::begin();
     //更新状态,插入记录
     $userId = $_SESSION['userId'];
     $msg = orderWeighingModel::insertRecord($orderid, $userId);
     if (!$msg) {
         self::$errCode = 511;
         self::$errMsg = "插入称重记录失败!";
         TransactionBaseModel::rollback();
         return false;
     }
     $msg = orderWeighingModel::updateRecord($orderid, $orderweight, $userId);
     if (!$msg) {
         self::$errCode = 512;
         self::$errMsg = "更新操作记录表失败!";
         TransactionBaseModel::rollback();
         return false;
     }
     //更新发货单实际重量和状态
     $orderData = array('orderWeight' => $orderweight, 'orderStatus' => PKS_WDISTRICT);
     $msg = WhShippingOrderModel::update($orderData, $orderid);
     //orderWeighingModel::updateStatus($orderid);
     if (!$msg) {
         self::$errCode = 513;
         self::$errMsg = "更新发货单重量和状态失败!";
         TransactionBaseModel::rollback();
         return false;
     }
     //插入运输方式跟踪号申请记录表
     $transportData = array('shipOrderId' => $orderid, 'createTime' => time());
     $msg = WhWaveOrderTransportModel::insert($transportData);
     if (!$msg) {
         self::$errCode = 514;
         self::$errMsg = "插入运输方式跟踪号记录表失败!";
         TransactionBaseModel::rollback();
         return false;
     }
     WhPushModel::pushOrderStatus($orderid, 'PKS_WDISTRICT', $userId, time());
     //状态推送
     TransactionBaseModel::commit();
     return true;
 }
Ejemplo n.º 16
0
 /**
  * 分区操作
  * @author czq
  */
 public function act_checkPartion()
 {
     if (!$_SESSION['userId']) {
         $result = array('status' => 0, 'msg' => '请先登录系统');
         echo json_encode($result);
         exit;
     }
     $shipOrderId = trim($_REQUEST['shipOrderId']);
     $shipOrder = WhShippingOrderModel::find($shipOrderId);
     if (empty($shipOrder)) {
         $result = array('status' => 'A00', 'msg' => '发货单信息不存在');
         echo json_encode($result);
         exit;
     }
     if ($shipOrder['orderStatus'] != PKS_WDISTRICT) {
         $result = array('status' => 'A00', 'msg' => '发货单非待分区状态,不能分区');
         echo json_encode($result);
         exit;
     }
     if (empty($shipOrder['channelId'])) {
         $result = array('status' => 'A00', 'msg' => '发货单在申请运输方式中,请稍后分区');
         echo json_encode($result);
         exit;
     }
     $partition = WhTransportPartitionModel::getPartition($shipOrder['channelId'], $shipOrder['countryName']);
     if ($partition) {
         $vo = WhOrderPartionRecordsModel::find("shipOrderId='" . $shipOrderId . "'");
         if (!$vo) {
             $data = array('shipOrderId' => $shipOrderId, 'packageId' => 0, 'partitionId' => $partition['id'], 'weight' => $shipOrder['orderWeight'], 'partion' => $partition['title'], 'scanUserId' => $_SESSION['userId'], 'scanTime' => time(), 'modifyTime' => 0, 'note' => '', 'is_delete' => 0, 'storeId' => 0);
             WhOrderPartionRecordsModel::insert($data);
             $result = array('status' => $partition['code'], 'partition' => $partition['partition'], 'msg' => $partition['title']);
         } else {
             if ($vo['packageId']) {
                 $result = array('status' => 'A00', 'partition' => $partition['partition'], 'msg' => '已打包,不能再分区');
             } else {
                 $result = array('status' => $partition['code'], 'partition' => $partition['partition'], 'msg' => '包裹已分拣,分区为: ' . $partition['title']);
             }
         }
     } else {
         $result = array('status' => 'A00', 'partition' => '', 'msg' => '当前国家未分区,请联系销售人员');
     }
     echo json_encode($result);
     exit;
 }
Ejemplo n.º 17
0
        if ($transport['fee'] < $shipFee) {
            $shipFee = $transport['fee'];
            $lastTransport = $transport;
        }
    }
    //运费最优策略,暂时只有EUB
    $bestTransport = getBestTransport($compareTrasprot, $lastTransport);
    $shipFee = $bestTransport['fee'];
    $transportId = $bestTransport['carrierId'];
    $channelId = $bestTransport['channelId'];
    $insertData = array('transportId' => $transportId, 'status' => 1, 'transportTime' => time());
    //启用事物
    WhWaveOrderTransportModel::begin();
    //更新申请记录表
    if (!WhWaveOrderTransportModel::update($insertData, ' shipOrderId = ' . $shipOrderId . ' AND status=0')) {
        $log .= "发货单:{$shipOrderId} 更新运输方式-{$transportId}记录表失败\n";
        WhWaveOrderTransportModel::rollback();
        continue;
    }
    //更新发货单表
    $shipOrderData = array('transportId' => $transportId, 'actualShipping' => $shipFee, 'channelId' => $channelId);
    if (!WhShippingOrderModel::update($shipOrderData, $shipOrderId)) {
        $log .= "发货单:{$shipOrderId} 更新运输方式-{$transportId},运费-{$shipFee}发货单表失败\n";
        WhWaveOrderTransportModel::rollback();
        continue;
    }
    $log .= "发货单:{$shipOrderId} 更新运输方式 - {$transportId},运费 - {$shipFee}记录表成功\n";
    WhWaveOrderTransportModel::commit();
}
//写日志
write_log("transport_assign/" . date('Y-m') . "/" . date('H') . ".txt", $log);
Ejemplo n.º 18
0
 public function recordDataFromExecl_all()
 {
     // echo $_FILES['excelsheet']['tmp_name'];exit;
     $parseresult = $this->parsexls($_FILES['excelsheet']['tmp_name']);
     if (empty($parseresult)) {
         return FALSE;
     }
     $date = trim($_POST['date']);
     $time = strtotime($date);
     $time2 = $time + 60 * 60 * 24;
     $sql = "select * from wh_order_tracknumber where createdTime>=" . "'{$time}' and createdTime <" . "'{$time2}'";
     $res = $this->dbconn->query($sql);
     $resrows = array();
     while ($row = mysql_fetch_assoc($res)) {
         $resrows[$row['tracknumber']] = $row;
     }
     foreach ($resrows as $key => $val) {
         if (array_key_exists($key, $parseresult)) {
             unset($parseresult[$key]);
         }
     }
     $imar = $parseresult;
     if (count($parseresult) == 0) {
         self::$errCode = 0;
         self::$errMsg = '';
         self::$data = $imar;
         return true;
     }
     // echo '<pre>';
     // print_r($parseresult);exit;
     $sqlstr = 'insert into wh_order_tracknumber (`shipOrderId`,`tracknumber`,`createdTime`) values ';
     $sqlar = array();
     // $time = time();
     foreach ($parseresult as $val) {
         $val[1] = mysql_real_escape_string($val[1]);
         $val[2] = mysql_real_escape_string($val[2]);
         $sqlar[] = "('{$val['1']}', '{$val['2']}', '{$time}')";
     }
     $sqlstr .= implode(',', $sqlar);
     //   echo $sqlstr;exit;
     WhBaseModel::begin();
     $result = $this->dbconn->query($sqlstr);
     $insertnum = mysql_affected_rows();
     if (!$result) {
         // 导入失败
         WhBaseModel::rollback();
         return FALSE;
     } else {
         $is_array = array();
         //发货单号是否已经存在
         //  echo '<pre>';
         //  print_r($parseresult);
         foreach ($parseresult as $list) {
             if (in_array($list[1], $is_array)) {
                 continue;
             }
             $shipOrderId = $list[1];
             // $upstatus_sql = 'update wh_shipping_order set orderStatus='.PKS_WAITING_LOADING.' where id='.$list['shipOrderId'];
             $result_update = WhShippingOrderModel::update_shipping_order_by_id("id = '{$shipOrderId}'", "orderStatus=" . PKS_WAITING_LOADING);
             if (empty($result_update)) {
                 WhBaseModel::rollback();
                 return FALSE;
             }
             WhPushModel::pushOrderStatus($shipOrderId, 'PKS_WAITING_LOADING', $_SESSION['userId'], time());
             //状态推送
         }
     }
     WhBaseModel::commit();
     self::$data = $imar;
     return true;
 }