summaryrefslogtreecommitdiff
path: root/src/pages
diff options
context:
space:
mode:
authorIT Fixcomart <it@fixcomart.co.id>2025-01-14 09:53:43 +0000
committerIT Fixcomart <it@fixcomart.co.id>2025-01-14 09:53:43 +0000
commit3e037c57566d7fb0acad2cb71fedd075cb9ce462 (patch)
tree1ec2ebdf700d3c9501a665a8f1e5351ddc80e5ef /src/pages
parenta868498e7327593b40d1e02fd96531fefd9548d5 (diff)
parent76afb8aaa5d2aaaf68529e11e9ed4d003d953f76 (diff)
Merged in Feature/pengajuan-tempo (pull request #401)
Feature/pengajuan tempo Approved-by: trisusilo
Diffstat (limited to 'src/pages')
-rw-r--r--src/pages/my/menu.jsx13
-rw-r--r--src/pages/my/tempo/index.jsx49
-rw-r--r--src/pages/pengajuan-tempo/[status].jsx47
-rw-r--r--src/pages/pengajuan-tempo/index.jsx81
4 files changed, 190 insertions, 0 deletions
diff --git a/src/pages/my/menu.jsx b/src/pages/my/menu.jsx
index 1b35d6ba..2a46d866 100644
--- a/src/pages/my/menu.jsx
+++ b/src/pages/my/menu.jsx
@@ -90,6 +90,19 @@ export default function Menu() {
<p>Invoice & Faktur Pajak</p>
</div>
</LinkItem>
+ {(auth?.partnerTempo || auth?.tempoProgres == 'review') && (
+ <LinkItem href='/my/tempo'>
+ {' '}
+ <div className='flex gap-x-3 items-center'>
+ <ImageNext
+ src='/images/icon/icon_tempo.svg'
+ width={18}
+ height={20}
+ />
+ <p>Pembayaran Tempo</p>
+ </div>
+ </LinkItem>
+ )}
<LinkItem href='/my/wishlist'>
<div className='flex gap-x-3 items-center'>
<ImageNext
diff --git a/src/pages/my/tempo/index.jsx b/src/pages/my/tempo/index.jsx
new file mode 100644
index 00000000..a1897e51
--- /dev/null
+++ b/src/pages/my/tempo/index.jsx
@@ -0,0 +1,49 @@
+import Seo from '@/core/components/Seo';
+import AppLayout from '@/core/components/layouts/AppLayout';
+import BasicLayout from '@/core/components/layouts/BasicLayout';
+import DesktopView from '@/core/components/views/DesktopView';
+import MobileView from '@/core/components/views/MobileView';
+import IsAuth from '@/lib/auth/components/IsAuth';
+import InvoicesComponent from '@/lib/tempo/components/Tempo';
+import { getAuth } from '~/libs/auth';
+import { useRouter } from 'next/router';
+import { useEffect, useState } from 'react';
+export default function MyTempo() {
+ const auth = getAuth();
+ const router = useRouter();
+ const [isLoading, setIsLoading] = useState(true);
+ useEffect(() => {
+ if (!auth) {
+ const nextUrl = encodeURIComponent(router.asPath);
+ router.push(`/login?next=${nextUrl}`);
+ } else if (
+ (auth.tempoProgres === '' || auth.tempoProgres === 'rejected') &&
+ !auth.company
+ ) {
+ router.push('/pengajuan-tempo');
+ } else {
+ setIsLoading(false);
+ }
+ }, [auth]);
+
+ if (isLoading || !auth) {
+ return null; // Tidak render apa pun selama loading atau auth/tempo belum tersedia
+ }
+ return (
+ <IsAuth>
+ <Seo title='Tempo - Indoteknik.com' />
+
+ <MobileView>
+ <AppLayout title='Pembayaran Tempo'>
+ <InvoicesComponent />
+ </AppLayout>
+ </MobileView>
+
+ <DesktopView>
+ <BasicLayout>
+ <InvoicesComponent />
+ </BasicLayout>
+ </DesktopView>
+ </IsAuth>
+ );
+}
diff --git a/src/pages/pengajuan-tempo/[status].jsx b/src/pages/pengajuan-tempo/[status].jsx
new file mode 100644
index 00000000..29886892
--- /dev/null
+++ b/src/pages/pengajuan-tempo/[status].jsx
@@ -0,0 +1,47 @@
+import BasicLayout from '@/core/components/layouts/BasicLayout';
+import IsAuth from '@/lib/auth/components/IsAuth';
+import FinishTempoComponent from '@/lib/pengajuan-tempo/component/FinishTempo';
+import { useRouter } from 'next/router';
+import axios from 'axios';
+import { useState, useEffect } from 'react';
+import Seo from '@/core/components/Seo';
+import { getAuth } from '~/libs/auth';
+
+export async function getServerSideProps(context) {
+ const { status } = context.query;
+ await axios.post(
+ `${process.env.NEXT_PUBLIC_SELF_HOST}/api/pengajuan-tempo/${status}`,
+ {},
+ { headers: context.req.headers }
+ );
+ return { props: {} };
+}
+
+export default function Finish() {
+ const [isLoading, setIsLoading] = useState(true);
+ const router = useRouter();
+ const auth = getAuth();
+ useEffect(() => {
+ if (!auth) {
+ const nextUrl = encodeURIComponent(router.asPath);
+ router.push(`/login?next=${nextUrl}`);
+ } else {
+ setIsLoading(false);
+ }
+ }, [auth]);
+
+ if (isLoading || !auth) {
+ return null; // Tidak render apa pun selama loading atau auth/tempo belum tersedia
+ }
+ return (
+ <>
+ <Seo title='Pengajuan Tempo Indoteknik.com' />
+
+ <IsAuth>
+ <BasicLayout>
+ <FinishTempoComponent query={router.query || {}} />
+ </BasicLayout>
+ </IsAuth>
+ </>
+ );
+}
diff --git a/src/pages/pengajuan-tempo/index.jsx b/src/pages/pengajuan-tempo/index.jsx
new file mode 100644
index 00000000..6987bd29
--- /dev/null
+++ b/src/pages/pengajuan-tempo/index.jsx
@@ -0,0 +1,81 @@
+import Seo from '@/core/components/Seo';
+import dynamic from 'next/dynamic';
+import SimpleFooter from '@/core/components/elements/Footer/SimpleFooter';
+import BasicLayout from '@/core/components/layouts/BasicLayout';
+import DesktopView from '@/core/components/views/DesktopView';
+import MobileView from '@/core/components/views/MobileView';
+import { getAuth } from '~/libs/auth';
+import { useRouter } from 'next/router';
+import { useEffect, useState } from 'react';
+import odooApi from '@/core/api/odooApi';
+
+const PagePengajuanTempo = dynamic(() =>
+ import('@/lib/pengajuan-tempo/component/PengajuanTempo')
+);
+
+export default function TrackingOrder() {
+ const [tempo, setTempo] = useState(null);
+ const [isLoading, setIsLoading] = useState(true);
+ const auth = getAuth();
+ const router = useRouter();
+
+ useEffect(() => {
+ const loadTempo = async () => {
+ try {
+ if (auth?.partnerId) {
+ const dataTempo = await odooApi(
+ 'GET',
+ `/api/v1/check/${auth.partnerId}/tempo`
+ );
+ setTempo(dataTempo);
+ }
+ } catch (error) {
+ console.error('Error fetching tempo data:', error);
+ } finally {
+ setIsLoading(false);
+ }
+ };
+
+ if (auth) {
+ loadTempo();
+ } else {
+ setIsLoading(false);
+ }
+ }, []);
+ useEffect(() => {
+ if (!auth) {
+ const nextUrl = encodeURIComponent(router.asPath);
+ router.push(`/login?next=${nextUrl}`);
+ } else if (auth.tempoProgres === 'approve' || auth?.partnerTempo) {
+ router.push('/pengajuan-tempo/approve');
+ } else if (!auth.parentId) {
+ router.push('/pengajuan-tempo/switch-account');
+ } else if (auth.tempoProgres === 'review' && !tempo?.paymentTerm) {
+ router.push('/pengajuan-tempo/review');
+ } else if (auth.tempoProgres === 'rejected') {
+ router.push('/pengajuan-tempo/rejected');
+ } else {
+ setIsLoading(false);
+ }
+ }, [tempo]);
+
+ if (isLoading || !auth || !tempo) {
+ return null; // Tidak render apa pun selama loading atau auth/tempo belum tersedia
+ }
+
+ return (
+ <>
+ <Seo title='Pengajuan Tempo - Indoteknik.com' />
+ <DesktopView>
+ <BasicLayout>
+ <PagePengajuanTempo />
+ </BasicLayout>
+ </DesktopView>
+ <MobileView>
+ <BasicLayout>
+ <PagePengajuanTempo />
+ </BasicLayout>
+ </MobileView>
+ </>
+ );
+}