c57c84f142fix(outbound): map warehouse location field correctly and implement natural sorting by location path for picking route optimizationDXC2026-04-02 17:54:09 +08:00
d0cac14a33fix(outbound): fix row-key collision causing UI select-all bug and false duplicate warnings in stock selectionDXC2026-04-02 17:48:06 +08:00
b614a7c8f5fix(warehouse): fix tree path generation logic and integrity error causing 500 in batch generationDXC2026-04-02 11:05:41 +08:00
2a27f2e0dffeat(stocktake): implement strict blind stocktake logic with hidden system qty, editable count and status filtersDXC2026-03-26 17:42:51 +08:00
db0444cc13fix(scrap): completely refactor scan API return dict with safe getattr to prevent attribute errorsDXC2026-03-26 17:20:43 +08:00
c8810891d8fix(api): globally replace invalid material_base/material_name attributes with correct base relationshipDXC2026-03-26 17:14:26 +08:00
d58b002340chore(api): expose real 500 error stack trace for scrap scan APIDXC2026-03-26 16:59:14 +08:00
46dd8f1c3afix(auth,audit): ensure display_name persists in token refresh and add fallback in audit logDXC2026-03-25 11:16:13 +08:00
f9edb5f1f7fix(api): fix AttributeError on inbound deletion by accessing base.name instead of material_nameDXC2026-03-25 11:02:32 +08:00
7421ef3231fix(api): expose real 500 error stack trace and fix missing func importDXC2026-03-25 10:56:31 +08:00
ac7774e0e3fix(api): gracefully handle integrity error on inbound record deletionDXC2026-03-25 10:48:43 +08:00
a8119dd577fix(permission): force inject view-level permission checks for all unprotected root nodesDXC2026-03-25 10:21:28 +08:00
6f977a74c7fix(bom): assign unique popper-class by index to fix child select infinite scrollDXC2026-03-24 16:09:00 +08:00
9d79a3cebbfix(bom): remove teleported false and use dynamic scroll listener to fix invisible dropdown in tableDXC2026-03-24 16:01:08 +08:00
3017600a37fix(bom): fix select infinite scroll by disabling teleport and returning correct total countDXC2026-03-24 15:54:52 +08:00
f738b3b3affix(api): correct specification field name in material searchDXC2026-03-24 15:49:54 +08:00
321ef8c7bdfeat(api): support pagination and keyword search for material base listDXC2026-03-24 15:46:14 +08:00
b12a91a763refactor(bom): optimize material select with remote search and pagination lazy loadingDXC2026-03-24 15:37:42 +08:00
5fe645dc0bfix: resolve broken material select dropdown in service.vueDXC2026-03-23 15:06:51 +08:00
a522525ef4perf: enforce server-side pagination for tables and audit infinite scroll logic for selectsDXC2026-03-23 15:00:10 +08:00
93dc375ba4perf: replace client-side pagination with server-side pagination in stock selection dialog and fix duplicate variable in semi.vueDXC2026-03-23 14:52:01 +08:00
08c921fe66feat: standardize default page size to 20, add pagination to pick list, and fix table horizontal scrollbar visibilityDXC2026-03-23 14:38:08 +08:00
c5974ff05cfix: relax permission requirement on stock list api to unblock outbound operationsDXC2026-03-23 14:22:52 +08:00
e1006f383arefactor: global import cleanup and stability fix for auth moduleDXC2026-03-23 13:43:29 +08:00
505b8e5a32fix: add missing get_jwt import to resolve NameError in my-permissions APIDXC2026-03-23 13:41:13 +08:00
0bdd4c068efix: add missing db import to resolve NameError in password update APIDXC2026-03-23 13:38:18 +08:00
61ec906cfbfix: resolve 500 error in password update API by aligning schema and fixing hash logicDXC2026-03-23 13:32:53 +08:00
2242aca6fefeat: implement user-specific column preferences and remove hardcoded defaults in inbound tablesDXC2026-03-23 11:57:45 +08:00
719fe108bafeat: remove old password requirement, fix user info display, and add password change reminder on home pageDXC2026-03-23 11:52:30 +08:00
ec5331ffb3feat: fix table alignment in product view and implement self-service password update with role maskingDXC2026-03-23 11:41:09 +08:00
f701ed7fc8fix: disable clickable material name links for users without edit permissions across all inbound tablesDXC2026-03-23 11:19:25 +08:00
d53362f06ffeat: adjust page size, fix missing stock column, and implement smart SKU aggregation when SN is hiddenDXC2026-03-23 11:13:43 +08:00
2574da03e5fix: remove duplicate permissionMap declaration and eliminate infinite polling interval in stocktake pageDXC2026-03-23 11:03:55 +08:00
6dfc540dc1fix: enforce field-level permission checks for semi-finished and finished goods tablesDXC2026-03-23 10:58:28 +08:00
7c9331d78aperf: implement optimistic UI for scanner, disable auto-camera, and sort excel by SKUDXC2026-03-23 09:51:59 +08:00
13e910645dfix: restore missing export to excel button and logic in blind stocktake pageDXC2026-03-23 09:44:41 +08:00
032479fe38fix: capture and persist target object names for delete, outbound, and borrow operations in audit logsDXC2026-03-20 15:47:13 +08:00
b08bbba718fix: enforce Beijing Time (UTC+8) globally by replacing datetime.utcnowDXC2026-03-20 15:23:20 +08:00
d7df1dea57fix: add write permission to QA buttons and decouple inbound/print quantitiesDXC2026-03-20 13:31:37 +08:00
b6e3ea76fafix: filter out invisible menus and clean up ghost nodes in permission treeDXC2026-03-20 13:12:16 +08:00
6c20233d45fix: handle int type for JWT expires configuration to prevent 500 error on loginDXC2026-03-20 10:43:29 +08:00
71e5f075d2feat: implement composite debounced search with prepended select and wipe out duplicate root permission nodesDXC2026-03-20 10:26:45 +08:00
3bb3975022fix: use .c to access SQLAlchemy subquery columns correctlyDXC2026-03-20 10:15:11 +08:00
c1c67ae4aarefactor: extract stocktake and adjustment routes into a standalone top-level menu categoryDXC2026-03-19 16:27:33 +08:00
53c198f363feat: fix stocktake deletion bug, and add pagination, search, sorting to stocktake listsDXC2026-03-19 16:21:09 +08:00
5510bae3b2fix: align API routes for generate-missing endpoint and remove redundant api prefixDXC2026-03-19 15:52:11 +08:00
5842042db6refactor: merge end stocktake buttons and attach missing-calculation logic to the primary buttonDXC2026-03-19 15:44:05 +08:00
fa8b113f9dfix: implement sequential order_no generation and enforce UTC+8 Beijing time for adjustmentsDXC2026-03-19 15:42:36 +08:00
b37049a4d7feat: add generate-missing logic to identify unscanned stock as inventory lossDXC2026-03-19 15:34:54 +08:00
6cc3d1b6e0feat: upgrade adjustment workflow to require explicit inbound SKU or outbound tracking number and fix UTC timezone issueDXC2026-03-19 15:26:40 +08:00
ae63748060feat: refactor stocktake import flow to use a preview-and-select dialogDXC2026-03-19 15:16:20 +08:00
05410b5b4dfix: correct StocktakeDraft import case and remove duplicate api prefix in frontend request urlsDXC2026-03-19 15:00:19 +08:00
50cf63414ffeat: fix 401 auth error and bridge stocktake discrepancies to adjustment moduleDXC2026-03-19 14:36:56 +08:00
5454947176fix: correct user store import path in adjustment vue to fix vite build errorDXC2026-03-19 14:27:09 +08:00
09869667c8fix: add extend_existing=True to StockAdjustment model to resolve MetaData conflictDXC2026-03-19 14:25:43 +08:00
c55eed0d75fix: remove duplicate StockAdjustment model from stocktake.py to fix SQLAlchemy MetaData conflictDXC2026-03-19 14:20:27 +08:00
d8a57ab66efeat: initialize inventory profit and loss adjustment moduleDXC2026-03-19 12:06:32 +08:00
7a4717ce21fix: restrict overdue warning color strictly to the countdown text and remove row-level style pollutionDXC2026-03-19 11:50:04 +08:00
7867fc5e40fix: resolve TypeError between float and Decimal in stocktake excel exportDXC2026-03-19 11:47:31 +08:00
8db1015f99fix: implement traffic-light color warning and correct ascending sort for overdue borrow recordsDXC2026-03-19 11:45:27 +08:00
a32d4f6b65fix: resolve 500 error on excel export by aligning headers and data row lengths for remark fieldDXC2026-03-19 11:41:53 +08:00
b74464df6bfeat: add descending sort by return date and color-coded warning for impending returnsDXC2026-03-19 11:40:38 +08:00