diff --git a/.agents/skills/e2e/SKILL.md b/.agents/skills/e2e/SKILL.md index fdd44f7673..2f4ce01abb 100644 --- a/.agents/skills/e2e/SKILL.md +++ b/.agents/skills/e2e/SKILL.md @@ -12,6 +12,8 @@ You are helping the user write OpenMeter end-to-end tests that run against a liv This is the black-box layer. Unlike the `/test` skill (which covers in-process unit/integration/service tests using `testutils.TestEnv` + `testutils.InitPostgresDB`), e2e tests hit the wire format: JSON in, JSON out, status codes, problem+json error bodies. Use this skill when the value of the test comes from exercising the HTTP contract, the OpenAPI binder, or cross-service behavior. +General test style from `AGENTS.md` and the `/test` skill still applies. Keep this skill as e2e-specific guidance, not a parallel set of test conventions. + ## Two styles, same package Both live in `e2e/` and share the build tag, environment, and skip-when-unset convention. Pick by what the endpoint under test offers: @@ -48,6 +50,10 @@ Notes: ## Shared conventions (both styles) +### Helper functions + +Prefer a single explicit test body over single-use setup wrappers. Do not add helper functions for e2e setup, conversion, or assertions unless the helper is used by at least two tests in the same package or its name captures non-obvious domain semantics that would otherwise be easy to miss. + ### Unique fixture keys The docker-compose DB is shared across re-runs and parallel tests. Fixed keys collide. Always generate keys with a suffix: diff --git a/AGENTS.md b/AGENTS.md index 4f7154dd9f..75321dcdb2 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -147,7 +147,7 @@ In tests, prefer `t.Context()` when a `testing.T` or `testing.TB` is available i Prefer one consistent test harness style over mixed ad hoc structures. Use production-backed paths, such as rating-backed or service-backed fixtures, when the real path can express the scenario; keep hand-assembled fixtures for cases that cannot be produced realistically. If a behavior is a suite-wide rule, hardcode it into the shared harness instead of exposing it as per-test knobs. -Avoid redundant test helpers and duplicate setup paths. Prefer parameterizing one helper over maintaining near-identical helpers, use literal helper names that state exactly what they do, and inline two-line single-use helpers that do not need `defer`. Clean up dead test helpers immediately after refactors. +Avoid redundant test helpers and duplicate setup paths. Prefer parameterizing one helper over maintaining near-identical helpers, use literal helper names that state exactly what they do, and inline single-use helpers that only wrap setup, conversion, or assertions even when the test becomes longer. Add a test helper only when it is used by at least two tests in the same package or when the helper name captures non-obvious domain semantics that would otherwise be easy to miss. Clean up dead test helpers immediately after refactors. For service and lifecycle subtests, start each subtest body with concise intent comments when the scenario is non-trivial: diff --git a/api/api.gen.go b/api/api.gen.go index 1885fd2502..f4d8c83dd5 100644 --- a/api/api.gen.go +++ b/api/api.gen.go @@ -6822,6 +6822,7 @@ type InvoiceType string // InvoiceUsageBasedRateCard InvoiceUsageBasedRateCard represents the rate card (intent) for an usage-based line. type InvoiceUsageBasedRateCard struct { // Discounts The discounts that are applied to the line. + // Deprecated: this property has been marked as deprecated upstream, but no `x-deprecated-reason` was set Discounts *BillingDiscounts `json:"discounts,omitempty"` // FeatureKey The feature the customer is entitled to use. @@ -23326,754 +23327,754 @@ var swaggerSpec = []string{ "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", - "AP//QGaOQKm4DAA=", + "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", + "HwAA///1pDp/u7gMAA==", } // GetSwagger returns the content of the embedded swagger specification file diff --git a/api/client/go/client.gen.go b/api/client/go/client.gen.go index 3ff609e874..4fa8e6abd6 100644 --- a/api/client/go/client.gen.go +++ b/api/client/go/client.gen.go @@ -6165,6 +6165,7 @@ type InvoiceType string // InvoiceUsageBasedRateCard InvoiceUsageBasedRateCard represents the rate card (intent) for an usage-based line. type InvoiceUsageBasedRateCard struct { // Discounts The discounts that are applied to the line. + // Deprecated: this property has been marked as deprecated upstream, but no `x-deprecated-reason` was set Discounts *BillingDiscounts `json:"discounts,omitempty"` // FeatureKey The feature the customer is entitled to use. @@ -45975,741 +45976,741 @@ var swaggerSpec = []string{ "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", } // GetSwagger returns the content of the embedded swagger specification file diff --git a/api/client/javascript/src/client/schemas.ts b/api/client/javascript/src/client/schemas.ts index 2313160447..7600f0aeea 100644 --- a/api/client/javascript/src/client/schemas.ts +++ b/api/client/javascript/src/client/schemas.ts @@ -7725,7 +7725,10 @@ export interface components { * When null, the feature or service is free. */ price: components['schemas']['RateCardUsageBasedPrice'] | null - /** @description The discounts that are applied to the line. */ + /** + * @deprecated + * @description The discounts that are applied to the line. + */ discounts?: components['schemas']['BillingDiscounts'] } /** @description InvoiceWorkflowInvoicingSettingsReplaceUpdate represents the update model for the invoicing settings of an invoice workflow. */ diff --git a/api/openapi.cloud.yaml b/api/openapi.cloud.yaml index 542e119e10..33486790cc 100644 --- a/api/openapi.cloud.yaml +++ b/api/openapi.cloud.yaml @@ -19773,6 +19773,7 @@ components: allOf: - $ref: '#/components/schemas/BillingDiscounts' description: The discounts that are applied to the line. + deprecated: true description: InvoiceUsageBasedRateCard represents the rate card (intent) for an usage-based line. InvoiceWorkflowInvoicingSettingsReplaceUpdate: type: object diff --git a/api/openapi.yaml b/api/openapi.yaml index c803cb46c7..ab748cdc46 100644 --- a/api/openapi.yaml +++ b/api/openapi.yaml @@ -20471,6 +20471,7 @@ components: allOf: - $ref: '#/components/schemas/BillingDiscounts' description: The discounts that are applied to the line. + deprecated: true description: InvoiceUsageBasedRateCard represents the rate card (intent) for an usage-based line. InvoiceWorkflowInvoicingSettingsReplaceUpdate: type: object diff --git a/api/spec/packages/legacy/src/billing/invoices/invoice.tsp b/api/spec/packages/legacy/src/billing/invoices/invoice.tsp index 068e2e2d03..80fad7deb5 100644 --- a/api/spec/packages/legacy/src/billing/invoices/invoice.tsp +++ b/api/spec/packages/legacy/src/billing/invoices/invoice.tsp @@ -656,6 +656,7 @@ model InvoiceUsageBasedRateCard { /** * The discounts that are applied to the line. */ + #deprecated "V1 invoice responses do not expose persisted rate card discounts" @visibility(Lifecycle.Read, Lifecycle.Create, Lifecycle.Update) discounts?: BillingDiscounts; } diff --git a/api/v3/handlers/customers/charges/convert.go b/api/v3/handlers/customers/charges/convert.go index a112e0307a..1fd680fe1b 100644 --- a/api/v3/handlers/customers/charges/convert.go +++ b/api/v3/handlers/customers/charges/convert.go @@ -298,7 +298,7 @@ func toAPIBillingPriceTier(t productcatalog.PriceTier, _ int) api.BillingPriceTi } // convertFlatFeeDiscounts maps the optional percentage discount to the anonymous API struct. -func convertFlatFeeDiscounts(pd *productcatalog.PercentageDiscount) *api.BillingChargeFlatFeeDiscounts { +func convertFlatFeeDiscounts(pd *billing.PercentageDiscount) *api.BillingChargeFlatFeeDiscounts { if pd == nil { return nil } @@ -307,7 +307,7 @@ func convertFlatFeeDiscounts(pd *productcatalog.PercentageDiscount) *api.Billing } // convertUsageBasedDiscounts maps usage-based discounts to the API type. -func convertUsageBasedDiscounts(d productcatalog.Discounts) *api.BillingRateCardDiscounts { +func convertUsageBasedDiscounts(d billing.Discounts) *api.BillingRateCardDiscounts { if d.Percentage == nil && d.Usage == nil { return nil } @@ -476,11 +476,15 @@ func convertFlatFeeChargeAPIToIntent(customerID string, flatFee api.CreateCharge metadata = models.Metadata(*flatFee.Labels) } - var discount *productcatalog.PercentageDiscount + var discount *billing.PercentageDiscount if flatFee.Discounts != nil && flatFee.Discounts.Percentage != nil { - discount = &productcatalog.PercentageDiscount{ - Percentage: models.NewPercentage(float64(lo.FromPtr(flatFee.Discounts.Percentage))), - } + discount = billing.Discounts{ + Percentage: &billing.PercentageDiscount{ + PercentageDiscount: productcatalog.PercentageDiscount{ + Percentage: models.NewPercentage(float64(lo.FromPtr(flatFee.Discounts.Percentage))), + }, + }, + }.UpsertCorrelationIDs().Percentage } var proRating productcatalog.ProRatingConfig @@ -537,11 +541,13 @@ func convertUsageBaseChargeAPIToIntent(customerID string, usageBasedFee api.Crea metadata = models.Metadata(*usageBasedFee.Labels) } - var discounts productcatalog.Discounts + var discounts billing.Discounts if usageBasedFee.Discounts != nil { if usageBasedFee.Discounts.Percentage != nil { - discounts.Percentage = &productcatalog.PercentageDiscount{ - Percentage: models.NewPercentage(float64(lo.FromPtr(usageBasedFee.Discounts.Percentage))), + discounts.Percentage = &billing.PercentageDiscount{ + PercentageDiscount: productcatalog.PercentageDiscount{ + Percentage: models.NewPercentage(float64(lo.FromPtr(usageBasedFee.Discounts.Percentage))), + }, } } if usageBasedFee.Discounts.Usage != nil { @@ -549,10 +555,13 @@ func convertUsageBaseChargeAPIToIntent(customerID string, usageBasedFee api.Crea if err != nil { return zero, fmt.Errorf("invalid usage discount quantity: %w", err) } - discounts.Usage = &productcatalog.UsageDiscount{ - Quantity: quantity, + discounts.Usage = &billing.UsageDiscount{ + UsageDiscount: productcatalog.UsageDiscount{ + Quantity: quantity, + }, } } + discounts = discounts.UpsertCorrelationIDs() } price, err := plans.FromAPIBillingPrice(usageBasedFee.Price, lo.ToPtr(api.BillingPricePaymentTermInArrears)) diff --git a/e2e/billinginvoice_discount_edit_test.go b/e2e/billinginvoice_discount_edit_test.go new file mode 100644 index 0000000000..8dad96980d --- /dev/null +++ b/e2e/billinginvoice_discount_edit_test.go @@ -0,0 +1,285 @@ +package e2e + +import ( + "encoding/json" + "net/http" + "slices" + "strings" + "testing" + "time" + + "github.com/oklog/ulid/v2" + "github.com/samber/lo" + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + + api "github.com/openmeterio/openmeter/api/client/go" + "github.com/openmeterio/openmeter/pkg/models" +) + +func TestInvoiceEditFlatFeeDiscountCreditThenInvoice(t *testing.T) { + ctx := t.Context() + client := initClient(t) + prefix := "discount_edit_" + strings.ToLower(ulid.Make().String()) + lineName := prefix + "_flat_fee" + + customerResp, err := client.CreateCustomerWithResponse(ctx, api.CustomerCreate{ + Key: lo.ToPtr(prefix + "_customer"), + Name: "Invoice Discount Edit Customer " + prefix, + Currency: lo.ToPtr(api.CurrencyCode("USD")), + PrimaryEmail: lo.ToPtr(prefix + "@example.com"), + }) + require.NoError(t, err) + require.Equal(t, http.StatusCreated, customerResp.StatusCode(), "create customer: %s", string(customerResp.Body)) + require.NotNil(t, customerResp.JSON201) + + profileExpand := []api.BillingProfileExpand{api.BillingProfileExpandApps} + profilesResp, err := client.ListBillingProfilesWithResponse(ctx, &api.ListBillingProfilesParams{ + Expand: &profileExpand, + PageSize: lo.ToPtr(api.PaginationPageSize(100)), + }) + require.NoError(t, err) + require.Equal(t, http.StatusOK, profilesResp.StatusCode(), "list billing profiles: %s", string(profilesResp.Body)) + require.NotNil(t, profilesResp.JSON200) + + defaultProfileIdx := slices.IndexFunc(profilesResp.JSON200.Items, func(profile api.BillingProfile) bool { + return profile.Default + }) + require.NotEqual(t, -1, defaultProfileIdx, "default billing profile is required") + defaultProfile := profilesResp.JSON200.Items[defaultProfileIdx] + + var appRefs struct { + Invoicing struct { + ID string `json:"id"` + } `json:"invoicing"` + Payment struct { + ID string `json:"id"` + } `json:"payment"` + Tax struct { + ID string `json:"id"` + } `json:"tax"` + } + rawApps, err := json.Marshal(defaultProfile.Apps) + require.NoError(t, err) + require.NoError(t, json.Unmarshal(rawApps, &appRefs), "billing profile apps: %s", string(rawApps)) + require.NotEmpty(t, appRefs.Invoicing.ID, "invoicing app id") + require.NotEmpty(t, appRefs.Payment.ID, "payment app id") + require.NotEmpty(t, appRefs.Tax.ID, "tax app id") + + workflow := api.BillingWorkflowCreate{ + Collection: defaultProfile.Workflow.Collection, + Invoicing: defaultProfile.Workflow.Invoicing, + Payment: defaultProfile.Workflow.Payment, + Tax: defaultProfile.Workflow.Tax, + } + if workflow.Invoicing == nil { + workflow.Invoicing = &api.BillingWorkflowInvoicingSettings{} + } + workflow.Invoicing.AutoAdvance = lo.ToPtr(false) + workflow.Payment = &api.BillingWorkflowPaymentSettings{ + CollectionMethod: lo.ToPtr(api.CollectionMethodSendInvoice), + } + + profileResp, err := client.CreateBillingProfileWithResponse(ctx, api.BillingProfileCreate{ + Name: "Invoice Discount Edit Manual Approval " + prefix, + Apps: api.BillingProfileAppsCreate{ + Invoicing: appRefs.Invoicing.ID, + Payment: appRefs.Payment.ID, + Tax: appRefs.Tax.ID, + }, + Supplier: defaultProfile.Supplier, + Workflow: workflow, + }) + require.NoError(t, err) + require.Equal(t, http.StatusCreated, profileResp.StatusCode(), "create billing profile: %s", string(profileResp.Body)) + require.NotNil(t, profileResp.JSON201) + + overrideResp, err := client.UpsertBillingProfileCustomerOverrideWithResponse(ctx, customerResp.JSON201.Id, api.BillingProfileCustomerOverrideCreate{ + BillingProfileId: lo.ToPtr(profileResp.JSON201.Id), + }) + require.NoError(t, err) + require.Equal(t, http.StatusOK, overrideResp.StatusCode(), "upsert billing profile override: %s", string(overrideResp.Body)) + + rateCard := api.RateCard{} + require.NoError(t, rateCard.FromRateCardFlatFee(api.RateCardFlatFee{ + Key: lineName, + Name: lineName, + Type: api.RateCardFlatFeeTypeFlatFee, + Price: &api.FlatPriceWithPaymentTerm{ + Amount: "15000", + Type: api.FlatPriceWithPaymentTermTypeFlat, + PaymentTerm: lo.ToPtr(api.PricePaymentTermInAdvance), + }, + BillingCadence: lo.ToPtr("P1M"), + })) + + planResp, err := client.CreatePlanWithResponse(ctx, api.PlanCreate{ + Key: prefix + "_plan", + Name: "Invoice Discount Edit Plan " + prefix, + Currency: "USD", + BillingCadence: "P1M", + SettlementMode: lo.ToPtr(api.BillingSettlementModeCreditThenInvoice), + Phases: []api.PlanPhase{{ + Key: "default", + Name: "Default", + RateCards: []api.RateCard{rateCard}, + }}, + ProRatingConfig: &api.ProRatingConfig{ + Enabled: false, + Mode: api.ProRatingModeProratePrices, + }, + }) + require.NoError(t, err) + require.Equal(t, http.StatusCreated, planResp.StatusCode(), "create plan: %s", string(planResp.Body)) + require.NotNil(t, planResp.JSON201) + + publishedPlanResp, err := client.PublishPlanWithResponse(ctx, planResp.JSON201.Id) + require.NoError(t, err) + require.Equal(t, http.StatusOK, publishedPlanResp.StatusCode(), "publish plan: %s", string(publishedPlanResp.Body)) + require.NotNil(t, publishedPlanResp.JSON200) + + timing := &api.SubscriptionTiming{} + require.NoError(t, timing.FromSubscriptionTimingEnum(api.SubscriptionTimingEnumImmediate)) + + subscriptionCreate := api.SubscriptionCreate{} + require.NoError(t, subscriptionCreate.FromPlanSubscriptionCreate(api.PlanSubscriptionCreate{ + Timing: timing, + CustomerId: lo.ToPtr(customerResp.JSON201.Id), + SettlementMode: lo.ToPtr(api.BillingSettlementModeCreditThenInvoice), + Plan: api.PlanReferenceInput{ + Key: publishedPlanResp.JSON200.Key, + Version: lo.ToPtr(1), + }, + })) + + subscriptionResp, err := client.CreateSubscriptionWithResponse(ctx, subscriptionCreate) + require.NoError(t, err) + require.Equal(t, http.StatusCreated, subscriptionResp.StatusCode(), "create subscription: %s", string(subscriptionResp.Body)) + require.NotNil(t, subscriptionResp.JSON201) + + customers := api.InvoiceListParamsCustomers{customerResp.JSON201.Id} + invoiceExpand := api.InvoiceListParamsExpand{api.InvoiceExpandLines, api.InvoiceExpandWorkflowApps} + var invoice api.Invoice + snapshotQuantitiesRequested := false + assert.EventuallyWithT(t, func(c *assert.CollectT) { + resp, err := client.ListInvoicesWithResponse(ctx, &api.ListInvoicesParams{ + Customers: &customers, + Expand: &invoiceExpand, + PageSize: lo.ToPtr(api.PaginationPageSize(100)), + }) + require.NoError(c, err) + require.Equal(c, http.StatusOK, resp.StatusCode(), "list invoices: %s", string(resp.Body)) + require.NotNil(c, resp.JSON200) + + idx := slices.IndexFunc(resp.JSON200.Items, func(candidate api.Invoice) bool { + return candidate.Status == api.InvoiceStatusDraft && + candidate.StatusDetails.ExtendedStatus == "draft.manual_approval_needed" && + candidate.Lines != nil && + len(*candidate.Lines) > 0 + }) + if idx != -1 { + invoice = resp.JSON200.Items[idx] + return + } + + if !snapshotQuantitiesRequested { + idx = slices.IndexFunc(resp.JSON200.Items, func(candidate api.Invoice) bool { + return candidate.Status == api.InvoiceStatusDraft && + candidate.StatusDetails.ExtendedStatus == "draft.waiting_for_collection" && + candidate.StatusDetails.AvailableActions.SnapshotQuantities != nil && + candidate.Lines != nil && + len(*candidate.Lines) > 0 + }) + if idx != -1 { + snapshotResp, err := client.SnapshotQuantitiesInvoiceActionWithResponse(ctx, resp.JSON200.Items[idx].Id) + require.NoError(c, err) + require.Equal(c, http.StatusOK, snapshotResp.StatusCode(), "snapshot quantities: %s", string(snapshotResp.Body)) + require.NotNil(c, snapshotResp.JSON200) + snapshotQuantitiesRequested = true + } + } + + require.Fail(c, "expected a draft invoice waiting for manual approval") + }, 2*time.Minute, time.Second) + require.NotEmpty(t, invoice.Id) + + getInvoiceExpand := []api.InvoiceExpand{api.InvoiceExpandLines, api.InvoiceExpandWorkflowApps} + invoiceResp, err := client.GetInvoiceWithResponse(ctx, invoice.Id, &api.GetInvoiceParams{ + Expand: &getInvoiceExpand, + }) + require.NoError(t, err) + require.Equal(t, http.StatusOK, invoiceResp.StatusCode(), "get invoice: %s", string(invoiceResp.Body)) + require.NotNil(t, invoiceResp.JSON200) + invoice = *invoiceResp.JSON200 + require.NotNil(t, invoice.Lines) + + lineIdx := slices.IndexFunc(*invoice.Lines, func(line api.InvoiceLine) bool { + return line.Name == lineName + }) + require.NotEqual(t, -1, lineIdx, "invoice line %q", lineName) + lineID := (*invoice.Lines)[lineIdx].Id + + replacementLines := make([]api.InvoiceLineReplaceUpdate, 0, len(*invoice.Lines)) + for _, line := range *invoice.Lines { + lineUpdate := api.InvoiceLineReplaceUpdate{ + Id: lo.ToPtr(line.Id), + Name: line.Name, + Description: line.Description, + FeatureKey: line.FeatureKey, + InvoiceAt: line.InvoiceAt, + Metadata: line.Metadata, + Period: line.Period, + Price: line.Price, + RateCard: line.RateCard, + TaxConfig: line.TaxConfig, + } + if line.Id == lineID { + require.NotNil(t, lineUpdate.RateCard, "line[%s] rate card", line.Id) + lineUpdate.RateCard.Discounts = &api.BillingDiscounts{ + Percentage: &api.BillingDiscountPercentage{ + Percentage: models.NewPercentage(50), + }, + } + } + replacementLines = append(replacementLines, lineUpdate) + } + + payment := api.BillingWorkflowPaymentSettings{} + if invoice.Workflow.Workflow.Payment != nil { + payment = *invoice.Workflow.Workflow.Payment + } + + invoicing := api.InvoiceWorkflowInvoicingSettingsReplaceUpdate{} + if invoice.Workflow.Workflow.Invoicing != nil { + invoicing.AutoAdvance = invoice.Workflow.Workflow.Invoicing.AutoAdvance + invoicing.DefaultTaxConfig = invoice.Workflow.Workflow.Invoicing.DefaultTaxConfig + invoicing.DraftPeriod = invoice.Workflow.Workflow.Invoicing.DraftPeriod + invoicing.DueAfter = invoice.Workflow.Workflow.Invoicing.DueAfter + invoicing.SubscriptionEndProrationMode = invoice.Workflow.Workflow.Invoicing.SubscriptionEndProrationMode + } + + updateResp, err := client.UpdateInvoiceWithResponse(ctx, invoice.Id, api.InvoiceReplaceUpdate{ + Customer: api.BillingPartyReplaceUpdate{ + Addresses: invoice.Customer.Addresses, + Key: invoice.Customer.Key, + Name: invoice.Customer.Name, + TaxId: invoice.Customer.TaxId, + }, + Supplier: api.BillingPartyReplaceUpdate{ + Addresses: invoice.Supplier.Addresses, + Key: invoice.Supplier.Key, + Name: invoice.Supplier.Name, + TaxId: invoice.Supplier.TaxId, + }, + Workflow: api.InvoiceWorkflowReplaceUpdate{ + Workflow: api.InvoiceWorkflowSettingsReplaceUpdate{ + Invoicing: invoicing, + Payment: payment, + }, + }, + Lines: replacementLines, + }) + require.NoError(t, err) + require.Equal(t, http.StatusOK, updateResp.StatusCode(), "update invoice: %s", string(updateResp.Body)) + require.NotNil(t, updateResp.JSON200) +} diff --git a/e2e/billinginvoices_v3_test.go b/e2e/billinginvoices_v3_test.go index aaf53bdbe0..f28553d37d 100644 --- a/e2e/billinginvoices_v3_test.go +++ b/e2e/billinginvoices_v3_test.go @@ -21,9 +21,9 @@ import ( // Flow: // - Create a customer (v3) // - Create a meter and feature for usage-based billing (v3) -// - Create and publish a plan with a unit rate card backed by the feature (v3) +// - Create and publish a plan with flat and usage-based rate cards (v3) // - Create a subscription for the customer (v3) -// - Create a charge-backed pending line and wait for charges to advance it into a standard invoice +// - Create a future-dated pending line and wait for the subscription charge to produce a standard invoice // - List the customer's invoices via the v1 SDK; separate standard from gathering // - GET the standard invoice via the v3 endpoint and assert the response shape // - GET the gathering invoice via the v3 endpoint → 404 (gathering invoices are not exposed) @@ -79,7 +79,7 @@ func TestV3GetBillingInvoice(t *testing.T) { feature = f }) - t.Run("Should create and publish a plan with a unit rate card", func(t *testing.T) { + t.Run("Should create and publish a plan with flat and unit rate cards", func(t *testing.T) { require.NotNil(t, feature, "depends on feature creation") status, plan, problem := c.CreatePlan(apiv3.CreatePlanRequest{ @@ -88,9 +88,12 @@ func TestV3GetBillingInvoice(t *testing.T) { Currency: "USD", BillingCadence: apiv3.ISO8601Duration("P1M"), Phases: []apiv3.BillingPlanPhase{{ - Key: "phase_1", - Name: "Test Phase", - RateCards: []apiv3.BillingRateCard{validUnitRateCard(*feature)}, + Key: "phase_1", + Name: "Test Phase", + RateCards: []apiv3.BillingRateCard{ + validFlatRateCard("inv_fee"), + validUnitRateCard(*feature), + }, }}, }) require.Equal(t, http.StatusCreated, status, "problem: %+v", problem) @@ -122,6 +125,7 @@ func TestV3GetBillingInvoice(t *testing.T) { }{ Id: lo.ToPtr(planID), }, + SettlementMode: lo.ToPtr(apiv3.BillingSettlementModeCreditThenInvoice), }) require.Equal(t, http.StatusCreated, status, "problem: %+v", problem) require.NotNil(t, sub) @@ -164,46 +168,13 @@ func TestV3GetBillingInvoice(t *testing.T) { t.Run("Should create a single standard invoice", func(t *testing.T) { require.NotEmpty(t, customerID, "depends on customer creation") - now := time.Now().UTC() - price := api.RateCardUsageBasedPrice{} - require.NoError(t, price.FromFlatPriceWithPaymentTerm(api.FlatPriceWithPaymentTerm{ - Amount: api.Numeric("10.00"), - Type: api.FlatPriceWithPaymentTermTypeFlat, - PaymentTerm: lo.ToPtr(api.PricePaymentTermInAdvance), - })) - - lineResp, err := v1.CreatePendingInvoiceLineWithResponse(t.Context(), customerID, api.InvoicePendingLineCreateInput{ - Currency: "USD", - Lines: []api.InvoicePendingLineCreate{ - { - Name: uniqueKey("inv_std_line_name"), - InvoiceAt: now.Add(-10 * time.Hour), - Period: api.Period{ - From: now.Add(-24 * time.Hour), - To: now.Add(-2 * time.Hour), - }, - Price: &price, - }, - }, - }) - require.NoError(t, err) - require.Equal(t, http.StatusCreated, lineResp.StatusCode(), "line: %s", string(lineResp.Body)) - require.NotNil(t, lineResp.JSON201) - - t.Logf("created standard pending invoice line: customer_id=%s invoice_id=%s lines=%s", - customerID, - lineResp.JSON201.Invoice.Id, - formatInvoiceLinesForLog(lineResp.JSON201.Lines), - ) - - ctx := t.Context() customers := api.InvoiceListParamsCustomers{customerID} expand := api.InvoiceListParamsExpand{api.InvoiceExpandLines} pollAttempt := 0 assert.EventuallyWithT(t, func(collect *assert.CollectT) { pollAttempt++ - listResp, err := v1.ListInvoicesWithResponse(ctx, &api.ListInvoicesParams{ + listResp, err := v1.ListInvoicesWithResponse(t.Context(), &api.ListInvoicesParams{ Customers: &customers, Expand: &expand, PageSize: lo.ToPtr(api.PaginationPageSize(100)), @@ -212,20 +183,16 @@ func TestV3GetBillingInvoice(t *testing.T) { require.Equal(collect, http.StatusOK, listResp.StatusCode(), "list invoices: %s", string(listResp.Body)) require.NotNil(collect, listResp.JSON200) - chargeStatus, charges, problem, chargeErr := c.ListCustomerChargesForDiagnostics(ctx, customerID, withPageSize(100)) - t.Logf("standard invoice poll %02d: invoices=%s charges=%s", - pollAttempt, - formatInvoicesForLog(listResp.JSON200.Items), - formatChargesForLog(chargeStatus, charges, problem, chargeErr), - ) + t.Logf("standard invoice poll %02d: invoices=%s", pollAttempt, formatInvoicesForLog(listResp.JSON200.Items)) standardInvoiceIdx := slices.IndexFunc(listResp.JSON200.Items, func(inv api.Invoice) bool { return inv.Status != api.InvoiceStatusGathering }) - require.NotEqual(collect, -1, standardInvoiceIdx, "expected charges to advance a pending line into a standard invoice") + require.NotEqual(collect, -1, standardInvoiceIdx, "expected subscription charge to produce a standard invoice") invoiceID = listResp.JSON200.Items[standardInvoiceIdx].Id - }, time.Minute, time.Second) + }, 2*time.Minute, time.Second) + t.Logf("created standard invoice: customer_id=%s invoice_id=%s", customerID, invoiceID) require.NotEmpty(t, invoiceID) }) @@ -292,30 +259,6 @@ func formatInvoiceLinesForLog(lines []api.InvoiceLine) string { return formatLogJSON(lines) } -func formatChargesForLog(status int, charges *apiv3.ChargePagePaginatedResponse, problem *v3Problem, err error) string { - if err != nil { - return formatLogJSON(struct { - Status int `json:"status"` - Error string `json:"error"` - }{ - Status: status, - Error: err.Error(), - }) - } - - if status != http.StatusOK || charges == nil { - return formatLogJSON(struct { - Status int `json:"status"` - Problem *v3Problem `json:"problem,omitempty"` - }{ - Status: status, - Problem: problem, - }) - } - - return formatLogJSON(charges) -} - func formatLogJSON(v any) string { out, err := json.Marshal(v) if err != nil { diff --git a/e2e/creditsdisabled/billinginvoice_discount_edit_test.go b/e2e/creditsdisabled/billinginvoice_discount_edit_test.go new file mode 100644 index 0000000000..2fc6cc4e71 --- /dev/null +++ b/e2e/creditsdisabled/billinginvoice_discount_edit_test.go @@ -0,0 +1,285 @@ +package creditsdisabled + +import ( + "encoding/json" + "net/http" + "slices" + "strings" + "testing" + "time" + + "github.com/oklog/ulid/v2" + "github.com/samber/lo" + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + + api "github.com/openmeterio/openmeter/api/client/go" + "github.com/openmeterio/openmeter/pkg/models" +) + +func TestInvoiceEditFlatFeeDiscountCreditThenInvoice(t *testing.T) { + ctx := t.Context() + client := initClient(t) + prefix := "discount_edit_" + strings.ToLower(ulid.Make().String()) + lineName := prefix + "_flat_fee" + + customerResp, err := client.CreateCustomerWithResponse(ctx, api.CustomerCreate{ + Key: lo.ToPtr(prefix + "_customer"), + Name: "Invoice Discount Edit Customer " + prefix, + Currency: lo.ToPtr(api.CurrencyCode("USD")), + PrimaryEmail: lo.ToPtr(prefix + "@example.com"), + }) + require.NoError(t, err) + require.Equal(t, http.StatusCreated, customerResp.StatusCode(), "create customer: %s", string(customerResp.Body)) + require.NotNil(t, customerResp.JSON201) + + profileExpand := []api.BillingProfileExpand{api.BillingProfileExpandApps} + profilesResp, err := client.ListBillingProfilesWithResponse(ctx, &api.ListBillingProfilesParams{ + Expand: &profileExpand, + PageSize: lo.ToPtr(api.PaginationPageSize(100)), + }) + require.NoError(t, err) + require.Equal(t, http.StatusOK, profilesResp.StatusCode(), "list billing profiles: %s", string(profilesResp.Body)) + require.NotNil(t, profilesResp.JSON200) + + defaultProfileIdx := slices.IndexFunc(profilesResp.JSON200.Items, func(profile api.BillingProfile) bool { + return profile.Default + }) + require.NotEqual(t, -1, defaultProfileIdx, "default billing profile is required") + defaultProfile := profilesResp.JSON200.Items[defaultProfileIdx] + + var appRefs struct { + Invoicing struct { + ID string `json:"id"` + } `json:"invoicing"` + Payment struct { + ID string `json:"id"` + } `json:"payment"` + Tax struct { + ID string `json:"id"` + } `json:"tax"` + } + rawApps, err := json.Marshal(defaultProfile.Apps) + require.NoError(t, err) + require.NoError(t, json.Unmarshal(rawApps, &appRefs), "billing profile apps: %s", string(rawApps)) + require.NotEmpty(t, appRefs.Invoicing.ID, "invoicing app id") + require.NotEmpty(t, appRefs.Payment.ID, "payment app id") + require.NotEmpty(t, appRefs.Tax.ID, "tax app id") + + workflow := api.BillingWorkflowCreate{ + Collection: defaultProfile.Workflow.Collection, + Invoicing: defaultProfile.Workflow.Invoicing, + Payment: defaultProfile.Workflow.Payment, + Tax: defaultProfile.Workflow.Tax, + } + if workflow.Invoicing == nil { + workflow.Invoicing = &api.BillingWorkflowInvoicingSettings{} + } + workflow.Invoicing.AutoAdvance = lo.ToPtr(false) + workflow.Payment = &api.BillingWorkflowPaymentSettings{ + CollectionMethod: lo.ToPtr(api.CollectionMethodSendInvoice), + } + + profileResp, err := client.CreateBillingProfileWithResponse(ctx, api.BillingProfileCreate{ + Name: "Invoice Discount Edit Manual Approval " + prefix, + Apps: api.BillingProfileAppsCreate{ + Invoicing: appRefs.Invoicing.ID, + Payment: appRefs.Payment.ID, + Tax: appRefs.Tax.ID, + }, + Supplier: defaultProfile.Supplier, + Workflow: workflow, + }) + require.NoError(t, err) + require.Equal(t, http.StatusCreated, profileResp.StatusCode(), "create billing profile: %s", string(profileResp.Body)) + require.NotNil(t, profileResp.JSON201) + + overrideResp, err := client.UpsertBillingProfileCustomerOverrideWithResponse(ctx, customerResp.JSON201.Id, api.BillingProfileCustomerOverrideCreate{ + BillingProfileId: lo.ToPtr(profileResp.JSON201.Id), + }) + require.NoError(t, err) + require.Equal(t, http.StatusOK, overrideResp.StatusCode(), "upsert billing profile override: %s", string(overrideResp.Body)) + + rateCard := api.RateCard{} + require.NoError(t, rateCard.FromRateCardFlatFee(api.RateCardFlatFee{ + Key: lineName, + Name: lineName, + Type: api.RateCardFlatFeeTypeFlatFee, + Price: &api.FlatPriceWithPaymentTerm{ + Amount: "15000", + Type: api.FlatPriceWithPaymentTermTypeFlat, + PaymentTerm: lo.ToPtr(api.PricePaymentTermInAdvance), + }, + BillingCadence: lo.ToPtr("P1M"), + })) + + planResp, err := client.CreatePlanWithResponse(ctx, api.PlanCreate{ + Key: prefix + "_plan", + Name: "Invoice Discount Edit Plan " + prefix, + Currency: "USD", + BillingCadence: "P1M", + SettlementMode: lo.ToPtr(api.BillingSettlementModeCreditThenInvoice), + Phases: []api.PlanPhase{{ + Key: "default", + Name: "Default", + RateCards: []api.RateCard{rateCard}, + }}, + ProRatingConfig: &api.ProRatingConfig{ + Enabled: false, + Mode: api.ProRatingModeProratePrices, + }, + }) + require.NoError(t, err) + require.Equal(t, http.StatusCreated, planResp.StatusCode(), "create plan: %s", string(planResp.Body)) + require.NotNil(t, planResp.JSON201) + + publishedPlanResp, err := client.PublishPlanWithResponse(ctx, planResp.JSON201.Id) + require.NoError(t, err) + require.Equal(t, http.StatusOK, publishedPlanResp.StatusCode(), "publish plan: %s", string(publishedPlanResp.Body)) + require.NotNil(t, publishedPlanResp.JSON200) + + timing := &api.SubscriptionTiming{} + require.NoError(t, timing.FromSubscriptionTimingEnum(api.SubscriptionTimingEnumImmediate)) + + subscriptionCreate := api.SubscriptionCreate{} + require.NoError(t, subscriptionCreate.FromPlanSubscriptionCreate(api.PlanSubscriptionCreate{ + Timing: timing, + CustomerId: lo.ToPtr(customerResp.JSON201.Id), + SettlementMode: lo.ToPtr(api.BillingSettlementModeCreditThenInvoice), + Plan: api.PlanReferenceInput{ + Key: publishedPlanResp.JSON200.Key, + Version: lo.ToPtr(1), + }, + })) + + subscriptionResp, err := client.CreateSubscriptionWithResponse(ctx, subscriptionCreate) + require.NoError(t, err) + require.Equal(t, http.StatusCreated, subscriptionResp.StatusCode(), "create subscription: %s", string(subscriptionResp.Body)) + require.NotNil(t, subscriptionResp.JSON201) + + customers := api.InvoiceListParamsCustomers{customerResp.JSON201.Id} + invoiceExpand := api.InvoiceListParamsExpand{api.InvoiceExpandLines, api.InvoiceExpandWorkflowApps} + var invoice api.Invoice + snapshotQuantitiesRequested := false + assert.EventuallyWithT(t, func(c *assert.CollectT) { + resp, err := client.ListInvoicesWithResponse(ctx, &api.ListInvoicesParams{ + Customers: &customers, + Expand: &invoiceExpand, + PageSize: lo.ToPtr(api.PaginationPageSize(100)), + }) + require.NoError(c, err) + require.Equal(c, http.StatusOK, resp.StatusCode(), "list invoices: %s", string(resp.Body)) + require.NotNil(c, resp.JSON200) + + idx := slices.IndexFunc(resp.JSON200.Items, func(candidate api.Invoice) bool { + return candidate.Status == api.InvoiceStatusDraft && + candidate.StatusDetails.ExtendedStatus == "draft.manual_approval_needed" && + candidate.Lines != nil && + len(*candidate.Lines) > 0 + }) + if idx != -1 { + invoice = resp.JSON200.Items[idx] + return + } + + if !snapshotQuantitiesRequested { + idx = slices.IndexFunc(resp.JSON200.Items, func(candidate api.Invoice) bool { + return candidate.Status == api.InvoiceStatusDraft && + candidate.StatusDetails.ExtendedStatus == "draft.waiting_for_collection" && + candidate.StatusDetails.AvailableActions.SnapshotQuantities != nil && + candidate.Lines != nil && + len(*candidate.Lines) > 0 + }) + if idx != -1 { + snapshotResp, err := client.SnapshotQuantitiesInvoiceActionWithResponse(ctx, resp.JSON200.Items[idx].Id) + require.NoError(c, err) + require.Equal(c, http.StatusOK, snapshotResp.StatusCode(), "snapshot quantities: %s", string(snapshotResp.Body)) + require.NotNil(c, snapshotResp.JSON200) + snapshotQuantitiesRequested = true + } + } + + require.Fail(c, "expected a draft invoice waiting for manual approval") + }, 2*time.Minute, time.Second) + require.NotEmpty(t, invoice.Id) + + getInvoiceExpand := []api.InvoiceExpand{api.InvoiceExpandLines, api.InvoiceExpandWorkflowApps} + invoiceResp, err := client.GetInvoiceWithResponse(ctx, invoice.Id, &api.GetInvoiceParams{ + Expand: &getInvoiceExpand, + }) + require.NoError(t, err) + require.Equal(t, http.StatusOK, invoiceResp.StatusCode(), "get invoice: %s", string(invoiceResp.Body)) + require.NotNil(t, invoiceResp.JSON200) + invoice = *invoiceResp.JSON200 + require.NotNil(t, invoice.Lines) + + lineIdx := slices.IndexFunc(*invoice.Lines, func(line api.InvoiceLine) bool { + return line.Name == lineName + }) + require.NotEqual(t, -1, lineIdx, "invoice line %q", lineName) + lineID := (*invoice.Lines)[lineIdx].Id + + replacementLines := make([]api.InvoiceLineReplaceUpdate, 0, len(*invoice.Lines)) + for _, line := range *invoice.Lines { + lineUpdate := api.InvoiceLineReplaceUpdate{ + Id: lo.ToPtr(line.Id), + Name: line.Name, + Description: line.Description, + FeatureKey: line.FeatureKey, + InvoiceAt: line.InvoiceAt, + Metadata: line.Metadata, + Period: line.Period, + Price: line.Price, + RateCard: line.RateCard, + TaxConfig: line.TaxConfig, + } + if line.Id == lineID { + require.NotNil(t, lineUpdate.RateCard, "line[%s] rate card", line.Id) + lineUpdate.RateCard.Discounts = &api.BillingDiscounts{ + Percentage: &api.BillingDiscountPercentage{ + Percentage: models.NewPercentage(50), + }, + } + } + replacementLines = append(replacementLines, lineUpdate) + } + + payment := api.BillingWorkflowPaymentSettings{} + if invoice.Workflow.Workflow.Payment != nil { + payment = *invoice.Workflow.Workflow.Payment + } + + invoicing := api.InvoiceWorkflowInvoicingSettingsReplaceUpdate{} + if invoice.Workflow.Workflow.Invoicing != nil { + invoicing.AutoAdvance = invoice.Workflow.Workflow.Invoicing.AutoAdvance + invoicing.DefaultTaxConfig = invoice.Workflow.Workflow.Invoicing.DefaultTaxConfig + invoicing.DraftPeriod = invoice.Workflow.Workflow.Invoicing.DraftPeriod + invoicing.DueAfter = invoice.Workflow.Workflow.Invoicing.DueAfter + invoicing.SubscriptionEndProrationMode = invoice.Workflow.Workflow.Invoicing.SubscriptionEndProrationMode + } + + updateResp, err := client.UpdateInvoiceWithResponse(ctx, invoice.Id, api.InvoiceReplaceUpdate{ + Customer: api.BillingPartyReplaceUpdate{ + Addresses: invoice.Customer.Addresses, + Key: invoice.Customer.Key, + Name: invoice.Customer.Name, + TaxId: invoice.Customer.TaxId, + }, + Supplier: api.BillingPartyReplaceUpdate{ + Addresses: invoice.Supplier.Addresses, + Key: invoice.Supplier.Key, + Name: invoice.Supplier.Name, + TaxId: invoice.Supplier.TaxId, + }, + Workflow: api.InvoiceWorkflowReplaceUpdate{ + Workflow: api.InvoiceWorkflowSettingsReplaceUpdate{ + Invoicing: invoicing, + Payment: payment, + }, + }, + Lines: replacementLines, + }) + require.NoError(t, err) + require.Equal(t, http.StatusOK, updateResp.StatusCode(), "update invoice: %s", string(updateResp.Body)) + require.NotNil(t, updateResp.JSON200) +} diff --git a/openmeter/billing/charges/flatfee/adapter/charge.go b/openmeter/billing/charges/flatfee/adapter/charge.go index bf1bb6cdb4..b3bf4a8e71 100644 --- a/openmeter/billing/charges/flatfee/adapter/charge.go +++ b/openmeter/billing/charges/flatfee/adapter/charge.go @@ -7,6 +7,7 @@ import ( "github.com/samber/lo" + "github.com/openmeterio/openmeter/openmeter/billing" "github.com/openmeterio/openmeter/openmeter/billing/charges/flatfee" "github.com/openmeterio/openmeter/openmeter/billing/charges/meta" metaadapter "github.com/openmeterio/openmeter/openmeter/billing/charges/meta/adapter" @@ -15,7 +16,6 @@ import ( dbchargeflatfee "github.com/openmeterio/openmeter/openmeter/ent/db/chargeflatfee" dbchargeflatfeeoverride "github.com/openmeterio/openmeter/openmeter/ent/db/chargeflatfeeoverride" dbchargeflatfeerun "github.com/openmeterio/openmeter/openmeter/ent/db/chargeflatfeerun" - "github.com/openmeterio/openmeter/openmeter/productcatalog" "github.com/openmeterio/openmeter/pkg/clock" "github.com/openmeterio/openmeter/pkg/convert" "github.com/openmeterio/openmeter/pkg/framework/entutils" @@ -42,9 +42,9 @@ func (a *adapter) UpdateCharge(ctx context.Context, charge flatfee.ChargeBase) ( intent := charge.Intent.GetBaseIntent() - var discounts *productcatalog.Discounts + var discounts *billing.Discounts if intent.PercentageDiscounts != nil { - discounts = &productcatalog.Discounts{Percentage: intent.PercentageDiscounts} + discounts = &billing.Discounts{Percentage: intent.PercentageDiscounts} } proRating, err := proRatingConfigToDB(intent.ProRating) @@ -57,12 +57,16 @@ func (a *adapter) UpdateCharge(ctx context.Context, charge flatfee.ChargeBase) ( SetPaymentTerm(intent.PaymentTerm). SetOrClearIntentDeletedAt(convert.TimePtrIn(intent.IntentDeletedAt, time.UTC)). SetInvoiceAt(meta.NormalizeTimestamp(intent.InvoiceAt).In(time.UTC)). - SetDiscounts(discounts). SetOrClearFeatureID(charge.State.FeatureID). SetProRating(proRating). SetStatusDetailed(charge.Status). SetAmountBeforeProration(intent.AmountBeforeProration). SetAmountAfterProration(charge.State.AmountAfterProration) + if discounts != nil { + update = update.SetDiscounts(discounts) + } else { + update = update.ClearDiscounts() + } update, err = chargemeta.Update(update, chargemeta.UpdateInput{ ManagedResource: charge.ManagedResource, @@ -340,9 +344,9 @@ func (a *adapter) buildCreateFlatFeeCharge(ns string, intentWithStatus flatfee.I intent := intentWithStatus.Intent - var discounts *productcatalog.Discounts + var discounts *billing.Discounts if intent.PercentageDiscounts != nil { - discounts = &productcatalog.Discounts{Percentage: intent.PercentageDiscounts} + discounts = &billing.Discounts{Percentage: intent.PercentageDiscounts} } proRating, err := proRatingConfigToDB(intent.ProRating) diff --git a/openmeter/billing/charges/flatfee/adapter/intentoverride.go b/openmeter/billing/charges/flatfee/adapter/intentoverride.go index 1cb275ad89..24d26806f5 100644 --- a/openmeter/billing/charges/flatfee/adapter/intentoverride.go +++ b/openmeter/billing/charges/flatfee/adapter/intentoverride.go @@ -8,6 +8,7 @@ import ( "github.com/samber/lo" + "github.com/openmeterio/openmeter/openmeter/billing" "github.com/openmeterio/openmeter/openmeter/billing/charges/flatfee" "github.com/openmeterio/openmeter/openmeter/billing/charges/meta" entdb "github.com/openmeterio/openmeter/openmeter/ent/db" @@ -24,6 +25,11 @@ func mapIntentOverrideFromDB(dbOverride *entdb.ChargeFlatFeeOverride) *flatfee.I return nil } + var percentageDiscounts *billing.PercentageDiscount + if dbOverride.Discounts != nil { + percentageDiscounts = dbOverride.Discounts.Percentage + } + return &flatfee.IntentMutableFields{ IntentMutableFields: meta.IntentMutableFields{ Name: dbOverride.Name, @@ -43,7 +49,7 @@ func mapIntentOverrideFromDB(dbOverride *entdb.ChargeFlatFeeOverride) *flatfee.I PaymentTerm: dbOverride.PaymentTerm, ProRating: lo.FromPtr(dbOverride.ProRating), AmountBeforeProration: dbOverride.AmountBeforeProration, - PercentageDiscounts: dbOverride.PercentageDiscounts, + PercentageDiscounts: percentageDiscounts, } } @@ -162,7 +168,7 @@ func (a *adapter) createIntentOverride(ctx context.Context, chargeID meta.Charge create = create.SetMetadata(&normalized.Metadata) } if normalized.PercentageDiscounts != nil { - create = create.SetPercentageDiscounts(normalized.PercentageDiscounts) + create = create.SetDiscounts(&billing.Discounts{Percentage: normalized.PercentageDiscounts}) } return create.Save(ctx) @@ -203,9 +209,9 @@ func (a *adapter) updateIntentOverride(ctx context.Context, chargeID meta.Charge update = update.SetMetadata(&normalized.Metadata) } if normalized.PercentageDiscounts == nil { - update = update.ClearPercentageDiscounts() + update = update.ClearDiscounts() } else { - update = update.SetPercentageDiscounts(normalized.PercentageDiscounts) + update = update.SetDiscounts(&billing.Discounts{Percentage: normalized.PercentageDiscounts}) } affectedRows, err := update.Save(ctx) diff --git a/openmeter/billing/charges/flatfee/adapter/intentoverride_test.go b/openmeter/billing/charges/flatfee/adapter/intentoverride_test.go index afb7e002ba..8bb30b9b3e 100644 --- a/openmeter/billing/charges/flatfee/adapter/intentoverride_test.go +++ b/openmeter/billing/charges/flatfee/adapter/intentoverride_test.go @@ -98,6 +98,7 @@ func (s *FlatFeeIntentOverrideAdapterSuite) TestUpdateAndReadIntentOverride() { overrideInvoiceAt := time.Date(2026, 1, 21, 0, 0, 0, 0, time.UTC) amountBeforeProration := alpacadecimal.NewFromInt(42) paymentTerm := productcatalog.InAdvancePaymentTerm + overrideDiscountCorrelationID := "01J00000000000000000000000" proRating := productcatalog.ProRatingConfig{ Enabled: true, Mode: productcatalog.ProRatingModeProratePrices, @@ -126,9 +127,12 @@ func (s *FlatFeeIntentOverrideAdapterSuite) TestUpdateAndReadIntentOverride() { PaymentTerm: paymentTerm, ProRating: proRating, AmountBeforeProration: amountBeforeProration, - PercentageDiscounts: lo.ToPtr(productcatalog.PercentageDiscount{ - Percentage: models.NewPercentage(10), - }), + PercentageDiscounts: &billing.PercentageDiscount{ + PercentageDiscount: productcatalog.PercentageDiscount{ + Percentage: models.NewPercentage(10), + }, + CorrelationID: overrideDiscountCorrelationID, + }, } chargeWithMissingOverride := charge.ChargeBase @@ -149,7 +153,7 @@ func (s *FlatFeeIntentOverrideAdapterSuite) TestUpdateAndReadIntentOverride() { updated, err = s.adapter.CreateChargeOverride(ctx, updated, override) s.Require().NoError(err) s.Nil(updated.DeletedAt) - s.requireOverrideMatches(updated.Intent.GetOverrideLayerMutableFields(), overrideServicePeriod, overrideFullServicePeriod, overrideBillingPeriod, overrideInvoiceAt, overrideTaxCodeID) + s.requireOverrideMatches(updated.Intent.GetOverrideLayerMutableFields(), overrideServicePeriod, overrideFullServicePeriod, overrideBillingPeriod, overrideInvoiceAt, overrideTaxCodeID, overrideDiscountCorrelationID) _, err = s.adapter.CreateChargeOverride(ctx, updated, override) s.Require().Error(err) @@ -160,7 +164,7 @@ func (s *FlatFeeIntentOverrideAdapterSuite) TestUpdateAndReadIntentOverride() { })) updated, err = s.adapter.UpdateCharge(ctx, updated) s.Require().NoError(err) - s.requireOverrideMatches(updated.Intent.GetOverrideLayerMutableFields(), overrideServicePeriod, overrideFullServicePeriod, overrideBillingPeriod, overrideInvoiceAt, overrideTaxCodeID) + s.requireOverrideMatches(updated.Intent.GetOverrideLayerMutableFields(), overrideServicePeriod, overrideFullServicePeriod, overrideBillingPeriod, overrideInvoiceAt, overrideTaxCodeID, overrideDiscountCorrelationID) s.Require().NoError(updated.Intent.Mutate(chargesmeta.ChangeTargetOverride, func(fields *flatfee.IntentMutableFields) { fields.Description = nil @@ -283,6 +287,7 @@ func (s *FlatFeeIntentOverrideAdapterSuite) requireOverrideMatches( billingPeriod timeutil.ClosedPeriod, invoiceAt time.Time, taxCodeID string, + discountCorrelationID string, ) { s.T().Helper() @@ -304,6 +309,7 @@ func (s *FlatFeeIntentOverrideAdapterSuite) requireOverrideMatches( s.Equal(float64(42), override.AmountBeforeProration.InexactFloat64()) s.Require().NotNil(override.PercentageDiscounts) s.Equal(models.NewPercentage(10), override.PercentageDiscounts.Percentage) + s.Equal(discountCorrelationID, override.PercentageDiscounts.CorrelationID) } func (s *FlatFeeIntentOverrideAdapterSuite) createCharge(namespace string) flatfee.Charge { diff --git a/openmeter/billing/charges/flatfee/adapter/mapper.go b/openmeter/billing/charges/flatfee/adapter/mapper.go index 7996a199fc..a9b0642b71 100644 --- a/openmeter/billing/charges/flatfee/adapter/mapper.go +++ b/openmeter/billing/charges/flatfee/adapter/mapper.go @@ -7,6 +7,7 @@ import ( "github.com/samber/lo" + "github.com/openmeterio/openmeter/openmeter/billing" "github.com/openmeterio/openmeter/openmeter/billing/charges/flatfee" "github.com/openmeterio/openmeter/openmeter/billing/charges/meta" "github.com/openmeterio/openmeter/openmeter/billing/charges/models/chargemeta" @@ -129,7 +130,7 @@ func sortDetailedLines(lines flatfee.DetailedLines) { } func MapChargeBaseFromDB(entity *entdb.ChargeFlatFee) flatfee.ChargeBase { - var percentageDiscounts *productcatalog.PercentageDiscount + var percentageDiscounts *billing.PercentageDiscount if entity.Discounts != nil { percentageDiscounts = entity.Discounts.Percentage } diff --git a/openmeter/billing/charges/flatfee/charge.go b/openmeter/billing/charges/flatfee/charge.go index ad8c534237..6efd431386 100644 --- a/openmeter/billing/charges/flatfee/charge.go +++ b/openmeter/billing/charges/flatfee/charge.go @@ -9,6 +9,7 @@ import ( "github.com/alpacahq/alpacadecimal" "github.com/samber/lo" + "github.com/openmeterio/openmeter/openmeter/billing" "github.com/openmeterio/openmeter/openmeter/billing/charges/meta" "github.com/openmeterio/openmeter/openmeter/customer" "github.com/openmeterio/openmeter/openmeter/productcatalog" @@ -465,10 +466,10 @@ type IntentMutableFields struct { // Adapters derive the effective charge DeletedAt from this value when no intent override is present. IntentDeletedAt *time.Time `json:"intentDeletedAt,omitempty"` - InvoiceAt time.Time `json:"invoiceAt"` - PaymentTerm productcatalog.PaymentTermType `json:"paymentTerm"` - FeatureKey string `json:"featureKey,omitempty"` - PercentageDiscounts *productcatalog.PercentageDiscount `json:"percentageDiscounts"` + InvoiceAt time.Time `json:"invoiceAt"` + PaymentTerm productcatalog.PaymentTermType `json:"paymentTerm"` + FeatureKey string `json:"featureKey,omitempty"` + PercentageDiscounts *billing.PercentageDiscount `json:"percentageDiscounts"` ProRating productcatalog.ProRatingConfig `json:"proRating"` AmountBeforeProration alpacadecimal.Decimal `json:"amountBeforeProration"` diff --git a/openmeter/billing/charges/flatfee/service/create.go b/openmeter/billing/charges/flatfee/service/create.go index c453ac644f..e275c704d5 100644 --- a/openmeter/billing/charges/flatfee/service/create.go +++ b/openmeter/billing/charges/flatfee/service/create.go @@ -207,9 +207,7 @@ func buildFlatFeeGatheringLine(input buildFlatFeeGatheringLineInput) (billing.Ga if lineIntent.PercentageDiscounts != nil { gatheringLine.RateCardDiscounts = billing.Discounts{ - Percentage: &billing.PercentageDiscount{ - PercentageDiscount: *lineIntent.PercentageDiscounts, - }, + Percentage: lineIntent.PercentageDiscounts.CloneOrNil(), } } diff --git a/openmeter/billing/charges/flatfee/service/manualedit.go b/openmeter/billing/charges/flatfee/service/manualedit.go index 6efb90c147..1beaf837a7 100644 --- a/openmeter/billing/charges/flatfee/service/manualedit.go +++ b/openmeter/billing/charges/flatfee/service/manualedit.go @@ -68,6 +68,7 @@ func (s *CreditThenInvoiceStateMachine) intentMutableFieldsFromManualLine(line b out.FeatureKey = line.GetFeatureKey() out.PaymentTerm = flatPrice.PaymentTerm out.AmountBeforeProration = flatPrice.Amount + out.PercentageDiscounts = line.GetRateCardDiscounts().Percentage.CloneOrNil() var taxConfig *billing.TaxConfig switch invoiceLine := line.AsInvoiceLine(); invoiceLine.Type() { @@ -97,12 +98,6 @@ func (s *CreditThenInvoiceStateMachine) intentMutableFieldsFromManualLine(line b } } - if line.GetRateCardDiscounts().Percentage == nil { - out.PercentageDiscounts = nil - } else { - out.PercentageDiscounts = lo.ToPtr(line.GetRateCardDiscounts().Percentage.PercentageDiscount.Clone()) - } - out = out.Normalized(s.Charge.Intent.GetCurrency()) if err := out.Validate(); err != nil { return flatfee.IntentMutableFields{}, err @@ -198,7 +193,7 @@ func intentFromManualCreatedLine( } if line.GetRateCardDiscounts().Percentage != nil { - intent.PercentageDiscounts = lo.ToPtr(line.GetRateCardDiscounts().Percentage.PercentageDiscount.Clone()) + intent.PercentageDiscounts = lo.ToPtr(line.GetRateCardDiscounts().Percentage.Clone()) } intent = intent.Normalized() diff --git a/openmeter/billing/charges/service/pendinglines.go b/openmeter/billing/charges/service/pendinglines.go index 0e49b0dcba..76f174aeba 100644 --- a/openmeter/billing/charges/service/pendinglines.go +++ b/openmeter/billing/charges/service/pendinglines.go @@ -158,7 +158,7 @@ func mapPendingInvoiceLineToChargeIntent(customerID string, currency currencyx.C InvoiceAt: line.InvoiceAt, PaymentTerm: flatPrice.PaymentTerm, FeatureKey: line.FeatureKey, - PercentageDiscounts: billingPercentageDiscountToProductCatalog(line.RateCardDiscounts.Percentage), + PercentageDiscounts: line.RateCardDiscounts.Percentage.CloneOrNil(), AmountBeforeProration: flatPrice.Amount, }, SettlementMode: productcatalog.CreditThenInvoiceSettlementMode, @@ -171,36 +171,13 @@ func mapPendingInvoiceLineToChargeIntent(customerID string, currency currencyx.C InvoiceAt: line.InvoiceAt, FeatureKey: line.FeatureKey, Price: line.Price, - Discounts: billingDiscountsToProductCatalog(line.RateCardDiscounts), + Discounts: line.RateCardDiscounts.Clone(), }, SettlementMode: productcatalog.CreditThenInvoiceSettlementMode, }), nil } } -func billingDiscountsToProductCatalog(discounts billing.Discounts) productcatalog.Discounts { - return productcatalog.Discounts{ - Percentage: billingPercentageDiscountToProductCatalog(discounts.Percentage), - Usage: billingUsageDiscountToProductCatalog(discounts.Usage), - } -} - -func billingPercentageDiscountToProductCatalog(discount *billing.PercentageDiscount) *productcatalog.PercentageDiscount { - if discount == nil { - return nil - } - - return lo.ToPtr(discount.PercentageDiscount.Clone()) -} - -func billingUsageDiscountToProductCatalog(discount *billing.UsageDiscount) *productcatalog.UsageDiscount { - if discount == nil { - return nil - } - - return lo.ToPtr(discount.UsageDiscount.Clone()) -} - type orderPendingLinesByCreatedChargesInput struct { lines []billing.GatheringLine createdCharges charges.Charges diff --git a/openmeter/billing/charges/usagebased/adapter/intentoverride_test.go b/openmeter/billing/charges/usagebased/adapter/intentoverride_test.go index c884908b45..6c3dbeeceb 100644 --- a/openmeter/billing/charges/usagebased/adapter/intentoverride_test.go +++ b/openmeter/billing/charges/usagebased/adapter/intentoverride_test.go @@ -102,10 +102,13 @@ func (s *UsageBasedIntentOverrideAdapterSuite) TestUpdateAndReadIntentOverride() overridePrice := productcatalog.NewPriceFrom(productcatalog.UnitPrice{ Amount: alpacadecimal.NewFromFloat(0.2), }) - overrideDiscounts := productcatalog.Discounts{ - Percentage: lo.ToPtr(productcatalog.PercentageDiscount{ - Percentage: models.NewPercentage(10), - }), + overrideDiscounts := billing.Discounts{ + Percentage: &billing.PercentageDiscount{ + PercentageDiscount: productcatalog.PercentageDiscount{ + Percentage: models.NewPercentage(10), + }, + CorrelationID: ulid.Make().String(), + }, } s.Require().NoError(charge.Intent.Mutate(chargesmeta.ChangeTargetBase, func(fields *usagebased.IntentMutableFields) { @@ -375,7 +378,7 @@ func (s *UsageBasedIntentOverrideAdapterSuite) requireOverrideMatches( invoiceAt time.Time, taxCodeID string, price *productcatalog.Price, - discounts productcatalog.Discounts, + discounts billing.Discounts, ) { s.T().Helper() diff --git a/openmeter/billing/charges/usagebased/charge.go b/openmeter/billing/charges/usagebased/charge.go index dc948bf858..90033f6722 100644 --- a/openmeter/billing/charges/usagebased/charge.go +++ b/openmeter/billing/charges/usagebased/charge.go @@ -7,6 +7,7 @@ import ( "github.com/samber/lo" + "github.com/openmeterio/openmeter/openmeter/billing" "github.com/openmeterio/openmeter/openmeter/billing/charges/meta" "github.com/openmeterio/openmeter/openmeter/billing/models/totals" "github.com/openmeterio/openmeter/openmeter/customer" @@ -376,7 +377,7 @@ func (i OverridableIntent) GetEffectivePrice() productcatalog.Price { // GetEffectiveDiscounts returns cloned discounts from the active mutable layer, // preferring the override layer when it is present. -func (i OverridableIntent) GetEffectiveDiscounts() productcatalog.Discounts { +func (i OverridableIntent) GetEffectiveDiscounts() billing.Discounts { if i.overrideLayer != nil { return i.overrideLayer.Discounts.Clone() } @@ -525,7 +526,7 @@ type IntentMutableFields struct { Price productcatalog.Price `json:"price"` - Discounts productcatalog.Discounts `json:"discounts"` + Discounts billing.Discounts `json:"discounts"` // UnitConfig is the optional unit conversion snapshotted from the effective // rate card. Like Price it is a mutable rating input (set on create and diff --git a/openmeter/billing/charges/usagebased/rating.go b/openmeter/billing/charges/usagebased/rating.go index 561e9f695c..aba7713e9f 100644 --- a/openmeter/billing/charges/usagebased/rating.go +++ b/openmeter/billing/charges/usagebased/rating.go @@ -50,25 +50,7 @@ func (r RateableIntent) GetName() string { } func (r RateableIntent) GetRateCardDiscounts() billing.Discounts { - out := billing.Discounts{} - - if r.Discounts.Usage != nil { - out.Usage = &billing.UsageDiscount{ - UsageDiscount: *r.Discounts.Usage, - // Note: given we are not using splitlinegroups this correlation ID is not used for anything in charges. - CorrelationID: "usagebased-ratecard-usage", - } - } - - if r.Discounts.Percentage != nil { - out.Percentage = &billing.PercentageDiscount{ - PercentageDiscount: *r.Discounts.Percentage, - // Note: given we are not using splitlinegroups this correlation ID is not used for anything in charges. - CorrelationID: "usagebased-ratecard-percentage", - } - } - - return out + return r.Discounts.Clone() } func (r RateableIntent) GetStandardLineDiscounts() billing.StandardLineDiscounts { diff --git a/openmeter/billing/charges/usagebased/service/create.go b/openmeter/billing/charges/usagebased/service/create.go index f194382f73..e077cafc5a 100644 --- a/openmeter/billing/charges/usagebased/service/create.go +++ b/openmeter/billing/charges/usagebased/service/create.go @@ -127,19 +127,9 @@ func gatheringLineFromUsageBasedChargeForPeriod(charge usagebased.Charge, servic ChargeID: lo.ToPtr(charge.ID), Engine: billing.LineEngineTypeChargeUsageBased, Subscription: subscription, - }, - } - if intent.Discounts.Usage != nil { - gatheringLine.RateCardDiscounts.Usage = &billing.UsageDiscount{ - UsageDiscount: *intent.Discounts.Usage, - } - } - - if intent.Discounts.Percentage != nil { - gatheringLine.RateCardDiscounts.Percentage = &billing.PercentageDiscount{ - PercentageDiscount: *intent.Discounts.Percentage, - } + RateCardDiscounts: intent.Discounts.Clone(), + }, } return usagebased.ChargeWithGatheringLine{ diff --git a/openmeter/billing/charges/usagebased/service/rating/testutils/testutils.go b/openmeter/billing/charges/usagebased/service/rating/testutils/testutils.go index bd60ad699d..b401eac6b7 100644 --- a/openmeter/billing/charges/usagebased/service/rating/testutils/testutils.go +++ b/openmeter/billing/charges/usagebased/service/rating/testutils/testutils.go @@ -98,7 +98,7 @@ func NewIntentForTest(t testing.TB, servicePeriod timeutil.ClosedPeriod, price p InvoiceAt: servicePeriod.To, FeatureKey: "feature-1", Price: price, - Discounts: discounts, + Discounts: billing.DiscountsFromProductCatalog(discounts).UpsertCorrelationIDs(), }, SettlementMode: productcatalog.CreditThenInvoiceSettlementMode, } diff --git a/openmeter/billing/discount.go b/openmeter/billing/discount.go index 01673ad6a1..a2a9c06781 100644 --- a/openmeter/billing/discount.go +++ b/openmeter/billing/discount.go @@ -5,6 +5,7 @@ import ( "errors" "fmt" + "github.com/oklog/ulid/v2" "github.com/samber/lo" "github.com/openmeterio/openmeter/openmeter/productcatalog" @@ -35,6 +36,14 @@ func (d PercentageDiscount) Clone() PercentageDiscount { } } +func (d *PercentageDiscount) CloneOrNil() *PercentageDiscount { + if d == nil { + return nil + } + + return lo.ToPtr(d.Clone()) +} + func (d PercentageDiscount) Equal(other PercentageDiscount) bool { if d.PercentageDiscount.Hash() != other.PercentageDiscount.Hash() { return false @@ -123,6 +132,60 @@ func (d Discounts) Equal(other Discounts) bool { return true } +func (d Discounts) Validate() error { + var errs []error + + if d.Percentage != nil { + if err := d.Percentage.Validate(); err != nil { + errs = append(errs, fmt.Errorf("percentage: %w", err)) + } + } + + if d.Usage != nil { + if err := d.Usage.Validate(); err != nil { + errs = append(errs, fmt.Errorf("usage: %w", err)) + } + } + + return models.NewNillableGenericValidationError(errors.Join(errs...)) +} + +func DiscountsFromProductCatalog(discounts productcatalog.Discounts) Discounts { + out := Discounts{} + + if discounts.Percentage != nil { + out.Percentage = &PercentageDiscount{ + PercentageDiscount: discounts.Percentage.Clone(), + } + } + + if discounts.Usage != nil { + out.Usage = &UsageDiscount{ + UsageDiscount: discounts.Usage.Clone(), + } + } + + return out +} + +func (d Discounts) UpsertCorrelationIDs() Discounts { + out := d.Clone() + + if out.Percentage != nil { + if out.Percentage.CorrelationID == "" { + out.Percentage.CorrelationID = ulid.Make().String() + } + } + + if out.Usage != nil { + if out.Usage.CorrelationID == "" { + out.Usage.CorrelationID = ulid.Make().String() + } + } + + return out +} + // DiscountReason type type discountReason interface { json.Marshaler diff --git a/openmeter/billing/httpdriver/deprecations.go b/openmeter/billing/httpdriver/deprecations.go index dc474dabff..4ccdc51af9 100644 --- a/openmeter/billing/httpdriver/deprecations.go +++ b/openmeter/billing/httpdriver/deprecations.go @@ -146,6 +146,8 @@ func mapAndValidateInvoiceLineRateCardDeprecatedFields(in invoiceLineRateCardIte Err: fmt.Errorf("failed to parse discounts: %w", err), } } + + discounts = discounts.UpsertCorrelationIDs() } return &invoiceLineRateCardParsed{ diff --git a/openmeter/billing/httpdriver/handler.go b/openmeter/billing/httpdriver/handler.go index afe7e3ca0c..10a4313ead 100644 --- a/openmeter/billing/httpdriver/handler.go +++ b/openmeter/billing/httpdriver/handler.go @@ -57,6 +57,7 @@ type handler struct { service billing.Service chargeService billingcharges.ChargeService appService app.Service + logger *slog.Logger namespaceDecoder namespacedriver.NamespaceDecoder featureSwitches config.BillingFeatureSwitchesConfiguration credits config.CreditsConfiguration @@ -89,6 +90,7 @@ func New( service: service, chargeService: chargeService, appService: appService, + logger: logger, namespaceDecoder: namespaceDecoder, options: options, featureSwitches: featureSwitches, diff --git a/openmeter/billing/httpdriver/invoice.go b/openmeter/billing/httpdriver/invoice.go index c9ac3acf9a..85d36368de 100644 --- a/openmeter/billing/httpdriver/invoice.go +++ b/openmeter/billing/httpdriver/invoice.go @@ -501,11 +501,13 @@ func (h *handler) UpdateInvoice() UpdateInvoiceHandler { case billing.InvoiceTypeGathering: updatedInvoice, err = h.updateGatheringInvoice(ctx, invoice, request) if err != nil { + h.logInvoiceEditRejected(ctx, invoice.Type(), request, err) return UpdateInvoiceResponse{}, fmt.Errorf("updating gathering invoice: %w", err) } case billing.InvoiceTypeStandard: updatedInvoice, err = h.updateStandardInvoice(ctx, invoice, request) if err != nil { + h.logInvoiceEditRejected(ctx, invoice.Type(), request, err) return UpdateInvoiceResponse{}, fmt.Errorf("updating standard invoice: %w", err) } default: @@ -523,6 +525,21 @@ func (h *handler) UpdateInvoice() UpdateInvoiceHandler { ) } +func (h *handler) logInvoiceEditRejected(ctx context.Context, invoiceType billing.InvoiceType, request UpdateInvoiceRequest, err error) { + if h.logger == nil { + return + } + + h.logger.WarnContext(ctx, "billing invoice edit rejected", + "namespace", request.InvoiceID.Namespace, + "invoiceID", request.InvoiceID.ID, + "invoiceType", invoiceType, + // Line edits contain billing configuration but no invoice, customer, or supplier PII. + "lines", request.Input.Lines, + "rejection", err.Error(), + ) +} + func (h *handler) updateGatheringInvoice(ctx context.Context, invoice billing.Invoice, request UpdateInvoiceRequest) (billing.Invoice, error) { gatheringInvoice, err := invoice.AsGatheringInvoice() if err != nil { diff --git a/openmeter/billing/service/invoicecalc/discounts.go b/openmeter/billing/service/invoicecalc/discounts.go index ff6302a3b5..9eec55e2d9 100644 --- a/openmeter/billing/service/invoicecalc/discounts.go +++ b/openmeter/billing/service/invoicecalc/discounts.go @@ -1,22 +1,11 @@ package invoicecalc -import ( - "fmt" - - "github.com/oklog/ulid/v2" - - "github.com/openmeterio/openmeter/openmeter/billing" -) +import "github.com/openmeterio/openmeter/openmeter/billing" func UpsertDiscountCorrelationIDs(invoice *billing.StandardInvoice) error { lines := invoice.Lines.OrEmpty() for _, line := range lines { - updatedDiscounts, err := ensureDiscountCorrelationIDs(line.RateCardDiscounts) - if err != nil { - return err - } - - line.RateCardDiscounts = updatedDiscounts + line.RateCardDiscounts = line.RateCardDiscounts.UpsertCorrelationIDs() } return nil @@ -24,12 +13,7 @@ func UpsertDiscountCorrelationIDs(invoice *billing.StandardInvoice) error { func UpsertGatheringInvoiceDiscountCorrelationIDs(invoice *billing.GatheringInvoice) error { lines, err := invoice.Lines.MapWithErr(func(line billing.GatheringLine) (billing.GatheringLine, error) { - updatedDiscounts, err := ensureDiscountCorrelationIDs(line.RateCardDiscounts) - if err != nil { - return billing.GatheringLine{}, err - } - - line.RateCardDiscounts = updatedDiscounts + line.RateCardDiscounts = line.RateCardDiscounts.UpsertCorrelationIDs() return line, nil }) @@ -41,36 +25,3 @@ func UpsertGatheringInvoiceDiscountCorrelationIDs(invoice *billing.GatheringInvo return nil } - -func ensureDiscountCorrelationIDs(discounts billing.Discounts) (billing.Discounts, error) { - if discounts.Percentage != nil { - corrID, err := generateDiscountCorrelationID(discounts.Percentage.CorrelationID) - if err != nil { - return billing.Discounts{}, err - } - discounts.Percentage.CorrelationID = corrID - } - - if discounts.Usage != nil { - corrID, err := generateDiscountCorrelationID(discounts.Usage.CorrelationID) - if err != nil { - return billing.Discounts{}, err - } - discounts.Usage.CorrelationID = corrID - } - - return discounts, nil -} - -func generateDiscountCorrelationID(correlationID string) (string, error) { - if correlationID == "" { - return ulid.Make().String(), nil - } - - _, err := ulid.Parse(correlationID) - if err != nil { - return "", fmt.Errorf("invalid correlation ID: %w", err) - } - - return correlationID, nil -} diff --git a/openmeter/billing/stdinvoiceedit.go b/openmeter/billing/stdinvoiceedit.go index 2627838c84..c7ae62ed76 100644 --- a/openmeter/billing/stdinvoiceedit.go +++ b/openmeter/billing/stdinvoiceedit.go @@ -378,7 +378,7 @@ func applyExistingLineOverrideToStandardLine(o ExistingLineOverride, line *Stand } if val, ok := o.Discounts.Get(); ok { - line.RateCardDiscounts = val.Clone() + line.RateCardDiscounts = val.Clone().UpsertCorrelationIDs() } return nil @@ -418,7 +418,7 @@ func applyExistingLineOverrideToGatheringLine(o ExistingLineOverride, line *Gath } if val, ok := o.Discounts.Get(); ok { - line.RateCardDiscounts = val.Clone() + line.RateCardDiscounts = val.Clone().UpsertCorrelationIDs() } } diff --git a/openmeter/billing/worker/subscriptionsync/service/reconciler/patchchargeflatfee.go b/openmeter/billing/worker/subscriptionsync/service/reconciler/patchchargeflatfee.go index 92d19ea059..9e44a41c9b 100644 --- a/openmeter/billing/worker/subscriptionsync/service/reconciler/patchchargeflatfee.go +++ b/openmeter/billing/worker/subscriptionsync/service/reconciler/patchchargeflatfee.go @@ -123,7 +123,7 @@ func newFlatFeeChargeIntent(target targetstate.StateItem) (charges.ChargeIntent, InvoiceAt: target.GetInvoiceAt(), PaymentTerm: flatPrice.PaymentTerm, FeatureKey: lo.FromPtr(rateCardMeta.FeatureKey), - PercentageDiscounts: rateCardMeta.Discounts.Percentage, + PercentageDiscounts: billing.DiscountsFromProductCatalog(rateCardMeta.Discounts).UpsertCorrelationIDs().Percentage, ProRating: target.Subscription.ProRatingConfig, AmountBeforeProration: flatPrice.Amount, }, diff --git a/openmeter/billing/worker/subscriptionsync/service/reconciler/patchchargeusagebased.go b/openmeter/billing/worker/subscriptionsync/service/reconciler/patchchargeusagebased.go index 083c529d78..81dc929f47 100644 --- a/openmeter/billing/worker/subscriptionsync/service/reconciler/patchchargeusagebased.go +++ b/openmeter/billing/worker/subscriptionsync/service/reconciler/patchchargeusagebased.go @@ -120,7 +120,7 @@ func newUsageBasedChargeIntent(target targetstate.StateItem) (charges.ChargeInte InvoiceAt: target.GetInvoiceAt(), FeatureKey: lo.FromPtr(rateCardMeta.FeatureKey), Price: *price, - Discounts: rateCardMeta.Discounts, + Discounts: billing.DiscountsFromProductCatalog(rateCardMeta.Discounts).UpsertCorrelationIDs(), // TODO(unit-config): copy rateCardMeta.UnitConfig here (with a // round-trip test) when the "snapshot unit_config onto subscriptions" // ticket lands; the charge adapter already persists Intent.UnitConfig. diff --git a/openmeter/billing/worker/subscriptionsync/service/sync_credittheninvoice_test.go b/openmeter/billing/worker/subscriptionsync/service/sync_credittheninvoice_test.go index db36f08c22..507cc99aeb 100644 --- a/openmeter/billing/worker/subscriptionsync/service/sync_credittheninvoice_test.go +++ b/openmeter/billing/worker/subscriptionsync/service/sync_credittheninvoice_test.go @@ -4162,6 +4162,190 @@ func (s *CreditThenInvoiceTestSuite) TestStandardInvoiceManualEditSync() { }) } +func (s *CreditThenInvoiceTestSuite) TestStandardInvoiceManualDiscountEditSync() { + ctx := s.T().Context() + start := s.mustParseTime("2024-01-01T00:00:00Z") + clock.FreezeTime(start) + defer clock.UnFreeze() + + // given: + // - a credit-then-invoice subscription has one recurring flat-fee charge + // - the billing profile requires manual invoice approval + // - the mutable draft standard invoice line is still managed by the flat-fee charge + // when: + // - the standard invoice line's percentage discount is edited through the invoice API + // then: + // - the edit routes through the flat-fee line engine and updates the charge override/current run + s.updateProfile(func(profile *billing.Profile) { + profile.WorkflowConfig.Invoicing.AutoAdvance = false + }) + s.assertCreditThenInvoiceBalances(expectedCreditThenInvoiceBalances{}) + + defaultTaxCodes, err := s.TaxCodeService.GetOrganizationDefaultTaxCodes(ctx, taxcode.GetOrganizationDefaultTaxCodesInput{Namespace: s.Namespace}) + s.NoError(err) + defaultTaxConfig := productcatalog.TaxCodeConfig{ + TaxCodeID: defaultTaxCodes.InvoicingTaxCodeID, + } + + subsView := s.createSubscriptionFromPlan(plan.CreatePlanInput{ + NamespacedModel: models.NamespacedModel{ + Namespace: s.Namespace, + }, + Plan: productcatalog.Plan{ + PlanMeta: productcatalog.PlanMeta{ + Name: "Test Plan", + Key: "test-plan", + Version: 1, + Currency: currency.USD, + SettlementMode: productcatalog.CreditThenInvoiceSettlementMode, + BillingCadence: datetime.MustParseDuration(s.T(), "P1M"), + ProRatingConfig: productcatalog.ProRatingConfig{ + Enabled: true, + Mode: productcatalog.ProRatingModeProratePrices, + }, + }, + Phases: []productcatalog.Phase{ + { + PhaseMeta: s.phaseMeta("first-phase", ""), + RateCards: productcatalog.RateCards{ + &productcatalog.FlatFeeRateCard{ + RateCardMeta: productcatalog.RateCardMeta{ + Key: "in-arrears", + Name: "in-arrears", + Price: productcatalog.NewPriceFrom(productcatalog.FlatPrice{ + Amount: alpacadecimal.NewFromFloat(15000), + PaymentTerm: productcatalog.InArrearsPaymentTerm, + }), + }, + BillingCadence: lo.ToPtr(datetime.MustParseDuration(s.T(), "P1M")), + }, + }, + }, + }, + }, + }) + + s.NoError(s.Service.SyncByView(ctx, subsView, s.mustParseTime("2024-02-01T00:00:00Z"))) + gatheringInvoice := s.gatheringInvoice(ctx, s.Namespace, s.Customer.ID) + s.DebugDumpInvoice("gathering invoice", gatheringInvoice) + s.Require().Len(gatheringInvoice.Lines.OrEmpty(), 1) + + clock.FreezeTime(s.mustParseTime("2024-02-01T00:00:00Z")) + draftInvoices, err := s.BillingService.InvoicePendingLines(ctx, billing.InvoicePendingLinesInput{ + Customer: s.Customer.GetID(), + AsOf: lo.ToPtr(clock.Now()), + }) + s.NoError(err) + s.Require().Len(draftInvoices, 1) + + draftInvoice := draftInvoices[0] + s.DebugDumpInvoice("draft invoice", draftInvoice) + s.Equal(billing.StandardInvoiceStatusDraftManualApprovalNeeded, draftInvoice.Status) + s.Require().Len(draftInvoice.Lines.OrEmpty(), 1) + s.assertCreditThenInvoiceBalances(expectedCreditThenInvoiceBalances{}) + + originalLine, err := draftInvoice.Lines.OrEmpty()[0].Clone() + s.NoError(err) + s.Equal(billing.SubscriptionManagedLine, originalLine.ManagedBy) + s.Equal(billing.LineEngineTypeChargeFlatFee, originalLine.Engine) + s.Require().NotNil(originalLine.ChargeID) + s.Nil(originalLine.RateCardDiscounts.Percentage) + s.AssertDecimalEqual(alpacadecimal.NewFromFloat(15000), originalLine.Totals.Amount, "original amount") + s.AssertDecimalEqual(alpacadecimal.Zero, originalLine.Totals.DiscountsTotal, "original discount total") + s.AssertDecimalEqual(alpacadecimal.NewFromFloat(15000), originalLine.Totals.Total, "original total") + + chargeBeforeEdit := s.mustGetFlatFeeChargeForInvoiceLineWithExpands(ctx, originalLine, chargesmeta.Expands{chargesmeta.ExpandRealizations}) + s.Equal(flatfee.StatusActiveRealizationProcessing, chargeBeforeEdit.Status) + s.Require().NotNil(chargeBeforeEdit.Realizations.CurrentRun) + s.False(chargeBeforeEdit.Realizations.CurrentRun.Immutable) + s.Require().NotNil(chargeBeforeEdit.Realizations.CurrentRun.LineID) + s.Require().NotNil(chargeBeforeEdit.Realizations.CurrentRun.InvoiceID) + s.Equal(originalLine.ID, *chargeBeforeEdit.Realizations.CurrentRun.LineID) + s.Equal(draftInvoice.ID, *chargeBeforeEdit.Realizations.CurrentRun.InvoiceID) + s.Nil(chargeBeforeEdit.Intent.GetBaseIntent().PercentageDiscounts) + s.assertTotals(chargeBeforeEdit.Realizations.CurrentRun.Totals, expectedTotalsInput{ + Amount: 15000, + Total: 15000, + }) + + discount := productcatalog.PercentageDiscount{ + Percentage: models.NewPercentage(50), + } + var updatedLine *billing.StandardLine + editedInvoice, err := s.BillingService.UpdateStandardInvoice(ctx, billing.UpdateStandardInvoiceInput{ + Invoice: draftInvoice.GetInvoiceID(), + ChangeSource: billing.ChangeSourceAPIRequest, + EditFn: func(invoice *billing.StandardInvoice) error { + lines := invoice.Lines.OrEmpty() + s.Require().Len(lines, 1) + + line := lines[0] + line.RateCardDiscounts = billing.Discounts{ + Percentage: &billing.PercentageDiscount{ + PercentageDiscount: discount, + }, + } + + updatedLine, err = line.Clone() + s.NoError(err) + return nil + }, + }) + s.Require().NoError(err) + s.DebugDumpInvoice("edited draft invoice", editedInvoice) + s.assertCreditThenInvoiceBalances(expectedCreditThenInvoiceBalances{}) + + editedInvoiceLine, found := lo.Find(editedInvoice.Lines.OrEmpty(), func(line *billing.StandardLine) bool { + return line != nil && line.ID == updatedLine.ID + }) + s.Require().True(found, "edited standard line should be found") + s.Equal(billing.SubscriptionManagedLine, updatedLine.ManagedBy, "edit request should not stamp managed by") + s.Equal(billing.ManuallyManagedLine, editedInvoiceLine.ManagedBy) + s.Equal(billing.LineEngineTypeChargeFlatFee, editedInvoiceLine.Engine) + s.Require().NotNil(editedInvoiceLine.ChargeID) + s.Equal(*originalLine.ChargeID, *editedInvoiceLine.ChargeID) + s.Require().NotNil(editedInvoiceLine.RateCardDiscounts.Percentage) + s.Equal(discount.Percentage, editedInvoiceLine.RateCardDiscounts.Percentage.Percentage) + s.NotEmpty(editedInvoiceLine.RateCardDiscounts.Percentage.CorrelationID) + s.AssertDecimalEqual(alpacadecimal.NewFromFloat(15000), editedInvoiceLine.Totals.Amount, "edited amount") + s.AssertDecimalEqual(alpacadecimal.NewFromFloat(7500), editedInvoiceLine.Totals.DiscountsTotal, "edited discount total") + s.AssertDecimalEqual(alpacadecimal.NewFromFloat(7500), editedInvoiceLine.Totals.Total, "edited total") + + s.assertFlatFeeChargeIntentsForInvoiceLine(ctx, "after standard line discount edit", updatedLine, expectedFlatFeeIntent{ + ServicePeriod: originalLine.Period, + InvoiceAt: chargeBeforeEdit.Intent.GetBaseIntent().InvoiceAt, + Amount: 15000, + PaymentTerm: productcatalog.InArrearsPaymentTerm, + TaxConfig: defaultTaxConfig, + }, expectedFlatFeeIntent{ + ServicePeriod: originalLine.Period, + InvoiceAt: chargeBeforeEdit.Intent.GetEffectiveInvoiceAt(), + Amount: 15000, + PaymentTerm: productcatalog.InArrearsPaymentTerm, + PercentageDiscounts: &billing.PercentageDiscount{ + PercentageDiscount: discount, + CorrelationID: editedInvoiceLine.RateCardDiscounts.Percentage.CorrelationID, + }, + TaxConfig: defaultTaxConfig, + }) + + chargeAfterEdit := s.mustGetFlatFeeChargeForInvoiceLineWithExpands(ctx, updatedLine, chargesmeta.Expands{chargesmeta.ExpandRealizations}) + s.Equal(flatfee.StatusActiveRealizationProcessing, chargeAfterEdit.Status) + s.Require().NotNil(chargeAfterEdit.Realizations.CurrentRun) + s.False(chargeAfterEdit.Realizations.CurrentRun.Immutable) + s.Require().NotNil(chargeAfterEdit.Realizations.CurrentRun.LineID) + s.Require().NotNil(chargeAfterEdit.Realizations.CurrentRun.InvoiceID) + s.Equal(updatedLine.ID, *chargeAfterEdit.Realizations.CurrentRun.LineID) + s.Equal(editedInvoice.ID, *chargeAfterEdit.Realizations.CurrentRun.InvoiceID) + s.Equal(originalLine.Period, chargeAfterEdit.Realizations.CurrentRun.ServicePeriod) + s.Equal(float64(15000), chargeAfterEdit.Realizations.CurrentRun.AmountAfterProration.InexactFloat64()) + s.assertTotals(chargeAfterEdit.Realizations.CurrentRun.Totals, expectedTotalsInput{ + Amount: 15000, + DiscountsTotal: 7500, + Total: 7500, + }) +} + func (s *CreditThenInvoiceTestSuite) TestStandardInvoiceManualCreateSync() { ctx := s.T().Context() start := s.mustParseTime("2024-01-01T00:00:00Z") @@ -8565,11 +8749,12 @@ func (s *CreditThenInvoiceTestSuite) mustGetUsageBasedChargeForInvoiceLine(ctx c } type expectedFlatFeeIntent struct { - ServicePeriod timeutil.ClosedPeriod - InvoiceAt time.Time - Amount float64 - PaymentTerm productcatalog.PaymentTermType - TaxConfig productcatalog.TaxCodeConfig + ServicePeriod timeutil.ClosedPeriod + InvoiceAt time.Time + Amount float64 + PaymentTerm productcatalog.PaymentTermType + PercentageDiscounts *billing.PercentageDiscount + TaxConfig productcatalog.TaxCodeConfig } func (s *CreditThenInvoiceTestSuite) mustGetFlatFeeChargeForInvoiceLine(ctx context.Context, line billing.GenericInvoiceLineReader) flatfee.Charge { @@ -8605,6 +8790,13 @@ func (s *CreditThenInvoiceTestSuite) assertFlatFeeIntent(label string, actual fl s.Equal(expected.InvoiceAt, actual.InvoiceAt, "%s: invoice at", label) s.Equal(expected.PaymentTerm, actual.PaymentTerm, "%s: payment term", label) s.Equal(expected.Amount, actual.AmountBeforeProration.InexactFloat64(), "%s: amount before proration", label) + if expected.PercentageDiscounts == nil { + s.Nil(actual.PercentageDiscounts, "%s: percentage discounts", label) + } else { + s.Require().NotNil(actual.PercentageDiscounts, "%s: percentage discounts", label) + s.Equal(expected.PercentageDiscounts.Percentage, actual.PercentageDiscounts.Percentage, "%s: percentage discount", label) + s.Equal(expected.PercentageDiscounts.CorrelationID, actual.PercentageDiscounts.CorrelationID, "%s: percentage discount correlation id", label) + } s.assertTaxCodeConfigEqual(expected.TaxConfig, actual.TaxConfig, label) } @@ -8726,17 +8918,19 @@ func (s *CreditThenInvoiceTestSuite) assertCreditThenInvoiceUsageBasedCharge(cha } type expectedTotalsInput struct { - Amount float64 - CreditsTotal float64 - Total float64 + Amount float64 + DiscountsTotal float64 + CreditsTotal float64 + Total float64 } func (s *CreditThenInvoiceTestSuite) assertTotals(actual totals.Totals, input expectedTotalsInput) { s.T().Helper() - s.Equal(input.Amount, actual.Amount.InexactFloat64(), "amount") - s.Equal(input.CreditsTotal, actual.CreditsTotal.InexactFloat64(), "credits total") - s.Equal(input.Total, actual.Total.InexactFloat64(), "total") + require.Equal(s.T(), input.Amount, actual.Amount.InexactFloat64(), "amount") + require.Equal(s.T(), input.DiscountsTotal, actual.DiscountsTotal.InexactFloat64(), "discounts total") + require.Equal(s.T(), input.CreditsTotal, actual.CreditsTotal.InexactFloat64(), "credits total") + require.Equal(s.T(), input.Total, actual.Total.InexactFloat64(), "total") } type createPromotionalCreditFundingInput struct { diff --git a/openmeter/billing/worker/subscriptionsync/service/targetstate/targetstateitem.go b/openmeter/billing/worker/subscriptionsync/service/targetstate/targetstateitem.go index 4353addbc4..e7b5e3dd5a 100644 --- a/openmeter/billing/worker/subscriptionsync/service/targetstate/targetstateitem.go +++ b/openmeter/billing/worker/subscriptionsync/service/targetstate/targetstateitem.go @@ -63,7 +63,7 @@ func (r StateItem) GetExpectedLine() (*billing.GatheringLine, error) { TaxConfig: r.Spec.RateCard.AsMeta().TaxConfig, ServicePeriod: r.GetServicePeriod(), InvoiceAt: r.GetInvoiceAt(), - RateCardDiscounts: discountsToBillingDiscounts(r.Spec.RateCard.AsMeta().Discounts), + RateCardDiscounts: billing.DiscountsFromProductCatalog(r.Spec.RateCard.AsMeta().Discounts), Subscription: &billing.SubscriptionReference{ SubscriptionID: r.Subscription.ID, PhaseID: r.PhaseID, @@ -120,20 +120,6 @@ func (r StateItem) GetExpectedLine() (*billing.GatheringLine, error) { return &line, nil } -func discountsToBillingDiscounts(discounts productcatalog.Discounts) billing.Discounts { - out := billing.Discounts{} - - if discounts.Usage != nil { - out.Usage = &billing.UsageDiscount{UsageDiscount: *discounts.Usage} - } - - if discounts.Percentage != nil { - out.Percentage = &billing.PercentageDiscount{PercentageDiscount: *discounts.Percentage} - } - - return out -} - func (r StateItem) shouldProrate() bool { if !r.Subscription.ProRatingConfig.Enabled { return false diff --git a/openmeter/ent/db/billinginvoiceline_create.go b/openmeter/ent/db/billinginvoiceline_create.go index 107c5bff8a..c61e088024 100644 --- a/openmeter/ent/db/billinginvoiceline_create.go +++ b/openmeter/ent/db/billinginvoiceline_create.go @@ -857,6 +857,11 @@ func (_c *BillingInvoiceLineCreate) check() error { return &ValidationError{Name: "status", err: fmt.Errorf(`db: validator failed for field "BillingInvoiceLine.status": %w`, err)} } } + if v, ok := _c.mutation.RatecardDiscounts(); ok { + if err := v.Validate(); err != nil { + return &ValidationError{Name: "ratecard_discounts", err: fmt.Errorf(`db: validator failed for field "BillingInvoiceLine.ratecard_discounts": %w`, err)} + } + } if _, ok := _c.mutation.Engine(); !ok { return &ValidationError{Name: "engine", err: errors.New(`db: missing required field "BillingInvoiceLine.engine"`)} } diff --git a/openmeter/ent/db/billinginvoiceline_update.go b/openmeter/ent/db/billinginvoiceline_update.go index 97a1ee4c5a..ce8071f4e6 100644 --- a/openmeter/ent/db/billinginvoiceline_update.go +++ b/openmeter/ent/db/billinginvoiceline_update.go @@ -1155,6 +1155,11 @@ func (_u *BillingInvoiceLineUpdate) check() error { return &ValidationError{Name: "status", err: fmt.Errorf(`db: validator failed for field "BillingInvoiceLine.status": %w`, err)} } } + if v, ok := _u.mutation.RatecardDiscounts(); ok { + if err := v.Validate(); err != nil { + return &ValidationError{Name: "ratecard_discounts", err: fmt.Errorf(`db: validator failed for field "BillingInvoiceLine.ratecard_discounts": %w`, err)} + } + } if v, ok := _u.mutation.Engine(); ok { if err := billinginvoiceline.EngineValidator(v); err != nil { return &ValidationError{Name: "engine", err: fmt.Errorf(`db: validator failed for field "BillingInvoiceLine.engine": %w`, err)} @@ -3092,6 +3097,11 @@ func (_u *BillingInvoiceLineUpdateOne) check() error { return &ValidationError{Name: "status", err: fmt.Errorf(`db: validator failed for field "BillingInvoiceLine.status": %w`, err)} } } + if v, ok := _u.mutation.RatecardDiscounts(); ok { + if err := v.Validate(); err != nil { + return &ValidationError{Name: "ratecard_discounts", err: fmt.Errorf(`db: validator failed for field "BillingInvoiceLine.ratecard_discounts": %w`, err)} + } + } if v, ok := _u.mutation.Engine(); ok { if err := billinginvoiceline.EngineValidator(v); err != nil { return &ValidationError{Name: "engine", err: fmt.Errorf(`db: validator failed for field "BillingInvoiceLine.engine": %w`, err)} diff --git a/openmeter/ent/db/billinginvoicesplitlinegroup_create.go b/openmeter/ent/db/billinginvoicesplitlinegroup_create.go index 1bc74c7b3e..afc07bfc4f 100644 --- a/openmeter/ent/db/billinginvoicesplitlinegroup_create.go +++ b/openmeter/ent/db/billinginvoicesplitlinegroup_create.go @@ -378,6 +378,11 @@ func (_c *BillingInvoiceSplitLineGroupCreate) check() error { if _, ok := _c.mutation.ServicePeriodEnd(); !ok { return &ValidationError{Name: "service_period_end", err: errors.New(`db: missing required field "BillingInvoiceSplitLineGroup.service_period_end"`)} } + if v, ok := _c.mutation.RatecardDiscounts(); ok { + if err := v.Validate(); err != nil { + return &ValidationError{Name: "ratecard_discounts", err: fmt.Errorf(`db: validator failed for field "BillingInvoiceSplitLineGroup.ratecard_discounts": %w`, err)} + } + } if _, ok := _c.mutation.Price(); !ok { return &ValidationError{Name: "price", err: errors.New(`db: missing required field "BillingInvoiceSplitLineGroup.price"`)} } diff --git a/openmeter/ent/db/chargeflatfee.go b/openmeter/ent/db/chargeflatfee.go index 54c9d40e02..20eac10c91 100644 --- a/openmeter/ent/db/chargeflatfee.go +++ b/openmeter/ent/db/chargeflatfee.go @@ -93,7 +93,7 @@ type ChargeFlatFee struct { // IntentDeletedAt holds the value of the "intent_deleted_at" field. IntentDeletedAt *time.Time `json:"intent_deleted_at,omitempty"` // Discounts holds the value of the "discounts" field. - Discounts *productcatalog.Discounts `json:"discounts,omitempty"` + Discounts *billing.Discounts `json:"discounts,omitempty"` // ProRating holds the value of the "pro_rating" field. ProRating flatfee.ProRatingModeAdapterEnum `json:"pro_rating,omitempty"` // FeatureKey holds the value of the "feature_key" field. diff --git a/openmeter/ent/db/chargeflatfee/chargeflatfee.go b/openmeter/ent/db/chargeflatfee/chargeflatfee.go index 6f0c77a375..18a4c66f3f 100644 --- a/openmeter/ent/db/chargeflatfee/chargeflatfee.go +++ b/openmeter/ent/db/chargeflatfee/chargeflatfee.go @@ -263,7 +263,7 @@ var ( DefaultID func() string // ValueScanner of all ChargeFlatFee fields. ValueScanner struct { - Discounts field.TypeValueScanner[*productcatalog.Discounts] + Discounts field.TypeValueScanner[*billing.Discounts] } ) diff --git a/openmeter/ent/db/chargeflatfee_create.go b/openmeter/ent/db/chargeflatfee_create.go index d92424a738..ded3a14254 100644 --- a/openmeter/ent/db/chargeflatfee_create.go +++ b/openmeter/ent/db/chargeflatfee_create.go @@ -302,7 +302,7 @@ func (_c *ChargeFlatFeeCreate) SetNillableIntentDeletedAt(v *time.Time) *ChargeF } // SetDiscounts sets the "discounts" field. -func (_c *ChargeFlatFeeCreate) SetDiscounts(v *productcatalog.Discounts) *ChargeFlatFeeCreate { +func (_c *ChargeFlatFeeCreate) SetDiscounts(v *billing.Discounts) *ChargeFlatFeeCreate { _c.mutation.SetDiscounts(v) return _c } @@ -1360,7 +1360,7 @@ func (u *ChargeFlatFeeUpsert) ClearIntentDeletedAt() *ChargeFlatFeeUpsert { } // SetDiscounts sets the "discounts" field. -func (u *ChargeFlatFeeUpsert) SetDiscounts(v *productcatalog.Discounts) *ChargeFlatFeeUpsert { +func (u *ChargeFlatFeeUpsert) SetDiscounts(v *billing.Discounts) *ChargeFlatFeeUpsert { u.Set(chargeflatfee.FieldDiscounts, v) return u } @@ -1902,7 +1902,7 @@ func (u *ChargeFlatFeeUpsertOne) ClearIntentDeletedAt() *ChargeFlatFeeUpsertOne } // SetDiscounts sets the "discounts" field. -func (u *ChargeFlatFeeUpsertOne) SetDiscounts(v *productcatalog.Discounts) *ChargeFlatFeeUpsertOne { +func (u *ChargeFlatFeeUpsertOne) SetDiscounts(v *billing.Discounts) *ChargeFlatFeeUpsertOne { return u.Update(func(s *ChargeFlatFeeUpsert) { s.SetDiscounts(v) }) @@ -2634,7 +2634,7 @@ func (u *ChargeFlatFeeUpsertBulk) ClearIntentDeletedAt() *ChargeFlatFeeUpsertBul } // SetDiscounts sets the "discounts" field. -func (u *ChargeFlatFeeUpsertBulk) SetDiscounts(v *productcatalog.Discounts) *ChargeFlatFeeUpsertBulk { +func (u *ChargeFlatFeeUpsertBulk) SetDiscounts(v *billing.Discounts) *ChargeFlatFeeUpsertBulk { return u.Update(func(s *ChargeFlatFeeUpsert) { s.SetDiscounts(v) }) diff --git a/openmeter/ent/db/chargeflatfee_update.go b/openmeter/ent/db/chargeflatfee_update.go index 011afedf3a..a29636d9d6 100644 --- a/openmeter/ent/db/chargeflatfee_update.go +++ b/openmeter/ent/db/chargeflatfee_update.go @@ -358,7 +358,7 @@ func (_u *ChargeFlatFeeUpdate) ClearIntentDeletedAt() *ChargeFlatFeeUpdate { } // SetDiscounts sets the "discounts" field. -func (_u *ChargeFlatFeeUpdate) SetDiscounts(v *productcatalog.Discounts) *ChargeFlatFeeUpdate { +func (_u *ChargeFlatFeeUpdate) SetDiscounts(v *billing.Discounts) *ChargeFlatFeeUpdate { _u.mutation.SetDiscounts(v) return _u } @@ -1351,7 +1351,7 @@ func (_u *ChargeFlatFeeUpdateOne) ClearIntentDeletedAt() *ChargeFlatFeeUpdateOne } // SetDiscounts sets the "discounts" field. -func (_u *ChargeFlatFeeUpdateOne) SetDiscounts(v *productcatalog.Discounts) *ChargeFlatFeeUpdateOne { +func (_u *ChargeFlatFeeUpdateOne) SetDiscounts(v *billing.Discounts) *ChargeFlatFeeUpdateOne { _u.mutation.SetDiscounts(v) return _u } diff --git a/openmeter/ent/db/chargeflatfeeoverride.go b/openmeter/ent/db/chargeflatfeeoverride.go index 13461c3ed3..ee4f8b4faf 100644 --- a/openmeter/ent/db/chargeflatfeeoverride.go +++ b/openmeter/ent/db/chargeflatfeeoverride.go @@ -10,6 +10,7 @@ import ( "entgo.io/ent" "entgo.io/ent/dialect/sql" "github.com/alpacahq/alpacadecimal" + "github.com/openmeterio/openmeter/openmeter/billing" "github.com/openmeterio/openmeter/openmeter/ent/db/chargeflatfee" "github.com/openmeterio/openmeter/openmeter/ent/db/chargeflatfeeoverride" dbtaxcode "github.com/openmeterio/openmeter/openmeter/ent/db/taxcode" @@ -60,8 +61,12 @@ type ChargeFlatFeeOverride struct { ProRating *productcatalog.ProRatingConfig `json:"pro_rating,omitempty"` // AmountBeforeProration holds the value of the "amount_before_proration" field. AmountBeforeProration alpacadecimal.Decimal `json:"amount_before_proration,omitempty"` + // Discounts holds the value of the "discounts" field. + Discounts *billing.Discounts `json:"discounts,omitempty"` // PercentageDiscounts holds the value of the "percentage_discounts" field. - PercentageDiscounts *productcatalog.PercentageDiscount `json:"percentage_discounts,omitempty"` + // + // Deprecated: use discounts + PercentageDiscounts *billing.PercentageDiscount `json:"percentage_discounts,omitempty"` // Edges holds the relations/edges for other nodes in the graph. // The values are being populated by the ChargeFlatFeeOverrideQuery when eager-loading is set. Edges ChargeFlatFeeOverrideEdges `json:"edges"` @@ -116,6 +121,8 @@ func (*ChargeFlatFeeOverride) scanValues(columns []string) ([]any, error) { values[i] = chargeflatfeeoverride.ValueScanner.Metadata.ScanValue() case chargeflatfeeoverride.FieldProRating: values[i] = chargeflatfeeoverride.ValueScanner.ProRating.ScanValue() + case chargeflatfeeoverride.FieldDiscounts: + values[i] = chargeflatfeeoverride.ValueScanner.Discounts.ScanValue() case chargeflatfeeoverride.FieldPercentageDiscounts: values[i] = chargeflatfeeoverride.ValueScanner.PercentageDiscounts.ScanValue() default: @@ -258,6 +265,12 @@ func (_m *ChargeFlatFeeOverride) assignValues(columns []string, values []any) er } else if value != nil { _m.AmountBeforeProration = *value } + case chargeflatfeeoverride.FieldDiscounts: + if value, err := chargeflatfeeoverride.ValueScanner.Discounts.FromValue(values[i]); err != nil { + return err + } else { + _m.Discounts = value + } case chargeflatfeeoverride.FieldPercentageDiscounts: if value, err := chargeflatfeeoverride.ValueScanner.PercentageDiscounts.FromValue(values[i]); err != nil { return err @@ -379,6 +392,11 @@ func (_m *ChargeFlatFeeOverride) String() string { builder.WriteString("amount_before_proration=") builder.WriteString(fmt.Sprintf("%v", _m.AmountBeforeProration)) builder.WriteString(", ") + if v := _m.Discounts; v != nil { + builder.WriteString("discounts=") + builder.WriteString(fmt.Sprintf("%v", *v)) + } + builder.WriteString(", ") if v := _m.PercentageDiscounts; v != nil { builder.WriteString("percentage_discounts=") builder.WriteString(fmt.Sprintf("%v", *v)) diff --git a/openmeter/ent/db/chargeflatfeeoverride/chargeflatfeeoverride.go b/openmeter/ent/db/chargeflatfeeoverride/chargeflatfeeoverride.go index c0ab8ac530..307d8691b0 100644 --- a/openmeter/ent/db/chargeflatfeeoverride/chargeflatfeeoverride.go +++ b/openmeter/ent/db/chargeflatfeeoverride/chargeflatfeeoverride.go @@ -6,6 +6,7 @@ import ( "entgo.io/ent/dialect/sql" "entgo.io/ent/dialect/sql/sqlgraph" "entgo.io/ent/schema/field" + "github.com/openmeterio/openmeter/openmeter/billing" "github.com/openmeterio/openmeter/openmeter/productcatalog" "github.com/openmeterio/openmeter/pkg/models" ) @@ -53,6 +54,8 @@ const ( FieldProRating = "pro_rating" // FieldAmountBeforeProration holds the string denoting the amount_before_proration field in the database. FieldAmountBeforeProration = "amount_before_proration" + // FieldDiscounts holds the string denoting the discounts field in the database. + FieldDiscounts = "discounts" // FieldPercentageDiscounts holds the string denoting the percentage_discounts field in the database. FieldPercentageDiscounts = "percentage_discounts" // EdgeFlatFee holds the string denoting the flat_fee edge name in mutations. @@ -99,7 +102,7 @@ var Columns = []string{ FieldPaymentTerm, FieldProRating, FieldAmountBeforeProration, - FieldPercentageDiscounts, + FieldDiscounts, } // ValidColumn reports if the column name is valid (part of the table columns). @@ -109,6 +112,11 @@ func ValidColumn(column string) bool { return true } } + for _, f := range [...]string{FieldPercentageDiscounts} { + if column == f { + return true + } + } return false } @@ -127,7 +135,8 @@ var ( ValueScanner struct { Metadata field.TypeValueScanner[*models.Metadata] ProRating field.TypeValueScanner[*productcatalog.ProRatingConfig] - PercentageDiscounts field.TypeValueScanner[*productcatalog.PercentageDiscount] + Discounts field.TypeValueScanner[*billing.Discounts] + PercentageDiscounts field.TypeValueScanner[*billing.PercentageDiscount] } ) @@ -234,6 +243,11 @@ func ByAmountBeforeProration(opts ...sql.OrderTermOption) OrderOption { return sql.OrderByField(FieldAmountBeforeProration, opts...).ToFunc() } +// ByDiscounts orders the results by the discounts field. +func ByDiscounts(opts ...sql.OrderTermOption) OrderOption { + return sql.OrderByField(FieldDiscounts, opts...).ToFunc() +} + // ByPercentageDiscounts orders the results by the percentage_discounts field. func ByPercentageDiscounts(opts ...sql.OrderTermOption) OrderOption { return sql.OrderByField(FieldPercentageDiscounts, opts...).ToFunc() diff --git a/openmeter/ent/db/chargeflatfeeoverride/where.go b/openmeter/ent/db/chargeflatfeeoverride/where.go index bb4a08b1ff..2dfa5fce6a 100644 --- a/openmeter/ent/db/chargeflatfeeoverride/where.go +++ b/openmeter/ent/db/chargeflatfeeoverride/where.go @@ -1132,6 +1132,16 @@ func AmountBeforeProrationLTE(v alpacadecimal.Decimal) predicate.ChargeFlatFeeOv return predicate.ChargeFlatFeeOverride(sql.FieldLTE(FieldAmountBeforeProration, v)) } +// DiscountsIsNil applies the IsNil predicate on the "discounts" field. +func DiscountsIsNil() predicate.ChargeFlatFeeOverride { + return predicate.ChargeFlatFeeOverride(sql.FieldIsNull(FieldDiscounts)) +} + +// DiscountsNotNil applies the NotNil predicate on the "discounts" field. +func DiscountsNotNil() predicate.ChargeFlatFeeOverride { + return predicate.ChargeFlatFeeOverride(sql.FieldNotNull(FieldDiscounts)) +} + // PercentageDiscountsIsNil applies the IsNil predicate on the "percentage_discounts" field. func PercentageDiscountsIsNil() predicate.ChargeFlatFeeOverride { return predicate.ChargeFlatFeeOverride(sql.FieldIsNull(FieldPercentageDiscounts)) diff --git a/openmeter/ent/db/chargeflatfeeoverride_create.go b/openmeter/ent/db/chargeflatfeeoverride_create.go index 1f266dafd4..28492053ac 100644 --- a/openmeter/ent/db/chargeflatfeeoverride_create.go +++ b/openmeter/ent/db/chargeflatfeeoverride_create.go @@ -13,6 +13,7 @@ import ( "entgo.io/ent/dialect/sql/sqlgraph" "entgo.io/ent/schema/field" "github.com/alpacahq/alpacadecimal" + "github.com/openmeterio/openmeter/openmeter/billing" "github.com/openmeterio/openmeter/openmeter/ent/db/chargeflatfee" "github.com/openmeterio/openmeter/openmeter/ent/db/chargeflatfeeoverride" dbtaxcode "github.com/openmeterio/openmeter/openmeter/ent/db/taxcode" @@ -182,8 +183,14 @@ func (_c *ChargeFlatFeeOverrideCreate) SetAmountBeforeProration(v alpacadecimal. return _c } +// SetDiscounts sets the "discounts" field. +func (_c *ChargeFlatFeeOverrideCreate) SetDiscounts(v *billing.Discounts) *ChargeFlatFeeOverrideCreate { + _c.mutation.SetDiscounts(v) + return _c +} + // SetPercentageDiscounts sets the "percentage_discounts" field. -func (_c *ChargeFlatFeeOverrideCreate) SetPercentageDiscounts(v *productcatalog.PercentageDiscount) *ChargeFlatFeeOverrideCreate { +func (_c *ChargeFlatFeeOverrideCreate) SetPercentageDiscounts(v *billing.PercentageDiscount) *ChargeFlatFeeOverrideCreate { _c.mutation.SetPercentageDiscounts(v) return _c } @@ -330,6 +337,11 @@ func (_c *ChargeFlatFeeOverrideCreate) check() error { if _, ok := _c.mutation.AmountBeforeProration(); !ok { return &ValidationError{Name: "amount_before_proration", err: errors.New(`db: missing required field "ChargeFlatFeeOverride.amount_before_proration"`)} } + if v, ok := _c.mutation.Discounts(); ok { + if err := v.Validate(); err != nil { + return &ValidationError{Name: "discounts", err: fmt.Errorf(`db: validator failed for field "ChargeFlatFeeOverride.discounts": %w`, err)} + } + } if v, ok := _c.mutation.PercentageDiscounts(); ok { if err := v.Validate(); err != nil { return &ValidationError{Name: "percentage_discounts", err: fmt.Errorf(`db: validator failed for field "ChargeFlatFeeOverride.percentage_discounts": %w`, err)} @@ -453,6 +465,14 @@ func (_c *ChargeFlatFeeOverrideCreate) createSpec() (*ChargeFlatFeeOverride, *sq _spec.SetField(chargeflatfeeoverride.FieldAmountBeforeProration, field.TypeOther, value) _node.AmountBeforeProration = value } + if value, ok := _c.mutation.Discounts(); ok { + vv, err := chargeflatfeeoverride.ValueScanner.Discounts.Value(value) + if err != nil { + return nil, nil, err + } + _spec.SetField(chargeflatfeeoverride.FieldDiscounts, field.TypeString, vv) + _node.Discounts = value + } if value, ok := _c.mutation.PercentageDiscounts(); ok { vv, err := chargeflatfeeoverride.ValueScanner.PercentageDiscounts.Value(value) if err != nil { @@ -787,8 +807,26 @@ func (u *ChargeFlatFeeOverrideUpsert) UpdateAmountBeforeProration() *ChargeFlatF return u } +// SetDiscounts sets the "discounts" field. +func (u *ChargeFlatFeeOverrideUpsert) SetDiscounts(v *billing.Discounts) *ChargeFlatFeeOverrideUpsert { + u.Set(chargeflatfeeoverride.FieldDiscounts, v) + return u +} + +// UpdateDiscounts sets the "discounts" field to the value that was provided on create. +func (u *ChargeFlatFeeOverrideUpsert) UpdateDiscounts() *ChargeFlatFeeOverrideUpsert { + u.SetExcluded(chargeflatfeeoverride.FieldDiscounts) + return u +} + +// ClearDiscounts clears the value of the "discounts" field. +func (u *ChargeFlatFeeOverrideUpsert) ClearDiscounts() *ChargeFlatFeeOverrideUpsert { + u.SetNull(chargeflatfeeoverride.FieldDiscounts) + return u +} + // SetPercentageDiscounts sets the "percentage_discounts" field. -func (u *ChargeFlatFeeOverrideUpsert) SetPercentageDiscounts(v *productcatalog.PercentageDiscount) *ChargeFlatFeeOverrideUpsert { +func (u *ChargeFlatFeeOverrideUpsert) SetPercentageDiscounts(v *billing.PercentageDiscount) *ChargeFlatFeeOverrideUpsert { u.Set(chargeflatfeeoverride.FieldPercentageDiscounts, v) return u } @@ -1139,8 +1177,29 @@ func (u *ChargeFlatFeeOverrideUpsertOne) UpdateAmountBeforeProration() *ChargeFl }) } +// SetDiscounts sets the "discounts" field. +func (u *ChargeFlatFeeOverrideUpsertOne) SetDiscounts(v *billing.Discounts) *ChargeFlatFeeOverrideUpsertOne { + return u.Update(func(s *ChargeFlatFeeOverrideUpsert) { + s.SetDiscounts(v) + }) +} + +// UpdateDiscounts sets the "discounts" field to the value that was provided on create. +func (u *ChargeFlatFeeOverrideUpsertOne) UpdateDiscounts() *ChargeFlatFeeOverrideUpsertOne { + return u.Update(func(s *ChargeFlatFeeOverrideUpsert) { + s.UpdateDiscounts() + }) +} + +// ClearDiscounts clears the value of the "discounts" field. +func (u *ChargeFlatFeeOverrideUpsertOne) ClearDiscounts() *ChargeFlatFeeOverrideUpsertOne { + return u.Update(func(s *ChargeFlatFeeOverrideUpsert) { + s.ClearDiscounts() + }) +} + // SetPercentageDiscounts sets the "percentage_discounts" field. -func (u *ChargeFlatFeeOverrideUpsertOne) SetPercentageDiscounts(v *productcatalog.PercentageDiscount) *ChargeFlatFeeOverrideUpsertOne { +func (u *ChargeFlatFeeOverrideUpsertOne) SetPercentageDiscounts(v *billing.PercentageDiscount) *ChargeFlatFeeOverrideUpsertOne { return u.Update(func(s *ChargeFlatFeeOverrideUpsert) { s.SetPercentageDiscounts(v) }) @@ -1664,8 +1723,29 @@ func (u *ChargeFlatFeeOverrideUpsertBulk) UpdateAmountBeforeProration() *ChargeF }) } +// SetDiscounts sets the "discounts" field. +func (u *ChargeFlatFeeOverrideUpsertBulk) SetDiscounts(v *billing.Discounts) *ChargeFlatFeeOverrideUpsertBulk { + return u.Update(func(s *ChargeFlatFeeOverrideUpsert) { + s.SetDiscounts(v) + }) +} + +// UpdateDiscounts sets the "discounts" field to the value that was provided on create. +func (u *ChargeFlatFeeOverrideUpsertBulk) UpdateDiscounts() *ChargeFlatFeeOverrideUpsertBulk { + return u.Update(func(s *ChargeFlatFeeOverrideUpsert) { + s.UpdateDiscounts() + }) +} + +// ClearDiscounts clears the value of the "discounts" field. +func (u *ChargeFlatFeeOverrideUpsertBulk) ClearDiscounts() *ChargeFlatFeeOverrideUpsertBulk { + return u.Update(func(s *ChargeFlatFeeOverrideUpsert) { + s.ClearDiscounts() + }) +} + // SetPercentageDiscounts sets the "percentage_discounts" field. -func (u *ChargeFlatFeeOverrideUpsertBulk) SetPercentageDiscounts(v *productcatalog.PercentageDiscount) *ChargeFlatFeeOverrideUpsertBulk { +func (u *ChargeFlatFeeOverrideUpsertBulk) SetPercentageDiscounts(v *billing.PercentageDiscount) *ChargeFlatFeeOverrideUpsertBulk { return u.Update(func(s *ChargeFlatFeeOverrideUpsert) { s.SetPercentageDiscounts(v) }) diff --git a/openmeter/ent/db/chargeflatfeeoverride_update.go b/openmeter/ent/db/chargeflatfeeoverride_update.go index 149bdf90ce..00ac0e2027 100644 --- a/openmeter/ent/db/chargeflatfeeoverride_update.go +++ b/openmeter/ent/db/chargeflatfeeoverride_update.go @@ -12,6 +12,7 @@ import ( "entgo.io/ent/dialect/sql/sqlgraph" "entgo.io/ent/schema/field" "github.com/alpacahq/alpacadecimal" + "github.com/openmeterio/openmeter/openmeter/billing" "github.com/openmeterio/openmeter/openmeter/ent/db/chargeflatfeeoverride" "github.com/openmeterio/openmeter/openmeter/ent/db/predicate" dbtaxcode "github.com/openmeterio/openmeter/openmeter/ent/db/taxcode" @@ -290,8 +291,20 @@ func (_u *ChargeFlatFeeOverrideUpdate) SetNillableAmountBeforeProration(v *alpac return _u } +// SetDiscounts sets the "discounts" field. +func (_u *ChargeFlatFeeOverrideUpdate) SetDiscounts(v *billing.Discounts) *ChargeFlatFeeOverrideUpdate { + _u.mutation.SetDiscounts(v) + return _u +} + +// ClearDiscounts clears the value of the "discounts" field. +func (_u *ChargeFlatFeeOverrideUpdate) ClearDiscounts() *ChargeFlatFeeOverrideUpdate { + _u.mutation.ClearDiscounts() + return _u +} + // SetPercentageDiscounts sets the "percentage_discounts" field. -func (_u *ChargeFlatFeeOverrideUpdate) SetPercentageDiscounts(v *productcatalog.PercentageDiscount) *ChargeFlatFeeOverrideUpdate { +func (_u *ChargeFlatFeeOverrideUpdate) SetPercentageDiscounts(v *billing.PercentageDiscount) *ChargeFlatFeeOverrideUpdate { _u.mutation.SetPercentageDiscounts(v) return _u } @@ -372,6 +385,11 @@ func (_u *ChargeFlatFeeOverrideUpdate) check() error { return &ValidationError{Name: "pro_rating", err: fmt.Errorf(`db: validator failed for field "ChargeFlatFeeOverride.pro_rating": %w`, err)} } } + if v, ok := _u.mutation.Discounts(); ok { + if err := v.Validate(); err != nil { + return &ValidationError{Name: "discounts", err: fmt.Errorf(`db: validator failed for field "ChargeFlatFeeOverride.discounts": %w`, err)} + } + } if v, ok := _u.mutation.PercentageDiscounts(); ok { if err := v.Validate(); err != nil { return &ValidationError{Name: "percentage_discounts", err: fmt.Errorf(`db: validator failed for field "ChargeFlatFeeOverride.percentage_discounts": %w`, err)} @@ -466,6 +484,16 @@ func (_u *ChargeFlatFeeOverrideUpdate) sqlSave(ctx context.Context) (_node int, if value, ok := _u.mutation.AmountBeforeProration(); ok { _spec.SetField(chargeflatfeeoverride.FieldAmountBeforeProration, field.TypeOther, value) } + if value, ok := _u.mutation.Discounts(); ok { + vv, err := chargeflatfeeoverride.ValueScanner.Discounts.Value(value) + if err != nil { + return 0, err + } + _spec.SetField(chargeflatfeeoverride.FieldDiscounts, field.TypeString, vv) + } + if _u.mutation.DiscountsCleared() { + _spec.ClearField(chargeflatfeeoverride.FieldDiscounts, field.TypeString) + } if value, ok := _u.mutation.PercentageDiscounts(); ok { vv, err := chargeflatfeeoverride.ValueScanner.PercentageDiscounts.Value(value) if err != nil { @@ -783,8 +811,20 @@ func (_u *ChargeFlatFeeOverrideUpdateOne) SetNillableAmountBeforeProration(v *al return _u } +// SetDiscounts sets the "discounts" field. +func (_u *ChargeFlatFeeOverrideUpdateOne) SetDiscounts(v *billing.Discounts) *ChargeFlatFeeOverrideUpdateOne { + _u.mutation.SetDiscounts(v) + return _u +} + +// ClearDiscounts clears the value of the "discounts" field. +func (_u *ChargeFlatFeeOverrideUpdateOne) ClearDiscounts() *ChargeFlatFeeOverrideUpdateOne { + _u.mutation.ClearDiscounts() + return _u +} + // SetPercentageDiscounts sets the "percentage_discounts" field. -func (_u *ChargeFlatFeeOverrideUpdateOne) SetPercentageDiscounts(v *productcatalog.PercentageDiscount) *ChargeFlatFeeOverrideUpdateOne { +func (_u *ChargeFlatFeeOverrideUpdateOne) SetPercentageDiscounts(v *billing.PercentageDiscount) *ChargeFlatFeeOverrideUpdateOne { _u.mutation.SetPercentageDiscounts(v) return _u } @@ -878,6 +918,11 @@ func (_u *ChargeFlatFeeOverrideUpdateOne) check() error { return &ValidationError{Name: "pro_rating", err: fmt.Errorf(`db: validator failed for field "ChargeFlatFeeOverride.pro_rating": %w`, err)} } } + if v, ok := _u.mutation.Discounts(); ok { + if err := v.Validate(); err != nil { + return &ValidationError{Name: "discounts", err: fmt.Errorf(`db: validator failed for field "ChargeFlatFeeOverride.discounts": %w`, err)} + } + } if v, ok := _u.mutation.PercentageDiscounts(); ok { if err := v.Validate(); err != nil { return &ValidationError{Name: "percentage_discounts", err: fmt.Errorf(`db: validator failed for field "ChargeFlatFeeOverride.percentage_discounts": %w`, err)} @@ -989,6 +1034,16 @@ func (_u *ChargeFlatFeeOverrideUpdateOne) sqlSave(ctx context.Context) (_node *C if value, ok := _u.mutation.AmountBeforeProration(); ok { _spec.SetField(chargeflatfeeoverride.FieldAmountBeforeProration, field.TypeOther, value) } + if value, ok := _u.mutation.Discounts(); ok { + vv, err := chargeflatfeeoverride.ValueScanner.Discounts.Value(value) + if err != nil { + return nil, err + } + _spec.SetField(chargeflatfeeoverride.FieldDiscounts, field.TypeString, vv) + } + if _u.mutation.DiscountsCleared() { + _spec.ClearField(chargeflatfeeoverride.FieldDiscounts, field.TypeString) + } if value, ok := _u.mutation.PercentageDiscounts(); ok { vv, err := chargeflatfeeoverride.ValueScanner.PercentageDiscounts.Value(value) if err != nil { diff --git a/openmeter/ent/db/chargeusagebased.go b/openmeter/ent/db/chargeusagebased.go index 3acff75df0..ce2c0d8eb3 100644 --- a/openmeter/ent/db/chargeusagebased.go +++ b/openmeter/ent/db/chargeusagebased.go @@ -90,7 +90,7 @@ type ChargeUsageBased struct { // IntentDeletedAt holds the value of the "intent_deleted_at" field. IntentDeletedAt *time.Time `json:"intent_deleted_at,omitempty"` // Discounts holds the value of the "discounts" field. - Discounts *productcatalog.Discounts `json:"discounts,omitempty"` + Discounts *billing.Discounts `json:"discounts,omitempty"` // FeatureKey holds the value of the "feature_key" field. FeatureKey string `json:"feature_key,omitempty"` // FeatureID holds the value of the "feature_id" field. diff --git a/openmeter/ent/db/chargeusagebased/chargeusagebased.go b/openmeter/ent/db/chargeusagebased/chargeusagebased.go index 9533b88796..4737852464 100644 --- a/openmeter/ent/db/chargeusagebased/chargeusagebased.go +++ b/openmeter/ent/db/chargeusagebased/chargeusagebased.go @@ -269,7 +269,7 @@ var ( DefaultID func() string // ValueScanner of all ChargeUsageBased fields. ValueScanner struct { - Discounts field.TypeValueScanner[*productcatalog.Discounts] + Discounts field.TypeValueScanner[*billing.Discounts] Price field.TypeValueScanner[*productcatalog.Price] UnitConfig field.TypeValueScanner[*productcatalog.UnitConfig] } diff --git a/openmeter/ent/db/chargeusagebased_create.go b/openmeter/ent/db/chargeusagebased_create.go index 5c3f5b2255..2eb5c43ccd 100644 --- a/openmeter/ent/db/chargeusagebased_create.go +++ b/openmeter/ent/db/chargeusagebased_create.go @@ -296,7 +296,7 @@ func (_c *ChargeUsageBasedCreate) SetNillableIntentDeletedAt(v *time.Time) *Char } // SetDiscounts sets the "discounts" field. -func (_c *ChargeUsageBasedCreate) SetDiscounts(v *productcatalog.Discounts) *ChargeUsageBasedCreate { +func (_c *ChargeUsageBasedCreate) SetDiscounts(v *billing.Discounts) *ChargeUsageBasedCreate { _c.mutation.SetDiscounts(v) return _c } @@ -1374,7 +1374,7 @@ func (u *ChargeUsageBasedUpsert) ClearIntentDeletedAt() *ChargeUsageBasedUpsert } // SetDiscounts sets the "discounts" field. -func (u *ChargeUsageBasedUpsert) SetDiscounts(v *productcatalog.Discounts) *ChargeUsageBasedUpsert { +func (u *ChargeUsageBasedUpsert) SetDiscounts(v *billing.Discounts) *ChargeUsageBasedUpsert { u.Set(chargeusagebased.FieldDiscounts, v) return u } @@ -1896,7 +1896,7 @@ func (u *ChargeUsageBasedUpsertOne) ClearIntentDeletedAt() *ChargeUsageBasedUpse } // SetDiscounts sets the "discounts" field. -func (u *ChargeUsageBasedUpsertOne) SetDiscounts(v *productcatalog.Discounts) *ChargeUsageBasedUpsertOne { +func (u *ChargeUsageBasedUpsertOne) SetDiscounts(v *billing.Discounts) *ChargeUsageBasedUpsertOne { return u.Update(func(s *ChargeUsageBasedUpsert) { s.SetDiscounts(v) }) @@ -2607,7 +2607,7 @@ func (u *ChargeUsageBasedUpsertBulk) ClearIntentDeletedAt() *ChargeUsageBasedUps } // SetDiscounts sets the "discounts" field. -func (u *ChargeUsageBasedUpsertBulk) SetDiscounts(v *productcatalog.Discounts) *ChargeUsageBasedUpsertBulk { +func (u *ChargeUsageBasedUpsertBulk) SetDiscounts(v *billing.Discounts) *ChargeUsageBasedUpsertBulk { return u.Update(func(s *ChargeUsageBasedUpsert) { s.SetDiscounts(v) }) diff --git a/openmeter/ent/db/chargeusagebased_update.go b/openmeter/ent/db/chargeusagebased_update.go index 2f0e1ca44a..32564daf9a 100644 --- a/openmeter/ent/db/chargeusagebased_update.go +++ b/openmeter/ent/db/chargeusagebased_update.go @@ -344,7 +344,7 @@ func (_u *ChargeUsageBasedUpdate) ClearIntentDeletedAt() *ChargeUsageBasedUpdate } // SetDiscounts sets the "discounts" field. -func (_u *ChargeUsageBasedUpdate) SetDiscounts(v *productcatalog.Discounts) *ChargeUsageBasedUpdate { +func (_u *ChargeUsageBasedUpdate) SetDiscounts(v *billing.Discounts) *ChargeUsageBasedUpdate { _u.mutation.SetDiscounts(v) return _u } @@ -1400,7 +1400,7 @@ func (_u *ChargeUsageBasedUpdateOne) ClearIntentDeletedAt() *ChargeUsageBasedUpd } // SetDiscounts sets the "discounts" field. -func (_u *ChargeUsageBasedUpdateOne) SetDiscounts(v *productcatalog.Discounts) *ChargeUsageBasedUpdateOne { +func (_u *ChargeUsageBasedUpdateOne) SetDiscounts(v *billing.Discounts) *ChargeUsageBasedUpdateOne { _u.mutation.SetDiscounts(v) return _u } diff --git a/openmeter/ent/db/chargeusagebasedoverride.go b/openmeter/ent/db/chargeusagebasedoverride.go index f869430f66..38c99dc073 100644 --- a/openmeter/ent/db/chargeusagebasedoverride.go +++ b/openmeter/ent/db/chargeusagebasedoverride.go @@ -9,6 +9,7 @@ import ( "entgo.io/ent" "entgo.io/ent/dialect/sql" + "github.com/openmeterio/openmeter/openmeter/billing" "github.com/openmeterio/openmeter/openmeter/ent/db/chargeusagebased" "github.com/openmeterio/openmeter/openmeter/ent/db/chargeusagebasedoverride" dbtaxcode "github.com/openmeterio/openmeter/openmeter/ent/db/taxcode" @@ -56,7 +57,7 @@ type ChargeUsageBasedOverride struct { // Price holds the value of the "price" field. Price *productcatalog.Price `json:"price,omitempty"` // Discounts holds the value of the "discounts" field. - Discounts *productcatalog.Discounts `json:"discounts,omitempty"` + Discounts *billing.Discounts `json:"discounts,omitempty"` // UnitConfig holds the value of the "unit_config" field. UnitConfig *productcatalog.UnitConfig `json:"unit_config,omitempty"` // Edges holds the relations/edges for other nodes in the graph. diff --git a/openmeter/ent/db/chargeusagebasedoverride/chargeusagebasedoverride.go b/openmeter/ent/db/chargeusagebasedoverride/chargeusagebasedoverride.go index 6083dfa0c2..d51e45a838 100644 --- a/openmeter/ent/db/chargeusagebasedoverride/chargeusagebasedoverride.go +++ b/openmeter/ent/db/chargeusagebasedoverride/chargeusagebasedoverride.go @@ -6,6 +6,7 @@ import ( "entgo.io/ent/dialect/sql" "entgo.io/ent/dialect/sql/sqlgraph" "entgo.io/ent/schema/field" + "github.com/openmeterio/openmeter/openmeter/billing" "github.com/openmeterio/openmeter/openmeter/productcatalog" "github.com/openmeterio/openmeter/pkg/models" ) @@ -122,7 +123,7 @@ var ( ValueScanner struct { Metadata field.TypeValueScanner[*models.Metadata] Price field.TypeValueScanner[*productcatalog.Price] - Discounts field.TypeValueScanner[*productcatalog.Discounts] + Discounts field.TypeValueScanner[*billing.Discounts] UnitConfig field.TypeValueScanner[*productcatalog.UnitConfig] } ) diff --git a/openmeter/ent/db/chargeusagebasedoverride_create.go b/openmeter/ent/db/chargeusagebasedoverride_create.go index e162c7d2b7..48621c820b 100644 --- a/openmeter/ent/db/chargeusagebasedoverride_create.go +++ b/openmeter/ent/db/chargeusagebasedoverride_create.go @@ -12,6 +12,7 @@ import ( "entgo.io/ent/dialect/sql" "entgo.io/ent/dialect/sql/sqlgraph" "entgo.io/ent/schema/field" + "github.com/openmeterio/openmeter/openmeter/billing" "github.com/openmeterio/openmeter/openmeter/ent/db/chargeusagebased" "github.com/openmeterio/openmeter/openmeter/ent/db/chargeusagebasedoverride" dbtaxcode "github.com/openmeterio/openmeter/openmeter/ent/db/taxcode" @@ -162,7 +163,7 @@ func (_c *ChargeUsageBasedOverrideCreate) SetPrice(v *productcatalog.Price) *Cha } // SetDiscounts sets the "discounts" field. -func (_c *ChargeUsageBasedOverrideCreate) SetDiscounts(v *productcatalog.Discounts) *ChargeUsageBasedOverrideCreate { +func (_c *ChargeUsageBasedOverrideCreate) SetDiscounts(v *billing.Discounts) *ChargeUsageBasedOverrideCreate { _c.mutation.SetDiscounts(v) return _c } @@ -743,7 +744,7 @@ func (u *ChargeUsageBasedOverrideUpsert) UpdatePrice() *ChargeUsageBasedOverride } // SetDiscounts sets the "discounts" field. -func (u *ChargeUsageBasedOverrideUpsert) SetDiscounts(v *productcatalog.Discounts) *ChargeUsageBasedOverrideUpsert { +func (u *ChargeUsageBasedOverrideUpsert) SetDiscounts(v *billing.Discounts) *ChargeUsageBasedOverrideUpsert { u.Set(chargeusagebasedoverride.FieldDiscounts, v) return u } @@ -1072,7 +1073,7 @@ func (u *ChargeUsageBasedOverrideUpsertOne) UpdatePrice() *ChargeUsageBasedOverr } // SetDiscounts sets the "discounts" field. -func (u *ChargeUsageBasedOverrideUpsertOne) SetDiscounts(v *productcatalog.Discounts) *ChargeUsageBasedOverrideUpsertOne { +func (u *ChargeUsageBasedOverrideUpsertOne) SetDiscounts(v *billing.Discounts) *ChargeUsageBasedOverrideUpsertOne { return u.Update(func(s *ChargeUsageBasedOverrideUpsert) { s.SetDiscounts(v) }) @@ -1576,7 +1577,7 @@ func (u *ChargeUsageBasedOverrideUpsertBulk) UpdatePrice() *ChargeUsageBasedOver } // SetDiscounts sets the "discounts" field. -func (u *ChargeUsageBasedOverrideUpsertBulk) SetDiscounts(v *productcatalog.Discounts) *ChargeUsageBasedOverrideUpsertBulk { +func (u *ChargeUsageBasedOverrideUpsertBulk) SetDiscounts(v *billing.Discounts) *ChargeUsageBasedOverrideUpsertBulk { return u.Update(func(s *ChargeUsageBasedOverrideUpsert) { s.SetDiscounts(v) }) diff --git a/openmeter/ent/db/chargeusagebasedoverride_update.go b/openmeter/ent/db/chargeusagebasedoverride_update.go index 42c0c898b1..b16e07c35f 100644 --- a/openmeter/ent/db/chargeusagebasedoverride_update.go +++ b/openmeter/ent/db/chargeusagebasedoverride_update.go @@ -11,6 +11,7 @@ import ( "entgo.io/ent/dialect/sql" "entgo.io/ent/dialect/sql/sqlgraph" "entgo.io/ent/schema/field" + "github.com/openmeterio/openmeter/openmeter/billing" "github.com/openmeterio/openmeter/openmeter/ent/db/chargeusagebasedoverride" "github.com/openmeterio/openmeter/openmeter/ent/db/predicate" dbtaxcode "github.com/openmeterio/openmeter/openmeter/ent/db/taxcode" @@ -256,7 +257,7 @@ func (_u *ChargeUsageBasedOverrideUpdate) SetPrice(v *productcatalog.Price) *Cha } // SetDiscounts sets the "discounts" field. -func (_u *ChargeUsageBasedOverrideUpdate) SetDiscounts(v *productcatalog.Discounts) *ChargeUsageBasedOverrideUpdate { +func (_u *ChargeUsageBasedOverrideUpdate) SetDiscounts(v *billing.Discounts) *ChargeUsageBasedOverrideUpdate { _u.mutation.SetDiscounts(v) return _u } @@ -719,7 +720,7 @@ func (_u *ChargeUsageBasedOverrideUpdateOne) SetPrice(v *productcatalog.Price) * } // SetDiscounts sets the "discounts" field. -func (_u *ChargeUsageBasedOverrideUpdateOne) SetDiscounts(v *productcatalog.Discounts) *ChargeUsageBasedOverrideUpdateOne { +func (_u *ChargeUsageBasedOverrideUpdateOne) SetDiscounts(v *billing.Discounts) *ChargeUsageBasedOverrideUpdateOne { _u.mutation.SetDiscounts(v) return _u } diff --git a/openmeter/ent/db/migrate/schema.go b/openmeter/ent/db/migrate/schema.go index e7ee68e7b7..3b7b747372 100644 --- a/openmeter/ent/db/migrate/schema.go +++ b/openmeter/ent/db/migrate/schema.go @@ -2055,6 +2055,7 @@ var ( {Name: "payment_term", Type: field.TypeString}, {Name: "pro_rating", Type: field.TypeString, SchemaType: map[string]string{"postgres": "jsonb"}}, {Name: "amount_before_proration", Type: field.TypeOther, SchemaType: map[string]string{"postgres": "numeric"}}, + {Name: "discounts", Type: field.TypeString, Nullable: true, SchemaType: map[string]string{"postgres": "jsonb"}}, {Name: "percentage_discounts", Type: field.TypeString, Nullable: true, SchemaType: map[string]string{"postgres": "jsonb"}}, {Name: "charge_id", Type: field.TypeString, Unique: true, SchemaType: map[string]string{"postgres": "char(26)"}}, {Name: "tax_code_id", Type: field.TypeString, Nullable: true, SchemaType: map[string]string{"postgres": "char(26)"}}, @@ -2067,13 +2068,13 @@ var ( ForeignKeys: []*schema.ForeignKey{ { Symbol: "charge_flat_fee_overrides_charge_flat_fees_intent_override", - Columns: []*schema.Column{ChargeFlatFeeOverridesColumns[19]}, + Columns: []*schema.Column{ChargeFlatFeeOverridesColumns[20]}, RefColumns: []*schema.Column{ChargeFlatFeesColumns[0]}, OnDelete: schema.Cascade, }, { Symbol: "charge_flat_fee_overrides_tax_codes_charge_flat_fee_overrides", - Columns: []*schema.Column{ChargeFlatFeeOverridesColumns[20]}, + Columns: []*schema.Column{ChargeFlatFeeOverridesColumns[21]}, RefColumns: []*schema.Column{TaxCodesColumns[0]}, OnDelete: schema.SetNull, }, @@ -2092,12 +2093,12 @@ var ( { Name: "chargeflatfeeoverrides_tax_code_id", Unique: false, - Columns: []*schema.Column{ChargeFlatFeeOverridesColumns[20]}, + Columns: []*schema.Column{ChargeFlatFeeOverridesColumns[21]}, }, { Name: "chargeflatfeeoverride_namespace_charge_id", Unique: true, - Columns: []*schema.Column{ChargeFlatFeeOverridesColumns[1], ChargeFlatFeeOverridesColumns[19]}, + Columns: []*schema.Column{ChargeFlatFeeOverridesColumns[1], ChargeFlatFeeOverridesColumns[20]}, }, }, } diff --git a/openmeter/ent/db/mutation.go b/openmeter/ent/db/mutation.go index a85d191d58..8d531964fb 100644 --- a/openmeter/ent/db/mutation.go +++ b/openmeter/ent/db/mutation.go @@ -42510,7 +42510,7 @@ type ChargeFlatFeeMutation struct { invoice_at *time.Time settlement_mode *productcatalog.SettlementMode intent_deleted_at *time.Time - discounts **productcatalog.Discounts + discounts **billing.Discounts pro_rating *flatfee.ProRatingModeAdapterEnum feature_key *string amount_before_proration *alpacadecimal.Decimal @@ -43835,12 +43835,12 @@ func (m *ChargeFlatFeeMutation) ResetIntentDeletedAt() { } // SetDiscounts sets the "discounts" field. -func (m *ChargeFlatFeeMutation) SetDiscounts(pr *productcatalog.Discounts) { - m.discounts = &pr +func (m *ChargeFlatFeeMutation) SetDiscounts(b *billing.Discounts) { + m.discounts = &b } // Discounts returns the value of the "discounts" field in the mutation. -func (m *ChargeFlatFeeMutation) Discounts() (r *productcatalog.Discounts, exists bool) { +func (m *ChargeFlatFeeMutation) Discounts() (r *billing.Discounts, exists bool) { v := m.discounts if v == nil { return @@ -43851,7 +43851,7 @@ func (m *ChargeFlatFeeMutation) Discounts() (r *productcatalog.Discounts, exists // OldDiscounts returns the old "discounts" field's value of the ChargeFlatFee entity. // If the ChargeFlatFee object wasn't provided to the builder, the object is fetched from the database. // An error is returned if the mutation operation is not UpdateOne, or the database query fails. -func (m *ChargeFlatFeeMutation) OldDiscounts(ctx context.Context) (v *productcatalog.Discounts, err error) { +func (m *ChargeFlatFeeMutation) OldDiscounts(ctx context.Context) (v *billing.Discounts, err error) { if !m.op.Is(OpUpdateOne) { return v, errors.New("OldDiscounts is only allowed on UpdateOne operations") } @@ -45032,7 +45032,7 @@ func (m *ChargeFlatFeeMutation) SetField(name string, value ent.Value) error { m.SetIntentDeletedAt(v) return nil case chargeflatfee.FieldDiscounts: - v, ok := value.(*productcatalog.Discounts) + v, ok := value.(*billing.Discounts) if !ok { return fmt.Errorf("unexpected type %T for field %s", value, name) } @@ -45613,7 +45613,8 @@ type ChargeFlatFeeOverrideMutation struct { payment_term *productcatalog.PaymentTermType pro_rating **productcatalog.ProRatingConfig amount_before_proration *alpacadecimal.Decimal - percentage_discounts **productcatalog.PercentageDiscount + discounts **billing.Discounts + percentage_discounts **billing.PercentageDiscount clearedFields map[string]struct{} flat_fee *string clearedflat_fee bool @@ -46490,13 +46491,62 @@ func (m *ChargeFlatFeeOverrideMutation) ResetAmountBeforeProration() { m.amount_before_proration = nil } +// SetDiscounts sets the "discounts" field. +func (m *ChargeFlatFeeOverrideMutation) SetDiscounts(b *billing.Discounts) { + m.discounts = &b +} + +// Discounts returns the value of the "discounts" field in the mutation. +func (m *ChargeFlatFeeOverrideMutation) Discounts() (r *billing.Discounts, exists bool) { + v := m.discounts + if v == nil { + return + } + return *v, true +} + +// OldDiscounts returns the old "discounts" field's value of the ChargeFlatFeeOverride entity. +// If the ChargeFlatFeeOverride object wasn't provided to the builder, the object is fetched from the database. +// An error is returned if the mutation operation is not UpdateOne, or the database query fails. +func (m *ChargeFlatFeeOverrideMutation) OldDiscounts(ctx context.Context) (v *billing.Discounts, err error) { + if !m.op.Is(OpUpdateOne) { + return v, errors.New("OldDiscounts is only allowed on UpdateOne operations") + } + if m.id == nil || m.oldValue == nil { + return v, errors.New("OldDiscounts requires an ID field in the mutation") + } + oldValue, err := m.oldValue(ctx) + if err != nil { + return v, fmt.Errorf("querying old value for OldDiscounts: %w", err) + } + return oldValue.Discounts, nil +} + +// ClearDiscounts clears the value of the "discounts" field. +func (m *ChargeFlatFeeOverrideMutation) ClearDiscounts() { + m.discounts = nil + m.clearedFields[chargeflatfeeoverride.FieldDiscounts] = struct{}{} +} + +// DiscountsCleared returns if the "discounts" field was cleared in this mutation. +func (m *ChargeFlatFeeOverrideMutation) DiscountsCleared() bool { + _, ok := m.clearedFields[chargeflatfeeoverride.FieldDiscounts] + return ok +} + +// ResetDiscounts resets all changes to the "discounts" field. +func (m *ChargeFlatFeeOverrideMutation) ResetDiscounts() { + m.discounts = nil + delete(m.clearedFields, chargeflatfeeoverride.FieldDiscounts) +} + // SetPercentageDiscounts sets the "percentage_discounts" field. -func (m *ChargeFlatFeeOverrideMutation) SetPercentageDiscounts(pd *productcatalog.PercentageDiscount) { - m.percentage_discounts = &pd +func (m *ChargeFlatFeeOverrideMutation) SetPercentageDiscounts(bd *billing.PercentageDiscount) { + m.percentage_discounts = &bd } // PercentageDiscounts returns the value of the "percentage_discounts" field in the mutation. -func (m *ChargeFlatFeeOverrideMutation) PercentageDiscounts() (r *productcatalog.PercentageDiscount, exists bool) { +func (m *ChargeFlatFeeOverrideMutation) PercentageDiscounts() (r *billing.PercentageDiscount, exists bool) { v := m.percentage_discounts if v == nil { return @@ -46507,7 +46557,7 @@ func (m *ChargeFlatFeeOverrideMutation) PercentageDiscounts() (r *productcatalog // OldPercentageDiscounts returns the old "percentage_discounts" field's value of the ChargeFlatFeeOverride entity. // If the ChargeFlatFeeOverride object wasn't provided to the builder, the object is fetched from the database. // An error is returned if the mutation operation is not UpdateOne, or the database query fails. -func (m *ChargeFlatFeeOverrideMutation) OldPercentageDiscounts(ctx context.Context) (v *productcatalog.PercentageDiscount, err error) { +func (m *ChargeFlatFeeOverrideMutation) OldPercentageDiscounts(ctx context.Context) (v *billing.PercentageDiscount, err error) { if !m.op.Is(OpUpdateOne) { return v, errors.New("OldPercentageDiscounts is only allowed on UpdateOne operations") } @@ -46640,7 +46690,7 @@ func (m *ChargeFlatFeeOverrideMutation) Type() string { // order to get all numeric fields that were incremented/decremented, call // AddedFields(). func (m *ChargeFlatFeeOverrideMutation) Fields() []string { - fields := make([]string, 0, 20) + fields := make([]string, 0, 21) if m.namespace != nil { fields = append(fields, chargeflatfeeoverride.FieldNamespace) } @@ -46698,6 +46748,9 @@ func (m *ChargeFlatFeeOverrideMutation) Fields() []string { if m.amount_before_proration != nil { fields = append(fields, chargeflatfeeoverride.FieldAmountBeforeProration) } + if m.discounts != nil { + fields = append(fields, chargeflatfeeoverride.FieldDiscounts) + } if m.percentage_discounts != nil { fields = append(fields, chargeflatfeeoverride.FieldPercentageDiscounts) } @@ -46747,6 +46800,8 @@ func (m *ChargeFlatFeeOverrideMutation) Field(name string) (ent.Value, bool) { return m.ProRating() case chargeflatfeeoverride.FieldAmountBeforeProration: return m.AmountBeforeProration() + case chargeflatfeeoverride.FieldDiscounts: + return m.Discounts() case chargeflatfeeoverride.FieldPercentageDiscounts: return m.PercentageDiscounts() } @@ -46796,6 +46851,8 @@ func (m *ChargeFlatFeeOverrideMutation) OldField(ctx context.Context, name strin return m.OldProRating(ctx) case chargeflatfeeoverride.FieldAmountBeforeProration: return m.OldAmountBeforeProration(ctx) + case chargeflatfeeoverride.FieldDiscounts: + return m.OldDiscounts(ctx) case chargeflatfeeoverride.FieldPercentageDiscounts: return m.OldPercentageDiscounts(ctx) } @@ -46940,8 +46997,15 @@ func (m *ChargeFlatFeeOverrideMutation) SetField(name string, value ent.Value) e } m.SetAmountBeforeProration(v) return nil + case chargeflatfeeoverride.FieldDiscounts: + v, ok := value.(*billing.Discounts) + if !ok { + return fmt.Errorf("unexpected type %T for field %s", value, name) + } + m.SetDiscounts(v) + return nil case chargeflatfeeoverride.FieldPercentageDiscounts: - v, ok := value.(*productcatalog.PercentageDiscount) + v, ok := value.(*billing.PercentageDiscount) if !ok { return fmt.Errorf("unexpected type %T for field %s", value, name) } @@ -46995,6 +47059,9 @@ func (m *ChargeFlatFeeOverrideMutation) ClearedFields() []string { if m.FieldCleared(chargeflatfeeoverride.FieldFeatureKey) { fields = append(fields, chargeflatfeeoverride.FieldFeatureKey) } + if m.FieldCleared(chargeflatfeeoverride.FieldDiscounts) { + fields = append(fields, chargeflatfeeoverride.FieldDiscounts) + } if m.FieldCleared(chargeflatfeeoverride.FieldPercentageDiscounts) { fields = append(fields, chargeflatfeeoverride.FieldPercentageDiscounts) } @@ -47030,6 +47097,9 @@ func (m *ChargeFlatFeeOverrideMutation) ClearField(name string) error { case chargeflatfeeoverride.FieldFeatureKey: m.ClearFeatureKey() return nil + case chargeflatfeeoverride.FieldDiscounts: + m.ClearDiscounts() + return nil case chargeflatfeeoverride.FieldPercentageDiscounts: m.ClearPercentageDiscounts() return nil @@ -47098,6 +47168,9 @@ func (m *ChargeFlatFeeOverrideMutation) ResetField(name string) error { case chargeflatfeeoverride.FieldAmountBeforeProration: m.ResetAmountBeforeProration() return nil + case chargeflatfeeoverride.FieldDiscounts: + m.ResetDiscounts() + return nil case chargeflatfeeoverride.FieldPercentageDiscounts: m.ResetPercentageDiscounts() return nil @@ -55382,7 +55455,7 @@ type ChargeUsageBasedMutation struct { invoice_at *time.Time settlement_mode *productcatalog.SettlementMode intent_deleted_at *time.Time - discounts **productcatalog.Discounts + discounts **billing.Discounts feature_key *string rating_engine *usagebased.RatingEngine price **productcatalog.Price @@ -56674,12 +56747,12 @@ func (m *ChargeUsageBasedMutation) ResetIntentDeletedAt() { } // SetDiscounts sets the "discounts" field. -func (m *ChargeUsageBasedMutation) SetDiscounts(pr *productcatalog.Discounts) { - m.discounts = &pr +func (m *ChargeUsageBasedMutation) SetDiscounts(b *billing.Discounts) { + m.discounts = &b } // Discounts returns the value of the "discounts" field in the mutation. -func (m *ChargeUsageBasedMutation) Discounts() (r *productcatalog.Discounts, exists bool) { +func (m *ChargeUsageBasedMutation) Discounts() (r *billing.Discounts, exists bool) { v := m.discounts if v == nil { return @@ -56690,7 +56763,7 @@ func (m *ChargeUsageBasedMutation) Discounts() (r *productcatalog.Discounts, exi // OldDiscounts returns the old "discounts" field's value of the ChargeUsageBased entity. // If the ChargeUsageBased object wasn't provided to the builder, the object is fetched from the database. // An error is returned if the mutation operation is not UpdateOne, or the database query fails. -func (m *ChargeUsageBasedMutation) OldDiscounts(ctx context.Context) (v *productcatalog.Discounts, err error) { +func (m *ChargeUsageBasedMutation) OldDiscounts(ctx context.Context) (v *billing.Discounts, err error) { if !m.op.Is(OpUpdateOne) { return v, errors.New("OldDiscounts is only allowed on UpdateOne operations") } @@ -57898,7 +57971,7 @@ func (m *ChargeUsageBasedMutation) SetField(name string, value ent.Value) error m.SetIntentDeletedAt(v) return nil case chargeusagebased.FieldDiscounts: - v, ok := value.(*productcatalog.Discounts) + v, ok := value.(*billing.Discounts) if !ok { return fmt.Errorf("unexpected type %T for field %s", value, name) } @@ -58494,7 +58567,7 @@ type ChargeUsageBasedOverrideMutation struct { invoice_at *time.Time feature_key *string price **productcatalog.Price - discounts **productcatalog.Discounts + discounts **billing.Discounts unit_config **productcatalog.UnitConfig clearedFields map[string]struct{} usage_based *string @@ -59288,12 +59361,12 @@ func (m *ChargeUsageBasedOverrideMutation) ResetPrice() { } // SetDiscounts sets the "discounts" field. -func (m *ChargeUsageBasedOverrideMutation) SetDiscounts(pr *productcatalog.Discounts) { - m.discounts = &pr +func (m *ChargeUsageBasedOverrideMutation) SetDiscounts(b *billing.Discounts) { + m.discounts = &b } // Discounts returns the value of the "discounts" field in the mutation. -func (m *ChargeUsageBasedOverrideMutation) Discounts() (r *productcatalog.Discounts, exists bool) { +func (m *ChargeUsageBasedOverrideMutation) Discounts() (r *billing.Discounts, exists bool) { v := m.discounts if v == nil { return @@ -59304,7 +59377,7 @@ func (m *ChargeUsageBasedOverrideMutation) Discounts() (r *productcatalog.Discou // OldDiscounts returns the old "discounts" field's value of the ChargeUsageBasedOverride entity. // If the ChargeUsageBasedOverride object wasn't provided to the builder, the object is fetched from the database. // An error is returned if the mutation operation is not UpdateOne, or the database query fails. -func (m *ChargeUsageBasedOverrideMutation) OldDiscounts(ctx context.Context) (v *productcatalog.Discounts, err error) { +func (m *ChargeUsageBasedOverrideMutation) OldDiscounts(ctx context.Context) (v *billing.Discounts, err error) { if !m.op.Is(OpUpdateOne) { return v, errors.New("OldDiscounts is only allowed on UpdateOne operations") } @@ -59753,7 +59826,7 @@ func (m *ChargeUsageBasedOverrideMutation) SetField(name string, value ent.Value m.SetPrice(v) return nil case chargeusagebasedoverride.FieldDiscounts: - v, ok := value.(*productcatalog.Discounts) + v, ok := value.(*billing.Discounts) if !ok { return fmt.Errorf("unexpected type %T for field %s", value, name) } diff --git a/openmeter/ent/db/runtime.go b/openmeter/ent/db/runtime.go index 7936a90fec..358267dc01 100644 --- a/openmeter/ent/db/runtime.go +++ b/openmeter/ent/db/runtime.go @@ -1108,7 +1108,7 @@ func init() { chargeflatfee.PaymentTermValidator = chargeflatfeeDescPaymentTerm.Validators[0].(func(string) error) // chargeflatfeeDescDiscounts is the schema descriptor for discounts field. chargeflatfeeDescDiscounts := chargeflatfeeFields[4].Descriptor() - chargeflatfee.ValueScanner.Discounts = chargeflatfeeDescDiscounts.ValueScanner.(field.TypeValueScanner[*productcatalog.Discounts]) + chargeflatfee.ValueScanner.Discounts = chargeflatfeeDescDiscounts.ValueScanner.(field.TypeValueScanner[*billing.Discounts]) // chargeflatfeeDescFeatureKey is the schema descriptor for feature_key field. chargeflatfeeDescFeatureKey := chargeflatfeeFields[6].Descriptor() // chargeflatfee.FeatureKeyValidator is a validator for the "feature_key" field. It is called by the builders before save. @@ -1146,9 +1146,12 @@ func init() { // chargeflatfeeoverrideDescProRating is the schema descriptor for pro_rating field. chargeflatfeeoverrideDescProRating := chargeflatfeeoverrideFields[16].Descriptor() chargeflatfeeoverride.ValueScanner.ProRating = chargeflatfeeoverrideDescProRating.ValueScanner.(field.TypeValueScanner[*productcatalog.ProRatingConfig]) + // chargeflatfeeoverrideDescDiscounts is the schema descriptor for discounts field. + chargeflatfeeoverrideDescDiscounts := chargeflatfeeoverrideFields[18].Descriptor() + chargeflatfeeoverride.ValueScanner.Discounts = chargeflatfeeoverrideDescDiscounts.ValueScanner.(field.TypeValueScanner[*billing.Discounts]) // chargeflatfeeoverrideDescPercentageDiscounts is the schema descriptor for percentage_discounts field. - chargeflatfeeoverrideDescPercentageDiscounts := chargeflatfeeoverrideFields[18].Descriptor() - chargeflatfeeoverride.ValueScanner.PercentageDiscounts = chargeflatfeeoverrideDescPercentageDiscounts.ValueScanner.(field.TypeValueScanner[*productcatalog.PercentageDiscount]) + chargeflatfeeoverrideDescPercentageDiscounts := chargeflatfeeoverrideFields[19].Descriptor() + chargeflatfeeoverride.ValueScanner.PercentageDiscounts = chargeflatfeeoverrideDescPercentageDiscounts.ValueScanner.(field.TypeValueScanner[*billing.PercentageDiscount]) // chargeflatfeeoverrideDescID is the schema descriptor for id field. chargeflatfeeoverrideDescID := chargeflatfeeoverrideMixinFields1[0].Descriptor() // chargeflatfeeoverride.DefaultID holds the default value on creation for the id field. @@ -1349,7 +1352,7 @@ func init() { chargeusagebased.UpdateDefaultUpdatedAt = chargeusagebasedDescUpdatedAt.UpdateDefault.(func() time.Time) // chargeusagebasedDescDiscounts is the schema descriptor for discounts field. chargeusagebasedDescDiscounts := chargeusagebasedFields[3].Descriptor() - chargeusagebased.ValueScanner.Discounts = chargeusagebasedDescDiscounts.ValueScanner.(field.TypeValueScanner[*productcatalog.Discounts]) + chargeusagebased.ValueScanner.Discounts = chargeusagebasedDescDiscounts.ValueScanner.(field.TypeValueScanner[*billing.Discounts]) // chargeusagebasedDescFeatureKey is the schema descriptor for feature_key field. chargeusagebasedDescFeatureKey := chargeusagebasedFields[4].Descriptor() // chargeusagebased.FeatureKeyValidator is a validator for the "feature_key" field. It is called by the builders before save. @@ -1395,7 +1398,7 @@ func init() { chargeusagebasedoverride.ValueScanner.Price = chargeusagebasedoverrideDescPrice.ValueScanner.(field.TypeValueScanner[*productcatalog.Price]) // chargeusagebasedoverrideDescDiscounts is the schema descriptor for discounts field. chargeusagebasedoverrideDescDiscounts := chargeusagebasedoverrideFields[16].Descriptor() - chargeusagebasedoverride.ValueScanner.Discounts = chargeusagebasedoverrideDescDiscounts.ValueScanner.(field.TypeValueScanner[*productcatalog.Discounts]) + chargeusagebasedoverride.ValueScanner.Discounts = chargeusagebasedoverrideDescDiscounts.ValueScanner.(field.TypeValueScanner[*billing.Discounts]) // chargeusagebasedoverrideDescUnitConfig is the schema descriptor for unit_config field. chargeusagebasedoverrideDescUnitConfig := chargeusagebasedoverrideFields[17].Descriptor() chargeusagebasedoverride.ValueScanner.UnitConfig = chargeusagebasedoverrideDescUnitConfig.ValueScanner.(field.TypeValueScanner[*productcatalog.UnitConfig]) diff --git a/openmeter/ent/db/setorclear.go b/openmeter/ent/db/setorclear.go index 2f12654a1c..6dd972374c 100644 --- a/openmeter/ent/db/setorclear.go +++ b/openmeter/ent/db/setorclear.go @@ -2581,14 +2581,14 @@ func (u *ChargeFlatFeeUpdateOne) SetOrClearIntentDeletedAt(value *time.Time) *Ch return u.SetIntentDeletedAt(*value) } -func (u *ChargeFlatFeeUpdate) SetOrClearDiscounts(value **productcatalog.Discounts) *ChargeFlatFeeUpdate { +func (u *ChargeFlatFeeUpdate) SetOrClearDiscounts(value **billing.Discounts) *ChargeFlatFeeUpdate { if value == nil { return u.ClearDiscounts() } return u.SetDiscounts(*value) } -func (u *ChargeFlatFeeUpdateOne) SetOrClearDiscounts(value **productcatalog.Discounts) *ChargeFlatFeeUpdateOne { +func (u *ChargeFlatFeeUpdateOne) SetOrClearDiscounts(value **billing.Discounts) *ChargeFlatFeeUpdateOne { if value == nil { return u.ClearDiscounts() } @@ -2721,14 +2721,28 @@ func (u *ChargeFlatFeeOverrideUpdateOne) SetOrClearFeatureKey(value *string) *Ch return u.SetFeatureKey(*value) } -func (u *ChargeFlatFeeOverrideUpdate) SetOrClearPercentageDiscounts(value **productcatalog.PercentageDiscount) *ChargeFlatFeeOverrideUpdate { +func (u *ChargeFlatFeeOverrideUpdate) SetOrClearDiscounts(value **billing.Discounts) *ChargeFlatFeeOverrideUpdate { + if value == nil { + return u.ClearDiscounts() + } + return u.SetDiscounts(*value) +} + +func (u *ChargeFlatFeeOverrideUpdateOne) SetOrClearDiscounts(value **billing.Discounts) *ChargeFlatFeeOverrideUpdateOne { + if value == nil { + return u.ClearDiscounts() + } + return u.SetDiscounts(*value) +} + +func (u *ChargeFlatFeeOverrideUpdate) SetOrClearPercentageDiscounts(value **billing.PercentageDiscount) *ChargeFlatFeeOverrideUpdate { if value == nil { return u.ClearPercentageDiscounts() } return u.SetPercentageDiscounts(*value) } -func (u *ChargeFlatFeeOverrideUpdateOne) SetOrClearPercentageDiscounts(value **productcatalog.PercentageDiscount) *ChargeFlatFeeOverrideUpdateOne { +func (u *ChargeFlatFeeOverrideUpdateOne) SetOrClearPercentageDiscounts(value **billing.PercentageDiscount) *ChargeFlatFeeOverrideUpdateOne { if value == nil { return u.ClearPercentageDiscounts() } @@ -3169,14 +3183,14 @@ func (u *ChargeUsageBasedUpdateOne) SetOrClearIntentDeletedAt(value *time.Time) return u.SetIntentDeletedAt(*value) } -func (u *ChargeUsageBasedUpdate) SetOrClearDiscounts(value **productcatalog.Discounts) *ChargeUsageBasedUpdate { +func (u *ChargeUsageBasedUpdate) SetOrClearDiscounts(value **billing.Discounts) *ChargeUsageBasedUpdate { if value == nil { return u.ClearDiscounts() } return u.SetDiscounts(*value) } -func (u *ChargeUsageBasedUpdateOne) SetOrClearDiscounts(value **productcatalog.Discounts) *ChargeUsageBasedUpdateOne { +func (u *ChargeUsageBasedUpdateOne) SetOrClearDiscounts(value **billing.Discounts) *ChargeUsageBasedUpdateOne { if value == nil { return u.ClearDiscounts() } diff --git a/openmeter/ent/schema/chargesflatfee.go b/openmeter/ent/schema/chargesflatfee.go index fc607c626c..6cc72ca325 100644 --- a/openmeter/ent/schema/chargesflatfee.go +++ b/openmeter/ent/schema/chargesflatfee.go @@ -9,6 +9,7 @@ import ( "entgo.io/ent/schema/index" "github.com/alpacahq/alpacadecimal" + "github.com/openmeterio/openmeter/openmeter/billing" "github.com/openmeterio/openmeter/openmeter/billing/charges/flatfee" "github.com/openmeterio/openmeter/openmeter/billing/charges/models/chargemeta" "github.com/openmeterio/openmeter/openmeter/billing/charges/models/creditrealization" @@ -48,8 +49,8 @@ func (ChargeFlatFee) Fields() []ent.Field { Nillable(), field.String("discounts"). - GoType(&productcatalog.Discounts{}). - ValueScanner(DiscountsValueScanner). + GoType(&billing.Discounts{}). + ValueScanner(BillingDiscountsValueScanner). SchemaType(map[string]string{ dialect.Postgres: "jsonb", }). @@ -224,14 +225,23 @@ func (ChargeFlatFeeOverride) Fields() []ent.Field { SchemaType(map[string]string{ dialect.Postgres: "numeric", }), - field.String("percentage_discounts"). - GoType(&productcatalog.PercentageDiscount{}). - ValueScanner(entutils.JSONStringValueScanner[*productcatalog.PercentageDiscount]()). + field.String("discounts"). + GoType(&billing.Discounts{}). + ValueScanner(BillingDiscountsValueScanner). SchemaType(map[string]string{ dialect.Postgres: "jsonb", }). Optional(). Nillable(), + field.String("percentage_discounts"). + GoType(&billing.PercentageDiscount{}). + ValueScanner(entutils.JSONStringValueScanner[*billing.PercentageDiscount]()). + SchemaType(map[string]string{ + dialect.Postgres: "jsonb", + }). + Optional(). + Nillable(). + Deprecated("use discounts"), } } diff --git a/openmeter/ent/schema/chargesusagebased.go b/openmeter/ent/schema/chargesusagebased.go index 96e28701a1..379338d8be 100644 --- a/openmeter/ent/schema/chargesusagebased.go +++ b/openmeter/ent/schema/chargesusagebased.go @@ -10,6 +10,7 @@ import ( "entgo.io/ent/schema/index" "github.com/alpacahq/alpacadecimal" + "github.com/openmeterio/openmeter/openmeter/billing" "github.com/openmeterio/openmeter/openmeter/billing/charges/models/chargemeta" "github.com/openmeterio/openmeter/openmeter/billing/charges/models/creditrealization" "github.com/openmeterio/openmeter/openmeter/billing/charges/models/invoicedusage" @@ -45,8 +46,8 @@ func (ChargeUsageBased) Fields() []ent.Field { Nillable(), field.String("discounts"). - GoType(&productcatalog.Discounts{}). - ValueScanner(DiscountsValueScanner). + GoType(&billing.Discounts{}). + ValueScanner(BillingDiscountsValueScanner). SchemaType(map[string]string{ dialect.Postgres: "jsonb", }). @@ -229,8 +230,8 @@ func (ChargeUsageBasedOverride) Fields() []ent.Field { dialect.Postgres: "jsonb", }), field.String("discounts"). - GoType(&productcatalog.Discounts{}). - ValueScanner(DiscountsValueScanner). + GoType(&billing.Discounts{}). + ValueScanner(BillingDiscountsValueScanner). SchemaType(map[string]string{ dialect.Postgres: "jsonb", }), diff --git a/tools/migrate/migrations/20260629144435_add_charge_flat_fee_override_discounts.down.sql b/tools/migrate/migrations/20260629144435_add_charge_flat_fee_override_discounts.down.sql new file mode 100644 index 0000000000..82ba160f49 --- /dev/null +++ b/tools/migrate/migrations/20260629144435_add_charge_flat_fee_override_discounts.down.sql @@ -0,0 +1,2 @@ +-- reverse: modify "charge_flat_fee_overrides" table +ALTER TABLE "charge_flat_fee_overrides" DROP COLUMN "discounts"; diff --git a/tools/migrate/migrations/20260629144435_add_charge_flat_fee_override_discounts.up.sql b/tools/migrate/migrations/20260629144435_add_charge_flat_fee_override_discounts.up.sql new file mode 100644 index 0000000000..ad0c7041f4 --- /dev/null +++ b/tools/migrate/migrations/20260629144435_add_charge_flat_fee_override_discounts.up.sql @@ -0,0 +1,2 @@ +-- modify "charge_flat_fee_overrides" table +ALTER TABLE "charge_flat_fee_overrides" ADD COLUMN "discounts" jsonb NULL; diff --git a/tools/migrate/migrations/atlas.sum b/tools/migrate/migrations/atlas.sum index 501ed4d6ba..ee60ce0dc0 100644 --- a/tools/migrate/migrations/atlas.sum +++ b/tools/migrate/migrations/atlas.sum @@ -1,4 +1,4 @@ -h1:bgFPOi8pTRFTvHXsuN+aO9mRiJdWQGYWUbPV/EMKAcg= +h1:fzOSy6j+SVmaTzQg8lGgyrSQ2klDJ3b0v1/7VK1EYCs= 20240826120919_init.up.sql h1:tc1V91/smlmaeJGQ8h+MzTEeFjjnrrFDbDAjOYJK91o= 20240903155435_entitlement-expired-index.up.sql h1:Hp8u5uckmLXc1cRvWU0AtVnnK8ShlpzZNp8pbiJLhac= 20240917172257_billing-entities.up.sql h1:Q1dAMo0Vjiit76OybClNfYPGC5nmvov2/M2W1ioi4Kw= @@ -217,3 +217,4 @@ h1:bgFPOi8pTRFTvHXsuN+aO9mRiJdWQGYWUbPV/EMKAcg= 20260625202530_add_unit_config.up.sql h1:Ta8PhtlFboqQfTpJ6zhK4HDyivXu5bVAyV75YUxi9QE= 20260629085650_add_subscription_addon_unique_index.up.sql h1:nroCbZHWjWs4jOxcFvHAIOOV6QJFVrnJ+AO8bTB+N+M= 20260629113257_credit-purchase-idempotency-key.up.sql h1:Q+MYH9VZ2dt4hOA8kBXvGy1SJt2OpzrfI8ZGgyMeZQk= +20260629144435_add_charge_flat_fee_override_discounts.up.sql h1:V530e9OaV95tf21PJjkCzGoGJ7wASFRcaNh88djqVqY=