feat: analytic
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user