Fórum OpenCart Brasil

Por um e-commerce livre, confiável e profissional

Suporte geral sobre problemas técnicos para OpenCart v1.x.
#46544
Pessoal.

No meu Opencart utilizo uma extensão que gera números de série aleatórios para cada produto adquirido. O número é composto pelo número do pedido mais 6 caracteres randômicos, gerados utilizando uma query para pegar o número do pedido mais o comando RAND do PHP.

Isto funcionou perfeitamente bem por semanas, mas de repente sem nenhuma alteração no ambiente isto parou de funcionar, e o número gerado travou. O sistema começou a gerar sempre o mesmo número para todos os pedidos, como se a consulta retornasse sempre o mesmo pedido e o randômico gerasse sempre o mesmo número.

A parte do código que faz isso segue abaixo. Alguém tem ideia do que pode ser?



</operation>

<operation>
<search position="before" offset="1"><![CDATA[foreach ($product['download'] as $download)]]></search>
<add><![CDATA[$product_serial_query = $this->db->query("SELECT serial FROM " . DB_PREFIX . "product WHERE product_id = '" . $product['product_id'] . "'");
$product_serialn_query = $this->db->query("SELECT serialn FROM " . DB_PREFIX . "product WHERE product_id = '" . $product['product_id'] . "'");
$product_decription2_query = $this->db->query("SELECT description2 FROM " . DB_PREFIX . "product WHERE product_id = '" . $product['product_id'] . "'");
$optionname = implode($option_data1);

if ($product_serial_query->row['serial']) {
if(!empty($product['option'])){
for ($i = 0; $i < (int)$product['quantity']; $i++) {
$serial = $order_id . rand(100000, 999990);
$this->db->query("INSERT INTO " . DB_PREFIX . "order_serial SET order_id = '" . (int)$order_id . "', order_product_id = '" . (int)$order_product_id . "', name = '" . $this->db->escape($product['name']) . "', model = '" . $this->db->escape($product['model']) . "', serial_name = '" . $product_serialn_query->row['serialn']. "', description2 = '" . $product_decription2_query->row['description2']."', product_serial = '" . (int)$serial . "', option_name = '" . $optionname . "', firstname = '" . $this->db->escape($data['firstname']) . "', lastname = '" . $this->db->escape($data['payment_lastname']) . "', email = '" . $this->db->escape($data['email']) . "', telephone = '" . $this->db->escape($data['telephone']) . "', date = now()");
} } else {
for ($i = 0; $i < (int)$product['quantity']; $i++) {
$serial = $order_id . rand(100000, 999990);
$this->db->query("INSERT INTO " . DB_PREFIX . "order_serial SET order_id = '" . (int)$order_id . "', order_product_id = '" . (int)$order_product_id . "', name = '" . $this->db->escape($product['name']) . "', model = '" . $this->db->escape($product['model']) . "', serial_name = '" . $product_serialn_query->row['serialn']. "', description2 = '" . $product_decription2_query->row['description2']. "', product_serial = '" . (int)$serial . "', firstname = '" . $this->db->escape($data['firstname']) . "', lastname = '" . $this->db->escape($data['payment_lastname']) . "', email = '" . $this->db->escape($data['email']) . "', telephone = '" . $this->db->escape($data['telephone']) . "', date = now()");
} }
}]]></add>
</operation>