バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

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

フロント機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
tsurtua
投稿日時: 2017/9/7 13:42
対応状況: 開発中
常連
登録日: 2017/3/31
居住地:
投稿: 57
その日に出荷する各商品の注文総数を出力したい。
[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
居住地:
投稿: 124
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
居住地:
投稿: 57
Re: その日に出荷する各商品の注文総数を出力したい。
shinra様ご返信ありがとうございます。

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

二つ目のクエリは、管理画面に何かボタンを作ってこれをクリックした際にこのクエリが流れるようにするということでしょうか?
shinra
投稿日時: 2017/9/7 14:39
対応状況: −−−
一人前
登録日: 2017/9/2
居住地:
投稿: 124
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
居住地:
投稿: 57
Re: その日に出荷する各商品の注文総数を出力したい。
shinra様ご丁寧にありがとうございます。

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

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

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

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

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


 



ログイン


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

統計情報

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

投稿数ランキング

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