diff --git a/src/providers/mssql/queries/article.js b/src/providers/mssql/queries/article.js index e6514d4..59a807e 100644 --- a/src/providers/mssql/queries/article.js +++ b/src/providers/mssql/queries/article.js @@ -668,41 +668,20 @@ SELECT SELECT 1 FROM articlelistarticle ala WITH (NOLOCK) WHERE ala.articlelist_id = a.articlelist_id ) THEN COALESCE(( SELECT CASE - WHEN MIN(COALESCE(comp_stock.stock, 0) / ala.count) < 0 THEN 0 - ELSE FLOOR(MIN(COALESCE(comp_stock.stock, 0) / ala.count)) + WHEN MIN(COALESCE(aws_comp.stock, 0) / ala.count) < 0 THEN 0 + ELSE FLOOR(MIN(COALESCE(aws_comp.stock, 0) / ala.count)) END FROM articlelistarticle ala WITH (NOLOCK) - LEFT JOIN ( - SELECT ca.id AS comp_id, SUM(l.amount) AS stock - 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 + LEFT JOIN articlewarehousesummary aws_comp WITH (NOLOCK) + ON aws_comp.article_id = ala.article_id AND aws_comp.warehouse_id = w.id WHERE ala.articlelist_id = a.articlelist_id ), 0) WHEN a.articlelist_id IS NOT NULL THEN 0 - ELSE COALESCE(stock_calc.stock, 0) + ELSE COALESCE(aws.stock, 0) END AS stock FROM warehouse w WITH (NOLOCK) - LEFT JOIN ( - SELECT l.warehouse_id, SUM(l.amount) AS stock - 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 + LEFT JOIN articlewarehousesummary aws WITH (NOLOCK) + ON aws.article_id = a.id AND aws.warehouse_id = w.id WHERE w.company_id = a.company_id ORDER BY w.sort ASC, w.name ASC FOR JSON PATH @@ -715,15 +694,12 @@ SELECT COALESCE(os.customer_name, LTRIM(RTRIM(ISNULL(e.first_name + ' ', '') + ISNULL(e.name, '')))) AS customerName, ROUND(SUM(ma.amount) - COALESCE(( SELECT SUM(ma_s.amount) - FROM manifest m_s WITH (NOLOCK) - INNER 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 = m.company_id - AND m_s.[type] = 'shipment' + FROM shipmentsummary ss WITH (NOLOCK) + INNER JOIN manifestarticle ma_s WITH (NOLOCK) ON ma_s.manifest_id = ss.manifest_id + WHERE ss.company_id = m.company_id + AND ss.order_id = m.id AND ISNULL(ss.state, 'new') != 'cancelled' - AND m_s.[number] NOT LIKE '%#cancelled#%' 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 FROM manifest m WITH (NOLOCK) 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 HAVING (SUM(ma.amount) - COALESCE(( SELECT SUM(ma_s.amount) - FROM manifest m_s WITH (NOLOCK) - INNER 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 = m.company_id - AND m_s.[type] = 'shipment' + FROM shipmentsummary ss WITH (NOLOCK) + INNER JOIN manifestarticle ma_s WITH (NOLOCK) ON ma_s.manifest_id = ss.manifest_id + WHERE ss.company_id = m.company_id + AND ss.order_id = m.id AND ISNULL(ss.state, 'new') != 'cancelled' - AND m_s.[number] NOT LIKE '%#cancelled#%' 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 ORDER BY m.[date] ASC, m.id ASC FOR JSON PATH diff --git a/src/providers/sqlite3/queries/article.js b/src/providers/sqlite3/queries/article.js index 5f597df..9608f3c 100644 --- a/src/providers/sqlite3/queries/article.js +++ b/src/providers/sqlite3/queries/article.js @@ -256,41 +256,20 @@ SELECT auth.*, SELECT 1 FROM articlelistarticle ala WHERE ala.articlelist_id = a.articlelist_id ) THEN COALESCE(( SELECT CASE - WHEN MIN(COALESCE(comp_stock.stock, 0) / ala.count) < 0 THEN 0 - ELSE CAST(MIN(COALESCE(comp_stock.stock, 0) / ala.count) AS INTEGER) + WHEN MIN(COALESCE(aws_comp.stock, 0) / ala.count) < 0 THEN 0 + ELSE CAST(MIN(COALESCE(aws_comp.stock, 0) / ala.count) AS INTEGER) END FROM articlelistarticle ala - LEFT JOIN ( - SELECT ca.id AS comp_id, SUM(l.amount) 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 - 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 + LEFT JOIN articlewarehousesummary aws_comp + ON aws_comp.article_id = ala.article_id AND aws_comp.warehouse_id = w.id WHERE ala.articlelist_id = a.articlelist_id ), 0) WHEN a.articlelist_id IS NOT NULL THEN 0 - ELSE COALESCE(stock_calc.stock, 0) + ELSE COALESCE(aws.stock, 0) END )), '[]') FROM warehouse w - LEFT JOIN ( - SELECT l.warehouse_id, SUM(l.amount) 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 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 + LEFT JOIN articlewarehousesummary aws + ON aws.article_id = a.id AND aws.warehouse_id = w.id WHERE w.company_id = a.company_id ORDER BY w.sort ASC, w.name ASC)), 'undeliveredOrdersJson', json(( @@ -309,15 +288,12 @@ SELECT auth.*, COALESCE(os.customer_name, TRIM(COALESCE(e.first_name || ' ', '') || COALESCE(e.name, ''))) AS customerName, ROUND(SUM(ma.amount) - COALESCE(( SELECT SUM(ma_s.amount) - FROM manifest m_s - INNER 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 = m.company_id - AND m_s."type" = 'shipment' + FROM shipmentsummary ss + INNER JOIN manifestarticle ma_s ON ma_s.manifest_id = ss.manifest_id + WHERE ss.company_id = m.company_id + AND ss.order_id = m.id AND COALESCE(ss.state, 'new') != 'cancelled' - AND m_s."number" NOT LIKE '%#cancelled#%' 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 FROM manifest m 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 HAVING (SUM(ma.amount) - COALESCE(( SELECT SUM(ma_s.amount) - FROM manifest m_s - INNER 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 = m.company_id - AND m_s."type" = 'shipment' + FROM shipmentsummary ss + INNER JOIN manifestarticle ma_s ON ma_s.manifest_id = ss.manifest_id + WHERE ss.company_id = m.company_id + AND ss.order_id = m.id AND COALESCE(ss.state, 'new') != 'cancelled' - AND m_s."number" NOT LIKE '%#cancelled#%' 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 ORDER BY m."date" ASC, m.id ASC ) uo