Example #1
0
 /**
  * Handler for Good Movement created.
  * It used to update stock
  * @param \biz\core\base\Event $event
  */
 public function goodsMovementApplied($event)
 {
     /* @var $model MGoodsMovement */
     $model = $event->params[0];
     /*
      * 300 = Transfer Release
      * 400 = Transfer Receive
      */
     if (!in_array($model->reff_type, [300, 400])) {
         return;
     }
     $type = $model->type;
     $transfer = MTransfer::findOne($model->reff_id);
     $transferDtls = ArrayHelper::index($transfer->transferDtls, 'product_id');
     // change total qty for reff document
     /* @var $transferDtl \biz\core\inventory\models\TransferDtl */
     foreach ($model->goodsMovementDtls as $detail) {
         $transferDtl = $transferDtls[$detail->product_id];
         if ($type == MGoodsMovement::TYPE_ISSUE) {
             $transferDtl->total_release += $detail->qty;
         } else {
             $transferDtl->total_receive += $detail->qty;
         }
         $transferDtl->save(false);
     }
     $complete = true;
     switch ($model->reff_type) {
         case '300':
             foreach ($transferDtls as $transferDtl) {
                 if ($transferDtl->total_release != $transferDtl->qty) {
                     $complete = false;
                     break;
                 }
             }
             $transfer->status = $complete ? MTransfer::STATUS_ISSUED : MTransfer::STATUS_PARTIAL_ISSUED;
             break;
         case '400':
             foreach ($transferDtls as $transferDtl) {
                 if ($transferDtl->total_receive != $transferDtl->qty) {
                     $complete = false;
                     break;
                 }
             }
             $transfer->status = $complete ? MTransfer::STATUS_RECEIVED : MTransfer::STATUS_PARTIAL_RECEIVED;
             break;
     }
     $transfer->save(false);
 }
Example #2
0
 /**
  * @return \yii\db\ActiveQuery
  */
 public function getTransfer()
 {
     return $this->hasOne(Transfer::className(), ['id' => 'transfer_id']);
 }
Example #3
0
 public function behaviors()
 {
     $behaviors = parent::behaviors();
     return array_merge($behaviors, [['class' => 'mdm\\converter\\DateConverter', 'attributes' => ['Date' => 'date']]]);
 }