Carregando cliente...
@@ -82,7 +87,7 @@ const ClientDetails = () => {
);
}
- if (!hasClient) {
+ if (!details?.hasClient) {
return (
Cliente não encontrado.
@@ -91,6 +96,23 @@ const ClientDetails = () => {
);
}
+ const {
+ chartData,
+ groupedOrders,
+ allTimeOrderCount,
+ clientName,
+ clientPhone,
+ periodAverageTicket,
+ periodItems,
+ periodOrderCount,
+ periodSpent
+ } = details;
+ const displayName = clientName || 'Cliente';
+ const totalPages = Math.ceil(groupedOrders.length / ordersPerPage);
+ const safeCurrentPage = Math.min(currentPage, totalPages || 1);
+ const startIndex = (safeCurrentPage - 1) * ordersPerPage;
+ const paginatedOrders = groupedOrders.slice(startIndex, startIndex + ordersPerPage);
+
return (
{/* Header Area */}
diff --git a/src/pages/Clients.tsx b/src/pages/Clients.tsx
index 96b22d0..08b5775 100644
--- a/src/pages/Clients.tsx
+++ b/src/pages/Clients.tsx
@@ -109,6 +109,7 @@ const Clients = () => {
const rfmClient = rfmByCustomerKey.get(client.customerKey);
return {
customerKey: client.customerKey,
+ clientToken: client.clientToken,
name: client.name,
phone: client.phone,
totalSpent: client.totalSpent,
@@ -315,7 +316,7 @@ const Clients = () => {
Ver detalhes
diff --git a/src/pages/Rfm.tsx b/src/pages/Rfm.tsx
index 1d7ae2f..e46d1e2 100644
--- a/src/pages/Rfm.tsx
+++ b/src/pages/Rfm.tsx
@@ -533,7 +533,7 @@ const Rfm = () => {
return (
|
|
-
+
diff --git a/src/types.ts b/src/types.ts
index 3abbb59..c144461 100644
--- a/src/types.ts
+++ b/src/types.ts
@@ -65,6 +65,7 @@ export interface DashboardAnalytics {
export interface ClientAnalyticsItem {
customerKey: string;
+ clientToken: string;
name: string;
phone: string;
quantityPurchased: number;
@@ -75,6 +76,7 @@ export interface ClientAnalyticsItem {
export interface RfmClient {
customerKey: string;
+ clientToken: string;
name: string;
phone: string;
monetary: number;
@@ -112,6 +114,34 @@ export interface RfmAnalytics {
};
}
+export interface GroupedClientOrder {
+ date: string;
+ orderId: string;
+ orderTotal: number;
+ items: OrderData[];
+}
+
+export interface ClientDetailsAnalytics {
+ range: {
+ start: string | null;
+ end: string | null;
+ };
+ clientToken: string;
+ chartData: Array<{
+ date: string;
+ value: number;
+ }>;
+ groupedOrders: GroupedClientOrder[];
+ allTimeOrderCount: number;
+ clientName: string;
+ clientPhone: string;
+ hasClient: boolean;
+ periodAverageTicket: number;
+ periodOrderCount: number;
+ periodSpent: number;
+ periodItems: number;
+}
+
export type CampaignStatus = 'pending' | 'processing' | 'sent' | 'failed' | 'skipped';
export interface CampaignQueueItem {
|