From 2bd253b2cc7de4dfa8a62f76910c9fe34172fd00 Mon Sep 17 00:00:00 2001 From: Vincent Pochet Date: Thu, 16 Jan 2025 17:11:34 +0100 Subject: [PATCH] feat: Expose billing periods with invoice object --- billing_period.go | 28 ++++++++++++++++++++++++++++ invoice.go | 29 +++++++++++++++-------------- 2 files changed, 43 insertions(+), 14 deletions(-) create mode 100644 billing_period.go diff --git a/billing_period.go b/billing_period.go new file mode 100644 index 0000000..925c1f2 --- /dev/null +++ b/billing_period.go @@ -0,0 +1,28 @@ +package lago + +import ( + "time" + + "github.com/google/uuid" +) + +type InvoicingReason string + +const ( + BillingPeriodSubscriptionStarting InvoicingReason = "subscription_starting" + BillingPeriodSubscriptionPeriodic InvoicingReason = "subscription_periodic" + BillingPeriodSubscriptionTerminating InvoicingReason = "subscription_terminating" + BillingPeriodSInAdvanceCharge InvoicingReason = "in_advance_charge" + BillingPeriodInAdvanceChargePeriodic InvoicingReason = "in_advance_charge_periodic" + BillingPeriodSProgressiveBilling InvoicingReason = "progressive_billing" +) + +type BillingPeriod struct { + LagoSubscriptionId uuid.UUID `json:"lago_subscription_id"` + ExternalSubscriptionId string `json:"external_subscription_id"` + SubscriptionFromDatetime time.Time `json:"subscription_from_datetime"` + SubscriptionToDatetime time.Time `json:"subscription_to_datetime"` + ChargesFromDatetime time.Time `json:"charges_from_datetime"` + ChargesToDatetime time.Time `json:"charges_to_datetime"` + InvoicingReason InvoicingReason `json:"invoicing_reason"` +} diff --git a/invoice.go b/invoice.go index d7b026a..e106f56 100644 --- a/invoice.go +++ b/invoice.go @@ -134,12 +134,12 @@ type InvoiceCredit struct { } type InvoiceAppliedInvoiceCustomSection struct { - LagoId uuid.UUID `json:"lago_id,omitempty"` - LagoInvoiceId uuid.UUID `json:"lago_invoice_id,omitempty"` - Code string `json:"code,omitempty"` - Details string `json:"details,omitempty"` - DisplayName string `json:"display_name,omitempty"` - CreatedAt time.Time `json:"created_at,omitempty"` + LagoId uuid.UUID `json:"lago_id,omitempty"` + LagoInvoiceId uuid.UUID `json:"lago_invoice_id,omitempty"` + Code string `json:"code,omitempty"` + Details string `json:"details,omitempty"` + DisplayName string `json:"display_name,omitempty"` + CreatedAt time.Time `json:"created_at,omitempty"` } type InvoiceAppliedTax struct { @@ -193,15 +193,16 @@ type Invoice struct { Metadata []InvoiceMetadataResponse `json:"metadata,omitempty"` VersionNumber int `json:"version_number,omitempty"` - Customer *Customer `json:"customer,omitempty"` - Subscriptions []Subscription `json:"subscriptions,omitempty"` + Customer *Customer `json:"customer,omitempty"` + BillingPeriods []BillingPeriod `json:"billing_periods,omitempty"` + Subscriptions []Subscription `json:"subscriptions,omitempty"` - Fees []Fee `json:"fees,omitempty"` - Credits []InvoiceCredit `json:"credits,omitempty"` - AppliedInvoiceCustomSections []InvoiceAppliedInvoiceCustomSection `json:"applied_invoice_custom_sections,omitempty"` - AppliedTaxes []InvoiceAppliedTax `json:"applied_taxes,omitempty"` - ErrorDetails []InvoiceErrorDetail `json:"error_details,omitempty"` - AppliedUsageThreshold []AppliedUsageThreshold `json:"applied_usage_threshold,omitempty"` + Fees []Fee `json:"fees,omitempty"` + Credits []InvoiceCredit `json:"credits,omitempty"` + AppliedInvoiceCustomSections []InvoiceAppliedInvoiceCustomSection `json:"applied_invoice_custom_sections,omitempty"` + AppliedTaxes []InvoiceAppliedTax `json:"applied_taxes,omitempty"` + ErrorDetails []InvoiceErrorDetail `json:"error_details,omitempty"` + AppliedUsageThreshold []AppliedUsageThreshold `json:"applied_usage_threshold,omitempty"` } type InvoicePaymentUrl struct {