Commit Graph

56 Commits

Author SHA1 Message Date
seb
c8b1a73b62 Add categoryIds to article.listSearchIndex response 2026-08-03 22:33:46 +02:00
seb
84bb561031 Add article.listSearchIndex for client-side search preload
Returns all company articles with id, sku, name, and eans as a flat
array. Walks the category tree to find reachable articles. Single
query using recursive CTE + FOR JSON for eans.
2026-08-03 22:31:36 +02:00
seb
eaf4df4f5a Require at least one category when setting article categories
Prevents articles from becoming unreachable by rejecting empty
categoryIds arrays in setCategoryIdsBySku.
2026-08-03 08:51:20 +02:00
seb
14d8a4c978 Merge getBySku into single SQL query with FOR JSON sub-queries
Replaces 6 round-trips (1 sequential resolve + 5 parallel detail)
with one query. Auth resolution, article detail, categories, photos,
eans, and prices are all fetched in a single round-trip.
2026-08-03 08:39:17 +02:00
seb
b3ef24f34a Extend GET_CATEGORY_ID_BY_HASH to resolve categorypic hashes directly 2026-08-03 07:59:09 +02:00
seb
6128fc59fd Add category image add/delete with categorypic SQL layer 2026-08-03 07:38:14 +02:00
seb
f8e52549d6 Fix posterminal token uniqueness for nullable column
Replace inline UNIQUE constraint with filtered unique index on token
column to allow multiple NULL values while maintaining uniqueness
for non-NULL tokens.
2026-08-03 07:13:36 +02:00
seb
829ab19f59 Add name column to posterminal table
- Added required name NVARCHAR(255) NOT NULL column to posterminal schema
- Updated SQL queries (LIST_BY_COMPANY, GET_BY_ID, CREATE, UPDATE) to include name
- Updated upsert store method to validate and persist name
- Updated README with name in method signatures and return types
2026-08-03 06:32:25 +02:00
seb
e7c43ab4e7 Remove ?companyId query params from route cheatsheet
Company ID is derived from the auth token cookie, not query params.
2026-08-03 06:20:22 +02:00
seb
831bf52c14 Add POS terminal category visibility system
Add posterminal and posterminalcategory tables to control which categories
are visible on each POS terminal. The existence of a row in
posterminalcategory means the category is visible on that terminal.

Store methods:
- posterminal.list/upsert/delete - CRUD for terminals
- posterminal.setOn/setOff - toggle single category on a terminal
- posterminal.setOnAll/setOffAll - toggle all categories on a terminal
- posterminal.getCategoryPosterminalIds - internal, used by category tree

The category tree (getTreeForCompany) now includes a posterminalIds array
on each node listing which terminals have that category enabled.
2026-08-03 06:14:25 +02:00
seb
3b06c3117d u 2026-08-03 03:57:16 +02:00
seb
d8d66ce105 Add category.move to reparent a category.
Validates both source and target via resolveCategoryAccess so the new
parent must be a category of the same authorized company, and guards
against moving into a descendant (cycle). Assigns next sibling sort.
2026-08-03 03:01:02 +02:00
seb
b070607357 Add category.order to reorder siblings under a parent.
Sets each direct child's sort to its index in the given categoryIds,
scoped by parentId. Validates the set matches the current children.
2026-08-02 19:41:54 +02:00
seb
e96bfb0624 u 2026-08-02 19:02:10 +02:00
seb
b890843445 u 2026-08-02 19:01:00 +02:00
seb
787e411547 Add company-scoped brand and company settings API.
brand now carries a NOT NULL company_id (unique per (company_id, name))
with brand.list/upsert/delete backed by resolveCompanyAccess. Adds
companysetting key-value store (list/get/set/delete, frontend flag).
2026-08-01 06:59:27 +02:00
seb
c839b2ba35 Regenerate schema graph for company-scoped units. 2026-08-01 06:38:31 +02:00
seb
12e83a7ffb Add company-scoped unit list/upsert/delete and article unit patches.
Units are isolated per company; article detail exposes full unit shape, and unused units can be deleted safely via FK NO ACTION.
2026-08-01 06:12:24 +02:00
seb
54700a145e Add article.setPricesBySku to replace POS prices for a SKU.
Gives dashback a single store call that atomically replaces all price rows for the article’s poscustomergroup.
2026-08-01 05:16:50 +02:00
seb
9be9f7f74c u 2026-08-01 05:10:03 +02:00
seb
ee895fab5f Update README and SQL files to include 'fullHash', 'fullW', 'fullH', and 'fullSize' for articles and photos 2026-08-01 04:33:00 +02:00
seb
3b0d3266a5 rule 2026-08-01 03:46:08 +02:00
seb
1756dc7ef0 u 2026-08-01 03:37:45 +02:00
seb
69a24192d3 u 2026-08-01 02:15:21 +02:00
seb
59c874144b u 2026-08-01 01:59:05 +02:00
seb
a05a4791d6 u 2026-08-01 01:50:22 +02:00
seb
671064bf3f u 2026-08-01 01:36:49 +02:00
seb
243143e7eb u 2026-07-31 20:10:19 +02:00
seb
e8326e22ac u 2026-07-31 19:49:07 +02:00
seb
6b1701d4dc u 2026-07-31 18:15:15 +02:00
seb
c2e128cb55 u 2026-07-31 17:50:06 +02:00
seb
7e1e96d3cd u 2026-07-31 16:17:33 +02:00
seb
14297a1568 u 2026-07-31 16:13:31 +02:00
seb
f9dec6d51a u 2026-07-31 16:06:51 +02:00
seb
38f90ceec1 u 2026-07-31 15:37:51 +02:00
seb
6cc6dbb9e8 u 2026-07-31 15:36:48 +02:00
seb
818d799f63 u 2026-07-31 09:09:34 +02:00
seb
84a7c6f7ef u 2026-07-31 09:03:58 +02:00
seb
99dd76075e u 2026-07-31 09:00:14 +02:00
seb
4f98082061 u 2026-07-31 07:42:19 +02:00
seb
39c5820947 u 2026-07-31 07:40:27 +02:00
seb
bbd69e8c7c u 2026-07-31 07:22:34 +02:00
seb
02bca8e236 u 2026-07-31 05:57:23 +02:00
seb
b99c3a9ec7 u 2026-07-31 05:46:33 +02:00
seb
a57e81fe30 u 2026-07-31 05:43:41 +02:00
seb
09c7a8bc74 u 2026-07-31 05:34:45 +02:00
seb
806d077d57 u 2026-07-31 05:21:28 +02:00
seb
142e73a171 u 2026-07-31 05:19:14 +02:00
seb
52b9d125f7 u 2026-07-31 04:52:14 +02:00
seb
10d1d472fd u 2026-07-31 04:48:13 +02:00