<?php
$sub_menu = "400400";
include_once('./_common.php');
auth_check($auth[$sub_menu], 'w');

$od_id = strip_tags($_POST['od_id']);
$mb_id = strip_tags($_POST['mb_id']);
$realRefund_data = $_POST['realRefund_data']; // 배열로 받음

// echo $mb_id . " # " . implode(',', $realRefund_data) . " # " . $g5['g5_shop_cart_table'];
// exit;

$realRefund_value_sum = 0;
$change_refund_data = array();

// shop_cart 테이블에 반영
for ($i = 0; $i < count($realRefund_data); $i++) {
    $realRefund_data_arr = explode('|', $realRefund_data[$i]);
    $realRefund_it_id = $realRefund_data_arr[0];
    $realRefund_value = $realRefund_data_arr[1];
    $realRefund_value_sum += $realRefund_value;

    // 기존에 동일 품번에 대해 이미 환불이 있었을 경우, 해당 환불 포인트를 먼저 회수함 (플랫폼에서 되돌려 받은 후 새로운 환불금액을 포인트로 재적립해 줘야 하므로 이미 환불해 준 포인트가 있는 경우 회수함)
    $po_rel_action = $od_id."|".$realRefund_it_id;
    $row_point_sum = sql_fetch(" SELECT sum(po_point) as sum_po_point FROM {$g5['point_table']} WHERE mb_id = '{$mb_id}' AND po_rel_table LIKE '@shoprefund%' AND po_rel_action = '{$po_rel_action}' ");
    if ($row_point_sum['sum_po_point'] > 0) {
        $old_point = $row_point_sum['sum_po_point'];
        insert_point($mb_id, $old_point * (-1), "계약해지 주문번호 {$od_id} 상품명 RPC-{$realRefund_it_id} 환불 취소 (by System)", "@shoprefundcancel"."|".time(), $mb_id."|".$member['mb_id'], $od_id."|".$realRefund_it_id);
    }

    // shop_cart 테이블에서 기존 환불정보 정보 추출 (변경되지 않는 정보의 경우 새로 업데이트하지 않기 위해)
    $row_old_cart = sql_fetch(" SELECT real_refund_amount FROM {$g5['g5_shop_cart_table']} WHERE od_id = '{$od_id}' AND it_id = '{$realRefund_it_id}' AND mb_id = '{$mb_id}' ");
    $old_real_refund_amount = $row_old_cart['real_refund_amount'];
    if ($old_real_refund_amount == $realRefund_value) {
        continue;
    }

    // shop_cart 테이블 업데이트
    $real_refund_datetime = G5_TIME_YMDHIS;
    if ($realRefund_value > 0) {
        $refund_memo = "관리자 환불금액 직접입력";
    } else if ($realRefund_value == 0) {
        $refund_memo = "관리자 환불금액 직접입력 (환불취소)";
    }

    sql_query(" UPDATE {$g5['g5_shop_cart_table']} SET real_refund_datetime = '{$real_refund_datetime}', real_refund_amount = '{$realRefund_value}', real_refund_memo = '{$refund_memo}' WHERE od_id = '{$od_id}' AND it_id = '{$realRefund_it_id}' AND mb_id = '{$mb_id}' ");

    // 환불시 shop_item 테이블에서 종료일시 컬럼인 it_spec_to_datetime 에 real_refund_datetime 으로 지정해 줌
    if ($realRefund_value > 0) {
        sql_query(" UPDATE {$g5['g5_shop_item_table']} SET it_spec_to_datetime = '{$real_refund_datetime}' WHERE it_id = '{$realRefund_it_id}' AND it_spec_buyer_mb_id = '{$mb_id}' ");
    } else if ($realRefund_value == 0) {
        sql_query(" UPDATE {$g5['g5_shop_item_table']} SET it_spec_to_datetime = it_spec_to_datetime_org WHERE it_id = '{$realRefund_it_id}' AND it_spec_buyer_mb_id = '{$mb_id}' ");
    }

    /// shop_order 테이블의 od_refund_price 필드에 저장할려면 shop_cart 테이블의 real_refund_amount 필드의 합계를 구해서 저장해야 함 단, 이건 it_id를 제외하고 합산해야 함
    $row_total_real_refund_amount = sql_fetch(" SELECT sum(real_refund_amount) AS total_real_refund_amount FROM {$g5['g5_shop_cart_table']} WHERE od_id = '{$od_id}' AND mb_id = '{$mb_id}' ");
    // shop_order 테이블의 od_refund_price 필드에 저장
    $sum_real_refund_amount = round($row_total_real_refund_amount['total_real_refund_amount']);
    // 기존 od_mod_history 값을 조회
    $row_od_mod_history = sql_fetch("SELECT od_mod_history FROM {$g5['g5_shop_order_table']} WHERE od_id = '{$od_id}' AND mb_id = '{$mb_id}'");
    $existing_od_mod_history = trim($row_od_mod_history['od_mod_history']);

    // 새로 추가할 shop_order 테이블의 od_mod_history 컬럼에 추가할 메모
    $new_od_mod_history = G5_TIME_YMDHIS . " 품번 {$realRefund_it_id} 환불 (by Admin : {$member['mb_id']} / {$member['mb_name']}) " . display_point($realRefund_value);

    // 기존 메모에 줄바꿈과 함께 새 메모를 추가
    $updated_od_mod_history = $existing_od_mod_history . "\n" . $new_od_mod_history;

    // shop_order 테이블 업데이트
    sql_query("UPDATE {$g5['g5_shop_order_table']} SET od_mod_history = '{$updated_od_mod_history}' WHERE od_id = '{$od_id}' AND mb_id = '{$mb_id}'");

    // 환불신청 회원의 포인트를 되돌려 줌
    insert_point($mb_id, $realRefund_value, "계약해지 주문번호 {$od_id} 상품명 RPC-{$realRefund_it_id} 환불 (by Admin)", "@shoprefund"."|".time(), $mb_id."|".$member['mb_id'], $od_id."|".$realRefund_it_id);

    $change_refund_data[] = "상품명 RPC-{$realRefund_it_id} 환불금액 " . display_point($realRefund_value);

}

// shop_order 테이블에도 반영
$sql = " UPDATE {$g5['g5_shop_order_table']} SET od_refund_price = '{$realRefund_value_sum}' WHERE od_id = '{$od_id}' AND mb_id = '{$mb_id}' ";
sql_query($sql);

$change_refund_data_str = implode("\n", $change_refund_data);

echo "success|{$change_refund_data_str}";
?>