누리고에서 상품 취소 시 취소 사유를 입력받게 해달라는 요청이 있어서 작업한 팁입니다.
기본 동작이니 공부하실 분은 참조해서 작업하시면 됩니다.
1. 취소 사유 입력받는 폼
modules/nproduct/skins/jslocalprograms/itemdetail.blade.php
환불 사유:
환불 요청
기본 폼은 이렇습니다.
팁으로 라이믹스에서는 class="rx_ajax" 추가하면 ajax로 페이지 이동 없이 동작이 됩니다.
그러면 컨트롤러에서 아래 코드를 집어넣지 않아도 페이지 전환없이 잘 동작됩니다.
if (Context::get('success_return_url')) { $this->setRedirectUrl(Context::get('success_return_url')); }
2. 동작하는 기능
nstore.controller.php 파일에서
function procNstoreRefund() 함수를 만들어줍니다.
function procNstoreRefund(){
$oNstoreController = getController('nstore');
$order_srl = Context::get('order_srl');
// $order_info = getModel('nstore')->getOrderInfo($order_srl);
$logged_info = Context::get('logged_info');
if($logged_info->is_admin !== 'Y')
{
if($logged_info->member_srl !== $order_info->member_srl)
{
return $this->makeObject(-1, 'msg_not_permitted');
}
}
// $order_status = Context::get('order_status');
// $args->order_srl = $order_srl;
// $args->order_status = $order_status;
// $output = $oNstoreController->updateStock($order_srl, $order_status);
// $output = $this->updateOrderStatus($order_srl, $args);
$args = new stdClass();
$args->order_srl = Context::get('order_srl');
$args->refund = Context::get('refund');
$output = executeQuery('nstore.updateRefund', $args);
if(!$output->toBool())
{
return $output;
}
return $this->makeObject();
}
3. 동작하는 쿼리문
modules/nstore/queries/updateRefund.xml
4. DB 쿼리문 업데이트
rx_nstore_order 테이블에 refund 라는 컬럼을 varchar 250 unicode-utf8로 생성해줍니다.
5. nstore 모듈 스키마에서도 추가하도록 해줬습니다.
modules/nstore/schemas/nstore_order.xml