伺服器腳本和作業

我們很高興地宣布,Vtiger 的伺服器腳本和作業模組的客製化和自動化能力得到了重大改進。

伺服器端腳本編寫是一項強大的功能,可讓您執行各種任務。透過此功能,您可以在儲存記錄或批准/拒絕時制定自訂操作。您也可以設定自訂背景任務以按計劃的時間間隔執行。

三年前,我們推出了 Vtiger 的應用程式平台 (VTAP),這是一個低程式碼自動化框架,旨在幫助企業進一步客製化其 Vtiger CRM 實例。借助 VTAP,開發人員可以編寫在使用者瀏覽器中執行的客戶端程式碼,以實現客戶端自訂。

然而,有很多場景,自訂程式碼必須在伺服器端運行。 

借助伺服器腳本和作業,客戶和合作夥伴可以直接在 Vtiger 伺服器上執行用 JavaScript 編寫的自訂程式碼。此功能為無限自動化鋪平了道路。

這裡有幾個例子:

  • 透過從其他來源獲取資訊來豐富您的潛在客戶資料。
  • 定期將資料從外部來源匯入 CRM。
  • 根據子記錄調整父記錄中的數據,反之亦然(更新每個組織中的未清發票餘額)。
  • 整合人工智慧驅動的自訂分析。

此功能透過兩種方式觸發這些伺服器端腳本:

  • 服務器腳本:這些是在發生特定操作時執行的伺服器端腳本。例如,保存或批准/拒絕記錄。
  • 伺服器職位:這些是伺服器端腳本,以固定的時間間隔(例如每小時、每天、每週等)自動執行。

用例

讓我們透過更新組織記錄中逾期發票金額的簡單範例來了解伺服器端腳本如何運作。

需求:在任何時間點,您都應該能夠查看任何組織的逾期發票金額。

解決方案:使用伺服器腳本,這可以輕鬆實現。

  • 每當發票更新(金額或狀態變更)時,您都會觸發腳本。
  • 使用Vtiger的REST方法,您可以將所有發票連結到腳本中的發票組織。
  • 將每張發票的餘額加起來。
  • 再次使用Vtiger的REST方法,更新組織欄位中的餘額。
  • 這將確保逾期發票金額始終在組織記錄中可見。


  

async function main(record, user) {

    var orgId = record.account_id;

    try {

        var response = await vtap.macro.ws.api('GET', 'retrieve_related', {

            id: '3x'+orgId,

            relatedLabel: 'Invoice',

            relatedType: 'Invoice'

        });

        if(response && response.success) {

            var overdueAmount = 0;

            for(var index in response.result) {

                var invoice = response.result[index];

                var balance = parseFloat(invoice.balance);

                if(balance && !isNaN(balance)) {

                    overdueAmount = overdueAmount + balance;

                }

            }

            await vtap.macro.ws.revise({

                id: '3x'+orgId,

                cf_outstanding_invoice_amount: overdueAmount

            });

        }

    } catch(error) {

    }

}


  

async function main(record, user) {

    var orgId = record.account_id;

    try {

        var response = await vtap.macro.ws.api('GET', 'retrieve_related', {

            id: '3x'+orgId,

            relatedLabel: 'Invoice',

            relatedType: 'Invoice'

        });

        if(response && response.success) {

            var overdueAmount = 0;

            for(var index in response.result) {

                var invoice = response.result[index];

                var balance = parseFloat(invoice.balance);

                if(balance && !isNaN(balance)) {

                    overdueAmount = overdueAmount + balance;

                }

            }

            await vtap.macro.ws.revise({

                id: '3x'+orgId,

                cf_outstanding_invoice_amount: overdueAmount

            });

        }

    } catch(error) {

    }

}

要了解更多信息,請參閱我們的幫助 文檔.

 
 
 

即將推出 - 更新擴展

 
 

更新擴充! 

目前,我們沒有辦法從市場更新擴展。 

在即將發布的版本中,我們將提供核心更新,用戶將能夠更新從附加元件發布者發布的擴充功能。 

對工作流程、API 設計器、模組設計器等擴充功能進行的任何變更都將更新至客戶實例。 

 

更新擴充! 

目前,我們沒有辦法從市場更新擴展。 

在即將發布的版本中,我們將提供核心更新,用戶將能夠更新從附加元件發布者發布的擴充功能。 

對工作流程、API 設計器、模組設計器等擴充功能進行的任何變更都將更新至客戶實例。 

 
 

註冊以接收最新更新!