u
This commit is contained in:
@@ -8,6 +8,8 @@ import {
|
||||
INSERT_ROW as SQLITE_INSERT,
|
||||
GET_VALUE_DETAIL as SQLITE_GET_DETAIL,
|
||||
} from '../../providers/sqlite3/queries/articleattributevalue.js';
|
||||
import { INSERT as MSSQL_INSERT_HISTORY } from '../../providers/mssql/queries/articlehistory.js';
|
||||
import { INSERT as SQLITE_INSERT_HISTORY } from '../../providers/sqlite3/queries/articlehistory.js';
|
||||
import resolveArticleBySku from '../article/resolveArticleBySku.js';
|
||||
import makeRunner from '../runner.js';
|
||||
|
||||
@@ -17,6 +19,7 @@ export default function setByArticleSku(provider) {
|
||||
const deleteSql = isSqlite ? SQLITE_DELETE : MSSQL_DELETE;
|
||||
const insertSql = isSqlite ? SQLITE_INSERT : MSSQL_INSERT;
|
||||
const getDetailSql = isSqlite ? SQLITE_GET_DETAIL : MSSQL_GET_DETAIL;
|
||||
const insertHistorySql = isSqlite ? SQLITE_INSERT_HISTORY : MSSQL_INSERT_HISTORY;
|
||||
|
||||
/**
|
||||
* Replaces all attribute values for an article by its SKU.
|
||||
@@ -34,7 +37,19 @@ export default function setByArticleSku(provider) {
|
||||
}
|
||||
|
||||
const runSet = async (runner) => {
|
||||
const { articleId, companyId } = await resolve(googleAuthId, sku, runner);
|
||||
const { articleId, companyId, companyuserId } = await resolve(googleAuthId, sku, runner);
|
||||
|
||||
// Read old attribute values for history
|
||||
const oldAttrRes = await runner.query(
|
||||
`SELECT aav.attributevalue_id AS attributeValueId, an.name AS attributeName, av.value
|
||||
FROM articleattributevalue aav
|
||||
INNER JOIN attributevalue av ON av.id = aav.attributevalue_id
|
||||
INNER JOIN attributename an ON an.id = av.attributename_id
|
||||
WHERE aav.article_id = @articleId
|
||||
ORDER BY aav.sort ASC, aav.id ASC`,
|
||||
{ articleId },
|
||||
);
|
||||
const oldAttrs = oldAttrRes.rows;
|
||||
|
||||
const validated = [];
|
||||
const seenValues = new Set();
|
||||
@@ -137,6 +152,18 @@ export default function setByArticleSku(provider) {
|
||||
});
|
||||
}
|
||||
|
||||
// Write history if attribute values changed
|
||||
const fmtAttr = (a) => `${a.attributeName}: ${a.value}`;
|
||||
const oldStr = oldAttrs.map(fmtAttr).join(', ');
|
||||
const newStr = validated.map(fmtAttr).join(', ');
|
||||
if (oldStr !== newStr) {
|
||||
await runner.query(insertHistorySql, {
|
||||
articleId,
|
||||
companyuserId,
|
||||
text: `Attributwerte geändert von [${oldStr}] auf [${newStr}]`,
|
||||
});
|
||||
}
|
||||
|
||||
return inserted;
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user