엑셀 내보내기 문의
본문
안녕하세요.
그누보드4 기반 영카트 사용중입니다.
엑셀 내보내기에서 기존 영카트에서 출력되던 주문 상품 금액, 상품메모가 출력되지 않는데요...
출력되도록 변경하려면 어떻게 해야 되는지요?
바쁘시겠지만 검토 부탁드립니다.
답변 2
그누커머스에 대한 질문 인가요?
아니면 영카트에 대한 질문인가요?
질문 내용을 보니 그누커머스에 대한 질문 같기도 하고...
안녕하세요.
그누보드4 기반 영카트 사용중입니다. <<< 이렇게 쓰신걸 보니 영카트에 대한 질문글 같기도 하고...
좀 더 명확하게 질문을 올려 주셨으면 합니다.
그누커머스 1.2.8 버젼에 엑셀 내보내기에서 항목을 추가할수 있도록 코드를 추가했습니다.
그러니 1.2.8 버젼으로 업데이트 하시고, 아래 코드를 참고 해서 항목을 추가해 보세요.
( 주문합계금액과 상점메모란을 추가했습니다. )
아래 코드는 사용하는테마 functions.php 나 또는 다른 적당한 곳에 넣으시면 됩니다.
add_filter('gnucommerce_get_order_query_fields', 'custom_gnucommerce_add_order_fields');
function custom_gnucommerce_add_order_fields($fields){
$fields[] = 'od_receipt_price'; //결제한금액
$fields[] = 'od_cart_price'; //총 상품 금액
$fields[] = 'od_send_cost'; //배송비
$fields[] = 'od_send_cost2'; //추가 배송비
$fields[] = 'od_shop_memo'; //상점메모
return $fields;
}
add_action('gnucommerce_export_orderdata', 'custom_gnucommerce_export_xml', 10, 3);
function custom_gnucommerce_export_xml($params, $csv, $gc_order){
global $wpdb;
if( !class_exists('gnucommerce') ){ //그누커머스 플러그인이 있으면
return;
}
if ($csv == 'xls'){ //엑셀인경우
extract($params);
if( !gc_get_upload_path() ) {
gc_alert(__('데이터 쓰기 권한이 없습니다.', GC_NAME));
}
$fr_date = gc_date_conv($fr_date);
$to_date = gc_date_conv($to_date);
$get_order = $gc_order->get_order_query($fr_date, $to_date, $fr_od_id, $to_od_id, $ct_status, $case);
extract($get_order);
if (!$cnt)
gc_alert(__('출력할 내역이 없습니다.', GC_NAME));
/*================================================================================
php_writeexcel http://www.bettina-attack.de/jonny/view.php/projects/php_writeexcel/
=================================================================================*/
include_once(GC_DIR_PATH.'lib/Excel/php_writeexcel/class.writeexcel_workbook.inc.php');
include_once(GC_DIR_PATH.'lib/Excel/php_writeexcel/class.writeexcel_worksheet.inc.php');
$fname = tempnam(gc_get_upload_path().'/tmp/', "tmp-orderlist.xls");
$workbook = new writeexcel_workbook($fname);
$worksheet = $workbook->addworksheet();
// Put Excel data
$data = array('우편번호', '주소', '이름', '전화1', '전화2', '상품명', '수량', '선택사항', '배송비', '상품코드', '주문번호', '운송장번호', '전하실말씀', '주문합계', '상점메모');
$data = array_map('gc_iconv_euckr', $data);
$col = 0;
foreach($data as $cell) {
$worksheet->write(0, $col++, $cell);
}
$save_it_id = '';
$i = 1;
foreach($results as $row)
{
if( empty($row) ) continue;
if($save_it_id != $row['it_id']) {
// 합계금액 계산
$sql = $wpdb->prepare(" select SUM(IF(io_type = 1, (io_price * ct_qty), ((ct_price + io_price) * ct_qty))) as price,
SUM(ct_qty) as qty
from {$gc['shop_cart_table']}
where it_id = %.0f
and od_id = %.0f ", $row['it_id'], $row['od_id']);
$sum = $wpdb->get_row($sql, ARRAY_A);
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 = gc_get_item_sendcost($row['it_id'], $sum['price'], $sum['qty'], $row['od_id']);
if($sendcost == 0)
$ct_send_cost = '무료';
}
$save_it_id = $row['it_id'];
$ct_send_cost = gc_iconv_euckr($ct_send_cost);
}
$row = array_map('gc_iconv_euckr', $row);
$worksheet->write($i, 0, ' '.$row['od_b_zip']);
$worksheet->write($i, 1, gc_print_address($row['od_b_addr1'], $row['od_b_addr2'], $row['od_b_addr3'], $row['od_b_addr_jibeon']));
$worksheet->write($i, 2, $row['od_b_name']);
$worksheet->write($i, 3, ' '.$row['od_b_tel']);
$worksheet->write($i, 4, ' '.$row['od_b_hp']);
$worksheet->write($i, 5, $row['it_name']);
$worksheet->write($i, 6, $row['ct_qty']);
$worksheet->write($i, 7, $row['ct_option']);
$worksheet->write($i, 8, $ct_send_cost);
$worksheet->write($i, 9, ' '.$row['it_id']);
$worksheet->write($i, 10, ' '.$row['od_id']);
$worksheet->write($i, 11, $row['od_invoice']);
$worksheet->write($i, 12, $row['od_memo']);
$worksheet->write($i, 13, $row['od_cart_price'] + $row['od_send_cost'] + $row['od_send_cost2']); //주문합계(선불배송비포함)
$worksheet->write($i, 14, $row['od_shop_memo']); //상점메모
$i++;
} //end foreach
$workbook->close();
header("Content-Type: application/x-msexcel; name=\"orderlist-".date("ymd", GC_SERVER_TIME).".xls\"");
header("Content-Disposition: inline; filename=\"orderlist-".date("ymd", GC_SERVER_TIME).".xls\"");
$fh=fopen($fname, "rb");
fpassthru($fh);
@unlink($fname);
exit;
}
}
답변을 작성하시기 전에 로그인 해주세요.