Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Sign in
Toggle navigation
C
ctas-box
Project overview
Project overview
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Packages
Packages
Container Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Fachri
ctas-box
Commits
84c0012d
Commit
84c0012d
authored
Oct 07, 2025
by
Rais Aryaguna
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
fix: Correct endpoint paths for faktur_keterangan and faktur_idtambahan
parent
cf7f44f4
Changes
2
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
221 additions
and
211 deletions
+221
-211
src/actions/master-data.ts
src/actions/master-data.ts
+219
-209
src/lib/axios-ctas-box.ts
src/lib/axios-ctas-box.ts
+2
-2
No files found.
src/actions/master-data.ts
View file @
84c0012d
import
type
{
SWRConfiguration
}
from
'
swr
'
;
import
useSWR
from
'
swr
'
;
import
{
useMemo
}
from
'
react
'
;
import
{
useQuery
,
type
UseQueryOptions
}
from
'
@tanstack/react-query
'
;
import
type
{
AxiosError
}
from
'
axios
'
;
import
{
fetcher
,
endpoints
}
from
'
src/lib/axios-ctas-box
'
;
// ----------------------------------------------------------------------
const
swrOptions
:
SWRConfiguration
=
{
revalidateIfStale
:
false
,
revalidateOnFocus
:
false
,
revalidateOnReconnect
:
false
,
}
;
interface
ApiResponse
<
T
>
{
status
:
string
;
message
?:
string
;
data
:
T
;
}
// ----------------------------------------------------------------------
interface
KodeNegara
{
kode
:
string
;
nama
:
string
;
}
interface
KodeNegaraResponse
{
data
:
KodeNegara
[];
}
export
function
useKodeNegara
()
{
const
url
=
endpoints
.
masterData
.
kodeNegara
;
interface
UseKodeNegaraReturn
{
kodeNegara
:
KodeNegara
[];
kodeNegaraLoading
:
boolean
;
kodeNegaraError
:
AxiosError
|
null
;
}
interface
QueryParams
{
[
key
:
string
]:
any
;
}
const
queryOptions
=
{
refetchOnWindowFocus
:
false
,
refetchOnReconnect
:
false
,
retry
:
1
,
}
satisfies
Omit
<
UseQueryOptions
,
'
queryKey
'
|
'
queryFn
'
>
;
const
validateResponse
=
<
T
>
(
response
:
ApiResponse
<
T
>
):
T
=>
{
if
(
response
.
status
===
'
fail
'
||
response
.
status
===
'
error
'
||
response
.
status
===
'
0
'
)
{
throw
new
Error
(
response
.
message
||
'
System tidak dapat memenuhi permintaan, coba beberapa saat lagi
'
);
}
return
response
.
data
;
};
const
{
data
,
isLoading
,
error
,
isValidating
}
=
useSWR
<
{
data
:
{
kode
:
string
;
nama
:
string
}[];
}
>
(
url
,
fetcher
,
{
...
swrOptions
,
const
{
kodeNegara
,
services
,
goods
,
kop_all
,
kop_bpnr
,
kop_bpsp
,
kop_bpu
,
faktur_keterangan
,
faktur_idtambahan
,
satuan
,
}
=
endpoints
.
masterData
;
export
function
useKodeNegara
():
UseKodeNegaraReturn
{
const
{
data
,
isLoading
,
error
}
=
useQuery
<
KodeNegaraResponse
,
AxiosError
>
({
queryKey
:
[
'
kodeNegara
'
],
queryFn
:
async
()
=>
{
const
response
=
await
fetcher
<
ApiResponse
<
KodeNegaraResponse
>>
(
kodeNegara
);
return
validateResponse
(
response
);
},
...
queryOptions
,
});
const
memoizedValue
=
useMemo
(
()
=>
({
return
{
kodeNegara
:
data
?.
data
||
[],
kodeNegaraLoading
:
isLoading
,
kodeNegaraError
:
error
,
kodeNegaraValidating
:
isValidating
,
kodeNegaraEmpty
:
!
isLoading
&&
!
data
?.
data
.
length
,
}),
[
data
,
error
,
isLoading
,
isValidating
]
);
};
}
// ----------------------------------------------------------------------
return
memoizedValue
;
export
function
useServices
(
params
?:
QueryParams
)
{
const
{
data
,
isLoading
,
error
}
=
useQuery
<
any
,
AxiosError
>
({
queryKey
:
[
'
services
'
,
params
],
queryFn
:
async
()
=>
{
const
response
=
await
fetcher
<
ApiResponse
<
any
>>
(
services
);
return
validateResponse
(
response
);
},
...
queryOptions
,
});
return
{
services
:
data
,
servicesLoading
:
isLoading
,
servicesError
:
error
,
};
}
// const getServices = async (params) => {
// const response = await axiosBupot.get('/mst_services', {
// params,
// });
// const body = response.data;
// if (
// body.status === 'fail' ||
// body.status === 'error' ||
// body.status === '0' ||
// response.status !== 200
// ) {
// throw new Error(body.message || 'System tidak dapat memenuhi permintaan, coba beberapa saat lagi');
// }
// return body.data;
// };
// const getGoods = async (params) => {
// const response = await axiosBupot.get('/mst_goods', {
// params,
// });
// const body = response.data;
// if (
// body.status === 'fail' ||
// body.status === 'error' ||
// body.status === '0' ||
// response.status !== 200
// ) {
// throw new Error(body.message || 'System tidak dapat memenuhi permintaan, coba beberapa saat lagi');
// }
// return body.data;
// };
// const getSatuan = async (params) => {
// const response = await axiosBupot.get('/mst_satuan', {
// params,
// });
// const body = response.data;
// if (
// body.status === 'fail' ||
// body.status === 'error' ||
// body.status === '0' ||
// response.status !== 200
// ) {
// throw new Error(body.message || 'System tidak dapat memenuhi permintaan, coba beberapa saat lagi');
// }
// return body.data;
// };
// const getPenandatangan = async () => {
// const {
// data: { status: statusRes, message, data },
// } = await axiosBupot.get('/signer');
// if (statusRes === 'error') {
// throw new Error(message);
// }
// return data;
// };
// const getKodeObjekPajakBpnr = async (params) => {
// const response = await axiosBupot.get('/mst_kop_bpnr', {
// params,
// });
// const body = response.data;
// if (
// body.status === 'fail' ||
// body.status === 'error' ||
// body.status === '0' ||
// response.status !== 200
// ) {
// throw new Error(body.message || 'System tidak dapat memenuhi permintaan, coba beberapa saat lagi');
// }
// return body.data;
// };
// const getKodeObjekPajakBpu = async (params) => {
// const response = await axiosBupot.get('/mst_kop_bpu', {
// params,
// });
// const body = response.data;
// if (
// body.status === 'fail' ||
// body.status === 'error' ||
// body.status === '0' ||
// response.status !== 200
// ) {
// throw new Error(body.message || 'System tidak dapat memenuhi permintaan, coba beberapa saat lagi');
// }
// return body.data;
// };
// const getKodeObjekPajakBpsp = async (params) => {
// const response = await axiosBupot.get('/mst_kop_bpsp', {
// params,
// });
// const body = response.data;
// if (
// body.status === 'fail' ||
// body.status === 'error' ||
// body.status === '0' ||
// response.status !== 200
// ) {
// throw new Error(body.message || 'System tidak dapat memenuhi permintaan, coba beberapa saat lagi');
// }
// return body.data;
// };
// const getAllKodeObjekPajak = async (params) => {
// const response = await axiosBupot.get('/mst_kop_all', {
// params,
// });
// const body = response.data;
// if (
// body.status === 'fail' ||
// body.status === 'error' ||
// body.status === '0' ||
// response.status !== 200
// ) {
// throw new Error(body.message || 'System tidak dapat memenuhi permintaan, coba beberapa saat lagi');
// }
// return body;
// };
// const getKeteranganTambahan = async (params) => {
// const response = await axiosBupot.get('/mst_faktur_keterangan', {
// params,
// });
// const body = response.data;
// if (
// body.status === 'fail' ||
// body.status === 'error' ||
// body.status === '0' ||
// response.status !== 200
// ) {
// throw new Error(body.message || 'System tidak dapat memenuhi permintaan, coba beberapa saat lagi');
// }
// return body.data;
// };
// const getIdKeteranganTambahan = async (params) => {
// const response = await axiosBupot.get('/mst_faktur_idtambahan', {
// params,
// });
// const body = response.data;
// if (
// body.status === 'fail' ||
// body.status === 'error' ||
// body.status === '0' ||
// response.status !== 200
// ) {
// throw new Error(body.message || 'System tidak dapat memenuhi permintaan, coba beberapa saat lagi');
// }
// return body.data;
// };
// ----------------------------------------------------------------------
export
function
useGoods
(
params
?:
QueryParams
)
{
const
{
data
,
isLoading
,
error
}
=
useQuery
<
any
,
AxiosError
>
({
queryKey
:
[
'
goods
'
,
params
],
queryFn
:
async
()
=>
{
const
response
=
await
fetcher
<
ApiResponse
<
any
>>
(
goods
);
return
validateResponse
(
response
);
},
...
queryOptions
,
});
return
{
goods
:
data
,
goodsLoading
:
isLoading
,
goodsError
:
error
,
};
}
// ----------------------------------------------------------------------
export
function
useSatuan
(
params
?:
QueryParams
)
{
const
{
data
,
isLoading
,
error
}
=
useQuery
<
any
,
AxiosError
>
({
queryKey
:
[
'
satuan
'
,
params
],
queryFn
:
async
()
=>
{
const
response
=
await
fetcher
<
ApiResponse
<
any
>>
(
satuan
);
return
validateResponse
(
response
);
},
...
queryOptions
,
});
return
{
satuan
:
data
,
satuanLoading
:
isLoading
,
satuanError
:
error
,
};
}
// ----------------------------------------------------------------------
interface
Penandatangan
{
// Define properties based on your API response
[
key
:
string
]:
any
;
}
export
function
usePenandatangan
()
{
const
{
data
,
isLoading
,
error
}
=
useQuery
<
Penandatangan
,
AxiosError
>
({
queryKey
:
[
'
penandatangan
'
],
queryFn
:
async
()
=>
{
const
response
=
await
fetcher
<
ApiResponse
<
Penandatangan
>>
(
'
/signer
'
);
if
(
response
.
status
===
'
error
'
)
{
throw
new
Error
(
response
.
message
);
}
return
response
.
data
;
},
...
queryOptions
,
});
return
{
penandatangan
:
data
,
penandatanganLoading
:
isLoading
,
penandatanganError
:
error
,
};
}
// ----------------------------------------------------------------------
type
KodeObjekPajakType
=
'
bpnr
'
|
'
bpu
'
|
'
bpsp
'
|
'
all
'
;
const
KODE_OBJEK_PAJAK_ENDPOINTS
:
Record
<
KodeObjekPajakType
,
string
>
=
{
bpnr
:
kop_bpnr
,
bpu
:
kop_bpu
,
bpsp
:
kop_bpsp
,
all
:
kop_all
,
}
as
const
;
export
function
useKodeObjekPajak
(
type
:
KodeObjekPajakType
,
params
?:
QueryParams
)
{
const
{
data
,
isLoading
,
error
}
=
useQuery
<
any
,
AxiosError
>
({
queryKey
:
[
'
kodeObjekPajak
'
,
type
,
params
],
queryFn
:
async
()
=>
{
const
endpoint
=
KODE_OBJEK_PAJAK_ENDPOINTS
[
type
];
const
response
=
await
fetcher
<
ApiResponse
<
any
>>
(
endpoint
);
// Endpoint 'all' mengembalikan response utuh, bukan hanya data
return
type
===
'
all
'
?
response
:
validateResponse
(
response
);
},
...
queryOptions
,
});
return
{
kodeObjekPajak
:
data
,
kodeObjekPajakLoading
:
isLoading
,
kodeObjekPajakError
:
error
,
};
}
// ----------------------------------------------------------------------
export
function
useKeteranganTambahan
(
params
?:
QueryParams
)
{
const
{
data
,
isLoading
,
error
}
=
useQuery
<
any
,
AxiosError
>
({
queryKey
:
[
'
keteranganTambahan
'
,
params
],
queryFn
:
async
()
=>
{
const
response
=
await
fetcher
<
ApiResponse
<
any
>>
(
faktur_keterangan
);
return
validateResponse
(
response
);
},
...
queryOptions
,
});
return
{
keteranganTambahan
:
data
,
keteranganTambahanLoading
:
isLoading
,
keteranganTambahanError
:
error
,
};
}
// ----------------------------------------------------------------------
export
function
useIdKeteranganTambahan
(
params
?:
QueryParams
)
{
const
{
data
,
isLoading
,
error
}
=
useQuery
<
any
,
AxiosError
>
({
queryKey
:
[
'
idKeteranganTambahan
'
,
params
],
queryFn
:
async
()
=>
{
const
response
=
await
fetcher
<
ApiResponse
<
any
>>
(
faktur_idtambahan
);
return
validateResponse
(
response
);
},
...
queryOptions
,
});
return
{
idKeteranganTambahan
:
data
,
idKeteranganTambahanLoading
:
isLoading
,
idKeteranganTambahanError
:
error
,
};
}
src/lib/axios-ctas-box.ts
View file @
84c0012d
...
...
@@ -89,7 +89,7 @@ export const endpoints = {
kop_bpu
:
'
/sandbox/mst_kop_bpu
'
,
kop_bpsp
:
'
/sandbox/mst_kop_bpsp
'
,
kop_all
:
'
/sandbox/mst_kop_all
'
,
faktur_keterangan
:
'
/sandbox/mst_faktur_k
ode
'
,
faktur_idtambahan
:
'
/sandbox/mst_faktur_
keterang
an
'
,
faktur_keterangan
:
'
/sandbox/mst_faktur_k
eterangan
'
,
faktur_idtambahan
:
'
/sandbox/mst_faktur_
idtambah
an
'
,
},
}
as
const
;
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment