/** * @param SimpleXMLElement $statementXml * @param Statement $statement */ private function addBalancesToStatement(SimpleXMLElement $statementXml, Statement $statement) { $balancesXml = $statementXml->Bal; foreach ($balancesXml as $balanceXml) { $amount = StringToUnits::convert((string) $balanceXml->Amt); $currency = (string) $balanceXml->Amt['Ccy']; $date = (string) $balanceXml->Dt->Dt; if ((string) $balanceXml->CdtDbtInd === 'DBIT') { $amount = $amount * -1; } if ((string) $balanceXml->Tp->CdOrPrtry->Cd === 'OPBD') { $balance = Balance::opening(new Money($amount, new Currency($currency)), new DateTimeImmutable($date)); } else { $balance = Balance::closing(new Money($amount, new Currency($currency)), new DateTimeImmutable($date)); } $statement->addBalance($balance); } }