Skip to content

Commit 587f904

Browse files
authored
Quick Inventory Fixes (#1311)
1 parent 2d5f6d7 commit 587f904

3 files changed

Lines changed: 23 additions & 6 deletions

File tree

client/src/pages/makerspace_page/inventory_pages/QuickEditInventoryPage.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ export default function QuickEditInventoryPage(props: QuickEditInventoryPageProp
8181
disabled={evaluatedItem === undefined}
8282
variant="contained"
8383
size="large"
84-
onClick={() => setQuantity(quantity - 1)}
84+
onClick={() => setQuantity(quantity <= 0 ? 0 : quantity - 1)}
8585
>
8686
<RemoveIcon />
8787
</Button>

client/src/pages/makerspace_page/inventory_pages/QuickInventoryQRCodeModal.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,7 @@ export default function QuickInventoryQRCodeModal(props: QuickInventoryQRCodeMod
105105
)}
106106
value={target}
107107
options={mode === "item" ? items : tags}
108-
disabled={mode === undefined}
108+
disabled={mode === undefined || mode === null}
109109
onChange={(_e, newValue) => setTarget(newValue ?? undefined)}
110110
// @ts-expect-error
111111
getOptionLabel={(option) => option.label ?? option.name}
@@ -115,7 +115,7 @@ export default function QuickInventoryQRCodeModal(props: QuickInventoryQRCodeMod
115115
target
116116
? <Box padding={"15px"} sx={{ backgroundColor: "white" }}>
117117
<QRCode
118-
value={`${import.meta.env.VITE_ORIGIN}/app/makerspace/${makerspaceID}/inventory/${mode}/${target.id}`}
118+
value={`${import.meta.env.VITE_ORIGIN}/app/makerspace/${makerspaceID}/inventory/quick/${mode}/${target.id}`}
119119
ref={svgRef}
120120
/>
121121
</Box>

server/src/resolvers/storeFrontResolver.ts

Lines changed: 20 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -248,9 +248,26 @@ const StorefrontResolvers = {
248248
count: number
249249
},
250250
{ isStaff }: ApolloContext
251-
) => isStaff(async (user) => (
252-
await InventoryRepo.setItemAmount(args.itemID, args.count)
253-
)),
251+
) => isStaff(async (user) => {
252+
const orig = await InventoryRepo.getItemById(args.itemID);
253+
if (orig === null) { return null; }
254+
255+
if (args.count < 0) { args.count = 0; }
256+
257+
const result = await InventoryRepo.setItemAmount(args.itemID, args.count)
258+
if (result === null) { return null; }
259+
const diff = result.count - orig.count;
260+
if (diff < 0) {
261+
if (result.count < result.threshold && orig.count >= result.threshold) {
262+
await notifyInventoryItemBelowThreshold(result.name, result.count);
263+
}
264+
await createLedger(user.id, "Modify", result.pricePerUnit * Math.abs(diff), undefined, "", [{ name: result.name, quantity: diff }]);
265+
} else if (diff > 0) {
266+
await createLedger(user.id, "Modify", result.pricePerUnit * Math.abs(diff), undefined, "", [{ name: result.name, quantity: diff }]);
267+
}
268+
269+
return result;
270+
}),
254271

255272
/**
256273
* Mark an InventoryItem as archived

0 commit comments

Comments
 (0)