청춘님의 펜션예약 스킨 금액계산관련. 정보
청춘님의 펜션예약 스킨 금액계산관련.본문
안녕하세요~
청춘님의 펜션예약관리 프로그램을 수정해서 사용하고 있는 데요~
질문이 있어 문의를 드립니다~
금액계산관련하여~ 궁금한점이 있는데요~
주말관련 금액계산문제 입니다....
더듬더듬 찾아가니... 주말요금문제를 해결하였는데요~~~~~
주중, 주말 설정을 하다보니.. 궁금한 점이 생겨 문의드립니다~
주중 : 월 ~ 금
주말 : 토 ~ 일
공휴일 : 공휴일
이렇게 설정하고 싶은데요~
금액변동이 항상 그 전에 변경된다는점입니다~
질문이 어렵게 느껴지는데요 ㅠ.ㅠ
주중에는 50000원으로 하고
토, 일 요일 요금을 100000원, 공휴일도 100000만원으로 싶은데요
그런데 하루전요금에서 변동이 발생합니다~
무슨 이야기인가 하면....
주말이 토,일로 설정하지만 금요일과, 토요일이 주말요금으로 되고,
일요일은 주중요금으로 계산되어지는 점입니다~
공휴일또한 마찬가지이구요~
공휴일 당일은 50000원 이고,,,, 공휴일 전날이 100000원으로 설정된다~
이런 이야기 입니다~
계산하는 부분중~ 어느곳을 변경해야 될지.. 혹시 가르쳐 주실분 계실지요~
<?php
// 스킨파일은 단독으로 실행할 수 없다
if(defined('_GNUBOARD_') == false)
{
exit('함수파일은 단독으로 실행할 수 없습니다.');
}
// 목록화면을 위한 관리자 인증세션을 저장한다
if($type == 'true')
{
$_SESSION['admin'] = true;
goto_url($g4['bbs_path'] . '/board.php?bo_table=' . $bo_table);
}
// 달력화면을 위한 관리자 인증세션을 삭제한다
if($type == 'false')
{
unset($_SESSION['admin']);
goto_url($g4['bbs_path'] . '/board.php?bo_table=' . $bo_table);
}
// 버튼의 유형을 정의한다 (달력보기 or 목록보기)
if($is_admin && $_SESSION['admin'])
{
$BUTTON = "<img src=\"{$board_skin_path}/img/b_list.gif\" alt=\"목록보기\" />";
}
else
{
$BUTTON = "<img src=\"{$board_skin_path}/img/b_calendar.gif\" alt=\"달력보기\" />";
}
// 객실정보게시판이 정의되지 않았다면 실행을 중지한다
$OBJECT = sql_fetch("SELECT * FROM {$g4['board_table']} WHERE bo_table = '{$board['bo_1']}'");
if(isset($OBJECT['bo_table']) == false)
{
alert('객실정보게시판이 정의되지 않았습니다.');
}
// 필요한 변수값이 정의되지 않았다면 기본값으로 설정한다
if((int)$board['bo_3'] < 1)
{
$board['bo_3'] = 1;
}
if((int)$board['bo_4'] < 1)
{
$board['bo_4'] = 90;
}
if((int)$board['bo_5'] < 1)
{
$board['bo_5'] = 10;
}
if((int)$board['bo_6'] < 1)
{
$board['bo_6'] = $board['bo_3'];
}
// 예약내역삭제일이 경과한 미입금 예약목록은 삭제한다
$result = sql_query("SELECT wr_id FROM {$write_table} WHERE wr_last < DATE_SUB(now(), INTERVAL {$board['bo_6']} DAY) AND wr_7 = 'F'");
while($row = sql_fetch_array($result))
{
sql_query("DELETE FROM {$write_table} WHERE wr_parent = '{$row['wr_id']}'");
sql_query("DELETE FROM {$g4['board_new_table']} WHERE bo_table = '{$bo_table}' AND wr_parent = '{$row['wr_id']}'");
sql_query("UPDATE {$g4['board_table']} SET bo_count_write = bo_count_write - 1 WHERE bo_table = '{$bo_table}'");
}
// 예약이 가능한 일자를 추출하여 선택박스로 출력한다
function optionDate($select = null)
{
global $g4, $board;
$arr = array('0' => '(월)', '1' => '(화)', '2' => '(수)', '3' => '(목)', '4' => '(금)', '5' => '(토)', '6' => '(일)');
for($i = $board['bo_3']; $i < $board['bo_4']; $i++)
{
$date = sql_fetch("SELECT '{$g4['time_ymd']}' + INTERVAL {$i} DAY AS this");
$week = sql_fetch("SELECT weekday('{$date['this']}') AS this");
echo "<option value=\"{$date['this']}\"";
if($date['this'] == $select)
{
echo ' selected="selected"';
}
echo ">{$date['this']} {$arr[$week['this']]}</option>";
}
return;
}
// 숙박이 가능한 일자를 추출하여 선택박스로 출력한다
function optionStay($max)
{
for($i = 1; $i <= $max; $i++)
{
$var = $i + 1;
echo "<option value=\"{$i}\">{$i}박 {$var}일</option>";
}
return;
}
// 숙박이 가능한 인원을 추출하여 선택박스로 출력한다
function optionPerson($min, $max)
{
for($i = $min; $i <= $max; $i++)
{
echo "<option value=\"{$i}\">{$i}명</option>";
}
return;
}
// 선택한 일자가 성수기인지를 추출한다 (성수기 : 1000, 비성수기 : 2000)
function getSeason($select)
{
global $board;
$result = 2000;
$var = substr($select, 5, 5);
$arr = explode('|', $board['bo_2']);
$max = count($arr);
for($i = 0; $i < $max; $i++)
{
list($open, $close) = explode('~', $arr[$i]);
if($open <= $var || $var <= $close)
{
$result = 1000;
break;
}
}
return $result;
}
// 선택한 일자가 주말(금,토요일)인지를 추출한다 (주말 : 1000, 주중 : 2000)
function getWeek($select)
{
list($var) = mysql_fetch_array(sql_query("SELECT weekday('{$select}')"));
if($var == 4 || $var == 5)
{
$result = 1000;
}
else
{
$result = 2000;
}
return $result;
}
// 선택한 일자의 이용요금을 추출한다 (이용요금을 추출할 수 있는 테이블의 필드명을 리턴한다)
function getPrice($select)
{
$arr = array(
'1000' => array('1000' => 'wr_7', '2000' => 'wr_6'),
'2000' => array('1000' => 'wr_5', '2000' => 'wr_4')
);
$season = getSeason($select);
$week = getWeek($select);
$result = $arr[$season][$week];
return $result;
}
// 인원별, 기간별 이용요금을 산출한다
function getTotal($wr_id, $select, $stay, $person)
{
global $g4, $board;
$result = 0;
$write = sql_fetch("SELECT * FROM {$g4['write_prefix']}{$board['bo_1']} WHERE wr_id = '{$wr_id}'");
for($i = 0; $i < $stay; $i++)
{
list($date) = mysql_fetch_array(sql_query("SELECT '{$select}' + INTERVAL {$i} DAY"));
$field = getPrice($date);
$result += $write[$field];
}
$result += (($person - $write['wr_2']) * $write['wr_8'] * $stay);
return $result;
}
// 선택일자에 예약된 객실의 개수를 산출한다
function getRoom($day, $number)
{
global $class, $room;
$result = 0;
$max = count($class[$number]);
for($i = 0; $i < $max; $i++)
{
$var = $class[$number][$i];
$result += count($room[$day][$var]);
}
return $result;
}
// 문자메시지를 전송합니다 (아이코드 클래스)
function SMS($message, $receive = null)
{
global $board;
list($id, $password) = explode('|', $board['bo_8']);
list($phone, $mobile) = explode('|', $board['bo_9']);
if(isset($receive) == false)
{
$receive = $mobile;
}
$SMS = new ICODE;
$SMS -> Connect($id, $password);
$SMS -> Add($phone, $receive, $message);
$SMS -> Send();
return;
}
function BLANK($string, $size)
{
for($i = 0; $i < $size; $i++)
{
$string .= ' ';
}
$result = substr($string, 0, $size);
return $result;
}
class ICODE
{
var $ID;
var $PASSWORD;
var $SERVER;
var $PORT;
var $DATA;
function Connect($id, $password)
{
$this -> ID = BLANK($id, 10);
$this -> PASSWORD = BLANK($password, 10);
$this -> SERVER = '211.172.232.124';
$this -> PORT = rand(7192, 7195);
return;
}
function Add($send, $mobile, $message)
{
$send = str_replace('-', null, $send);
$send = BLANK($send, 33);
$mobile = str_replace('-', null, $mobile);
$mobile = BLANK($mobile, 11);
$message = stripslashes($message);
$message = BLANK($message, 80);
$this -> DATA = '01144 ' . $this -> ID . $this -> PASSWORD . $mobile . $send . $message;
return;
}
function Send()
{
$fgets = null;
$fsockopen = fsockopen($this -> SERVER, $this -> PORT);
fputs($fsockopen, $this -> DATA);
while(isset($fgets) == false)
{
$fgets = fgets($fsockopen, 30);
}
fclose($fsockopen);
$result = substr($fgets, 0, 19);
$key = '0223 00' . substr($this -> DATA, 26, 11);
$this -> DATA = null;
if($result != $key)
{
return false;
}
return true;
}
}
?>
---- 금액 변동되는 부분의 소스입니다
청춘님의 펜션예약관리 프로그램을 수정해서 사용하고 있는 데요~
질문이 있어 문의를 드립니다~
금액계산관련하여~ 궁금한점이 있는데요~
주말관련 금액계산문제 입니다....
더듬더듬 찾아가니... 주말요금문제를 해결하였는데요~~~~~
주중, 주말 설정을 하다보니.. 궁금한 점이 생겨 문의드립니다~
주중 : 월 ~ 금
주말 : 토 ~ 일
공휴일 : 공휴일
이렇게 설정하고 싶은데요~
금액변동이 항상 그 전에 변경된다는점입니다~
질문이 어렵게 느껴지는데요 ㅠ.ㅠ
주중에는 50000원으로 하고
토, 일 요일 요금을 100000원, 공휴일도 100000만원으로 싶은데요
그런데 하루전요금에서 변동이 발생합니다~
무슨 이야기인가 하면....
주말이 토,일로 설정하지만 금요일과, 토요일이 주말요금으로 되고,
일요일은 주중요금으로 계산되어지는 점입니다~
공휴일또한 마찬가지이구요~
공휴일 당일은 50000원 이고,,,, 공휴일 전날이 100000원으로 설정된다~
이런 이야기 입니다~
계산하는 부분중~ 어느곳을 변경해야 될지.. 혹시 가르쳐 주실분 계실지요~
<?php
// 스킨파일은 단독으로 실행할 수 없다
if(defined('_GNUBOARD_') == false)
{
exit('함수파일은 단독으로 실행할 수 없습니다.');
}
// 목록화면을 위한 관리자 인증세션을 저장한다
if($type == 'true')
{
$_SESSION['admin'] = true;
goto_url($g4['bbs_path'] . '/board.php?bo_table=' . $bo_table);
}
// 달력화면을 위한 관리자 인증세션을 삭제한다
if($type == 'false')
{
unset($_SESSION['admin']);
goto_url($g4['bbs_path'] . '/board.php?bo_table=' . $bo_table);
}
// 버튼의 유형을 정의한다 (달력보기 or 목록보기)
if($is_admin && $_SESSION['admin'])
{
$BUTTON = "<img src=\"{$board_skin_path}/img/b_list.gif\" alt=\"목록보기\" />";
}
else
{
$BUTTON = "<img src=\"{$board_skin_path}/img/b_calendar.gif\" alt=\"달력보기\" />";
}
// 객실정보게시판이 정의되지 않았다면 실행을 중지한다
$OBJECT = sql_fetch("SELECT * FROM {$g4['board_table']} WHERE bo_table = '{$board['bo_1']}'");
if(isset($OBJECT['bo_table']) == false)
{
alert('객실정보게시판이 정의되지 않았습니다.');
}
// 필요한 변수값이 정의되지 않았다면 기본값으로 설정한다
if((int)$board['bo_3'] < 1)
{
$board['bo_3'] = 1;
}
if((int)$board['bo_4'] < 1)
{
$board['bo_4'] = 90;
}
if((int)$board['bo_5'] < 1)
{
$board['bo_5'] = 10;
}
if((int)$board['bo_6'] < 1)
{
$board['bo_6'] = $board['bo_3'];
}
// 예약내역삭제일이 경과한 미입금 예약목록은 삭제한다
$result = sql_query("SELECT wr_id FROM {$write_table} WHERE wr_last < DATE_SUB(now(), INTERVAL {$board['bo_6']} DAY) AND wr_7 = 'F'");
while($row = sql_fetch_array($result))
{
sql_query("DELETE FROM {$write_table} WHERE wr_parent = '{$row['wr_id']}'");
sql_query("DELETE FROM {$g4['board_new_table']} WHERE bo_table = '{$bo_table}' AND wr_parent = '{$row['wr_id']}'");
sql_query("UPDATE {$g4['board_table']} SET bo_count_write = bo_count_write - 1 WHERE bo_table = '{$bo_table}'");
}
// 예약이 가능한 일자를 추출하여 선택박스로 출력한다
function optionDate($select = null)
{
global $g4, $board;
$arr = array('0' => '(월)', '1' => '(화)', '2' => '(수)', '3' => '(목)', '4' => '(금)', '5' => '(토)', '6' => '(일)');
for($i = $board['bo_3']; $i < $board['bo_4']; $i++)
{
$date = sql_fetch("SELECT '{$g4['time_ymd']}' + INTERVAL {$i} DAY AS this");
$week = sql_fetch("SELECT weekday('{$date['this']}') AS this");
echo "<option value=\"{$date['this']}\"";
if($date['this'] == $select)
{
echo ' selected="selected"';
}
echo ">{$date['this']} {$arr[$week['this']]}</option>";
}
return;
}
// 숙박이 가능한 일자를 추출하여 선택박스로 출력한다
function optionStay($max)
{
for($i = 1; $i <= $max; $i++)
{
$var = $i + 1;
echo "<option value=\"{$i}\">{$i}박 {$var}일</option>";
}
return;
}
// 숙박이 가능한 인원을 추출하여 선택박스로 출력한다
function optionPerson($min, $max)
{
for($i = $min; $i <= $max; $i++)
{
echo "<option value=\"{$i}\">{$i}명</option>";
}
return;
}
// 선택한 일자가 성수기인지를 추출한다 (성수기 : 1000, 비성수기 : 2000)
function getSeason($select)
{
global $board;
$result = 2000;
$var = substr($select, 5, 5);
$arr = explode('|', $board['bo_2']);
$max = count($arr);
for($i = 0; $i < $max; $i++)
{
list($open, $close) = explode('~', $arr[$i]);
if($open <= $var || $var <= $close)
{
$result = 1000;
break;
}
}
return $result;
}
// 선택한 일자가 주말(금,토요일)인지를 추출한다 (주말 : 1000, 주중 : 2000)
function getWeek($select)
{
list($var) = mysql_fetch_array(sql_query("SELECT weekday('{$select}')"));
if($var == 4 || $var == 5)
{
$result = 1000;
}
else
{
$result = 2000;
}
return $result;
}
// 선택한 일자의 이용요금을 추출한다 (이용요금을 추출할 수 있는 테이블의 필드명을 리턴한다)
function getPrice($select)
{
$arr = array(
'1000' => array('1000' => 'wr_7', '2000' => 'wr_6'),
'2000' => array('1000' => 'wr_5', '2000' => 'wr_4')
);
$season = getSeason($select);
$week = getWeek($select);
$result = $arr[$season][$week];
return $result;
}
// 인원별, 기간별 이용요금을 산출한다
function getTotal($wr_id, $select, $stay, $person)
{
global $g4, $board;
$result = 0;
$write = sql_fetch("SELECT * FROM {$g4['write_prefix']}{$board['bo_1']} WHERE wr_id = '{$wr_id}'");
for($i = 0; $i < $stay; $i++)
{
list($date) = mysql_fetch_array(sql_query("SELECT '{$select}' + INTERVAL {$i} DAY"));
$field = getPrice($date);
$result += $write[$field];
}
$result += (($person - $write['wr_2']) * $write['wr_8'] * $stay);
return $result;
}
// 선택일자에 예약된 객실의 개수를 산출한다
function getRoom($day, $number)
{
global $class, $room;
$result = 0;
$max = count($class[$number]);
for($i = 0; $i < $max; $i++)
{
$var = $class[$number][$i];
$result += count($room[$day][$var]);
}
return $result;
}
// 문자메시지를 전송합니다 (아이코드 클래스)
function SMS($message, $receive = null)
{
global $board;
list($id, $password) = explode('|', $board['bo_8']);
list($phone, $mobile) = explode('|', $board['bo_9']);
if(isset($receive) == false)
{
$receive = $mobile;
}
$SMS = new ICODE;
$SMS -> Connect($id, $password);
$SMS -> Add($phone, $receive, $message);
$SMS -> Send();
return;
}
function BLANK($string, $size)
{
for($i = 0; $i < $size; $i++)
{
$string .= ' ';
}
$result = substr($string, 0, $size);
return $result;
}
class ICODE
{
var $ID;
var $PASSWORD;
var $SERVER;
var $PORT;
var $DATA;
function Connect($id, $password)
{
$this -> ID = BLANK($id, 10);
$this -> PASSWORD = BLANK($password, 10);
$this -> SERVER = '211.172.232.124';
$this -> PORT = rand(7192, 7195);
return;
}
function Add($send, $mobile, $message)
{
$send = str_replace('-', null, $send);
$send = BLANK($send, 33);
$mobile = str_replace('-', null, $mobile);
$mobile = BLANK($mobile, 11);
$message = stripslashes($message);
$message = BLANK($message, 80);
$this -> DATA = '01144 ' . $this -> ID . $this -> PASSWORD . $mobile . $send . $message;
return;
}
function Send()
{
$fgets = null;
$fsockopen = fsockopen($this -> SERVER, $this -> PORT);
fputs($fsockopen, $this -> DATA);
while(isset($fgets) == false)
{
$fgets = fgets($fsockopen, 30);
}
fclose($fsockopen);
$result = substr($fgets, 0, 19);
$key = '0223 00' . substr($this -> DATA, 26, 11);
$this -> DATA = null;
if($result != $key)
{
return false;
}
return true;
}
}
?>
---- 금액 변동되는 부분의 소스입니다
댓글 전체
금액 설정 하는어드민이 있어야 하고 적용되는 날짜가있어야 할것으로 보입니다.
해당 날자 부터 는 어디의 금액을 가져와 한다는식의 구조로 프로그램을 작성해야 할것으로 보입니다.
해당 날자 부터 는 어디의 금액을 가져와 한다는식의 구조로 프로그램을 작성해야 할것으로 보입니다.
당연한 것을 수정하려고 하는 것 같군요
일요일에 예약하면 일요일 부터 월요일 까지가 되니 이미 주말을 지난 것인데...
금욜 예약이 실제로는 주말인 토욜까지 사용하는 것이니 주말 요금이 적용 되어야하는것인데요??
모든 사람이 정상적으로 그렇게 사용하고 있는데 수정하겠다니 이해를 못하겠군요
1박이상이 아니라 당일만 사용한다면 수정하려는 것이 맞지만 그게 아니라면 현재상태가 맞습니다
일요일에 예약하면 일요일 부터 월요일 까지가 되니 이미 주말을 지난 것인데...
금욜 예약이 실제로는 주말인 토욜까지 사용하는 것이니 주말 요금이 적용 되어야하는것인데요??
모든 사람이 정상적으로 그렇게 사용하고 있는데 수정하겠다니 이해를 못하겠군요
1박이상이 아니라 당일만 사용한다면 수정하려는 것이 맞지만 그게 아니라면 현재상태가 맞습니다
당일만 사용하려고 합니다 ^^;;
해결완료했습니다 ^^;;
혹시 당일 사용 사용하실분께서는... 쪽지주세요~
혹시 당일 사용 사용하실분께서는... 쪽지주세요~