summaryrefslogtreecommitdiff
path: root/src/ui/ui_earnings.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/ui/ui_earnings.cpp')
-rw-r--r--src/ui/ui_earnings.cpp151
1 files changed, 151 insertions, 0 deletions
diff --git a/src/ui/ui_earnings.cpp b/src/ui/ui_earnings.cpp
new file mode 100644
index 0000000..81e31b5
--- /dev/null
+++ b/src/ui/ui_earnings.cpp
@@ -0,0 +1,151 @@
+#include <stdio.h>
+#include <stdlib.h>
+
+#include "ui.hpp"
+#include "imgui.h"
+#include "administration.hpp"
+#include "locales.hpp"
+
+income_statement* statement = 0;
+
+void ui_setup_earnings()
+{
+ statement = (income_statement*)malloc(sizeof(income_statement));
+ administration_create_income_statement(statement);
+}
+
+void ui_destroy_earnings()
+{
+ free(statement);
+}
+
+void ui_draw_earnings()
+{
+ if (ImGui::BeginTable("QuarterlyResultsTable", 5,
+ ImGuiTableFlags_Borders | ImGuiTableFlags_RowBg | ImGuiTableFlags_SizingFixedFit))
+ {
+ ImGui::TableSetupColumn("##names");
+
+ int quarter_start = 0;
+ int quarter_count = 4;
+
+ // Table header
+ for (int q = 0; q < quarter_count; q++)
+ {
+ ImGui::TableSetupColumn(statement->quarters[q].quarter_str, ImGuiTableColumnFlags_WidthStretch);
+ }
+
+ ImGui::TableHeadersRow();
+
+ // Uncategorized income and expenses
+ ImGui::TableNextRow();
+ ImGui::TableSetColumnIndex(0); ImGui::Text("(Uncategorized)");
+ ImGui::TableSetColumnIndex(1); ImGui::Text("");
+ ImGui::TableSetColumnIndex(2); ImGui::Text("");
+ ImGui::TableSetColumnIndex(3); ImGui::Text("");
+ ImGui::TableSetColumnIndex(4); ImGui::Text("");
+
+ ImGui::TableNextRow();
+ ImGui::TableSetColumnIndex(0); ImGui::TextUnformatted(" Revenue");
+ ImGui::TableSetColumnIndex(1); ImGui::Text("%.2f", statement->quarters[quarter_start + 0].uncategorized_revenue);
+ ImGui::TableSetColumnIndex(2); ImGui::Text("%.2f", statement->quarters[quarter_start + 1].uncategorized_revenue);
+ ImGui::TableSetColumnIndex(3); ImGui::Text("%.2f", statement->quarters[quarter_start + 2].uncategorized_revenue);
+ ImGui::TableSetColumnIndex(4); ImGui::Text("%.2f", statement->quarters[quarter_start + 3].uncategorized_revenue);
+
+ ImGui::TableNextRow();
+ ImGui::TableSetColumnIndex(0); ImGui::TextUnformatted(" Tax");
+ ImGui::TableSetColumnIndex(1); ImGui::Text("%.2f", statement->quarters[quarter_start + 0].uncategorized_taxes);
+ ImGui::TableSetColumnIndex(2); ImGui::Text("%.2f", statement->quarters[quarter_start + 1].uncategorized_taxes);
+ ImGui::TableSetColumnIndex(3); ImGui::Text("%.2f", statement->quarters[quarter_start + 2].uncategorized_taxes);
+ ImGui::TableSetColumnIndex(4); ImGui::Text("%.2f", statement->quarters[quarter_start + 3].uncategorized_taxes);
+
+ ImGui::TableNextRow();
+ ImGui::TableSetColumnIndex(0); ImGui::TextUnformatted(" Expenses");
+ ImGui::TableSetColumnIndex(1); ImGui::Text("%.2f", statement->quarters[quarter_start + 0].uncategorized_expenses);
+ ImGui::TableSetColumnIndex(2); ImGui::Text("%.2f", statement->quarters[quarter_start + 1].uncategorized_expenses);
+ ImGui::TableSetColumnIndex(3); ImGui::Text("%.2f", statement->quarters[quarter_start + 2].uncategorized_expenses);
+ ImGui::TableSetColumnIndex(4); ImGui::Text("%.2f", statement->quarters[quarter_start + 3].uncategorized_expenses);
+
+ quarterly_report default_quater = statement->quarters[0];
+ for (u32 p = 0; p < default_quater.report_count; p++)
+ {
+ ImGui::TableNextRow();
+ project_report* report = &default_quater.reports[p];
+ ImGui::TableSetColumnIndex(0); ImGui::Text("(%s)", report->description);
+ ImGui::TableSetColumnIndex(1); ImGui::Text("");
+ ImGui::TableSetColumnIndex(2); ImGui::Text("");
+ ImGui::TableSetColumnIndex(3); ImGui::Text("");
+ ImGui::TableSetColumnIndex(4); ImGui::Text("");
+
+ ImGui::TableNextRow();
+ ImGui::TableSetColumnIndex(0); ImGui::TextUnformatted(" Revenue");
+ ImGui::TableSetColumnIndex(1); ImGui::Text("%.2f", statement->quarters[quarter_start + 0].reports[p].revenue);
+ ImGui::TableSetColumnIndex(2); ImGui::Text("%.2f", statement->quarters[quarter_start + 1].reports[p].revenue);
+ ImGui::TableSetColumnIndex(3); ImGui::Text("%.2f", statement->quarters[quarter_start + 2].reports[p].revenue);
+ ImGui::TableSetColumnIndex(4); ImGui::Text("%.2f", statement->quarters[quarter_start + 3].reports[p].revenue);
+
+ ImGui::TableNextRow();
+ ImGui::TableSetColumnIndex(0); ImGui::TextUnformatted(" Tax");
+ ImGui::TableSetColumnIndex(1); ImGui::Text("%.2f", statement->quarters[quarter_start + 0].reports[p].taxes);
+ ImGui::TableSetColumnIndex(2); ImGui::Text("%.2f", statement->quarters[quarter_start + 1].reports[p].taxes);
+ ImGui::TableSetColumnIndex(3); ImGui::Text("%.2f", statement->quarters[quarter_start + 2].reports[p].taxes);
+ ImGui::TableSetColumnIndex(4); ImGui::Text("%.2f", statement->quarters[quarter_start + 3].reports[p].taxes);
+
+ ImGui::TableNextRow();
+ ImGui::TableSetColumnIndex(0); ImGui::TextUnformatted(" Expenses");
+ ImGui::TableSetColumnIndex(1); ImGui::Text("%.2f", statement->quarters[quarter_start + 0].reports[p].expenses_total);
+ ImGui::TableSetColumnIndex(2); ImGui::Text("%.2f", statement->quarters[quarter_start + 1].reports[p].expenses_total);
+ ImGui::TableSetColumnIndex(3); ImGui::Text("%.2f", statement->quarters[quarter_start + 2].reports[p].expenses_total);
+ ImGui::TableSetColumnIndex(4); ImGui::Text("%.2f", statement->quarters[quarter_start + 3].reports[p].expenses_total);
+
+ for (u32 e = 0; e < report->expense_count; e++)
+ {
+ ImGui::TableNextRow();
+ project_expense* expense = &report->expenses[e];
+ ImGui::TableSetColumnIndex(0); ImGui::Text(" %s", localize(expense->description));
+ ImGui::TableSetColumnIndex(1); ImGui::Text("%.2f", statement->quarters[quarter_start + 0].reports[p].expenses[e].total);
+ ImGui::TableSetColumnIndex(2); ImGui::Text("%.2f", statement->quarters[quarter_start + 1].reports[p].expenses[e].total);
+ ImGui::TableSetColumnIndex(3); ImGui::Text("%.2f", statement->quarters[quarter_start + 2].reports[p].expenses[e].total);
+ ImGui::TableSetColumnIndex(4); ImGui::Text("%.2f", statement->quarters[quarter_start + 3].reports[p].expenses[e].total);
+
+
+ }
+ }
+
+ /*
+ for (int i = 0; i < 1; i++)
+ {
+ quarterly_report quarter = statement->quarters[quarter_start + quarter_index];
+
+ for (u32 p = 0; p < quarter.report_count; p++)
+ {
+ ImGui::TableNextRow();
+ project_report* report = &quarter.reports[p];
+ ImGui::TableSetColumnIndex(0); ImGui::TextUnformatted(report->description);
+ ImGui::TableSetColumnIndex(1); ImGui::Text("");
+ ImGui::TableSetColumnIndex(2); ImGui::Text("");
+ ImGui::TableSetColumnIndex(3); ImGui::Text("");
+ ImGui::TableSetColumnIndex(4); ImGui::Text("");
+
+
+ // for (u32 e = 0; e < report->expense_count; e++)
+ // {
+ // project_expense* expense = &report->expenses[e];
+ // ImGui::TableNextColumn(); ImGui::TextUnformatted(expense->description);
+ // }
+ }
+ }*/
+
+ // // Rows
+ // for (int i = 0; i < results_count; i++)
+ // {
+ // ImGui::TableNextRow();
+ // ImGui::TableSetColumnIndex(0); ImGui::TextUnformatted(results[i].quarter);
+ // ImGui::TableSetColumnIndex(1); ImGui::TextUnformatted(results[i].revenue);
+ // ImGui::TableSetColumnIndex(2); ImGui::TextUnformatted(results[i].profit);
+ // ImGui::TableSetColumnIndex(3); ImGui::TextUnformatted(results[i].expenses);
+ // }
+
+ ImGui::EndTable();
+ }
+} \ No newline at end of file