report inventory
This commit is contained in:
@@ -0,0 +1,120 @@
|
||||
part of '../analytic.dart';
|
||||
|
||||
@freezed
|
||||
class InventoryAnalytic with _$InventoryAnalytic {
|
||||
const factory InventoryAnalytic({
|
||||
required InventoryAnalyticSummary summary,
|
||||
required List<InventoryAnalyticProductItem> products,
|
||||
required List<InventoryAnalyticIngredientItem> ingredients,
|
||||
}) = _InventoryAnalytic;
|
||||
|
||||
factory InventoryAnalytic.empty() => InventoryAnalytic(
|
||||
summary: InventoryAnalyticSummary.empty(),
|
||||
products: const [],
|
||||
ingredients: const [],
|
||||
);
|
||||
}
|
||||
|
||||
@freezed
|
||||
class InventoryAnalyticSummary with _$InventoryAnalyticSummary {
|
||||
const factory InventoryAnalyticSummary({
|
||||
required int totalProducts,
|
||||
required int totalIngredients,
|
||||
required int totalValue,
|
||||
required int lowStockProducts,
|
||||
required int lowStockIngredients,
|
||||
required int zeroStockProducts,
|
||||
required int zeroStockIngredients,
|
||||
required int totalSoldProducts,
|
||||
required int totalSoldIngredients,
|
||||
required String outletId,
|
||||
required String outletName,
|
||||
required DateTime generatedAt,
|
||||
}) = _InventoryAnalyticSummary;
|
||||
|
||||
factory InventoryAnalyticSummary.empty() => InventoryAnalyticSummary(
|
||||
totalProducts: 0,
|
||||
totalIngredients: 0,
|
||||
totalValue: 0,
|
||||
lowStockProducts: 0,
|
||||
lowStockIngredients: 0,
|
||||
zeroStockProducts: 0,
|
||||
zeroStockIngredients: 0,
|
||||
totalSoldProducts: 0,
|
||||
totalSoldIngredients: 0,
|
||||
outletId: '',
|
||||
outletName: '',
|
||||
generatedAt: DateTime.now(),
|
||||
);
|
||||
}
|
||||
|
||||
@freezed
|
||||
class InventoryAnalyticProductItem with _$InventoryAnalyticProductItem {
|
||||
const factory InventoryAnalyticProductItem({
|
||||
required String id,
|
||||
required String productId,
|
||||
required String productName,
|
||||
required String categoryName,
|
||||
required int quantity,
|
||||
required int reorderLevel,
|
||||
required num unitCost,
|
||||
required int totalValue,
|
||||
required int totalIn,
|
||||
required int totalOut,
|
||||
required bool isLowStock,
|
||||
required bool isZeroStock,
|
||||
required DateTime updatedAt,
|
||||
}) = _InventoryAnalyticProductItem;
|
||||
|
||||
factory InventoryAnalyticProductItem.empty() => InventoryAnalyticProductItem(
|
||||
id: '',
|
||||
productId: '',
|
||||
productName: '',
|
||||
categoryName: '',
|
||||
quantity: 0,
|
||||
reorderLevel: 0,
|
||||
unitCost: 0,
|
||||
totalValue: 0,
|
||||
totalIn: 0,
|
||||
totalOut: 0,
|
||||
isLowStock: false,
|
||||
isZeroStock: false,
|
||||
updatedAt: DateTime.now(),
|
||||
);
|
||||
}
|
||||
|
||||
@freezed
|
||||
class InventoryAnalyticIngredientItem with _$InventoryAnalyticIngredientItem {
|
||||
const factory InventoryAnalyticIngredientItem({
|
||||
required String id,
|
||||
required String ingredientId,
|
||||
required String ingredientName,
|
||||
required String unitName,
|
||||
required int quantity,
|
||||
required int reorderLevel,
|
||||
required num unitCost,
|
||||
required int totalValue,
|
||||
required int totalIn,
|
||||
required int totalOut,
|
||||
required bool isLowStock,
|
||||
required bool isZeroStock,
|
||||
required DateTime updatedAt,
|
||||
}) = _InventoryAnalyticIngredientItem;
|
||||
|
||||
factory InventoryAnalyticIngredientItem.empty() =>
|
||||
InventoryAnalyticIngredientItem(
|
||||
id: '',
|
||||
ingredientId: '',
|
||||
ingredientName: '',
|
||||
unitName: '',
|
||||
quantity: 0,
|
||||
reorderLevel: 0,
|
||||
unitCost: 0,
|
||||
totalValue: 0,
|
||||
totalIn: 0,
|
||||
totalOut: 0,
|
||||
isLowStock: false,
|
||||
isZeroStock: false,
|
||||
updatedAt: DateTime.now(),
|
||||
);
|
||||
}
|
||||
Reference in New Issue
Block a user