Skip to content

Commit 84b035b

Browse files
nathaniel.volfangojenkins
authored andcommitted
QPR-12557 -- Add cashflow report to SMRC analytic, fix collateral balance overwriting, update regression tests
1 parent f4b4037 commit 84b035b

2 files changed

Lines changed: 10 additions & 12 deletions

File tree

OREData/ored/portfolio/collateralbalance.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -85,8 +85,8 @@ void CollateralBalance::fromXML(XMLNode* node) {
8585
if (nettingSetDetailsNode) {
8686
nettingSetDetails_.fromXML(nettingSetDetailsNode);
8787
} else {
88-
nettingSetId_ = XMLUtils::getChildValue(node, "NettingSetId", false);
89-
nettingSetDetails_ = NettingSetDetails(nettingSetId_);
88+
const string nettingSetId = XMLUtils::getChildValue(node, "NettingSetId", false);
89+
nettingSetDetails_ = NettingSetDetails(nettingSetId);
9090
}
9191

9292
currency_ = XMLUtils::getChildValue(node, "Currency", true);
@@ -112,8 +112,8 @@ void CollateralBalance::fromXML(XMLNode* node) {
112112
XMLNode* CollateralBalance::toXML(XMLDocument& doc) const {
113113
XMLNode* node = doc.allocNode("CollateralBalance");
114114
XMLUtils::addChild(doc, node, "Currency", currency_);
115-
if (nettingSetDetails_.empty()) {
116-
XMLUtils::addChild(doc, node, "NettingSetId", nettingSetId_);
115+
if (nettingSetDetails_.emptyOptionalFields()) {
116+
XMLUtils::addChild(doc, node, "NettingSetId", nettingSetDetails_.nettingSetId());
117117
} else {
118118
XMLUtils::appendNode(node, nettingSetDetails_.toXML(doc));
119119
}

OREData/ored/portfolio/collateralbalance.hpp

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -39,26 +39,25 @@ class CollateralBalance : public ore::data::XMLSerializable {
3939
default constructor
4040
*/
4141
CollateralBalance()
42-
: nettingSetId_(""), nettingSetDetails_(NettingSetDetails()), currency_(""),
42+
: nettingSetDetails_(NettingSetDetails()), currency_(""),
4343
im_(QuantLib::Null<QuantLib::Real>()), vm_(QuantLib::Null<QuantLib::Real>()) {}
4444

4545
CollateralBalance(ore::data::XMLNode* node);
4646

47-
CollateralBalance(const std::string& nettingSetId, const std::string& currency,
47+
CollateralBalance(const NettingSetDetails& nettingSetDetails, const std::string& currency,
4848
const QuantLib::Real& im, const QuantLib::Real& vm = QuantLib::Null<QuantLib::Real>())
49-
: nettingSetId_(nettingSetId), nettingSetDetails_(NettingSetDetails()), currency_(currency),
50-
im_(im), vm_(vm) {}
49+
: nettingSetDetails_(nettingSetDetails), currency_(currency), im_(im), vm_(vm) {}
5150

52-
CollateralBalance(const NettingSetDetails& nettingSetDetails, const std::string& currency,
51+
CollateralBalance(const std::string& nettingSetId, const std::string& currency,
5352
const QuantLib::Real& im, const QuantLib::Real& vm = QuantLib::Null<QuantLib::Real>())
54-
: nettingSetId_(""), nettingSetDetails_(nettingSetDetails), currency_(currency), im_(im), vm_(vm) {}
53+
: CollateralBalance(NettingSetDetails(nettingSetId), currency, im, vm) {}
5554

5655
void fromXML(ore::data::XMLNode* node) override;
5756
ore::data::XMLNode* toXML(ore::data::XMLDocument& doc) const override;
5857

5958
// Getters
6059
const std::string& nettingSetId() const {
61-
return (nettingSetDetails_.empty() ? nettingSetId_ : nettingSetDetails_.nettingSetId());
60+
return nettingSetDetails_.nettingSetId();
6261
}
6362
const NettingSetDetails nettingSetDetails() const { return nettingSetDetails_; }
6463
const std::string& currency() const { return currency_; }
@@ -70,7 +69,6 @@ class CollateralBalance : public ore::data::XMLSerializable {
7069
QuantLib::Real& variationMargin() { return vm_; }
7170

7271
private:
73-
std::string nettingSetId_;
7472
NettingSetDetails nettingSetDetails_;
7573
std::string currency_;
7674
QuantLib::Real im_, vm_;

0 commit comments

Comments
 (0)