Pesquisei e também não achei, caso saiba o básico de programação TALVEZ dê certo a instrução abaixo.
Crie uma tabela em seu banco de dados.
Código: Selecionar todos/* Cria tabela */
CREATE TABLE `oc_compras_do_cliente` (
`product_id` INT(11) NOT NULL,
`customer_id` INT(11) NOT NULL
) ENGINE=MyISAM;
Abra o arquivo
https://github.com/opencart/opencart/bl ... r.php#L255 e na linha em amarelo adicione o código abaixo.
Código: Selecionar todos/**
* Verifica se o cliente já efetuou a compra de um determinado produto
* Atenção! Substituir `oc_product_description` conforme seu banco de dados.
*
* @author Valdeir Psr <valdeir.naval@gmail.com>
*
* @param Int $product_id Id do produto
* @param Int $customer_id Id do cliente
*
* @return Array Retorna um array com dados customer_id, product_id e o nome do produto
* Caso o cliente ainda não tenha efetuado a compra do produto, retorna um array vazio.
*/
public function verificaSeOClienteJaComprou($product_id, $customer_id)
{
$result = $this->db->query("SELECT cc.*, pd.name AS `product_name` FROM `oc_compras_do_cliente` cc LEFT JOIN `oc_product_description` pd ON (cc.product_id = pd.product_id) WHERE `customer_id` = '".(int)$customer_id."' AND `product_id` = '".(int)$product_id."' AND pd.language_id = '".(int)$this->config->get("config_language_id")."';");
return $result->row;
}
Abra o arquivo
https://github.com/opencart/opencart/bl ... out.php#L8 e na linha em amarelo adicione o código abaixo
Código: Selecionar todosif ($this->customer->isLogged()) {
$this->load->model("checkout/order");
foreach($this->cart->getProducts() as $product) {
$result = $this->model_checkout_order->verificaSeOClienteJaComprou($product['product_id'], $this->customer->getId());
if (! empty($result)) {
$this->session->data["warning"] = sprintf("Atenção! Não é possível comprar o produto %s mais de uma vez.", $result["product_name"]);
$this->response->redirect($this->url->link('checkout/cart'));
}
}
}
Adicione o mesmo código do passo anterior nos arquivo (e local indicado):
https://github.com/opencart/opencart/bl ... n.php#L126
https://github.com/opencart/opencart/bl ... irm.php#L5
* Leia os códigos
Claro que dá para melhorar, mas primeiro vamos ver se realmente vai funcionar.