u
This commit is contained in:
@@ -574,7 +574,30 @@ SELECT
|
||||
asup.sort,
|
||||
asup.net AS [price.net],
|
||||
asup.tax_id AS [price.taxId],
|
||||
t.rate AS [price.taxRate]
|
||||
t.rate AS [price.taxRate],
|
||||
(
|
||||
SELECT
|
||||
m.[date] AS [date],
|
||||
SUM(ma.amount - COALESCE(ma_ledger.booked_amount, 0)) AS amount
|
||||
FROM manifest m
|
||||
INNER JOIN manifestarticle ma ON ma.manifest_id = m.id
|
||||
LEFT JOIN (
|
||||
SELECT manifestarticle_id, SUM(amount) AS booked_amount
|
||||
FROM ledger
|
||||
WHERE warehouse_id IS NULL
|
||||
GROUP BY manifestarticle_id
|
||||
) ma_ledger ON ma_ledger.manifestarticle_id = ma.id
|
||||
WHERE m.company_id = a.company_id
|
||||
AND m.[type] = 'delivery'
|
||||
AND m.entity_id = asup.entity_id
|
||||
AND asup.sku IS NOT NULL
|
||||
AND asup.sku <> ''
|
||||
AND ma.sku = asup.sku
|
||||
AND (ma.amount - COALESCE(ma_ledger.booked_amount, 0)) > 0
|
||||
GROUP BY m.id, m.[date]
|
||||
ORDER BY m.[date] ASC, m.id ASC
|
||||
FOR JSON PATH
|
||||
) AS incomingJson
|
||||
FROM articlesupplier asup
|
||||
INNER JOIN entity e ON e.id = asup.entity_id
|
||||
LEFT JOIN tax t ON t.id = asup.tax_id
|
||||
|
||||
@@ -207,11 +207,40 @@ SELECT auth.*,
|
||||
'stock', stock, 'sort', sort,
|
||||
'price', CASE WHEN net IS NULL THEN NULL ELSE json_object(
|
||||
'net', net, 'taxId', tax_id, 'taxRate', tax_rate
|
||||
) END
|
||||
) END,
|
||||
'incoming', json(incoming_json)
|
||||
)), '[]') FROM (
|
||||
SELECT s.id, s.article_id, s.entity_id, e.name AS supplier_name,
|
||||
s.sku, s.pu, s.stock, s.sort,
|
||||
s.net, s.tax_id, t.rate AS tax_rate
|
||||
s.net, s.tax_id, t.rate AS tax_rate,
|
||||
COALESCE((
|
||||
SELECT json_group_array(json_object(
|
||||
'date', inc.date,
|
||||
'amount', inc.amount
|
||||
))
|
||||
FROM (
|
||||
SELECT
|
||||
m.date AS date,
|
||||
SUM(ma.amount - COALESCE(ma_ledger.booked_amount, 0)) AS amount
|
||||
FROM manifest m
|
||||
INNER JOIN manifestarticle ma ON ma.manifest_id = m.id
|
||||
LEFT JOIN (
|
||||
SELECT manifestarticle_id, SUM(amount) AS booked_amount
|
||||
FROM ledger
|
||||
WHERE warehouse_id IS NULL
|
||||
GROUP BY manifestarticle_id
|
||||
) ma_ledger ON ma_ledger.manifestarticle_id = ma.id
|
||||
WHERE m.company_id = a.company_id
|
||||
AND m.type = 'delivery'
|
||||
AND m.entity_id = s.entity_id
|
||||
AND s.sku IS NOT NULL
|
||||
AND s.sku <> ''
|
||||
AND ma.sku = s.sku
|
||||
AND (ma.amount - COALESCE(ma_ledger.booked_amount, 0)) > 0
|
||||
GROUP BY m.id, m.date
|
||||
ORDER BY m.date ASC, m.id ASC
|
||||
) inc
|
||||
), '[]') AS incoming_json
|
||||
FROM articlesupplier s INNER JOIN entity e ON e.id = s.entity_id
|
||||
LEFT JOIN tax t ON t.id = s.tax_id
|
||||
WHERE s.article_id = a.id ORDER BY s.sort, s.id
|
||||
|
||||
@@ -18,7 +18,7 @@ export default function getBySku(provider) {
|
||||
* @param {number} googleAuthId - The id of the Google auth user.
|
||||
* @param {string} sku - The article SKU.
|
||||
* @param {object} [tx] - Optional transaction.
|
||||
* @returns {Promise<{article: {id: number, sku: string, name: string, slug: string, desc: string|null, seo: string|null, unitamount: number|null, weight: number|null, track_stock: boolean, unit: {si: string|null, basesi: string|null, basesifactor: number|null, symbol: string|null, name: string|null}, brand: {id: number|null, name: string, fullHash: string|null, thumbW: number|null, thumbH: number|null, thumbHash: string|null}|null, categoryIds: number[], photos: Array<{sort: number, fullHash: string, fullW: number, fullH: number, fullSize: number, thumbW: number, thumbH: number, thumbHash: string}>, eans: string[], prices: Array<{minmultiplier: number, net: number, taxRate: number, customergroupId: number}>, suppliers: Array<{id: number, articleId: number, entityId: number, supplierName: string|null, sku: string|null, pu: number, stock: number|null, sort: number, price: {net: number, taxId: number, taxRate?: number}|null}>, optionsCount: number, articleListCount: number, childCount: number, parentArticleId: number|null, parentSku: string|null}}>} The full article detail.
|
||||
* @returns {Promise<{article: {id: number, sku: string, name: string, slug: string, desc: string|null, seo: string|null, unitamount: number|null, weight: number|null, track_stock: boolean, unit: {si: string|null, basesi: string|null, basesifactor: number|null, symbol: string|null, name: string|null}, brand: {id: number|null, name: string, fullHash: string|null, thumbW: number|null, thumbH: number|null, thumbHash: string|null}|null, categoryIds: number[], photos: Array<{sort: number, fullHash: string, fullW: number, fullH: number, fullSize: number, thumbW: number, thumbH: number, thumbHash: string}>, eans: string[], prices: Array<{minmultiplier: number, net: number, taxRate: number, customergroupId: number}>, suppliers: Array<{id: number, articleId: number, entityId: number, supplierName: string|null, sku: string|null, pu: number, stock: number|null, sort: number, price: {net: number, taxId: number, taxRate?: number}|null, incoming: Array<{date: string, amount: number}>}>, optionsCount: number, articleListCount: number, childCount: number, parentArticleId: number|null, parentSku: string|null}}>} The full article detail.
|
||||
* @throws {Error} If the article is not found or the user is not authorized.
|
||||
*
|
||||
* @example
|
||||
@@ -87,6 +87,10 @@ export default function getBySku(provider) {
|
||||
stock: s.stock ?? null,
|
||||
sort: s.sort,
|
||||
price: s.price?.net != null ? s.price : null,
|
||||
incoming: parseJsonArray(s.incomingJson ?? s.incoming).map((inc) => ({
|
||||
date: inc.date,
|
||||
amount: Number(inc.amount ?? 0),
|
||||
})),
|
||||
})),
|
||||
warehouses: parseJsonArray(a.warehousesJson).map((w) => ({
|
||||
id: w.id,
|
||||
|
||||
Reference in New Issue
Block a user