17QVariantMap toAnnualRow(
const core::ports::annual::AnnualRowResult& row) {
19 out.insert(QStringLiteral(
"key"), QString::fromStdString(row.
key));
20 out.insert(QStringLiteral(
"id"), QString::fromStdString(row.
transactionId));
21 out.insert(QStringLiteral(
"name"),
23 out.insert(QStringLiteral(
"bookingDate"),
25 out.insert(QStringLiteral(
"amount"), row.
amount);
26 out.insert(QStringLiteral(
"status"), row.
status);
27 out.insert(QStringLiteral(
"statusText"),
32 out.insert(QStringLiteral(
"allocatable"), row.
allocatable);
33 out.insert(QStringLiteral(
"contractId"),
35 out.insert(QStringLiteral(
"contractType"),
37 out.insert(QStringLiteral(
"statementId"),
39 out.insert(QStringLiteral(
"isMissingLive"), row.
missingLive);
40 out.insert(QStringLiteral(
"isMixedYear"), row.
mixedYear);
41 out.insert(QStringLiteral(
"isCalcVariant"), row.
calcVariant);
44 out.insert(QStringLiteral(
"sourceAnalysisIds"),
46 out.insert(QStringLiteral(
"sourceAnalysisNames"),
52toAnnualRows(
const std::vector<core::ports::annual::AnnualRowResult>& rows) {
54 out.reserve(
static_cast<int>(rows.size()));
55 for (
const auto& row : rows) {
56 out.push_back(toAnnualRow(row));
64 std::shared_ptr<core::ports::annual::IAnnualRunner> runner)
65 : runner_(std::move(runner)) {}
71 "Annual runner invoked",
73 return runner_ ? runner_->runAnnual(workspace, request)
80 out.insert(QStringLiteral(
"annualId"),
81 QString::fromStdString(result.
annualId));
82 out.insert(QStringLiteral(
"annualName"),
84 out.insert(QStringLiteral(
"year"), result.
year);
87 stats.insert(QStringLiteral(
"assignedAnalysisCount"),
89 stats.insert(QStringLiteral(
"snapshotTransactionCount"),
95 stats.insert(QStringLiteral(
"neutral"), result.
stats.
neutral);
97 stats.insert(QStringLiteral(
"verified"), result.
stats.
verified);
99 out.insert(QStringLiteral(
"stats"), stats);
101 const QVariantList deduplicated = toAnnualRows(result.
deduplicated);
102 const QVariantList similar = toAnnualRows(result.
similar);
103 const QVariantList divergent = toAnnualRows(result.
divergent);
104 const QVariantList workspaceOnly = toAnnualRows(result.
workspaceOnly);
105 const QVariantList missingLive = toAnnualRows(result.
missingLive);
107 out.insert(QStringLiteral(
"deduplicated"), deduplicated);
108 out.insert(QStringLiteral(
"similar"), similar);
109 out.insert(QStringLiteral(
"divergent"), divergent);
110 out.insert(QStringLiteral(
"workspaceOnly"), workspaceOnly);
111 out.insert(QStringLiteral(
"missingLive"), missingLive);
114 all.reserve(deduplicated.size() + similar.size() + divergent.size() +
115 workspaceOnly.size());
116 for (
const auto& value : deduplicated) {
117 all.push_back(value);
119 for (
const auto& value : similar) {
120 all.push_back(value);
122 for (
const auto& value : divergent) {
123 all.push_back(value);
125 for (
const auto& value : workspaceOnly) {
126 all.push_back(value);
128 out.insert(QStringLiteral(
"transactions"), all);
Declares the annual adapter used by UI workflows.
Declarations for the UI payload mapper helpers.
Provides translated C++ UI strings for shell, workflow, adapter and view model code.
Declarations for the UI Trace component.
AnnualAdapter(std::shared_ptr< core::ports::annual::IAnnualRunner > runner)
Creates an annual adapter backed by a core runner.
QVariantMap mapAnnualResult(const core::ports::annual::AnnualResult &result) const
Maps an annual result to a QML payload.
core::ports::annual::AnnualResult runAnnual(const core::ports::workspace::WorkspaceSnapshot &workspace, const core::ports::annual::AnnualRequest &request) const
Runs annual computation through the core runner.
void traceAdapter(const char *origin, std::string message, core::errors::ErrorContext context={})
Emits an adapter trace event.
QVariantList toVariantStringList(const std::vector< std::string > &values)
Converts standard strings to a QVariant string list.
QString verified()
Label for verified transaction status.
QString neutral()
Label for neutral transaction status.
QString unverified()
Label for unverified transaction status.
QString completed()
Label for completed transaction status.
std::vector< AnnualRowResult > missingLive
std::vector< AnnualRowResult > similar
std::vector< AnnualRowResult > deduplicated
std::vector< AnnualRowResult > divergent
std::vector< AnnualRowResult > workspaceOnly
std::vector< std::string > sourceAnalysisNames
std::vector< std::string > sourceAnalysisIds
std::string transactionName
std::string transactionId
int assignedAnalysisCount
int snapshotTransactionCount