public static function setVals($tabla, $extra_params, $fk_id) { $es = new ExtraParamsEstructura(array("tabla" => $tabla)); $extraParamsEstruct = ExtraParamsEstructuraDAO::search($es); if (sizeof($extraParamsEstruct) == 0) { return false; } if (is_array($extra_params)) { $extra_params = (object) $extra_params; } if (is_null($extra_params)) { $extra_params = new StdClass(); } for ($nc = 0; $nc < sizeof($extraParamsEstruct); $nc++) { $campo = $extraParamsEstruct[$nc]->getCampo(); if (property_exists($extra_params, $campo)) { // Extra param se envio $v = ExtraParamsValoresDAO::search(new ExtraParamsValores(array("id_extra_params_estructura" => $extraParamsEstruct[$nc]->getIdExtraParamsEstructura(), "id_pk_tabla" => $fk_id))); if (sizeof($v) == 1) { $v = $v[0]; $v->setVal($extra_params->{$campo}); } else { $v = new ExtraParamsValores(); $v->setVal($extra_params->{$campo}); $v->setIdPkTabla($fk_id); $v->setIdExtraParamsEstructura($extraParamsEstruct[$nc]->getIdExtraParamsEstructura()); } } else { // Extra params existe pero no se envio $v = new ExtraParamsValores(); $v->setVal(NULL); $v->setIdPkTabla($fk_id); $v->setIdExtraParamsEstructura($extraParamsEstruct[$nc]->getIdExtraParamsEstructura()); } try { ExtraParamsValoresDAO::save($v); } catch (Exception $e) { throw $e; } } }
/** * *Editar un documento * * @param extra_params json * @param id_documento int **/ public static function Editar($extra_params, $id_documento) { $nDoc = DocumentoDAO::getByPK($id_documento); $nDoc->setFolio(0); $nDoc->setFecha(time()); $nDoc->setIdOperacion(0); DAO::transBegin(); try { DocumentoDAO::save($nDoc); } catch (Exception $e) { DAO::transRollback(); throw InvalidDatabaseOperationException($e); } //test all extra params in base doc are present in $extra_params $pindb = ExtraParamsEstructuraDao::search(new ExtraParamsEstructura(array("tabla" => "documento_base-" . $nDoc->getIdDocumentoBase()))); foreach ($pindb as $campo) { $valores = ExtraParamsValoresDAO::search(new ExtraParamsValores(array("id_extra_params_estructura" => $campo->getIdExtraParamsEstructura(), "id_pk_tabla" => $id_documento))); if (sizeof($valores) == 0) { $valores = new ExtraParamsValores(); } else { $valores = $valores[0]; } if (!array_key_exists($campo->getCampo(), $extra_params)) { //no existe en extra params //salir si este parametro es //obligatorio if ($campo->getObligatorio()) { throw new InvalidDataException("El campo " . $campo->getObligatorio() . " es obligatorio"); } } else { $valueToStore = $extra_params->{$campo->getCampo()}; $valueToStore = is_null($valueToStore) ? "" : $valueToStore; /*$val = new ExtraParamsValores(array( "id_extra_params_estructura" => $campo->getIdExtraParamsEstructura(),// id_extra_params "id_pk_tabla" => $nDoc->getIdDocumento(),// id_documento "val" => $valueToStore ));*/ $valores->setVal($valueToStore); try { ExtraParamsValoresDAO::save($valores); } catch (Exception $e) { DAO::transRollback(); throw new InvalidDatabaseOperationException($e); } } } //foreach DAO::transEnd(); }