Zen Cart ポイントモジュールアドバンス バグフィックス

チェックアウト画面をリロードするとDBへのデータ挿入が重複エラーとなる件。
リロード時に該当データが存在しない場合のみ処理する方向で修正。
あわせて、edit_orders-JPの機能拡張も適用。

ポイントモジュールアドバンス Zen Cart1.3.8a対応

ポイントモジュールアドバンスをZen Cart1.3.8aに対応しました。
仮名フィールドをaddress_bookのものを参照するように書き替えました。
また、同梱のedit_orders-JPの修正画面にある支払い方法のプルダウン用データを自動で取得するように変更しました。
これは単体の注文修正モジュールedit_orders-JPにも適用済みです。
上記修正をZen Cart1.3.8a用だけでなく1.3.0系用のものにも適用しました。

ポイントモジュールアドバンス Zen Cart対応バージョン その2

1.3.8aではcustomersテーブルの仮名フィールドは元々無いんですが、フィールドを追加する形でポイントモジュールアドバンスを動くようにしました。
でもやっぱり良くないかもしれないなと思いなおし、他のテーブルの仮名フィールドを使うように作り変えてます。
公式版(1.3.0系)は仮名情報を下記のテーブルに持っています。
顧客テーブル(customers)
住所テーブル(address_book)
受注テーブル(orders)
対して1.3.8aは下記。
住所テーブル(address_book)
受注テーブル(orders)
Zen Cartは「注文者」「配送先」「請求先」と3つの住所データを扱います。
顧客情報を含んで5つまでこれらが設定でき、「配送先」と「請求先」に指定できます。
受注データには「注文者」「配送先」「請求先」が入ることになります。
ここで実際に参照するデータはどこにあるのかというと、
「注文者」 -> 顧客テーブル(customers)、住所テーブル(address_book)、ゾーンと国(割愛)
「配送先」 -> 住所テーブル(address_book)、ゾーンと国(割愛)
「請求先」 -> 住所テーブル(address_book)、ゾーンと国(割愛)
になります。
つまり、どの住所データも「住所テーブル」を参照しています。
それで仮名情報を住所テーブルのみに絞って持たせたのが1.3.8aということになります。
当初仮名情報は顧客データに持たせるのが一般的じゃないのか?と思っていたのですが、こうしてみると住所テーブルのみでも良いのかと。
元をただすと「注文者」の情報で住所テーブルを参照するのが、もっと遡ると顧客情報と住所情報で重複したデータ(登録者の情報)を保持することがよろしくないんじゃ?とも思ったりします。
とはいえ、公式としてリリースしているバージョンのDB構成を踏襲しないのは個人的には好みじゃありません。
ここには戦略的な意図が見え隠れする気がします。
EC-CUBEとかP1エミュレータのような図式も見えます。
(私の見方は完全な憶測だし穿ってますけどね)
何が言いたいのか分からなくなってきましたが、間口は広げないといけないので、ポイントモジュールアドバンスの1.3.8a正式対応のためにもうちょっとハックしますよという告知でした。

Zen Cart1.3.8a対応モジュール

edit_orders-JP ならびに ポイントモジュールアドバンス の1.3.8a対応版をリリースしました。
1.3.0で存在していた顧客テーブルの仮名フィールドが1.3.8aではありません。
その為注文時にエラーが出ていました。
どう対処しようか迷いましたが、仮名フィールドの存在をチェックし、なければフィールドを追加するSQLを追記して対処してあります。(ポイントモジュールアドバンスにおいてこの対応をしてあります。)
これがベストの選択か否かはよく分かりませんが、急ぎ1.3.8a対応版をリリースしたかったので上記の形にしました。
1.3.0.2、1.3.0.3、1.3.8a、zox での動作を確認しました。
既に導入サイトもありますのでぜひとも採用していただきたいと思っています。
旧版はアイディアでポイントサービスをお手軽に実現するものとして支持いただきましたが、ファイル構成、実装の仕方等々で未熟さが目立ったものでした。
ポイントモジュールアドバンスはコアの上書きを一切しないで実装することも可能でしたが、利便性との天秤でいくつかのコアファイルを上書きしています。
次は会員ランクモジュールの刷新、関連商品モジュールの刷新を行う予定です。

ポイントモジュールアドバンス Zen Cart対応バージョン

ポイントモジュールアドバンスのZen Cart対応バージョンに関してです。
zen-cart-v1.3.0.2-l10n-jp-3用で開発しましたが現在 Zen Cart 1.3.8a(現段階の最新) での確認作業中です。
今のところ動作しているように見受けられます。(全モジュールファイルUTF-8に文字コード変換済み)
edit_orders-JPに関しても期待した動作を見せています。
ただ、一点のみ気になるのは1.3.0では存在しているテーブルのフィールド(仮名に関する2件)が1.3.8aでは存在していませんので本体インストール後、注文時にエラーが出ると思います。
(sqlを発行し上記2件のフィールドを追加してからのテストを行っています。)
1.3.8a用の他のモジュールとの整合はチェックしていませんがポイントモジュールアドバンスは1.3.8a対応ということで問題ないと思います。
他モジュールとの整合はその都度確認してください。
また、掲示板で寄せられていたedit_orders-JPの1.3.8aにおける不具合は現状開発環境では再現しません。この件に関しては引き続き調査しますので報告をお待ちください。
■1.3.8aに対するテスト環境
サーバOS: Windows NT 5.1 build 2600
PHP バージョン: 5.1.6 (Zendのバージョン: 2.1.0)
with eAccelerator v0.9.5-rc1, Copyright (c) 2004-2006 eAccelerator, by eAccelerator
with Zend Debugger v5.2.12, Copyright (c) 1999-2007, by Zend Technologies
データベース: MySQL 5.0.24a-community-nt 文字コード UTF-8
HTTP サーバ: Apache/2.2.3 (Win32) DAV/2 mod_ssl/2.2.3 OpenSSL/0.9.8c mod_autoindex_color PHP/5.1.6