diff --git a/src/pages/products/components/CreateVariant.tsx b/src/pages/products/components/CreateVariant.tsx
index 5046982..333f692 100644
--- a/src/pages/products/components/CreateVariant.tsx
+++ b/src/pages/products/components/CreateVariant.tsx
@@ -2,6 +2,7 @@ import Button from '@/components/Button'
import DefaulModal from '@/components/DefaulModal'
import Input from '@/components/Input'
import Select from '@/components/Select'
+import DatePickerComponent from '@/components/DatePicker'
import { useState, type FC } from 'react'
import { useParams } from 'react-router-dom'
import { useCreateProductVariant, useGetProductById, useGetProductVariants } from '../hooks/useProductData'
@@ -44,28 +45,34 @@ const CreateVariant: FC = () => {
: Yup.string().required('انتخاب تنوع الزامی است'),
warrantyId: Yup.string().required('انتخاب گارانتی الزامی است'),
order_limit: Yup.number().required('محدودیت سفارش الزامی است').min(1, 'حداقل ۱ عدد'),
- sellerSpecialCode: Yup.string().required('کد ویژه فروشنده الزامی است'),
+ sellerSpecialCode: Yup.string(),
retail_price: Yup.number().required('قیمت فروش الزامی است').min(0, 'قیمت نمیتواند منفی باشد'),
package_weight: Yup.number().required('وزن بسته الزامی است').min(0.1, 'وزن باید حداقل ۰.۱ کیلوگرم باشد'),
package_height: Yup.number().required('ارتفاع بسته الزامی است').min(1, 'ارتفاع باید حداقل ۱ سانتیمتر باشد'),
package_length: Yup.number().required('طول بسته الزامی است').min(1, 'طول باید حداقل ۱ سانتیمتر باشد'),
package_width: Yup.number().required('عرض بسته الزامی است').min(1, 'عرض باید حداقل ۱ سانتیمتر باشد'),
postingTime: Yup.number().required('زمان ارسال الزامی است').min(1, 'زمان ارسال باید حداقل ۱ روز باشد'),
- stock: Yup.number().required('موجودی انبار الزامی است').min(0, 'موجودی نمیتواند منفی باشد')
+ stock: Yup.number().required('موجودی انبار الزامی است').min(0, 'موجودی نمیتواند منفی باشد'),
+ specialSale_order_limit: Yup.number().min(0, 'محدودیت فروش ویژه نمیتواند منفی باشد'),
+ specialSale_quantity: Yup.number().min(0, 'تعداد فروش ویژه نمیتواند منفی باشد'),
+ specialSale_endDate: Yup.string()
})
const initialValues = {
variantId: '',
warrantyId: '',
order_limit: '',
- sellerSpecialCode: '',
+ sellerSpecialCode: '' as string | undefined,
retail_price: '',
package_weight: '',
package_height: '',
package_length: '',
package_width: '',
postingTime: '',
- stock: ''
+ stock: '',
+ specialSale_order_limit: '',
+ specialSale_quantity: '',
+ specialSale_endDate: ''
}
const getVariantOptions = () => {
@@ -138,6 +145,15 @@ const CreateVariant: FC = () => {
variantData = baseData
}
+ if (!values.sellerSpecialCode) {
+ variantData.sellerSpecialCode = undefined
+ }
+
+ // اضافه کردن فیلدهای فروش ویژه - اگر خالی بودند undefined ارسال شوند
+ variantData.specialSale_order_limit = values.specialSale_order_limit ? parseInt(values.specialSale_order_limit) : undefined
+ variantData.specialSale_quantity = values.specialSale_quantity ? parseInt(values.specialSale_quantity) : undefined
+ variantData.specialSale_endDate = values.specialSale_endDate || undefined
+
createProductVariant.mutate(variantData, {
onSuccess: () => {
setShowModal(false)
@@ -390,6 +406,54 @@ const CreateVariant: FC = () => {
+ {/* اطلاعات فروش ویژه */}
+
+
فروش ویژه (اختیاری)
+
+
+
+ setFieldValue('specialSale_endDate', date)}
+ />
+
+
+
+
{/* دکمهها */}
-
-
- {({ field, form }: FormikFieldProps) => (
- ) => setFieldValue('discount_value', e.target.value)}
- />
- )}
-
-
-
+ {values.discount_type && (
+
+
+ {({ field, form }: FormikFieldProps) => (
+ ) => setFieldValue('discount_value', e.target.value)}
+ />
+ )}
+
+
+
+ )}
{/* اطلاعات فروش ویژه */}
diff --git a/src/pages/products/types/Types.ts b/src/pages/products/types/Types.ts
index 7ab4a85..d559929 100644
--- a/src/pages/products/types/Types.ts
+++ b/src/pages/products/types/Types.ts
@@ -270,7 +270,7 @@ export type CreateProductVariantRequestType = {
meterageId?: number;
warrantyId: number;
order_limit: number;
- sellerSpecialCode: string;
+ sellerSpecialCode?: string;
retail_price: number;
package_weight: number;
package_height: number;
@@ -278,6 +278,9 @@ export type CreateProductVariantRequestType = {
package_width: number;
postingTime: number;
stock: number;
+ specialSale_order_limit?: number;
+ specialSale_quantity?: number;
+ specialSale_endDate?: string;
};
export type CreateProductVariantResponseType = {
@@ -389,9 +392,9 @@ export type UpdateVariantRequestType = {
discount_type: "fixed" | "percent";
discount_value?: number;
discount_percent?: number;
- specialSale_order_limit: number;
- specialSale_quantity: number;
- specialSale_endDate: string;
+ specialSale_order_limit?: number;
+ specialSale_quantity?: number;
+ specialSale_endDate?: string;
};
export type UpdateVariantResponseType = {