checkLevelModal(9); // 페이징(Next, 화살표) 클릭 시 파라미터가 유실되지 않도록 모든 필수 변수를 REQUEST로 명확히 수집 $page = isset($_REQUEST['page']) ? (int)$_REQUEST['page'] : 1; if($page <= 0) $page = 1; $searchtype = isset($_REQUEST['searchtype']) ? $_REQUEST['searchtype'] : ''; $searchDriver = isset($_REQUEST['searchDriver']) ? $_REQUEST['searchDriver'] : ''; $key_word = isset($_REQUEST['key_word']) ? $_REQUEST['key_word'] : ''; $cstatus = isset($_REQUEST['cstatus']) ? $_REQUEST['cstatus'] : ''; $switched = isset($_REQUEST['switched']) ? $_REQUEST['switched'] : ''; $switch = isset($_REQUEST['switch']) ? $_REQUEST['switch'] : ''; $show_all = isset($_REQUEST['show_all']) ? $_REQUEST['show_all'] : ''; $view = isset($_REQUEST['view']) ? $_REQUEST['view'] : 'oilhistory_list'; // Download 기능 제한 (Admin : 1, Manager : 3, Staff : 5 만 가능) $permit = array("1", "5", "6", "7", "9"); if (in_array($_SESSION['ss_LEVEL'], $permit)) { $setTag = "ENABLED"; } else { $setTag = "DISABLED"; } $time_start = microtime(true); // 변수 초기화 및 받아오기 $add_srchquery = ""; $isSearchPerformed = false; // searching logic if($searchtype == "R" && trim($key_word)) { $key_wordStr = urldecode(trim($key_word)); $add_srchquery .= " AND ((d.d_name LIKE '%$key_wordStr%') OR (d.d_accountno LIKE '%$key_wordStr%') OR (d.d_address LIKE '%$key_wordStr%'))"; $isSearchPerformed = true; } else if ($searchtype == "D" && $searchDriver) { $isSearchPerformed = true; } // 전체보기 버튼을 눌렀거나 페이징 이동 시 강제로 리스트 검색 실행 상태로 유지 if ($show_all == 'Y') { $isSearchPerformed = true; } // sorting if($switch) { $switched = $func -> switchOrder($switch, $switched); $sort_sql = " ORDER BY $switch $switched "; $switched = $switch . "^" . $switched; } else if($switched) { $switched1 = explode("^", $switched); $sort_sql = " ORDER BY $switched1[0] $switched1[1] "; } else { $sort_sql = " ORDER BY max_visitdate DESC, d.d_accountno DESC "; } $getSWHStr = $switched; // 레벨 9 처리 if ($_SESSION['ss_LEVEL'] == 9) { $searchDriver = $_SESSION['ss_UID']; $isSearchPerformed = true; } // 검색 조건 설정 $qrySTR = " (c.c_uid = d.d_customeruid) "; if ($searchDriver) { $qrySTR .= " AND (c.c_driveruid = '$searchDriver') "; } // Account Status if ($cstatus == 'T') $status_query = " AND (c.c_status = 'A' OR c.c_status = 'I') "; else if ($cstatus == 'I') $status_query = " AND (c.c_status = 'I') "; else { $cstatus = 'A'; $status_query = " AND (c.c_status = 'A') "; } // 날짜 변수 $get1Mon = date("Ym"); $get1_12Mon = date("Y"); $dt = new DateTime(); $day = $dt->format('j'); $dt->modify('first day of -1 month'); $dt->modify('+' . (min($day, $dt->format('t')) - 1) . ' days'); $get2Mon = $dt->format('Ym'); $dt = new DateTime(); $dt->modify('first day of -2 month'); $get3Mon = $dt->format('Ym'); $dt = new DateTime(); $dt->modify('first day of -3 month'); $get4Mon = $dt->format('Ym'); $strList = ""; $total_count = 0; if ($isSearchPerformed) { // 1. 전체 카운트 $query_cnt = "SELECT count(distinct d.d_accountno) FROM tbl_daily d INNER JOIN tbl_customer c ON d.d_customeruid = c.c_uid WHERE d.d_status = 'F' AND $qrySTR $status_query $add_srchquery"; $total_count = $jdb->rQuery($query_cnt, "Count Error"); if(!$list_count) $list_count = (int)$INIT_PAGECNT; if($list_count <= 0) $list_count = 20; if(!$page_count) $page_count = 10; $start_number = $list_count * ($page-1); // 2. 메인 리스트 쿼리 $query = "SELECT d.d_accountno, MAX(d.d_visitdate) as max_visitdate, c.c_name, c.c_address, c.c_accountno, c.c_paymentcycle, c.c_paymenttype, c.c_sludge, c.c_rate, c.c_uid, m.m_initial, m.m_region, SUM(CASE WHEN d.d_visitdate LIKE '$get1Mon%' THEN d.d_quantity ELSE 0 END) AS MON_1, SUM(CASE WHEN d.d_visitdate LIKE '$get2Mon%' THEN d.d_quantity ELSE 0 END) AS MON_2, SUM(CASE WHEN d.d_visitdate LIKE '$get3Mon%' THEN d.d_quantity ELSE 0 END) AS MON_3, SUM(CASE WHEN d.d_visitdate LIKE '$get4Mon%' THEN d.d_quantity ELSE 0 END) AS MON_4, SUM(CASE WHEN d.d_visitdate LIKE '$get1_12Mon%' THEN d.d_quantity ELSE 0 END) AS YEAR_1 FROM tbl_daily d INNER JOIN tbl_customer c ON d.d_customeruid = c.c_uid LEFT JOIN tbl_member m ON c.c_driveruid = m.m_uid WHERE d.d_status = 'F' AND $qrySTR $status_query $add_srchquery GROUP BY d.d_accountno, c.c_name, c.c_address, c.c_accountno, c.c_paymentcycle, c.c_paymenttype, c.c_sludge, c.c_rate, c.c_uid, m.m_initial, m.m_region $sort_sql LIMIT $start_number, $list_count"; $result = $jdb->nQuery($query, "Main List Error"); $list_number = $total_count - (($page-1)*$list_count); if ($result) { while($list = mysqli_fetch_assoc($result)) { $max_nameSTR = str_replace("\\", "", $list['c_name']); $max_addressSTR = str_replace("\\", "", $list['c_address']); $max_accountnoSTR = str_replace("\\", "", $list['c_accountno']); $max_cycle = $arrPaymentCycle[str_replace("\\", "", $list['c_paymentcycle'])]; $max_paymenttype = str_replace("\\", "", $list['c_paymenttype']); $max_sludgeSTR = preg_replace('/[^A-Za-z0-9\-]/', '', $list['c_sludge']); $get1MonQ = number_format(floatval($list['MON_1'])); $get2MonQ = number_format(floatval($list['MON_2'])); $get3MonQ = number_format(floatval($list['MON_3'])); $get4MonQ = number_format(floatval($list['MON_4'])); $get2_4MonQ = number_format(floatval($list['MON_2'] + $list['MON_3'] + $list['MON_4'])); $get1_12MonQ = number_format(floatval($list['YEAR_1'])); $strList .= " $list_number $max_nameSTR $max_accountnoSTR $max_paymenttype ".$list['c_rate']." $max_sludgeSTR $max_cycle $max_addressSTR ".$list['m_region']." ".$list['m_initial']." $get1MonQ $get2MonQ $get3MonQ $get4MonQ $get2_4MonQ $get1_12MonQ "; $list_number--; } } } if(!$isSearchPerformed) { $strList = "Please search for a restaurant or select a driver."; } else if ($total_count < 1) { $strList = "No Data"; } // 상단 통계 if ($isSearchPerformed && $searchDriver && ($searchtype == "D" || $_SESSION['ss_LEVEL'] == 9)) { $qry_stats = "SELECT SUM(CASE WHEN d_visitdate LIKE '$get1Mon%' THEN d_quantity ELSE 0 END) AS T1, SUM(CASE WHEN d_visitdate LIKE '$get1Mon%' AND d_form_eu != '' AND d_form_eu <= d_orderdate THEN d_quantity ELSE 0 END) AS E1, SUM(CASE WHEN d_visitdate LIKE '$get2Mon%' THEN d_quantity ELSE 0 END) AS T2, SUM(CASE WHEN d_visitdate LIKE '$get2Mon%' AND d_form_eu != '' AND d_form_eu <= d_orderdate THEN d_quantity ELSE 0 END) AS E2, SUM(CASE WHEN d_visitdate LIKE '$get3Mon%' THEN d_quantity ELSE 0 END) AS T3, SUM(CASE WHEN d_visitdate LIKE '$get3Mon%' AND d_form_eu != '' AND d_form_eu <= d_orderdate THEN d_quantity ELSE 0 END) AS E3, SUM(CASE WHEN d_visitdate LIKE '$get4Mon%' THEN d_quantity ELSE 0 END) AS T4, SUM(CASE WHEN d_visitdate LIKE '$get4Mon%' AND d_form_eu != '' AND d_form_eu <= d_orderdate THEN d_quantity ELSE 0 END) AS E4, SUM(CASE WHEN d_visitdate LIKE '$get1_12Mon%' THEN d_quantity ELSE 0 END) AS TY, SUM(CASE WHEN d_visitdate LIKE '$get1_12Mon%' AND d_form_eu != '' AND d_form_eu <= d_orderdate THEN d_quantity ELSE 0 END) AS EY FROM tbl_daily d INNER JOIN tbl_customer c ON d.d_customeruid = c.c_uid WHERE c.c_driveruid = '$searchDriver' $status_query AND d.d_status = 'F'"; $rs_stats = $jdb->fQuery($qry_stats, "Stats Error"); $get1MonTOT = number_format(floatval($rs_stats['T1'])); $get1MonEU = number_format(floatval($rs_stats['E1'])); $get2MonTOT = number_format(floatval($rs_stats['T2'])); $get2MonEU = number_format(floatval($rs_stats['E2'])); $get3MonTOT = number_format(floatval($rs_stats['T3'])); $get3MonEU = number_format(floatval($rs_stats['E3'])); $get4MonTOT = number_format(floatval($rs_stats['T4'])); $get4MonEU = number_format(floatval($rs_stats['E4'])); $get1_12MonTOT = number_format(floatval($rs_stats['TY'])); $get1_12MonEU = number_format(floatval($rs_stats['EY'])); $qry_dvr_info = "SELECT m_initial, m_region FROM tbl_member WHERE m_uid = '$searchDriver'"; $rt_dvr = $jdb->fQuery($qry_dvr_info, "Driver Info Error"); } // 드라이버 셀렉트박스 목록 $qry_driver = "SELECT * FROM tbl_member WHERE m_level = 9 AND m_regionuid != '' ORDER by m_region ASC "; $rt_driver = $jdb->nQuery($qry_driver, "Driver List Error"); $c_driveruidSTR = ""; while($lt_driver = @mysqli_fetch_assoc($rt_driver)) { $selectStr = ($lt_driver['m_uid'] == $searchDriver) ? "selected" : ""; $c_driveruidSTR .= ""; } if ($searchtype == 'D') $setDisplayRStr = " style='DISPLAY:none'"; else if ($searchtype == 'R' || $searchtype == '') $setDisplayDStr = " style='DISPLAY:none'"; $time_end = microtime(true); $timeStr = " [".round(($time_end - $time_start),2)."]"; ?>
>
>
Region (Driver) : ()
Period 1M 2M 3M 4M Yearly
ISCC Oil Quantity / / / / /
No Restaurant Name Payment Rate Sludge P. Cycle Address Region Driver 1M 2M 3M 4M 2-4M Yearly