Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

Accounting: share invoice, receipt and credit-note reads between CLI and MCP

Abierto
#98 0 comentarios 0 reacciones 0 asignados Ver en GitHub

Los mantenedores suelen responder en 1 día

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
5/5
Tiempo estimado
Más de una semana
Aptitud para principiantes
35/100
Tipo de issue
Refactorización
Claridad
Bastante claro
Estado de actividad
Activo
Stack tecnológico
csharp

Línea de trabajo

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.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

Priority: P2 Type: Refactor

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 bare null on 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).
  • GetInvoiceTimesheets forwards a free-text type; the CLI derives it from --write-off.
  • invoice list, receipt list with --json print nothing (exit 0) when the API returns no page; MCP prints null.
  • GetInvoicesByClient and GetUnpaidInvoicesByClient have no CLI command (on the ToolsWithoutCliMirror allowlist).

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 from ToolsWithoutCliMirror.
  • 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.

Lenguaje dominante
C#
Estrellas
3
Forks
0
Merge medio
28 min
PR fusionados (30 d)
31

Preparar el entorno

Abrir en Codespaces

Inicia el contenedor de desarrollo del proyecto en tu navegador, con tu propia cuenta de GitHub.

  • Sin Dockerfile ni archivo de Docker Compose
  • Sin plantilla de pull request
  • Sin guía de contribución

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de SSWConsulting/TimePro.Tools

Todos los issues de SSWConsulting/TimePro.Tools

Issues similares

Más issues de C#

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.