Exemplo n.º 1
0
 /**
  * WaveOrderPrintingView::view_prints()
  * 对配货单进行打印预览
  * @author cxy 
  * @return void
  */
 public function view_prints()
 {
     $shipOrderId = trim($_GET['shipOrderId']);
     $waveId = trim($_GET['waveId']);
     $wave = WhWaveInfoModel::find($waveId);
     if ($wave['waveType'] == 2) {
         //单料号的配货单
         //if($shipOrderId !='null'){
         //    echo $shipOrderId;
         //   	$orderlist = WhWaveScanRecordModel::getShipOrders($waveId, $shipOrderId);
         // }else{
         $orderlist = WhWaveScanRecordModel::getShipOrders($waveId);
         // }
         $onesku = true;
     } else {
         // if($shipOrderId !='null'){
         //    	$orderlist = WhWaveShippingRelationModel::getShipOrders($waveId, $shipOrderId);
         //}else{
         $orderlist = WhWaveShippingRelationModel::getShipOrders($waveId);
         // }
         $onesku = false;
     }
     if (!$orderlist) {
         $return = array('status' => 1, 'msg' => '该配货单下无此发货单,不能打印');
         echo $return;
         exit;
     }
     $carries = WhBaseModel::cache('trans.carrier.info.get');
     if (!$carries) {
         //接口获取快递运输方式
         require_once WEB_PATH . "html/api/include/opensys_functions.php";
         $paramArr = array('method' => 'trans.carrier.info.get', 'format' => 'json', 'v' => '1.0', 'username' => 'purchase', 'type' => 1);
         $result = json_decode(callOpenSystem($paramArr), true);
         $templist = $result['data'];
         if ($templist) {
             foreach ($templist as $val) {
                 $carries[$val['id']] = $val;
                 $carries['express_ids'][] = $val['id'];
             }
         }
         WhBaseModel::cache('trans.carrier.info.get', $carries);
     }
     foreach ($orderlist as $key => $val) {
         if ($val['transportId'] && in_array($val['transportId'], $carries['express_ids'])) {
             $val['isexpress'] = 1;
             $express_ordids[] = $val['shipOrderId'];
         } else {
             $val['isexpress'] = 0;
             $ordids[] = $val['shipOrderId'];
         }
         $orderlist[$key] = $val;
     }
     // var_dump($onesku);
     // print_r($orderlist);
     $this->smarty->assign('onesku', $onesku);
     $this->smarty->assign('orderlist', $orderlist);
     $this->smarty->display('waveOrderPrinting_startprint.htm');
 }
Exemplo n.º 2
0
}
$wave_info = WhWaveInfoModel::get_wave_info('id, number, waveType, waveZone,startArea, printStorey', array('id in' => $ids));
if (!empty($wave_info)) {
    $total_nums = count($wave_info);
    foreach ($wave_info as $key => $wave) {
        $receive_info = array();
        //区域路由
        /*$receive_area   =   WhWaveReceiveRecordModel::select(array('waveId'=>$wave['id'], 'order by'=> 'id asc'), 'area');
          if(!empty($receive_area)){
              foreach($receive_area as $v){
                  $receive_info   .=  " {$v['area']} =>";
              }
              $receive_info   =   trim($receive_info, '=>');
          }*/
        $page_num = 35;
        $scan_record = WhWaveScanRecordModel::get_scan_record_union_area($wave['id']);
        //获取配货记录及区域负责人id
        //print_r($scan_record);exit;
        $area_info = array_unique(get_filed_array('area', $scan_record));
        $area_user = WhWaveAreaUserRelationModel::get_user_by_areaName($area_info);
        $area_user = reverse_array($area_user, 'user', 'area');
        $note = '';
        /** 获取单发货单配货备注**/
        if ($wave['waveType'] == 1) {
            $note = WhShippingOrderNoteRecordModel::get_order_note_by_waveId($wave['id']);
            if (!empty($note)) {
                $note = get_filed_array('content', $note);
                $note = implode("<br />", $note);
            } else {
                $note = '';
            }
Exemplo n.º 3
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;
 }
Exemplo n.º 4
0
 /**
  * 生成配货单明细
  */
 private function createWaveScanRecord($waveId)
 {
     //检查是否已生成配货单明细
     $wave = WhWaveScanRecordModel::find("waveId='{$waveId}'");
     if (!$wave) {
         $skulist = WhShippingOrderdetailModel::getShippingOrderSkuList($waveId);
         $list = array();
         foreach ($skulist as $val) {
             if ($list[$val['sku']]) {
                 $list[$val['sku']]['skuAmount'] = $list[$val['sku']]['skuAmount'] + $val['amount'];
             } else {
                 $data = array('waveId' => $val['waveId'], 'sku' => $val['sku'], 'skuAmount' => $val['amount'], 'pName' => $val['pName'], 'storey' => $val['storey'], 'area' => $val['areaName']);
                 $list[$val['sku']] = $data;
             }
         }
         WhWaveScanRecordModel::begin();
         $result = WhWaveScanRecordModel::insert($list, true);
         if ($result) {
             WhWaveScanRecordModel::commit();
         } else {
             WhWaveScanRecordModel::rollback();
         }
     }
 }
Exemplo n.º 5
0
 public function view_skupick()
 {
     $waveId = $_POST['waveId'] ? $_POST['waveId'] : $_GET['waveId'];
     $waveId = WhWaveInfoModel::number_decode($waveId);
     $sku = get_goodsSn($_POST['sku'] ? $_POST['sku'] : $_GET['sku']);
     if ($waveId) {
         $wave = WhWaveInfoModel::find($waveId);
     }
     if (!$waveId || !$wave) {
         $msg = array('status' => 'A00', 'waveStatus' => 'A00', 'msg' => '波次配货单不存在,参数错误');
         echo json_encode($msg);
         exit;
     }
     $recordlist = array();
     $recordlist = WhWaveScanRecordModel::getRecordInfoBySku($sku, $waveId);
     if (!$recordlist) {
         $msg = array('status' => 'A00', 'waveStatus' => 'A00', 'msg' => '料号对应的发货单不存在,请确认料号输入正确');
         echo json_encode($msg);
         exit;
     }
     $record = array();
     $firstRecord = array();
     foreach ($recordlist as $val) {
         if (!$firstRecord) {
             $firstRecord = $val;
         }
         if (!$val['pickStatus']) {
             $record = $val;
             break;
         }
     }
     if ($record['pickLight']) {
         if ($record && !$record['record_id']) {
             //料号无分拣,插入新记录
             $new_record = array('waveId' => $record['waveId'], 'shipOrderId' => $record['shipOrderId'], 'sku' => $record['sku'], 'skuAmount' => $record['skuAmount'], 'amount' => '1', 'pickStatus' => $record['skuAmount'] == 1 ? 1 : 0, 'pickUserId' => intval($_SESSION['userId']), 'pickTime' => time(), 'deleteUserId' => '0', 'deleteTime' => '0', 'is_delete' => '0');
             $record_id = WhWavePickRecordModel::insert($new_record);
         } else {
             if ($record) {
                 $data = array();
                 $data['amount'] = $record['pickcount'] + 1;
                 if ($data['amount'] >= $record['skuAmount']) {
                     $data['pickStatus'] = 1;
                 }
                 if (!$record['pickUserId']) {
                     $data['pickUserId'] = intval($_SESSION['userId']);
                     $data['pickTime'] = time();
                 }
                 WhWavePickRecordModel::update($data, $record['record_id']);
             }
         }
         $msg = array('status' => 'A' . ($record['pickLight'] >= 10 ? $record['pickLight'] : '0' . $record['pickLight']), 'pickLight' => $record['pickLight'] . '号桶', 'shipOrderId' => $record['shipOrderId'], 'waveStatus' => 'A00', 'msg' => '');
         //检查当前发货单是否已完结分拣
         $pickrecord = WhWavePickRecordModel::find("shipOrderId='" . $record['shipOrderId'] . "' AND pickStatus=0 AND is_delete=0");
         if (!$pickrecord) {
             //快递小包通用待复核
             $data = array('orderStatus' => PKS_WIQC);
             WhShippingOrderModel::update($data, "id='" . $record['shipOrderId'] . "'");
             WhPushModel::pushOrderStatus($record['shipOrderId'], 'PKS_WIQC', $_SESSION['userId'], time());
         }
     } else {
         if ($firstRecord) {
             $msg = array('status' => 'A00', 'pickLight' => $firstRecord['pickLight'] . '号桶', 'shipOrderId' => $firstRecord['shipOrderId'], 'waveStatus' => 'A00', 'msg' => '料号[' . $sku . ']已完成分拣');
         } else {
             $msg = array('status' => 'A00', 'waveStatus' => 'A00', 'msg' => '料号[' . $sku . ']未找到对应发货单和筒号');
         }
     }
     //检查当前波次是否已分拣完结
     $pickstatus = WhWavePickRecordModel::checkPickStatus($waveId);
     if ($pickstatus === true) {
         /*$data = array(
         			'waveStatus' => 5
         		);
         		WhWaveInfoModel::update($data, $waveId);*/
         //返回波次完结信息
         $msg['waveStatus'] = 'A99';
         $msg['msg'] = '波次配货单已分拣完结';
     }
     echo json_encode($msg);
 }
 /**
  *	获取多SKU波次对应的全部发货单
  *	注:单SKU波次对应发货单调用:WhWaveScanRecordModel::getShipOrders($waveId, $shipOrderId);
  *	@param  $waveId:波次
  *	@param  $shipOrderId:发货单号
  *	@author cmf
  */
 public static function getShipOrders($waveId = '', $shipOrderId = '')
 {
     $sql = "select b.transportId, a.waveId, a.shipOrderId from wh_wave_shipping_relation a \n\t\t\t\tleft join wh_shipping_order b ON(a.shipOrderId=b.id)\n\t\t\t\twhere a.is_delete=0 AND a.waveId='{$waveId}'" . ($shipOrderId ? " AND a.shipOrderId='{$shipOrderId}'" : "") . " group by a.shipOrderId order by a.id ASC";
     $list = WhWaveScanRecordModel::query($sql);
     return $list ? $list : array();
 }
Exemplo n.º 7
0
 /**
  * WhWaveScanRecordModel::inser_scan_data()
  * 插入配货记录数据
  * @param int $wave_id 波次ID
  * @param int $shipOrderId 发货单ID
  * @param array $scan_data 配货数据数组
  * @author Gary
  * @return bool
  */
 public static function inser_scan_data($wave_id, $scan_data)
 {
     self::initDB();
     $wave_id = intval($wave_id);
     //$shipOrderId    =   intval($shipOrderId);
     if (!$wave_id || !is_array($scan_data)) {
         return FALSE;
     }
     $data = '';
     $scan_data = array_filter($scan_data);
     foreach ($scan_data as $val) {
         //拼接配货记录
         $record = WhWaveScanRecordModel::select(array('waveId' => $wave_id, 'sku' => $val['sku'], 'pName' => $val['pName'], 'is_delete' => 0), array('id', 'skuAmount'));
         if (!empty($record)) {
             $skuAmount = $record[0]['skuAmount'] + $val['skuAmount'];
             $info = self::update(array('skuAmount' => $skuAmount), $record[0]['id']);
         } else {
             $data = "('{$wave_id}', '{$val['sku']}', '{$val['skuAmount']}', '{$val['pName']}', '{$val['storey']}', '{$val['area']}')";
             $sql = 'insert into ' . self::$tablename . ' (waveId, sku, skuAmount, pName, storey, area) values ' . $data;
             //echo $sql;exit;
             $info = self::$dbConn->query($sql);
         }
         if ($info == FALSE) {
             return $info;
         }
     }
     return $info;
 }