2013年9月27日金曜日

vTigerCRMのフィルターで定義リストの絞込み条件を日本語で指定する

vTigerCRMの基本的な挙動は、各モジュール毎にデータ(エンティティ)の一覧があり、そこからその詳細確認するなり、新規にレコードを追加する、といった画面遷移になっています。
初めて導入したばかりの時はどのモジュールの画面確認しても「なんか、全部一緒に見える。。。」状態かもしれません。

まずは、各モジュールごとの一覧表示時の抽出条件やその条件に応じた表示項目をカスタマイズしてこそ、その真価が発揮されます。

各モジュールの一覧画面にて、独自フィルターを追加するには、一覧画面のフィルタ表示のプルダウンのすぐ隣にある新規を追加します。

フィルタの名称や表示する項目を選択し、またその抽出条件を設定します。


抽出条件は、標準フィルタと詳細フィルタの二つが存在します。

標準フィルターは、検索対象のエンティティの日付型のデータに対して、
今日、今週、先週、今月、最近7日間などなどの期間での絞り込みを設定するための項目です。

詳細フィルターは、それ以外のデータ項目に関して、等値比較や部分一致、前方後方一致等の比較方法にて抽出条件を指定可能です。


さて、ここで日本語環境特有の問題が一つだけあります。

定義リストとして設定されている項目に関して日本語で条件を指定しても検索されません。
ただ、既存のリストに新たに追加した項目や、定義リスト自体を新規に作成した場合は日本語で絞り込まれます。


なぜ、この現象が起きるかというと、
vTigerCRM5系の日本語翻訳の仕組みは、ざっくりいいますと表示時に英語の文字列から翻訳対象の設定ファイルに対象の言葉があればその言葉に切り替えて表示します。

画面上のUIの名称ならそれで問題ありませんが、なんとデフォルトの定義リストもその対象になっており、データベースに格納されている値はとは異なるものが表示されます。

具体的には、「lead source (紹介元)」の場合は、以下のようになっています。
  • '--なし--'は'--None--'
  • '飛び込み'は'Cold Call'
  • '既存顧客'は'Existing Customer'
  • '自己開拓'は'Self Generated'
  • '従業員'は'Employee'
  • '提携先'は'Partner'
  • '広報活動'は'Public Relations'
  • 'ダイレクト メール'は'Direct Mail'
  • '会議 (カンファレンス)'は'Conference'
  • '展示会'は'Trade Show'
  • 'Web サイト'は'Web Site'
  • '口コミ'は'Word of mouth'
  • 'その他'は'Other'

そして、独自で作成するフィルターは、その検索条件の指定値(文字)をそのままSQLに使用します。
#何を入力されるかわかんないもん翻訳しようがないよなー

つまり、例えばLeads(弊社では見込み客と訳してます)モジュールの紹介元を「Webサイト」だけ絞り込みたい!と、「Webサイト」を含むといった条件にしても抽出されず「Web Site」と指定する必要がありあす。

ちなみにですが、定義リストエディタで新規に日本語で項目を追加する場合は、追加した文字列そのままセットされますのでフィルターからも絞込みが可能です。

あくまでデフォルトでセットされている項目の問題なんですよね。

vTigerCRMをはじめる際に定義リストエディタからデフォルトの項目を作り直ししまえばよいといえばよいのですが、管理者権限をもってても全て編集可能なわけでもありません。

対処方法としては定義リストエディタで日本語の項目を使いしてそのままDBに登録されても問題は生じません。

それならば、DBの項目のマスタの値を日本語にアップデートしてしまう、というのが一つの手です。

もうなんか力技ですが、leadsourceの場合は以下のSQLを実行すれば日本語での検索が可能になります。
UPDATE vtiger_leadsource SET leadsource = '--なし--' WHERE leadsource = '--None--';
UPDATE vtiger_leadsource SET leadsource = '飛び込み' WHERE leadsource = 'Cold Call';
UPDATE vtiger_leadsource SET leadsource = '既存顧客' WHERE leadsource = 'Existing Customer';
UPDATE vtiger_leadsource SET leadsource = '自己開拓' WHERE leadsource = 'Self Generated';
UPDATE vtiger_leadsource SET leadsource = '従業員' WHERE leadsource = 'Employee';
UPDATE vtiger_leadsource SET leadsource = '提携先' WHERE leadsource = 'Partner';
UPDATE vtiger_leadsource SET leadsource = '広報活動' WHERE leadsource = 'Public Relations';
UPDATE vtiger_leadsource SET leadsource = 'ダイレクト メール' WHERE leadsource = 'Direct Mail';
UPDATE vtiger_leadsource SET leadsource = '会議 (カンファレンス)' WHERE leadsource = 'Conference';
UPDATE vtiger_leadsource SET leadsource = '展示会' WHERE leadsource = 'Trade Show';
UPDATE vtiger_leadsource SET leadsource = 'Web サイト' WHERE leadsource = 'Web Site';
UPDATE vtiger_leadsource SET leadsource = '口コミ' WHERE leadsource = 'Word of mouth';
UPDATE vtiger_leadsource SET leadsource = 'その他' WHERE leadsource = 'Other';
ただ、こちらマスタだけですので、既にもう運用が始まっててデータが登録されてるんだけど、、、という場合は、各エンティティ側のデータも修正しないとリレーションが切れてしまいます。

その場合は、以下みたいなSQLを実行してください。
UPDATE vtiger_leaddetails SET leadsource = '--なし--' WHERE leadsource = '--None--';

UPDATE vtiger_leaddetails SET leadsource = '飛び込み' WHERE leadsource = 'Cold Call';

UPDATE vtiger_leaddetails SET leadsource = '既存顧客' WHERE leadsource = 'Existing Customer';

UPDATE vtiger_leaddetails SET leadsource = '自己開拓' WHERE leadsource = 'Self Generated';

UPDATE vtiger_leaddetails SET leadsource = '従業員' WHERE leadsource = 'Employee';

UPDATE vtiger_leaddetails SET leadsource = '提携先' WHERE leadsource = 'Partner';

UPDATE vtiger_leaddetails SET leadsource = '広報活動' WHERE leadsource = 'Public Relations';

UPDATE vtiger_leaddetails SET leadsource = 'ダイレクト メール' WHERE leadsource = 'Direct Mail';

UPDATE vtiger_leaddetails SET leadsource = '会議 (カンファレンス)' WHERE leadsource = 'Conference';

UPDATE vtiger_leaddetails SET leadsource = '展示会' WHERE leadsource = 'Trade Show';

UPDATE vtiger_leaddetails SET leadsource = 'Web サイト' WHERE leadsource = 'Web Site';

UPDATE vtiger_leaddetails SET leadsource = '口コミ' WHERE leadsource = 'Word of mouth';

UPDATE vtiger_leaddetails SET leadsource = 'その他' WHERE leadsource = 'Other';

でと、デフォルトのマスターテーブルですが約50テーブルくらいあります。
そして修正が必要なマスタ項目は大体400レコードくらいあり。

もし、SQLをご希望の方は提供可能ですがが、お使いの日本語の項目値が異なる場合はそちらで修正が必要です。

それでも参考にと希望される方いましたらとりあえずはFacebookのほうにでも問い合わせいただければ提供可能です。

#近いうちにダウンロードフォームを作成する予定です。


CRM TOUCHのサイトはこちら
vTigerCRMの日本語の情報に関してはこちら