Issue 10: confirm schedule importer against real Carta XLSX

- Parse Carta XLSX natively (openpyxl) instead of CSV-only
- Column map confirmed against Fund I export: Investment/Asset/
  Investment date/Shares/Cost/Value/Last Valuation date
- Handle grouped layout: company subtotal rows + indented position rows
- SAFEs: shares=0 in source → null in DB (not additive)
- Money already in dollars in XLSX cells, convert to cents directly
- Dates parsed from Excel datetime objects
- CSV fallback preserved for other formats
- Re-import guard catches both seed and non-seed existing rounds
- Tested: 14 holdings, 17 positions, total value $8,527,204.58 matches
This commit is contained in:
Johnny 5
2026-06-07 19:30:12 +00:00
parent 89eddd2ad0
commit 48fef14bc9
2 changed files with 283 additions and 112 deletions
+1
View File
@@ -13,6 +13,7 @@ dependencies = [
"itsdangerous==2.2.0",
"aiosqlite==0.21.0",
"starlette-session==0.4.3",
"openpyxl==3.1.5",
]
[project.scripts]