summaryrefslogtreecommitdiff
path: root/src/lib/merchant/components/SyaratDagang.jsx
diff options
context:
space:
mode:
authorit-fixcomart <it@fixcomart.co.id>2025-01-20 10:33:19 +0700
committerit-fixcomart <it@fixcomart.co.id>2025-01-20 10:33:19 +0700
commitcb083185ce59df7143ea258e147a118a1e416e56 (patch)
tree8b003da0e6630df422931215f67cf51095659f08 /src/lib/merchant/components/SyaratDagang.jsx
parentdde82979c57ab0261a802ab4134e65272e3d4a37 (diff)
<iman> update merchant
Diffstat (limited to 'src/lib/merchant/components/SyaratDagang.jsx')
-rw-r--r--src/lib/merchant/components/SyaratDagang.jsx144
1 files changed, 77 insertions, 67 deletions
diff --git a/src/lib/merchant/components/SyaratDagang.jsx b/src/lib/merchant/components/SyaratDagang.jsx
index 83faf520..362302fd 100644
--- a/src/lib/merchant/components/SyaratDagang.jsx
+++ b/src/lib/merchant/components/SyaratDagang.jsx
@@ -4,7 +4,13 @@ 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 } from 'react';
+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';
@@ -25,7 +31,7 @@ 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 SyaratDagang = ({ handleIsError }) => {
+const SyaratDagang = forwardRef(({ handleIsError, isKonfirmasi }, ref) => {
const isError = (value) => {
// Logika menentukan error
const result = value ? true : false;
@@ -91,32 +97,36 @@ const SyaratDagang = ({ handleIsError }) => {
const data = await getMerchantApi();
setbigData(data);
console.log('data vendor', data);
- reset({
- isKembaliBarang: data.isKembaliBarang || '',
- textReturn: data.textReturn || '',
- tenggatWaktu: (() => {
- const waktu = data.tenggatWaktu
- ? data.tenggatWaktu.split(' ')[0]
- : '';
- if (waktu === '14') return '14';
- if (waktu === '30') return '30';
- return 'custom';
- })(),
- customTenggatWaktu: (() => {
- if (watch('tenggatWaktu') === 'custom') return data.tenggatWaktu;
- return '';
- })(),
- sertifikatProduk: data.sertifikatProduk || '',
- customSertifikatProduk: data.customSertifikatProduk || '',
- tempoGaransi: parseInt(data.tempoGaransi) || '',
- explainGaransi: data.explainGaransi || '',
- minimumPembelian: data.minimumPembelian || '',
- isOrderQuantity: data.isOrderQuantity || '',
- });
- // handleKreditLimitChange(data.kreditLimit);
- setSelectedIds(watch('sertifikatProduk').split(',').map(Number));
- if (watch('customSertifikatProduk')) {
- // setSelectedIds([...selectedIds, 4]);
+ if (data) {
+ reset({
+ isKembaliBarang: data.isKembaliBarang || '',
+ textReturn: data.textReturn || '',
+ tenggatWaktu: (() => {
+ const waktu = data.tenggatWaktu
+ ? data.tenggatWaktu.split(' ')[0]
+ : '';
+ if (waktu === '14') return '14';
+ if (waktu === '30') return '30';
+ return 'custom';
+ })(),
+ customTenggatWaktu: (() => {
+ if (watch('tenggatWaktu') === 'custom')
+ return data.tenggatWaktu ? data.tenggatWaktu : '';
+ return '';
+ })(),
+ sertifikatProduk: data.sertifikatProduk || '',
+ customSertifikatProduk: data.customSertifikatProduk || '',
+ tempoGaransi: parseInt(data.tempoGaransi) || '',
+ explainGaransi: data.explainGaransi || '',
+ minimumPembelian:
+ data.isOrderQuantity == 'tidak' ? '' : data.minimumPembelian || '',
+ isOrderQuantity: data.isOrderQuantity || '',
+ });
+ // handleKreditLimitChange(data.kreditLimit);
+ setSelectedIds(watch('sertifikatProduk').split(',').map(Number));
+ if (watch('customSertifikatProduk')) {
+ // setSelectedIds([...selectedIds, 4]);
+ }
}
};
@@ -129,7 +139,9 @@ const SyaratDagang = ({ handleIsError }) => {
behavior: 'smooth',
});
}, []);
-
+ useImperativeHandle(ref, () => () => {
+ handleSubmit(onSubmitHandler)();
+ });
const auth = useAuth();
if (auth == false) {
router.push(`/login?next=${encodeURIComponent('/daftar-merchant')}`);
@@ -357,7 +369,6 @@ const SyaratDagang = ({ handleIsError }) => {
const onSubmitHandler = async (values) => {
const toastId = toast.loading('Mengirimkan formulir merchant...');
const data = {
- ...values,
is_kembali_barang: values.isKembaliBarang,
text_return: values.textReturn,
tenggat_waktu: values.tenggatWaktu,
@@ -448,12 +459,16 @@ const SyaratDagang = ({ handleIsError }) => {
</div>
</BottomPopup>
<DesktopView>
- <div className='container flex flex-col items-star py-4 '>
+ <div
+ className={`container flex flex-col h-fit items-start ${
+ !isKonfirmasi && 'py-4'
+ }`}
+ >
<h2 className='text-xs md:text-title-sm font-semibold mb-6'>
Syarat Perdagangan
</h2>
- <div className='w-full mt-4'>
+ <div className='w-full mt-4 '>
<form
onSubmit={handleSubmit(onSubmitHandler)}
className='flex flex-col gap-4'
@@ -544,12 +559,16 @@ const SyaratDagang = ({ handleIsError }) => {
<div className={`flex flex-row justify-between items-start`}>
<div className='w-2/5 text-nowrap'>
- <label className='form-label '>
+ <label
+ className={`form-label ${isKonfirmasi && 'text-wrap'}`}
+ >
Dokumen/Sertifikat yang Dimiliki Oleh Brand
</label>
- <span className='text-xs opacity-60'>
- Pilih dokumen/sertifikat bisa lebih dari 1
- </span>
+ {!isKonfirmasi && (
+ <span className='text-xs opacity-60'>
+ Pilih dokumen/sertifikat bisa lebih dari 1
+ </span>
+ )}
</div>
<div className='w-3/5 flex flex-col'>
<div className='flex flex-row justify-between w-full'>
@@ -610,13 +629,15 @@ const SyaratDagang = ({ handleIsError }) => {
<div className='flex flex-row justify-between items-center'>
<div className='w-2/5'>
<label className='form-label text-nowrap'>Garansi</label>
- <span className='text-xs opacity-60'>
- Pilih waktu garansi yang diberikan
- </span>
+ {!isKonfirmasi && (
+ <span className='text-xs opacity-60'>
+ Pilih waktu garansi yang diberikan
+ </span>
+ )}
</div>
<div className='w-3/5 flex flex-col '>
<div className='flex flex-row items-center gap-3'>
- <div className={`w-[25%]`}>
+ <div className={`${!isKonfirmasi && 'w-[25%]'}`}>
<Controller
name='tempoGaransi'
control={control}
@@ -717,34 +738,23 @@ const SyaratDagang = ({ handleIsError }) => {
</div>
</div>
- <div className=''>
- {/* <div>
- <ReCAPTCHA
- ref={recaptchaRef}
- sitekey={process.env.NEXT_PUBLIC_RECAPTCHA_GOOGLE}
- />
- </div> */}
- </div>
- <div className='flex justify-start'>
- {/* <Button
- colorScheme='red'
- className='w-full md:w-fit'
- type='submit'
- >
- Daftar Merchant{' '}
- {<ChevronRightIcon className='w-5' color='white' />}
- </Button> */}
- <div>
- <button
- type='submit'
- className='btn-light bg-red-500 rounded-lg text-white w-full md:w-fit mt-6 ml-0 md:ml-auto flex justify-between hover:bg-red-400'
- >
- <span>Daftar Merchant </span>
- </button>
+ {!isKonfirmasi && (
+ <div className='flex justify-end'>
+ <div>
+ <span className='text-xs opacity-60'>
+ *Pastikan data yang anda masukan sudah benar dan sesuai
+ </span>
+ <button
+ type='submit'
+ className='btn-light bg-red-500 rounded-lg text-white w-fit py-2 px-4 md:w-fit mt-2 ml-0 md:ml-auto flex justify-between hover:bg-red-400'
+ >
+ <span className={` `}>Langkah Selanjutnya</span>
+ {<ChevronRightIcon className='w-5' />}
+ </button>
+ </div>
</div>
- </div>
+ )}
</form>
- <PageContent path='/daftar-merchant' />
</div>
</div>
</DesktopView>
@@ -1388,7 +1398,7 @@ const SyaratDagang = ({ handleIsError }) => {
</MobileView>
</>
);
-};
+});
const validationSchema = Yup.object().shape({
isKembaliBarang: Yup.string().required('Harus di-pilih'),
tenggatWaktu: Yup.string().required('Harus di-pilih'),