(0) вполне, сделайте такую скидку на три штуки, чтобы получилось три по цене двух.
Например, второй товар со скидкой 50%. Или по другому два товара с общей скидкой 25%
(4) это не нужная высшая математика.
скидку надо делать: "подарок, из корзины покупателя"
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший