バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

質問 > フロント機能 > 2.13系メール便の対応について

フロント機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
harusame
投稿日時: 2014/8/9 10:39
対応状況: −−−
半人前
登録日: 2014/7/30
居住地: 奈良
投稿: 27
Re: 2.13系メール便の対応について
投稿が遅くなり申し訳ございません。

修正後、エラーは無くなりました。
ありがとうございます。

ですが、
・メール便のみ
・メール便&宅急便
・宅急便のみ
カート内が上記の状態で検証致しましたが、
配送方法に変化が見られませんでした。
(メール便を全ての時に選択可能でした。)

もう少し頑張ってみます…。



●EC-CUBE メール便では着日指定できないようにしておく
http://tech.bandersnatch.jp/387
上記のJS部分につきましてですが、
現在下記となっておりましたが、
<script type="text/javascript">//<![CDATA[
    $(function() {
        if ($('input[name=deliv_id]:checked').val()
            || $('#deliv_id').val()) {
            showForm(true);
			changeForm(deliv_id);
        } else {
            showForm(false);
        }
        $('input[id^=deliv_]').click(function() {
            showForm(true);
            var data = {};
            data.mode = 'select_deliv';
            data.deliv_id = $(this).val();
            data['<!--{$smarty.const.TRANSACTION_ID_NAME}-->'] = '<!--{$transactionid}-->';
            $.ajax({
                type : 'POST',
                url : location.pathname,
                data: data,
                cache : false,
                dataType : 'json',
                error : remoteException,
                success : function(data, dataType) {
                    if (data.error) {
                        remoteException();
                    } else {
                        // 支払い方法の行を生成
                        var payment_tbody = $('#payment tbody');
                        payment_tbody.empty();
                        for (var i in data.arrPayment) {
                            // ラジオボタン
                            <!--{* IE7未満対応のため name と id をベタ書きする *}-->
                            var radio = $('<input type="radio" name="payment_id" id="pay_' + i + '" />')
                                .val(data.arrPayment[i].payment_id);
                            // ラベル
                            var label = $('<label />')
                                .attr('for', 'pay_' + i)
                                .text(data.arrPayment[i].payment_method);
                            // 行
                            var tr = $('<tr />')
                                .append($('<td />')
                                    .addClass('alignC')
                                    .append(radio))
                                .append($('<td />').append(label));

                            // 支払方法の画像が登録されている場合は表示
                            if (data.img_show) {
                                var payment_image = data.arrPayment[i].payment_image;
                                $('th#payment_method').attr('colspan', 3);
                                if (payment_image) {
                                    var img = $('<img />').attr('src', '<!--{$smarty.const.IMAGE_SAVE_URLPATH}-->' + payment_image);
                                    tr.append($('<td />').append(img));
                                } else {
                                    tr.append($('<td />'));
                                }
                            } else {
                                $('th#payment_method').attr('colspan', 2);
                            }

                            tr.appendTo(payment_tbody);
                        }
                        // お届け時間を生成
                        var deliv_time_id_select = $('select[id^=deliv_time_id]');
                        deliv_time_id_select.empty();
                        deliv_time_id_select.append($('<option />').text('指定なし').val(''));
                        for (var i in data.arrDelivTime) {
                            var option = $('<option />')
                                .val(i)
                                .text(data.arrDelivTime[i])
                                .appendTo(deliv_time_id_select);
                        }
                    }
					changeForm(deliv_id);

                }
            });
        });

        /**
         * 通信エラー表示.
         */
        function remoteException(XMLHttpRequest, textStatus, errorThrown) {
            alert('通信中にエラーが発生しました。カート画面に移動します。');
            location.href = '<!--{$smarty.const.CART_URL}-->';
        }

        /**
         * 配送方法の選択状態により表示を切り替える
         */
        function showForm(show) {
            if (show) {
                $('#payment, div.delivdate, .select-msg').show();
                $('.non-select-msg').hide();
            } else {
                $('#payment, div.delivdate, .select-msg').hide();
                $('.non-select-msg').show();
            }
        }
		function changeForm(deliv_id) {
			var deliv_time_id_select = $('select[id^=deliv_time_id]');
			var deliv_date_select = $('select[id^=deliv_date]');
			if (deliv_id=='20') {
				if(deliv_time_id_select){
					deliv_time_id_select.attr("disabled", "disabled");
				}
				if(deliv_date_select){
					deliv_date_select.attr("disabled", "disabled");
				}
				$('div.pay_area02_display_mail').show();
				$('div.pay_area02_display').hide();
			} else {
				$('div.pay_area02_display').show();
				$('div.pay_area02_display_mail').hide();
				if(deliv_time_id_select){
					deliv_time_id_select.removeAttr("disabled");
				}
				if(deliv_date_select){
					deliv_date_select.removeAttr("disabled");
				}
			}
		}
    });
//]]></script>

上記から下記へ修正を行いました。
<script type="text/javascript">//<![CDATA[
$(function() {
	if ($('input[name=deliv_id]:checked').val()
		|| $('#deliv_id').val()) {
		var deliv_id=null;
		if($('input[name=deliv_id]:checked').val()){
			deliv_id=$('input[name=deliv_id]:checked').val();
		}
		if($('#deliv_id').val()){
			deliv_id=$('#deliv_id').val();
		}
		showForm(true);
		changeForm(deliv_id);
	} else {
		showForm(false);
	}
	$('input[id^=deliv_]').click(function() {
		showForm(true);
		var deliv_id=null;
		if($('input[name=deliv_id]:checked').val()){
			deliv_id=$('input[name=deliv_id]:checked').val();
		}
		if($('#deliv_id').val()){
			deliv_id=$('#deliv_id').val();
		}
		var data = {};
		data.mode = 'select_deliv';
		data.deliv_id = $(this).val();
		data['<!--{$smarty.const.TRANSACTION_ID_NAME}-->'] = '<!--{$transactionid}-->';
		$.ajax({
			type : 'POST',
			url : location.pathname,
			data: data,
			cache : false,
			dataType : 'json',
			error : remoteException,
			success : function(data, dataType) {
				if (data.error) {
					remoteException();
				} else {
					// 支払い方法の行を生成
					var payment_tbody = $('#payment tbody');
					payment_tbody.empty();
					for (var i in data.arrPayment) {
						// ラジオボタン 
						<!--{* IE7未満対応のため name と id をベタ書きする *}-->
						var radio = $('<input type="radio" name="payment_id" id="pay_' + i + '" />')
						.val(data.arrPayment[i].payment_id);
						// ラベル
						var label = $('<label />')
						.attr('for', 'pay_' + i)
						.text(data.arrPayment[i].payment_method);
						// 行
						var tr = $('<tr />')
						.append($('<td />')
						.addClass('alignC')
						.append(radio))
						.append($('<td />').append(label));
							// 支払方法の画像が登録されている場合は表示
						if (data.img_show) {
							var payment_image = data.arrPayment[i].payment_image;
							$('th#payment_method').attr('colspan', 3);
							if (payment_image) {
								var img = $('<img />').attr('src', '<!--{$smarty.const.IMAGE_SAVE_URLPATH}-->' + payment_image);
								tr.append($('<td />').append(img));
							} else {
								tr.append($('<td />'));
							}
						} else {
							$('th#payment_method').attr('colspan', 2);
						}
							tr.appendTo(payment_tbody);
					}
						// お届け時間を生成
					var deliv_time_id_select = $('select[id^=deliv_time_id]');
					deliv_time_id_select.empty();
					var no_select_label='';
					var arr_deliv_time_length=0;
					for (var i in data.arrDelivTime) {
						arr_deliv_time_length++;
					}
					
					if(arr_deliv_time_length>0){
						no_select_label='指定なし';
					}else{
						no_select_label='指定できません';
					}
					deliv_time_id_select.append($('<option />').text(no_select_label).val(''));
					if(arr_deliv_time_length>0){
						for (var i in data.arrDelivTime) {
							var option = $('<option />')
							.val(i)
							.text(data.arrDelivTime[i])
							.appendTo(deliv_time_id_select);
						}
					}
					changeForm(deliv_id);
					
				}
			}
		});
	});
	/**
	 * 通信エラー表示.
	 */
	function remoteException(XMLHttpRequest, textStatus, errorThrown) {
		alert('通信中にエラーが発生しました。カート画面に移動します。');
		location.href = '<!--{$smarty.const.CART_URLPATH}-->';
	}
	/**
	 * 配送方法の選択状態により表示を切り替える
	 */
	function showForm(show) {
		if (show) {
			$('#payment, div.delivdate, .select-msg').show();
			$('.non-select-msg').hide();
		} else {
			$('#payment, div.delivdate, .select-msg').hide();
			$('.non-select-msg').show();
		}
	}
	function changeForm(deliv_id) {
		var deliv_time_id_select = $('select[id^=deliv_time_id]');
		var deliv_date_select = $('select[id^=deliv_date]');
		if (deliv_id=='20') {
			if(deliv_time_id_select){
				deliv_time_id_select.attr("disabled", "disabled");
			}
			if(deliv_date_select){
				deliv_date_select.attr("disabled", "disabled");
			}
			$('div.pay_area02_display_mail').show();
			$('div.pay_area02_display').hide();
		} else {
			$('div.pay_area02_display').show();
			$('div.pay_area02_display_mail').hide();
			if(deliv_time_id_select){
				deliv_time_id_select.removeAttr("disabled");
			}
			if(deliv_date_select){
				deliv_date_select.removeAttr("disabled");
			}
		}
	}
});
//]]></script>

参考サイト内の通りへ変更致しましたところ、
配送方法「メール便」を選択すると、
お届け時間&お届け日の項目を消すことに成功しました。

ただし最上部の方にかきました通り、
宅急便商品でも、メール便商品でも、
配送方法「メール便」を選択できてしまう為、
最終的な解決まで至っておりません。
yuh
投稿日時: 2014/8/9 19:12
対応状況: −−−
登録日: 2013/1/9
居住地: 大阪
投稿: 1819
Re: 2.13系メール便の対応について
ちょっと気になってたんで、こちらのテストサイトでためしに作ってみましたが、正常に動作しますね・・・。
一応参考にしつつぱっと作ったんで、若干の差分があると思うんで内容を載せておきます。


SC_Helper_Delivery_Ex.php

    #メール便対応商品
    #メール便対応商品
    public function getList($product_type_id = null, $has_deleted = false, $mailflag = false )
    {
        $objQuery =& SC_Query_Ex::getSingletonInstance();
        $col = '*';
        $where = '';
        $arrVal = array();
        if (!$has_deleted) {
            $where .= 'del_flg = 0';
        }
        if (!is_null($product_type_id)) {
            if (!$has_deleted) {
                $where .= ' AND ';
            }
            $where .= 'product_type_id = ?';
            $arrVal[] = $product_type_id;
        }
        if ( $mailflag === false ) {
            if($where != ""){
                $where .= ' AND';
            }
            $where .= ' deliv_id <> ?';
            $arrVal[] = 5;//メール便のdeliv_id
        }
        $table = 'dtb_deliv';
        $objQuery->setOrder('rank DESC');
        $arrRet = $objQuery->select($col, $table, $where, $arrVal);
        return $arrRet;
    }


SC_Helper_Purchase_Ex.php

#メール便対応商品
    public function checkMailDeliverAvailable($productTypeId, &$objCartSession) 
    {
        $objQuery       = SC_Query_Ex::getSingletonInstance();
        $available = false;
        // カート内の情報を取得
        $items = $objCartSession->getCartList($productTypeId);
        $idary = array();
        foreach ( $items as $key => $value ) {
            if ( $value['productsClass']['product_id'] AND preg_match('/^[0-9]+$/',$value['productsClass']['product_id']) ) {
                $idary[] = $value['productsClass']['product_id'];
            }
        }
        if ( count($idary) > 0 ) {
            $query = '
            SELECT 
                IF(MAX(mail_deliver_enabled) = MIN(mail_deliver_enabled),MAX(mail_deliver_enabled),MIN(mail_deliver_enabled))
            FROM
                dtb_products
            WHERE
                product_id IN('.implode(",", array_fill(0, count($idary), "?")).')
            ';
            $check = $objQuery->getOne($query,$idary);
            if ( $check == 1 ) {
                return true;
            } else {
                return false;
            }
        }
        return false;
    }


LC_Page_Shopping_Payment.php

		$flag = $objPurchase->checkMailDeliverAvailable($cart_key, &$objCartSess) ;
		$this->arrDeliv = $objDelivery->getList($cart_key,false,$flag);
//↑ここを追加
//        $this->arrDeliv = $objDelivery->getList($cart_key);


テストでUPしていて、
http://skip.ec-lab.net/products/list.php?category_id=7
一部カート部分テスト中ですが、配送方法を取得する部分の処理自体は同じなので参考までに。
harusame
投稿日時: 2014/8/10 11:06
対応状況: −−−
半人前
登録日: 2014/7/30
居住地: 奈良
投稿: 27
Re: 2.13系メール便の対応について
確かに正常に動作しておりますね…。
わざわざテストサイトにまで構築頂き、本当に、本当に、ありがとうございます。
お応えできるよう、必死で修正を行っていたのですが、
やはり、何かしらの不具合が発生してしまいます…。

まずSC_Helper_Delivery.phpの
    #メール便対応商品
    public function getList($product_type_id = null, $has_deleted = false, $mailflag = false )
    {
        $objQuery =& SC_Query_Ex::getSingletonInstance();
        $col = '*';
        $where = '';
        $arrVal = array();
        if (!$has_deleted) {
            $where .= 'del_flg = 0';
        }
        if (!is_null($product_type_id)) {
            if (!$has_deleted) {
                $where .= ' AND ';
            }
            $where .= 'product_type_id = ?';
            $arrVal[] = $product_type_id;
        }
        if ( $mailflag === false ) {
            if($where != ""){
                $where .= ' AND';
            }
            $where .= ' deliv_id <> ?';
            $arrVal[] = 20;//メール便のdeliv_id
        }
        $table = 'dtb_deliv';
        $objQuery->setOrder('rank DESC');
        $arrRet = $objQuery->select($col, $table, $where, $arrVal);
        return $arrRet;
    }

上記に書き換えると、
管理画面>基本情報管理>配送方法設定
から、メール便が消え去ります。

そして、ショップ購入ページからも、
配送方法選択に、メール便が一切出てこなくなり、宅急便のみとなります。
(カート内商品がどのパターンでも)

上記は、DB内dtb_delivへ、mailflagのカラムを増やすことでよろしかったでしょうか。
違っていたらすみません。
下記のように増やしました。
 ・mailflag
  ┗smallint(6)|いいえ|0
そして、メール便のみ、mailflagを「0→1」へ変更しました。

根本的に間違っているかもしれませんが…。

どちらにしても、
カラム追加前、後、mailflag変更前、後、などなど、
全てにおいて、同じ現象(メール便が消え去る)となっております。

------

SC_Helper_Purchase_Ex.phpの書き換えにつきましては、
特に変化無しでした。

------

LC_Page_Shopping_Payment.phpにつきましては、
↓現在
        // 配送業者を取得
        $mail_delivery_available = $objPurchase->checkMailDeliverAvailable($cart_key, $objCartSess);
        $this->arrDeliv = $objDelivery->getList($cart_key, $mail_delivery_available);
        $this->is_single_deliv = $this->isSingleDeliv($this->arrDeliv);

から、
		$flag = $objPurchase->checkMailDeliverAvailable($cart_key, &$objCartSess) ;
		$this->arrDeliv = $objDelivery->getList($cart_key,false,$flag);
//↑ここを追加
//        $this->arrDeliv = $objDelivery->getList($cart_key);

上記に書き換えると、購入手続き画面にてエラー発生。

		$flag = $objPurchase->checkMailDeliverAvailable($cart_key, &$objCartSess) ;
		$this->arrDeliv = $objDelivery->getList($cart_key,false,$flag);
        $this->is_single_deliv = $this->isSingleDeliv($this->arrDeliv);

こちらでも同じくエラー発生。

と、いうようになっております。


何かプラグイン等が競合してしまっているのでしょうか…。
ちなみにプラグインは、
「全ページ対応パンくずリスト表示プラグイン 0.3」
「カートブロック明細表示プラグイン 1.0.0」
「クロネコヤマト|送り状発行ソフトB2対応CSVダウンロード 4.1」
上記が有効状態となっております。


いろいろとお教え頂いているにも関わらず、
現状に苛立ちと、申し訳ない気持ちでいっぱいです…。
今しばらくお力をお貸し頂ければ幸いです。


現在も、いろいろと修正を続けておりますので、
何か変化があれば投稿を致します。
harusame
投稿日時: 2014/8/10 11:34
対応状況: −−−
半人前
登録日: 2014/7/30
居住地: 奈良
投稿: 27
Re: 2.13系メール便の対応について
解決いたしました。

何がどうなったのかわからないのですが、
SC_Helper_Delivery_Ex.phpを参考サイト通り
<?php
/*
 * This file is part of EC-CUBE
 *
 * Copyright(c) 2000-2013 LOCKON CO.,LTD. All Rights Reserved.
 *
 * http://www.lockon.co.jp/
 *
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU General Public License
 * as published by the Free Software Foundation; either version 2
 * of the License, or (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
 */

require_once CLASS_REALDIR . 'helper/SC_Helper_Delivery.php';

/**
 * 配送方法を管理するヘルパークラス(拡張).
 *
 * LC_Helper_Delivery をカスタマイズする場合はこのクラスを編集する.
 *
 * @package Helper
 * @author pineray
 * @version $Id:$
 */
class SC_Helper_Delivery_Ex extends SC_Helper_Delivery
{
    //put your code here

		#メール便対応商品
		public function getList($product_type_id,$mail_delivery_available=true) {
		$mail_deliv_id=20;
		$objQuery = & SC_Query_Ex::getSingletonInstance();
		$objQuery->setOrder('rank DESC');
		$where='product_type_id = ? AND del_flg = 0';
		$arrval=array($product_type_id);
		if(!$mail_delivery_available){
			$where.=' AND deliv_id !=?';
			$arrval[]=$mail_deliv_id;
		}
		return $objQuery->select('*', 'dtb_deliv', $where ,$arrval );
	}
}

上記のような記述とし、

SC_Helper_Purchase_Ex.phpを
<?php
/*
 * This file is part of EC-CUBE
 *
 * Copyright(c) 2000-2013 LOCKON CO.,LTD. All Rights Reserved.
 *
 * http://www.lockon.co.jp/
 *
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU General Public License
 * as published by the Free Software Foundation; either version 2
 * of the License, or (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
 */

require_once CLASS_REALDIR . 'helper/SC_Helper_Purchase.php';

/**
 * 商品購入関連のヘルパークラス(拡張).
 *
 * LC_Helper_Purchase をカスタマイズする場合はこのクラスを編集する.
 *
 * @package Helper
 * @author Kentaro Ohkouchi
 * @version $Id: SC_Helper_Purchase_Ex.php 22856 2013-06-08 07:35:27Z Seasoft $
 */
class SC_Helper_Purchase_Ex extends SC_Helper_Purchase
{

		#メール便対応商品
		function checkMailDeliverAvailable($productTypeId, &$objCartSession) {

		$available = false;

		// カート内の情報を取得
		$items = $objCartSession->getCartList($productTypeId);
		if (count(array_keys($items))) {
			$available = true;
			foreach (array_keys($items) as $key) {
				$item = & $items[$key];
				$product = & $item['productsClass'];
				if ($product['mail_deliver_enabled'] == MAIL_DELIVER_ENABLED) {
					continue;
				} else {
					$available = false;
				}
			}
		}
		return $available;
	}
}

上記のようにしましたところ、
正常に動作いたしておりました。


全くどの部分での不具合だったのか、
どの部分で改善したのかがわからないのが納得いかないのですが、
結果、
メール便のみカートにある場合、メール便を表示、
宅急便も混ざっている場合、メール便非表示、
という状態とすることができました。


yuh様には、長期間に渡り、
本当に、本当に、細かいところまで親切にお教えいただき、
大変勉強になり、メール便対応サイトにもすることができ、
感謝してもしきれないほどです。
本当に、本当に、ありがとうございました。


本番サイトへ移行し、
問題が無ければ、解決済みとさせていただきます。
harusame
投稿日時: 2014/8/10 11:50
対応状況: −−−
半人前
登録日: 2014/7/30
居住地: 奈良
投稿: 27
Re: 2.13系メール便の対応について
何度も申し訳ございません。

ショップ内は問題がないように思われるのですが、


管理画面>基本情報管理>配送方法設定
上記の一覧から、全ての登録情報が消え去りました…。


SC_Helper_Delivery_Ex.php内の
	#メール便対応商品
	public function getList($product_type_id, $mail_delivery_available=true) {
		$mail_deliv_id=20;
		$objQuery = & SC_Query_Ex::getSingletonInstance();
		$objQuery->setOrder('rank DESC');
		$where='product_type_id = ? AND del_flg = 0';
		$arrval=array($product_type_id);
		if(!$mail_delivery_available){
			$where.=' AND deliv_id !=?';
			$arrval[]=$mail_deliv_id;
		}
		return $objQuery->select('*', 'dtb_deliv', $where ,$arrval );
	}

上記部分を削除すると、一覧も復活致します。
同時に、サイト内のメール便対応が解除されます…。


ちなみにですが、
SC_Helper_Delivery.php内は下記のように、初期状態のままです。
    /**
     * 配送方法一覧の取得.
     *
     * @param  integer $product_type_id 商品種別ID
     * @param  boolean $has_deleted     削除された支払方法も含む場合 true; 初期値 false
     * @return array
     */
    public function getList($product_type_id = null, $has_deleted = false)
    {
        $objQuery =& SC_Query_Ex::getSingletonInstance();
        $col = '*';
        $where = '';
        $arrVal = array();
        if (!$has_deleted) {
            $where .= 'del_flg = 0';
        }
        if (!is_null($product_type_id)) {
            if (!$has_deleted) {
                $where .= ' AND ';
            }
            $where .= 'product_type_id = ?';
            $arrVal[] = $product_type_id;
        }
        $table = 'dtb_deliv';
        $objQuery->setOrder('rank DESC');
        $arrRet = $objQuery->select($col, $table, $where, $arrVal);

        return $arrRet;
    }



一覧から消えた状態でもDBでいじれますし、
どうにもならない場合、現状でいこうかと思います…。
yuh
投稿日時: 2014/8/10 12:17
対応状況: −−−
登録日: 2013/1/9
居住地: 大阪
投稿: 1819
Re: 2.13系メール便の対応について
SC_Helper_Delivery.phpはミスで下記のコードが正常に動作します。

    #メール便対応商品
    public function getList($product_type_id = null, $has_deleted = false,$mailflag = false)
    {
        $objQuery =& SC_Query_Ex::getSingletonInstance();
        $col = '*';
        $where = '';
        $arrVal = array();
        if (!$has_deleted) {
            $where .= 'del_flg = 0';
        }
        if (!is_null($product_type_id)) {
            if (!$has_deleted) {
                $where .= ' AND ';
            }
            $where .= 'product_type_id = ?';
            $arrVal[] = $product_type_id;

            if ( $mailflag === false ) {
                if($where != ""){
                    $where .= ' AND';
                }
                $where .= ' deliv_id <> ?';
                $arrVal[] = 5;//メール便のdeliv_id
            }
        }
        $table = 'dtb_deliv';
        $objQuery->setOrder('rank DESC');
        $arrRet = $objQuery->select($col, $table, $where, $arrVal);
        return $arrRet;
    }


管理画面確認してなかったです^^;
すいません。
harusame
投稿日時: 2014/8/10 12:28
対応状況: −−−
半人前
登録日: 2014/7/30
居住地: 奈良
投稿: 27
Re: 2.13系メール便の対応について
ありがとうございます。

お教えいただいたコードへSC_Helper_Delivery.phpを変更致しました。


管理画面につきましては、改善されておりました…すみません。
キャッシュなのか、なんなのか、こちらも原因がわかりませんが、
通常通り、表示されておりました。
十分確認をせず、記載してしまい申し訳ございません。


今から、本番サイトへ移行作業をしてみます。
harusame
投稿日時: 2014/8/10 13:32
対応状況: −−−
半人前
登録日: 2014/7/30
居住地: 奈良
投稿: 27
Re: 2.13系メール便の対応について
本番サイトへの移行が完了し、正常に動作致しました。
本当にありがとうございます。

ただ、
引用:
管理画面につきましては、改善されておりました…すみません。
キャッシュなのか、なんなのか、こちらも原因がわかりませんが、
通常通り、表示されておりました。
十分確認をせず、記載してしまい申し訳ございません。

と言いましたが、
やはり、管理画面の配送方法一覧が消えておりました。

先ほど、表示されていたのは、
コードを削除した状態で保存していた為でした。
やはり、
SC_Helper_Delivery_Ex.php内の、
	#メール便対応商品
	public function getList($product_type_id, $mail_delivery_available=true) {
		$mail_deliv_id=20;
		$objQuery = & SC_Query_Ex::getSingletonInstance();
		$objQuery->setOrder('rank DESC');
		$where='product_type_id = ? AND del_flg = 0';
		$arrval=array($product_type_id);
		if(!$mail_delivery_available){
			$where.=' AND deliv_id !=?';
			$arrval[]=$mail_deliv_id;
		}
		return $objQuery->select('*', 'dtb_deliv', $where ,$arrval );
	}

上記により、配送方法一覧が、表示&消去されてしまいました。




※※※追記致します※※※

SC_Helper_Delivery_Ex.php内のコードは削除し、
SC_Helper_Delivery.php内のコード、
 	#メール便対応商品
    public function getList($product_type_id = null, $has_deleted = false,$mailflag = false)
    {
        $objQuery =& SC_Query_Ex::getSingletonInstance();
        $col = '*';
        $where = '';
        $arrVal = array();
        if (!$has_deleted) {
            $where .= 'del_flg = 0';
        }
        if (!is_null($product_type_id)) {
            if (!$has_deleted) {
                $where .= ' AND ';
            }
            $where .= 'product_type_id = ?';
            $arrVal[] = $product_type_id;

            if ( $mailflag === false ) {
                if($where != ""){
                    $where .= ' AND';
                }
                $where .= ' deliv_id <> ?';
                $arrVal[] = 20;//メール便のdeliv_id
            }
        }
        $table = 'dtb_deliv';
        $objQuery->setOrder('rank DESC');
        $arrRet = $objQuery->select($col, $table, $where, $arrVal);
        return $arrRet;
    }

のみにすると、改善されました…。

確証はありませんが、
こちらのコードだけでも、正常に動作しておりますので、
今のところ、問題はないかと思われます。
お騒がせいたしました。
yuh
投稿日時: 2014/8/10 13:44
対応状況: −−−
登録日: 2013/1/9
居住地: 大阪
投稿: 1819
Re: 2.13系メール便の対応について

#メール便対応商品
	public function getList($product_type_id, $mail_delivery_available=true) {
		$mail_deliv_id=20;
		$objQuery = & SC_Query_Ex::getSingletonInstance();
		$objQuery->setOrder('rank DESC');
		$where='product_type_id = ? AND del_flg = 0';
		$arrval=array($product_type_id);
		if(!$mail_delivery_available){
			$where.=' AND deliv_id !=?';
			$arrval[]=$mail_deliv_id;
		}
		return $objQuery->select('*', 'dtb_deliv', $where ,$arrval );
	}

上記のソースは色々混じってます。


    #メール便対応商品
    public function getList($product_type_id = null, $has_deleted = false,$mailflag = false)
    {
        $mail_deliv_id = 20;
        $objQuery =& SC_Query_Ex::getSingletonInstance();
        $col = '*';
        $where = '';
        $arrVal = array();
        if (!$has_deleted) {
            $where .= 'del_flg = 0';
        }
        if (!is_null($product_type_id)) {
            if (!$has_deleted) {
                $where .= ' AND ';
            }
            $where .= 'product_type_id = ?';
            $arrVal[] = $product_type_id;

            if ( $mailflag === false ) {
                if($where != ""){
                    $where .= ' AND';
                }
                $where .= ' deliv_id <> ?';
                $arrVal[] = $mail_deliv_id;//メール便のdeliv_id
            }
        }
        $table = 'dtb_deliv';
        $objQuery->setOrder('rank DESC');
        $arrRet = $objQuery->select($col, $table, $where, $arrVal);
        return $arrRet;
    }


getlistの引数がデフォルトだとproduct_type_id, $has_deleted でその部分に追加で$mail_delivery_available
を追加しているはずですが、$has_deletedが消えています。
管理画面から読み出す部分に関してはproduct_type_idを渡さずに
$objDeliv->getList();
と使用しているので、
$product_type_idがnullでproduct_type_id = NULL AND del_flg = 0とクエリが走り結果が0件となると思います。

自分で変更しているやつに関しては管理画面からのproduct_type_idがnullの場合にはメール便のチェックはスルーするようにしているので、下のソースを使用してみてください。
その際にpublic function getListからコピーしてお試しください。
harusame
投稿日時: 2014/8/10 14:04
対応状況: 解決済
半人前
登録日: 2014/7/30
居住地: 奈良
投稿: 27
Re: 2.13系メール便の対応について
変更させていただきました。

管理画面につきましても、
問題無く表示いたしております。

また、
カート、購入画面などなどにつきましても、
動作に問題はないようです。


はじめは、ほとんど諦めておりましたので、
ご丁寧に教えて頂き、本当に感謝いたします。
本当にありがとうございました。

それでは、解決済みとさせていただきます。

yuh様に出会うことができ、本当によかったです!
« 1 2 (3) 4 »
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


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

統計情報

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

投稿数ランキング

1
seasoft
7367
2
468
3217
3
AMUAMU
2712
4
nanasess
2314
5
umebius
2085
6
yuh
1819
7
h_tanaka
1646
8
red
1570
9
mcontact
1296
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.