This commit is contained in:
seb
2026-09-30 09:48:01 +02:00
parent 9885c489f0
commit 280a45a11f
28 changed files with 539 additions and 16 deletions

View File

@@ -182,6 +182,16 @@ export class MssqlProvider {
BEGIN
ALTER TABLE propertyname ADD exclusive BIT NOT NULL CONSTRAINT DF_propertyname_exclusive DEFAULT 0;
END
IF OBJECT_ID(N'dbo.category', N'U') IS NOT NULL AND COL_LENGTH('category', 'updated_at') IS NULL
BEGIN
ALTER TABLE category ADD updated_at DATETIME2 NOT NULL CONSTRAINT DF_category_updated_at DEFAULT SYSUTCDATETIME();
END
IF OBJECT_ID(N'dbo.customergroup', N'U') IS NOT NULL AND COL_LENGTH('customergroup', 'updated_at') IS NULL
BEGIN
ALTER TABLE customergroup ADD updated_at DATETIME2 NOT NULL CONSTRAINT DF_customergroup_updated_at DEFAULT SYSUTCDATETIME();
END
`);
} catch {
// ignore

View File

@@ -174,37 +174,37 @@ WHERE a.sku = @sku
export const UPDATE_WEIGHT = `
UPDATE article
SET weight = @weight
SET weight = @weight, updated_at = SYSUTCDATETIME()
WHERE id = @articleId
`;
export const UPDATE_TRACK_STOCK = `
UPDATE article
SET track_stock = @trackStock
SET track_stock = @trackStock, updated_at = SYSUTCDATETIME()
WHERE id = @articleId
`;
export const UPDATE_BRAND = `
UPDATE article
SET brand_id = @brandId
SET brand_id = @brandId, updated_at = SYSUTCDATETIME()
WHERE id = @articleId
`;
export const UPDATE_UNIT = `
UPDATE article
SET unit_id = @unitId
SET unit_id = @unitId, updated_at = SYSUTCDATETIME()
WHERE id = @articleId
`;
export const UPDATE_UNITAMOUNT = `
UPDATE article
SET unitamount = @unitamount
SET unitamount = @unitamount, updated_at = SYSUTCDATETIME()
WHERE id = @articleId
`;
export const UPDATE_UNIT_AND_AMOUNT = `
UPDATE article
SET unit_id = @unitId, unitamount = @unitamount
SET unit_id = @unitId, unitamount = @unitamount, updated_at = SYSUTCDATETIME()
WHERE id = @articleId
`;

View File

@@ -45,6 +45,7 @@ FROM categoryarticle ca
INNER JOIN article a ON a.id = ca.article_id
${ARTICLE_LIST_JOINS}
WHERE ca.category_id = @categoryId
AND a.fatherarticle_id IS NULL
ORDER BY a.id
`;
@@ -110,7 +111,7 @@ WHERE parent_id = @parentId
export const UPDATE_SORT = `
UPDATE category
SET sort = @sort
SET sort = @sort, updated_at = SYSUTCDATETIME()
WHERE id = @id AND parent_id = @parentId
`;
@@ -134,7 +135,7 @@ WHERE id = @id
export const MOVE = `
UPDATE category
SET parent_id = @parentId, sort = @sort
SET parent_id = @parentId, sort = @sort, updated_at = SYSUTCDATETIME()
WHERE id = @id
`;

View File

@@ -49,14 +49,14 @@ WHERE company_id = @companyId
export const UPDATE = `
UPDATE customergroup
SET name = @name
SET name = @name, updated_at = SYSUTCDATETIME()
OUTPUT INSERTED.id, INSERTED.name, INSERTED.sort
WHERE id = @id AND company_id = @companyId
`;
export const UPDATE_SORT = `
UPDATE customergroup
SET sort = @sort
SET sort = @sort, updated_at = SYSUTCDATETIME()
WHERE id = @id AND company_id = @companyId
`;

View File

@@ -112,3 +112,86 @@ FROM posterminalcategory pc
INNER JOIN posterminal pt ON pt.id = pc.posterminal_id
WHERE pt.company_id = @companyId
`;
export const FIND_BY_TOKEN = `
SELECT
id,
company_id AS companyId,
name,
token,
pairingpin,
paired_at AS pairedAt,
clientserial AS clientserial
FROM posterminal
WHERE token = @token
`;
export const COUNT_PRODUCTS = `
SELECT COUNT(DISTINCT a.id) AS count
FROM article a
INNER JOIN posterminal pt ON pt.id = @posterminalId AND pt.company_id = a.company_id
WHERE EXISTS (
SELECT 1
FROM categoryarticle ca
INNER JOIN posterminalcategory pc ON pc.category_id = ca.category_id
WHERE ca.article_id = a.id
AND pc.posterminal_id = @posterminalId
)
AND DATEDIFF_BIG(second, '1970-01-01', a.updated_at) > @cursor
`;
export const COUNT_CATEGORIES = `
SELECT COUNT(*) AS count
FROM category c
INNER JOIN posterminalcategory pc ON pc.category_id = c.id
INNER JOIN posterminal pt ON pt.id = pc.posterminal_id
INNER JOIN company co ON co.id = pt.company_id
WHERE pc.posterminal_id = @posterminalId
AND (co.root_category_id IS NULL OR c.id <> co.root_category_id)
AND DATEDIFF_BIG(second, '1970-01-01', c.updated_at) > @cursor
`;
export const COUNT_CUSTOMERS = `
SELECT COUNT(*) AS count
FROM entity e
INNER JOIN customergroup cg ON cg.id = e.customergroup_id
INNER JOIN posterminal pt ON pt.id = @posterminalId AND pt.company_id = cg.company_id
WHERE cg.name NOT IN ('Lieferanten', 'POS')
AND DATEDIFF_BIG(second, '1970-01-01', e.updated_at) > @cursor
`;
export const COUNT_CUSTOMER_GROUPS = `
SELECT COUNT(*) AS count
FROM customergroup cg
INNER JOIN posterminal pt ON pt.id = @posterminalId AND pt.company_id = cg.company_id
WHERE cg.name <> 'Lieferanten'
AND DATEDIFF_BIG(second, '1970-01-01', cg.updated_at) > @cursor
`;
export const COUNT_COMPOSITE_PRODUCTS = `
SELECT COUNT(DISTINCT a.id) AS count
FROM article a
INNER JOIN posterminal pt ON pt.id = @posterminalId AND pt.company_id = a.company_id
WHERE a.articlelist_id IS NOT NULL
AND EXISTS (
SELECT 1
FROM articlelistarticle ala
WHERE ala.articlelist_id = a.articlelist_id
)
AND EXISTS (
SELECT 1
FROM categoryarticle ca
INNER JOIN posterminalcategory pc ON pc.category_id = ca.category_id
WHERE ca.article_id = a.id
AND pc.posterminal_id = @posterminalId
)
AND DATEDIFF_BIG(second, '1970-01-01', a.updated_at) > @cursor
`;
export const MAX_ORDER_ID = `
SELECT ISNULL(MAX(m.id), 0) AS maxOrderId
FROM manifest m
INNER JOIN posterminal pt ON pt.id = @posterminalId AND pt.company_id = m.company_id
WHERE m.[type] = 'order'
`;

View File

@@ -77,6 +77,7 @@ BEGIN
id INT IDENTITY(1,1) PRIMARY KEY,
parent_id INT NULL,
sort INT NOT NULL CONSTRAINT DF_category_sort DEFAULT 0,
updated_at DATETIME2 NOT NULL CONSTRAINT DF_category_updated_at DEFAULT SYSUTCDATETIME(),
CONSTRAINT FK_category_parent FOREIGN KEY (parent_id) REFERENCES category(id) ON DELETE NO ACTION
);
END
@@ -134,6 +135,7 @@ BEGIN
-- Nullable only for company-create chicken-egg (POS group first, then company, then SET).
-- Always set before commit; never left null for live rows.
company_id INT NULL,
updated_at DATETIME2 NOT NULL CONSTRAINT DF_customergroup_updated_at DEFAULT SYSUTCDATETIME(),
CONSTRAINT FK_customergroup_company FOREIGN KEY (company_id) REFERENCES company(id) ON DELETE CASCADE
);
END