/** * Round all approved amount down to nearest full unit * * @param ClaimArray $claims * @param SEK $funds * @return SEK */ public function allocate(ClaimArray $claims, SEK $funds) { $strategy = new \byrokrat\amount\Rounder\RoundDown(); $sumBeforeAction = $claims->sumApprovedAmounts(); foreach ($claims as $claim) { $claim->setApprovedAmount($claim->getApprovedAmount()->roundTo(0, $strategy)); } return $funds->subtract($claims->sumApprovedAmounts()->subtract($sumBeforeAction)); }
/** * Calculate current ratio * * @param ClaimArray $claims * @param SEK $funds * @return SEK */ private function calculateRatio(ClaimArray $claims, SEK $funds) { $notApproved = $claims->sumNotApprovedAmounts(); if ($notApproved->isZero()) { return $notApproved; } $ratio = $funds->divideBy($notApproved); $one = new SEK('1'); return $ratio->isGreaterThan($one) ? $one : $ratio; }
public function compare(ClaimArray $left, ClaimArray $right) { return strcmp((string) $left->sumApprovedAmounts(), (string) $right->sumApprovedAmounts()); }
public function compare(ClaimArray $left, ClaimArray $right) { return strcasecmp($left->getFirstClaim()->getContact()->getName(), $right->getFirstClaim()->getContact()->getName()); }
public function testAddClaim() { $container = new ClaimArray(); $container->addClaim($this->mockClaim()->reveal()); $this->assertSame(1, count($container)); }