Tuotteiden varastosaldojen täsmäytys maahantuojan hinnastosta

Tekniset tiedotKoodausohjeet › Tuotteiden varastosaldojen täsmäytys maahantuojan hinnastosta

Hinnaston lataaminen

Maahantuojan hinnaston lataaminen omalle palvelimelle onnistuu koodaamalla yksinkertainen latausohjelma. Alla olevat latausohjelma on ohjelmoitu PHP-ohjelmointikielellä ja sen nimi on oma_latausohjelma.php. Se voi olla ohjelmoitu yhtä hyvin millä tahansa ohjelmointikielellä. Latausohjelma kannattaa sijoittaa verkkokaupan hallintaliittymän kansioon, joka on valmiiksi salasanasuojattu. Tiedostojen nimissä näkyvät salasanat lisäävät yhden turvallisuuskerroksen lisää.

Latausohjelma (http-esimerkki)

<?php

$handle = @fopen ("http://www.example.com/tukkuhinnasto_Nbs8673hZEd2S.csv", "r");

if ($handle) {

    while (!feof ($handle)) $tiedoston_sisalto .= fread ($handle, 8192);
    fclose ($handle);

    $fp = fopen ("tukkuhinnasto_Nbe7GkGLkjwdH.csv", "w");
    fwrite ($fp, $tiedoston_sisalto);
    fclose ($fp);

}

echo "Hinnasto ladattu.";

?>

Latausohjelma (https-esimerkki)

<?php

$handle = @fopen ("https://www.example.com/tukkuhinnasto_Nbs8673hZEd2S.csv", "r");

if ($handle) {

    while (!feof ($handle)) $tiedoston_sisalto .= fread ($handle, 8192);
    fclose ($handle);

    $fp = fopen ("tukkuhinnasto_Nbe7GkGLkjwdH.csv", "w"); // Vaihda
    fwrite ($fp, $tiedoston_sisalto);
    fclose ($fp);

}

echo "Hinnasto ladattu.";

?>

Latausohjelma (ftp-esimerkki)

<?php

$handle = @fopen ("ftp://username:password@ftp.example.com/tukkuhinnasto_Nbs8673hZEd2S.csv", "r");

if ($handle) {

    while (!feof ($handle)) $tiedoston_sisalto .= fread ($handle, 8192);
    fclose ($handle);

    $fp = fopen ("tukkuhinnasto_Nbe7GkGLkjwdH.csv", "w");
    fwrite ($fp, $tiedoston_sisalto);
    fclose ($fp);

}

echo "Hinnasto ladattu.";

?>

Varastosaldojen täsmäytys

Varastosaldojen täsmäytysohjelman ohjelmointi on haastavaa. Ensin on suunniteltava, miten ohjelma toimii.

  • Mitä tietoa käytetään yhdistävänä tekijänä? Valmistajan tuotekoodia?
  • Onko yhdistävän tekijän kirjainkoolla merkitystä?
  • Luetaanko maahantuojan hinnasto rivi-riviltä ja verrataan verkkokaupan tuotteisiin? Vai päinvastoin?
  • Annetaanko varastosaldon joustaa negatiiviselle puolelle vai deaktivoidaanko tuote?
  • Miten käsitellään tilanteet, joissa tuotekoodia ei löydy?
  • Jos tuote on deaktivoitu, otetaanko se uudelleen esiin, jos varastosaldo on positiivinen?

Alla olevat täsmäytysohjelma on ohjelmoitu PHP-ohjelmointikielellä ja sen nimi on oma_tasmaytysohjelma.php. Se voi olla ohjelmoitu yhtä hyvin millä tahansa ohjelmointikielellä. Ohjelma lukee maahantuojan hinnaston rivi-riviltä, etsii verkkokaupan tietokannasta vastaavan tuotteen ja päivittää varastosaldon, mutta ei tee mitään muuta.

<?php

// Säädetään muistin määrää ja aikakatkaisua varmuuden vuoksi

ini_set ("memory_limit", "512M");
ini_set ("max_execution_time", "600");


// Avataan MySQL-yhteys

$mysql_link = @mysqli_connect ("mysql.example.com", "expluser", "explpass", "expldatabase"); // MySQL-tietokannan tunnukset

if (!$mysql_link) {
	echo "Tietokantayhteys ei toimi, MySQL-virhe: ". mysqli_connect_error();
	exit;
}

if (version_compare (PHP_VERSION, "5.2.3", ">=")) {
	mysqli_set_charset ($mysql_link, "utf8");
} else {
	mysqli_query ($mysql_link, "SET NAMES 'utf8'");
}



// Luetaan tukkuhinnasto

$filename = "tukkuhinnasto_Nbe7GkGLkjwdH.csv";

if (file_exists ($filename)) {

	$filearray = file ($filename);
		
	while (list ($no, $line) = each ($filearray)) {
	
		// $line = utf8_encode ($line); // Mahdollinen merkistön muutos

		$linearray = preg_split ("/;/", $line); // csv-erotinmerkki

		// Valmistajan tuotekoodi löytyy tässä esimerkissä alkiosta kolme: $linearray[2]		
		// Varastosaldo löytyy tässä esimerkissä alkiosta viisi: $linearray[4]		
		// Tuotetaulukon nimi on tässä esimerkissä: expltable
		// Valmistajan tuotekoodikentän nimi on tässä esimerkissä: explmanufacturercode
		// Tuotteen id-numerokentän (primary key) nimi on tässä esimerkissä: explproductid
		// Varastosaldon nimi on tässä esimerkissä: explquantity
		
		// Etsitään tuotetaulukosta tuote, jolla on sama valmistajan tuotekoodi
		// Jos löytyi, päivitetään varastosaldo
		
		$result = mysqli_query ($mysql_link, "SELECT explproductid FROM ". mysqli_real_escape_string ($mysql_link, "expltable") ." WHERE explmanufacturercode='". mysqli_real_escape_string ($mysql_link, $linearray[2]) ."' LIMIT 1");
	
		if (is_object ($result) && mysqli_num_rows ($result)) {
			
			$s = mysqli_fetch_array ($result);

			mysqli_query ($mysql_link, "UPDATE ". mysqli_real_escape_string ($mysql_link, "expltable") ." SET explquantity='". mysqli_real_escape_string ($mysql_link, $linearray[4]) ."' WHERE explmanufacturercode='". mysqli_real_escape_string ($mysql_link, $s['explproductid']) ."'") or die (mysql_error());

		}
		
	}

}



echo "Varastosaldot täsmäytetty.";



// Suljetaan MySQL-yhteys

mysqli_close ($mysql_link);

?>

Varastosaldojen täsmäytys toimenpiteenä

  • Kirjaudu verkkokaupan hallintaliittymään (demo).
  • Luo tietokannasta varmuuskopio.
  • Lataa maahantuojan hinnasto.
    - Tässä esimerkissä vieraile oma_latausohjelma.php -sivulla.
  • Täsmäytä varastosaldot.
    - Tässä esimerkissä vieraile oma_tasmaytysohjelma.php -sivulla.

Vastuunrajoitus

Näillä ohjeilla ja koodiesimerkeillä ei ole minkäänlaista toimivuustakuuta. Emme vastaa välittömistä, välillisistä, satunnaisista tai epäsuorista vahingoista, menetyksistä, korvauksista, tai kolmannen osapuolen esittämistä vaatimuksista, jotka johtuvat näiden ohjeiden tai koodiesimerkkien noudattamisesta.

Scroll to Top