服务器脚本和作业

我们很高兴地宣布,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 设计器、模块设计器等扩展进行的任何更改都将更新到客户实例。 

 
 

注册以接收最新更新!