feat(statistics): implement top alert stocks, top last sales, top supplier debts, and top selling products endpoints with SQL queries

This commit is contained in:
2026-01-04 13:45:26 +03:30
parent eb6e0e7a0d
commit a2db2daa70
72 changed files with 11934 additions and 2559 deletions
@@ -57,16 +57,17 @@ export const ModelName = {
RefreshToken: 'RefreshToken',
BankBranch: 'BankBranch',
BankAccount: 'BankAccount',
BankAccountTransaction: 'BankAccountTransaction',
BankAccountBalance: 'BankAccountBalance',
Inventory: 'Inventory',
InventoryBankAccount: 'InventoryBankAccount',
PosAccount: 'PosAccount',
InventoryTransfer: 'InventoryTransfer',
InventoryTransferItem: 'InventoryTransferItem',
Bank: 'Bank',
Customer: 'Customer',
Order: 'Order',
SalesInvoice: 'SalesInvoice',
SalesInvoiceItem: 'SalesInvoiceItem',
OrderItem: 'OrderItem',
Customer: 'Customer',
TriggerLog: 'TriggerLog',
ProductVariant: 'ProductVariant',
Product: 'Product',
@@ -75,9 +76,13 @@ export const ModelName = {
PurchaseReceipt: 'PurchaseReceipt',
PurchaseReceiptItem: 'PurchaseReceiptItem',
PurchaseReceiptPayments: 'PurchaseReceiptPayments',
SalesInvoice: 'SalesInvoice',
SalesInvoiceItem: 'SalesInvoiceItem',
SalesInvoicePayment: 'SalesInvoicePayment',
StockMovement: 'StockMovement',
StockBalance: 'StockBalance',
StockAdjustment: 'StockAdjustment',
StockReservation: 'StockReservation',
Supplier: 'Supplier',
SupplierLedger: 'SupplierLedger'
} as const
@@ -179,6 +184,30 @@ export const BankAccountScalarFieldEnum = {
export type BankAccountScalarFieldEnum = (typeof BankAccountScalarFieldEnum)[keyof typeof BankAccountScalarFieldEnum]
export const BankAccountTransactionScalarFieldEnum = {
id: 'id',
bankAccountId: 'bankAccountId',
type: 'type',
amount: 'amount',
balanceAfter: 'balanceAfter',
referenceId: 'referenceId',
referenceType: 'referenceType',
description: 'description',
createdAt: 'createdAt'
} as const
export type BankAccountTransactionScalarFieldEnum = (typeof BankAccountTransactionScalarFieldEnum)[keyof typeof BankAccountTransactionScalarFieldEnum]
export const BankAccountBalanceScalarFieldEnum = {
bankAccountId: 'bankAccountId',
balance: 'balance',
updatedAt: 'updatedAt'
} as const
export type BankAccountBalanceScalarFieldEnum = (typeof BankAccountBalanceScalarFieldEnum)[keyof typeof BankAccountBalanceScalarFieldEnum]
export const InventoryScalarFieldEnum = {
id: 'id',
name: 'name',
@@ -250,6 +279,34 @@ export const BankScalarFieldEnum = {
export type BankScalarFieldEnum = (typeof BankScalarFieldEnum)[keyof typeof BankScalarFieldEnum]
export const OrderScalarFieldEnum = {
id: 'id',
orderNumber: 'orderNumber',
status: 'status',
totalAmount: 'totalAmount',
description: 'description',
createdAt: 'createdAt',
updatedAt: 'updatedAt',
deletedAt: 'deletedAt',
customerId: 'customerId'
} as const
export type OrderScalarFieldEnum = (typeof OrderScalarFieldEnum)[keyof typeof OrderScalarFieldEnum]
export const OrderItemScalarFieldEnum = {
id: 'id',
quantity: 'quantity',
unitPrice: 'unitPrice',
totalAmount: 'totalAmount',
createdAt: 'createdAt',
orderId: 'orderId',
productId: 'productId'
} as const
export type OrderItemScalarFieldEnum = (typeof OrderItemScalarFieldEnum)[keyof typeof OrderItemScalarFieldEnum]
export const CustomerScalarFieldEnum = {
id: 'id',
firstName: 'firstName',
@@ -269,49 +326,6 @@ export const CustomerScalarFieldEnum = {
export type CustomerScalarFieldEnum = (typeof CustomerScalarFieldEnum)[keyof typeof CustomerScalarFieldEnum]
export const OrderScalarFieldEnum = {
id: 'id',
orderNumber: 'orderNumber',
status: 'status',
paymentMethod: 'paymentMethod',
totalAmount: 'totalAmount',
description: 'description',
createdAt: 'createdAt',
updatedAt: 'updatedAt',
deletedAt: 'deletedAt',
customerId: 'customerId'
} as const
export type OrderScalarFieldEnum = (typeof OrderScalarFieldEnum)[keyof typeof OrderScalarFieldEnum]
export const SalesInvoiceScalarFieldEnum = {
id: 'id',
code: 'code',
totalAmount: 'totalAmount',
description: 'description',
createdAt: 'createdAt',
updatedAt: 'updatedAt',
customerId: 'customerId',
posAccountId: 'posAccountId'
} as const
export type SalesInvoiceScalarFieldEnum = (typeof SalesInvoiceScalarFieldEnum)[keyof typeof SalesInvoiceScalarFieldEnum]
export const SalesInvoiceItemScalarFieldEnum = {
id: 'id',
count: 'count',
fee: 'fee',
total: 'total',
createdAt: 'createdAt',
invoiceId: 'invoiceId',
productId: 'productId'
} as const
export type SalesInvoiceItemScalarFieldEnum = (typeof SalesInvoiceItemScalarFieldEnum)[keyof typeof SalesInvoiceItemScalarFieldEnum]
export const TriggerLogScalarFieldEnum = {
id: 'id',
message: 'message',
@@ -407,8 +421,8 @@ export type PurchaseReceiptScalarFieldEnum = (typeof PurchaseReceiptScalarFieldE
export const PurchaseReceiptItemScalarFieldEnum = {
id: 'id',
count: 'count',
fee: 'fee',
total: 'total',
unitPrice: 'unitPrice',
totalAmount: 'totalAmount',
receiptId: 'receiptId',
productId: 'productId',
description: 'description',
@@ -435,11 +449,50 @@ export const PurchaseReceiptPaymentsScalarFieldEnum = {
export type PurchaseReceiptPaymentsScalarFieldEnum = (typeof PurchaseReceiptPaymentsScalarFieldEnum)[keyof typeof PurchaseReceiptPaymentsScalarFieldEnum]
export const SalesInvoiceScalarFieldEnum = {
id: 'id',
code: 'code',
totalAmount: 'totalAmount',
description: 'description',
createdAt: 'createdAt',
updatedAt: 'updatedAt',
customerId: 'customerId',
posAccountId: 'posAccountId'
} as const
export type SalesInvoiceScalarFieldEnum = (typeof SalesInvoiceScalarFieldEnum)[keyof typeof SalesInvoiceScalarFieldEnum]
export const SalesInvoiceItemScalarFieldEnum = {
id: 'id',
count: 'count',
unitPrice: 'unitPrice',
totalAmount: 'totalAmount',
createdAt: 'createdAt',
invoiceId: 'invoiceId',
productId: 'productId'
} as const
export type SalesInvoiceItemScalarFieldEnum = (typeof SalesInvoiceItemScalarFieldEnum)[keyof typeof SalesInvoiceItemScalarFieldEnum]
export const SalesInvoicePaymentScalarFieldEnum = {
id: 'id',
invoiceId: 'invoiceId',
amount: 'amount',
paymentMethod: 'paymentMethod',
paidAt: 'paidAt',
createdAt: 'createdAt'
} as const
export type SalesInvoicePaymentScalarFieldEnum = (typeof SalesInvoicePaymentScalarFieldEnum)[keyof typeof SalesInvoicePaymentScalarFieldEnum]
export const StockMovementScalarFieldEnum = {
id: 'id',
type: 'type',
quantity: 'quantity',
fee: 'fee',
unitPrice: 'unitPrice',
totalCost: 'totalCost',
referenceType: 'referenceType',
referenceId: 'referenceId',
@@ -481,6 +534,19 @@ export const StockAdjustmentScalarFieldEnum = {
export type StockAdjustmentScalarFieldEnum = (typeof StockAdjustmentScalarFieldEnum)[keyof typeof StockAdjustmentScalarFieldEnum]
export const StockReservationScalarFieldEnum = {
id: 'id',
quantity: 'quantity',
expiresAt: 'expiresAt',
createdAt: 'createdAt',
productId: 'productId',
inventoryId: 'inventoryId',
orderId: 'orderId'
} as const
export type StockReservationScalarFieldEnum = (typeof StockReservationScalarFieldEnum)[keyof typeof StockReservationScalarFieldEnum]
export const SupplierScalarFieldEnum = {
id: 'id',
firstName: 'firstName',
@@ -608,6 +674,13 @@ export const BankAccountOrderByRelevanceFieldEnum = {
export type BankAccountOrderByRelevanceFieldEnum = (typeof BankAccountOrderByRelevanceFieldEnum)[keyof typeof BankAccountOrderByRelevanceFieldEnum]
export const BankAccountTransactionOrderByRelevanceFieldEnum = {
description: 'description'
} as const
export type BankAccountTransactionOrderByRelevanceFieldEnum = (typeof BankAccountTransactionOrderByRelevanceFieldEnum)[keyof typeof BankAccountTransactionOrderByRelevanceFieldEnum]
export const InventoryOrderByRelevanceFieldEnum = {
name: 'name',
location: 'location'
@@ -641,6 +714,14 @@ export const BankOrderByRelevanceFieldEnum = {
export type BankOrderByRelevanceFieldEnum = (typeof BankOrderByRelevanceFieldEnum)[keyof typeof BankOrderByRelevanceFieldEnum]
export const OrderOrderByRelevanceFieldEnum = {
orderNumber: 'orderNumber',
description: 'description'
} as const
export type OrderOrderByRelevanceFieldEnum = (typeof OrderOrderByRelevanceFieldEnum)[keyof typeof OrderOrderByRelevanceFieldEnum]
export const CustomerOrderByRelevanceFieldEnum = {
firstName: 'firstName',
lastName: 'lastName',
@@ -655,22 +736,6 @@ export const CustomerOrderByRelevanceFieldEnum = {
export type CustomerOrderByRelevanceFieldEnum = (typeof CustomerOrderByRelevanceFieldEnum)[keyof typeof CustomerOrderByRelevanceFieldEnum]
export const OrderOrderByRelevanceFieldEnum = {
orderNumber: 'orderNumber',
description: 'description'
} as const
export type OrderOrderByRelevanceFieldEnum = (typeof OrderOrderByRelevanceFieldEnum)[keyof typeof OrderOrderByRelevanceFieldEnum]
export const SalesInvoiceOrderByRelevanceFieldEnum = {
code: 'code',
description: 'description'
} as const
export type SalesInvoiceOrderByRelevanceFieldEnum = (typeof SalesInvoiceOrderByRelevanceFieldEnum)[keyof typeof SalesInvoiceOrderByRelevanceFieldEnum]
export const TriggerLogOrderByRelevanceFieldEnum = {
message: 'message',
name: 'name'
@@ -740,6 +805,14 @@ export const PurchaseReceiptPaymentsOrderByRelevanceFieldEnum = {
export type PurchaseReceiptPaymentsOrderByRelevanceFieldEnum = (typeof PurchaseReceiptPaymentsOrderByRelevanceFieldEnum)[keyof typeof PurchaseReceiptPaymentsOrderByRelevanceFieldEnum]
export const SalesInvoiceOrderByRelevanceFieldEnum = {
code: 'code',
description: 'description'
} as const
export type SalesInvoiceOrderByRelevanceFieldEnum = (typeof SalesInvoiceOrderByRelevanceFieldEnum)[keyof typeof SalesInvoiceOrderByRelevanceFieldEnum]
export const StockMovementOrderByRelevanceFieldEnum = {
referenceId: 'referenceId'
} as const