/** * Create a new HRJobDetails based on array-data * * @param array $params key-value pairs * @return CRM_HRJob_DAO_HRJobDetails|NULL * */ public static function create($params) { $hook = empty($params['id']) ? 'create' : 'edit'; $previousDetailsRevisionId = null; if ($hook == 'create') { $previousRevisionResult = civicrm_api3('HRJobContractRevision', 'getcurrentrevision', array('sequential' => 1, 'jobcontract_id' => $params['jobcontract_id'])); if (!empty($previousRevisionResult['values']['details_revision_id'])) { $previousDetailsRevisionId = $previousRevisionResult['values']['details_revision_id']; } } $instance = parent::create($params); // setting 'effective_date' if it's not set: $revision = civicrm_api3('HRJobContractRevision', 'get', array('sequential' => 1, 'jobcontract_id' => $params['jobcontract_id'], 'id' => $instance->jobcontract_revision_id)); if (!empty($revision['values'][0])) { $revisionData = array_shift($revision['values']); if (!$revisionData['effective_date']) { civicrm_api3('HRJobContractRevision', 'create', array('id' => $revisionData['id'], 'effective_date' => $instance->period_start_date)); } } $revisionResult = civicrm_api3('HRJobContractRevision', 'get', array('sequential' => 1, 'id' => $instance->jobcontract_revision_id)); $revision = CRM_Utils_Array::first($revisionResult['values']); $duplicate = CRM_Utils_Array::value('action', $params, $hook); if ($hook == 'create' && empty($revision['role_revision_id']) && $duplicate != 'duplicate' && empty($params['import'])) { //civicrm_api3('HRJobRole', 'create', array('jobcontract_id' => $revision['jobcontract_id'],'title' => $instance->title, 'location'=> $instance->location, 'percent_pay_role' => 100, 'jobcontract_revision_id' => $instance->jobcontract_revision_id)); CRM_Hrjobcontract_BAO_HRJobRole::create(array('jobcontract_id' => $revision['jobcontract_id'], 'title' => $instance->title, 'location' => $instance->location, 'percent_pay_role' => 100, 'jobcontract_revision_id' => $instance->jobcontract_revision_id)); } if ($previousDetailsRevisionId) { CRM_Core_BAO_File::copyEntityFile('civicrm_hrjobcontract_details', $previousDetailsRevisionId, 'civicrm_hrjobcontract_details', $revision['details_revision_id']); } $contract = new CRM_Hrjobcontract_DAO_HRJobContract(); $contract->id = $revision['jobcontract_id']; $contract->find(true); CRM_Hrjobcontract_JobContractDates::setDates($contract->contact_id, $revision['jobcontract_id'], $instance->period_start_date, $instance->period_end_date); return $instance; }
/** * Create a new HRJobContract based on array-data * * @param array $params key-value pairs * @return CRM_HRJob_DAO_HRJobContract|NULL * */ public static function create($params) { $className = 'CRM_HRJobContract_DAO_HRJobContract'; $entityName = 'HRJobContract'; $hook = empty($params['id']) ? 'create' : 'edit'; CRM_Utils_Hook::pre($hook, $entityName, CRM_Utils_Array::value('id', $params), $params); $instance = new self(); $instance->copyValues($params); $instance->save(); CRM_Utils_Hook::post($hook, $entityName, $instance->id, $instance); if ((is_numeric(CRM_Utils_Array::value('is_primary', $params)) || $hook === 'create') && empty($params['import'])) { CRM_Hrjobcontract_DAO_HRJobContract::handlePrimary($instance, $params); } $deleted = isset($params['deleted']) ? $params['deleted'] : 0; if ($deleted) { CRM_Hrjobcontract_JobContractDates::removeDates($instance->id); } if (module_exists('rules')) { rules_invoke_event('hrjobcontract_after_create', $instance); } return $instance; }
/** * HRJobContract implementation of the "delete" contract action. * * Deletes whole contract with its all revisions and entities. * * @param string $entity entity name * @param array $params params from civicrm_api, including 'jobcontract_id' * @return array|int */ function _civicrm_hrjobcontract_api3_deletecontract($params) { $entityNames = array('HRJobDetails', 'HRJobHealth', 'HRJobHour', 'HRJobLeave', 'HRJobPay', 'HRJobPension', 'HRJobRole'); $transaction = new CRM_Core_Transaction(); try { if (empty($params['id'])) { throw new Exception("Cannot delete Job Contract: please specify id value."); } $contract = civicrm_api('HRJobContract', 'get', $params); if (empty($contract['id'])) { throw new Exception("Cannot find Job Contract with given id (" . $params['id'] . ")."); } $revisions = civicrm_api('HRJobContractRevision', 'get', array('sequential' => 1, 'options' => array('limit' => 0), 'version' => 3, 'jobcontract_id' => $params['id'])); foreach ($revisions['values'] as $revision) { civicrm_api3('HRJobContractRevision', 'create', array('version' => 3, 'id' => $revision['id'], 'deleted' => 1)); } civicrm_api3('HRJobContract', 'create', array('version' => 3, 'id' => $contract['id'], 'deleted' => 1)); CRM_Hrjobcontract_JobContractDates::removeDates($contract['id']); return 1; } catch (PEAR_Exception $e) { $transaction->rollback(); return civicrm_api3_create_error($e->getMessage()); } catch (Exception $e) { $transaction->rollback(); return civicrm_api3_create_error($e->getMessage()); } }
function upgrade_1010() { CRM_Hrjobcontract_JobContractDates::rewriteContactIds(); return TRUE; }