/** * @param $context \Workflow\VTEntity */ public function handleTask(&$context) { $recordID = trim($this->get("recordid", $context)); if (!empty($recordID) && $recordID != -1) { $contextRecord = \Workflow\VTEntity::getForId($recordID); } else { $contextRecord = $context; } $newObj = \Workflow\VTEntity::create($contextRecord->getModuleName()); $oldData = $contextRecord->getData(); foreach ($oldData as $key => $value) { $newObj->set($key, $value); } if ($contextRecord->isInventory()) { $products = $contextRecord->exportInventory(); $newObj->importInventory($products); $newObj->save(); } /* After this line, copy from Creator */ $setterMap = $this->get("setter"); if (is_array($setterMap)) { $this->fieldSetter->apply($newObj, $setterMap, $contextRecord, $this); } $newObj->save(); $context->setEnvironment("new_record_id", $newObj->getWsId(), $this); if ($this->get("redirectAfter") == "1") { $this->getWorkflow()->setSuccessRedirection("index.php?module=" . $newObj->getModuleName() . "&view=Detail&record=" . $newObj->getId()); } if ($this->get("exec_workflow") !== "" && $this->get("exec_workflow") != -1) { $newContext = \Workflow\VTEntity::getForId($newObj->getId(), $newObj->getModuleName()); $objWorkflow = new \Workflow\Main($this->get("exec_workflow"), false, $context->getUser()); $objWorkflow->setContext($newContext); $objWorkflow->isSubWorkflow(true); $objWorkflow->start(); } return "yes"; }
/** * @param $context \Workflow\VTEntity|\Workflow\VTInventoryEntity */ public function handleTask(&$context) { $referenceId = $context->getId(); Workflow2::$enableError = true; $parentRecordModel = Inventory_Record_Model::getInstanceById($referenceId); $currencyInfo = $parentRecordModel->getCurrencyInfo(); $taxes = $parentRecordModel->getProductTaxes(); $shippingTaxes = $parentRecordModel->getShippingTaxes(); $relatedProducts = $parentRecordModel->getProducts(); $recordModel = Vtiger_Record_Model::getCleanInstance('Invoice'); $recordModel->setRecordFieldValues($parentRecordModel); $recordModel->save(); $newId = $recordModel->getId(); $contextRecord = $context; /** * @var $newObj \Workflow\VTEntity|\Workflow\VTInventoryEntity */ $newObj = \Workflow\VTEntity::getForId($newId); $newObj->set('hdnTaxType', $parentRecordModel->get('hdnTaxType')); $newObj->importProductsFromRecord($relatedProducts, true); $setterMap = $this->get("setter"); $this->fieldSetter->apply($newObj, $setterMap, $contextRecord, $this); $newObj->save(); if ($this->get("redirectAfter") == "1") { $this->getWorkflow()->setSuccessRedirection("index.php?module=" . $newObj->getModuleName() . "&view=Detail&record=" . $newObj->getId()); } if ($this->get("exec_workflow") !== "" && $this->get("exec_workflow") != -1) { $newContext = VTEntity::getForId($newObj->getId(), $newObj->getModuleName()); $newContext->loadEnvironment($context->getEnvironment()); $objWorkflow = new \Workflow\Main($this->get("exec_workflow"), false, $context->getUser()); $objWorkflow->isSubWorkflow(true); $objWorkflow->setContext($newContext); $objWorkflow->start(); } Workflow2::$enableError = true; }
/** * @param $context \Workflow\VTEntity */ public function handleTask(&$context) { $setterMap = $this->get("setter"); $newModule = $this->get("new_module"); if (empty($newModule)) { $this->addStat("NO Configuration set"); return "yes"; } $uniqueCheck = $this->get('uniquecheck'); $createNew = true; if ($uniqueCheck !== -1 && is_array($uniqueCheck) && !empty($uniqueCheck)) { $setterMap = $this->get('setter'); $fieldValue = $this->fieldSetter->getFieldValueArray($context, $setterMap); $condition = array(); foreach ($uniqueCheck as $checkField) { $condition[$checkField] = $fieldValue[$checkField]; } $records = \Workflow\VtUtils::findRecordIDs($newModule, $condition); if (count($records) > 0) { // duplicate records found $this->addStat('duplicate Record found [' . implode(',', $records) . '] -> do not create new'); $updateexisting = $this->get('updateexisting'); if ($updateexisting !== -1 && is_array($updateexisting) && !empty($updateexisting)) { foreach ($records as $crmid) { $entity = \Workflow\VTEntity::getForId($crmid); foreach ($updateexisting as $field) { $entity->set($field, $fieldValue[$field]); } $entity->save(); break; } } $context->setEnvironment("new_record_id", $records[0], $this); $context->setEnvironment("was_created_new", 'false', $this); $createNew = false; $newObj = \Workflow\VTEntity::getForId($records[0]); } } if ($createNew === true) { $newObj = VTEntity::create($newModule); $this->fieldSetter->apply($newObj, $setterMap, $context, $this); try { $newObj->save(); } catch (WebServiceException $exp) { // Somethink is wrong with the values. missing mandatory fields? } $context->setEnvironment("new_record_id", $newObj->getId(), $this); $context->setEnvironment("was_created_new", 'true', $this); } if ($context->getModuleName() == "Assets" && $newModule == "HelpDesk") { global $adb; $sql = "INSERT INTO vtiger_crmentityrel SET crmid = ?, module = ?, relcrmid = ?, relmodule = ?"; $adb->pquery($sql, array($context->getId(), $context->getModuleName(), $newObj->getId(), $newObj->getModuleName())); } if ($this->get("redirectAfter") == "1") { $this->getWorkflow()->setSuccessRedirection("index.php?module=" . $newModule . "&view=Detail&record=" . $newObj->getId()); } if ($this->get("exec_workflow") !== "" && $this->get("exec_workflow") != -1) { $newContext = VTEntity::getForId($newObj->getId(), $newObj->getModuleName()); $newContext->loadEnvironment($context->getEnvironment()); $objWorkflow = new \Workflow\Main($this->get("exec_workflow"), false, $context->getUser()); $objWorkflow->isSubWorkflow(true); $objWorkflow->setContext($newContext); $objWorkflow->start(); } Workflow2::$enableError = true; return "yes"; }
/** * @param $context \Workflow\VTEntity */ public function handleTask(&$context) { $setterMap = $this->get("setter"); $this->fieldSetter->apply($context, $setterMap, null, $this); return "yes"; }
public function beforeGetTaskform($viewer) { global $adb, $vtiger_current_version; $new_module = $this->get("new_module"); if (!empty($_POST["task"]["new_module_setter"])) { $new_module = $_POST["task"]["new_module_setter"]; $allFields = VtUtils::getFieldsForModule($_POST["task"]["new_module_setter"], true); $mandatoryFields = VtUtils::getMandatoryFields(getTabid($_POST["task"]["new_module_setter"])); $startFields = array(); $counter = 1; $fromFields = $this->fieldSetter->getFromFields(); $tmpFields = array(); foreach ($mandatoryFields as $fields) { $tmpFields[$fields['fieldname']] = 1; } $mandatoryFields = $tmpFields; $tmpFields = array(); foreach ($fromFields as $block) { foreach ($block as $field) { $tmpFields[$field->name] = 1; } } foreach ($allFields as $field) { if ($field->name != 'crmid') { if (isset($tmpFields[$field->name])) { $startValue = '$' . $field->name; } else { $startValue = ''; } if ($field->uitype != 4 && $field->uitype != 70 && $field->name != 'modifiedby' && $field->displaytype != 3 && $field->displaytype != 5 && $field->displaytype != 2) { $startFields["" . $counter] = array("field" => $field->name, "mode" => "field", "value" => $startValue, 'fixed' => isset($mandatoryFields[$field->name])); $counter++; } } } if ($_POST["task"]["new_module_setter"] == "Calendar") { $startFields["" . $counter] = array("field" => "time_start", "mode" => "value", "value" => ""); } $this->set("setter", $startFields); $this->set("new_module", $new_module); } $workflows = Workflow2::getWorkflowsForModule($new_module, 1); $viewer->assign("extern_workflows", $workflows); $sql = "SELECT id FROM vtiger_ws_entity WHERE name = 'Users'"; $result = $adb->query($sql); $wsTabId = $adb->query_result($result, 0, "id"); if (!empty($new_module) && $new_module != -1) { $viewer->assign("new_module", $new_module); } $sql = "SELECT * FROM vtiger_tab WHERE presence = 0 AND isentitytype = 1 ORDER BY name"; $result = $adb->query($sql); $module = array(); while ($row = $adb->fetch_array($result)) { if ($row["name"] == "Calendar") { continue; } $module[$row["name"]] = getTranslatedString($row["tablabel"], $row["name"]); } #$module["Events"] = getTranslatedString($row["tablabel"],"Events"); asort($module); $viewer->assign("avail_module", $module); if ($this->_productchooser !== null) { $viewer->assign('productchooser', true); } }