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')); }
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
Zvedl jsem to na 8 a nuly uz se neobjevuji a vse OK.
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