diff --git a/src/components/pages/production/project-flock/form/ProjectFlockForm.tsx b/src/components/pages/production/project-flock/form/ProjectFlockForm.tsx index 89769787..f0ee4752 100644 --- a/src/components/pages/production/project-flock/form/ProjectFlockForm.tsx +++ b/src/components/pages/production/project-flock/form/ProjectFlockForm.tsx @@ -658,37 +658,48 @@ const ProjectFlockForm = ({ return ( <> -
+
{/* Header */} {formType == 'edit' && ( + )} + + {formType == 'add' && ( + )} @@ -719,145 +730,147 @@ const ProjectFlockForm = ({ onReset={formik.handleReset} > {/* Form Informasi Umum */} -
-
-

Informasi Umum

-
- - - { - return flock.label === formik.values.flock_name; - })?.value, - } as OptionType) - : undefined - } - onChange={(val) => { - optionChangeHandler(val, 'flock'); - setSelectedFlock((val as OptionType)?.label); - formik.setFieldValue( - 'flock_name', - (val as OptionType)?.label - ); - }} - options={optionsFlock} - onInputChange={setInputValueFlock} - onMenuScrollToBottom={loadMoreFlock} - isLoading={isLoadingFlocks} - isError={ - formik.touched.flock_name && Boolean(formik.errors.flock_name) - } - errorMessage={formik.errors.flock_name as string} - isClearable - isDisabled={formType != 'add'} - /> - { - optionChangeHandler(val, 'fcr'); - }} - onInputChange={setInputValueFcr} - onMenuScrollToBottom={loadMoreFcr} - options={optionsFcr} - isLoading={isLoadingFcrs} - isError={formik.touched.fcr_id && Boolean(formik.errors.fcr_id)} - errorMessage={formik.errors.fcr_id as string} - isClearable - isDisabled={formType != 'add'} - /> - - { - optionChangeHandler(val, 'production_standard'); - }} - onInputChange={setInputValueProductionStandard} - onMenuScrollToBottom={loadMoreProductionStandard} - options={optionsProductionStandards} - isLoading={isLoadingProductionStandards} - isError={ - formik.touched.production_standard_id && - Boolean(formik.errors.production_standard_id) - } - errorMessage={formik.errors.production_standard_id as string} - isClearable - isDisabled={formType != 'add'} - /> - -
+
+

+ Informasi Umum +

+ + + + { + return flock.label === formik.values.flock_name; + })?.value, + } as OptionType) + : undefined + } + onChange={(val) => { + optionChangeHandler(val, 'flock'); + setSelectedFlock((val as OptionType)?.label); + formik.setFieldValue('flock_name', (val as OptionType)?.label); + }} + options={optionsFlock} + onInputChange={setInputValueFlock} + onMenuScrollToBottom={loadMoreFlock} + isLoading={isLoadingFlocks} + isError={ + formik.touched.flock_name && Boolean(formik.errors.flock_name) + } + errorMessage={formik.errors.flock_name as string} + isClearable + isDisabled={formType != 'add'} + /> + { + optionChangeHandler(val, 'fcr'); + }} + onInputChange={setInputValueFcr} + onMenuScrollToBottom={loadMoreFcr} + options={optionsFcr} + isLoading={isLoadingFcrs} + isError={formik.touched.fcr_id && Boolean(formik.errors.fcr_id)} + errorMessage={formik.errors.fcr_id as string} + isClearable + isDisabled={formType != 'add'} + /> + + { + optionChangeHandler(val, 'production_standard'); + }} + onInputChange={setInputValueProductionStandard} + onMenuScrollToBottom={loadMoreProductionStandard} + options={optionsProductionStandards} + isLoading={isLoadingProductionStandards} + isError={ + formik.touched.production_standard_id && + Boolean(formik.errors.production_standard_id) + } + errorMessage={formik.errors.production_standard_id as string} + isClearable + isDisabled={formType != 'add'} + /> +
{/* Form Pilih Kandang */} -
-
-

Pilih Kandang

+ +
+

+ Informasi Kandang +

{isLoadingKandang && ( - + )} {/* Card Estimasi Budget */} -
-
-

- Estimasi Anggaran Per Flock -

+
{formik.values.project_budgets && formik.values.project_budgets.length > 0 ? ( formik.values.project_budgets.map((budget, index) => ( - -
-
-
Anggaran ke-{index + 1}
- +
*/} + +
+

+ Estimasi Anggaran Per Flock +

+ + +
+ +
+ { + const updatedBudgets = [ + ...formik.values.project_budgets, + ]; + updatedBudgets[index].nonstock = val as OptionType; + updatedBudgets[index].nonstock_id = + (val as OptionType) ? (val as OptionType).value : 0; + formik.setFieldValue( + 'project_budgets', + updatedBudgets + ); + formik.setFieldTouched( + `project_budgets[${index}].nonstock_id`, + true + ); + }} + errorMessage={ + ( + formik.errors.project_budgets?.[ index - ) - } - > - - -
-
- { - const updatedBudgets = [ - ...formik.values.project_budgets, - ]; - updatedBudgets[index].nonstock = val as OptionType; - updatedBudgets[index].nonstock_id = - (val as OptionType) - ? (val as OptionType).value - : 0; - formik.setFieldValue( - 'project_budgets', - updatedBudgets - ); - formik.setFieldTouched( - `project_budgets[${index}].nonstock_id`, - true - ); - }} - errorMessage={ + ] as FormikErrors + )?.nonstock_id as string + } + isError={ + formik.touched.project_budgets?.[index] + ?.nonstock_id && + Boolean( ( formik.errors.project_budgets?.[ index ] as FormikErrors )?.nonstock_id as string - } - isError={ - formik.touched.project_budgets?.[index] - ?.nonstock_id && - Boolean( - ( - formik.errors.project_budgets?.[ - index - ] as FormikErrors - )?.nonstock_id as string - ) - } - /> -
-
- - handleBudgetChange(index, 'qty', e.target.value) - } - onBlur={formik.handleBlur} - allowNegative={false} - endAdornment={ -
+ ) + } + /> +
+
+ + handleBudgetChange(index, 'qty', e.target.value) + } + onBlur={formik.handleBlur} + allowNegative={false} + inputPrefix={ +
+ {isResponseSuccess(nonstocks) ? (nonstocks.data.find( (ns) => ns.id === budget.nonstock_id )?.uom?.name ?? '') : ''} -
- } - errorMessage={ + + +
+
+ } + errorMessage={ + ( + formik.errors.project_budgets?.[ + index + ] as FormikErrors + )?.qty as string + } + isError={ + formik.touched.project_budgets?.[index]?.qty && + Boolean( ( formik.errors.project_budgets?.[ index ] as FormikErrors )?.qty as string - } - isError={ - formik.touched.project_budgets?.[index]?.qty && - Boolean( - ( - formik.errors.project_budgets?.[ - index - ] as FormikErrors - )?.qty as string - ) - } - /> -
-
- - handleBudgetChange(index, 'price', e.target.value) - } - onBlur={formik.handleBlur} - placeholder='Masukkan harga satuan' - allowNegative={false} - startAdornment='Rp' - endAdornment={ -
- {`Per ${ - isResponseSuccess(nonstocks) - ? (nonstocks.data.find( - (ns) => ns.id === budget.nonstock_id - )?.uom?.name ?? 'Item') - : 'Item' - }`} -
- } - errorMessage={ + ) + } + className={{ + inputPrefix: + 'py-0 px-0 pl-3 text-base-content/50 bg-transparent border-r-0', + inputWrapper: 'border-l-0 pl-5', + }} + /> +
+
+ + handleBudgetChange(index, 'price', e.target.value) + } + onBlur={formik.handleBlur} + placeholder='Masukkan Harga Satuan (Rp)' + allowNegative={false} + inputPrefix={ +
+ + Rp + + +
+
+ } + errorMessage={ + ( + formik.errors.project_budgets?.[ + index + ] as FormikErrors + )?.price as string + } + isError={ + formik.touched.project_budgets?.[index]?.price && + Boolean( ( formik.errors.project_budgets?.[ index ] as FormikErrors )?.price as string - } - isError={ - formik.touched.project_budgets?.[index]?.price && - Boolean( - ( - formik.errors.project_budgets?.[ - index - ] as FormikErrors - )?.price as string - ) - } - /> -
-
- - handleBudgetChange( - index, - 'total_price', - e.target.value - ) - } - onBlur={formik.handleBlur} - placeholder='Masukkan harga total' - allowNegative={false} - startAdornment='Rp' - endAdornment={ -
Total
- } - errorMessage={ + ) + } + className={{ + inputPrefix: + 'py-0 px-0 pl-3 text-base-content/50 bg-transparent border-r-0', + inputWrapper: 'border-l-0 pl-5', + }} + /> +
+
+ + handleBudgetChange( + index, + 'total_price', + e.target.value + ) + } + onBlur={formik.handleBlur} + placeholder='Masukkan Total Harga' + allowNegative={false} + inputPrefix={ +
+ + Rp + + +
+
+ } + errorMessage={ + ( + formik.errors.project_budgets?.[ + index + ] as FormikErrors + )?.total_price as string + } + isError={ + formik.touched.project_budgets?.[index] + ?.total_price && + Boolean( ( formik.errors.project_budgets?.[ index ] as FormikErrors )?.total_price as string - } - isError={ - formik.touched.project_budgets?.[index] - ?.total_price && - Boolean( - ( - formik.errors.project_budgets?.[ - index - ] as FormikErrors - )?.total_price as string - ) - } - /> -
+ ) + } + className={{ + inputPrefix: + 'py-0 px-0 pl-3 text-base-content/50 bg-transparent border-r-0', + inputWrapper: 'border-l-0 pl-5', + }} + />
- +
)) ) : (
@@ -1093,7 +1135,9 @@ const ProjectFlockForm = ({
- +
+ +
{formType !== 'detail' && ( @@ -1133,6 +1177,9 @@ const ProjectFlockForm = ({ isLoading: isDeleteLoading, onClick: confirmationModalDeleteClickHandler, }} + className={{ + modal: 'w-full sm:w-[446px]', + }} /> );