영카트 관련 질문 입니다.
본문
관리자에서 주문단계 변경시 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;
주문단계 변경할대마다 올라가네요 ㅎㅎ
답변 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함수는 호출하는 부분이 있어 값이 달라질수 있습니다.