JersyWoo > web business

Lost in the global village

Prestashop 1.6 – variabilní symbol

Leden 29th, 2015

Při platbě bankovním převodem v eshopu, potřebujeme variabilní symbol. Použití čísla objednávky umožní konkurencí poznat kolik máte objednávek, proto je vhodné generovat náhodný číselný kód. Prestashop 1.6 při platbě bankovním převodem (bankwire) generuje řetězec znaků.

Ukázka z emailu co přijde zákazníkovi:

Nezapomeňte vložit označení vaší objednávky DKKPCAKGT jako informaci o platbě pro váš bankovní převod.

 

Systém používá pro generování identifikace funkci generateReference() která se odkazuje na funkci passwdGen(). Podívejme se na ni, najdete ji v „/classes/order/Order.php“

	public static function generateReference()
	{
		return strtoupper(Tools::passwdGen(9, 'NO_NUMERIC'));
	}

 

Funkce passwdGen() má různé návratové hodnoty. Podívejme se na ni, najdete ji v „/classes/Tools.php“

public static function passwdGen($length = 8, $flag = 'ALPHANUMERIC')
	{
		switch ($flag)
		{
			case 'NUMERIC':
				$str = '0123456789';
				break;
			case 'NO_NUMERIC':
				$str = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
				break;
			default:
				$str = 'abcdefghijkmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ';
				break;
		}

		for ($i = 0, $passwd = ''; $i < $length; $i++)
			$passwd .= Tools::substr($str, mt_rand(0, Tools::strlen($str) - 1), 1);
		return $passwd;
	}

 

Funkce generateReference() má defaultně nastaveno „NO_NUMERIC“ a ta vrací pouze velká písmenka. Stačí tedy „NO_NUMERIC“ změnit na „NUMERIC“ a jako identifikace objednávky (variabilní symbol) se použije číselný kód.

Upravený kód pro generování varibilního symbolu:

	public static function generateReference()
	{
		return strtoupper(Tools::passwdGen(9, 'NUMERIC'));
	}

3 komentáře to “Prestashop 1.6 – variabilní symbol”

  1. Ivan napsal:

    Zdravim!

    Zmenu na cisla jsem provedl a nyni resim jak zamezit tomu aby order reference nezacinal jednou ci vice 0. Delku retezce jsem nastavil na 4 mista. Idealni by bylo pouze pridat pred toto cislo nejakou konstatni cislici.

    Diky za prodrobnejsi info a pomoc!

    S pozdravem,
    ivan

  2. ivan napsal:

    Zvedl jsem to na 8 a nuly uz se neobjevuji a vse OK.

  3. Honza napsal:

    Ahoj,
    měl bych dotaz. Postupoval jsem podle návodu a změnit číslo objednávky dle postupu.

    Nyní bych potřeboval, aby variabilní symbol byl stejný jako číslo objednávky a nebylo to náhodně vygenerované číslo. Lze to?

    Díky za radu. h

Leave a Reply