From 87ffd2fa7edc240693ddd81401ef23c5cd1bbb3e Mon Sep 17 00:00:00 2001 From: it-fixcomart Date: Fri, 18 Oct 2024 16:11:17 +0700 Subject: update fix kontak person --- .../register/stores/usePengajuanTempoStore.ts | 2 + src-migrate/types/tempo.ts | 1 + src-migrate/validations/tempo.ts | 6 + .../pengajuan-tempo/component/KontakPerusahaan.jsx | 179 ++++++--------------- .../pengajuan-tempo/component/PengajuanTempo.jsx | 29 ++-- .../component/informasiPerusahaan.jsx | 173 ++++++++++++++------ 6 files changed, 200 insertions(+), 190 deletions(-) diff --git a/src-migrate/modules/register/stores/usePengajuanTempoStore.ts b/src-migrate/modules/register/stores/usePengajuanTempoStore.ts index 247f62dd..7f1bcbb0 100644 --- a/src-migrate/modules/register/stores/usePengajuanTempoStore.ts +++ b/src-migrate/modules/register/stores/usePengajuanTempoStore.ts @@ -116,6 +116,7 @@ export const usePengajuanTempoStoreKontakPerson = create< financeMobile: '', financeName: '', financeEmail: '', + purchasingMobile: '', }, updateFormKontakPerson: (name, value) => set((state) => ({ @@ -151,6 +152,7 @@ export const usePengajuanTempoStoreKontakPerson = create< financeName: '', financeMobile: '', financeEmail: '', + purchasingMobile: '', }, }), })); diff --git a/src-migrate/types/tempo.ts b/src-migrate/types/tempo.ts index fc920c05..85680cba 100644 --- a/src-migrate/types/tempo.ts +++ b/src-migrate/types/tempo.ts @@ -27,6 +27,7 @@ export type tempoPropsKontakPerson = { financeMobile: string; financeEmail: string; financeName: string; + purchasingMobile: string; }; export type TempoApiProps = OdooApiRes; diff --git a/src-migrate/validations/tempo.ts b/src-migrate/validations/tempo.ts index 45cc8cd2..756bb722 100644 --- a/src-migrate/validations/tempo.ts +++ b/src-migrate/validations/tempo.ts @@ -41,6 +41,12 @@ export const TempoSchemaKontakPerson = z.object({ .refine((val) => /^\d{10,12}$/.test(val), { message: 'Format nomor telepon tidak valid, contoh: 081234567890', }), + purchasingMobile: z + .string() + .min(1, { message: 'Nomor telepon harus diisi' }) + .refine((val) => /^\d{10,12}$/.test(val), { + message: 'Format nomor telepon tidak valid, contoh: 081234567890', + }), direkturEmail: z .string() .min(1, { message: 'Email harus diisi' }) diff --git a/src/lib/pengajuan-tempo/component/KontakPerusahaan.jsx b/src/lib/pengajuan-tempo/component/KontakPerusahaan.jsx index a595ff13..861a75ba 100644 --- a/src/lib/pengajuan-tempo/component/KontakPerusahaan.jsx +++ b/src/lib/pengajuan-tempo/component/KontakPerusahaan.jsx @@ -14,137 +14,6 @@ const KontakPerusahaan = ({ chekValid, buttonSubmitClick }) => { validateKontakPerson, updateFormKontakPerson, } = usePengajuanTempoStoreKontakPerson(); - const [industries, setIndustries] = useState([]); - const [selectedCategory, setSelectedCategory] = useState(''); - const [states, setState] = useState([]); - const [cities, setCities] = useState([]); - const [bersedia, setBersedia] = useState(null); - const category_produk = [ - { id: 1, name: 'Pengaman, Kesehatan & Keamanan' }, - { id: 2, name: 'Perkakas Tangan, Listrik & Pneumatic' }, - { id: 3, name: 'Mesin Industrial' }, - { id: 4, name: 'Mesin Pertanian & Perkebunan' }, - { id: 5, name: 'Mesin Pembersih & Janitorial' }, - { id: 6, name: 'Cairan Berbahan Kimia' }, - { id: 7, name: 'Perlengkapan Pengukuran & Pengujian' }, - { id: 8, name: 'Peralatan Listrik & Elektronik' }, - { id: 9, name: 'Perlengkapan Logistik & Gudang' }, - { id: 10, name: 'Peralatan Kantor & Stationery' }, - { id: 11, name: 'Komponen & Aksesoris' }, - { id: 12, name: 'Peralatan Horeca & Food Service' }, - ]; - - useEffect(() => { - const loadState = async () => { - let dataState = await stateApi(); - dataState = dataState.map((state) => ({ - value: state.id, - label: state.name, - })); - setState(dataState); - }; - loadState(); - }, []); - - const watchState = watch('state'); - useEffect(() => { - updateFormKontakPerson('city', ''); - if (watchState) { - updateFormKontakPerson('state', `${watchState}`); - validateKontakPerson(); - const loadCities = async () => { - let dataCities = await cityApi({ stateId: watchState }); - dataCities = dataCities.map((city) => ({ - value: city.id, - label: city.name, - })); - setCities(dataCities); - }; - loadCities(); - } - }, [watchState]); - - const watchCity = watch('city'); - useEffect(() => { - if (watchCity) { - updateFormKontakPerson('city', `${watchCity}`); - validateKontakPerson(); - } - }, [watchCity]); - - useEffect(() => { - const loadIndustries = async () => { - const dataIndustries = await odooApi('GET', '/api/v1/partner/industry'); - setIndustries( - dataIndustries?.map((o) => ({ - value: o.id, - label: o.name, - category: o.category, - })) - ); - }; - loadIndustries(); - }, []); - - useEffect(() => { - const selectedIndustryType = industries.find( - (industry) => industry.value === watch('industry_id') - ); - if (selectedIndustryType) { - updateFormKontakPerson('industry_id', `${selectedIndustryType?.value}`); - validateKontakPerson(); - setSelectedCategory(selectedIndustryType.category); - } - }, [watch('industry_id'), industries]); - - const estimasiValue = watch('estimasi'); - const tempoLimitValue = watch('tempoLimit'); - - // Memformat angka menjadi format rupiah - const formatRupiah = (value) => { - if (!value) return ''; - const numberString = value.replace(/[^0-9]/g, ''); // Menghapus karakter non-digit - return numberString - ? 'Rp ' + new Intl.NumberFormat('id-ID').format(numberString) - : ''; - }; - - const handleChange = (e) => { - const value = e.target.value; - const formattedValue = formatRupiah(value); - console.log('formattedValue', formattedValue); - updateFormKontakPerson('estimasi', formattedValue.replace(/^Rp\s*/, '')); - validateKontakPerson(); - }; - const onChangeTempoDuration = (e) => { - updateFormKontakPerson('tempoDuration', `${e}`); - validateKontakPerson(); - }; - - const onChangeTempoLimit = (e) => { - updateFormKontakPerson('tempoLimit', `${e}`); - validateKontakPerson(); - }; - const handleCheckboxBersediaChange = (value) => { - if (value === 'bersedia') { - setBersedia(true); - } else if (value === 'tidakBersedia') { - setBersedia(false); - } - updateFormKontakPerson('bersedia', `${value === 'bersedia'}`); - validateKontakPerson(); - }; - const [selectedIds, setSelectedIds] = useState([]); - - const handleCheckboxChange = (id) => { - setSelectedIds((prevSelected) => - prevSelected.includes(id) - ? prevSelected.filter((selectedId) => selectedId !== id) - : [...prevSelected, id] - ); - updateFormKontakPerson('categoryProduk', `${selectedIds}`); - validateKontakPerson(); - }; const handleInputChange = (event) => { const { name, value } = event.target; @@ -152,9 +21,6 @@ const KontakPerusahaan = ({ chekValid, buttonSubmitClick }) => { validateKontakPerson(); }; - const midIndex = Math.ceil(category_produk.length / 2); - const firstColumn = category_produk.slice(0, midIndex); - const secondColumn = category_produk.slice(midIndex); const isFormValid = useMemo( () => Object.keys(errorsKontakPerson).length === 0, [errorsKontakPerson] @@ -165,6 +31,7 @@ const KontakPerusahaan = ({ chekValid, buttonSubmitClick }) => { const direkturEmailRef = useRef(null); const purchasingNameRef = useRef(null); const purchasingEmailRef = useRef(null); + const purchasingMobileRef = useRef(null); const financeNameRef = useRef(null); const financeMobileRef = useRef(null); const financeEmailRef = useRef(null); @@ -192,6 +59,13 @@ const KontakPerusahaan = ({ chekValid, buttonSubmitClick }) => { purchasingNameRef.current.scrollIntoView(options); return; } + if ( + errorsKontakPerson.purchasingMobile && + purchasingMobileRef.current + ) { + purchasingMobileRef.current.scrollIntoView(options); + return; + } if (errorsKontakPerson.purchasingEmail && purchasingEmailRef.current) { purchasingEmailRef.current.scrollIntoView(options); return; @@ -227,6 +101,7 @@ const KontakPerusahaan = ({ chekValid, buttonSubmitClick }) => {
{ ref={direkturMobileRef} placeholder='Masukkan nomor direktur anda' type='tel' + value={formKontakPerson.direkturMobile} className='form-input' aria-invalid={errorsKontakPerson.direkturMobile} onChange={handleInputChange} @@ -288,6 +164,7 @@ const KontakPerusahaan = ({ chekValid, buttonSubmitClick }) => { ref={direkturEmailRef} placeholder='contoh@email.com' type='email' + value={formKontakPerson.direkturEmail} className='form-input' aria-invalid={errorsKontakPerson.direkturEmail} onChange={handleInputChange} @@ -315,6 +192,7 @@ const KontakPerusahaan = ({ chekValid, buttonSubmitClick }) => { name='purchasingName' ref={purchasingNameRef} placeholder='Masukkan nama purchasing anda' + value={formKontakPerson.purchasingName} type='text' className='form-input' aria-invalid={errorsKontakPerson.purchasingName} @@ -328,6 +206,35 @@ const KontakPerusahaan = ({ chekValid, buttonSubmitClick }) => {
+
+
+ + + isi nomor purchasing yang bertanggung jawab di perusahaan anda + +
+
+ + {chekValid && ( +
+ {errorsKontakPerson.purchasingMobile} +
+ )} +
+
+