Значения дополнительных свойств для модификаций устанавливать как для товаров
<?php
defined('HOSTCMS') || exit('HostCMS: access denied.');
/**
* observer.
* @author Kozub Boris, KAD Systems (©) 2014
Core_Event::attach('Informationsystem_Item_Controller_Edit.onBeforeExecute', array('Informationsystem_Item_Controller_Observer', 'onBeforeExecute'));
*/
class Kad_Shop_Item_Observers_Propvaluemodlikeitem
{
// Добавление чекбокса окну редактирования Shop Item
static public function onBeforeExecute($object, $operation)
{
$_object = $object->getObject();
$modelName = $_object->getModelName();
if($modelName == 'shop_item')
{
if($_object->modification_id == 0)
{
$modelName = $_object->getModelName();
$oMainTab = $object->getTab('main');
$oField = Core::factory('Admin_Form_Entity_Checkbox')
->name('modproperties')
->caption("Применить дополнительные свойства для модификаций")
->checked(true)
;
$oSeparatorField = new Admin_Form_Entity_Separator();
$oMainTab->addAfter($oField, $oMainTab->getField('price'));
$oMainTab->addAfter($oSeparatorField, $oMainTab->getField('price'));
}
}
}
// Добавление доп. свойств основного товара к его модификациям если чекбокс чекнут
static public function onAfterApplyObjectProperty($object, $operation)
{
// Массив с ID доп. свойств, которые нужно добавить для модификаций товара
$aPropertiesId = array(67, 68, 154, 172);
if(Core_Array::getPost('modproperties'))
{
foreach($aPropertiesId as $propertyId)
{
//echo $propertyId . "<br/>";
$_object = $object->getObject();
$oProperty = Kad_Property::getValue($_object, $propertyId);
if($oProperty)
{
$aoMods = Core_Entity::factory('Shop_Item')->getAllByModification_Id($_object->id);
foreach($aoMods as $oMod)
{
//echo $oProperty->value . "<br/>";
$oModProperty = Kad_Property::setValue($oMod, $propertyId, $oProperty->value);
}
}
}
}
}
}