Inheritance: extends AppModel
 /**
  * @param ProductOptionValue|string $value
  */
 public function setValue($value)
 {
     if ($value instanceof ProductOptionValue) {
         $productOptionValue = $this->value->getByOptionValueId($value->getOptionValue()->getId());
         if (!is_null($productOptionValue)) {
             $this->value->detach($productOptionValue);
         }
         $this->value->attach($value);
     } else {
         $this->value = $value;
     }
 }
 public function loadModel($id)
 {
     $model = ProductOptionValue::model()->findByPk($id);
     if ($model === null) {
         throw new CHttpException(404, 'The requested page does not exist.');
     }
     return $model;
 }
Esempio n. 3
0
 public function loadProductOption($id)
 {
     $_productoption = array();
     $data = ProductOption::model()->findAll('product_id=:product_id', array(':product_id' => $id));
     if (!empty($data)) {
         foreach ($data as $productoption) {
             $value = ProductOptionValue::model()->findAll('product_option_id=:product_option_id', array(':product_option_id' => $productoption->id));
             $_productoption[] = array($productoption, $value);
         }
     }
     return $_productoption;
 }
Esempio n. 4
0
<?php

$this->breadcrumbs = array('Product Attributes' => array('index'), 'Manage');
$this->menu = array(array('label' => 'List ProductAttribute', 'url' => array('index')), array('label' => 'Create ProductAttribute', 'url' => array('create')));
?>

<h1>Manage Product Attributes</h1>
<div>
<?php 
echo CHtml::link('Add Product Attribute', array('ProductAttribute/create'));
?>
 |
<?php 
echo CHtml::link('Manage Product Option', array('ProductOption/admin'));
?>
 |
<?php 
echo CHtml::link('Manage Option Value', array('ProductOptionValue/admin'));
?>
</div>

<?php 
$this->widget('zii.widgets.grid.CGridView', array('id' => 'product-attribute-grid', 'dataProvider' => $model->search(), 'filter' => $model, 'summaryText' => '', 'pager' => array('header' => '', 'firstPageLabel' => '| <', 'lastPageLabel' => '> |', 'nextPageLabel' => '>', 'prevPageLabel' => '<'), 'columns' => array('product_attribute_id', array('name' => 'product_id', 'type' => 'html', 'value' => '$data->product->product_name', 'sortable' => TRUE, 'filter' => CHtml::listData(Product::model()->findAll(), 'product_id', 'product_name')), array('name' => 'product_option_id', 'type' => 'html', 'value' => '$data->productOption->product_option_name', 'sortable' => TRUE, 'filter' => CHtml::listData(ProductOption::model()->findAll(), 'product_option_id', 'product_option_name')), array('name' => 'option_value_id', 'type' => 'html', 'value' => '$data->productOptionValue->product_option_value_name', 'sortable' => TRUE, 'filter' => CHtml::listData(ProductOptionValue::model()->findAll(), 'product_option_value_id', 'product_option_value_name')), 'option_value_price', array('class' => 'CButtonColumn', 'template' => '{update}&nbsp;&nbsp;{delete}'))));
Esempio n. 5
0
 public function afterDelete()
 {
     // delete dependencies
     ProductAttribute::model()->deleteAll("product_id={$this->cacheId}");
     ProductDescription::model()->deleteAll("product_id={$this->cacheId}");
     ProductDiscount::model()->deleteAll("product_id={$this->cacheId}");
     ProductFilter::model()->deleteAll("product_id={$this->cacheId}");
     ProductImage::model()->deleteAll("product_id={$this->cacheId}");
     ProductOption::model()->deleteAll("product_id={$this->cacheId}");
     ProductOptionValue::model()->deleteAll("product_id={$this->cacheId}");
     ProductRelated::model()->deleteAll("product_id={$this->cacheId}");
     ProductRelated::model()->deleteAll("related_id={$this->cacheId}");
     ProductReward::model()->deleteAll("product_id={$this->cacheId}");
     ProductSpecial::model()->deleteAll("product_id={$this->cacheId}");
     ProductToCategory::model()->deleteAll("product_id={$this->cacheId}");
     ProductToDownload::model()->deleteAll("product_id={$this->cacheId}");
     ProductToLayout::model()->deleteAll("product_id={$this->cacheId}");
     ProductToStore::model()->deleteAll("product_id={$this->cacheId}");
     Review::model()->deleteAll("product_id={$this->cacheId}");
     UrlAlias::model()->deleteAll("query='product_id={$this->cacheId}'");
     parent::afterDelete();
 }
Esempio n. 6
0
echo $form->labelEx($model, 'product_option_id');
?>
		<?php 
echo $form->dropDownList($model, 'product_option_id', CHtml::listData(ProductOption::model()->findAll(), 'product_option_id', 'product_option_name'), array('empty' => '--please select--'));
?>
		<?php 
echo $form->error($model, 'product_option_id');
?>
	</div>
        
        <div class="row">
		<?php 
echo $form->labelEx($model, 'option_value_id');
?>
		<?php 
echo $form->dropDownList($model, 'option_value_id', CHtml::listData(ProductOptionValue::model()->findAll(), 'product_option_value_id', 'product_option_value_name'), array('empty' => '--please select--'));
?>
		<?php 
echo $form->error($model, 'option_value_id');
?>
	</div>

	<div class="row">
		<?php 
echo $form->labelEx($model, 'option_value_price');
?>
		<?php 
echo $form->textField($model, 'option_value_price');
?>
		<?php 
echo $form->error($model, 'option_value_price');
Esempio n. 7
0
<?php

$this->breadcrumbs = array('Product Option Value To Product Options' => array('index'), 'Manage');
$this->menu = array(array('label' => 'List ProductOptionValueToProductOption', 'url' => array('index')), array('label' => 'Create ProductOptionValueToProductOption', 'url' => array('create')));
$this->title = 'Manage Product Option Value To Product Options';
?>

<!-- <h1>Manage Product Option Value To Product Options</h1> -->

<?php 
$this->widget('zii.widgets.grid.CGridView', array('id' => 'product-option-value-to-product-option-grid', 'dataProvider' => $model->search(), 'filter' => $model, 'columns' => array('product_option_value_to_product_option_id', array('name' => 'product_option_id', 'type' => 'html', 'value' => '$data->productOption->product_option_name', 'sortable' => TRUE, 'filter' => CHtml::listData(ProductOption::model()->findAll(), 'product_option_id', 'product_option_name')), array('name' => 'product_option_value_id', 'type' => 'html', 'value' => '$data->productOptionValue->product_option_value_name', 'sortable' => TRUE, 'filter' => CHtml::listData(ProductOptionValue::model()->findAll(), 'product_option_value_id', 'product_option_value_name')), array('class' => 'CButtonColumn', 'template' => '{update}&nbsp;&nbsp;{delete}'))));
Esempio n. 8
0
 public function addProductOption($id, $q, &$price, &$stock)
 {
     $valid = true;
     $validReal = true;
     $orderoptions = $optionids = array();
     if (!empty($_POST['OrderOption'])) {
         foreach ($_POST['OrderOption'] as $option) {
             if (isset($option['product_option_value_id']) && is_array($option['product_option_value_id'])) {
                 foreach ($option['product_option_value_id'] as $value_id) {
                     $orderoption = new OrderOption();
                     $orderoption->attributes = $option;
                     $orderoption->product_option_value_id = $value_id;
                     $pvalue = ProductOptionValue::model()->findByPk($value_id);
                     if (!empty($pvalue)) {
                         if ($pvalue->quantity < $q) {
                             Yii::app()->user->setFlash(TbHtml::ALERT_COLOR_ERROR, 'The option you selected is out of stock');
                             return false;
                         }
                         $stock = $pvalue->quantity;
                         if ($pvalue->subtract) {
                             $price -= $pvalue->price;
                         } else {
                             $price += $pvalue->price;
                         }
                     }
                     $valid = $valid && $this->validateProductOption($orderoption);
                     $orderoptions[] = $orderoption;
                     $optionids[] = $orderoption->product_option_id;
                 }
             } else {
                 $orderoption = new OrderOption();
                 $orderoption->attributes = $option;
                 if (isset($option['product_option_value_id'])) {
                     $pvalue = ProductOptionValue::model()->findByPk($option['product_option_value_id']);
                     if (!empty($pvalue)) {
                         if ($pvalue->quantity < $q) {
                             Yii::app()->user->setFlash(TbHtml::ALERT_COLOR_ERROR, 'The option you selected is out of stock');
                             return false;
                         }
                         $stock = $pvalue->quantity;
                         if ($pvalue->subtract) {
                             $price -= $pvalue->price;
                         } else {
                             $price += $pvalue->price;
                         }
                     }
                 }
                 $valid = $valid && $this->validateProductOption($orderoption);
                 $orderoptions[] = $orderoption;
                 $optionids[] = $orderoption->product_option_id;
             }
         }
     }
     $chkoptions = $this->loadProductOption($id);
     if (!empty($chkoptions)) {
         foreach ($chkoptions as $realoption) {
             if ($realoption[0]->required && !in_array($realoption[0]->id, $optionids)) {
                 $validReal = false;
                 break;
             }
         }
     }
     /*Yii::log( "OrderCreateActionaappP: ".$validReal.' - '.$valid.'---',
     			CLogger::LEVEL_ERROR, "order.actions.create" 
     		);*/
     /*Yii::log( "OrderCreateActionaappP: ".CVarDumper::dumpAsString($optionids).'---'.$validReal.' - '.$valid.'---',
     			CLogger::LEVEL_ERROR, "order.actions.create" 
     		);*/
     $this->_orderoption = $orderoptions;
     return $valid && $validReal;
 }
Esempio n. 9
0
 public static function subtractOrder($id)
 {
     $porders = OrderProduct::model()->findAll('order_id=:id', array(':id' => $id));
     if (!empty($porders)) {
         foreach ($porders as $porder) {
             $option = OrderOption::model()->find('order_id=' . $id . ' AND order_product_id=' . $porder->id);
             if (!empty($option)) {
                 $pvalue = ProductOptionValue::model()->findByPk($option->product_option_value_id);
                 if (!empty($pvalue)) {
                     $pvalue->quantity -= $porder->quantity;
                     $pvalue->save();
                 }
             } else {
                 $pvalue = Product::model()->findByPk($porder->product_id);
                 if (!empty($pvalue)) {
                     $pvalue->quantity -= $porder->quantity;
                     $pvalue->save();
                 }
             }
         }
     }
 }
Esempio n. 10
0
 public function validateProductOption()
 {
     if (isset($_POST['ProductOption'])) {
         $valid = true;
         $this->_productoption = array();
         /*Yii::log( "ProductCreateAction: ".CVarDumper::dumpAsString( $_POST['ProductOption'] ),
         			CLogger::LEVEL_ERROR, "product.actions.create" 
         		);*/
         foreach ($_POST['ProductOption'] as $i => $item) {
             if (isset($_POST['ProductOption'][$i])) {
                 $option = new ProductOption();
                 $option->product_id = 0;
                 if (isset($_POST['ProductOption'][$i]['option_id'])) {
                     $option->option_id = $_POST['ProductOption'][$i]['option_id'];
                 }
                 if (isset($_POST['ProductOption'][$i]['option_value'])) {
                     $option->option_value = $_POST['ProductOption'][$i]['option_value'];
                 }
                 $option->required = $_POST['ProductOption'][$i]['required'];
                 $valid = $option->validate() && $valid;
                 $optionvalue = array();
                 if (isset($_POST['ProductOption'][$i]['ProductOptionValue'])) {
                     foreach ($_POST['ProductOption'][$i]['ProductOptionValue'] as $j => $item) {
                         if (isset($_POST['ProductOption'][$i]['ProductOptionValue'][$j])) {
                             $model = new ProductOptionValue();
                             $model->attributes = $_POST['ProductOption'][$i]['ProductOptionValue'][$j];
                             $model->product_option_id = 0;
                             $model->product_id = 0;
                             $model->option_id = 0;
                             $valid = $model->validate() && $valid;
                             $optionvalue[] = $model;
                         }
                     }
                 }
                 $this->_productoption[] = array($option, $optionvalue);
             }
         }
         if (!$valid) {
             return false;
         }
     }
     return true;
 }