Accounting: share product, SKU, rate, unbilled and recurring reads (unbilled paging is a no-op)
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 by tracing the listed tools and commands through ProjectLookup, RateLookupResult, and WeekCheckResult, then compare the CLI and MCP request paths. Check how unbilled paging, sorting, totals, miss shapes, and recurring empty responses currently behave. Done means the migration checklist is covered, executable parity rows pass, and the MCP schema changes are intentional.
Written by the indexing model from the issue text.
Description
Why
Same pattern as invoices: direct API calls on both surfaces with separate miss handling and request construction.
GetProduct/GetRecurringInvoice:{found:false}+ exit 1 on the CLI,nullon MCP.ListAllSkusis on the MCP-only allowlist, butproduct list --prepaidalready covers the prepaid subset; the unrestricted listing has no CLI command.ListClientRatesandrate listbuild the filter/paging/sort query separately, and treat a blank emp id differently.- Unbilled paging does nothing.
GetUnallocatedTimesheetsByClientAsyncignorespageSize,skip,sortFieldanddirection, yetunbilled listandGetUnbilledTimesheetsForClientboth advertise them. An agent paging withskipgets the same full list every time and double-counts. recurring list --jsonprints nothing on an empty response.
Migrate
- Tools:
ListProducts,GetProduct,ListAllSkus,GetProductDiscountsForClient,ListClientRates,GetClientsWithOutstandingTime,GetUnbilledTimesheetsForClient,ListRecurringInvoices,GetRecurringInvoice. - Shared miss shape for single-entity gets.
-
sku list(orproduct list --all-skus) CLI command; removeListAllSkusfrom the allowlist. - One rate-list request builder shared by
rate listandListClientRates. - Unbilled: page/sort client-side in one shared report, or remove the parameters from both surfaces. Move the hour/amount totals out of
Unbilled/ListCommand. - Executable parity rows.
How
ProjectLookup / RateLookupResult for reads, WeekCheckResult for the unbilled report.
Contract
Removing the unbilled parameters, or making them work, changes the MCP schema; the miss shapes are 0.4.0.
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
-
Priority: P2 Type: Refactor
Difficulty 5/5 Over a week Newbie friendliness 35/100
SSWConsulting/TimePro.Tools#98 ·
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
-
Difficulty 2/5 1-3 hours Newbie friendliness 66/100
MicrosoftLearning/PL-400_Microsoft-Power-Platform-Developer#231 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 66/100
joinrpg/joinrpg-net#5313 ·
Maintainers usually reply within 1 day
-
[12.x] FixIncorrectOwnerIdRelationships can delete legitimate library roots when UserView shares the same pathPossibly taken A pull request linked to this issue is open or already merged. Open
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 74/100
-
Difficulty 2/5 1-3 hours Newbie friendliness 79/100
Maintainers usually reply within 1 day