diff --git a/server/src/internal/balances/handlers/handleUpdateBalance.ts b/server/src/internal/balances/handlers/handleUpdateBalance.ts index e1e7bb00d..0d3f1c892 100644 --- a/server/src/internal/balances/handlers/handleUpdateBalance.ts +++ b/server/src/internal/balances/handlers/handleUpdateBalance.ts @@ -1,12 +1,8 @@ import { - ErrCode, findFeatureById, notNullish, - nullish, - RecaseError, UpdateBalanceParamsV0Schema, } from "@autumn/shared"; -import { StatusCodes } from "http-status-codes"; import { createRoute } from "@/honoMiddlewares/routeHandler"; import { runUpdateBalanceV2 } from "@/internal/balances/updateBalance/runUpdateBalanceV2"; import { runUpdateUsage } from "@/internal/balances/updateBalance/runUpdateUsage"; @@ -32,15 +28,6 @@ export const handleUpdateBalance = createRoute({ const targetBalance = params.remaining ?? params.current_balance; - if (notNullish(params.included_grant) && nullish(targetBalance)) { - throw new RecaseError({ - message: - "'remaining' is required when updating granted balance", - code: ErrCode.InvalidRequest, - statusCode: StatusCodes.BAD_REQUEST, - }); - } - let fullCustomer = await getOrSetCachedFullCustomer({ ctx, customerId: params.customer_id, @@ -59,7 +46,6 @@ export const handleUpdateBalance = createRoute({ } if (notNullish(params.included_grant)) { - ctx.logger.info( `updating granted balance for feature ${params.feature_id} to ${params.included_grant}`, ); diff --git a/server/tests/integration/balances/update/balance/update-balance-prepaid-granted.test.ts b/server/tests/integration/balances/update/balance/update-balance-prepaid-granted.test.ts index b8baf3cda..ba70c6fbf 100644 --- a/server/tests/integration/balances/update/balance/update-balance-prepaid-granted.test.ts +++ b/server/tests/integration/balances/update/balance/update-balance-prepaid-granted.test.ts @@ -83,21 +83,12 @@ test.concurrent(`${chalk.yellowBright("update-prepaid-granted1: granted_balance }); // ── Simulate BalanceEditSheet "set" mode submission ── - // Form defaults mirror the API state: - // defaultGPB = granted + purchased = 300 - // defaultBalance = current_balance = 270 - // prepaidAllowance = purchased_balance = 200 - // // User increases GPB from 300 → 320 (wants +20 on granted) - const defaultGPB = bal.granted_balance + bal.purchased_balance; // 300 - const defaultBalance = bal.current_balance; // 270 const prepaidAllowance = bal.purchased_balance; // 200 const newGPB = 320; const grantedBalanceInput = computeGrantedBalanceInput({ newGPB, - defaultGPB, - defaultBalance, prepaidAllowance, }); diff --git a/shared/utils/cusEntUtils/balanceUtils/computeGrantedBalanceInput.ts b/shared/utils/cusEntUtils/balanceUtils/computeGrantedBalanceInput.ts index d749493be..5045246a0 100644 --- a/shared/utils/cusEntUtils/balanceUtils/computeGrantedBalanceInput.ts +++ b/shared/utils/cusEntUtils/balanceUtils/computeGrantedBalanceInput.ts @@ -11,8 +11,6 @@ export function computeGrantedBalanceInput({ prepaidAllowance, }: { newGPB: number; - defaultGPB: number; - defaultBalance: number; prepaidAllowance: number; }): number { return newGPB - prepaidAllowance; diff --git a/vite/src/views/customers2/components/sheets/BalanceEditSheet.tsx b/vite/src/views/customers2/components/sheets/BalanceEditSheet.tsx index b15c11025..ec765d824 100644 --- a/vite/src/views/customers2/components/sheets/BalanceEditSheet.tsx +++ b/vite/src/views/customers2/components/sheets/BalanceEditSheet.tsx @@ -13,7 +13,9 @@ import { ClockCountdownIcon } from "@phosphor-icons/react"; import { useStore } from "@tanstack/react-form"; import { useState } from "react"; import { toast } from "sonner"; +import { ConfigRow } from "@/components/forms/shared/ConfigRow"; import { DateInputUnix } from "@/components/general/DateInputUnix"; +import { Switch } from "@/components/ui/switch"; import { Button } from "@/components/v2/buttons/Button"; import { CopyButton } from "@/components/v2/buttons/CopyButton"; import { GroupedTabButton } from "@/components/v2/buttons/GroupedTabButton"; @@ -26,7 +28,6 @@ import { useAxiosInstance } from "@/services/useAxiosInstance"; import { formatUnixToDateTime } from "@/utils/formatUtils/formatDateUtils"; import { getBackendErr, notNullish } from "@/utils/genUtils"; import { useCusQuery } from "@/views/customers/customer/hooks/useCusQuery"; -import { InfoBox } from "@/views/onboarding2/integrate/components/InfoBox"; import { useCustomerContext } from "../../customer/CustomerContext"; import { BalanceEditPreviews } from "./BalanceEditPreviews"; import { GrantedBalancePopover } from "./GrantedBalancePopover"; @@ -463,6 +464,11 @@ function SetBalanceFields({ /* ─── Add Balance Mode ─── */ function AddBalanceFields({ form }: { form: BalanceEditFormInstance }) { + const updateGrantedBalance = useStore( + form.store, + (s) => s.values.updateGrantedBalance, + ); + return (