Вводная.
1. У поставщика более широкий номенклатурный ряд.
2. Отгрузка от него товара возможна только упаковками (не поштучно).
3. Необходимо дать пользователю представление о возможном выборе, но не продать товар, которого нет на складе (или необходимо ждать поставки 2 недели или для продажи одной штуки придется купить упаковку на 50 штук.
4. Остальные позиции покупаются у поставщика упаковками, а продаются в розницу.
Для отслеживания подобной ситуации необходимо либо расширенное управление запасами, либо контроль количества товара на складе. Изначально цель хранить остатки в магазине не стояла (во-первых, опасно; во-вторых, есть конкуренты, любящие делать заказы на 99 штук; в-третьих, это не программа для складского и товарного учета). И для позиций, которых нет на моем складе, но есть у поставщика и привозятся раз в год и под заказ, артикулы не предусмотрены (каждый раз разные - особенности таможенного законодательства). Поэтому, если своего артикула у позиции нет, то движок просто подставляет артикул родителя. В принципе, нормально, только продавать его я не хочу. Если очень надо - клиент сам позвонит (могу себе позволить - импортер). Все равно условия и сроки будут оговариваться индивидуально.
Для того, чтобы спрятать кнопку "купить", я просто в \themes\default\js\product.js внес небольшие правки:
function findCombination(firstTime)
...
if (combinationMatchForm) {
...
//leave the function because combination has been found
refreshProductImages(combinations[combination]['idCombination']);
if (!selectedCombination['reference'])
selectedCombination['unavailable'] = true;