Ejemplo n.º 1
0
bool Ratings::downloadRatings(const QBbgLib::QBbgSecurity& sec)
{
    bool oneRatingFound = false;
#ifndef NO_BLOOMBERG
    if (!sec.isValid())
        return false;
    Ratings bachupRating(*this);
    reset();
    using namespace QBbgLib;
    QBbgRequestGroup allRq;
    QBbgReferenceDataRequest singleRq;
    singleRq.setSecurity(sec);
    for (int i = 0; i < CountRatingAcencies; ++i)
    {
        singleRq.setField(RatingsPrivate::m_ratingFields[i]);
        singleRq.setID(i + 100);
        allRq.addRequest(singleRq);
    }
    QBbgManager manager;
    const auto& allres= manager.processRequest(allRq);
    
    for (int i = 0; i < CountRatingAcencies; ++i) {
        Q_ASSERT(allres.contains(i + 100));
        if (!allres.value(i + 100)->hasErrors()) {
            if (setRating(dynamic_cast<const QBbgReferenceDataResponse*>(allres.value(i + 100))->value().toString(), static_cast<RatingAgency>(1 << i)))
                oneRatingFound = true;
        }
    }
    if (!oneRatingFound)
        operator=(bachupRating);
#endif // !NO_BLOOMBERG
    return oneRatingFound;
}
Ejemplo n.º 2
0
bool AddFirstSettlement::execute()
{
    using namespace QBbgLib;
    enum : qint64
    {
        SettleShift = 158
    };
    QList<QString> isinList;
    { //Download Missing Bonds
        lockDB;
        QSqlDatabase db = QSqlDatabase::database("TwentyFourDB", false);
        if (!openDatabase(db)) {
            addError("Database connection failed");
            return false;
        }
        QSqlQuery nullDatesQuery(db);
        nullDatesQuery.setForwardOnly(true);
        nullDatesQuery.prepare("select at.ISIN from AllTranches as at, Deals as dl where dl.DealName=at.DealName and dl.DealName in ( select DealName from deals where FirstSettleDate is null)");
        if (nullDatesQuery.exec()) {
            while (nullDatesQuery.next()) {
                isinList.append(nullDatesQuery.record().value(0).toString());
            }
        }
    }
    bool OneFixed = isinList.isEmpty();
    if (!OneFixed) {
        QBbgReferenceDataRequest settleRq;
        QBbgRequestGroup allRq;
        settleRq.setField("FIRST_SETTLE_DT");
        for (qint64 i = 0; i < isinList.size(); ++i) {
            settleRq.setSecurity(QBbgSecurity(isinList.at(i), QBbgSecurity::isin));
            settleRq.setID(SettleShift + i);
            allRq.addRequest(settleRq);
        }
        if (allRq.size() == 0) {
            addError("No portfolios selected");
            return false;
        }
        QBbgManager manager;
        auto const & settleRes = manager.processRequest(allRq);
        allRq.clear();
        
        lockDB;
        QSqlDatabase db = QSqlDatabase::database("TwentyFourDB", false);
        if (!openDatabase(db)) {
            addError("Database connection failed");
            return false;
        }
        for (qint64 i = 0; i < isinList.size(); ++i) {
            const auto currResp = dynamic_cast<const QBbgReferenceDataResponse*>(settleRes.value(SettleShift + i));
            Q_ASSERT(currResp);
            if (currResp->hasErrors()) {
                addWarning(QStringLiteral("Unable to retrieve first settlement date for %1").arg(isinList.at(i)));
                continue;
            }
            QSqlQuery insertSettleDateQuery(db);
            insertSettleDateQuery.setForwardOnly(true);
            insertSettleDateQuery.prepare(
                "UPDATE Deals SET FirstSettleDate = :firstSettle "
                "WHERE DealName in (select DealName from AllTranches where ISIN = :isin) "
                );
            insertSettleDateQuery.bindValue(":isin", isinList.at(i));
            insertSettleDateQuery.bindValue(":firstSettle", currResp->value().toDate().toString(Qt::ISODate));
            if (!insertSettleDateQuery.exec()) {
                addWarning(
                    QStringLiteral("Unable to save first settlement date for %1 to database - %2")
                    .arg(isinList.at(i))
                    .arg(insertSettleDateQuery.lastError().text())
                    );
                continue;
            }
            OneFixed = true;
        }
    }
    if (OneFixed)
        writeLastRun();
    return OneFixed;
}