diff --git a/app/Controllers/Bag.php b/app/Controllers/Bag.php index d1f4918..c3ec581 100644 --- a/app/Controllers/Bag.php +++ b/app/Controllers/Bag.php @@ -7022,12 +7022,26 @@ SQL; return redirect()->to(site_url('bag/sales'))->with('error', '지자체를 선택해 주세요.'); } + // 일자별·기간별 조회 (접수일 so_order_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; + if ($isYmd($startDate) && $isYmd($endDate) && $startDate > $endDate) { + [$startDate, $endDate] = [$endDate, $startDate]; + } + $db = \Config\Database::connect(); $orderModel = model(ShopOrderModel::class); $builder = $orderModel->where('so_lg_idx', $lgIdx); if ($db->fieldExists('so_channel', 'shop_order')) { $builder->where('so_channel', 'phone'); } + if ($isYmd($startDate)) { + $builder->where('so_order_date >=', $startDate); + } + if ($isYmd($endDate)) { + $builder->where('so_order_date <=', $endDate . ' 23:59:59'); + } $orders = $builder->orderBy('so_idx', 'DESC')->limit(200)->findAll(); $orderIds = array_values(array_map(static fn ($o): int => (int) ($o->so_idx ?? 0), $orders)); @@ -7056,6 +7070,25 @@ SQL; ]; } + // 주문의 지정판매소 상세(코드·담당자·전화·주소) — 우측 '지정판매소 정보' 표시용 + $shopMap = []; + $dsIdxs = array_values(array_unique(array_filter(array_map(static fn ($o): int => (int) ($o->so_ds_idx ?? 0), $orders), static fn ($v): bool => $v > 0))); + if ($dsIdxs !== [] && $db->tableExists('designated_shop')) { + $shopRows = $db->table('designated_shop') + ->select('ds_idx, ds_shop_no, ds_name, ds_rep_name, ds_tel, ds_addr, ds_addr_detail') + ->whereIn('ds_idx', $dsIdxs) + ->get()->getResultArray(); + foreach ($shopRows as $s) { + $shopMap[(int) $s['ds_idx']] = [ + 'shop_no' => (string) ($s['ds_shop_no'] ?? ''), + 'name' => (string) ($s['ds_name'] ?? ''), + 'rep_name' => (string) ($s['ds_rep_name'] ?? ''), + 'tel' => (string) ($s['ds_tel'] ?? ''), + 'addr' => trim((string) ($s['ds_addr'] ?? '') . ' ' . (string) ($s['ds_addr_detail'] ?? '')), + ]; + } + } + $itemsByOrder = []; foreach ($itemRows as $item) { $orderId = (int) ($item->soi_so_idx ?? 0); @@ -7079,9 +7112,16 @@ SQL; $payload = []; foreach ($orders as $order) { $id = (int) ($order->so_idx ?? 0); + $dsIdx = (int) ($order->so_ds_idx ?? 0); + $shop = $shopMap[$dsIdx] ?? ['shop_no' => '', 'name' => '', 'rep_name' => '', 'tel' => '', 'addr' => '']; $payload[] = [ 'so_idx' => $id, + 'so_ds_idx' => $dsIdx, 'so_ds_name' => (string) ($order->so_ds_name ?? ''), + 'ds_shop_no' => $shop['shop_no'], + 'ds_rep_name' => $shop['rep_name'], + 'ds_tel' => $shop['tel'], + 'ds_addr' => $shop['addr'], 'so_order_date' => (string) ($order->so_order_date ?? ''), 'so_delivery_date' => (string) ($order->so_delivery_date ?? ''), 'so_payment_type' => (string) ($order->so_payment_type ?? ''), @@ -7093,7 +7133,9 @@ SQL; } return $this->render('전화접수 관리', 'bag/order_phone_manage', [ - 'orders' => $payload, + 'orders' => $payload, + 'startDate' => $isYmd($startDate) ? $startDate : '', + 'endDate' => $isYmd($endDate) ? $endDate : '', ]); } diff --git a/app/Views/admin/layout.php b/app/Views/admin/layout.php index 23b447c..7de9d0d 100644 --- a/app/Views/admin/layout.php +++ b/app/Views/admin/layout.php @@ -190,6 +190,16 @@ tailwind.config = { window.addEventListener('storage', function (e) { if (e.key === FONT_KEY) applyScale(curScale()); }); })(); + diff --git a/app/Views/bag/layout/embed.php b/app/Views/bag/layout/embed.php index ca378fc..43c777d 100644 --- a/app/Views/bag/layout/embed.php +++ b/app/Views/bag/layout/embed.php @@ -218,6 +218,16 @@ tailwind.config = { if (document.readyState === 'loading') document.addEventListener('DOMContentLoaded', run, { once: true }); else run(); })(); + diff --git a/app/Views/bag/layout/portal.php b/app/Views/bag/layout/portal.php index 52854be..f6ca7c0 100644 --- a/app/Views/bag/layout/portal.php +++ b/app/Views/bag/layout/portal.php @@ -285,6 +285,16 @@ tailwind.config = { if (minus) minus.addEventListener('click', function () { applyScale(curScale() - 10); }); })(); + diff --git a/app/Views/bag/order_phone_manage.php b/app/Views/bag/order_phone_manage.php index a925b47..e472783 100644 --- a/app/Views/bag/order_phone_manage.php +++ b/app/Views/bag/order_phone_manage.php @@ -1,8 +1,18 @@ +
전화 주문 접수 관리 - 전화 주문 접수
+
+ + + ~ + + + + 초기화 + +
@@ -39,25 +49,28 @@
-
상세 정보
+
지정판매소 정보
-
-
-
접수번호: -
-
판매소: -
-
결제구분: -
-
-
-
접수일: -
-
배달일: -
-
상태: -
+
+
+
접수번호 -
+
판매소코드 -
+
판매소명 -
+
담당자 -
+
전화번호 -
+
결제수단 -
+
주소 -
+
접수일 -
+
배달일 -
+
상태 -
+
접수 품목 내역
@@ -114,12 +127,17 @@ const nf = (n) => new Intl.NumberFormat('ko-KR').format(n || 0); function setHeader(order) { - document.getElementById('detail-so-no').textContent = order ? String(order.so_idx || '-') : '-'; - document.getElementById('detail-shop-name').textContent = order ? (order.so_ds_name || '-') : '-'; - document.getElementById('detail-payment').textContent = order ? (order.so_payment_type || '-') : '-'; - document.getElementById('detail-order-date').textContent = order ? (order.so_order_date || '-') : '-'; - document.getElementById('detail-delivery-date').textContent = order ? (order.so_delivery_date || '-') : '-'; - document.getElementById('detail-status').textContent = order ? ((order.so_status === 'cancelled') ? '취소' : '정상') : '-'; + var t = function (id, v) { document.getElementById(id).textContent = (v === undefined || v === null || v === '') ? '-' : v; }; + t('detail-so-no', order ? order.so_idx : ''); + t('detail-shop-code', order ? order.ds_shop_no : ''); + t('detail-shop-name', order ? order.so_ds_name : ''); + t('detail-shop-rep', order ? order.ds_rep_name : ''); + t('detail-shop-tel', order ? order.ds_tel : ''); + t('detail-payment', order ? order.so_payment_type : ''); + t('detail-shop-addr', order ? order.ds_addr : ''); + t('detail-order-date', order ? order.so_order_date : ''); + t('detail-delivery-date', order ? order.so_delivery_date : ''); + t('detail-status', order ? ((order.so_status === 'cancelled') ? '취소' : '정상') : ''); } function calcRow(tr) {