custom product free -> paid
This commit is contained in:
@@ -450,7 +450,25 @@ export const createFullCusProduct = async ({
|
||||
apiVersion: attachParams.apiVersion,
|
||||
});
|
||||
|
||||
// Expire previous product if not one off
|
||||
// Expire previous product if not one off and add on...?
|
||||
if (!isOneOff(prices) && product.is_add_on) {
|
||||
const { curSameProduct } = getExistingCusProducts({
|
||||
product,
|
||||
cusProducts: attachParams.cusProducts!,
|
||||
internalEntityId: attachParams.internalEntityId,
|
||||
});
|
||||
|
||||
if (curSameProduct) {
|
||||
await CusProductService.update({
|
||||
db,
|
||||
cusProductId: curSameProduct.id,
|
||||
updates: {
|
||||
status: CusProductStatus.Expired,
|
||||
},
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
if (!isOneOff(prices) && !product.is_add_on) {
|
||||
await expireOrDeleteCusProduct({
|
||||
db,
|
||||
|
||||
@@ -69,6 +69,8 @@ export const handleAddProduct = async ({
|
||||
anchorToUnix = end * 1000;
|
||||
}
|
||||
|
||||
// Expire previous product
|
||||
|
||||
batchInsert.push(
|
||||
createFullCusProduct({
|
||||
db: req.db,
|
||||
|
||||
@@ -4,6 +4,7 @@ import { processAttachBody } from "./processAttachBody.js";
|
||||
import { orgToVersion } from "@/utils/versionUtils.js";
|
||||
import { APIVersion } from "@autumn/shared";
|
||||
import { AttachParams } from "../../../cusProducts/AttachParams.js";
|
||||
import { nullish } from "@/utils/genUtils.js";
|
||||
|
||||
export const getAttachParams = async ({
|
||||
req,
|
||||
@@ -40,6 +41,10 @@ export const getAttachParams = async ({
|
||||
const internalEntityId = entityId ? customer.entity?.internal_id : undefined;
|
||||
const { stripeCli, stripeCus, paymentMethod, now } = stripeVars;
|
||||
|
||||
if (nullish(attachBody.finalize_invoice)) {
|
||||
attachBody.finalize_invoice = true;
|
||||
}
|
||||
|
||||
const attachParams: AttachParams = {
|
||||
stripeCli,
|
||||
stripeCus,
|
||||
|
||||
@@ -177,8 +177,12 @@ const getSameProductBranch = async ({
|
||||
curSameProduct = curSameProduct!;
|
||||
|
||||
// 1. If new version?
|
||||
// console.log("Current same product version:", curSameProduct.product.version);
|
||||
// console.log("New Product version:", product.version);
|
||||
|
||||
const curPrices = cusProductToPrices({ cusProduct: curSameProduct });
|
||||
if (isFreeProduct(curPrices)) {
|
||||
return AttachBranch.MainIsFree;
|
||||
}
|
||||
|
||||
if (curSameProduct.product.version !== product.version) {
|
||||
return AttachBranch.NewVersion;
|
||||
}
|
||||
|
||||
@@ -45,7 +45,7 @@ export const AttachBodySchema = z
|
||||
reward: z.string().optional(),
|
||||
invoice: z.boolean().optional(),
|
||||
enable_product_immediately: z.boolean().optional(),
|
||||
finalize_invoice: z.boolean().optional().default(true),
|
||||
finalize_invoice: z.boolean().optional(),
|
||||
})
|
||||
.refine(
|
||||
(data) => {
|
||||
|
||||
Reference in New Issue
Block a user