웹마스터 팁
page_full_width" class="col-xs-12" |cond="$__Context->page_full_width">
누리고 쇼핑몰 상품취소 혹은 반품시 마일리지 자동회복하기
2015.01.21 10:37
누리고 쇼핑몰에서 물건을 주문하면서 마일리지를 사용하면 주문즉시 마일리지가 차감됩니다.
그런데, 상품을 취소하거나 반품시에는 사용한 마일리지가 다시 돌아가야 하는데
이게 안되어서 일일이 마일리지를 수동으로 조정해야 합니다.
이게 은근 귀찮아요.. ㅎㅎ
이걸 해결하려면
nstore - nstore.controller.php
에서
updateorderstatus() 부분을 수정해주시면 됩니다
// if the order is completed, give mileage to the member. if ($in_args->order_status==nstore::ORDER_STATE_COMPLETE) { $order_info = $oNstoreModel->getOrderInfo($order_srl); //debugprint($order_info); if ($order_info->member_srl && $order_info->mileage && $order_info->mileage_save=='N') { $oNmileageController = &getController('nmileage'); $oNmileageController->plusMileage($order_info->member_srl, $order_info->mileage, $order_info->title, $order_srl); $args->mileage_save = 'Y'; } if ($order_info->item_list) { foreach ($order_info->item_list as $key=>$item) { $item_srl = $item->item_srl; $quantity = $item->quantity; $this->updateSalesCount($item_srl, $quantity); } } }
이 코드가 주문완료시에 마일리지를 적립하는 코드인데요
여기 바로 아래 취소 혹은 반품 할 코드를 넣어줍니다.
여기서 중요한것은
-취소: 물건을 배송하지 않았을 경우라고 보는것이고
-반품: 물건을 배송후에 취소하는 것이라고 보는것입니다.
그래서 취소는 사용한 마일리지만 돌려주고, 반품은 사용한 마일리지를 돌려주고, 적립된 마일리지를 차감하는 코드로 넣었습니다.
if ($in_args->order_status=="A") { //취소 $order_info = $oNstoreModel->getOrderInfo($order_srl); if ($order_info->member_srl && $order_info->use_mileage && $order_info->mileage_save=='N') { $oNmileageController = &getController('nmileage'); $oNmileageController->plusMileage($order_info->member_srl, $order_info->use_mileage, $order_info->title, $order_srl); $args->mileage_save = 'Y'; } if ($order_info->item_list) { foreach ($order_info->item_list as $key=>$item) { $item_srl = $item->item_srl; $quantity = $item->quantity; $this->updateSalesCount($item_srl, $quantity); } } } if ($in_args->order_status=="B") { //반품을 할경우 $order_info = $oNstoreModel->getOrderInfo($order_srl); if ($order_info->member_srl && $order_info->use_mileage && $order_info->mileage_save=='N') { $oNmileageController = &getController('nmileage'); $oNmileageController->plusMileage($order_info->member_srl, $order_info->use_mileage, $order_info->title, $order_srl); $args->mileage_save = 'Y'; } if ($order_info->member_srl && $order_info->mileage && $order_info->mileage_save=='N') { $oNmileageController = &getController('nmileage'); $oNmileageController->minusMileage($order_info->member_srl, $order_info->mileage, $order_info->title, $order_srl); $args->mileage_save = 'Y'; } if ($order_info->item_list) { foreach ($order_info->item_list as $key=>$item) { $item_srl = $item->item_srl; $quantity = $item->quantity; $this->updateSalesCount($item_srl, $quantity); } } }