import HookFormSelect from '@/core/components/elements/Select/HookFormSelect'; import cityApi from '@/lib/address/api/cityApi'; import stateApi from '@/lib/address/api/stateApi.js'; import districtApi from '@/lib/address/api/districtApi'; import subDistrictApi from '@/lib/address/api/subDistrictApi'; import { yupResolver } from '@hookform/resolvers/yup'; import React, { useEffect, useRef, useState, forwardRef, useImperativeHandle, } from 'react'; import ReCAPTCHA from 'react-google-recaptcha'; import { Controller, useForm } from 'react-hook-form'; import { toast } from 'react-hot-toast'; import * as Yup from 'yup'; import createMerchantApi from '../api/createMerchantApi'; import getMerchantApi from '../api/getMerchantApi'; import addressApi from '@/lib/address/api/addressApi'; import PageContent from '@/lib/content/components/PageContent'; import { useRouter } from 'next/router'; import useAuth from '@/core/hooks/useAuth'; import { Radio, RadioGroup, Stack, Divider, Button } from '@chakra-ui/react'; import { EyeIcon } from '@heroicons/react/24/outline'; import BottomPopup from '@/core/components/elements/Popup/BottomPopup'; import Image from 'next/image'; import ImageBanner from '~/components/ui/image'; import { ChevronRightIcon, ChevronLeftIcon } from '@heroicons/react/24/outline'; import MobileView from '@/core/components/views/MobileView'; import DesktopView from '@/core/components/views/DesktopView'; import getFileBase64 from '@/core/utils/getFileBase64'; import odooApi from '~/libs/odooApi'; const CreateMerchant = forwardRef( ({ handleIsError, isKonfirmasi, buttonSubmitClick }, ref) => { const isError = (value) => { // Logika menentukan error const result = value ? true : false; handleIsError(result); // Panggil handleIsError dari Merchant return result; }; // React.useEffect(() => { // handleIsError(isError()); // }, [handleIsError]); const { register, handleSubmit, formState: { errors }, control, reset, watch, setValue, getValues, } = useForm({ resolver: yupResolver(validationSchema), defaultValues, }); const [bisnisType, setBisnisType] = useState([]); const [state, setState] = useState([]); const [cities, setCities] = useState([]); const [districts, setDistricts] = useState([]); const [subDistricts, setSubDistricts] = useState([]); const [zips, setZips] = useState([]); const [isExample, setIsExample] = useState(false); const [isPkp, setIsPkp] = useState(false); const [fileNames, setFileNames] = useState({}); const [DeatailFile, setDetailFile] = useState({}); const npwpRef = useRef(null); const sppkpRef = useRef(null); const ktpDirutRef = useRef(null); const kartuNamaRef = useRef(null); const suratPernyataanRef = useRef(null); const fotoKantorRef = useRef(null); const bisnisTypeRef = useRef(null); const handleConfirmSubmit = (format, base64) => { if (format == 'pdf') { setFormat(`application/${format}`); } else if (format == 'png' || format == 'jpg' || format == 'jpeg') { setFormat(`image/${format}`); } else { setFormat(format); } setBase64( base64.trim().replace(/^"+/, '').replace(/"+$/, '').replaceAll('\\', '') ); setIsExample(!isExample); }; const handleInputChange = async (event) => { let fileBase64 = ''; const { name } = event.target; const file = event.target.files?.[0]; // Allowed file extensions const allowedExtensions = ['pdf', 'png', 'jpg', 'jpeg']; let fileExtension = ''; if (file) { fileExtension = file.name.split('.').pop()?.toLowerCase(); // Extract file extension // Check if the file extension is allowed if (!fileExtension || !allowedExtensions.includes(fileExtension)) { toast.error( 'Format file yang diijinkan adalah .pdf, .png, .jpg, atau .jpeg', { duration: 4000 } ); event.target.value = ''; return; } // Check for file size if (file.size > 500000) { try { const toastId = toast.loading('mencoba mengompresi file...'); // Compress image file const options = { maxSizeMB: 0.5, // Target size in MB maxWidthOrHeight: 1920, // Adjust as needed useWebWorker: true, }; const compressedFile = await imageCompression(file, options); toast.success('berhasil mengompresi file', { duration: 4000 }); // Convert compressed file to Base64 fileBase64 = await getFileBase64(compressedFile); updateFormDokumen( name, compressedFile.name, fileExtension, fileBase64 ); } catch (error) { toast.error('Gagal mengompresi file', { duration: 4000 }); } } else { // Convert file to Base64 fileBase64 = await getFileBase64(file); updateFormDokumen(name, file.name, fileExtension, fileBase64); } validateDokumen(); } }; useEffect(() => { window.scrollTo({ top: 0, behavior: 'smooth', }); }, []); useImperativeHandle(ref, () => () => { handleSubmit(onSubmitHandler)(); }); const recaptchaRef = useRef(null); const router = useRouter(); const auth = useAuth(); if (auth == false) { router.push(`/login?next=${encodeURIComponent('/daftar-merchant')}`); } const dataBisnisType = [ { value: 1, label: 'PT' }, { value: 2, label: 'CV' }, { value: 3, label: 'Perorangan' }, ]; const dataCategoryPerusahaan = [ { value: 1, label: 'Principal (Pemegang merk/Produsen)' }, { value: 2, label: 'Sole Distributor (Distributor Tunggal)' }, { value: 3, label: 'Authorized Distributor (Distributor Resmi)' }, { value: 4, label: 'Importer (Pengimpor Barang)' }, { value: 5, label: 'Wholesaler (Pedagang Besar)' }, ]; const handleFileChange = async (event) => { let fileBase64 = ''; const file = event.target.files[0]; if (file.size > 2000000) { // try { // const toastId = toast.loading('mencoba mengompresi file...'); // // Compress image file // const options = { // maxSizeMB: 0.5, // Target size in MB // maxWidthOrHeight: 1920, // Adjust as needed // useWebWorker: true, // }; // const compressedFile = await imageCompression(file, options); // toast.success('berhasil mengompresi file', { duration: 4000 }); // // Convert compressed file to Base64 // fileBase64 = await getFileBase64(compressedFile); // } catch (error) { // toast.error('Gagal mengompresi file', { duration: 4000 }); // } toast.error('Maks file size 2MB', { duration: 4000 }); } else { // Convert file to Base64 fileBase64 = await getFileBase64(file); } const fieldName = event.target.name; // Nama input file setDetailFile((prev) => ({ ...prev, [fieldName]: file ? fileBase64 : '', // Tambahkan atau perbarui file di state })); setFileNames((prev) => ({ ...prev, [fieldName]: file ? file.name : '', // Tambahkan atau perbarui file di state })); }; useEffect(() => { const loadData = async () => { try { const data = await getMerchantApi(); if (data) { reset({ name: data.name ? data.name : '', address: data.address ? data.address : '', state: data.state ? data.state : '', city: data.city || '', district: data.district || '', subDistrict: data.subDistrict || '', zip: parseInt(data.zip) || '', email: data.emailCompany || '', emailSales: data.emailSales || '', emailFinance: data.emailFinance || '', bank: data.bankName || '', rekening: data.rekeningName || '', accountNumber: data.accountNumber || '', phone: data.phone || '', mobile: data.mobile || '', bisnisType: data.bisnisType || '', categoryPerusahaan: data.categoryPerusahaan ? parseInt(data.categoryPerusahaan) : null, website: data.website || '', }); setFileNames((prev) => ({ ...prev, ['npwp']: data.fileNpwp ? data.fileNpwp.name : '', ['sppkp']: data.fileSppkp ? data.fileSppkp.name : '', ['dokumenKtpDirut']: data.fileDokumenKtpDirut ? data.fileDokumenKtpDirut.name : '', ['kartuNama']: data.fileKartuNama ? data.fileKartuNama.name : '', ['suratPernyataan']: data.fileSuratPernyataan ? data.fileSuratPernyataan.name : '', ['fotoKantor']: data.fileFotoKantor ? data.fileFotoKantor.name : '', ['dataProduk']: data.fileDataProduk ? data.fileDataProduk.name : '', })); } } catch (error) { console.error('Error loading profile:', error); handleIsError(true); // Jika ada error, panggil fungsi error handler } }; loadData(); }, [reset, handleIsError]); useEffect(() => { if (errors.bisnisType && bisnisTypeRef.current) { bisnisTypeRef.current.scrollIntoView({ behavior: "smooth", block: "center" }); } }, [errors.bisnisType]); useEffect(() => { const loadProfile = async () => { try { const dataProfile = await addressApi({ id: auth.parentId ? auth.parentId : auth.partnerId, }); if (dataProfile.companyType == 'pkp') { setIsPkp(true); } setValue('name', dataProfile?.name); setValue('address', dataProfile?.alamatBisnis); setValue('state', parseInt(dataProfile.stateId.id)); setValue('city', parseInt(dataProfile.city.id)); setValue('district', parseInt(dataProfile.district.id)); setValue('subDistrict', parseInt(dataProfile.subDistrict.id)); setValue('zip', parseInt(dataProfile.zip)); } catch (error) { console.error('Error loading profile:', error); } }; const npwp = { name: fileNames.npwp, format: DeatailFile.npwp }; const sppkp = { name: fileNames.sppkp, format: DeatailFile.sppkp }; const dokumenKtpDirut = { name: fileNames.dokumenKtpDirut, format: DeatailFile.dokumenKtpDirut, }; const kartuNama = { name: fileNames.kartuNama, format: DeatailFile.kartuNama, }; const suratPernyataan = { name: fileNames.suratPernyataan, format: DeatailFile.suratPernyataan, }; const fotoKantor = { name: fileNames.fotoKantor, format: DeatailFile.fotoKantor, }; const dataProduk = { name: fileNames.dataProduk, format: DeatailFile.dataProduk, }; const pricelist = { name: fileNames.pricelist, format: DeatailFile.pricelist, }; const dokumen = { file_npwp: { details: npwp.format ? npwp : '' }, file_sppkp: { details: sppkp.format ? sppkp : '' }, file_dokumenKtpDirut: { details: dokumenKtpDirut.format ? dokumenKtpDirut : '', }, file_kartuNama: { details: kartuNama.format ? kartuNama : '' }, file_suratPernyataan: { details: suratPernyataan.format ? suratPernyataan : '', }, file_fotoKantor: { details: fotoKantor.format ? fotoKantor : '' }, file_dataProduk: { details: dataProduk.format ? dataProduk : '' }, }; let data = { file_dokumen: JSON.stringify(dokumen), }; loadProfile(); }, [auth?.parentId]); useEffect(() => { const loadState = async () => { let dataState = await stateApi({ tempo: false }); dataState = dataState.map((state) => ({ value: state.id, label: state.name, })); setState(dataState); }; loadState(); }, []); const watchState = watch('state'); useEffect(() => { if (auth == false) { return; } if (watchState) { // setValue('city', ''); const loadCities = async () => { let dataCities = await cityApi({ stateId: watchState }); dataCities = dataCities?.map((city) => ({ value: city.id, label: city.name, })); setCities(dataCities); }; loadCities(); } }, [auth, watchState]); const watchCity = watch('city'); useEffect(() => { if (watchCity) { // setValue('district', ''); const loadDistricts = async () => { let dataDistricts = await districtApi({ cityId: watchCity }); dataDistricts = dataDistricts.map((district) => ({ value: district.id, label: district.name, })); setDistricts(dataDistricts); }; loadDistricts(); } }, [watchCity]); const watchDistrict = watch('district'); useEffect(() => { if (watchDistrict) { // setValue('subDistrict', ''); const loadSubDistricts = async () => { let dataSubDistricts = await subDistrictApi({ districtId: watchDistrict, }); dataSubDistricts = dataSubDistricts.map((district) => ({ value: district.id, label: district.name, })); setSubDistricts(dataSubDistricts); }; loadSubDistricts(); } }, [watchDistrict]); const watchsubDistrict = watch('subDistrict'); useEffect(() => { let kelurahan = ''; let kecamatan = ''; if (watchDistrict) { // setValue('zip', ''); for (const data in districts) { if (districts[data].value == watchDistrict) { kecamatan = districts[data].label.toLowerCase(); } } } if (watchsubDistrict) { for (const data in subDistricts) { if (subDistricts[data].value == watchsubDistrict) { kelurahan = subDistricts[data].label.toLowerCase(); } } const loadZip = async () => { const response = await fetch( `https://alamat.thecloudalert.com/api/cari/index/?keyword=${kelurahan}` ); let dataMasuk = []; // Array untuk menyimpan kode pos yang sudah diproses const result = await response.json(); // Filter dan map data const dataZips = result.result .filter((zip) => zip.kecamatan.toLowerCase() === kecamatan) // Filter berdasarkan kecamatan .filter((zip) => { // Pastikan zip.kodepos belum ada di dataMasuk if (dataMasuk.includes(zip.kodepos)) { return false; // Jika sudah ada, maka skip (tidak akan ditambahkan) } else { dataMasuk.push(zip.kodepos); // Tambahkan ke dataMasuk return true; // Tambahkan zip ke hasil } }) .map((zip) => ({ value: parseInt(zip.kodepos), label: zip.kodepos, })); setZips(dataZips); // Set hasil ke state }; loadZip(); } }, [watchsubDistrict, subDistricts]); const [selected, setSelected] = useState('PKP'); const onSubmitHandler = async (values) => { const npwp = { name: fileNames.npwp, format: DeatailFile.npwp }; const sppkp = { name: fileNames.sppkp, format: DeatailFile.sppkp }; const dokumenKtpDirut = { name: fileNames.dokumenKtpDirut, format: DeatailFile.dokumenKtpDirut, }; const kartuNama = { name: fileNames.kartuNama, format: DeatailFile.kartuNama, }; const suratPernyataan = { name: fileNames.suratPernyataan, format: DeatailFile.suratPernyataan, }; const fotoKantor = { name: fileNames.fotoKantor, format: DeatailFile.fotoKantor, }; const toastId = toast.loading('Mengirimkan formulir merchant...'); const dokumen = { file_npwp: { details: npwp.format ? npwp : '' }, file_sppkp: { details: sppkp.format ? sppkp : '' }, file_dokumenKtpDirut: { details: dokumenKtpDirut.format ? dokumenKtpDirut : '', }, file_kartuNama: { details: kartuNama.format ? kartuNama : '' }, file_suratPernyataan: { details: suratPernyataan.format ? suratPernyataan : '', }, file_fotoKantor: { details: fotoKantor.format ? fotoKantor : '' }, }; const data = { name_merchant: 'Form Merchant - ' + values.name, address: values.address, state: parseInt(values.state), city: parseInt(values.city), district: parseInt(values.district), subDistrict: parseInt(values.subDistrict), zip: values.zip, bank_name: values.bank, rekening_name: values.rekening, account_number: values.accountNumber, email_company: values.email, email_sales: values.emailSales, email_finance: values.emailFinance, phone: values.phone, mobile: values.mobile, bisnis_type: values.bisnisType, description: 'Nama Perusahaan : ' + values.name + ' \r\n Alamat : ' + values.address + ' \r\n Kota : ' + values.city + ' \r\n Telepon: ' + values.phone + ' \r\n Email : ' + values.email + ' \r\n No Hp : ' + values.mobile, file_dokumen: JSON.stringify(dokumen), }; const options = { behavior: 'smooth', block: 'center', }; if (!dokumenKtpDirut.name && !isPkp) { toast.error('KTP Dirut/Direktur wajib di tambahkan'); if (ktpDirutRef?.current) { ktpDirutRef.current.scrollIntoView(options); } return; } if (!fotoKantor.name) { toast.error('Foto Gudang / Kantor Bagian Depan wajib di tambahkan'); if (fotoKantorRef?.current) { fotoKantorRef.current.scrollIntoView(options); } return; } const create_leads = await createMerchantApi({ data }); if (create_leads) { toast.dismiss(toastId); toast.success('Berhasil menambahkan data'); isError(false); reset(); // router.push('/'); } else { toast.dismiss(toastId); toast.error('Gagal menambahkan data'); } }; // const DownLoadSurat = () => { // download surat dari /public/file/Surat Pernyataan Nomor Rekening.docx // }; if (!auth) { return; } // Tetap di bagian atas, tidak boleh ada kondisi sebelum hook const onInvalid = (errors) => { console.error('Form validation errors:', errors); }; return ( <> setIsExample(false)} >
Contoh SPPKP

Informasi Bisnis

(
{dataBisnisType.map((option) => (
)} />
{!isKonfirmasi && ( Isi detail perusahaan sesuai dengan nama yang terdaftar{' '} )}
Format: PT. INDOTEKNIK DOTCOM GEMILANG{''}
{errors.name?.message}
{/*
{!isKonfirmasi && ( isi dengan nama pejabat yang berwewenang di perusahaan anda )}
{errors.pejabatName?.message}
{!isKonfirmasi && ( isi dengan nama sales / penanggung jawab )}
{errors.PICName?.message}
{!isKonfirmasi && ( isi dengan jabatan sales / penanggung jawab )}
{errors.PICPosition?.message}
*/}
{!isKonfirmasi && ( Alamat sesuai dengan alamat perusahaan{''} )}
{errors.address?.message}
( )} />
{errors.state?.message}
( )} />
{errors.city?.message}
( )} />
{errors.district?.message}
( )} />
{errors.subDistrict?.message}
( )} />
{errors.zip?.message}
{!isKonfirmasi && ( Isi detail data bank perusahaan anda )}
{!isKonfirmasi && ( Format: BCA, Mandiri, CIMB, BNI dll )}
{errors.bank?.message}
{!isKonfirmasi && ( Format: John Doe )}
{errors.rekening?.message}
{!isKonfirmasi && ( Format: 01234567896 )}
{errors.accountNumber?.message}
{errors.email?.message}
{errors.emailSales?.message}
{errors.emailFinance?.message}
{!isKonfirmasi && ( Isi no telepon perusahaan yang sesuai )}
{errors.phone?.message}
{!isKonfirmasi && ( Isi no handphone perusahaan yang sesuai )}
{errors.mobile?.message}
{!isKonfirmasi && ( Pastikan dokumen yang anda upload sudah benar )}
{isKonfirmasi && ( {fileNames.dokumenKtpDirut} )} {!isKonfirmasi && ( {fileNames.dokumenKtpDirut} )}
{!isKonfirmasi && ( Format: pdf, jpeg, jpg, png. max file size 2MB )}
{errors.dokumenKtpDirut?.message}
{!isKonfirmasi && ( Pastikan dokumen yang anda upload sudah benar )}
{isKonfirmasi && ( {fileNames.kartuNama} )} {!isKonfirmasi && ( {fileNames.kartuNama} )}
{!isKonfirmasi && ( Format: pdf, jpeg, jpg, png. max file size 2MB )}
{errors.kartuNama?.message}
{!isKonfirmasi && ( Pastikan dokumen yang anda upload sudah benar )}
{isKonfirmasi && ( {fileNames.npwp} )} { handleFileChange(e); // Untuk update UI (opsional) }} aria-invalid={errors.npwp?.message} /> {!isKonfirmasi && ( {fileNames.npwp} )}
{!isKonfirmasi && ( Format: pdf, jpeg, jpg, png. max file size 2MB )}
{errors.npwp?.message}
{!isKonfirmasi && ( Pastikan dokumen yang anda upload sudah benar )}
setIsExample(!isExample)} className={`h-fit ${ !isKonfirmasi && 'mr-8' } rounded text-white p-2 flex flex-row items-center bg-red-500 hover:cursor-pointer hover:bg-red-400`} > {!isKonfirmasi && (

Lihat Contoh

)}
{isKonfirmasi && ( {fileNames.sppkp} )} {!isKonfirmasi && ( {fileNames.sppkp} )}
{!isKonfirmasi && ( Format: pdf, jpeg, jpg, png. max file size 2MB )}
{errors.sppkp?.message}
{!isKonfirmasi && ( Wajib diisi jika nomor rekening berbeda dengan nama perusahaan )}

Download Template

{isKonfirmasi && ( {fileNames.suratPernyataan} )} {!isKonfirmasi && ( {fileNames.suratPernyataan} )}
{!isKonfirmasi && ( Format: pdf, jpeg, jpg, png. max file size 2MB )}
{errors.suratPernyataan?.message}
{!isKonfirmasi && ( Pastikan dokumen yang anda upload sudah benar )}
{isKonfirmasi && ( {fileNames.fotoKantor} )} {!isKonfirmasi && ( {fileNames.fotoKantor} )}
{!isKonfirmasi && ( Format: pdf, jpeg, jpg, png. max file size 2MB )}
{errors.fotoKantor?.message}
{/*
{!isKonfirmasi && ( Pilih tipe bisnis yang sesuai )}
( )} />
{errors.bisnisType?.message}
{!isKonfirmasi && ( Pilih kategori perusahaan yang sesuai )}
( )} />
{errors.categoryPerusahaan?.message}
{!isKonfirmasi && ( isi dengan website perusahaan anda )}
{errors.website?.message}
*/}
{/*
*/}
{/* */} {!isKonfirmasi && (
*Pastikan data yang anda masukan sudah benar dan sesuai
)}
{!isKonfirmasi && (

Informasi Perusahaan

)} (
{dataBisnisType.map((option) => (
)} />
{errors.bisnisType?.message}
{errors.name?.message}
Isi detail perusahaan sesuai dengan nama yang terdaftar{' '}
{/*
{errors.pejabatName?.message}
isi dengan nama pejabat yang berwewenang di perusahaan anda{' '}
{errors.PICName?.message}
Isi dengan nama sales / penanggung jawab
{errors.PICPosition?.message}
isi dengan jabatan sales / penanggung jawab
*/}
{errors.address?.message}
( )} />
{errors.state?.message}
( )} />
{errors.city?.message}
( )} />
{errors.district?.message}
( )} />
{errors.subDistrict?.message}
( )} />
{errors.zip?.message}
Alamat sesuai dengan alamat perusahaan
{errors.bank?.message}
{errors.rekening?.message}
{errors.accountNumber?.message}
Isi detail data bank perusahaan anda
{errors.email?.message}
Isi detail perusahaan sesuai dengan data yang terdaftar
{errors.emailSales?.message}
Isi detail perusahaan sesuai dengan data yang terdaftar
{errors.emailFinance?.message}
Isi detail perusahaan sesuai dengan data yang terdaftar
{errors.phone?.message}
Isi detail perusahaan sesuai dengan data yang terdaftar
{errors.mobile?.message}
Isi detail perusahaan sesuai dengan data yang terdaftar
{fileNames.dokumenKtpDirut}
Format: pdf, jpeg, jpg, png. max file size 2MB
{errors.dokumenKtpDirut?.message}
{fileNames.kartuNama}
Format: pdf, jpeg, jpg, png. max file size 2MB
{errors.kartuNama?.message}
{ handleFileChange(e); // Untuk update UI (opsional) }} aria-invalid={errors.npwp?.message} /> {fileNames.npwp}
Format: pdf, jpeg, jpg, png. max file size 2MB
{errors.npwp?.message}
setIsExample(!isExample)} className='h-fit rounded text-white p-2 flex flex-row items-center bg-red-500 hover:cursor-pointer hover:bg-red-400' >

Lihat Contoh

{fileNames.sppkp}
Format: pdf, jpeg, jpg, png. max file size 2MB
{errors.sppkp?.message}

Download Template

{fileNames.suratPernyataan}
Format: pdf, jpeg, jpg, png. max file size 2MB
{errors.suratPernyataan?.message}
{fileNames.fotoKantor}
Format: pdf, jpeg, jpg, png. max file size 2MB
{errors.fotoKantor?.message}
{/*
( )} /> {!isKonfirmasi && ( Pilih tipe bisnis yang sesuai )}
{errors.bisnisType?.message}
( )} /> {!isKonfirmasi && ( Pilih kategori perusahaan yang sesuai )}
{errors.categoryPerusahaan?.message}
{!isKonfirmasi && ( isi dengan website perusahaan anda )}
{errors.website?.message}
*/}
{/*
*/}
{/* */} {!isKonfirmasi && (
*Pastikan data yang anda masukan sudah benar dan sesuai
)}
); } ); const validationSchema = Yup.object().shape({ bisnisType: Yup.string().required('Harus dipilih'), name: Yup.string().required('Harus di-isi'), address: Yup.string().required('Harus di-isi'), state: Yup.string().required('Harus dipilih'), city: Yup.string().required('Harus dipilih'), district: Yup.string().required('Harus dipilih'), subDistrict: Yup.string().required('Harus dipilih'), zip: Yup.string().required('Harus di-isi'), bank: Yup.string().required('Harus di-isi'), rekening: Yup.string().required('Harus di-isi'), accountNumber: Yup.string().required('Harus di-isi'), email: Yup.string() .email('Format harus seperti contoh@email.com') .required('Harus di-isi'), emailSales: Yup.string() .email('Format harus seperti contoh@email.com') .required('Harus di-isi'), emailFinance: Yup.string() .email('Format harus seperti contoh@email.com') .required('Harus di-isi'), phone: Yup.string().required('Harus di-isi'), mobile: Yup.string().required('Harus di-isi'), }); const defaultValues = { name: '', address: '', state: '', city: '', district: '', subDistrict: '', zip: '', email: '', emailSales: '', emailFinance: '', bank: '', rekening: '', accountNumber: '', phone: '', mobile: '', bisnisType: '', }; export default CreateMerchant;