Skip to content

Commit 8cb5c14

Browse files
authored
Merge pull request #4051 from Northeastern-Electric-Racing/#3916-Mark-Copied-Over-BOM-Schema-Changes
Add isCopied Field and Modified Services, Transformers, and Types
2 parents 2283283 + 967c150 commit 8cb5c14

6 files changed

Lines changed: 13 additions & 2 deletions

File tree

src/backend/src/prisma/migrations/20260303225351_bom_improvements/migration.sql

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,3 +86,6 @@ BEGIN
8686
);
8787
END LOOP;
8888
END $$;
89+
90+
-- AlterTable
91+
ALTER TABLE "Material" ADD COLUMN "isCopied" BOOLEAN NOT NULL DEFAULT false;

src/backend/src/prisma/schema.prisma

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1002,6 +1002,7 @@ model Material {
10021002
reimbursementRequest Reimbursement_Request? @relation(fields: [reimbursementRequestId], references: [reimbursementRequestId])
10031003
reimbursementRequestId String?
10041004
reimbursementProducts Reimbursement_Product[]
1005+
isCopied Boolean @default(false)
10051006
10061007
@@index([assemblyId])
10071008
@@index([materialTypeId])

src/backend/src/services/boms.services.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -217,7 +217,8 @@ export default class BillOfMaterialsService {
217217
dateCreated: new Date(),
218218
userCreatedId: user.userId,
219219
wbsElementId: destinationProject.wbsElementId,
220-
assemblyId: null
220+
assemblyId: null,
221+
isCopied: true
221222
},
222223
...getMaterialQueryArgs(organization.organizationId)
223224
});

src/backend/src/transformers/material.transformer.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,8 @@ export const materialTransformer = (material: Prisma.MaterialGetPayload<Material
4545
notes: material.notes ?? undefined,
4646
reimbursementRequest: material.reimbursementRequest
4747
? reimbursementRequestTransformer(material.reimbursementRequest)
48-
: undefined
48+
: undefined,
49+
isCopied: material.isCopied
4950
};
5051
};
5152

src/backend/tests/unmocked/project.test.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,7 @@ describe('Material Tests', () => {
6060
expect(material.manufacturerPartNumber).toEqual('lalsd');
6161
expect(material.quantity?.toString()).toEqual('5');
6262
expect(material.reimbursementRequest?.reimbursementRequestId).toEqual(reimbursementRequest.reimbursementRequestId);
63+
expect(material.isCopied).toBe(false);
6364
});
6465

6566
test('Fails on invalid reimbursement request id', async () => {
@@ -193,6 +194,9 @@ describe('Material Tests', () => {
193194

194195
expect(copiedMat2.status).toBe('NOT_READY_TO_ORDER');
195196
expect(copiedMat2.reimbursementRequestId).toBeNull();
197+
198+
expect(copiedMat1.isCopied).toBe(true);
199+
expect(copiedMat2.isCopied).toBe(true);
196200
});
197201

198202
test('Fails when material does not exist', async () => {

src/shared/src/types/bom-types.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,7 @@ export interface Material {
7373
linkUrl: string;
7474
notes?: string;
7575
reimbursementRequest?: ReimbursementRequest;
76+
isCopied: boolean;
7677
}
7778

7879
export type MaterialPreview = Omit<

0 commit comments

Comments
 (0)