Compare commits

...
Author SHA1 Message Date
CopilotGitHubcopilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>RMCampos
ab464cee56 Add fridge count to customer POS records (#37)
* Initial plan

* Add fridge count to customer POS

Agent-Logs-Url: https://github.com/RMCampos/polpa-gestao/sessions/eeb51ab2-fe81-4dfc-8dfd-7ecf96a5e3bd

Co-authored-by: RMCampos <2219519+RMCampos@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: RMCampos <2219519+RMCampos@users.noreply.github.com>
2026-05-11 14:41:17 -03:00
9 changed files with 160 additions and 26 deletions
@@ -0,0 +1,2 @@
-- AlterTable
ALTER TABLE "CustomerPos" ADD COLUMN "fridgeCount" INTEGER NOT NULL DEFAULT 0;
+1
View File
@@ -38,6 +38,7 @@ model CustomerPos {
address String
phone String
personName String? @db.VarChar(30)
fridgeCount Int @default(0)
sales Sale[]
routes RouteCustomerPos[]
createdAt DateTime @default(now())
File diff suppressed because one or more lines are too long
@@ -1076,6 +1076,7 @@ export const CustomerPosScalarFieldEnum = {
address: 'address',
phone: 'phone',
personName: 'personName',
fridgeCount: 'fridgeCount',
createdAt: 'createdAt',
updatedAt: 'updatedAt',
disabledAt: 'disabledAt'
@@ -1202,20 +1203,6 @@ export type ListDateTimeFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaM
/**
* Reference to a field of type 'Float'
*/
export type FloatFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'Float'>
/**
* Reference to a field of type 'Float[]'
*/
export type ListFloatFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'Float[]'>
/**
* Reference to a field of type 'Int'
*/
@@ -1230,6 +1217,20 @@ export type ListIntFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel,
/**
* Reference to a field of type 'Float'
*/
export type FloatFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'Float'>
/**
* Reference to a field of type 'Float[]'
*/
export type ListFloatFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'Float[]'>
/**
* Reference to a field of type 'Boolean'
*/
@@ -111,6 +111,7 @@ export const CustomerPosScalarFieldEnum = {
address: 'address',
phone: 'phone',
personName: 'personName',
fridgeCount: 'fridgeCount',
createdAt: 'createdAt',
updatedAt: 'updatedAt',
disabledAt: 'disabledAt'
@@ -20,16 +20,27 @@ export type CustomerPosModel = runtime.Types.Result.DefaultSelection<Prisma.$Cus
export type AggregateCustomerPos = {
_count: CustomerPosCountAggregateOutputType | null
_avg: CustomerPosAvgAggregateOutputType | null
_sum: CustomerPosSumAggregateOutputType | null
_min: CustomerPosMinAggregateOutputType | null
_max: CustomerPosMaxAggregateOutputType | null
}
export type CustomerPosAvgAggregateOutputType = {
fridgeCount: number | null
}
export type CustomerPosSumAggregateOutputType = {
fridgeCount: number | null
}
export type CustomerPosMinAggregateOutputType = {
id: string | null
customerId: string | null
address: string | null
phone: string | null
personName: string | null
fridgeCount: number | null
createdAt: Date | null
updatedAt: Date | null
disabledAt: Date | null
@@ -41,6 +52,7 @@ export type CustomerPosMaxAggregateOutputType = {
address: string | null
phone: string | null
personName: string | null
fridgeCount: number | null
createdAt: Date | null
updatedAt: Date | null
disabledAt: Date | null
@@ -52,6 +64,7 @@ export type CustomerPosCountAggregateOutputType = {
address: number
phone: number
personName: number
fridgeCount: number
createdAt: number
updatedAt: number
disabledAt: number
@@ -59,12 +72,21 @@ export type CustomerPosCountAggregateOutputType = {
}
export type CustomerPosAvgAggregateInputType = {
fridgeCount?: true
}
export type CustomerPosSumAggregateInputType = {
fridgeCount?: true
}
export type CustomerPosMinAggregateInputType = {
id?: true
customerId?: true
address?: true
phone?: true
personName?: true
fridgeCount?: true
createdAt?: true
updatedAt?: true
disabledAt?: true
@@ -76,6 +98,7 @@ export type CustomerPosMaxAggregateInputType = {
address?: true
phone?: true
personName?: true
fridgeCount?: true
createdAt?: true
updatedAt?: true
disabledAt?: true
@@ -87,6 +110,7 @@ export type CustomerPosCountAggregateInputType = {
address?: true
phone?: true
personName?: true
fridgeCount?: true
createdAt?: true
updatedAt?: true
disabledAt?: true
@@ -128,6 +152,18 @@ export type CustomerPosAggregateArgs<ExtArgs extends runtime.Types.Extensions.In
* Count returned CustomerPos
**/
_count?: true | CustomerPosCountAggregateInputType
/**
* {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
*
* Select which fields to average
**/
_avg?: CustomerPosAvgAggregateInputType
/**
* {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
*
* Select which fields to sum
**/
_sum?: CustomerPosSumAggregateInputType
/**
* {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
*
@@ -161,6 +197,8 @@ export type CustomerPosGroupByArgs<ExtArgs extends runtime.Types.Extensions.Inte
take?: number
skip?: number
_count?: CustomerPosCountAggregateInputType | true
_avg?: CustomerPosAvgAggregateInputType
_sum?: CustomerPosSumAggregateInputType
_min?: CustomerPosMinAggregateInputType
_max?: CustomerPosMaxAggregateInputType
}
@@ -171,10 +209,13 @@ export type CustomerPosGroupByOutputType = {
address: string
phone: string
personName: string | null
fridgeCount: number
createdAt: Date
updatedAt: Date
disabledAt: Date | null
_count: CustomerPosCountAggregateOutputType | null
_avg: CustomerPosAvgAggregateOutputType | null
_sum: CustomerPosSumAggregateOutputType | null
_min: CustomerPosMinAggregateOutputType | null
_max: CustomerPosMaxAggregateOutputType | null
}
@@ -203,6 +244,7 @@ export type CustomerPosWhereInput = {
address?: Prisma.StringFilter<"CustomerPos"> | string
phone?: Prisma.StringFilter<"CustomerPos"> | string
personName?: Prisma.StringNullableFilter<"CustomerPos"> | string | null
fridgeCount?: Prisma.IntFilter<"CustomerPos"> | number
createdAt?: Prisma.DateTimeFilter<"CustomerPos"> | Date | string
updatedAt?: Prisma.DateTimeFilter<"CustomerPos"> | Date | string
disabledAt?: Prisma.DateTimeNullableFilter<"CustomerPos"> | Date | string | null
@@ -217,6 +259,7 @@ export type CustomerPosOrderByWithRelationInput = {
address?: Prisma.SortOrder
phone?: Prisma.SortOrder
personName?: Prisma.SortOrderInput | Prisma.SortOrder
fridgeCount?: Prisma.SortOrder
createdAt?: Prisma.SortOrder
updatedAt?: Prisma.SortOrder
disabledAt?: Prisma.SortOrderInput | Prisma.SortOrder
@@ -234,6 +277,7 @@ export type CustomerPosWhereUniqueInput = Prisma.AtLeast<{
address?: Prisma.StringFilter<"CustomerPos"> | string
phone?: Prisma.StringFilter<"CustomerPos"> | string
personName?: Prisma.StringNullableFilter<"CustomerPos"> | string | null
fridgeCount?: Prisma.IntFilter<"CustomerPos"> | number
createdAt?: Prisma.DateTimeFilter<"CustomerPos"> | Date | string
updatedAt?: Prisma.DateTimeFilter<"CustomerPos"> | Date | string
disabledAt?: Prisma.DateTimeNullableFilter<"CustomerPos"> | Date | string | null
@@ -248,12 +292,15 @@ export type CustomerPosOrderByWithAggregationInput = {
address?: Prisma.SortOrder
phone?: Prisma.SortOrder
personName?: Prisma.SortOrderInput | Prisma.SortOrder
fridgeCount?: Prisma.SortOrder
createdAt?: Prisma.SortOrder
updatedAt?: Prisma.SortOrder
disabledAt?: Prisma.SortOrderInput | Prisma.SortOrder
_count?: Prisma.CustomerPosCountOrderByAggregateInput
_avg?: Prisma.CustomerPosAvgOrderByAggregateInput
_max?: Prisma.CustomerPosMaxOrderByAggregateInput
_min?: Prisma.CustomerPosMinOrderByAggregateInput
_sum?: Prisma.CustomerPosSumOrderByAggregateInput
}
export type CustomerPosScalarWhereWithAggregatesInput = {
@@ -265,6 +312,7 @@ export type CustomerPosScalarWhereWithAggregatesInput = {
address?: Prisma.StringWithAggregatesFilter<"CustomerPos"> | string
phone?: Prisma.StringWithAggregatesFilter<"CustomerPos"> | string
personName?: Prisma.StringNullableWithAggregatesFilter<"CustomerPos"> | string | null
fridgeCount?: Prisma.IntWithAggregatesFilter<"CustomerPos"> | number
createdAt?: Prisma.DateTimeWithAggregatesFilter<"CustomerPos"> | Date | string
updatedAt?: Prisma.DateTimeWithAggregatesFilter<"CustomerPos"> | Date | string
disabledAt?: Prisma.DateTimeNullableWithAggregatesFilter<"CustomerPos"> | Date | string | null
@@ -275,6 +323,7 @@ export type CustomerPosCreateInput = {
address: string
phone: string
personName?: string | null
fridgeCount?: number
createdAt?: Date | string
updatedAt?: Date | string
disabledAt?: Date | string | null
@@ -289,6 +338,7 @@ export type CustomerPosUncheckedCreateInput = {
address: string
phone: string
personName?: string | null
fridgeCount?: number
createdAt?: Date | string
updatedAt?: Date | string
disabledAt?: Date | string | null
@@ -301,6 +351,7 @@ export type CustomerPosUpdateInput = {
address?: Prisma.StringFieldUpdateOperationsInput | string
phone?: Prisma.StringFieldUpdateOperationsInput | string
personName?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
fridgeCount?: Prisma.IntFieldUpdateOperationsInput | number
createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
disabledAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null
@@ -315,6 +366,7 @@ export type CustomerPosUncheckedUpdateInput = {
address?: Prisma.StringFieldUpdateOperationsInput | string
phone?: Prisma.StringFieldUpdateOperationsInput | string
personName?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
fridgeCount?: Prisma.IntFieldUpdateOperationsInput | number
createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
disabledAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null
@@ -328,6 +380,7 @@ export type CustomerPosCreateManyInput = {
address: string
phone: string
personName?: string | null
fridgeCount?: number
createdAt?: Date | string
updatedAt?: Date | string
disabledAt?: Date | string | null
@@ -338,6 +391,7 @@ export type CustomerPosUpdateManyMutationInput = {
address?: Prisma.StringFieldUpdateOperationsInput | string
phone?: Prisma.StringFieldUpdateOperationsInput | string
personName?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
fridgeCount?: Prisma.IntFieldUpdateOperationsInput | number
createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
disabledAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null
@@ -349,6 +403,7 @@ export type CustomerPosUncheckedUpdateManyInput = {
address?: Prisma.StringFieldUpdateOperationsInput | string
phone?: Prisma.StringFieldUpdateOperationsInput | string
personName?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
fridgeCount?: Prisma.IntFieldUpdateOperationsInput | number
createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
disabledAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null
@@ -370,17 +425,23 @@ export type CustomerPosCountOrderByAggregateInput = {
address?: Prisma.SortOrder
phone?: Prisma.SortOrder
personName?: Prisma.SortOrder
fridgeCount?: Prisma.SortOrder
createdAt?: Prisma.SortOrder
updatedAt?: Prisma.SortOrder
disabledAt?: Prisma.SortOrder
}
export type CustomerPosAvgOrderByAggregateInput = {
fridgeCount?: Prisma.SortOrder
}
export type CustomerPosMaxOrderByAggregateInput = {
id?: Prisma.SortOrder
customerId?: Prisma.SortOrder
address?: Prisma.SortOrder
phone?: Prisma.SortOrder
personName?: Prisma.SortOrder
fridgeCount?: Prisma.SortOrder
createdAt?: Prisma.SortOrder
updatedAt?: Prisma.SortOrder
disabledAt?: Prisma.SortOrder
@@ -392,11 +453,16 @@ export type CustomerPosMinOrderByAggregateInput = {
address?: Prisma.SortOrder
phone?: Prisma.SortOrder
personName?: Prisma.SortOrder
fridgeCount?: Prisma.SortOrder
createdAt?: Prisma.SortOrder
updatedAt?: Prisma.SortOrder
disabledAt?: Prisma.SortOrder
}
export type CustomerPosSumOrderByAggregateInput = {
fridgeCount?: Prisma.SortOrder
}
export type CustomerPosScalarRelationFilter = {
is?: Prisma.CustomerPosWhereInput
isNot?: Prisma.CustomerPosWhereInput
@@ -444,6 +510,14 @@ export type CustomerPosUncheckedUpdateManyWithoutCustomerNestedInput = {
deleteMany?: Prisma.CustomerPosScalarWhereInput | Prisma.CustomerPosScalarWhereInput[]
}
export type IntFieldUpdateOperationsInput = {
set?: number
increment?: number
decrement?: number
multiply?: number
divide?: number
}
export type CustomerPosCreateNestedOneWithoutSalesInput = {
create?: Prisma.XOR<Prisma.CustomerPosCreateWithoutSalesInput, Prisma.CustomerPosUncheckedCreateWithoutSalesInput>
connectOrCreate?: Prisma.CustomerPosCreateOrConnectWithoutSalesInput
@@ -477,6 +551,7 @@ export type CustomerPosCreateWithoutCustomerInput = {
address: string
phone: string
personName?: string | null
fridgeCount?: number
createdAt?: Date | string
updatedAt?: Date | string
disabledAt?: Date | string | null
@@ -489,6 +564,7 @@ export type CustomerPosUncheckedCreateWithoutCustomerInput = {
address: string
phone: string
personName?: string | null
fridgeCount?: number
createdAt?: Date | string
updatedAt?: Date | string
disabledAt?: Date | string | null
@@ -531,6 +607,7 @@ export type CustomerPosScalarWhereInput = {
address?: Prisma.StringFilter<"CustomerPos"> | string
phone?: Prisma.StringFilter<"CustomerPos"> | string
personName?: Prisma.StringNullableFilter<"CustomerPos"> | string | null
fridgeCount?: Prisma.IntFilter<"CustomerPos"> | number
createdAt?: Prisma.DateTimeFilter<"CustomerPos"> | Date | string
updatedAt?: Prisma.DateTimeFilter<"CustomerPos"> | Date | string
disabledAt?: Prisma.DateTimeNullableFilter<"CustomerPos"> | Date | string | null
@@ -541,6 +618,7 @@ export type CustomerPosCreateWithoutSalesInput = {
address: string
phone: string
personName?: string | null
fridgeCount?: number
createdAt?: Date | string
updatedAt?: Date | string
disabledAt?: Date | string | null
@@ -554,6 +632,7 @@ export type CustomerPosUncheckedCreateWithoutSalesInput = {
address: string
phone: string
personName?: string | null
fridgeCount?: number
createdAt?: Date | string
updatedAt?: Date | string
disabledAt?: Date | string | null
@@ -581,6 +660,7 @@ export type CustomerPosUpdateWithoutSalesInput = {
address?: Prisma.StringFieldUpdateOperationsInput | string
phone?: Prisma.StringFieldUpdateOperationsInput | string
personName?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
fridgeCount?: Prisma.IntFieldUpdateOperationsInput | number
createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
disabledAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null
@@ -594,6 +674,7 @@ export type CustomerPosUncheckedUpdateWithoutSalesInput = {
address?: Prisma.StringFieldUpdateOperationsInput | string
phone?: Prisma.StringFieldUpdateOperationsInput | string
personName?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
fridgeCount?: Prisma.IntFieldUpdateOperationsInput | number
createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
disabledAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null
@@ -605,6 +686,7 @@ export type CustomerPosCreateWithoutRoutesInput = {
address: string
phone: string
personName?: string | null
fridgeCount?: number
createdAt?: Date | string
updatedAt?: Date | string
disabledAt?: Date | string | null
@@ -618,6 +700,7 @@ export type CustomerPosUncheckedCreateWithoutRoutesInput = {
address: string
phone: string
personName?: string | null
fridgeCount?: number
createdAt?: Date | string
updatedAt?: Date | string
disabledAt?: Date | string | null
@@ -645,6 +728,7 @@ export type CustomerPosUpdateWithoutRoutesInput = {
address?: Prisma.StringFieldUpdateOperationsInput | string
phone?: Prisma.StringFieldUpdateOperationsInput | string
personName?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
fridgeCount?: Prisma.IntFieldUpdateOperationsInput | number
createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
disabledAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null
@@ -658,6 +742,7 @@ export type CustomerPosUncheckedUpdateWithoutRoutesInput = {
address?: Prisma.StringFieldUpdateOperationsInput | string
phone?: Prisma.StringFieldUpdateOperationsInput | string
personName?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
fridgeCount?: Prisma.IntFieldUpdateOperationsInput | number
createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
disabledAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null
@@ -669,6 +754,7 @@ export type CustomerPosCreateManyCustomerInput = {
address: string
phone: string
personName?: string | null
fridgeCount?: number
createdAt?: Date | string
updatedAt?: Date | string
disabledAt?: Date | string | null
@@ -679,6 +765,7 @@ export type CustomerPosUpdateWithoutCustomerInput = {
address?: Prisma.StringFieldUpdateOperationsInput | string
phone?: Prisma.StringFieldUpdateOperationsInput | string
personName?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
fridgeCount?: Prisma.IntFieldUpdateOperationsInput | number
createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
disabledAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null
@@ -691,6 +778,7 @@ export type CustomerPosUncheckedUpdateWithoutCustomerInput = {
address?: Prisma.StringFieldUpdateOperationsInput | string
phone?: Prisma.StringFieldUpdateOperationsInput | string
personName?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
fridgeCount?: Prisma.IntFieldUpdateOperationsInput | number
createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
disabledAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null
@@ -703,6 +791,7 @@ export type CustomerPosUncheckedUpdateManyWithoutCustomerInput = {
address?: Prisma.StringFieldUpdateOperationsInput | string
phone?: Prisma.StringFieldUpdateOperationsInput | string
personName?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
fridgeCount?: Prisma.IntFieldUpdateOperationsInput | number
createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
disabledAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null
@@ -754,6 +843,7 @@ export type CustomerPosSelect<ExtArgs extends runtime.Types.Extensions.InternalA
address?: boolean
phone?: boolean
personName?: boolean
fridgeCount?: boolean
createdAt?: boolean
updatedAt?: boolean
disabledAt?: boolean
@@ -769,6 +859,7 @@ export type CustomerPosSelectCreateManyAndReturn<ExtArgs extends runtime.Types.E
address?: boolean
phone?: boolean
personName?: boolean
fridgeCount?: boolean
createdAt?: boolean
updatedAt?: boolean
disabledAt?: boolean
@@ -781,6 +872,7 @@ export type CustomerPosSelectUpdateManyAndReturn<ExtArgs extends runtime.Types.E
address?: boolean
phone?: boolean
personName?: boolean
fridgeCount?: boolean
createdAt?: boolean
updatedAt?: boolean
disabledAt?: boolean
@@ -793,12 +885,13 @@ export type CustomerPosSelectScalar = {
address?: boolean
phone?: boolean
personName?: boolean
fridgeCount?: boolean
createdAt?: boolean
updatedAt?: boolean
disabledAt?: boolean
}
export type CustomerPosOmit<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = runtime.Types.Extensions.GetOmit<"id" | "customerId" | "address" | "phone" | "personName" | "createdAt" | "updatedAt" | "disabledAt", ExtArgs["result"]["customerPos"]>
export type CustomerPosOmit<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = runtime.Types.Extensions.GetOmit<"id" | "customerId" | "address" | "phone" | "personName" | "fridgeCount" | "createdAt" | "updatedAt" | "disabledAt", ExtArgs["result"]["customerPos"]>
export type CustomerPosInclude<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
customer?: boolean | Prisma.CustomerDefaultArgs<ExtArgs>
sales?: boolean | Prisma.CustomerPos$salesArgs<ExtArgs>
@@ -825,6 +918,7 @@ export type $CustomerPosPayload<ExtArgs extends runtime.Types.Extensions.Interna
address: string
phone: string
personName: string | null
fridgeCount: number
createdAt: Date
updatedAt: Date
disabledAt: Date | null
@@ -1259,6 +1353,7 @@ export interface CustomerPosFieldRefs {
readonly address: Prisma.FieldRef<"CustomerPos", 'String'>
readonly phone: Prisma.FieldRef<"CustomerPos", 'String'>
readonly personName: Prisma.FieldRef<"CustomerPos", 'String'>
readonly fridgeCount: Prisma.FieldRef<"CustomerPos", 'Int'>
readonly createdAt: Prisma.FieldRef<"CustomerPos", 'DateTime'>
readonly updatedAt: Prisma.FieldRef<"CustomerPos", 'DateTime'>
readonly disabledAt: Prisma.FieldRef<"CustomerPos", 'DateTime'>
+19 -4
View File
@@ -1,6 +1,15 @@
import { FastifyInstance } from 'fastify';
import { prisma } from '../prisma';
const parseFridgeCount = (value: unknown): number | undefined => {
if (value === undefined || value === null || value === '') return undefined;
const parsedValue = Number(value);
if (!Number.isInteger(parsedValue) || parsedValue < 0) return 0;
return parsedValue;
};
export default async function customersRoutes(app: FastifyInstance) {
// Get all customers (with pos optionally)
app.get('/', { preValidation: [app.authenticate] }, async (request, reply) => {
@@ -68,18 +77,24 @@ export default async function customersRoutes(app: FastifyInstance) {
app.post('/:customerId/pos', { preValidation: [app.authenticate] }, async (request, reply) => {
const { customerId } = request.params as any;
const { address, phone, personName } = request.body as any;
const { address, phone, personName, fridgeCount } = request.body as any;
return prisma.customerPos.create({
data: { customerId, address, phone, personName }
data: { customerId, address, phone, personName, fridgeCount: parseFridgeCount(fridgeCount) ?? 0 }
});
});
app.put('/pos/:id', { preValidation: [app.authenticate] }, async (request, reply) => {
const { id } = request.params as any;
const { address, phone, personName } = request.body as any;
const { address, phone, personName, fridgeCount } = request.body as any;
const normalizedFridgeCount = parseFridgeCount(fridgeCount);
return prisma.customerPos.update({
where: { id },
data: { address, phone, personName }
data: {
address,
phone,
personName,
...(normalizedFridgeCount !== undefined ? { fridgeCount: normalizedFridgeCount } : {})
}
});
});
+21 -3
View File
@@ -17,7 +17,7 @@ export default function Customers() {
const [customers, setCustomers] = useState<Customer[]>([]);
const [showModal, setShowModal] = useState(false);
const [newCustomer, setNewCustomer] = useState<Customer>({ name: '', document: '', phone: '', personName: '' });
const emptyPos: CustomerPOS = { address: '', phone: '', personName: '' };
const emptyPos: CustomerPOS = { address: '', phone: '', personName: '', fridgeCount: 0 };
const [editingCustomer, setEditingCustomer] = useState<string | null>(null);
const [showPosModal, setShowPosModal] = useState(false);
const [selectedCustomer, setSelectedCustomer] = useState<Customer | null>(null);
@@ -163,7 +163,7 @@ export default function Customers() {
return;
}
setEditingPos(p.id);
setNewPos({ address: p.address, phone: p.phone, personName: p.personName || '' });
setNewPos({ address: p.address, phone: p.phone, personName: p.personName || '', fridgeCount: p.fridgeCount ?? 0 });
};
const cancelEditPos = () => {
@@ -427,6 +427,9 @@ export default function Customers() {
</button>
) : 'N/A'}
</div>
<div className="text-secondary small">
Fridges: {p.fridgeCount ?? 0}
</div>
</div>
<div className="d-flex gap-2">
<button className="btn btn-sm btn-outline-primary" onClick={() => openEditPos(p)}>Edit</button>
@@ -470,7 +473,22 @@ export default function Customers() {
maxLength={30}
/>
</div>
<div className="col-md-5 d-flex align-items-end gap-2">
<div className="col-md-2">
<label className="form-label text-secondary small">Fridges</label>
<input
type="number"
className="form-control form-control-sm"
value={newPos.fridgeCount ?? 0}
onChange={e =>
setNewPos({
...newPos,
fridgeCount: Math.max(0, Number.parseInt(e.target.value || '0', 10) || 0),
})
}
min={0}
/>
</div>
<div className="col-md-3 d-flex align-items-end gap-2">
{editingPos && (
<button type="button" className="btn btn-sm btn-outline-secondary w-100" onClick={cancelEditPos}>Cancel</button>
)}
+1
View File
@@ -36,6 +36,7 @@ export type CustomerPOS = {
address: string;
phone: string;
personName?: string;
fridgeCount?: number;
customer?: Customer;
}