Accounting: share invoice, receipt and credit-note reads between CLI and MCP
Maintainers usually reply within 1 day
Nobody has claimed this yet.
Assessment
- Difficulty
- 5/5
- Estimated time
- Over a week
- Newbie friendliness
- 35/100
- Issue type
- Refactor
- Clarity
- Mostly clear
- Activity status
- Active
- Tech stack
- csharp
- Domain
- api, backend-api-design, cli
Research direction
Start with the listed accounting tools and CLI commands, then read CLAUDE.md, RateLookupResult, ProjectLookup, and WeekCheckResult for the intended shared shapes. Trace ToolsWithoutCliMirror and the existing executable parity rows before planning the migration. Done means all listed reads share result records and miss shapes, totals and validation are centralized, client-history commands exist, and parity rows pass.
Written by the indexing model from the issue text.
Description
Why
Every invoice, receipt and credit-note tool calls ITimeProApiClient directly, and the CLI commands keep their logic in the renderer. Differences that matter:
- A missing invoice/receipt is
{found:false, …}with exit 1 on the CLI and a barenullon MCP. - Totals exist only in CLI renderers: invoice line totals (
Invoices/LinesCommand), invoice timesheet hours/amounts (TimesheetsCommand), signed receipt payments (ReceiptsCommand), outstanding totals (Receipts/OutstandingCommand), credit-note totals (CreditNotes/ListCommand). GetInvoiceTimesheetsforwards a free-texttype; the CLI derives it from--write-off.invoice list,receipt listwith--jsonprint nothing (exit 0) when the API returns no page; MCP printsnull.GetInvoicesByClientandGetUnpaidInvoicesByClienthave no CLI command (on theToolsWithoutCliMirrorallowlist).
Migrate
- Tools:
ListInvoices,GetInvoice,GetInvoiceLines,GetInvoiceTimesheets,GetInvoiceReceipts,GetInvoicesByClient,GetUnpaidInvoicesByClient,ListPaidReceipts,GetReceiptDetail,GetClientOutstanding,ListCreditNotes. - A lookup/result record per read with a shared miss shape (
found:false+ id), and totals computed in the result, not the renderer. - Validate the invoice-timesheet type in one place.
- CLI commands for client invoice history and unpaid invoices (e.g.
invoice list --client NWIND [--unpaid]); remove both fromToolsWithoutCliMirror. - Executable parity rows with
ExpectParity = true.
How
Pure pass-throughs do not need a service class: the shared piece is the result record and the miss shape (RateLookupResult, ProjectLookup). Where there are totals, follow WeekCheckResult. Keep the receipt DTOs separate (see "Accounting API Shapes" in CLAUDE.md).
Contract
MCP null → {found:false} and added totals are 0.4.0 wire changes; the new CLI commands are patch-safe.
Part of #38.
- Dominant language
- C#
- Stars
- 3
- Forks
- 0
- Avg merge
- 7m
- Merged PRs (30d)
- 30
Getting set up
Starts the project's dev container in your browser, under your own GitHub account.
- No Dockerfile or Docker Compose file
- No pull request template
- No contributing guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from SSWConsulting/TimePro.Tools
-
Priority: P3 Type: Refactor
Difficulty 5/5 Over a week Newbie friendliness 38/100
SSWConsulting/TimePro.Tools#101 ·
Maintainers usually reply within 1 day
-
Priority: P3 Type: Refactor
Difficulty 4/5 3-5 days Newbie friendliness 42/100
SSWConsulting/TimePro.Tools#100 ·
Maintainers usually reply within 1 day
-
Accounting: share product, SKU, rate, unbilled and recurring reads (unbilled paging is a no-op)OpenPriority: P3 Type: Refactor
Difficulty 5/5 Over a week Newbie friendliness 35/100
SSWConsulting/TimePro.Tools#99 ·
Maintainers usually reply within 1 day
-
Priority: P2 Type: Bug Type: Refactor
Difficulty 5/5 Over a week Newbie friendliness 38/100
SSWConsulting/TimePro.Tools#97 ·
Maintainers usually reply within 1 day
-
Priority: P2 Type: Feature
Difficulty 4/5 3-5 days Newbie friendliness 55/100
SSWConsulting/TimePro.Tools#96 ·
Maintainers usually reply within 1 day
All issues in SSWConsulting/TimePro.Tools
Similar issues
-
[Doc Gap] Document new --enable-public-network-access breaking change for azurebackup vault createOpencopilot documentation
Difficulty 2/5 1-3 hours Newbie friendliness 86/100
Maintainers usually reply within 1 day
-
area-dashboard
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
Maintainers usually reply within 1 day
-
0 - Backlog Bug
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
BrighterCommand/Brighter#4539 ·
Maintainers usually reply within 1 day
-
area-networking
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
dotnet/aspnetcore#69671 · 1 comment ·
Maintainers usually reply within 1 day
-
test
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
NethermindEth/nethermind#14274 ·
Maintainers usually reply within 1 day