누리고에서 상품 취소 시 취소 사유를 입력받게 해달라는 요청이 있어서 작업한 팁입니다.

기본 동작이니 공부하실 분은 참조해서 작업하시면 됩니다.

 

1. 취소 사유 입력받는 폼

modules/nproduct/skins/jslocalprograms/itemdetail.blade.php

 

<form action="/" method="POST" id="fo_refund">
<label for="reason">환불 사유:</label>
<input type="hidden" name="act" value="procNstoreRefund" />
<input id="refund" name="refund" required value="취소사유입니다"/>
<input type="hidden" name="order_srl" value="3196" placeholder="주문번호">
<button type="submit">환불 요청</button>
</form>
 

기본 폼은 이렇습니다.

 

팁으로 라이믹스에서는 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

<query id="updateRefund" action="update">
<tables>
<table name="nstore_order" />
</tables>
<columns>
<column name="refund" var="refund" />
</columns>
<conditions>
<condition operation="equal" column="order_srl" var="order_srl" notnull="notnull" />
</conditions>
</query>

 

4. DB 쿼리문 업데이트

rx_nstore_order 테이블에 refund 라는 컬럼을 varchar 250 unicode-utf8로 생성해줍니다.

 

5. nstore 모듈 스키마에서도 추가하도록 해줬습니다.

modules/nstore/schemas/nstore_order.xml

<column name="refund" type="varchar" size="250" />

 
댓글은 로그인 사용자만 작성 가능합니다. 로그인하기