feat: analytic

This commit is contained in:
ferdiansyah783
2025-08-08 17:59:39 +07:00
parent 7beee4c3a1
commit 67b747f0ff
34 changed files with 1227 additions and 2834 deletions
+109
View File
@@ -46,3 +46,112 @@ export interface ProductSalesReport {
date_to: string
data: ProductData[]
}
export type PaymentDataItem = {
payment_method_id: string
payment_method_name: string
payment_method_type: string
total_amount: number
order_count: number
payment_count: number
percentage: number
}
export type SummaryData = {
total_amount: number
total_orders: number
total_payments: number
average_order_value: number
}
export type PaymentReport = {
organization_id: string
outlet_id: string
date_from: string
date_to: string
group_by: string
summary: SummaryData
data: PaymentDataItem[]
}
export type Overview = {
total_sales: number
total_orders: number
average_order_value: number
total_customers: number
voided_orders: number
refunded_orders: number
}
export type RecentSale = {
date: string
sales: number
orders: number
items: number
tax: number
discount: number
net_sales: number
}
export type DashboardReport = {
organization_id: string
outlet_id: string
date_from: string
date_to: string
overview: Overview
top_products: ProductData[]
payment_methods: PaymentDataItem[]
recent_sales: RecentSale[]
}
export interface ProfitLossReport {
organization_id: string;
date_from: string; // ISO date string with timezone
date_to: string; // ISO date string with timezone
group_by: string;
summary: Summary;
data: DailyData[];
product_data: ProductDataReport[];
}
export interface Summary {
total_revenue: number;
total_cost: number;
gross_profit: number;
gross_profit_margin: number;
total_tax: number;
total_discount: number;
net_profit: number;
net_profit_margin: number;
total_orders: number;
average_profit: number;
profitability_ratio: number;
}
export interface DailyData {
date: string; // ISO date string with timezone
revenue: number;
cost: number;
gross_profit: number;
gross_profit_margin: number;
tax: number;
discount: number;
net_profit: number;
net_profit_margin: number;
orders: number;
}
export interface ProductDataReport {
product_id: string;
product_name: string;
category_id: string;
category_name: string;
quantity_sold: number;
revenue: number;
cost: number;
gross_profit: number;
gross_profit_margin: number;
average_price: number;
average_cost: number;
profit_per_unit: number;
}
+9
View File
@@ -36,3 +36,12 @@ export type Ingredients = {
data: IngredientItem[]
pagination: Pagination
}
export type IngredientRequest = {
name: string
unit_id: string
cost: number
stock: number
is_semi_finished: boolean
outlet_id: string
}