This commit is contained in:
seb
2026-10-09 10:41:17 +02:00
parent 760f074b4e
commit f3674edcb7
24 changed files with 1181 additions and 0 deletions

View File

@@ -1,5 +1,9 @@
/** Drop order = reverse of schema create dependency order. */
export const TABLES = [
'package',
'shipping',
'payment',
'account',
'articleattributevalue',
'articleproperty',
'attributevalue',

View File

@@ -0,0 +1,100 @@
export const CHECK_ACCOUNT_COMPANY = `
SELECT id
FROM account
WHERE id = @accountId AND company_id = @companyId
`;
export const CHECK_ENTITYADDRESS_COMPANY = `
SELECT ea.id
FROM entityaddress ea
INNER JOIN entity e ON e.id = ea.entity_id
INNER JOIN customergroup cg ON cg.id = e.customergroup_id
WHERE ea.id = @entityaddressId AND cg.company_id = @companyId
`;
export const CHECK_SHIPPING_COMPANY = `
SELECT s.id
FROM shipping s
INNER JOIN manifest m ON m.id = s.manifest_id
WHERE s.id = @shippingId AND m.company_id = @companyId
`;
export const ACCOUNT_CREATE = `
INSERT INTO account (company_id, [type], [name])
OUTPUT INSERTED.id, INSERTED.company_id, INSERTED.[type], INSERTED.[name]
VALUES (@companyId, @type, @name)
`;
export const ACCOUNT_LIST = `
SELECT id, company_id, [type], [name]
FROM account
WHERE company_id = @companyId
ORDER BY [name] ASC, id ASC
`;
export const ACCOUNT_DELETE = `
DELETE FROM account
WHERE id = @id AND company_id = @companyId
`;
export const PAYMENT_CREATE = `
INSERT INTO payment (account_id, manifest_id, [type], amount)
OUTPUT INSERTED.id, INSERTED.account_id, INSERTED.manifest_id, INSERTED.[type], INSERTED.amount
VALUES (@accountId, @manifestId, @type, @amount)
`;
export const PAYMENT_LIST_BY_MANIFEST = `
SELECT id, account_id, manifest_id, [type], amount
FROM payment
WHERE manifest_id = @manifestId
ORDER BY id ASC
`;
export const PAYMENT_DELETE = `
DELETE FROM payment
WHERE id = @id
AND manifest_id IN (SELECT m.id FROM manifest m WHERE m.company_id = @companyId)
`;
export const SHIPPING_CREATE = `
INSERT INTO shipping (manifest_id, [number], [type], [state])
OUTPUT INSERTED.id, INSERTED.manifest_id, INSERTED.[number], INSERTED.[type], INSERTED.[state]
VALUES (@manifestId, @number, @type, @state)
`;
export const SHIPPING_LIST_BY_MANIFEST = `
SELECT id, manifest_id, [number], [type], [state]
FROM shipping
WHERE manifest_id = @manifestId
ORDER BY id ASC
`;
export const SHIPPING_DELETE = `
DELETE FROM shipping
WHERE id = @id
AND manifest_id IN (SELECT m.id FROM manifest m WHERE m.company_id = @companyId)
`;
export const PACKAGE_CREATE = `
INSERT INTO package (shipping_id, entityaddress_id, [number], [type], [state], details)
OUTPUT INSERTED.id, INSERTED.shipping_id, INSERTED.entityaddress_id, INSERTED.[number], INSERTED.[type], INSERTED.[state], INSERTED.details
VALUES (@shippingId, @entityaddressId, @number, @type, @state, @details)
`;
export const PACKAGE_LIST_BY_SHIPPING = `
SELECT id, shipping_id, entityaddress_id, [number], [type], [state], details
FROM package
WHERE shipping_id = @shippingId
ORDER BY id ASC
`;
export const PACKAGE_DELETE = `
DELETE FROM package
WHERE id = @id
AND shipping_id IN (
SELECT s.id
FROM shipping s
INNER JOIN manifest m ON m.id = s.manifest_id
WHERE m.company_id = @companyId
)
`;

View File

@@ -1094,6 +1094,65 @@ BEGIN
END
`;
export const INIT_ACCOUNT = `
IF NOT EXISTS (SELECT * FROM sys.tables WHERE name = 'account')
BEGIN
CREATE TABLE account (
id INT IDENTITY(1,1) PRIMARY KEY,
company_id INT NOT NULL,
[type] NVARCHAR(100) NOT NULL,
[name] NVARCHAR(255) NOT NULL,
CONSTRAINT FK_account_company FOREIGN KEY (company_id) REFERENCES company(id) ON DELETE CASCADE
);
END
`;
export const INIT_PAYMENT = `
IF NOT EXISTS (SELECT * FROM sys.tables WHERE name = 'payment')
BEGIN
CREATE TABLE payment (
id INT IDENTITY(1,1) PRIMARY KEY,
account_id INT NOT NULL,
manifest_id INT NOT NULL,
[type] NVARCHAR(100) NOT NULL,
amount FLOAT NOT NULL,
CONSTRAINT FK_payment_account FOREIGN KEY (account_id) REFERENCES account(id) ON DELETE CASCADE,
CONSTRAINT FK_payment_manifest FOREIGN KEY (manifest_id) REFERENCES manifest(id) ON DELETE CASCADE
);
END
`;
export const INIT_SHIPPING = `
IF NOT EXISTS (SELECT * FROM sys.tables WHERE name = 'shipping')
BEGIN
CREATE TABLE shipping (
id INT IDENTITY(1,1) PRIMARY KEY,
manifest_id INT NOT NULL,
[number] NVARCHAR(100) NOT NULL,
[type] NVARCHAR(100) NOT NULL,
[state] NVARCHAR(100) NOT NULL,
CONSTRAINT FK_shipping_manifest FOREIGN KEY (manifest_id) REFERENCES manifest(id) ON DELETE CASCADE
);
END
`;
export const INIT_PACKAGE = `
IF NOT EXISTS (SELECT * FROM sys.tables WHERE name = 'package')
BEGIN
CREATE TABLE package (
id INT IDENTITY(1,1) PRIMARY KEY,
shipping_id INT NOT NULL,
entityaddress_id INT NOT NULL,
[number] NVARCHAR(100) NOT NULL,
[type] NVARCHAR(100) NOT NULL,
[state] NVARCHAR(100) NOT NULL,
details NVARCHAR(MAX) NULL,
CONSTRAINT FK_package_shipping FOREIGN KEY (shipping_id) REFERENCES shipping(id) ON DELETE CASCADE,
CONSTRAINT FK_package_entityaddress FOREIGN KEY (entityaddress_id) REFERENCES entityaddress(id) ON DELETE NO ACTION
);
END
`;
/** DDL scripts in dependency order for schema init. */
export const SCHEMA_SCRIPTS = [
INIT_META,
@@ -1156,5 +1215,9 @@ export const SCHEMA_SCRIPTS = [
INIT_FILE,
INIT_MANIFESTATTACHMENT,
INIT_MANIFESTATTACHMENT_TRIGGER,
INIT_ACCOUNT,
INIT_PAYMENT,
INIT_SHIPPING,
INIT_PACKAGE,
];

View File

@@ -0,0 +1,21 @@
import * as source from '../../mssql/queries/logistics.js';
import { translateQueries } from './translate.js';
const queries = translateQueries(source, 'logistics');
export const {
CHECK_ACCOUNT_COMPANY,
CHECK_ENTITYADDRESS_COMPANY,
CHECK_SHIPPING_COMPANY,
ACCOUNT_CREATE,
ACCOUNT_LIST,
ACCOUNT_DELETE,
PAYMENT_CREATE,
PAYMENT_LIST_BY_MANIFEST,
PAYMENT_DELETE,
SHIPPING_CREATE,
SHIPPING_LIST_BY_MANIFEST,
SHIPPING_DELETE,
PACKAGE_CREATE,
PACKAGE_LIST_BY_SHIPPING,
PACKAGE_DELETE,
} = queries;

View File

@@ -777,6 +777,53 @@ CREATE TABLE IF NOT EXISTS categoryattributevalue (
);
`;
export const INIT_ACCOUNT = `
CREATE TABLE IF NOT EXISTS account (
id INTEGER PRIMARY KEY,
company_id INTEGER NOT NULL,
"type" TEXT NOT NULL,
"name" TEXT NOT NULL,
FOREIGN KEY (company_id) REFERENCES company(id) ON DELETE CASCADE
);
`;
export const INIT_PAYMENT = `
CREATE TABLE IF NOT EXISTS payment (
id INTEGER PRIMARY KEY,
account_id INTEGER NOT NULL,
manifest_id INTEGER NOT NULL,
"type" TEXT NOT NULL,
amount REAL NOT NULL,
FOREIGN KEY (account_id) REFERENCES account(id) ON DELETE CASCADE,
FOREIGN KEY (manifest_id) REFERENCES manifest(id) ON DELETE CASCADE
);
`;
export const INIT_SHIPPING = `
CREATE TABLE IF NOT EXISTS shipping (
id INTEGER PRIMARY KEY,
manifest_id INTEGER NOT NULL,
"number" TEXT NOT NULL,
"type" TEXT NOT NULL,
"state" TEXT NOT NULL,
FOREIGN KEY (manifest_id) REFERENCES manifest(id) ON DELETE CASCADE
);
`;
export const INIT_PACKAGE = `
CREATE TABLE IF NOT EXISTS package (
id INTEGER PRIMARY KEY,
shipping_id INTEGER NOT NULL,
entityaddress_id INTEGER NOT NULL,
"number" TEXT NOT NULL,
"type" TEXT NOT NULL,
"state" TEXT NOT NULL,
details TEXT,
FOREIGN KEY (shipping_id) REFERENCES shipping(id) ON DELETE CASCADE,
FOREIGN KEY (entityaddress_id) REFERENCES entityaddress(id) ON DELETE NO ACTION
);
`;
/** DDL scripts in dependency order for SQLite schema initialization. */
export const SCHEMA_SCRIPTS = [
INIT_META,
@@ -836,4 +883,8 @@ export const SCHEMA_SCRIPTS = [
INIT_FILE,
INIT_MANIFESTATTACHMENT,
INIT_MANIFESTATTACHMENT_TRIGGER,
INIT_ACCOUNT,
INIT_PAYMENT,
INIT_SHIPPING,
INIT_PACKAGE,
];