This commit is contained in:
seb
2026-10-15 20:14:51 +02:00
parent 7c8c24eb4d
commit 2179b2e241
23 changed files with 1242 additions and 105 deletions

View File

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

View File

@@ -5,8 +5,8 @@ IF NOT EXISTS (
WHERE company_id = @companyId AND [type] = @type
)
BEGIN
INSERT INTO numbers (company_id, [type], prefix)
VALUES (@companyId, @type, ISNULL(@prefix, ''));
INSERT INTO numbers (company_id, [type], prefix, padding, [next])
VALUES (@companyId, @type, ISNULL(@prefix, ''), ISNULL(@padding, 0), ISNULL(@next, 1));
END
`;

View File

@@ -1243,6 +1243,41 @@ BEGIN
END
`;
export const INIT_SHIPMENTSUMMARY = `
IF NOT EXISTS (SELECT * FROM sys.tables WHERE name = 'shipmentsummary')
BEGIN
CREATE TABLE shipmentsummary (
id INT IDENTITY(1,1) PRIMARY KEY,
company_id INT NOT NULL,
manifest_id INT NOT NULL CONSTRAINT UQ_shipmentsummary_manifest UNIQUE,
shipment_number NVARCHAR(100) NOT NULL,
shipment_date DATETIME2 NOT NULL,
created_at DATETIME2 NOT NULL CONSTRAINT DF_shipmentsummary_created_at DEFAULT SYSUTCDATETIME(),
order_id INT NULL,
order_number NVARCHAR(100) NULL,
entity_id INT NULL,
customer_name NVARCHAR(255) NULL,
positions INT NOT NULL CONSTRAINT DF_shipmentsummary_positions DEFAULT 0,
total_quantity FLOAT NOT NULL CONSTRAINT DF_shipmentsummary_total_quantity DEFAULT 0,
package_count INT NOT NULL CONSTRAINT DF_shipmentsummary_package_count DEFAULT 0,
carrier NVARCHAR(100) NULL,
tracking_code NVARCHAR(255) NULL,
state NVARCHAR(50) NOT NULL CONSTRAINT DF_shipmentsummary_state DEFAULT 'new',
CONSTRAINT FK_shipmentsummary_company FOREIGN KEY (company_id) REFERENCES company(id) ON DELETE NO ACTION,
CONSTRAINT FK_shipmentsummary_manifest FOREIGN KEY (manifest_id) REFERENCES manifest(id) ON DELETE CASCADE,
CONSTRAINT FK_shipmentsummary_entity FOREIGN KEY (entity_id) REFERENCES entity(id) ON DELETE SET NULL
);
CREATE INDEX IX_shipmentsummary_company_date
ON shipmentsummary (company_id, shipment_date DESC, manifest_id DESC);
CREATE INDEX IX_shipmentsummary_company_number
ON shipmentsummary (company_id, shipment_number);
CREATE INDEX IX_shipmentsummary_company_state
ON shipmentsummary (company_id, state);
CREATE INDEX IX_shipmentsummary_company_order
ON shipmentsummary (company_id, order_id);
END
`;
export const INIT_MCP_CLIENT = `
IF NOT EXISTS (SELECT * FROM sys.tables WHERE name = 'mcp_client')
BEGIN
@@ -1367,6 +1402,7 @@ export const SCHEMA_SCRIPTS = [
INIT_PACKAGE,
INIT_ORDERSUMMARY,
INIT_QUOTESUMMARY,
INIT_SHIPMENTSUMMARY,
INIT_MCP_CLIENT,
INIT_MCP_AUTH_CODE,
INIT_MCP_TOKEN,

View File

@@ -5,8 +5,8 @@ const queries = translateQueries(source, 'numbers');
export const { GET_BY_COMPANY_AND_ID, LIST_BY_COMPANY, UPDATE_BY_COMPANY_AND_ID } = queries;
export const ENSURE_TYPE = `
INSERT INTO numbers (company_id, "type", prefix)
VALUES (@companyId, @type, COALESCE(@prefix, ''))
INSERT INTO numbers (company_id, "type", prefix, padding, "next")
VALUES (@companyId, @type, COALESCE(@prefix, ''), COALESCE(@padding, 0), COALESCE(@next, 1))
ON CONFLICT (company_id, "type") DO NOTHING
`;

View File

@@ -899,6 +899,38 @@ CREATE INDEX IF NOT EXISTS IX_quotesummary_company_number
ON quotesummary (company_id, quote_number);
`;
export const INIT_SHIPMENTSUMMARY = `
CREATE TABLE IF NOT EXISTS shipmentsummary (
id INTEGER PRIMARY KEY AUTOINCREMENT,
company_id INTEGER NOT NULL,
manifest_id INTEGER NOT NULL UNIQUE,
shipment_number TEXT NOT NULL,
shipment_date TEXT NOT NULL,
created_at TEXT NOT NULL DEFAULT (${UTC_NOW}),
order_id INTEGER NULL,
order_number TEXT NULL,
entity_id INTEGER NULL,
customer_name TEXT NULL,
positions INTEGER NOT NULL DEFAULT 0,
total_quantity REAL NOT NULL DEFAULT 0,
package_count INTEGER NOT NULL DEFAULT 0,
carrier TEXT NULL,
tracking_code TEXT NULL,
state TEXT NOT NULL DEFAULT 'new',
FOREIGN KEY (company_id) REFERENCES company(id) ON DELETE NO ACTION,
FOREIGN KEY (manifest_id) REFERENCES manifest(id) ON DELETE CASCADE,
FOREIGN KEY (entity_id) REFERENCES entity(id) ON DELETE SET NULL
);
CREATE INDEX IF NOT EXISTS IX_shipmentsummary_company_date
ON shipmentsummary (company_id, shipment_date DESC, manifest_id DESC);
CREATE INDEX IF NOT EXISTS IX_shipmentsummary_company_number
ON shipmentsummary (company_id, shipment_number);
CREATE INDEX IF NOT EXISTS IX_shipmentsummary_company_state
ON shipmentsummary (company_id, state);
CREATE INDEX IF NOT EXISTS IX_shipmentsummary_company_order
ON shipmentsummary (company_id, order_id);
`;
export const INIT_MCP_CLIENT = `
CREATE TABLE IF NOT EXISTS mcp_client (
id INTEGER PRIMARY KEY AUTOINCREMENT,
@@ -1009,6 +1041,7 @@ export const SCHEMA_SCRIPTS = [
INIT_PACKAGE,
INIT_ORDERSUMMARY,
INIT_QUOTESUMMARY,
INIT_SHIPMENTSUMMARY,
INIT_MCP_CLIENT,
INIT_MCP_AUTH_CODE,
INIT_MCP_TOKEN,