มาเขียน Invoke Custom Function บน Vtiger กันครับ

หลังจากไม่ค่อยมีเวลาในการเขียน Blog แล้วเว็บ ก็ถูก Hack ไปด้วย อาจจเป็นเพราะใช้ WordPress version เดิมก็ได้ครับ วันนี้ผมจะมาแนะนำในการเขียน Invoke function บน Vtiger CRM ซึ่ง บางคนอาจจไม่เข้าใจว่า Invoke function คืออะไร

สำหรับ Invoke Custom function คือ ส่วนหนึ่งใน Module Workflow บน Vtiger CRM ที่เราสามารถเขียน Coding เพื่อให้ Workflow บน Vtiger เรียกใช้งานครับ ปัจจุบัน vtiger version ปัจจุบันคือ 5.4 มี Task การใช้งานดังนี้

  • Send Email
  • Invoke Custom Function
  • Create Todo
  • Create Event
  • Update Fields

มาเริ่มต้นกันเลยแล้วกันครับ สำหรับขั้นตอนในการไม่ยากเท่าไหร่ครับ

  1. สร้างไฟล์ PHP ที่เราไว้เขียน Function ไว้ที่ Folder include ครับ ผมสร้างเป็นไฟล์ commmissionHandler.php ทำ Function เกียวกับการ Update ค่า Commission โดยเขียน Code ดังนี้
<?php  
functionupdateCommission($entity){  
  global$log, $adb;  
  $entityArray= get_object_vars($entity);      
  $invoice_id= vtws_getIdComponents($entity--->getId());
  $invoice_id= $invoice_id[1];
  $log->debug("Entering into function updateRebate(".$invoice_id.").");
  $products= $adb->pquery("SELECT productid, quantity from vtiger_inventoryproductrel WHERE id=?", array($invoice_id));
  $numrows= $adb->num_rows($products);
  $rebate= 0;
  for($index= 0;$indexquery_result($products,$index,'productid');
    $quantity= $adb->query_result($products,$index,'quantity');
    $commission_info= $adb->pquery("SELECT unit_price, commissionrate from vtiger_products WHERE productid=?", array($productid));
    $commission_rate= $adb->query_result($commission_info, 0, 'commissionrate');
    $price= $adb->query_result($commission_info, 0, 'unit_price');
    $rebate= $rebate+ ($quantity* ($price* $commission_rate/ 100));
  }
  $adb->pquery("UPDATE vtiger_invoice SET salescommission=$rebate WHERE invoiceid=?", array($invoice_id));
}
?>
     2. จากนั้นทำการ Register function ที่เขียนขึ้นมาให้ Workflow รู้จัก โดยสร้างไฟล์ใหม่ขึ้น แล้วเขียน Code ดังนี้
<?php
require_once'include/utils/utils.php';
require'modules/com_vtiger_workflow/VTEntityMethodManager.inc';
$ob= newVTEntityMethodManager($adb);
#addEntityMethod("Module", "LABEL", "FILENAME", "FUNCTION_NAME");
$ob--->addEntityMethod("Invoice", "Update Commission", "include/CommissionHandler.php", "updateCommission");
?>
เมื่อสร้างไฟล์ขึ้น ก็ Run ไฟล์ โดยเปิดไฟล์ผ่าน Browser เลยครับ ถ้าสำเร็จก็จะเป็นหน้าเปล่าๆ ครับ สังเกต Code นะครับ ที่ Function addEntityMethod ค่าพารามิเตอร์ จะเป็น Module,ชื่อ Label, File name,Function name ที่เราเขียนครับ
    3. ต่อไปเป็นการเรียกใช้งาน Invoke Custom Function ที่เราเขียนขึ้นมากันครับ
  • เข้าไปที่ setting แล้วเข้า Workflows
  • เลือก New Workflow แล้วเลือก Module เป็น Invoice เพราะผมได้ regsiter ใช้งานกับ module invoice ครับ จากนั้นกด Create
  • ทำการตั้งชื่อ Workflow แล้วเลือกว่าจะให้ workflow ทำงานตอนไหน แล้วกำหนด condition จากนั้นให้เราบันทึกรอบหนึ่งก่อน
  • เมื่อบันทึกเสร็จแล้ว เราจะเห็น Task ให้เรากด New task จากนั้นก็จะขึ้นมาให้เลือก Type ของ Task ให้เราเลือก Invoke Custom Function แล้วกด Create
  • แล้วจะให้เราตั้งชื่อ Task แล้วก็จะเห็น Function ที่เราสร้างขึ้นมาให้เลือกครับ จากนั้นก็กด Save ครับ ซึ่ง Workflow ก็จะเรียกใช้งาน function ที่เราขึ้นมาแล้วครับ

task

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>