import moment from 'moment'; import { useEffect, useState } from 'react'; import { IMAGE_ROOT } from '@/shared/constants/common'; import { HomeMonthParams, HomeMonthResponse, HomeOverviewParams, HomeOverviewResponse, Sales, Settlement, TopPaymentMethodInfo, TopSalesDayInfo, TopSalesTimeInfo } from '../model/types'; import { useHomeOverviewMutation } from '../api/use-home-overview-mutation'; import { useHomeMonthwMutation } from '../api/use-home-month-mutation'; import { NumericFormat } from 'react-number-format'; import { useNavigate } from '@/shared/lib/hooks'; import { PATHS } from '@/shared/constants/paths'; export const BoxContainer2 = () => { const { navigate } = useNavigate(); const [mid, setMid] = useState('nictest001m'); const [searchDate, setSearchDate] = useState(moment().format('YYYY-MM-DD')); const [sales, setSales] = useState(); const [settlement, setSettlement] = useState(); const [salesIncrease, setSalesIncrease] = useState(); const [settlementIncrease, setSettlementIncrease] = useState(); const [averageTransactionAmount, setAverageTransactionAmount] = useState(); const [dailyAverageSales, setDailyAverageSales] = useState(); const [dailyAverageCount, setDailyAverageCount] = useState(); const [topSalesDayInfo, setTopSalesDayInfo] = useState(); const [topSalesTimeInfo, setTopSalesTimeInfo] = useState(); const [topPaymentMethodInfo, setTopPaymentMethodInfo] = useState(); const { mutateAsync: homeMonth } = useHomeMonthwMutation(); const { mutateAsync: homeOverview } = useHomeOverviewMutation(); const callMonth = () => { let params: HomeMonthParams = { searchDate: searchDate, mid: mid, }; homeMonth(params).then((rs: HomeMonthResponse) => { setSales(rs.sales); setSettlement(rs.settlement); let currentMonthAmount = rs.sales.currentMonthAmount; let previousMonthAmount = rs.sales.previousMonthAmount; if(currentMonthAmount && previousMonthAmount){ let increase = (currentMonthAmount - previousMonthAmount) / previousMonthAmount * 100; setSalesIncrease(increase); } let currentMonthSettlementAmount = rs.settlement.currentMonthSettlementAmount; let previousMonthSettlementAmount = rs.settlement.previousMonthSettlementAmount; if(currentMonthSettlementAmount && previousMonthSettlementAmount){ let increase = (currentMonthSettlementAmount - previousMonthSettlementAmount) / previousMonthSettlementAmount * 100; setSettlementIncrease(increase); } }); }; const callOverview = () => { let params: HomeOverviewParams = { searchDate: searchDate, mid: mid, }; homeOverview(params).then((rs: HomeOverviewResponse) => { setAverageTransactionAmount(rs.averageTransactionAmount); setDailyAverageSales(rs.dailyAverageSales); setDailyAverageCount(rs.dailyAverageCount); setTopSalesDayInfo(rs.topSalesDayInfo); setTopSalesTimeInfo(rs.topSalesTimeInfo); setTopPaymentMethodInfo(rs.topPaymentMethodInfo); }); }; useEffect(() => { // callMonth(); callOverview(); }, []); const onClickToNavigate = () => { navigate(PATHS.settlement.list); }; return ( <>

매출/정산 현황

(전월 전체 매출/정산 대비 기준 )

총 매출액

= 0)? 'plus': 'minus'}` }> = 0)? '↑ ': '↓ '}` } suffix='%' > 오늘 매출 바로가기

총 정산액

= 0)? 'plus': 'minus'}` }> = 0)? '↑ ': '↓ '}` } suffix='%' > 오늘 매출 바로가기

거래 인사이트

(최근 일주일 기준)

평균 객단가

하루 평균 매출 및 건수

()

매출이 가장 높은 요일

    { topSalesDayInfo?.daySalesRatios.map((value, index) => (
  • { (index + 1) } { value.dayOfWeek } { value.ratio + '%' }
  • )) }

매출이 가장 높은 시간

    { topSalesTimeInfo?.timeSalesRatios.map((value, index) => (
  • { (index + 1) } { value.hour } { value.ratio + '%' }
  • )) }

가장 많이쓰인 결제 수단

    { topPaymentMethodInfo?.paymentMethodRatios.map((value, index) => (
  • { (index + 1) } { value.paymentMethod } { value.ratio + '%' }
  • )) }
); };