为prestashop 1.7中的每个订单分配订单ID而不是订单参考

时间:2018-08-15 18:05:08

标签: php symfony prestashop prestashop-1.7

我正在使用Prestashop 1.7 我添加了一个代码,该代码将生成与订单ID相匹配的Order引用,效果很好,但问题是,如果我有多个订单,两个订单将被分配相同的订单引用。 例如: 如果订单ID为118,则订单参考将为000000118,但是如果有2个订单,则订单ID将被分配为119和120,但在订单参考中,它们将被视为000000119 0000000119

这是我的代码:

public static function generateReference()
{
$last_id = Db::getInstance()->getValue('
SELECT MAX(id_order)
FROM '._DB_PREFIX_.'orders');
return str_pad((int)$last_id + 1, 9, '000000000', STR_PAD_LEFT);
}

}

2 个答案:

答案 0 :(得分:0)

要强制引用与id相同,您可以将add函数覆盖为类似以下内容,而不是覆盖generateReference:

nullable

如果您不想使用替代,则可以使用钩接到private readonly HttpClient _httpClient public MyClass(HttpClient httpClient) { _httpClient = httpClient; } public Task<T> GetMyData<T>() { try { var response = _httpClient.GetStringAsycn("https://someApiUrl"); // This is where I'm a bit stuck if(string.IsNullOrEmpty(response)) return null; // <<-- Can't return NULL! var data = JsonConvert.DeserializeObject<T>(response); return data; } catch(Exception e) { throw new Exception(e.Message); } } 的模块,该模块由objectmodel调用:

public function add($autodate = true, $null_values = true)
{
    $res = parent::add($autodate, $null_values);
    if($res){
        $this->reference = str_pad($this->id, 9, '0', STR_PAD_LEFT);
        $this->update();
    }
    return $res;
}

答案 1 :(得分:0)

轻松解决方案覆盖问题:

    <?php    
    class Order extends OrderCore
    {       
        public static function generateReference()
        {
            $last_id = Db::getInstance()->getValue(' SELECT MAX(id_order) FROM '._DB_PREFIX_.'orders'); 
            return str_pad((int)$last_id + 1, 5, '00000', STR_PAD_LEFT); 
        }
    }
?> 

最后,您应该删除class_index.php中的/var/cache/prod才能使用它。