Hacktoberfest 2026: le issue che i maintainer hanno segnato per ottobre, aperte e adatte ai principianti. Sfoglia le issue Hacktoberfest

GetUpcomingInvoice returns empty invoice object instead of 404 for offline billing accounts

Aperta
#1,315 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub

I maintainer di solito rispondono entro 1 giorno

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
3/5
Tempo stimato
1-2 giorni
Idoneità per principianti
55/100
Tipo di issue
Bug
Chiarezza
Specificata chiaramente
Stato di attività
Ferma
Stack tecnologico
go, react, typescript

Direzione di ricerca

Leggi billing/invoice/service.go intorno alle righe 322-325, poi segui la gestione della risposta in internal/api/v1beta1connect/billing_invoice.go e il workaround in sdks/js/packages/core/react/components/organization/billing/upcoming-billing-cycle.tsx intorno alla riga 126. Il lavoro è completato quando i clienti di billing offline o non creati ricevono una risposta vuota o 404 e il workaround della UI può essere rimosso.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

Problem

The GetUpcomingInvoice API handler currently returns a nil/empty invoice object when no billing customer provider is found or the account is offline. This results in an unhelpful response with all fields set to empty values:

{
    "invoice": {
        "id": "",
        "customer_id": "",
        "provider_id": "",
        "state": "",
        "currency": "",
        "amount": "0",
        "hosted_url": "",
        "due_date": null,
        "effective_at": null,
        "period_start_at": null,
        "period_end_at": null,
        "metadata": {},
        "created_at": null,
        "customer": null
    }
}

Expected Behavior

The API should return either:

  1. An empty response body {}, or
  2. A 404 Not Found status when the billing customer is not created or offline

Root Cause

In billing/invoice/service.go:322-325, when there's no provider ID, the service returns an empty Invoice{} instead of an error:

if custmr.ProviderID == "" {
    logger.Debug(fmt.Sprintf("no customer provider id found"))
    return Invoice{}, nil
}

This empty invoice is then transformed and returned by the handler, creating the confusing response.

Impact

This forces the UI to implement workarounds. For example, in sdks/js/packages/core/react/components/organization/billing/upcoming-billing-cycle.tsx:126, the code has to check for !!billingAccount?.providerId to prevent fetching the upcoming invoice for offline billing accounts:

enabled:
  !!activeOrganization?.id &&
  // This is to prevent fetching the upcoming invoice for offline billing accounts
  !!billingAccount?.providerId,

Once this is fixed, this UI workaround can be removed.

Files to Modify

  • billing/invoice/service.go:322-325 - Handle the case where provider ID is missing
  • internal/api/v1beta1connect/billing_invoice.go - Update handler to return appropriate response
  • sdks/js/packages/core/react/components/organization/billing/upcoming-billing-cycle.tsx:126 - Remove workaround check after API is fixed
Lingua principale
Go
Stelle
344
Fork
47
Merge medio
2g 20h
PR unite (30g)
39

Preparare l'ambiente

Non abbiamo ancora controllato i file di configurazione di questo progetto. Parti dal suo README e consulta la nostra guida al primo contributo per i passaggi generali.

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di raystack/frontier

Tutte le issue di raystack/frontier

Issue simili

Altre issue su Go

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.