u
This commit is contained in:
@@ -53,20 +53,28 @@ const SQL_SHIPPED_QTY_SQLITE = `
|
|||||||
WHERE m_s.company_id = @companyId
|
WHERE m_s.company_id = @companyId
|
||||||
AND m_s."type" = 'shipment'
|
AND m_s."type" = 'shipment'
|
||||||
AND COALESCE(ss.state, 'new') != 'cancelled'
|
AND COALESCE(ss.state, 'new') != 'cancelled'
|
||||||
AND m_s."number" >= (@orderNumber || @shipmentPrefix)
|
AND m_s."number" NOT LIKE '%#cancelled#%'
|
||||||
AND m_s."number" < (@orderNumber || @shipmentPrefix || char(127))
|
AND (
|
||||||
|
ss.order_id = @manifestId
|
||||||
|
OR ss.order_number = @orderNumber
|
||||||
|
OR m_s."number" LIKE @orderNumber || @shipmentPrefix || '%'
|
||||||
|
)
|
||||||
`;
|
`;
|
||||||
|
|
||||||
const SQL_SHIPPED_QTY_MSSQL = `
|
const SQL_SHIPPED_QTY_MSSQL = `
|
||||||
SELECT COALESCE(SUM(ma_s.amount), 0) AS shipped_quantity
|
SELECT COALESCE(SUM(ma_s.amount), 0) AS shipped_quantity
|
||||||
FROM manifest m_s
|
FROM manifest m_s WITH (NOLOCK)
|
||||||
JOIN manifestarticle ma_s ON ma_s.manifest_id = m_s.id
|
JOIN manifestarticle ma_s WITH (NOLOCK) ON ma_s.manifest_id = m_s.id
|
||||||
LEFT JOIN shipmentsummary ss ON ss.manifest_id = m_s.id
|
LEFT JOIN shipmentsummary ss WITH (NOLOCK) ON ss.manifest_id = m_s.id
|
||||||
WHERE m_s.company_id = @companyId
|
WHERE m_s.company_id = @companyId
|
||||||
AND m_s.[type] = 'shipment'
|
AND m_s.[type] = 'shipment'
|
||||||
AND ISNULL(ss.state, 'new') != 'cancelled'
|
AND ISNULL(ss.state, 'new') != 'cancelled'
|
||||||
AND m_s.[number] >= (@orderNumber + @shipmentPrefix)
|
AND m_s.[number] NOT LIKE '%#cancelled#%'
|
||||||
AND m_s.[number] < (@orderNumber + @shipmentPrefix + NCHAR(127))
|
AND (
|
||||||
|
ss.order_id = @manifestId
|
||||||
|
OR ss.order_number = @orderNumber
|
||||||
|
OR m_s.[number] LIKE @orderNumber + @shipmentPrefix + '%'
|
||||||
|
)
|
||||||
`;
|
`;
|
||||||
|
|
||||||
const SQL_CUSTOMER_NAME_SQLITE = `
|
const SQL_CUSTOMER_NAME_SQLITE = `
|
||||||
@@ -180,6 +188,7 @@ export async function syncOrderSummary(runner, { companyId, manifestId, orderNum
|
|||||||
const payRes = await runner.query(SQL_PAYMENT_TOTAL, { manifestId: orderId });
|
const payRes = await runner.query(SQL_PAYMENT_TOTAL, { manifestId: orderId });
|
||||||
const shipRes = await runner.query(isSqlite ? SQL_SHIPPED_QTY_SQLITE : SQL_SHIPPED_QTY_MSSQL, {
|
const shipRes = await runner.query(isSqlite ? SQL_SHIPPED_QTY_SQLITE : SQL_SHIPPED_QTY_MSSQL, {
|
||||||
companyId,
|
companyId,
|
||||||
|
manifestId: orderId,
|
||||||
orderNumber: num,
|
orderNumber: num,
|
||||||
shipmentPrefix,
|
shipmentPrefix,
|
||||||
});
|
});
|
||||||
@@ -237,32 +246,32 @@ export async function rebuildOrderSummaries(runner, companyId) {
|
|||||||
WITH
|
WITH
|
||||||
order_articles AS (
|
order_articles AS (
|
||||||
SELECT
|
SELECT
|
||||||
manifest_id,
|
ma.manifest_id,
|
||||||
COUNT(*) AS positions,
|
COUNT(*) AS positions,
|
||||||
SUM(CASE WHEN shippable = 1 THEN amount ELSE 0 END) AS ordered_quantity,
|
SUM(CASE WHEN ma.shippable = 1 THEN ma.amount ELSE 0 END) AS ordered_quantity,
|
||||||
SUM(amount * (net * (1.0 - rebate / 100.0)) * (1.0 + taxrate / 100.0)) AS gross_total
|
SUM(ma.amount * (ma.net * (1.0 - ma.rebate / 100.0)) * (1.0 + ma.taxrate / 100.0)) AS gross_total
|
||||||
FROM manifestarticle
|
FROM manifestarticle ma
|
||||||
GROUP BY manifest_id
|
JOIN manifest m ON m.id = ma.manifest_id AND m.company_id = @companyId AND m."type" = 'order'
|
||||||
|
GROUP BY ma.manifest_id
|
||||||
),
|
),
|
||||||
order_payments AS (
|
order_payments AS (
|
||||||
SELECT
|
SELECT
|
||||||
manifest_id,
|
p.manifest_id,
|
||||||
SUM(amount) AS paid_total
|
SUM(p.amount) AS paid_total
|
||||||
FROM payment
|
FROM payment p
|
||||||
GROUP BY manifest_id
|
JOIN manifest m ON m.id = p.manifest_id AND m.company_id = @companyId AND m."type" = 'order'
|
||||||
|
GROUP BY p.manifest_id
|
||||||
),
|
),
|
||||||
shipment_totals AS (
|
shipment_totals AS (
|
||||||
SELECT
|
SELECT
|
||||||
SUBSTR(m_s."number", 1, INSTR(m_s."number", @shipmentPrefix) - 1) AS order_number,
|
ss.order_id,
|
||||||
SUM(ma_s.amount) AS shipped_quantity
|
SUM(ma_s.amount) AS shipped_quantity
|
||||||
FROM manifest m_s
|
FROM shipmentsummary ss
|
||||||
JOIN manifestarticle ma_s ON ma_s.manifest_id = m_s.id
|
JOIN manifestarticle ma_s ON ma_s.manifest_id = ss.manifest_id
|
||||||
LEFT JOIN shipmentsummary ss ON ss.manifest_id = m_s.id
|
WHERE ss.company_id = @companyId
|
||||||
WHERE m_s.company_id = @companyId
|
|
||||||
AND m_s."type" = 'shipment'
|
|
||||||
AND COALESCE(ss.state, 'new') != 'cancelled'
|
AND COALESCE(ss.state, 'new') != 'cancelled'
|
||||||
AND INSTR(m_s."number", @shipmentPrefix) > 0
|
AND ss.order_id IS NOT NULL
|
||||||
GROUP BY SUBSTR(m_s."number", 1, INSTR(m_s."number", @shipmentPrefix) - 1)
|
GROUP BY ss.order_id
|
||||||
)
|
)
|
||||||
INSERT INTO ordersummary (
|
INSERT INTO ordersummary (
|
||||||
company_id, manifest_id, order_number, order_date, created_at,
|
company_id, manifest_id, order_number, order_date, created_at,
|
||||||
@@ -288,7 +297,7 @@ export async function rebuildOrderSummaries(runner, companyId) {
|
|||||||
LEFT JOIN entity e ON e.id = m.entity_id
|
LEFT JOIN entity e ON e.id = m.entity_id
|
||||||
LEFT JOIN order_articles oa ON oa.manifest_id = m.id
|
LEFT JOIN order_articles oa ON oa.manifest_id = m.id
|
||||||
LEFT JOIN order_payments op ON op.manifest_id = m.id
|
LEFT JOIN order_payments op ON op.manifest_id = m.id
|
||||||
LEFT JOIN shipment_totals st ON st.order_number = m."number"
|
LEFT JOIN shipment_totals st ON st.order_id = m.id
|
||||||
WHERE m.company_id = @companyId AND m."type" = 'order'
|
WHERE m.company_id = @companyId AND m."type" = 'order'
|
||||||
ON CONFLICT(manifest_id) DO UPDATE SET
|
ON CONFLICT(manifest_id) DO UPDATE SET
|
||||||
order_number = excluded.order_number,
|
order_number = excluded.order_number,
|
||||||
@@ -311,32 +320,32 @@ export async function rebuildOrderSummaries(runner, companyId) {
|
|||||||
WITH
|
WITH
|
||||||
order_articles AS (
|
order_articles AS (
|
||||||
SELECT
|
SELECT
|
||||||
manifest_id,
|
ma.manifest_id,
|
||||||
COUNT(*) AS positions,
|
COUNT(*) AS positions,
|
||||||
SUM(CASE WHEN shippable = 1 THEN amount ELSE 0 END) AS ordered_quantity,
|
SUM(CASE WHEN ma.shippable = 1 THEN ma.amount ELSE 0 END) AS ordered_quantity,
|
||||||
SUM(amount * (net * (1.0 - rebate / 100.0)) * (1.0 + taxrate / 100.0)) AS gross_total
|
SUM(ma.amount * (ma.net * (1.0 - ma.rebate / 100.0)) * (1.0 + ma.taxrate / 100.0)) AS gross_total
|
||||||
FROM manifestarticle
|
FROM manifestarticle ma WITH (NOLOCK)
|
||||||
GROUP BY manifest_id
|
JOIN manifest m WITH (NOLOCK) ON m.id = ma.manifest_id AND m.company_id = @companyId AND m.[type] = 'order'
|
||||||
|
GROUP BY ma.manifest_id
|
||||||
),
|
),
|
||||||
order_payments AS (
|
order_payments AS (
|
||||||
SELECT
|
SELECT
|
||||||
manifest_id,
|
p.manifest_id,
|
||||||
SUM(amount) AS paid_total
|
SUM(p.amount) AS paid_total
|
||||||
FROM payment
|
FROM payment p WITH (NOLOCK)
|
||||||
GROUP BY manifest_id
|
JOIN manifest m WITH (NOLOCK) ON m.id = p.manifest_id AND m.company_id = @companyId AND m.[type] = 'order'
|
||||||
|
GROUP BY p.manifest_id
|
||||||
),
|
),
|
||||||
shipment_totals AS (
|
shipment_totals AS (
|
||||||
SELECT
|
SELECT
|
||||||
SUBSTRING(m_s.[number], 1, CHARINDEX(@shipmentPrefix, m_s.[number]) - 1) AS order_number,
|
ss.order_id,
|
||||||
SUM(ma_s.amount) AS shipped_quantity
|
SUM(ma_s.amount) AS shipped_quantity
|
||||||
FROM manifest m_s
|
FROM shipmentsummary ss WITH (NOLOCK)
|
||||||
JOIN manifestarticle ma_s ON ma_s.manifest_id = m_s.id
|
JOIN manifestarticle ma_s WITH (NOLOCK) ON ma_s.manifest_id = ss.manifest_id
|
||||||
LEFT JOIN shipmentsummary ss ON ss.manifest_id = m_s.id
|
WHERE ss.company_id = @companyId
|
||||||
WHERE m_s.company_id = @companyId
|
|
||||||
AND m_s.[type] = 'shipment'
|
|
||||||
AND ISNULL(ss.state, 'new') != 'cancelled'
|
AND ISNULL(ss.state, 'new') != 'cancelled'
|
||||||
AND CHARINDEX(@shipmentPrefix, m_s.[number]) > 0
|
AND ss.order_id IS NOT NULL
|
||||||
GROUP BY SUBSTRING(m_s.[number], 1, CHARINDEX(@shipmentPrefix, m_s.[number]) - 1)
|
GROUP BY ss.order_id
|
||||||
)
|
)
|
||||||
INSERT INTO ordersummary (
|
INSERT INTO ordersummary (
|
||||||
company_id, manifest_id, order_number, order_date, created_at,
|
company_id, manifest_id, order_number, order_date, created_at,
|
||||||
@@ -358,11 +367,11 @@ export async function rebuildOrderSummaries(runner, companyId) {
|
|||||||
ROUND(COALESCE(st.shipped_quantity, 0), 3) AS shipped_quantity,
|
ROUND(COALESCE(st.shipped_quantity, 0), 3) AS shipped_quantity,
|
||||||
CASE WHEN ABS(COALESCE(oa.gross_total, 0)) < 0.01 OR ABS(COALESCE(op.paid_total, 0) - oa.gross_total) < 0.01 THEN 1 ELSE 0 END AS is_paid,
|
CASE WHEN ABS(COALESCE(oa.gross_total, 0)) < 0.01 OR ABS(COALESCE(op.paid_total, 0) - oa.gross_total) < 0.01 THEN 1 ELSE 0 END AS is_paid,
|
||||||
CASE WHEN COALESCE(oa.ordered_quantity, 0) > 0 AND ABS(COALESCE(st.shipped_quantity, 0) - oa.ordered_quantity) < 0.001 THEN 1 ELSE 0 END AS is_shipped
|
CASE WHEN COALESCE(oa.ordered_quantity, 0) > 0 AND ABS(COALESCE(st.shipped_quantity, 0) - oa.ordered_quantity) < 0.001 THEN 1 ELSE 0 END AS is_shipped
|
||||||
FROM manifest m
|
FROM manifest m WITH (NOLOCK)
|
||||||
LEFT JOIN entity e ON e.id = m.entity_id
|
LEFT JOIN entity e WITH (NOLOCK) ON e.id = m.entity_id
|
||||||
LEFT JOIN order_articles oa ON oa.manifest_id = m.id
|
LEFT JOIN order_articles oa ON oa.manifest_id = m.id
|
||||||
LEFT JOIN order_payments op ON op.manifest_id = m.id
|
LEFT JOIN order_payments op ON op.manifest_id = m.id
|
||||||
LEFT JOIN shipment_totals st ON st.order_number = m.[number]
|
LEFT JOIN shipment_totals st ON st.order_id = m.id
|
||||||
WHERE m.company_id = @companyId AND m.[type] = 'order';
|
WHERE m.company_id = @companyId AND m.[type] = 'order';
|
||||||
`;
|
`;
|
||||||
await runner.query(sqlRebuildMssql, { companyId, shipmentPrefix });
|
await runner.query(sqlRebuildMssql, { companyId, shipmentPrefix });
|
||||||
|
|||||||
Reference in New Issue
Block a user