Example #1
0
 /**
  *
  *Da de baja un servicio que ofrece una empresa
  *
  * @param id_servicio int Id del servicio que ser� eliminado
  **/
 public static function Eliminar($id_servicio)
 {
     Logger::log("Desactivando servicio " . $id_servicio . " ...");
     //valida que el servicio exista y que no haya sido desactivado antes
     $validar = self::validarParametrosServicio($id_servicio);
     if (is_string($validar)) {
         Logger::error($validar);
         throw new InvalidDataException($validar);
     }
     //Si el servicio forma parte de algun paquete activo no puede ser eliminado
     $servicios_paquete = OrdenDeServicioPaqueteDAO::search(new OrdenDeServicioPaquete(array("id_servicio" => $id_servicio)));
     foreach ($servicios_paquete as $servicio_paquete) {
         $paquete = PaqueteDAO::getByPK($servicio_paquete->getIdServicio());
         if ($paquete->getActivo()) {
             Logger::error("No se puede borrar este servicio pues el paquete " . $paquete->getIdPaquete() . " aun lo contiene");
             throw new Exception("No se puede borrar este servicio pues el paquete " . $paquete->getIdPaquete() . " aun lo contiene");
         }
     }
     $servicio = ServicioDAO::getByPK($id_servicio);
     $servicio->setActivo(0);
     //revisar que no tenga ordenes de servicio activas
     $res = OrdenDeServicioDAO::search(new OrdenDeServicio(array("id_servicio" => $id_servicio, "activa" => 1)));
     if (sizeof($res) > 0) {
         Logger::log("Intento borrar un servicio que tiene ordenes de servicio activas... ");
         throw new BusinessLogicException("Imposible eliminar un servicio que tiene ordenes abiertas");
     }
     //Se obtienen los registros de las tablas servicio_empresa, servicio_clasificacion e impuesto_servicio
     //pues seran eliminados
     $servicios_empresa = ServicioEmpresaDAO::search(new ServicioEmpresa(array("id_servicio" => $id_servicio)));
     $servicios_clasificacion = ServicioClasificacionDAO::search(new ServicioClasificacion(array("id_servicio" => $id_servicio)));
     $impuestos_servicio = ImpuestoServicioDAO::search(new ImpuestoServicio(array("id_servicio" => $id_servicio)));
     DAO::transBegin();
     try {
         ServicioDAO::save($servicio);
         foreach ($servicios_empresa as $servicio_empresa) {
             ServicioEmpresaDAO::delete($servicio_empresa);
         }
         foreach ($servicios_clasificacion as $servicio_clasificacion) {
             ServicioClasificacionDAO::delete($servicio_clasificacion);
         }
         foreach ($impuestos_servicio as $impuesto_servicio) {
             ImpuestoServicioDAO::delete($impuesto_servicio);
         }
     } catch (Exception $e) {
         DAO::transRollback();
         Logger::error("No se ha podido descativar el servicio " . $id_servicio . " : " . $e);
         throw new Exception("No se ha podido descativar el servicio " . $id_servicio);
     }
     DAO::transEnd();
     LOgger::log("El servicio ha sido eliminado exitosamente");
 }