/** * *Crea una nueva retencion * * @param es_monto float Si es veradera, el campo monto_porcentaje sera tomado como un monto fijo, si es falso, sera tomado como un porcentaje * @param monto_porcentaje float Monto o procentaje que representa esta retencion * @param nombre string Nombre de la retencion * @param descripcion string Descripcion larga de la retencion * @return id_retencion int Id de la retencion creada **/ public static function NuevaRetencion($es_monto, $monto_porcentaje, $nombre, $descripcion = null) { Logger::log("Creando una nueva retencion"); //Se validan los parametros recibidos $e = self::validarEsMonto($es_monto); if (is_string($e)) { Logger::error($e); throw new Exception($e); } $e = self::validarMontoPorcentaje($monto_porcentaje); if (is_string($e)) { Logger::error($e); throw new Exception($e); } $e = self::validarNombre($nombre); if (is_string($e)) { Logger::error($e); throw new Exception($e); } if (!is_null($descripcion)) { $e = self::validarDescripcion($descripcion); if (is_string($e)) { Logger::error($e); throw new Exception($e); } } $retencion = new Retencion(array("es_monto" => $es_monto, "monto_porcentaje" => $monto_porcentaje, "nombre" => $nombre, "descripcion" => $descripcion)); DAO::transBegin(); try { RetencionDAO::save($retencion); } catch (Exception $e) { DAO::transRollback(); Logger::error("No se ha podido crear la nueva retencion: " . $e); throw new Exception("No se ha podido crear la nueva retencion, consulte a su administrador de sistema"); } DAO::transEnd(); Logger::log("Retencion creada exitosamente"); return array("id_retencion" => $retencion->getIdRetencion()); }