summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/lib/form/api/createLeadsApi.js8
-rw-r--r--src/lib/form/components/CreatePembayaranTempo.jsx (renamed from src/core/components/form/CreatePembayaranTempo.jsx)20
-rw-r--r--src/lib/form/components/KunjunganSales.jsx188
-rw-r--r--src/pages/my/kunjungan-sales.jsx17
-rw-r--r--src/pages/pembayaran-tempo.jsx5
5 files changed, 227 insertions, 11 deletions
diff --git a/src/lib/form/api/createLeadsApi.js b/src/lib/form/api/createLeadsApi.js
new file mode 100644
index 00000000..5665de2c
--- /dev/null
+++ b/src/lib/form/api/createLeadsApi.js
@@ -0,0 +1,8 @@
+import odooApi from '@/core/api/odooApi'
+
+const createLeadsApi = async ({ data }) => {
+ const leads = await odooApi('POST', '/api/v1/lead', data)
+ return leads
+}
+
+export default createLeadsApi
diff --git a/src/core/components/form/CreatePembayaranTempo.jsx b/src/lib/form/components/CreatePembayaranTempo.jsx
index 88e4aec9..63a013aa 100644
--- a/src/core/components/form/CreatePembayaranTempo.jsx
+++ b/src/lib/form/components/CreatePembayaranTempo.jsx
@@ -1,4 +1,5 @@
import HookFormSelect from '@/core/components/elements/Select/HookFormSelect'
+import getFileBase64 from '@/core/utils/getFileBase64'
import { yupResolver } from '@hookform/resolvers/yup'
import React, { useRef } from 'react'
import ReCAPTCHA from 'react-google-recaptcha'
@@ -17,6 +18,7 @@ const CreatePembayaranTempo = () => {
})
const recaptchaRef = useRef(null)
+ const npwp = useRef(null)
const onSubmitHandler = async (values) => {
const recaptchaValue = recaptchaRef.current.getValue()
@@ -25,14 +27,18 @@ const CreatePembayaranTempo = () => {
return
}
const data = {
- ...values
+ ...values,
+ name : 'Pengajuan Pembayaran Tempo - ' + values.name,
+ file_npwp : values.npwp.length > 0 ? await getFileBase64(values.npwp) : ''
}
- const address = await createAddressApi({ data })
- if (address?.id) {
- toast.success('Berhasil menambahkan alamat')
- router.back()
- }
+ console.log('ini adalah data', data)
+
+ // const address = await createLeadsApi({ data })
+ // if (address?.id) {
+ // toast.success('Berhasil menambahkan alamat')
+ // router.back()
+ // }
}
return (
<div className='container mx-auto p-4 md:p-0 my-0 md:my-10'>
@@ -66,7 +72,7 @@ const CreatePembayaranTempo = () => {
<div className='grid grid-cols-1 md:grid-cols-2 gap-4 mt-4'>
<div>
<label className='form-label mb-2'>Nomor Pokok Wajib Pajak (NPWP) *</label>
- <input {...register('npwp')} type='file' className='form-input' />
+ <input {...register('npwp')} type='file' className='form-input'/>
<div className='text-caption-2 text-danger-500 mt-1'>{errors.npwp?.message}</div>
</div>
</div>
diff --git a/src/lib/form/components/KunjunganSales.jsx b/src/lib/form/components/KunjunganSales.jsx
new file mode 100644
index 00000000..b96fddb5
--- /dev/null
+++ b/src/lib/form/components/KunjunganSales.jsx
@@ -0,0 +1,188 @@
+import HookFormSelect from '@/core/components/elements/Select/HookFormSelect'
+import cityApi from '@/lib/address/api/cityApi'
+import { yupResolver } from '@hookform/resolvers/yup'
+import React, { useEffect, useRef, useState } 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'
+
+const CreateKunjunganSales = () => {
+ const {
+ register,
+ handleSubmit,
+ formState: { errors },
+ control
+ } = useForm({
+ resolver: yupResolver(validationSchema),
+ defaultValues
+ })
+ const [cities, setCities] = useState([])
+ const [company_unit, setCompany_unit] = useState([])
+
+ const recaptchaRef = useRef(null)
+
+ useEffect(() => {
+ const loadCities = async () => {
+ let dataCities = await cityApi()
+ dataCities = dataCities.map((city) => ({ value: city.id, label: city.name }))
+ setCities(dataCities)
+ }
+ loadCities()
+ }, [])
+
+ const onSubmitHandler = async (values) => {
+ const recaptchaValue = recaptchaRef.current.getValue()
+ if (!recaptchaValue) {
+ toast.error('Catcha harus diisi')
+ return
+ }
+ const data = {
+ ...values
+ }
+
+ const address = await createAddressApi({ data })
+ if (address?.id) {
+ toast.success('Berhasil menambahkan alamat')
+ router.back()
+ }
+ }
+ return (
+ <div className='container mx-auto p-4 md:p-0 my-0 md:my-10'>
+ <h1 className='text-h-sm md:text-title-sm font-semibold mb-6'>Kunjungan Sales</h1>
+ <div className='w-full p-4 bg-white border border-gray_r-6 rounded'>
+ <div
+ class='flex items-center bg-blue-100 border border-blue-400 text-blue-500 font-bold px-4 py-3 mb-4'
+ role='alert'
+ >
+ <p>
+ Hubungi kami untuk mendapatkan kunjungan sales kami dan dapatkan berbagai kelebihannya
+ dengan menjadi pelanggan korporat kami.
+ </p>
+ </div>
+ <form onSubmit={handleSubmit(onSubmitHandler)}>
+ <div className='grid grid-cols-1 md:grid-cols-2 gap-4 mt-4'>
+ <div>
+ <label className='form-label mb-2'>Nama Perusahan *</label>
+ <input
+ {...register('company')}
+ placeholder='PT.Indoteknik'
+ type='text'
+ className='form-input'
+ />
+ <div className='text-caption-2 text-danger-500 mt-1'>{errors.company?.message}</div>
+ </div>
+ </div>
+ <div className='grid grid-cols-1 md:grid-cols-2 gap-4 mt-4'>
+ <div>
+ <label className='form-label mb-2'>No. Telp *</label>
+ <input
+ {...register('phone')}
+ placeholder='021-XXXX'
+ type='text'
+ className='form-input'
+ />
+ <div className='text-caption-2 text-danger-500 mt-1'>{errors.phone?.message}</div>
+ </div>
+ </div>
+ <div className='grid grid-cols-1 md:grid-cols-2 gap-4 mt-4'>
+ <div>
+ <label className='form-label mb-2'>Alamat*</label>
+ <input
+ {...register('address')}
+ placeholder='jl. Bandengan no.31 '
+ type='text'
+ className='form-input'
+ />
+ <div className='text-caption-2 text-danger-500 mt-1'>{errors.address?.message}</div>
+ </div>
+ </div>
+ <div className='grid grid-cols-1 md:grid-cols-2 gap-4 mt-4'>
+ <div>
+ <label className='form-label mb-2'>Kota*</label>
+ <Controller
+ name='city'
+ control={control}
+ render={(props) => <HookFormSelect {...props} options={cities} />}
+ />
+ <div className='text-caption-2 text-danger-500 mt-1'>{errors.city?.message}</div>
+ </div>
+ </div>
+ <div className='grid grid-cols-1 md:grid-cols-2 gap-4 mt-4'>
+ <div>
+ <label className='form-label mb-2'>Unit Perusahaan</label>
+ <Controller
+ name='company_unit'
+ control={control}
+ render={(props) => <HookFormSelect {...props} options={company_unit} />}
+ />
+ <div className='text-caption-2 text-danger-500 mt-1'>{errors.company_unit?.message}</div>
+ </div>
+ </div>
+ <div className='grid grid-cols-1 md:grid-cols-2 gap-4 mt-4'>
+ <div>
+ <label className='form-label mb-2'>No HP *</label>
+ <input
+ {...register('email')}
+ placeholder='628XXXXXXX'
+ type='text'
+ className='form-input'
+ />
+ <div className='text-caption-2 text-danger-500 mt-1'>{errors.email?.message}</div>
+ </div>
+ </div>
+ <div className='grid grid-cols-1 md:grid-cols-2 gap-4 mt-4'>
+ <div>
+ <label className='form-label mb-2'>Alamat Email *</label>
+ <input
+ {...register('email')}
+ placeholder='contoh@email.com'
+ type='email'
+ className='form-input'
+ />
+ <div className='text-caption-2 text-danger-500 mt-1'>{errors.email?.message}</div>
+ </div>
+ </div>
+ <div className='grid grid-cols-1 md:grid-cols-2 gap-4 mt-4'>
+ <div>
+ <label className='form-label mb-2'>Keterangan</label>
+ <textarea
+ {...register('description')}
+ type='text'
+ className='form-input'
+ />
+ <div className='text-caption-2 text-danger-500 mt-1'>{errors.description?.message}</div>
+ </div>
+ </div>
+ <div className='grid grid-cols-1 md:grid-cols-2 gap-4 mt-4'>
+ <div>
+ <ReCAPTCHA ref={recaptchaRef} sitekey={process.env.NEXT_PUBLIC_RECAPTCHA_GOOGLE} />
+ </div>
+ </div>
+ <div className='grid grid-cols-1 md:grid-cols-2 gap-4 mt-4'>
+ <div>
+ <button type='submit' className='btn-yellow w-full md:w-fit mt-6 ml-0 md:ml-auto'>
+ Simpan
+ </button>
+ </div>
+ </div>
+ </form>
+ </div>
+ </div>
+ )
+}
+const validationSchema = Yup.object().shape({
+ name: Yup.string().min(3, 'Minimal 3 karakter').required('Harus di-isi'),
+ email: Yup.string().email('Format harus seperti contoh@email.com').required('Harus di-isi'),
+ npwp: Yup.string().required('Harus di-isi')
+})
+const defaultValues = {
+ name: '',
+ email: '',
+ npwp: '',
+ siup: '',
+ tdp: '',
+ nib: ''
+}
+
+export default CreateKunjunganSales
diff --git a/src/pages/my/kunjungan-sales.jsx b/src/pages/my/kunjungan-sales.jsx
new file mode 100644
index 00000000..d84bccfa
--- /dev/null
+++ b/src/pages/my/kunjungan-sales.jsx
@@ -0,0 +1,17 @@
+import Seo from '@/core/components/Seo'
+import BasicLayout from '@/core/components/layouts/BasicLayout'
+import CreatePembayaranTempo from '@/lib/form/components/CreatePembayaranTempo'
+import CreateKunjunganSales from '@/lib/form/KunjunganSales'
+
+export default function pembayaran_tempo() {
+
+ return (
+ <>
+ <Seo title='Kunjungan Sales- Indoteknik.com' />
+
+ <BasicLayout>
+ <CreateKunjunganSales></CreateKunjunganSales>
+ </BasicLayout>
+ </>
+ )
+}
diff --git a/src/pages/pembayaran-tempo.jsx b/src/pages/pembayaran-tempo.jsx
index 3b46fb49..b0df9b41 100644
--- a/src/pages/pembayaran-tempo.jsx
+++ b/src/pages/pembayaran-tempo.jsx
@@ -1,9 +1,6 @@
import Seo from '@/core/components/Seo'
-import SimpleFooter from '@/core/components/elements/Footer/SimpleFooter'
-import HookFormSelect from '@/core/components/elements/Select/HookFormSelect'
import BasicLayout from '@/core/components/layouts/BasicLayout'
-import CreatePembayaranTempo from '@/core/components/form/CreatePembayaranTempo'
-import { Controller } from 'react-hook-form'
+import CreatePembayaranTempo from '@/lib/form/components/CreatePembayaranTempo'
export default function pembayaran_tempo() {