From d7f29398155bf0a0c2e664144dcf7d97005a2b91 Mon Sep 17 00:00:00 2001 From: thisgun Date: Fri, 8 Nov 2019 18:25:42 +0900 Subject: [PATCH] =?UTF-8?q?=ED=98=84=EA=B8=88=20=EC=98=81=EC=88=98?= =?UTF-8?q?=EC=A6=9D=EC=9D=84=20=EB=B0=9C=EA=B8=89=ED=95=A0=EC=88=98=20?= =?UTF-8?q?=EC=9E=88=EB=8A=94=20=EA=B2=B0=EC=A0=9C=EC=88=98=EB=8B=A8=20?= =?UTF-8?q?=EC=A1=B0=EA=B1=B4=20=EC=BD=94=EB=93=9C=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- adm/shop_admin/configform.php | 42 +++++++++++++++++++++++++++++ adm/shop_admin/configformupdate.php | 13 ++++++++- install/gnuboard5shop.sql | 1 + lib/shop.lib.php | 25 +++++++++++++++++ mobile/shop/orderinquiryview.php | 8 ++++-- shop/orderinquiryview.php | 8 ++++-- shop/taxsave.php | 4 +++ 7 files changed, 96 insertions(+), 5 deletions(-) diff --git a/adm/shop_admin/configform.php b/adm/shop_admin/configform.php index a57399576..92e6de824 100644 --- a/adm/shop_admin/configform.php +++ b/adm/shop_admin/configform.php @@ -156,6 +156,12 @@ if(!isset($default['de_listtype_list_skin'])) { ADD `de_mobile_listtype_img_width` int(11) NOT NULL DEFAULT '0' AFTER `de_mobile_listtype_list_row`, ADD `de_mobile_listtype_img_height` int(11) NOT NULL DEFAULT '0' AFTER `de_mobile_listtype_img_width` ", true); } + +// 현금영수증 발급 조건 추가 +if(!isset($default['de_taxsave_types'])) { + sql_query(" ALTER TABLE `{$g5['g5_shop_default_table']}` + ADD `de_taxsave_types` set('account','vbank','transfer') NOT NULL DEFAULT 'account' AFTER `de_taxsave_use` ", true); +} ?>
@@ -616,6 +622,28 @@ if(!isset($default['de_listtype_list_skin'])) { + + + + 현금영수증
적용수단 + + 현금 영수증 발급은 무통장입금, 가상계좌, 실시간계좌에만 적용됩니다.
아래 체크된 수단에 한해서 회원이 직접 주문 보기 페이지에서 현금영수증을 발급 받을수 있습니다.
!!! 만약 PG사 상점관리자에서 가상계좌 또는 실시간계좌이체가 자동으로 현금영수증이 발급되는 경우이면, 아래 가상계좌와 실시간계좌이체 체크박스를 해제하여 사용해 주세요.( 중복으로 발급되는 것을 막기 위함입니다. )", 50); ?> + >
+ >
+ > + @@ -1696,6 +1724,20 @@ $(function() { } }); }); + + $(document).on("change", "#de_taxsave_use", function(e){ + var $val = $(this).val(); + + if( parseInt($val) > 0 ){ + $("#de_taxsave_types").show(); + } else { + $("#de_taxsave_types").hide(); + } + }); + + // 현금영수증 발급수단 중 무통장입금은 무조건 체크처리 + document.getElementById("de_taxsave_types_account").checked = true; + document.getElementById("de_taxsave_types_account").disabled = true; }); diff --git a/adm/shop_admin/configformupdate.php b/adm/shop_admin/configformupdate.php index 021cb1c41..55f1109da 100644 --- a/adm/shop_admin/configformupdate.php +++ b/adm/shop_admin/configformupdate.php @@ -71,6 +71,16 @@ foreach($check_skin_keys as $key){ } } +// 현금영수증 발급수단 +$de_taxsave_types = 'account'; // 무통장 + +if(isset($_POST['de_taxsave_types_vbank']) && $_POST['de_taxsave_types_vbank']){ //가상계좌 + $de_taxsave_types .= ',vbank'; +} +if(isset($_POST['de_taxsave_types_transfer']) && $_POST['de_taxsave_types_transfer']){ //실시간계좌이체 + $de_taxsave_types .= ',transfer'; +} + //KVE-2019-0689, KVE-2019-0691, KVE-2019-0694 $check_sanitize_keys = array( 'de_admin_company_name', //회사명 @@ -132,7 +142,7 @@ $check_sanitize_keys = array( 'de_card_use', //신용카드 결제사용 'de_card_noint_use', //신용카드 무이자할부사용 'de_easy_pay_use', //PG사 간편결제 버튼 사용 -'de_taxsave_use', //현금영수증 발끕사용 +'de_taxsave_use', //현금영수증 발급사용 'cf_use_point', //포인트 사용 'de_settle_min_point', //결제 최소포인트 'de_settle_max_point', //최대 결제포인트 @@ -384,6 +394,7 @@ $sql = " update {$g5['g5_shop_default_table']} de_admin_buga_no = '{$de_admin_buga_no}', de_vbank_use = '{$de_vbank_use}', de_taxsave_use = '{$de_taxsave_use}', + de_taxsave_types = '{$de_taxsave_types}', de_guest_privacy = '{$_POST['de_guest_privacy']}', de_hp_use = '{$de_hp_use}', de_escrow_use = '{$de_escrow_use}', diff --git a/install/gnuboard5shop.sql b/install/gnuboard5shop.sql index 65a172829..ea4a2ee5c 100644 --- a/install/gnuboard5shop.sql +++ b/install/gnuboard5shop.sql @@ -364,6 +364,7 @@ CREATE TABLE IF NOT EXISTS `g5_shop_default` ( `de_admin_buga_no` varchar(255) NOT NULL DEFAULT '', `de_vbank_use` varchar(255) NOT NULL DEFAULT '', `de_taxsave_use` tinyint(4) NOT NULL, + `de_taxsave_types` set('account','vbank','transfer') NOT NULL DEFAULT 'account', `de_guest_privacy` text NOT NULL, `de_hp_use` tinyint(4) NOT NULL DEFAULT '0', `de_escrow_use` tinyint(4) NOT NULL DEFAULT '0', diff --git a/lib/shop.lib.php b/lib/shop.lib.php index b204caa6f..cdef6e3a7 100644 --- a/lib/shop.lib.php +++ b/lib/shop.lib.php @@ -2392,6 +2392,31 @@ function get_itemuselist_thumbnail($it_id, $contents, $thumb_width, $thumb_heigh return $img; } +function shop_is_taxsave($od, $is_view_receipt=false){ + global $default, $is_memeber; + + $od_pay_type = ''; + + if( $od['od_settle_case'] == '무통장' ){ + $od_pay_type = 'account'; + } else if ( $od['od_settle_case'] == '계좌이체' ) { + $od_pay_type = 'vbank'; + } else if ( $od['od_settle_case'] == '가상계좌' ) { + $od_pay_type = 'transfer'; + } + + // 아직 현금영수증 받기전 상태일때만 + if( $default['de_taxsave_use'] && ! $od['od_cash'] && strstr( $default['de_taxsave_types'], $od_pay_type ) ){ + return 1; + } + + if( $is_view_receipt && ! $od['od_cash'] && in_array($od['od_settle_case'], array('계좌이체', '가상계좌')) && ! strstr( $default['de_taxsave_types'], $od_pay_type ) ){ + return 2; + } + + return 0; +} + // 장바구니 상품삭제 function cart_item_clean() { diff --git a/mobile/shop/orderinquiryview.php b/mobile/shop/orderinquiryview.php index 0e7014478..2b0738510 100644 --- a/mobile/shop/orderinquiryview.php +++ b/mobile/shop/orderinquiryview.php @@ -267,6 +267,10 @@ if($od['od_pg'] == 'lg') { } else if($od['od_settle_case'] == '가상계좌' || $od['od_settle_case'] == '계좌이체') { $app_no_subj = '거래번호'; $app_no = $od['od_tno']; + + if( function_exists('shop_is_taxsave') && $misu_price == 0 && shop_is_taxsave($od, true) === 2 ){ + $disp_receipt = true; + } } ?> @@ -358,7 +362,7 @@ if($od['od_pg'] == 'lg') { diff --git a/shop/orderinquiryview.php b/shop/orderinquiryview.php index dfc3f3fc5..2111a596d 100644 --- a/shop/orderinquiryview.php +++ b/shop/orderinquiryview.php @@ -260,6 +260,10 @@ if($od['od_pg'] == 'lg') { } else if($od['od_settle_case'] == '가상계좌' || $od['od_settle_case'] == '계좌이체') { $app_no_subj = '거래번호'; $app_no = $od['od_tno']; + + if( function_exists('shop_is_taxsave') && $misu_price == 0 && shop_is_taxsave($od, true) === 2 ){ + $disp_receipt = true; + } } ?> @@ -347,7 +351,7 @@ if($od['od_pg'] == 'lg') { diff --git a/shop/taxsave.php b/shop/taxsave.php index 1732c54cc..362a1aba6 100644 --- a/shop/taxsave.php +++ b/shop/taxsave.php @@ -31,6 +31,10 @@ if($tx == 'personalpay') { if (!$od) die('

주문서가 존재하지 않습니다.

'); + if ( ! $is_admin && ! (shop_is_taxsave($od)) ){ + die('해당 주문은 현금영수증을 발급할수 없습니다.'); + } + $goods = get_goods($od['od_id']); $goods_name = $goods['full_name']; $amt_tot = (int)($od['od_receipt_price'] - $od['od_refund_price']);