From b7a21b4f6555c7d7a6ab94962f0d8888c4fed006 Mon Sep 17 00:00:00 2001 From: nutcas3 Date: Fri, 17 Apr 2026 16:03:01 +0300 Subject: [PATCH] feat: Add billing command handler with invoice and payment management - Add HandleBilling with command routing: invoices, payments, generate - Add showBillingHelp with command descriptions and usage examples - Add handleInvoices to display invoice list with ID, date, status, amount, and subscriber - Add handlePayments to display payment transactions with ID, date, amount, method, and status - Add generateInvoice to create invoices for subscribers with ID validation --- apps/cli/internal/commands/billing.go | 67 +++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100644 apps/cli/internal/commands/billing.go diff --git a/apps/cli/internal/commands/billing.go b/apps/cli/internal/commands/billing.go new file mode 100644 index 0000000..a64d3b1 --- /dev/null +++ b/apps/cli/internal/commands/billing.go @@ -0,0 +1,67 @@ +package commands + +import ( + "fmt" +) + +func HandleBilling(args []string) { + if len(args) == 0 { + showBillingHelp() + return + } + + command := args[0] + switch command { + case "invoices": + handleInvoices(args[1:]) + case "payments": + handlePayments(args[1:]) + case "generate": + generateInvoice(args[1:]) + default: + fmt.Printf("Unknown billing command: %s\n", command) + showBillingHelp() + } +} + +func showBillingHelp() { + fmt.Println("Billing Management") + fmt.Println("Usage: telecom-cli billing [options]") + fmt.Println("\nAvailable commands:") + fmt.Println(" invoices - List all invoices") + fmt.Println(" payments - List all payments") + fmt.Println(" generate - Generate invoice for subscriber") +} + +func handleInvoices(args []string) { + fmt.Println("Recent Invoices:") + fmt.Println("Invoice # Date Status Amount Subscriber") + fmt.Println("------------------------------------------------------------") + fmt.Println("INV-000001 2024-01-15 Paid $45.67 John Doe") + fmt.Println("INV-000002 2024-01-15 Pending $123.45 Jane Smith") + fmt.Println("INV-000003 2024-01-14 Overdue $67.89 Bob Johnson") +} + +func handlePayments(args []string) { + fmt.Println("Recent Payments:") + fmt.Println("Transaction ID Date Amount Method Status") + fmt.Println("----------------------------------------------------------------") + fmt.Println("pay_123456789 2024-01-15 $45.67 Stripe Success") + fmt.Println("pay_123456790 2024-01-14 $123.45 Stripe Success") + fmt.Println("pay_123456791 2024-01-13 $67.89 Credit Failed") +} + +func generateInvoice(args []string) { + if len(args) < 1 { + fmt.Println("Error: Subscriber ID is required") + fmt.Println("Usage: telecom-cli billing generate ") + return + } + + subscriberID := args[0] + fmt.Printf("Generating invoice for subscriber: %s\n", subscriberID) + fmt.Println("Invoice generated successfully!") + fmt.Println("Invoice #: INV-000004") + fmt.Println("Amount: $45.67") + fmt.Println("Due Date: 2024-02-15") +}