From f1484ca99832897cee7ee2513b9c79e3f49b6db7 Mon Sep 17 00:00:00 2001 From: Brayan Osmar Pereyra Suxo Date: Thu, 19 Jul 2012 18:53:48 -0400 Subject: [PATCH] BUG 8376 The Key Autoincrement in PMT Dynaform is requeried SOLVED - I add the field Key Autoincrement no requeried in PMT dynaform --- .../engine/classes/model/AdditionalTables.php | 19 ++++++++++++++- workflow/engine/classes/model/Dynaform.php | 24 +++++++++++++++++-- .../engine/methods/cases/cases_SaveData.php | 20 ++++++++-------- 3 files changed, 50 insertions(+), 13 deletions(-) diff --git a/workflow/engine/classes/model/AdditionalTables.php b/workflow/engine/classes/model/AdditionalTables.php index 2f971d1ea..8a74a2c26 100755 --- a/workflow/engine/classes/model/AdditionalTables.php +++ b/workflow/engine/classes/model/AdditionalTables.php @@ -406,8 +406,16 @@ class AdditionalTables extends BaseAdditionalTables $stmt = $oConnection->createStatement(); require_once $sPath . $sClassName . '.php'; $sKeys = ''; + $keysAutoIncrement = 0; + $keyUIDAutoIncrement = ''; foreach ($aData['FIELDS'] as $aField) { if ($aField['FLD_KEY'] == 1) { + if ($aField['FLD_AUTO_INCREMENT'] == 1) { + if ($keysAutoIncrement == 0) { + $keyUIDAutoIncrement = $aField['FLD_NAME']; + } + $keysAutoIncrement++; + } $vValue = $aFields[$aField['FLD_NAME']]; eval('$' . $aField['FLD_NAME'] . ' = $vValue;'); $sKeys .= '$' . $aField['FLD_NAME'] . ','; @@ -421,7 +429,16 @@ class AdditionalTables extends BaseAdditionalTables } } if ($oClass->validate()) { - $iResult = $oClass->save(); + $iResult = $oClass->save(); + if ($keysAutoIncrement == 1 && $aFields[$keyUIDAutoIncrement] == '' && isset($_SESSION['APPLICATION']) && $_SESSION['APPLICATION'] != '') { + G::LoadClass('case'); + $oCaseKeyAuto = new Cases(); + $newId = $oClass->getId(); + $aFields = $oCaseKeyAuto->loadCase($_SESSION['APPLICATION']); + $aFields['APP_DATA'][$keyUIDAutoIncrement] = $newId; + $_POST['form'][$keyUIDAutoIncrement] = $newId; + $oCaseKeyAuto->updateCase($_SESSION['APPLICATION'], $aFields); + } } return true; } catch (Exception $oError) { diff --git a/workflow/engine/classes/model/Dynaform.php b/workflow/engine/classes/model/Dynaform.php index d320111eb..0de0f65cc 100755 --- a/workflow/engine/classes/model/Dynaform.php +++ b/workflow/engine/classes/model/Dynaform.php @@ -270,10 +270,30 @@ class Dynaform extends BaseDynaform { $attributes = array('XMLNODE_NAME_OLD' => '', 'XMLNODE_NAME' => $pmConnectionName, 'TYPE' => 'pmconnection', 'PMTABLE' => $pmTableUid, 'KEYS'=>$keys); $fieldXML->Save($attributes, $labels, $options); } + + $keyRequered = ''; + $countKeys = 0; + while ($res->next()) { + if ($res->get('Key') != '') { + $countKeys++; + } + if ($res->get('Extra') == 'auto_increment') { + $keyRequered .= $res->get('Field'); + } + } + + $dbh = Propel::getConnection(AdditionalTablesPeer::DATABASE_NAME); + $sth = $dbh->createStatement(); + $res = $sth->executeQuery($sql, ResultSet::FETCHMODE_ASSOC); + while ($res->next()){ // if(strtoupper($res->get('Null'))=='NO') { - if(strtoupper($res->get($oDataBase->getFieldNull() ))=='NO'){ - $required = '1'; + if(strtoupper($res->get($oDataBase->getFieldNull() ))=='NO'){ + if ($countKeys == 1 && $res->get('Field') == $keyRequered) { + $required = '0'; + } else { + $required = '1'; + } } else { $required = '0'; } diff --git a/workflow/engine/methods/cases/cases_SaveData.php b/workflow/engine/methods/cases/cases_SaveData.php index e81476566..ec402a39e 100755 --- a/workflow/engine/methods/cases/cases_SaveData.php +++ b/workflow/engine/methods/cases/cases_SaveData.php @@ -138,16 +138,7 @@ try { } } } - // saving the data ina pm table in case that is a new record - if (!empty($newValues)) { - $id = key($newValues); - while (strlen($id) < 3) { - $id = '_' . $id; - } - if (! $oAdditionalTables->updateDataInTable( $oForm->fields [$oForm->fields[$id]->pmconnection]->pmtable, $newValues) ) {//<--This is to know if it is a new registry on the PM Table - $oAdditionalTables->saveDataInTable( $oForm->fields [$oForm->fields[$id]->pmconnection]->pmtable, $newValues); - } - } + //save data $aData = array (); $aData ['APP_NUMBER'] = $Fields ['APP_NUMBER']; @@ -161,6 +152,15 @@ try { $aData ['PRO_UID'] = $_SESSION ['PROCESS']; $oCase->updateCase ( $_SESSION ['APPLICATION'], $aData ); + + // saving the data ina pm table in case that is a new record + if (!empty($newValues)) { + $id = key($newValues); + if (! $oAdditionalTables->updateDataInTable( $oForm->fields [$oForm->fields[$id]->pmconnection]->pmtable, $newValues) ) {//<--This is to know if it is a new registry on the PM Table + $oAdditionalTables->saveDataInTable( $oForm->fields [$oForm->fields[$id]->pmconnection]->pmtable, $newValues); + } + } + //save files require_once 'classes/model/AppDocument.php'; if (isset ( $_FILES ['form'] )) {