diff options
Diffstat (limited to 'src-migrate')
| -rw-r--r-- | src-migrate/modules/cart/components/Detail.tsx | 85 | ||||
| -rw-r--r-- | src-migrate/modules/cart/components/Item.tsx | 3 | ||||
| -rw-r--r-- | src-migrate/pages/shop/cart/index.tsx | 16 | ||||
| -rw-r--r-- | src-migrate/services/checkout.ts | 4 |
4 files changed, 17 insertions, 91 deletions
diff --git a/src-migrate/modules/cart/components/Detail.tsx b/src-migrate/modules/cart/components/Detail.tsx deleted file mode 100644 index b1532729..00000000 --- a/src-migrate/modules/cart/components/Detail.tsx +++ /dev/null @@ -1,85 +0,0 @@ -import style from '../styles/detail.module.css' - -import React, { useEffect, useMemo } from 'react' -import Link from 'next/link' -import { Button, Tooltip } from '@chakra-ui/react' - -import { getAuth } from '~/libs/auth' -import { useCartStore } from '../stores/useCartStore' - -import CartItem from './Item' -import CartSummary from './Summary' - -const CartDetail = () => { - const auth = getAuth() - - const { loadCart, cart, summary } = useCartStore() - - useEffect(() => { - if (typeof auth === 'object' && !cart) loadCart(auth.id) - }, [auth, loadCart, cart]) - - const hasSelectedPromo = useMemo(() => { - if (!cart) return false - for (const item of cart.products) { - if (item.cart_type === 'promotion' && item.selected) return true - } - return false - }, [cart]) - - const hasSelected = useMemo(() => { - if (!cart) return false - for (const item of cart.products) { - if (item.selected) return true - } - return false - }, [cart]) - - return ( - <div className={style.wrapper}> - <div className='w-full md:w-3/4'> - <div className=''> - <div className='text-h-lg font-semibold mb-6'>Keranjang Belanja</div> - <div className='grid grid-cols-1 gap-y-4'> - {!cart && <CartItem.Skeleton count={5} height='120px' />} - </div> - <div className='flex flex-col gap-y-8 border-t border-gray-300 pt-8'> - {cart?.products.map((item) => <CartItem key={item.id} item={item} />)} - </div> - </div> - </div> - - <div className='w-full md:w-1/4 md:pl-6 mt-6 md:mt-0'> - <div className='border border-gray-300 p-4 rounded-md sticky top-[180px]'> - <CartSummary {...summary} isLoaded={!!cart} /> - <div className='grid grid-cols-2 gap-x-3 mt-6'> - <Tooltip label={hasSelectedPromo ? 'Barang promo tidak dapat dibuat quotation' : ''}> - <Button - colorScheme='yellow' - w='full' - isDisabled={hasSelectedPromo || !hasSelected} - as={Link} - href='/shop/quotation' - > - Quotation - </Button> - </Tooltip> - <Tooltip label={hasSelected ? '' : 'Tidak ada item yang dipilih'}> - <Button - colorScheme='red' - w='full' - isDisabled={!hasSelected} - as={Link} - href='/shop/checkout' - > - Checkout - </Button> - </Tooltip> - </div> - </div> - </div> - </div> - ) -} - -export default CartDetail
\ No newline at end of file diff --git a/src-migrate/modules/cart/components/Item.tsx b/src-migrate/modules/cart/components/Item.tsx index 08823d19..48e568e0 100644 --- a/src-migrate/modules/cart/components/Item.tsx +++ b/src-migrate/modules/cart/components/Item.tsx @@ -70,7 +70,8 @@ const CartItem = ({ item, editable = true }: Props) => { {item.cart_type === 'product' && ( <> <div className={style.price}> - Rp {formatCurrency(item.price.price)} + {item.price.price > 0 && `Rp ${formatCurrency(item.price.price)}`} + {item.price.price === 0 && '-'} </div> <div>{item.code}</div> </> diff --git a/src-migrate/pages/shop/cart/index.tsx b/src-migrate/pages/shop/cart/index.tsx index 397852f9..9ec58a48 100644 --- a/src-migrate/pages/shop/cart/index.tsx +++ b/src-migrate/pages/shop/cart/index.tsx @@ -9,6 +9,7 @@ import { useCartStore } from '~/modules/cart/stores/useCartStore' import CartItem from '~/modules/cart/components/Item' import CartSummary from '~/modules/cart/components/Summary' +import clsxm from '~/libs/clsxm' const CartPage = () => { const auth = getAuth() @@ -35,6 +36,14 @@ const CartPage = () => { return false }, [cart]) + const hasSelectNoPrice = useMemo(() => { + if (!cart) return false + for (const item of cart.products) { + if (item.selected && item.price.price_discount == 0) return true + } + return false + }, [cart]) + return ( <> <div className={style['title']}> @@ -71,11 +80,14 @@ const CartPage = () => { </Button> </Tooltip> - <Tooltip label={!hasSelected && 'Tidak ada item yang dipilih'}> + <Tooltip label={clsxm({ + 'Tidak ada item yang dipilih': !hasSelected, + 'Terdapat item yang tidak ada harga': hasSelectNoPrice + })}> <Button colorScheme='red' w='full' - isDisabled={!hasSelected} + isDisabled={!hasSelected || hasSelectNoPrice} as={Link} href='/shop/checkout' > diff --git a/src-migrate/services/checkout.ts b/src-migrate/services/checkout.ts index 3eff95a8..e6642ccb 100644 --- a/src-migrate/services/checkout.ts +++ b/src-migrate/services/checkout.ts @@ -2,6 +2,4 @@ import odooApi from '~/libs/odooApi'; export const getUserCheckout = async (userId: number) => { return await odooApi('GET', `/api/v1/user/${userId}/sale_order/checkout`); -}; - -// /api/v1/user/${id}/sale_order/checkout?voucher=${voucher}
\ No newline at end of file +};
\ No newline at end of file |
