summaryrefslogtreecommitdiff
path: root/src/lib/pengajuan-tempo/component/PengajuanTempo.jsx
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/pengajuan-tempo/component/PengajuanTempo.jsx')
-rw-r--r--src/lib/pengajuan-tempo/component/PengajuanTempo.jsx146
1 files changed, 60 insertions, 86 deletions
diff --git a/src/lib/pengajuan-tempo/component/PengajuanTempo.jsx b/src/lib/pengajuan-tempo/component/PengajuanTempo.jsx
index 0efea807..11079328 100644
--- a/src/lib/pengajuan-tempo/component/PengajuanTempo.jsx
+++ b/src/lib/pengajuan-tempo/component/PengajuanTempo.jsx
@@ -19,6 +19,9 @@ import {
} from '../../../../src-migrate/modules/register/stores/usePengajuanTempoStore';
import { ChevronRightIcon, ChevronLeftIcon } from '@heroicons/react/24/outline';
import createPengajuanTempoApi from '../api/createPengajuanTempoApi';
+import { Button, Checkbox, Spinner, Tooltip } from '@chakra-ui/react';
+import clsxm from '~/libs/clsxm';
+import { toast } from 'react-hot-toast';
const PengajuanTempo = () => {
const [currentStep, setCurrentStep] = React.useState(0);
const NUMBER_OF_STEPS = 6;
@@ -34,8 +37,14 @@ const PengajuanTempo = () => {
validateKontakPerson,
updateFormKontakPerson,
} = usePengajuanTempoStoreKontakPerson();
- const { formSupplier, errorsSupplier, validateSupplier, updateFormSupplier } =
- usePengajuanTempoStoreSupplier();
+ const {
+ formSupplier,
+ errorsSupplier,
+ validateSupplier,
+ updateFormSupplier,
+ hasSavedata,
+ updateHasSave,
+ } = usePengajuanTempoStoreSupplier();
const {
formPengiriman,
errorsPengiriman,
@@ -90,31 +99,6 @@ const PengajuanTempo = () => {
'Dokumen',
'Konfirmasi',
];
- const combineForms = () => {
- return stepDivsForm.reduce((accumulator, currentForm, index) => {
- if (currentForm && typeof currentForm === 'object') {
- if (index === 3) {
- if (!accumulator.formSupplier) {
- accumulator.formSupplier = [];
- }
- accumulator.formSupplier.push(...currentForm);
- } else {
- return { ...accumulator, ...currentForm };
- }
- }
- return accumulator;
- }, {});
- };
-
- // const stepLabels = [
- // `${auth.partnerId}_informasi_perusahaan`,
- // `${auth.partnerId}_kontak_person`,
- // `${auth.partnerId}_Pengiriman`,
- // `${auth.partnerId}_Referensi`,
- // `${auth.partnerId}_Dokumen`,
- // `${auth.partnerId}_Konfirmasi`,
- // ];
-
const isFormValid = useMemo(
() => Object.keys(stepDivsError[currentStep]).length === 0,
[stepDivsError[currentStep]]
@@ -124,6 +108,7 @@ const PengajuanTempo = () => {
validateKontakPerson();
validatePengiriman();
validateDokumen();
+ updateHasSave(false);
window.scrollTo({
top: 0,
@@ -134,11 +119,9 @@ const PengajuanTempo = () => {
useEffect(() => {
const cachedData = getFromLocalStorage(stepLabels[currentStep]);
if (cachedData) {
- // const formData = JSON.parse(cachedData);
if (currentStep == 3) {
stepDivsUpdateForm[currentStep](cachedData);
} else if (currentStep == 4) {
- // Memanggil updateFormDokumen dengan parameter yang benar
Object.keys(cachedData).forEach((key) => {
const { name, format, base64 } = cachedData[key];
stepDivsUpdateForm[currentStep](key, name, format, base64);
@@ -149,8 +132,6 @@ const PengajuanTempo = () => {
});
}
}
- if (formSupplier) {
- }
}, [currentStep]);
const goToNextStep = () => {
if (!isFormValid) {
@@ -167,43 +148,39 @@ const PengajuanTempo = () => {
const handleDaftarTempo = async () => {
for (const error of stepDivsError) {
if (error.length > 0) {
- console.log('ada yang salah');
- return; // Keluar dari fungsi jika ada error
+ return;
}
}
- const combinedData = combineForms();
- console.log('combinedData', combinedData);
- const data = {
- ...combinedData,
- parent_id: auth.partnerId,
- };
-
const productOrder = formSupplier.map((product) => ({
supplier: product.supplier,
pic: product.pic,
telepon: product.telepon,
- quantitydurasiTempo: product.durasiTempo,
+ durasiTempo: product.durasiTempo,
creditLimit: product.creditLimit,
}));
+
+ const formattedDokumen = Object.entries(formDokumen).map(([key, doc]) => ({
+ documentName: key,
+ details: {
+ name: doc.name,
+ format: doc.format,
+ base64: doc.base64,
+ },
+ }));
const data2 = {
- form: JSON.stringify(productOrder),
- parent_id: auth.partnerId,
+ ...form,
+ ...formKontakPerson,
+ ...formPengiriman,
+ formDocs: JSON.stringify(formattedDokumen),
+ formSupplier: JSON.stringify(productOrder),
+ user_id: auth.id,
};
- const address = await createPengajuanTempoApi({ combinedData });
-
- console.log('Sukses Daftar');
- // router.push('/pengajuan-tempo/finish?tempo_id=SO-2023-06480');
-
- // if (!isFormValid) {
- // setNotValid(true);
- // setButtonSubmitClick(!buttonSubmitClick);
- // return;
- // } else {
- // saveToLocalStorage(stepLabels[currentStep], stepDivsForm[currentStep]);
- // setButtonSubmitClick(!buttonSubmitClick);
- // setNotValid(false);
- // }
- // setCurrentStep((prev) => (prev === NUMBER_OF_STEPS - 1 ? prev : prev + 1));
+ const address = await createPengajuanTempoApi(data2);
+ if (address) {
+ removeFromLocalStorage();
+ toast.success('Pengajuan tempo berhasil dilakukan', { duration: 4000 });
+ router.push('/pengajuan-tempo/finish?tempo_id=SO-2023-06480');
+ }
};
const goToPreviousStep = () => {
@@ -221,6 +198,11 @@ const PengajuanTempo = () => {
const item = JSON.parse(itemStr);
return item;
};
+ const removeFromLocalStorage = () => {
+ for (const key of stepLabels) {
+ localStorage.removeItem(key);
+ }
+ };
return (
<>
@@ -241,43 +223,35 @@ const PengajuanTempo = () => {
<Stepper currentStep={currentStep} numberOfSteps={NUMBER_OF_STEPS} />
</div>
<div>{stepDivs[currentStep]}</div>
- <section className='flex gap-10 mt-10'>
- {/* <button
- onClick={goToNextStep}
- className='bg-blue-600 text-white p-2 rounded-md'
- disabled={currentStep === NUMBER_OF_STEPS - 1} // Disable if on the last step
- >
- Next step
- </button> */}
- </section>
+ <section className='flex gap-10 mt-10'></section>
<div className='flex flex-row justify-end items-center gap-4 mb-8'>
<span className='text-xs opacity-60'>
*Pastikan data yang anda masukan sudah benar dan sesuai
</span>
- {/* <button
- onClick={goToPreviousStep}
- className='bg-red-600 border border-red-600 rounded-md text-sm text-white p-2 h-11 mb-1 content-center flex flex-row justify-center items-center'
- disabled={currentStep === 0} // Disable if on the first step
- >
- {<ChevronLeftIcon className='w-5' />}
- Langkah Sebelumnya
- </button> */}
{currentStep < 5 && (
- <button
- onClick={goToNextStep}
- disabled={currentStep === NUMBER_OF_STEPS - 1}
- className='bg-red-600 border border-red-600 rounded-md text-sm text-white p-2 h-11 mb-1 content-center flex flex-row justify-center items-center'
+ <Tooltip
+ label={clsxm({
+ 'Klik simpan data terlebih dahulu':
+ currentStep === 3 && !hasSavedata,
+ })}
>
- Langkah Selanjutnya {<ChevronRightIcon className='w-5' />}
- </button>
+ <Button
+ colorScheme='red'
+ w='fit'
+ isDisabled={
+ (currentStep === 3 && !hasSavedata) ||
+ currentStep === NUMBER_OF_STEPS - 1
+ }
+ onClick={goToNextStep}
+ >
+ Langkah Selanjutnya {<ChevronRightIcon className='w-5' />}
+ </Button>
+ </Tooltip>
)}
{currentStep == 5 && (
- <button
- onClick={handleDaftarTempo}
- className='bg-red-600 border border-red-600 rounded-md text-sm text-white p-2 h-11 mb-1 content-center flex flex-row justify-center items-center'
- >
+ <Button colorScheme='red' w='fit' onClick={handleDaftarTempo}>
Daftar Tempo {<ChevronRightIcon className='w-5' />}
- </button>
+ </Button>
)}
</div>
</div>