|
|
@@ -125,7 +125,12 @@ class OrderController extends BaseController
|
|
|
util::fail('不是你的订单');
|
|
|
}
|
|
|
$customName = $order->customName ?? '';
|
|
|
- $date = date("Ymd", strtotime($order->addTime));
|
|
|
+ // 下载文件名里的日期跟销售单抬头一致:发货日年月日
|
|
|
+ $sendTime = $order->sendTime ?? '';
|
|
|
+ if (empty($sendTime) || strpos($sendTime, '0000-00-00') === 0) {
|
|
|
+ $sendTime = $order->addTime ?? '';
|
|
|
+ }
|
|
|
+ $date = date('Ymd', strtotime($sendTime));
|
|
|
$orderSn = $order->orderSn ?? '';
|
|
|
$name = $customName . '_' . $date . '_' . $orderSn;
|
|
|
$shop = $this->shop;
|
|
|
@@ -1107,16 +1112,18 @@ class OrderController extends BaseController
|
|
|
$where['book'] = $book;
|
|
|
}
|
|
|
$searchTime = $get['searchTime'] ?? '';
|
|
|
- //0搜索的addTime 1搜索的payTime
|
|
|
- $searchTimeType = $get['searchTimeType'] ?? 0;
|
|
|
+ // 0 开单时间 addTime,1 账单时间 payTime,2 发货时间 sendTime;1 保持原值避免旧端/书签坏掉
|
|
|
+ $searchTimeType = (int)($get['searchTimeType'] ?? 0);
|
|
|
if (!empty($searchTime)) {
|
|
|
$startTime = $get['startTime'] ?? '';
|
|
|
$endTime = $get['endTime'] ?? '';
|
|
|
$period = dateUtil::formatTime($searchTime, $startTime, $endTime);
|
|
|
- if ($searchTimeType == 0) {
|
|
|
- $where['addTime'] = ['between', [$period['startTime'], $period['endTime']]];
|
|
|
- } else {
|
|
|
+ if ($searchTimeType === 2) {
|
|
|
+ $where['sendTime'] = ['between', [$period['startTime'], $period['endTime']]];
|
|
|
+ } elseif ($searchTimeType === 1) {
|
|
|
$where['payTime'] = ['between', [$period['startTime'], $period['endTime']]];
|
|
|
+ } else {
|
|
|
+ $where['addTime'] = ['between', [$period['startTime'], $period['endTime']]];
|
|
|
}
|
|
|
}
|
|
|
|
|
|
@@ -1124,7 +1131,7 @@ class OrderController extends BaseController
|
|
|
ini_set('memory_limit', '2045M');
|
|
|
set_time_limit(0);
|
|
|
if (!isset($where['payTime'])) {
|
|
|
- util::fail('请选 账单日期 和 时间段');
|
|
|
+ util::fail('请选 账单时间 和 时间段');
|
|
|
}
|
|
|
$start = $where['payTime'][1][0];
|
|
|
$end = $where['payTime'][1][1];
|
|
|
@@ -1185,7 +1192,15 @@ class OrderController extends BaseController
|
|
|
$where['sendType'] = $sendType;
|
|
|
}
|
|
|
|
|
|
- $respond = OrderClass::getOrderList($where);
|
|
|
+ // 排序跟着当前时间类型:开单 addTime、账单 payTime、发货 sendTime
|
|
|
+ if ($searchTimeType === 2) {
|
|
|
+ $order = 'sendTime DESC, addTime DESC';
|
|
|
+ } elseif ($searchTimeType === 1) {
|
|
|
+ $order = 'payTime DESC, addTime DESC';
|
|
|
+ } else {
|
|
|
+ $order = 'addTime DESC';
|
|
|
+ }
|
|
|
+ $respond = OrderClass::getOrderList($where, $order);
|
|
|
if ($export == 1) {
|
|
|
OrderClass::exportOrderData($respond, $this->mainId);
|
|
|
}
|
|
|
@@ -2608,7 +2623,7 @@ class OrderController extends BaseController
|
|
|
util::success($out);
|
|
|
}
|
|
|
|
|
|
- //客户欠款的订单 ssh 2021.2.4
|
|
|
+ // 客户欠款订单列表:searchTime 筛开单日期 addTime,sendSearchTime 筛发货日期 sendTime
|
|
|
public function actionDebtList()
|
|
|
{
|
|
|
$get = Yii::$app->request->get();
|
|
|
@@ -2622,19 +2637,28 @@ class OrderController extends BaseController
|
|
|
$startTime = $get['startTime'] ?? '';
|
|
|
$endTime = $get['endTime'] ?? '';
|
|
|
$period = dateUtil::formatTime($searchTime, $startTime, $endTime);
|
|
|
- $where['payTime'] = ['between', [$period['startTime'], $period['endTime']]];
|
|
|
+ $where['addTime'] = ['between', [$period['startTime'], $period['endTime']]];
|
|
|
} else {
|
|
|
if ($mainId == 33447 && $id == 51031) {
|
|
|
util::fail('请选时间');
|
|
|
}
|
|
|
}
|
|
|
+ // 发货日期筛选:按 xhGhsOrder.sendTime,可与开单日期同时生效
|
|
|
+ $sendSearchTime = $get['sendSearchTime'] ?? '';
|
|
|
+ if (!empty($sendSearchTime)) {
|
|
|
+ $sendStartTime = $get['sendStartTime'] ?? '';
|
|
|
+ $sendEndTime = $get['sendEndTime'] ?? '';
|
|
|
+ $sendPeriod = dateUtil::formatTime($sendSearchTime, $sendStartTime, $sendEndTime);
|
|
|
+ $where['sendTime'] = ['between', [$sendPeriod['startTime'], $sendPeriod['endTime']]];
|
|
|
+ }
|
|
|
$allowedPageSizes = [100, 200, 300];
|
|
|
$pageSize = isset($get['pageSize']) && in_array((int)$get['pageSize'], $allowedPageSizes, true)
|
|
|
? (int)$get['pageSize'] : 100;
|
|
|
$page = max(1, (int)($get['page'] ?? 1));
|
|
|
- $fields = ['id', 'orderSn', 'actPrice', 'addTime', 'remainDebtPrice', 'debtPrice', 'payTime', 'remark', 'tkPrice', 'nextDayTkPrice', 'clearId'];
|
|
|
+ $fields = ['id', 'orderSn', 'actPrice', 'addTime', 'remainDebtPrice', 'debtPrice', 'payTime', 'sendTime', 'remark', 'tkPrice', 'nextDayTkPrice', 'clearId'];
|
|
|
Yii::$app->request->setQueryParams(array_merge($get, ['page' => $page, 'pageSize' => $pageSize]));
|
|
|
- $result = OrderClass::getList($fields, $where, 'addTime DESC');
|
|
|
+ // 待结勾选按发货时间排:同一批发货的单挨在一起;空 sendTime 会沉到底
|
|
|
+ $result = OrderClass::getList($fields, $where, 'sendTime DESC, addTime DESC');
|
|
|
if (!empty($result['list'])) {
|
|
|
foreach ($result['list'] as $key => $value) {
|
|
|
$debtPrice = $value['debtPrice'] ?? 0;
|
|
|
@@ -2916,7 +2940,7 @@ class OrderController extends BaseController
|
|
|
if (empty($date)) {
|
|
|
util::fail('请选择日期');
|
|
|
}
|
|
|
-
|
|
|
+ util::fail('不能再修改');
|
|
|
$connection = Yii::$app->db;
|
|
|
$transaction = $connection->beginTransaction();//开启事务
|
|
|
try {
|
|
|
@@ -2974,6 +2998,63 @@ class OrderController extends BaseController
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 修改订单发货时间:同时写 xhGhsOrder.sendTime 与 xhCg.sendTime。
|
|
|
+ * ghsApp 订单详情「发货时间-修改」调用;允许补录过去日期。关键词 sync_send_time
|
|
|
+ */
|
|
|
+ public function actionModifySendTime()
|
|
|
+ {
|
|
|
+ $get = Yii::$app->request->get();
|
|
|
+ $id = $get['id'] ?? 0;
|
|
|
+ $date = $get['date'] ?? '';
|
|
|
+ $date = str_replace('/', '-', trim($date));
|
|
|
+ if (empty($date) || !preg_match('/^\d{4}-\d{2}-\d{2}$/', $date)) {
|
|
|
+ util::fail('请选择日期');
|
|
|
+ }
|
|
|
+ $connection = Yii::$app->db;
|
|
|
+ $transaction = $connection->beginTransaction();
|
|
|
+ try {
|
|
|
+ $order = OrderClass::getById($id, true);
|
|
|
+ if (empty($order)) {
|
|
|
+ util::fail('没有找到订单');
|
|
|
+ }
|
|
|
+ if ($order->mainId != $this->mainId) {
|
|
|
+ util::fail('不是你的订单');
|
|
|
+ }
|
|
|
+ $oldSendTime = (string)$order->sendTime;
|
|
|
+ $oldDate = substr($oldSendTime, 0, 10);
|
|
|
+ if ($oldDate === $date) {
|
|
|
+ util::fail('日期没变');
|
|
|
+ }
|
|
|
+ $cgId = $order->purchaseId ?? 0;
|
|
|
+ $cg = PurchaseClass::getById($cgId, true);
|
|
|
+ if (empty($cg)) {
|
|
|
+ util::fail('没有找到订单信息');
|
|
|
+ }
|
|
|
+ // 只改日期,时分秒沿用原发货时间;空值则用当前时刻,方便补录历史单
|
|
|
+ if (empty($oldSendTime) || strpos($oldSendTime, '0000-00-00') === 0) {
|
|
|
+ $new = $date . ' ' . date('H:i:s');
|
|
|
+ } else {
|
|
|
+ $timeArr = explode(' ', $oldSendTime);
|
|
|
+ $after = $timeArr[1] ?? date('H:i:s');
|
|
|
+ $new = $date . ' ' . $after;
|
|
|
+ }
|
|
|
+ $order->sendTime = $new;
|
|
|
+ if (!$order->save()) {
|
|
|
+ util::fail('修改失败');
|
|
|
+ }
|
|
|
+ $cg->sendTime = $new;
|
|
|
+ if (!$cg->save()) {
|
|
|
+ util::fail('修改失败');
|
|
|
+ }
|
|
|
+ $transaction->commit();
|
|
|
+ util::complete('修改成功');
|
|
|
+ } catch (\Exception $e) {
|
|
|
+ $transaction->rollBack();
|
|
|
+ util::fail('修改失败');
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* 应收统计:按支付日汇总。
|
|
|
* originAmount=未扣隔天;nextDayAmount=跨天售后;amount=已扣隔天(净额)。
|