This commit is contained in:
seb
2026-10-17 05:10:28 +02:00
parent a194cf6b8b
commit f8cc01baf0
25 changed files with 1034 additions and 54 deletions

View File

@@ -7,6 +7,7 @@ export const TABLES = [
'ordersummary',
'package',
'shipping',
'carrier',
'payment',
'account',
'articleattributevalue',

View File

@@ -0,0 +1,78 @@
export const LIST_BY_COMPANY = `
SELECT
id,
company_id,
name,
sort,
has_packages,
is_reverse
FROM carrier
WHERE company_id = @companyId
ORDER BY sort ASC, name ASC, id ASC;
`;
export const GET_BY_COMPANY_AND_ID = `
SELECT
id,
company_id,
name,
sort,
has_packages,
is_reverse
FROM carrier
WHERE id = @id AND company_id = @companyId;
`;
export const GET_BY_COMPANY_AND_NAME = `
SELECT
id,
company_id,
name,
sort,
has_packages,
is_reverse
FROM carrier
WHERE company_id = @companyId AND name = @name;
`;
export const GET_NEXT_SORT = `
SELECT ISNULL(MAX(sort), -1) + 1 AS sort
FROM carrier
WHERE company_id = @companyId;
`;
export const CREATE = `
INSERT INTO carrier (company_id, name, sort, has_packages, is_reverse)
OUTPUT INSERTED.id, INSERTED.company_id, INSERTED.name, INSERTED.sort, INSERTED.has_packages, INSERTED.is_reverse
VALUES (@companyId, @name, @sort, @hasPackages, @isReverse);
`;
export const UPDATE = `
UPDATE carrier
SET name = @name, sort = @sort, has_packages = @hasPackages, is_reverse = @isReverse
OUTPUT INSERTED.id, INSERTED.company_id, INSERTED.name, INSERTED.sort, INSERTED.has_packages, INSERTED.is_reverse
WHERE id = @id AND company_id = @companyId;
`;
export const LIST_IDS_BY_COMPANY = `
SELECT id
FROM carrier
WHERE company_id = @companyId;
`;
export const UPDATE_SORT = `
UPDATE carrier
SET sort = @sort
WHERE id = @id AND company_id = @companyId;
`;
export const DELETE_BY_COMPANY_AND_ID = `
DELETE FROM carrier
WHERE id = @id AND company_id = @companyId;
`;
export const CHECK_SHIPPING_USAGE = `
SELECT TOP 1 id
FROM shipping
WHERE carrier_id = @carrierId;
`;

View File

@@ -56,17 +56,24 @@ WHERE id = @id
AND manifest_id IN (SELECT m.id FROM manifest m WHERE m.company_id = @companyId)
`;
export const CHECK_CARRIER = `
SELECT TOP 1 id, name
FROM carrier
WHERE id = @carrierId AND company_id = @companyId;
`;
export const SHIPPING_CREATE = `
INSERT INTO shipping (manifest_id, [number], tracking_code, carrier, [type], [state])
OUTPUT INSERTED.id, INSERTED.manifest_id, INSERTED.[number], INSERTED.tracking_code, INSERTED.carrier, INSERTED.[type], INSERTED.[state]
VALUES (@manifestId, @number, @trackingCode, @carrier, @type, @state)
INSERT INTO shipping (manifest_id, [number], tracking_code, carrier_id, [type], [state])
OUTPUT INSERTED.id, INSERTED.manifest_id, INSERTED.[number], INSERTED.tracking_code, INSERTED.carrier_id, INSERTED.[type], INSERTED.[state]
VALUES (@manifestId, @number, @trackingCode, @carrierId, @type, @state)
`;
export const SHIPPING_LIST_BY_MANIFEST = `
SELECT id, manifest_id, [number], tracking_code, carrier, [type], [state]
FROM shipping
WHERE manifest_id = @manifestId
ORDER BY id ASC
SELECT s.id, s.manifest_id, s.[number], s.tracking_code, s.carrier_id, c.name AS carrier, s.[type], s.[state]
FROM shipping s
LEFT JOIN carrier c ON c.id = s.carrier_id
WHERE s.manifest_id = @manifestId
ORDER BY s.id ASC
`;
export const SHIPPING_DELETE = `
@@ -76,16 +83,17 @@ WHERE id = @id
`;
export const GET_SHIPPING_BY_ID = `
SELECT s.id, s.manifest_id AS manifestId, s.[number], s.tracking_code, s.carrier, s.[type], s.[state]
SELECT s.id, s.manifest_id AS manifestId, s.[number], s.tracking_code, s.carrier_id AS carrierId, c.name AS carrier, s.[type], s.[state]
FROM shipping s
INNER JOIN manifest m ON m.id = s.manifest_id
LEFT JOIN carrier c ON c.id = s.carrier_id
WHERE s.id = @id AND m.company_id = @companyId;
`;
export const SHIPPING_UPDATE = `
UPDATE shipping
SET [type] = @type, [state] = @state, tracking_code = @trackingCode, carrier = @carrier
OUTPUT INSERTED.id, INSERTED.manifest_id, INSERTED.[number], INSERTED.tracking_code, INSERTED.carrier, INSERTED.[type], INSERTED.[state]
SET [type] = @type, [state] = @state, tracking_code = @trackingCode, carrier_id = @carrierId
OUTPUT INSERTED.id, INSERTED.manifest_id, INSERTED.[number], INSERTED.tracking_code, INSERTED.carrier_id, INSERTED.[type], INSERTED.[state]
WHERE id = @id;
`;

View File

@@ -1144,6 +1144,22 @@ BEGIN
END
`;
export const INIT_CARRIER = `
IF NOT EXISTS (SELECT * FROM sys.tables WHERE name = 'carrier')
BEGIN
CREATE TABLE carrier (
id INT IDENTITY(1,1) PRIMARY KEY,
company_id INT NOT NULL,
name NVARCHAR(255) NOT NULL,
sort INT NOT NULL CONSTRAINT DF_carrier_sort DEFAULT 0,
has_packages BIT NOT NULL CONSTRAINT DF_carrier_has_packages DEFAULT 0,
is_reverse BIT NOT NULL CONSTRAINT DF_carrier_is_reverse DEFAULT 0,
CONSTRAINT FK_carrier_company FOREIGN KEY (company_id) REFERENCES company(id) ON DELETE CASCADE,
CONSTRAINT UQ_carrier_company_name UNIQUE (company_id, name)
);
END
`;
export const INIT_SHIPPING = `
IF NOT EXISTS (SELECT * FROM sys.tables WHERE name = 'shipping')
BEGIN
@@ -1152,10 +1168,11 @@ BEGIN
manifest_id INT NOT NULL,
[number] NVARCHAR(100) NOT NULL,
tracking_code NVARCHAR(255) NULL,
carrier NVARCHAR(100) NULL,
carrier_id INT 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
CONSTRAINT FK_shipping_manifest FOREIGN KEY (manifest_id) REFERENCES manifest(id) ON DELETE CASCADE,
CONSTRAINT FK_shipping_carrier FOREIGN KEY (carrier_id) REFERENCES carrier(id) ON DELETE NO ACTION
);
END
`;
@@ -1461,6 +1478,7 @@ export const SCHEMA_SCRIPTS = [
INIT_MANIFESTATTACHMENT_TRIGGER,
INIT_ACCOUNT,
INIT_PAYMENT,
INIT_CARRIER,
INIT_SHIPPING,
INIT_PACKAGE,
INIT_ORDERSUMMARY,

View File

@@ -0,0 +1,16 @@
import * as source from '../../mssql/queries/carrier.js';
import { translateQueries } from './translate.js';
const queries = translateQueries(source, 'carrier');
export const {
LIST_BY_COMPANY,
GET_BY_COMPANY_AND_ID,
GET_BY_COMPANY_AND_NAME,
GET_NEXT_SORT,
CREATE,
UPDATE,
LIST_IDS_BY_COMPANY,
UPDATE_SORT,
DELETE_BY_COMPANY_AND_ID,
CHECK_SHIPPING_USAGE,
} = queries;

View File

@@ -4,6 +4,7 @@ import { translateQueries } from './translate.js';
const queries = translateQueries(source, 'logistics');
export const {
CHECK_ACCOUNT_COMPANY,
CHECK_CARRIER,
CHECK_ENTITYADDRESS_COMPANY,
CHECK_SHIPPING_COMPANY,
ACCOUNT_CREATE,

View File

@@ -818,16 +818,30 @@ CREATE TABLE IF NOT EXISTS payment (
);
`;
export const INIT_CARRIER = `
CREATE TABLE IF NOT EXISTS carrier (
id INTEGER PRIMARY KEY AUTOINCREMENT,
company_id INTEGER NOT NULL,
name TEXT NOT NULL,
sort INTEGER NOT NULL DEFAULT 0,
has_packages INTEGER NOT NULL DEFAULT 0,
is_reverse INTEGER NOT NULL DEFAULT 0,
FOREIGN KEY (company_id) REFERENCES company(id) ON DELETE CASCADE,
UNIQUE (company_id, name)
);
`;
export const INIT_SHIPPING = `
CREATE TABLE IF NOT EXISTS shipping (
id INTEGER PRIMARY KEY AUTOINCREMENT,
manifest_id INTEGER NOT NULL,
"number" TEXT NOT NULL,
tracking_code TEXT NULL,
carrier TEXT NULL,
carrier_id INTEGER NOT NULL,
"type" TEXT NOT NULL,
"state" TEXT NOT NULL,
FOREIGN KEY (manifest_id) REFERENCES manifest(id) ON DELETE CASCADE
FOREIGN KEY (manifest_id) REFERENCES manifest(id) ON DELETE CASCADE,
FOREIGN KEY (carrier_id) REFERENCES carrier(id) ON DELETE NO ACTION
);
`;
@@ -1090,6 +1104,7 @@ export const SCHEMA_SCRIPTS = [
INIT_MANIFESTATTACHMENT_TRIGGER,
INIT_ACCOUNT,
INIT_PAYMENT,
INIT_CARRIER,
INIT_SHIPPING,
INIT_PACKAGE,
INIT_ORDERSUMMARY,