Пример #1
0
 function handleEvent($eventName, $data)
 {
     if (!is_object($data)) {
         $extendedData = $data;
         $data = $extendedData['entityData'];
     }
     $moduleName = $data->getModuleName();
     $record_id = $data->getId();
     switch ($eventName) {
         case 'vtiger.entity.aftersave.final':
             if ($moduleName == 'OSSTimeControl') {
                 $relatedToId = $data->get('related_to');
                 $start = strtotime($data->get('date_start') . ' ' . $data->get('time_start'));
                 $end = strtotime($data->get('due_date') . ' ' . $data->get('time_end'));
                 $time = round(abs($end - $start) / 3600, 2);
                 $data->set('sum_time', $time);
                 $db = PearDatabase::getInstance();
                 $db->pquery("UPDATE vtiger_osstimecontrol SET sum_time = ? WHERE osstimecontrolid = ?;", array($time, $record_id), true);
                 OSSTimeControl_Record_Model::recalculateTimeControl($data);
                 OSSTimeControl_Record_Model::recalculateTimeOldValues($record_id, $data);
             }
             if ($moduleName == 'HelpDesk') {
                 OSSTimeControl_Record_Model::recalculateProject($data->get('projectid'));
             }
             if ($moduleName == 'ProjectTask') {
                 OSSTimeControl_Record_Model::recalculateProject($data->get('projectid'));
             }
             if ($moduleName == 'Project') {
                 OSSTimeControl_Record_Model::recalculateServiceContracts($data->get('servicecontractsid'));
             }
             if ($moduleName == 'Quotes') {
                 OSSTimeControl_Record_Model::recalculatePotentials($data->get('potential_id'));
             }
             if ($moduleName == 'Calculations') {
                 OSSTimeControl_Record_Model::recalculatePotentials($data->get('potentialid'));
             }
             if ($moduleName == 'Accounts') {
                 OSSTimeControl_Record_Model::recalculateAccounts($record_id);
             }
             break;
         case 'vtiger.entity.unlink.after':
             if ($moduleName == 'OSSTimeControl') {
                 OSSTimeControl_Record_Model::recalculateTimeOldValues($record_id, $data);
             }
             break;
         case 'vtiger.entity.afterdelete':
             if ($moduleName == 'OSSTimeControl') {
                 $db = PearDatabase::getInstance();
                 $db->pquery("UPDATE vtiger_osstimecontrol SET deleted = ? WHERE osstimecontrolid = ?;", array(1, $record_id), true);
                 OSSTimeControl_Record_Model::recalculateTimeControl($data);
             }
             break;
     }
 }
Пример #2
0
 public static function recalculateTimeOldValues($record_id, $data)
 {
     require_once 'include/events/VTEntityDelta.php';
     $relatedField = array('accountid', 'contactid', 'ticketid', 'projectid', 'projecttaskid', 'servicecontractsid', 'assetsid');
     $vtEntityDelta = new VTEntityDelta();
     $delta = $vtEntityDelta->getEntityDelta('OSSTimeControl', $record_id, true);
     $recalculateOldValue = false;
     foreach ($relatedField as $key => $val) {
         if (array_key_exists($val, $delta) && $delta[$val]['oldValue'] != 0 && $delta[$val]['currentValue'] == 0) {
             $data->set($val, $delta[$val]['oldValue']);
             $recalculateOldValue = true;
         }
     }
     if ($recalculateOldValue) {
         OSSTimeControl_Record_Model::recalculateTimeControl($data);
     }
 }