/** * @param DTO\Record $record * @param SimpleXMLElement $xmlRecord */ public function addBalances(DTO\Record $record, SimpleXMLElement $xmlRecord) { $xmlBalances = $xmlRecord->Bal; foreach ($xmlBalances as $xmlBalance) { $amount = StringToUnits::convert((string) $xmlBalance->Amt); $currency = (string) $xmlBalance->Amt['Ccy']; $date = (string) $xmlBalance->Dt->Dt; if ((string) $xmlBalance->CdtDbtInd === 'DBIT') { $amount = $amount * -1; } if (isset($xmlBalance->Tp) && isset($xmlBalance->Tp->CdOrPrtry) && (string) $xmlBalance->Tp->CdOrPrtry->Cd === 'OPBD') { $balance = DTO\Balance::opening(new Money($amount, new Currency($currency)), new DateTimeImmutable($date)); } else { $balance = DTO\Balance::closing(new Money($amount, new Currency($currency)), new DateTimeImmutable($date)); } $record->addBalance($balance); } }