Example #1
0
 /**
  * Shows a bug with opportunity as a product relation. The bug is when there is a default customField value
  * The fix is the use of isReallyModified() to now determine if during save() if the model has really been modified
  * If it is a new model, then for example 'name' must not be empty, otherwise it is has not really been modified
  */
 public function testEmptyOpportunityGetsCreatedOnProductEdit()
 {
     $super = User::getByUsername('super');
     Yii::app()->user->userModel = $super;
     $name = 'Amazing Kid Sample';
     $productTemplateName = ProductsDemoDataMaker::getProductTemplateForProduct($name);
     $productTemplate = ProductTemplateTestHelper::createProductTemplateByName($productTemplateName);
     $model = new Product();
     $name = 'My Simple Product';
     $model->name = $name;
     $model->quantity = 4;
     $model->stage->value = 'Open';
     $model->priceFrequency = $productTemplate->priceFrequency;
     $model->sellPrice->value = $productTemplate->sellPrice->value;
     $model->type = $productTemplate->type;
     $postData = array();
     $postData['opportunity'] = array('id' => '');
     $model->setAttributes($postData);
     $model->validate();
     $sanitizedOwnerData = array('owner' => array('id' => $super->id));
     $model->setAttributes($sanitizedOwnerData);
     $model->validate(array('owner'));
     $this->assertTrue($model->opportunity->id < 0);
     //need to check this to call get first.
     $this->assertTrue($model->save(false));
     $this->assertTrue($model->save(false));
     $this->assertTrue($model->opportunity->id < 0);
     $model->delete();
     $productTemplate->delete();
 }
Example #2
0
 public function actionAdmin()
 {
     $model = new Product('search');
     $model->unsetAttributes();
     if (isset($_GET['Product'])) {
         $model->setAttributes($_GET['Product']);
     }
     $this->render('admin', array('model' => $model));
 }
 public function actionCreate()
 {
     $model = new Product();
     $description = new ProductDescription();
     $image = new XUploadForm();
     $userImages = array();
     $thumbs = array();
     if (!isset($_POST[$this->modelName])) {
         Yii::app()->user->setState('product_images', NULL);
         Yii::app()->user->setState('thumbs', NULL);
     }
     //$product_option_value = new ProductOptionValue;
     $this->performAjaxValidation(array($model, $description), 'product-form');
     if (isset($_POST[$this->modelName])) {
         $model->setAttributes($_POST[$this->modelName]);
         $description->setAttributes($_POST[$this->modelName . 'Description']);
         $suc = Yii::t('info', 'Product was successfully created');
         $err = Yii::t('info', 'Could not create Product');
         $description->product_id = 0;
         $description->locale_code = Yii::app()->getLanguage();
         //$description->link = str_replace(' ','-',trim(strtolower(str_replace('_','-',preg_replace('/(?<![A-Z])[A-Z]/', '\0', $description->name)))));
         $description->link = strtolower(str_replace(' ', '-', preg_replace('!\\s+!', ' ', trim(preg_replace("/[^A-Za-z ]/", ' ', $description->name)))));
         $userImages = Yii::app()->user->getState('product_images');
         $thumbs = Yii::app()->user->getState('thumbs');
         if (Yii::app()->user->hasState('thumbs')) {
             if ($this->validateProduct($model, $description)) {
                 if ($model->save()) {
                     $description->product_id = $model->id;
                     $description->save();
                     $this->addImages($model->id, 'Image', 'thumbs', 'Product');
                     $tpath = realpath(UtilityHelper::yiiparam('frontPath') . '/www' . $model->thumbs[0]->source);
                     $timage = Yii::app()->image->load($tpath);
                     $timage->resize(200, 200);
                     $timage->save();
                     $this->productSave($model);
                     Yii::app()->user->setFlash(TbHtml::ALERT_COLOR_SUCCESS, $suc);
                     if (Yii::app()->getRequest()->getIsAjaxRequest()) {
                         $this->renderPartial('_view', array('model' => $model, 'description' => $description, 'option' => $this->_productoption, 'attribute' => $this->_productattribute), false, true);
                         Yii::app()->end();
                     } else {
                         $this->redirect(array('view', 'id' => $model->id));
                     }
                 } else {
                     Yii::app()->user->setFlash(TbHtml::ALERT_COLOR_ERROR, $err);
                 }
             }
         } else {
             Yii::app()->user->setFlash(TbHtml::ALERT_COLOR_ERROR, Yii::t('info', 'Please upload an image'));
         }
     }
     if (Yii::app()->getRequest()->getIsAjaxRequest()) {
         $this->renderPartial('_form_product', array('model' => $model, 'description' => $description, 'option' => $this->_productoption, 'attribute' => $this->_productattribute, 'thumbs' => $thumbs, 'image' => $image, 'userImages' => $userImages, 'discount' => $this->_productdiscount, 'special' => $this->_productspecial), false, true);
         Yii::app()->end();
     }
     $this->render('create', array('model' => $model, 'description' => $description, 'option' => $this->_productoption, 'attribute' => $this->_productattribute, 'thumbs' => $thumbs, 'image' => $image, 'userImages' => $userImages, 'discount' => $this->_productdiscount, 'special' => $this->_productspecial));
 }
Example #4
0
 /**
  * 添加商品
  */
 public function actionAddProduct()
 {
     $this->pageTitle = "添加商品";
     $product = new Product();
     if (isset($_POST) && isset($_POST['Product'])) {
         $_POST['Product']['product_user_id'] = Yii::app()->user->getId();
         $product->setAttributes($_POST['Product']);
         if ($product->validate() && $product->save()) {
             $this->redirect(Yii::app()->createUrl('/wechat/product/changePro/id/' . $product->product_id));
             Yii::app()->end();
         }
     }
     $this->render('product_add', array("product" => $product));
 }
 /**
  * Управление товарами.
  */
 public function actionIndex()
 {
     $model = new Product('search');
     $model->unsetAttributes();
     if (Yii::app()->getRequest()->getQuery('Product')) {
         $model->setAttributes(Yii::app()->getRequest()->getQuery('Product'));
     }
     $this->render('index', ['model' => $model]);
 }
Example #6
0
 /**
  * @return null|Product
  * @throws CDbException
  */
 public function copy()
 {
     $transaction = Yii::app()->getDb()->beginTransaction();
     $model = new Product();
     try {
         $model->setAttributes($this->getAttributes());
         $model->slug = null;
         $similarNamesCount = Yii::app()->getDb()->createCommand()->select('count(*)')->from($this->tableName())->where("name like :name", [':name' => $this->name . ' [%]'])->queryScalar();
         $model->name = $this->name . ' [' . ($similarNamesCount + 1) . ']';
         $attributes = $model->attributes;
         $typeAttributes = $this->getEavAttributes();
         $variantAttributes = [];
         $categoriesIds = [];
         if ($variants = $this->variants) {
             foreach ($variants as $variant) {
                 $variantAttributes[] = $variant->getAttributes(['attribute_id', 'attribute_value', 'amount', 'type', 'sku']);
             }
         }
         if ($categories = $this->categories) {
             foreach ($categories as $category) {
                 $categoriesIds[] = $category->id;
             }
         }
         if (!$model->saveData($attributes, $typeAttributes, $variantAttributes, $categoriesIds)) {
             throw new CDbException('Error copy product!');
         }
         $transaction->commit();
         return $model;
     } catch (Exception $e) {
         $transaction->rollback();
     }
     return null;
 }
Example #7
0
    echo Yii::app()->createUrl('/wechat/product/addProduct');
    ?>
" class="btn btn-qys btn-danger btn-block">添加商品</a>
        </div>
    <?php 
}
?>
    <div class="col-lg-12 qys_col_12" style="margin-top:25px;">
        <div class="panel panel-default">
            <div class="panel-body">
                <?php 
#获得所有用户的商品
$produtlists = Product::model()->findAll("1=1 order by product_id desc limit 20;");
$product = new Product();
foreach ($produtlists as $key => $value) {
    $product->setAttributes($value->getAttributes());
    if ($key % 2 == 0) {
        ?>
                        <div class="row qys_product_row_list">
                        <?php 
    }
    ?>

                        <div class="col-lg-6 col-md-6 col-sm-6 col-xs-6">
                            <div><img class="img-rounded" style="width:100%;" src="<?php 
    echo $product->product_s_img;
    ?>
"/></div>
                            <div>
                                <h5><?php 
    echo $product->product_name;
Example #8
0
$outputDir = __DIR__ . '/output/';
$templator = new Templator($templateFile, $outputDir, 'document.xlsx');
$settingsData = ['providerName' => 'ИП Сумкин Ф.Ф.', 'clientName' => 'ООО "Рога и копыта"', 'docNumber' => 5485, 'docDate' => date('d.m.Y'), 'totalProductAmount' => 4, 'totalProductSum' => function () {
    return 1500 + 400 + 100;
}];
$settings = new Settings($settingsData);
$map = ['productName', 'productArticle', 'productUnit', 'productAmount', 'productPrice', 'productSum'];
$source = [['Стол письменный', 'СП-234', 'шт.', 1, 1500, 1500], ['Чернильница', '75332', 'шт.', 2, 200, 400], ['Лампа настольная 12Вт', '6454', 'шт.', 1, 100, 100]];
$loopData = new LoopData();
$loopData->setMap($map);
$loopData->setSource($source);
$settings->addLoop(1, $loopData);
$templator->render($settings);
$templator->save();
// -------------------------------------------------------
// Source as an array of objects
// -------------------------------------------------------
$templator = new Templator($templateFile, $outputDir, 'document2.xlsx');
$loopData = new LoopData();
$loopData->setMap($map);
$sourceArrayOfObjects = [];
foreach ($source as $sourceItem) {
    $product = new Product();
    $product->setAttributes($sourceItem);
    $sourceArrayOfObjects[] = $product;
}
$loopData->setSource($sourceArrayOfObjects);
$settings = new Settings($settingsData);
$settings->addLoop(1, $loopData);
$templator->render($settings);
$templator->save();