daily stock

This commit is contained in:
hamid zarghami
2025-12-21 16:49:39 +03:30
parent 4b37fe34ac
commit bc91153231
4 changed files with 34 additions and 8 deletions
+15 -2
View File
@@ -48,7 +48,8 @@ const CreateFood: FC = () => {
inPlaceServe: true, inPlaceServe: true,
isActive: true, isActive: true,
images: [], images: [],
isSpecialOffer: false isSpecialOffer: false,
dailyStock: 0
}, },
validationSchema: Yup.object().shape({ validationSchema: Yup.object().shape({
title: Yup.string().required('نام غذا الزامی است'), title: Yup.string().required('نام غذا الزامی است'),
@@ -57,6 +58,7 @@ const CreateFood: FC = () => {
price: Yup.number().required('قیمت الزامی است').min(0, 'قیمت باید مثبت باشد'), price: Yup.number().required('قیمت الزامی است').min(0, 'قیمت باید مثبت باشد'),
prepareTime: Yup.number().required('زمان آماده‌سازی الزامی است').min(0, 'زمان آماده‌سازی باید مثبت باشد'), prepareTime: Yup.number().required('زمان آماده‌سازی الزامی است').min(0, 'زمان آماده‌سازی باید مثبت باشد'),
discount: Yup.number().min(0, 'تخفیف باید مثبت باشد'), discount: Yup.number().min(0, 'تخفیف باید مثبت باشد'),
dailyStock: Yup.number().required('موجودی روزانه الزامی است').min(0, 'موجودی روزانه باید مثبت باشد'),
content: Yup.array().of(Yup.string()), content: Yup.array().of(Yup.string()),
weekDays: Yup.array().of(Yup.number()), weekDays: Yup.array().of(Yup.number()),
mealTypes: Yup.array().of(Yup.string()) mealTypes: Yup.array().of(Yup.string())
@@ -145,7 +147,7 @@ const CreateFood: FC = () => {
/> />
</div> </div>
<div className='grid grid-cols-3 gap-4 mt-5'> <div className='grid grid-cols-4 gap-4 mt-5'>
<Input <Input
name='price' name='price'
label='قیمت' label='قیمت'
@@ -177,6 +179,17 @@ const CreateFood: FC = () => {
onChange={(e) => formik.setFieldValue('prepareTime', Number(e.target.value))} onChange={(e) => formik.setFieldValue('prepareTime', Number(e.target.value))}
error_text={formik.touched.prepareTime && formik.errors.prepareTime ? formik.errors.prepareTime : ''} error_text={formik.touched.prepareTime && formik.errors.prepareTime ? formik.errors.prepareTime : ''}
/> />
<Input
name='dailyStock'
label='موجودی روزانه'
placeholder='عدد'
type='number'
seprator={true}
value={formik.values.dailyStock}
onChange={(e) => formik.setFieldValue('dailyStock', Number(e.target.value))}
error_text={formik.touched.dailyStock && formik.errors.dailyStock ? formik.errors.dailyStock : ''}
/>
</div> </div>
<div className='mt-5'> <div className='mt-5'>
+5 -2
View File
@@ -51,7 +51,8 @@ const UpdateFood: FC = () => {
inPlaceServe: false, inPlaceServe: false,
isActive: true, isActive: true,
images: [], images: [],
isSpecialOffer: false isSpecialOffer: false,
dailyStock: 0
}, },
validationSchema: Yup.object().shape({ validationSchema: Yup.object().shape({
title: Yup.string().required('نام غذا الزامی است'), title: Yup.string().required('نام غذا الزامی است'),
@@ -60,6 +61,7 @@ const UpdateFood: FC = () => {
price: Yup.number().required('قیمت الزامی است').min(0, 'قیمت باید مثبت باشد'), price: Yup.number().required('قیمت الزامی است').min(0, 'قیمت باید مثبت باشد'),
prepareTime: Yup.number().required('زمان آماده‌سازی الزامی است').min(0, 'زمان آماده‌سازی باید مثبت باشد'), prepareTime: Yup.number().required('زمان آماده‌سازی الزامی است').min(0, 'زمان آماده‌سازی باید مثبت باشد'),
discount: Yup.number().min(0, 'تخفیف باید مثبت باشد'), discount: Yup.number().min(0, 'تخفیف باید مثبت باشد'),
dailyStock: Yup.number().required('موجودی روزانه الزامی است').min(0, 'موجودی روزانه باید مثبت باشد'),
content: Yup.array().of(Yup.string()), content: Yup.array().of(Yup.string()),
weekDays: Yup.array().of(Yup.number()), weekDays: Yup.array().of(Yup.number()),
mealTypes: Yup.array().of(Yup.string()) mealTypes: Yup.array().of(Yup.string())
@@ -123,7 +125,8 @@ const UpdateFood: FC = () => {
inPlaceServe: food.inPlaceServe || false, inPlaceServe: food.inPlaceServe || false,
isActive: food.isActive || false, isActive: food.isActive || false,
images: food.images || [], images: food.images || [],
isSpecialOffer: food.isSpecialOffer || false isSpecialOffer: food.isSpecialOffer || false,
dailyStock: food.dailyStock || 0
}) })
setIsActive(food.isActive || false) setIsActive(food.isActive || false)
setIsSpecial(food.isSpecialOffer || false) setIsSpecial(food.isSpecialOffer || false)
+12 -4
View File
@@ -37,7 +37,7 @@ const BasicInfoSection: FC<BasicInfoSectionProps> = ({ formik, categories }) =>
/> />
</div> </div>
<div className='grid grid-cols-3 gap-4 mt-5'> <div className='grid grid-cols-4 gap-4 mt-5'>
<Input <Input
name='price' name='price'
label='قیمت' label='قیمت'
@@ -60,9 +60,6 @@ const BasicInfoSection: FC<BasicInfoSectionProps> = ({ formik, categories }) =>
error_text={formik.touched.discount && formik.errors.discount ? formik.errors.discount : ''} error_text={formik.touched.discount && formik.errors.discount ? formik.errors.discount : ''}
/> />
</div>
<div className='mt-5'>
<Input <Input
name='prepareTime' name='prepareTime'
label='زمان آماده سازی' label='زمان آماده سازی'
@@ -72,6 +69,17 @@ const BasicInfoSection: FC<BasicInfoSectionProps> = ({ formik, categories }) =>
onChange={(e) => formik.setFieldValue('prepareTime', Number(e.target.value))} onChange={(e) => formik.setFieldValue('prepareTime', Number(e.target.value))}
error_text={formik.touched.prepareTime && formik.errors.prepareTime ? formik.errors.prepareTime : ''} error_text={formik.touched.prepareTime && formik.errors.prepareTime ? formik.errors.prepareTime : ''}
/> />
<Input
name='dailyStock'
label='موجودی روزانه'
placeholder='عدد'
type='number'
seprator={true}
value={formik.values.dailyStock}
onChange={(e) => formik.setFieldValue('dailyStock', Number(e.target.value))}
error_text={formik.touched.dailyStock && formik.errors.dailyStock ? formik.errors.dailyStock : ''}
/>
</div> </div>
<div className='mt-5'> <div className='mt-5'>
+2
View File
@@ -15,6 +15,7 @@ export type CreateFoodType = {
pickupServe: boolean; pickupServe: boolean;
discount: number; discount: number;
isSpecialOffer: boolean; isSpecialOffer: boolean;
dailyStock: number;
}; };
export type Category = { export type Category = {
@@ -108,6 +109,7 @@ export type FoodDetails = {
score: number | null; score: number | null;
discount: number; discount: number;
isSpecialOffer: boolean; isSpecialOffer: boolean;
dailyStock?: number;
}; };
export type PaginationMeta = { export type PaginationMeta = {