영카트 선택옵션 수량에 따른 금액 노출

매출이 오르면 내리는 수수료! 지금 수수료센터에서 전자결제(PG)수수료 비교견적 신청해 보세요!
영카트 선택옵션 수량에 따른 금액 노출

QA

영카트 선택옵션 수량에 따른 금액 노출

본문

안녕하세요

 

3731616218_1588064588.3356.png

이것처럼  js/shop.override.js 에서

선택옵션을 선택했을때 추가금액이 표시되는 것이 아니라

해당 상품의 가격이 그대로 노출되게 해놓았는데요

문제가 수량 변경시에도 똑같이 수량적용이 안되고 노출됩니다.


jQuery(function($){
    $(".2017_renewal_itemform select.it_supply").on("shop_sel_supply_process", function(e, param){
        
        var add_exec = param.add_exec;
        var $el = $(this);
        var val = $el.val();
        
        //블랙캣77님이 해당 코드에 도움을 주셨습니다.
        var eq = $("select.it_supply").index($(this));
        var item = $el.closest(".sit_option").find("label").eq(eq).text();
        
        if(!val) {
            alert(item+"을(를) 선택해 주십시오.");
            return false;
        }
        var info = val.split(",");
        // 재고체크
        if(parseInt(info[2]) < 1) {
            alert(info[0]+"은(는) 재고가 부족하여 구매할 수 없습니다.");
            return false;
        }
        var id = item+chr(30)+info[0];
        var option = item+":"+info[0];
        var price = info[1];
        var stock = info[2];
        // 금액 음수 체크
        if(parseInt(price) < 0) {
            alert("구매금액이 음수인 상품은 구매할 수 없습니다.");
            return false;
        }
        if(add_exec) {
            if(same_option_check(option))
                return false;
            add_sel_option(1, id, option, price, stock);
        }
        return false;
    });
    if (typeof add_sel_option === "function") {
        add_sel_option = (function() {
            var cached_function = add_sel_option;
            return function() {
                
                if( $(".2017_renewal_itemform").length ){
                    var a = arguments;
                    var type=a[0],
                        id=a[1],
                        option=a[2],
                        price=a[3],
                        stock=a[4];
                    var item_code = $("input[name='it_id[]']").val();
                    var opt = "";
                    var li_class = "sit_opt_list";
                    if(type)
                        li_class = "sit_spl_list";
                    var it_price = parseInt($("input#it_price").val()); // 선택옵션 금액 <- 이곳을 수정했습니다
                    var it_price_str=number_format(String(it_price))+"원"; //금액 정의 <- 이곳을 수정했습니다
                    
                    price = parseInt(price);
                    it_price = parseInt(it_price);
                    var opt_prc;
                    if(parseInt(price) >= 0)
                        opt_prc = "+"+number_format(String(price + it_price))+"원"; //<- 이곳을 수정했습니다
                    else
                        opt_prc = number_format(String(price))+"원";
                    opt += "<li class=\""+li_class+"\">";
                    opt += "<input type=\"hidden\" name=\"io_type["+item_code+"][]\" value=\""+type+"\">";
                    opt += "<input type=\"hidden\" name=\"io_id["+item_code+"][]\" value=\""+id+"\">";
                    opt += "<input type=\"hidden\" name=\"io_value["+item_code+"][]\" value=\""+option+"\">";
                    opt += "<input type=\"hidden\" class=\"io_price\" value=\""+price+"\">";
                    opt += "<input type=\"hidden\" class=\"io_stock\" value=\""+stock+"\">";
                    opt += "<div class=\"opt_name\">";
                    opt += "<span class=\"sit_opt_subj\">"+option+"</span>";
                    opt += "</div>";
                    opt += "<div class=\"opt_count\">";
                    opt += "<button type=\"button\" class=\"sit_qty_minus\"><i class=\"fa fa-minus\" aria-hidden=\"true\"></i><span class=\"sound_only\">감소</span></button>";
                    opt += "<input type=\"text\" name=\"ct_qty["+item_code+"][]\" value=\"1\" class=\"num_input\" size=\"5\">";
                    opt += "<button type=\"button\" class=\"sit_qty_plus\"><i class=\"fa fa-plus\" aria-hidden=\"true\"></i><span class=\"sound_only\">증가</span></button>";
                    opt += "<span class=\"sit_opt_prc\">"+opt_prc+"</span>";
                    opt += "<button type=\"button\" class=\"sit_opt_del\"><i class=\"fa fa-times\" aria-hidden=\"true\"></i><span class=\"sound_only\">삭제</span></button></div>";
                    opt += "</li>";
                    if($("#sit_sel_option > ul").size() < 1) {
                        $("#sit_sel_option").html("<ul id=\"sit_opt_added\"></ul>");
                        $("#sit_sel_option > ul").html(opt);
                    } else{
                        if(type) {
                            if($("#sit_sel_option .sit_spl_list").size() > 0) {
                                $("#sit_sel_option .sit_spl_list:last").after(opt);
                            } else {
                                if($("#sit_sel_option .sit_opt_list").size() > 0) {
                                    $("#sit_sel_option .sit_opt_list:last").after(opt);
                                } else {
                                    $("#sit_sel_option > ul").html(opt);
                                }
                            }
                        } else {
                            if($("#sit_sel_option .sit_opt_list").size() > 0) {
                                $("#sit_sel_option .sit_opt_list:last").after(opt);
                            } else {
                                if($("#sit_sel_option .sit_spl_list").size() > 0) {
                                    $("#sit_sel_option .sit_spl_list:first").before(opt);
                                } else {
                                    $("#sit_sel_option > ul").html(opt);
                                }
                            }
                        }
                    }
                    price_calculate();
                    $("#sit_sel_option").trigger("add_sit_sel_option", [opt]);
                } else {
                    cached_function.apply(this, arguments); // use .apply() to call it
                }   //end if
            };
        }());
    }   //end if check function
    if (typeof price_calculate === "function") {
        price_calculate = (function() {
            var cached_function = price_calculate;
            return function() {
                
                if( $(".2017_renewal_itemform").length ){
                    var it_price = parseInt($("input#it_price").val());
                    var io_price = parseInt($("input#io_price").val());
                    if(isNaN(it_price))
                        return;
                    var $el_prc = $("input.io_price");
                    var $el_qty = $("input[name^=ct_qty]");
                    var $el_type = $("input[name^=io_type]");
                    var price, type, qty, total = 0;
                    $el_prc.each(function(index) {
                        price = parseInt($(this).val());
                        qty = parseInt($el_qty.eq(index).val());
                        type = $el_type.eq(index).val();
                        if(type == "0") { // 선택옵션
                            total += (it_price + price) * qty;
                        } else { // 추가옵션
                            total += price * qty;
                        }
                    });
                    $("#sit_tot_price").empty().html("<span>총 금액 </span><strong>"+number_format(String(total))+"</strong> 원");
                    
                    $("#sit_tot_price").trigger("price_calculate", [total]);
                } else {
                    cached_function.apply(this, arguments); // use .apply() to call it
                }
                
            };
        }());
    }   //end if check function
});

 

도와주세요..

이 질문에 댓글 쓰기 :

답변 2

말씀하신 부분은 해당 jquery 부분만이 아니라 옵션 가져오는 shop.lib.php 파일에서 get_item_options 함수 부분을 수정하고  js/shop.override.js , shop/itemoption.php 의 3개파일수정이 필요한 부분입니다.

아래 빨간 부분 추가해보세요..

제가 테스트 해보지 않아서.. 될지 모르겠네요..^^;

 

$("#sit_tot_price").empty().html("<span>총 금액 </span><strong>"+number_format(String(total))+"</strong> 원");

$(".sit_opt_prc").empty().html(number_format(String(total))+" 원");

 

소중한 답변 감사드립니다.
하지만 제가 원하는 부분은 총 금액 부분이 아니라, 옵션을 선택했을 때 옆에 +되어 가격이 표시되어있는 부분에 수량을 반영해서 나타내고 싶은 것 입니다..ㅜ 수량을 2로 올려도 총금액 부분에는 반영이 되지만 수량올리는 부분 옆에 금액이 표시되어있는 부분은 금액이 변경되질 않아 질문 드린 것 입니다 ㅠ

답변을 작성하시기 전에 로그인 해주세요.
전체 2
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT