This commit is contained in:
seb
2026-10-25 16:59:53 +01:00
parent 6b6c473f9d
commit 53f1b24ec0
2 changed files with 30 additions and 84 deletions

View File

@@ -668,41 +668,20 @@ SELECT
SELECT 1 FROM articlelistarticle ala WITH (NOLOCK) WHERE ala.articlelist_id = a.articlelist_id SELECT 1 FROM articlelistarticle ala WITH (NOLOCK) WHERE ala.articlelist_id = a.articlelist_id
) THEN COALESCE(( ) THEN COALESCE((
SELECT CASE SELECT CASE
WHEN MIN(COALESCE(comp_stock.stock, 0) / ala.count) < 0 THEN 0 WHEN MIN(COALESCE(aws_comp.stock, 0) / ala.count) < 0 THEN 0
ELSE FLOOR(MIN(COALESCE(comp_stock.stock, 0) / ala.count)) ELSE FLOOR(MIN(COALESCE(aws_comp.stock, 0) / ala.count))
END END
FROM articlelistarticle ala WITH (NOLOCK) FROM articlelistarticle ala WITH (NOLOCK)
LEFT JOIN ( LEFT JOIN articlewarehousesummary aws_comp WITH (NOLOCK)
SELECT ca.id AS comp_id, SUM(l.amount) AS stock ON aws_comp.article_id = ala.article_id AND aws_comp.warehouse_id = w.id
FROM ledger l WITH (NOLOCK)
INNER JOIN manifestarticle ma WITH (NOLOCK) ON ma.id = l.manifestarticle_id
INNER JOIN manifest m WITH (NOLOCK) ON m.id = ma.manifest_id
INNER JOIN article ca WITH (NOLOCK) ON (
ma.sku = ca.sku
OR ma.sku IN (SELECT asup.sku FROM articlesupplier asup WITH (NOLOCK) WHERE asup.article_id = ca.id)
)
WHERE m.company_id = a.company_id
AND l.warehouse_id = w.id
GROUP BY ca.id
) comp_stock ON comp_stock.comp_id = ala.article_id
WHERE ala.articlelist_id = a.articlelist_id WHERE ala.articlelist_id = a.articlelist_id
), 0) ), 0)
WHEN a.articlelist_id IS NOT NULL THEN 0 WHEN a.articlelist_id IS NOT NULL THEN 0
ELSE COALESCE(stock_calc.stock, 0) ELSE COALESCE(aws.stock, 0)
END AS stock END AS stock
FROM warehouse w WITH (NOLOCK) FROM warehouse w WITH (NOLOCK)
LEFT JOIN ( LEFT JOIN articlewarehousesummary aws WITH (NOLOCK)
SELECT l.warehouse_id, SUM(l.amount) AS stock ON aws.article_id = a.id AND aws.warehouse_id = w.id
FROM ledger l WITH (NOLOCK)
INNER JOIN manifestarticle ma WITH (NOLOCK) ON ma.id = l.manifestarticle_id
INNER JOIN manifest m WITH (NOLOCK) ON m.id = ma.manifest_id
WHERE m.company_id = a.company_id
AND (
ma.sku = a.sku
OR ma.sku IN (SELECT asup.sku FROM articlesupplier asup WITH (NOLOCK) WHERE asup.article_id = a.id)
)
GROUP BY l.warehouse_id
) stock_calc ON stock_calc.warehouse_id = w.id
WHERE w.company_id = a.company_id WHERE w.company_id = a.company_id
ORDER BY w.sort ASC, w.name ASC ORDER BY w.sort ASC, w.name ASC
FOR JSON PATH FOR JSON PATH
@@ -715,15 +694,12 @@ SELECT
COALESCE(os.customer_name, LTRIM(RTRIM(ISNULL(e.first_name + ' ', '') + ISNULL(e.name, '')))) AS customerName, COALESCE(os.customer_name, LTRIM(RTRIM(ISNULL(e.first_name + ' ', '') + ISNULL(e.name, '')))) AS customerName,
ROUND(SUM(ma.amount) - COALESCE(( ROUND(SUM(ma.amount) - COALESCE((
SELECT SUM(ma_s.amount) SELECT SUM(ma_s.amount)
FROM manifest m_s WITH (NOLOCK) FROM shipmentsummary ss WITH (NOLOCK)
INNER JOIN manifestarticle ma_s WITH (NOLOCK) ON ma_s.manifest_id = m_s.id INNER JOIN manifestarticle ma_s WITH (NOLOCK) ON ma_s.manifest_id = ss.manifest_id
LEFT JOIN shipmentsummary ss WITH (NOLOCK) ON ss.manifest_id = m_s.id WHERE ss.company_id = m.company_id
WHERE m_s.company_id = m.company_id AND ss.order_id = m.id
AND m_s.[type] = 'shipment'
AND ISNULL(ss.state, 'new') != 'cancelled' AND ISNULL(ss.state, 'new') != 'cancelled'
AND m_s.[number] NOT LIKE '%#cancelled#%'
AND ma_s.sku = a.sku AND ma_s.sku = a.sku
AND m_s.[number] LIKE m.[number] + COALESCE((SELECT prefix FROM numbers WITH (NOLOCK) WHERE company_id = m.company_id AND [type] = 'shipment'), '-L-') + '%'
), 0), 3) AS amount ), 0), 3) AS amount
FROM manifest m WITH (NOLOCK) FROM manifest m WITH (NOLOCK)
INNER JOIN manifestarticle ma WITH (NOLOCK) ON ma.manifest_id = m.id INNER JOIN manifestarticle ma WITH (NOLOCK) ON ma.manifest_id = m.id
@@ -736,15 +712,12 @@ SELECT
GROUP BY m.id, m.[number], m.[date], m.company_id, os.customer_name, e.first_name, e.name GROUP BY m.id, m.[number], m.[date], m.company_id, os.customer_name, e.first_name, e.name
HAVING (SUM(ma.amount) - COALESCE(( HAVING (SUM(ma.amount) - COALESCE((
SELECT SUM(ma_s.amount) SELECT SUM(ma_s.amount)
FROM manifest m_s WITH (NOLOCK) FROM shipmentsummary ss WITH (NOLOCK)
INNER JOIN manifestarticle ma_s WITH (NOLOCK) ON ma_s.manifest_id = m_s.id INNER JOIN manifestarticle ma_s WITH (NOLOCK) ON ma_s.manifest_id = ss.manifest_id
LEFT JOIN shipmentsummary ss WITH (NOLOCK) ON ss.manifest_id = m_s.id WHERE ss.company_id = m.company_id
WHERE m_s.company_id = m.company_id AND ss.order_id = m.id
AND m_s.[type] = 'shipment'
AND ISNULL(ss.state, 'new') != 'cancelled' AND ISNULL(ss.state, 'new') != 'cancelled'
AND m_s.[number] NOT LIKE '%#cancelled#%'
AND ma_s.sku = a.sku AND ma_s.sku = a.sku
AND m_s.[number] LIKE m.[number] + COALESCE((SELECT prefix FROM numbers WITH (NOLOCK) WHERE company_id = m.company_id AND [type] = 'shipment'), '-L-') + '%'
), 0)) > 0 ), 0)) > 0
ORDER BY m.[date] ASC, m.id ASC ORDER BY m.[date] ASC, m.id ASC
FOR JSON PATH FOR JSON PATH

View File

@@ -256,41 +256,20 @@ SELECT auth.*,
SELECT 1 FROM articlelistarticle ala WHERE ala.articlelist_id = a.articlelist_id SELECT 1 FROM articlelistarticle ala WHERE ala.articlelist_id = a.articlelist_id
) THEN COALESCE(( ) THEN COALESCE((
SELECT CASE SELECT CASE
WHEN MIN(COALESCE(comp_stock.stock, 0) / ala.count) < 0 THEN 0 WHEN MIN(COALESCE(aws_comp.stock, 0) / ala.count) < 0 THEN 0
ELSE CAST(MIN(COALESCE(comp_stock.stock, 0) / ala.count) AS INTEGER) ELSE CAST(MIN(COALESCE(aws_comp.stock, 0) / ala.count) AS INTEGER)
END END
FROM articlelistarticle ala FROM articlelistarticle ala
LEFT JOIN ( LEFT JOIN articlewarehousesummary aws_comp
SELECT ca.id AS comp_id, SUM(l.amount) AS stock ON aws_comp.article_id = ala.article_id AND aws_comp.warehouse_id = w.id
FROM ledger l
INNER JOIN manifestarticle ma ON ma.id = l.manifestarticle_id
INNER JOIN manifest m ON m.id = ma.manifest_id
INNER JOIN article ca ON (
ma.sku = ca.sku
OR ma.sku IN (SELECT asup.sku FROM articlesupplier asup WHERE asup.article_id = ca.id)
)
WHERE m.company_id = a.company_id
AND l.warehouse_id = w.id
GROUP BY ca.id
) comp_stock ON comp_stock.comp_id = ala.article_id
WHERE ala.articlelist_id = a.articlelist_id WHERE ala.articlelist_id = a.articlelist_id
), 0) ), 0)
WHEN a.articlelist_id IS NOT NULL THEN 0 WHEN a.articlelist_id IS NOT NULL THEN 0
ELSE COALESCE(stock_calc.stock, 0) ELSE COALESCE(aws.stock, 0)
END END
)), '[]') FROM warehouse w )), '[]') FROM warehouse w
LEFT JOIN ( LEFT JOIN articlewarehousesummary aws
SELECT l.warehouse_id, SUM(l.amount) AS stock ON aws.article_id = a.id AND aws.warehouse_id = w.id
FROM ledger l
INNER JOIN manifestarticle ma ON ma.id = l.manifestarticle_id
INNER JOIN manifest m ON m.id = ma.manifest_id
WHERE m.company_id = a.company_id
AND (
ma.sku = a.sku
OR ma.sku IN (SELECT asup.sku FROM articlesupplier asup WHERE asup.article_id = a.id)
)
GROUP BY l.warehouse_id
) stock_calc ON stock_calc.warehouse_id = w.id
WHERE w.company_id = a.company_id WHERE w.company_id = a.company_id
ORDER BY w.sort ASC, w.name ASC)), ORDER BY w.sort ASC, w.name ASC)),
'undeliveredOrdersJson', json(( 'undeliveredOrdersJson', json((
@@ -309,15 +288,12 @@ SELECT auth.*,
COALESCE(os.customer_name, TRIM(COALESCE(e.first_name || ' ', '') || COALESCE(e.name, ''))) AS customerName, COALESCE(os.customer_name, TRIM(COALESCE(e.first_name || ' ', '') || COALESCE(e.name, ''))) AS customerName,
ROUND(SUM(ma.amount) - COALESCE(( ROUND(SUM(ma.amount) - COALESCE((
SELECT SUM(ma_s.amount) SELECT SUM(ma_s.amount)
FROM manifest m_s FROM shipmentsummary ss
INNER JOIN manifestarticle ma_s ON ma_s.manifest_id = m_s.id INNER 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 = m.company_id
WHERE m_s.company_id = m.company_id AND ss.order_id = m.id
AND m_s."type" = 'shipment'
AND COALESCE(ss.state, 'new') != 'cancelled' AND COALESCE(ss.state, 'new') != 'cancelled'
AND m_s."number" NOT LIKE '%#cancelled#%'
AND ma_s.sku = a.sku AND ma_s.sku = a.sku
AND m_s."number" LIKE m."number" || COALESCE((SELECT prefix FROM numbers WHERE company_id = m.company_id AND "type" = 'shipment'), '-L-') || '%'
), 0), 3) AS amount ), 0), 3) AS amount
FROM manifest m FROM manifest m
INNER JOIN manifestarticle ma ON ma.manifest_id = m.id INNER JOIN manifestarticle ma ON ma.manifest_id = m.id
@@ -330,15 +306,12 @@ SELECT auth.*,
GROUP BY m.id, m."number", m."date", os.customer_name, e.first_name, e.name GROUP BY m.id, m."number", m."date", os.customer_name, e.first_name, e.name
HAVING (SUM(ma.amount) - COALESCE(( HAVING (SUM(ma.amount) - COALESCE((
SELECT SUM(ma_s.amount) SELECT SUM(ma_s.amount)
FROM manifest m_s FROM shipmentsummary ss
INNER JOIN manifestarticle ma_s ON ma_s.manifest_id = m_s.id INNER 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 = m.company_id
WHERE m_s.company_id = m.company_id AND ss.order_id = m.id
AND m_s."type" = 'shipment'
AND COALESCE(ss.state, 'new') != 'cancelled' AND COALESCE(ss.state, 'new') != 'cancelled'
AND m_s."number" NOT LIKE '%#cancelled#%'
AND ma_s.sku = a.sku AND ma_s.sku = a.sku
AND m_s."number" LIKE m."number" || COALESCE((SELECT prefix FROM numbers WHERE company_id = m.company_id AND "type" = 'shipment'), '-L-') || '%'
), 0)) > 0 ), 0)) > 0
ORDER BY m."date" ASC, m.id ASC ORDER BY m."date" ASC, m.id ASC
) uo ) uo