영카트4 고객용 영수증 출력 페이지


영카트4에서는 주문 내역 겸 영수증을 출력할 수 있는 기능이 없어 머리를 싸매고 한번 만들어 봤습니다. 여기저기
페이지 내용을 긁어다가 짜김기 한 것이기 때문에 코드도 엉망이고 수정해야할 부분이 많이 있을 것이라 생각합니다.

<?
include_once(“./_common.php”);

$sql = “select * from $g4[yc4_order_table] where od_id = ‘$od_id’ and on_uid = ‘$on_uid’ “;
$od = sql_fetch($sql);
if (!$od[od_id]) {
    echo “$od_id $on_uid $MxIssueNO”;
    alert(“조회하실 주문서가 없습니다.”, $g4[path]);
}

if ($od[od_dc_amount] > 0)
    $od_dc = $od[od_dc_amount];

// 결제방법
$settle_case = $od[od_settle_case];

set_session(‘ss_temp_on_uid’, $on_uid);

$g4[title] = “거래내역출력 : 주문번호 – $od_id”;

$s_on_uid = $od[on_uid];

// 합계금액 계산
$tot_sell_amount = 0;

$goods = $goods_it_id = “”;
$goods_count = -1;

// $s_on_uid 로 현재 장바구니 자료 쿼리
$sql = ” select a.ct_id, a.ct_amount,    a.ct_qty, b.it_id, b.it_name from $g4[yc4_cart_table] a, $g4[yc4_item_table] b where a.on_uid = ‘$s_on_uid’    and a.it_id  = b.it_id order by a.ct_id “;
$result = sql_query($sql);
for ($i=0; $row=mysql_fetch_array($result); $i++)
{
    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++;

    $sell_amount = $row[ct_amount] * $row[ct_qty];
    $tot_sell_amount += $sell_amount;
   
    //DC 금액 차감
    if($od_dc) $tot_sell_amount = $tot_sell_amount – $od_dc;
}
?>

<!– 인쇄용 스크립트 –>
<SCRIPT Language=”Javascript”>

function printit(cmd,param){
    if (navigator.appName == “Netscape”) {
        if(cmd==6) window.print() ;
        else alert(“netscape는 바로인쇄만 가능합니다.”);
    } else {
        var WebBrowser = ‘<OBJECT ID=”WebBrowser1″ WIDTH=0 HEIGHT=0 CLASSID=”CLSID:8856F961-340A-11D0-A96B-00C04FD705A2″></OBJECT>’;
    document.body.insertAdjacentHTML(‘beforeEnd’, WebBrowser);
        WebBrowser1.ExecWB(cmd, param);//Use a 1 vs. a 2 for a prompting dialog box
        WebBrowser1.outerHTML = “”;
    }
}

</Script>

<html>
<head>
<meta http-equiv=”Content-type” content=”text/html; charset=<?=$g4[‘charset’]?>”>
<title><?=$g4[title]?></title>
<style type=”text/css”>
<!–
@media print{
    #printArea{
        background-color:#FFFFFF;
        background-image:none;
        color:#000000;
    }
    #buttons{ display:none;}
}
body, td {
    color: #0d0057;
    font-family: “돋움”, “돋움체”;
    font-size: 9pt;
}
.style_i {
    color: #0d0057;
    font-family: “돋움”, “돋움체”;
    font-size: 9pt;
    font-weight: bold;
}
–>
</style>
</head>
<body>
<div id=”printArea”>
<!– print area –>
  <table width=”700″ cellpadding=0 cellspacing=0 border=0>
  <tr>
    <td colspan=”2″ width=”700″ height=”50″ align=”center”><h2>거 래 내 역 서</h></td>
  </tr>
  <tr>
    <td width=”345″>
      <table cellpadding=”0″ cellspacing=”0″ border=”0″>
      <tr>
        <td align=”center” width=”55″ height=”30″ style=”border-left:solid 1px #0d0057; border-top:solid 1px #0d0057;”><span class=”style_i”>주문번호</span></td>
        <td width=”110″ align=”center” style=”border-left:solid 1px #0d0057; border-top:solid 1px #0d0057;”><?=$od[od_id]?></td>
        <td align=”center” width=”55″ style=”border-left:solid 1px #0d0057; border-top:solid 1px #0d0057;”><span class=”style_i”>주문일자</span></td>
        <td width=”110″ align=”center” style=”border-left:solid 1px #0d0057; border-top:solid 1px #0d0057; border-right:solid 1px #0d0057;”><?=substr($od[od_time], 0, 10)?></td>
      </tr>
      <tr>
        <td align=”center” height=”30″ style=”border-left:solid 1px #0d0057; border-top:solid 1px #0d0057;”><span class=”style_i”>주문자명</span></td>
        <td colspan=”3″ style=”border-left:solid 1px #0d0057; border-top:solid 1px #0d0057; border-right:solid 1px #0d0057; padding-left:10px; “><?=$od[od_name]?></td>
      </tr>
      <tr>
        <td align=”center” height=”30″ style=”border-left:solid 1px #0d0057; border-top:solid 1px #0d0057;”><span class=”style_i”>결제방법</span></td>
        <td align=”center” style=”border-left:solid 1px #0d0057; border-top:solid 1px #0d0057;”><?=$od[od_settle_case]?></td>
        <td align=”center” style=”border-left:solid 1px #0d0057; border-top:solid 1px #0d0057;”><span class=”style_i”>입금자</span></td>
        <td align=”center” style=”border-left:solid 1px #0d0057; border-top:solid 1px #0d0057; border-right:solid 1px #0d0057;”>
          <? if($od[od_deposit_name]) echo $od[od_deposit_name]; else echo $od[od_name]; ?>
        </td>
      </tr>
      <tr>
        <td align=”center” height=”30″ style=”border-left:solid 1px #0d0057; border-top:solid 1px #0d0057; border-bottom:solid 1px #0d0057;”><span class=”style_i”>합계금액</span></td>
        <td colspan=”3″ align=”center” style=”border-left:solid 1px #0d0057; border-top:solid 1px #0d0057; border-right:solid 1px #0d0057; border-bottom:solid 1px #0d0057;” class=”style_i”><?=number_format($tot_sell_amount)?> 원</b></td>
      </tr>
      </table>
    </td>
    <td width=”355″ align=”right”>
      <table width=”360″ cellpadding=”0″ cellspacing=”0″ border=”0″>
      <tr>
        <td width=”20″ rowspan=”4″ align=”center” style=”border-left:solid 1px #0d0057; border-top:solid 1px #0d0057; border-bottom:solid 1px #0d0057;”><span class=”style_i”>공<br /><br />급<br /><br />자</span></td>
        <td align=”center” width=”55″ height=”30″ style=”border-left:solid 1px #0d0057; border-top:solid 1px #0d0057;”><span class=”style_i”>등록번호</span></td>
        <td width=”115″ align=”center” style=”border-left:solid 1px #0d0057; border-top:solid 1px #0d0057;”><?=$default[de_admin_company_saupja_no]?></td>
        <td align=”center” width=”55″ style=”border-left:solid 1px #0d0057; border-top:solid 1px #0d0057;”><span class=”style_i”>문의전화</span></td>
        <td width=”115″ align=”center” style=”border-left:solid 1px #0d0057; border-top:solid 1px #0d0057; border-right:solid 1px #0d0057;”><span class=”style_i”><?=$default[de_admin_company_tel]?></span></td>
      </tr>
      <tr>
        <td align=”center” height=”30″ style=”border-left:solid 1px #0d0057; border-top:solid 1px #0d0057;”><span class=”style_i”>상&nbsp;&nbsp;&nbsp;&nbsp;호</span></td>
        <td align=”center” style=”border-left:solid 1px #0d0057; border-top:solid 1px #0d0057;”><?=$default[de_admin_company_name]?></td>
        <td align=”center” style=”border-left:solid 1px #0d0057; border-top:solid 1px #0d0057;”><span class=”style_i”>성&nbsp;&nbsp;&nbsp;&nbsp;명</span></td>
        <td align=”center” style=”border-left:solid 1px #0d0057; border-top:solid 1px #0d0057; border-right:solid 1px #0d0057;”><?=$default[de_admin_company_owner]?></td>
      </tr>
      <tr>
        <td align=”center” height=”30″ style=”border-left:solid 1px #0d0057; border-top:solid 1px #0d0057;”><span class=”style_i”>주&nbsp;&nbsp;&nbsp;&nbsp;소</span></td>
        <td align=”center” colspan=”3″ style=”border-left:solid 1px #0d0057; border-top:solid 1px #0d0057; border-right:solid 1px #0d0057;”><?=$default[de_admin_company_addr]?></td>
      </tr>
      <tr>
        <td align=”center” height=”30″ style=”border-left:solid 1px #0d0057; border-top:solid 1px #0d0057; border-bottom:solid 1px #0d0057;”><span class=”style_i”>업&nbsp;&nbsp;&nbsp;&nbsp;태</span></td>
        <td align=”center” style=”border-left:solid 1px #0d0057; border-top:solid 1px #0d0057; border-bottom:solid 1px #0d0057;”>도, 소매</td>
        <td align=”center” style=”border-left:solid 1px #0d0057; border-top:solid 1px #0d0057; border-bottom:solid 1px #0d0057;”><span class=”style_i”>종&nbsp;&nbsp;&nbsp;&nbsp;목</span></td>
        <td align=”center” style=”border-left:solid 1px #0d0057; border-top:solid 1px #0d0057; border-right:solid 1px #0d0057; border-bottom:solid 1px #0d0057;”>
          장식용품 외</a>
        </tr>
        </table>
      </td>
    </tr>
    <tr>
      <td height=”5″ colspan=”2″></td>
    </tr>
    <tr>
      <td colspan=”2″>
        <table width=”700″ cellpadding=”0″ cellspacing=”0″ border=”0″ style=”border:solid 1px #0d0057;”>
        <tr>
          <td width=”450″ height=”30″ align=”center”  style=”border-bottom:solid 1px #000000;”><span class=”style_i”>상&nbsp;&nbsp;품&nbsp;&nbsp;명</span></td>
          <td width=”40″ align=”center” style=”border-bottom:solid 1px #000000;”><span class=”style_i”>수 량</span></td>
          <td width=”90″ align=”center”  style=”border-bottom:solid 1px #000000;”><span class=”style_i”>단 가</span></td>
          <td width=”120″ align=”center”  style=”border-bottom:solid 1px #000000;”><span class=”style_i”>금 액</span></td>
        </tr>
        <?
        $temp_i = 0;
        if($od_dc) $tot_tr = 24;
        else $tot_tr = 25;
        $tot_sell_amount = 0;
        $tot_cancel_amount = 0;

        $goods = $goods_it_id = “”;
        $goods_count = -1;

        // $s_on_uid 로 현재 장바구니 자료 쿼리
        $sql = ” select a.ct_id,
        a.it_opt1,
        a.it_opt2,
        a.it_opt3,
        a.it_opt4,
        a.it_opt5,
        a.it_opt6,
        a.ct_amount,
        a.ct_point,
        a.ct_qty,
        a.ct_status,
        b.it_id,
        b.it_name,
        b.ca_id
        from $g4[yc4_cart_table] a,
        $g4[yc4_item_table] b
        where a.on_uid = ‘$s_on_uid’
        and a.it_id  = b.it_id
        order by a.ct_id “;
        $result = sql_query($sql);
        for ($i=0; $row=mysql_fetch_array($result); $i++)
        {
            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++;

            $it_name = stripslashes($row[it_name]) . “<br>”;
            $it_name .= print_item_options($row[it_id], $row[it_opt1], $row[it_opt2], $row[it_opt3], $row[it_opt4], $row[it_opt5], $row[it_opt6]);

            if (!$is_member) $point = 0;
            else $point  = $row[ct_point] * $row[ct_qty];
            $sell_amount = $row[ct_amount] * $row[ct_qty];
            //echo “<xmp>”;
            //print_r($point);
            //echo “</xmp>”;
            $temp_i++;
        ?>
        <tr>
          <td height=”30″ style=”padding-left:5px; border-bottom:dotted 1px #ccc;”><?=$it_name?></td><!– 상품명 –>
          <td align=”center” style=”border-bottom:dotted 1px #ccc;”><?=$row[ct_qty]?></td><!– 수량 –>
          <td align=”center” style=”border-bottom:dotted 1px #ccc;”><?=number_format($row[ct_amount])?> 원</td><!– 단가 –>
          <td align=”center” style=”border-bottom:dotted 1px #ccc;”><?=number_format($sell_amount)?> 원</td><!– 금액 –>
        </tr>
        <? //DC 금액 표시
            if($od_dc) { ?>
        <tr>
          <td height=”30″ style=”padding-left:5px; border-bottom:dotted 1px #ccc;”>가격할인</td><!– 상품명 –>
          <td align=”center” style=”border-bottom:dotted 1px #ccc;”>1</td><!– 수량 –>
          <td align=”center” style=”border-bottom:dotted 1px #ccc;”>- <?=number_format($od_dc)?> 원</td><!– 단가 –>
          <td align=”center” style=”border-bottom:dotted 1px #ccc;”>- <?=number_format($od_dc)?> 원</td><!– 금액 –>
        </tr>
        <? } ?>
        <?
            $tot_sell_amount += $sell_amount;
           
            //DC 금액 차감
            if($od_dc) $tot_sell_amount = $tot_sell_amount -$od_dc;
        }

        // 배송비 계산
        if ($default[de_send_cost_case] == “없음”)
            $send_cost = 0;
        else {
            // 배송비 상한 : 여러단계의 배송비 적용 가능
            $send_cost_limit = explode(“;”, $default[de_send_cost_limit]);
            $send_cost_list  = explode(“;”, $default[de_send_cost_list]);
            $send_cost = 0;
            for ($k=0; $k<count($send_cost_limit); $k++) {
                // 총판매금액이 배송비 상한가 보다 작다면
                if ($tot_sell_amount < $send_cost_limit[$k]) {
                    $send_cost = $send_cost_list[$k];
                    break;
                }
            }
        }

        // 이미 주문된 내역을 보여주는것이므로 배송비를 주문서에서 얻는다.
        $sql = “select od_send_cost from $g4[yc4_order_table] where od_id = ‘$od_id’ “;
        $row = sql_fetch($sql);
        if ($row[od_send_cost] > 0)
            $send_cost = $row[od_send_cost];

        //빈 줄 채움
        for($k=0; $k < ($tot_tr – $temp_i); $k++) {
            echo “<tr><td colspan=’4′ height=30 style=’padding-left:5px; border-bottom:dotted 1px #ccc;’>&nbsp;</td></tr>”;
        }

        ?>
        <tr>
          <td height=”50″ align=”right” colspan=”2″><span class=”style_i”>합계금액 : </span></td>
          <td colspan=”2″ align=”right” style=”padding-right:5px;”>
            <span class=”style_i”>
            <?
            // 총계 = 주문상품금액합계 + 배송비
            $tot_amount = $tot_sell_amount + $send_cost;
            // 배송비가 0 보다 크다면 (있다면)
            if ($send_cost > 0) {
            ?>
            <?=number_format($tot_amount)?> 원<!– 143,000 원 + 3,500 원 (배송비) = 146,500 원 –>
            <?
            }
            else {
            ?>
            <?=number_format($tot_sell_amount)?> 원<!– 143,000 원 + 무료배송 = 143,000 원 –>
            <?
            }
            ?>
            </span>(부가세 포함)
          </td>
      </tr>
</table>
<!– print area –>
</div>

<center id=”buttons”>
<table width=”700″ cellpadding=”0″ cellspacing=”0″ border=”0″>
    <tr>
        <td height=”60″ align=”center”><input type=”button” value=”인쇄하기” onclick=”window.printit(6, -1)” ></td>
    </tr>
</table>
</center>

</body>
</html>

od_id 와 on_uid 변수값을 페이지 호출시에 지정해줘야만 합니다. 이 페이지에 영수증 부분만 바로 출력이 되도록
하는 기능을 더 넣을 예정입니다. 그리고 몇가지 수정을 더 해야만 하는데 하려니 참 귀찮네요 ^^; 하긴 해야하는데..

덧, 공급자 부분에서 기본 정보를 DB에 저장된 정보로 가져오도록 수정했고 인쇄 버튼을 추가함. (09-08-28)
     인쇄하기 기능을 변경했고 할인금액이 있을 경우 할인금액이 내역에 표시되도록 수정함. (09-09-29)

편리

PHP와 MariaDB, jQuery 등을 사용해 게시판, 쇼핑몰 솔루션을 개발합니다. 그누보드5와 영카트5 개발에 참여 했습니다. Linux와 Nginx는 물론 WordPress, Git 등에도 관심이 많습니다. 자전거 타기 및 사진 촬영을 취미로 하고 있습니다.

카카오톡 플러스친구 채팅 : NCUBE.NET

4 thoughts to “영카트4 고객용 영수증 출력 페이지”

  1. 안녕하세요 영카트 쇼핑몰 만드는 중인데..
    마침 견적서를 인쇄할 방법이 필요했는데 유용하게 잘 쓰겠습니다.
    감사해요~

    아 혹시 이 상태를 엑셀 csv파일로 다운 받을수는 없나요?

    1. 블로그 방문해 주셔서 감사합니다.
      html 출력하는 부분을 xls 파일로 저장할 수는 있을 것입니다.
      자세한 방법은 검색해 보시면 찾으실 수 있을 겁니다.

  2. 아.. 오래된 글이라 답글이 이렇게 빨리 달릴거라곤 생각하지 못했는데..
    일단 답글 감사드립니다!

    한가지만 더 여쭤볼께요..

    현재 코딩하신 페이지가.. 장바구니에서 출력되는 페이지인가요?
    아니면.. 주문 완료 후 출력되는 페이지인가요?

    즐거운 주말 되셨기를..
    내일은 월요일이군요…-_-;;

    1. 오래전이라 저두 기억이 잘 안나지만
      관리자 페이지에서 영수증을 출력하기 위해 만들었던 것으로 기억하고 있습니다.

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.