// 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 } 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 Dokumen = forwardRef( // ({ handleIsError, isKonfirmasi, buttonSubmitClick }, ref) => { // const isError = (value) => { // // Logika menentukan error // const result = value ? true : false; // handleIsError(result); // Panggil handleIsError dari Merchant // return result; // }; // const { // register, // handleSubmit, // formState: { errors }, // control, // reset, // watch, // setValue, // getValues, // } = useForm({ // resolver: yupResolver(validationSchema), // defaultValues, // }); // const list_unit = [ // { // value: 'Manufacturing', // label: 'Manufacturing', // }, // { // value: 'Hospitality', // label: 'Hospitality', // }, // { // value: 'Automotive', // label: 'Automotive', // }, // { // value: 'Retail', // label: 'Retail', // }, // { // value: 'Maining', // label: 'Maining', // }, // { // value: 'Lain - Lain', // label: 'Lain - Lain', // }, // ]; // const [fileNames, setFileNames] = useState({}); // const [DeatailFile, setDetailFile] = useState({}); // const [isExample, setIsExample] = useState(false); // const [isPkp, setIsPkp] = useState(false); // 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 dataProdukRef = useRef(null); // const pricelistRef = useRef(null); // const router = useRouter(); // const auth = useAuth(); // if (auth == false) { // router.push(`/login?next=${encodeURIComponent('/daftar-merchant')}`); // } // useEffect(() => { // const loadData = async () => { // try { // const data = await getMerchantApi(); // if (data) { // 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 // : '', // ['pricelist']: data.filePricelist ? data.filePricelist.name : '', // })); // } // } catch (error) { // console.error('Error loading profile:', error); // handleIsError(true); // Jika ada error, panggil fungsi error handler // } // }; // loadData(); // }, [reset, handleIsError]); // useEffect(() => { // if (!isKonfirmasi) { // window.scrollTo({ // top: 0, // behavior: 'smooth', // }); // } // }, []); // useImperativeHandle(ref, () => () => { // handleSubmit(onSubmitHandler)(); // }); // useEffect(() => { // const loadProfile = async () => { // try { // const dataProfile = await addressApi({ // id: auth.parentId ? auth.parentId : auth.partnerId, // }); // if (dataProfile.companyType == 'pkp') { // setIsPkp(true); // } // setValue('company', 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); // } // }; // loadProfile(); // }, [auth?.parentId]); // const onSubmitHandler = async (values) => { // const options = { // behavior: 'smooth', // block: 'center', // }; // 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, // }; // if (!npwp.name && isPkp) { // if (npwpRef?.current) { // npwpRef.current.scrollIntoView(options); // } // toast.error('NPWP wajib di tambahkan'); // return; // } // if (!sppkp.name && isPkp) { // toast.error('SPPKP wajib di tambahkan'); // if (sppkpRef?.current) { // sppkpRef.current.scrollIntoView(options); // } // return; // } // 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; // } // if (!pricelist.name) { // toast.error('Pricelist wajib di tambahkan'); // if (pricelistRef?.current) { // pricelistRef.current.scrollIntoView(options); // } // return; // } // 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 : '' }, // file_dataProduk: { details: dataProduk.format ? dataProduk : '' }, // file_pricelist: { details: pricelist.format ? pricelist : '' }, // }; // let data = { // file_dokumen: JSON.stringify(dokumen), // }; // const create_leads = await createMerchantApi({ data }); // if (create_leads) { // toast.dismiss(toastId); // toast.success('Berhasil menambahkan data'); // isError(false); // reset(); // } else { // toast.dismiss(toastId); // toast.error('Gagal menambahkan data'); // } // }; // if (!auth) { // return; // } // 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 // })); // }; // return ( // <> // setIsExample(false)} // > // // // // // // // // Dokumen // // // // // // // NPWP{' '} // {!isPkp && ( // (Opsional) // )} // // {!isKonfirmasi && ( // // Pastikan dokumen yang anda upload sudah benar // // )} // // // // {isKonfirmasi && ( // // {fileNames.npwp} // // )} // // {fileNames.npwp ? 'Ubah Dokumen' : 'Upload Dokumen'} // // { // 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} // // // // // // // // SPPKP{' '} // {!isPkp && ( // (Opsional) // )} // // {!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} // // )} // // {fileNames.sppkp ? 'Ubah Dokumen' : 'Upload Dokumen'} // // // // {!isKonfirmasi && ( // // Format: pdf, jpeg, jpg, png. max file size 2MB // // )} // // {errors.sppkp?.message} // // // // // // // KTP Dirut/Direktur{' '} // {isPkp && (Opsional)} // // {!isKonfirmasi && ( // // Pastikan dokumen yang anda upload sudah benar // // )} // // // // {isKonfirmasi && ( // // {fileNames.dokumenKtpDirut} // // )} // // {fileNames.dokumenKtpDirut // ? 'Ubah Dokumen' // : 'Upload Dokumen'} // // // {!isKonfirmasi && ( // // {fileNames.dokumenKtpDirut} // // )} // // {!isKonfirmasi && ( // // Format: pdf, jpeg, jpg, png. max file size 2MB // // )} // // {errors.dokumenKtpDirut?.message} // // // // // // // Kartu Nama (Opsional){' '} // // {!isKonfirmasi && ( // // Pastikan dokumen yang anda upload sudah benar // // )} // // // // {isKonfirmasi && ( // // {fileNames.kartuNama} // // )} // // {fileNames.kartuNama // ? 'Ubah Dokumen' // : 'Upload Dokumen'} // // // {!isKonfirmasi && ( // // {fileNames.kartuNama} // // )} // // {!isKonfirmasi && ( // // Format: pdf, jpeg, jpg, png. max file size 2MB // // )} // // {errors.kartuNama?.message} // // // // // // // // Surat Pernyataan Nomor Rekening{' '} // (Opsional) // // {!isKonfirmasi && ( // // Wajib diisi jika nomor rekening berbeda dengan nama // perusahaan // // )} // // // Download Template // // // // // {isKonfirmasi && ( // // {fileNames.suratPernyataan} // // )} // // {fileNames.suratPernyataan // ? 'Ubah Dokumen' // : 'Upload Dokumen'} // // // {!isKonfirmasi && ( // // {fileNames.suratPernyataan} // // )} // // {!isKonfirmasi && ( // // Format: pdf, jpeg, jpg, png. max file size 2MB // // )} // // {errors.suratPernyataan?.message} // // // // // // // Foto Gudang / Kantor Bagian Depan // // {!isKonfirmasi && ( // // Pastikan dokumen yang anda upload sudah benar // // )} // // // // {isKonfirmasi && ( // // {fileNames.fotoKantor} // // )} // // {fileNames.fotoKantor // ? 'Ubah Dokumen' // : 'Upload Dokumen'} // // // {!isKonfirmasi && ( // // {fileNames.fotoKantor} // // )} // // {!isKonfirmasi && ( // // Format: pdf, jpeg, jpg, png. max file size 2MB // // )} // // {errors.fotoKantor?.message} // // // // // // // Data Produk (Item Name, Gambar, Deskripsi){' '} // (Opsional){' '} // // {!isKonfirmasi && ( // // Pastikan dokumen yang anda upload sudah benar // // )} // // // // {isKonfirmasi && ( // // {fileNames.dataProduk} // // )} // // {fileNames.dataProduk // ? 'Ubah Dokumen' // : 'Upload Dokumen'} // // // {!isKonfirmasi && ( // // {fileNames.dataProduk} // // )} // // {!isKonfirmasi && ( // // Format: pdf, jpeg, jpg, png. max file size 2MB // // )} // // {errors.dataProduk?.message} // // // // // // // Pricelist // // {!isKonfirmasi && ( // // Pastikan dokumen yang anda upload sudah benar // // )} // // // // {isKonfirmasi && ( // // {fileNames.pricelist} // // )} // // {fileNames.pricelist // ? 'Ubah Dokumen' // : 'Upload Dokumen'} // // // {!isKonfirmasi && ( // // {fileNames.pricelist} // // )} // // {!isKonfirmasi && ( // // Format: pdf, jpeg, jpg, png. max file size 2MB // // )} // // {errors.pricelist?.message} // // // // // {/* // // */} // // // {/* // Daftar Merchant{' '} // {} // */} // {!isKonfirmasi && ( // // // *Pastikan data yang anda masukan sudah benar dan sesuai // // // Langkah Selanjutnya // {} // // // )} // // // // // // // // // {!isKonfirmasi && ( // Dokumen // )} // // // // // NPWP{' '} // {!isPkp && (Opsional)} // // // // {fileNames.npwp ? 'Ubah Dokumen' : 'Upload Dokumen'} // // { // 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} // // // // // // SPPKP{' '} // {!isPkp && ( // (Opsional) // )} // // 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 ? 'Ubah Dokumen' : 'Upload Dokumen'} // // // // {fileNames.sppkp} // // // // Format: pdf, jpeg, jpg, png. max file size 2MB // // // {errors.sppkp?.message} // // // // // KTP Dirut/Direktur{' '} // {isPkp && (Opsional)} // // // // {fileNames.dokumenKtpDirut // ? 'Ubah Dokumen' // : 'Upload Dokumen'} // // // // {fileNames.dokumenKtpDirut} // // // // Format: pdf, jpeg, jpg, png. max file size 2MB // // // {errors.dokumenKtpDirut?.message} // // // // // Kartu Nama (Opsional){' '} // // // // {fileNames.kartuNama ? 'Ubah Dokumen' : 'Upload Dokumen'} // // // // {fileNames.kartuNama} // // // // Format: pdf, jpeg, jpg, png. max file size 2MB // // // {errors.kartuNama?.message} // // // // // // Surat Pernyataan Nomor Rekening{' '} // (Opsional) // // // // Download Template // // // // // // {fileNames.suratPernyataan // ? 'Ubah Dokumen' // : 'Upload Dokumen'} // // // // {fileNames.suratPernyataan} // // // // Format: pdf, jpeg, jpg, png. max file size 2MB // // // {errors.suratPernyataan?.message} // // // // // Foto Gudang / Kantor Bagian Depan // // // // {fileNames.fotoKantor ? 'Ubah Dokumen' : 'Upload Dokumen'} // // // // {fileNames.fotoKantor} // // // // Format: pdf, jpeg, jpg, png. max file size 2MB // // // {errors.fotoKantor?.message} // // // // // Data Produk (Item Name, Gambar, Deskripsi){' '} // (Opsional){' '} // // // // {fileNames.dataProduk ? 'Ubah Dokumen' : 'Upload Dokumen'} // // // // {fileNames.dataProduk} // // // // Format: pdf, jpeg, jpg, png. max file size 2MB // // // {errors.fotoKantor?.message} // // // // Pricelist // // // {fileNames.pricelist ? 'Ubah Dokumen' : 'Upload Dokumen'} // // // // {fileNames.pricelist} // // // // Format: pdf, jpeg, jpg, png. max file size 2MB // // // {errors.pricelist?.message} // // // // {/* // // */} // // // {/* // Daftar Merchant{' '} // {} // */} // {!isKonfirmasi && ( // // // *Pastikan data yang anda masukan sudah benar dan sesuai // // // Langkah Selanjutnya // {} // // // )} // // // // // // // > // ); // } // ); // const validationSchema = Yup.object().shape({ // npwp: Yup.mixed().required('File is required'), // pricelist: Yup.mixed().required('File is required'), // }); // const defaultValues = { // company: '', // pejabatName: '', // PICName: '', // PICPosition: '', // email: '', // emailSales: '', // emailFinance: '', // phone: '', // state: '', // city: '', // district: '', // subDistrict: '', // zip: '', // bank: '', // rekening: '', // accountNumber: '', // address: '', // mobile: '', // }; // export default Dokumen;
Lihat Contoh
Download Template
// Download Template //