/** * creates payout references for deposit * does not flush * * @param Deposit $deposit */ public function createPayout(Deposit $deposit) { $payout = new Payout(); $payout->setAccount($deposit->getAccount()); $payout->setAmount($deposit->getAmount() * $this->round->getPayoutPercent() / 100); $payout->setExpectedAmount($payout->getAmount()); $payout->setFee($payout->getAmount() * $this->round->getPayoutFeePercent() / 100); $payout->setType(Payout::TYPE_DEFAULT_PAYOUT); if ($deposit->isConfirmed()) { $payout->setReadyForPayout(true); } $payout->setDeposit($deposit); $this->em->persist($payout); $deposit->getPayouts()->add($payout); // referrer payout if ($deposit->getAccount()->getReferrer()) { $payout = new Payout(); $payout->setAccount($deposit->getAccount()->getReferrer()); $payout->setAmount($deposit->getAmount() * $this->round->getReferrerPayoutPercent() / 100); $payout->setExpectedAmount($payout->getAmount()); $payout->setFee($payout->getAmount() * $this->round->getPayoutFeePercent() / 100); $payout->setType(Payout::TYPE_REFERRER_PAYOUT); if ($deposit->isConfirmed()) { $payout->setReadyForPayout(true); } $payout->setDeposit($deposit); $this->em->persist($payout); $deposit->getPayouts()->add($payout); } }
private function addConfirmedDeposit(Deposit $entity) { $entity->getAccount()->addTotalDeposit($entity->getAmount()); $this->stats->addTotalDeposit($entity->getAmount()); if ($entity->getReferrerPayout()) { $entity->getAccount()->addTotalUnpaidReferralEarnings($entity->getReferrerPayout()->getAmount()); } }