예제 #1
0
/**
 * 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">