InvoicePlaneで作った請求書をカスタマイズしてみる
前回
InvoicePlaneをインストールして請求書PDFを出力する所まで出来ました。
ですが、問題がちょっと?残っています。
前回の記事は「InvoicePlaneで請求書を作成してみる」です。
初期状態の請求書
まず、日本とか出ちゃってますね。
住所の出方が逆ですね。PとかFってなんだよ。小数点以下をどうやって払うの?
請求書1って何?
合計が二か所あるよね?説明ちっちゃくない?全体的に日本語が不自然。
配置が変。
全部直します。
PDFカスタマイズの方法
配置の修正
phpのmpdfでhtml→css変換を行っていると思われるため、
htmlとcssを修正します。
application/views/invoice_templates/pdf/InvoicePlane.php
がhtmlになります。
assets/invoiceplane/css/template.css
がcssになります。
cssはどこかで整形しましょう。(またはsassを修正して変換する)
日本語の修正
application/language/Japanese/ip_lang.php
で修正します。
htmlに日本語を直接記述してもOKですが、utf-8で保存しないといけません。
日付の形式の追加
Y年m月d日形式を追加したい場合は
application/helpers/date_helper.php
で追加します。
配置修正版
配置と日本語はこんな感じで、後は装飾すればよいと思われます。
あとは消費税ですね。
消費税問題
消費税の問題は
小数点が出ちゃってる & 切り捨てor四捨五入or切り上げ
が絡みます。
今回は一般的である「切り捨て」で行きますが、本来は現状に合わせる必要があります。
消費税計算個所のソースを直接修正します。
そうしないとMySQLに小数点以下の値が保存されてしまいます。
請求書全体の消費税計算の切り捨て
項目毎は税抜きで合計の消費税計算を行っている個所です。
application/modules/invoices/models/Mdl_invoice_amounts.phpの164行あたり
if ($invoice_tax_rate->include_item_tax) {
// The invoice tax rate should include the applied item tax
$invoice_tax_rate_amount = ($invoice_amount->invoice_item_subtotal + $invoice_amount->invoice_item_tax_total) * ($invoice_tax_rate->invoice_tax_rate_percent / 100);
} else {
// The invoice tax rate should not include the applied item tax
//$invoice_tax_rate_amount = $invoice_amount->invoice_item_subtotal * ($invoice_tax_rate->invoice_tax_rate_percent / 100);
$invoice_tax_rate_amount = floor($invoice_amount->invoice_item_subtotal * ($invoice_tax_rate->invoice_tax_rate_percent / 100)); // erabikata.info update!
}
$invoice_tax_rate_amountに入れるときにfloor関数で切り捨てます。(elseの方)
ifの方は項目毎に消費税を加算し、それらにさらに全体で消費税を加算する場合のものです。
一応そっちにもfloorを追加してもいいとは思いますが、今は使わないのでやりません。
項目毎の消費税計算の切り捨て
項目ごとに消費税あり/なしを設定し、請求書全体では設定しない時がありますよね。
項目ごとの消費税計算を行っている個所です。
application/modules/invoices/models/Mdl_item_amounts.phpの33行あたり
//$item_tax_total = $item_subtotal * ($item->item_tax_rate_percent / 100); erabikata.info update!
$item_tax_total = floor($item_subtotal * ($item->item_tax_rate_percent / 100));
$item_tax_totalに入れるときにfloor関数で切り捨てます。
小数点以下を表示しない
これはソースを見ていて気付いたのですが、システム設定の「小数点」のドットを消すと、小数点を表示しなくなるように書いてあります。
なので、ドットを消しておけば、表示されなくなります。
請求書最終版
こんな感じになりました。
カスタマイズの所要時間は90分で、インストールから設定までの90分と合わせて3時間くらいです。
皆さんも自分だけの請求書にチャレンジしてみてはいかがでしょうか。
ちなみにまだ見積書が残っています…(メンドイ)