|
|
@@ -70,6 +70,51 @@ class OrderService
|
|
|
}
|
|
|
|
|
|
|
|
|
+ private function delayedChangeParam(array &$params, $page, $paginate)
|
|
|
+ {
|
|
|
+ $startRow = $page ? ($page-1)*$paginate : 0;
|
|
|
+ $endRow = $page ? $page*$paginate : null;
|
|
|
+ $sql = <<<SQL
|
|
|
+ SELECT ORDERNO FROM(
|
|
|
+ SELECT ACT_ALLOCATION_DETAILS.ORDERNO,ROWNUM rn FROM ACT_ALLOCATION_DETAILS
|
|
|
+ LEFT JOIN DOC_ORDER_HEADER ON DOC_ORDER_HEADER.ORDERNO = ACT_ALLOCATION_DETAILS.ORDERNO
|
|
|
+ WHERE CHECKTIME > TO_DATE(NVL(H_EDI_20,H_EDI_03),'yyyy-mm-dd,hh24:mi:ss')+({$params["delayedDeliver"]}/24)
|
|
|
+ AND NVL(H_EDI_20,H_EDI_03) IS NOT NULL AND NVL(DOC_ORDER_HEADER.H_EDI_20,DOC_ORDER_HEADER.H_EDI_03) <> 'ERP订单取消'
|
|
|
+ AND CHECKTIME IS NOT NULL
|
|
|
+SQL;
|
|
|
+ if (isset($paginate["customerid"]) && is_array($paginate["customerid"]) && count($paginate["customerid"])>0){
|
|
|
+ $sql .= " AND CUSTOMERID IN (";
|
|
|
+ foreach ($paginate["customerid"] as $index => $customer){
|
|
|
+ $sql .= "'".$customer."'";
|
|
|
+ if ($index!==count($paginate["customerid"])-1)$sql.=",";
|
|
|
+ }
|
|
|
+ $sql.=")";
|
|
|
+ }
|
|
|
+ $ki = (isset($params["orderdate_start"]) ? 1 : 0) + (isset($params["orderdate_end"]) ? 2 : 0);
|
|
|
+ switch ($ki){
|
|
|
+ case 0:
|
|
|
+ $params["orderdate_start"] = date('Y-m-d H:i', strtotime("-15 day"));
|
|
|
+ $params["orderdate_end"] = date('Y-m-d H:i');
|
|
|
+ $sql.=" AND DOC_ORDER_HEADER.ADDTIME BETWEEN TO_DATE('{$params["orderdate_start"]}:00','yyyy-mm-dd,hh24:mi:ss') AND TO_DATE('{$params["orderdate_end"]}:59','yyyy-mm-dd,hh24:mi:ss')";
|
|
|
+ break;
|
|
|
+ case 1:
|
|
|
+ if (strlen($params["orderdate_start"]) < 11) $params["orderdate_start"] .= ' 00:00';
|
|
|
+ $sql.=" AND DOC_ORDER_HEADER.ADDTIME >= TO_DATE('{$params["orderdate_start"]}:00','yyyy-mm-dd,hh24:mi:ss')";
|
|
|
+ break;
|
|
|
+ case 2:
|
|
|
+ if (strlen($params["orderdate_end"]) < 11) $params["orderdate_end"] .= ' 23:59';
|
|
|
+ $sql.=" AND DOC_ORDER_HEADER.ADDTIME <= TO_DATE('{$params["orderdate_end"]}:59','yyyy-mm-dd,hh24:mi:ss')";
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ if (strlen($params["orderdate_start"]) < 11) $params["orderdate_start"] .= ' 00:00';
|
|
|
+ if (strlen($params["orderdate_end"]) < 11) $params["orderdate_end"] .= ' 23:59';
|
|
|
+ $sql.=" AND DOC_ORDER_HEADER.ADDTIME BETWEEN TO_DATE('{$params["orderdate_start"]}:00','yyyy-mm-dd,hh24:mi:ss') AND TO_DATE('{$params["orderdate_end"]}:59','yyyy-mm-dd,hh24:mi:ss')";
|
|
|
+ }
|
|
|
+ if ($endRow)$sql .= " AND ROWNUM<=50";
|
|
|
+ $sql .= " ORDER BY ORDERNO) WHERE rn>{$startRow}";
|
|
|
+ $params = ["query" => " AND ORDERNO IN ({$sql})"];
|
|
|
+ }
|
|
|
+
|
|
|
private function preciseQuery(array $params, $sql)
|
|
|
{
|
|
|
$orderdate_start = $params["orderdate_start"] ?? null;
|
|
|
@@ -97,6 +142,9 @@ class OrderService
|
|
|
$edisendflag = $params["edisendflag"] ?? null;
|
|
|
$manualflag = $params["manualflag"] ?? null;
|
|
|
$checkAllSign = $params['checkAllSign'] ?? null;
|
|
|
+ if ($params["query"] ?? false){
|
|
|
+ $sql .= $params["query"];
|
|
|
+ }
|
|
|
if ($ordernos) {
|
|
|
$sql .= " AND orderno IN " . $ordernos;
|
|
|
}
|
|
|
@@ -252,6 +300,11 @@ class OrderService
|
|
|
|
|
|
public function getSql($params, $page = null, $paginate = null)
|
|
|
{
|
|
|
+ if (isset($params["delayedDeliver"]) && is_numeric($params["delayedDeliver"]) && is_int((int)$params["delayedDeliver"])){
|
|
|
+ if ($page)$page = 1;
|
|
|
+ $this->delayedChangeParam($params, $page, $paginate);
|
|
|
+ }
|
|
|
+
|
|
|
$checktime_start = $params['checktime_start'] ?? null;
|
|
|
$checktime_end = $params['checktime_end'] ?? null;
|
|
|
$checkData = $params['data'] ?? null;
|
|
|
@@ -280,7 +333,7 @@ class OrderService
|
|
|
DOC_ORDER_HEADER.WaveNo,DOC_ORDER_HEADER.SOReference1
|
|
|
,DOC_ORDER_HEADER.soreference5,DOC_ORDER_HEADER.EDISENDFLAG2,DOC_ORDER_HEADER.EDISendTime2,DOC_ORDER_HEADER.Notes,DOC_ORDER_HEADER.ERPCANCELFLAG,
|
|
|
DOC_ORDER_HEADER.Picking_Print_Flag,DOC_ORDER_HEADER.EDISENDFLAG
|
|
|
- ,DOC_ORDER_HEADER.ReleaseStatus,DOC_ORDER_HEADER.C_Address1,DOC_ORDER_HEADER.OrderTime,DOC_ORDER_HEADER.EDIREMARKS2 from (select * from DOC_ORDER_HEADER order by ADDTIME desc )DOC_ORDER_HEADER where 1=1 ";
|
|
|
+ ,DOC_ORDER_HEADER.ReleaseStatus,DOC_ORDER_HEADER.C_Address1,DOC_ORDER_HEADER.OrderTime,DOC_ORDER_HEADER.EDIREMARKS2 from DOC_ORDER_HEADER where 1=1 ";
|
|
|
$sql = $this->preciseQuery($params, $sql);
|
|
|
if ($checkData) {
|
|
|
if (!is_array($checkData)) $checkData = explode(',', $checkData);
|
|
|
@@ -298,7 +351,7 @@ class OrderService
|
|
|
}
|
|
|
if (isset($params["alternate_sku1"])) $page = 1;
|
|
|
if ($paginate && $page) $sql .= " and ROWNUM<='" . $page * $paginate . "')";
|
|
|
- if ($paginate && $page) $sql .= " header where header.rn>'" . ($page - 1) * $paginate . "' ";
|
|
|
+ if ($paginate && $page) $sql .= " header where header.rn>'" . ($page - 1) * $paginate . "' order by ADDTIME desc";
|
|
|
$sql .= ")DOC_ORDER_HEADER left join DOC_ORDER_DETAILS on DOC_ORDER_DETAILS.ORDERNO=DOC_ORDER_HEADER.ORDERNO
|
|
|
left join BAS_CODES order_code on order_code.CODE=DOC_ORDER_HEADER.sostatus and order_code.codeid='SO_STS'
|
|
|
left join BAS_CODES order_detail_code on order_detail_code.CODE=DOC_ORDER_DETAILS.linestatus and order_detail_code.codeid='SO_STS'
|