[VtigerCRM] Vtiger CRM 5.0.4篇-調整報價單PDF
[小抱怨一下]
Well...老實說在搞VCRM( Vtiger CRM) 的PDF真是花我不少時間。去查看所有的繁簡英網站(只差沒去日本找,因為我不懂日文@@),大部分都只是貼文戰或是解釋安裝與中文化而已,對於後續修改模組的討論情報還真是少得可憐。曾一度想放棄掉,不過看過VCRM的sourse code認為問題應該很好解決,只是欠缺一個討論的環境罷了。最後還是被我克服了。廢話不多說,來教大家如何修改PDF的風格、位置調整、與增加資料庫文字區塊。
首先請確認您的版本跟我一樣是5.0.4再來看比較好,否則自己要做一下功課看對應的位置在哪裡。像5.0.4與5.1.0的PDF模組位置有點小不同,SQL語法上也有點小差異,但不是很難克服,只是要懂一些SQL程式觀念。
原則上主要有四個位置要知道
\modules\Quotes\pdf_templates 該目錄下分別有header、body、footer作風格設計用
\include\tcpdf\pdf.php 這是作為規劃文字格式、大小、字型、定位等等
\modules\Quotes\CreatePDF.php 這是PDF上變數定義用
\include\utils\CommonUtils.php 當變數定義需要去SQL找時,就在這裡
\include\language\zh-tw.lang.php 載入中文代號的繁體定義區
首先大概分兩節來介紹分別為修改與追加,如果只是想改改位置拿掉些東西,網路上就有很多解釋了(我上篇的教學連結上找的到),不過我認為解釋不夠讓人明白我會重新再解釋過。如果你跟我一樣想要追加客戶電話或是業務員名稱之類的,就要看第二節,稍晚提到。
修改---
1. Default PDF上的有些中文沒顯示出來
可能你跟我一樣中文化包沒翻譯到,重新對\include\language\zh-tw.lang.php新增相關名詞解釋就好,請追加,當然名稱你也可以改自己聽得順的。(以下只提供header會用到的,其他我還沒改到)
'Account Number' => 'CN.',
'Page' => '頁次',
'Shipping Address' => '交貨地址',
'Billing Address' => '帳單地址',
'Issue Date' => '發售日期',
'Valid Till' => '有效期限',
'Customer Name' => '客戶名稱',
'Contact Name' => '聯繫人名稱',
'Quote Number' => 'QN.',
2. 修改PDF文字的位置
先了解\modules\Quotes\pdf_templates的檔案內容,試著了解並找出你想改的最好自己多加注解。同時了解會丟哪些變數定義到該某function,
header modules/Quotes/pdf_templates/header.php
body include/tcpdf/templates/body.php
footer modules/Quotes/pdf_templates/footer.php
您可以在此三個地方直接修改array旁的數字,大部分前兩個都是X值與Y值,譬如
// Quote title 顯示"報價單"字樣
$titleBlock=array("25","25","25"); //定位X=25,Y=25
$pdf->title( $app_strings["Quote"],"", $titleBlock );
// Account Number 客戶編號
$acctBubble=array("180","0","12"); //定位X=180,Y=0
$numberText=$app_strings["Account Number"]." ".$account_id;
$pdf->addAccNumber($numberText,$acctBubble);
如果想改字型或大小等等再透過\include\tcpdf\pdf.php去找出該某function就能看到邏輯性了。
3.修改Default的泡泡方塊
其實Default上的方塊定義很多是使用了泡泡方塊,想改方塊只要對該文字區塊定義位置修改一個數字就好,數字0就是完全直角,相反數字越大越圓,不過不能太大最多好像只能7.5
找到你想改的文字區塊的function內會看到
$this->RoundedRect($r1, $y1, ($r2 - $r1), $y2, 1, 'D');
倒數第2個數字就是修改弧度參數
如果想取消方塊,只顯示文字,把這行拿掉就好或加上//
//$this->RoundedRect($r1, $y1, ($r2 - $r1), $y2, 1, 'D');
想改方塊底色,數字0~255,由黑到白
$this->SetFillColor(248);
追加---
你想追加某一欄位,如果只是固定文字,其實先去\include\tcpdf\pdf.php隨便偷一段function名字改掉後改好你的位置編輯器,在\modules\Quotes\pdf_templates設計時,都丟到你DIY的function就好。
如果是想追加一些資料庫的文字,譬如該報單的客戶電話、業務負責人之類的,那你要具備一些程式知識才行,這裏我就以追加客戶電話和業務員名稱為範本。
1. 先找出資料庫位置,透過phpmyadmin知道客戶電話在資料表: vtiger_account - > phone,VCRM都是藉由資料表索引為收詢關鍵,該資料表為accountid
2. 新定義\include\utils\CommonUtils.php,追加
function getAccountPhone($account_id)
{
global $adb;
if($account_id != '')
{
$sql = "select phone from vtiger_account where accountid=?";
$result = $adb->pquery($sql, array($account_id));
$accountphone = $adb->query_result($result,0,"phone");
}
return $accountphone;
}
3. 再追加\modules\Quotes\CreatePDF.php
$account_phone = getAccountPhone($focus->column_fields[account_id]);
4. 這樣藉由規劃出來的新變數$account_phone就能捕捉到客戶電話了。
5. 追加業務員名稱,因為網路上有人分享了,直接在header.php添上這段就可以。
$user_id = $focus->column_fields['assigned_user_id'];
if(!empty($user_id)) {
$user_focus = new Users();
$user_focus->retrieve_entity_info($user_id,"Users");
$USER_NAME1 = $user_focus->column_fields["last_name"];
$USER_NAME2 = $user_focus->column_fields["first_name"];
} else {
$USER_NAME1 = "";
$USER_NAME2 = "";
}
$invBlock=array("10","265");
$pdf->addRecBlock("$USER_NAME1 $USER_NAME2", $app_strings["Assigned To"],$invBlock);
(本部落格已有新版5.4.0的安裝指導,請參考該處[安裝篇]Vtiger CRM v5.4.0 繁體中文版本)
留言
張貼留言
留言請注意禮節與尊重他人,良好的交流環境需要你我共同維護。
VtigerCRM 相關留言討論,請改至FaceBook社團申請加入使用
https://www.facebook.com/groups/vTigerCRMtoTaiwan/