スポンサードリンク
Categories: ネット

SugarCRM 自動採番・Googleマップ連動・郵便番号住所変換とか


photo credit: bpedro

某社に顧客管理システムとして SugarCRM を納入した時、自動採番(オートインクリメント) 機能が欲しいと言われていたので、その追加をした時のコードと、郵便番号から住所変換した時のコードと、住所からGoogleマップを呼び出す用に改良した時のコードをまとめて。

前提環境は SugarCRM 5.5 ja-Dev 版ですが、5.2 とか他のバージョンでも使えるかもしれません。あと、以前に書いたコードを思い出しながら書いてるので、うまく動かない可能性もあります。その場合はご連絡いただけると助かります。

 

自動採番(オートインクリメント) 機能と完全一致検索

自動採番と完全一致検索は、対象モジュールの vardefs.php と metadata/SearchFields.php を編集します。よってアップグレードセーフではありません。(custom でやろうとしても、うまくこちらの環境では動きませんでした)

modules/(モジュール名)/vardefs.php

  'fields' => array (

の中に、以下のようなコードを追加します。( 海外フォーラム からそのまま転載)

'timeno' => 
array (
'required' =>false,
'name' => 'timeno',
'vname' => 'LBL_TIMENO',
'type' => 'int',
'massupdate' => 0,
'comments' => '',
'help' => '',
'duplicate_merge' => 'disabled',
'duplicate_merge_dom_value' => 0,
'audited' => 0,
'reportable' => 0,
'len' => '11',
'auto_increment'=>true,

),

あとはスタジオから、自由に配置等が可能です。ただし自動採番される関係上、編集画面には設定しない方がいいでしょう。

完全一致検索を追加する場合は、以下も追加で編集します。

modules/(モジュール名)/metadata/SearchFields.php

array (

内に、以下のコードを追加します。

'timeno'=> array('query_type'=>'default', 'operator' => '='),

 

住所データとGoogleマップを連動させる

といっても、取引先情報のデータを元に別ウインドウでGoogleマップを開くリンクを追加しているだけです。アップグレードセーフにできますが、例では(そちらの方が分かりやすいので) 直接 Accounts のデータを書き換えています。

modules/Accounts/metadata/detailviewdefs.php

    'panels' => array(
        'default'=> array(

内に、以下のコードを追加します。

          array (
            'name' => 'billing_address_city',
            'comment' => 'The city used for billing address',
            'label' => 'LBL_BILLING_ADDRESS_CITY',
            'customCode' => '{$fields.billing_address_city.value}    Google Mapsで検索',
          ),

今回の例では、元々 Accounts に存在する以下のフィールドを利用したコードになっています。

  • billing_address_postalcode    郵便番号
  • billing_address_state    県名
  • billing_address_city    県名以下の番地

この3つのフィールド値をGoogleマップに渡しています。

そして、billing_address_city を スタジオから詳細画面に登録してやることで、住所データの横に Google Mapsで検索 というリンクが表示されるようになります。

Googleマップ 検索画面

 

郵便番号住所変換

sugarforum.jp の記事 そのままなのですが、作業メモという事で記録しておきます。

上記のGoogleマップ連動と同じフィールドを利用する場合のコードとなっています。

modules/Accounts/metadata/editviewdefs.php

$viewdefs['Accounts']['EditView'] = array(
    'templateMeta' => array(
                            'form' => array('buttons'=>array('SAVE', 'CANCEL')),
                            'maxColumns' => '2', 
                            'widths' => array(
                                            array('label' => '10', 'field' => '30'),
                                            array('label' => '10', 'field' => '30'),
                                            ),
                            'includes'=> array(
                                            array('file'=>'modules/Accounts/Account.js'),
                                         ),
                           ),

というコードを、以下のように編集します。

$viewdefs['Accounts']['EditView'] = array(
    'templateMeta' => array(
                            'form' => array('buttons'=>array('SAVE', 'CANCEL')),
                            'maxColumns' => '2', 
                            'widths' => array(
                                            array('label' => '10', 'field' => '30'),
                                            array('label' => '10', 'field' => '30'),
                                            ),
                            'includes'=> array(
                                             0 => array('file'=>'modules/Accounts/Account.js',),
					     1 => array ('file' => 'http://ajaxzip3.googlecode.com/svn/trunk/ajaxzip3/ajaxzip3.js',),
                                         ),
                           ),

次に、

    'panels' => array(
	   'lbl_account_information'=>array(
		        array(

内に、以下のコードを追加します。

					array (
					'name' => 'billing_address_postalcode',
					'label' => 'LBL_BILLING_ADDRESS_POSTALCODE',
					'customCode'=>'
						'
					),

あとはスタジオ機能で、編集画面に billing_address_postalcode、billing_address_state、billing_address_city を表示させてやれば、郵便番号を入力するだけで、県名とある程度までの住所データが自動入力されるようになります。

郵便番号 住所変換画面

以上、SugarCRM の技術メモでしたー。

スポンサードリンク
GUILZ.ORG

Share
Published by
GUILZ.ORG
スポンサードリンク