バージョン選択
フォーラム
メニュー
オンライン状況
|
|
65 人のユーザが現在オンラインです。 (48 人のユーザが フォーラム を参照しています。) |
|
|
バグ報告 > 管理機能 > 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();
|
|
|
|
統計情報
総メンバー数は89,263名です
総投稿数は110,059件です
|