protected function GenerateResponse() { try { $this->response = InventarioController::Existencias(isset($_GET['id_almacen ']) ? $_GET['id_almacen '] : null, isset($_GET['id_empresa']) ? $_GET['id_empresa'] : null, isset($_GET['id_producto']) ? $_GET['id_producto'] : null, isset($_GET['id_sucursal']) ? $_GET['id_sucursal'] : null); } catch (Exception $e) { //Logger::error($e); throw new ApiException($this->error_dispatcher->invalidDatabaseOperation($e->getMessage())); } }
/** * * Buscar productos por codigo_producto, nombre_producto, descripcion_producto. * * @param query string Buscar productos por codigo_producto, nombre_producto, descripcion_producto. * @param id_producto int Si estoy buscando un producto del cual ya tengo conocido su id. Si se envia `id_producto` todos los demas campos seran ignorados. * @param id_sucursal int Buscar las existencias de este producto en una sucursal especifica. * @return resultados json * @return numero_de_resultados int **/ public static function Buscar($query, $id_producto = null, $id_sucursal = null) { if (!is_null($id_producto)) { Logger::log("Buscando producto por id_producto = {$id_producto}.... "); $p = ProductoDAO::getByPK($id_producto); if (is_null($p)) { return array("resultados" => array(), "numero_de_resultados" => 0); } return array("resultados" => array($p->asArray()), "numero_de_resultados" => 1); } //!is_null($id_producto) if (!is_null($id_sucursal)) { Logger::log("Buscando producto por id_sucursal = {$id_sucursal}.... "); $empresas = SucursalEmpresaDAO::search(new SucursalEmpresa(array("id_sucursal" => $id_sucursal))); if (empty($empresas)) { Logger::log("no results"); return array("resultados" => array(), "numero_de_resultados" => 0); } $results = array(); foreach ($empresas as $e) { Logger::log("suc {$id_sucursal} pertenece a empresa:" . $e->getIdEmpresa()); $productos_e = ProductoEmpresaDAO::search(new ProductoEmpresa(array("id_empresa" => $e->getIdEmpresa()))); foreach ($productos_e as $p_e) { $p = ProductoDAO::getByPK($p_e->getIdProducto()); if (is_null($p)) { throw new BusinessLogicException("el producto " . $p_e->getIdProducto() . " no existe"); } array_push($results, $p->asArray()); } } if (sizeof($results) == 0) { array_push($results, array("nombre_producto" => "lksadjfklaj", "descripcion" => "asdf")); } return array("numero_de_resultados" => sizeof($results), "resultados" => $results); } //if (!is_null($id_sucursal)) $productos = ProductoDAO::buscarProductos($query); $resultado = array(); foreach ($productos as $p) { $r = $p->asArray(); //una vez que tengo los productos vamos a agergarle sus //precios tarifarios $r["tarifas"] = TarifasController::_CalcularTarifa($p, "venta"); //buscar sus existencias $existencias = InventarioController::Existencias(null, null, $p->getIdProducto(), null); $r["existencias"] = $existencias["resultados"]; array_push($resultado, $r); } //$productos as $p if (strlen($query) > 0 && sizeof($resultado) == 0) { array_push($resultado, array("nombre_producto" => "El producto <i>{$query}</i> no se encuentra.", "descripcion" => "¿ Desea agregarlo ahora ?", "id_producto" => -99, "query" => $query)); } return array("resultados" => $resultado, "numero_de_resultados" => sizeof($resultado)); }