Hi,
In the menu Products>Limits, you can create limits on purchases. So you can configure a limit for a product so that each users won't be able to purchase that product more than once (it won't even work with different orders). The only solution for them would be to create several user accounts.
So I think it fits your needs.
The downside though is that you need to create one limit per product. Because if you create a limit for all the products, then the users will only be able to purchase a product once and not anymore after that.
You can read more about limits here:
www.hikashop.com/support/documentation/2...limits-tutorial.html
So one solution would be to have a way to generate the limit in the hikashop_limit table each time a product is created. Supposing that Calcbuilder generates the products via the save function of class.product of HikaShop, then you can interface a mass action with an INSERT MySQL query to automatically create the entry in the hikashop_limit table. So it's quite simple, even without coding knowledge. Or maybe Calcbuilder offers some kind of PHP code execution capability where you could have it run the MySQL query for you ?
Otherwise, you could always create a plugin to interface with the add to cart process to check that the product being added to the cart by the current user is possible or not based on the previous orders of the user and if not, cancel the add to cart.
That's for example something we do in the 'cart reservation' plugin:
www.hikashop.com/marketplace/product/208...art-reservation.html
In it, we check that the products being added to the cart are not already reserved by other users in their carts and if that's the case, we cancel the add to cart with the appropriate message. So it's the same mechanism, but with another condition.
Of course, in the case of a custom plugin, you have more leeway to have it work exactly the way you want, but it requires a PHP developer to work on it...