バージョン選択

フォーラム

メニュー

オンライン状況

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

PR

デザインテンプレート EC-CUBE3.0版が登場!
広告掲載について

サイト内検索

質問 > フロント機能 > その日に出荷する各商品の注文総数を出力したい。

フロント機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
tsurtua
投稿日時: 2017/9/7 13:42
対応状況: 開発中
常連
登録日: 2017/3/31
居住地:
投稿: 32
その日に出荷する各商品の注文総数を出力したい。
[EC-CUBE] EC-CUBEのバージョン:2.13.5
        新規インストールかアップデートか:新規インストール
[OS] OS:Windows8.1
[PHP] PHPのバージョン:PHP 5.6.24
[データベース] DB:MySQL 5.7.18
[ブラウザ] ブラウザ名:Chome
[導入プラグイン] プラグイン:のし対応 1.3.5/クロネコヤマト カード・後払い一体型決済コア機能プラグイン 1.0/全ページ対応パンくずリスト表示プラグイン 無料版 0.5


いつもお世話になっています。

管理画面のカスタマイズをおこなうことになりました。
・カスタマイズ内容は、
その日に出荷する各商品の各総数を何かしらで出力できるようにするというものです。
・どの画面からどんな形式でも良い(社内で使うものなので見た目はこだわらない)ので、
・出荷日、商品名、各商品の総出荷数
を出力しなければいけません。
・その日に出荷する対象注文の基準は「約130件分の注文」です。
一日に大量の注文が来ることもあるので、"一回に3日分を出荷する"というように注文日では決められません。


現在考えている対策案が2つあります。
どちらも、先にその日に出荷する対象注文を決めて、一番古い注文と最新の注文の注文番号を使用する方法です。

案A 受注管理画面を使用する
1.受注管理画面より、注文番号で対象の注文を検索する。
2.表示された注文を対象に何かしらのボタンで集計して、CSVファイルかPDFファイルなどで情報を出力する。

案B 売上集計画面を使用する
1.売上集計画面の商品別集計で、「月度集計」、「期間集計」とあるところに、「注文番号集計」のような機能を追加して、注文番号1~100のように指定して集計をできるようにする。
2.デフォルトにある「CSVダウンロードボタン」でCSVファイルに集計結果の情報を出力する。

デフォルトに近く簡単なのは、何となくですが案Bかなと思っています。
この機能を実現するためにはどちらの案が良いでしょうか?
もし、他にも良案があれば教えて頂きたいです。

また、案A,Bともに実装方法が分からないので、良いと思う案の実装方法が分かる方はご教授頂ければ幸いです。

何卒よろしくお願い致します。
shinra
投稿日時: 2017/9/7 14:14
対応状況: −−−
常連
登録日: 2017/9/2
居住地:
投稿: 43
Re: その日に出荷する各商品の注文総数を出力したい。
出荷する各商品の条件は何を元に判断するのでしょうか?
社内で使用するので受注=出荷で問題ないのであれば
例えば

CREATE TABLE `dtb_order_send` (
 `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
 `senddate` date,
 `order_id_start` int(10) unsigned NOT NULL ,
 `order_id_end` int(10) unsigned NOT NULL ,
 PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8;

このようなテーブルを作成し、


INSERT INTO
	dtb_order_send
SELECT
	id,
	senddate,
	order_id_start,
	order_id_end
FROM
	(
		SELECT
			NULL as id,
			DATE(NOW()) as senddate,
			MIN(order_id) as order_id_start,
			MAX(order_id) as order_id_end,
			COUNT(*) as cnt
		FROM
			dtb_order
		WHERE
			order_id > COALESCE((
				SELECT
					order_id_end 
				FROM
					dtb_order_send
				ORDER BY
					id DESC
				LIMIT 1
				),0) AND 
			status <> 3
	) as a
WHERE
	cnt > 130


一応キャンセルは入れていますが、このようなクエリを定期的に発行することで、130件以上になった受注データをまとめて開始のorder_idと終了のorder_idを保存することができます。

一旦DBにそのデータが保存できれば後は管理画面上で何なりと表示等はできるかとおもいます。


*MINとMAXが逆になってたので修正しました
tsurtua
投稿日時: 2017/9/7 14:33
対応状況: −−−
常連
登録日: 2017/3/31
居住地:
投稿: 32
Re: その日に出荷する各商品の注文総数を出力したい。
shinra様ご返信ありがとうございます。

出荷する各商品の条件は、商品Aと商品Bの2つの売上数が圧倒的に多いので、この二つだけで大丈夫です。
もし、2つだけを対象に出力する処理が面倒であればすべての商品を対象に出力しても大丈夫です。(商品の種類は全部で8つです。)
この先A,B以外の商品も対象にする必要がある可能性も無いことはないので、8つ全てを対象にしておくのがいいかもですね。。

二つ目のクエリは、管理画面に何かボタンを作ってこれをクリックした際にこのクエリが流れるようにするということでしょうか?
shinra
投稿日時: 2017/9/7 14:39
対応状況: −−−
常連
登録日: 2017/9/2
居住地:
投稿: 43
Re: その日に出荷する各商品の注文総数を出力したい。
もし商品Aと商品Bのみにするのであれば

INSERT INTO
	dtb_order_send
SELECT
	id,
	senddate,
	order_id_start,
	order_id_end
FROM
	(
		SELECT
			NULL as id,
			DATE(NOW()) as senddate,
			MIN(order_id) as order_id_start,
			MAX(order_id) as order_id_end,
			COUNT(*) as cnt
		FROM
			dtb_order
		WHERE
			order_id > COALESCE((
				SELECT
					order_id_end 
				FROM
					dtb_order_send
				ORDER BY
					id DESC
				LIMIT 1
				),0) AND 
			status <> 3 AND 
			EXISTS(
				SELECT
					*
				FROM
					dtb_order_detail
				WHERE
					order_id = dtb_order.order_id AND 
					product_id IN(1,2) //←ここにAとBの商品のproduct_idを入れる
				
			)
	) as a
WHERE
	cnt > 130

このような感じで変更すれば取れますが、受注が多そうなので適切にINDEX追加が必要になるかと思います。

クエリ自体はボタンで実行でもページを読み込んだ時に実行でもどちらでもいいんじゃないでしょうか?
tsurtua
投稿日時: 2017/9/7 14:48
対応状況: −−−
常連
登録日: 2017/3/31
居住地:
投稿: 32
Re: その日に出荷する各商品の注文総数を出力したい。
shinra様ご丁寧にありがとうございます。

どこのページにこちらのクエリを使用した処理を入れるのがよろしいでしょうか?
管理画面の検索や集計等のカスタマイズはあまりやったことが無く、最善の方法が思いつきません。。
shinra
投稿日時: 2017/9/7 15:15
対応状況: −−−
常連
登録日: 2017/9/2
居住地:
投稿: 43
Re: その日に出荷する各商品の注文総数を出力したい。
正直最初に書いた全商品対応の方のクエリに関しては、多分負荷はほぼかからないと思うので、管理画面のHOME開いた時に実行するでも、どこでも大丈夫だと思います。

どちらかというと、その情報をどのように使用するかによって作る処理は変わってくると思います。

例えば、受注ステータスに「発送準備中」というステータスを追加して、発送のデータがたまった後、DBに今日発送のデータが登録された段階で、該当の受注データのステータスを発送準備中に変更するとか、正直なにをやりたいかによって作る処理は変わってくると思います。
tsurtua
投稿日時: 2017/9/7 17:20
対応状況: −−−
常連
登録日: 2017/3/31
居住地:
投稿: 32
Re: その日に出荷する各商品の注文総数を出力したい。
なるほどですね。
確かに運用次第でどこで出力してもよさそうですね。

今回受注ステータスとの関連は考えておりません。

実はお客様が使われているサイトのカスタマイズなので、できるだけ簡単にわかりやすい使用方法で実現できればと思っています。
なので受注ステータスの変更などは、お客様の業務が増えるため好ましくありません。
例として挙げて頂いていますが、一応書いておきました。。
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ

 



ログイン


EC-CUBEペイメント

クレジットカード情報の非保持化対応

統計情報

総メンバー数は20,136名です
総投稿数は82,934件です

投稿数ランキング

1
seasoft
7331
2
AMUAMU
2712
3
nanasess
1644
4
yuh
1392
5
red
1066
6
fukap
907
7
shutta
827
8 ramrun 789
9
tsuji
784
10
468
712
11
umebius
712
12
tao_s
651
13 sumida 638
14
homan
633
15 karin 618
16 DELIGHT 571
17
patapata
502
18
flealog
483
19 tonton 436
20
ecbg
387


ネットショップの壺

EC-CUBEインテグレートパートナー

Copyright© LOCKON CO.,LTD. All Rights Reserved.