mirror of
https://gitlab.com/mbugroup/lti-web-client.git
synced 2026-05-24 07:15:44 +00:00
feat(FE-62): enhance MovementForm with area and location display for warehouse selection
This commit is contained in:
@@ -198,6 +198,11 @@ const MovementForm = ({ type = 'add', initialValues }: MovementFormProps) => {
|
|||||||
return touchedField && Boolean(errorField?.[column as string]);
|
return touchedField && Boolean(errorField?.[column as string]);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
interface WarehouseOptionType extends OptionType {
|
||||||
|
area?: string;
|
||||||
|
location?: string;
|
||||||
|
}
|
||||||
|
|
||||||
// Warehouse selection
|
// Warehouse selection
|
||||||
const [warehouseSelectInputValue, setWarehouseSelectInputValue] =
|
const [warehouseSelectInputValue, setWarehouseSelectInputValue] =
|
||||||
useState('');
|
useState('');
|
||||||
@@ -207,7 +212,15 @@ const MovementForm = ({ type = 'add', initialValues }: MovementFormProps) => {
|
|||||||
WarehouseApi.getAllFetcher
|
WarehouseApi.getAllFetcher
|
||||||
);
|
);
|
||||||
const warehouseOptions = isResponseSuccess(warehouses)
|
const warehouseOptions = isResponseSuccess(warehouses)
|
||||||
? warehouses?.data.map((w) => ({ value: w.id, label: w.name }))
|
? warehouses?.data.map((w) => ({
|
||||||
|
value: w.id,
|
||||||
|
label: w.name,
|
||||||
|
area: w.area?.name,
|
||||||
|
location:
|
||||||
|
'type' in w && (w.type === 'LOKASI' || w.type === 'KANDANG')
|
||||||
|
? w.location?.name
|
||||||
|
: undefined,
|
||||||
|
}))
|
||||||
: [];
|
: [];
|
||||||
|
|
||||||
// Product selection
|
// Product selection
|
||||||
@@ -291,16 +304,17 @@ const MovementForm = ({ type = 'add', initialValues }: MovementFormProps) => {
|
|||||||
{/* Warehouse cards */}
|
{/* Warehouse cards */}
|
||||||
<div className='grid grid-cols-2 gap-4 mb-4'>
|
<div className='grid grid-cols-2 gap-4 mb-4'>
|
||||||
<div className='card bg-base-100 shadow'>
|
<div className='card bg-base-100 shadow'>
|
||||||
<div className='card-body'>
|
<div className='card-body space-y-4'>
|
||||||
|
<h3 className='card-title text-lg'>Gudang Asal</h3>
|
||||||
<SelectInput
|
<SelectInput
|
||||||
required
|
required
|
||||||
label='Gudang Asal'
|
label='Gudang'
|
||||||
value={formik.values.warehouse_asal ?? undefined}
|
value={formik.values.warehouse_asal ?? undefined}
|
||||||
onChange={(val) => {
|
onChange={(val) => {
|
||||||
formik.setFieldValue('warehouse_asal', val);
|
formik.setFieldValue('warehouse_asal', val);
|
||||||
formik.setFieldValue(
|
formik.setFieldValue(
|
||||||
'warehouse_asal_id',
|
'warehouse_asal_id',
|
||||||
(val as OptionType)?.value
|
(val as WarehouseOptionType)?.value
|
||||||
);
|
);
|
||||||
}}
|
}}
|
||||||
options={warehouseOptions}
|
options={warehouseOptions}
|
||||||
@@ -314,20 +328,51 @@ const MovementForm = ({ type = 'add', initialValues }: MovementFormProps) => {
|
|||||||
isDisabled={type === 'detail'}
|
isDisabled={type === 'detail'}
|
||||||
isClearable
|
isClearable
|
||||||
/>
|
/>
|
||||||
|
|
||||||
|
{/* Area and Location Info */}
|
||||||
|
<div className='space-y-4'>
|
||||||
|
<TextInput
|
||||||
|
label='Area'
|
||||||
|
name='warehouse_asal_area'
|
||||||
|
value={
|
||||||
|
(formik.values.warehouse_asal as WarehouseOptionType)
|
||||||
|
?.area || '-'
|
||||||
|
}
|
||||||
|
readOnly
|
||||||
|
disabled
|
||||||
|
className={{
|
||||||
|
input: 'bg-base-200',
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
<TextInput
|
||||||
|
label='Lokasi'
|
||||||
|
name='warehouse_asal_location'
|
||||||
|
value={
|
||||||
|
(formik.values.warehouse_asal as WarehouseOptionType)
|
||||||
|
?.location || '-'
|
||||||
|
}
|
||||||
|
readOnly
|
||||||
|
disabled
|
||||||
|
className={{
|
||||||
|
input: 'bg-base-200',
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div className='card bg-base-100 shadow'>
|
<div className='card bg-base-100 shadow'>
|
||||||
<div className='card-body'>
|
<div className='card-body space-y-4'>
|
||||||
|
<h3 className='card-title text-lg'>Gudang Tujuan</h3>
|
||||||
<SelectInput
|
<SelectInput
|
||||||
required
|
required
|
||||||
label='Gudang Tujuan'
|
label='Gudang'
|
||||||
value={formik.values.warehouse_tujuan ?? undefined}
|
value={formik.values.warehouse_tujuan ?? undefined}
|
||||||
onChange={(val) => {
|
onChange={(val) => {
|
||||||
formik.setFieldValue('warehouse_tujuan', val);
|
formik.setFieldValue('warehouse_tujuan', val);
|
||||||
formik.setFieldValue(
|
formik.setFieldValue(
|
||||||
'warehouse_tujuan_id',
|
'warehouse_tujuan_id',
|
||||||
(val as OptionType)?.value
|
(val as WarehouseOptionType)?.value
|
||||||
);
|
);
|
||||||
}}
|
}}
|
||||||
options={warehouseOptions}
|
options={warehouseOptions}
|
||||||
@@ -341,10 +386,39 @@ const MovementForm = ({ type = 'add', initialValues }: MovementFormProps) => {
|
|||||||
isDisabled={type === 'detail'}
|
isDisabled={type === 'detail'}
|
||||||
isClearable
|
isClearable
|
||||||
/>
|
/>
|
||||||
|
|
||||||
|
{/* Area and Location Info */}
|
||||||
|
<div className='space-y-4'>
|
||||||
|
<TextInput
|
||||||
|
label='Area'
|
||||||
|
name='warehouse_tujuan_area'
|
||||||
|
value={
|
||||||
|
(formik.values.warehouse_tujuan as WarehouseOptionType)
|
||||||
|
?.area || '-'
|
||||||
|
}
|
||||||
|
readOnly
|
||||||
|
disabled
|
||||||
|
className={{
|
||||||
|
input: 'bg-base-200',
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
<TextInput
|
||||||
|
label='Lokasi'
|
||||||
|
name='warehouse_tujuan_location'
|
||||||
|
value={
|
||||||
|
(formik.values.warehouse_tujuan as WarehouseOptionType)
|
||||||
|
?.location || '-'
|
||||||
|
}
|
||||||
|
readOnly
|
||||||
|
disabled
|
||||||
|
className={{
|
||||||
|
input: 'bg-base-200',
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{/* Products table */}
|
{/* Products table */}
|
||||||
<div className='card bg-base-100 shadow mb-4'>
|
<div className='card bg-base-100 shadow mb-4'>
|
||||||
<div className='card-body'>
|
<div className='card-body'>
|
||||||
|
|||||||
Reference in New Issue
Block a user