バージョン選択

フォーラム

メニュー

オンライン状況

65 人のユーザが現在オンラインです。 (48 人のユーザが フォーラム を参照しています。)
登録ユーザ: 0
ゲスト: 65
もっと...

サイト内検索

バグ報告 > 管理機能 > v2.13 管理画面 受注情報編集画面でのダウンロード商品の「変更」「削除」の扱い

管理機能

新規スレッドを追加する

フラット表示 前のトピック | 次のトピック
投稿者 スレッド
sumida
投稿日時: 2014/1/19 10:08
対応状況: −−−
仙人
登録日: 2013/2/10
居住地: 広島県呉市ときどき瀬戸内海
投稿: 641
Re: v2.13 管理画面 受注情報編集画面でのダウンロード商品の「変更」「削除」の扱い
参考までに、分割で修正案を。
なお、#xxxxは、各チケット対応に修正したコードです。

LC_Page_Admin_Order_Edit.php

diff -ur orig/LC_Page_Admin_Order_Edit.php new/LC_Page_Admin_Order_Edit.php
--- orig/LC_Page_Admin_Order_Edit.php	2014-01-09 20:45:36.000000000 +0900
+++ new/LC_Page_Admin_Order_Edit.php	2014-01-17 23:04:11.000000000 +0900
@@ -277,6 +277,10 @@
             case 'multiple':
                 $objFormParam->setParam($_POST);
                 $objFormParam->convParam();
+// added #2403
+                //複数配送時に各商品の総量を設定
+                $this->setProductsQuantity($objFormParam);
+// added #2403
                 $this->arrErr = $this->lfCheckError($objFormParam);
                 break;
 
@@ -292,6 +296,10 @@
             case 'append_shipping':
                 $objFormParam->setParam($_POST);
                 $objFormParam->convParam();
+// added #2403
+                //複数配送時に各商品の総量を設定
+                $this->setProductsQuantity($objFormParam);
+// added #2403
                 $this->addShipping($objFormParam);
                 break;
 
@@ -301,6 +309,28 @@
 
         $this->arrForm        = $objFormParam->getFormParamList();
         $this->arrAllShipping = $objFormParam->getSwapArray(array_merge($this->arrShippingKeys, $this->arrShipmentItemKeys));
+// added #2428,#2485
+        $arrOrderIndex = array();
+        // お届け先が1口の場合
+        if ($objFormParam->getValue('shipping_quantity') == 1) {
+            // 受注情報の商品
+            $arrProductClassId = $objFormParam->getValue('product_class_id');
+            foreach($arrProductClassId as $order_index =>  $orderItem) {
+                // お届け先
+                $arrShipmentProductClassId = $objFormParam->getValue('shipment_product_class_id');
+                foreach($arrShipmentProductClassId as $shipment) {
+                    // お届け先の商品
+                    foreach($shipment as $shipment_index => $shipmentItem) {
+                        // 同じ商品
+                        if ($orderItem == $shipmentItem) {
+                            $arrOrderIndex[$order_index] = $shipment_index;
+                        }
+                    }
+                }
+            }        
+        }
+        $this->arrOrderIndex = $arrOrderIndex;
+// added #2428,#2485
         $this->top_shipping_id      = array_shift((array_keys($this->arrAllShipping)));
         $this->arrDelivTime   = SC_Helper_Delivery_Ex::getDelivTime($objFormParam->getValue('deliv_id'));
         $this->tpl_onload .= $this->getAnchorKey($objFormParam);
@@ -432,6 +462,9 @@
         $objFormParam->addParam('修正商品規格ID', 'edit_product_class_id', INT_LEN, 'n', array('MAX_LENGTH_CHECK', 'NUM_CHECK'));
         $objFormParam->addParam('対象届け先ID', 'select_shipping_id', INT_LEN, 'n', array('MAX_LENGTH_CHECK', 'NUM_CHECK'));
         $objFormParam->addParam('アンカーキー', 'anchor_key', STEXT_LEN, 'KVa', array('SPTAB_CHECK', 'MAX_LENGTH_CHECK'));
+// added
+        $objFormParam->addParam('商品選択用商品種別', 'product_select_product_type_id', INT_LEN, 'n', array('MAX_LENGTH_CHECK', 'NUM_CHECK'));
+// added
     }
 
     /**
@@ -852,6 +885,14 @@
      */
     public function doDeleteProduct($delete_no, &$objFormParam)
     {
+// added
+$product_select_product_type_id = $objFormParam->getValue('product_select_product_type_id');
+if ($product_select_product_type_id == PRODUCT_TYPE_DOWNLOAD) {
+        $arrPreProductClassIds         = $objFormParam->getValue('product_class_id');
+        $delete_product_class_id       = $arrPreProductClassIds[$delete_no];
+        $is_product_delete = true;
+} else {
+// added
         $select_shipping_id    = $objFormParam->getValue('select_shipping_id');
 
         //変更前のproduct_class_idが他の届け先にも存在するか
@@ -872,6 +913,9 @@
                 }
             }
         }
+// added
+}
+// added
 
         //商品情報から削除
         if ($is_product_delete) {
@@ -938,6 +982,29 @@
      */
     public function shipmentAddProduct(&$objFormParam, $add_product_class_id)
     {
+// added
+$product_select_product_type_id = $objFormParam->getValue('product_select_product_type_id');
+if ($product_select_product_type_id == PRODUCT_TYPE_DOWNLOAD) {
+            //受注商品情報に追加
+            $objProduct = new SC_Product_Ex();
+            $arrAddProductInfo = $objProduct->getDetailAndProductsClass($add_product_class_id);
+            $arrPreProductClassIds = $objFormParam->getValue('product_class_id');
+            $arrProducts = $this->checkInsertOrderProducts($objFormParam, $arrPreProductClassIds, $add_product_class_id, $arrAddProductInfo);
+            if (isset($arrProducts)) {
+                $objFormParam->setParam($arrProducts);
+            } else {
+                /* ダウンロード商品(既存の商品を追加)の場合、受注情報にcheckInsertOrderProductsで数量の追加がない。 */
+                foreach($arrPreProductClassIds as $key => $value) {
+                    if ($value == $add_product_class_id) {
+                        $arrQuantity = $objFormParam->getValue('quantity');
+                        $arrQuantity[$key]++;
+                        $objFormParam->setValue('quantity', $arrQuantity);
+                        break;
+                    }
+                }
+            }
+} else {
+// added
         //複数配送に商品情報追加
         $select_shipping_id = $objFormParam->getValue('select_shipping_id');
 
@@ -968,6 +1035,9 @@
             $objFormParam->setParam($arrProducts);
         }
         $objFormParam->setParam($arrShipmentProducts);
+// added
+}
+// added
     }
 
     /**
@@ -981,6 +1051,27 @@
     public function shipmentEditProduct(&$objFormParam, $edit_product_class_id, $change_no)
     {
         $arrPreProductClassIds = $objFormParam->getValue('product_class_id');
+// added
+$product_select_product_type_id = $objFormParam->getValue('product_select_product_type_id');
+if ($product_select_product_type_id == PRODUCT_TYPE_DOWNLOAD) {
+        $pre_product_class_id = $arrPreProductClassIds[$change_no];
+        $is_product_delete = true;
+        if ($pre_product_class_id == $edit_product_class_id) {
+            $is_product_delete = false;
+        } else {
+            $objProduct = new SC_Product_Ex();
+            $arrAddProductInfo = $objProduct->getDetailAndProductsClass($edit_product_class_id);
+            //受注商品情報に追加
+            $arrProducts = $this->checkInsertOrderProducts($objFormParam, $arrPreProductClassIds, $edit_product_class_id, $arrAddProductInfo);
+            $objFormParam->setParam($arrProducts);
+        }
+
+        //商品情報から削除
+        if ($is_product_delete) {
+            $this->checkDeleteProducts($objFormParam, $arrPreProductClassIds, $pre_product_class_id, $this->arrProductKeys);
+        }
+} else {
+// added
         $select_shipping_id    = $objFormParam->getValue('select_shipping_id');
 
         $arrShipmentProducts = $this->getShipmentProducts($objFormParam);
@@ -988,7 +1079,9 @@
         //既にあるデータは1つだけ数量を1増やす
         $pre_shipment_product_class_id = $arrShipmentProducts['shipment_product_class_id'][$select_shipping_id][$change_no];
         if ($pre_shipment_product_class_id == $edit_product_class_id) {
+/* deleted #2486
             $arrShipmentProducts['shipment_quantity'][$select_shipping_id][$change_no] ++;
+deleted #2486 */
         } elseif (in_array($edit_product_class_id, $arrShipmentProducts['shipment_product_class_id'][$select_shipping_id])) {
             //配送先データ削除
             $arrShipmentProducts = $this->deleteShipment($objFormParam, $this->arrShipmentItemKeys , $select_shipping_id, $change_no);
@@ -1025,6 +1118,9 @@
         if ($is_product_delete) {
             $this->checkDeleteProducts($objFormParam, $arrPreProductClassIds, $pre_shipment_product_class_id, $this->arrProductKeys);
         }
+// added
+}
+// added
     }
 
     /**
@@ -1091,9 +1187,17 @@
             }
 
             $arrProductsClass = $objFormParam->getValue('product_class_id');
-            $arrProductsQuantity = $objFormParam->getValue('quantity');
+// changed #2451
+            $arrQuantity['quantity'] = $objFormParam->getValue('quantity');
+// changed #2451
             foreach ($arrProductsClass as $relation_key => $product_class_id) {
+// added #2451
+if ($arrUpdateQuantity[$product_class_id]) {
+// added #2451
                 $arrQuantity['quantity'][$relation_key] = $arrUpdateQuantity[$product_class_id];
+// added #2451
+}
+// added #2451
             }
             $objFormParam->setParam($arrQuantity);
         }
@@ -1164,6 +1268,10 @@
     public function checkInsertOrderProducts(&$objFormParam, $arrProductClassIds, $insert_product_class_id, $arrAddProductInfo)
     {
         if(!$arrProductClassIds || !in_array($insert_product_class_id, $arrProductClassIds)){
+// added #2430
+            $objTaxRule = new SC_Helper_TaxRule_Ex();
+            $arrTax = $objTaxRule->getTaxRule(0, $insert_product_class_id, 0, 0);
+// added #2430
             $arrAddProducts = array();
 
             $arrAddProductInfo['product_name'] = ($arrAddProductInfo['product_name'])?
@@ -1171,10 +1279,14 @@
             $arrAddProductInfo['price']        = ($arrAddProductInfo['price'])?
                                                  $arrAddProductInfo['price']:$arrAddProductInfo['price02'];
             $arrAddProductInfo['quantity']     = 1;
-            $arrAddProductInfo['tax_rate']     = ($objFormParam->getValue('order_tax_rate') == '')?
-                                                 $this->arrInfo['tax']     :$objFormParam->getValue('order_tax_rate');
-            $arrAddProductInfo['tax_rule']     = ($objFormParam->getValue('order_tax_rule') == '')?
-                                                 $this->arrInfo['tax_rule']:$objFormParam->getValue('order_tax_rule');
+// chenged #2430
+            $order_tax_rate = $objFormParam->getValue('tax_rate');
+            $arrAddProductInfo['tax_rate']     = ($order_tax_rate[0] == '')?
+                                                 $arrTax['tax_rate']:$order_tax_rate[0];
+            $order_tax_rule = $objFormParam->getValue('tax_rule');
+            $arrAddProductInfo['tax_rule']     = ($order_tax_rule[0] == '')?
+                                                 $arrTax['tax_rule']:$order_tax_rule[0];
+// changed #2430
             foreach ($this->arrProductKeys as $insert_key) {
                 $value = $objFormParam->getValue($insert_key);
                 $arrAddProducts[$insert_key]   = (is_array($value))? $value: array();
フラット表示 前のトピック | 次のトピック


題名 投稿者 日時
   v2.13 管理画面 受注情報編集画面でのダウンロード商品の「変更」「削除」の扱い sumida 2014/1/9 21:06
     Re: v2.13 管理画面 受注情報編集画面でのダウンロード商品の「変更」「削除」の扱い sumida 2014/1/15 22:18
       Re: v2.13 管理画面 受注情報編集画面でのダウンロード商品の「変更」「削除」の扱い nanasess 2014/1/16 9:55
         Re: v2.13 管理画面 受注情報編集画面でのダウンロード商品の「変更」「削除」の扱い sumida 2014/1/17 21:10
         » Re: v2.13 管理画面 受注情報編集画面でのダウンロード商品の「変更」「削除」の扱い sumida 2014/1/19 10:08
             Re: v2.13 管理画面 受注情報編集画面でのダウンロード商品の「変更」「削除」の扱い sumida 2014/1/19 10:10
               Re: v2.13 管理画面 受注情報編集画面でのダウンロード商品の「変更」「削除」の扱い sumida 2014/1/19 10:11

 



ログイン


EC-CUBE公式 Amazon Payプラグイン

統計情報

総メンバー数は89,263名です
総投稿数は110,059件です

投稿数ランキング

1
seasoft
7367
2
468
3217
3
AMUAMU
2712
4
nanasess
2314
5
umebius
2085
6
yuh
1819
7
h_tanaka
1652
8
red
1570
9
mcontact
1299
10
tsuji
958
11
fukap
907
12
shutta
835
13
tao_s
799
14 ramrun 789
15 karin 689
16 sumida 641
17
homan
633
18 DELIGHT 572
19
patapata
502
20
flealog
485


ネットショップの壺

EC-CUBEインテグレートパートナー

Copyright© EC-CUBE CO.,LTD. All Rights Reserved.