Created
November 3, 2012 19:57
-
-
Save nanasess/4008502 to your computer and use it in GitHub Desktop.
名入れカスタマイズ2
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<!--{* | |
data/Smarty/templates/admin/order/edit.tpl | |
/* | |
* This file is part of EC-CUBE | |
* | |
* Copyright(c) 2000-2012 LOCKON CO.,LTD. All Rights Reserved. | |
* | |
* http://www.lockon.co.jp/ | |
* | |
* This program is free software; you can redistribute it and/or | |
* modify it under the terms of the GNU General Public License | |
* as published by the Free Software Foundation; either version 2 | |
* of the License, or (at your option) any later version. | |
* | |
* This program is distributed in the hope that it will be useful, | |
* but WITHOUT ANY WARRANTY; without even the implied warranty of | |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
* GNU General Public License for more details. | |
* | |
* You should have received a copy of the GNU General Public License | |
* along with this program; if not, write to the Free Software | |
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | |
*/ | |
*}--> | |
<script type="text/javascript"> | |
<!-- | |
function fnEdit(customer_id) { | |
document.form1.action = '<!--{$smarty.const.ROOT_URLPATH}--><!--{$smarty.const.ADMIN_DIR}-->customer/edit.php'; | |
document.form1.mode.value = "edit" | |
document.form1['customer_id'].value = customer_id; | |
document.form1.submit(); | |
return false; | |
} | |
function fnCopyFromOrderData() { | |
df = document.form1; | |
df['shipping_name01[0]'].value = df.order_name01.value; | |
df['shipping_name02[0]'].value = df.order_name02.value; | |
df['shipping_kana01[0]'].value = df.order_kana01.value; | |
df['shipping_kana02[0]'].value = df.order_kana02.value; | |
df['shipping_zip01[0]'].value = df.order_zip01.value; | |
df['shipping_zip02[0]'].value = df.order_zip02.value; | |
df['shipping_tel01[0]'].value = df.order_tel01.value; | |
df['shipping_tel02[0]'].value = df.order_tel02.value; | |
df['shipping_tel03[0]'].value = df.order_tel03.value; | |
df['shipping_fax01[0]'].value = df.order_fax01.value; | |
df['shipping_fax02[0]'].value = df.order_fax02.value; | |
df['shipping_fax03[0]'].value = df.order_fax03.value; | |
df['shipping_pref[0]'].value = df.order_pref.value; | |
df['shipping_addr01[0]'].value = df.order_addr01.value; | |
df['shipping_addr02[0]'].value = df.order_addr02.value; | |
} | |
function fnFormConfirm() { | |
if (fnConfirm()) { | |
document.form1.submit(); | |
} | |
} | |
function fnMultiple() { | |
win03('<!--{$smarty.const.ROOT_URLPATH}--><!--{$smarty.const.ADMIN_DIR}-->order/multiple.php', 'multiple', '600', '500'); | |
document.form1.anchor_key.value = "shipping"; | |
document.form1.mode.value = "multiple"; | |
document.form1.submit(); | |
return false; | |
} | |
function fnAppendShipping() { | |
document.form1.anchor_key.value = "shipping"; | |
document.form1.mode.value = "append_shipping"; | |
document.form1.submit(); | |
return false; | |
} | |
//--> | |
</script> | |
<form name="form1" id="form1" method="post" action="?"> | |
<input type="hidden" name="<!--{$smarty.const.TRANSACTION_ID_NAME}-->" value="<!--{$transactionid}-->" /> | |
<input type="hidden" name="mode" value="<!--{$tpl_mode|default:"edit"|h}-->" /> | |
<input type="hidden" name="order_id" value="<!--{$arrForm.order_id.value|h}-->" /> | |
<input type="hidden" name="edit_customer_id" value="" /> | |
<input type="hidden" name="anchor_key" value="" /> | |
<input type="hidden" id="add_product_id" name="add_product_id" value="" /> | |
<input type="hidden" id="add_product_class_id" name="add_product_class_id" value="" /> | |
<input type="hidden" id="edit_product_id" name="edit_product_id" value="" /> | |
<input type="hidden" id="edit_product_class_id" name="edit_product_class_id" value="" /> | |
<input type="hidden" id="no" name="no" value="" /> | |
<input type="hidden" id="delete_no" name="delete_no" value="" /> | |
<!--{foreach key=key item=item from=$arrSearchHidden}--> | |
<!--{if is_array($item)}--> | |
<!--{foreach item=c_item from=$item}--> | |
<input type="hidden" name="<!--{$key|h}-->[]" value="<!--{$c_item|h}-->" /> | |
<!--{/foreach}--> | |
<!--{else}--> | |
<input type="hidden" name="<!--{$key|h}-->" value="<!--{$item|h}-->" /> | |
<!--{/if}--> | |
<!--{/foreach}--> | |
<div id="order" class="contents-main"> | |
<!--▼お客様情報ここから--> | |
<table class="form"> | |
<!--{if $tpl_mode != 'add'}--> | |
<tr> | |
<th>帳票出力</th> | |
<td><a class="btn-normal" href="javascript:;" onclick="win02('pdf.php?order_id=<!--{$arrForm.order_id.value|h}-->','pdf','615','650'); return false;">帳票出力</a></td> | |
</tr> | |
<!--{/if}--> | |
<tr> | |
<th>注文番号</th> | |
<td><!--{$arrForm.order_id.value|h}--></td> | |
</tr> | |
<tr> | |
<th>受注日</th> | |
<td><!--{$arrForm.create_date.value|sfDispDBDate|h}--><input type="hidden" name="create_date" value="<!--{$arrForm.create_date.value|h}-->" /></td> | |
</tr> | |
<tr> | |
<th>対応状況</th> | |
<td> | |
<!--{assign var=key value="status"}--> | |
<span class="attention"><!--{$arrErr[$key]}--></span> | |
<select name="<!--{$key}-->" style="<!--{$arrErr[$key]|sfGetErrorColor}-->"> | |
<option value="">選択してください</option> | |
<!--{html_options options=$arrORDERSTATUS selected=$arrForm[$key].value}--> | |
</select><br /> | |
<!--{if $smarty.get.mode != 'add'}--> | |
<span class="attention">※ <!--{$arrORDERSTATUS[$smarty.const.ORDER_CANCEL]}-->に変更時には、在庫数を手動で戻してください。</span> | |
<!--{/if}--> | |
</td> | |
</tr> | |
<tr> | |
<th>入金日</th> | |
<td><!--{$arrForm.payment_date.value|sfDispDBDate|default:"未入金"|h}--></td> | |
</tr> | |
<tr> | |
<th>発送日</th> | |
<td><!--{$arrForm.commit_date.value|sfDispDBDate|default:"未発送"|h}--></td> | |
</tr> | |
</table> | |
<h2>注文者情報 | |
<!--{if $tpl_mode == 'add'}--> | |
<a class="btn-normal" href="javascript:;" name="address_input" onclick="fnOpenWindow('<!--{$smarty.const.ROOT_URLPATH}--><!--{$smarty.const.ADMIN_DIR}-->customer/search_customer.php','search','600','650'); return false;">会員検索</a> | |
<!--{/if}--> | |
</h2> | |
<table class="form"> | |
<tr> | |
<th>会員ID</th> | |
<td> | |
<!--{if $arrForm.customer_id.value > 0}--> | |
<!--{$arrForm.customer_id.value|h}--> | |
<input type="hidden" name="customer_id" value="<!--{$arrForm.customer_id.value|h}-->" /> | |
<!--{else}--> | |
(非会員) | |
<!--{/if}--> | |
</td> | |
</tr> | |
<tr> | |
<th>お名前</th> | |
<td> | |
<!--{assign var=key1 value="order_name01"}--> | |
<!--{assign var=key2 value="order_name02"}--> | |
<span class="attention"><!--{$arrErr[$key1]}--><!--{$arrErr[$key2]}--></span> | |
<input type="text" name="<!--{$key1}-->" value="<!--{$arrForm[$key1].value|h}-->" maxlength="<!--{$arrForm[$key1].length}-->" style="<!--{$arrErr[$key1]|sfGetErrorColor}-->" size="15" class="box15" /> | |
<input type="text" name="<!--{$key2}-->" value="<!--{$arrForm[$key2].value|h}-->" maxlength="<!--{$arrForm[$key2].length}-->" style="<!--{$arrErr[$key2]|sfGetErrorColor}-->" size="15" class="box15" /> | |
</td> | |
</tr> | |
<tr> | |
<th>お名前(フリガナ)</th> | |
<td> | |
<!--{assign var=key1 value="order_kana01"}--> | |
<!--{assign var=key2 value="order_kana02"}--> | |
<span class="attention"><!--{$arrErr[$key1]}--><!--{$arrErr[$key2]}--></span> | |
<input type="text" name="<!--{$key1}-->" value="<!--{$arrForm[$key1].value|h}-->" maxlength="<!--{$arrForm[$key1].length}-->" style="<!--{$arrErr[$key1]|sfGetErrorColor}-->" size="15" class="box15" /> | |
<input type="text" name="<!--{$key2}-->" value="<!--{$arrForm[$key2].value|h}-->" maxlength="<!--{$arrForm[$key2].length}-->" style="<!--{$arrErr[$key2]|sfGetErrorColor}-->" size="15" class="box15" /> | |
</td> | |
</tr> | |
<tr> | |
<th>メールアドレス</th> | |
<td> | |
<!--{assign var=key1 value="order_email"}--> | |
<span class="attention"><!--{$arrErr[$key1]}--></span> | |
<input type="text" name="<!--{$key1}-->" value="<!--{$arrForm[$key1].value|h}-->" maxlength="<!--{$arrForm[$key1].length}-->" style="<!--{$arrErr[$key1]|sfGetErrorColor}-->" size="30" class="box30" /> | |
</td> | |
</tr> | |
<tr> | |
<th>TEL</th> | |
<td> | |
<!--{assign var=key1 value="order_tel01"}--> | |
<!--{assign var=key2 value="order_tel02"}--> | |
<!--{assign var=key3 value="order_tel03"}--> | |
<span class="attention"><!--{$arrErr[$key1]}--></span> | |
<span class="attention"><!--{$arrErr[$key2]}--></span> | |
<span class="attention"><!--{$arrErr[$key3]}--></span> | |
<input type="text" name="<!--{$arrForm[$key1].keyname}-->" value="<!--{$arrForm[$key1].value|h}-->" maxlength="<!--{$arrForm[$key1].length}-->" style="<!--{$arrErr[$key1]|sfGetErrorColor}-->" size="6" class="box6" /> - | |
<input type="text" name="<!--{$arrForm[$key2].keyname}-->" value="<!--{$arrForm[$key2].value|h}-->" maxlength="<!--{$arrForm[$key2].length}-->" style="<!--{$arrErr[$key2]|sfGetErrorColor}-->" size="6" class="box6" /> - | |
<input type="text" name="<!--{$arrForm[$key3].keyname}-->" value="<!--{$arrForm[$key3].value|h}-->" maxlength="<!--{$arrForm[$key3].length}-->" style="<!--{$arrErr[$key3]|sfGetErrorColor}-->" size="6" class="box6" /> | |
</td> | |
</tr> | |
<tr> | |
<th>FAX</th> | |
<td> | |
<!--{assign var=key1 value="order_fax01"}--> | |
<!--{assign var=key2 value="order_fax02"}--> | |
<!--{assign var=key3 value="order_fax03"}--> | |
<span class="attention"><!--{$arrErr[$key1]}--></span> | |
<span class="attention"><!--{$arrErr[$key2]}--></span> | |
<span class="attention"><!--{$arrErr[$key3]}--></span> | |
<input type="text" name="<!--{$arrForm[$key1].keyname}-->" value="<!--{$arrForm[$key1].value|h}-->" maxlength="<!--{$arrForm[$key1].length}-->" style="<!--{$arrErr[$key1]|sfGetErrorColor}-->" size="6" class="box6" /> - | |
<input type="text" name="<!--{$arrForm[$key2].keyname}-->" value="<!--{$arrForm[$key2].value|h}-->" maxlength="<!--{$arrForm[$key2].length}-->" style="<!--{$arrErr[$key2]|sfGetErrorColor}-->" size="6" class="box6" /> - | |
<input type="text" name="<!--{$arrForm[$key3].keyname}-->" value="<!--{$arrForm[$key3].value|h}-->" maxlength="<!--{$arrForm[$key3].length}-->" style="<!--{$arrErr[$key3]|sfGetErrorColor}-->" size="6" class="box6" /> | |
</td> | |
</tr> | |
<tr> | |
<th>住所</th> | |
<td> | |
<!--{assign var=key1 value="order_zip01"}--> | |
<!--{assign var=key2 value="order_zip02"}--> | |
<span class="attention"><!--{$arrErr[$key1]}--><!--{$arrErr[$key2]}--></span> | |
〒 | |
<input type="text" name="<!--{$key1}-->" value="<!--{$arrForm[$key1].value|h}-->" maxlength="<!--{$arrForm[$key1].length}-->" style="<!--{$arrErr[$key1]|sfGetErrorColor}-->" size="6" class="box6" /> | |
- | |
<input type="text" name="<!--{$key2}-->" value="<!--{$arrForm[$key2].value|h}-->" maxlength="<!--{$arrForm[$key2].length}-->" style="<!--{$arrErr[$key2]|sfGetErrorColor}-->" size="6" class="box6" /> | |
<a class="btn-normal" href="javascript:;" name="address_input" onclick="fnCallAddress('<!--{$smarty.const.INPUT_ZIP_URLPATH}-->', 'order_zip01', 'order_zip02', 'order_pref', 'order_addr01'); return false;">住所入力</a><br /> | |
<!--{assign var=key value="order_pref"}--> | |
<span class="attention"><!--{$arrErr[$key]}--></span> | |
<select class="top" name="<!--{$key}-->" style="<!--{$arrErr[$key]|sfGetErrorColor}-->"> | |
<option value="" selected="">都道府県を選択</option> | |
<!--{html_options options=$arrPref selected=$arrForm[$key].value}--> | |
</select><br /> | |
<!--{assign var=key value="order_addr01"}--> | |
<span class="attention"><!--{$arrErr[$key]}--></span> | |
<input type="text" name="<!--{$key}-->" value="<!--{$arrForm[$key].value|h}-->" size="60" class="box60 top" maxlength="<!--{$arrForm[$key].length}-->" style="<!--{$arrErr[$key]|sfGetErrorColor}-->" /><br /> | |
<!--{assign var=key value="order_addr02"}--> | |
<span class="attention"><!--{$arrErr[$key]}--></span> | |
<input type="text" name="<!--{$key}-->" value="<!--{$arrForm[$key].value|h}-->" size="60" class="box60" maxlength="<!--{$arrForm[$key].length}-->" style="<!--{$arrErr[$key]|sfGetErrorColor}-->" /> | |
</td> | |
</tr> | |
<tr> | |
<th>備考</th> | |
<td><!--{$arrForm.message.value|h|nl2br}--></td> | |
</tr> | |
<tr> | |
<th>現在ポイント</th> | |
<td> | |
<!--{if $arrForm.customer_id > 0}--> | |
<!--{$arrForm.customer_point.value|number_format}--> | |
pt | |
<!--{else}--> | |
(非会員) | |
<!--{/if}--> | |
</td> | |
</tr> | |
<tr> | |
<th>端末種別</th> | |
<td><!--{$arrDeviceType[$arrForm.device_type_id.value]|h}--></td> | |
</tr> | |
</table> | |
<!--▲お客様情報ここまで--> | |
<!--▼受注商品情報ここから--> | |
<a name="order_products"></a> | |
<h2 id="order_products"> | |
受注商品情報 | |
<a class="btn-normal" href="javascript:;" name="recalculate" onclick="fnModeSubmit('recalculate','anchor_key','order_products');">計算結果の確認</a> | |
<a class="btn-normal" href="javascript:;" name="add_product" onclick="win03('<!--{$smarty.const.ROOT_URLPATH}--><!--{$smarty.const.ADMIN_DIR}-->order/product_select.php?order_id=<!--{$arrForm.order_id.value|h}-->', 'search', '615', '500'); return false;">商品の追加</a> | |
</h2> | |
<!--{if $arrErr.product_id}--> | |
<span class="attention">※ 商品が選択されていません。</span> | |
<!--{/if}--> | |
<table class="list" id="order-edit-products"> | |
<tr> | |
<th class="id">商品コード</th> | |
<th class="name">商品名/規格1/規格2</th> | |
<th class="price">単価</th> | |
<th class="qty">数量</th> | |
<th class="price">税込み価格</th> | |
<th class="price">小計</th> | |
</tr> | |
<!--{section name=cnt loop=$arrForm.quantity.value}--> | |
<!--{assign var=product_index value="`$smarty.section.cnt.index`"}--> | |
<tr> | |
<td> | |
<!--{$arrForm.product_code.value[$product_index]|h}--> | |
<input type="hidden" name="product_code[<!--{$product_index}-->]" value="<!--{$arrForm.product_code.value[$product_index]|h}-->" id="product_code_<!--{$product_index}-->" /> | |
</td> | |
<td> | |
<!--{$arrForm.product_name.value[$product_index]|h}-->/<!--{$arrForm.classcategory_name1.value[$product_index]|default:"(なし)"|h}-->/<!--{$arrForm.classcategory_name2.value[$product_index]|default:"(なし)"|h}--> | |
<input type="hidden" name="product_name[<!--{$product_index}-->]" value="<!--{$arrForm.product_name.value[$product_index]|h}-->" id="product_name_<!--{$product_index}-->" /> | |
<input type="hidden" name="classcategory_name1[<!--{$product_index}-->]" value="<!--{$arrForm.classcategory_name1.value[$product_index]|h}-->" id="classcategory_name1_<!--{$product_index}-->" /> | |
<input type="hidden" name="classcategory_name2[<!--{$product_index}-->]" value="<!--{$arrForm.classcategory_name2.value[$product_index]|h}-->" id="classcategory_name2_<!--{$product_index}-->" /> | |
<br /> | |
<a class="btn-normal" href="javascript:;" name="change" onclick="win03('<!--{$smarty.const.ROOT_URLPATH}--><!--{$smarty.const.ADMIN_DIR}-->order/product_select.php?no=<!--{$product_index}-->&order_id=<!--{$arrForm.order_id.value|h}-->', 'search', '615', '500'); return false;">変更</a> | |
<!--{if count($arrForm.quantity.value) > 1}--> | |
<a class="btn-normal" href="javascript:;" name="delete" onclick="fnSetFormVal('form1', 'delete_no', <!--{$product_index}-->); fnModeSubmit('delete_product','anchor_key','order_products'); return false;">削除</a> | |
<!--{/if}--> | |
<input type="hidden" name="product_type_id[<!--{$product_index}-->]" value="<!--{$arrForm.product_type_id.value[$product_index]|h}-->" id="product_type_id_<!--{$product_index}-->" /> | |
<input type="hidden" name="product_id[<!--{$product_index}-->]" value="<!--{$arrForm.product_id.value[$product_index]|h}-->" id="product_id_<!--{$product_index}-->" /> | |
<input type="hidden" name="product_class_id[<!--{$product_index}-->]" value="<!--{$arrForm.product_class_id.value[$product_index]|h}-->" id="product_class_id_<!--{$product_index}-->" /> | |
<input type="hidden" name="point_rate[<!--{$product_index}-->]" value="<!--{$arrForm.point_rate.value[$product_index]|h}-->" id="point_rate_<!--{$product_index}-->" /> | |
</td> | |
<td align="center"> | |
<!--{assign var=key value="price"}--> | |
<span class="attention"><!--{$arrErr[$key][$product_index]}--></span> | |
<input type="text" name="<!--{$key}-->[<!--{$product_index}-->]" value="<!--{$arrForm[$key].value[$product_index]|h}-->" size="6" class="box6" maxlength="<!--{$arrForm[$key].length}-->" style="<!--{$arrErr[$key][$product_index]|sfGetErrorColor}-->" id="<!--{$key}-->_<!--{$product_index}-->" /> 円 | |
</td> | |
<td align="center"> | |
<!--{assign var=key value="quantity"}--> | |
<span class="attention"><!--{$arrErr[$key][$product_index]}--></span> | |
<input type="text" name="<!--{$key}-->[<!--{$product_index}-->]" value="<!--{$arrForm[$key].value[$product_index]|h}-->" size="3" class="box3" maxlength="<!--{$arrForm[$key].length}-->" style="<!--{$arrErr[$key][$product_index]|sfGetErrorColor}-->" id="<!--{$key}-->_<!--{$product_index}-->" /> | |
</td> | |
<!--{assign var=price value=`$arrForm.price.value[$product_index]`}--> | |
<!--{assign var=quantity value=`$arrForm.quantity.value[$product_index]`}--> | |
<td class="right"><!--{$price|sfCalcIncTax|number_format}--> 円</td> | |
<td class="right"><!--{$price|sfCalcIncTax|sfMultiply:$quantity|number_format}-->円</td> | |
</tr> | |
<!--{/section}--> | |
<tr> | |
<th colspan="5" class="column right">小計</th> | |
<td class="right"><!--{$arrForm.subtotal.value|number_format}-->円</td> | |
</tr> | |
<tr> | |
<th colspan="5" class="column right">値引き</th> | |
<td class="right"> | |
<!--{assign var=key value="discount"}--> | |
<span class="attention"><!--{$arrErr[$key]}--></span> | |
<input type="text" name="<!--{$key}-->" value="<!--{$arrForm[$key].value|h}-->" maxlength="<!--{$arrForm[$key].length}-->" style="<!--{$arrErr[$key]|sfGetErrorColor}-->" size="5" class="box6" /> | |
円 | |
</td> | |
</tr> | |
<tr> | |
<th colspan="5" class="column right">送料</th> | |
<td class="right"> | |
<!--{assign var=key value="deliv_fee"}--> | |
<span class="attention"><!--{$arrErr[$key]}--></span> | |
<input type="text" name="<!--{$key}-->" value="<!--{$arrForm[$key].value|h}-->" maxlength="<!--{$arrForm[$key].length}-->" style="<!--{$arrErr[$key]|sfGetErrorColor}-->" size="5" class="box6" /> | |
円 | |
</td> | |
</tr> | |
<tr> | |
<th colspan="5" class="column right">手数料</th> | |
<td class="right"> | |
<!--{assign var=key value="charge"}--> | |
<span class="attention"><!--{$arrErr[$key]}--></span> | |
<input type="text" name="<!--{$key}-->" value="<!--{$arrForm[$key].value|h}-->" maxlength="<!--{$arrForm[$key].length}-->" style="<!--{$arrErr[$key]|sfGetErrorColor}-->" size="5" class="box6" /> | |
円 | |
</td> | |
</tr> | |
<tr> | |
<th colspan="5" class="column right">合計</th> | |
<td class="right"> | |
<span class="attention"><!--{$arrErr.total}--></span> | |
<!--{$arrForm.total.value|number_format}--> 円 | |
</td> | |
</tr> | |
<tr> | |
<th colspan="5" class="column right">お支払い合計</th> | |
<td class="right"> | |
<span class="attention"><!--{$arrErr.payment_total}--></span> | |
<!--{$arrForm.payment_total.value|number_format}--> | |
円 | |
</td> | |
</tr> | |
<!--{if $smarty.const.USE_POINT !== false}--> | |
<tr> | |
<th colspan="5" class="column right">使用ポイント</th> | |
<td class="right"> | |
<!--{assign var=key value="use_point"}--> | |
<span class="attention"><!--{$arrErr[$key]}--></span> | |
<input type="text" name="<!--{$key}-->" value="<!--{$arrForm[$key].value|default:0|h}-->" maxlength="<!--{$arrForm[$key].length}-->" style="<!--{$arrErr[$key]|sfGetErrorColor}-->" size="5" class="box6" /> | |
pt | |
</td> | |
</tr> | |
<!--{if $arrForm.birth_point.value > 0}--> | |
<tr> | |
<th colspan="5" class="column right">お誕生日ポイント</th> | |
<td class="right"> | |
<!--{$arrForm.birth_point.value|number_format}--> | |
pt | |
</td> | |
</tr> | |
<!--{/if}--> | |
<tr> | |
<th colspan="5" class="column right">加算ポイント</th> | |
<td class="right"> | |
<!--{$arrForm.add_point.value|number_format|default:0}--> | |
pt | |
</td> | |
</tr> | |
<!--{/if}--> | |
</table> | |
<!--{assign var=key value="shipping_quantity"}--> | |
<input type="hidden" name="<!--{$key}-->" value="<!--{$arrForm[$key].value|h}-->" /> | |
<!--▼お届け先情報ここから--> | |
<a name="shipping"></a> | |
<h2>お届け先情報 | |
<!--{if $arrForm.shipping_quantity.value <= 1}--> | |
<a class="btn-normal" href="javascript:;" onclick="fnCopyFromOrderData();">お客様情報へお届けする</a> | |
<!--{/if}--> | |
<!--{if $smarty.const.USE_MULTIPLE_SHIPPING !== false}--> | |
<a class="btn-normal" href="javascript:;" onclick="fnAppendShipping();">お届け先を新規追加</a> | |
<a class="btn-normal" href="javascript:;" onclick="fnMultiple();">複数のお届け先を指定する</a> | |
<!--{/if}--> | |
</h2> | |
<!--{foreach name=shipping from=$arrAllShipping item=arrShipping key=shipping_index}--> | |
<!--{if $arrForm.shipping_quantity.value > 1}--> | |
<h3>お届け先<!--{$smarty.foreach.shipping.iteration}--></h3> | |
<!--{/if}--> | |
<!--{assign var=key value="shipping_id"}--> | |
<input type="hidden" name="<!--{$key}-->[<!--{$shipping_index}-->]" value="<!--{$arrShipping[$key]|default:"0"|h}-->" id="<!--{$key}-->_<!--{$shipping_index}-->" /> | |
<!--{if $arrForm.shipping_quantity.value > 1}--> | |
<!--{assign var=product_quantity value="shipping_product_quantity"}--> | |
<input type="hidden" name="<!--{$product_quantity}-->[<!--{$shipping_index}-->]" value="<!--{$arrShipping[$product_quantity]|h}-->" /> | |
<!--{if count($arrShipping.shipment_product_class_id) > 0}--> | |
<table class="list" id="order-edit-products"> | |
<tr> | |
<th class="id">商品コード</th> | |
<th class="name">商品名/規格1/規格2</th> | |
<th class="price">単価</th> | |
<th class="qty">数量</th> | |
</tr> | |
<!--{section name=item loop=$arrShipping.shipment_product_class_id|@count}--> | |
<!--{assign var=item_index value="`$smarty.section.item.index`"}--> | |
<tr> | |
<td> | |
<!--{assign var=key value="shipment_product_class_id"}--> | |
<input type="hidden" name="<!--{$key}-->[<!--{$shipping_index}-->][<!--{$item_index}-->]" value="<!--{$arrShipping[$key][$item_index]|h}-->" /> | |
<!--{assign var=key value="shipment_product_code"}--> | |
<input type="hidden" name="<!--{$key}-->[<!--{$shipping_index}-->][<!--{$item_index}-->]" value="<!--{$arrShipping[$key][$item_index]|h}-->" /> | |
<!--{$arrShipping[$key][$item_index]|h}--> | |
</td> | |
<td> | |
<!--{assign var=key1 value="shipment_product_name"}--> | |
<!--{assign var=key2 value="shipment_classcategory_name1"}--> | |
<!--{assign var=key3 value="shipment_classcategory_name2"}--> | |
<input type="hidden" name="<!--{$key1}-->[<!--{$shipping_index}-->][<!--{$item_index}-->]" value="<!--{$arrShipping[$key1][$item_index]|h}-->" /> | |
<input type="hidden" name="<!--{$key2}-->[<!--{$shipping_index}-->][<!--{$item_index}-->]" value="<!--{$arrShipping[$key2][$item_index]|h}-->" /> | |
<input type="hidden" name="<!--{$key3}-->[<!--{$shipping_index}-->][<!--{$item_index}-->]" value="<!--{$arrShipping[$key3][$item_index]|h}-->" /> | |
<!--{$arrShipping[$key1][$item_index]|h}-->/<!--{$arrShipping[$key2][$item_index]|default:"(なし)"|h}-->/<!--{$arrShipping[$key3][$item_index]|default:"(なし)"|h}--> | |
</td> | |
<td class="right"> | |
<!--{assign var=key value="shipment_price"}--> | |
<!--{$arrShipping[$key][$item_index]|sfCalcIncTax|number_format}-->円 | |
<input type="hidden" name="<!--{$key}-->[<!--{$shipping_index}-->][<!--{$item_index}-->]" value="<!--{$arrShipping[$key][$item_index]|h}-->" /> | |
</td> | |
<td class="right"> | |
<!--{assign var=key value="shipment_quantity"}--> | |
<!--{$arrShipping[$key][$item_index]|h}--> | |
<input type="hidden" name="<!--{$key}-->[<!--{$shipping_index}-->][<!--{$item_index}-->]" value="<!--{$arrShipping[$key][$item_index]|h}-->" /> | |
</td> | |
</tr> | |
<!--{/section}--> | |
</table> | |
<!--{/if}--> | |
<!--{/if}--> | |
<table class="form"> | |
<tr> | |
<th>お名前</th> | |
<td> | |
<!--{assign var=key1 value="shipping_name01"}--> | |
<!--{assign var=key2 value="shipping_name02"}--> | |
<span class="attention"><!--{$arrErr[$key1][$shipping_index]}--><!--{$arrErr[$key2][$shipping_index]}--></span> | |
<input type="text" name="<!--{$key1}-->[<!--{$shipping_index}-->]" value="<!--{$arrShipping[$key1]|h}-->" maxlength="<!--{$arrForm[$key1].length}-->" style="<!--{$arrErr[$key1][$shipping_index]|sfGetErrorColor}-->" size="15" class="box15" /> | |
<input type="text" name="<!--{$key2}-->[<!--{$shipping_index}-->]" value="<!--{$arrShipping[$key2]|h}-->" maxlength="<!--{$arrForm[$key2].length}-->" style="<!--{$arrErr[$key2][$shipping_index]|sfGetErrorColor}-->" size="15" class="box15" /> | |
</td> | |
</tr> | |
<tr> | |
<th>お名前(フリガナ)</th> | |
<td> | |
<!--{assign var=key1 value="shipping_kana01"}--> | |
<!--{assign var=key2 value="shipping_kana02"}--> | |
<span class="attention"><!--{$arrErr[$key1][$shipping_index]}--><!--{$arrErr[$key2][$shipping_index]}--></span> | |
<input type="text" name="<!--{$key1}-->[<!--{$shipping_index}-->]" value="<!--{$arrShipping[$key1]|h}-->" maxlength="<!--{$arrForm[$key1].length}-->" style="<!--{$arrErr[$key1][$shipping_index]|sfGetErrorColor}-->" size="15" class="box15" /> | |
<input type="text" name="<!--{$key2}-->[<!--{$shipping_index}-->]" value="<!--{$arrShipping[$key2]|h}-->" maxlength="<!--{$arrForm[$key2].length}-->" style="<!--{$arrErr[$key2][$shipping_index]|sfGetErrorColor}-->" size="15" class="box15" /> | |
</td> | |
</tr> | |
<tr> | |
<th>TEL</th> | |
<td> | |
<!--{assign var=key1 value="shipping_tel01"}--> | |
<!--{assign var=key2 value="shipping_tel02"}--> | |
<!--{assign var=key3 value="shipping_tel03"}--> | |
<span class="attention"><!--{$arrErr[$key1][$shipping_index]}--></span> | |
<span class="attention"><!--{$arrErr[$key2][$shipping_index]}--></span> | |
<span class="attention"><!--{$arrErr[$key3][$shipping_index]}--></span> | |
<input type="text" name="<!--{$key1}-->[<!--{$shipping_index}-->]" value="<!--{$arrShipping[$key1]|h}-->" maxlength="<!--{$arrForm[$key1].length}-->" style="<!--{$arrErr[$key1][$shipping_index]|sfGetErrorColor}-->" size="6" class="box6" /> - | |
<input type="text" name="<!--{$key2}-->[<!--{$shipping_index}-->]" value="<!--{$arrShipping[$key2]|h}-->" maxlength="<!--{$arrForm[$key2].length}-->" style="<!--{$arrErr[$key2][$shipping_index]|sfGetErrorColor}-->" size="6" class="box6" /> - | |
<input type="text" name="<!--{$key3}-->[<!--{$shipping_index}-->]" value="<!--{$arrShipping[$key3]|h}-->" maxlength="<!--{$arrForm[$key3].length}-->" style="<!--{$arrErr[$key3][$shipping_index]|sfGetErrorColor}-->" size="6" class="box6" /> | |
</td> | |
</tr> | |
<tr> | |
<th>FAX</th> | |
<td> | |
<!--{assign var=key1 value="shipping_fax01"}--> | |
<!--{assign var=key2 value="shipping_fax02"}--> | |
<!--{assign var=key3 value="shipping_fax03"}--> | |
<span class="attention"><!--{$arrErr[$key1][$shipping_index]}--></span> | |
<span class="attention"><!--{$arrErr[$key2][$shipping_index]}--></span> | |
<span class="attention"><!--{$arrErr[$key3][$shipping_index]}--></span> | |
<input type="text" name="<!--{$key1}-->[<!--{$shipping_index}-->]" value="<!--{$arrShipping[$key1]|h}-->" maxlength="<!--{$arrForm[$key1].length}-->" style="<!--{$arrErr[$key1][$shipping_index]|sfGetErrorColor}-->" size="6" class="box6" /> - | |
<input type="text" name="<!--{$key2}-->[<!--{$shipping_index}-->]" value="<!--{$arrShipping[$key2]|h}-->" maxlength="<!--{$arrForm[$key2].length}-->" style="<!--{$arrErr[$key2][$shipping_index]|sfGetErrorColor}-->" size="6" class="box6" /> - | |
<input type="text" name="<!--{$key3}-->[<!--{$shipping_index}-->]" value="<!--{$arrShipping[$key3]|h}-->" maxlength="<!--{$arrForm[$key3].length}-->" style="<!--{$arrErr[$key3][$shipping_index]|sfGetErrorColor}-->" size="6" class="box6" /> | |
</td> | |
</tr> | |
<tr> | |
<th>住所</th> | |
<td> | |
<!--{assign var=key1 value="shipping_zip01"}--> | |
<!--{assign var=key2 value="shipping_zip02"}--> | |
<span class="attention"><!--{$arrErr[$key1][$shipping_index]}--><!--{$arrErr[$key2][$shipping_index]}--></span> | |
〒 | |
<input type="text" name="<!--{$key1}-->[<!--{$shipping_index}-->]" value="<!--{$arrShipping[$key1]|h}-->" maxlength="<!--{$arrForm[$key1].length}-->" style="<!--{$arrErr[$key1][$shipping_index]|sfGetErrorColor}-->" size="6" class="box6" /> | |
- | |
<input type="text" name="<!--{$key2}-->[<!--{$shipping_index}-->]" value="<!--{$arrShipping[$key2]|h}-->" maxlength="<!--{$arrForm[$key2].length}-->" style="<!--{$arrErr[$key2][$shipping_index]|sfGetErrorColor}-->" size="6" class="box6" /> | |
<a class="btn-normal" href="javascript:;" name="address_input" onclick="fnCallAddress('<!--{$smarty.const.INPUT_ZIP_URLPATH}-->', 'shipping_zip01[<!--{$shipping_index}-->]', 'shipping_zip02[<!--{$shipping_index}-->]', 'shipping_pref[<!--{$shipping_index}-->]', 'shipping_addr01[<!--{$shipping_index}-->]'); return false;">住所入力</a><br /> | |
<!--{assign var=key value="shipping_pref"}--> | |
<span class="attention"><!--{$arrErr[$key][$shipping_index]}--></span> | |
<select class="top" name="<!--{$key}-->[<!--{$shipping_index}-->]" style="<!--{$arrErr[$key][$shipping_index]|sfGetErrorColor}-->"> | |
<option value="" selected="">都道府県を選択</option> | |
<!--{html_options options=$arrPref selected=$arrShipping[$key]}--> | |
</select><br /> | |
<!--{assign var=key value="shipping_addr01"}--> | |
<span class="attention"><!--{$arrErr[$key][$shipping_index]}--></span> | |
<input type="text" name="<!--{$key}-->[<!--{$shipping_index}-->]" value="<!--{$arrShipping[$key]|h}-->" size="60" class="box60 top" maxlength="<!--{$arrForm[$key].length}-->" style="<!--{$arrErr[$key][$shipping_index]|sfGetErrorColor}-->" /><br /> | |
<!--{assign var=key value="shipping_addr02"}--> | |
<span class="attention"><!--{$arrErr[$key][$shipping_index]}--></span> | |
<input type="text" name="<!--{$key}-->[<!--{$shipping_index}-->]" value="<!--{$arrShipping[$key]|h}-->" size="60" class="box60" maxlength="<!--{$arrForm[$key].length}-->" style="<!--{$arrErr[$key][$shipping_index]|sfGetErrorColor}-->" /> | |
</td> | |
</tr> | |
<tr> | |
<th>お届け時間</th> | |
<td> | |
<!--{assign var=key value="time_id"}--> | |
<span class="attention"><!--{$arrErr[$key][$shipping_index]}--></span> | |
<select name="<!--{$key}-->[<!--{$shipping_index}-->]" style="<!--{$arrErr[$key][$shipping_index]|sfGetErrorColor}-->"> | |
<option value="" selected="0">指定無し</option> | |
<!--{html_options options=$arrDelivTime selected=$arrShipping[$key]}--> | |
</select> | |
</td> | |
</tr> | |
<tr> | |
<th>お届け日</th> | |
<td> | |
<!--{assign var=key1 value="shipping_date_year"}--> | |
<!--{assign var=key2 value="shipping_date_month"}--> | |
<!--{assign var=key3 value="shipping_date_day"}--> | |
<span class="attention"><!--{$arrErr[$key1][$shipping_index]}--></span> | |
<span class="attention"><!--{$arrErr[$key2][$shipping_index]}--></span> | |
<span class="attention"><!--{$arrErr[$key3][$shipping_index]}--></span> | |
<select name="<!--{$key1}-->[<!--{$shipping_index}-->]" style="<!--{$arrErr[$key1][$shipping_index]|sfGetErrorColor}-->"> | |
<!--{html_options options=$arrYearShippingDate selected=$arrShipping[$key1]|default:""}--> | |
</select>年 | |
<select name="<!--{$key2}-->[<!--{$shipping_index}-->]" style="<!--{$arrErr[$key2][$shipping_index]|sfGetErrorColor}-->"> | |
<!--{html_options options=$arrMonthShippingDate selected=$arrShipping[$key2]|default:""}--> | |
</select>月 | |
<select name="<!--{$key3}-->[<!--{$shipping_index}-->]" style="<!--{$arrErr[$key3][$shipping_index]|sfGetErrorColor}-->"> | |
<!--{html_options options=$arrDayShippingDate selected=$arrShipping[$key3]|default:""}--> | |
</select>日 | |
</td> | |
</tr> | |
</table> | |
<!--{/foreach}--> | |
<!--▲お届け先情報ここまで--> | |
<a name="deliv"></a> | |
<table class="form"> | |
<tr> | |
<th>配送業者<br /><span class="attention">(配送業者の変更に伴う送料の変更は手動にてお願いします。)</span></th> | |
<td> | |
<!--{assign var=key value="deliv_id"}--> | |
<span class="attention"><!--{$arrErr[$key]}--></span> | |
<select name="<!--{$key}-->" style="<!--{$arrErr[$key]|sfGetErrorColor}-->" onchange="fnModeSubmit('deliv','anchor_key','deliv');"> | |
<option value="" selected="">選択してください</option> | |
<!--{html_options options=$arrDeliv selected=$arrForm[$key].value}--> | |
</select> | |
</td> | |
</tr> | |
<tr> | |
<th>お支払方法<br /><span class="attention">(お支払方法の変更に伴う手数料の変更は手動にてお願いします。)</span></th> | |
<td> | |
<!--{assign var=key value="payment_id"}--> | |
<span class="attention"><!--{$arrErr[$key]}--></span> | |
<select name="<!--{$key}-->" style="<!--{$arrErr[$key]|sfGetErrorColor}-->" onchange="fnModeSubmit('payment','anchor_key','deliv');"> | |
<option value="" selected="">選択してください</option> | |
<!--{html_options options=$arrPayment selected=$arrForm[$key].value}--> | |
</select> | |
</td> | |
</tr> | |
<!--{if $arrForm.payment_info|@count > 0}--> | |
<tr> | |
<th><!--{$arrForm.payment_type}-->情報</th> | |
<td> | |
<!--{foreach key=key item=item from=$arrForm.payment_info}--> | |
<!--{if $key != "title"}--><!--{if $item.name != ""}--><!--{$item.name}-->:<!--{/if}--><!--{$item.value}--><br/><!--{/if}--> | |
<!--{/foreach}--> | |
</td> | |
</tr> | |
<!--{/if}--> | |
<tr> | |
<th>名入れオプション</th> | |
<td> | |
<!--{assign var=key value="putting_names_options"}--> | |
<span class="attention"><!--{$arrErr[$key]}--></span> | |
<textarea name="<!--{$key}-->" style="<!--{$arrErr[$key]|sfGetErrorColor}-->" cols="70" rows="8" class="txtarea" wrap="hard"><!--{$arrForm[$key].value|h}--></textarea> | |
</td> | |
</tr> | |
<tr> | |
<th>メモ</th> | |
<td> | |
<!--{assign var=key value="note"}--> | |
<span class="attention"><!--{$arrErr[$key]}--></span> | |
<textarea name="<!--{$key}-->" maxlength="<!--{$arrForm[$key].length}-->" cols="80" rows="6" class="area80" style="<!--{$arrErr[$key]|sfGetErrorColor}-->" ><!--{$arrForm[$key].value|h}--></textarea> | |
</td> | |
</tr> | |
</table> | |
<!--▲受注商品情報ここまで--> | |
<div class="btn-area"> | |
<ul> | |
<!--{if count($arrSearchHidden) > 0}--> | |
<li><a class="btn-action" href="javascript:;" onclick="fnChangeAction('<!--{$smarty.const.ADMIN_ORDER_URLPATH}-->'); fnModeSubmit('search','',''); return false;"><span class="btn-prev">検索画面に戻る</span></a></li> | |
<!--{/if}--> | |
<li><a class="btn-action" href="javascript:;" onclick="return fnFormConfirm(); return false;"><span class="btn-next">この内容で登録する</span></a></li> | |
</ul> | |
</div> | |
</div> | |
<div id="multiple"></div> | |
</form> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
/* data/class/pages/admin/order/LC_Page_Admin_Order_Edit.php | |
* This file is part of EC-CUBE | |
* | |
* Copyright(c) 2000-2012 LOCKON CO.,LTD. All Rights Reserved. | |
* | |
* http://www.lockon.co.jp/ | |
* | |
* This program is free software; you can redistribute it and/or | |
* modify it under the terms of the GNU General Public License | |
* as published by the Free Software Foundation; either version 2 | |
* of the License, or (at your option) any later version. | |
* | |
* This program is distributed in the hope that it will be useful, | |
* but WITHOUT ANY WARRANTY; without even the implied warranty of | |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
* GNU General Public License for more details. | |
* | |
* You should have received a copy of the GNU General Public License | |
* along with this program; if not, write to the Free Software | |
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | |
*/ | |
// {{{ requires | |
require_once CLASS_EX_REALDIR . 'page_extends/admin/order/LC_Page_Admin_Order_Ex.php'; | |
/** | |
* 受注修正 のページクラス. | |
* | |
* @package Page | |
* @author LOCKON CO.,LTD. | |
* @version $Id$ | |
*/ | |
class LC_Page_Admin_Order_Edit extends LC_Page_Admin_Order_Ex { | |
var $arrShippingKeys = array( | |
'shipping_id', | |
'shipping_name01', | |
'shipping_name02', | |
'shipping_kana01', | |
'shipping_kana02', | |
'shipping_tel01', | |
'shipping_tel02', | |
'shipping_tel03', | |
'shipping_fax01', | |
'shipping_fax02', | |
'shipping_fax03', | |
'shipping_pref', | |
'shipping_zip01', | |
'shipping_zip02', | |
'shipping_addr01', | |
'shipping_addr02', | |
'shipping_date_year', | |
'shipping_date_month', | |
'shipping_date_day', | |
'time_id', | |
); | |
var $arrShipmentItemKeys = array( | |
'shipment_product_class_id', | |
'shipment_product_code', | |
'shipment_product_name', | |
'shipment_classcategory_name1', | |
'shipment_classcategory_name2', | |
'shipment_price', | |
'shipment_quantity', | |
); | |
// }}} | |
// {{{ functions | |
/** | |
* Page を初期化する. | |
* | |
* @return void | |
*/ | |
function init() { | |
parent::init(); | |
$this->tpl_mainpage = 'order/edit.tpl'; | |
$this->tpl_mainno = 'order'; | |
$this->tpl_maintitle = '受注管理'; | |
$this->tpl_subtitle = '受注登録'; | |
$masterData = new SC_DB_MasterData_Ex(); | |
$this->arrPref = $masterData->getMasterData('mtb_pref'); | |
$this->arrORDERSTATUS = $masterData->getMasterData('mtb_order_status'); | |
$this->arrDeviceType = $masterData->getMasterData('mtb_device_type'); | |
$objDate = new SC_Date_Ex(RELEASE_YEAR); | |
$this->arrYearShippingDate = $objDate->getYear('', date('Y'), ''); | |
$this->arrMonthShippingDate = $objDate->getMonth(true); | |
$this->arrDayShippingDate = $objDate->getDay(true); | |
// 支払い方法の取得 | |
$this->arrPayment = SC_Helper_DB_Ex::sfGetIDValueList('dtb_payment', 'payment_id', 'payment_method'); | |
// 配送業者の取得 | |
$this->arrDeliv = SC_Helper_DB_Ex::sfGetIDValueList('dtb_deliv', 'deliv_id', 'name'); | |
$this->httpCacheControl('nocache'); | |
} | |
/** | |
* Page のプロセス. | |
* | |
* @return void | |
*/ | |
function process() { | |
$this->action(); | |
$this->sendResponse(); | |
} | |
/** | |
* Page のアクション. | |
* | |
* @return void | |
*/ | |
function action() { | |
$objPurchase = new SC_Helper_Purchase_Ex(); | |
$objFormParam = new SC_FormParam_Ex(); | |
// パラメーター情報の初期化 | |
$this->lfInitParam($objFormParam); | |
$objFormParam->setParam($_REQUEST); | |
$objFormParam->convParam(); | |
$order_id = $objFormParam->getValue('order_id'); | |
$arrValuesBefore = array(); | |
// DBから受注情報を読み込む | |
if (!SC_Utils_Ex::isBlank($order_id)) { | |
$this->setOrderToFormParam($objFormParam, $order_id); | |
$this->tpl_subno = 'index'; | |
$arrValuesBefore['payment_id'] = $objFormParam->getValue('payment_id'); | |
$arrValuesBefore['payment_method'] = $objFormParam->getValue('payment_method'); | |
} else { | |
$this->tpl_subno = 'add'; | |
$this->tpl_mode = 'add'; | |
$arrValuesBefore['payment_id'] = NULL; | |
$arrValuesBefore['payment_method'] = NULL; | |
// お届け先情報を空情報で表示 | |
$arrShippingIds[] = null; | |
$objFormParam->setValue('shipping_id', $arrShippingIds); | |
// 新規受注登録で入力エラーがあった場合の画面表示用に、会員の現在ポイントを取得 | |
if (!SC_Utils_Ex::isBlank($objFormParam->getValue('customer_id'))) { | |
$customer_id = $objFormParam->getValue('customer_id'); | |
$arrCustomer = SC_Helper_Customer_Ex::sfGetCustomerDataFromId($customer_id); | |
$objFormParam->setValue('customer_point', $arrCustomer['point']); | |
// 新規受注登録で、ポイント利用できるように現在ポイントを設定 | |
$objFormParam->setValue('point', $arrCustomer['point']); | |
} | |
} | |
$this->arrSearchHidden = $objFormParam->getSearchArray(); | |
switch ($this->getMode()) { | |
case 'pre_edit': | |
case 'order_id': | |
break; | |
case 'edit': | |
$objFormParam->setParam($_POST); | |
$objFormParam->convParam(); | |
$this->arrErr = $this->lfCheckError($objFormParam); | |
if (SC_Utils_Ex::isBlank($this->arrErr)) { | |
$message = '受注を編集しました。'; | |
$order_id = $this->doRegister($order_id, $objPurchase, $objFormParam, $message, $arrValuesBefore); | |
if ($order_id >= 0) { | |
$this->setOrderToFormParam($objFormParam, $order_id); | |
} | |
$this->tpl_onload = "window.alert('" . $message . "');"; | |
} | |
break; | |
case 'add': | |
if ($_SERVER['REQUEST_METHOD'] == 'POST') { | |
$objFormParam->setParam($_POST); | |
$objFormParam->convParam(); | |
$this->arrErr = $this->lfCheckError($objFormParam); | |
if (SC_Utils_Ex::isBlank($this->arrErr)) { | |
$message = '受注を登録しました。'; | |
$order_id = $this->doRegister(null, $objPurchase, $objFormParam, $message, $arrValuesBefore); | |
if ($order_id >= 0) { | |
$this->tpl_mode = 'edit'; | |
$objFormParam->setValue('order_id', $order_id); | |
$this->setOrderToFormParam($objFormParam, $order_id); | |
} | |
$this->tpl_onload = "window.alert('" . $message . "');"; | |
} | |
} | |
break; | |
// 再計算 | |
case 'recalculate': | |
//支払い方法の選択 | |
case 'payment': | |
// 配送業者の選択 | |
case 'deliv': | |
$objFormParam->setParam($_POST); | |
$objFormParam->convParam(); | |
$this->arrErr = $this->lfCheckError($objFormParam); | |
break; | |
// 商品削除 | |
case 'delete_product': | |
$objFormParam->setParam($_POST); | |
$objFormParam->convParam(); | |
$delete_no = $objFormParam->getValue('delete_no'); | |
$this->doDeleteProduct($delete_no, $objFormParam); | |
$this->arrErr = $this->lfCheckError($objFormParam); | |
break; | |
// 商品追加ポップアップより商品選択 | |
case 'select_product_detail': | |
$objFormParam->setParam($_POST); | |
$objFormParam->convParam(); | |
$this->doRegisterProduct($objFormParam); | |
$this->arrErr = $this->lfCheckError($objFormParam); | |
break; | |
// 会員検索ポップアップより会員指定 | |
case 'search_customer': | |
$objFormParam->setParam($_POST); | |
$objFormParam->convParam(); | |
$this->setCustomerTo($objFormParam->getValue('edit_customer_id'), | |
$objFormParam); | |
$this->arrErr = $this->lfCheckError($objFormParam); | |
break; | |
// 複数配送設定表示 | |
case 'multiple': | |
$objFormParam->setParam($_POST); | |
$objFormParam->convParam(); | |
$this->arrErr = $this->lfCheckError($objFormParam); | |
break; | |
// 複数配送設定を反映 | |
case 'multiple_set_to': | |
$this->lfInitMultipleParam($objFormParam); | |
$objFormParam->setParam($_POST); | |
$objFormParam->convParam(); | |
$this->setMultipleItemTo($objFormParam); | |
break; | |
// お届け先の追加 | |
case 'append_shipping': | |
$objFormParam->setParam($_POST); | |
$objFormParam->convParam(); | |
$this->addShipping($objFormParam); | |
break; | |
default: | |
break; | |
} | |
$this->arrForm = $objFormParam->getFormParamList(); | |
$this->arrAllShipping = $objFormParam->getSwapArray(array_merge($this->arrShippingKeys, $this->arrShipmentItemKeys)); | |
$this->arrDelivTime = $objPurchase->getDelivTime($objFormParam->getValue('deliv_id')); | |
$this->tpl_onload .= $this->getAnchorKey($objFormParam); | |
$this->arrInfo = SC_Helper_DB_Ex::sfGetBasisData(); | |
if ($arrValuesBefore['payment_id']) | |
$this->arrPayment[$arrValuesBefore['payment_id']] = $arrValuesBefore['payment_method']; | |
} | |
/** | |
* デストラクタ. | |
* | |
* @return void | |
*/ | |
function destroy() { | |
parent::destroy(); | |
} | |
/** | |
* パラメーター情報の初期化を行う. | |
* | |
* @param SC_FormParam $objFormParam SC_FormParam インスタンス | |
* @return void | |
*/ | |
function lfInitParam(&$objFormParam) { | |
// 検索条件のパラメーターを初期化 | |
parent::lfInitParam($objFormParam); | |
// お客様情報 | |
$objFormParam->addParam('注文者 お名前(姓)', 'order_name01', STEXT_LEN, 'KVa', array('EXIST_CHECK', 'SPTAB_CHECK', 'MAX_LENGTH_CHECK')); | |
$objFormParam->addParam('注文者 お名前(名)', 'order_name02', STEXT_LEN, 'KVa', array('EXIST_CHECK', 'SPTAB_CHECK', 'MAX_LENGTH_CHECK')); | |
$objFormParam->addParam('注文者 お名前(フリガナ・姓)', 'order_kana01', STEXT_LEN, 'KVCa', array('EXIST_CHECK', 'SPTAB_CHECK', 'MAX_LENGTH_CHECK')); | |
$objFormParam->addParam('注文者 お名前(フリガナ・名)', 'order_kana02', STEXT_LEN, 'KVCa', array('EXIST_CHECK', 'SPTAB_CHECK', 'MAX_LENGTH_CHECK')); | |
$objFormParam->addParam('メールアドレス', 'order_email', null, 'KVCa', array('NO_SPTAB', 'EMAIL_CHECK', 'EMAIL_CHAR_CHECK')); | |
$objFormParam->addParam('郵便番号1', 'order_zip01', ZIP01_LEN, 'n', array('NUM_CHECK', 'NUM_COUNT_CHECK')); | |
$objFormParam->addParam('郵便番号2', 'order_zip02', ZIP02_LEN, 'n', array('NUM_CHECK', 'NUM_COUNT_CHECK')); | |
$objFormParam->addParam('都道府県', 'order_pref', INT_LEN, 'n', array('MAX_LENGTH_CHECK', 'NUM_CHECK')); | |
$objFormParam->addParam('住所1', 'order_addr01', MTEXT_LEN, 'KVa', array('SPTAB_CHECK', 'MAX_LENGTH_CHECK')); | |
$objFormParam->addParam('住所2', 'order_addr02', MTEXT_LEN, 'KVa', array('SPTAB_CHECK', 'MAX_LENGTH_CHECK')); | |
$objFormParam->addParam('電話番号1', 'order_tel01', TEL_ITEM_LEN, 'n', array('MAX_LENGTH_CHECK' ,'NUM_CHECK')); | |
$objFormParam->addParam('電話番号2', 'order_tel02', TEL_ITEM_LEN, 'n', array('MAX_LENGTH_CHECK' ,'NUM_CHECK')); | |
$objFormParam->addParam('電話番号3', 'order_tel03', TEL_ITEM_LEN, 'n', array('MAX_LENGTH_CHECK' ,'NUM_CHECK')); | |
$objFormParam->addParam('FAX番号1', 'order_fax01', TEL_ITEM_LEN, 'n', array('MAX_LENGTH_CHECK' ,'NUM_CHECK')); | |
$objFormParam->addParam('FAX番号2', 'order_fax02', TEL_ITEM_LEN, 'n', array('MAX_LENGTH_CHECK' ,'NUM_CHECK')); | |
$objFormParam->addParam('FAX番号3', 'order_fax03', TEL_ITEM_LEN, 'n', array('MAX_LENGTH_CHECK' ,'NUM_CHECK')); | |
// 受注商品情報 | |
$objFormParam->addParam('値引き', 'discount', INT_LEN, 'n', array('EXIST_CHECK', 'MAX_LENGTH_CHECK', 'NUM_CHECK'), '0'); | |
$objFormParam->addParam('送料', 'deliv_fee', INT_LEN, 'n', array('EXIST_CHECK', 'MAX_LENGTH_CHECK', 'NUM_CHECK'), '0'); | |
$objFormParam->addParam('手数料', 'charge', INT_LEN, 'n', array('EXIST_CHECK', 'MAX_LENGTH_CHECK', 'NUM_CHECK'), '0'); | |
// ポイント機能ON時のみ | |
if (USE_POINT !== false) { | |
$objFormParam->addParam('利用ポイント', 'use_point', INT_LEN, 'n', array('EXIST_CHECK', 'MAX_LENGTH_CHECK', 'NUM_CHECK')); | |
} | |
$objFormParam->addParam('配送業者', 'deliv_id', INT_LEN, 'n', array('EXIST_CHECK', 'MAX_LENGTH_CHECK', 'NUM_CHECK')); | |
$objFormParam->addParam('お支払い方法', 'payment_id', INT_LEN, 'n', array('EXIST_CHECK', 'MAX_LENGTH_CHECK', 'NUM_CHECK')); | |
$objFormParam->addParam('対応状況', 'status', INT_LEN, 'n', array('EXIST_CHECK', 'MAX_LENGTH_CHECK', 'NUM_CHECK')); | |
$objFormParam->addParam('お支払方法名称', 'payment_method'); | |
// 受注詳細情報 | |
$objFormParam->addParam('商品種別ID', 'product_type_id', INT_LEN, 'n', array('EXIST_CHECK', 'MAX_LENGTH_CHECK', 'NUM_CHECK'), '0'); | |
$objFormParam->addParam('単価', 'price', INT_LEN, 'n', array('EXIST_CHECK', 'MAX_LENGTH_CHECK', 'NUM_CHECK'), '0'); | |
$objFormParam->addParam('数量', 'quantity', INT_LEN, 'n', array('EXIST_CHECK', 'MAX_LENGTH_CHECK', 'NUM_CHECK'), '0'); | |
$objFormParam->addParam('商品ID', 'product_id', INT_LEN, 'n', array('EXIST_CHECK', 'MAX_LENGTH_CHECK', 'NUM_CHECK'), '0'); | |
$objFormParam->addParam('商品規格ID', 'product_class_id', INT_LEN, 'n', array('EXIST_CHECK', 'MAX_LENGTH_CHECK', 'NUM_CHECK'), '0'); | |
$objFormParam->addParam('ポイント付与率', 'point_rate'); | |
$objFormParam->addParam('商品コード', 'product_code'); | |
$objFormParam->addParam('商品名', 'product_name'); | |
$objFormParam->addParam('規格名1', 'classcategory_name1'); | |
$objFormParam->addParam('規格名2', 'classcategory_name2'); | |
$objFormParam->addParam('名入れオプション', 'putting_names_options', LTEXT_LEN, null, array('MAX_LENGTH_CHECK')); | |
$objFormParam->addParam('メモ', 'note', MTEXT_LEN, 'KVa', array('MAX_LENGTH_CHECK')); | |
$objFormParam->addParam('削除用項番', 'delete_no', INT_LEN, 'n', array('MAX_LENGTH_CHECK', 'NUM_CHECK')); | |
// DB読込用 | |
$objFormParam->addParam('小計', 'subtotal'); | |
$objFormParam->addParam('合計', 'total'); | |
$objFormParam->addParam('支払い合計', 'payment_total'); | |
$objFormParam->addParam('加算ポイント', 'add_point'); | |
$objFormParam->addParam('お誕生日ポイント', 'birth_point', null, 'n', array(), 0); | |
$objFormParam->addParam('消費税合計', 'tax'); | |
$objFormParam->addParam('最終保持ポイント', 'total_point'); | |
$objFormParam->addParam('会員ID', 'customer_id', INT_LEN, 'n', array('MAX_LENGTH_CHECK', 'NUM_CHECK'), '0'); | |
$objFormParam->addParam('会員ID', 'edit_customer_id', INT_LEN, 'n', array('MAX_LENGTH_CHECK', 'NUM_CHECK'), '0'); | |
$objFormParam->addParam('現在のポイント', 'customer_point'); | |
$objFormParam->addParam('受注前ポイント', 'point'); | |
$objFormParam->addParam('注文番号', 'order_id'); | |
$objFormParam->addParam('受注日', 'create_date'); | |
$objFormParam->addParam('発送日', 'commit_date'); | |
$objFormParam->addParam('備考', 'message'); | |
$objFormParam->addParam('入金日', 'payment_date'); | |
$objFormParam->addParam('端末種別', 'device_type_id'); | |
// 複数情報 | |
$objFormParam->addParam('配送数', 'shipping_quantity', INT_LEN, 'n', array('MAX_LENGTH_CHECK', 'NUM_CHECK'), 1); | |
$objFormParam->addParam('配送ID', 'shipping_id', INT_LEN, 'n', array('MAX_LENGTH_CHECK', 'NUM_CHECK'), 0); | |
$objFormParam->addParam('お名前(姓)', 'shipping_name01', STEXT_LEN, 'KVa', array('SPTAB_CHECK', 'MAX_LENGTH_CHECK')); | |
$objFormParam->addParam('お名前(名)', 'shipping_name02', STEXT_LEN, 'KVa', array('SPTAB_CHECK', 'MAX_LENGTH_CHECK')); | |
$objFormParam->addParam('お名前(フリガナ・姓)', 'shipping_kana01', STEXT_LEN, 'KVCa', array('SPTAB_CHECK', 'MAX_LENGTH_CHECK')); | |
$objFormParam->addParam('お名前(フリガナ・名)', 'shipping_kana02', STEXT_LEN, 'KVCa', array('SPTAB_CHECK', 'MAX_LENGTH_CHECK')); | |
$objFormParam->addParam('郵便番号1', 'shipping_zip01', ZIP01_LEN, 'n', array('NUM_CHECK', 'NUM_COUNT_CHECK')); | |
$objFormParam->addParam('郵便番号2', 'shipping_zip02', ZIP02_LEN, 'n', array('NUM_CHECK', 'NUM_COUNT_CHECK')); | |
$objFormParam->addParam('都道府県', 'shipping_pref', INT_LEN, 'n', array('MAX_LENGTH_CHECK', 'NUM_CHECK')); | |
$objFormParam->addParam('住所1', 'shipping_addr01', MTEXT_LEN, 'KVa', array('SPTAB_CHECK', 'MAX_LENGTH_CHECK')); | |
$objFormParam->addParam('住所2', 'shipping_addr02', MTEXT_LEN, 'KVa', array('SPTAB_CHECK', 'MAX_LENGTH_CHECK')); | |
$objFormParam->addParam('電話番号1', 'shipping_tel01', TEL_ITEM_LEN, 'n', array('MAX_LENGTH_CHECK' ,'NUM_CHECK')); | |
$objFormParam->addParam('電話番号2', 'shipping_tel02', TEL_ITEM_LEN, 'n', array('MAX_LENGTH_CHECK' ,'NUM_CHECK')); | |
$objFormParam->addParam('電話番号3', 'shipping_tel03', TEL_ITEM_LEN, 'n', array('MAX_LENGTH_CHECK' ,'NUM_CHECK')); | |
$objFormParam->addParam('FAX番号1', 'shipping_fax01', TEL_ITEM_LEN, 'n', array('MAX_LENGTH_CHECK' ,'NUM_CHECK')); | |
$objFormParam->addParam('FAX番号2', 'shipping_fax02', TEL_ITEM_LEN, 'n', array('MAX_LENGTH_CHECK' ,'NUM_CHECK')); | |
$objFormParam->addParam('FAX番号3', 'shipping_fax03', TEL_ITEM_LEN, 'n', array('MAX_LENGTH_CHECK' ,'NUM_CHECK')); | |
$objFormParam->addParam('お届け時間ID', 'time_id', INT_LEN, 'n', array('MAX_LENGTH_CHECK', 'NUM_CHECK')); | |
$objFormParam->addParam('お届け日(年)', 'shipping_date_year', INT_LEN, 'n', array('MAX_LENGTH_CHECK', 'NUM_CHECK')); | |
$objFormParam->addParam('お届け日(月)', 'shipping_date_month', INT_LEN, 'n', array('MAX_LENGTH_CHECK', 'NUM_CHECK')); | |
$objFormParam->addParam('お届け日(日)', 'shipping_date_day', INT_LEN, 'n', array('MAX_LENGTH_CHECK', 'NUM_CHECK')); | |
$objFormParam->addParam('お届け日', 'shipping_date', STEXT_LEN, 'KVa', array('SPTAB_CHECK', 'MAX_LENGTH_CHECK')); | |
$objFormParam->addParam('配送商品数量', 'shipping_product_quantity', INT_LEN, 'n', array('MAX_LENGTH_CHECK', 'NUM_CHECK')); | |
$objFormParam->addParam('商品規格ID', 'shipment_product_class_id', INT_LEN, 'n', array('MAX_LENGTH_CHECK', 'NUM_CHECK')); | |
$objFormParam->addParam('商品コード', 'shipment_product_code'); | |
$objFormParam->addParam('商品名', 'shipment_product_name'); | |
$objFormParam->addParam('規格名1', 'shipment_classcategory_name1'); | |
$objFormParam->addParam('規格名2', 'shipment_classcategory_name2'); | |
$objFormParam->addParam('単価', 'shipment_price', INT_LEN, 'n', array('MAX_LENGTH_CHECK', 'NUM_CHECK'), '0'); | |
$objFormParam->addParam('数量', 'shipment_quantity', INT_LEN, 'n', array('MAX_LENGTH_CHECK', 'NUM_CHECK'), '0'); | |
$objFormParam->addParam('商品項番', 'no', INT_LEN, 'n', array('MAX_LENGTH_CHECK', 'NUM_CHECK')); | |
$objFormParam->addParam('追加商品規格ID', 'add_product_class_id', INT_LEN, 'n', array('MAX_LENGTH_CHECK', 'NUM_CHECK')); | |
$objFormParam->addParam('修正商品規格ID', 'edit_product_class_id', INT_LEN, 'n', array('MAX_LENGTH_CHECK', 'NUM_CHECK')); | |
$objFormParam->addParam('アンカーキー', 'anchor_key', STEXT_LEN, 'KVa', array('SPTAB_CHECK', 'MAX_LENGTH_CHECK')); | |
} | |
/** | |
* 複数配送用フォームの初期化を行う. | |
* | |
* @param SC_FormParam $objFormParam SC_FormParam インスタンス | |
* @return void | |
*/ | |
function lfInitMultipleParam(&$objFormParam) { | |
$objFormParam->addParam('商品規格ID', 'multiple_product_class_id', INT_LEN, 'n', array('EXIST_CHECK', 'MAX_LENGTH_CHECK', 'NUM_CHECK')); | |
$objFormParam->addParam('商品コード', 'multiple_product_code', INT_LEN, 'n', array('EXIST_CHECK', 'MAX_LENGTH_CHECK', 'NUM_CHECK'), 1); | |
$objFormParam->addParam('商品名', 'multiple_product_name', INT_LEN, 'n', array('EXIST_CHECK', 'MAX_LENGTH_CHECK', 'NUM_CHECK'), 1); | |
$objFormParam->addParam('規格1', 'multiple_classcategory_name1', INT_LEN, 'n', array('EXIST_CHECK', 'MAX_LENGTH_CHECK', 'NUM_CHECK'), 1); | |
$objFormParam->addParam('規格2', 'multiple_classcategory_name2', INT_LEN, 'n', array('EXIST_CHECK', 'MAX_LENGTH_CHECK', 'NUM_CHECK'), 1); | |
$objFormParam->addParam('単価', 'multiple_price', INT_LEN, 'n', array('EXIST_CHECK', 'MAX_LENGTH_CHECK', 'NUM_CHECK'), 1); | |
$objFormParam->addParam('数量', 'multiple_quantity', INT_LEN, 'n', array('EXIST_CHECK', 'MAX_LENGTH_CHECK', 'NUM_CHECK'), 1); | |
$objFormParam->addParam('お届け先', 'multiple_shipping_id', INT_LEN, 'n', array('EXIST_CHECK', 'MAX_LENGTH_CHECK', 'NUM_CHECK')); | |
} | |
/** | |
* 複数配送入力フォームで入力された値を SC_FormParam へ設定する. | |
* | |
* @param SC_FormParam $objFormParam SC_FormParam インスタンス | |
* @return void | |
*/ | |
function setMultipleItemTo(&$objFormParam) { | |
$arrMultipleKey = array('multiple_shipping_id', | |
'multiple_product_class_id', | |
'multiple_product_name', | |
'multiple_product_code', | |
'multiple_classcategory_name1', | |
'multiple_classcategory_name2', | |
'multiple_price', | |
'multiple_quantity'); | |
$arrMultipleParams = $objFormParam->getSwapArray($arrMultipleKey); | |
/* | |
* 複数配送フォームの入力値を shipping_id ごとにマージ | |
* | |
* $arrShipmentItem[お届け先ID][商品規格ID]['shipment_(key)'] = 値 | |
*/ | |
$arrShipmentItem = array(); | |
foreach ($arrMultipleParams as $arrMultiple) { | |
$shipping_id = $arrMultiple['multiple_shipping_id']; | |
$product_class_id = $arrMultiple['multiple_product_class_id']; | |
foreach ($arrMultiple as $key => $val) { | |
if ($key == 'multiple_quantity') { | |
$arrShipmentItem[$shipping_id][$product_class_id][str_replace('multiple', 'shipment', $key)] += $val; | |
} else { | |
$arrShipmentItem[$shipping_id][$product_class_id][str_replace('multiple', 'shipment', $key)] = $val; | |
} | |
} | |
} | |
/* | |
* フォームのお届け先ごとの配列を生成 | |
* | |
* $arrShipmentForm['(key)'][$shipping_id][$item_index] = 値 | |
* $arrProductQuantity[$shipping_id] = お届け先ごとの配送商品数量 | |
*/ | |
$arrShipmentForm = array(); | |
$arrProductQuantity = array(); | |
$arrShippingIds = $objFormParam->getValue('shipping_id'); | |
foreach ($arrShippingIds as $shipping_id) { | |
$item_index = 0; | |
foreach ($arrShipmentItem[$shipping_id] as $product_class_id => $shipment_item) { | |
foreach ($shipment_item as $key => $val) { | |
$arrShipmentForm[$key][$shipping_id][$item_index] = $val; | |
} | |
// 受注商品の数量を設定 | |
$arrQuantity[$product_class_id] += $shipment_item['shipment_quantity']; | |
$item_index++; | |
} | |
// お届け先ごとの配送商品数量を設定 | |
$arrProductQuantity[$shipping_id] = count($arrShipmentItem[$shipping_id]); | |
} | |
$objFormParam->setParam($arrShipmentForm); | |
$objFormParam->setValue('shipping_product_quantity', $arrProductQuantity); | |
// 受注商品の数量を変更 | |
$arrDest = array(); | |
foreach ($objFormParam->getValue('product_class_id') as $n => $order_product_class_id) { | |
$arrDest['quantity'][$n] = 0; | |
} | |
foreach ($arrQuantity as $product_class_id => $quantity) { | |
foreach ($objFormParam->getValue('product_class_id') as $n => $order_product_class_id) { | |
if ($product_class_id == $order_product_class_id) { | |
$arrDest['quantity'][$n] = $quantity; | |
} | |
} | |
} | |
$objFormParam->setParam($arrDest); | |
} | |
/** | |
* 受注データを取得して, SC_FormParam へ設定する. | |
* | |
* @param SC_FormParam $objFormParam SC_FormParam インスタンス | |
* @param integer $order_id 取得元の受注ID | |
* @return void | |
*/ | |
function setOrderToFormParam(&$objFormParam, $order_id) { | |
$objPurchase = new SC_Helper_Purchase_Ex(); | |
// 受注詳細を設定 | |
$arrOrderDetail = $objPurchase->getOrderDetail($order_id, false); | |
$objFormParam->setParam(SC_Utils_Ex::sfSwapArray($arrOrderDetail)); | |
$arrShippingsTmp = $objPurchase->getShippings($order_id); | |
$arrShippings = array(); | |
foreach ($arrShippingsTmp as $row) { | |
// お届け日の処理 | |
if (!SC_Utils_Ex::isBlank($row['shipping_date'])) { | |
$ts = strtotime($row['shipping_date']); | |
$row['shipping_date_year'] = date('Y', $ts); | |
$row['shipping_date_month'] = date('n', $ts); | |
$row['shipping_date_day'] = date('j', $ts); | |
} | |
$arrShippings[$row['shipping_id']] = $row; | |
} | |
$objFormParam->setValue('shipping_quantity', count($arrShippings)); | |
$objFormParam->setParam(SC_Utils_Ex::sfSwapArray($arrShippings)); | |
/* | |
* 配送商品を設定 | |
* | |
* $arrShipmentItem['shipment_(key)'][$shipping_id][$item_index] = 値 | |
* $arrProductQuantity[$shipping_id] = お届け先ごとの配送商品数量 | |
*/ | |
$arrProductQuantity = array(); | |
$arrShipmentItem = array(); | |
foreach ($arrShippings as $shipping_id => $arrShipping) { | |
$arrProductQuantity[$shipping_id] = count($arrShipping['shipment_item']); | |
foreach ($arrShipping['shipment_item'] as $item_index => $arrItem) { | |
foreach ($arrItem as $item_key => $item_val) { | |
$arrShipmentItem['shipment_' . $item_key][$shipping_id][$item_index] = $item_val; | |
} | |
} | |
} | |
$objFormParam->setValue('shipping_product_quantity', $arrProductQuantity); | |
$objFormParam->setParam($arrShipmentItem); | |
/* | |
* 受注情報を設定 | |
* $arrOrderDetail と項目が重複しており, $arrOrderDetail は連想配列の値 | |
* が渡ってくるため, $arrOrder で上書きする. | |
*/ | |
$arrOrder = $objPurchase->getOrder($order_id); | |
$objFormParam->setParam($arrOrder); | |
// ポイントを設定 | |
list($db_point, $rollback_point) = SC_Helper_DB_Ex::sfGetRollbackPoint( | |
$order_id, $arrOrder['use_point'], $arrOrder['add_point'], $arrOrder['status'] | |
); | |
$objFormParam->setValue('total_point', $db_point); | |
$objFormParam->setValue('point', $rollback_point); | |
if (!SC_Utils_Ex::isBlank($objFormParam->getValue('customer_id'))) { | |
$arrCustomer = SC_Helper_Customer_Ex::sfGetCustomerDataFromId($objFormParam->getValue('customer_id')); | |
$objFormParam->setValue('customer_point', $arrCustomer['point']); | |
} | |
} | |
/** | |
* 入力内容のチェックを行う. | |
* | |
* @param SC_FormParam $objFormParam SC_FormParam インスタンス | |
* @return array エラーメッセージの配列 | |
*/ | |
function lfCheckError(&$objFormParam) { | |
$objProduct = new SC_Product_Ex(); | |
$arrErr = $objFormParam->checkError(); | |
if (!SC_Utils_Ex::isBlank($objErr->arrErr)) { | |
return $arrErr; | |
} | |
$arrValues = $objFormParam->getHashArray(); | |
// 商品の種類数 | |
$max = count($arrValues['quantity']); | |
$subtotal = 0; | |
$totalpoint = 0; | |
$totaltax = 0; | |
for ($i = 0; $i < $max; $i++) { | |
// 小計の計算 | |
$subtotal += SC_Helper_DB_Ex::sfCalcIncTax($arrValues['price'][$i]) * $arrValues['quantity'][$i]; | |
// 小計の計算 | |
$totaltax += SC_Helper_DB_Ex::sfTax($arrValues['price'][$i]) * $arrValues['quantity'][$i]; | |
// 加算ポイントの計算 | |
$totalpoint += SC_Utils_Ex::sfPrePoint($arrValues['price'][$i], $arrValues['point_rate'][$i]) * $arrValues['quantity'][$i]; | |
// 在庫数のチェック | |
$arrProduct = $objProduct->getDetailAndProductsClass($arrValues['product_class_id'][$i]); | |
// 編集前の値と比較するため受注詳細を取得 | |
$objPurchase = new SC_Helper_Purchase_Ex(); | |
$arrOrderDetail = SC_Utils_Ex::sfSwapArray($objPurchase->getOrderDetail($objFormParam->getValue('order_id'), false)); | |
if ($arrProduct['stock_unlimited'] != '1' | |
&& $arrProduct['stock'] < $arrValues['quantity'][$i] - $arrOrderDetail['quantity'][$i]) { | |
$class_name1 = $arrValues['classcategory_name1'][$i]; | |
$class_name1 = SC_Utils_Ex::isBlank($class_name1) ? 'なし' : $class_name1; | |
$class_name2 = $arrValues['classcategory_name2'][$i]; | |
$class_name2 = SC_Utils_Ex::isBlank($class_name2) ? 'なし' : $class_name2; | |
$arrErr['quantity'][$i] .= $arrValues['product_name'][$i] | |
. '/(' . $class_name1 . ')/(' . $class_name2 . ') の在庫が不足しています。 設定できる数量は「' | |
. ($arrOrderDetail['quantity'][$i] + $arrProduct['stock']) . '」までです。<br />'; | |
} | |
} | |
// 消費税 | |
$arrValues['tax'] = $totaltax; | |
// 小計 | |
$arrValues['subtotal'] = $subtotal; | |
// 合計 | |
$arrValues['total'] = $subtotal - $arrValues['discount'] + $arrValues['deliv_fee'] + $arrValues['charge']; | |
// お支払い合計 | |
$arrValues['payment_total'] = $arrValues['total'] - ($arrValues['use_point'] * POINT_VALUE); | |
// 加算ポイント | |
$arrValues['add_point'] = SC_Helper_DB_Ex::sfGetAddPoint($totalpoint, $arrValues['use_point']); | |
// 最終保持ポイント | |
$arrValues['total_point'] = $objFormParam->getValue('point') - $arrValues['use_point']; | |
if ($arrValues['total'] < 0) { | |
$arrErr['total'] = '合計額がマイナス表示にならないように調整して下さい。<br />'; | |
} | |
if ($arrValues['payment_total'] < 0) { | |
$arrErr['payment_total'] = 'お支払い合計額がマイナス表示にならないように調整して下さい。<br />'; | |
} | |
if ($arrValues['total_point'] < 0) { | |
$arrErr['use_point'] = '最終保持ポイントがマイナス表示にならないように調整して下さい。<br />'; | |
} | |
$objFormParam->setParam($arrValues); | |
return $arrErr; | |
} | |
/** | |
* DB更新処理 | |
* | |
* @param integer $order_id 受注ID | |
* @param SC_Helper_Purchase $objPurchase SC_Helper_Purchase インスタンス | |
* @param SC_FormParam $objFormParam SC_FormParam インスタンス | |
* @param string $message 通知メッセージ | |
* @param array $arrValuesBefore 更新前の受注情報 | |
* @return integer $order_id 受注ID | |
* | |
* エラー発生時は負数を返す。 | |
*/ | |
function doRegister($order_id, &$objPurchase, &$objFormParam, &$message, &$arrValuesBefore) { | |
$objQuery =& SC_Query_Ex::getSingletonInstance(); | |
$arrValues = $objFormParam->getDbArray(); | |
$where = 'order_id = ?'; | |
$objQuery->begin(); | |
// 支払い方法が変更されたら、支払い方法名称も更新 | |
if ($arrValues['payment_id'] != $arrValuesBefore['payment_id']) { | |
$arrValues['payment_method'] = $this->arrPayment[$arrValues['payment_id']]; | |
$arrValuesBefore['payment_id'] = NULL; | |
} | |
// 受注テーブルの更新 | |
$order_id = $objPurchase->registerOrder($order_id, $arrValues); | |
$arrDetail = $objFormParam->getSwapArray(array( | |
'product_id', | |
'product_class_id', | |
'product_code', | |
'product_name', | |
'price', 'quantity', | |
'point_rate', | |
'classcategory_name1', | |
'classcategory_name2', | |
)); | |
// 変更しようとしている商品情報とDBに登録してある商品情報を比較することで、更新すべき数量を計算 | |
$max = count($arrDetail); | |
$k = 0; | |
$arrStockData = array(); | |
for ($i = 0; $i < $max; $i++) { | |
if (!empty($arrDetail[$i]['product_id'])) { | |
$arrPreDetail = $objQuery->select('*', 'dtb_order_detail', 'order_id = ? AND product_class_id = ?', array($order_id, $arrDetail[$i]['product_class_id'])); | |
if (!empty($arrPreDetail) && $arrPreDetail[0]['quantity'] != $arrDetail[$i]['quantity']) { | |
// 数量が変更された商品 | |
$arrStockData[$k]['product_class_id'] = $arrDetail[$i]['product_class_id']; | |
$arrStockData[$k]['quantity'] = $arrPreDetail[0]['quantity'] - $arrDetail[$i]['quantity']; | |
++$k; | |
} elseif (empty($arrPreDetail)) { | |
// 新しく追加された商品 もしくは 違う商品に変更された商品 | |
$arrStockData[$k]['product_class_id'] = $arrDetail[$i]['product_class_id']; | |
$arrStockData[$k]['quantity'] = -$arrDetail[$i]['quantity']; | |
++$k; | |
} | |
$objQuery->delete('dtb_order_detail', 'order_id = ? AND product_class_id = ?', array($order_id, $arrDetail[$i]['product_class_id'])); | |
} | |
} | |
// 上記の新しい商品のループでDELETEされなかった商品は、注文より削除された商品 | |
$arrPreDetail = $objQuery->select('*', 'dtb_order_detail', 'order_id = ?', array($order_id)); | |
foreach ($arrPreDetail AS $key=>$val) { | |
$arrStockData[$k]['product_class_id'] = $val['product_class_id']; | |
$arrStockData[$k]['quantity'] = $val['quantity']; | |
++$k; | |
} | |
// 受注詳細データの更新 | |
$objPurchase->registerOrderDetail($order_id, $arrDetail); | |
// 在庫数調整 | |
if (ORDER_DELIV != $arrValues['status'] | |
&& ORDER_CANCEL != $arrValues['status']) { | |
foreach ($arrStockData AS $stock) { | |
$objQuery->update('dtb_products_class', array(), | |
'product_class_id = ?', | |
array($stock['product_class_id']), | |
array('stock' => 'stock + ?'), | |
array($stock['quantity'])); | |
} | |
} | |
$arrAllShipping = $objFormParam->getSwapArray($this->arrShippingKeys); | |
$arrAllShipmentItem = $objFormParam->getSwapArray($this->arrShipmentItemKeys); | |
$arrDelivTime = $objPurchase->getDelivTime($objFormParam->getValue('deliv_id')); | |
$arrShippingValues = array(); | |
foreach ($arrAllShipping as $shipping_index => $arrShipping) { | |
$shipping_id = $arrShipping['shipping_id']; | |
$arrShippingValues[$shipping_index] = $arrShipping; | |
$arrShippingValues[$shipping_index]['shipping_date'] | |
= SC_Utils_Ex::sfGetTimestamp($arrShipping['shipping_date_year'], | |
$arrShipping['shipping_date_month'], | |
$arrShipping['shipping_date_day']); | |
// 配送業者IDを取得 | |
$arrShippingValues[$shipping_index]['deliv_id'] = $objFormParam->getValue('deliv_id'); | |
// お届け時間名称を取得 | |
$arrShippingValues[$shipping_index]['shipping_time'] = $arrDelivTime[$arrShipping['time_id']]; | |
// 複数配送の場合は配送商品を登録 | |
if (!SC_Utils_Ex::isBlank($arrAllShipmentItem)) { | |
$arrShipmentValues = array(); | |
foreach ($arrAllShipmentItem[$shipping_index] as $key => $arrItem) { | |
$i = 0; | |
foreach ($arrItem as $item) { | |
$arrShipmentValues[$shipping_index][$i][str_replace('shipment_', '', $key)] = $item; | |
$i++; | |
} | |
} | |
$objPurchase->registerShipmentItem($order_id, $shipping_id, | |
$arrShipmentValues[$shipping_index]); | |
} | |
} | |
$objPurchase->registerShipping($order_id, $arrShippingValues, false); | |
$objQuery->commit(); | |
return $order_id; | |
} | |
/** | |
* 受注商品の追加/更新を行う. | |
* | |
* 小画面で選択した受注商品をフォームに反映させる. | |
* | |
* @param SC_FormParam $objFormParam SC_FormParam インスタンス | |
* @return void | |
*/ | |
function doRegisterProduct(&$objFormParam) { | |
$product_class_id = $objFormParam->getValue('add_product_class_id'); | |
if (SC_Utils_Ex::isBlank($product_class_id)) { | |
$product_class_id = $objFormParam->getValue('edit_product_class_id'); | |
$changed_no = $objFormParam->getValue('no'); | |
} | |
// FXIME バリデーションを通さず $objFormParam の値で DB 問い合わせしている。(管理機能ため、さほど問題は無いと思うものの…) | |
// 商品規格IDが指定されていない場合、例外エラーを発生 | |
if (strlen($product_class_id) === 0) { | |
trigger_error('商品規格指定なし', E_USER_ERROR); | |
} | |
// 選択済みの商品であれば数量を1増やす | |
$exists = false; | |
$arrExistsProductClassIds = $objFormParam->getValue('product_class_id'); | |
foreach ($arrExistsProductClassIds as $key => $value) { | |
$exists_product_class_id = $arrExistsProductClassIds[$key]; | |
if ($exists_product_class_id == $product_class_id) { | |
$exists = true; | |
$exists_no = $key; | |
$arrExistsQuantity = $objFormParam->getValue('quantity'); | |
$arrExistsQuantity[$key]++; | |
$objFormParam->setValue('quantity', $arrExistsQuantity); | |
} | |
} | |
// 新しく商品を追加した場合はフォームに登録 | |
// 商品を変更した場合は、該当行を変更 | |
if (!$exists) { | |
$objProduct = new SC_Product_Ex(); | |
$arrProduct = $objProduct->getDetailAndProductsClass($product_class_id); | |
// 一致する商品規格がない場合、例外エラーを発生 | |
if (empty($arrProduct)) { | |
trigger_error('商品規格一致なし', E_USER_ERROR); | |
} | |
$arrProduct['quantity'] = 1; | |
$arrProduct['price'] = $arrProduct['price02']; | |
$arrProduct['product_name'] = $arrProduct['name']; | |
$arrUpdateKeys = array( | |
'product_id', 'product_class_id', 'product_type_id', 'point_rate', | |
'product_code', 'product_name', 'classcategory_name1', 'classcategory_name2', | |
'quantity', 'price', | |
); | |
foreach ($arrUpdateKeys as $key) { | |
$arrValues = $objFormParam->getValue($key); | |
// FIXME getValueで文字列が返る場合があるので配列であるかをチェック | |
if (!is_array($arrValues)) { | |
$arrValues = array(); | |
} | |
if (isset($changed_no)) { | |
$arrValues[$changed_no] = $arrProduct[$key]; | |
} else { | |
$added_no = 0; | |
if (is_array($arrExistsProductClassIds)) { | |
$added_no = count($arrExistsProductClassIds); | |
} | |
$arrValues[$added_no] = $arrProduct[$key]; | |
} | |
$objFormParam->setValue($key, $arrValues); | |
} | |
} elseif (isset($changed_no) && $exists_no != $changed_no) { | |
// 変更したが、選択済みの商品だった場合は、変更対象行を削除。 | |
$this->doDeleteProduct($changed_no, $objFormParam); | |
} | |
} | |
/** | |
* 受注商品を削除する. | |
* | |
* @param integer $delete_no 削除する受注商品の項番 | |
* @param SC_FormParam $objFormParam SC_FormParam インスタンス | |
* @return void | |
*/ | |
function doDeleteProduct($delete_no, &$objFormParam) { | |
$arrDeleteKeys = array( | |
'product_id', 'product_class_id', 'product_type_id', 'point_rate', | |
'product_code', 'product_name', 'classcategory_name1', 'classcategory_name2', | |
'quantity', 'price', | |
); | |
foreach ($arrDeleteKeys as $key) { | |
$arrNewValues = array(); | |
$arrValues = $objFormParam->getValue($key); | |
foreach ($arrValues as $index => $val) { | |
if ($index != $delete_no) { | |
$arrNewValues[] = $val; | |
} | |
} | |
$objFormParam->setValue($key, $arrNewValues); | |
} | |
} | |
/** | |
* お届け先を追加する. | |
* | |
* @param SC_FormParam $objFormParam SC_FormParam インスタンス | |
* @return void | |
*/ | |
function addShipping(&$objFormParam) { | |
$objFormParam->setValue('shipping_quantity', | |
$objFormParam->getValue('shipping_quantity') + 1); | |
$arrShippingIds = $objFormParam->getValue('shipping_id'); | |
$arrShippingIds[] = max($arrShippingIds) + 1; | |
$objFormParam->setValue('shipping_id', $arrShippingIds); | |
} | |
/** | |
* 会員情報をフォームに設定する. | |
* | |
* @param integer $customer_id 会員ID | |
* @param SC_FormParam $objFormParam SC_FormParam インスタンス | |
* @return void | |
*/ | |
function setCustomerTo($customer_id, &$objFormParam) { | |
$arrCustomer = SC_Helper_Customer_Ex::sfGetCustomerDataFromId($customer_id); | |
foreach ($arrCustomer as $key => $val) { | |
$objFormParam->setValue('order_' . $key, $val); | |
} | |
$objFormParam->setValue('customer_id', $customer_id); | |
$objFormParam->setValue('customer_point', $arrCustomer['point']); | |
} | |
/** | |
* アンカーキーを取得する. | |
* | |
* @param SC_FormParam $objFormParam SC_FormParam インスタンス | |
* @return アンカーキーの文字列 | |
*/ | |
function getAnchorKey(&$objFormParam) { | |
$ancor_key = $objFormParam->getValue('anchor_key'); | |
if (!SC_Utils_Ex::isBlank($ancor_key)) { | |
return "location.hash='#" . htmlentities(urlencode($ancor_key), ENT_QUOTES) . "'"; | |
} | |
return ''; | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
/* data/class/pages/shopping/LC_Page_Shopping_Confirm.php | |
* This file is part of EC-CUBE | |
* | |
* Copyright(c) 2000-2012 LOCKON CO.,LTD. All Rights Reserved. | |
* | |
* http://www.lockon.co.jp/ | |
* | |
* This program is free software; you can redistribute it and/or | |
* modify it under the terms of the GNU General Public License | |
* as published by the Free Software Foundation; either version 2 | |
* of the License, or (at your option) any later version. | |
* | |
* This program is distributed in the hope that it will be useful, | |
* but WITHOUT ANY WARRANTY; without even the implied warranty of | |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
* GNU General Public License for more details. | |
* | |
* You should have received a copy of the GNU General Public License | |
* along with this program; if not, write to the Free Software | |
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | |
*/ | |
// {{{ requires | |
require_once CLASS_EX_REALDIR . 'page_extends/LC_Page_Ex.php'; | |
/** | |
* 入力内容確認のページクラス. | |
* | |
* @package Page | |
* @author LOCKON CO.,LTD. | |
* @version $Id$ | |
*/ | |
class LC_Page_Shopping_Confirm extends LC_Page_Ex { | |
// }}} | |
// {{{ functions | |
/** | |
* Page を初期化する. | |
* | |
* @return void | |
*/ | |
function init() { | |
parent::init(); | |
$this->tpl_title = 'ご入力内容のご確認'; | |
$masterData = new SC_DB_MasterData_Ex(); | |
$this->arrPref = $masterData->getMasterData('mtb_pref'); | |
$this->arrSex = $masterData->getMasterData('mtb_sex'); | |
$this->arrMAILMAGATYPE = $masterData->getMasterData('mtb_mail_magazine_type'); | |
$this->arrReminder = $masterData->getMasterData('mtb_reminder'); | |
$this->arrDeliv = SC_Helper_DB_Ex::sfGetIDValueList('dtb_deliv', 'deliv_id', 'service_name'); | |
$this->httpCacheControl('nocache'); | |
} | |
/** | |
* Page のプロセス. | |
* | |
* @return void | |
*/ | |
function process() { | |
parent::process(); | |
$this->action(); | |
$this->sendResponse(); | |
} | |
/** | |
* Page のアクション. | |
* | |
* @return void | |
*/ | |
function action() { | |
$objCartSess = new SC_CartSession_Ex(); | |
$objSiteSess = new SC_SiteSession_Ex(); | |
$objCustomer = new SC_Customer_Ex(); | |
$objQuery =& SC_Query_Ex::getSingletonInstance(); | |
$objPurchase = new SC_Helper_Purchase_Ex(); | |
$objHelperMail = new SC_Helper_Mail_Ex(); | |
$objHelperMail->setPage($this); | |
$this->is_multiple = $objPurchase->isMultiple(); | |
// 前のページで正しく登録手続きが行われた記録があるか判定 | |
if (!$objSiteSess->isPrePage()) { | |
SC_Utils_Ex::sfDispSiteError(PAGE_ERROR, $objSiteSess); | |
} | |
// ユーザユニークIDの取得と購入状態の正当性をチェック | |
$this->tpl_uniqid = $objSiteSess->getUniqId(); | |
$objPurchase->verifyChangeCart($this->tpl_uniqid, $objCartSess); | |
$this->cartKey = $objCartSess->getKey(); | |
// カート内商品のチェック | |
$this->tpl_message = $objCartSess->checkProducts($this->cartKey); | |
if (!SC_Utils_Ex::isBlank($this->tpl_message)) { | |
SC_Response_Ex::sendRedirect(CART_URLPATH); | |
SC_Response_Ex::actionExit(); | |
} | |
// カートの商品を取得 | |
$this->arrShipping = $objPurchase->getShippingTemp($this->is_multiple); | |
$this->arrCartItems = $objCartSess->getCartList($this->cartKey); | |
// 合計金額 | |
$this->tpl_total_inctax[$this->cartKey] = $objCartSess->getAllProductsTotal($this->cartKey); | |
// 税額 | |
$this->tpl_total_tax[$this->cartKey] = $objCartSess->getAllProductsTax($this->cartKey); | |
// ポイント合計 | |
$this->tpl_total_point[$this->cartKey] = $objCartSess->getAllProductsPoint($this->cartKey); | |
// 一時受注テーブルの読込 | |
$arrOrderTemp = $objPurchase->getOrderTemp($this->tpl_uniqid); | |
// カート集計を元に最終計算 | |
$arrCalcResults = $objCartSess->calculate($this->cartKey, $objCustomer, | |
$arrOrderTemp['use_point'], | |
$objPurchase->getShippingPref($this->is_multiple), | |
$arrOrderTemp['charge'], | |
$arrOrderTemp['discount'], | |
$arrOrderTemp['deliv_id']); | |
$this->arrForm = array_merge($arrOrderTemp, $arrCalcResults); | |
// 名入れ商品が含まれるかどうか | |
$this->hasPuttingNamesOptions = $objCartSess->hasPuttingNamesOptions($this->cartKey); | |
// 会員ログインチェック | |
if ($objCustomer->isLoginSuccess(true)) { | |
$this->tpl_login = '1'; | |
$this->tpl_user_point = $objCustomer->getValue('point'); | |
} | |
// 決済モジュールを使用するかどうか | |
$this->use_module = $this->useModule($this->arrForm['payment_id']); | |
switch ($this->getMode()) { | |
// 前のページに戻る | |
case 'return': | |
// 正常な推移であることを記録しておく | |
$objSiteSess->setRegistFlag(); | |
SC_Response_Ex::sendRedirect(SHOPPING_PAYMENT_URLPATH); | |
SC_Response_Ex::actionExit(); | |
break; | |
case 'confirm': | |
/* | |
* 決済モジュールで必要なため, 受注番号を取得 | |
*/ | |
$this->arrForm['order_id'] = $objQuery->nextval('dtb_order_order_id'); | |
$_SESSION['order_id'] = $this->arrForm['order_id']; | |
// 集計結果を受注一時テーブルに反映 | |
$objPurchase->saveOrderTemp($this->tpl_uniqid, $this->arrForm, | |
$objCustomer); | |
// 正常に登録されたことを記録しておく | |
$objSiteSess->setRegistFlag(); | |
// 決済モジュールを使用する場合 | |
if ($this->use_module) { | |
$objPurchase->completeOrder(ORDER_PENDING); | |
SC_Response_Ex::sendRedirect(SHOPPING_MODULE_URLPATH); | |
} | |
// 購入完了ページ | |
else { | |
$objPurchase->completeOrder(ORDER_NEW); | |
$template_id = SC_Display_Ex::detectDevice() == DEVICE_TYPE_MOBILE ? 2 : 1; | |
$objHelperMail->sfSendOrderMail( | |
$this->arrForm['order_id'], | |
$template_id); | |
SC_Response_Ex::sendRedirect(SHOPPING_COMPLETE_URLPATH); | |
} | |
SC_Response_Ex::actionExit(); | |
break; | |
default: | |
break; | |
} | |
} | |
/** | |
* デストラクタ. | |
* | |
* @return void | |
*/ | |
function destroy() { | |
parent::destroy(); | |
} | |
/** | |
* 決済モジュールを使用するかどうか. | |
* | |
* dtb_payment.memo03 に値が入っている場合は決済モジュールと見なす. | |
* | |
* @param integer $payment_id 支払い方法ID | |
* @return boolean 決済モジュールを使用する支払い方法の場合 true | |
*/ | |
function useModule($payment_id) { | |
$objQuery =& SC_Query_Ex::getSingletonInstance(); | |
$memo03 = $objQuery->get('memo03', 'dtb_payment', 'payment_id = ?', array($payment_id)); | |
return !SC_Utils_Ex::isBlank($memo03); | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
/* data/class/pages/shopping/LC_Page_Shopping_Payment.php | |
* This file is part of EC-CUBE | |
* | |
* Copyright(c) 2000-2012 LOCKON CO.,LTD. All Rights Reserved. | |
* | |
* http://www.lockon.co.jp/ | |
* | |
* This program is free software; you can redistribute it and/or | |
* modify it under the terms of the GNU General Public License | |
* as published by the Free Software Foundation; either version 2 | |
* of the License, or (at your option) any later version. | |
* | |
* This program is distributed in the hope that it will be useful, | |
* but WITHOUT ANY WARRANTY; without even the implied warranty of | |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
* GNU General Public License for more details. | |
* | |
* You should have received a copy of the GNU General Public License | |
* along with this program; if not, write to the Free Software | |
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | |
*/ | |
// {{{ requires | |
require_once CLASS_EX_REALDIR . 'page_extends/LC_Page_Ex.php'; | |
/** | |
* 支払い方法選択 のページクラス. | |
* | |
* @package Page | |
* @author LOCKON CO.,LTD. | |
* @version $Id$ | |
*/ | |
class LC_Page_Shopping_Payment extends LC_Page_Ex { | |
// {{{ properties | |
/** フォームパラメーターの配列 */ | |
var $objFormParam; | |
/** 会員情報のインスタンス */ | |
var $objCustomer; | |
// }}} | |
// {{{ functions | |
/** | |
* Page を初期化する. | |
* | |
* @return void | |
*/ | |
function init() { | |
parent::init(); | |
$this->tpl_onload = 'fnCheckInputPoint();'; | |
$this->tpl_title = 'お支払方法・お届け時間等の指定'; | |
$masterData = new SC_DB_MasterData_Ex(); | |
$this->arrPref = $masterData->getMasterData('mtb_pref'); | |
} | |
/** | |
* Page のプロセス. | |
* | |
* @return void | |
*/ | |
function process() { | |
parent::process(); | |
$this->action(); | |
$this->sendResponse(); | |
} | |
/** | |
* Page のアクション. | |
* | |
* @return void | |
*/ | |
function action() { | |
$objSiteSess = new SC_SiteSession_Ex(); | |
$objCartSess = new SC_CartSession_Ex(); | |
$objPurchase = new SC_Helper_Purchase_Ex(); | |
$objCustomer = new SC_Customer_Ex(); | |
$objFormParam = new SC_FormParam_Ex(); | |
$this->is_multiple = $objPurchase->isMultiple(); | |
// カートの情報を取得 | |
$this->arrShipping = $objPurchase->getShippingTemp($this->is_multiple); | |
$this->tpl_uniqid = $objSiteSess->getUniqId(); | |
$cart_key = $objCartSess->getKey(); | |
$this->cartKey = $cart_key; | |
$objPurchase->verifyChangeCart($this->tpl_uniqid, $objCartSess); | |
// 配送業者を取得 | |
$this->arrDeliv = $objPurchase->getDeliv($cart_key); | |
$this->is_single_deliv = $this->isSingleDeliv($this->arrDeliv); | |
// 会員情報の取得 | |
if ($objCustomer->isLoginSuccess(true)) { | |
$this->tpl_login = '1'; | |
$this->tpl_user_point = $objCustomer->getValue('point'); | |
$this->name01 = $objCustomer->getValue('name01'); | |
$this->name02 = $objCustomer->getValue('name02'); | |
} | |
// 戻り URL の設定 | |
// @deprecated 2.12.0 テンプレート直書きに戻した | |
$this->tpl_back_url = '?mode=return'; | |
$arrOrderTemp = $objPurchase->getOrderTemp($this->tpl_uniqid); | |
// 正常に受注情報が格納されていない場合はカート画面へ戻す | |
if (SC_Utils_Ex::isBlank($arrOrderTemp)) { | |
SC_Response_Ex::sendRedirect(CART_URLPATH); | |
SC_Response_Ex::actionExit(); | |
} | |
// カート内商品の妥当性チェック | |
$this->tpl_message = $objCartSess->checkProducts($cart_key); | |
if (strlen($this->tpl_message) >= 1) { | |
SC_Response_Ex::sendRedirect(CART_URLPATH); | |
SC_Response_Ex::actionExit(); | |
} | |
/* | |
* 購入金額の取得 | |
* ここでは送料を加算しない | |
*/ | |
$this->arrPrices = $objCartSess->calculate($cart_key, $objCustomer); | |
// お届け日一覧の取得 | |
$this->arrDelivDate = $objPurchase->getDelivDate($objCartSess, $cart_key); | |
// 名入れ商品が含まれるかどうか | |
$this->hasPuttingNamesOptions = $objCartSess->hasPuttingNamesOptions($cart_key); | |
switch ($this->getMode()) { | |
/* | |
* 配送業者選択時のアクション | |
* モバイル端末以外の場合は, JSON 形式のデータを出力し, ajax で取得する. | |
*/ | |
case 'select_deliv': | |
$this->setFormParams($objFormParam, $arrOrderTemp, true, $this->arrShipping); | |
$objFormParam->setParam($_POST); | |
$this->arrErr = $objFormParam->checkError(); | |
if (SC_Utils_Ex::isBlank($this->arrErr)) { | |
$deliv_id = $objFormParam->getValue('deliv_id'); | |
$arrSelectedDeliv = $this->getSelectedDeliv($objPurchase, $objCartSess, $deliv_id); | |
$arrSelectedDeliv['error'] = false; | |
} else { | |
$arrSelectedDeliv = array('error' => true); | |
$this->tpl_mainpage = 'shopping/select_deliv.tpl'; // モバイル用 | |
} | |
if (SC_Display_Ex::detectDevice() != DEVICE_TYPE_MOBILE) { | |
echo SC_Utils_Ex::jsonEncode($arrSelectedDeliv); | |
SC_Response_Ex::actionExit(); | |
} else { | |
$this->arrPayment = $arrSelectedDeliv['arrPayment']; | |
$this->arrDelivTime = $arrSelectedDeliv['arrDelivTime']; | |
} | |
break; | |
// 登録処理 | |
case 'confirm': | |
// パラメーター情報の初期化 | |
$this->setFormParams($objFormParam, $_POST, false, $this->arrShipping); | |
$deliv_id = $objFormParam->getValue('deliv_id'); | |
$arrSelectedDeliv = $this->getSelectedDeliv($objPurchase, $objCartSess, $deliv_id); | |
$this->arrPayment = $arrSelectedDeliv['arrPayment']; | |
$this->arrDelivTime = $arrSelectedDeliv['arrDelivTime']; | |
$this->img_show = $arrSelectedDeliv['img_show']; | |
$this->arrErr = $this->lfCheckError($objFormParam, $this->arrPrices['subtotal'], $this->tpl_user_point); | |
if (empty($this->arrErr)) { | |
$this->saveShippings($objFormParam, $this->arrDelivTime); | |
$this->lfRegistData($this->tpl_uniqid, $objFormParam->getDbArray(), $objPurchase, $this->arrPayment); | |
// 正常に登録されたことを記録しておく | |
$objSiteSess->setRegistFlag(); | |
// 確認ページへ移動 | |
SC_Response_Ex::sendRedirect(SHOPPING_CONFIRM_URLPATH); | |
SC_Response_Ex::actionExit(); | |
} | |
break; | |
// 前のページに戻る | |
case 'return': | |
// 正常な推移であることを記録しておく | |
$objSiteSess->setRegistFlag(); | |
$url = null; | |
if ($this->is_multiple) { | |
$url = MULTIPLE_URLPATH . '?from=multiple'; | |
} elseif ($objCustomer->isLoginSuccess(true)) { | |
if ($product_type_id == PRODUCT_TYPE_DOWNLOAD) { | |
$url = CART_URLPATH; | |
} else { | |
$url = DELIV_URLPATH; | |
} | |
} else { | |
$url = SHOPPING_URL . '?from=nonmember'; | |
} | |
SC_Response_Ex::sendRedirect($url); | |
SC_Response_Ex::actionExit(); | |
break; | |
default: | |
// FIXME 前のページから戻ってきた場合は別パラメーター(mode)で処理分岐する必要があるのかもしれない | |
$this->setFormParams($objFormParam, $arrOrderTemp, false, $this->arrShipping); | |
if (!$this->is_single_deliv) { | |
$deliv_id = $objFormParam->getValue('deliv_id'); | |
} else { | |
$deliv_id = $this->arrDeliv[0]['deliv_id']; | |
} | |
if (!SC_Utils_Ex::isBlank($deliv_id)) { | |
$objFormParam->setValue('deliv_id', $deliv_id); | |
$arrSelectedDeliv = $this->getSelectedDeliv($objPurchase, $objCartSess, $deliv_id); | |
$this->arrPayment = $arrSelectedDeliv['arrPayment']; | |
$this->arrDelivTime = $arrSelectedDeliv['arrDelivTime']; | |
$this->img_show = $arrSelectedDeliv['img_show']; | |
} | |
// 名入れオプションの初期値に商品名を表示 | |
if ($this->hasPuttingNamesOptions) { | |
$putting_name_options = ''; | |
$arrItems = $objCartSess->getCartList($this->cartKey); | |
foreach ($arrItems as $arrItem) { | |
if ($arrItem['productsClass']['putting_name_flg'] == '1') { | |
$putting_names_options .= $arrItem['productsClass']['name']; | |
if (!SC_Utils_Ex::isBlank($arrItem['productsClass']['classcategory_name1'])) { | |
$putting_names_options .= '/' . $arrItem['productsClass']['classcategory_name1']; | |
} | |
if (!SC_Utils_Ex::isBlank($arrItem['productsClass']['classcategory_name2'])) { | |
$putting_names_options .= '/' . $arrItem['productsClass']['classcategory_name2']; | |
} | |
$putting_names_options .= ' => 名入れの内容をご入力' . PHP_EOL; | |
} | |
} | |
$objFormParam->setValue('putting_names_options', $putting_names_options); | |
} | |
break; | |
} | |
// モバイル用 ポストバック処理 | |
if (SC_Display_Ex::detectDevice() == DEVICE_TYPE_MOBILE | |
&& SC_Utils_Ex::isBlank($this->arrErr)) { | |
$this->tpl_mainpage = $this->getMobileMainpage($this->is_single_deliv, $this->getMode()); | |
} | |
$this->arrForm = $objFormParam->getFormParamList(); | |
} | |
/** | |
* デストラクタ. | |
* | |
* @return void | |
*/ | |
function destroy() { | |
parent::destroy(); | |
} | |
/** | |
* パラメーターの初期化を行い, 初期値を設定する. | |
* | |
* @param SC_FormParam $objFormParam SC_FormParam インスタンス | |
* @param array $arrParam 設定する値の配列 | |
* @param boolean $deliv_only deliv_id チェックのみの場合 true | |
* @param array $arrShipping 配送先情報の配列 | |
*/ | |
function setFormParams(&$objFormParam, $arrParam, $deliv_only, &$arrShipping) { | |
$this->lfInitParam($objFormParam, $deliv_only, $arrShipping); | |
$objFormParam->setParam($arrParam); | |
$objFormParam->convParam(); | |
} | |
/** | |
* パラメーター情報の初期化を行う. | |
* | |
* @param SC_FormParam $objFormParam SC_FormParam インスタンス | |
* @param boolean $deliv_only 必須チェックは deliv_id のみの場合 true | |
* @param array $arrShipping 配送先情報の配列 | |
* @return void | |
*/ | |
function lfInitParam(&$objFormParam, $deliv_only, &$arrShipping) { | |
$objFormParam->addParam('配送業者', 'deliv_id', INT_LEN, 'n', array('EXIST_CHECK', 'MAX_LENGTH_CHECK', 'NUM_CHECK')); | |
$objFormParam->addParam('ポイント', 'use_point', INT_LEN, 'n', array('MAX_LENGTH_CHECK', 'NUM_CHECK', 'ZERO_START')); | |
$objFormParam->addParam('その他お問い合わせ', 'message', LTEXT_LEN, 'KVa', array('SPTAB_CHECK', 'MAX_LENGTH_CHECK')); | |
$objFormParam->addParam('ポイントを使用する', 'point_check', INT_LEN, 'n', array('MAX_LENGTH_CHECK', 'NUM_CHECK'), '2'); | |
$objFormParam->addParam('名入れオプション', 'putting_names_options', LTEXT_LEN, 'KVa', array('SPTAB_CHECK', 'MAX_LENGTH_CHECK')); | |
if ($deliv_only) { | |
$objFormParam->addParam('お支払い方法', 'payment_id', INT_LEN, 'n', array('MAX_LENGTH_CHECK', 'NUM_CHECK')); | |
} else { | |
$objFormParam->addParam('お支払い方法', 'payment_id', INT_LEN, 'n', array('EXIST_CHECK', 'MAX_LENGTH_CHECK', 'NUM_CHECK')); | |
foreach ($arrShipping as $val) { | |
$objFormParam->addParam('お届け時間', 'deliv_time_id' . $val['shipping_id'], INT_LEN, 'n', array('MAX_LENGTH_CHECK', 'NUM_CHECK')); | |
$objFormParam->addParam('お届け日', 'deliv_date' . $val['shipping_id'], STEXT_LEN, 'KVa', array('MAX_LENGTH_CHECK')); | |
} | |
} | |
$objFormParam->setParam($arrParam); | |
$objFormParam->convParam(); | |
} | |
/** | |
* 入力内容のチェックを行なう. | |
* | |
* @param SC_FormParam $objFormParam SC_FormParam インスタンス | |
* @param integer $subtotal 購入金額の小計 | |
* @param integer $max_point 会員の保持ポイント | |
* @return array 入力チェック結果の配列 | |
*/ | |
function lfCheckError(&$objFormParam, $subtotal, $max_point) { | |
$objPurchase = new SC_Helper_Purchase_Ex(); | |
// 入力データを渡す。 | |
$arrForm = $objFormParam->getHashArray(); | |
$objErr = new SC_CheckError_Ex($arrForm); | |
$objErr->arrErr = $objFormParam->checkError(); | |
if (USE_POINT === false) { | |
return $objErr->arrErr; | |
} | |
if ($arrForm['point_check'] == '1') { | |
$objErr->doFunc(array('ポイントを使用する', 'point_check'), array('EXIST_CHECK')); | |
$objErr->doFunc(array('ポイント', 'use_point'), array('EXIST_CHECK')); | |
if ($max_point == '') { | |
$max_point = 0; | |
} | |
// FIXME mobile 互換のため br は閉じない... | |
if ($arrForm['use_point'] > $max_point) { | |
$objErr->arrErr['use_point'] = '※ ご利用ポイントが所持ポイントを超えています。<br>'; | |
} | |
if (($arrForm['use_point'] * POINT_VALUE) > $subtotal) { | |
$objErr->arrErr['use_point'] = '※ ご利用ポイントがご購入金額を超えています。<br>'; | |
} | |
// ポイント差し引き後の決済方法チェック | |
$arrPayments = $objPurchase->getPaymentsByPaymentsId($arrForm['payment_id']); | |
if ($arrPayments['rule_max'] > $subtotal - $arrForm['use_point'] * POINT_VALUE) { | |
$objErr->arrErr['use_point'] = '※ 選択した支払方法では、ポイントは'.($subtotal - $arrPayments['rule_max']).'ポイントまでご利用いただけます。<br>'; | |
} | |
} | |
return $objErr->arrErr; | |
} | |
/** | |
* 配送情報を保存する. | |
* | |
* @param SC_FormParam $objFormParam SC_FormParam インスタンス | |
* @param array $arrDelivTime 配送時間の配列 | |
*/ | |
function saveShippings(&$objFormParam, $arrDelivTime) { | |
$deliv_id = $objFormParam->getValue('deliv_id'); | |
/* TODO | |
* SC_Purchase::getShippingTemp() で取得して, | |
* リファレンスで代入すると, セッションに添字を追加できない? | |
*/ | |
foreach ($_SESSION['shipping'] as $key => $value) { | |
$shipping_id = $_SESSION['shipping'][$key]['shipping_id']; | |
$time_id = $objFormParam->getValue('deliv_time_id' . $shipping_id); | |
$_SESSION['shipping'][$key]['deliv_id'] = $deliv_id; | |
$_SESSION['shipping'][$key]['time_id'] = $time_id; | |
$_SESSION['shipping'][$key]['shipping_time'] = $arrDelivTime[$time_id]; | |
$_SESSION['shipping'][$key]['shipping_date'] = $objFormParam->getValue('deliv_date' . $shipping_id); | |
} | |
} | |
/** | |
* 受注一時テーブルへ登録を行う. | |
* | |
* @param integer $uniqid 受注一時テーブルのユニークID | |
* @param array $arrForm フォームの入力値 | |
* @param SC_Helper_Purchase $objPurchase SC_Helper_Purchase インスタンス | |
* @param array $arrPayment お支払い方法の配列 | |
* @return void | |
*/ | |
function lfRegistData($uniqid, $arrForm, &$objPurchase, $arrPayment) { | |
$arrForm['order_temp_id'] = $uniqid; | |
$arrForm['update_date'] = 'CURRENT_TIMESTAMP'; | |
if ($arrForm['point_check'] != '1') { | |
$arrForm['use_point'] = 0; | |
} | |
foreach ($arrPayment as $payment) { | |
if ($arrForm['payment_id'] == $payment['payment_id']) { | |
$arrForm['charge'] = $payment['charge']; | |
$arrForm['payment_method'] = $payment['payment_method']; | |
break; | |
} | |
} | |
$objPurchase->saveOrderTemp($uniqid, $arrForm); | |
} | |
/** | |
* 配送業者IDから, 支払い方法, お届け時間の配列を取得する. | |
* | |
* 結果の連想配列の添字の値は以下の通り | |
* - 'arrDelivTime' - お届け時間の配列 | |
* - 'arrPayment' - 支払い方法の配列 | |
* - 'img_show' - 支払い方法の画像の有無 | |
* | |
* @param SC_Helper_Purchase $objPurchase SC_Helper_Purchase インスタンス | |
* @param SC_CartSession $objCartSess SC_CartSession インスタンス | |
* @param integer $deliv_id 配送業者ID | |
* @return array 支払い方法, お届け時間を格納した配列 | |
*/ | |
function getSelectedDeliv(&$objPurchase, &$objCartSess, $deliv_id) { | |
$arrResults = array(); | |
$arrResults['arrDelivTime'] = $objPurchase->getDelivTime($deliv_id); | |
$total = $objCartSess->getAllProductsTotal($objCartSess->getKey(), $deliv_id); | |
$arrResults['arrPayment'] = $objPurchase->getPaymentsByPrice($total, $deliv_id); | |
$arrResults['img_show'] = $this->hasPaymentImage($arrResults['arrPayment']); | |
return $arrResults; | |
} | |
/** | |
* 支払い方法の画像があるかどうか. | |
* | |
* @param array $arrPayment 支払い方法の配列 | |
* @return boolean 支払い方法の画像がある場合 true | |
*/ | |
function hasPaymentImage($arrPayment) { | |
foreach ($arrPayment as $val) { | |
if (!SC_Utils_Ex::isBlank($val['payment_image'])) { | |
return true; | |
} | |
} | |
return false; | |
} | |
/** | |
* 配送業者が1社のみかどうか. | |
* | |
* @param array $arrDeliv 配送業者の配列 | |
* @return boolean 配送業者が1社のみの場合 true | |
*/ | |
function isSingleDeliv($arrDeliv) { | |
if (count($arrDeliv) == 1) { | |
return true; | |
} else { | |
return false; | |
} | |
} | |
/** | |
* モバイル用テンプレートのパスを取得する. | |
* | |
* @param boolean $is_single_deliv 配送業者が1社の場合 true | |
* @param string $mode フォームパラメーター 'mode' の文字列 | |
* @return string モバイル用テンプレートのパス | |
*/ | |
function getMobileMainpage($is_single_deliv = true, $mode) { | |
switch ($mode) { | |
case 'select_deliv': | |
return 'shopping/payment.tpl'; | |
case 'confirm': | |
case 'return': | |
default: | |
if ($is_single_deliv) { | |
return 'shopping/payment.tpl'; | |
} else { | |
return 'shopping/select_deliv.tpl'; | |
} | |
break; | |
} | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
=== modified file 'data/Smarty/templates/admin/order/edit.tpl' | |
--- data/Smarty/templates/admin/order/edit.tpl 2012-05-30 07:37:01 +0000 | |
+++ data/Smarty/templates/admin/order/edit.tpl 2012-11-03 20:06:22 +0000 | |
@@ -605,7 +605,14 @@ | |
</td> | |
</tr> | |
<!--{/if}--> | |
- | |
+ <tr> | |
+ <th>名入れオプション</th> | |
+ <td> | |
+ <!--{assign var=key value="putting_names_options"}--> | |
+ <span class="attention"><!--{$arrErr[$key]}--></span> | |
+ <textarea name="<!--{$key}-->" style="<!--{$arrErr[$key]|sfGetErrorColor}-->" cols="70" rows="8" class="txtarea" wrap="hard"><!--{$arrForm[$key].value|h}--></textarea> | |
+ </td> | |
+ </tr> | |
<tr> | |
<th>メモ</th> | |
<td> | |
=== modified file 'data/Smarty/templates/admin/products/confirm.tpl' | |
--- data/Smarty/templates/admin/products/confirm.tpl 2012-09-28 05:51:40 +0000 | |
+++ data/Smarty/templates/admin/products/confirm.tpl 2012-10-28 16:05:17 +0000 | |
@@ -81,7 +81,18 @@ | |
<!--{/foreach}--> | |
</td> | |
</tr> | |
- | |
+ <tr> | |
+ <th>名入れオプション</th> | |
+ <td> | |
+ <!--{$arrPuttingNameFlg[$arrForm.putting_name_flg]}--> | |
+ </td> | |
+ </tr> | |
+ <tr> | |
+ <th>名入れ価格</th> | |
+ <td> | |
+ <!--{$arrForm.putting_name_price|h}-->円 | |
+ </td> | |
+ </tr> | |
<!--{if $arrForm.has_product_class != true}--> | |
<tr> | |
<th>商品種別</th> | |
=== modified file 'data/Smarty/templates/admin/products/product.tpl' | |
--- data/Smarty/templates/admin/products/product.tpl 2012-05-30 07:37:01 +0000 | |
+++ data/Smarty/templates/admin/products/product.tpl 2012-10-28 15:49:35 +0000 | |
@@ -132,6 +132,21 @@ | |
<!--{html_checkboxes name="product_status" options=$arrSTATUS selected=$arrForm.product_status separator=' '}--> | |
</td> | |
</tr> | |
+ <tr> | |
+ <th>名入れオプション<span class="attention"> *</span></th> | |
+ <td> | |
+ <!--{html_radios name="putting_name_flg" options=$arrPuttingNameFlg selected=$arrForm.putting_name_flg separator=' '}--> | |
+ </td> | |
+ </tr> | |
+ <tr> | |
+ <th>名入れ価格</th> | |
+ <td> | |
+ <span class="attention"><!--{$arrErr.price01}--></span> | |
+ <input type="text" name="putting_name_price" value="<!--{$arrForm.putting_name_price|h}-->" size="6" class="box6" maxlength="<!--{$smarty.const.PRICE_LEN}-->" style="<!--{if $arrErr.putting_name_price != ""}-->background-color: <!--{$smarty.const.ERR_COLOR}-->;<!--{/if}-->"/>円 | |
+ <span class="attention"> (半角数字で入力)</span> | |
+ | |
+ </td> | |
+ </tr> | |
<!--{if $arrForm.has_product_class == false}--> | |
<tr> | |
<th>商品種別<span class="attention"> *</span></th> | |
=== modified file 'data/Smarty/templates/default/cart/index.tpl' | |
--- data/Smarty/templates/default/cart/index.tpl 2012-05-30 07:37:01 +0000 | |
+++ data/Smarty/templates/default/cart/index.tpl 2012-10-28 16:34:41 +0000 | |
@@ -139,6 +139,9 @@ | |
<!--{if $item.productsClass.classcategory_name2 != ""}--> | |
<!--{$item.productsClass.class_name2}-->:<!--{$item.productsClass.classcategory_name2}--> | |
<!--{/if}--> | |
+ <!--{if $item.productsClass.putting_name_flg == '1'}--> | |
+ (名入れ対応) | |
+ <!--{/if}--> | |
</td> | |
<td class="alignR"> | |
<!--{$item.price|sfCalcIncTax|number_format}-->円 | |
=== modified file 'data/Smarty/templates/default/products/detail.tpl' | |
--- data/Smarty/templates/default/products/detail.tpl 2012-09-10 07:12:46 +0000 | |
+++ data/Smarty/templates/default/products/detail.tpl 2012-10-28 16:22:15 +0000 | |
@@ -188,6 +188,13 @@ | |
<!--★詳細メインコメント★--> | |
<div class="main_comment"><!--{$arrProduct.main_comment|nl2br_html}--></div> | |
+ <!--★名入れオプション★--> | |
+ <!--{if $arrProduct.putting_name_flg == '1'}--> | |
+ <div class="putting_name"> | |
+ この商品は名入れ対応です。(<!--{if $arrProduct.putting_name_price > 0}-->+<!--{$arrProduct.putting_name_price|h}-->円<!--{else}-->無料<!--{/if}-->) | |
+ </div> | |
+ <!--{/if}--> | |
+ | |
<!--▼買い物かご--> | |
<div class="cart_area clearfix"> | |
=== modified file 'data/Smarty/templates/default/shopping/confirm.tpl' | |
--- data/Smarty/templates/default/shopping/confirm.tpl 2012-08-07 02:44:25 +0000 | |
+++ data/Smarty/templates/default/shopping/confirm.tpl 2012-10-28 17:12:32 +0000 | |
@@ -282,6 +282,12 @@ | |
<th scope="row">お支払方法</th> | |
<td><!--{$arrForm.payment_method|h}--></td> | |
</tr> | |
+ <!--{if $hasPuttingNamesOptions == true}--> | |
+ <tr> | |
+ <th scope="row">名入れの内容</th> | |
+ <td><!--{$arrForm.putting_names_options|h|nl2br}--></td> | |
+ </tr> | |
+ <!--{/if}--> | |
<tr> | |
<th scope="row">その他お問い合わせ</th> | |
<td><!--{$arrForm.message|h|nl2br}--></td> | |
=== modified file 'data/Smarty/templates/default/shopping/payment.tpl' | |
--- data/Smarty/templates/default/shopping/payment.tpl 2012-08-07 02:44:25 +0000 | |
+++ data/Smarty/templates/default/shopping/payment.tpl 2012-10-28 17:09:41 +0000 | |
@@ -261,6 +261,19 @@ | |
<!--{/if}--> | |
<!-- ▲ポイント使用 ここまで --> | |
+ <!--{if $hasPuttingNamesOptions == true}--> | |
+ <div class="pay_area02"> | |
+ <h3>名入れの内容</h3> | |
+ <p>名入れ対応商品をご購入の場合は、内容をご入力ください。</p> | |
+ <div> | |
+ <!--{assign var=key value="putting_names_options"}--> | |
+ <span class="attention"><!--{$arrErr[$key]}--></span> | |
+ <textarea name="<!--{$key}-->" style="<!--{$arrErr[$key]|sfGetErrorColor}-->" cols="70" rows="8" class="txtarea" wrap="hard"><!--{$arrForm[$key].value|h}--></textarea> | |
+ <p class="attention"> (<!--{$smarty.const.LTEXT_LEN}-->文字まで)</p> | |
+ </div> | |
+ </div> | |
+ <!--{/if}--> | |
+ | |
<div class="pay_area02"> | |
<h3>その他お問い合わせ</h3> | |
<p>その他お問い合わせ事項がございましたら、こちらにご入力ください。</p> | |
=== modified file 'data/class/SC_CartSession.php' | |
--- data/class/SC_CartSession.php 2012-08-10 12:23:12 +0000 | |
+++ data/class/SC_CartSession.php 2012-10-28 17:10:11 +0000 | |
@@ -316,6 +316,7 @@ | |
'classcategory_name1' => true, | |
'class_name2' => true, | |
'classcategory_name2' => true, | |
+ 'putting_name_flg' => true, | |
); | |
// 必要な項目以外を削除。 | |
@@ -346,6 +347,10 @@ | |
=& $objProduct->getDetailAndProductsClass($this->cartSession[$productTypeId][$i]['id']); | |
$price = $this->cartSession[$productTypeId][$i]['productsClass']['price02']; | |
+ // 名入れ対応の場合は加算 | |
+ if ($this->cartSession[$productTypeId][$i]['productsClass']['putting_name_flg'] == '1') { | |
+ $price += $this->cartSession[$productTypeId][$i]['productsClass']['putting_name_price']; | |
+ } | |
$this->cartSession[$productTypeId][$i]['price'] = $price; | |
$this->cartSession[$productTypeId][$i]['point_rate'] | |
@@ -763,4 +768,20 @@ | |
return $result; | |
} | |
+ /** | |
+ * カートの中に名入れ対応商品が含まれるかどうか. | |
+ * | |
+ * @param integer $productTypeId 商品種別ID | |
+ * @return boolean 名入れ対応商品が含まれる場合 true | |
+ */ | |
+ function hasPuttingNamesoptions($productTypeId) { | |
+ $arrItems = $this->getCartList($productTypeId); | |
+ foreach ($arrItems as &$arrItem) { | |
+ if ($arrItem['productsClass']['putting_name_flg'] == '1') { | |
+ return true; | |
+ } | |
+ | |
+ } | |
+ return false; | |
+ } | |
} | |
=== modified file 'data/class/SC_Product.php' | |
--- data/class/SC_Product.php 2012-06-21 06:02:41 +0000 | |
+++ data/class/SC_Product.php 2012-10-28 15:39:10 +0000 | |
@@ -151,6 +151,8 @@ | |
,status | |
,del_flg | |
,update_date | |
+ ,putting_name_flg | |
+ ,putting_name_price | |
__EOS__; | |
$res = $objQuery->select($col, $this->alldtlSQL()); | |
return $res; | |
@@ -653,6 +655,8 @@ | |
,dtb_products.create_date | |
,dtb_products.update_date | |
,dtb_products.deliv_date_id | |
+ ,dtb_products.putting_name_flg | |
+ ,dtb_products.putting_name_price | |
,T4.product_code_min | |
,T4.product_code_max | |
,T4.price01_min | |
=== modified file 'data/class/pages/admin/order/LC_Page_Admin_Order_Edit.php' | |
--- data/class/pages/admin/order/LC_Page_Admin_Order_Edit.php 2012-07-28 14:54:37 +0000 | |
+++ data/class/pages/admin/order/LC_Page_Admin_Order_Edit.php 2012-11-03 20:12:32 +0000 | |
@@ -329,6 +329,7 @@ | |
$objFormParam->addParam('商品名', 'product_name'); | |
$objFormParam->addParam('規格名1', 'classcategory_name1'); | |
$objFormParam->addParam('規格名2', 'classcategory_name2'); | |
+ $objFormParam->addParam('名入れオプション', 'putting_names_options', LTEXT_LEN, null, array('MAX_LENGTH_CHECK')); | |
$objFormParam->addParam('メモ', 'note', MTEXT_LEN, 'KVa', array('MAX_LENGTH_CHECK')); | |
$objFormParam->addParam('削除用項番', 'delete_no', INT_LEN, 'n', array('MAX_LENGTH_CHECK', 'NUM_CHECK')); | |
=== modified file 'data/class/pages/admin/products/LC_Page_Admin_Products_Product.php' | |
--- data/class/pages/admin/products/LC_Page_Admin_Products_Product.php 2012-08-10 11:12:27 +0000 | |
+++ data/class/pages/admin/products/LC_Page_Admin_Products_Product.php 2012-10-28 16:01:50 +0000 | |
@@ -57,6 +57,7 @@ | |
$this->arrDELIVERYDATE = $masterData->getMasterData('mtb_delivery_date'); | |
$this->arrMaker = SC_Helper_DB_Ex::sfGetIDValueList('dtb_maker', 'maker_id', 'name'); | |
$this->arrAllowedTag = $masterData->getMasterData('mtb_allowed_tag'); | |
+ $this->arrPuttingNameFlg = array('1' => '対応', '0' => '非対応'); | |
} | |
/** | |
@@ -324,6 +325,8 @@ | |
$objFormParam->addParam('商品カテゴリ', 'category_id', INT_LEN, 'n', array('EXIST_CHECK', 'NUM_CHECK', 'MAX_LENGTH_CHECK')); | |
$objFormParam->addParam('公開・非公開', 'status', INT_LEN, 'n', array('EXIST_CHECK', 'NUM_CHECK', 'MAX_LENGTH_CHECK')); | |
$objFormParam->addParam('商品ステータス', 'product_status', INT_LEN, 'n', array('NUM_CHECK', 'MAX_LENGTH_CHECK')); | |
+ $objFormParam->addParam('名入れオプション', 'putting_name_flg', INT_LEN, 'n', array('EXIST_CHECK', 'NUM_CHECK', 'MAX_LENGTH_CHECK')); | |
+ $objFormParam->addParam('名入れ価格', 'putting_name_price', PRICE_LEN, 'n', array('NUM_CHECK', 'MAX_LENGTH_CHECK')); | |
if ($this->lfGetProductClassFlag($arrPost['has_product_class']) == false) { | |
// 新規登録, 規格なし商品の編集の場合 | |
@@ -605,6 +608,11 @@ | |
// サブ情報ありなしフラグ | |
$arrForm['sub_find'] = $this->hasSubProductData($arrForm); | |
+ // 名入れ対応フラグ | |
+ if ($arrForm['putting_name_flg'] == '') { | |
+ $arrForm['putting_name_flg'] = '0'; // 本当は定数を使う | |
+ } | |
+ | |
return $arrForm; | |
} | |
@@ -989,7 +997,8 @@ | |
'main_list_comment', 'main_comment', | |
'deliv_fee', 'comment1', 'comment2', 'comment3', | |
'comment4', 'comment5', 'comment6', | |
- 'sale_limit', 'deliv_date_id', 'maker_id', 'note'); | |
+ 'sale_limit', 'deliv_date_id', 'maker_id', 'note', | |
+ 'putting_name_flg', 'puttin_name_price'); | |
$arrList = SC_Utils_Ex::arrayDefineIndexes($arrList, $checkArray); | |
// INSERTする値を作成する。 | |
@@ -1003,6 +1012,8 @@ | |
$sqlval['comment4'] = $arrList['comment4']; | |
$sqlval['comment5'] = $arrList['comment5']; | |
$sqlval['comment6'] = $arrList['comment6']; | |
+ $sqlval['putting_name_flg'] = $arrList['putting_name_flg']; | |
+ $sqlval['putting_name_price'] = $arrList['putting_name_price']; | |
$sqlval['deliv_date_id'] = $arrList['deliv_date_id']; | |
$sqlval['maker_id'] = $arrList['maker_id']; | |
$sqlval['note'] = $arrList['note']; | |
=== modified file 'data/class/pages/shopping/LC_Page_Shopping_Confirm.php' | |
--- data/class/pages/shopping/LC_Page_Shopping_Confirm.php 2012-07-02 12:24:12 +0000 | |
+++ data/class/pages/shopping/LC_Page_Shopping_Confirm.php 2012-10-28 17:14:01 +0000 | |
@@ -122,6 +122,9 @@ | |
$arrOrderTemp['deliv_id']); | |
$this->arrForm = array_merge($arrOrderTemp, $arrCalcResults); | |
+ // 名入れ商品が含まれるかどうか | |
+ $this->hasPuttingNamesOptions = $objCartSess->hasPuttingNamesOptions($this->cartKey); | |
+ | |
// 会員ログインチェック | |
if ($objCustomer->isLoginSuccess(true)) { | |
$this->tpl_login = '1'; | |
=== modified file 'data/class/pages/shopping/LC_Page_Shopping_Payment.php' | |
--- data/class/pages/shopping/LC_Page_Shopping_Payment.php 2012-07-02 12:04:24 +0000 | |
+++ data/class/pages/shopping/LC_Page_Shopping_Payment.php 2012-10-28 17:10:54 +0000 | |
@@ -130,6 +130,9 @@ | |
// お届け日一覧の取得 | |
$this->arrDelivDate = $objPurchase->getDelivDate($objCartSess, $cart_key); | |
+ // 名入れ商品が含まれるかどうか | |
+ $this->hasPuttingNamesOptions = $objCartSess->hasPuttingNamesOptions($cart_key); | |
+ | |
switch ($this->getMode()) { | |
/* | |
* 配送業者選択時のアクション | |
@@ -227,6 +230,25 @@ | |
$this->arrDelivTime = $arrSelectedDeliv['arrDelivTime']; | |
$this->img_show = $arrSelectedDeliv['img_show']; | |
} | |
+ | |
+ // 名入れオプションの初期値に商品名を表示 | |
+ if ($this->hasPuttingNamesOptions) { | |
+ $putting_name_options = ''; | |
+ $arrItems = $objCartSess->getCartList($this->cartKey); | |
+ foreach ($arrItems as $arrItem) { | |
+ if ($arrItem['productsClass']['putting_name_flg'] == '1') { | |
+ $putting_names_options .= $arrItem['productsClass']['name']; | |
+ if (!SC_Utils_Ex::isBlank($arrItem['productsClass']['classcategory_name1'])) { | |
+ $putting_names_options .= '/' . $arrItem['productsClass']['classcategory_name1']; | |
+ } | |
+ if (!SC_Utils_Ex::isBlank($arrItem['productsClass']['classcategory_name2'])) { | |
+ $putting_names_options .= '/' . $arrItem['productsClass']['classcategory_name2']; | |
+ } | |
+ $putting_names_options .= ' => 名入れの内容をご入力' . PHP_EOL; | |
+ } | |
+ } | |
+ $objFormParam->setValue('putting_names_options', $putting_names_options); | |
+ } | |
break; | |
} | |
@@ -277,6 +299,7 @@ | |
$objFormParam->addParam('ポイント', 'use_point', INT_LEN, 'n', array('MAX_LENGTH_CHECK', 'NUM_CHECK', 'ZERO_START')); | |
$objFormParam->addParam('その他お問い合わせ', 'message', LTEXT_LEN, 'KVa', array('SPTAB_CHECK', 'MAX_LENGTH_CHECK')); | |
$objFormParam->addParam('ポイントを使用する', 'point_check', INT_LEN, 'n', array('MAX_LENGTH_CHECK', 'NUM_CHECK'), '2'); | |
+ $objFormParam->addParam('名入れオプション', 'putting_names_options', LTEXT_LEN, 'KVa', array('SPTAB_CHECK', 'MAX_LENGTH_CHECK')); | |
if ($deliv_only) { | |
$objFormParam->addParam('お支払い方法', 'payment_id', INT_LEN, 'n', array('MAX_LENGTH_CHECK', 'NUM_CHECK')); | |
=== added file 'update_table.sql' | |
--- update_table.sql 1970-01-01 00:00:00 +0000 | |
+++ update_table.sql 2012-10-28 14:42:29 +0000 | |
@@ -0,0 +1,4 @@ | |
+ALTER TABLE dtb_products ADD COLUMN putting_name_flg smallint NOT NULL DEFAULT 0; | |
+ALTER TABLE dtb_products ADD COLUMN putting_name_price numeric NOT NULL DEFAULT 0; | |
+ALTER TABLE dtb_order_temp ADD COLUMN putting_names_options TEXT; | |
+ALTER TABLE dtb_order ADD COLUMN putting_names_options TEXT; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment