배송비 소수점 표시 문제.
관련링크
http://sir.kr/qa/127681
107회 연결
본문
해결을 못해서 다시 발제합니다. (http://sir.kr/qa/127681)
해외 쇼핑몰이여서 통화를 소수점으로 변환해서 사용하고 있구요
( 가격표시부분을 DB에서 필드를 int에서 float로 바꾸었습니다.)
배송비를 쇼핑몰설정에서는 "4.59유로 로 입력을했구요 -> 관리자화면엔 잘 유지가 됩니다.
주문서에는 소수점이 빠진 "459"유로 라고 나오고 있습니다.
화면에 배송비출력은 $send_cost 로 되고 있는데요
아래 첨부한 코드에서
$send_cost = get_sendcost($s_cart_id);
여기부분이 배송비를 가져오는 부분인거 같은데
애라모르겠다
억지로459를 4.59로 맞추기위해서
아래처럼 100을 나누기하면
$send_cost = get_sendcost($s_cart_id)/100;
화면상에서는 4.59로 표시는 되지만
최종 주문하기로 넘어가면
하얀화면에 Error... 라는 메세지가 뜹니다.
왜 관리자화면에 잘있던 소수점이 빠져버리고
어느계산식에서 그런 현상이 생기는지 갈피를 못잡겠습니다.
수동으로 100을 나누기하면 애러가 나는지 모르겠습니다. php 문법이 틀린건지..
아래는 문제가 생기는 주문서 작성(orderform.sub.php)에서
배송비 데이터를 가져오는 부분을 캡쳐했습니다.
<?php
$tot_point = 0;
$tot_sell_price = 0;
$goods = $goods_it_id = "";
$goods_count = -1;
// $s_cart_id 로 현재 장바구니 자료 쿼리
$sql = " select a.ct_id,
a.it_id,
a.it_name,
a.ct_price,
a.ct_point,
a.ct_qty,
a.ct_status,
a.ct_send_cost,
a.it_sc_type,
b.ca_id,
b.ca_id2,
b.ca_id3,
b.it_notax
from {$g5['g5_shop_cart_table']} a left join {$g5['g5_shop_item_table']} b on ( a.it_id = b.it_id )
where a.od_id = '$s_cart_id'
and a.ct_select = '1' ";
$sql .= " group by a.it_id ";
$sql .= " order by a.ct_id ";
$result = sql_query($sql);
$good_info = '';
$it_send_cost = 0;
$it_cp_count = 0;
$comm_tax_mny = 0; // 과세금액
$comm_vat_mny = 0; // 부가세
$comm_free_mny = 0; // 면세금액
$tot_tax_mny = 0;
for ($i=0; $row=sql_fetch_array($result); $i++)
{
// 합계금액 계산
$sql = " select SUM(IF(io_type = 1, (io_price * ct_qty), ((ct_price + io_price) * ct_qty))) as price,
SUM(ct_point * ct_qty) as point,
SUM(ct_qty) as qty
from {$g5['g5_shop_cart_table']}
where it_id = '{$row['it_id']}'
and od_id = '$s_cart_id' ";
$sum = sql_fetch($sql);
if (!$goods)
{
//$goods = addslashes($row[it_name]);
//$goods = get_text($row[it_name]);
$goods = preg_replace("/\'|\"|\||\,|\&|\;/", "", $row['it_name']);
$goods_it_id = $row['it_id'];
}
$goods_count++;
// 에스크로 상품정보
if($default['de_escrow_use']) {
if ($i>0)
$good_info .= chr(30);
$good_info .= "seq=".($i+1).chr(31);
$good_info .= "ordr_numb={$od_id}_".sprintf("%04d", $i).chr(31);
$good_info .= "good_name=".addslashes($row['it_name']).chr(31);
$good_info .= "good_cntx=".$row['ct_qty'].chr(31);
$good_info .= "good_amtx=".$row['ct_price'].chr(31);
}
$image = get_it_image($row['it_id'], 50, 50);
$it_name = '<b>' . stripslashes($row['it_name']) . '</b>';
$it_options = print_item_options($row['it_id'], $s_cart_id);
if($it_options) {
$it_name .= '<div class="sod_opt">'.$it_options.'</div>';
}
// 복합과세금액
if($default['de_tax_flag_use']) {
if($row['it_notax']) {
$comm_free_mny += $sum['price'];
} else {
$tot_tax_mny += $sum['price'];
}
}
$point = $sum['point'];
$sell_price = $sum['price'];
// 쿠폰
if($is_member) {
$cp_button = '';
$cp_count = 0;
$sql = " select cp_id
from {$g5['g5_shop_coupon_table']}
where mb_id IN ( '{$member['mb_id']}', '전체회원' )
and cp_start <= '".G5_TIME_YMD."'
and cp_end >= '".G5_TIME_YMD."'
and cp_minimum <= '$sell_price'
and (
( cp_method = '0' and cp_target = '{$row['it_id']}' )
OR
( cp_method = '1' and ( cp_target IN ( '{$row['ca_id']}', '{$row['ca_id2']}', '{$row['ca_id3']}' ) ) )
) ";
$res = sql_query($sql);
for($k=0; $cp=sql_fetch_array($res); $k++) {
if(is_used_coupon($member['mb_id'], $cp['cp_id']))
continue;
$cp_count++;
}
if($cp_count) {
$cp_button = '<button type="button" class="cp_btn btn_frmline">적용</button>';
$it_cp_count++;
}
}
// 배송비
switch($row['ct_send_cost'])
{
case 1:
$ct_send_cost = '착불';
break;
case 2:
$ct_send_cost = '무료';
break;
default:
$ct_send_cost = '선불';
break;
}
// 조건부무료
if($row['it_sc_type'] == 2) {
$sendcost = get_item_sendcost($row['it_id'], $sum['price'], $sum['qty'], $s_cart_id);
if($sendcost == 0)
$ct_send_cost = '무료';
}
?>
<tr>
<td class="sod_img"><?php echo $image; ?></td>
<td>
<input type="hidden" name="it_id[<?php echo $i; ?>]" value="<?php echo $row['it_id']; ?>">
<input type="hidden" name="it_name[<?php echo $i; ?>]" value="<?php echo get_text($row['it_name']); ?>">
<input type="hidden" name="it_price[<?php echo $i; ?>]" value="<?php echo $sell_price; ?>">
<input type="hidden" name="cp_id[<?php echo $i; ?>]" value="">
<input type="hidden" name="cp_price[<?php echo $i; ?>]" value="0">
<?php if($default['de_tax_flag_use']) { ?>
<input type="hidden" name="it_notax[<?php echo $i; ?>]" value="<?php echo $row['it_notax']; ?>">
<?php } ?>
<?php echo $it_name; ?>
</td>
<td class="td_num"><?php echo number_format($sum['qty']); ?></td>
<td class="td_numbig"><?php echo number_format($row['ct_price'],2); ?></td>
<td class="td_mngsmall"><?php echo $cp_button; ?></td>
<td class="td_numbig"><span class="total_price"><?php echo number_format($sell_price,2); ?></span></td>
<td class="td_numbig"><?php echo number_format($point); ?></td>
<td class="td_dvr"><?php echo $ct_send_cost; ?></td>
</tr>
<?php
$tot_point += $point;
$tot_sell_price += $sell_price;
} // for 끝
if ($i == 0) {
//echo '<tr><td colspan="7" class="empty_table">장바구니에 담긴 상품이 없습니다.</td></tr>';
alert('장바구니가 비어 있습니다.', G5_SHOP_URL.'/cart.php');
} else {
// 배송비 계산
$send_cost = get_sendcost($s_cart_id);
}
// 복합과세처리
if($default['de_tax_flag_use']) {
$comm_tax_mny = round(($tot_tax_mny + $send_cost) / 1.1);
$comm_vat_mny = ($tot_tax_mny + $send_cost) - $comm_tax_mny;
}
?>
답변을 작성하시기 전에 로그인 해주세요.