Пример #1
0
 /**
  * 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));
 }
Пример #2
0
 /**
  * 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;
 }
Пример #3
0
 public function compare(ClaimArray $left, ClaimArray $right)
 {
     return strcmp((string) $left->sumApprovedAmounts(), (string) $right->sumApprovedAmounts());
 }
Пример #4
0
 public function compare(ClaimArray $left, ClaimArray $right)
 {
     return strcasecmp($left->getFirstClaim()->getContact()->getName(), $right->getFirstClaim()->getContact()->getName());
 }
Пример #5
0
 public function testAddClaim()
 {
     $container = new ClaimArray();
     $container->addClaim($this->mockClaim()->reveal());
     $this->assertSame(1, count($container));
 }