コード例 #1
0
ファイル: FinvInvoice.php プロジェクト: dbrisinajumi/d2finv
 public function save($runValidation = true, $attributes = NULL)
 {
     if ($this->isNewRecord) {
         parent::save($runValidation, $attributes);
     }
     $finv_id = $this->finv_id;
     //$this->unsetAttributes();
     //$this->refresh();
     $this->finv_amt = 0;
     $this->finv_total = 0;
     $this->finv_vat = 0;
     $criteria = new CDbCriteria();
     $criteria->compare('t.fiit_finv_id', $finv_id);
     $fiits = FiitInvoiceItem::model()->findAll($criteria);
     foreach ($fiits as $fiit) {
         if (empty($fiit->fiit_price) || empty($fiit->fiit_quantity)) {
             continue;
         }
         $fiit->fiit_amt = round($fiit->fiit_price * $fiit->fiit_quantity, 2);
         $fiit->fiit_vat = 0;
         if (!empty($fiit->fiit_fvat_id)) {
             $fiit->fiit_vat = round($fiit->fiit_amt * $fiit->fiitFvat->fvat_rate / 100, 2);
         }
         $fiit->fiit_total = $fiit->fiit_amt + $fiit->fiit_vat;
         try {
             // don't use $fiit->save() there it will run infinite loop
             if (!$fiit->saveWithoutRecalc()) {
                 $this->addError('fiit_id', Yii::t('D2finvModule.model', 'Can not update invoice item!'));
                 return FALSE;
             }
         } catch (Exception $e) {
             $this->addError('', $e->getMessage());
             return FALSE;
         }
         $this->finv_amt += $fiit->fiit_amt;
         $this->finv_total += $fiit->fiit_total;
         $this->finv_vat += $fiit->fiit_vat;
     }
     $this->finv_basic_amt = Yii::app()->currency->convertToBase($this->finv_amt, $this->finv_fcrn_id, $this->finv_date);
     $this->finv_basic_total = Yii::app()->currency->convertToBase($this->finv_total, $this->finv_fcrn_id, $this->finv_date);
     $this->finv_basic_vat = Yii::app()->currency->convertToBase($this->finv_vat, $this->finv_fcrn_id, $this->finv_date);
     try {
         if (!parent::save()) {
             $this->addError('finv_id', Yii::t('D2finvModule.model', 'Can not update invoice!'));
             return FALSE;
         }
     } catch (Exception $e) {
         $this->addError('finv_id', $e->getMessage());
         return FALSE;
     }
     return TRUE;
 }