2014年11月6日木曜日

iDempiere : とりあえず「受注」してみたものの、、、

手っ取り早く、受注 (Sales Order)を入れてみようと思ってました。

ちなみに発注は (Purchase Order)はしていないので、マイナス在庫になるはず。

うん、たしかに Product Info から見てみると該当する Product の手持ち在庫s (On Hand Quantity) は合計でマイナス5個となっている。(2個と3個の 2受注合計)

でもCostsがどうのこうのとか、エラーが消えません。いろいろ試行錯誤するとエラーは増えていく。。。まぁ、今はよくわからずいじっているので仕方ないのですが、、


というわけで、受注は一時保留。もう一度足下から見直すことにします。
急がば回れ、というかこれまでが場当たりすぎ。。

ちなみに今まで AWS のインスタンスは m1.medium でやってきたのですが、、
せいぜい週十件程度マスターの登録程度なのにやたらと動作が遅くなって来た。

目的の画面に遷移していくところまではいいのだけど、そこで登録、セーブすると完了するまで30秒くらいかかる。
これではいろいろ試しながらやるのに効率が悪すぎる。

AWS のモニターはこんな感じ

で、Instance Type 変更してみた

m1.medium から m3.medium へ

体感的には30秒くらいかかっていた処理が 5〜7秒くらいになった気がする。
変更方法はこちら参照くださいませ。(以前インスタンスタイプを変更したときの記事)


同じ作業でモニターを確認した訳ではないので比較はできませんが、多少は負荷がさがったかな?(ま、体感的には相当効果があったので、モニター関係ないけど、、)

AWSはこのあたりの柔軟性がすばらしい。
24時間運用しようと思うと結構高く付くが、少なくともスケーラビリティが見えてくるまではこうやって少しずつサイズを調整していくのにはとても助かる。

ちなみに運用コストはこれまでの1時間あたり、60円くらいから80円くらいとなりました。




2014年11月4日火曜日

iDempiere Price List Schema 再び その3

ちょっと長くなってしまいましたが、Price List Schema の話はこれで最後になります。

Price List Schemaは一律で価格を改訂できるという話をしてきました。
実際の価格改定は様々なカテゴリーや、個別製品など柔軟に価格を付け替えられる必要があるます。しかもできるだけ工数をかけずに。

下の例を見てください。
例えば下図の様に価格改定をしていとします。
Version "Initial" は登録済みとします。
これを Version "2014" と Version "Campaign" の新価格を作るものとします。




(実際にはこんな面倒な方法は取りませんが、)Price List Schema の登録方法の一つは下図のように、製品一つ一つの改定率を登録する方法があります。









しかし、同一の価格改定率のものがあれば、これをまとめられれば新価格の作成が楽になります。
 Prie List Schema "Japan 2014" の新価格の考え方は以下のようなものだとします。
1:2014年の価格は、Camera は基本3% 下げよう
2:Portable(PB) は競合が下げて来たので 5%まで下げざるを得ない
3:Portable の 製品 C001 と、HighEnd(HE) の製品 C004 は売り上げの落ち込みが激しく在庫処分をするため10%価格を下げよう。

また、クリスマスに向けたキャンペーンとして以下のように考えたとします。
1:クリスマス商戦は一律2%値下げする。
2:HighEnd(HE)は利幅に余裕があるので思い切って5%値下げをする。


これを Price List Schema をうまく利用すると以下のようなわずかな設定で済みます。


このように製品のカテゴリー分けと、値付けのポリシーがある程度リンクしていれば、製品数が多い場合でも現実的な工数で価格の付け替えができます。

実際の影響範囲の指定場所 Price Schema Line の Reference です。
ここで新たな価格を反映させたい範囲を指定することで、製品単位にしてもできますし、製品カテゴリー単位でも、仕入れ先単位でも指定可能です。


ただ、新価格の適用の順番には気を配る必要があります。

上の例で Price List Schema "Japan 2014"では Category "Camera"/ "PB" Product "C001" が階層関係になっています。これを制御するのが Price List Schema -> Schema Line のSequence です。
数値が小さい順に実行されます。

つまりさきほどの例では
Camera  3% down   ->   Portable  5% down  -> C001  10% down という順番に実行すれば意図した価格になります。
もしこれが
C001  10% down ->   Portable  5% down -> Camera  3% down と実行したらどうなるでしょう。
単純に計算結果が上書きされるため、 Camera が一律 3% down になっておしまいです。

価格改定に影響する範囲と順番には気を使う必要があり、場合によっては混乱の元になるリスクもありますので、取り扱い品目数や価格改定の頻度など考慮して業態に合った価格改訂の方法を取るべきだと思います。
製品個別に価格改定することは決して間違えていません。手に負えない作業ボリュームの場合にこのような一律変更の方法を検討すべきでしょう。



iDempiere Price List Schema 再び その2

前回の確認で、Price List Schema を利用すると、ある体系の製品群の価格を定義したルールに従い一律に価格変更できることがわかりました。

しかし、もし登録してある製品すべての割引率を定義しなくてはならないのであれば、さほど利点は感じられません。

実はPrice List Schema の実力はここから先にあります。

例えば前回の例で言えば、新価格 Version "2014" は、 Version "Initial" の一律10%ダウンだとしましょう。

この場合はPrice List Schema に1行 (Price List Schema -> Schema Line に1行)作成するだけです。
実際にやってみると、Price List Schema "same rate" を作成します。(なんか英語おかしいですが、気にせず、、)
画面下部の詳細エリアで Schema Line を新規作成します。



Schema Line 入力画面が開くので、必要事項を入力していきます。
通常新しい価格を反映する対象の製品やカテゴリーなどを指定するのですが、今回は一律なので何も指定しません。しかしデフォルトで Product Category "Camera" が指定されていたので、これを削除します。(なにかのカテゴリーがあらかじめセットされているようです。帰られるのかな?)

Standard Price Down % に 10.0と入力します。
ついでにStandard Price Surcharge Amount の動きも試してみます。ここでは 5.0 を入力


今作成した Price List Schema "same rate"を用いて全製品の価格を一律10% 値下げした上で5円上乗せした新価格を作成します。

元となる価格群がこちら
Version "Initial"
例えば Portable One の Standard Price が ¥10,000- になっているのがわかります。


これを Version "same down rate" で一律価格改定すると、、、

Base Price List を Version "Initial"
Price List Schema : "same rate" を指定し、 Create Price List ボタンを押す。
いくつか確認ダイアログが表示され、OKを押していくと、新たな価格群が詳細エリアに表示されます。
先ほどの Portable One の価格を見てみると、 ¥9005.0- となっています。もちろん他の製品もPrice List Schema のルールに基づいて新たな価格になっています。
実際の値付けは複雑な要素がからまっており、こんな単純ではありません。
少し長くなって来たのでここで一度切って次に触れたいと思います。




2014年11月2日日曜日

iDempiere Price List Schema 再び

Price List Schema について動作を確認してみました。
今ひとつピンと来ていなかったのですが、やってみればなるほど。。。

取り扱い品目数が多く、かつ価格の改訂が多い企業にとっては、ちゃんと使いこなせれば強力なツールですね。

顧客や製品などの階層構造・関係性を完全に把握しきれていない場合などは意図しない値付けをしてしまったりするリスクがあるかも。(そんな人に値付けの権限与えちゃ行けませんが、、)


運用はとりあえず置いといて、、、内容は。。。

以前おぼろげながら想像していた通りであったのですが、今回メニューの構造を整理してみました。



iDempiereでは価格を決めるために Price List という単位があります。
ここでの例として "Japan" や "US" などを考えてみます。
他にも "Tier1""Tier2"などであったり、1物に複数の価格体系が必要な場合はこの Price List を追加することができます。
(この例でも為替のために使う意図ではなく、日本やアメリカで現地の人気や競合他社の値付けを考慮しながら戦略的に価格決めることを意図しています。)

Price List は 複数のVersion を持つ事ができます。
ここでは "Initial","2014","Campaign" を定義しています。それぞれの意味は
Initial : 製品の初期価格設定
2014 : 2014年度の改訂価格
Campaign : クリスマスなどの期間限定の特別価格

(実際には業界や会社によってどのようなタイミングで価格のベースを改訂するのかによってVersionを考慮すべきでしょう。)

Product の登録時に詳細情報として Price を登録しますが、このときにどのVersionに価格を登録するのかを選択します。
今回はすべての製品をPrice List -> Version "Initial"に価格を入力しました。

実は、ここで登録する価格は、 List Price, Standard Price, Limit Price の3つがあります。
それぞれ 定価、通常売価、限界利益売価といったところでしょうか?
話をわかりやすくするために、ここでは価格と言った場合、Standard Price のみについて話を進めます。List Price, Limit Price についても考え方は同様です。

Price の登録方法で最も単純なのは、Product の詳細情報として Price を個別に設定することができます。とても自然な価格設定の流れです。

Product 画面を出すのに、これまで通り メニューから辿ることもできますが、検索Box に直接 "product" と指定する方法もあります。また、左のFavourites ウィンドウから選択しても良いでしょう。(Favourites ウィンドゥへの登録方法はまた後日)

Product 入力画面が表示されると下の詳細項目エリアのタブの一つに Price タブが表示されます。Price タブを選んで、New (新規追加)ボタンを押すと、 その製品の価格( List Price, Standard Price, Limit Price )が入力できる画面に移動します。ここで必須入力となっているのが Price List Version です。ここでの例は Version として"Initial" を作成し、そこに登録する形にしました。








ここまでの説明で先ほどの下図の青枠の部分となります。
まず価格体系単位で Price List を登録し、Version によって一括して価格を切り替えることを可能にします。


次に Price List Schema の必要性を説明しなければならないのですが、もちっと Version の話を続けます。

上図の例では Portable 1 の価格は Version "Initial" では ¥10,000- ですが、2014年の価格改定で¥9,500- としています。
価格をダイレクトに Product -> Price -> Version に指定することが可能です。わざわざ 5% とか、3%とかから算出する必要もありません。

しかし、取り扱い品目が 100種類を超えて来たら結構な工数です。

このため値下げ率を決めておいて、機械的に価格を算出・改訂する方がまだ現実的です。
値下げ率は個別の製品により決める必要があるかもしれませんが、たいていは1%  とか 2% とか同じ率のグルーピングであるはずです。



このような価格変更のルールを定義してあるのが Price List Schema です。
これだけ聞くとたいした話ではありませんし、必要性もまだ感じられないでしょう。このあたりは次に掘り下げたいと思います。

ここで理解すべきなのは、価格を一括して切り替えるPrice List Version は各 Product 毎に価格を一つ一つ登録することもできるし、特定の価格改定率(Price List Schema)で一気に価格を変更し新たなVersionとして新価格を保持することもできるということです。

一括変更の具体的なやり方は、例えば上図の Version "2014" にはそのパラメータとして Base Price List : "Initial" とPrice List Schema : "Japan 2014" を定義しておきます。

この定義での動作をProduct "Portable 1" を例に説明すると、
Version "2014"は、Version "Initial" の Portable 1 / ¥10,000- を ベースとして、 5% ダウンと定義してある Price List Schema "Japan 2014" を掛け合わせた価格を、Version "2014"の新しい Product "Portable 1"の価格とするということです。
新しい価格の生成タイミングはバッチです。 Version の登録画面に Create Version の実行ボタンがあり、このボタンを押す事で自身のVersionの Price としてあらたに算出・生成します。

この一連のパラメータとアクションが下の画面です。

Price List -> Version を新規作成します。
 Name は 2014 です。

Price List Schema : "Japan 2014"
Base Price List : "Initial"

ここまで入力し、 Create Price List ボタンを押すと新たなバージョンの価格が生成されます。

実際はProduct List Schema は製品の価格改定率を全数指定するわけではありません。
製品カテゴリーや顧客など、様々な単位を組み合わせて必要な新価格を最低限の手間で生成することができます。
この考え方は次回書いてみたいと思います。

--------------後日追記--------------
実はここまで販売品目ばかり考えて書いてきたのですが、
購買品目の登録では、初期の価格登録は Products の Purchasing に List Price と PO Price(Limit price) を入力します。
この上で Price List で Base Price List を空白にして Create Price List を実行すると Product の Purchasing に登録した価格をベースに Price Listを生成します。

Price List schema に Standard Price Base に Standard Price を選択してもList Price を選択しても Purchasing の List Price を参照されるようです。

Create Price List で Price List を生成すると、Products の Price にも生成した情報が出てきます。

このあたりの動きは販売周りでも記述間違えている可能性があるので、後日見直します。