Files
dashlibstorage/src/providers/sqlite3/queries/ledger.js
2026-10-25 15:46:58 +01:00

175 lines
4.0 KiB
JavaScript

export const CHECK_MANIFESTARTICLE_ACCESS = `
SELECT
ma.id,
ma.sku,
ma.amount AS lineAmount,
ma.pu AS linePu,
ma.net,
ma.rebate,
ma.taxrate,
m.id AS manifestId,
m.number AS manifestNumber,
m.type AS manifestType,
m.external_number AS externalNumber,
e.name AS supplierName
FROM manifestarticle ma
INNER JOIN manifest m ON ma.manifest_id = m.id
LEFT JOIN entity e ON e.id = m.entity_id
WHERE ma.id = @manifestarticleId AND m.company_id = @companyId;
`;
export const CHECK_WAREHOUSE_ACCESS = `
SELECT id, name
FROM warehouse
WHERE id = @warehouseId AND company_id = @companyId;
`;
export const GET_DEFAULT_WAREHOUSE = `
SELECT id, name
FROM warehouse
WHERE company_id = @companyId
ORDER BY sort ASC, name ASC, id ASC
LIMIT 1;
`;
export const CHECK_MANIFESTARTICLE_BOOKED = `
SELECT COALESCE(SUM(amount), 0) AS bookedAmount
FROM ledger
WHERE manifestarticle_id = @manifestarticleId
AND warehouse_id IS NULL;
`;
export const FIND_ARTICLES_FOR_HISTORY = `
SELECT DISTINCT asup.article_id AS articleId
FROM articlesupplier asup
INNER JOIN entity e ON e.id = asup.entity_id
INNER JOIN customergroup cg ON cg.id = e.customergroup_id
WHERE asup.sku = @sku
AND cg.company_id = @companyId
UNION
SELECT id AS articleId
FROM article
WHERE sku = @sku
AND company_id = @companyId;
`;
export const INSERT_ARTICLE_HISTORY = `
INSERT INTO articlehistory (article_id, companyuser_id, date, text, meta)
VALUES (@articleId, @companyuserId, COALESCE(@date, strftime('%Y-%m-%dT%H:%M:%fZ', 'now')), @text, @meta);
`;
export const GET_LATEST_ROW = `
SELECT
id,
manifestarticle_id,
warehouse_id,
transaction_type,
amount,
transaction_text,
hash_version,
prev_hash,
created_at
FROM ledger
ORDER BY id DESC
LIMIT 1;
`;
export const INSERT_ROW = `
INSERT INTO ledger (
manifestarticle_id,
warehouse_id,
transaction_type,
amount,
transaction_text,
hash_version,
prev_hash
)
VALUES (
@manifestarticleId,
@warehouseId,
@transactionType,
@amount,
@transactionText,
@hashVersion,
@prevHash
)
RETURNING
id,
manifestarticle_id,
warehouse_id,
transaction_type,
amount,
transaction_text,
hash_version,
prev_hash,
created_at;
`;
export const LIST_BY_MANIFESTARTICLE = `
SELECT
l.id,
l.manifestarticle_id,
l.warehouse_id,
ma.sku,
l.transaction_type,
l.amount,
l.transaction_text,
l.hash_version,
l.prev_hash,
l.created_at
FROM ledger l
INNER JOIN manifestarticle ma ON l.manifestarticle_id = ma.id
INNER JOIN manifest m ON ma.manifest_id = m.id
WHERE l.manifestarticle_id = @manifestarticleId
AND m.company_id = @companyId
AND (@transactionType IS NULL OR l.transaction_type = @transactionType)
AND (@warehouseId IS NULL OR l.warehouse_id = @warehouseId)
ORDER BY l.id ASC;
`;
export const LIST_BY_SKU = `
SELECT
l.id,
l.manifestarticle_id,
l.warehouse_id,
ma.sku,
l.transaction_type,
l.amount,
l.transaction_text,
l.hash_version,
l.prev_hash,
l.created_at
FROM ledger l
INNER JOIN manifestarticle ma ON l.manifestarticle_id = ma.id
INNER JOIN manifest m ON ma.manifest_id = m.id
WHERE ma.sku = @sku
AND m.company_id = @companyId
AND (@transactionType IS NULL OR l.transaction_type = @transactionType)
AND (@warehouseId IS NULL OR l.warehouse_id = @warehouseId)
ORDER BY l.id ASC;
`;
export const GET_ARTICLE_TRACK_STOCK = `
SELECT a.id, a.sku, a.track_stock
FROM article a
WHERE a.company_id = @companyId
AND (
a.sku = @sku
OR EXISTS (SELECT 1 FROM articlesupplier asup WHERE asup.article_id = a.id AND asup.sku = @sku)
)
LIMIT 1;
`;
export const GET_ARTICLE_WAREHOUSE_STOCK = `
SELECT COALESCE(SUM(l.amount), 0) 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 l.warehouse_id = @warehouseId
AND m.company_id = @companyId
AND (
ma.sku = @sku
OR ma.sku IN (SELECT asup.sku FROM articlesupplier asup WHERE asup.article_id = @articleId)
);
`;