/**
  * @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";
 }
Example #4
0
 /**
  * @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);
     }
 }