« 出生届を出してきました | トップ | アスクルの新しいカタログ »

2004年09月16日

osCommerceカスタマイズ - 日付をベースとした注文番号  このエントリをはてなブックマークに登録 

osCommerceの標準では、注文番号に関して1から始まる連番の形で振られます。
この標準のままでは、注文番号からどれくらいの注文が店舗に対してあるのかお客様が簡単に推測できるため、非常に問題があると考えます。

このパッチでは、注文番号を日付をベースとしたものに変更し、たとえば、20040916-121345678といった形で、注文番号を生成します。


20040916の部分は、注文の行われた日付を示し、121345678の部分は、注文の行われた時刻を元に、その日の0時0秒からのどれだけ時間が経過しているかを示しています。

03時25分45秒の注文なので、20040916-032545 などと、そのまま注文の時間を盛り込んだ形にすることも考えましたが、あまり注文番号の意味を明白にしすぎるのも、お客様にとっては抵抗があるのかもしれないと思い、このような形としました。

注文番号が20040916-12345678の場合は、2004年9月16日に注文が行われ、9月16日の0時0分0秒より、12345.678秒(3時間25分45秒678)経過していることを示しています。

osCommerceの標準では、連番で注文番号が生成されるため、注文番号が重複するということは仕組み上考えられませんが、今回のように時間を元に注文番号を生成する場合や、ランダムに注文番号を生成するような場合は、注文番号が重複して生成されることを想定し、エラー処理を盛り込む必要があります。
この点については、Richard Bentley氏によるRandom Order Numberの改良を参考に、機能を盛り込みました。

注文番号に、小数点以下第3位までの秒数を盛り込んでいるのは、注文番号が重複する可能性を少なくするためで、万が一重複した場合は、新たに注文番号を生成しなおすことで、重複を防ぎます。
その再生成の作業を行うにあたり、前回注文番号を生成した際より若干ではありますが時間経過が生じるため、小数点以下第3位の値も若干増加し、それによって重複が回避されます。
非常にアクセスが集中した際のことも考え、この処理を10回まで繰り返すようになっています。まず起こりえないと思いますが、その10回の再生成でも注文番号の重複を解決できなかった場合は、fatal errorとなり画面にエラー表示がなされることになります。

このカスタマイズ方法は、以下よりダウンロードできます。

Download file

投稿者 田中@グリニッジ : 2004年09月16日 23:48

トラックバック

このエントリーのトラックバックURL:
http://blog.tanaka-cs.com/mt/mt-tb.cgi/9

このリストは、次のエントリーを参照しています: osCommerceカスタマイズ - 日付をベースとした注文番号:

» osCommerce from PukiWiki/TrackBack 0.1
osCommerceについて osCommerceは、ネットショップを構築するためのシステムで、ネットショップを構築するための各種機能がひとまとめになっています... [続きを読む]

トラックバック時刻: 2004年09月20日 04:21

コメント

投稿者 みがき : 2004年09月20日 10:14

栄太郎くん、かわいいー♪
心から、おめでとーございます。

しかし、仕事でパソコン使っている男性の家庭の
出生率は断然女の子が増えているというのに、
田中ちゃんのところはしっかり男の子。

電磁波に負けないオトコだったんですねー!
尊敬。

投稿者 田中@グリニッジ : 2004年09月20日 13:01

ありがとうございます。
でもコメントつける場所がずれてるような。

投稿者 bob : 2004年12月26日 12:41

御世話になります。17桁の注文番号、ありがたく利用させて頂いています。ただ時刻によっては桁が少なくなることがあるようなので一部以下のように変更しようとしています。

$t2 = date('H')*3600 + date('i')*60 + date('s');
を以下と差し替え
$t2 = sprintf('%05d', date('H')*3600+date('i')*60+date('s'));

これで大丈夫かな?

投稿者 田中@グリニッジ : 2004年12月26日 15:16

はい、それで問題ございません。
元々そのようにしておいたほうが良かったですね。

投稿者 Daniel Anderson : 2005年10月23日 11:20

Your website is wonderfull. I'll come visit again. with equanimity opinions: http://www.quotationspage.com/quotes/Albert_Einstein , By failing to prepare, you are preparing to fail , think in herds

投稿者 Brandon Williams : 2005年11月14日 23:55

Very nice. You're site is very helpful. it has been well said: http://www.worldlighthouses.org , Rape Create Give - that is all that TV is capable of An investment in knowledge pays the best interest , Give Make Make - that is all that Soldier is capable of By failing to prepare, you are preparing to fail

投稿者 William Adams : 2005年11月16日 00:05

It's a very nice website you're having here. It's impossible to experience one's death: http://www.womeninphotography.org , Industrious Cards is always International Player Life is the art of drawing sufficient conclusions , when Boy Make Gnome Give their senses slowly

コメントしてください




保存しますか?


楽天トラベル 夏の旅行