readTransfers(); if ( count($this->transfers ) ==0 ){ \Yii::error("TransferPayout - üres lista kifizetés"); throw new Exception("Nem található kifizethető tranzakció a listában. "); } if ( !$this->isTransferCountMatchWithRequestesTransferCount() ){ \Yii::error("TransferPayout - input tranzakció azonosítók száma nem egyezik a betöltött tranzakciók számával"); throw new Exception("A kifizetni kívánt tranzakciók száma nem egyezik a kifizehtető tranzakciók számával. "); } foreach ($this->transfers as $transfer){ $this->payoutTransfer($transfer); } } public function readTransfers(){ $query = Transfer::find(); $query->andWhere([ 'in' , 'transfer.id_transfer' , $this->idTransfers ]); $query->andWhere( ['transfer.status' => Transfer::STATUS_NOT_PAID]) ; if ( Helper::isUserCartVisibilityUser()){ $query->innerJoin("user" ,"user.id = transfer.id_user"); } $this->transfers = $query->all(); \Yii::info("TransferPayout - betöltött tranzakciók száma:" . count($this->transfers) ); } /** * Ellenőrizzük, hogy annyi tranzakciót töltöttünk e be, mint amennyit parameterként kaptunkk * */ public function isTransferCountMatchWithRequestesTransferCount(){ return count($this->transfers) == count($this->idTransfers); } /** * @param common\models\Transfer $transfer the transfer to payout * */ protected function payoutTransfer($transfer){ $transfer->paid_by = $this->idUser; $transfer->status = Transfer::STATUS_PAID; $transfer->paid_at = date('Y-m-d H:i:s' ); $account = $transfer->account; if ( isset($account )){ /**Ha a tranzakció eredet kasszája látható típusu, akkor változtathatjuk az atuális kasszára. Különben nem*/ if ($account->type == Account::TYPE_ALL){ $transfer->id_account = Account::readDefault(); } } \Yii::info("fizetési mód: " . $this->overridePaymentMethod); if ( isset($this->overridePaymentMethod ) && array_search($this->overridePaymentMethod, array_keys( Transfer::paymentMethods()) ) ){ \Yii::info("fizetési mód beállítva: " .$this->overridePaymentMethod ); $transfer->payment_method = $this->overridePaymentMethod; } if ( $transfer->save(false) == false ){ \Yii::error("Tranzakció kifizetése sikertelen volt: " . $transfer->id_transfer); throw new Exception("Tranzakció fizetése sikertelen volt!"); } try{ ShoppingCart::deleteAll( ['id_transfer' => $transfer->id_transfer] ); UserSoldItem::deleteAll( ['id_transfer' => $transfer->id_transfer] ); }catch (\Exception $e){ \Yii::error("TransferPayout - tranzakció törlése a kosarakból sikertelen volt. Tranzakció: " . $transfer->id_transfer); throw new Exception("Tranzakció fizetése sikertelen volt!"); } } }