From 3658e6ffc0ca4ca9679b2e25bcb4d45c361d6718 Mon Sep 17 00:00:00 2001 From: morteza-mortezai Date: Thu, 9 Jul 2026 15:45:03 +0330 Subject: [PATCH] update price bug fixed --- src/pages/product/Create.tsx | 15 ++---- src/pages/product/Update.tsx | 26 +++------ src/pages/product/utils/productPayload.ts | 64 +++++++++++++++++++++++ 3 files changed, 74 insertions(+), 31 deletions(-) create mode 100644 src/pages/product/utils/productPayload.ts diff --git a/src/pages/product/Create.tsx b/src/pages/product/Create.tsx index dc1dde2..bd7cee2 100644 --- a/src/pages/product/Create.tsx +++ b/src/pages/product/Create.tsx @@ -12,6 +12,7 @@ import CreateProductSidebar from "./components/CreateProductSidebar"; import { PaymentType, PricingType, PurchaseUnit } from "./enum/Enum"; import { useCreateProduct, useGetCategories } from "./hooks/useProductData"; import type { CreateProductType } from "./types/Types"; +import { buildProductPayload } from "./utils/productPayload"; const CreateProduct: FC = () => { const navigate = useNavigate(); @@ -73,20 +74,12 @@ const CreateProduct: FC = () => { }), onSubmit: (values) => { const submitProduct = (imageUrls: string[] = []) => { - const variants = values.variants.length > 0 ? values.variants : [{ value: "", price: values.price, ...(values.stock !== undefined && values.stock !== null && { stock: values.stock }) }]; - const productData: CreateProductType = { - ...values, - variants, + const productData = buildProductPayload({ + values, isActive, isSpecialOffer: isSpecial, images: imageUrls, - needAdminAcceptance: values.paymentType === PaymentType.AFTER_PREPARATION, - ...(values.pricingType === PricingType.FIXED && { - purchaseUnit: values.purchaseUnit ?? PurchaseUnit.NUMBER, - minPurchaseQuantity: values.minPurchaseQuantity ?? 1, - purchasePitch: undefined, - }), - }; + }); createProduct(productData, { onSuccess: () => { diff --git a/src/pages/product/Update.tsx b/src/pages/product/Update.tsx index dc055ed..83bfaf8 100644 --- a/src/pages/product/Update.tsx +++ b/src/pages/product/Update.tsx @@ -14,6 +14,7 @@ import CreateProductSidebar from "./components/CreateProductSidebar"; import { PaymentType, PricingType, PurchaseUnit } from "./enum/Enum"; import { useGetCategories, useGetProductDetails, useUpdateProduct } from "./hooks/useProductData"; import type { CreateProductType } from "./types/Types"; +import { buildProductPayload } from "./utils/productPayload"; const UpdateProduct: FC = () => { const { id } = useParams<{ id: string }>(); @@ -30,6 +31,7 @@ const UpdateProduct: FC = () => { const categories = categoriesData?.data ?? []; const product = productData?.data; + const isSubmitting = isPending || isUploading; const formik = useFormik({ initialValues: { @@ -86,28 +88,12 @@ const UpdateProduct: FC = () => { const submitProduct = (newImageUrls: string[] = []) => { const allImages = [...values.images, ...newImageUrls]; - const variants = - values.variants.length > 0 - ? values.variants.map((v) => ({ - ...(v.id && { id: v.id }), - value: v.value ?? "", - price: v.price ?? 0, - ...(v.stock !== undefined && v.stock !== null && { stock: v.stock }), - })) - : [{ value: "", price: values.price, ...(values.stock !== undefined && values.stock !== null && { stock: values.stock }) }]; - const productData: CreateProductType = { - ...values, - variants, + const productData = buildProductPayload({ + values, isActive, isSpecialOffer: isSpecial, images: allImages, - needAdminAcceptance: values.paymentType === PaymentType.AFTER_PREPARATION, - ...(values.pricingType === PricingType.FIXED && { - purchaseUnit: values.purchaseUnit ?? PurchaseUnit.NUMBER, - minPurchaseQuantity: values.minPurchaseQuantity ?? 1, - purchasePitch: undefined, - }), - }; + }); updateProduct( { id, params: productData }, @@ -199,7 +185,7 @@ const UpdateProduct: FC = () => {
ویرایش کالا
-