feat(cardex): enhance stock movement retrieval with additional fields and optimized mapping

refactor(migration): update Stock_Movements table to include counterInventoryId and customerId, add foreign key constraints, and implement triggers for inventory management
This commit is contained in:
2025-12-23 20:35:44 +03:30
parent c6a86719dd
commit 89c57a69c1
10 changed files with 1366 additions and 143 deletions
+154
View File
@@ -282,6 +282,7 @@ export type CustomerWhereInput = {
deletedAt?: Prisma.DateTimeNullableFilter<"Customer"> | Date | string | null
orders?: Prisma.OrderListRelationFilter
salesInvoices?: Prisma.SalesInvoiceListRelationFilter
stockMovements?: Prisma.StockMovementListRelationFilter
}
export type CustomerOrderByWithRelationInput = {
@@ -300,6 +301,7 @@ export type CustomerOrderByWithRelationInput = {
deletedAt?: Prisma.SortOrderInput | Prisma.SortOrder
orders?: Prisma.OrderOrderByRelationAggregateInput
salesInvoices?: Prisma.SalesInvoiceOrderByRelationAggregateInput
stockMovements?: Prisma.StockMovementOrderByRelationAggregateInput
_relevance?: Prisma.CustomerOrderByRelevanceInput
}
@@ -322,6 +324,7 @@ export type CustomerWhereUniqueInput = Prisma.AtLeast<{
deletedAt?: Prisma.DateTimeNullableFilter<"Customer"> | Date | string | null
orders?: Prisma.OrderListRelationFilter
salesInvoices?: Prisma.SalesInvoiceListRelationFilter
stockMovements?: Prisma.StockMovementListRelationFilter
}, "id" | "mobileNumber">
export type CustomerOrderByWithAggregationInput = {
@@ -379,6 +382,7 @@ export type CustomerCreateInput = {
deletedAt?: Date | string | null
orders?: Prisma.OrderCreateNestedManyWithoutCustomerInput
salesInvoices?: Prisma.SalesInvoiceCreateNestedManyWithoutCustomerInput
stockMovements?: Prisma.StockMovementCreateNestedManyWithoutCustomerInput
}
export type CustomerUncheckedCreateInput = {
@@ -397,6 +401,7 @@ export type CustomerUncheckedCreateInput = {
deletedAt?: Date | string | null
orders?: Prisma.OrderUncheckedCreateNestedManyWithoutCustomerInput
salesInvoices?: Prisma.SalesInvoiceUncheckedCreateNestedManyWithoutCustomerInput
stockMovements?: Prisma.StockMovementUncheckedCreateNestedManyWithoutCustomerInput
}
export type CustomerUpdateInput = {
@@ -414,6 +419,7 @@ export type CustomerUpdateInput = {
deletedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null
orders?: Prisma.OrderUpdateManyWithoutCustomerNestedInput
salesInvoices?: Prisma.SalesInvoiceUpdateManyWithoutCustomerNestedInput
stockMovements?: Prisma.StockMovementUpdateManyWithoutCustomerNestedInput
}
export type CustomerUncheckedUpdateInput = {
@@ -432,6 +438,7 @@ export type CustomerUncheckedUpdateInput = {
deletedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null
orders?: Prisma.OrderUncheckedUpdateManyWithoutCustomerNestedInput
salesInvoices?: Prisma.SalesInvoiceUncheckedUpdateManyWithoutCustomerNestedInput
stockMovements?: Prisma.StockMovementUncheckedUpdateManyWithoutCustomerNestedInput
}
export type CustomerCreateManyInput = {
@@ -583,6 +590,22 @@ export type CustomerUpdateOneWithoutSalesInvoicesNestedInput = {
update?: Prisma.XOR<Prisma.XOR<Prisma.CustomerUpdateToOneWithWhereWithoutSalesInvoicesInput, Prisma.CustomerUpdateWithoutSalesInvoicesInput>, Prisma.CustomerUncheckedUpdateWithoutSalesInvoicesInput>
}
export type CustomerCreateNestedOneWithoutStockMovementsInput = {
create?: Prisma.XOR<Prisma.CustomerCreateWithoutStockMovementsInput, Prisma.CustomerUncheckedCreateWithoutStockMovementsInput>
connectOrCreate?: Prisma.CustomerCreateOrConnectWithoutStockMovementsInput
connect?: Prisma.CustomerWhereUniqueInput
}
export type CustomerUpdateOneWithoutStockMovementsNestedInput = {
create?: Prisma.XOR<Prisma.CustomerCreateWithoutStockMovementsInput, Prisma.CustomerUncheckedCreateWithoutStockMovementsInput>
connectOrCreate?: Prisma.CustomerCreateOrConnectWithoutStockMovementsInput
upsert?: Prisma.CustomerUpsertWithoutStockMovementsInput
disconnect?: Prisma.CustomerWhereInput | boolean
delete?: Prisma.CustomerWhereInput | boolean
connect?: Prisma.CustomerWhereUniqueInput
update?: Prisma.XOR<Prisma.XOR<Prisma.CustomerUpdateToOneWithWhereWithoutStockMovementsInput, Prisma.CustomerUpdateWithoutStockMovementsInput>, Prisma.CustomerUncheckedUpdateWithoutStockMovementsInput>
}
export type CustomerCreateWithoutOrdersInput = {
firstName: string
lastName: string
@@ -597,6 +620,7 @@ export type CustomerCreateWithoutOrdersInput = {
updatedAt?: Date | string
deletedAt?: Date | string | null
salesInvoices?: Prisma.SalesInvoiceCreateNestedManyWithoutCustomerInput
stockMovements?: Prisma.StockMovementCreateNestedManyWithoutCustomerInput
}
export type CustomerUncheckedCreateWithoutOrdersInput = {
@@ -614,6 +638,7 @@ export type CustomerUncheckedCreateWithoutOrdersInput = {
updatedAt?: Date | string
deletedAt?: Date | string | null
salesInvoices?: Prisma.SalesInvoiceUncheckedCreateNestedManyWithoutCustomerInput
stockMovements?: Prisma.StockMovementUncheckedCreateNestedManyWithoutCustomerInput
}
export type CustomerCreateOrConnectWithoutOrdersInput = {
@@ -646,6 +671,7 @@ export type CustomerUpdateWithoutOrdersInput = {
updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
deletedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null
salesInvoices?: Prisma.SalesInvoiceUpdateManyWithoutCustomerNestedInput
stockMovements?: Prisma.StockMovementUpdateManyWithoutCustomerNestedInput
}
export type CustomerUncheckedUpdateWithoutOrdersInput = {
@@ -663,6 +689,7 @@ export type CustomerUncheckedUpdateWithoutOrdersInput = {
updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
deletedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null
salesInvoices?: Prisma.SalesInvoiceUncheckedUpdateManyWithoutCustomerNestedInput
stockMovements?: Prisma.StockMovementUncheckedUpdateManyWithoutCustomerNestedInput
}
export type CustomerCreateWithoutSalesInvoicesInput = {
@@ -679,6 +706,7 @@ export type CustomerCreateWithoutSalesInvoicesInput = {
updatedAt?: Date | string
deletedAt?: Date | string | null
orders?: Prisma.OrderCreateNestedManyWithoutCustomerInput
stockMovements?: Prisma.StockMovementCreateNestedManyWithoutCustomerInput
}
export type CustomerUncheckedCreateWithoutSalesInvoicesInput = {
@@ -696,6 +724,7 @@ export type CustomerUncheckedCreateWithoutSalesInvoicesInput = {
updatedAt?: Date | string
deletedAt?: Date | string | null
orders?: Prisma.OrderUncheckedCreateNestedManyWithoutCustomerInput
stockMovements?: Prisma.StockMovementUncheckedCreateNestedManyWithoutCustomerInput
}
export type CustomerCreateOrConnectWithoutSalesInvoicesInput = {
@@ -728,6 +757,7 @@ export type CustomerUpdateWithoutSalesInvoicesInput = {
updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
deletedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null
orders?: Prisma.OrderUpdateManyWithoutCustomerNestedInput
stockMovements?: Prisma.StockMovementUpdateManyWithoutCustomerNestedInput
}
export type CustomerUncheckedUpdateWithoutSalesInvoicesInput = {
@@ -745,6 +775,93 @@ export type CustomerUncheckedUpdateWithoutSalesInvoicesInput = {
updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
deletedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null
orders?: Prisma.OrderUncheckedUpdateManyWithoutCustomerNestedInput
stockMovements?: Prisma.StockMovementUncheckedUpdateManyWithoutCustomerNestedInput
}
export type CustomerCreateWithoutStockMovementsInput = {
firstName: string
lastName: string
email?: string | null
mobileNumber: string
address?: string | null
city?: string | null
state?: string | null
country?: string | null
isActive?: boolean
createdAt?: Date | string
updatedAt?: Date | string
deletedAt?: Date | string | null
orders?: Prisma.OrderCreateNestedManyWithoutCustomerInput
salesInvoices?: Prisma.SalesInvoiceCreateNestedManyWithoutCustomerInput
}
export type CustomerUncheckedCreateWithoutStockMovementsInput = {
id?: number
firstName: string
lastName: string
email?: string | null
mobileNumber: string
address?: string | null
city?: string | null
state?: string | null
country?: string | null
isActive?: boolean
createdAt?: Date | string
updatedAt?: Date | string
deletedAt?: Date | string | null
orders?: Prisma.OrderUncheckedCreateNestedManyWithoutCustomerInput
salesInvoices?: Prisma.SalesInvoiceUncheckedCreateNestedManyWithoutCustomerInput
}
export type CustomerCreateOrConnectWithoutStockMovementsInput = {
where: Prisma.CustomerWhereUniqueInput
create: Prisma.XOR<Prisma.CustomerCreateWithoutStockMovementsInput, Prisma.CustomerUncheckedCreateWithoutStockMovementsInput>
}
export type CustomerUpsertWithoutStockMovementsInput = {
update: Prisma.XOR<Prisma.CustomerUpdateWithoutStockMovementsInput, Prisma.CustomerUncheckedUpdateWithoutStockMovementsInput>
create: Prisma.XOR<Prisma.CustomerCreateWithoutStockMovementsInput, Prisma.CustomerUncheckedCreateWithoutStockMovementsInput>
where?: Prisma.CustomerWhereInput
}
export type CustomerUpdateToOneWithWhereWithoutStockMovementsInput = {
where?: Prisma.CustomerWhereInput
data: Prisma.XOR<Prisma.CustomerUpdateWithoutStockMovementsInput, Prisma.CustomerUncheckedUpdateWithoutStockMovementsInput>
}
export type CustomerUpdateWithoutStockMovementsInput = {
firstName?: Prisma.StringFieldUpdateOperationsInput | string
lastName?: Prisma.StringFieldUpdateOperationsInput | string
email?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
mobileNumber?: Prisma.StringFieldUpdateOperationsInput | string
address?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
city?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
state?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
country?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
isActive?: Prisma.BoolFieldUpdateOperationsInput | boolean
createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
deletedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null
orders?: Prisma.OrderUpdateManyWithoutCustomerNestedInput
salesInvoices?: Prisma.SalesInvoiceUpdateManyWithoutCustomerNestedInput
}
export type CustomerUncheckedUpdateWithoutStockMovementsInput = {
id?: Prisma.IntFieldUpdateOperationsInput | number
firstName?: Prisma.StringFieldUpdateOperationsInput | string
lastName?: Prisma.StringFieldUpdateOperationsInput | string
email?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
mobileNumber?: Prisma.StringFieldUpdateOperationsInput | string
address?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
city?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
state?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
country?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
isActive?: Prisma.BoolFieldUpdateOperationsInput | boolean
createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
deletedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null
orders?: Prisma.OrderUncheckedUpdateManyWithoutCustomerNestedInput
salesInvoices?: Prisma.SalesInvoiceUncheckedUpdateManyWithoutCustomerNestedInput
}
@@ -755,11 +872,13 @@ export type CustomerUncheckedUpdateWithoutSalesInvoicesInput = {
export type CustomerCountOutputType = {
orders: number
salesInvoices: number
stockMovements: number
}
export type CustomerCountOutputTypeSelect<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
orders?: boolean | CustomerCountOutputTypeCountOrdersArgs
salesInvoices?: boolean | CustomerCountOutputTypeCountSalesInvoicesArgs
stockMovements?: boolean | CustomerCountOutputTypeCountStockMovementsArgs
}
/**
@@ -786,6 +905,13 @@ export type CustomerCountOutputTypeCountSalesInvoicesArgs<ExtArgs extends runtim
where?: Prisma.SalesInvoiceWhereInput
}
/**
* CustomerCountOutputType without action
*/
export type CustomerCountOutputTypeCountStockMovementsArgs<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
where?: Prisma.StockMovementWhereInput
}
export type CustomerSelect<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = runtime.Types.Extensions.GetSelect<{
id?: boolean
@@ -803,6 +929,7 @@ export type CustomerSelect<ExtArgs extends runtime.Types.Extensions.InternalArgs
deletedAt?: boolean
orders?: boolean | Prisma.Customer$ordersArgs<ExtArgs>
salesInvoices?: boolean | Prisma.Customer$salesInvoicesArgs<ExtArgs>
stockMovements?: boolean | Prisma.Customer$stockMovementsArgs<ExtArgs>
_count?: boolean | Prisma.CustomerCountOutputTypeDefaultArgs<ExtArgs>
}, ExtArgs["result"]["customer"]>
@@ -828,6 +955,7 @@ export type CustomerOmit<ExtArgs extends runtime.Types.Extensions.InternalArgs =
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>
_count?: boolean | Prisma.CustomerCountOutputTypeDefaultArgs<ExtArgs>
}
@@ -836,6 +964,7 @@ export type $CustomerPayload<ExtArgs extends runtime.Types.Extensions.InternalAr
objects: {
orders: Prisma.$OrderPayload<ExtArgs>[]
salesInvoices: Prisma.$SalesInvoicePayload<ExtArgs>[]
stockMovements: Prisma.$StockMovementPayload<ExtArgs>[]
}
scalars: runtime.Types.Extensions.GetPayloadResult<{
id: number
@@ -1193,6 +1322,7 @@ export interface Prisma__CustomerClient<T, Null = never, ExtArgs extends runtime
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>
/**
* Attaches callbacks for the resolution and/or rejection of the Promise.
* @param onfulfilled The callback to execute when the Promise is resolved.
@@ -1625,6 +1755,30 @@ export type Customer$salesInvoicesArgs<ExtArgs extends runtime.Types.Extensions.
distinct?: Prisma.SalesInvoiceScalarFieldEnum | Prisma.SalesInvoiceScalarFieldEnum[]
}
/**
* Customer.stockMovements
*/
export type Customer$stockMovementsArgs<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
/**
* Select specific fields to fetch from the StockMovement
*/
select?: Prisma.StockMovementSelect<ExtArgs> | null
/**
* Omit specific fields from the StockMovement
*/
omit?: Prisma.StockMovementOmit<ExtArgs> | null
/**
* Choose, which related nodes to fetch as well
*/
include?: Prisma.StockMovementInclude<ExtArgs> | null
where?: Prisma.StockMovementWhereInput
orderBy?: Prisma.StockMovementOrderByWithRelationInput | Prisma.StockMovementOrderByWithRelationInput[]
cursor?: Prisma.StockMovementWhereUniqueInput
take?: number
skip?: number
distinct?: Prisma.StockMovementScalarFieldEnum | Prisma.StockMovementScalarFieldEnum[]
}
/**
* Customer without action
*/