バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

機能要望 > 管理機能 > 備忘録「お届け先の削除」ボタンの検討(チケット#2529)

管理機能

新規スレッドを追加する

フラット表示 前のトピック | 次のトピック
投稿者 スレッド
sumida
投稿日時: 2014/7/6 22:59
対応状況: −−−
仙人
登録日: 2013/2/10
居住地: 広島県呉市ときどき瀬戸内海
投稿: 641
備忘録「お届け先の削除」ボタンの検討(チケット#2529)
勝手ながら、
受注情報編集画面での「お届け先を削除」について検討してみました。

現状の更新処理(DBへの登録:関数doRegister):
(1) dtb_shipping

$objPurchase->registerShipping($order_id, $arrShippingValues, false);

  この処理は、注文番号内のお届け先をすべて、delete,insertにより更新している。
  そのため、更新前と更新後のお届け先数が異なっても対応できる。(つまり、「お届け先を追加」「お届け先を削除」どちらも可能である)
(2) dtb_shipment_item

$objPurchase->registerShipmentItem($order_id, $shipping_id, $arrShipmentValues[$shipping_index]);

  この処理は、注文番号のお届け先番号内の商品をすべて、delete,insertにより更新している。
  そのため、更新前と更新後の商品数が異なっても対応できる。(つまり、「商品の追加」「商品の削除」どちらも可能である)
  しかし、$shipping_idが必須であるため、「お届け先を削除」した場合、削除した$shipping_idが不明になり対応できない。
  (現状では、DB内に削除したお届け先の商品が残った状態となる。)

結論:
  「お届け先の削除」は、実現可能であるが、前述のdtb_shipment_itemの残骸を削除する部分を作成する必要がある。
  つまり、更新前(DB)と更新後(画面)を比較し、削除されたお届け先を削除したのち、既存の更新処理を行う形になる。

不具合:
  テンプレートでは、
    FORM_COUNTRY_ENABLE:trueの場合
shipping_country_id
shipping_zipcode
    FORM_COUNTRY_ENABLE:falseの場合
shipping_country_id
  の項目を展開する。
  ここで、FORM_COUNTRY_ENABLE:falseの場合、
shipping_zipcode
  がテンプレートにない。
  また、classファイルでは、

        $objFormParam->addParam('ZIPCODE', 'shipping_zipcode', STEXT_LEN, 'n', array('GRAPH_CHECK', 'MAX_LENGTH_CHECK'));

  を宣言し、FORM_COUNTRY_ENABLEに関係なくカラム名としてshipping_zipcodeを使っている。
  つまり、テンプレートにない項目shipping_zipcodeを、classファイルで扱っており、
  関数getValue, setValueで利用すると不具合が発生する。

追記(不具合の詳細):
2口のお届け先の受注情報を1口のお届け先に更新する場合を例にする。

受注情報編集画面の画面表示にあたり、
(1) DBから受注情報を取得
(2) 各項目を画面遷移前の(項目の編集を行った)情報で上書き
(3) 画面を(画面遷移前の情報を引き継いで)表示
という手順になる。
ここで、FORM_COUNTRY_ENABLE:falseの場合、'shipping_zipcode'の項目が画面に存在していないので、(2)の段階で上書きの対象から除外される。
つまり、内部では、
  'shipping_zipcode'は、2口
  それ以外は、1口
という中途半端な状態になっている。
ここで、これらの内容からお届け先情報一覧を取り出すと、「'shipping_zipcode'は、2口」の影響で、
  「内容が空の2口めが存在してしまう。」
という不具合です。

再追記:
LC_Page_Admin_Order_Edit.php

    public $arrShippingKeys = array(
        'shipping_id',
        'shipping_name01',
        'shipping_name02',
        'shipping_kana01',
        'shipping_kana02',
        'shipping_company_name',
        'shipping_tel01',
        'shipping_tel02',
        'shipping_tel03',
        'shipping_fax01',
        'shipping_fax02',
        'shipping_fax03',
        'shipping_pref',
        'shipping_country_id',
        'shipping_zipcode',
        'shipping_zip01',
        'shipping_zip02',
        'shipping_addr01',
        'shipping_addr02',
        'shipping_date_year',
        'shipping_date_month',
        'shipping_date_day',
        'time_id',
    );

この定義で、'shipping_zipcode'は、お届け先情報の1つとして扱われているため、
画面上に定義されるべき項目だと思います。
フラット表示 前のトピック | 次のトピック


題名 投稿者 日時
 » 備忘録「お届け先の削除」ボタンの検討(チケット#2529) sumida 2014/7/6 22:59
     Re: 備忘録「お届け先の削除」ボタンの検討(チケット#2529) sumida 2014/7/7 20:13

 



ログイン


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

統計情報

総メンバー数は88,800名です
総投稿数は109,972件です

投稿数ランキング

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