Changeset 20180
- Timestamp:
- 2011/02/17 19:40:06 (13 years ago)
- bzr:base-revision:
- svn-v4:1e3b908f-19a9-db11-a64c-001125224ba8:branches/version-2_5-dev:20179
- bzr:committer:
- Kentaro Ohkouchi <ohkouchi@loop-az.jp>
- bzr:file-ids:
data/Smarty/templates/admin/order/edit.tpl 15732@1e3b908f-19a9-db11-a64c-001125224ba8:branches%2Ffeature-module-update%2Fdata%2FSmarty%2Ftemplates%2Fdefault%2Fadmin%2Forder%2Fedit.tpl
data/Smarty/templates/admin/order/multiple.tpl multiple.tpl-20110116173102-7dtlp9lt15miha2l-1
data/class/SC_FormParam.php 15078@1e3b908f-19a9-db11-a64c-001125224ba8:branches%2Ffeature-module-update%2Fdata%2Fclass%2FSC_FormParam.php
data/class/helper/SC_Helper_DB.php 15176@1e3b908f-19a9-db11-a64c-001125224ba8:branches%2Ffeature-module-update%2Fdata%2Fclass%2Fhelper%2FSC_Helper_DB.php
data/class/helper/SC_Helper_Purchase.php sc_helper_purchase.p-20101020100530-jyaoa7ch9pdfjqzp-1
data/class/pages/admin/order/LC_Page_Admin_Order_Edit.php 15594@1e3b908f-19a9-db11-a64c-001125224ba8:branches%2Ffeature-module-update%2Fdata%2Fclass%2Fpages%2Fadmin%2Forder%2FLC_Page_Admin_Order_Edit.php
data/class/pages/admin/order/LC_Page_Admin_Order_Status.php 15596@1e3b908f-19a9-db11-a64c-001125224ba8:branches%2Ffeature-module-update%2Fdata%2Fclass%2Fpages%2Fadmin%2Forder%2FLC_Page_Admin_Order_Status.php- bzr:mapping-version:
- v4
- bzr:merge:
ohkouchi@loop-az.jp-20110217103648-l8ut7mopmmwn2yjh- bzr:repository-uuid:
- 1e3b908f-19a9-db11-a64c-001125224ba8
- bzr:revision-id:
- ohkouchi@loop-az.jp-20110217104003-dmwixm9ifgzsxs07
- bzr:revno:
- 2908
- bzr:revprop:branch-nick:
- branches/version-2_5-dev
- bzr:root:
- branches/version-2_5-dev
- bzr:text-revisions:
data/Smarty/templates/admin/order/edit.tpl ohkouchi@loop-az.jp-20110217103648-l8ut7mopmmwn2yjh
data/Smarty/templates/admin/order/multiple.tpl ohkouchi@loop-az.jp-20110217103648-l8ut7mopmmwn2yjh
data/class/SC_FormParam.php ohkouchi@loop-az.jp-20110217103648-l8ut7mopmmwn2yjh
data/class/helper/SC_Helper_Purchase.php ohkouchi@loop-az.jp-20110217103648-l8ut7mopmmwn2yjh
data/class/pages/admin/order/LC_Page_Admin_Order_Edit.php ohkouchi@loop-az.jp-20110217103648-l8ut7mopmmwn2yjh
data/class/pages/admin/order/LC_Page_Admin_Order_Status.php ohkouchi@loop-az.jp-20110217103648-l8ut7mopmmwn2yjh- bzr:timestamp:
- 2011-02-17 19:40:03.388000011 +0900
- bzr:user-agent:
- bzr2.2.1+bzr-svn1.0.4
- svn:original-date:
- 2011-02-17T10:40:03.388000Z
- Location:
- branches/version-2_5-dev/data
- Files:
-
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/version-2_5-dev/data/Smarty/templates/admin/order/edit.tpl
r20116 r20180 27 27 document.form1.action = '<!--{$smarty.const.ROOT_URLPATH}--><!--{$smarty.const.ADMIN_DIR}-->customer/edit.php'; 28 28 document.form1.mode.value = "edit" 29 document.form1[' edit_customer_id'].value = customer_id;29 document.form1['customer_id'].value = customer_id; 30 30 document.form1.submit(); 31 31 return false; … … 34 34 function fnCopyFromOrderData() { 35 35 df = document.form1; 36 37 df.shipping_name01_0.value = df.order_name01.value; 38 df.shipping_name02_0.value = df.order_name02.value; 39 df.shipping_kana01_0.value = df.order_kana01.value; 40 df.shipping_kana02_0.value = df.order_kana02.value; 41 df.shipping_zip01_0.value = df.order_zip01.value; 42 df.shipping_zip02_0.value = df.order_zip02.value; 43 df.shipping_tel01_0.value = df.order_tel01.value; 44 df.shipping_tel02_0.value = df.order_tel02.value; 45 df.shipping_tel03_0.value = df.order_tel03.value; 46 df.shipping_pref_0.value = df.order_pref.value; 47 df.shipping_addr01_0.value = df.order_addr01.value; 48 df.shipping_addr02_0.value = df.order_addr02.value; 36 df['shipping_name01[0]'].value = df.order_name01.value; 37 df['shipping_name02[0]'].value = df.order_name02.value; 38 df['shipping_kana01[0]'].value = df.order_kana01.value; 39 df['shipping_kana02[0]'].value = df.order_kana02.value; 40 df['shipping_zip01[0]'].value = df.order_zip01.value; 41 df['shipping_zip02[0]'].value = df.order_zip02.value; 42 df['shipping_tel01[0]'].value = df.order_tel01.value; 43 df['shipping_tel02[0]'].value = df.order_tel02.value; 44 df['shipping_tel03[0]'].value = df.order_tel03.value; 45 df['shipping_pref[0]'].value = df.order_pref.value; 46 df['shipping_addr01[0]'].value = df.order_addr01.value; 47 df['shipping_addr02[0]'].value = df.order_addr02.value; 49 48 } 50 49 … … 73 72 </script> 74 73 <form name="form1" id="form1" method="post" action="?"> 75 <input type="hidden" name="mode" value="<!--{$tpl_mode|default:"edit" }-->" />76 <input type="hidden" name="order_id" value="<!--{$ tpl_order_id}-->" />74 <input type="hidden" name="mode" value="<!--{$tpl_mode|default:"edit"|h}-->" /> 75 <input type="hidden" name="order_id" value="<!--{$arrForm.order_id.value|h}-->" /> 77 76 <input type="hidden" name="edit_customer_id" value="" /> 78 77 <input type="hidden" name="anchor_key" value="" /> … … 91 90 <tr> 92 91 <th>帳票出力</th> 93 <td><a class="btn-normal" href="javascript:;" onclick="win02('pdf.php?order_id=<!--{$arrForm.order_id.value }-->','pdf','615','650'); return false;">帳票出力</a></td>92 <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> 94 93 </tr> 95 94 <!--{/if}--> … … 100 99 <tr> 101 100 <th>受注日</th> 102 <td><!--{$arrForm.create_date.value|sfDispDBDate }--><input type="hidden" name="create_date" value="<!--{$arrForm.create_date.value}-->" /></td>101 <td><!--{$arrForm.create_date.value|sfDispDBDate|h}--><input type="hidden" name="create_date" value="<!--{$arrForm.create_date.value|h}-->" /></td> 103 102 </tr> 104 103 <tr> … … 118 117 <tr> 119 118 <th>入金日</th> 120 <td><!--{$arrForm.payment_date.value|sfDispDBDate|default:"未入金" }--></td>119 <td><!--{$arrForm.payment_date.value|sfDispDBDate|default:"未入金"|h}--></td> 121 120 </tr> 122 121 <tr> 123 122 <th>発送日</th> 124 <td><!--{$arrForm.commit_date.value|sfDispDBDate|default:"未発送" }--></td>123 <td><!--{$arrForm.commit_date.value|sfDispDBDate|default:"未発送"|h}--></td> 125 124 </tr> 126 125 </table> … … 140 139 <!--{if $arrForm.customer_id.value > 0}--> 141 140 <!--{$arrForm.customer_id.value}--> 142 <input type="hidden" name="customer_id" value="<!--{$arrForm.customer_id.value }-->" />141 <input type="hidden" name="customer_id" value="<!--{$arrForm.customer_id.value|h}-->" /> 143 142 <!--{else}--> 144 143 (非会員) … … 240 239 <h2 id="order_products"> 241 240 受注商品情報 242 <a class="btn-normal" href="javascript:;" name=" cheek" onclick="fnModeSubmit('cheek','anchor_key','order_products');">計算結果の確認</a>243 <a class="btn-normal" href="javascript:;" name="add_product" onclick="win03('<!--{$smarty.const.ROOT_URLPATH}--><!--{$smarty.const.ADMIN_DIR}-->order/product_select.php <!--{if $tpl_order_id}-->?order_id=<!--{$tpl_order_id}--><!--{/if}-->', 'search', '615', '500'); return false;">商品の追加</a>241 <a class="btn-normal" href="javascript:;" name="recalculate" onclick="fnModeSubmit('recalculate','anchor_key','order_products');">計算結果の確認</a> 242 <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> 244 243 </h2> 245 <!--{if $arrErr.product_id || $arrErr.quantity || $arrErr.price}--> 246 <span class="attention"><!--{$arrErr.product_id}--></span> 247 <span class="attention"><!--{$arrErr.quantity}--></span> 248 <span class="attention"><!--{$arrErr.price}--></span> 244 245 <!--{if $arrErr.product_id}--> 246 <span class="attention">※ 商品が選択されていません。</span> 249 247 <!--{/if}--> 248 250 249 <table class="list" id="order-edit-products"> 251 250 <tr> … … 258 257 </tr> 259 258 <!--{section name=cnt loop=$arrForm.quantity.value}--> 260 <!--{assign var= keyvalue="`$smarty.section.cnt.index`"}-->261 <tr> 262 <td> 263 <!--{$arrForm.product_code.value[$ key]|h}-->264 <input type="hidden" name="product_code[<!--{$ key}-->]" value="<!--{$arrForm.product_code.value[$key]}-->" id="product_code_<!--{$key}-->" />265 </td> 266 <td> 267 <!--{$arrForm.product_name.value[$ key]|h}-->/<!--{$arrForm.classcategory_name1.value[$key]|default:"(なし)"|h}-->/<!--{$arrForm.classcategory_name2.value[$key]|default:"(なし)"|h}-->268 <input type="hidden" name="product_name[<!--{$ key}-->]" value="<!--{$arrForm.product_name.value[$key]}-->" id="product_name_<!--{$key}-->" />269 <input type="hidden" name="classcategory_name1[<!--{$ key}-->]" value="<!--{$arrForm.classcategory_name1.value[$key]}-->" id="classcategory_name1_<!--{$key}-->" />270 <input type="hidden" name="classcategory_name2[<!--{$ key}-->]" value="<!--{$arrForm.classcategory_name2.value[$key]}-->" id="classcategory_name2_<!--{$key}-->" />259 <!--{assign var=product_index value="`$smarty.section.cnt.index`"}--> 260 <tr> 261 <td> 262 <!--{$arrForm.product_code.value[$product_index]|h}--> 263 <input type="hidden" name="product_code[<!--{$product_index}-->]" value="<!--{$arrForm.product_code.value[$product_index]|h}-->" id="product_code_<!--{$product_index}-->" /> 264 </td> 265 <td> 266 <!--{$arrForm.product_name.value[$product_index]|h}-->/<!--{$arrForm.classcategory_name1.value[$product_index]|default:"(なし)"|h}-->/<!--{$arrForm.classcategory_name2.value[$product_index]|default:"(なし)"|h}--> 267 <input type="hidden" name="product_name[<!--{$product_index}-->]" value="<!--{$arrForm.product_name.value[$product_index]|h}-->" id="product_name_<!--{$product_index}-->" /> 268 <input type="hidden" name="classcategory_name1[<!--{$product_index}-->]" value="<!--{$arrForm.classcategory_name1.value[$product_index]|h}-->" id="classcategory_name1_<!--{$product_index}-->" /> 269 <input type="hidden" name="classcategory_name2[<!--{$product_index}-->]" value="<!--{$arrForm.classcategory_name2.value[$product_index]|h}-->" id="classcategory_name2_<!--{$product_index}-->" /> 271 270 <br /> 272 <a class="btn-normal" href="javascript:;" name="change" onclick="win03('<!--{$smarty.const.ROOT_URLPATH}--><!--{$smarty.const.ADMIN_DIR}-->order/product_select.php?no=<!--{$ key}--><!--{if $tpl_order_id}-->&order_id=<!--{$tpl_order_id}--><!--{/if}-->', 'search', '615', '500'); return false;">変更</a>273 <!--{if $product_count> 1}-->274 <a class="btn-normal" href="javascript:;" name="delete" onclick="fnSetFormVal('form1', 'delete_no', <!--{$ key}-->); fnModeSubmit('delete_product','anchor_key','order_products'); return false;">削除</a>271 <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> 272 <!--{if count($arrForm.quantity.value) > 1}--> 273 <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> 275 274 <!--{/if}--> 276 <input type="hidden" name="product_type_id[<!--{$key}-->]" value="<!--{$arrForm.product_type_id.value[$key]}-->" id="product_type_id_<!--{$key}-->" /> 277 <input type="hidden" name="product_id[<!--{$key}-->]" value="<!--{$arrForm.product_id.value[$key]}-->" id="product_id_<!--{$key}-->" /> 278 <input type="hidden" name="product_class_id[<!--{$key}-->]" value="<!--{$arrForm.product_class_id.value[$key]}-->" id="product_class_id_<!--{$key}-->" /> 279 <input type="hidden" name="point_rate[<!--{$key}-->]" value="<!--{$arrForm.point_rate.value[$key]}-->" id="point_rate_<!--{$key}-->" /> 280 </td> 281 <td align="center"><input type="text" name="price[<!--{$key}-->]" value="<!--{$arrForm.price.value[$key]|h}-->" size="6" class="box6" maxlength="<!--{$arrForm.price.length}-->" id="price_<!--{$key}-->"/> 円</td> 282 <td align="center"><input type="text" name="quantity[<!--{$key}-->]" value="<!--{$arrForm.quantity.value[$key]|h}-->" size="3" class="box3" maxlength="<!--{$arrForm.quantity.length}-->" id="quantity_<!--{$key}-->" /></td> 283 <!--{assign var=price value=`$arrForm.price.value[$key]`}--> 284 <!--{assign var=quantity value=`$arrForm.quantity.value[$key]`}--> 275 <input type="hidden" name="product_type_id[<!--{$product_index}-->]" value="<!--{$arrForm.product_type_id.value[$product_index]|h}-->" id="product_type_id_<!--{$product_index}-->" /> 276 <input type="hidden" name="product_id[<!--{$product_index}-->]" value="<!--{$arrForm.product_id.value[$product_index]|h}-->" id="product_id_<!--{$product_index}-->" /> 277 <input type="hidden" name="product_class_id[<!--{$product_index}-->]" value="<!--{$arrForm.product_class_id.value[$product_index]|h}-->" id="product_class_id_<!--{$product_index}-->" /> 278 <input type="hidden" name="point_rate[<!--{$product_index}-->]" value="<!--{$arrForm.point_rate.value[$product_index]|h}-->" id="point_rate_<!--{$product_index}-->" /> 279 </td> 280 <td align="center"> 281 <!--{assign var=key value="price"}--> 282 <span class="attention"><!--{$arrErr[$key][$product_index]}--></span> 283 <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}-->" /> 円 284 </td> 285 <td align="center"> 286 <!--{assign var=key value="quantity"}--> 287 <span class="attention"><!--{$arrErr[$key][$product_index]}--></span> 288 <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}-->" /> 289 </td> 290 <!--{assign var=price value=`$arrForm.price.value[$product_index]`}--> 291 <!--{assign var=quantity value=`$arrForm.quantity.value[$product_index]`}--> 285 292 <td class="right"><!--{$price|sfCalcIncTax:$arrInfo.tax:$arrInfo.tax_rule|number_format}--> 円</td> 286 293 <td class="right"><!--{$price|sfCalcIncTax:$arrInfo.tax:$arrInfo.tax_rule|sfMultiply:$quantity|number_format}-->円</td> … … 376 383 <!--{assign var=shipping_index value="`$smarty.section.shipping.index`"}--> 377 384 378 <!--{assign var=shipping_id value=$arrShippingIds[$shipping_index]}-->379 385 <!--{if $arrForm.shipping_quantity.value > 1}--> 380 386 <h3>お届け先<!--{$smarty.section.shipping.iteration}--></h3> 381 387 <!--{/if}--> 382 <input type="hidden" name="shipping_id_<!--{$shipping_id}-->" value="<!--{$shipping_id}-->" id="shipping_id_<!--{$shipping_id}-->" /> 388 <!--{assign var=key value="shipping_id"}--> 389 <input type="hidden" name="<!--{$key}-->[<!--{$shipping_index}-->]" value="<!--{$arrForm[$key].value[$shipping_index]|default:"0"|h}-->" id="<!--{$key}-->_<!--{$shipping_index}-->" /> 383 390 <!--{if $arrForm.shipping_quantity.value > 1}--> 384 <!--{assign var=product_quantity value="shipping_product_quantity _`$shipping_id`"}-->385 <input type="hidden" name="<!--{$product_quantity}--> " value="<!--{$arrForm[$product_quantity].value|h}-->" />386 387 <!--{if $arrForm[$product_quantity].value > 0}-->391 <!--{assign var=product_quantity value="shipping_product_quantity"}--> 392 <input type="hidden" name="<!--{$product_quantity}-->[<!--{$shipping_index}-->]" value="<!--{$arrForm[$product_quantity].value[$shipping_index]|h}-->" /> 393 394 <!--{if $arrForm[$product_quantity].value[$shipping_index] > 0}--> 388 395 <table class="list" id="order-edit-products"> 389 396 <tr> … … 393 400 <th class="qty">数量</th> 394 401 </tr> 395 <!--{section name=item loop=$arrForm[$product_quantity].value }-->402 <!--{section name=item loop=$arrForm[$product_quantity].value[$shipping_index]}--> 396 403 <!--{assign var=item_index value="`$smarty.section.item.index`"}--> 397 <!--{assign var=product_class_id value=$arrProductClassIds[$shipping_index][$item_index]}-->398 404 399 405 <tr> 400 406 <td> 401 <!--{assign var=key value=" product_class_id_`$shipping_id`_`$product_class_id`"}-->402 <input type="hidden" name="<!--{$key}--> " value="<!--{$arrForm[$key].value|h}-->" />403 <!--{assign var=key value=" product_code_`$shipping_id`_`$product_class_id`"}-->404 <input type="hidden" name="<!--{$key}--> " value="<!--{$arrForm[$key].value|h}-->" />405 <!--{$arrForm[$key].value |h}-->407 <!--{assign var=key value="shipment_product_class_id"}--> 408 <input type="hidden" name="<!--{$key}-->[<!--{$shipping_index}-->][<!--{$item_index}-->]" value="<!--{$arrForm[$key].value[$shipping_index][$item_index]|h}-->" /> 409 <!--{assign var=key value="shipment_product_code"}--> 410 <input type="hidden" name="<!--{$key}-->[<!--{$shipping_index}-->][<!--{$item_index}-->]" value="<!--{$arrForm[$key].value[$shipping_index][$item_index]|h}-->" /> 411 <!--{$arrForm[$key].value[$shipping_index][$item_index]|h}--> 406 412 </td> 407 413 <td> 408 <!--{assign var=key1 value=" product_name_`$shipping_id`_`$product_class_id`"}-->409 <!--{assign var=key2 value=" classcategory_name1_`$shipping_id`_`$product_class_id`"}-->410 <!--{assign var=key3 value=" classcategory_name2_`$shipping_id`_`$product_class_id`"}-->411 <input type="hidden" name="<!--{$key1}--> " value="<!--{$arrForm[$key1].value|h}-->" />412 <input type="hidden" name="<!--{$key2}--> " value="<!--{$arrForm[$key2].value|h}-->" />413 <input type="hidden" name="<!--{$key3}--> " value="<!--{$arrForm[$key3].value|h}-->" />414 <!--{$arrForm[$key1].value |h}-->/<!--{$arrForm[$key2].value|default:"(なし)"|h}-->/<!--{$arrForm[$key3].value|default:"(なし)"|h}-->414 <!--{assign var=key1 value="shipment_product_name"}--> 415 <!--{assign var=key2 value="shipment_classcategory_name1"}--> 416 <!--{assign var=key3 value="shipment_classcategory_name2"}--> 417 <input type="hidden" name="<!--{$key1}-->[<!--{$shipping_index}-->][<!--{$item_index}-->]" value="<!--{$arrForm[$key1].value[$shipping_index][$item_index]|h}-->" /> 418 <input type="hidden" name="<!--{$key2}-->[<!--{$shipping_index}-->][<!--{$item_index}-->]" value="<!--{$arrForm[$key2].value[$shipping_index][$item_index]|h}-->" /> 419 <input type="hidden" name="<!--{$key3}-->[<!--{$shipping_index}-->][<!--{$item_index}-->]" value="<!--{$arrForm[$key3].value[$shipping_index][$item_index]|h}-->" /> 420 <!--{$arrForm[$key1].value[$shipping_index][$item_index]|h}-->/<!--{$arrForm[$key2].value[$shipping_index][$item_index]|default:"(なし)"|h}-->/<!--{$arrForm[$key3].value[$shipping_index][$item_index]|default:"(なし)"|h}--> 415 421 </td> 416 422 <td class="right"> 417 <!--{assign var=key value=" price_`$shipping_id`_`$product_class_id`"}-->418 <!--{$arrForm[$key].value |sfCalcIncTax:$arrInfo.tax:$arrInfo.tax_rule|number_format}-->円419 <input type="hidden" name="<!--{$key}--> " value="<!--{$arrForm[$key].value|h}-->" />423 <!--{assign var=key value="shipment_price"}--> 424 <!--{$arrForm[$key].value[$shipping_index][$item_index]|sfCalcIncTax:$arrInfo.tax:$arrInfo.tax_rule|number_format}-->円 425 <input type="hidden" name="<!--{$key}-->[<!--{$shipping_index}-->][<!--{$item_index}-->]" value="<!--{$arrForm[$key].value[$shipping_index][$item_index]|h}-->" /> 420 426 </td> 421 427 <td class="right"> 422 <!--{assign var=key value=" quantity_`$shipping_id`_`$product_class_id`"}-->423 <!--{$arrForm[$key].value |h}-->424 <input type="hidden" name="<!--{$key}--> " value="<!--{$arrForm[$key].value|h}-->" />428 <!--{assign var=key value="shipment_quantity"}--> 429 <!--{$arrForm[$key].value[$shipping_index][$item_index]|h}--> 430 <input type="hidden" name="<!--{$key}-->[<!--{$shipping_index}-->][<!--{$item_index}-->]" value="<!--{$arrForm[$key].value[$shipping_index][$item_index]|h}-->" /> 425 431 </td> 426 432 </tr> … … 434 440 <th>お名前</th> 435 441 <td> 436 <!--{assign var=key1 value="shipping_name01 _`$shipping_id`"}-->437 <!--{assign var=key2 value="shipping_name02 _`$shipping_id`"}-->438 <span class="attention"><!--{$arrErr[$key1] }--><!--{$arrErr[$key2]}--></span>439 <input type="text" name="<!--{$key1}--> " value="<!--{$arrForm[$key1].value|h}-->" maxlength="<!--{$arrForm[$key1].length}-->" style="<!--{$arrErr[$key1]|sfGetErrorColor}-->" size="15" class="box15" />440 <input type="text" name="<!--{$key2}--> " value="<!--{$arrForm[$key2].value|h}-->" maxlength="<!--{$arrForm[$key2].length}-->" style="<!--{$arrErr[$key2]|sfGetErrorColor}-->" size="15" class="box15" />442 <!--{assign var=key1 value="shipping_name01"}--> 443 <!--{assign var=key2 value="shipping_name02"}--> 444 <span class="attention"><!--{$arrErr[$key1][$shipping_index]}--><!--{$arrErr[$key2][$shipping_index]}--></span> 445 <input type="text" name="<!--{$key1}-->[<!--{$shipping_index}-->]" value="<!--{$arrForm[$key1].value[$shipping_index]|h}-->" maxlength="<!--{$arrForm[$key1].length}-->" style="<!--{$arrErr[$key1][$shipping_index]|sfGetErrorColor}-->" size="15" class="box15" /> 446 <input type="text" name="<!--{$key2}-->[<!--{$shipping_index}-->]" value="<!--{$arrForm[$key2].value[$shipping_index]|h}-->" maxlength="<!--{$arrForm[$key2].length}-->" style="<!--{$arrErr[$key2][$shipping_index]|sfGetErrorColor}-->" size="15" class="box15" /> 441 447 </td> 442 448 </tr> … … 444 450 <th>お名前(カナ)</th> 445 451 <td> 446 <!--{assign var=key1 value="shipping_kana01 _`$shipping_id`"}-->447 <!--{assign var=key2 value="shipping_kana02 _`$shipping_id`"}-->448 <span class="attention"><!--{$arrErr[$key1] }--><!--{$arrErr[$key2]}--></span>449 <input type="text" name="<!--{$key1}--> " value="<!--{$arrForm[$key1].value|h}-->" maxlength="<!--{$arrForm[$key1].length}-->" style="<!--{$arrErr[$key1]|sfGetErrorColor}-->" size="15" class="box15" />450 <input type="text" name="<!--{$key2}--> " value="<!--{$arrForm[$key2].value|h}-->" maxlength="<!--{$arrForm[$key2].length}-->" style="<!--{$arrErr[$key2]|sfGetErrorColor}-->" size="15" class="box15" />452 <!--{assign var=key1 value="shipping_kana01"}--> 453 <!--{assign var=key2 value="shipping_kana02"}--> 454 <span class="attention"><!--{$arrErr[$key1][$shipping_index]}--><!--{$arrErr[$key2][$shipping_index]}--></span> 455 <input type="text" name="<!--{$key1}-->[<!--{$shipping_index}-->]" value="<!--{$arrForm[$key1].value[$shipping_index]|h}-->" maxlength="<!--{$arrForm[$key1].length}-->" style="<!--{$arrErr[$key1][$shipping_index]|sfGetErrorColor}-->" size="15" class="box15" /> 456 <input type="text" name="<!--{$key2}-->[<!--{$shipping_index}-->]" value="<!--{$arrForm[$key2].value[$shipping_index]|h}-->" maxlength="<!--{$arrForm[$key2].length}-->" style="<!--{$arrErr[$key2][$shipping_index]|sfGetErrorColor}-->" size="15" class="box15" /> 451 457 </td> 452 458 </tr> … … 454 460 <th>TEL</th> 455 461 <td> 456 <!--{assign var=key1 value="shipping_tel01 _`$shipping_id`"}-->457 <!--{assign var=key2 value="shipping_tel02 _`$shipping_id`"}-->458 <!--{assign var=key3 value="shipping_tel03 _`$shipping_id`"}-->459 <span class="attention"><!--{$arrErr[$key1] }--></span>460 <span class="attention"><!--{$arrErr[$key2] }--></span>461 <span class="attention"><!--{$arrErr[$key3] }--></span>462 <input type="text" name="<!--{$ arrForm[$key1].keyname}-->" value="<!--{$arrForm[$key1].value|h}-->" maxlength="<!--{$arrForm[$key1].length}-->" style="<!--{$arrErr[$key1]|sfGetErrorColor}-->" size="6" class="box6" /> -463 <input type="text" name="<!--{$ arrForm[$key2].keyname}-->" value="<!--{$arrForm[$key2].value|h}-->" maxlength="<!--{$arrForm[$key2].length}-->" style="<!--{$arrErr[$key2]|sfGetErrorColor}-->" size="6" class="box6" /> -464 <input type="text" name="<!--{$ arrForm[$key3].keyname}-->" value="<!--{$arrForm[$key3].value|h}-->" maxlength="<!--{$arrForm[$key3].length}-->" style="<!--{$arrErr[$key3]|sfGetErrorColor}-->" size="6" class="box6" />462 <!--{assign var=key1 value="shipping_tel01"}--> 463 <!--{assign var=key2 value="shipping_tel02"}--> 464 <!--{assign var=key3 value="shipping_tel03"}--> 465 <span class="attention"><!--{$arrErr[$key1][$shipping_index]}--></span> 466 <span class="attention"><!--{$arrErr[$key2][$shipping_index]}--></span> 467 <span class="attention"><!--{$arrErr[$key3][$shipping_index]}--></span> 468 <input type="text" name="<!--{$key1}-->[<!--{$shipping_index}-->]" value="<!--{$arrForm[$key1].value[$shipping_index]|h}-->" maxlength="<!--{$arrForm[$key1].length}-->" style="<!--{$arrErr[$key1]|sfGetErrorColor}-->" size="6" class="box6" /> - 469 <input type="text" name="<!--{$key2}-->[<!--{$shipping_index}-->]" value="<!--{$arrForm[$key2].value[$shipping_index]|h}-->" maxlength="<!--{$arrForm[$key2].length}-->" style="<!--{$arrErr[$key2]|sfGetErrorColor}-->" size="6" class="box6" /> - 470 <input type="text" name="<!--{$key3}-->[<!--{$shipping_index}-->]" value="<!--{$arrForm[$key3].value[$shipping_index]|h}-->" maxlength="<!--{$arrForm[$key3].length}-->" style="<!--{$arrErr[$key3]|sfGetErrorColor}-->" size="6" class="box6" /> 465 471 </td> 466 472 </tr> … … 468 474 <th>住所</th> 469 475 <td> 470 <!--{assign var=key1 value="shipping_zip01 _`$shipping_id`"}-->471 <!--{assign var=key2 value="shipping_zip02 _`$shipping_id`"}-->472 <span class="attention"><!--{$arrErr[$key1] }--><!--{$arrErr[$key2]}--></span>476 <!--{assign var=key1 value="shipping_zip01"}--> 477 <!--{assign var=key2 value="shipping_zip02"}--> 478 <span class="attention"><!--{$arrErr[$key1][$shipping_index]}--><!--{$arrErr[$key2][$shipping_index]}--></span> 473 479 〒 474 <input type="text" name="<!--{$key1}--> " value="<!--{$arrForm[$key1].value|h}-->" maxlength="<!--{$arrForm[$key1].length}-->" style="<!--{$arrErr[$key1]|sfGetErrorColor}-->" size="6" class="box6" />480 <input type="text" name="<!--{$key1}-->[<!--{$shipping_index}-->]" value="<!--{$arrForm[$key1].value[$shipping_index]|h}-->" maxlength="<!--{$arrForm[$key1].length}-->" style="<!--{$arrErr[$key1][$shipping_index]|sfGetErrorColor}-->" size="6" class="box6" /> 475 481 - 476 <input type="text" name="<!--{$key2}--> " value="<!--{$arrForm[$key2].value|h}-->" maxlength="<!--{$arrForm[$key2].length}-->" style="<!--{$arrErr[$key2]|sfGetErrorColor}-->" size="6" class="box6" />482 <input type="text" name="<!--{$key2}-->[<!--{$shipping_index}-->]" value="<!--{$arrForm[$key2].value[$shipping_index]|h}-->" maxlength="<!--{$arrForm[$key2].length}-->" style="<!--{$arrErr[$key2][$shipping_index]|sfGetErrorColor}-->" size="6" class="box6" /> 477 483 <a class="btn-normal" href="javascript:;" name="address_input" onclick="fnCallAddress('<!--{$smarty.const.INPUT_ZIP_URLPATH}-->', 'shipping_zip01', 'shipping_zip02', 'shipping_pref', 'shipping_addr01'); return false;">住所入力</a><br /> 478 <!--{assign var=key value="shipping_pref _`$shipping_id`"}-->479 <span class="attention"><!--{$arrErr[$key] }--></span>480 <select class="top" name="<!--{$key}--> " style="<!--{$arrErr[$key]|sfGetErrorColor}-->">484 <!--{assign var=key value="shipping_pref"}--> 485 <span class="attention"><!--{$arrErr[$key][$shipping_index]}--></span> 486 <select class="top" name="<!--{$key}-->[<!--{$shipping_index}-->]" style="<!--{$arrErr[$key]|sfGetErrorColor}-->"> 481 487 <option value="" selected="">都道府県を選択</option> 482 <!--{html_options options=$arrPref selected=$arrForm[$key].value }-->488 <!--{html_options options=$arrPref selected=$arrForm[$key].value[$shipping_index]}--> 483 489 </select><br /> 484 <!--{assign var=key value="shipping_addr01 _`$shipping_id`"}-->485 <span class="attention"><!--{$arrErr[$key] }--></span>486 <input type="text" name="<!--{$key}--> " value="<!--{$arrForm[$key].value|h}-->" size="60" class="box60 top" maxlength="<!--{$arrForm[$key].length}-->" style="<!--{$arrErr[$key]|sfGetErrorColor}-->" /><br />487 <!--{assign var=key value="shipping_addr02 _`$shipping_id`"}-->488 <span class="attention"><!--{$arrErr[$key] }--></span>489 <input type="text" name="<!--{$key}--> " value="<!--{$arrForm[$key].value|h}-->" size="60" class="box60" maxlength="<!--{$arrForm[$key].length}-->" style="<!--{$arrErr[$key]|sfGetErrorColor}-->" />490 <!--{assign var=key value="shipping_addr01"}--> 491 <span class="attention"><!--{$arrErr[$key][$shipping_index]}--></span> 492 <input type="text" name="<!--{$key}-->[<!--{$shipping_index}-->]" value="<!--{$arrForm[$key].value[$shipping_index]|h}-->" size="60" class="box60 top" maxlength="<!--{$arrForm[$key].length}-->" style="<!--{$arrErr[$key][$shipping_index]|sfGetErrorColor}-->" /><br /> 493 <!--{assign var=key value="shipping_addr02"}--> 494 <span class="attention"><!--{$arrErr[$key][$shipping_index]}--></span> 495 <input type="text" name="<!--{$key}-->[<!--{$shipping_index}-->]" value="<!--{$arrForm[$key].value[$shipping_index]|h}-->" size="60" class="box60" maxlength="<!--{$arrForm[$key].length}-->" style="<!--{$arrErr[$key][$shipping_index]|sfGetErrorColor}-->" /> 490 496 </td> 491 497 </tr> … … 493 499 <th>お届け時間</th> 494 500 <td> 495 <!--{assign var=key value="time_id _`$shipping_id`"}-->496 <span class="attention"><!--{$arrErr[$key] }--></span>497 <select name="<!--{$key}--> " style="<!--{$arrErr[$key]|sfGetErrorColor}-->">501 <!--{assign var=key value="time_id"}--> 502 <span class="attention"><!--{$arrErr[$key][$shipping_index]}--></span> 503 <select name="<!--{$key}-->[<!--{$shipping_index}-->]" style="<!--{$arrErr[$key]|sfGetErrorColor}-->"> 498 504 <option value="" selected="0">指定無し</option> 499 <!--{html_options options=$arrDelivTime selected=$arrForm[$key].value }-->505 <!--{html_options options=$arrDelivTime selected=$arrForm[$key].value[$shipping_index]}--> 500 506 </select> 501 507 </td> … … 504 510 <th>お届け日</th> 505 511 <td> 506 <!--{assign var=key1 value="shipping_date_year _`$shipping_id`"}-->507 <!--{assign var=key2 value="shipping_date_month _`$shipping_id`"}-->508 <!--{assign var=key3 value="shipping_date_day _`$shipping_id`"}-->512 <!--{assign var=key1 value="shipping_date_year"}--> 513 <!--{assign var=key2 value="shipping_date_month"}--> 514 <!--{assign var=key3 value="shipping_date_day"}--> 509 515 <span class="attention"><!--{$arrErr[$key1]}--></span> 510 516 <span class="attention"><!--{$arrErr[$key2]}--></span> 511 517 <span class="attention"><!--{$arrErr[$key3]}--></span> 512 <select name="<!--{$key1}--> " style="<!--{$arrErr[$key1]|sfGetErrorColor}-->">513 <!--{html_options options=$arrYearShippingDate selected=$arrForm[$key1].value |default:""}-->518 <select name="<!--{$key1}-->[<!--{$shipping_index}-->]" style="<!--{$arrErr[$key1]|sfGetErrorColor}-->"> 519 <!--{html_options options=$arrYearShippingDate selected=$arrForm[$key1].value[$shipping_index]|default:""}--> 514 520 </select>年 515 <select name="<!--{$key2}--> " style="<!--{$arrErr[$key2]|sfGetErrorColor}-->">516 <!--{html_options options=$arrMonthShippingDate selected=$arrForm[$key2].value |default:""}-->521 <select name="<!--{$key2}-->[<!--{$shipping_index}-->]" style="<!--{$arrErr[$key2]|sfGetErrorColor}-->"> 522 <!--{html_options options=$arrMonthShippingDate selected=$arrForm[$key2].value[$shipping_index]|default:""}--> 517 523 </select>月 518 <select name="<!--{$key3}--> " style="<!--{$arrErr[$key3]|sfGetErrorColor}-->">519 <!--{html_options options=$arrDayShippingDate selected=$arrForm[$key3].value |default:""}-->524 <select name="<!--{$key3}-->[<!--{$shipping_index}-->]" style="<!--{$arrErr[$key3]|sfGetErrorColor}-->"> 525 <!--{html_options options=$arrDayShippingDate selected=$arrForm[$key3].value[$shipping_index]|default:""}--> 520 526 </select>日 521 527 </td> … … 526 532 <!--▲お届け先情報ここまで--> 527 533 534 <a name="deliv"></a> 528 535 <table class="form"> 529 536 <tr> 537 <th>配送業者<br /><span class="attention">(配送業者の変更に伴う送料の変更は手動にてお願いします。)</span></th> 538 <td> 539 <!--{assign var=key value="deliv_id"}--> 540 <span class="attention"><!--{$arrErr[$key]}--></span> 541 <select name="<!--{$key}-->" style="<!--{$arrErr[$key]|sfGetErrorColor}-->" onchange="fnModeSubmit('deliv','anchor_key','deliv');"> 542 <option value="" selected="">選択してください</option> 543 <!--{html_options options=$arrDeliv selected=$arrForm[$key].value}--> 544 </select> 545 </td> 546 </tr> 547 <tr> 530 548 <th>お支払方法<br /><span class="attention">(お支払方法の変更に伴う手数料の変更は手動にてお願いします。)</span></th> 531 549 <td> 532 550 <!--{assign var=key value="payment_id"}--> 533 551 <span class="attention"><!--{$arrErr[$key]}--></span> 534 <select name="<!--{$key}-->" style="<!--{$arrErr[$key]|sfGetErrorColor}-->" onchange="fnModeSubmit('payment','anchor_key',' order_products');">552 <select name="<!--{$key}-->" style="<!--{$arrErr[$key]|sfGetErrorColor}-->" onchange="fnModeSubmit('payment','anchor_key','deliv');"> 535 553 <option value="" selected="">選択してください</option> 536 554 <!--{html_options options=$arrPayment selected=$arrForm[$key].value}--> -
branches/version-2_5-dev/data/Smarty/templates/admin/order/multiple.tpl
r20116 r20180 29 29 $(function() { 30 30 31 var product_class_id = window.opener.jQuery('input[id^=product_class_id _]');32 var product_code = window.opener.jQuery('input[id^=product_code _]');33 var product_name = window.opener.jQuery('input[id^=product_name _]');34 var classcategory_name1 = window.opener.jQuery('input[id^=classcategory_name1 _]');35 var classcategory_name2 = window.opener.jQuery('input[id^=classcategory_name2 _]');36 var price = window.opener.jQuery('input[id^=price _]');37 var quantity = window.opener.jQuery('input[id^=quantity _]');38 var shipping_id = window.opener.jQuery('input[id^=shipping_id _]');39 var shipping_name01 = window.opener.jQuery('input[name^=shipping_name01 _]');40 var shipping_name02 = window.opener.jQuery('input[name^=shipping_name02 _]');41 var shipping_pref = window.opener.jQuery('select[name^=shipping_pref _] option:selected');42 var shipping_addr01 = window.opener.jQuery('input[name^=shipping_addr01 _]');43 var shipping_addr02 = window.opener.jQuery('input[name^=shipping_addr02 _]');31 var product_class_id = window.opener.jQuery('input[id^=product_class_id]'); 32 var product_code = window.opener.jQuery('input[id^=product_code]'); 33 var product_name = window.opener.jQuery('input[id^=product_name]'); 34 var classcategory_name1 = window.opener.jQuery('input[id^=classcategory_name1]'); 35 var classcategory_name2 = window.opener.jQuery('input[id^=classcategory_name2]'); 36 var price = window.opener.jQuery('input[id^=price]'); 37 var quantity = window.opener.jQuery('input[id^=quantity]'); 38 var shipping_id = window.opener.jQuery('input[id^=shipping_id]'); 39 var shipping_name01 = window.opener.jQuery('input[name^=shipping_name01]'); 40 var shipping_name02 = window.opener.jQuery('input[name^=shipping_name02]'); 41 var shipping_pref = window.opener.jQuery('select[name^=shipping_pref] option:selected'); 42 var shipping_addr01 = window.opener.jQuery('input[name^=shipping_addr01]'); 43 var shipping_addr02 = window.opener.jQuery('input[name^=shipping_addr02]'); 44 44 45 45 var index = 0; … … 48 48 for (var j = 0; j < $(quantity[i]).val(); j++) { 49 49 50 // 表示商品名 51 var dispname = ''; 52 50 53 // 商品規格ID 51 54 var idfield = $('<input type="hidden" />') 52 .attr({'name': 'multiple_product_class_id ' + index})55 .attr({'name': 'multiple_product_class_id[' + index + ']'}) 53 56 .val($(product_class_id[i]).val()); 54 57 55 58 // 商品コード 56 59 var codefield = $('<input type="hidden" />') 57 .attr({'name': 'multiple_product_code ' + index})60 .attr({'name': 'multiple_product_code['+ index + ']'}) 58 61 .val($(product_code[i]).val()); 59 62 60 63 // 商品名 61 64 var namefield = $('<input type="hidden" />') 62 .attr({'name': 'multiple_product_name ' + index})65 .attr({'name': 'multiple_product_name[' + index + ']'}) 63 66 .val($(product_name[i]).val()); 67 dispname = $(product_name[i]).val(); 64 68 65 69 // 規格1 66 70 var class1field = $('<input type="hidden" />') 67 .attr({'name': 'multiple_classcategory_name1 ' + index})71 .attr({'name': 'multiple_classcategory_name1[' + index + ']'}) 68 72 .val($(classcategory_name1[i]).val()); 73 74 if ($(classcategory_name1[i]).val() != '') { 75 dispname += '<br />' + $(classcategory_name1[i]).val(); 76 } 69 77 70 78 // 規格2 71 79 var class2field = $('<input type="hidden" />') 72 .attr({'name': 'multiple_classcategory_name2 ' + index})80 .attr({'name': 'multiple_classcategory_name2[' + index + ']'}) 73 81 .val($(classcategory_name2[i]).val()); 82 83 if ($(classcategory_name2[i]).val() != '') { 84 dispname += '<br />' + $(classcategory_name2[i]).val(); 85 } 74 86 75 87 // 単価 76 88 var pricefield = $('<input type="hidden" />') 77 .attr({'name': 'multiple_price ' + index})89 .attr({'name': 'multiple_price[' + index + ']'}) 78 90 .val($(price[i]).val()); 79 91 … … 81 93 // 数量 82 94 var qfield = $('<input type="text" />') 83 .attr({'name': 'multiple_quantity ' + index,95 .attr({'name': 'multiple_quantity[' + index + ']', 84 96 'size': 4}) 85 97 .val(1); … … 96 108 97 109 // お届け先 98 var select = $('<select />').attr('name', 'multiple_shipping ' + index);110 var select = $('<select />').attr('name', 'multiple_shipping_id[' + index + ']'); 99 111 var s = $('<td />').append(select); 100 112 … … 102 114 var tr = $('<tr />') 103 115 .append($('<td />').text($(product_code[i]).val())) 104 .append($('<td />'). text($(product_name[i]).val()))116 .append($('<td />').html(dispname)) 105 117 .append(q) 106 118 .append(s); … … 133 145 $('input[name^=multiple_], select[name^=multiple_]').each(function() { 134 146 // TODO タグをベタ書きにしないと, innerHTML で value が空になってしまう 135 $(div).append('<input type=" text" name="'147 $(div).append('<input type="hidden" name="' 136 148 + $(this).attr('name') 137 149 + '" value="' + $(this).val() + '" />'); 138 150 }); 139 $(div).append('<input type="hidden" name="multiple_size" value="' + $('input[name^=multiple_product_class_id]').length + '" />');140 151 141 152 // window.opener に対する append は IE で動作しない -
branches/version-2_5-dev/data/class/SC_FormParam.php
r20160 r20180 242 242 * SC_CheckError::doFunc() を再帰的に実行する. 243 243 * 244 * 再帰実行した場合は, エラーメッセージを多次元配列で格納する 245 * 246 * TODO 二次元以上のエラーメッセージへの対応 247 * 244 248 * @param string $disp_name 表示名 245 249 * @param string $func チェック種別 … … 248 252 * @param string $error_key エラーメッセージを格納する配列のキー 249 253 * @param integer $length チェック対象の値の長さ 254 * @param integer $depth 再帰実行した場合の深度 255 * @param integer $recursion_count 再帰実行した回数 250 256 * @return void 251 257 */ 252 258 function recursionCheck($disp_name, $func, $value, &$arrErr, $error_key, 253 $length = 0 ) {259 $length = 0, $depth = 0, $recursion_count = 0) { 254 260 if (is_array($value)) { 261 $depth++; 262 $recursion_count = 0; 255 263 foreach ($value as $in) { 256 264 $this->recursionCheck($disp_name, $func, $in, $arrErr, $error_key, 257 $length); 265 $length, $depth, $recursion_count); 266 $recursion_count++; 258 267 } 259 268 } else { 260 $objSubErr = new SC_CheckError(array(0 => $value)); 261 $objSubErr->doFunc(array($disp_name, 0, $length), array($func)); 262 if(count($objSubErr->arrErr) > 0) { 263 foreach($objSubErr->arrErr as $mess) { 264 if($mess != "") { 265 $arrErr[$error_key] .= $mess; 269 $objErr = new SC_CheckError(array(0 => $value)); 270 $objErr->doFunc(array($disp_name, 0, $length), array($func)); 271 if (!SC_Utils_Ex::isBlank($objErr->arrErr)) { 272 foreach($objErr->arrErr as $message) { 273 274 if(!SC_Utils_Ex::isBlank($message)) { 275 // 再帰した場合は多次元配列のエラーメッセージを生成 276 $error_var = '$arrErr[$error_key]'; 277 for ($i = 0; $i < $depth; $i++) { 278 // FIXME 二次元以上の対応 279 $error_var .= '[' . $recursion_count . ']'; 280 } 281 eval($error_var . ' = $message;'); 266 282 } 267 283 } … … 270 286 } 271 287 272 // 入力文字の変換 288 /** 289 * フォームの入力パラメータに応じて, 再帰的に mb_convert_kana 関数を実行する. 290 * 291 * @return voi 292 * @see mb_convert_kana 293 */ 273 294 function convParam() { 274 /*275 * 文字列の変換276 * K : 「半角(ハンカク)片仮名」を「全角片仮名」に変換277 * C : 「全角ひら仮名」を「全角かた仮名」に変換278 * V : 濁点付きの文字を一文字に変換。"K","H"と共に使用します279 * n : 「全角」数字を「半角(ハンカク)」に変換280 * a : 「全角」英字を「半角」英字に変換281 */282 295 $cnt = 0; 283 296 foreach ($this->keyname as $val) { 284 297 if (!isset($this->param[$cnt])) $this->param[$cnt] = ""; 285 286 if(!is_array($this->param[$cnt])) { 287 if($this->convert[$cnt] != "") { 288 $this->param[$cnt] = mb_convert_kana($this->param[$cnt] ,$this->convert[$cnt]); 289 } 290 } else { 291 $max = count($this->param[$cnt]); 292 for($i = 0; $i < $max; $i++) { 293 if($this->convert[$cnt] != "") { 294 $this->param[$cnt][$i] = mb_convert_kana($this->param[$cnt][$i] ,$this->convert[$cnt]); 295 } 296 } 297 } 298 $cnt++; 298 $this->recursionConvParam($this->param[$cnt], $this->convert[$cnt]); 299 $cnt++; 300 } 301 } 302 303 /** 304 * 再帰的に mb_convert_kana を実行する. 305 * 306 * @param mixed $value 変換する値. 配列の場合は再帰的に実行する. 307 * @param string $convert mb_convert_kana の変換オプション 308 */ 309 function recursionConvParam(&$value, $convert) { 310 if (is_array($value)) { 311 foreach (array_keys($value) as $key) { 312 $this->recursionConvParam($value[$key], $convert); 313 } 314 } else { 315 if (!SC_Utils_Ex::isBlank($value)) { 316 $value = mb_convert_kana($value, $convert); 317 } 299 318 } 300 319 } … … 417 436 function trimParam($has_wide_space = true) { 418 437 $cnt = 0; 419 $pattern = '/^[ \r\n\t]*(.*?)[ \r\n\t]*$/u';420 438 foreach ($this->keyname as $val) { 421 439 if (!isset($this->param[$cnt])) $this->param[$cnt] = ""; 422 423 if (!is_array($this->param[$cnt])) { 440 $this->recursionTrim($this->param[$cnt], $has_wide_space); 441 $cnt++; 442 } 443 } 444 445 /** 446 * 再帰的に入力パラメータの先頭及び末尾にある空白文字を削除する. 447 * 448 * @param mixed $value 変換する値. 配列の場合は再帰的に実行する. 449 * @param boolean $has_wide_space 全角空白も削除する場合 true 450 * @return void 451 */ 452 function recursionTrim(&$value, $has_wide_space = true) { 453 $pattern = '/^[ \r\n\t]*(.*?)[ \r\n\t]*$/u'; 454 if (is_array($value)) { 455 foreach (array_keys($value) as $key) { 456 $this->recursionTrim($value[$key], $convert); 457 } 458 } else { 459 if (!SC_Utils_Ex::isBlank($value)) { 424 460 if ($has_wide_space) { 425 $this->param[$cnt] = preg_replace($pattern, '$1', $this->param[$cnt]); 426 } 427 $this->param[$cnt] = trim($this->param[$cnt]); 428 } else { 429 $max = count($this->param[$cnt]); 430 // XXX foreach の方が良い? 431 for ($i = 0; $i < $max; $i++) { 432 if ($has_wide_space) { 433 $this->param[$cnt][$i] = preg_replace($pattern, '$1', $this->param[$cnt][$i]); 434 } 435 $this->param[$cnt][$i] = trim($this->param[$cnt][$i]); 436 } 437 } 438 $cnt++; 461 $value = preg_replace($pattern, '$1', $value); 462 } 463 $value = trim($value); 464 } 439 465 } 440 466 } -
branches/version-2_5-dev/data/class/helper/SC_Helper_DB.php
r20171 r20180 1368 1368 1369 1369 /** 1370 * 受注の名称列を更新する1371 *1372 * FIXME1373 *1374 * @param integer $order_id 更新対象の注文番号1375 * @param boolean $temp_table 更新対象は「受注_Temp」か1376 * @static1377 */1378 function sfUpdateOrderNameCol($order_id, $temp_table = false) {1379 $objQuery =& SC_Query::getSingletonInstance();1380 1381 if ($temp_table) {1382 $tgt_table = 'dtb_order_temp';1383 $sql_where = 'WHERE order_temp_id = ?';1384 } else {1385 $tgt_table = 'dtb_order';1386 $sql_where = 'WHERE order_id = ?';1387 }1388 1389 $sql = <<< __EOS__1390 UPDATE1391 {$tgt_table}1392 SET1393 payment_method = (SELECT payment_method FROM dtb_payment WHERE payment_id = {$tgt_table}.payment_id)1394 ,deliv_time = (SELECT deliv_time FROM dtb_delivtime WHERE time_id = {$tgt_table}.deliv_time_id AND deliv_id = {$tgt_table}.deliv_id)1395 $sql_where1396 __EOS__;1397 1398 $objQuery->query($sql, array($order_id));1399 }1400 1401 /**1402 1370 * 店舗基本情報に基づいて税金額を返す 1403 1371 * … … 1437 1405 1438 1406 return SC_Utils_Ex::sfGetAddPoint($totalpoint, $use_point, $CONF['point_rate']); 1439 }1440 1441 /**1442 * 受注.対応状況の更新1443 *1444 * ・必ず呼び出し元でトランザクションブロックを開いておくこと。1445 *1446 * @param integer $orderId 注文番号1447 * @param integer|null $newStatus 対応状況 (null=変更無し)1448 * @param integer|null $newAddPoint 加算ポイント (null=変更無し)1449 * @param integer|null $newUsePoint 使用ポイント (null=変更無し)1450 * @param array $sqlval 更新後の値をリファレンスさせるためのパラメータ1451 * @return void1452 */1453 function sfUpdateOrderStatus($orderId, $newStatus = null, $newAddPoint = null, $newUsePoint = null) {1454 $objQuery =& SC_Query::getSingletonInstance();1455 1456 $arrOrderOld = $objQuery->getRow('status, add_point, use_point, customer_id', 'dtb_order', 'order_id = ?', array($orderId));1457 1458 // 対応状況が変更無しの場合、DB値を引き継ぐ1459 if (is_null($newStatus)) {1460 $newStatus = $arrOrderOld['status'];1461 }1462 1463 // 使用ポイント、DB値を引き継ぐ1464 if (is_null($newUsePoint)) {1465 $newUsePoint = $arrOrderOld['use_point'];1466 }1467 1468 // 加算ポイント、DB値を引き継ぐ1469 if (is_null($newAddPoint)) {1470 $newAddPoint = $arrOrderOld['add_point'];1471 }1472 1473 if (USE_POINT !== false) {1474 // 顧客.ポイントの加減値1475 $addCustomerPoint = 0;1476 1477 // ▼使用ポイント1478 // 変更前の対応状況が利用対象の場合、変更前の使用ポイント分を戻す1479 if (SC_Utils_Ex::sfIsUsePoint($arrOrderOld['status'])) {1480 $addCustomerPoint += $arrOrderOld['use_point'];1481 }1482 1483 // 変更後の対応状況が利用対象の場合、変更後の使用ポイント分を引く1484 if (SC_Utils_Ex::sfIsUsePoint($newStatus)) {1485 $addCustomerPoint -= $newUsePoint;1486 }1487 // ▲使用ポイント1488 1489 // ▼加算ポイント1490 // 変更前の対応状況が加算対象の場合、変更前の加算ポイント分を戻す1491 if (SC_Utils_Ex::sfIsAddPoint($arrOrderOld['status'])) {1492 $addCustomerPoint -= $arrOrderOld['add_point'];1493 }1494 1495 // 変更後の対応状況が加算対象の場合、変更後の加算ポイント分を足す1496 if (SC_Utils_Ex::sfIsAddPoint($newStatus)) {1497 $addCustomerPoint += $newAddPoint;1498 }1499 // ▲加算ポイント1500 1501 if ($addCustomerPoint != 0) {1502 // ▼顧客テーブルの更新1503 $sqlval = array();1504 $where = '';1505 $arrVal = array();1506 $arrRawSql = array();1507 $arrRawSqlVal = array();1508 1509 $sqlval['update_date'] = 'Now()';1510 $arrRawSql['point'] = 'point + ?';1511 $arrRawSqlVal[] = $addCustomerPoint;1512 $where .= 'customer_id = ?';1513 $arrVal[] = $arrOrderOld['customer_id'];1514 1515 $objQuery->update('dtb_customer', $sqlval, $where, $arrVal, $arrRawSql, $arrRawSqlVal);1516 // ▲顧客テーブルの更新1517 1518 // 顧客.ポイントをマイナスした場合、1519 if ($addCustomerPoint < 0) {1520 $sql = 'SELECT point FROM dtb_customer WHERE customer_id = ?';1521 $point = $objQuery->getOne($sql, array($arrOrderOld['customer_id']));1522 // 変更後の顧客.ポイントがマイナスの場合、1523 if ($point < 0) {1524 // ロールバック1525 $objQuery->rollback();1526 // エラー1527 SC_Utils_Ex::sfDispSiteError(LACK_POINT);1528 }1529 }1530 }1531 }1532 1533 // ▼受注テーブルの更新1534 if (empty($sqlval)) {1535 $sqlval = array();1536 }1537 1538 if (USE_POINT !== false) {1539 $sqlval['add_point'] = $newAddPoint;1540 $sqlval['use_point'] = $newUsePoint;1541 }1542 // ステータスが発送済みに変更の場合、発送日を更新1543 if ($arrOrderOld['status'] != ORDER_DELIV && $newStatus == ORDER_DELIV) {1544 $sqlval['commit_date'] = 'Now()';1545 }1546 // ステータスが入金済みに変更の場合、入金日を更新1547 elseif ($arrOrderOld['status'] != ORDER_PRE_END && $newStatus == ORDER_PRE_END) {1548 $sqlval['payment_date'] = 'Now()';1549 }1550 1551 $sqlval['status'] = $newStatus;1552 $sqlval['update_date'] = 'Now()';1553 1554 $cols = $objQuery->listTableFields('dtb_order');1555 $dest = array();1556 foreach ($sqlval as $key => $val) {1557 if (in_array($key, $cols)) {1558 $dest[$key] = $val;1559 }1560 }1561 1562 $objQuery->update('dtb_order', $dest, 'order_id = ?', array($orderId));1563 // ▲受注テーブルの更新1564 1407 } 1565 1408 -
branches/version-2_5-dev/data/class/helper/SC_Helper_Purchase.php
r20167 r20180 72 72 73 73 $orderTemp['status'] = $orderStatus; 74 $orderId = $this->registerOrder ($orderTemp, $objCartSession,75 $objCartSession->getKey());74 $orderId = $this->registerOrderComplete($orderTemp, $objCartSession, 75 $objCartSession->getKey()); 76 76 $shippingTemp =& $this->getShippingTemp(); 77 77 if (count($shippingTemp) > 1) { … … 529 529 * $arrParam のうち, dtb_shipping テーブルに存在するカラムのみを登録する. 530 530 * 531 * TODO UPDATE/INSERT にする 532 * 531 533 * @param integer $order_id 受注ID 532 534 * @param array $arrParams 配送情報の連想配列 535 * @param boolean $convert_shipping_date yyyy/mm/dd(EEE) 形式の配送日付を変換する場合 true 533 536 * @return void 534 537 */ 535 function registerShipping($order_id, $arrParams ) {538 function registerShipping($order_id, $arrParams, $convert_shipping_date = true) { 536 539 $objQuery =& SC_Query::getSingletonInstance(); 537 540 $table = 'dtb_shipping'; 541 $where = 'order_id = ?'; 542 $objQuery->delete($table, $where, array($order_id)); 538 543 539 544 foreach ($arrParams as $arrShipping) { … … 542 547 543 548 // 配送日付を timestamp に変換 544 if (!SC_Utils_Ex::isBlank($arrValues['shipping_date'])) { 549 if (!SC_Utils_Ex::isBlank($arrValues['shipping_date']) 550 && $convert_shipping_date) { 545 551 $d = mb_strcut($arrValues["shipping_date"], 0, 10); 546 552 $arrDate = split("/", $d); … … 564 570 * @return void 565 571 */ 566 function registerShipmentItem($orderId, $shippingId, $params) { 567 $objQuery =& SC_Query::getSingletonInstance(); 572 function registerShipmentItem($order_id, $shipping_id, $arrParams) { 573 $objQuery =& SC_Query::getSingletonInstance(); 574 $table = 'dtb_shipment_item'; 575 $where = 'order_id = ? AND shipping_id = ?'; 576 $objQuery->delete($table, $where, array($order_id, $shipping_id)); 577 568 578 $objProduct = new SC_Product(); 569 foreach ($params as $productClassId => $val) { 570 $d = $objProduct->getDetailAndProductsClass($productClassId); 571 $sqlval['order_id'] = $orderId; 572 $sqlval['shipping_id'] = $shippingId; 573 $sqlval['product_class_id'] = $productClassId; 574 $sqlval['product_name'] = $d['name']; 575 $sqlval['product_code'] = $d['product_code']; 576 $sqlval['classcategory_name1'] = $d['classcategory_name1']; 577 $sqlval['classcategory_name2'] = $d['classcategory_name2']; 578 $sqlval['price'] = $d['price02']; 579 $sqlval['quantity'] = $val['quantity']; 580 $objQuery->insert("dtb_shipment_item", $sqlval); 581 } 582 } 583 584 /** 585 * 受注情報を登録する. 579 foreach ($arrParams as $arrValues) { 580 if (SC_Utils_Ex::isBlank($arrValues['product_class_id'])) { 581 continue; 582 } 583 $d = $objProduct->getDetailAndProductsClass($arrValues['product_class_id']); 584 $name = SC_Utils_Ex::isBlank($arrValues['product_name']) 585 ? $d['name'] 586 : $arrValues['product_name']; 587 588 $code = SC_Utils_Ex::isBlank($arrValues['product_code']) 589 ? $d['code'] 590 : $arrValues['product_code']; 591 592 $cname1 = SC_Utils_Ex::isBlank($arrValues['classcategory_name1']) 593 ? $d['classcategory_name1'] 594 : $arrValues['classcategory_name1']; 595 596 $cname2 = SC_Utils_Ex::isBlank($arrValues['classcategory_name2']) 597 ? $d['classcategory_name2'] 598 : $arrValues['classcategory_name2']; 599 600 $price = SC_Utils_Ex::isBlank($arrValues['price']) 601 ? $d['price02'] 602 : $arrValues['price']; 603 604 $arrValues['order_id'] = $order_id; 605 $arrValues['shipping_id'] = $shipping_id; 606 $arrValues['product_name'] = $name; 607 $arrValues['product_code'] = $code; 608 $arrValues['classcategory_name1'] = $cname1; 609 $arrValues['classcategory_name2'] = $cname2; 610 $arrValues['price'] = $price; 611 612 $arrExtractValues = $objQuery->extractOnlyColsOf($table, $arrValues); 613 $objQuery->insert($table, $arrExtractValues); 614 } 615 } 616 617 /** 618 * 受注登録を完了する. 586 619 * 587 620 * 引数の受注情報を受注テーブル及び受注詳細テーブルに登録する. 588 621 * 登録後, 受注一時テーブルに削除フラグを立て, カートの内容を削除する. 589 *590 * TODO ダウンロード商品の場合の扱いを検討591 622 * 592 623 * @param array $orderParams 登録する受注情報の配列 … … 595 626 * @param integer 受注ID 596 627 */ 597 function registerOrder ($orderParams, &$objCartSession, $cartKey) {628 function registerOrderComplete($orderParams, &$objCartSession, $cartKey) { 598 629 $objQuery =& SC_Query::getSingletonInstance(); 599 630 … … 619 650 $orderParams['update_date'] = 'Now()'; 620 651 621 $objQuery->insert("dtb_order", $orderParams); 622 623 // 受注.対応状況の更新 624 SC_Helper_DB_Ex::sfUpdateOrderStatus($orderParams['order_id'], 625 null, $addPoint, $usePoint); 652 $this->registerOrder($orderParams['order_id'], $orderParams); 626 653 627 654 // 詳細情報を取得 628 655 $cartItems = $objCartSession->getCartList($cartKey); 629 656 630 // 既に存在する詳細レコードを消しておく。 631 $objQuery->delete("dtb_order_detail", "order_id = ?", 632 array($orderParams['order_id'])); 633 657 // 詳細情報を生成 634 658 $objProduct = new SC_Product(); 659 $i = 0; 635 660 foreach ($cartItems as $item) { 636 661 $p =& $item['productsClass']; 637 $ detail['order_id'] = $orderParams['order_id'];638 $ detail['product_id'] = $p['product_id'];639 $ detail['product_class_id'] = $p['product_class_id'];640 $ detail['product_name'] = $p['name'];641 $ detail['product_code'] = $p['product_code'];642 $ detail['classcategory_name1'] = $p['classcategory_name1'];643 $ detail['classcategory_name2'] = $p['classcategory_name2'];644 $ detail['point_rate'] = $item['point_rate'];645 $ detail['price'] = $item['price'];646 $ detail['quantity'] = $item['quantity'];662 $arrDetail[$i]['order_id'] = $orderParams['order_id']; 663 $arrDetail[$i]['product_id'] = $p['product_id']; 664 $arrDetail[$i]['product_class_id'] = $p['product_class_id']; 665 $arrDetail[$i]['product_name'] = $p['name']; 666 $arrDetail[$i]['product_code'] = $p['product_code']; 667 $arrDetail[$i]['classcategory_name1'] = $p['classcategory_name1']; 668 $arrDetail[$i]['classcategory_name2'] = $p['classcategory_name2']; 669 $arrDetail[$i]['point_rate'] = $item['point_rate']; 670 $arrDetail[$i]['price'] = $item['price']; 671 $arrDetail[$i]['quantity'] = $item['quantity']; 647 672 648 673 // 在庫の減少処理 … … 651 676 SC_Utils_Ex::sfDispSiteError(SOLD_OUT, "", true); 652 677 } 653 $objQuery->insert("dtb_order_detail", $detail); 654 } 678 $i++; 679 } 680 $this->registerOrderDetail($orderParams['order_id'], $arrDetail); 655 681 656 682 $objQuery->update("dtb_order_temp", array('del_flg' => 1), … … 661 687 SC_SiteSession::unsetUniqId(); 662 688 return $orderParams['order_id']; 689 } 690 691 /** 692 * 受注情報を登録する. 693 * 694 * 既に受注IDが存在する場合は, 受注情報を更新する. 695 * 引数の受注IDが, 空白又は null の場合は, 新しく受注IDを発行して登録する. 696 * 697 * @param integer $order_id 受注ID 698 * @param array $arrParams 受注情報の連想配列 699 * @return integer 受注ID 700 */ 701 function registerOrder($order_id, $arrParams) { 702 $table = 'dtb_order'; 703 $where = 'order_id = ?'; 704 $objQuery = SC_Query::getSingletonInstance(); 705 $arrValues = $objQuery->extractOnlyColsOf($table, $arrParams); 706 707 $exists = $objQuery->count($table, $where, array($order_id)); 708 if ($exists > 0) { 709 710 $this->sfUpdateOrderStatus($order_id, $arrValues['status'], 711 $arrValues['add_point'], 712 $arrValues['use_point'], 713 $arrValues); 714 $this->sfUpdateOrderNameCol($order_id); 715 716 $arrValues['update_date'] = 'now()'; 717 $objQuery->update($table, $arrValues, $where, array($order_id)); 718 } else { 719 if (SC_Utils_Ex::isBlank($order_id)) { 720 $order_id = $objQuery->nextVal('dtb_order_order_id'); 721 } 722 $arrValues['order_id'] = $order_id; 723 $arrValues['customer_id'] = 724 SC_Utils_Ex::isBlank($arrValues['customer_id']) 725 ? 0 : $arrValues['customer_id']; 726 $arrValues['create_date'] = 'now()'; 727 $arrValues['update_date'] = 'now()'; 728 $objQuery->insert($table, $arrValues); 729 730 $this->sfUpdateOrderStatus($order_id, $arrValues['status'], 731 $arrValues['add_point'], 732 $arrValues['use_point'], 733 $arrValues); 734 $this->sfUpdateOrderNameCol($order_id); 735 736 } 737 return $order_id; 738 } 739 740 /** 741 * 受注詳細情報を登録する. 742 * 743 * 既に, 該当の受注が存在する場合は, 受注情報を削除し, 登録する. 744 * 745 * @param integer $order_id 受注ID 746 * @param array $arrParams 受注情報の連想配列 747 * @return void 748 */ 749 function registerOrderDetail($order_id, $arrParams) { 750 $table = 'dtb_order_detail'; 751 $where = 'order_id = ?'; 752 $objQuery = SC_Query::getSingletonInstance(); 753 754 $objQuery->delete($table, $where, array($order_id)); 755 foreach ($arrParams as $arrDetail) { 756 $arrValues = $objQuery->extractOnlyColsOf($table, $arrDetail); 757 $arrValues['order_id'] = $order_id; 758 $objQuery->insert($table, $arrValues); 759 } 663 760 } 664 761 … … 685 782 * 686 783 * @param integer $order_id 受注ID 784 * @param boolean $has_order_status 受注ステータス, 入金日も含める場合 true 687 785 * @return array 受注詳細の配列 688 786 */ 689 function getOrderDetail($order_id ) {787 function getOrderDetail($order_id, $has_order_status = true) { 690 788 $objQuery =& SC_Query::getSingletonInstance(); 691 789 $dbFactory = SC_DB_DBFactory_Ex::getInstance(); … … 701 799 T2.quantity, 702 800 T2.point_rate, 703 T1.status AS status, 704 T1.payment_date AS payment_date, 801 __EOS__; 802 if ($has_order_status) { 803 $col .= 'T1.status AS status, T1.payment_date AS payment_date,'; 804 805 } 806 $col .= <<< __EOS__ 807 705 808 CASE WHEN EXISTS( 706 809 SELECT 1 FROM dtb_products … … 772 875 773 876 foreach ($arrItem as $detailKey => $detailVal) { 774 $arrResults[$ product_class_id][$detailKey] = $detailVal;877 $arrResults[$key][$detailKey] = $detailVal; 775 878 } 776 879 // 商品詳細を関連づける 777 880 if ($has_detail) { 778 $arrResults[$ product_class_id]['productsClass']881 $arrResults[$key]['productsClass'] 779 882 =& $objProduct->getDetailAndProductsClass($product_class_id); 780 883 } … … 797 900 SC_MobileUserAgent::isMobile() ? 2 : 1); 798 901 } 902 903 /** 904 * 受注.対応状況の更新 905 * 906 * ・必ず呼び出し元でトランザクションブロックを開いておくこと。 907 * 908 * @param integer $orderId 注文番号 909 * @param integer|null $newStatus 対応状況 (null=変更無し) 910 * @param integer|null $newAddPoint 加算ポイント (null=変更無し) 911 * @param integer|null $newUsePoint 使用ポイント (null=変更無し) 912 * @param array $sqlval 更新後の値をリファレンスさせるためのパラメータ 913 * @return void 914 */ 915 function sfUpdateOrderStatus($orderId, $newStatus = null, $newAddPoint = null, $newUsePoint = null, &$sqlval) { 916 $objQuery =& SC_Query::getSingletonInstance(); 917 918 $arrOrderOld = $objQuery->getRow('status, add_point, use_point, customer_id', 'dtb_order', 'order_id = ?', array($orderId)); 919 920 // 対応状況が変更無しの場合、DB値を引き継ぐ 921 if (is_null($newStatus)) { 922 $newStatus = $arrOrderOld['status']; 923 } 924 925 // 使用ポイント、DB値を引き継ぐ 926 if (is_null($newUsePoint)) { 927 $newUsePoint = $arrOrderOld['use_point']; 928 } 929 930 // 加算ポイント、DB値を引き継ぐ 931 if (is_null($newAddPoint)) { 932 $newAddPoint = $arrOrderOld['add_point']; 933 } 934 935 if (USE_POINT !== false) { 936 // 顧客.ポイントの加減値 937 $addCustomerPoint = 0; 938 939 // ▼使用ポイント 940 // 変更前の対応状況が利用対象の場合、変更前の使用ポイント分を戻す 941 if (SC_Utils_Ex::sfIsUsePoint($arrOrderOld['status'])) { 942 $addCustomerPoint += $arrOrderOld['use_point']; 943 } 944 945 // 変更後の対応状況が利用対象の場合、変更後の使用ポイント分を引く 946 if (SC_Utils_Ex::sfIsUsePoint($newStatus)) { 947 $addCustomerPoint -= $newUsePoint; 948 } 949 // ▲使用ポイント 950 951 // ▼加算ポイント 952 // 変更前の対応状況が加算対象の場合、変更前の加算ポイント分を戻す 953 if (SC_Utils_Ex::sfIsAddPoint($arrOrderOld['status'])) { 954 $addCustomerPoint -= $arrOrderOld['add_point']; 955 } 956 957 // 変更後の対応状況が加算対象の場合、変更後の加算ポイント分を足す 958 if (SC_Utils_Ex::sfIsAddPoint($newStatus)) { 959 $addCustomerPoint += $newAddPoint; 960 } 961 // ▲加算ポイント 962 963 if ($addCustomerPoint != 0) { 964 // ▼顧客テーブルの更新 965 $sqlval = array(); 966 $where = ''; 967 $arrVal = array(); 968 $arrRawSql = array(); 969 $arrRawSqlVal = array(); 970 971 $sqlval['update_date'] = 'Now()'; 972 $arrRawSql['point'] = 'point + ?'; 973 $arrRawSqlVal[] = $addCustomerPoint; 974 $where .= 'customer_id = ?'; 975 $arrVal[] = $arrOrderOld['customer_id']; 976 977 $objQuery->update('dtb_customer', $sqlval, $where, $arrVal, $arrRawSql, $arrRawSqlVal); 978 // ▲顧客テーブルの更新 979 980 // 顧客.ポイントをマイナスした場合、 981 if ($addCustomerPoint < 0) { 982 $sql = 'SELECT point FROM dtb_customer WHERE customer_id = ?'; 983 $point = $objQuery->getOne($sql, array($arrOrderOld['customer_id'])); 984 // 変更後の顧客.ポイントがマイナスの場合、 985 if ($point < 0) { 986 // ロールバック 987 $objQuery->rollback(); 988 // エラー 989 SC_Utils_Ex::sfDispSiteError(LACK_POINT); 990 } 991 } 992 } 993 } 994 995 // ▼受注テーブルの更新 996 if (empty($sqlval)) { 997 $sqlval = array(); 998 } 999 1000 if (USE_POINT !== false) { 1001 $sqlval['add_point'] = $newAddPoint; 1002 $sqlval['use_point'] = $newUsePoint; 1003 } 1004 // ステータスが発送済みに変更の場合、発送日を更新 1005 if ($arrOrderOld['status'] != ORDER_DELIV && $newStatus == ORDER_DELIV) { 1006 $sqlval['commit_date'] = 'Now()'; 1007 } 1008 // ステータスが入金済みに変更の場合、入金日を更新 1009 elseif ($arrOrderOld['status'] != ORDER_PRE_END && $newStatus == ORDER_PRE_END) { 1010 $sqlval['payment_date'] = 'Now()'; 1011 } 1012 1013 $sqlval['status'] = $newStatus; 1014 $sqlval['update_date'] = 'Now()'; 1015 1016 $cols = $objQuery->listTableFields('dtb_order'); 1017 $dest = array(); 1018 foreach ($sqlval as $key => $val) { 1019 if (in_array($key, $cols)) { 1020 $dest[$key] = $val; 1021 } 1022 } 1023 1024 $objQuery->update('dtb_order', $dest, 'order_id = ?', array($orderId)); 1025 // ▲受注テーブルの更新 1026 } 1027 1028 /** 1029 * 受注の名称列を更新する 1030 * 1031 * @param integer $order_id 更新対象の注文番号 1032 * @param boolean $temp_table 更新対象は「受注_Temp」か 1033 * @static 1034 */ 1035 function sfUpdateOrderNameCol($order_id, $temp_table = false) { 1036 $objQuery =& SC_Query::getSingletonInstance(); 1037 1038 if ($temp_table) { 1039 $tgt_table = 'dtb_order_temp'; 1040 $sql_where = 'order_temp_id = ?'; 1041 } else { 1042 $tgt_table = 'dtb_order'; 1043 $sql_where = 'order_id = ?'; 1044 1045 $objQuery->update('dtb_shipping', array(), 1046 $sql_where, 1047 array($order_id), 1048 array('shipping_time' => 1049 "(SELECT deliv_time FROM dtb_delivtime WHERE time_id = dtb_shipping.time_id AND deliv_id = dtb_shipping.deliv_id)")); 1050 1051 } 1052 1053 $objQuery->update($tgt_table, array(), 1054 $sql_where, 1055 array($order_id), 1056 array('payment_method' => 1057 "(SELECT payment_method FROM dtb_payment WHERE payment_id = " . $tgt_table . ".payment_id)")); 1058 } 799 1059 } -
branches/version-2_5-dev/data/class/pages/admin/order/LC_Page_Admin_Order_Edit.php
r20163 r20180 23 23 24 24 // {{{ requires 25 require_once(CLASS_ REALDIR . "pages/admin/LC_Page_Admin.php");25 require_once(CLASS_EX_REALDIR . "page_extends/admin/order/LC_Page_Admin_Order_Ex.php"); 26 26 27 27 /** … … 32 32 * @version $Id$ 33 33 */ 34 class LC_Page_Admin_Order_Edit extends LC_Page_Admin { 35 36 // {{{ properties 37 38 /** 表示モード */ 39 var $disp_mode; 34 class LC_Page_Admin_Order_Edit extends LC_Page_Admin_Order_Ex { 40 35 41 36 // }}} … … 52 47 $this->tpl_subnavi = 'order/subnavi.tpl'; 53 48 $this->tpl_mainno = 'order'; 54 $this->tpl_subno = 'index';55 $this->tpl_subtitle = '受注管理';56 if (empty($_GET['order_id']) && empty($_POST['order_id'])) {57 $this->tpl_subno = 'add';58 $this->tpl_mode = 'add';59 $this->tpl_subtitle = '新規受注入力';60 }61 49 62 50 $masterData = new SC_DB_MasterData_Ex(); … … 65 53 $this->arrDeviceType = $masterData->getMasterData('mtb_device_type'); 66 54 55 $objDate = new SC_Date(RELEASE_YEAR); 56 $this->arrYearShippingDate = $objDate->getYear('', date('Y'), ''); 57 $this->arrMonthShippingDate = $objDate->getMonth(true); 58 $this->arrDayShippingDate = $objDate->getDay(true); 59 60 // 支払い方法の取得 61 $this->arrPayment = SC_Helper_DB_Ex::sfGetIDValueList("dtb_payment", "payment_id", "payment_method"); 62 63 // 配送業者の取得 64 $this->arrDeliv = SC_Helper_DB_Ex::sfGetIDValueList("dtb_deliv", "deliv_id", "name"); 65 67 66 $this->httpCacheControl('nocache'); 68 67 } … … 84 83 */ 85 84 function action() { 86 $objSess = new SC_Session();87 $objDb = new SC_Helper_DB_Ex();88 $objDate = new SC_Date(1970); 85 // 認証可否の判定 86 SC_Utils_Ex::sfIsSuccess(new SC_Session()); 87 89 88 $objPurchase = new SC_Helper_Purchase_Ex(); 90 $this->arrYearShippingDate = $objDate->getYear('', date('Y'), ''); 91 $this->arrMonthShippingDate = $objDate->getMonth(true); 92 $this->arrDayShippingDate = $objDate->getDay(true); 93 94 // パラメータ管理クラス 95 $this->objFormParam = new SC_FormParam(); 89 $objFormParam = new SC_FormParam(); 90 96 91 // パラメータ情報の初期化 97 $this->lfInitParam(); 98 99 // 認証可否の判定 100 SC_Utils_Ex::sfIsSuccess($objSess); 101 102 // 検索パラメータの引き継ぎ 103 foreach ($_POST as $key => $val) { 104 if (ereg("^search_", $key)) { 105 $this->arrSearchHidden[$key] = $val; 106 } 107 } 108 109 // 表示モード判定 110 if(isset($_GET['order_id']) && 111 SC_Utils_Ex::sfIsInt($_GET['order_id'])) { 112 $this->disp_mode = true; 113 $order_id = $_GET['order_id']; 114 } else { 115 $order_id = $_POST['order_id']; 116 } 117 $this->tpl_order_id = $order_id; 92 $this->lfInitParam($objFormParam); 93 $objFormParam->setParam($_REQUEST); 94 $objFormParam->convParam(); 95 $order_id = $objFormParam->getValue('order_id'); 118 96 119 97 // DBから受注情報を読み込む 120 98 if (!SC_Utils_Ex::isBlank($order_id)) { 121 $this->lfGetOrderData($order_id); 122 } 99 $this->setOrderToFormParam($objFormParam, $order_id); 100 $this->tpl_subno = 'index'; 101 $this->tpl_subtitle = '受注管理'; 102 } else { 103 $this->tpl_subno = 'add'; 104 $this->tpl_mode = 'add'; 105 $this->tpl_subtitle = '新規受注入力'; 106 } 107 108 $this->arrSearchHidden = $objFormParam->getSearchArray(); 123 109 124 110 switch($this->getMode()) { … … 126 112 case 'order_id': 127 113 break; 114 128 115 case 'edit': 116 $objFormParam->setParam($_POST); 117 $objFormParam->convParam(); 118 $this->arrErr = $this->lfCheckError($objFormParam); 119 if (SC_Utils_Ex::isBlank($this->arrErr)) { 120 $order_id = $this->doRegister($order_id, $objPurchase, $objFormParam); 121 $this->setOrderToFormParam($objFormParam, $order_id); 122 $this->tpl_onload = "window.alert('受注を編集しました。');"; 123 } 124 break; 125 129 126 case 'add': 130 // POST情報で上書き 131 $this->lfInitShippingParam($this->arrShipping); 132 $this->objFormParam->setParam($_POST); 133 134 // 入力値の変換 135 $this->objFormParam->convParam(); 136 $this->arrErr = $this->lfCheckError(); 137 138 if(count($this->arrErr) == 0) { 139 //TODO 要リファクタリング(MODE if利用) 140 if ($this->getMode() == 'add') { 141 $order_id = $this->lfRegistNewData($objPurchase); 142 143 $this->tpl_order_id = $order_id; 127 if ($_SERVER['REQUEST_METHOD'] == 'POST') { 128 $objFormParam->setParam($_POST); 129 $objFormParam->convParam(); 130 $this->arrErr = $this->lfCheckError($objFormParam); 131 if (SC_Utils_Ex::isBlank($this->arrErr)) { 132 $order_id = $this->doRegister(null, $objPurchase, $objFormParam); 144 133 $this->tpl_mode = 'edit'; 145 146 $arrData['order_id'] = $order_id; 147 $this->objFormParam->setParam($arrData); 148 149 $text = "'新規受注を登録しました。'"; 150 } else { 151 $this->lfRegistData($_POST['order_id'], $objPurchase); 152 $text = "'受注履歴を編集しました。'"; 134 $objFormParam->setValue('order_id', $order_id); 135 $this->setOrderToFormParam($objFormParam, $order_id); 136 $this->tpl_onload = "window.alert('新規受注を登録しました。');"; 153 137 } 154 // DBから受注情報を再読込 155 $this->lfGetOrderData($order_id); 156 $this->lfInitShippingParam($this->arrShipping); 157 $this->tpl_onload = "window.alert(".$text.");"; 158 } 159 break; 138 } 139 140 break; 141 160 142 // 再計算 161 case ' cheek':143 case 'recalculate': 162 144 //支払い方法の選択 163 145 case 'payment': 164 // POST情報で上書き 165 $this->lfInitShippingParam($this->arrShipping); 166 $this->objFormParam->setParam($_POST); 167 // 入力値の変換 168 $this->objFormParam->convParam(); 169 $this->arrErr = $this->lfCheckError(); 170 break; 171 172 /* 商品削除*/ 146 // 配送業者の選択 147 case 'deliv': 148 $objFormParam->setParam($_POST); 149 $objFormParam->convParam(); 150 $this->arrErr = $this->lfCheckError($objFormParam); 151 break; 152 153 // 商品削除 173 154 case 'delete_product': 174 $delete_no = $_POST['delete_no']; 175 foreach ($_POST AS $key=>$val) { 176 if (is_array($val)) { 177 foreach ($val AS $k=>$v) { 178 if ($k != $delete_no) { 179 $arrData[$key][] = $v; 180 } 181 } 182 } else { 183 $arrData[$key] = $val; 184 } 185 } 186 // 情報上書き 187 $this->lfInitShippingParam($this->arrShipping); 188 $this->objFormParam->setParam($arrData); 189 // 入力値の変換 190 $this->objFormParam->convParam(); 191 $this->arrErr = $this->lfCheckError(); 192 break; 193 /* 商品追加ポップアップより商品選択後、商品情報取得*/ 155 $objFormParam->setParam($_POST); 156 $objFormParam->convParam(); 157 $delete_no = $objFormParam->getValue('delete_no'); 158 $this->doDeleteProduct($delete_no, $objFormParam); 159 $this->arrErr = $this->lfCheckError($objFormParam); 160 break; 161 162 // 商品追加ポップアップより商品選択 194 163 case 'select_product_detail': 195 // POST情報で上書き 196 $this->objFormParam->setParam($_POST); 197 if (!empty($_POST['add_product_class_id'])) { 198 $this->lfInsertProduct($_POST['add_product_class_id']); 199 } elseif (!empty($_POST['edit_product_class_id'])) { 200 $this->lfUpdateProduct($_POST['edit_product_class_id'], $_POST['no']); 201 } 202 $arrData = $_POST; 203 foreach ($this->arrForm AS $key=>$val) { 204 if (is_array($val)) { 205 $arrData[$key] = $this->arrForm[$key]['value']; 206 } else { 207 $arrData[$key] = $val; 208 } 209 } 210 211 // 情報上書き 212 $this->lfInitShippingParam($this->arrShipping); 213 $this->objFormParam->setParam($arrData); 214 // 入力値の変換 215 $this->objFormParam->convParam(); 216 $this->arrErr = $this->lfCheckError(); 217 break; 218 /* 顧客検索ポップアップより顧客指定後、顧客情報取得*/ 164 $objFormParam->setParam($_POST); 165 $objFormParam->convParam(); 166 $this->doRegisterProduct($objFormParam); 167 $this->arrErr = $this->lfCheckError($objFormParam); 168 break; 169 170 // 顧客検索ポップアップより顧客指定 219 171 case 'search_customer': 220 // POST情報で上書き 221 $this->lfInitShippingParam($this->arrShipping); 222 $this->objFormParam->setParam($_POST); 223 224 // 検索結果から顧客IDを指定された場合、顧客情報をフォームに代入する 225 $this->lfSetCustomerInfo($_POST['edit_customer_id']); 226 172 $objFormParam->setParam($_POST); 173 $objFormParam->convParam(); 174 $this->setCustomerTo($objFormParam->getValue('edit_customer_id'), 175 $objFormParam); 176 $this->arrErr = $this->lfCheckError($objFormParam); 227 177 break; 228 178 229 179 // 複数配送設定表示 230 180 case 'multiple': 231 $this->lfInitShippingParam($this->arrShipping); 232 $this->objFormParam->setParam($_POST); 233 // 入力値の変換 234 $this->objFormParam->convParam(); 235 $this->arrErr = $this->lfCheckError(); 181 $objFormParam->setParam($_POST); 182 $objFormParam->convParam(); 183 $this->arrErr = $this->lfCheckError($objFormParam); 236 184 break; 237 185 238 186 // 複数配送設定を反映 239 187 case 'multiple_set_to': 240 $multipleSize = $_POST['multiple_size']; 241 $this->lfInitMultipleParam($multipleSize); 242 $this->objFormParam->setParam($_POST); 243 $this->lfInitShippingParam($this->arrShipping); 244 $this->setMultipleItemTo($multipleSize); 188 $this->lfInitMultipleParam($objFormParam); 189 $objFormParam->setParam($_POST); 190 $objFormParam->convParam(); 191 $this->setMultipleItemTo($objFormParam); 245 192 break; 246 193 247 194 // お届け先の追加 248 195 case 'append_shipping': 249 $this->lfInitShippingParam($this->arrShipping, true); 250 $this->objFormParam->setParam($_POST); 251 // 入力値の変換 252 $this->objFormParam->convParam(); 196 $objFormParam->setParam($_POST); 197 $objFormParam->convParam(); 198 $this->addShipping($objFormParam); 253 199 break; 254 200 255 201 default: 256 // お届け先の初期表示 257 $this->lfInitShippingParam(); 258 break; 259 } 260 261 // 支払い方法の取得 262 $this->arrPayment = $objDb->sfGetIDValueList("dtb_payment", "payment_id", "payment_method"); 263 264 $this->arrForm = $this->objFormParam->getFormParamList(); 265 266 // XXX 商品種別IDは0番目の配列を使用 267 $this->product_type_id = $this->arrForm['product_type_id']['value'][0]; 268 $this->arrDelivTime = $objPurchase->getDelivTime($this->product_type_id); 269 $this->product_count = count($this->arrForm['quantity']['value']); 270 271 // アンカーを設定 272 if (isset($_POST['anchor_key']) && !empty($_POST['anchor_key'])) { 273 $anchor_hash = "location.hash='#" . $_POST['anchor_key'] . "'"; 274 } else { 275 $anchor_hash = ""; 276 } 277 $this->tpl_onload .= $anchor_hash; 278 279 $objSiteInfo = new SC_SiteInfo(); 280 $this->arrInfo = $objSiteInfo->data; 281 // 表示モード判定 282 if(!$this->disp_mode) { 283 $this->setTemplate(MAIN_FRAME); 284 } else { 285 $this->setTemplate('order/disp.tpl'); 286 } 202 } 203 204 $this->arrForm = $objFormParam->getFormParamList(); 205 $this->arrDelivTime = $objPurchase->getDelivTime($objFormParam->getValue('deliv_id')); 206 $this->tpl_onload .= $this->getAnchorKey($objFormParam); 207 $this->arrInfo = SC_Helper_DB::sfGetBasisData(); 287 208 } 288 209 … … 296 217 } 297 218 298 /* パラメータ情報の初期化 */ 299 function lfInitParam() { 219 /** 220 * パラメータ情報の初期化を行う. 221 * 222 * @param SC_FormParam $objFormParam SC_FormParam インスタンス 223 * @return void 224 */ 225 function lfInitParam(&$objFormParam) { 226 // 検索条件のパラメータを初期化 227 parent::lfInitParam($objFormParam); 300 228 301 229 // お客様情報 302 $ this->objFormParam->addParam("顧客名1", "order_name01", STEXT_LEN, "KVa", array("EXIST_CHECK", "SPTAB_CHECK", "MAX_LENGTH_CHECK"));303 $ this->objFormParam->addParam("顧客名2", "order_name02", STEXT_LEN, "KVa", array("EXIST_CHECK", "SPTAB_CHECK", "MAX_LENGTH_CHECK"));304 $ this->objFormParam->addParam("顧客名カナ1", "order_kana01", STEXT_LEN, "KVCa", array("EXIST_CHECK", "SPTAB_CHECK", "MAX_LENGTH_CHECK"));305 $ this->objFormParam->addParam("顧客名カナ2", "order_kana02", STEXT_LEN, "KVCa", array("EXIST_CHECK", "SPTAB_CHECK", "MAX_LENGTH_CHECK"));306 $ this->objFormParam->addParam("メールアドレス", "order_email", MTEXT_LEN, "KVCa", array("NO_SPTAB", "EMAIL_CHECK", "EMAIL_CHAR_CHECK", "MAX_LENGTH_CHECK"));307 $ this->objFormParam->addParam("郵便番号1", "order_zip01", ZIP01_LEN, "n", array("NUM_CHECK", "NUM_COUNT_CHECK"));308 $ this->objFormParam->addParam("郵便番号2", "order_zip02", ZIP02_LEN, "n", array("NUM_CHECK", "NUM_COUNT_CHECK"));309 $ this->objFormParam->addParam("都道府県", "order_pref", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK"));310 $ this->objFormParam->addParam("住所1", "order_addr01", MTEXT_LEN, "KVa", array("SPTAB_CHECK", "MAX_LENGTH_CHECK"));311 $ this->objFormParam->addParam("住所2", "order_addr02", MTEXT_LEN, "KVa", array("SPTAB_CHECK", "MAX_LENGTH_CHECK"));312 $ this->objFormParam->addParam("電話番号1", "order_tel01", TEL_ITEM_LEN, "n", array("MAX_LENGTH_CHECK" ,"NUM_CHECK"));313 $ this->objFormParam->addParam("電話番号2", "order_tel02", TEL_ITEM_LEN, "n", array("MAX_LENGTH_CHECK" ,"NUM_CHECK"));314 $ this->objFormParam->addParam("電話番号3", "order_tel03", TEL_ITEM_LEN, "n", array("MAX_LENGTH_CHECK" ,"NUM_CHECK"));230 $objFormParam->addParam("顧客名1", "order_name01", STEXT_LEN, "KVa", array("EXIST_CHECK", "SPTAB_CHECK", "MAX_LENGTH_CHECK")); 231 $objFormParam->addParam("顧客名2", "order_name02", STEXT_LEN, "KVa", array("EXIST_CHECK", "SPTAB_CHECK", "MAX_LENGTH_CHECK")); 232 $objFormParam->addParam("顧客名カナ1", "order_kana01", STEXT_LEN, "KVCa", array("EXIST_CHECK", "SPTAB_CHECK", "MAX_LENGTH_CHECK")); 233 $objFormParam->addParam("顧客名カナ2", "order_kana02", STEXT_LEN, "KVCa", array("EXIST_CHECK", "SPTAB_CHECK", "MAX_LENGTH_CHECK")); 234 $objFormParam->addParam("メールアドレス", "order_email", MTEXT_LEN, "KVCa", array("NO_SPTAB", "EMAIL_CHECK", "EMAIL_CHAR_CHECK", "MAX_LENGTH_CHECK")); 235 $objFormParam->addParam("郵便番号1", "order_zip01", ZIP01_LEN, "n", array("NUM_CHECK", "NUM_COUNT_CHECK")); 236 $objFormParam->addParam("郵便番号2", "order_zip02", ZIP02_LEN, "n", array("NUM_CHECK", "NUM_COUNT_CHECK")); 237 $objFormParam->addParam("都道府県", "order_pref", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK")); 238 $objFormParam->addParam("住所1", "order_addr01", MTEXT_LEN, "KVa", array("SPTAB_CHECK", "MAX_LENGTH_CHECK")); 239 $objFormParam->addParam("住所2", "order_addr02", MTEXT_LEN, "KVa", array("SPTAB_CHECK", "MAX_LENGTH_CHECK")); 240 $objFormParam->addParam("電話番号1", "order_tel01", TEL_ITEM_LEN, "n", array("MAX_LENGTH_CHECK" ,"NUM_CHECK")); 241 $objFormParam->addParam("電話番号2", "order_tel02", TEL_ITEM_LEN, "n", array("MAX_LENGTH_CHECK" ,"NUM_CHECK")); 242 $objFormParam->addParam("電話番号3", "order_tel03", TEL_ITEM_LEN, "n", array("MAX_LENGTH_CHECK" ,"NUM_CHECK")); 315 243 316 244 // 受注商品情報 317 $ this->objFormParam->addParam("値引き", "discount", INT_LEN, "n", array("EXIST_CHECK", "MAX_LENGTH_CHECK", "NUM_CHECK"), '0');318 $ this->objFormParam->addParam("送料", "deliv_fee", INT_LEN, "n", array("EXIST_CHECK", "MAX_LENGTH_CHECK", "NUM_CHECK"), '0');319 $ this->objFormParam->addParam("手数料", "charge", INT_LEN, "n", array("EXIST_CHECK", "MAX_LENGTH_CHECK", "NUM_CHECK"), '0');245 $objFormParam->addParam("値引き", "discount", INT_LEN, "n", array("EXIST_CHECK", "MAX_LENGTH_CHECK", "NUM_CHECK"), '0'); 246 $objFormParam->addParam("送料", "deliv_fee", INT_LEN, "n", array("EXIST_CHECK", "MAX_LENGTH_CHECK", "NUM_CHECK"), '0'); 247 $objFormParam->addParam("手数料", "charge", INT_LEN, "n", array("EXIST_CHECK", "MAX_LENGTH_CHECK", "NUM_CHECK"), '0'); 320 248 321 249 // ポイント機能ON時のみ 322 250 if (USE_POINT !== false) { 323 $this->objFormParam->addParam("利用ポイント", "use_point", INT_LEN, "n", array("EXIST_CHECK", "MAX_LENGTH_CHECK", "NUM_CHECK")); 324 } 325 326 $this->objFormParam->addParam("お支払い方法", "payment_id", INT_LEN, "n", array("EXIST_CHECK", "MAX_LENGTH_CHECK", "NUM_CHECK")); 327 $this->objFormParam->addParam("対応状況", "status", INT_LEN, "n", array("EXIST_CHECK", "MAX_LENGTH_CHECK", "NUM_CHECK")); 328 $this->objFormParam->addParam("お支払方法名称", "payment_method"); 251 $objFormParam->addParam("利用ポイント", "use_point", INT_LEN, "n", array("EXIST_CHECK", "MAX_LENGTH_CHECK", "NUM_CHECK")); 252 } 253 254 $objFormParam->addParam("配送業者", "deliv_id", INT_LEN, "n", array("EXIST_CHECK", "MAX_LENGTH_CHECK", "NUM_CHECK")); 255 $objFormParam->addParam("お支払い方法", "payment_id", INT_LEN, "n", array("EXIST_CHECK", "MAX_LENGTH_CHECK", "NUM_CHECK")); 256 $objFormParam->addParam("対応状況", "status", INT_LEN, "n", array("EXIST_CHECK", "MAX_LENGTH_CHECK", "NUM_CHECK")); 257 $objFormParam->addParam("お支払方法名称", "payment_method"); 329 258 330 259 // 受注詳細情報 331 $this->objFormParam->addParam("商品種別ID", "product_type_id", INT_LEN, "n", array("EXIST_CHECK", "MAX_LENGTH_CHECK", "NUM_CHECK"), '0'); 332 $this->objFormParam->addParam("単価", "price", INT_LEN, "n", array("EXIST_CHECK", "MAX_LENGTH_CHECK", "NUM_CHECK"), '0'); 333 $this->objFormParam->addParam("数量", "quantity", INT_LEN, "n", array("EXIST_CHECK", "MAX_LENGTH_CHECK", "NUM_CHECK"), '0'); 334 $this->objFormParam->addParam("商品ID", "product_id", INT_LEN, "n", array("EXIST_CHECK", "MAX_LENGTH_CHECK", "NUM_CHECK"), '0'); 335 $this->objFormParam->addParam("商品規格ID", "product_class_id", INT_LEN, "n", array("EXIST_CHECK", "MAX_LENGTH_CHECK", "NUM_CHECK"), '0'); 336 $this->objFormParam->addParam("ポイント付与率", "point_rate"); 337 $this->objFormParam->addParam("商品コード", "product_code"); 338 $this->objFormParam->addParam("商品名", "product_name"); 339 $this->objFormParam->addParam("規格名1", "classcategory_name1"); 340 $this->objFormParam->addParam("規格名2", "classcategory_name2"); 341 $this->objFormParam->addParam("メモ", "note", MTEXT_LEN, "KVa", array("MAX_LENGTH_CHECK")); 260 $objFormParam->addParam("商品項番", "product_class_id", INT_LEN, "n", array("EXIST_CHECK", "MAX_LENGTH_CHECK", "NUM_CHECK"), '0'); 261 $objFormParam->addParam("商品種別ID", "product_type_id", INT_LEN, "n", array("EXIST_CHECK", "MAX_LENGTH_CHECK", "NUM_CHECK"), '0'); 262 $objFormParam->addParam("単価", "price", INT_LEN, "n", array("EXIST_CHECK", "MAX_LENGTH_CHECK", "NUM_CHECK"), '0'); 263 $objFormParam->addParam("数量", "quantity", INT_LEN, "n", array("EXIST_CHECK", "MAX_LENGTH_CHECK", "NUM_CHECK"), '0'); 264 $objFormParam->addParam("商品ID", "product_id", INT_LEN, "n", array("EXIST_CHECK", "MAX_LENGTH_CHECK", "NUM_CHECK"), '0'); 265 $objFormParam->addParam("商品規格ID", "product_class_id", INT_LEN, "n", array("EXIST_CHECK", "MAX_LENGTH_CHECK", "NUM_CHECK"), '0'); 266 $objFormParam->addParam("ポイント付与率", "point_rate"); 267 $objFormParam->addParam("商品コード", "product_code"); 268 $objFormParam->addParam("商品名", "product_name"); 269 $objFormParam->addParam("規格名1", "classcategory_name1"); 270 $objFormParam->addParam("規格名2", "classcategory_name2"); 271 $objFormParam->addParam("メモ", "note", MTEXT_LEN, "KVa", array("MAX_LENGTH_CHECK")); 272 $objFormParam->addParam("削除用項番", "delete_no", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK")); 273 342 274 // DB読込用 343 $this->objFormParam->addParam("小計", "subtotal"); 344 $this->objFormParam->addParam("合計", "total"); 345 $this->objFormParam->addParam("支払い合計", "payment_total"); 346 $this->objFormParam->addParam("加算ポイント", "add_point"); 347 $this->objFormParam->addParam("お誕生日ポイント", "birth_point"); 348 $this->objFormParam->addParam("消費税合計", "tax"); 349 $this->objFormParam->addParam("最終保持ポイント", "total_point"); 350 $this->objFormParam->addParam("顧客ID", "customer_id"); 351 $this->objFormParam->addParam("現在のポイント", "point"); 352 $this->objFormParam->addParam("注文番号", "order_id"); 353 $this->objFormParam->addParam("受注日", "create_date"); 354 $this->objFormParam->addParam("発送日", "commit_date"); 355 $this->objFormParam->addParam("備考", "message"); 356 $this->objFormParam->addParam("入金日", "payment_date"); 357 $this->objFormParam->addParam("アクセス端末", "device_type_id"); 358 } 359 360 /** 361 * お届け先用フォームの初期化 362 */ 363 function lfInitShippingParam($arrShipping = array(), $add = false) { 364 if (empty($arrShipping) && !$add) { 365 $arrShipping[0]['shipping_id'] = 0; 366 $this->arrShippingIds[0] = 0; 367 $_POST['shipping_quantity'] = 1; 368 } 369 370 if ($add) { 371 $_POST['shipping_quantity'] = $_POST['shipping_quantity'] + 1; 372 } 373 for ($i = 0; $i < $_POST['shipping_quantity']; $i++) { 374 $arrShipping[$i]['shipping_id'] = $i; 375 $this->arrShippingIds[$i] = $i; 376 } 377 378 $this->objFormParam->addParam("配送数", "shipping_quantity", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK"), 1); 379 $this->objFormParam->setValue('shipping_quantity', $_POST['shipping_quantity']); 380 381 foreach ($arrShipping as $shipping) { 382 $this->objFormParam->addParam("配送ID", "shipping_id_" . $shipping['shipping_id'], INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK"), 0); 383 $this->objFormParam->addParam("お名前1", "shipping_name01_" . $shipping['shipping_id'], STEXT_LEN, "KVa", array("SPTAB_CHECK", "MAX_LENGTH_CHECK")); 384 $this->objFormParam->addParam("お名前2", "shipping_name02_" . $shipping['shipping_id'], STEXT_LEN, "KVa", array("SPTAB_CHECK", "MAX_LENGTH_CHECK")); 385 $this->objFormParam->addParam("お名前(フリガナ・姓)", "shipping_kana01_" . $shipping['shipping_id'], STEXT_LEN, "KVCa", array("SPTAB_CHECK", "MAX_LENGTH_CHECK")); 386 $this->objFormParam->addParam("お名前(フリガナ・名)", "shipping_kana02_" . $shipping['shipping_id'], STEXT_LEN, "KVCa", array("SPTAB_CHECK", "MAX_LENGTH_CHECK")); 387 $this->objFormParam->addParam("郵便番号1", "shipping_zip01_" . $shipping['shipping_id'], ZIP01_LEN, "n", array("NUM_CHECK", "NUM_COUNT_CHECK")); 388 $this->objFormParam->addParam("郵便番号2", "shipping_zip02_" . $shipping['shipping_id'], ZIP02_LEN, "n", array("NUM_CHECK", "NUM_COUNT_CHECK")); 389 $this->objFormParam->addParam("都道府県", "shipping_pref_" . $shipping['shipping_id'], INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK")); 390 $this->objFormParam->addParam("住所1", "shipping_addr01_" . $shipping['shipping_id'], MTEXT_LEN, "KVa", array("SPTAB_CHECK", "MAX_LENGTH_CHECK")); 391 $this->objFormParam->addParam("住所2", "shipping_addr02_" . $shipping['shipping_id'], MTEXT_LEN, "KVa", array("SPTAB_CHECK", "MAX_LENGTH_CHECK")); 392 $this->objFormParam->addParam("電話番号1", "shipping_tel01_" . $shipping['shipping_id'], TEL_ITEM_LEN, "n", array("MAX_LENGTH_CHECK" ,"NUM_CHECK")); 393 $this->objFormParam->addParam("電話番号2", "shipping_tel02_" . $shipping['shipping_id'], TEL_ITEM_LEN, "n", array("MAX_LENGTH_CHECK" ,"NUM_CHECK")); 394 $this->objFormParam->addParam("電話番号3", "shipping_tel03_" . $shipping['shipping_id'], TEL_ITEM_LEN, "n", array("MAX_LENGTH_CHECK" ,"NUM_CHECK")); 395 $this->objFormParam->addParam("お届け時間ID", "time_id_" . $shipping['shipping_id'], INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK")); 396 $this->objFormParam->addParam("お届け時間", "shipping_time_" . $shipping['shipping_id']); 397 $this->objFormParam->addParam("お届け日(年)", "shipping_date_year_" . $shipping['shipping_id'], INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK")); 398 $this->objFormParam->addParam("お届け日(月)", "shipping_date_month_" . $shipping['shipping_id'], INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK")); 399 $this->objFormParam->addParam("お届け日(日)", "shipping_date_day_" . $shipping['shipping_id'], INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK")); 400 $this->objFormParam->addParam("お届け日", "shipping_date_" . $shipping['shipping_id'], STEXT_LEN, "KVa", array("SPTAB_CHECK", "MAX_LENGTH_CHECK")); 401 $this->objFormParam->addParam("配送商品規格数", "shipping_product_quantity_" . $shipping['shipping_id'], INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK")); 402 foreach (array_keys($shipping['shipment_item']) as $productClassId) { 403 $this->objFormParam->addParam("商品規格ID", "product_class_id_" . $shipping['shipping_id'] . '_' . $productClassId, INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK")); 404 $this->objFormParam->addParam("商品コード", "product_code_" . $shipping['shipping_id'] . '_' . $productClassId, $item['product_code']); 405 $this->objFormParam->addParam("商品名", "product_name_" . $shipping['shipping_id'] . '_' . $productClassId); 406 $this->objFormParam->addParam("規格名1", "classcategory_name1_" . $shipping['shipping_id'] . '_' . $productClassId); 407 $this->objFormParam->addParam("規格名2", "classcategory_name2_" . $shipping['shipping_id'] . '_' . $productClassId); 408 $this->objFormParam->addParam("単価", "price_" . $shipping['shipping_id'] . '_' . $productClassId, INT_LEN, "n", array("EXIST_CHECK", "MAX_LENGTH_CHECK", "NUM_CHECK"), '0'); 409 $this->objFormParam->addParam("数量", "quantity_" . $shipping['shipping_id'] . '_' . $productClassId, INT_LEN, "n", array("EXIST_CHECK", "MAX_LENGTH_CHECK", "NUM_CHECK"), '0'); 410 } 411 } 412 } 413 414 /** 415 * 複数配送用フォームの初期化 416 */ 417 function lfInitMultipleParam($size) { 418 for ($i = 0; $i < $size; $i++) { 419 $this->objFormParam->addParam("商品規格ID", "multiple_product_class_id" . $i, INT_LEN, "n", array("EXIST_CHECK", "MAX_LENGTH_CHECK", "NUM_CHECK")); 420 $this->objFormParam->addParam("商品コード", "multiple_product_code" . $i, INT_LEN, "n", array("EXIST_CHECK", "MAX_LENGTH_CHECK", "NUM_CHECK"), 1); 421 $this->objFormParam->addParam("商品名", "multiple_product_name" . $i, INT_LEN, "n", array("EXIST_CHECK", "MAX_LENGTH_CHECK", "NUM_CHECK"), 1); 422 $this->objFormParam->addParam("規格1", "multiple_classcategory_name1" . $i, INT_LEN, "n", array("EXIST_CHECK", "MAX_LENGTH_CHECK", "NUM_CHECK"), 1); 423 $this->objFormParam->addParam("規格2", "multiple_classcategory_name2" . $i, INT_LEN, "n", array("EXIST_CHECK", "MAX_LENGTH_CHECK", "NUM_CHECK"), 1); 424 $this->objFormParam->addParam("単価", "multiple_price" . $i, INT_LEN, "n", array("EXIST_CHECK", "MAX_LENGTH_CHECK", "NUM_CHECK"), 1); 425 $this->objFormParam->addParam("数量", "multiple_quantity" . $i, INT_LEN, "n", array("EXIST_CHECK", "MAX_LENGTH_CHECK", "NUM_CHECK"), 1); 426 $this->objFormParam->addParam("配送先住所", "multiple_shipping" . $i, INT_LEN, "n", array("EXIST_CHECK", "MAX_LENGTH_CHECK", "NUM_CHECK")); 427 } 428 } 429 430 431 function setMultipleItemTo($size) { 275 $objFormParam->addParam("小計", "subtotal"); 276 $objFormParam->addParam("合計", "total"); 277 $objFormParam->addParam("支払い合計", "payment_total"); 278 $objFormParam->addParam("加算ポイント", "add_point"); 279 $objFormParam->addParam("お誕生日ポイント", "birth_point"); 280 $objFormParam->addParam("消費税合計", "tax"); 281 $objFormParam->addParam("最終保持ポイント", "total_point"); 282 $objFormParam->addParam("顧客ID", "customer_id", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK"), '0'); 283 $objFormParam->addParam("顧客ID", "edit_customer_id", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK"), '0'); 284 $objFormParam->addParam("現在のポイント", "point"); 285 $objFormParam->addParam("注文番号", "order_id"); 286 $objFormParam->addParam("受注日", "create_date"); 287 $objFormParam->addParam("発送日", "commit_date"); 288 $objFormParam->addParam("備考", "message"); 289 $objFormParam->addParam("入金日", "payment_date"); 290 $objFormParam->addParam("アクセス端末", "device_type_id"); 291 292 // 複数情報 293 $objFormParam->addParam("配送数", "shipping_quantity", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK"), 1); 294 $objFormParam->addParam("配送ID", "shipping_id", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK"), 0); 295 $objFormParam->addParam("お名前1", "shipping_name01", STEXT_LEN, "KVa", array("SPTAB_CHECK", "MAX_LENGTH_CHECK")); 296 $objFormParam->addParam("お名前2", "shipping_name02", STEXT_LEN, "KVa", array("SPTAB_CHECK", "MAX_LENGTH_CHECK")); 297 $objFormParam->addParam("お名前(フリガナ・姓)", "shipping_kana01", STEXT_LEN, "KVCa", array("SPTAB_CHECK", "MAX_LENGTH_CHECK")); 298 $objFormParam->addParam("お名前(フリガナ・名)", "shipping_kana02", STEXT_LEN, "KVCa", array("SPTAB_CHECK", "MAX_LENGTH_CHECK")); 299 $objFormParam->addParam("郵便番号1", "shipping_zip01", ZIP01_LEN, "n", array("NUM_CHECK", "NUM_COUNT_CHECK")); 300 $objFormParam->addParam("郵便番号2", "shipping_zip02", ZIP02_LEN, "n", array("NUM_CHECK", "NUM_COUNT_CHECK")); 301 $objFormParam->addParam("都道府県", "shipping_pref", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK")); 302 $objFormParam->addParam("住所1", "shipping_addr01", MTEXT_LEN, "KVa", array("SPTAB_CHECK", "MAX_LENGTH_CHECK")); 303 $objFormParam->addParam("住所2", "shipping_addr02", MTEXT_LEN, "KVa", array("SPTAB_CHECK", "MAX_LENGTH_CHECK")); 304 $objFormParam->addParam("電話番号1", "shipping_tel01", TEL_ITEM_LEN, "n", array("MAX_LENGTH_CHECK" ,"NUM_CHECK")); 305 $objFormParam->addParam("電話番号2", "shipping_tel02", TEL_ITEM_LEN, "n", array("MAX_LENGTH_CHECK" ,"NUM_CHECK")); 306 $objFormParam->addParam("電話番号3", "shipping_tel03", TEL_ITEM_LEN, "n", array("MAX_LENGTH_CHECK" ,"NUM_CHECK")); 307 $objFormParam->addParam("お届け時間ID", "time_id", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK")); 308 $objFormParam->addParam("お届け時間", "shipping_time"); 309 $objFormParam->addParam("お届け日(年)", "shipping_date_year", "n", array("MAX_LENGTH_CHECK", "NUM_CHECK")); 310 $objFormParam->addParam("お届け日(月)", "shipping_date_month", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK")); 311 $objFormParam->addParam("お届け日(日)", "shipping_date_day", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK")); 312 $objFormParam->addParam("お届け日", "shipping_date", STEXT_LEN, "KVa", array("SPTAB_CHECK", "MAX_LENGTH_CHECK")); 313 $objFormParam->addParam("配送商品数", "shipping_product_quantity", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK")); 314 315 $objFormParam->addParam("商品規格ID", "shipment_product_class_id", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK")); 316 $objFormParam->addParam("商品コード", "shipment_product_code"); 317 $objFormParam->addParam("商品名", "shipment_product_name"); 318 $objFormParam->addParam("規格名1", "shipment_classcategory_name1"); 319 $objFormParam->addParam("規格名2", "shipment_classcategory_name2"); 320 $objFormParam->addParam("単価", "shipment_price", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK"), '0'); 321 $objFormParam->addParam("数量", "shipment_quantity", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK"), '0'); 322 323 $objFormParam->addParam("商品項番", "no", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK")); 324 $objFormParam->addParam("追加商品規格ID", "add_product_class_id", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK")); 325 $objFormParam->addParam("修正商品規格ID", "edit_product_class_id", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK")); 326 $objFormParam->addParam("アンカーキー", "anchor_key", STEXT_LEN, "KVa", array("SPTAB_CHECK", "MAX_LENGTH_CHECK")); 327 } 328 329 /** 330 * 複数配送用フォームの初期化を行う. 331 * 332 * @param SC_FormParam $objFormParam SC_FormParam インスタンス 333 * @return void 334 */ 335 function lfInitMultipleParam(&$objFormParam) { 336 $objFormParam->addParam("商品規格ID", "multiple_product_class_id", INT_LEN, "n", array("EXIST_CHECK", "MAX_LENGTH_CHECK", "NUM_CHECK")); 337 $objFormParam->addParam("商品コード", "multiple_product_code", INT_LEN, "n", array("EXIST_CHECK", "MAX_LENGTH_CHECK", "NUM_CHECK"), 1); 338 $objFormParam->addParam("商品名", "multiple_product_name", INT_LEN, "n", array("EXIST_CHECK", "MAX_LENGTH_CHECK", "NUM_CHECK"), 1); 339 $objFormParam->addParam("規格1", "multiple_classcategory_name1", INT_LEN, "n", array("EXIST_CHECK", "MAX_LENGTH_CHECK", "NUM_CHECK"), 1); 340 $objFormParam->addParam("規格2", "multiple_classcategory_name2", INT_LEN, "n", array("EXIST_CHECK", "MAX_LENGTH_CHECK", "NUM_CHECK"), 1); 341 $objFormParam->addParam("単価", "multiple_price", INT_LEN, "n", array("EXIST_CHECK", "MAX_LENGTH_CHECK", "NUM_CHECK"), 1); 342 $objFormParam->addParam("数量", "multiple_quantity", INT_LEN, "n", array("EXIST_CHECK", "MAX_LENGTH_CHECK", "NUM_CHECK"), 1); 343 $objFormParam->addParam("配送先住所", "multiple_shipping_id", INT_LEN, "n", array("EXIST_CHECK", "MAX_LENGTH_CHECK", "NUM_CHECK")); 344 } 345 346 /** 347 * 複数配送入力フォームで入力された値を SC_FormParam へ設定する. 348 * 349 * @param SC_FormParam $objFormParam SC_FormParam インスタンス 350 * @return void 351 */ 352 function setMultipleItemTo(&$objFormParam) { 353 $arrMultipleKey = array('multiple_shipping_id', 354 'multiple_product_class_id', 355 'multiple_product_name', 356 'multiple_product_code', 357 'multiple_classcategory_name1', 358 'multiple_classcategory_name2', 359 'multiple_price', 360 'multiple_quantity'); 361 $arrMultipleParams = $objFormParam->getSwapArray($arrMultipleKey); 362 363 /* 364 * 複数配送フォームの入力値を shipping_id ごとにマージ 365 * 366 * $arrShipmentItem[配送先ID][商品規格ID]['shipment_(key)'] = 値 367 */ 432 368 $arrShipmentItem = array(); 433 for ($i = 0; $i < $size; $i++) { 434 $shippingId = $this->objFormParam->getValue('multiple_shipping' . $i); 435 $productClassId = $this->objFormParam->getValue('multiple_product_class_id' . $i); 436 437 $name = $this->objFormParam->getValue('multiple_product_name' . $i); 438 $code = $this->objFormParam->getValue('multiple_product_code' . $i); 439 $class1 = $this->objFormParam->getValue('multiple_classcategory_name1' . $i); 440 $class2 = $this->objFormParam->getValue('multiple_classcategory_name2' . $i); 441 $price = $this->objFormParam->getValue('multiple_price' . $i); 442 $quantity = $this->objFormParam->getValue('multiple_quantity' . $i); 443 444 $this->arrShipping[$shippingId]['shipment_item'][$productClassId]['shipping_id'] = $shippingId; 445 $this->arrShipping[$shippingId]['shipment_item'][$productClassId]['product_class_id'] = $productClassId; 446 $this->arrShipping[$shippingId]['shipment_item'][$productClassId]['product_name'] = $name; 447 $this->arrShipping[$shippingId]['shipment_item'][$productClassId]['product_code'] = $code; 448 $this->arrShipping[$shippingId]['shipment_item'][$productClassId]['classcategory_name1'] = $class1; 449 $this->arrShipping[$shippingId]['shipment_item'][$productClassId]['classcategory_name2'] = $class2; 450 $this->arrShipping[$shippingId]['shipment_item'][$productClassId]['price'] = $price; 451 $this->arrShipping[$shippingId]['shipment_item'][$productClassId]['quantity'] += $quantity; 452 } 453 454 $arrQuantity = array(); 455 $this->arrShippingIds = array(); 456 $this->arrProductClassIds = array(); 457 foreach ($this->arrShipping as $shippingId => $items) { 458 459 $this->objFormParam->setValue('shipping_product_quantity' . '_' . $shippingId, count($items['shipment_item'])); 460 461 $this->arrShippingIds[] = $shippingId; 462 $this->arrProductClassIds[] = array_keys($items['shipment_item']); 463 464 foreach ($items['shipment_item'] as $productClassId => $item) { 465 $arrQuantity[$productClassId] += $item['quantity']; 466 foreach ($item as $itemKey => $itemVal) { 467 $arrParam[$itemKey . '_' . $shippingId . '_' . $productClassId] = $itemVal; 468 $this->objFormParam->setValue($itemKey . '_' . $shippingId . '_' . $productClassId, $itemVal); 469 $this->arrForm[$itemKey . '_' . $shippingId . '_' . $productClassId]['value'] = $itemVal; 369 foreach ($arrMultipleParams as $arrMultiple) { 370 $shipping_id = $arrMultiple['multiple_shipping_id']; 371 $product_class_id = $arrMultiple['multiple_product_class_id']; 372 foreach ($arrMultiple as $key => $val) { 373 if ($key == 'multiple_quantity') { 374 $arrShipmentItem[$shipping_id][$product_class_id][str_replace('multiple', 'shipment', $key)] += $val; 375 } else { 376 $arrShipmentItem[$shipping_id][$product_class_id][str_replace('multiple', 'shipment', $key)] = $val; 470 377 } 471 378 } 472 379 } 473 380 381 /* 382 * フォームの配送先ごとの配列を生成 383 * 384 * $arrShipmentForm['(key)'][$shipping_index][$item_index] = 値 385 * $arrProductQuantity[$shipping_index] = 配送先ごとの配送商品数 386 */ 387 $arrShipmentForm = array(); 388 $arrProductQuantity = array(); 389 $arrShippingIds = $objFormParam->getValue('shipping_id'); 390 foreach ($arrShippingIds as $shipping_index => $shipping_id) { 391 $item_index = 0; 392 foreach ($arrShipmentItem[$shipping_id] as $product_class_id => $shipment_item) { 393 foreach ($shipment_item as $key => $val) { 394 $arrShipmentForm[$key][$shipping_index][$item_index] = $val; 395 } 396 // 受注商品の数量を設定 397 $arrQuantity[$product_class_id] += $shipment_item['shipment_quantity']; 398 $item_index++; 399 } 400 // 配送先ごとの配送商品数を設定 401 $arrProductQuantity[$shipping_index] = count($arrShipmentItem[$shipping_id]); 402 } 403 404 $objFormParam->setParam($arrShipmentForm); 405 $objFormParam->setValue('shipping_product_quantity', $arrProductQuantity); 406 474 407 // 受注商品の数量を変更 475 $ dest = array();476 foreach ($arrQuantity as $product ClassId => $quantity) {477 foreach ($ this->arrForm['product_class_id'] as $n => $orderProductClassId) {478 if ($product ClassId == $orderProductClassId) {479 $ dest['quantity'][$n] = $quantity;408 $arrDest = array(); 409 foreach ($arrQuantity as $product_class_id => $quantity) { 410 foreach ($objFormParam->getValue('product_class_id') as $n => $order_product_class_id) { 411 if ($product_class_id == $order_product_class_id) { 412 $arrDest['quantity'][$n] = $quantity; 480 413 } 481 414 } 482 415 } 483 484 // $this->arrShipping の内容で, 再度パラメータを初期化する 485 $this->lfInitShippingParam($this->arrShipping); 486 $this->objFormParam->setParam($arrParam); 487 $this->objFormParam->setParam($dest); 488 } 489 490 function lfGetOrderData($order_id) { 491 if(SC_Utils_Ex::sfIsInt($order_id)) { 492 // DBから受注情報を読み込む 493 $objQuery = new SC_Query(); 494 $objDb = new SC_Helper_DB_Ex(); 495 $where = "order_id = ?"; 496 $arrRet = $objQuery->select("*", "dtb_order", $where, array($order_id)); 497 $this->objFormParam->setParam($arrRet[0]); 498 list($db_point, $rollback_point) = $objDb->sfGetRollbackPoint($order_id, $arrRet[0]['use_point'], $arrRet[0]['add_point']); 499 $this->objFormParam->setValue('total_point', $db_point); 500 $this->objFormParam->setValue('point', $rollback_point); 501 $this->arrForm = $arrRet[0]; 502 503 // 受注詳細データの取得 504 $arrRet = $this->lfGetOrderDetail($order_id); 505 $arrRet = SC_Utils_Ex::sfSwapArray($arrRet); 506 $this->arrForm = array_merge($this->arrForm, $arrRet); 507 $this->objFormParam->setParam($arrRet); 508 509 $this->arrShipping = $this->lfGetShippingData($order_id); 510 $this->lfInitShippingParam($this->arrShipping); 511 512 $this->objFormParam->setValue('shipping_quantity', count($this->arrShipping)); 513 514 // 配送情報の処理 515 foreach ($this->arrShipping as $shipping) { 516 517 $this->arrShippingIds[] = $shipping['shipping_id']; 518 $this->arrProductClassIds[] = array_keys($shipping['shipment_item']); 519 520 // お届け日の取得 521 if (!SC_Utils_Ex::isBlank($shipping["shipping_date"])) { 522 $ts = strtotime($shipping["shipping_date"]); 523 $this->objFormParam->setValue('shipping_date_year_' . $shipping['shipping_id'], date("Y", $ts)); 524 $this->objFormParam->setValue('shipping_date_month_' . $shipping['shipping_id'], date("n", $ts)); 525 $this->objFormParam->setValue('shipping_date_day_' . $shipping['shipping_id'], date("j", $ts)); 416 $objFormParam->setParam($arrDest); 417 } 418 419 /** 420 * 受注データを取得して, SC_FormParam へ設定する. 421 * 422 * @param SC_FormParam $objFormParam SC_FormParam インスタンス 423 * @param integer $order_id 取得元の受注ID 424 * @return void 425 */ 426 function setOrderToFormParam(&$objFormParam, $order_id) { 427 $objPurchase = new SC_Helper_Purchase_Ex(); 428 429 // 受注詳細を設定 430 $arrOrderDetail = $objPurchase->getOrderDetail($order_id, false); 431 $objFormParam->setParam(SC_Utils_Ex::sfSwapArray($arrOrderDetail)); 432 433 $arrShippings = $objPurchase->getShippings($order_id); 434 // お届け日の処理 435 foreach (array_keys($arrShippings) as $key) { 436 $shipping =& $arrShippings[$key]; 437 if (!SC_Utils_Ex::isBlank($shipping["shipping_date"])) { 438 $ts = strtotime($shipping["shipping_date"]); 439 $arrShippings[$key]['shipping_date_year'] = date("Y", $ts); 440 $arrShippings[$key]['shipping_date_month'] = date("n", $ts); 441 $arrShippings[$key]['shipping_date_day'] = date("j", $ts); 442 } 443 } 444 $objFormParam->setValue('shipping_quantity', count($arrShippings)); 445 $objFormParam->setParam(SC_Utils_Ex::sfSwapArray($arrShippings)); 446 447 /* 448 * 配送商品を設定 449 * 450 * $arrShipmentItem['shipment_(key)'][$shipping_index][$item_index] = 値 451 * $arrProductQuantity[$shipping_index] = 配送先ごとの配送商品数 452 */ 453 $arrProductQuantity = array(); 454 $arrShipmentItem = array(); 455 foreach ($arrShippings as $shipping_index => $arrShipping) { 456 $arrProductQuantity[$shipping_index] = count($arrShipping['shipment_item']); 457 foreach ($arrShipping['shipment_item'] as $item_index => $arrItem) { 458 foreach ($arrItem as $item_key => $item_val) { 459 $arrShipmentItem['shipment_' . $item_key][$shipping_index][$item_index] = $item_val; 526 460 } 527 528 // 配送内容の処理 529 foreach ($shipping as $shippingKey => $shippingVal) { 530 531 $this->objFormParam->setValue($shippingKey . '_' . $shipping['shipping_id'], $shippingVal); 532 533 $this->objFormParam->setValue('shipping_product_quantity' . '_' . $shipping['shipping_id'], count($shipping['shipment_item'])); 534 535 // 配送商品の処理 536 foreach ($shipping['shipment_item'] as $productClassId => $item) { 537 foreach ($item as $itemKey => $itemVal) { 538 $this->objFormParam->setValue($itemKey . '_' . $shipping['shipping_id'] . '_' . $productClassId, $itemVal); 539 $this->arrForm[$itemKey . '_' . $shipping['shipping_id'] . '_' . $productClassId]['value'] = $itemVal; 540 } 541 } 542 } 543 } 544 545 // その他支払い情報を表示 546 if($this->arrForm["memo02"] != "") $this->arrForm["payment_info"] = unserialize($this->arrForm["memo02"]); 547 if($this->arrForm["memo01"] == PAYMENT_CREDIT_ID){ 548 $this->arrForm["payment_type"] = "クレジット決済"; 549 }elseif($this->arrForm["memo01"] == PAYMENT_CONVENIENCE_ID){ 550 $this->arrForm["payment_type"] = "コンビニ決済"; 551 }else{ 552 $this->arrForm["payment_type"] = "お支払い"; 553 } 554 // 受注データを表示用配列に代入(各EC-CUBEバージョンと決済モジュールとのデータ連携保全のため) 555 $this->arrDisp = $this->arrForm; 556 } else { 557 $this->lfInitShippingParam($this->arrShipping); 558 $this->objFormParam->setParam($_POST); 559 } 560 } 561 562 // 受注詳細データの取得 563 function lfGetOrderDetail($order_id) { 564 $objQuery = new SC_Query(); 565 $col = "T1.product_id, T1.product_class_id, T1.product_name, " 566 . "T1.product_code, T1.classcategory_name1, T1.classcategory_name2, " 567 . "T1.price, T1.quantity, T1.point_rate, T2.product_type_id"; 568 $from = <<< __EOS__ 569 dtb_order_detail T1 570 JOIN dtb_products_class T2 571 ON T1.product_class_id = T2.product_class_id 572 __EOS__; 573 $arrRet = $objQuery->select($col, $from, 574 "order_id = ?", array($order_id)); 575 return $arrRet; 576 } 577 578 /** 579 * 配送情報の取得. 580 * TODO リファクタリング 581 */ 582 function lfGetShippingData($orderId) { 583 $objQuery =& SC_Query::getSingletonInstance(); 584 $objProduct = new SC_Product(); 585 $objQuery->setOrder('shipping_id'); 586 $arrRet = $objQuery->select("*", "dtb_shipping", "order_id = ?", array($orderId)); 587 foreach (array_keys($arrRet) as $key) { 588 $objQuery->setOrder('shipping_id'); 589 $arrItems = $objQuery->select("*", "dtb_shipment_item", "order_id = ? AND shipping_id = ?", 590 array($orderId, $arrRet[$key]['shipping_id'])); 591 foreach ($arrItems as $itemKey => $arrDetail) { 592 foreach ($arrDetail as $detailKey => $detailVal) { 593 $arrRet[$key]['shipment_item'][$arrDetail['product_class_id']][$detailKey] = $detailVal; 594 } 595 596 $arrRet[$key]['shipment_item'][$arrDetail['product_class_id']]['productsClass'] =& $objProduct->getDetailAndProductsClass($arrDetail['product_class_id']); 597 } 598 } 599 return $arrRet; 600 } 601 602 /* 入力内容のチェック */ 603 function lfCheckError() { 604 // 入力データを渡す。 605 $arrRet = $this->objFormParam->getHashArray(); 606 $objErr = new SC_CheckError($arrRet); 607 $objErr->arrErr = $this->objFormParam->checkError(); 608 609 if (count($objErr->arrErr) >= 1) { 461 } 462 } 463 $objFormParam->setValue('shipping_product_quantity', $arrProductQuantity); 464 $objFormParam->setParam($arrShipmentItem); 465 466 /* 467 * 受注情報を設定 468 * $arrOrderDetail と項目が重複しており, $arrOrderDetail は連想配列の値 469 * が渡ってくるため, $arrOrder で上書きする. 470 */ 471 $arrOrder = $objPurchase->getOrder($order_id); 472 $objFormParam->setParam($arrOrder); 473 474 // XXX ポイントを設定 475 list($db_point, $rollback_point) = SC_Helper_DB_Ex::sfGetRollbackPoint($order_id, $arrOrder['use_point'], $arrOrder['add_point']); 476 $objFormParam->setValue('total_point', $db_point); 477 $objFormParam->setValue('point', $rollback_point); 478 } 479 480 /** 481 * 入力内容のチェックを行う. 482 * 483 * @param SC_FormParam $objFormParam SC_FormParam インスタンス 484 * @return array エラーメッセージの配列 485 */ 486 function lfCheckError(&$objFormParam) { 487 $objErr->arrErr = $objFormParam->checkError(); 488 489 if (!SC_Utils_Ex::isBlank($objErr->arrErr)) { 610 490 return $objErr->arrErr; 611 491 } 612 492 613 return $this->lfCheek(); 614 } 615 616 /* 計算処理 */ 617 function lfCheek() { 618 $objDb = new SC_Helper_DB_Ex(); 619 $arrVal = $this->objFormParam->getHashArray(); 620 $arrErr = array(); 493 $arrValues = $objFormParam->getHashArray(); 621 494 622 495 // 商品の種類数 623 $max = count($arrVal ['quantity']);496 $max = count($arrValues['quantity']); 624 497 $subtotal = 0; 625 498 $totalpoint = 0; … … 627 500 for($i = 0; $i < $max; $i++) { 628 501 // 小計の計算 629 $subtotal += SC_Helper_DB_Ex::sfCalcIncTax($arrVal ['price'][$i]) * $arrVal['quantity'][$i];502 $subtotal += SC_Helper_DB_Ex::sfCalcIncTax($arrValues['price'][$i]) * $arrValues['quantity'][$i]; 630 503 // 小計の計算 631 $totaltax += SC_Helper_DB_Ex::sfTax($arrVal ['price'][$i]) * $arrVal['quantity'][$i];504 $totaltax += SC_Helper_DB_Ex::sfTax($arrValues['price'][$i]) * $arrValues['quantity'][$i]; 632 505 // 加算ポイントの計算 633 $totalpoint += SC_Utils_Ex::sfPrePoint($arrVal ['price'][$i], $arrVal['point_rate'][$i]) * $arrVal['quantity'][$i];506 $totalpoint += SC_Utils_Ex::sfPrePoint($arrValues['price'][$i], $arrValues['point_rate'][$i]) * $arrValues['quantity'][$i]; 634 507 } 635 508 636 509 // 消費税 637 $arrVal ['tax'] = $totaltax;510 $arrValues['tax'] = $totaltax; 638 511 // 小計 639 $arrVal ['subtotal'] = $subtotal;512 $arrValues['subtotal'] = $subtotal; 640 513 // 合計 641 $arrVal ['total'] = $subtotal - $arrVal['discount'] + $arrVal['deliv_fee'] + $arrVal['charge'];514 $arrValues['total'] = $subtotal - $arrValues['discount'] + $arrValues['deliv_fee'] + $arrValues['charge']; 642 515 // お支払い合計 643 $arrVal ['payment_total'] = $arrVal['total'] - ($arrVal['use_point'] * POINT_VALUE);516 $arrValues['payment_total'] = $arrValues['total'] - ($arrValues['use_point'] * POINT_VALUE); 644 517 645 518 // 加算ポイント 646 $arrVal ['add_point'] = SC_Helper_DB_Ex::sfGetAddPoint($totalpoint, $arrVal['use_point']);519 $arrValues['add_point'] = SC_Helper_DB_Ex::sfGetAddPoint($totalpoint, $arrValues['use_point']); 647 520 648 521 // 最終保持ポイント 649 $arrVal['total_point'] = $this->objFormParam->getValue('point') - $arrVal['use_point'] + $arrVal['add_point']; 650 651 if ($arrVal['total'] < 0) { 652 $arrErr['total'] = '合計額がマイナス表示にならないように調整して下さい。<br />'; 653 } 654 655 if ($arrVal['payment_total'] < 0) { 656 $arrErr['payment_total'] = 'お支払い合計額がマイナス表示にならないように調整して下さい。<br />'; 657 } 658 //新規追加受注のみ TODO 要リファクタリング(MODE if利用) 659 if ($this->getMode() == "add") { 660 if ($arrVal['total_point'] < 0) { 661 $arrErr['use_point'] = '最終保持ポイントがマイナス表示にならないように調整して下さい。<br />'; 662 } 663 } 664 665 $this->objFormParam->setParam($arrVal); 666 return $arrErr; 522 $arrValues['total_point'] = $objFormParam->getValue('point') - $arrValues['use_point'] + $arrValues['add_point']; 523 524 if ($arrValues['total'] < 0) { 525 $objErr->arrErr['total'] = '合計額がマイナス表示にならないように調整して下さい。<br />'; 526 } 527 528 if ($arrValues['payment_total'] < 0) { 529 $objErr->arrErr['payment_total'] = 'お支払い合計額がマイナス表示にならないように調整して下さい。<br />'; 530 } 531 532 if ($arrValues['total_point'] < 0) { 533 $objErr->arrErr['use_point'] = '最終保持ポイントがマイナス表示にならないように調整して下さい。<br />'; 534 } 535 536 $objFormParam->setParam($arrValues); 537 return $objErr->arrErr; 667 538 } 668 539 … … 670 541 * DB更新処理 671 542 * 672 * TODO リファクタリング673 * 674 * @param integer $order_id 注文番号675 * @return void676 */ 677 function lfRegistData($order_id, &$objPurchase) {678 $objQuery = new SC_Query(); 679 680 $ sqlval = $this->lfMakeSqlvalForDtbOrder();543 * @param integer $order_id 受注ID 544 * @param SC_Helper_Purchase $objPurchase SC_Helper_Purchase インスタンス 545 * @param SC_FormParam $objFormParam SC_FormParam インスタンス 546 * @return integer $order_id 受注ID 547 */ 548 function doRegister($order_id, &$objPurchase, &$objFormParam) { 549 550 $objQuery =& SC_Query::getSingletonInstance(); 551 $arrValues = $objFormParam->getDbArray(); 681 552 682 553 $where = "order_id = ?"; … … 684 555 $objQuery->begin(); 685 556 686 // 受注.対応状況の更新687 SC_Helper_DB_Ex::sfUpdateOrderStatus($order_id, $sqlval['status'], $sqlval['add_point'], $sqlval['use_point'], $sqlval);688 689 557 // 受注テーブルの更新 690 $this->registerOrder($sqlval, $order_id); 691 692 // 受注テーブルの名称列を更新 693 //SC_Helper_DB_Ex::sfUpdateOrderNameCol($order_id); 694 695 $arrDetail = $this->objFormParam->getSwapArray(array("product_id", "product_class_id", "product_code", "product_name", "price", "quantity", "point_rate", "classcategory_name1", "classcategory_name2")); 696 558 $order_id = $objPurchase->registerOrder($order_id, $arrValues); 559 560 $arrDetail = $objFormParam->getSwapArray(array("product_id", 561 "product_class_id", 562 "product_code", 563 "product_name", 564 "price", "quantity", 565 "point_rate", 566 "classcategory_name1", 567 "classcategory_name2")); 697 568 698 569 // 変更しようとしている商品情報とDBに登録してある商品情報を比較することで、更新すべき数量を計算 … … 726 597 } 727 598 728 // 受注詳細データの初期化729 $objQuery->delete("dtb_order_detail", $where, array($order_id));730 731 599 // 受注詳細データの更新 732 $max = count($arrDetail); 733 for ($i = 0; $i < $max; $i++) { 734 $sqlval = array(); 735 $sqlval['order_id'] = $order_id; 736 $sqlval['product_id'] = $arrDetail[$i]['product_id']; 737 $sqlval['product_class_id'] = $arrDetail[$i]['product_class_id']; 738 $sqlval['product_code'] = $arrDetail[$i]['product_code']; 739 $sqlval['product_name'] = $arrDetail[$i]['product_name']; 740 $sqlval['price'] = $arrDetail[$i]['price']; 741 $sqlval['quantity'] = $arrDetail[$i]['quantity']; 742 $sqlval['point_rate'] = $arrDetail[$i]['point_rate']; 743 $sqlval['classcategory_name1'] = $arrDetail[$i]['classcategory_name1']; 744 $sqlval['classcategory_name2'] = $arrDetail[$i]['classcategory_name2']; 745 $objQuery->insert("dtb_order_detail", $sqlval); 746 } 600 $objPurchase->registerOrderDetail($order_id, $arrDetail); 747 601 748 602 // 在庫数調整 749 $status = $sqlval['status']; 750 if (ORDER_DELIV != $status && ORDER_CANCEL != $status) { 751 $stock_sql = "UPDATE dtb_products_class SET stock = stock + ? WHERE product_class_id = ?"; 752 foreach ($arrStockData AS $key=>$val) { 753 $stock_sqlval = array(); 754 $stock_sqlval[] = $val['quantity']; 755 $stock_sqlval[] = $val['product_class_id']; 756 757 $objQuery->query($stock_sql, $stock_sqlval); 758 } 759 } 760 761 // 配送情報の初期化 762 // FIXME UPDATE/INSERT にする 763 $objQuery->delete('dtb_shipping', "order_id = ?", array($order_id)); 764 $objQuery->delete('dtb_shipment_item', "order_id = ?", array($order_id)); 765 766 // $arrParams = $this->objFormParam->getHashArray(); 767 $arrParams = $_POST; 768 // 配送ID の配列を取得 769 $shippingIds = array(); 770 foreach (array_keys($arrParams) as $key) { 771 if (preg_match('/^shipping_id_/', $key)) { 772 $shippingIds[] = $arrParams[$key]; 773 } 774 } 775 776 $cols = $objQuery->listTableFields('dtb_shipping'); 777 778 foreach ($shippingIds as $shipping_id) { 779 780 $arrParams['shipping_date_' . $shipping_id] = SC_Utils_Ex::sfGetTimestamp($arrParams['shipping_date_year_' . $shipping_id], 781 $arrParams['shipping_date_month_' . $shipping_id], 782 $arrParams['shipping_date_day_' . $shipping_id]); 783 $dest = array(); 784 foreach ($arrParams as $key => $val) { 785 $key = preg_replace('/_' . $shipping_id . '$/', '', $key); 786 if (in_array($key, $cols)) { 787 $dest[$key] = $val; 603 if (ORDER_DELIV != $arrValues['status'] 604 && ORDER_CANCEL != $arrValues['status']) { 605 foreach ($arrStockData AS $stock) { 606 $objQuery->update('dtb_products_class', array(), 607 'product_class_id = ?', 608 array($stock['product_class_id']), 609 array('stock' => 'stock + ?'), 610 array($stock['quantity'])); 611 } 612 } 613 614 $arrAllShipping = $objFormParam->getSwapArray(array('shipping_id', 615 'shipping_name01', 616 'shipping_name02', 617 'shipping_kana01', 618 'shipping_kana02', 619 'shipping_tel01', 620 'shipping_tel02', 621 'shipping_tel03', 622 'shipping_fax01', 623 'shipping_fax02', 624 'shipping_fax03', 625 'shipping_pref', 626 'shipping_zip01', 627 'shipping_zip02', 628 'shipping_addr01', 629 'shipping_addr02', 630 'shipping_date_year', 631 'shipping_date_month', 632 'shipping_date_day', 633 'time_id')); 634 635 $arrAllShipmentItem = 636 $objFormParam->getSwapArray(array('shipment_product_class_id', 637 'shipment_product_code', 638 'shipment_product_name', 639 'shipment_classcategory_name1', 640 'shipment_classcategory_name2', 641 'shipment_price', 642 'shipment_quantity')); 643 $arrShippingValues = array(); 644 foreach ($arrAllShipping as $shipping_index => $arrShipping) { 645 $shipping_id = $arrShipping['shipping_id']; 646 $arrShippingValues[$shipping_index] = $arrShipping; 647 648 $arrShippingValues[$shipping_index]['shipping_date'] 649 = SC_Utils_Ex::sfGetTimestamp($arrShipping['shipping_date_year'], 650 $arrShipping['shipping_date_month'], 651 $arrShipping['shipping_date_day']); 652 653 // 配送業者IDを取得 654 $arrShippingValues[$shipping_index]['deliv_id'] = $objFormParam->getValue('deliv_id'); 655 656 // 複数配送の場合は配送商品を登録 657 if (!SC_Utils_Ex::isBlank($arrAllShipmentItem)) { 658 $arrShipmentValues = array(); 659 660 foreach ($arrAllShipmentItem[$shipping_index] as $key => $arrItem) { 661 $i = 0; 662 foreach ($arrItem as $item) { 663 $arrShipmentValues[$shipping_index][$i][str_replace('shipment_', '', $key)] = $item; 664 $i++; 665 } 788 666 } 789 } 790 791 if (SC_Utils::isBlank($dest['deliv_id'])) { 792 // XXX 商品種別IDは0番目の配列を使用 793 $product_type_id = $this->objFormParam->getValue('product_type_id'); 794 $arrDeliv = $objPurchase->getDeliv($product_type_id[0]); 795 $dest['deliv_id'] = $arrDeliv[0]['deliv_id']; 796 } 797 798 $dest['shipping_id'] = $shipping_id; 799 $dest['order_id'] = $order_id; 800 $dest['create_date'] = 'Now()'; 801 $dest['update_date'] = 'Now()'; 802 $objQuery->insert('dtb_shipping', $dest); 803 804 // 商品規格ID の配列を取得 805 $productClassIds = array(); 806 foreach (array_keys($arrParams) as $key) { 807 if (preg_match('/^product_class_id_' . $shipping_id . '_/', $key)) { 808 $productClassIds[] = $arrParams[$key]; 667 $objPurchase->registerShipmentItem($order_id, $shipping_id, 668 $arrShipmentValues[$shipping_index]); 669 } 670 } 671 $objPurchase->registerShipping($order_id, $arrShippingValues, false); 672 $objQuery->commit(); 673 return $order_id; 674 } 675 676 /** 677 * 受注商品の追加/更新を行う. 678 * 679 * 小画面で選択した受注商品をフォームに反映させる. 680 * 681 * @param SC_FormParam $objFormParam SC_FormParam インスタンス 682 * @return void 683 */ 684 function doRegisterProduct(&$objFormParam) { 685 $product_class_id = $objFormParam->getValue('add_product_class_id'); 686 if (SC_Utils_Ex::isBlank($product_class_id)) { 687 $product_class_id = $objFormParam->getValue('edit_product_class_id'); 688 } 689 690 // フォームの内容を更新 691 $exists = false; 692 $arrExistsProductClassIds = $objFormParam->getValue('product_class_id'); 693 foreach (array_keys($arrExistsProductClassIds) as $key) { 694 $exists_product_class_id = $arrExistsProductClassIds[$key]; 695 if ($exists_product_class_id == $product_class_id) { 696 $exists = true; 697 $arrExistsQuantity = $objFormParam->getValue('quantity'); 698 $arrExistsQuantity[$key]++; 699 $objFormParam->setValue('quantity', $arrExistsQuantity); 700 } 701 } 702 703 // 新しく商品を追加した場合はフォームに登録 704 if (!$exists) { 705 $objProduct = new SC_Product(); 706 $arrProduct = $objProduct->getDetailAndProductsClass($product_class_id); 707 $arrProduct['quantity'] = 1; 708 $arrProduct['price'] = $arrProduct['price02']; 709 $arrProduct['product_name'] = $arrProduct['name']; 710 711 $arrUpdateKeys = array('product_id', 'product_class_id', 712 'product_type_id', 'point_rate', 713 'product_code', 'product_name', 714 'classcategory_name1', 'classcategory_name2', 715 'quantity', 'price'); 716 foreach ($arrUpdateKeys as $key) { 717 $arrValues = $objFormParam->getValue($key); 718 $arrValues[] = $arrProduct[$key]; 719 $objFormParam->setValue($key, $arrValues); 720 } 721 } 722 } 723 724 /** 725 * 受注商品を削除する. 726 * 727 * @param integer $delete_no 削除する受注商品の項番 728 * @param SC_FormParam $objFormParam SC_FormParam インスタンス 729 * @return void 730 */ 731 function doDeleteProduct($delete_no, &$objFormParam) { 732 $arrDeleteKeys = array('product_id', 'product_class_id', 733 'product_type_id', 'point_rate', 734 'product_code', 'product_name', 735 'classcategory_name1', 'classcategory_name2', 736 'quantity', 'price'); 737 foreach ($arrDeleteKeys as $key) { 738 $arrNewValues = array(); 739 $arrValues = $objFormParam->getValue($key); 740 foreach ($arrValues as $index => $val) { 741 if ($index != $delete_no) { 742 $arrNewValues[] = $val; 809 743 } 810 744 } 811 812 foreach ($productClassIds as $product_class_id) { 813 $item['shipping_id'] = $shipping_id; 814 $item['order_id'] = $order_id; 815 $item['product_class_id'] = $product_class_id; 816 $item['product_name'] = $arrParams['product_name_' . $shipping_id . '_' . $product_class_id]; 817 $item['product_code'] = $arrParams['product_code_' . $shipping_id . '_' . $product_class_id]; 818 $item['classcategory_name1'] = $arrParams['classcategory_name1_' . $shipping_id . '_' . $product_class_id]; 819 $item['classcategory_name2'] = $arrParams['classcategory_name2_' . $shipping_id . '_' . $product_class_id]; 820 $item['price'] = $arrParams['price_' . $shipping_id . '_' . $product_class_id]; 821 $item['quantity'] = $arrParams['quantity_' . $shipping_id . '_' . $product_class_id]; 822 $objQuery->insert("dtb_shipment_item", $item); 823 } 824 } 825 $objQuery->commit(); 826 } 827 828 /** 829 * DB登録処理 830 * 831 * @return integer 注文番号 832 */ 833 function lfRegistNewData(&$objPurchase) { 834 $objQuery = new SC_Query(); 835 836 $sqlval = $this->lfMakeSqlvalForDtbOrder(); 837 838 // ポイントは別登録 839 $addPoint = $sqlval['add_point']; 840 $usePoint = $sqlval['use_point']; 841 $sqlval['add_point'] = 0; 842 $sqlval['use_point'] = 0; 843 844 // customer_id 845 if ($sqlval["customer_id"] == "") { 846 $sqlval['customer_id'] = '0'; 847 } 848 849 $sqlval['create_date'] = 'Now()'; // 受注日 850 851 $objQuery->begin(); 852 853 // 受注テーブルの登録 854 $order_id = $objQuery->nextVal('dtb_order_order_id'); 855 $sqlval['order_id'] = $order_id; 856 $this->registerOrder($sqlval, $order_id); 857 858 // 受注.対応状況の更新 859 SC_Helper_DB_Ex::sfUpdateOrderStatus($order_id, null, $addPoint, $usePoint); 860 861 // 受注テーブルの名称列を更新 862 //SC_Helper_DB_Ex::sfUpdateOrderNameCol($order_id); 863 864 // 受注詳細データの更新 865 $arrDetail = $this->objFormParam->getSwapArray(array("product_id", "product_class_id", "product_code", "product_name", "price", "quantity", "point_rate", "classcategory_name1", "classcategory_name2")); 866 $objQuery->delete("dtb_order_detail", 'order_id = ?', array($order_id)); 867 868 $max = count($arrDetail); 869 for ($i = 0; $i < $max; $i++) { 870 $sqlval = array(); 871 $sqlval['order_id'] = $order_id; 872 $sqlval['product_id'] = $arrDetail[$i]['product_id']; 873 $sqlval['product_class_id'] = $arrDetail[$i]['product_class_id']; 874 $sqlval['product_code'] = $arrDetail[$i]['product_code']; 875 $sqlval['product_name'] = $arrDetail[$i]['product_name']; 876 $sqlval['price'] = $arrDetail[$i]['price']; 877 $sqlval['quantity'] = $arrDetail[$i]['quantity']; 878 $sqlval['point_rate'] = $arrDetail[$i]['point_rate']; 879 $sqlval['classcategory_name1'] = $arrDetail[$i]['classcategory_name1']; 880 $sqlval['classcategory_name2'] = $arrDetail[$i]['classcategory_name2']; 881 882 $objQuery->insert("dtb_order_detail", $sqlval); 883 884 885 // 在庫数減少処理 886 // 現在の実在庫数取得 887 $pre_stock = $objQuery->getOne("SELECT stock FROM dtb_products_class WHERE product_class_id = ?", array($arrDetail[$i]['product_class_id'])); 888 889 $stock_sqlval = array(); 890 $stock_sqlval['stock'] = intval($pre_stock - $arrDetail[$i]['quantity']); 891 if ($stock_sqlval['stock'] === 0) { 892 $stock_sqlval['stock'] = '0'; 893 } 894 895 $st_params = array(); 896 $st_params[] = $arrDetail[$i]['product_class_id']; 897 898 $objQuery->update("dtb_products_class", $stock_sqlval, 'product_class_id = ?', $st_params); 899 } 900 901 $arrParams = $this->objFormParam->getHashArray(); 902 // 配送ID の配列を取得 903 $shippingIds = array(); 904 foreach (array_keys($arrParams) as $key) { 905 if (preg_match('/^shipping_id_/', $key)) { 906 $shippingIds[] = $arrParams[$key]; 907 } 908 } 909 910 $cols = $objQuery->listTableFields('dtb_shipping'); 911 foreach ($shippingIds as $shipping_id) { 912 913 $arrParams['shipping_date_' . $shipping_id] = SC_Utils_Ex::sfGetTimestamp($arrParams['shipping_date_year_' . $shipping_id], 914 $arrParams['shipping_date_month_' . $shipping_id], 915 $arrParams['shipping_date_day_' . $shipping_id]); 916 $dest = array(); 917 foreach ($arrParams as $key => $val) { 918 $key = preg_replace('/_' . $shipping_id . '$/', '', $key); 919 if (in_array($key, $cols)) { 920 $dest[$key] = $val; 921 } 922 } 923 if (SC_Utils::isBlank($dest['deliv_id'])) { 924 // XXX 商品種別IDは0番目の配列を使用 925 $product_type_id = $this->objFormParam->getValue('product_type_id'); 926 $arrDeliv = $objPurchase->getDeliv($product_type_id[0]); 927 $dest['deliv_id'] = $arrDeliv[0]['deliv_id']; 928 } 929 930 $dest['shipping_id'] = $shipping_id; 931 $dest['order_id'] = $order_id; 932 $dest['create_date'] = 'Now()'; 933 $dest['update_date'] = 'Now()'; 934 $objQuery->insert('dtb_shipping', $dest); 935 936 // 商品規格ID の配列を取得 937 $productClassIds = array(); 938 foreach (array_keys($arrParams) as $key) { 939 if (preg_match('/^product_class_id_' . $shipping_id . '_/', $key)) { 940 $productClassIds[] = $arrParams[$key]; 941 } 942 } 943 944 foreach ($productClassIds as $product_class_id) { 945 $item['shipping_id'] = $shipping_id; 946 $item['order_id'] = $order_id; 947 $item['product_class_id'] = $product_class_id; 948 $item['product_name'] = $arrParams['product_name_' . $shipping_id . '_' . $product_class_id]; 949 $item['product_code'] = $arrParams['product_code_' . $shipping_id . '_' . $product_class_id]; 950 $item['classcategory_name1'] = $arrParams['classcategory_name1_' . $shipping_id . '_' . $product_class_id]; 951 $item['classcategory_name2'] = $arrParams['classcategory_name2_' . $shipping_id . '_' . $product_class_id]; 952 $item['price'] = $arrParams['price_' . $shipping_id . '_' . $product_class_id]; 953 $item['quantity'] = $arrParams['quantity_' . $shipping_id . '_' . $product_class_id]; 954 $objQuery->insert("dtb_shipment_item", $item); 955 } 956 } 957 958 $objQuery->commit(); 959 960 return $order_id; 961 } 962 963 /** 964 * 受注を登録する 965 */ 966 function registerOrder($sqlval, $order_id) { 967 $table = 'dtb_order'; 968 $objQuery = SC_Query::getSingletonInstance(); 969 $cols = $objQuery->listTableFields($table); 970 $dest = array(); 971 foreach ($sqlval as $key => $val) { 972 if (in_array($key, $cols)) { 973 $dest[$key] = $val; 974 } 975 } 976 977 $exists = $objQuery->count("dtb_order", "order_id = ?", array($order_id)); 978 if ($exists > 0) { 979 $objQuery->update($table, $dest, "order_id = ?", array($order_id)); 980 } else { 981 $dest['order_id'] = $order_id; 982 $result = $objQuery->insert($table, $dest); 983 } 984 } 985 986 function lfInsertProduct($product_class_id) { 987 $objProduct = new SC_Product(); 988 $arrProduct = $this->lfGetProductsClass($objProduct->getDetailAndProductsClass($product_class_id)); 989 $this->arrForm = $this->objFormParam->getFormParamList(); 990 $existes = false; 991 $existes_key = NULL; 992 // 既に同じ商品がないか、確認する 993 if (!empty($this->arrForm['product_class_id']['value'])) { 994 foreach ($this->arrForm['product_class_id']['value'] AS $key=>$val) { 995 // 既に同じ商品がある場合 996 if ($val == $product_class_id) { 997 $existes = true; 998 $existes_key = $key; 999 } 1000 } 1001 } 1002 1003 if ($existes) { 1004 // 既に同じ商品がある場合 1005 ++$this->arrForm['quantity']['value'][$existes_key]; 1006 } else { 1007 // 既に同じ商品がない場合 1008 $this->lfSetProductData($arrProduct); 1009 } 1010 } 1011 1012 function lfUpdateProduct($product_class_id, $no) { 1013 $objProduct = new SC_Product(); 1014 $arrProduct = $this->lfGetProductsClass($objProduct->getDetailAndProductsClass($product_class_id)); 1015 $this->arrForm = $this->objFormParam->getFormParamList(); 1016 $this->lfSetProductData($arrProduct, $no); 1017 } 1018 1019 function lfSetProductData($arrProduct, $no = null) { 1020 foreach ($arrProduct AS $key=>$val) { 1021 if (!is_array($this->arrForm[$key]['value'])) { 1022 unset($this->arrForm[$key]['value']); 1023 } 1024 if ($no === null) { 1025 $this->arrForm[$key]['value'][] = $val; 1026 } else { 1027 $this->arrForm[$key]['value'][$no] = $val; 1028 } 1029 } 1030 } 1031 1032 function lfGetProductsClass($productsClass) { 1033 $arrProduct['price'] = $productsClass['price02']; 1034 $arrProduct['quantity'] = 1; 1035 $arrProduct['product_id'] = $productsClass['product_id']; 1036 $arrProduct['product_class_id'] = $productsClass['product_class_id']; 1037 $arrProduct['product_type_id'] = $productsClass['product_type_id']; 1038 $arrProduct['point_rate'] = $productsClass['point_rate']; 1039 $arrProduct['product_code'] = $productsClass['product_code']; 1040 $arrProduct['product_name'] = $productsClass['name']; 1041 $arrProduct['classcategory_name1'] = $productsClass['classcategory_name1']; 1042 $arrProduct['classcategory_name2'] = $productsClass['classcategory_name2']; 1043 return $arrProduct; 1044 } 1045 1046 1047 /** 1048 * 検索結果から顧客IDを指定された場合、顧客情報をフォームに代入する 1049 * @param int $edit_customer_id 顧客ID 1050 */ 1051 function lfSetCustomerInfo($edit_customer_id = ""){ 1052 // 顧客IDが指定されている場合のみ、処理を実行する 1053 if( $edit_customer_id === "" ) return ; 1054 1055 // 検索で選択された顧客IDが入力されている場合 1056 if( is_null($edit_customer_id) === false && 0 < strlen($edit_customer_id) && SC_Utils_Ex::sfIsInt($edit_customer_id) ){ 1057 $objQuery = new SC_Query(); 1058 1059 // 顧客情報を取得する 1060 $arrCustomerInfo = $objQuery->select('*', 'dtb_customer', 'customer_id = ? AND del_flg = 0', array($edit_customer_id)); 1061 1062 // 顧客情報を取得する事が出来たら、テンプレートに値を渡す 1063 if( 0 < count($arrCustomerInfo) && is_array($arrCustomerInfo) === true){ 1064 // カラム名にorder_を付ける(テンプレート側でorder_がついている為 1065 foreach($arrCustomerInfo[0] as $index=>$customer_info){ 1066 // customer_idにはorder_を付けないようにする 1067 $order_index = ($index == 'customer_id') ? $index : 'order_'.$index; 1068 $arrCustomer[$order_index] = $customer_info; 1069 } 1070 } 1071 1072 // hiddenに渡す 1073 $this->edit_customer_id = $edit_customer_id; 1074 1075 // 受注日に現在の時刻を取得し、表示させる 1076 $create_date = $objQuery->getAll('SELECT now() as create_date;'); 1077 $arrCustomer['create_date'] = $create_date[0]['create_date']; 1078 1079 // 情報上書き 1080 $this->objFormParam->setParam($arrCustomer); 1081 // 入力値の変換 1082 $this->objFormParam->convParam(); 1083 } 1084 } 1085 1086 /** 1087 * 受注テーブルの登録・更新用データの共通部分を作成する 1088 * 1089 * @return array 1090 */ 1091 function lfMakeSqlvalForDtbOrder() { 1092 1093 // 入力データを取得する 1094 $sqlval = $this->objFormParam->getHashArray(); 1095 foreach ($sqlval as $key => $val) { 1096 // 配列は登録しない 1097 if (is_array($val)) { 1098 unset($sqlval[$key]); 1099 } 1100 } 1101 1102 // 受注テーブルに書き込まない列を除去 1103 unset($sqlval['total_point']); 1104 unset($sqlval['point']); 1105 unset($sqlval['commit_date']); 1106 1107 // 更新日時 1108 $sqlval['update_date'] = 'Now()'; 1109 1110 return $sqlval; 745 $objFormParam->setValue($key, $arrNewValues); 746 } 747 } 748 749 /** 750 * お届け先を追加する. 751 * 752 * @param SC_FormParam $objFormParam SC_FormParam インスタンス 753 * @return void 754 */ 755 function addShipping(&$objFormParam) { 756 $objFormParam->setValue('shipping_quantity', 757 $objFormParam->getValue('shipping_quantity') + 1); 758 $arrShippingIds = $objFormParam->getValue('shipping_id'); 759 $arrShippingIds[] = max($arrShippingIds) + 1; 760 $objFormParam->setValue('shipping_id', $arrShippingIds); 761 } 762 763 /** 764 * 顧客情報をフォームに設定する. 765 * 766 * @param integer $customer_id 顧客ID 767 * @param SC_FormParam $objFormParam SC_FormParam インスタンス 768 * @return void 769 */ 770 function setCustomerTo($customer_id, &$objFormParam) { 771 $arrCustomer = SC_Helper_Customer_Ex::sfGetCustomerDataFromId($customer_id); 772 foreach ($arrCustomer as $key => $val) { 773 $objFormParam->setValue('order_' . $key, $val); 774 } 775 $objFormParam->setValue('customer_id', $customer_id); 776 } 777 778 /** 779 * アンカーキーを取得する. 780 * 781 * @param SC_FormParam $objFormParam SC_FormParam インスタンス 782 * @return アンカーキーの文字列 783 */ 784 function getAnchorKey(&$objFormParam) { 785 $ancor_key = $objFormParam->getValue('anchor_key'); 786 if (!SC_Utils_Ex::isBlank($ancor_key)) { 787 return "location.hash='#" . htmlentities(urlencode($ancor_key), ENT_QUOTES) . "'"; 788 } 789 return ''; 1111 790 } 1112 791 } -
branches/version-2_5-dev/data/class/pages/admin/order/LC_Page_Admin_Order_Status.php
r20116 r20180 172 172 */ 173 173 function lfStatusMove($statusId, $arrOrderId) { 174 $objPurchase = new SC_Helper_Purchase_Ex(); 174 175 $objQuery = new SC_Query(); 175 176 … … 183 184 184 185 foreach ($arrOrderId as $orderId) { 185 SC_Helper_DB_Ex::sfUpdateOrderStatus($orderId, $statusId);186 $objPurchase->sfUpdateOrderStatus($orderId, $statusId); 186 187 } 187 188
Note: See TracChangeset
for help on using the changeset viewer.