u
This commit is contained in:
@@ -31,6 +31,7 @@ export const ARTICLE_LIST_COLUMNS = `
|
||||
at.slug,
|
||||
pr.net,
|
||||
t.rate AS taxRate,
|
||||
a.track_stock,
|
||||
CASE
|
||||
WHEN a.optionslist_id IS NOT NULL THEN (
|
||||
SELECT COUNT(*)
|
||||
@@ -133,6 +134,12 @@ SET weight = @weight
|
||||
WHERE id = @articleId
|
||||
`;
|
||||
|
||||
export const UPDATE_TRACK_STOCK = `
|
||||
UPDATE article
|
||||
SET track_stock = @trackStock
|
||||
WHERE id = @articleId
|
||||
`;
|
||||
|
||||
export const UPDATE_BRAND = `
|
||||
UPDATE article
|
||||
SET brand_id = @brandId
|
||||
@@ -158,9 +165,9 @@ WHERE id = @articleId
|
||||
`;
|
||||
|
||||
export const CREATE = `
|
||||
INSERT INTO article (company_id, sku, unit_id, unitamount, weight)
|
||||
INSERT INTO article (company_id, sku, unit_id, unitamount, weight, track_stock)
|
||||
OUTPUT INSERTED.id
|
||||
VALUES (@companyId, @sku, @unitId, @unitamount, @weight)
|
||||
VALUES (@companyId, @sku, @unitId, @unitamount, @weight, @trackStock)
|
||||
`;
|
||||
|
||||
export const DELETE_EANS_BY_ARTICLE = `
|
||||
@@ -287,6 +294,7 @@ SELECT
|
||||
u.si AS unitSi,
|
||||
ut.symbol AS unitSymbol,
|
||||
a.unitamount,
|
||||
a.track_stock,
|
||||
b.name AS brandName,
|
||||
b.name AS brandName,
|
||||
pr.net AS net,
|
||||
@@ -371,6 +379,7 @@ SELECT
|
||||
at.slug,
|
||||
a.unitamount,
|
||||
a.weight,
|
||||
a.track_stock,
|
||||
u.si AS unitSi,
|
||||
u.basesi AS unitBasesi,
|
||||
u.basesifactor AS unitBasesifactor,
|
||||
@@ -467,6 +476,7 @@ SELECT
|
||||
SELECT
|
||||
w.id,
|
||||
w.name,
|
||||
w.sort,
|
||||
COALESCE(stock_calc.stock, 0) AS stock
|
||||
FROM warehouse w
|
||||
LEFT JOIN (
|
||||
@@ -482,7 +492,7 @@ SELECT
|
||||
GROUP BY l.warehouse_id
|
||||
) stock_calc ON stock_calc.warehouse_id = w.id
|
||||
WHERE w.company_id = a.company_id
|
||||
ORDER BY w.name ASC
|
||||
ORDER BY w.sort ASC, w.name ASC
|
||||
FOR JSON PATH
|
||||
) AS warehousesJson
|
||||
FROM article a
|
||||
|
||||
@@ -5,6 +5,7 @@ export const ARTICLE_DETAIL_COLUMNS = `
|
||||
at.slug,
|
||||
a.unitamount,
|
||||
a.weight,
|
||||
a.track_stock,
|
||||
u.si AS unitSi,
|
||||
u.basesi AS unitBasesi,
|
||||
u.basesifactor AS unitBasesifactor,
|
||||
|
||||
@@ -2,17 +2,19 @@ export const LIST_BY_COMPANY = `
|
||||
SELECT
|
||||
id,
|
||||
company_id,
|
||||
name
|
||||
name,
|
||||
sort
|
||||
FROM warehouse
|
||||
WHERE company_id = @companyId
|
||||
ORDER BY name ASC;
|
||||
ORDER BY sort ASC, name ASC;
|
||||
`;
|
||||
|
||||
export const GET_BY_COMPANY_AND_ID = `
|
||||
SELECT
|
||||
id,
|
||||
company_id,
|
||||
name
|
||||
name,
|
||||
sort
|
||||
FROM warehouse
|
||||
WHERE id = @id AND company_id = @companyId;
|
||||
`;
|
||||
@@ -21,20 +23,39 @@ export const GET_BY_COMPANY_AND_NAME = `
|
||||
SELECT
|
||||
id,
|
||||
company_id,
|
||||
name
|
||||
name,
|
||||
sort
|
||||
FROM warehouse
|
||||
WHERE company_id = @companyId AND name = @name;
|
||||
`;
|
||||
|
||||
export const GET_NEXT_SORT = `
|
||||
SELECT ISNULL(MAX(sort), -1) + 1 AS sort
|
||||
FROM warehouse
|
||||
WHERE company_id = @companyId;
|
||||
`;
|
||||
|
||||
export const CREATE = `
|
||||
INSERT INTO warehouse (company_id, name)
|
||||
OUTPUT INSERTED.id, INSERTED.company_id, INSERTED.name
|
||||
VALUES (@companyId, @name);
|
||||
INSERT INTO warehouse (company_id, name, sort)
|
||||
OUTPUT INSERTED.id, INSERTED.company_id, INSERTED.name, INSERTED.sort
|
||||
VALUES (@companyId, @name, @sort);
|
||||
`;
|
||||
|
||||
export const UPDATE_BY_ID = `
|
||||
UPDATE warehouse
|
||||
SET name = @name
|
||||
SET name = @name, sort = @sort
|
||||
WHERE id = @id AND company_id = @companyId;
|
||||
`;
|
||||
|
||||
export const LIST_IDS_BY_COMPANY = `
|
||||
SELECT id
|
||||
FROM warehouse
|
||||
WHERE company_id = @companyId;
|
||||
`;
|
||||
|
||||
export const UPDATE_SORT = `
|
||||
UPDATE warehouse
|
||||
SET sort = @sort
|
||||
WHERE id = @id AND company_id = @companyId;
|
||||
`;
|
||||
|
||||
|
||||
@@ -317,6 +317,7 @@ BEGIN
|
||||
unit_id INT NOT NULL,
|
||||
unitamount FLOAT NOT NULL,
|
||||
weight FLOAT NOT NULL,
|
||||
track_stock BIT NOT NULL CONSTRAINT DF_article_track_stock DEFAULT 1,
|
||||
brand_id INT NULL,
|
||||
articlelist_id INT NULL,
|
||||
optionslist_id INT NULL,
|
||||
@@ -340,6 +341,10 @@ BEGIN
|
||||
ON article (fatherarticle_id, fathersort)
|
||||
WHERE fatherarticle_id IS NOT NULL;
|
||||
END
|
||||
ELSE IF NOT EXISTS (SELECT * FROM sys.columns WHERE object_id = OBJECT_ID('article') AND name = 'track_stock')
|
||||
BEGIN
|
||||
ALTER TABLE article ADD track_stock BIT NOT NULL CONSTRAINT DF_article_track_stock DEFAULT 1;
|
||||
END
|
||||
`;
|
||||
|
||||
export const INIT_ARTICLEHISTORY = `
|
||||
@@ -599,10 +604,15 @@ BEGIN
|
||||
id INT IDENTITY(1,1) PRIMARY KEY,
|
||||
company_id INT NOT NULL,
|
||||
name NVARCHAR(255) NOT NULL,
|
||||
sort INT NOT NULL CONSTRAINT DF_warehouse_sort DEFAULT 0,
|
||||
CONSTRAINT FK_warehouse_company FOREIGN KEY (company_id) REFERENCES company(id) ON DELETE CASCADE,
|
||||
CONSTRAINT UQ_warehouse_company_name UNIQUE (company_id, name)
|
||||
);
|
||||
END
|
||||
ELSE IF NOT EXISTS (SELECT * FROM sys.columns WHERE object_id = OBJECT_ID('warehouse') AND name = 'sort')
|
||||
BEGIN
|
||||
ALTER TABLE warehouse ADD sort INT NOT NULL CONSTRAINT DF_warehouse_sort DEFAULT 0;
|
||||
END
|
||||
`;
|
||||
|
||||
export const INIT_LEDGER = `
|
||||
|
||||
@@ -399,6 +399,20 @@ export class BetterSqlite3Provider extends BetterSqlite3Executor {
|
||||
`ALTER TABLE ledger ADD COLUMN warehouse_id INTEGER REFERENCES warehouse(id) ON DELETE NO ACTION`,
|
||||
);
|
||||
}
|
||||
|
||||
const articleCols = this.db.pragma('table_info("article")').map((c) => c.name);
|
||||
if (articleCols.length > 0 && !articleCols.includes('track_stock')) {
|
||||
this.db.exec(
|
||||
`ALTER TABLE article ADD COLUMN track_stock INTEGER NOT NULL DEFAULT 1`,
|
||||
);
|
||||
}
|
||||
|
||||
const warehouseCols = this.db.pragma('table_info("warehouse")').map((c) => c.name);
|
||||
if (warehouseCols.length > 0 && !warehouseCols.includes('sort')) {
|
||||
this.db.exec(
|
||||
`ALTER TABLE warehouse ADD COLUMN sort INTEGER NOT NULL DEFAULT 0`,
|
||||
);
|
||||
}
|
||||
} catch {
|
||||
// ignore
|
||||
}
|
||||
|
||||
@@ -8,7 +8,7 @@ export const {
|
||||
GET_BRAND_BY_COMPANY_AND_ID,
|
||||
GET_CATEGORY_ID_BY_SKU, GET_CATEGORY_TREE_FLAT, GET_ID_BY_SKU,
|
||||
SET_FATHER_SORT,
|
||||
SET_IS_FATHER, UPDATE_BRAND, UPDATE_FATHER_BY_SKU, UPDATE_UNIT,
|
||||
SET_IS_FATHER, UPDATE_BRAND, UPDATE_FATHER_BY_SKU, UPDATE_TRACK_STOCK, UPDATE_UNIT,
|
||||
UPDATE_UNITAMOUNT, UPDATE_UNIT_AND_AMOUNT, UPDATE_WEIGHT,
|
||||
} = queries;
|
||||
|
||||
@@ -83,7 +83,7 @@ WITH RECURSIVE category_tree AS (
|
||||
INNER JOIN category_tree ct ON c.parent_id = ct.id
|
||||
)
|
||||
SELECT DISTINCT a.id, a.sku, at.name, at.slug, u.si AS unitSi,
|
||||
ut.symbol AS unitSymbol, a.unitamount, b.name AS brandName,
|
||||
ut.symbol AS unitSymbol, a.unitamount, a.track_stock, b.name AS brandName,
|
||||
pr.net, t.rate AS taxRate,
|
||||
${JSON_EANS} AS eansJson,
|
||||
${JSON_CATEGORIES} AS categoryIdsJson,
|
||||
@@ -122,6 +122,7 @@ SELECT auth.*,
|
||||
json_object(
|
||||
'id', a.id, 'sku', a.sku, 'name', at.name, 'slug', at.slug,
|
||||
'unitamount', a.unitamount, 'weight', a.weight,
|
||||
'track_stock', a.track_stock,
|
||||
'unitSi', u.si, 'unitBasesi', u.basesi,
|
||||
'unitBasesifactor', u.basesifactor, 'unitSymbol', ut.symbol,
|
||||
'unitName', ut.name,
|
||||
@@ -169,7 +170,7 @@ SELECT auth.*,
|
||||
WHERE s.article_id = a.id ORDER BY s.sort, s.id
|
||||
))),
|
||||
'warehousesJson', json((SELECT COALESCE(json_group_array(json_object(
|
||||
'id', w.id, 'name', w.name, 'stock', COALESCE(stock_calc.stock, 0)
|
||||
'id', w.id, 'name', w.name, 'sort', w.sort, 'stock', COALESCE(stock_calc.stock, 0)
|
||||
)), '[]') FROM warehouse w
|
||||
LEFT JOIN (
|
||||
SELECT l.warehouse_id, SUM(l.amount) AS stock
|
||||
@@ -184,7 +185,7 @@ SELECT auth.*,
|
||||
GROUP BY l.warehouse_id
|
||||
) stock_calc ON stock_calc.warehouse_id = w.id
|
||||
WHERE w.company_id = a.company_id
|
||||
ORDER BY w.name ASC))
|
||||
ORDER BY w.sort ASC, w.name ASC))
|
||||
) AS articleJson
|
||||
FROM auth
|
||||
INNER JOIN article a ON a.id = auth.articleId
|
||||
|
||||
@@ -2,17 +2,19 @@ export const LIST_BY_COMPANY = `
|
||||
SELECT
|
||||
id,
|
||||
company_id,
|
||||
name
|
||||
name,
|
||||
sort
|
||||
FROM warehouse
|
||||
WHERE company_id = @companyId
|
||||
ORDER BY name ASC;
|
||||
ORDER BY sort ASC, name ASC;
|
||||
`;
|
||||
|
||||
export const GET_BY_COMPANY_AND_ID = `
|
||||
SELECT
|
||||
id,
|
||||
company_id,
|
||||
name
|
||||
name,
|
||||
sort
|
||||
FROM warehouse
|
||||
WHERE id = @id AND company_id = @companyId;
|
||||
`;
|
||||
@@ -21,20 +23,39 @@ export const GET_BY_COMPANY_AND_NAME = `
|
||||
SELECT
|
||||
id,
|
||||
company_id,
|
||||
name
|
||||
name,
|
||||
sort
|
||||
FROM warehouse
|
||||
WHERE company_id = @companyId AND name = @name;
|
||||
`;
|
||||
|
||||
export const GET_NEXT_SORT = `
|
||||
SELECT IFNULL(MAX(sort), -1) + 1 AS sort
|
||||
FROM warehouse
|
||||
WHERE company_id = @companyId;
|
||||
`;
|
||||
|
||||
export const CREATE = `
|
||||
INSERT INTO warehouse (company_id, name)
|
||||
VALUES (@companyId, @name)
|
||||
RETURNING id, company_id, name;
|
||||
INSERT INTO warehouse (company_id, name, sort)
|
||||
VALUES (@companyId, @name, @sort)
|
||||
RETURNING id, company_id, name, sort;
|
||||
`;
|
||||
|
||||
export const UPDATE_BY_ID = `
|
||||
UPDATE warehouse
|
||||
SET name = @name
|
||||
SET name = @name, sort = @sort
|
||||
WHERE id = @id AND company_id = @companyId;
|
||||
`;
|
||||
|
||||
export const LIST_IDS_BY_COMPANY = `
|
||||
SELECT id
|
||||
FROM warehouse
|
||||
WHERE company_id = @companyId;
|
||||
`;
|
||||
|
||||
export const UPDATE_SORT = `
|
||||
UPDATE warehouse
|
||||
SET sort = @sort
|
||||
WHERE id = @id AND company_id = @companyId;
|
||||
`;
|
||||
|
||||
|
||||
@@ -216,6 +216,7 @@ CREATE TABLE IF NOT EXISTS article (
|
||||
unit_id INTEGER NOT NULL,
|
||||
unitamount REAL NOT NULL,
|
||||
weight REAL NOT NULL,
|
||||
track_stock INTEGER NOT NULL DEFAULT 1,
|
||||
brand_id INTEGER,
|
||||
articlelist_id INTEGER,
|
||||
optionslist_id INTEGER,
|
||||
@@ -431,6 +432,7 @@ CREATE TABLE IF NOT EXISTS warehouse (
|
||||
id INTEGER PRIMARY KEY,
|
||||
company_id INTEGER NOT NULL,
|
||||
name TEXT NOT NULL COLLATE NOCASE,
|
||||
sort INTEGER NOT NULL DEFAULT 0,
|
||||
UNIQUE (company_id, name),
|
||||
FOREIGN KEY (company_id) REFERENCES company(id) ON DELETE CASCADE
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user