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; }
/** * *Muestra los productos y/o servicios englobados en este paquete as? como las sucursales y las empresas donde lo ofrecen * * @param id_paquete int Id del paquete a visualizar sus detalles * @return detalle_paquete json Informacion del detalle del paquete **/ public static function Detalle($id_paquete) { Logger::log("consiguiendo los detalles del paquete"); //valida que el paquete exista $paquete = PaqueteDAO::getByPK($id_paquete); if (is_null($paquete)) { Logger::error("El paquete " . $id_paquete . " no existe"); throw new Exception("El paquete " . $id_paquete . " no existe"); } //En el primer campo de un arreglo se almacena el paquete en sí, en el segundo las empresas en las que esta disponible el paquete, //en el tercero las sucursales en las que esta disponible, en el cuarto los productos que contiene y en el quinto los servicios $detalle_paquete = array(); array_push($detalle_paquete, $paquete); $empresas = array(); $paquetes_empresa = PaqueteEmpresaDAO::search(new PaqueteEmpresa(array("id_paquete" => $id_paquete))); foreach ($paquetes_empresa as $paquete_empresa) { array_push($empresas, EmpresaDAO::getByPK($paquete_empresa->getIdEmpresa())); } array_push($detalle_paquete, $empresas); $sucursales = array(); $paquetes_sucursal = PaqueteSucursalDAO::search(new PaqueteSucursal(array("id_paquete" => $id_paquete))); foreach ($paquetes_sucursal as $paquete_sucursal) { array_push($sucursales, SucursalDAO::getByPK($paquete_sucursal->getIdSucursal())); } array_push($detalle_paquete, $sucursales); $productos = array(); $productos_paquete = ProductoPaqueteDAO::search(new ProductoPaquete(array("id_paquete" => $id_paquete))); foreach ($productos_paquete as $producto_paquete) { array_push($productos, ProductoDAO::getByPK($producto_paquete->getIdProducto())); } array_push($detalle_paquete, $productos); $servicios = array(); $servicios_paquete = OrdenDeServicioPaqueteDAO::search(new OrdenDeServicioPaquete(array("id_paquete" => $id_paquete))); foreach ($servicios_paquete as $servicio_paquete) { array_push($servicios, ServicioDAO::getByPK($servicio_paquete->getIdServicio())); } array_push($detalle_paquete, $servicios); Logger::log("Detalle de paquete " . $id_paquete . " conseguido exitosamente con " . count($empresas) . "\n empresas, " . count($sucursales) . " sucursales, " . count($productos) . " productos y " . count($servicios) . " servicios"); return $detalle_paquete; }