feat: 사용자 피드백(문의사항) 일괄 반영
- #5/#6/#12 전화 주문 접수: 판매수량 입력 중 엔터키 → 다음 봉투 종류 수량칸으로 이동 - #7 주문접수 관리: 배달일을 접수일 이전으로 변경 불가(클라이언트 min + 서버 검증) - #9 주문접수 관리: 주문수정저장·영수증출력·주문취소 버튼을 접수품목내역 타이틀 옆으로 이동 - #10 주문접수 관리: 접수리스트 하단에 건수·금액 합계 표시(취소 제외) - #13 전화 주문 접수: 접수표 행·열 간격 축소(한 화면 표시) - #14 주문접수 관리: 포장명세 봉투종류~봉투코드 컬럼 간격 조정 - #16 판매대장: 품목 필터 순서 변경(일반용→재사용→공공용→음식물→폐기물) - #18 재고 현황: 종류~계 사이 간격 축소(표 최대폭 제한) - #20/#21 주문접수 관리: 화면명 '주문접수 관리'로 변경, 조회 기준 배달일→접수일, 기본 조회일=오늘(초기화 시 당일), 접수번호 매일 1번부터 시작 - #23 담당자 구분 라벨 '구·군' → '지자체'
This commit is contained in:
@@ -7048,9 +7048,13 @@ SQL;
|
||||
$unitMap[$code] = $unit;
|
||||
}
|
||||
|
||||
// 접수번호 — 매일 1번부터 시작(당일 접수 건수 + 1)
|
||||
$receiptNo = 1;
|
||||
if ($lgIdx) {
|
||||
$receiptNo = (int) model(ShopOrderModel::class)->where('so_lg_idx', $lgIdx)->countAllResults() + 1;
|
||||
$receiptNo = (int) model(ShopOrderModel::class)
|
||||
->where('so_lg_idx', $lgIdx)
|
||||
->where('so_order_date', date('Y-m-d'))
|
||||
->countAllResults() + 1;
|
||||
}
|
||||
|
||||
return $this->render('전화 주문 접수', 'bag/order_phone', compact('shops', 'bagCodes', 'priceMap', 'unitMap', 'receiptNo'));
|
||||
@@ -7067,10 +7071,16 @@ SQL;
|
||||
return redirect()->to(site_url('bag/sales'))->with('error', '지자체를 선택해 주세요.');
|
||||
}
|
||||
|
||||
// 일자별·기간별 조회 (배달일 so_delivery_date 기준)
|
||||
$startDate = trim((string) ($this->request->getGet('start_date') ?? ''));
|
||||
$endDate = trim((string) ($this->request->getGet('end_date') ?? ''));
|
||||
$isYmd = static fn (string $d): bool => preg_match('/^\d{4}-\d{2}-\d{2}$/', $d) === 1;
|
||||
// 일자별·기간별 조회 (접수일 so_order_date 기준) — 파라미터 없이 진입하면 기본값 = 오늘
|
||||
$startRaw = $this->request->getGet('start_date');
|
||||
$endRaw = $this->request->getGet('end_date');
|
||||
$startDate = trim((string) ($startRaw ?? ''));
|
||||
$endDate = trim((string) ($endRaw ?? ''));
|
||||
if ($startRaw === null && $endRaw === null) {
|
||||
$startDate = date('Y-m-d');
|
||||
$endDate = date('Y-m-d');
|
||||
}
|
||||
$isYmd = static fn (string $d): bool => preg_match('/^\d{4}-\d{2}-\d{2}$/', $d) === 1;
|
||||
if ($isYmd($startDate) && $isYmd($endDate) && $startDate > $endDate) {
|
||||
[$startDate, $endDate] = [$endDate, $startDate];
|
||||
}
|
||||
@@ -7082,10 +7092,10 @@ SQL;
|
||||
$builder->where('so_channel', 'phone');
|
||||
}
|
||||
if ($isYmd($startDate)) {
|
||||
$builder->where('so_delivery_date >=', $startDate);
|
||||
$builder->where('so_order_date >=', $startDate);
|
||||
}
|
||||
if ($isYmd($endDate)) {
|
||||
$builder->where('so_delivery_date <=', $endDate . ' 23:59:59');
|
||||
$builder->where('so_order_date <=', $endDate);
|
||||
}
|
||||
$orders = $builder->orderBy('so_idx', 'DESC')->limit(200)->findAll();
|
||||
|
||||
@@ -7181,7 +7191,7 @@ SQL;
|
||||
];
|
||||
}
|
||||
|
||||
return $this->render('전화접수 관리', 'bag/order_phone_manage', [
|
||||
return $this->render('주문접수 관리', 'bag/order_phone_manage', [
|
||||
'orders' => $payload,
|
||||
'startDate' => $isYmd($startDate) ? $startDate : '',
|
||||
'endDate' => $isYmd($endDate) ? $endDate : '',
|
||||
@@ -7343,8 +7353,15 @@ SQL;
|
||||
'so_total_amount' => $sumAmt,
|
||||
];
|
||||
// 배달일 수정 — 입력값이 유효한 날짜면 변경 반영(수정일자로 변경 처리)
|
||||
// 단, 접수일 이전 날짜로는 변경 불가.
|
||||
$deliveryDate = trim((string) ($this->request->getPost('so_delivery_date') ?? ''));
|
||||
if (preg_match('/^\d{4}-\d{2}-\d{2}$/', $deliveryDate) === 1) {
|
||||
$orderDate = substr((string) ($order->so_order_date ?? ''), 0, 10);
|
||||
if ($orderDate !== '' && $deliveryDate < $orderDate) {
|
||||
$db->transRollback();
|
||||
|
||||
return redirect()->back()->with('error', '배달일은 접수일(' . $orderDate . ') 이후로만 변경할 수 있습니다.');
|
||||
}
|
||||
$orderUpdate['so_delivery_date'] = $deliveryDate;
|
||||
}
|
||||
$orderModel->update($soIdx, $orderUpdate);
|
||||
|
||||
Reference in New Issue
Block a user