diff --git a/adm/shop_admin/orderform.php b/adm/shop_admin/orderform.php
index 5fffeca82..07c8ba8a5 100644
--- a/adm/shop_admin/orderform.php
+++ b/adm/shop_admin/orderform.php
@@ -645,6 +645,9 @@ $pg_anchor = '
0) { ?>
개인결제추가
+ 0 && $od['od_settle_case'] == '신용카드' || $od['od_settle_case'] == '계좌이체') { ?>
+ 부분취소
+
@@ -850,6 +853,13 @@ $(function() {
window.open(href, "personalpaywin", "left=100, top=100, width=700, height=650, scrollbars=yes");
return false;
});
+
+ // 부분취소창
+ $("#orderpartcancel").on("click", function() {
+ var href = this.href;
+ window.open(href, "partcancelwin", "left=100, top=100, width=600, height=400, scrollbars=yes");
+ return false;
+ });
});
function form_submit(f)
diff --git a/adm/shop_admin/orderpartcancel.php b/adm/shop_admin/orderpartcancel.php
new file mode 100644
index 000000000..d90b8ee8a
--- /dev/null
+++ b/adm/shop_admin/orderpartcancel.php
@@ -0,0 +1,94 @@
+= G4_TIME_YMD)
+ alert_close('실시간 계좌이체건의 부분취소 요청은 결제일 익일에 가능합니다.');
+
+if($od['od_receipt_price'] - $od['od_refund_price'] <= 0)
+ alert_close('부분취소 처리할 금액이 없습니다.');
+
+$g5['title'] = $od['od_settle_case'].' 부분취소';
+include_once(G5_PATH.'/head.sub.php');
+?>
+
+
+
+
+
+
\ No newline at end of file
diff --git a/adm/shop_admin/orderpartcancelupdate.php b/adm/shop_admin/orderpartcancelupdate.php
new file mode 100644
index 000000000..a10b2ed16
--- /dev/null
+++ b/adm/shop_admin/orderpartcancelupdate.php
@@ -0,0 +1,233 @@
+= G4_TIME_YMD)
+ alert_close('실시간 계좌이체건의 부분취소 요청은 결제일 익일에 가능합니다.');
+
+// 금액비교
+if($tax_mny && $tax_mny > ($od['od_tax_mny'] + $od['od_vat_mny']))
+ alert('과세 취소금액을 '.number_format(($od['od_tax_mny'] + $od['od_vat_mny'])).'원 이하로 입력해 주십시오.');
+
+if($free_mny && $free_mny > $od['od_free_mny'])
+ alert('비과세 취소금액을 '.number_format($od['od_free_mny']).'원 이하로 입력해 주십시오.');
+
+// 취소사유의 한글깨짐 방지처리
+$def_locale = setlocale(LC_CTYPE, 0);
+$cancel_memo = iconv("utf-8", "euc-kr", $mod_memo);
+$locale_change = false;
+if(preg_match("/utf[\-]?8/i", $def_locale)) {
+ setlocale(LC_CTYPE, 'ko_KR.euc-kr');
+ $locale_change = true;
+}
+
+// 부분취소 실행
+if ($default['de_card_test']) {
+ if ($default['de_escrow_use'] == 1) {
+ // 에스크로결제 테스트
+ $default['de_kcp_mid'] = "T0007";
+ $default['de_kcp_site_key'] = '2.mDT7R4lUIfHlHq4byhYjf__';
+ }
+ else {
+ // 일반결제 테스트
+ $default['de_kcp_mid'] = "T0000";
+ $default['de_kcp_site_key'] = '3grptw1.zW0GSo4PQdaGvsF__';
+ }
+}
+else {
+ $default['de_kcp_mid'] = "SR".$default['de_kcp_mid'];
+}
+
+$g_conf_site_cd = $default['de_kcp_mid'];
+$g_conf_site_key = $default['de_kcp_site_key'];
+$g_conf_home_dir = G5_SHOP_PATH.'/kcp';
+$g_conf_key_dir = '';
+$g_conf_log_dir = '';
+if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN')
+{
+ $g_conf_key_dir = G5_SHOP_PATH.'/kcp/bin/pub.key';
+ $g_conf_log_dir = G5_SHOP_PATH.'/kcp/log';
+}
+
+if (preg_match("/^T000/", $g_conf_site_cd) || $default['de_card_test']) {
+ $g_conf_gw_url = "testpaygw.kcp.co.kr";
+}
+else {
+ $g_conf_gw_url = "paygw.kcp.co.kr";
+ if (!preg_match("/^SR/", $g_conf_site_cd)) {
+ alert("SR 로 시작하지 않는 KCP SITE CODE 는 지원하지 않습니다.");
+ }
+}
+
+$g_conf_log_level = "3";
+$g_conf_gw_port = "8090";
+
+include G5_SHOP_PATH.'/kcp/pp_cli_hub_lib.php';
+
+$tno = $od['od_tno'];
+$req_tx = 'mod';
+$mod_desc = $cancel_memo;
+$cust_ip = getenv('REMOTE_ADDR');
+$rem_mny = $od['od_receipt_price'] - $od['od_refund_price'];;
+$mod_mny = $tax_mny;
+$mod_free_mny = $free_mny;
+$mod_type = 'RN07';
+if($od['od_settle_case'] == '계좌이체')
+ $mod_type = 'STPA';
+
+if($od['od_tax_flag']) {
+ $mod_mny = $tax_mny + $free_mny;
+}
+
+$c_PayPlus = new C_PAYPLUS_CLI;
+$c_PayPlus->mf_clear();
+
+if ( $req_tx == "mod" )
+{
+ $tran_cd = "00200000";
+
+ $c_PayPlus->mf_set_modx_data( "tno" , $tno ); // KCP 원거래 거래번호
+ $c_PayPlus->mf_set_modx_data( "mod_type" , $mod_type ); // 원거래 변경 요청 종류
+ $c_PayPlus->mf_set_modx_data( "mod_ip" , $cust_ip ); // 변경 요청자 IP
+ $c_PayPlus->mf_set_modx_data( "mod_desc" , $mod_desc ); // 변경 사유
+ $c_PayPlus->mf_set_modx_data( "rem_mny" , strval($rem_mny) ); // 취소 가능 잔액
+ $c_PayPlus->mf_set_modx_data( "mod_mny" , strval($mod_mny) ); // 취소 요청 금액
+
+ if($od['od_tax_flag'])
+ {
+ $mod_tax_mny = round((int)$tax_mny / 1.1);
+ $mod_vat_mny = (int)$tax_mny - $mod_tax_mny;
+
+ $c_PayPlus->mf_set_modx_data( "tax_flag" , "TG03" ); // 복합과세 구분
+ $c_PayPlus->mf_set_modx_data( "mod_tax_mny" , strval($mod_tax_mny) ); // 공급가 부분 취소 요청 금액
+ $c_PayPlus->mf_set_modx_data( "mod_vat_mny" , strval($mod_vat_mny) ); // 부과세 부분 취소 요청 금액
+ $c_PayPlus->mf_set_modx_data( "mod_free_mny" , $mod_free_mny ); // 비관세 부분 취소 요청 금액
+ }
+}
+
+if ( $tran_cd != "" )
+{
+ $c_PayPlus->mf_do_tx( "", $g_conf_home_dir, $g_conf_site_cd,
+ $g_conf_site_key, $tran_cd, "",
+ $g_conf_gw_url, $g_conf_gw_port, "payplus_cli_slib",
+ $ordr_idxx, $cust_ip, $g_conf_log_level,
+ "", 0 );
+
+ $res_cd = $c_PayPlus->m_res_cd; // 결과 코드
+ $res_msg = $c_PayPlus->m_res_msg; // 결과 메시지
+ /* $res_en_msg = $c_PayPlus->mf_get_res_data( "res_en_msg" ); // 결과 영문 메세지 */
+}
+else
+{
+ $c_PayPlus->m_res_cd = "9562";
+ $c_PayPlus->m_res_msg = "연동 오류|Payplus Plugin이 설치되지 않았거나 tran_cd값이 설정되지 않았습니다.";
+}
+
+if ($res_cd != '0000')
+{
+ $res_msg = iconv("euc-kr", "utf-8", $res_msg);
+
+ alert("$res_cd : $res_msg");
+}
+
+/* ============================================================================== */
+/* = 취소 결과 처리 = */
+/* = -------------------------------------------------------------------------- = */
+if ( $req_tx == "mod" )
+{
+ if ( $res_cd == "0000" )
+ {
+ $tno = $c_PayPlus->mf_get_res_data( "tno" ); // KCP 거래 고유 번호
+ $amount = $c_PayPlus->mf_get_res_data( "amount" ); // 원 거래금액
+ $mod_mny = $c_PayPlus->mf_get_res_data( "panc_mod_mny" ); // 취소요청된 금액
+ $rem_mny = $c_PayPlus->mf_get_res_data( "panc_rem_mny" ); // 취소요청후 잔액
+
+ // 주문 합계
+ $sql = " select SUM( IF( ct_notax = 0, ( IF(io_type = 1, (io_price * ct_qty), ( (ct_price + io_price) * ct_qty) ) - cp_price ), 0 ) ) as tax_mny,
+ SUM( IF( ct_notax = 1, ( IF(io_type = 1, (io_price * ct_qty), ( (ct_price + io_price) * ct_qty) ) - cp_price ), 0 ) ) as free_mny
+ from {$g5['g5_shop_cart_table']}
+ where od_id = '{$od['od_id']}'
+ and ct_status IN ( '주문', '준비', '배송', '완료' ) ";
+ $sum = sql_fetch($sql);
+
+ $tax_mny = $sum['tax_mny'];
+ $free_mny = $sum['free_mny'];
+
+ // 과세, 비과세
+ if($od['od_tax_flag']) {
+ $tot_tax_mny = ( $tax_mny + $od['od_send_cost'] + $od['od_send_cost2'] )
+ - ( $od['od_coupon'] + $od['od_send_coupon'] + $od['od_receipt_point'] );
+ if($tot_tax_mny < 0) {
+ $tot_tax_mny = 0;
+ $free_mny += $tot_tax_mny;
+ }
+ } else {
+ $tot_tax_mny = ( $tax_mny + $free_mny + $od['od_send_cost'] + $od['od_send_cost2'] )
+ - ( $od['od_coupon'] + $od['od_send_coupon'] + $od['od_receipt_point'] );
+ $free_mny = 0;
+ }
+
+ $od_tax_mny = round($tot_tax_mny / 1.1);
+ $od_vat_mny = $tot_tax_mny - $od_tax_mny;
+ $od_free_mny = $free_mny;
+
+ // 미수
+ $od_misu = ( $od['od_cart_price'] + $od['od_send_cost'] + $od['od_send_cost2'] )
+ - ( $od['od_cart_coupon'] + $od['od_coupon'] + $od['od_send_coupon'] )
+ - ( $od['od_receipt_price'] + $od['od_receipt_point'] - $mod_mny );
+
+ $shop_memo = '\\n'.$od['od_settle_case'].' 부분취소(금액: '.number_format($mod_mny).'원) - '.G5_TIME_YMDHIS;
+
+ $sql = " update {$g5['g5_shop_order_table']}
+ set od_refund_price = od_refund_price + '$mod_mny',
+ od_misu = '$od_misu',
+ od_tax_mny = '$od_tax_mny',
+ od_vat_mny = '$od_vat_mny',
+ od_free_mny = '$od_free_mny',
+ od_shop_memo = concat(od_shop_memo, \"$shop_memo\")
+ where od_id = '{$od['od_id']}'
+ and od_tno = '$tno' ";
+ sql_query($sql);
+ } // End of [res_cd = "0000"]
+
+/* = -------------------------------------------------------------------------- = */
+/* = 취소 실패 결과 처리 = */
+/* = -------------------------------------------------------------------------- = */
+ else
+ {
+ }
+}
+
+if($locale_change)
+ setlocale(LC_CTYPE, $def_locale);
+
+include_once(G5_PATH.'/head.sub.php');
+?>
+
+
+
+
\ No newline at end of file
diff --git a/adm/shop_admin/orderreceiptupdate.php b/adm/shop_admin/orderreceiptupdate.php
index 7585e9209..aa66ab65a 100644
--- a/adm/shop_admin/orderreceiptupdate.php
+++ b/adm/shop_admin/orderreceiptupdate.php
@@ -18,6 +18,35 @@ if ($od_receipt_time)
alert('결제일시 오류입니다.');
}
+// 주문 합계
+$sql = " select SUM( IF( ct_notax = 0, ( IF(io_type = 1, (io_price * ct_qty), ( (ct_price + io_price) * ct_qty) ) - cp_price ), 0 ) ) as tax_mny,
+ SUM( IF( ct_notax = 1, ( IF(io_type = 1, (io_price * ct_qty), ( (ct_price + io_price) * ct_qty) ) - cp_price ), 0 ) ) as free_mny
+ from {$g5['g5_shop_cart_table']}
+ where od_id = '{$od['od_id']}'
+ and ct_status IN ( '주문', '준비', '배송', '완료' ) ";
+$sum = sql_fetch($sql);
+
+$tax_mny = $sum['tax_mny'];
+$free_mny = $sum['free_mny'];
+
+// 과세, 비과세
+if($od['od_tax_flag']) {
+ $tot_tax_mny = ( $tax_mny + $od_send_cost + $od_send_cost2 )
+ - ( $od['od_coupon'] + $od['od_send_coupon'] + $od_receipt_point );
+ if($tot_tax_mny < 0) {
+ $tot_tax_mny = 0;
+ $free_mny += $tot_tax_mny;
+ }
+} else {
+ $tot_tax_mny = ( $tax_mny + $free_mny + $od_send_cost + $od_send_cost2 )
+ - ( $od['od_coupon'] + $od['od_send_coupon'] + $od_receipt_point );
+ $free_mny = 0;
+}
+
+$od_tax_mny = round($tot_tax_mny / 1.1);
+$od_vat_mny = $tot_tax_mny - $od_tax_mny;
+$od_free_mny = $free_mny;
+
// 미수
$od_misu = ( $od['od_cart_price'] + $od_send_cost + $od_send_cost2 )
- ( $od['od_cart_coupon'] + $od['od_coupon'] + $od['od_send_coupon'] )
@@ -31,6 +60,9 @@ $sql = " update {$g5['g5_shop_order_table']}
od_receipt_point = '$od_receipt_point',
od_refund_price = '$od_refund_price',
od_misu = '$od_misu',
+ od_tax_mny = '$od_tax_mny',
+ od_vat_mny = '$od_vat_mny',
+ od_free_mny = '$od_free_mny',
dl_id = '$dl_id',
od_invoice = '$od_invoice',
od_invoice_time = '$od_invoice_time',
diff --git a/mobile/shop/orderform.php b/mobile/shop/orderform.php
index 2d19e7082..e09ac3772 100644
--- a/mobile/shop/orderform.php
+++ b/mobile/shop/orderform.php
@@ -571,14 +571,14 @@ ob_end_clean();
0) { ?>
- | 결제할인쿠폰 |
+ 주문할인쿠폰 |
|
- | 결제할인금액 |
+ 주문할인금액 |
0원 |
diff --git a/shop/orderform.php b/shop/orderform.php
index fbc76699a..1707db5e7 100644
--- a/shop/orderform.php
+++ b/shop/orderform.php
@@ -809,14 +809,14 @@ function get_intall_file()
0) { ?>
- | 결제할인쿠폰 |
+ 주문할인쿠폰 |
|
- | 결제할인금액 |
+ 주문할인금액 |
0원 |