This commit is contained in:
seb
2026-10-17 23:31:37 +02:00
parent ab42a3ffb4
commit 688fa4f3fd
19 changed files with 475 additions and 18 deletions

View File

@@ -1,6 +1,7 @@
/** Drop order = reverse of schema create dependency order. */
export const TABLES = [
'articlewarehousesummary',
'deliverysummary',
'shipmentsummary',
'quotesummary',

View File

@@ -161,3 +161,14 @@ WHERE e.id = @id
AND cg.company_id = @companyId
AND cg.name = @groupName
`;
export const CHECK_SUPPLIER_IN_USE = `
SELECT TOP 1 1 AS inUse
FROM manifest m
WHERE m.entity_id = @id AND m.company_id = @companyId
UNION ALL
SELECT TOP 1 1 AS inUse
FROM articlesupplier asup
INNER JOIN article a ON a.id = asup.article_id
WHERE asup.entity_id = @id AND a.company_id = @companyId;
`;

View File

@@ -619,7 +619,7 @@ BEGIN
pu FLOAT NOT NULL CONSTRAINT DF_articlesupplier_pu DEFAULT 1,
sort INT NOT NULL CONSTRAINT DF_articlesupplier_sort DEFAULT 0,
CONSTRAINT FK_articlesupplier_article FOREIGN KEY (article_id) REFERENCES article(id) ON DELETE CASCADE,
CONSTRAINT FK_articlesupplier_entity FOREIGN KEY (entity_id) REFERENCES entity(id) ON DELETE CASCADE,
CONSTRAINT FK_articlesupplier_entity FOREIGN KEY (entity_id) REFERENCES entity(id) ON DELETE NO ACTION,
CONSTRAINT FK_articlesupplier_tax FOREIGN KEY (tax_id) REFERENCES tax(id) ON DELETE NO ACTION,
CONSTRAINT UQ_articlesupplier_article_entity UNIQUE (article_id, entity_id),
CONSTRAINT UQ_articlesupplier_article_sort UNIQUE (article_id, sort)
@@ -643,7 +643,7 @@ BEGIN
[date] DATETIME2 NOT NULL CONSTRAINT DF_manifest_date DEFAULT SYSUTCDATETIME(),
created_at DATETIME2 NOT NULL CONSTRAINT DF_manifest_created_at DEFAULT SYSUTCDATETIME(),
CONSTRAINT FK_manifest_company FOREIGN KEY (company_id) REFERENCES company(id) ON DELETE NO ACTION,
CONSTRAINT FK_manifest_entity FOREIGN KEY (entity_id) REFERENCES entity(id) ON DELETE SET NULL
CONSTRAINT FK_manifest_entity FOREIGN KEY (entity_id) REFERENCES entity(id) ON DELETE NO ACTION
);
END
`;
@@ -1338,6 +1338,24 @@ BEGIN
END
`;
export const INIT_ARTICLEWAREHOUSESUMMARY = `
IF NOT EXISTS (SELECT * FROM sys.tables WHERE name = 'articlewarehousesummary')
BEGIN
CREATE TABLE articlewarehousesummary (
id INT IDENTITY(1,1) PRIMARY KEY,
article_id INT NOT NULL,
warehouse_id INT NOT NULL,
stock FLOAT NOT NULL CONSTRAINT DF_articlewarehousesummary_stock DEFAULT 0,
CONSTRAINT FK_articlewarehousesummary_article FOREIGN KEY (article_id) REFERENCES article(id) ON DELETE CASCADE,
CONSTRAINT FK_articlewarehousesummary_warehouse FOREIGN KEY (warehouse_id) REFERENCES warehouse(id) ON DELETE CASCADE,
CONSTRAINT UQ_articlewarehousesummary_article_warehouse UNIQUE (article_id, warehouse_id)
);
CREATE INDEX IX_articlewarehousesummary_warehouse
ON articlewarehousesummary (warehouse_id);
END
`;
export const INIT_MCP_CLIENT = `
IF NOT EXISTS (SELECT * FROM sys.tables WHERE name = 'mcp_client')
BEGIN
@@ -1485,6 +1503,7 @@ export const SCHEMA_SCRIPTS = [
INIT_QUOTESUMMARY,
INIT_SHIPMENTSUMMARY,
INIT_DELIVERYSUMMARY,
INIT_ARTICLEWAREHOUSESUMMARY,
INIT_MCP_CLIENT,
INIT_MCP_AUTH_CODE,
INIT_MCP_TOKEN,

View File

@@ -23,4 +23,16 @@ WHERE id = @id
AND customergroup_id IN (
SELECT id FROM customergroup WHERE company_id = @companyId AND name = @groupName
)
`;
export const CHECK_SUPPLIER_IN_USE = `
SELECT 1 AS inUse
FROM manifest m
WHERE m.entity_id = @id AND m.company_id = @companyId
UNION ALL
SELECT 1 AS inUse
FROM articlesupplier asup
INNER JOIN article a ON a.id = asup.article_id
WHERE asup.entity_id = @id AND a.company_id = @companyId
LIMIT 1;
`;

View File

@@ -412,7 +412,7 @@ CREATE TABLE IF NOT EXISTS articlesupplier (
UNIQUE (article_id, entity_id),
UNIQUE (article_id, sort),
FOREIGN KEY (article_id) REFERENCES article(id) ON DELETE CASCADE,
FOREIGN KEY (entity_id) REFERENCES entity(id) ON DELETE CASCADE,
FOREIGN KEY (entity_id) REFERENCES entity(id) ON DELETE NO ACTION,
FOREIGN KEY (tax_id) REFERENCES tax(id) ON DELETE NO ACTION
);
CREATE INDEX IF NOT EXISTS IX_articlesupplier_article_entity
@@ -430,7 +430,7 @@ CREATE TABLE IF NOT EXISTS manifest (
"date" TEXT NOT NULL DEFAULT (${UTC_NOW}),
created_at TEXT NOT NULL DEFAULT (${UTC_NOW}),
FOREIGN KEY (company_id) REFERENCES company(id) ON DELETE NO ACTION,
FOREIGN KEY (entity_id) REFERENCES entity(id) ON DELETE SET NULL
FOREIGN KEY (entity_id) REFERENCES entity(id) ON DELETE NO ACTION
);
`;
@@ -981,6 +981,20 @@ CREATE INDEX IF NOT EXISTS IX_deliverysummary_company_supplier
ON deliverysummary (company_id, supplier_id);
`;
export const INIT_ARTICLEWAREHOUSESUMMARY = `
CREATE TABLE IF NOT EXISTS articlewarehousesummary (
id INTEGER PRIMARY KEY AUTOINCREMENT,
article_id INTEGER NOT NULL,
warehouse_id INTEGER NOT NULL,
stock REAL NOT NULL DEFAULT 0,
UNIQUE (article_id, warehouse_id),
FOREIGN KEY (article_id) REFERENCES article(id) ON DELETE CASCADE,
FOREIGN KEY (warehouse_id) REFERENCES warehouse(id) ON DELETE CASCADE
);
CREATE INDEX IF NOT EXISTS IX_articlewarehousesummary_warehouse
ON articlewarehousesummary (warehouse_id);
`;
export const INIT_MCP_CLIENT = `
CREATE TABLE IF NOT EXISTS mcp_client (
id INTEGER PRIMARY KEY AUTOINCREMENT,
@@ -1111,6 +1125,7 @@ export const SCHEMA_SCRIPTS = [
INIT_QUOTESUMMARY,
INIT_SHIPMENTSUMMARY,
INIT_DELIVERYSUMMARY,
INIT_ARTICLEWAREHOUSESUMMARY,
INIT_MCP_CLIENT,
INIT_MCP_AUTH_CODE,
INIT_MCP_TOKEN,