예제 #1
0
 public function testExtraParamsOutOfSync()
 {
     //create user A
     $userA = ClientesController::Nuevo("userA" . time());
     Logger::log("Create client A  [userid=" . $userA["id_cliente"] . "]");
     //create extra param
     $extraParamStruct = new ExtraParamsEstructura();
     $extraParamStruct->setTabla("usuarios");
     $extraParamStruct->setCampo("campo" . time());
     $extraParamStruct->setTipo("string");
     $extraParamStruct->setEnum(NULL);
     $extraParamStruct->setLongitud(128);
     $extraParamStruct->setObligatorio(FALSE);
     $extraParamStruct->setCaption("caption" . time());
     $extraParamStruct->setDescripcion("description" . time());
     ExtraParamsEstructuraDAO::save($extraParamStruct);
     Logger::log("Extra params " . $extraParamStruct->getIdExtraParamsEstructura() . " created");
     //create user B
     $userB = ClientesController::Nuevo("userB" . time());
     Logger::log("Create client B  [userid=" . $userB["id_cliente"] . "]");
     //user B should have extra param
     Logger::log("Looking for extra params in clientB");
     $userBExtraParams = ExtraParamsValoresDAO::getVals("usuarios", $userB["id_cliente"]);
     $found = false;
     for ($i = 0; $i < sizeof($userBExtraParams); $i++) {
         if ($userBExtraParams[$i]["campo"] == $extraParamStruct->getCampo()) {
             $found = true;
         }
     }
     $this->assertTrue($found, "ClientB should have the new extra param campo=" . $extraParamStruct->getCampo());
     ExtraParamsValoresDAO::actualizarRegistros("usuarios");
     //user A should have extra param
     $userAExtraParams = ExtraParamsValoresDAO::getVals("usuarios", $userA["id_cliente"]);
     $found = false;
     for ($i = 0; $i < sizeof($userAExtraParams); $i++) {
         if ($userAExtraParams[$i]["campo"] == $extraParamStruct->getCampo()) {
             $found = true;
         }
     }
     $this->assertTrue($found, "When adding new extraparams old users should get updated" . $extraParamStruct->getCampo());
 }
예제 #2
0
 /**
  *
  *El documento base es de donde se crean instancias de documentos.
  *
  * @param json_impresion json El json que se utilizara para imprimir este documento.
  * @param nombre string Nombre del documento base
  * @param activo bool Si esta activo o si no se puede realizar documentos de este tipo.
  * @param foliado json El json que describe como sera el foliado de este documento. Incluye en que folio va.
  * @param foliado json 
  * @param id_empresa int Si pertence a una empresa en especifico, o puede realizarse en cualquier empresa.
  * @param id_sucursal int Si pertenece a una sucursal en especifico o puede realizarse en cualquier sucursal.
  * @return id_documento_base int Id del nuevo documento
  **/
 static function NuevoBase($json_impresion, $nombre, $activo = 1, $extra_params = null, $foliado = "", $foliado = "", $id_empresa = null, $id_sucursal = null, $nombre_plantilla = null)
 {
     if (is_null($json_impresion)) {
         throw new InvalidDataException("El json de impresion no es valido.");
     }
     $q = DocumentoBaseDAO::search(new DocumentoBase(array("nombre" => $nombre)));
     if (sizeof($q) > 0) {
         throw new InvalidDataException("Ya existe un documento con este nombre.");
     }
     $nDoc = new DocumentoBase();
     $nDoc->setJsonImpresion(json_encode($json_impresion));
     $nDoc->setNombre($nombre);
     $nDoc->setActivo($activo);
     $nDoc->setIdEmpresa($id_empresa);
     $nDoc->setIdSucursal($id_sucursal);
     $nDoc->setUltimaModificacion(time());
     $nDoc->setNombrePlantilla($nombre_plantilla);
     //Es aconsejable agregar un token al nombre de la plantilla y modificar el nombre del archivo con este nuevo token para evitar sobreescribirlo
     try {
         DocumentoBaseDAO::save($nDoc);
     } catch (Exception $e) {
         throw new InvalidDatabaseOperationException($e);
     }
     if (!is_null($extra_params)) {
         for ($i = 0; $i < sizeof($extra_params); $i++) {
             if (!isset($extra_params[$i]->obligatory)) {
                 $extra_params[$i]->obligatory = FALSE;
             }
             $paramStruct = new ExtraParamsEstructura();
             //
             // Si el tipo de parametro extra es enum,
             // se debio enviar tambien 'enum', validar
             // que sea un json
             if ($extra_params[$i]->type == "enum") {
                 if (!isset($extra_params[$i]->enum)) {
                     throw new InvalidDataException("Falta enum");
                 }
                 $paramStruct->setEnum($extra_params[$i]->enum);
             }
             $paramStruct->setTabla("documento_base-" . $nDoc->getIdDocumentoBase());
             $paramStruct->setCampo(str_replace(" ", "_", $extra_params[$i]->desc));
             $paramStruct->setTipo($extra_params[$i]->type);
             $paramStruct->setLongitud(256);
             $paramStruct->setObligatorio($extra_params[$i]->obligatory);
             $paramStruct->setCaption($extra_params[$i]->desc);
             $paramStruct->setDescripcion($extra_params[$i]->desc);
             try {
                 ExtraParamsEstructuraDAO::save($paramStruct);
             } catch (Exception $e) {
                 Logger::error($e);
                 throw new InvalidDatabaseOperationException($e);
             }
         }
     }
     Logger::log("Se ha creado el documento base id=" . $nDoc->getIdDocumentoBase());
     return array("id_documento_base" => $nDoc->getIdDocumentoBase());
 }
예제 #3
0
 public static function NuevaColumnaBd($campo, $caption, $obligatorio, $tabla, $tipo, $descripcion = "", $longitud = "")
 {
     //busquemos que exista la tabla
     switch ($tabla) {
         case "clientes":
             break;
         default:
             throw new InvalidDataException("No puede crear una nueva columna para la tabla {$tabla}");
     }
     //veamos que no exista la combinacion de tabla-campo
     //validar tipo y longitud
     //crear objeto
     $ncbd = new ExtraParamsEstructura();
     $ncbd->setTabla($tabla);
     $ncbd->setCampo($campo);
     $ncbd->setTipo($tipo);
     $ncbd->setLongitud($longitud);
     $ncbd->setObligatorio($obligatorio);
     $ncbd->setCaption($caption);
     $ncbd->setDescripcion($descripcion);
     //insertar
     try {
         ExtraParamsEstructuraDAO::save($ncbd);
     } catch (Exception $e) {
         throw new InvalidDataException("El campo `" . $campo . "` ya existe en esta tabla.");
     }
     return array("id_columna" => $ncbd->getIdExtraParamsEstructura());
 }