Changeset 20180


Ignore:
Timestamp:
2011/02/17 19:40:06 (13 years ago)
Author:
nanasess
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
Message:

#975([管理画面]受注管理(受注一覧、登録編集))

  • 受注登録/編集ページ
  • 配送方法を選択できるよう追加カスタマイズ

#642(共通ロジックの機能向上)

  • SC_FormParam の処理を多次元配列へ対応
  • SC_Helper_DB::sfUpdateOrderNameCol(), SC_Helper_DB::sfUpdateOrderStatus() を SC_Helper_Purchase へ移動
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  
    2727        document.form1.action = '<!--{$smarty.const.ROOT_URLPATH}--><!--{$smarty.const.ADMIN_DIR}-->customer/edit.php'; 
    2828        document.form1.mode.value = "edit" 
    29         document.form1['edit_customer_id'].value = customer_id; 
     29        document.form1['customer_id'].value = customer_id; 
    3030        document.form1.submit(); 
    3131        return false; 
     
    3434    function fnCopyFromOrderData() { 
    3535        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; 
    4948    } 
    5049 
     
    7372</script> 
    7473<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}-->" /> 
    7776<input type="hidden" name="edit_customer_id" value="" /> 
    7877<input type="hidden" name="anchor_key" value="" /> 
     
    9190        <tr> 
    9291            <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> 
    9493        </tr> 
    9594        <!--{/if}--> 
     
    10099        <tr> 
    101100            <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> 
    103102        </tr> 
    104103        <tr> 
     
    118117        <tr> 
    119118            <th>入金日</th> 
    120             <td><!--{$arrForm.payment_date.value|sfDispDBDate|default:"未入金"}--></td> 
     119            <td><!--{$arrForm.payment_date.value|sfDispDBDate|default:"未入金"|h}--></td> 
    121120        </tr> 
    122121        <tr> 
    123122            <th>発送日</th> 
    124             <td><!--{$arrForm.commit_date.value|sfDispDBDate|default:"未発送"}--></td> 
     123            <td><!--{$arrForm.commit_date.value|sfDispDBDate|default:"未発送"|h}--></td> 
    125124        </tr> 
    126125    </table> 
     
    140139                <!--{if $arrForm.customer_id.value > 0}--> 
    141140                    <!--{$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}-->" /> 
    143142                <!--{else}--> 
    144143                   (非会員) 
     
    240239    <h2 id="order_products"> 
    241240        受注商品情報 
    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> 
    244243    </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> 
    249247    <!--{/if}--> 
     248 
    250249    <table class="list" id="order-edit-products"> 
    251250        <tr> 
     
    258257        </tr> 
    259258        <!--{section name=cnt loop=$arrForm.quantity.value}--> 
    260         <!--{assign var=key value="`$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}-->" /> 
    271270                <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}-->&amp;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> 
    275274                <!--{/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]`}--> 
    285292            <td class="right"><!--{$price|sfCalcIncTax:$arrInfo.tax:$arrInfo.tax_rule|number_format}--> 円</td> 
    286293            <td class="right"><!--{$price|sfCalcIncTax:$arrInfo.tax:$arrInfo.tax_rule|sfMultiply:$quantity|number_format}-->円</td> 
     
    376383    <!--{assign var=shipping_index value="`$smarty.section.shipping.index`"}--> 
    377384 
    378     <!--{assign var=shipping_id value=$arrShippingIds[$shipping_index]}--> 
    379385    <!--{if $arrForm.shipping_quantity.value > 1}--> 
    380386    <h3>お届け先<!--{$smarty.section.shipping.iteration}--></h3> 
    381387    <!--{/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}-->" /> 
    383390    <!--{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}--> 
    388395    <table class="list" id="order-edit-products"> 
    389396      <tr> 
     
    393400        <th class="qty">数量</th> 
    394401      </tr> 
    395       <!--{section name=item loop=$arrForm[$product_quantity].value}--> 
     402      <!--{section name=item loop=$arrForm[$product_quantity].value[$shipping_index]}--> 
    396403      <!--{assign var=item_index value="`$smarty.section.item.index`"}--> 
    397       <!--{assign var=product_class_id value=$arrProductClassIds[$shipping_index][$item_index]}--> 
    398404 
    399405      <tr> 
    400406        <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}--> 
    406412        </td> 
    407413        <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}--> 
    415421        </td> 
    416422        <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}-->" /> 
    420426        </td> 
    421427        <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}-->" /> 
    425431        </td> 
    426432      </tr> 
     
    434440            <th>お名前</th> 
    435441            <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" /> 
    441447            </td> 
    442448        </tr> 
     
    444450            <th>お名前(カナ)</th> 
    445451            <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" /> 
    451457            </td> 
    452458        </tr> 
     
    454460            <th>TEL</th> 
    455461            <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" /> 
    465471            </td> 
    466472        </tr> 
     
    468474            <th>住所</th> 
    469475            <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> 
    473479                〒 
    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" /> 
    475481                 - 
    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" /> 
    477483                <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}-->"> 
    481487                    <option value="" selected="">都道府県を選択</option> 
    482                     <!--{html_options options=$arrPref selected=$arrForm[$key].value}--> 
     488                    <!--{html_options options=$arrPref selected=$arrForm[$key].value[$shipping_index]}--> 
    483489                </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}-->" /> 
    490496            </td> 
    491497        </tr> 
     
    493499            <th>お届け時間</th> 
    494500            <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}-->"> 
    498504                    <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]}--> 
    500506                </select> 
    501507            </td> 
     
    504510            <th>お届け日</th> 
    505511            <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"}--> 
    509515              <span class="attention"><!--{$arrErr[$key1]}--></span> 
    510516              <span class="attention"><!--{$arrErr[$key2]}--></span> 
    511517              <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:""}--> 
    514520              </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:""}--> 
    517523              </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:""}--> 
    520526              </select>日 
    521527            </td> 
     
    526532    <!--▲お届け先情報ここまで--> 
    527533 
     534    <a name="deliv"></a> 
    528535    <table class="form"> 
    529536        <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> 
    530548            <th>お支払方法<br /><span class="attention">(お支払方法の変更に伴う手数料の変更は手動にてお願いします。)</span></th> 
    531549            <td> 
    532550                <!--{assign var=key value="payment_id"}--> 
    533551                <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');"> 
    535553                    <option value="" selected="">選択してください</option> 
    536554                    <!--{html_options options=$arrPayment selected=$arrForm[$key].value}--> 
  • branches/version-2_5-dev/data/Smarty/templates/admin/order/multiple.tpl

    r20116 r20180  
    2929$(function() { 
    3030 
    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]'); 
    4444 
    4545    var index = 0; 
     
    4848        for (var j = 0; j < $(quantity[i]).val(); j++) { 
    4949 
     50            // 表示商品名 
     51            var dispname = ''; 
     52 
    5053            // 商品規格ID 
    5154            var idfield = $('<input type="hidden" />') 
    52                 .attr({'name': 'multiple_product_class_id' + index}) 
     55                .attr({'name': 'multiple_product_class_id[' + index + ']'}) 
    5356                .val($(product_class_id[i]).val()); 
    5457 
    5558            // 商品コード 
    5659            var codefield = $('<input type="hidden" />') 
    57                 .attr({'name': 'multiple_product_code' + index}) 
     60                .attr({'name': 'multiple_product_code['+ index + ']'}) 
    5861                .val($(product_code[i]).val()); 
    5962 
    6063            // 商品名 
    6164            var namefield = $('<input type="hidden" />') 
    62                 .attr({'name': 'multiple_product_name' + index}) 
     65                .attr({'name': 'multiple_product_name[' + index + ']'}) 
    6366                .val($(product_name[i]).val()); 
     67            dispname = $(product_name[i]).val(); 
    6468 
    6569            // 規格1 
    6670            var class1field = $('<input type="hidden" />') 
    67                 .attr({'name': 'multiple_classcategory_name1' + index}) 
     71                .attr({'name': 'multiple_classcategory_name1[' + index + ']'}) 
    6872                .val($(classcategory_name1[i]).val()); 
     73 
     74            if ($(classcategory_name1[i]).val() != '') { 
     75                dispname += '<br />' + $(classcategory_name1[i]).val(); 
     76            } 
    6977 
    7078            // 規格2 
    7179            var class2field = $('<input type="hidden" />') 
    72                 .attr({'name': 'multiple_classcategory_name2' + index}) 
     80                .attr({'name': 'multiple_classcategory_name2[' + index + ']'}) 
    7381                .val($(classcategory_name2[i]).val()); 
     82 
     83            if ($(classcategory_name2[i]).val() != '') { 
     84                dispname += '<br />' + $(classcategory_name2[i]).val(); 
     85            } 
    7486 
    7587            // 単価 
    7688            var pricefield = $('<input type="hidden" />') 
    77                 .attr({'name': 'multiple_price' + index}) 
     89                .attr({'name': 'multiple_price[' + index + ']'}) 
    7890                .val($(price[i]).val()); 
    7991 
     
    8193            // 数量 
    8294            var qfield = $('<input type="text" />') 
    83                 .attr({'name': 'multiple_quantity' + index, 
     95                .attr({'name': 'multiple_quantity[' + index + ']', 
    8496                       'size': 4}) 
    8597                .val(1); 
     
    96108 
    97109            // お届け先 
    98             var select = $('<select />').attr('name', 'multiple_shipping' + index); 
     110            var select = $('<select />').attr('name', 'multiple_shipping_id[' + index + ']'); 
    99111            var s = $('<td />').append(select); 
    100112 
     
    102114            var tr = $('<tr />') 
    103115                .append($('<td />').text($(product_code[i]).val())) 
    104                 .append($('<td />').text($(product_name[i]).val())) 
     116                .append($('<td />').html(dispname)) 
    105117                .append(q) 
    106118                .append(s); 
     
    133145    $('input[name^=multiple_], select[name^=multiple_]').each(function() { 
    134146        // TODO タグをベタ書きにしないと, innerHTML で value が空になってしまう 
    135         $(div).append('<input type="text" name="' 
     147        $(div).append('<input type="hidden" name="' 
    136148                      + $(this).attr('name') 
    137149                      + '" value="' + $(this).val() + '" />'); 
    138150    }); 
    139     $(div).append('<input type="hidden" name="multiple_size" value="' + $('input[name^=multiple_product_class_id]').length + '" />'); 
    140151 
    141152    // window.opener に対する append は IE で動作しない 
  • branches/version-2_5-dev/data/class/SC_FormParam.php

    r20160 r20180  
    242242     * SC_CheckError::doFunc() を再帰的に実行する. 
    243243     * 
     244     * 再帰実行した場合は, エラーメッセージを多次元配列で格納する 
     245     * 
     246     * TODO 二次元以上のエラーメッセージへの対応 
     247     * 
    244248     * @param string $disp_name 表示名 
    245249     * @param string $func チェック種別 
     
    248252     * @param string $error_key エラーメッセージを格納する配列のキー 
    249253     * @param integer $length チェック対象の値の長さ 
     254     * @param integer $depth 再帰実行した場合の深度 
     255     * @param integer $recursion_count 再帰実行した回数 
    250256     * @return void 
    251257     */ 
    252258    function recursionCheck($disp_name, $func, $value, &$arrErr, $error_key, 
    253                             $length = 0) { 
     259                            $length = 0, $depth = 0, $recursion_count = 0) { 
    254260        if (is_array($value)) { 
     261            $depth++; 
     262            $recursion_count = 0; 
    255263            foreach ($value as $in) { 
    256264                $this->recursionCheck($disp_name, $func, $in, $arrErr, $error_key, 
    257                                       $length); 
     265                                      $length, $depth, $recursion_count); 
     266                $recursion_count++; 
    258267            } 
    259268        } 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;'); 
    266282                    } 
    267283                } 
     
    270286    } 
    271287 
    272     // 入力文字の変換 
     288    /** 
     289     * フォームの入力パラメータに応じて, 再帰的に mb_convert_kana 関数を実行する. 
     290     * 
     291     * @return voi 
     292     * @see mb_convert_kana 
     293     */ 
    273294    function convParam() { 
    274         /* 
    275          *  文字列の変換 
    276          *  K :  「半角(ハンカク)片仮名」を「全角片仮名」に変換 
    277          *  C :  「全角ひら仮名」を「全角かた仮名」に変換 
    278          *  V :  濁点付きの文字を一文字に変換。"K","H"と共に使用します 
    279          *  n :  「全角」数字を「半角(ハンカク)」に変換 
    280          *  a :  「全角」英字を「半角」英字に変換 
    281          */ 
    282295        $cnt = 0; 
    283296        foreach ($this->keyname as $val) { 
    284297            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            } 
    299318        } 
    300319    } 
     
    417436    function trimParam($has_wide_space = true) { 
    418437        $cnt = 0; 
    419         $pattern = '/^[  \r\n\t]*(.*?)[  \r\n\t]*$/u'; 
    420438        foreach ($this->keyname as $val) { 
    421439            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)) { 
    424460                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            } 
    439465        } 
    440466    } 
  • branches/version-2_5-dev/data/class/helper/SC_Helper_DB.php

    r20171 r20180  
    13681368 
    13691369    /** 
    1370      * 受注の名称列を更新する 
    1371      * 
    1372      * FIXME 
    1373      * 
    1374      * @param integer $order_id 更新対象の注文番号 
    1375      * @param boolean $temp_table 更新対象は「受注_Temp」か 
    1376      * @static 
    1377      */ 
    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             UPDATE 
    1391                 {$tgt_table} 
    1392             SET 
    1393                  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_where 
    1396 __EOS__; 
    1397  
    1398         $objQuery->query($sql, array($order_id)); 
    1399     } 
    1400  
    1401     /** 
    14021370     * 店舗基本情報に基づいて税金額を返す 
    14031371     * 
     
    14371405 
    14381406        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 void 
    1452      */ 
    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         // ▲受注テーブルの更新 
    15641407    } 
    15651408 
  • branches/version-2_5-dev/data/class/helper/SC_Helper_Purchase.php

    r20167 r20180  
    7272 
    7373        $orderTemp['status'] = $orderStatus; 
    74         $orderId = $this->registerOrder($orderTemp, $objCartSession, 
    75                                         $objCartSession->getKey()); 
     74        $orderId = $this->registerOrderComplete($orderTemp, $objCartSession, 
     75                                                $objCartSession->getKey()); 
    7676        $shippingTemp =& $this->getShippingTemp(); 
    7777        if (count($shippingTemp) > 1) { 
     
    529529     * $arrParam のうち, dtb_shipping テーブルに存在するカラムのみを登録する. 
    530530     * 
     531     * TODO UPDATE/INSERT にする 
     532     * 
    531533     * @param integer $order_id 受注ID 
    532534     * @param array $arrParams 配送情報の連想配列 
     535     * @param boolean $convert_shipping_date yyyy/mm/dd(EEE) 形式の配送日付を変換する場合 true 
    533536     * @return void 
    534537     */ 
    535     function registerShipping($order_id, $arrParams) { 
     538    function registerShipping($order_id, $arrParams, $convert_shipping_date = true) { 
    536539        $objQuery =& SC_Query::getSingletonInstance(); 
    537540        $table = 'dtb_shipping'; 
     541        $where = 'order_id = ?'; 
     542        $objQuery->delete($table, $where, array($order_id)); 
    538543 
    539544         foreach ($arrParams as $arrShipping) { 
     
    542547 
    543548            // 配送日付を timestamp に変換 
    544             if (!SC_Utils_Ex::isBlank($arrValues['shipping_date'])) { 
     549            if (!SC_Utils_Ex::isBlank($arrValues['shipping_date']) 
     550                && $convert_shipping_date) { 
    545551                $d = mb_strcut($arrValues["shipping_date"], 0, 10); 
    546552                $arrDate = split("/", $d); 
     
    564570     * @return void 
    565571     */ 
    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 
    568578        $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     * 受注登録を完了する. 
    586619     * 
    587620     * 引数の受注情報を受注テーブル及び受注詳細テーブルに登録する. 
    588621     * 登録後, 受注一時テーブルに削除フラグを立て, カートの内容を削除する. 
    589      * 
    590      * TODO ダウンロード商品の場合の扱いを検討 
    591622     * 
    592623     * @param array $orderParams 登録する受注情報の配列 
     
    595626     * @param integer 受注ID 
    596627     */ 
    597     function registerOrder($orderParams, &$objCartSession, $cartKey) { 
     628    function registerOrderComplete($orderParams, &$objCartSession, $cartKey) { 
    598629        $objQuery =& SC_Query::getSingletonInstance(); 
    599630 
     
    619650        $orderParams['update_date'] = 'Now()'; 
    620651 
    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); 
    626653 
    627654        // 詳細情報を取得 
    628655        $cartItems = $objCartSession->getCartList($cartKey); 
    629656 
    630         // 既に存在する詳細レコードを消しておく。 
    631         $objQuery->delete("dtb_order_detail", "order_id = ?", 
    632                           array($orderParams['order_id'])); 
    633  
     657        // 詳細情報を生成 
    634658        $objProduct = new SC_Product(); 
     659        $i = 0; 
    635660        foreach ($cartItems as $item) { 
    636661            $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']; 
    647672 
    648673            // 在庫の減少処理 
     
    651676                SC_Utils_Ex::sfDispSiteError(SOLD_OUT, "", true); 
    652677            } 
    653             $objQuery->insert("dtb_order_detail", $detail); 
    654         } 
     678            $i++; 
     679        } 
     680        $this->registerOrderDetail($orderParams['order_id'], $arrDetail); 
    655681 
    656682        $objQuery->update("dtb_order_temp", array('del_flg' => 1), 
     
    661687        SC_SiteSession::unsetUniqId(); 
    662688        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        } 
    663760    } 
    664761 
     
    685782     * 
    686783     * @param integer $order_id 受注ID 
     784     * @param boolean $has_order_status 受注ステータス, 入金日も含める場合 true 
    687785     * @return array 受注詳細の配列 
    688786     */ 
    689     function getOrderDetail($order_id) { 
     787    function getOrderDetail($order_id, $has_order_status = true) { 
    690788        $objQuery =& SC_Query::getSingletonInstance(); 
    691789        $dbFactory  = SC_DB_DBFactory_Ex::getInstance(); 
     
    701799            T2.quantity, 
    702800            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 
    705808            CASE WHEN EXISTS( 
    706809                    SELECT 1 FROM dtb_products 
     
    772875 
    773876            foreach ($arrItem as $detailKey => $detailVal) { 
    774                 $arrResults[$product_class_id][$detailKey] = $detailVal; 
     877                $arrResults[$key][$detailKey] = $detailVal; 
    775878            } 
    776879            // 商品詳細を関連づける 
    777880            if ($has_detail) { 
    778                 $arrResults[$product_class_id]['productsClass'] 
     881                $arrResults[$key]['productsClass'] 
    779882                    =& $objProduct->getDetailAndProductsClass($product_class_id); 
    780883            } 
     
    797900                                     SC_MobileUserAgent::isMobile() ? 2 : 1); 
    798901    } 
     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    } 
    7991059} 
  • branches/version-2_5-dev/data/class/pages/admin/order/LC_Page_Admin_Order_Edit.php

    r20163 r20180  
    2323 
    2424// {{{ requires 
    25 require_once(CLASS_REALDIR . "pages/admin/LC_Page_Admin.php"); 
     25require_once(CLASS_EX_REALDIR . "page_extends/admin/order/LC_Page_Admin_Order_Ex.php"); 
    2626 
    2727/** 
     
    3232 * @version $Id$ 
    3333 */ 
    34 class LC_Page_Admin_Order_Edit extends LC_Page_Admin { 
    35  
    36     // {{{ properties 
    37  
    38     /** 表示モード */ 
    39     var $disp_mode; 
     34class LC_Page_Admin_Order_Edit extends LC_Page_Admin_Order_Ex { 
    4035 
    4136    // }}} 
     
    5247        $this->tpl_subnavi = 'order/subnavi.tpl'; 
    5348        $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         } 
    6149 
    6250        $masterData = new SC_DB_MasterData_Ex(); 
     
    6553        $this->arrDeviceType = $masterData->getMasterData('mtb_device_type'); 
    6654 
     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 
    6766        $this->httpCacheControl('nocache'); 
    6867    } 
     
    8483     */ 
    8584    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 
    8988        $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 
    9691        // パラメータ情報の初期化 
    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'); 
    11896 
    11997        // DBから受注情報を読み込む 
    12098        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(); 
    123109 
    124110        switch($this->getMode()) { 
     
    126112        case 'order_id': 
    127113            break; 
     114 
    128115        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 
    129126        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); 
    144133                    $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('新規受注を登録しました。');"; 
    153137                } 
    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 
    160142        // 再計算 
    161         case 'cheek': 
     143        case 'recalculate': 
    162144        //支払い方法の選択 
    163145        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        // 商品削除 
    173154        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        // 商品追加ポップアップより商品選択 
    194163        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        // 顧客検索ポップアップより顧客指定 
    219171        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); 
    227177            break; 
    228178 
    229179        // 複数配送設定表示 
    230180        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); 
    236184            break; 
    237185 
    238186        // 複数配送設定を反映 
    239187        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); 
    245192            break; 
    246193 
    247194        // お届け先の追加 
    248195        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); 
    253199            break; 
    254200 
    255201        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(); 
    287208    } 
    288209 
     
    296217    } 
    297218 
    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); 
    300228 
    301229        // お客様情報 
    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")); 
    315243 
    316244        // 受注商品情報 
    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'); 
    320248 
    321249        // ポイント機能ON時のみ 
    322250        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"); 
    329258 
    330259        // 受注詳細情報 
    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 
    342274        // 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         */ 
    432368        $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; 
    470377                } 
    471378            } 
    472379        } 
    473380 
     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 
    474407        // 受注商品の数量を変更 
    475         $dest = array(); 
    476         foreach ($arrQuantity as $productClassId => $quantity) { 
    477             foreach ($this->arrForm['product_class_id'] as $n => $orderProductClassId) { 
    478                 if ($productClassId == $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; 
    480413                } 
    481414            } 
    482415        } 
    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; 
    526460                } 
    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)) { 
    610490            return $objErr->arrErr; 
    611491        } 
    612492 
    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(); 
    621494 
    622495        // 商品の種類数 
    623         $max = count($arrVal['quantity']); 
     496        $max = count($arrValues['quantity']); 
    624497        $subtotal = 0; 
    625498        $totalpoint = 0; 
     
    627500        for($i = 0; $i < $max; $i++) { 
    628501            // 小計の計算 
    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]; 
    630503            // 小計の計算 
    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]; 
    632505            // 加算ポイントの計算 
    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]; 
    634507        } 
    635508 
    636509        // 消費税 
    637         $arrVal['tax'] = $totaltax; 
     510        $arrValues['tax'] = $totaltax; 
    638511        // 小計 
    639         $arrVal['subtotal'] = $subtotal; 
     512        $arrValues['subtotal'] = $subtotal; 
    640513        // 合計 
    641         $arrVal['total'] = $subtotal - $arrVal['discount'] + $arrVal['deliv_fee'] + $arrVal['charge']; 
     514        $arrValues['total'] = $subtotal - $arrValues['discount'] + $arrValues['deliv_fee'] + $arrValues['charge']; 
    642515        // お支払い合計 
    643         $arrVal['payment_total'] = $arrVal['total'] - ($arrVal['use_point'] * POINT_VALUE); 
     516        $arrValues['payment_total'] = $arrValues['total'] - ($arrValues['use_point'] * POINT_VALUE); 
    644517 
    645518        // 加算ポイント 
    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']); 
    647520 
    648521        // 最終保持ポイント 
    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; 
    667538    } 
    668539 
     
    670541     * DB更新処理 
    671542     * 
    672      * TODO リファクタリング 
    673      * 
    674      * @param integer $order_id 注文番号 
    675      * @return void 
    676      */ 
    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(); 
    681552 
    682553        $where = "order_id = ?"; 
     
    684555        $objQuery->begin(); 
    685556 
    686         // 受注.対応状況の更新 
    687         SC_Helper_DB_Ex::sfUpdateOrderStatus($order_id, $sqlval['status'], $sqlval['add_point'], $sqlval['use_point'], $sqlval); 
    688  
    689557        // 受注テーブルの更新 
    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")); 
    697568 
    698569        // 変更しようとしている商品情報とDBに登録してある商品情報を比較することで、更新すべき数量を計算 
     
    726597        } 
    727598 
    728         // 受注詳細データの初期化 
    729         $objQuery->delete("dtb_order_detail", $where, array($order_id)); 
    730  
    731599        // 受注詳細データの更新 
    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); 
    747601 
    748602        // 在庫数調整 
    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                    } 
    788666                } 
    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; 
    809743                } 
    810744            } 
    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 ''; 
    1111790    } 
    1112791} 
  • branches/version-2_5-dev/data/class/pages/admin/order/LC_Page_Admin_Order_Status.php

    r20116 r20180  
    172172     */ 
    173173    function lfStatusMove($statusId, $arrOrderId) { 
     174        $objPurchase = new SC_Helper_Purchase_Ex(); 
    174175        $objQuery = new SC_Query(); 
    175176 
     
    183184 
    184185        foreach ($arrOrderId as $orderId) { 
    185             SC_Helper_DB_Ex::sfUpdateOrderStatus($orderId, $statusId); 
     186            $objPurchase->sfUpdateOrderStatus($orderId, $statusId); 
    186187        } 
    187188 
Note: See TracChangeset for help on using the changeset viewer.