영카트 관련 질문 입니다.

영카트 관련 질문 입니다.

QA

영카트 관련 질문 입니다.

본문

관리자에서 주문단계 변경시 shop.lib.php 아래 함수를 호출하는데요

 

일부만 가져왔습니다.

 

// 주문의 금액, 배송비 과세금액 등의 정보를 가져옴
function get_order_info2($od_id)

 

// 미수금액
    $od_misu = ( $cart_price + $send_cost + $od['od_send_cost2'] )
               - ( $cart_coupon + $od_coupon + $od_send_coupon )
               - ( $od['od_receipt_price'] + $od['od_receipt_point'] - $od['od_refund_price'] );

    // 장바구니상품금액
    $od_cart_price = $cart_price + $cancel_price; // 이게 이해가 안되네요 주문금액을 임의로 할인금액으로 해서 주문되고 있는데 관리자에서 주문단계 변경 할때마다 이것때문에 계속 합산이 되는거 같은데 원리를 잘 모르겠네요.. 기본 원본 소스도 이렇게 되있는데 단계 테스트를 해봐도 금액 변화가 없는게 정상 인거 같은데..

 

    // 결과처리
    $info['od_cart_price']      = $od_cart_price;
    $info['od_send_cost']       = $send_cost;
    $info['od_coupon']          = $od_coupon;
    $info['od_send_coupon']     = $od_send_coupon;
    $info['od_cart_coupon']     = $cart_coupon;
    $info['od_tax_mny']         = $od_tax_mny;
    $info['od_vat_mny']         = $od_vat_mny;
    $info['od_free_mny']        = $od_free_mny;
    $info['od_cancel_price']    = $cancel_price;
    $info['od_misu']            = $od_misu;

 

662111144_1606898598.2727.png

 

 

주문단계 변경할대마다 올라가네요 ㅎㅎ

 

 

662111144_1606898643.2481.png

 

이 질문에 댓글 쓰기 :

답변 1

먼저 장바구니에 $cart_price  구하는 것은 

// 장바구니 주문금액정보
$sql = " select SUM(IF(io_type = 1, (io_price * ct_qty), ((ct_price + io_price) * ct_qty))) as price,
                SUM(cp_price) as coupon,
                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_id'
              and ct_status IN ( '주문', '입금', '준비', '배송', '완료' ) ";
$sum = sql_fetch($sql);

$cart_price = $sum['price'];

여기서 보시면 주문,입금, 준비, 배송,완료 된 상태값에 가격만 가져옵니다. 

===============================================

그리고 $cacel_price 는 

// 장바구니 취소금액 정보
$sql = " select SUM(IF(io_type = 1, (io_price * ct_qty), ((ct_price + io_price) * ct_qty))) as price
            from {$g5['g5_shop_cart_table']}
            where od_id = '$od_id'
              and ct_status IN ( '취소', '반품', '품절' ) ";
$sum = sql_fetch($sql);
$cancel_price = $sum['price'];

취소값은 취소, 반품,품절 상태인 것을 가져옵니다. 

========================================

결론적으로 장바구니에 담겨있는 총상품값을 구할려면 

취소안된 가격과 취소된 가격을 다 더해야 전체 장바구니에 가격이 

나옵니다. 

그래서 

// 장바구니상품금액
$od_cart_price = $cart_price + $cancel_price; 

위와 같이 가격이 됩니다. 

============================

// 결과처리
$info['od_cart_price']      = $od_cart_price; //취소상태값과 정상상태값을 더합 같이 들어갑니다. 
$info['od_send_cost']       = $send_cost;
$info['od_coupon']          = $od_coupon;
$info['od_send_coupon']     = $od_send_coupon;
$info['od_cart_coupon']     = $cart_coupon;
$info['od_tax_mny']         = $od_tax_mny;
$info['od_vat_mny']         = $od_vat_mny;
$info['od_free_mny']        = $od_free_mny;
$info['od_cancel_price']    = $cancel_price; //여기서 취소된 가격을 넣습니다. 
$info['od_misu']            = $od_misu;

get_order_info2 함수는 따로 만들어서 사용하시는 것 같습니다. 기본 shop.lib.php 에는 없는 함수 같은데요 따로 만들어서 사용하시는 경우라면 
get_order_info함수는 호출하는 부분이 있어 값이 달라질수 있습니다. 

 

 

 

 

 

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

회원로그인

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