diff options
| author | Rafi Zadanly <zadanlyr@gmail.com> | 2023-01-26 17:02:02 +0700 |
|---|---|---|
| committer | Rafi Zadanly <zadanlyr@gmail.com> | 2023-01-26 17:02:02 +0700 |
| commit | 902e5dabbb1ab0612764983c094af398e5f636ee (patch) | |
| tree | b1b33fed082204be057c50053aee15eede6cce25 /src/pages/my/transactions | |
| parent | e340f5c4f4c47cde90e7676fcf71b55ef50e7c23 (diff) | |
Invoice and invoice detail
Diffstat (limited to 'src/pages/my/transactions')
| -rw-r--r-- | src/pages/my/transactions/[id].js | 89 | ||||
| -rw-r--r-- | src/pages/my/transactions/index.js | 128 |
2 files changed, 0 insertions, 217 deletions
diff --git a/src/pages/my/transactions/[id].js b/src/pages/my/transactions/[id].js deleted file mode 100644 index 110915cf..00000000 --- a/src/pages/my/transactions/[id].js +++ /dev/null @@ -1,89 +0,0 @@ -import AppBar from "@/components/layouts/AppBar"; -import Layout from "@/components/layouts/Layout"; -import LineDivider from "@/components/elements/LineDivider"; -import WithAuth from "@/components/auth/WithAuth"; -import { useEffect, useState } from "react"; -import apiOdoo from "@/core/utils/apiOdoo"; -import { useRouter } from "next/router"; -import { useAuth } from "@/core/utils/auth"; -import VariantCard from "@/components/variants/VariantCard"; -import currencyFormat from "@/core/utils/currencyFormat"; -import Disclosure from "@/components/elements/Disclosure"; -import DescriptionRow from "@/components/elements/DescriptionRow"; -import { TransactionDetailAddress } from "@/components/transactions/TransactionDetail"; -import { SkeletonList } from "@/components/elements/Skeleton"; - -export default function DetailTransactions() { - const router = useRouter(); - const { id } = router.query; - const [ auth ] = useAuth(); - const [ transaction, setTransaction ] = useState(null); - - useEffect(() => { - if (auth) { - const loadTransaction = async () => { - const dataTransaction = await apiOdoo('GET', `/api/v1/partner/${auth?.partner_id}/sale_order/${id}`); - setTransaction(dataTransaction); - } - loadTransaction(); - } - }, [ auth, id ]); - - return ( - <WithAuth> - <Layout className="pb-4"> - <AppBar title="Detail Transaksi" /> - - { transaction ? ( - <> - <div className="p-4 flex flex-col gap-y-4"> - <DescriptionRow label="Status Transaksi"> - <span className="badge-green">Pending Quotation</span> - </DescriptionRow> - <DescriptionRow label="No Transaksi"> - { transaction?.name } - </DescriptionRow> - <DescriptionRow label="Purchase Order"> - { transaction?.po_name || '-' } - </DescriptionRow> - <DescriptionRow label="Ketentuan Pembayaran"> - { transaction?.payment_term } - </DescriptionRow> - <DescriptionRow label="Nama Sales"> - { transaction?.sales } - </DescriptionRow> - <DescriptionRow label="Waktu Transaksi"> - { transaction?.date_order } - </DescriptionRow> - </div> - - <LineDivider /> - - <Disclosure - label="Detail Produk" - /> - - <div className="mt-2 p-4 pt-0 flex flex-col gap-y-3"> - { transaction?.products?.map((product, index) => ( - <VariantCard - key={index} - data={product} - /> - )) } - <div className="flex justify-between mt-3 font-medium"> - <p>Total Belanja</p> - <p>{ currencyFormat(transaction?.amount_total || 0) }</p> - </div> - </div> - - <TransactionDetailAddress transaction={transaction} /> - </> - ) : ( - <div className="p-4 py-6"> - <SkeletonList number={12} /> - </div> - ) } - </Layout> - </WithAuth> - ); -}
\ No newline at end of file diff --git a/src/pages/my/transactions/index.js b/src/pages/my/transactions/index.js deleted file mode 100644 index c31336f2..00000000 --- a/src/pages/my/transactions/index.js +++ /dev/null @@ -1,128 +0,0 @@ -import { useRouter } from "next/router"; -import AppBar from "@/components/layouts/AppBar"; -import BottomPopup from "@/components/elements/BottomPopup"; -import Layout from "@/components/layouts/Layout"; -import WithAuth from "@/components/auth/WithAuth"; -import { useEffect, useRef, useState } from "react"; -import { useAuth } from "@/core/utils/auth"; -import apiOdoo from "@/core/utils/apiOdoo"; -import currencyFormat from "@/core/utils/currencyFormat"; -import { EllipsisVerticalIcon, MagnifyingGlassIcon } from "@heroicons/react/24/outline"; -import Link from "@/components/elements/Link"; -import Pagination from "@/components/elements/Pagination"; -import Alert from "@/components/elements/Alert"; - -export default function Transactions() { - const [ auth ] = useAuth(); - const router = useRouter(); - const { - q, - page = 1 - } = router.query; - - const [ transactions, setTransactions ] = useState([]); - const [ activePopupId, setActivePopupId ] = useState(null); - - const [ pageCount, setPageCount ] = useState(0); - const [ isLoading, setIsLoading ] = useState(true); - - const searchQueryRef = useRef(); - - useEffect(() => { - const loadTransactions = async () => { - if (auth) { - const limit = 10; - let offset = (page - 1) * 10; - let queryParams = [`limit=${limit}`, `offset=${offset}`]; - if (q) queryParams.push(`name=${q}`); - queryParams = queryParams.join('&'); - queryParams = queryParams ? '?' + queryParams : ''; - - const dataTransactions = await apiOdoo('GET', `/api/v1/partner/${auth.partner_id}/sale_order${queryParams}`); - setTransactions(dataTransactions); - setPageCount(Math.ceil(dataTransactions.sale_order_total / limit)); - setIsLoading(false); - }; - } - loadTransactions(); - }, [ auth, q, page ]); - - const actionSearch = (e) => { - e.preventDefault(); - let queryParams = []; - if (searchQueryRef.current.value) queryParams.push(`q=${searchQueryRef.current.value}`); - queryParams = queryParams.join('&'); - queryParams = queryParams ? `?${queryParams}` : ''; - router.push(`/my/transactions${queryParams}`); - }; - - return ( - <WithAuth> - <Layout> - <AppBar title="Transaksi" /> - - <form onSubmit={actionSearch} className="p-4 pb-0 flex gap-x-4"> - <input - type="text" - className="form-input" - placeholder="Cari Transaksi" - ref={searchQueryRef} - defaultValue={q} - /> - <button type="submit" className="border border-gray_r-7 rounded px-3"> - <MagnifyingGlassIcon className="w-5"/> - </button> - </form> - - <div className="p-4 flex flex-col gap-y-5"> - { transactions?.sale_order_total === 0 && !isLoading && ( - <Alert type="info" className="text-center"> - Transaksi tidak ditemukan - </Alert> - ) } - { transactions?.sale_orders?.map((transaction, index) => ( - <div className="p-4 border border-gray_r-7 rounded-md" key={index}> - <div className="grid grid-cols-2"> - <Link href={`/my/transactions/${transaction.id}`}> - <span className="text-caption-2 text-gray_r-11">No. Transaksi</span> - <h2 className="text-red_r-11 mt-1">{ transaction.name }</h2> - </Link> - <div className="flex gap-x-1 justify-end"> - <div className="badge-green h-fit">Pending</div> - <EllipsisVerticalIcon className="w-5 h-5" onClick={() => setActivePopupId(transaction.id)} /> - </div> - </div> - <Link href={`/my/transactions/${transaction.id}`} className="grid grid-cols-2 mt-3"> - <div> - <span className="text-caption-2 text-gray_r-11">Dilayani Oleh</span> - <p className="mt-1 font-medium text-gray_r-12">{ transaction.sales }</p> - </div> - <div className="text-right"> - <span className="text-caption-2 text-gray_r-11">Total Harga</span> - <p className="mt-1 font-medium text-gray_r-12">{ currencyFormat(transaction.amount_total) }</p> - </div> - </Link> - </div> - )) } - </div> - - <div className="pb-6"> - <Pagination currentPage={page} pageCount={pageCount} url={`/my/transactions${q ? `?q=${q}` : ''}`} /> - </div> - - { transactions?.sale_orders?.length > 0 && ( - <BottomPopup - title="Lainnya" - active={activePopupId} - closePopup={() => setActivePopupId(null)} - > - <div className="flex flex-col gap-y-4"> - <p>Download Quotation</p> - <p>Batalkan Transaksi</p> - </div> - </BottomPopup> - ) } - </Layout> - </WithAuth> - ); -};
\ No newline at end of file |
