/** * Jakaa tecdocista löytyvät tuotteet kahteen ryhmään: niihin, jotka löytyvät * valikoimasta ja niihin, jotka eivät löydy. * Lopuksi lisää liittää TecDoc-tiedot valikoiman tuotteisiin. * * @param DByhteys $db <p> Tietokantayhteys * @param array $products <p> Tuote-array, josta etsitään aktivoidut tuotteet. * @return array <p> Kolme arrayta: * [0]: saatavilla olevat tuotteet, jotka löytyvät catalogista; * [1]: ei saatavilla olevat tuotteet; * [2]: tuotteet, jotka eivät löydy catalogista */ function filter_catalog_products(DByhteys $db, array $products) { /** * Haetaan tuote tietokannasta artikkelinumeron ja brandinumeron perusteella. * @param DByhteys $db * @param stdClass $product * @return array|bool|stdClass */ function get_product_from_database(DByhteys $db, stdClass $product) { $query = "\tSELECT \t*, (hinta_ilman_alv * (1+ALV_kanta.prosentti)) AS hinta\n\t\t\t \t\tFROM \ttuote \n\t\t \t \t \tJOIN \tALV_kanta\n\t\t \t\t\t\tON\ttuote.ALV_kanta = ALV_kanta.kanta\n\t\t\t\t \tWHERE \ttuote.articleNo = ?\n\t\t\t\t\t AND tuote.brandNo = ?\n\t\t\t\t\t \t AND tuote.aktiivinen = 1 "; return $db->query($query, [str_replace(" ", "", $product->articleNo), $product->brandNo], FETCH_ALL, PDO::FETCH_OBJ); } $catalog_products = $not_available_catalog_products = $not_in_catalog = array(); $ids = $articleIds = array(); //duplikaattien tarkistusta varten //Lajitellaan tuotteet sen mukaan, löytyikö tietokannasta vai ei. foreach ($products as $product) { $row = get_product_from_database($db, $product); if (!$row && !in_array($product->articleId, $articleIds)) { $articleIds[] = $product->articleId; $product->articleName = isset($product->articleName) ? $product->articleName : $product->genericArticleName; $not_in_catalog[] = $product; } if ($row) { //Kaikki löytyneet tuotteet (eri hankintapaikat) foreach ($row as $tuote) { if (!in_array($tuote->id, $ids)) { $ids[] = $tuote->id; $tuote->articleId = $product->articleId; $tuote->articleName = isset($product->articleName) ? $product->articleName : $product->genericArticleName; $tuote->brandName = $product->brandName; if ($tuote->varastosaldo >= $tuote->minimimyyntiera && $tuote->varastosaldo != 0) { $catalog_products[] = $tuote; } else { $not_available_catalog_products[] = $tuote; } } } } } merge_products_with_optional_data($catalog_products); merge_products_with_optional_data($not_available_catalog_products); return [$catalog_products, $not_available_catalog_products, $not_in_catalog]; }
if (!in_array($product->articleId, $tecdoc_ids)) { $tecdoc_ids[] = $product->articleId; $products[] = $product; } } merge_products_with_optional_data($products); } if (!empty($_GET['manuf'])) { $haku = TRUE; // Hakutulosten tulostamista varten. Ei tarvitse joka kerta tarkistaa isset() $selectCar = $_GET["car"]; $selectPartType = $_GET["osat_alalaji"]; $articleIDs = array(); $products = array(); $articles = getArticleIdsWithState($selectCar, $selectPartType); merge_products_with_optional_data($articles); //poistetaan duplikaatit foreach ($articles as $article) { if (!in_array($article->articleNo, $articleIDs)) { $articleIDs[] = $article->articleId; $products[] = $article; } } } ?> <!DOCTYPE html> <html lang="fi"> <head> <meta charset="UTF-8"> <link rel="stylesheet" href="css/styles.css">