This commit is contained in:
seb
2026-10-12 19:48:07 +02:00
parent 64d1772842
commit 28e62093b3
25 changed files with 979 additions and 125 deletions

View File

@@ -57,13 +57,13 @@ WHERE id = @id
`;
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)
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)
`;
export const SHIPPING_LIST_BY_MANIFEST = `
SELECT id, manifest_id, [number], [type], [state]
SELECT id, manifest_id, [number], tracking_code, carrier, [type], [state]
FROM shipping
WHERE manifest_id = @manifestId
ORDER BY id ASC
@@ -76,7 +76,7 @@ WHERE id = @id
`;
export const GET_SHIPPING_BY_ID = `
SELECT s.id, s.manifest_id AS manifestId, s.[number], s.[type], s.[state]
SELECT s.id, s.manifest_id AS manifestId, s.[number], s.tracking_code, s.carrier, s.[type], s.[state]
FROM shipping s
INNER JOIN manifest m ON m.id = s.manifest_id
WHERE s.id = @id AND m.company_id = @companyId;
@@ -84,8 +84,8 @@ WHERE s.id = @id AND m.company_id = @companyId;
export const SHIPPING_UPDATE = `
UPDATE shipping
SET [type] = @type, [state] = @state
OUTPUT INSERTED.id, INSERTED.manifest_id, INSERTED.[number], INSERTED.[type], INSERTED.[state]
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]
WHERE id = @id;
`;

View File

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

View File

@@ -0,0 +1,57 @@
export const SHIPMENT_TYPE = 'shipment';
export const GET_ORDER_HEADER = `
SELECT id, company_id AS companyId, [number], [type], entity_id AS entityId, external_number AS externalNumber, [date]
FROM manifest
WHERE id = @orderId AND company_id = @companyId AND [type] = 'order';
`;
export const GET_ORDER_LINES = `
SELECT id, sku, name, pu, amount, net, rebate, taxrate, comment
FROM manifestarticle
WHERE manifest_id = @orderId
ORDER BY id ASC;
`;
export const GET_SHIPMENT_PREFIX = `
SELECT prefix
FROM numbers
WHERE company_id = @companyId AND [type] = 'shipment';
`;
export const LIST_SHIPMENTS_BY_ORDER_NUMBER_PATTERN = `
SELECT m.id, m.[number], m.[type], m.entity_id AS entityId, m.external_number AS externalNumber, m.[date], m.created_at AS createdAt
FROM manifest m
WHERE m.company_id = @companyId
AND m.[type] = 'shipment'
AND m.[number] LIKE @pattern
ORDER BY m.id ASC;
`;
export const GET_SHIPPED_AMOUNTS_BY_ORDER_PATTERN = `
SELECT ma.sku, SUM(ma.amount) AS shippedAmount
FROM manifest m
INNER JOIN manifestarticle ma ON ma.manifest_id = m.id
WHERE m.company_id = @companyId
AND m.[type] = 'shipment'
AND m.[number] LIKE @pattern
AND (@excludeShipmentId IS NULL OR m.id != @excludeShipmentId)
GROUP BY ma.sku;
`;
export const GET_SHIPMENT_HEADER = `
SELECT m.id, m.[number], m.[type], m.entity_id AS entityId, m.external_number AS externalNumber, m.[date], m.created_at AS createdAt
FROM manifest m
WHERE m.id = @id AND m.company_id = @companyId AND m.[type] = 'shipment';
`;
export const CHECK_SHIPMENT_PACKAGES_SHIPPED = `
SELECT TOP 1 id
FROM shipping
WHERE manifest_id = @id AND LOWER([state]) = 'shipped';
`;
export const DELETE_SHIPMENT = `
DELETE FROM manifest
WHERE id = @id AND company_id = @companyId AND [type] = 'shipment';
`;

View File

@@ -1151,6 +1151,8 @@ BEGIN
id INT IDENTITY(1,1) PRIMARY KEY,
manifest_id INT NOT NULL,
[number] NVARCHAR(100) NOT NULL,
tracking_code NVARCHAR(255) NULL,
carrier NVARCHAR(100) 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

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")
VALUES (@companyId, @type)
INSERT INTO numbers (company_id, "type", prefix)
VALUES (@companyId, @type, COALESCE(@prefix, ''))
ON CONFLICT (company_id, "type") DO NOTHING
`;

View File

@@ -0,0 +1,15 @@
import * as source from '../../mssql/queries/shipment.js';
import { translateQueries } from './translate.js';
const queries = translateQueries(source, 'shipment');
export const {
SHIPMENT_TYPE,
GET_ORDER_HEADER,
GET_ORDER_LINES,
GET_SHIPMENT_PREFIX,
LIST_SHIPMENTS_BY_ORDER_NUMBER_PATTERN,
GET_SHIPPED_AMOUNTS_BY_ORDER_PATTERN,
GET_SHIPMENT_HEADER,
CHECK_SHIPMENT_PACKAGES_SHIPPED,
DELETE_SHIPMENT,
} = queries;

View File

@@ -823,6 +823,8 @@ 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,
"type" TEXT NOT NULL,
"state" TEXT NOT NULL,
FOREIGN KEY (manifest_id) REFERENCES manifest(id) ON DELETE CASCADE