redesign
This commit is contained in:
@@ -2,9 +2,10 @@ import { useMemo } from 'react';
|
||||
import { useDateScope } from '@/components/shell/DateScope';
|
||||
import { useBranchScope } from '@/features/store-admin/BranchScope';
|
||||
import { summariseBranch } from '@/features/store-admin/posStatus';
|
||||
import { branchOrderStats, NO_ORDERS } from '@/features/store-admin/branchStats';
|
||||
import {
|
||||
useLocationProducts,
|
||||
useLocationSummary,
|
||||
useOrders,
|
||||
usePosHealthByBranch,
|
||||
usePosSalesByBranch,
|
||||
useStockRequests,
|
||||
@@ -52,7 +53,15 @@ export function ConsolePage() {
|
||||
const dates = useDateScope();
|
||||
|
||||
const branchIds = useMemo(() => scoped.map((branch) => branch.locationid), [scoped]);
|
||||
const orders = useLocationSummary(tenantid || undefined);
|
||||
/* The same rows `useConsoleSeries` reads, so this shares its cache entry
|
||||
rather than adding a request. `getlocationsummary`, which used to feed this
|
||||
table, carries no money and ignores the date picker — see `branchStats.ts`. */
|
||||
const orders = useOrders(
|
||||
tenantid
|
||||
? { tenantid, ...(selected ? { locationid: selected } : {}), ...dates.range, pagesize: 500 }
|
||||
: undefined,
|
||||
);
|
||||
const byBranch = useMemo(() => branchOrderStats(orders.data ?? []), [orders.data]);
|
||||
const posNow = usePosSalesByBranch(branchIds, dates.range);
|
||||
const posHealth = usePosHealthByBranch(branchIds);
|
||||
const products = useLocationProducts(tenantid || undefined, selected ?? undefined, 0, {
|
||||
@@ -75,17 +84,14 @@ export function ConsolePage() {
|
||||
const rows = useMemo<BranchRow[]>(
|
||||
() =>
|
||||
scoped.map((branch, index) => {
|
||||
const order = (orders.data ?? []).find((entry) => entry.locationid === branch.locationid);
|
||||
const order = byBranch.get(branch.locationid) ?? NO_ORDERS;
|
||||
const pos = posNow[index]?.data;
|
||||
return {
|
||||
branch,
|
||||
// `getlocationsummary` carries no date filter, so it is used for the
|
||||
// per-branch split the table needs. The dated period figures come
|
||||
// from the order rows — see `totals` below.
|
||||
onlineRevenue: order?.revenue ?? 0,
|
||||
onlineOrders: order?.totalorders ?? 0,
|
||||
cancelled: order?.cancelled ?? 0,
|
||||
delivered: order?.delivered ?? 0,
|
||||
onlineRevenue: order.revenue,
|
||||
onlineOrders: order.orders,
|
||||
cancelled: order.cancelled,
|
||||
delivered: order.delivered,
|
||||
counterRevenue: pos?.grosssales ?? 0,
|
||||
counterBills: pos?.billcount ?? 0,
|
||||
health: summariseBranch(posHealth[index]?.data ?? [], now),
|
||||
@@ -94,7 +100,7 @@ export function ConsolePage() {
|
||||
).length,
|
||||
};
|
||||
}),
|
||||
[scoped, orders.data, posNow, posHealth, requests.data, now],
|
||||
[scoped, byBranch, posNow, posHealth, requests.data, now],
|
||||
);
|
||||
|
||||
const totals = useMemo(() => {
|
||||
|
||||
Reference in New Issue
Block a user