]project-open[ の各種帳票(見積書、納品書、請求書)出力や、単位やフォーマットなどの画面の表示について、プログラムに依存している部分を調査し、以下にまとめました。
1. 通貨表示を 「 JPY 」 から 「 円 」 に変更
見積書、納品書、請求書の通貨表示は、デフォルトで 「 JPY 」 と表示されます。
これを 「 円 」 に変更するには、project-openがインストールされたサーバの
/web/projop/packages/intranet-invoices/www/view.tcl
を編集します。
具体的には、上記tclプログラム内のhtml記述部分における
「 $currency 」
の部分を
「 [lang::message::lookup $locale intranet-core.JPY “JPY”] 」
に置き換えます。
編集前と編集後の表示は以下のとおりです。
・編集前
・編集後
なお、通貨表示が変わるのは、単価および数量に記載された通貨表示のみです。
合計金額の通貨表示を変更したい場合は、別途「オリジナルテンプレートの編集」を参照ください。
2. 金額の小数点部分を非表示にする
見積書、納品書、請求書の金額は、デフォルトで小数点第二位までを表示します。
これを非表示(切り捨て)にするには、project-openがインストールされたサーバの
/web/projop/packages/intranet-invoices/www/view.tcl
を編集します。
具体的には、
「im_numeric_add_trailing_zeros()」
の部分を削除し、
「expr」部分を「int」で
castします。
編集前と編集後の表示は以下のとおりです。
・編集前
・編集後
3. 担当者名を 「 姓 」 「 名 」 の順に表示する
見積書、納品書、請求書の担当者名はデフォルトでは 「 名 」 「 姓 」 の順に表示されます。
これを「 姓 」 「 名 」 の順に表示するために、]project-open[ 用のDBにFUNCTIONを新たに作成します。
併せて、project-openがインストールされたサーバの
/web/projop/packages/intranet-invoices/www/view.tcl
を編集します。
FUNCTIONのソースは以下のとおりです。
・im_name_from_user_id_jp
-- Name: im_name_from_user_id_jp(integer); Type: FUNCTION; Schema: public; Owner: projop
--
CREATE FUNCTION im_name_from_user_id_jp(integer) RETURNS character varying
AS '
DECLARE
v_user_id alias for $1;
v_full_name varchar(8000);
BEGIN
select
last_name || '' '' || first_names into v_full_name
from
persons
where
person_id = v_user_id;
return v_full_name;
END;
LANGUAGE plpgsql;
あらかじめ上記SQLファイルをサーバの /tmp ディレクトリへ転送しておき、以下の手順でDBにファイルを読み込ませます。
# su - projop
$ psql -f /tmp/im_name_from_user_id_jp.sql
CREATE FUNCTION
$ psql
# FUNCTIONの実行結果を確認
projop=# select im_name_from_user_id_jp(624);
im_name_from_user_id_jp
-------------------------
田中 二郎
(1 row)
# 「姓」「名」で表示されていること
作成したFUNCTIONを利用するように、view.tclを編集します。
# cp -p /web/projop/packages/intranet-invoices/www/view.tcl /web/projop/packages/intranet-invoices/www/view.tcl.org
# chmod 575 /web/projop/packages/intranet-invoices/www/view.tcl
# vi /web/projop/packages/intranet-invoices/www/view.tcl
# 以下を編集する(一番左は大よその行数)
# コメントアウト
419 /* im_name_from_user_id(:user_id) as internal_contact_name, */
# 追記
420 im_name_from_user_id_jp(:user_id) as internal_contact_name,
編集前と編集後の表示は以下のとおりです。
・編集前
・編集後
なお、顧客名の表示を 「 姓 」 「 名 」 の順に表示したい場合は、別途「オリジナルテンプレートの編集」を参照ください。
4. 帳票の日付フォーマット編集
各種帳票 (見積書、納品書、請求書) で表示される日付は、デフォルトで mm/dd/yy (07/06/11) の形式です。
これを、yyyy-mm-dd (2011-06-07) 形式で表示する場合は、]project-open[ がインストールされたサーバの
/web/projop/packages/intranet-invoices/www/view.tcl
を編集します。
編集内容は以下のとおりです。
# cp -p /web/projop/packages/intranet-invoices/www/view.tcl /web/projop/packages/intranet-invoices/www/view.tcl.org
# chmod 575 /web/projop/packages/intranet-invoices/www/view.tcl
# vi /web/projop/packages/intranet-invoices/www/view.tcl
# 以下を編集する(一番左は大よその行数)
# コメントアウト
575 # set invoice_date_pretty [lc_time_fmt $invoice_date "%x" $locale]
# 追記
576 set invoice_date_pretty [lc_time_fmt $invoice_date "%F" $locale]
編集前と編集後の表示は以下のとおりです。
・編集前
・編集後
5. カレンダーの日付フォーマット編集
]project-open[ のコンポーネントとして用意されているカレンダーのフォーマットを、デフォルトのmm月dd,yyyy (6月12,2011) から、yyyy年mm月dd日 (2011年6月12日) 形式へ変更します。併せて、mm/dd/yy (06/12/11) から、yyyy-mm-dd (2011-06-12) 形式へ変更します。
対象のプログラムは以下のとおりです。
/web/projop/packages/calendar/www/view-week-display.tcl
編集内容は以下のとおりです。
# cd /web/projop/packages/calendar/www
# cp -p view-week-display.tcl view-week-display.tcl.org
# chmod 474 view-week-display.tcl
# vi view-week-display.tcl
# 以下を編集する(一番左は大よその行数)
# コメントアウト
95 # set start_date [lc_time_fmt $ansi_start_date "%x"]
# 追記
96 set start_date [lc_time_fmt $ansi_start_date "%F"]
# コメントアウト
97 # set end_date [lc_time_fmt $ansi_end_date "%x"]
# 追記
98 set end_date [lc_time_fmt $ansi_end_date "%F"]
# コメントアウト
106 # multirow append items \
107 # "" \
108 # "" \
109 # "" \
110 # "" \
111 # [lc_time_fmt $ansi_this_date "%x"] \
112 # $current_weekday \
113 # [lc_time_fmt $ansi_this_date %A] \
114 # "" \
115 # "" \
116 # "" \
117 # "${base_url}cal-item-new?date=${ansi_this_date}&start_time=&end_time=&return_url=$return_url" \
118 # "${base_url}?view=day&date=$ansi_this_date&page_num_urlvar"
# 追記
119 multirow append items \
120 "" \
121 "" \
122 "" \
123 "" \
124 [lc_time_fmt $ansi_this_date "%F"] \
125 $current_weekday \
126 [lc_time_fmt $ansi_this_date %A] \
127 "" \
128 "" \
129 "" \
130 "${base_url}cal-item-new?date=${ansi_this_date}&start_time=&end_time=&return_url=$return_url" \
131 "${base_url}?view=day&date=$ansi_this_date&page_num_urlvar"
# コメントアウト
171 # multirow append items \
172 # "" \
173 # "" \
174 # "" \
175 # "" \
176 # [lc_time_fmt $ansi_this_date "%x"] \
177 # $current_weekday \
178 # [lc_time_fmt $ansi_this_date %A] \
179 # "" \
180 # "" \
181 # "" \
182 # "${base_url}cal-item-new?date=${ansi_this_date}&start_time=&end_time=&return_url=$return_url" \
183 # "${base_url}?view=day&date=$ansi_this_date&page_num_urlvar"
# 追記
184 multirow append items \
185 "" \
186 "" \
187 "" \
188 "" \
189 [lc_time_fmt $ansi_this_date "%F"] \
190 $current_weekday \
191 [lc_time_fmt $ansi_this_date %A] \
192 "" \
193 "" \
194 "" \
195 "${base_url}cal-item-new?date=${ansi_this_date}&start_time=&end_time=&return_url=$return_url" \
196 "${base_url}?view=day&date=$ansi_this_date&page_num_urlvar"
# コメントアウト
201 # set dates "[lc_time_fmt $first_weekday_date "%q"] - [lc_time_fmt $last_weekday_date "%q"]"
# 追記
202 set user_locale [lang::user::locale]
203 set locale $user_locale
204 set year [lang::message::lookup $locale calendar.year "year"]
205 set day [lang::message::lookup $locale intranet-core.Day "Day"]
206 set dates "[lc_time_fmt $first_weekday_date "%Y$year %b %e$day"] - [lc_time_fmt $last_weekday_date "%Y$year %b %e$day"]"
編集前と編集後の表示は以下のとおりです。
・編集前
・編集後