From ed950b23d50f9b3993cfd2ac2386a5b3a68d5e57 Mon Sep 17 00:00:00 2001 From: Rafi Zadanly Date: Mon, 20 Feb 2023 17:03:28 +0700 Subject: fix --- src/lib/transaction/api/cancelTransactionApi.js | 8 ++ src/lib/transaction/api/transactionsApi.js | 8 ++ .../components/TransactionStatusBadge.jsx | 45 +++++++ src/lib/transaction/components/Transactions.jsx | 149 +++++++++++++++++++++ src/lib/transaction/hooks/useTransactions.js | 15 +++ src/lib/transaction/utils/transactions.js | 14 ++ 6 files changed, 239 insertions(+) create mode 100644 src/lib/transaction/api/cancelTransactionApi.js create mode 100644 src/lib/transaction/api/transactionsApi.js create mode 100644 src/lib/transaction/components/TransactionStatusBadge.jsx create mode 100644 src/lib/transaction/components/Transactions.jsx create mode 100644 src/lib/transaction/hooks/useTransactions.js create mode 100644 src/lib/transaction/utils/transactions.js (limited to 'src/lib/transaction') diff --git a/src/lib/transaction/api/cancelTransactionApi.js b/src/lib/transaction/api/cancelTransactionApi.js new file mode 100644 index 00000000..19891b5a --- /dev/null +++ b/src/lib/transaction/api/cancelTransactionApi.js @@ -0,0 +1,8 @@ +import odooApi from "@/core/api/odooApi" + +const cancelTransactionApi = async ({ partnerId, transaction }) => { + const dataCancelTransaction = await odooApi('POST', `/api/v1/partner/${partnerId}/sale_order/${transaction.id}/cancel`) + return dataCancelTransaction +} + +export default cancelTransactionApi \ No newline at end of file diff --git a/src/lib/transaction/api/transactionsApi.js b/src/lib/transaction/api/transactionsApi.js new file mode 100644 index 00000000..d36c3664 --- /dev/null +++ b/src/lib/transaction/api/transactionsApi.js @@ -0,0 +1,8 @@ +import odooApi from "@/core/api/odooApi" + +const transactionsApi = async ({partnerId, query}) => { + const dataTransactions = await odooApi('GET', `/api/v1/partner/${partnerId}/sale_order?${query}`) + return dataTransactions +} + +export default transactionsApi \ No newline at end of file diff --git a/src/lib/transaction/components/TransactionStatusBadge.jsx b/src/lib/transaction/components/TransactionStatusBadge.jsx new file mode 100644 index 00000000..28fe714a --- /dev/null +++ b/src/lib/transaction/components/TransactionStatusBadge.jsx @@ -0,0 +1,45 @@ +const TransactionStatusBadge = ({ status }) => { + let badgeProps = { + className: ['h-fit'], + text: '' + } + switch (status) { + case 'cancel': + badgeProps.className.push('badge-solid-red') + badgeProps.text = 'Pesanan batal' + break + case 'draft': + badgeProps.className.push('badge-red') + badgeProps.text = 'Pending quotation' + break + case 'waiting': + badgeProps.className.push('badge-yellow') + badgeProps.text = 'Pesanan diterima' + break + case 'sale': + badgeProps.className.push('badge-yellow') + badgeProps.text = 'Pesanan diproses' + break + case 'shipping': + badgeProps.className.push('badge-green') + badgeProps.text = 'Pesanan dikirim' + break + case 'partial_shipping': + badgeProps.className.push('badge-green') + badgeProps.text = 'Dikirim sebagian' + break + case 'done': + badgeProps.className.push('badge-solid-green') + badgeProps.text = 'Pesanan selesai' + break + } + badgeProps.className = badgeProps.className.join(' ') + + return ( +
+ { badgeProps.text } +
+ ) +} + +export default TransactionStatusBadge \ No newline at end of file diff --git a/src/lib/transaction/components/Transactions.jsx b/src/lib/transaction/components/Transactions.jsx new file mode 100644 index 00000000..97eb5f91 --- /dev/null +++ b/src/lib/transaction/components/Transactions.jsx @@ -0,0 +1,149 @@ +import { useRouter } from "next/router" +import { getAuth } from "@/core/utils/auth" +import { useState } from "react" +import { toast } from "react-hot-toast" +import { EllipsisVerticalIcon } from "@heroicons/react/24/outline" + +import { downloadPurchaseOrder, downloadQuotation } from "../utils/transactions" +import useTransactions from "../hooks/useTransactions" +import currencyFormat from "@/core/utils/currencyFormat" +import cancelTransactionApi from "../api/cancelTransactionApi" +import TransactionStatusBadge from "./TransactionStatusBadge" +import Spinner from "@/core/components/elements/Spinner/Spinner" +import Link from "@/core/components/elements/Link/Link" +import BottomPopup from "@/core/components/elements/Popup/BottomPopup" + +const Transactions = () => { + const auth = getAuth() + const router = useRouter() + const { + q = '', + page = 1 + } = router.query + + const { transactions } = useTransactions({ + partnerId: auth?.partnerId, + query: { + name: q, + limit: 30, + offset: (page - 1) * 30 + } + }) + + const [ toOthers, setToOthers ] = useState(null) + const [ toDelete, setToDelete ] = useState(null) + + const submitCancelTransaction = async () => { + const isCancelled = await cancelTransactionApi({ + partnerId: auth.partnerId, + transaction: toDelete + }) + if (isCancelled) { + toast.success('Berhasil batalkan transaksi') + transactions.refetch() + } + setToDelete(null) + } + + return ( +
+
+ { transactions.isLoading && ( +
+ +
+ ) } + { transactions.data?.saleOrders?.map((saleOrder, index) => ( +
+
+ + No. Transaksi +

{ saleOrder.name }

+ +
+ + setToOthers(saleOrder)} /> +
+
+ +
+
+ No. Purchase Order +

{ saleOrder.purchaseOrderName || '-' }

+
+
+ Total Invoice +

{ saleOrder.invoiceCount } Invoice

+
+
+
+
+ Sales +

{ saleOrder.sales }

+
+
+ Total Harga +

{ currencyFormat(saleOrder.amountTotal) }

+
+
+ +
+ )) } +
+ + setToOthers(null)}> +
+ + + +
+
+ + setToDelete(null)} + title="Batalkan Transaksi" + > +
+ Apakah anda yakin membatalkan transaksi {toDelete?.name}? +
+
+ + +
+
+
+ ) +} + +export default Transactions \ No newline at end of file diff --git a/src/lib/transaction/hooks/useTransactions.js b/src/lib/transaction/hooks/useTransactions.js new file mode 100644 index 00000000..b5742cae --- /dev/null +++ b/src/lib/transaction/hooks/useTransactions.js @@ -0,0 +1,15 @@ +import { useQuery } from "react-query" +import transactionsApi from "../api/transactionsApi" +import _ from "lodash-contrib" + +const useTransactions = ({ partnerId, query }) => { + const queryString = _.toQuery(query) + const fetchTransactions = async () => await transactionsApi({ partnerId, query: queryString }) + const { data, isLoading, refetch } = useQuery(`transactions-${queryString}`, fetchTransactions) + + return { + transactions: { data, isLoading, refetch } + } +} + +export default useTransactions \ No newline at end of file diff --git a/src/lib/transaction/utils/transactions.js b/src/lib/transaction/utils/transactions.js new file mode 100644 index 00000000..166e8a7e --- /dev/null +++ b/src/lib/transaction/utils/transactions.js @@ -0,0 +1,14 @@ +const downloadPurchaseOrder = (partnerId, transaction) => { + const url = `${process.env.ODOO_HOST}/api/v1/partner/${partnerId}/sale_order/${transaction.id}/download_po/${transaction.token}` + window.open(url, 'download') +} + +const downloadQuotation = (partnerId, transaction) => { + const url = `${process.env.ODOO_HOST}/api/v1/partner/${partnerId}/sale_order/${transaction.id}/download/${transaction.token}` + window.open(url, 'download') +} + +export { + downloadPurchaseOrder, + downloadQuotation +} \ No newline at end of file -- cgit v1.2.3 From e9409874e44c5bdc7d60f6cdb8910d7bc0a12318 Mon Sep 17 00:00:00 2001 From: Rafi Zadanly Date: Mon, 20 Feb 2023 17:24:02 +0700 Subject: fix --- src/lib/transaction/api/cancelTransactionApi.js | 6 ++- src/lib/transaction/api/transactionsApi.js | 6 ++- src/lib/transaction/components/Transactions.jsx | 59 ++++++++++++++++++++----- src/lib/transaction/hooks/useTransactions.js | 4 +- 4 files changed, 58 insertions(+), 17 deletions(-) (limited to 'src/lib/transaction') diff --git a/src/lib/transaction/api/cancelTransactionApi.js b/src/lib/transaction/api/cancelTransactionApi.js index 19891b5a..cd1798b5 100644 --- a/src/lib/transaction/api/cancelTransactionApi.js +++ b/src/lib/transaction/api/cancelTransactionApi.js @@ -1,7 +1,9 @@ import odooApi from "@/core/api/odooApi" +import { getAuth } from "@/core/utils/auth" -const cancelTransactionApi = async ({ partnerId, transaction }) => { - const dataCancelTransaction = await odooApi('POST', `/api/v1/partner/${partnerId}/sale_order/${transaction.id}/cancel`) +const cancelTransactionApi = async ({ transaction }) => { + const auth = getAuth() + const dataCancelTransaction = await odooApi('POST', `/api/v1/partner/${auth.partnerId}/sale_order/${transaction.id}/cancel`) return dataCancelTransaction } diff --git a/src/lib/transaction/api/transactionsApi.js b/src/lib/transaction/api/transactionsApi.js index d36c3664..995b4c5c 100644 --- a/src/lib/transaction/api/transactionsApi.js +++ b/src/lib/transaction/api/transactionsApi.js @@ -1,7 +1,9 @@ import odooApi from "@/core/api/odooApi" +import { getAuth } from "@/core/utils/auth" -const transactionsApi = async ({partnerId, query}) => { - const dataTransactions = await odooApi('GET', `/api/v1/partner/${partnerId}/sale_order?${query}`) +const transactionsApi = async ({ query }) => { + const auth = getAuth() + const dataTransactions = await odooApi('GET', `/api/v1/partner/${auth.partnerId}/sale_order?${query}`) return dataTransactions } diff --git a/src/lib/transaction/components/Transactions.jsx b/src/lib/transaction/components/Transactions.jsx index 97eb5f91..45a6445c 100644 --- a/src/lib/transaction/components/Transactions.jsx +++ b/src/lib/transaction/components/Transactions.jsx @@ -1,8 +1,7 @@ import { useRouter } from "next/router" -import { getAuth } from "@/core/utils/auth" import { useState } from "react" import { toast } from "react-hot-toast" -import { EllipsisVerticalIcon } from "@heroicons/react/24/outline" +import { EllipsisVerticalIcon, MagnifyingGlassIcon } from "@heroicons/react/24/outline" import { downloadPurchaseOrder, downloadQuotation } from "../utils/transactions" import useTransactions from "../hooks/useTransactions" @@ -12,23 +11,28 @@ import TransactionStatusBadge from "./TransactionStatusBadge" import Spinner from "@/core/components/elements/Spinner/Spinner" import Link from "@/core/components/elements/Link/Link" import BottomPopup from "@/core/components/elements/Popup/BottomPopup" +import Pagination from "@/core/components/elements/Pagination/Pagination" +import { toQuery } from "lodash-contrib" +import _ from "lodash" const Transactions = () => { - const auth = getAuth() const router = useRouter() const { q = '', page = 1 } = router.query - const { transactions } = useTransactions({ - partnerId: auth?.partnerId, - query: { - name: q, - limit: 30, - offset: (page - 1) * 30 - } - }) + const limit = 10 + + const query = { + name: q, + offset: (page - 1) * limit, + limit + } + + const [ inputQuery, setInputQuery ] = useState(q) + + const { transactions } = useTransactions({ query }) const [ toOthers, setToOthers ] = useState(null) const [ toDelete, setToDelete ] = useState(null) @@ -45,9 +49,35 @@ const Transactions = () => { setToDelete(null) } + const pageCount = Math.ceil(transactions?.data?.saleOrderTotal / limit) + let pageQuery = _.omit(query, ['limit', 'offset']) + pageQuery = _.pickBy(pageQuery, _.identity) + pageQuery = toQuery(pageQuery) + + const handleSubmit = (e) => { + e.preventDefault() + if (!inputQuery) return + router.push(`/my/transactions?q=${inputQuery}`) + } + return (
+
+ setInputQuery(e.target.value)} + /> + +
{ transactions.isLoading && (
@@ -89,6 +119,13 @@ const Transactions = () => {
)) } + +
setToOthers(null)}> diff --git a/src/lib/transaction/hooks/useTransactions.js b/src/lib/transaction/hooks/useTransactions.js index b5742cae..3f67fd3e 100644 --- a/src/lib/transaction/hooks/useTransactions.js +++ b/src/lib/transaction/hooks/useTransactions.js @@ -2,9 +2,9 @@ import { useQuery } from "react-query" import transactionsApi from "../api/transactionsApi" import _ from "lodash-contrib" -const useTransactions = ({ partnerId, query }) => { +const useTransactions = ({ query }) => { const queryString = _.toQuery(query) - const fetchTransactions = async () => await transactionsApi({ partnerId, query: queryString }) + const fetchTransactions = async () => await transactionsApi({ query: queryString }) const { data, isLoading, refetch } = useQuery(`transactions-${queryString}`, fetchTransactions) return { -- cgit v1.2.3 From 4fd738fd54f81fa53c2b3e78b7a80fbfda250352 Mon Sep 17 00:00:00 2001 From: Rafi Zadanly Date: Tue, 21 Feb 2023 10:19:32 +0700 Subject: fix --- src/lib/transaction/components/Transactions.jsx | 1 - 1 file changed, 1 deletion(-) (limited to 'src/lib/transaction') diff --git a/src/lib/transaction/components/Transactions.jsx b/src/lib/transaction/components/Transactions.jsx index 45a6445c..5eb1d947 100644 --- a/src/lib/transaction/components/Transactions.jsx +++ b/src/lib/transaction/components/Transactions.jsx @@ -56,7 +56,6 @@ const Transactions = () => { const handleSubmit = (e) => { e.preventDefault() - if (!inputQuery) return router.push(`/my/transactions?q=${inputQuery}`) } -- cgit v1.2.3 From fdfb47c3a825258b871ac5921605642e5e05fdd8 Mon Sep 17 00:00:00 2001 From: Rafi Zadanly Date: Tue, 21 Feb 2023 12:04:20 +0700 Subject: fix --- src/lib/transaction/api/transactionApi.js | 10 ++ src/lib/transaction/api/uploadPoApi.js | 10 ++ src/lib/transaction/components/Transaction.jsx | 149 ++++++++++++++++++++++++ src/lib/transaction/components/Transactions.jsx | 32 ++--- src/lib/transaction/hooks/useTransaction.js | 13 +++ src/lib/transaction/utils/transactions.js | 12 +- 6 files changed, 209 insertions(+), 17 deletions(-) create mode 100644 src/lib/transaction/api/transactionApi.js create mode 100644 src/lib/transaction/api/uploadPoApi.js create mode 100644 src/lib/transaction/components/Transaction.jsx create mode 100644 src/lib/transaction/hooks/useTransaction.js (limited to 'src/lib/transaction') diff --git a/src/lib/transaction/api/transactionApi.js b/src/lib/transaction/api/transactionApi.js new file mode 100644 index 00000000..7186f847 --- /dev/null +++ b/src/lib/transaction/api/transactionApi.js @@ -0,0 +1,10 @@ +import odooApi from "@/core/api/odooApi" +import { getAuth } from "@/core/utils/auth" + +const transactionApi = async ({ id }) => { + const auth = getAuth() + const dataTransaction = await odooApi('GET', `/api/v1/partner/${auth.partnerId}/sale_order/${id}`) + return dataTransaction +} + +export default transactionApi \ No newline at end of file diff --git a/src/lib/transaction/api/uploadPoApi.js b/src/lib/transaction/api/uploadPoApi.js new file mode 100644 index 00000000..00ad1d8d --- /dev/null +++ b/src/lib/transaction/api/uploadPoApi.js @@ -0,0 +1,10 @@ +import odooApi from "@/core/api/odooApi" +import { getAuth } from "@/core/utils/auth" + +const uploadPoApi = async ({ id, data }) => { + const auth = getAuth() + const dataUploadPo = await odooApi('POST', `/api/v1/partner/${auth.partnerId}/sale_order/${id}/upload_po`, data) + return dataUploadPo +} + +export default uploadPoApi \ No newline at end of file diff --git a/src/lib/transaction/components/Transaction.jsx b/src/lib/transaction/components/Transaction.jsx new file mode 100644 index 00000000..c9bdf715 --- /dev/null +++ b/src/lib/transaction/components/Transaction.jsx @@ -0,0 +1,149 @@ +import Spinner from "@/core/components/elements/Spinner/Spinner" +import useTransaction from "../hooks/useTransaction" +import TransactionStatusBadge from "./TransactionStatusBadge" +import Divider from "@/core/components/elements/Divider/Divider" +import { useRef, useState } from "react" +import { downloadPurchaseOrder } from "../utils/transactions" +import BottomPopup from "@/core/components/elements/Popup/BottomPopup" +import uploadPoApi from "../api/uploadPoApi" +import { toast } from "react-hot-toast" +import getFileBase64 from "@/core/utils/getFileBase64" +import currencyFormat from "@/core/utils/currencyFormat" +import VariantGroupCard from "@/lib/variant/components/VariantGroupCard" + +const Transaction = ({ id }) => { + const { transaction } = useTransaction({ id }) + + const poNumber = useRef('') + const poFile = useRef('') + const [ uploadPo, setUploadPo ] = useState(false) + const openUploadPo = () => setUploadPo(true) + const closeUploadPo = () => setUploadPo(false) + const submitUploadPo = async () => { + const file = poFile.current.files[0] + const name = poNumber.current.value + if (typeof file === 'undefined' || !name) { + toast.error('Nomor dan Dokumen PO harus diisi', { position: 'bottom-center' }) + return + } + if (file.size > 5000000) { + toast.error('Maksimal ukuran file adalah 5MB', { position: 'bottom-center' }) + return + } + const data = { name, file: await getFileBase64(file) } + const isUploaded = await uploadPoApi({ id, data }) + if (isUploaded) { + toast.success('Berhasil upload PO') + transaction.refetch() + closeUploadPo() + return + } + toast.error('Terjadi kesalahan internal, coba lagi nanti atau hubungi kami') + } + + return ( + <> + { transaction.isLoading && ( +
+ +
+ ) } + + { transaction.data?.name && ( + <> +
+ +
+ +
+
+ + { transaction.data?.name } + + + { transaction.data?.paymentTerm } + + + { transaction.data?.sales } + + + { transaction.data?.dateOrder } + +
+ + + +
+ + { transaction.data?.purchaseOrderName || '-' } + +
+

Dokumen PO

+ +
+
+ + + +
Detail Produk
+ +
+ +
+

Total Belanja

+

{ currencyFormat(transaction.data?.amountTotal) }

+
+
+ + + + +
+ + +
+
+ + +
+
+ + +
+
+ + )} + + + ) +} + +const DescriptionRow = ({ children, label }) => ( +
+ { label } + { children } +
+) + +export default Transaction \ No newline at end of file diff --git a/src/lib/transaction/components/Transactions.jsx b/src/lib/transaction/components/Transactions.jsx index 5eb1d947..246a4a2c 100644 --- a/src/lib/transaction/components/Transactions.jsx +++ b/src/lib/transaction/components/Transactions.jsx @@ -14,6 +14,7 @@ import BottomPopup from "@/core/components/elements/Popup/BottomPopup" import Pagination from "@/core/components/elements/Pagination/Pagination" import { toQuery } from "lodash-contrib" import _ from "lodash" +import Alert from "@/core/components/elements/Alert/Alert" const Transactions = () => { const router = useRouter() @@ -29,24 +30,22 @@ const Transactions = () => { offset: (page - 1) * limit, limit } - - const [ inputQuery, setInputQuery ] = useState(q) - const { transactions } = useTransactions({ query }) + const [ inputQuery, setInputQuery ] = useState(q) const [ toOthers, setToOthers ] = useState(null) - const [ toDelete, setToDelete ] = useState(null) + const [ toCancel, setToCancel ] = useState(null) const submitCancelTransaction = async () => { const isCancelled = await cancelTransactionApi({ partnerId: auth.partnerId, - transaction: toDelete + transaction: toCancel }) if (isCancelled) { toast.success('Berhasil batalkan transaksi') transactions.refetch() } - setToDelete(null) + setToCancel(null) } const pageCount = Math.ceil(transactions?.data?.saleOrderTotal / limit) @@ -82,6 +81,13 @@ const Transactions = () => {
) } + + { !transactions.isLoading && transactions.data?.saleOrders?.length === 0 && ( + + Tidak ada data transaksi + + ) } + { transactions.data?.saleOrders?.map((saleOrder, index) => (
@@ -132,21 +138,21 @@ const Transactions = () => { @@ -154,12 +160,12 @@ const Transactions = () => { setToDelete(null)} + active={toCancel} + close={() => setToCancel(null)} title="Batalkan Transaksi" >
- Apakah anda yakin membatalkan transaksi {toDelete?.name}? + Apakah anda yakin membatalkan transaksi {toCancel?.name}?
diff --git a/src/lib/transaction/hooks/useTransaction.js b/src/lib/transaction/hooks/useTransaction.js new file mode 100644 index 00000000..f2b493ee --- /dev/null +++ b/src/lib/transaction/hooks/useTransaction.js @@ -0,0 +1,13 @@ +import { useQuery } from "react-query" +import transactionApi from "../api/transactionApi" + +const useTransaction = ({ id }) => { + const fetchTransaction = async () => await transactionApi({ id }) + const { data, isLoading, refetch } = useQuery(`transaction-${id}`, fetchTransaction) + + return { + transaction: { data, isLoading, refetch } + } +} + +export default useTransaction \ No newline at end of file diff --git a/src/lib/transaction/utils/transactions.js b/src/lib/transaction/utils/transactions.js index 166e8a7e..03d4dbd4 100644 --- a/src/lib/transaction/utils/transactions.js +++ b/src/lib/transaction/utils/transactions.js @@ -1,10 +1,14 @@ -const downloadPurchaseOrder = (partnerId, transaction) => { - const url = `${process.env.ODOO_HOST}/api/v1/partner/${partnerId}/sale_order/${transaction.id}/download_po/${transaction.token}` +import { getAuth } from "@/core/utils/auth" + +const downloadPurchaseOrder = (transaction) => { + const auth = getAuth() + const url = `${process.env.ODOO_HOST}/api/v1/partner/${auth.partnerId}/sale_order/${transaction.id}/download_po/${transaction.token}` window.open(url, 'download') } -const downloadQuotation = (partnerId, transaction) => { - const url = `${process.env.ODOO_HOST}/api/v1/partner/${partnerId}/sale_order/${transaction.id}/download/${transaction.token}` +const downloadQuotation = (transaction) => { + const auth = getAuth() + const url = `${process.env.ODOO_HOST}/api/v1/partner/${auth.partnerId}/sale_order/${transaction.id}/download/${transaction.token}` window.open(url, 'download') } -- cgit v1.2.3 From 3f2ff1475676ba47a841796e39e7d17d627e5356 Mon Sep 17 00:00:00 2001 From: Rafi Zadanly Date: Tue, 21 Feb 2023 14:46:24 +0700 Subject: fix --- src/lib/transaction/api/checkoutPoApi.js | 10 ++ src/lib/transaction/components/Transaction.jsx | 191 +++++++++++++++++++++++- src/lib/transaction/components/Transactions.jsx | 3 +- 3 files changed, 201 insertions(+), 3 deletions(-) create mode 100644 src/lib/transaction/api/checkoutPoApi.js (limited to 'src/lib/transaction') diff --git a/src/lib/transaction/api/checkoutPoApi.js b/src/lib/transaction/api/checkoutPoApi.js new file mode 100644 index 00000000..aed43cff --- /dev/null +++ b/src/lib/transaction/api/checkoutPoApi.js @@ -0,0 +1,10 @@ +import odooApi from "@/core/api/odooApi" +import { getAuth } from "@/core/utils/auth" + +const checkoutPoApi = async ({ id }) => { + const auth = getAuth() + const dataCheckout = await odooApi('POST', `/api/v1/partner/${auth?.partnerId}/sale_order/${id}/checkout`) + return dataCheckout +} + +export default checkoutPoApi \ No newline at end of file diff --git a/src/lib/transaction/components/Transaction.jsx b/src/lib/transaction/components/Transaction.jsx index c9bdf715..143b24bb 100644 --- a/src/lib/transaction/components/Transaction.jsx +++ b/src/lib/transaction/components/Transaction.jsx @@ -3,13 +3,18 @@ import useTransaction from "../hooks/useTransaction" import TransactionStatusBadge from "./TransactionStatusBadge" import Divider from "@/core/components/elements/Divider/Divider" import { useRef, useState } from "react" -import { downloadPurchaseOrder } from "../utils/transactions" +import { downloadPurchaseOrder, downloadQuotation } from "../utils/transactions" import BottomPopup from "@/core/components/elements/Popup/BottomPopup" import uploadPoApi from "../api/uploadPoApi" import { toast } from "react-hot-toast" import getFileBase64 from "@/core/utils/getFileBase64" import currencyFormat from "@/core/utils/currencyFormat" import VariantGroupCard from "@/lib/variant/components/VariantGroupCard" +import { ChevronDownIcon, ChevronRightIcon, ChevronUpIcon } from "@heroicons/react/24/outline" +import Link from "@/core/components/elements/Link/Link" +import Alert from "@/core/components/elements/Alert/Alert" +import checkoutPoApi from "../api/checkoutPoApi" +import cancelTransactionApi from "../api/cancelTransactionApi" const Transaction = ({ id }) => { const { transaction } = useTransaction({ id }) @@ -41,6 +46,37 @@ const Transaction = ({ id }) => { toast.error('Terjadi kesalahan internal, coba lagi nanti atau hubungi kami') } + const [ section, setSection ] = useState({ + customer: false, + invoice: false, + shipping: false + }) + const toggleSection = (name) => { + setSection({ ...section, [name]: !section[name] }) + } + + const [ cancelTransaction, setCancelTransaction ] = useState(false) + const openCancelTransaction = () => setCancelTransaction(true) + const closeCancelTransaction = () => setCancelTransaction(false) + const submitCancelTransaction = async () => { + const isCancelled = await cancelTransactionApi({ transaction: transaction.data }) + if (isCancelled) { + toast.success('Berhasil batalkan transaksi') + transaction.refetch() + } + closeCancelTransaction() + } + + const checkout = async () => { + if (!transaction.data?.purchaseOrderFile) { + toast.error('Mohon upload dokumen PO anda sebelum melanjutkan pesanan') + return + } + await checkoutPoApi({ id }) + toast.success('Berhasil melanjutkan pesanan') + transaction.refetch() + } + return ( <> { transaction.isLoading && ( @@ -105,6 +141,122 @@ const Transaction = ({ id }) => {
+ + toggleSection('customer')} + /> + + { section.customer && } + + + + toggleSection('shipping')} + /> + + { section.shipping && } + + + + toggleSection('invoice')} + /> + + { section.invoice && } + + + +
+

Invoice

+
+ { transaction.data?.invoices?.map((invoice, index) => ( + +
+
+

{ invoice?.name }

+
+ { invoice.amountResidual > 0 ? ( +
Belum Lunas
+ ) : ( +
Lunas
+ ) } +

+ { currencyFormat(invoice.amountTotal) } +

+
+
+ +
+ + )) } + { transaction.data?.invoices?.length === 0 && ( + + Belum ada Invoice + + ) } +
+
+ + + +
+ { transaction.data?.status == 'draft' && ( + + ) } + + { transaction.data?.status != 'draft' && ( + + ) } +
+ + +
+ Apakah anda yakin membatalkan transaksi {transaction.data?.name}? +
+
+ + +
+
{ ) } +const SectionButton = ({ label, active, toggle }) => ( + +) + +const SectionContent = ({ address }) => { + let fullAddress = [] + if (address?.street) fullAddress.push(address.street) + if (address?.sub_district?.name) fullAddress.push(address.sub_district.name) + if (address?.district?.name) fullAddress.push(address.district.name) + if (address?.city?.name) fullAddress.push(address.city.name) + fullAddress = fullAddress.join(', ') + + return ( +
+ + { address.name } + + + { address.email || '-' } + + + { address.mobile || '-' } + + + { fullAddress } + +
+ ) +} + const DescriptionRow = ({ children, label }) => (
{ label } diff --git a/src/lib/transaction/components/Transactions.jsx b/src/lib/transaction/components/Transactions.jsx index 246a4a2c..25a6076a 100644 --- a/src/lib/transaction/components/Transactions.jsx +++ b/src/lib/transaction/components/Transactions.jsx @@ -38,7 +38,6 @@ const Transactions = () => { const submitCancelTransaction = async () => { const isCancelled = await cancelTransactionApi({ - partnerId: auth.partnerId, transaction: toCancel }) if (isCancelled) { @@ -171,7 +170,7 @@ const Transactions = () => { -- cgit v1.2.3 From de7361718def0f6bb32294bb074841ba2c0a3ce6 Mon Sep 17 00:00:00 2001 From: Rafi Zadanly Date: Tue, 21 Feb 2023 16:25:35 +0700 Subject: fix --- src/lib/transaction/components/Transaction.jsx | 377 ++++++++++++------------ src/lib/transaction/components/Transactions.jsx | 133 +++++---- 2 files changed, 253 insertions(+), 257 deletions(-) (limited to 'src/lib/transaction') diff --git a/src/lib/transaction/components/Transaction.jsx b/src/lib/transaction/components/Transaction.jsx index 143b24bb..e049a9ac 100644 --- a/src/lib/transaction/components/Transaction.jsx +++ b/src/lib/transaction/components/Transaction.jsx @@ -77,216 +77,213 @@ const Transaction = ({ id }) => { transaction.refetch() } - return ( - <> - { transaction.isLoading && ( -
- -
- ) } + if (transaction.isLoading) { + return ( +
+ +
+ ) + } - { transaction.data?.name && ( - <> -
- -
- -
-
- - { transaction.data?.name } - - - { transaction.data?.paymentTerm } - - - { transaction.data?.sales } - - - { transaction.data?.dateOrder } - + return transaction.data?.name && ( + <> +
+ +
+
- - +
+ + { transaction.data?.name } + + + { transaction.data?.paymentTerm } + + + { transaction.data?.sales } + + + { transaction.data?.dateOrder } + +
+ + -
- - { transaction.data?.purchaseOrderName || '-' } - -
-

Dokumen PO

- -
-
+
+ + { transaction.data?.purchaseOrderName || '-' } + +
+

Dokumen PO

+ +
+
- + -
Detail Produk
+
Detail Produk
-
- -
-

Total Belanja

-

{ currencyFormat(transaction.data?.amountTotal) }

-
-
+
+ +
+

Total Belanja

+

{ currencyFormat(transaction.data?.amountTotal) }

+
+
- - - toggleSection('customer')} - /> + + + toggleSection('customer')} + /> - { section.customer && } + { section.customer && } - - - toggleSection('shipping')} - /> + + + toggleSection('shipping')} + /> - { section.shipping && } + { section.shipping && } - - - toggleSection('invoice')} - /> + + + toggleSection('invoice')} + /> - { section.invoice && } + { section.invoice && } - + -
-

Invoice

-
- { transaction.data?.invoices?.map((invoice, index) => ( - -
-
-

{ invoice?.name }

-
- { invoice.amountResidual > 0 ? ( -
Belum Lunas
- ) : ( -
Lunas
- ) } -

- { currencyFormat(invoice.amountTotal) } -

-
-
- +
+

Invoice

+
+ { transaction.data?.invoices?.map((invoice, index) => ( + +
+
+

{ invoice?.name }

+
+ { invoice.amountResidual > 0 ? ( +
Belum Lunas
+ ) : ( +
Lunas
+ ) } +

+ { currencyFormat(invoice.amountTotal) } +

- - )) } - { transaction.data?.invoices?.length === 0 && ( - - Belum ada Invoice - - ) } -
-
- - +
+ +
+ + )) } + { transaction.data?.invoices?.length === 0 && ( + + Belum ada Invoice + + ) } +
+
-
- { transaction.data?.status == 'draft' && ( - - ) } - - { transaction.data?.status != 'draft' && ( - - ) } -
+ - + { transaction.data?.status == 'draft' && ( + + ) } + + { transaction.data?.status != 'draft' && ( + - -
- + Batalkan Transaksi + + ) } +
- +
+ Apakah anda yakin membatalkan transaksi {transaction.data?.name}? +
+
+ - -
-
- - )} + Ya, Batalkan + + +
+
+ +
+ + +
+
+ + +
+
+ + +
+
) } @@ -305,7 +302,7 @@ const SectionButton = ({ label, active, toggle }) => ( const SectionContent = ({ address }) => { let fullAddress = [] if (address?.street) fullAddress.push(address.street) - if (address?.sub_district?.name) fullAddress.push(address.sub_district.name) + if (address?.subDistrict?.name) fullAddress.push(address.sub_district.name) if (address?.district?.name) fullAddress.push(address.district.name) if (address?.city?.name) fullAddress.push(address.city.name) fullAddress = fullAddress.join(', ') diff --git a/src/lib/transaction/components/Transactions.jsx b/src/lib/transaction/components/Transactions.jsx index 25a6076a..280e8fc5 100644 --- a/src/lib/transaction/components/Transactions.jsx +++ b/src/lib/transaction/components/Transactions.jsx @@ -58,79 +58,78 @@ const Transactions = () => { } return ( -
-
-
- setInputQuery(e.target.value)} - /> - -
- { transactions.isLoading && ( -
- -
- ) } +
+
+ setInputQuery(e.target.value)} + /> + +
+ + { transactions.isLoading && ( +
+ +
+ ) } - { !transactions.isLoading && transactions.data?.saleOrders?.length === 0 && ( - - Tidak ada data transaksi - - ) } + { !transactions.isLoading && transactions.data?.saleOrders?.length === 0 && ( + + Tidak ada data transaksi + + ) } - { transactions.data?.saleOrders?.map((saleOrder, index) => ( -
-
- - No. Transaksi -

{ saleOrder.name }

- -
- - setToOthers(saleOrder)} /> + { transactions.data?.saleOrders?.map((saleOrder, index) => ( +
+
+ + No. Transaksi +

{ saleOrder.name }

+ +
+ + setToOthers(saleOrder)} /> +
+
+ +
+
+ No. Purchase Order +

{ saleOrder.purchaseOrderName || '-' }

+
+
+ Total Invoice +

{ saleOrder.invoiceCount } Invoice

- -
-
- No. Purchase Order -

{ saleOrder.purchaseOrderName || '-' }

-
-
- Total Invoice -

{ saleOrder.invoiceCount } Invoice

-
+
+
+ Sales +

{ saleOrder.sales }

-
-
- Sales -

{ saleOrder.sales }

-
-
- Total Harga -

{ currencyFormat(saleOrder.amountTotal) }

-
+
+ Total Harga +

{ currencyFormat(saleOrder.amountTotal) }

- -
- )) } - - -
+
+ +
+ )) } + + setToOthers(null)}>
-- cgit v1.2.3 From 5933732a74ae1ca4124ddd4e8265b1f443234736 Mon Sep 17 00:00:00 2001 From: Rafi Zadanly Date: Tue, 21 Feb 2023 21:51:51 +0700 Subject: fix --- src/lib/transaction/components/Transaction.jsx | 79 ++++++++++++++------------ 1 file changed, 43 insertions(+), 36 deletions(-) (limited to 'src/lib/transaction') diff --git a/src/lib/transaction/components/Transaction.jsx b/src/lib/transaction/components/Transaction.jsx index e049a9ac..0759dbf8 100644 --- a/src/lib/transaction/components/Transaction.jsx +++ b/src/lib/transaction/components/Transaction.jsx @@ -46,15 +46,6 @@ const Transaction = ({ id }) => { toast.error('Terjadi kesalahan internal, coba lagi nanti atau hubungi kami') } - const [ section, setSection ] = useState({ - customer: false, - invoice: false, - shipping: false - }) - const toggleSection = (name) => { - setSection({ ...section, [name]: !section[name] }) - } - const [ cancelTransaction, setCancelTransaction ] = useState(false) const openCancelTransaction = () => setCancelTransaction(true) const closeCancelTransaction = () => setCancelTransaction(false) @@ -142,33 +133,7 @@ const Transaction = ({ id }) => { - toggleSection('customer')} - /> - - { section.customer && } - - - - toggleSection('shipping')} - /> - - { section.shipping && } - - - - toggleSection('invoice')} - /> - - { section.invoice && } + @@ -288,6 +253,48 @@ const Transaction = ({ id }) => { ) } +const SectionAddress = ({ address }) => { + const [ section, setSection ] = useState({ + customer: false, + invoice: false, + shipping: false + }) + const toggleSection = (name) => { + setSection({ ...section, [name]: !section[name] }) + } + + return ( + <> + toggleSection('customer')} + /> + + { section.customer && } + + + + toggleSection('shipping')} + /> + + { section.shipping && } + + + + toggleSection('invoice')} + /> + { section.invoice && } + + ) +} + const SectionButton = ({ label, active, toggle }) => ( + + +
+ + {transaction.data?.purchaseOrderName || '-'} + +
+

Dokumen PO

+ +
-
- + -
Detail Produk
+
Detail Produk
-
- -
-

Total Belanja

-

{ currencyFormat(transaction.data?.amountTotal) }

+
+ +
+

Total Belanja

+

{currencyFormat(transaction.data?.amountTotal)}

+
-
- - - + - + + + -
-

Invoice

-
- { transaction.data?.invoices?.map((invoice, index) => ( - -
-
-

{ invoice?.name }

-
- { invoice.amountResidual > 0 ? ( -
Belum Lunas
+
+

Invoice

+
+ {transaction.data?.invoices?.map((invoice, index) => ( + +
+
+

{invoice?.name}

+
+ {invoice.amountResidual > 0 ? ( +
Belum Lunas
) : ( -
Lunas
- ) } -

- { currencyFormat(invoice.amountTotal) } -

+
Lunas
+ )} +

+ {currencyFormat(invoice.amountTotal)} +

+
+
- -
- - )) } - { transaction.data?.invoices?.length === 0 && ( - - Belum ada Invoice - - ) } + + ))} + {transaction.data?.invoices?.length === 0 && ( + + Belum ada Invoice + + )} +
-
- + -
- { transaction.data?.status == 'draft' && ( - + )} + - ) } - + )} +
+ + - Download Quotation - - { transaction.data?.status != 'draft' && ( - - ) } -
+
+ Apakah anda yakin membatalkan transaksi{' '} + {transaction.data?.name}? +
+
+ + +
+ - -
- Apakah anda yakin membatalkan transaksi {transaction.data?.name}? -
-
- - -
-
- - -
- - -
-
- - -
-
- - -
-
- + +
+ + +
+
+ + +
+
+ + +
+
+ + ) ) } const SectionAddress = ({ address }) => { - const [ section, setSection ] = useState({ + const [section, setSection] = useState({ customer: false, invoice: false, shipping: false @@ -265,44 +248,40 @@ const SectionAddress = ({ address }) => { return ( <> - toggleSection('customer')} /> - { section.customer && } + {section.customer && } - - toggleSection('shipping')} /> - { section.shipping && } + {section.shipping && } - - toggleSection('invoice')} /> - { section.invoice && } + {section.invoice && } ) } const SectionButton = ({ label, active, toggle }) => ( - ) @@ -315,28 +294,20 @@ const SectionContent = ({ address }) => { fullAddress = fullAddress.join(', ') return ( -
- - { address.name } - - - { address.email || '-' } - - - { address.mobile || '-' } - - - { fullAddress } - +
+ {address.name} + {address.email || '-'} + {address.mobile || '-'} + {fullAddress}
) } const DescriptionRow = ({ children, label }) => ( -
- { label } - { children } +
+ {label} + {children}
) -export default Transaction \ No newline at end of file +export default Transaction diff --git a/src/lib/transaction/components/TransactionStatusBadge.jsx b/src/lib/transaction/components/TransactionStatusBadge.jsx index 28fe714a..7372e4da 100644 --- a/src/lib/transaction/components/TransactionStatusBadge.jsx +++ b/src/lib/transaction/components/TransactionStatusBadge.jsx @@ -35,11 +35,7 @@ const TransactionStatusBadge = ({ status }) => { } badgeProps.className = badgeProps.className.join(' ') - return ( -
- { badgeProps.text } -
- ) + return
{badgeProps.text}
} -export default TransactionStatusBadge \ No newline at end of file +export default TransactionStatusBadge diff --git a/src/lib/transaction/components/Transactions.jsx b/src/lib/transaction/components/Transactions.jsx index 280e8fc5..f582319d 100644 --- a/src/lib/transaction/components/Transactions.jsx +++ b/src/lib/transaction/components/Transactions.jsx @@ -1,27 +1,24 @@ -import { useRouter } from "next/router" -import { useState } from "react" -import { toast } from "react-hot-toast" -import { EllipsisVerticalIcon, MagnifyingGlassIcon } from "@heroicons/react/24/outline" - -import { downloadPurchaseOrder, downloadQuotation } from "../utils/transactions" -import useTransactions from "../hooks/useTransactions" -import currencyFormat from "@/core/utils/currencyFormat" -import cancelTransactionApi from "../api/cancelTransactionApi" -import TransactionStatusBadge from "./TransactionStatusBadge" -import Spinner from "@/core/components/elements/Spinner/Spinner" -import Link from "@/core/components/elements/Link/Link" -import BottomPopup from "@/core/components/elements/Popup/BottomPopup" -import Pagination from "@/core/components/elements/Pagination/Pagination" -import { toQuery } from "lodash-contrib" -import _ from "lodash" -import Alert from "@/core/components/elements/Alert/Alert" +import { useRouter } from 'next/router' +import { useState } from 'react' +import { toast } from 'react-hot-toast' +import { EllipsisVerticalIcon, MagnifyingGlassIcon } from '@heroicons/react/24/outline' + +import { downloadPurchaseOrder, downloadQuotation } from '../utils/transactions' +import useTransactions from '../hooks/useTransactions' +import currencyFormat from '@/core/utils/currencyFormat' +import cancelTransactionApi from '../api/cancelTransactionApi' +import TransactionStatusBadge from './TransactionStatusBadge' +import Spinner from '@/core/components/elements/Spinner/Spinner' +import Link from '@/core/components/elements/Link/Link' +import BottomPopup from '@/core/components/elements/Popup/BottomPopup' +import Pagination from '@/core/components/elements/Pagination/Pagination' +import { toQuery } from 'lodash-contrib' +import _ from 'lodash' +import Alert from '@/core/components/elements/Alert/Alert' const Transactions = () => { const router = useRouter() - const { - q = '', - page = 1 - } = router.query + const { q = '', page = 1 } = router.query const limit = 10 @@ -32,9 +29,9 @@ const Transactions = () => { } const { transactions } = useTransactions({ query }) - const [ inputQuery, setInputQuery ] = useState(q) - const [ toOthers, setToOthers ] = useState(null) - const [ toCancel, setToCancel ] = useState(null) + const [inputQuery, setInputQuery] = useState(q) + const [toOthers, setToOthers] = useState(null) + const [toCancel, setToCancel] = useState(null) const submitCancelTransaction = async () => { const isCancelled = await cancelTransactionApi({ @@ -55,129 +52,128 @@ const Transactions = () => { const handleSubmit = (e) => { e.preventDefault() router.push(`/my/transactions?q=${inputQuery}`) - } + } return ( -
-
- + + setInputQuery(e.target.value)} /> -
- - { transactions.isLoading && ( -
- + + {transactions.isLoading && ( +
+
- ) } + )} - { !transactions.isLoading && transactions.data?.saleOrders?.length === 0 && ( - + {!transactions.isLoading && transactions.data?.saleOrders?.length === 0 && ( + Tidak ada data transaksi - ) } + )} - { transactions.data?.saleOrders?.map((saleOrder, index) => ( -
-
+ {transactions.data?.saleOrders?.map((saleOrder, index) => ( +
+
- No. Transaksi -

{ saleOrder.name }

+ No. Transaksi +

{saleOrder.name}

-
+
- setToOthers(saleOrder)} /> + setToOthers(saleOrder)} />
-
+
- No. Purchase Order -

{ saleOrder.purchaseOrderName || '-' }

+ No. Purchase Order +

+ {saleOrder.purchaseOrderName || '-'} +

-
- Total Invoice -

{ saleOrder.invoiceCount } Invoice

+
+ Total Invoice +

{saleOrder.invoiceCount} Invoice

-
+
- Sales -

{ saleOrder.sales }

+ Sales +

{saleOrder.sales}

-
- Total Harga -

{ currencyFormat(saleOrder.amountTotal) }

+
+ Total Harga +

+ {currencyFormat(saleOrder.amountTotal)} +

- )) } - + ))} + - setToOthers(null)}> -
- - -
- setToCancel(null)} - title="Batalkan Transaksi" - > -
- Apakah anda yakin membatalkan transaksi {toCancel?.name}? + setToCancel(null)} title='Batalkan Transaksi'> +
+ Apakah anda yakin membatalkan transaksi{' '} + {toCancel?.name}?
-
- -
@@ -186,4 +182,4 @@ const Transactions = () => { ) } -export default Transactions \ No newline at end of file +export default Transactions diff --git a/src/lib/transaction/hooks/useTransaction.js b/src/lib/transaction/hooks/useTransaction.js index f2b493ee..6dda0573 100644 --- a/src/lib/transaction/hooks/useTransaction.js +++ b/src/lib/transaction/hooks/useTransaction.js @@ -1,5 +1,5 @@ -import { useQuery } from "react-query" -import transactionApi from "../api/transactionApi" +import { useQuery } from 'react-query' +import transactionApi from '../api/transactionApi' const useTransaction = ({ id }) => { const fetchTransaction = async () => await transactionApi({ id }) @@ -10,4 +10,4 @@ const useTransaction = ({ id }) => { } } -export default useTransaction \ No newline at end of file +export default useTransaction diff --git a/src/lib/transaction/hooks/useTransactions.js b/src/lib/transaction/hooks/useTransactions.js index 3f67fd3e..5b40a05a 100644 --- a/src/lib/transaction/hooks/useTransactions.js +++ b/src/lib/transaction/hooks/useTransactions.js @@ -1,6 +1,6 @@ -import { useQuery } from "react-query" -import transactionsApi from "../api/transactionsApi" -import _ from "lodash-contrib" +import { useQuery } from 'react-query' +import transactionsApi from '../api/transactionsApi' +import _ from 'lodash-contrib' const useTransactions = ({ query }) => { const queryString = _.toQuery(query) @@ -12,4 +12,4 @@ const useTransactions = ({ query }) => { } } -export default useTransactions \ No newline at end of file +export default useTransactions diff --git a/src/lib/transaction/utils/transactions.js b/src/lib/transaction/utils/transactions.js index 03d4dbd4..4c7522be 100644 --- a/src/lib/transaction/utils/transactions.js +++ b/src/lib/transaction/utils/transactions.js @@ -1,4 +1,4 @@ -import { getAuth } from "@/core/utils/auth" +import { getAuth } from '@/core/utils/auth' const downloadPurchaseOrder = (transaction) => { const auth = getAuth() @@ -12,7 +12,4 @@ const downloadQuotation = (transaction) => { window.open(url, 'download') } -export { - downloadPurchaseOrder, - downloadQuotation -} \ No newline at end of file +export { downloadPurchaseOrder, downloadQuotation } -- cgit v1.2.3 From 7265295454801c1d921385a4b67fb3780b46771e Mon Sep 17 00:00:00 2001 From: Rafi Zadanly Date: Wed, 22 Feb 2023 14:00:00 +0700 Subject: fix --- src/lib/transaction/components/Transaction.jsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/lib/transaction') diff --git a/src/lib/transaction/components/Transaction.jsx b/src/lib/transaction/components/Transaction.jsx index 2220f3be..17eacd45 100644 --- a/src/lib/transaction/components/Transaction.jsx +++ b/src/lib/transaction/components/Transaction.jsx @@ -288,7 +288,7 @@ const SectionButton = ({ label, active, toggle }) => ( const SectionContent = ({ address }) => { let fullAddress = [] if (address?.street) fullAddress.push(address.street) - if (address?.subDistrict?.name) fullAddress.push(address.sub_district.name) + if (address?.subDistrict?.name) fullAddress.push(address.subDistrict.name) if (address?.district?.name) fullAddress.push(address.district.name) if (address?.city?.name) fullAddress.push(address.city.name) fullAddress = fullAddress.join(', ') -- cgit v1.2.3 From ac3fdf7be9982e65d8f83a20bc487f8dd62e3bfc Mon Sep 17 00:00:00 2001 From: Rafi Zadanly Date: Wed, 22 Feb 2023 23:36:47 +0700 Subject: fix --- src/lib/transaction/components/Transaction.jsx | 61 ++++++++++++++++++++----- src/lib/transaction/components/Transactions.jsx | 49 ++++++++++++++++---- 2 files changed, 90 insertions(+), 20 deletions(-) (limited to 'src/lib/transaction') diff --git a/src/lib/transaction/components/Transaction.jsx b/src/lib/transaction/components/Transaction.jsx index 17eacd45..7da33551 100644 --- a/src/lib/transaction/components/Transaction.jsx +++ b/src/lib/transaction/components/Transaction.jsx @@ -120,7 +120,10 @@ const Transaction = ({ id }) => {
Detail Produk
- +

Total Belanja

{currencyFormat(transaction.data?.amountTotal)}

@@ -137,7 +140,10 @@ const Transaction = ({ id }) => {

Invoice

{transaction.data?.invoices?.map((invoice, index) => ( - +

{invoice?.name}

@@ -157,7 +163,10 @@ const Transaction = ({ id }) => { ))} {transaction.data?.invoices?.length === 0 && ( - + Belum ada Invoice )} @@ -168,7 +177,10 @@ const Transaction = ({ id }) => {
{transaction.data?.status == 'draft' && ( - )} @@ -207,26 +219,50 @@ const Transaction = ({ id }) => { > Ya, Batalkan -
- +
- +
- +
- -
@@ -279,7 +315,10 @@ const SectionAddress = ({ address }) => { } const SectionButton = ({ label, active, toggle }) => ( - diff --git a/src/lib/transaction/components/Transactions.jsx b/src/lib/transaction/components/Transactions.jsx index f582319d..ccbdede2 100644 --- a/src/lib/transaction/components/Transactions.jsx +++ b/src/lib/transaction/components/Transactions.jsx @@ -56,7 +56,10 @@ const Transactions = () => { return (
-
+ { value={inputQuery} onChange={(e) => setInputQuery(e.target.value)} /> -
@@ -76,13 +82,19 @@ const Transactions = () => { )} {!transactions.isLoading && transactions.data?.saleOrders?.length === 0 && ( - + Tidak ada data transaksi )} {transactions.data?.saleOrders?.map((saleOrder, index) => ( -
+
No. Transaksi @@ -90,7 +102,10 @@ const Transactions = () => {
- setToOthers(saleOrder)} /> + setToOthers(saleOrder)} + />
@@ -129,7 +144,11 @@ const Transactions = () => { className='mt-2 mb-2' /> - setToOthers(null)}> + setToOthers(null)} + >
- setToCancel(null)} title='Batalkan Transaksi'> + setToCancel(null)} + title='Batalkan Transaksi' + >
Apakah anda yakin membatalkan transaksi{' '} {toCancel?.name}?
- -
-- cgit v1.2.3