2015年2月22日日曜日

突然ですが

考えても見ればiDempiereに興味を持ってから6ヶ月あまり、

日々iDempiereについて書き綴ってきました。
もちっとまとめて書くべきなのですが、まずは思いついたこと、経験したこと、調べたことを記録する目的のためブログという形をとらせていただきました。

平文で時間軸も前後して読みにくい点多々あるかと思います。
いつかHPという形でまとめなおしたいと思います。

いきなり変な書き出しになってしまいましたが、ここらでちょっとペースダウンとなります。(やめるわけではありません)

iDempiereに時間をめいっぱいつかってきたのですが、本業の方で急遽プロジェクトに参加することになり、明日から久々にプロジェクトワークです。

もともとiDempiereにのめり込んだ理由なのですが、過去の経験でERPを必要とするクライアントは多いものの、ERPの導入の敷居の高さが大きな障害になると感じていたことがあります。

大手を否定する気もありませんし、対立する気もありません。しかしプリセールスの言葉に踊らされて使いもしないライセンスに数億円を無駄にしてしまうクライアントを少なからず目撃してきました。

かといって、大手と契約できる体力のあるクライアントは責任の所在がはっきりできないオープンのERPに手を出すとは思わないのですが、、

逆にもっともっとIT化の体力に限界がある会社様も多いとおもっています。
そういったお店や小規模の企業の方が気軽にチャレンジすることに協力できる環境があればと思っています。
この思いを実現するのに、iDempiereなどオープンソースのERPをどのように導入するのか、どのように活用するのか、使えるのか使えないのかを知りたいと思っています。

これからはプロジェクトワークに参加しつつ、だれでもERPを利用できる環境を作り出すチャレンジをしていきたいと思っています。

たいした投稿は出来ていませんが、そんな思いで継続していきたいと思いますのでお時間あればこれからもたまには訪問いただければ幸いです。



2015年2月19日木曜日

idempiere 2.1 日本語化 & クライアント作成

iDempiere 2.1も Compiere Distribution Lab 殿の日本語ファイルにて日本語化しました。

といっても前回 2.0 で行った方法そのままです。
iDempiere 日本語化ふたたび (Compiere Distribution Lab版)

特に設定画面も2.0から変わることなく、日本語化完了です。

2.1 にて新たに追加されたテーブルに関して、追加して日本語する余地があると思われるのですが気がついたら記述していきます。(suffix が _trl のテーブル群)


つづいて新規にクライアントを作成してみました。

参照:「iDempiere でクライアントを新規作成してみた

基本的には前回の投稿と同じなのですが、
2.1には追加の項目があります。簡単にまとめると下の表の通りです。


必須Column Name2.02.1項目名(CDL)初期値設定値(変更)
*Client nameclientBaba Denshi
Org key組織キー
*Organization Name組織名orgHQ
*Administrative User NameclientAdmin
Administrative User Email
*Normal User NameclientUser
Normal User Email
*Currency通貨USDJP
*CountryUnited StatesJapan
Region地域(都道府県)東京都
City Name
City市(マスタ定義)
ZIP郵便番号162
Address 1住所1高田馬場
BP AccountingTRUE
Product AccountingTRUE
Project Accounting
Campaign Accounting
Sales Region Accounting
Activity Accounting
Use Default COATRUE
*Chart of Account File
Phone電話番号
2nd Phone電話番号2
Fax
Email AddressEメール
Tax ID納税者番号
ちなみに項目名日本語に CDLとありますが、Compiere Distribution Lab 殿の日本語訳を記述してあると捉えてください。

2.1で追加された項目に"User Default COA" というチェックがあり、今回選択してみます。
(以前は "AccountUS.csv"を指定したところです。)

OKを押すとしばし処理中となり、処理完了のメッセージが表示されます。

ここまでは SuperUser で作業しますが、一度ログアウトすると今作成した Baba Denshi で、Admin やら User で接続出来る様になります。



2015年2月17日火曜日

PuTTY 接続の継続

たいした話ではありませんが、、、

VNCや pgAdmin を使用するとき PuTTY にて SSH接続をしています。
このときちょっと触らないでいると、接続がきれてしまっていました。

作業上集中して、なにかをしているのであればあまり気にならないのですが、特に最近 pgAdminで接続しているときなど、他の作業している時に思い出したようにデータの中を確認することが多くなってきました。

というわけで、PuTTY 接続を継続する設定。


Connection から Sending of null packets to keep session active で、60秒おきくらいでサーバーに「活きてますよ−」と信号を送るようにします。(ハートビート)

これで pgAdminは開きっぱなしで置いておけるかな?


iDempiere 2.0 から 2.1 、追加テーブル名

iDempiere 2.0 と 2.1 のテーブルの差について確認してみました。
と言っても、項目や制約、インデックスではなく単純に含まれるテーブルレベルの比較です。



基本 trl テーブルの追加が多いようです。(Translatedの略、多言語の対応用のファイルのようですね。)
また、2.0 に存在したテーブルはすべて2.1に含まれています。(一つ一つの定義は未確認です)


ちなみに c_order テーブルの Column は同じでした。(項目名レベルですが、、)

これだけの情報では「だからなんだ」って事は言えないのですが、、
一応情報共有ということで、、、

_trl テーブルについては下記参照ください。
http://www.adempiere.com/Application_Dictionary
  • Translated – to define translations for a column – in this case you need to define a table and a tab with the same name as the original table and the suffix (_Trl), and create the table with the same key as the parent, language column and the translated columns


追記:
興味本位でいくつかのテーブルをピックアップしてDMLをdiffして確認してみました。

C_BPartner
C_Order
AD_ROLE
これらはまったく同一

AD_USER
は制約等若干追加がありました。

やっぱりだからなんだって事はないのですが、、一応。

2015年2月16日月曜日

idempiere 2.1 初期セットアップ&起動

idempiere 2.1 初期セットアップをします。

私は楽して VNC でサーバーでGUIを起動してここで実行

ターミナルで
/usr/local/bin/idempiere/2.1/idempiere-server/ にて setup.sh を起動すると設定&チェックダイアログが表示されます。

ここで Database Server の Database Name を新規作成した idempiere2.1と変更してみます。




Test してみるとWeb Port 8080でエラー発生。
これは iDempiere2.0が起動している状態だったため、バッティングしてしまっていました。




で、2.0 を kill -15 して、、から再度Test 今度はオールグリーンです。これでセーブして。。 



これまでは2.0だけだったので、サーバー起動時にidempiereの起動まで行っていましたが、一時解除して、手動で 2.0/2.1の起動をするようにしてみます。

このあたりの設定は以前の投稿をご参照ください。

# chkconfig --del idempiere_server_start.sh

最後に起動の確認をしてみます。

# cd /usr/local/bin/idempiere/2.1/idempiere-server
# ./idempiere-server.sh

起動ログがあれこれでて、、、うまくいっているかも。

いつものように Webにて接続してみます。
おおっ、いつもと違う画面だ。

これでしたか、YoutubeなどでRed1さんのデモでよく出てくる画面は、、

画面真ん中の画面にあるiDempiereのサインをクリックすると、、
おおっ、見慣れた画面だ。
(ふと思うと、どうあっても「おおっ」なのね、今時の若者が何でも「やばいっ」っていうことに眉をひそめるほど感情豊かじゃないのね、自分も。。。)


とりあえず SuperUserで、、
でもClientは2.0の時に設定したものは選択出来ませぬ。(当然ですが)

2.1が無事に起動できましたようです。


予想通りデータベース名は 「iDempiereしばり」ではなく、初期設定で指定すればOKでした。(考えてみれば当然ですが、、ネット上では固定の例が多かったのでそのままにしていました。)



現時点当然まっさらな状態です。
次は日本語化が 2.0 と同じ作業でどこまでいけるか確認してきたいと思います。

その次はある程度インポートベースの初期設定かな?いやいや、一旦2.0 に戻って入力画面の間引きによるシンプル化か?微妙です。。。




iDempiere 2.1 ダウンロード& 新DB作成

まず iDempiere 2.1をダウンロードします。

クライアント側でダウンロードしてからサーバーにアップロードするのは面倒なので、サーバーで直接インターネットからダウンロードしてしまいます。(本番環境では??ですが、検証なので楽してしまいます)

一応簡単に私のやり方を残しておきます。
1:AWS上 の CentOSを起動
2:クライアント(Windows)から PuTTY をトンネルして VCNでサーバーに接続
3:サーバーで Firefox から インターネットで SourceForge を開く
4:SourceForgeからidempiereServer.gtk.linux.x86_64.zipをダウンロード




次はサーバー内の所定の位置へ展開ですが、その前に前回(2.0)インストール時の後始末から、、、
以前/usr/local/bin/idempiere 直下に zipファイルを置き、ここで展開するという変なことをしていたので、旧zipファイルは 2.0 にしまっといて、、、

# cd /usr/local/bin/idempiere
# ls
2.0
idempiereServer.gtk.linux.x86_64.zip
# mv idempiereServer.gtk.linux.x86_64 2.0
今回は 2.1ディレクトリを作成してからここに格納することにします。

# pwd
# /usr/local/bin/idempiere
# mkdir 2.1
# cd 2.1
# mv /home/maginger/Downloads/idempiereServer.gtk.linux.x86_64 .
# unzip idempiereServer.gtk.linux.x86_64
展開ログ省略
# ls
idempiereServer.gtk.linux.x86_64       <---展開されたディレクトリ
idempiereServer.gtk.linux.x86_64.zip

このまま 2.0のデータスキーマに接続できるか試したい衝動に駆られますが、何が起きるかわからないので、ここはグッとこらえてPostgreSQLのスキーマー作りに移ります。

iDempiere2.0 のデータベース(DB名 idempiere) を残したまま 新たなデータベースを追加します。(DB名 idempiere2.0)


# su - postgres
-bash-4.1$ createdb --template=template0 -E UNICODE -O adempiere -U adempiere idempiere2.1
-bash-4.1$ psql
psql (9.3.5)
Type "help" for help.
postgres=# \l
                                    List of databases
     Name     |   Owner   | Encoding |   Collate   |    Ctype    |   Access priv
ileges   
--------------+-----------+----------+-------------+-------------+--------------
---------
 idempiere    | adempiere | UTF8     | en_US.UTF-8 | en_US.UTF-8 | 
 idempiere2.0 | adempiere | UTF8     | en_US.UTF-8 | en_US.UTF-8 | 
 postgres     | postgres  | UTF8     | en_US.UTF-8 | en_US.UTF-8 | 
 template0    | postgres  | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres  
 template1    | postgres  | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres  
(5 rows)

新しいDBは作成できましたが、現時点当然中身は何もありません。最近入れたpgadminで見てみます。




これまで使っていた DB idempiere (赤枠)にはテーブル始め様々なオブジェクトが存在しています。
これに今回追加した DB idempiere2.1 (青枠)はすかすかであることがわかります。


次はDB idempiere2.1(青枠に idempiere2.1 のスキーマをロードしてみます。)
とおもったら、ちょっと失敗発見。

さきほど/usr/local/bin/idempiere/2.1 で dempiereServer.gtk.linux.x86_64.zip を展開したものだから idempiere-server ディレクトリ構成が想定とずれていました。

誤り:/usr/local/bin/idempiere/2.1/dempiereServer.gtk.linux.x86_64/idempiere-server
というわけで余計なディレクトリは省きます。
想定:/usr/local/bin/idempiere/2.1/idempiere-server
修正しておきます。

修正後、idempiere のダンプファイルを生成します。



# pwd
/usr/local/bin/idempiere/2.1/idempiere-server
jar xvf data/seed/Adempiere_pg.jar
ここから処理にちと時間がかかり、処理の途中でターミナル接続しているとセッションが切れてしまうため、VNCで接続している環境で処理を流します。

# psql -d idempiere -U adempiere -f Adempiere_pg.dmp


と前回の経験を活かして工夫したつもりでしたが、あっという間に終わりました。
これはAWS インスタンスを拡張したからだと思われます。

で、ダンプファイル展開後のスキーマを再度確認してみます。


pdadmin で見てみると、 idempiere2.1 にもテーブル等生成されていることがわかります。
ちなみにテーブル数は idempiere2.0 は 816、 idempiere2.1 は840 と増えていることがわかります。

ここまではだいたい予想通り、次はidempiere2.1の初期設定&起動をやってみます。
何がおこることやら。。


iDempiere 2.1 インストール&セットアップ チャレンジ

iDempiere が2.1になっているのは知っていました。
でもこのブログの検証作業を2.0で続けるのか2.1にするのかとても悩ましく。。。

検証を継続するための理想は。。

1: 2.0と 2.1の環境が併存させることができ、切り替えられればうれしい
2: 2.0 のデータスキーマを2.1 に移行できればうれしい

-----------後日記------------
1:環境の共存は出来ました。(起動するバージョンを手動で選択する)
2:SQLレベルでのデータの移行はスキーマが微妙に異なっているためリスクが高いと思われます。やるなら素直に画面からインポートすべきと思われます。
---------------------------------

2.0環境のプログラム群はサーバー上ここにある。
/usr/local/bin/idempiere/2.0/idenpiere-server

じゃ、2.0環境はここに置けばいいだろう。普通に考えて

/usr/local/bin/idempiere/2.1/idenpiere-server

しかし PostgreSQLは?

前回2.0環境構築時に下記のようにしてスキーマを展開。(DB名 idempiere)
# psql -d idempiere -U adempiere -f Adempiere_pg.dmp

このあたりの前回の設定は下記投稿をご参照ください。

AWS EC2 CentOS6.5 に もう一度はじめからPostgreSQL9.3 を インストールしてみた
iDempiere のデータスキーマを PostgreSQL へロードする

DB名を変えればなんとかなる気もするが、、このときDB名は「固定」として扱ったため、変更するとその他設定の調整も必要となると思われる。
現時点は
iDempiere初期設定時にDatabase Server の Database Name を変更すればいいのじゃないか?と、安直に予想。

このあたりの前回の設定は下記投稿をご参照ください。
iDempiere の設定をしてみた。

大きな不安は 日本語勘定科目(COA)のインポートやCompere Distribution Lab殿の日本語環境のインポートまでできるものか?

今後順に試していきたいと思います。
(どこまでできるかな?)


2015年2月4日水曜日

iDempiere:遅ればせながら pgAdmin 設定してみた


これまで iDempiereのデータベースを見るのに直接SQLを叩いていたわけですが、、やはり決して効率が良いとは言えませんでした。

ちょいと内部コードを調べるくらいは苦になりませんでしたが、まずテーブル名確認してから、コラム名調べて、ものによってクライアントや諸条件を WHERE したりするとそれなりに時間を消費するわけで、、

むか〜し、 ORACLE使った時シェアウェアで GUIのDB操作ツールを利用したので、その良さは知っておりました。(もっともっと昔はそんな良い物もなくSQLを打つしかなかったので、驚きました。。)
最近iDempiereの内部コードを確認する機会も増えたこともあり、とうとう PostgreSQLの Adminツールインストールしてみました。

MAC版のもあるのですが、今回 Windows の Putty の SSL を利用するため、王道の WIndows版です。

pgAdmin でググります。(http://www.pgadmin.org   とか)
いろいろなバージョンがありますが、このブログでは PostgreSQL は 9.3 を使っているので pgAdmin v1.18.0 released を選択することにします。
Windows 版を選択し、、、、
------------------
ウィンドゥ右の広告エリアに 050plus の広告が出ていますが、この作業の直前奥さんから「050 plus」ってなに?と質問されてググったので表示されています。どうでもいいことですが、、、
------------------

 と、ここまできて、また選択する バージョンを聞いてきます。。
が、 v1.18.0がありません。。。
ま、 v.1.18.1 でいいか。。。(今のところ不具合ありませんが、ちと気持ち悪いです)
 ダウンロード画面になりますので、 pgadmin3-1.18.1.zip を選択します。
あとはお約束のインストーラー
指示に従い進みます。










 インストールが完了すると起動できます。(当たり前ですが、、)
当然この時点ではまだ接続出来ないので、接続設定を開始します。


ここから pgAdmin ではなく、Putty の設定画面です。
AWS EC2 CentOS に SSH経由で VNC 接続してみる」にて設定した TuTTY の VNC用トンネルに pgAdmin 用トンネルを追加します。

Source Port はなんでもいいので 9002としました。
Destination は pgAdmin 用の 5432を指定します。指定後 Addボタンを押します。

以前も書きましたが、ここであわてて Openボタンを押してはいけません。
一度戻って Save します。その後 Openを押します。(そうしないと設定が記憶されず何度も作業をし直すことになります。)



で、 PuTTYでAWSに接続します。(ターミナルでパスワードも入力し、接続を完了します。)

接続後pgAdmin 側の設定に戻ります。
ファイル -> 新しいサーバーの追加
にて接続するDBを指定します。

ホストは localhost、
Port は先ほど指定したポート番号です。



接続するといきなり サーバー上の postgreSQLのインスタンスが見えます。

あまりにあっけなくて、ちょっと拍子抜けしましたが、、、気を取り直して、、

ためしに サーバー -> iDempiere -> データベース -> iDempiere -> スキーマ -> adempiere -> テーブル
を見てみましょう。

見たいテーブルを選択します。
選択後、表の様に見えるアイコンをクリックすると、そのテーブルの内容がポップアップで表示されます。

ちなみに一度開いてから特定の値で絞り込みたい場合(特定クライアントのデータのみ表示したい時など)、そのデータをクリックしたあと、右クリックをするとメニューダイアログが表示されます。ここで選択フィルターを指定すると、その値が含まれる行のみ抽出してくれます。( MS-Access などの  GUI DBツールを使ったことのある方にはおなじみの機能)



細かい使い方はこれから見てみますが、結構直感的に活用できると思います。

しかし、こんなものまでフリーで使えるなんて、すごい世の中ですね。