在自定义模块中创建记录,并将自动创建新的事件记录,该记录将显示在日历 vtiger crm 中

问题描述 投票:0回答:2

有人尝试过这个吗?

我有一个自定义模块,我在下次访问时创建了一个字段,我想在根据下次访问字段日期将记录保存在自定义模块中后创建一个事件。这是尝试过的以下代码。

public function process(Vtiger_Request $request) {
 try {
  $CustomSaveEvents= $this->saveAppointmentRecord();
 } catch (Exception $e) {
  throw new Exception($e->getMessage());
 }
}

public function saveAppointmentRecord() {
try {
    $linkModule ="Events";
    $recordModel1 = Vtiger_Record_Model::getCleanInstance($linkModule);
    $recordModel1->set('subject', "Sample");
    $recordModel1->set('mentorid',"6411");
    $recordModel1->set('apprenticeid',"10849");
    $recordModel1->set('due_date', '2022-10-24');
    $recordModel1->set('time_end','2022-10-24');
    $recordModel1->set('mode', 'create');
    $recordModel1->save();
    $this->savedRecordId = $recordModel1->getId();

        return $recordModel1;
    }catch (Exception $e) {
        throw new Exception($e->getMessage());
    }
}

但是没有成功。有谁可以帮助我吗? 预先感谢您!

日历将显示新记录

vtiger vtigercrm
2个回答
0
投票

我最近做了类似的事情,但是使用了“产品”和“文档”模块。

执行 save() 时 crm 挂起,直到我意识到这是由一些保存后事件引起的,这些事件与 VTEntitydelta 相关。

我的解决方案是在 save() 之前禁用这些事件:

$desactivaHandlers = "UPDATE vtiger_eventhandlers SET is_active = 0 WHERE dependent_on LIKE '[\"VTEntityDelta\"]'";
$result = $adb->pquery($desactivaHandlers);

并在 save() 之后再次重新激活它:

$reactivaHandlers = "UPDATE vtiger_eventhandlers SET is_active = 1 WHERE dependent_on LIKE '[\"VTEntityDelta\"]'";
$result = $adb->pquery($reactivaHandlers);

希望有帮助!


-1
投票

我有一个更好的解决方案,不需要编码。您可以使用工作流程在保存事件时创建事件。您可以参考以下链接来配置 CRM 中的工作流程。该视频可能无法满足您的具体要求,但您可以参考了解工作流程配置的工作原理。

  1. https://www.youtube.com/watch?v=x2j-ZQTzXps
  2. https://www.youtube.com/watch?v=jwipywUzlzo

© www.soinside.com 2019 - 2024. All rights reserved.