Files
dashlibstorage/src/providers/mssql/queries/shipment.js
2026-10-20 05:33:11 +02:00

107 lines
3.1 KiB
JavaScript

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
LEFT JOIN shipmentsummary ss ON ss.manifest_id = m.id
WHERE m.company_id = @companyId
AND m.[type] = 'shipment'
AND m.[number] LIKE @pattern
AND (ss.state IS NULL OR ss.state != 'cancelled')
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
LEFT JOIN shipmentsummary ss ON ss.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)
AND (ss.state IS NULL OR ss.state != 'cancelled')
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 CHECK_ORDER_HAS_SHIPMENTS = `
SELECT TOP 1 m.id
FROM manifest m
LEFT JOIN shipmentsummary ss ON ss.manifest_id = m.id AND ss.company_id = @companyId
WHERE m.company_id = @companyId
AND m.[type] = 'shipment'
AND (ss.state IS NULL OR ss.state != 'cancelled')
AND (
m.[number] LIKE @pattern
OR ss.order_id = @orderId
OR ss.order_number = @orderNumber
);
`;
export const DELETE_SHIPMENT = `
DELETE FROM manifest
WHERE id = @id AND company_id = @companyId AND [type] = 'shipment';
`;
export const GET_DEFAULT_WAREHOUSE = `
SELECT TOP 1 id, name
FROM warehouse
WHERE company_id = @companyId
ORDER BY sort ASC, name ASC, id ASC;
`;
export const GET_ARTICLE_TRACK_STOCK = `
SELECT TOP 1 a.id, a.sku, a.track_stock
FROM article a
WHERE a.company_id = @companyId
AND (
a.sku = @sku
OR EXISTS (SELECT 1 FROM articlesupplier asup WHERE asup.article_id = a.id AND asup.sku = @sku)
);
`;
export const GET_ARTICLE_WAREHOUSE_STOCK = `
SELECT COALESCE(SUM(l.amount), 0) AS stock
FROM ledger l
INNER JOIN manifestarticle ma ON ma.id = l.manifestarticle_id
INNER JOIN manifest m ON m.id = ma.manifest_id
WHERE l.warehouse_id = @warehouseId
AND m.company_id = @companyId
AND (
ma.sku = @sku
OR ma.sku IN (SELECT asup.sku FROM articlesupplier asup WHERE asup.article_id = @articleId)
);
`;