private static function ObtenerEmpresasParaAsignacionVenta($detalle_producto = null, $detalle_paquete = null, $detalle_orden = null) { //inicializa los arreglos base $empresas = array(); $id_empresas = array("id" => array(), "total" => array()); //bandera que indica si se recibio alguno de los 3 detalles $parametro = false; //Para todos los detalles, se recorre el detalle recibido, se validan sus datos //y se buscan las empresas que tengan ese elemento. Despues se llama al metodo //InsertarIdEmpresa que se encarga de acomodar el arreglo de empresas y su total //correspondiente if (!is_null($detalle_producto)) { $parametro = true; $producto_empresa = new ProductoEmpresa(); foreach ($detalle_producto as $d_p) { $producto_empresa->setIdProducto($d_p["id_producto"]); $productos_empresa = ProductoEmpresaDAO::search($producto_empresa); foreach ($productos_empresa as $p_e) { self::InsertarIdEmpresa($p_e, $id_empresas, $d_p["precio"] * $d_p["cantidad"]); } } } if (!is_null($detalle_paquete)) { $parametro = true; $paquete_empresa = new PaqueteEmpresa(); foreach ($detalle_paquete as $d_p) { $paquete_empresa->setIdPaquete($d_p["id_paquete"]); $paquetes_empresa = PaqueteEmpresaDAO::search($paquete_empresa); foreach ($paquetes_empresa as $p_e) { self::InsertarIdEmpresa($p_e, $id_empresas, $d_p["precio"] * $d_p["cantidad"]); } } } if (!is_null($detalle_orden)) { $parametro = true; $servicio_empresa = new ServicioEmpresa(); foreach ($detalle_orden as $orden) { $orden_de_servicio = OrdenDeServicioDAO::getByPK($orden["id_orden_de_servicio"]); $servicio_empresa->setIdServicio($orden_de_servicio->getIdServicio()); $servicios_empresa = ServicioEmpresaDAO::search($servicio_empresa); foreach ($servicios_empresa as $s_e) { self::InsertarIdEmpresa($s_e, $id_empresas, $orden["precio"]); } } } //Si no se recibio ningun detalle se arroja una excepcion if (!$parametro) { throw new Exception("No se recibio un id_producto ni un id_paquete ni un id_orden"); } return $id_empresas; }
/** * *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"); }