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

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

 

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" />

eondcom

profile
이온디는 라이믹스를 비롯한 다양한 CMS의 시드뱅크를 꿈꿉니다. 여러분들이 사랑하는 웹소스를 언제든지 사용할 수 있게 하기 위해 이온디는 매일 소스코드를 유지보수하고 있으며, 언제든지 다운로드할 수 있는 소스마켓을 운영하고 있습니다.

#XE마켓 - 이온디스토어
https://eond.com/xemarket/

# XE/라이믹스 단톡방을 운영 중입니다. (비번: 2022)
https://open.kakao.com/o/giaKKnl

# XE/라이믹스 생활코딩 모듈 강좌입니다.
https://opentutorials.org/module/3774