<?php
$sub_menu = '400900';
include_once('./_common.php');
include_once('./admin.shop.lib.php');
include_once(G5_LIB_PATH.'/mailer.lib.php');

auth_check($auth[$sub_menu], "w");

check_admin_token();

// 입금액이 있는 경우 입금확인일시를 반드시 입력하도록 함 JSLEE
if ((double)$_POST['od_receipt_price']>0 && trim($_POST['od_receipt_time'])=='') {
    alert('입금 확인일시를 입력해 주십시오.');
    exit;
}

$sql = " select * from g5_shoppoint_order where od_id = '$od_id' ";
$od  = sql_fetch($sql);
if(!$od['od_id'])
    alert('주문자료가 존재하지 않습니다.');

if ($od_receipt_time) {
    if (check_datetime($od_receipt_time) == false)
        alert('결제일시 오류입니다.');
}

// 외화입금액을 주문당시 환율을 적용하여 원화/Point값으로 환산
$od_fx_rate = (double)$od['od_fx_rate'];

$od_receipt_price_new = round((double)$_POST['od_receipt_price'] * (double)(1/$od_fx_rate));
$od_refund_price_new  = round((double)$_POST['od_refund_price'] * (double)(1/$od_fx_rate));
$od_send_cost_new = round((double)$_POST['od_send_cost'] * (double)(1/$od_fx_rate));
$od_send_cost2_new = round((double)$_POST['od_send_cost2'] * (double)(1/$od_fx_rate));

// 결제정보 반영
$sql = " update g5_shoppoint_order
            set od_deposit_name    = '{$_POST['od_deposit_name']}',
                od_bank_account    = '{$_POST['od_bank_account']}',
                od_receipt_time    = '{$_POST['od_receipt_time']}',
                od_receipt_price   = '{$od_receipt_price_new}',
                od_receipt_point   = '{$_POST['od_receipt_point']}',
                od_refund_price    = '{$od_refund_price_new}',
                od_delivery_company= '{$_POST['od_delivery_company']}',
                od_invoice         = '{$_POST['od_invoice']}',
                od_invoice_time    = '{$_POST['od_invoice_time']}',
                od_send_cost       = '{$od_send_cost_new}',
                od_send_cost2      = '{$od_send_cost2_new}'
            where od_id = '$od_id' ";
sql_query($sql);

// 주문정보
$info = get_order_info4shoppoint($od_id);
if(!$info)
    alert('주문자료가 존재하지 않습니다.');

$od_status = $od['od_status'];

// 미수가 0이고 상태가 주문이었다면 입금으로 변경
if($info['od_misu'] <= 0 && $od['od_status'] == '주문')
{
    $od_status = '입금';

    // 미수금 없는 상태이고 입금이 되었다면 구매 포인트 충전/적립 처리
    if ($od['mb_id'] && $od['od_cart_price'] > 0) { // 회원이면서 포인트가 0보다 크다면
        $po_point    = $od['od_cart_price'];
        $fx_t2       = strtoupper(trim($od['od_fx_type'] ?? ''));
        $fx_curr2    = (strlen($fx_t2) > 3) ? substr($fx_t2, 3, 3) : ($fx_t2 ?: 'KRW');
        if ($fx_curr2 === 'KRW') {
            $po_content = sprintf('포인트 충전 (주문번호:%s, %s KRW = %s P)',
                $od['od_id'], number_format($po_point), number_format($po_point));
        } else {
            $rate_pu2 = ($od_fx_rate > 0) ? (1 / $od_fx_rate) : 0;
            $po_content = sprintf('포인트 충전 (주문번호:%s, 입금액:%s %s × 환율 1 %s=%s P = %s P)',
                $od['od_id'], $od['od_fx_amount'],
                $fx_curr2, $fx_curr2,
                number_format($rate_pu2, 2), number_format($po_point));
        }
        insert_point($od['mb_id'], $po_point, $po_content, "@buyshoppoints", $od['mb_id'], $od['od_id']); // 미수금이 없으므로 포인트 충전
    }
} else if ($info['od_misu'] > 0) {
    $od_status = '주문';
    // 미수금이 존재하는 상태이면 이미 적립/충전된 구매 포인트가 있는 경우 취소처리
    if ($od['mb_id'] && $od['od_cart_price'] > 0) { // 회원이면서 포인트가 0보다 크다면
        $po_point = $od['od_cart_price'];
        delete_point($od['mb_id'], "@buyshoppoints", $od['mb_id'], $od['od_id']); // 미수금이 있으므로 포인트 충전 취소
    }
}

// 배송정보가 있으면 주문상태 배송으로 변경
$order_status = array('입금', '준비');
if($_POST['od_delivery_company'] && $_POST['od_invoice'] && in_array($od['od_status'], $order_status))
{
    $od_status = '배송';
}

// 미수금액
$od_misu = ( $od['od_cart_price'] - $od['od_cancel_price'] + $od_send_cost_new + $od_send_cost2_new )
           - ( $od['od_cart_coupon'] + $od['od_coupon'] + $od['od_send_coupon'] )
           - ( $od_receipt_price_new + $_POST['od_receipt_point'] - $od_refund_price_new );

// 미수금 정보 등 반영
$sql = " update g5_shoppoint_order
            set od_misu         = '$od_misu',
                od_tax_mny      = '{$info['od_tax_mny']}',
                od_vat_mny      = '{$info['od_vat_mny']}',
                od_free_mny     = '{$info['od_free_mny']}',
                od_status       = '$od_status'
            where od_id = '$od_id' ";
sql_query($sql);

// 메일발송
define("_ORDERMAIL_", true);
include "./ordermail.inc4shoppoint.php";


// SMS 문자전송
define("_ORDERSMS_", true);
include "./ordersms.inc.php";


// 에스크로 배송처리
if($_POST['od_tno'] && $_POST['od_escrow'] == 1)
{
    $escrow_tno  = $_POST['od_tno'];
    $escrow_corp = $_POST['od_delivery_company'];
    $escrow_numb = $_POST['od_invoice'];

    include(G5_SHOP_PATH.'/'.$od['od_pg'].'/escrow.register.php');
}


$qstr = "sort1=$sort1&amp;sort2=$sort2&amp;sel_field=$sel_field&amp;search=$search&amp;page=$page";

goto_url("./orderform4shoppoint.php?od_id=$od_id&amp;$qstr");
?>
