162 lines
3.8 KiB
JavaScript
162 lines
3.8 KiB
JavaScript
export const ARTICLE_LIST_JOINS = `
|
|
LEFT JOIN articletext at
|
|
ON at.article_id = a.id AND at.language_id = @languageId
|
|
LEFT JOIN price pr
|
|
ON pr.article_id = a.id
|
|
AND pr.customergroup_id = @posCustomerGroupId
|
|
AND pr.minmultiplier = 1
|
|
LEFT JOIN tax t ON t.id = pr.tax_id
|
|
OUTER APPLY (
|
|
SELECT TOP 1 ap.pic_id
|
|
FROM articlepic ap
|
|
WHERE ap.article_id = a.id
|
|
ORDER BY ap.sort ASC, ap.id ASC
|
|
) first_pic
|
|
LEFT JOIN pic ON pic.id = first_pic.pic_id
|
|
LEFT JOIN article father ON father.id = a.fatherarticle_id
|
|
`;
|
|
|
|
export const ARTICLE_LIST_COLUMNS = `
|
|
a.id,
|
|
a.sku,
|
|
at.name,
|
|
at.slug,
|
|
pr.net,
|
|
t.rate AS taxRate,
|
|
CASE
|
|
WHEN a.optionslist_id IS NOT NULL THEN (
|
|
SELECT COUNT(*)
|
|
FROM optionslistarticle ola
|
|
WHERE ola.optionslist_id = a.optionslist_id
|
|
)
|
|
ELSE 0
|
|
END AS optionsCount,
|
|
CASE
|
|
WHEN a.articlelist_id IS NOT NULL THEN (
|
|
SELECT COUNT(*)
|
|
FROM articlelistarticle ala
|
|
WHERE ala.articlelist_id = a.articlelist_id
|
|
)
|
|
ELSE 0
|
|
END AS articleListCount,
|
|
(
|
|
SELECT COUNT(*)
|
|
FROM article child
|
|
WHERE child.fatherarticle_id = a.id
|
|
) AS childCount,
|
|
a.fatherarticle_id AS fatherArticleId,
|
|
father.sku AS fatherSku,
|
|
pic.hash AS fullHash,
|
|
pic.thumbw AS thumbW,
|
|
pic.thumbh AS thumbH,
|
|
pic.thumbhash AS thumbHash
|
|
`;
|
|
|
|
export const GET_CATEGORY_ID_BY_SKU = `
|
|
SELECT TOP 1 ca.category_id AS categoryId, a.id AS articleId
|
|
FROM article a
|
|
INNER JOIN categoryarticle ca ON ca.article_id = a.id
|
|
WHERE a.sku = @sku
|
|
`;
|
|
|
|
/** SKU → article/category + company auth in one round-trip. */
|
|
export const RESOLVE_ARTICLE_ACCESS_BY_SKU = `
|
|
WITH article_cat AS (
|
|
SELECT TOP 1 a.id AS articleId, ca.category_id AS categoryId
|
|
FROM article a
|
|
INNER JOIN categoryarticle ca ON ca.article_id = a.id
|
|
WHERE a.sku = @sku
|
|
),
|
|
ancestors AS (
|
|
SELECT c.id, c.parent_id
|
|
FROM category c
|
|
INNER JOIN article_cat ac ON c.id = ac.categoryId
|
|
|
|
UNION ALL
|
|
|
|
SELECT c.id, c.parent_id
|
|
FROM category c
|
|
INNER JOIN ancestors a ON c.id = a.parent_id
|
|
),
|
|
root AS (
|
|
SELECT TOP 1 id AS rootCategoryId
|
|
FROM ancestors
|
|
WHERE parent_id IS NULL
|
|
)
|
|
SELECT
|
|
ac.articleId,
|
|
ac.categoryId,
|
|
r.rootCategoryId,
|
|
co.id AS companyId,
|
|
co.default_language_id AS languageId,
|
|
co.poscustomergroup_id AS posCustomerGroupId,
|
|
cu.id AS companyuserId
|
|
FROM article_cat ac
|
|
LEFT JOIN root r ON 1 = 1
|
|
LEFT JOIN company co ON co.root_category_id = r.rootCategoryId
|
|
LEFT JOIN companyuser cu
|
|
ON cu.company_id = co.id AND cu.google_auth_id = @googleAuthId
|
|
`;
|
|
|
|
export const UPDATE_WEIGHT = `
|
|
UPDATE article
|
|
SET weight = @weight
|
|
WHERE id = @articleId
|
|
`;
|
|
|
|
export const UPDATE_BRAND = `
|
|
UPDATE article
|
|
SET brand_id = @brandId
|
|
WHERE id = @articleId
|
|
`;
|
|
|
|
export const UPDATE_UNIT = `
|
|
UPDATE article
|
|
SET unit_id = @unitId
|
|
WHERE id = @articleId
|
|
`;
|
|
|
|
export const UPDATE_UNITAMOUNT = `
|
|
UPDATE article
|
|
SET unitamount = @unitamount
|
|
WHERE id = @articleId
|
|
`;
|
|
|
|
export const UPDATE_UNIT_AND_AMOUNT = `
|
|
UPDATE article
|
|
SET unit_id = @unitId, unitamount = @unitamount
|
|
WHERE id = @articleId
|
|
`;
|
|
|
|
export const CREATE = `
|
|
INSERT INTO article (sku, unit_id, unitamount, weight)
|
|
OUTPUT INSERTED.id
|
|
VALUES (@sku, @unitId, @unitamount, @weight)
|
|
`;
|
|
|
|
export const DELETE_EANS_BY_ARTICLE = `
|
|
DELETE FROM articleean
|
|
WHERE article_id = @articleId
|
|
`;
|
|
|
|
export const ADD_EAN = `
|
|
INSERT INTO articleean (article_id, ean)
|
|
VALUES (@articleId, @ean)
|
|
`;
|
|
|
|
export const DELETE_CATEGORIES_BY_ARTICLE = `
|
|
DELETE FROM categoryarticle
|
|
WHERE article_id = @articleId
|
|
`;
|
|
|
|
export const ADD_CATEGORY = `
|
|
INSERT INTO categoryarticle (category_id, article_id)
|
|
VALUES (@categoryId, @articleId)
|
|
`;
|
|
|
|
export const GET_BRAND_BY_COMPANY_AND_ID = `
|
|
SELECT id
|
|
FROM brand
|
|
WHERE id = @brandId AND company_id = @companyId
|
|
`;
|