feat(inventories): add cardex retrieval for inventory and product

feat(pos): update sale invoice creation to include customer and item details
feat(pos): enhance POS account service to include today's sales information
feat(pos): refactor order DTO to create sale invoice with detailed item structure
feat(products): add minimum stock alert level to product creation and update DTOs
fix(triggers): implement stock validation and movement logging for sales invoice items
refactor(database): update sales invoices schema to include posAccountId and remove inventoryId
This commit is contained in:
2025-12-30 21:04:01 +03:30
parent 1bb206a608
commit eb6e0e7a0d
30 changed files with 1265 additions and 648 deletions
+45 -45
View File
@@ -281,8 +281,8 @@ export type CustomerWhereInput = {
updatedAt?: Prisma.DateTimeFilter<"Customer"> | Date | string
deletedAt?: Prisma.DateTimeNullableFilter<"Customer"> | Date | string | null
orders?: Prisma.OrderListRelationFilter
salesInvoices?: Prisma.SalesInvoiceListRelationFilter
stockMovements?: Prisma.StockMovementListRelationFilter
salesInvoices?: Prisma.SalesInvoiceListRelationFilter
}
export type CustomerOrderByWithRelationInput = {
@@ -300,8 +300,8 @@ export type CustomerOrderByWithRelationInput = {
updatedAt?: Prisma.SortOrder
deletedAt?: Prisma.SortOrderInput | Prisma.SortOrder
orders?: Prisma.OrderOrderByRelationAggregateInput
salesInvoices?: Prisma.SalesInvoiceOrderByRelationAggregateInput
stockMovements?: Prisma.StockMovementOrderByRelationAggregateInput
salesInvoices?: Prisma.SalesInvoiceOrderByRelationAggregateInput
_relevance?: Prisma.CustomerOrderByRelevanceInput
}
@@ -323,8 +323,8 @@ export type CustomerWhereUniqueInput = Prisma.AtLeast<{
updatedAt?: Prisma.DateTimeFilter<"Customer"> | Date | string
deletedAt?: Prisma.DateTimeNullableFilter<"Customer"> | Date | string | null
orders?: Prisma.OrderListRelationFilter
salesInvoices?: Prisma.SalesInvoiceListRelationFilter
stockMovements?: Prisma.StockMovementListRelationFilter
salesInvoices?: Prisma.SalesInvoiceListRelationFilter
}, "id" | "mobileNumber">
export type CustomerOrderByWithAggregationInput = {
@@ -381,8 +381,8 @@ export type CustomerCreateInput = {
updatedAt?: Date | string
deletedAt?: Date | string | null
orders?: Prisma.OrderCreateNestedManyWithoutCustomerInput
salesInvoices?: Prisma.SalesInvoiceCreateNestedManyWithoutCustomerInput
stockMovements?: Prisma.StockMovementCreateNestedManyWithoutCustomerInput
salesInvoices?: Prisma.SalesInvoiceCreateNestedManyWithoutCustomerInput
}
export type CustomerUncheckedCreateInput = {
@@ -400,8 +400,8 @@ export type CustomerUncheckedCreateInput = {
updatedAt?: Date | string
deletedAt?: Date | string | null
orders?: Prisma.OrderUncheckedCreateNestedManyWithoutCustomerInput
salesInvoices?: Prisma.SalesInvoiceUncheckedCreateNestedManyWithoutCustomerInput
stockMovements?: Prisma.StockMovementUncheckedCreateNestedManyWithoutCustomerInput
salesInvoices?: Prisma.SalesInvoiceUncheckedCreateNestedManyWithoutCustomerInput
}
export type CustomerUpdateInput = {
@@ -418,8 +418,8 @@ export type CustomerUpdateInput = {
updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
deletedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null
orders?: Prisma.OrderUpdateManyWithoutCustomerNestedInput
salesInvoices?: Prisma.SalesInvoiceUpdateManyWithoutCustomerNestedInput
stockMovements?: Prisma.StockMovementUpdateManyWithoutCustomerNestedInput
salesInvoices?: Prisma.SalesInvoiceUpdateManyWithoutCustomerNestedInput
}
export type CustomerUncheckedUpdateInput = {
@@ -437,8 +437,8 @@ export type CustomerUncheckedUpdateInput = {
updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
deletedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null
orders?: Prisma.OrderUncheckedUpdateManyWithoutCustomerNestedInput
salesInvoices?: Prisma.SalesInvoiceUncheckedUpdateManyWithoutCustomerNestedInput
stockMovements?: Prisma.StockMovementUncheckedUpdateManyWithoutCustomerNestedInput
salesInvoices?: Prisma.SalesInvoiceUncheckedUpdateManyWithoutCustomerNestedInput
}
export type CustomerCreateManyInput = {
@@ -619,8 +619,8 @@ export type CustomerCreateWithoutOrdersInput = {
createdAt?: Date | string
updatedAt?: Date | string
deletedAt?: Date | string | null
salesInvoices?: Prisma.SalesInvoiceCreateNestedManyWithoutCustomerInput
stockMovements?: Prisma.StockMovementCreateNestedManyWithoutCustomerInput
salesInvoices?: Prisma.SalesInvoiceCreateNestedManyWithoutCustomerInput
}
export type CustomerUncheckedCreateWithoutOrdersInput = {
@@ -637,8 +637,8 @@ export type CustomerUncheckedCreateWithoutOrdersInput = {
createdAt?: Date | string
updatedAt?: Date | string
deletedAt?: Date | string | null
salesInvoices?: Prisma.SalesInvoiceUncheckedCreateNestedManyWithoutCustomerInput
stockMovements?: Prisma.StockMovementUncheckedCreateNestedManyWithoutCustomerInput
salesInvoices?: Prisma.SalesInvoiceUncheckedCreateNestedManyWithoutCustomerInput
}
export type CustomerCreateOrConnectWithoutOrdersInput = {
@@ -670,8 +670,8 @@ export type CustomerUpdateWithoutOrdersInput = {
createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
deletedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null
salesInvoices?: Prisma.SalesInvoiceUpdateManyWithoutCustomerNestedInput
stockMovements?: Prisma.StockMovementUpdateManyWithoutCustomerNestedInput
salesInvoices?: Prisma.SalesInvoiceUpdateManyWithoutCustomerNestedInput
}
export type CustomerUncheckedUpdateWithoutOrdersInput = {
@@ -688,8 +688,8 @@ export type CustomerUncheckedUpdateWithoutOrdersInput = {
createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
deletedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null
salesInvoices?: Prisma.SalesInvoiceUncheckedUpdateManyWithoutCustomerNestedInput
stockMovements?: Prisma.StockMovementUncheckedUpdateManyWithoutCustomerNestedInput
salesInvoices?: Prisma.SalesInvoiceUncheckedUpdateManyWithoutCustomerNestedInput
}
export type CustomerCreateWithoutSalesInvoicesInput = {
@@ -871,14 +871,14 @@ export type CustomerUncheckedUpdateWithoutStockMovementsInput = {
export type CustomerCountOutputType = {
orders: number
salesInvoices: number
stockMovements: number
salesInvoices: number
}
export type CustomerCountOutputTypeSelect<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
orders?: boolean | CustomerCountOutputTypeCountOrdersArgs
salesInvoices?: boolean | CustomerCountOutputTypeCountSalesInvoicesArgs
stockMovements?: boolean | CustomerCountOutputTypeCountStockMovementsArgs
salesInvoices?: boolean | CustomerCountOutputTypeCountSalesInvoicesArgs
}
/**
@@ -901,15 +901,15 @@ export type CustomerCountOutputTypeCountOrdersArgs<ExtArgs extends runtime.Types
/**
* CustomerCountOutputType without action
*/
export type CustomerCountOutputTypeCountSalesInvoicesArgs<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
where?: Prisma.SalesInvoiceWhereInput
export type CustomerCountOutputTypeCountStockMovementsArgs<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
where?: Prisma.StockMovementWhereInput
}
/**
* CustomerCountOutputType without action
*/
export type CustomerCountOutputTypeCountStockMovementsArgs<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
where?: Prisma.StockMovementWhereInput
export type CustomerCountOutputTypeCountSalesInvoicesArgs<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
where?: Prisma.SalesInvoiceWhereInput
}
@@ -928,8 +928,8 @@ export type CustomerSelect<ExtArgs extends runtime.Types.Extensions.InternalArgs
updatedAt?: boolean
deletedAt?: boolean
orders?: boolean | Prisma.Customer$ordersArgs<ExtArgs>
salesInvoices?: boolean | Prisma.Customer$salesInvoicesArgs<ExtArgs>
stockMovements?: boolean | Prisma.Customer$stockMovementsArgs<ExtArgs>
salesInvoices?: boolean | Prisma.Customer$salesInvoicesArgs<ExtArgs>
_count?: boolean | Prisma.CustomerCountOutputTypeDefaultArgs<ExtArgs>
}, ExtArgs["result"]["customer"]>
@@ -954,8 +954,8 @@ export type CustomerSelectScalar = {
export type CustomerOmit<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = runtime.Types.Extensions.GetOmit<"id" | "firstName" | "lastName" | "email" | "mobileNumber" | "address" | "city" | "state" | "country" | "isActive" | "createdAt" | "updatedAt" | "deletedAt", ExtArgs["result"]["customer"]>
export type CustomerInclude<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
orders?: boolean | Prisma.Customer$ordersArgs<ExtArgs>
salesInvoices?: boolean | Prisma.Customer$salesInvoicesArgs<ExtArgs>
stockMovements?: boolean | Prisma.Customer$stockMovementsArgs<ExtArgs>
salesInvoices?: boolean | Prisma.Customer$salesInvoicesArgs<ExtArgs>
_count?: boolean | Prisma.CustomerCountOutputTypeDefaultArgs<ExtArgs>
}
@@ -963,8 +963,8 @@ export type $CustomerPayload<ExtArgs extends runtime.Types.Extensions.InternalAr
name: "Customer"
objects: {
orders: Prisma.$OrderPayload<ExtArgs>[]
salesInvoices: Prisma.$SalesInvoicePayload<ExtArgs>[]
stockMovements: Prisma.$StockMovementPayload<ExtArgs>[]
salesInvoices: Prisma.$SalesInvoicePayload<ExtArgs>[]
}
scalars: runtime.Types.Extensions.GetPayloadResult<{
id: number
@@ -1321,8 +1321,8 @@ readonly fields: CustomerFieldRefs;
export interface Prisma__CustomerClient<T, Null = never, ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs, GlobalOmitOptions = {}> extends Prisma.PrismaPromise<T> {
readonly [Symbol.toStringTag]: "PrismaPromise"
orders<T extends Prisma.Customer$ordersArgs<ExtArgs> = {}>(args?: Prisma.Subset<T, Prisma.Customer$ordersArgs<ExtArgs>>): Prisma.PrismaPromise<runtime.Types.Result.GetResult<Prisma.$OrderPayload<ExtArgs>, T, "findMany", GlobalOmitOptions> | Null>
salesInvoices<T extends Prisma.Customer$salesInvoicesArgs<ExtArgs> = {}>(args?: Prisma.Subset<T, Prisma.Customer$salesInvoicesArgs<ExtArgs>>): Prisma.PrismaPromise<runtime.Types.Result.GetResult<Prisma.$SalesInvoicePayload<ExtArgs>, T, "findMany", GlobalOmitOptions> | Null>
stockMovements<T extends Prisma.Customer$stockMovementsArgs<ExtArgs> = {}>(args?: Prisma.Subset<T, Prisma.Customer$stockMovementsArgs<ExtArgs>>): Prisma.PrismaPromise<runtime.Types.Result.GetResult<Prisma.$StockMovementPayload<ExtArgs>, T, "findMany", GlobalOmitOptions> | Null>
salesInvoices<T extends Prisma.Customer$salesInvoicesArgs<ExtArgs> = {}>(args?: Prisma.Subset<T, Prisma.Customer$salesInvoicesArgs<ExtArgs>>): Prisma.PrismaPromise<runtime.Types.Result.GetResult<Prisma.$SalesInvoicePayload<ExtArgs>, T, "findMany", GlobalOmitOptions> | Null>
/**
* Attaches callbacks for the resolution and/or rejection of the Promise.
* @param onfulfilled The callback to execute when the Promise is resolved.
@@ -1731,30 +1731,6 @@ export type Customer$ordersArgs<ExtArgs extends runtime.Types.Extensions.Interna
distinct?: Prisma.OrderScalarFieldEnum | Prisma.OrderScalarFieldEnum[]
}
/**
* Customer.salesInvoices
*/
export type Customer$salesInvoicesArgs<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
/**
* Select specific fields to fetch from the SalesInvoice
*/
select?: Prisma.SalesInvoiceSelect<ExtArgs> | null
/**
* Omit specific fields from the SalesInvoice
*/
omit?: Prisma.SalesInvoiceOmit<ExtArgs> | null
/**
* Choose, which related nodes to fetch as well
*/
include?: Prisma.SalesInvoiceInclude<ExtArgs> | null
where?: Prisma.SalesInvoiceWhereInput
orderBy?: Prisma.SalesInvoiceOrderByWithRelationInput | Prisma.SalesInvoiceOrderByWithRelationInput[]
cursor?: Prisma.SalesInvoiceWhereUniqueInput
take?: number
skip?: number
distinct?: Prisma.SalesInvoiceScalarFieldEnum | Prisma.SalesInvoiceScalarFieldEnum[]
}
/**
* Customer.stockMovements
*/
@@ -1779,6 +1755,30 @@ export type Customer$stockMovementsArgs<ExtArgs extends runtime.Types.Extensions
distinct?: Prisma.StockMovementScalarFieldEnum | Prisma.StockMovementScalarFieldEnum[]
}
/**
* Customer.salesInvoices
*/
export type Customer$salesInvoicesArgs<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
/**
* Select specific fields to fetch from the SalesInvoice
*/
select?: Prisma.SalesInvoiceSelect<ExtArgs> | null
/**
* Omit specific fields from the SalesInvoice
*/
omit?: Prisma.SalesInvoiceOmit<ExtArgs> | null
/**
* Choose, which related nodes to fetch as well
*/
include?: Prisma.SalesInvoiceInclude<ExtArgs> | null
where?: Prisma.SalesInvoiceWhereInput
orderBy?: Prisma.SalesInvoiceOrderByWithRelationInput | Prisma.SalesInvoiceOrderByWithRelationInput[]
cursor?: Prisma.SalesInvoiceWhereUniqueInput
take?: number
skip?: number
distinct?: Prisma.SalesInvoiceScalarFieldEnum | Prisma.SalesInvoiceScalarFieldEnum[]
}
/**
* Customer without action
*/