198 lines
6.6 KiB
TypeScript
Raw Normal View History

2025-09-09 22:47:05 +07:00
'use client'
import React from 'react'
import { Button, Switch, FormControlLabel } from '@mui/material'
import Grid from '@mui/material/Grid2'
import CustomAutocomplete from '@/@core/components/mui/Autocomplete'
import CustomTextField from '@/@core/components/mui/TextField'
import { DropdownOption, PurchaseOrderFormData } from '@/types/apps/purchaseOrderTypes'
2025-09-09 23:05:23 +07:00
interface PurchaseBasicInfoProps {
2025-09-09 22:47:05 +07:00
formData: PurchaseOrderFormData
handleInputChange: (field: keyof PurchaseOrderFormData, value: any) => void
}
2025-09-09 23:05:23 +07:00
const PurchaseBasicInfo: React.FC<PurchaseBasicInfoProps> = ({ formData, handleInputChange }) => {
2025-09-09 22:47:05 +07:00
// Sample data for dropdowns
const vendorOptions: DropdownOption[] = [
{ label: 'Vendor A', value: 'vendor_a' },
{ label: 'Vendor B', value: 'vendor_b' },
{ label: 'Vendor C', value: 'vendor_c' }
]
const terminOptions: DropdownOption[] = [
{ label: 'Net 30', value: 'net_30' },
{ label: 'Net 15', value: 'net_15' },
{ label: 'Net 60', value: 'net_60' },
{ label: 'Cash on Delivery', value: 'cod' }
]
const ekspedisiOptions: DropdownOption[] = [
{ label: 'JNE', value: 'jne' },
{ label: 'J&T Express', value: 'jnt' },
{ label: 'SiCepat', value: 'sicepat' },
{ label: 'Pos Indonesia', value: 'pos' },
{ label: 'TIKI', value: 'tiki' }
]
return (
<>
{/* Row 1 - Vendor dan Nomor */}
<Grid size={{ xs: 12, sm: 6, md: 6 }}>
<CustomAutocomplete
fullWidth
options={vendorOptions}
value={formData.vendor}
onChange={(event, newValue) => handleInputChange('vendor', newValue)}
renderInput={params => <CustomTextField {...params} label='Vendor' placeholder='Pilih kontak' fullWidth />}
/>
</Grid>
<Grid size={{ xs: 12, sm: 6, md: 6 }}>
<CustomTextField
fullWidth
label='Nomor'
value={formData.nomor}
onChange={(e: React.ChangeEvent<HTMLInputElement>) => handleInputChange('nomor', e.target.value)}
InputProps={{
readOnly: true
}}
/>
</Grid>
{/* Row 2 - Tgl. Transaksi, Tgl. Jatuh Tempo, Termin */}
<Grid size={{ xs: 12, sm: 4, md: 4 }}>
<CustomTextField
fullWidth
label='Tgl. Transaksi'
type='date'
value={formData.tglTransaksi}
onChange={(e: React.ChangeEvent<HTMLInputElement>) => handleInputChange('tglTransaksi', e.target.value)}
InputLabelProps={{
shrink: true
}}
/>
</Grid>
<Grid size={{ xs: 12, sm: 4, md: 4 }}>
<CustomTextField
fullWidth
label='Tgl. Jatuh Tempo'
type='date'
value={formData.tglJatuhTempo}
onChange={(e: React.ChangeEvent<HTMLInputElement>) => handleInputChange('tglJatuhTempo', e.target.value)}
InputLabelProps={{
shrink: true
}}
/>
</Grid>
<Grid size={{ xs: 12, sm: 4, md: 4 }}>
<CustomAutocomplete
fullWidth
options={terminOptions}
value={formData.termin}
onChange={(event, newValue) => handleInputChange('termin', newValue)}
renderInput={params => <CustomTextField {...params} label='Termin' placeholder='Net 30' fullWidth />}
/>
</Grid>
{/* Row 3 - Tampilkan Informasi Pengiriman */}
<Grid size={12}>
<Button
variant='text'
color='primary'
onClick={() => handleInputChange('showShippingInfo', !formData.showShippingInfo)}
sx={{
textTransform: 'none',
fontSize: '14px',
fontWeight: 500,
padding: '8px 0',
display: 'flex',
alignItems: 'center',
gap: 1
}}
>
{formData.showShippingInfo ? '−' : '+'} {formData.showShippingInfo ? 'Sembunyikan' : 'Tampilkan'} Informasi
Pengiriman
</Button>
</Grid>
{/* Shipping Information - Conditional */}
{formData.showShippingInfo && (
<>
<Grid size={{ xs: 12, sm: 4, md: 4 }}>
<CustomTextField
fullWidth
label='Tanggal Pengiriman'
type='date'
placeholder='Pilih tanggal'
value={formData.tanggalPengiriman}
onChange={(e: React.ChangeEvent<HTMLInputElement>) =>
handleInputChange('tanggalPengiriman', e.target.value)
}
InputLabelProps={{
shrink: true
}}
/>
</Grid>
<Grid size={{ xs: 12, sm: 4, md: 4 }}>
<CustomAutocomplete
fullWidth
options={ekspedisiOptions}
value={formData.ekspedisi}
onChange={(event, newValue) => handleInputChange('ekspedisi', newValue)}
renderInput={params => (
<CustomTextField {...params} label='Ekspedisi' placeholder='Pilih ekspedisi' fullWidth />
)}
/>
</Grid>
<Grid size={{ xs: 12, sm: 4, md: 4 }}>
<CustomTextField
fullWidth
label='No. Resi'
placeholder='No. Resi'
value={formData.noResi}
onChange={(e: React.ChangeEvent<HTMLInputElement>) => handleInputChange('noResi', e.target.value)}
/>
</Grid>
</>
)}
{/* Row 4 - Referensi, SKU, Switch Pajak */}
<Grid size={{ xs: 12, sm: 4, md: 4 }}>
<CustomTextField
fullWidth
label='Referensi'
placeholder='Referensi'
value={formData.referensi}
onChange={(e: React.ChangeEvent<HTMLInputElement>) => handleInputChange('referensi', e.target.value)}
/>
</Grid>
<Grid size={{ xs: 12, sm: 4, md: 4 }}>
<CustomTextField fullWidth label='SKU' placeholder='Scan Barcode/SKU' variant='outlined' />
</Grid>
<Grid size={{ xs: 12, sm: 4, md: 4 }} sx={{ display: 'flex', alignItems: 'center', justifyContent: 'flex-end' }}>
<FormControlLabel
control={
<Switch
checked={formData.hargaTermasukPajak}
onChange={(e: React.ChangeEvent<HTMLInputElement>) =>
handleInputChange('hargaTermasukPajak', e.target.checked)
}
color='primary'
/>
}
label='Harga termasuk pajak'
sx={{
marginLeft: 0,
'& .MuiFormControlLabel-label': {
fontSize: '14px',
color: 'text.secondary'
}
}}
/>
</Grid>
</>
)
}
2025-09-09 23:05:23 +07:00
export default PurchaseBasicInfo