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