<?php
/**
 * Created by JetBrains PhpStorm.
 * User: user
 * Date: 14-9-22
 * Time: 下午5:00
 * To change this template use File | Settings | File Templates.
 */
require_once 'config.php';

$flag = APPLICATION_PATH . '/../data/log/autoAsnUKTL.lock';

if (@file_exists($flag)) {
    echo "Another process is running.\r\n";
    echo "{$flag}\r\n";
    exit();
}

$handler = fopen($flag, 'wb');
fclose($handler);

echo '[', date('Y-m-d H:i:s'), '] Starting.', "\r\n";

// 从订单反推ASN，更具目的性，提高性能
$condition = array(
    'sm_code'                 => 'UKTL', // 运输方式
    'order_status'            => 4, // 订单状态：已提交
    'order_mode_type'         => 1, // 集货模式
    'empty_ref_tracking_number'=>'1',
);
$total   = Service_Orders::getByCondition($condition, 'count(*)');
$pageSize = 20;
$totalPage = ceil($total/$pageSize);
for($page=1;$page<=$totalPage;$page++){
    $orderList = Service_Orders::getByCondition($condition,'*',$pageSize,$page,'order_id desc');
    foreach($orderList as $k=>$v){
      // 数据过滤
      if ('UKTL' !== trim($v['sm_code'])
          || 1 !== (int) $v['order_mode_type']
          || 4 !== (int) $v['order_status']
          || '' !== trim($v['ref_tracking_number'])) {
        continue ;
      }

      $receivingDetail = Service_ReceivingOrderDetail::getByCondition(array(
        'order_code' => $v['order_code'],
      ));

      // 没有提取到数据或不是在途、收货中状态，继续下一轮
      if (empty($receivingDetail) || !in_array((int) $receivingDetail[0]['rd_status'], array(0, 1), TRUE)) {
        continue ;
      }

      $receiving = Service_Receiving::getByField((int) $receivingDetail[0]['receiving_id'], 'receiving_id');

      // 提取不到数据或不是集货ASN或状态不在待审核、已审核、在途、收货中状态之中，继续下一轮
      if (empty($receiving) || 1 !== (int) $receiving['receive_model_type'] || !in_array((int) $receiving['receiving_status'], array(3, 4, 5, 6), TRUE)) {
        continue ;
      }

        $uktlService = new Service_UktlWebService();
        $return = $uktlService->createUktlOrder($v['order_code']);
        if($return[0]!="SUCCESS"){
            echo $v['order_code']." get label fail reason:</br>";
            var_dump($return);
        }else{
            $pdfLabelUrl = $return[1];
            $refTrackingNumber = $return[2];
            $updateOrder = array(
                'ref_tracking_number'=>$refTrackingNumber
            );
            Service_Orders::update($updateOrder,$v['order_id'],"order_id");
            $full_path = APPLICATION_PATH.'/../data/pdf/UKTL/'.$v['order_code'].'.pdf';
            $content = file_get_contents($pdfLabelUrl);
            if(!file_exists($full_path)){
                touch($full_path);
            }
            file_put_contents($full_path,$content,FILE_APPEND);
            echo $v['order_code']." get label Success</br>";
        }
    }
}
echo "[" . date('Y-m-d H:i:s') . "] End run\r\n";
@unlink($flagFile);