providerrefactor part1

This commit is contained in:
seb
2026-09-21 03:33:55 +02:00
parent 53a20c4353
commit 4ed6260e91
57 changed files with 1662 additions and 145 deletions

View File

@@ -0,0 +1,622 @@
const UTC_NOW = "strftime('%Y-%m-%dT%H:%M:%fZ', 'now')";
export const INIT_META = `
CREATE TABLE IF NOT EXISTS meta (
"key" TEXT PRIMARY KEY,
value TEXT NOT NULL
);
INSERT OR IGNORE INTO meta ("key", value) VALUES ('version', '1');
`;
export const INIT_LANGUAGE = `
CREATE TABLE IF NOT EXISTS language (
id INTEGER PRIMARY KEY,
iso639 TEXT NOT NULL COLLATE NOCASE UNIQUE
);
`;
export const INIT_TAX = `
CREATE TABLE IF NOT EXISTS tax (
id INTEGER PRIMARY KEY,
rate NUMERIC NOT NULL UNIQUE
);
INSERT OR IGNORE INTO tax (rate) VALUES (0), (7), (19);
`;
export const INIT_CATEGORY = `
CREATE TABLE IF NOT EXISTS category (
id INTEGER PRIMARY KEY,
parent_id INTEGER,
sort INTEGER NOT NULL DEFAULT 0,
FOREIGN KEY (parent_id) REFERENCES category(id) ON DELETE NO ACTION
);
`;
export const INIT_PIC = `
CREATE TABLE IF NOT EXISTS pic (
id INTEGER PRIMARY KEY,
w INTEGER NOT NULL,
h INTEGER NOT NULL,
size INTEGER NOT NULL,
hash TEXT NOT NULL UNIQUE,
thumbw INTEGER NOT NULL,
thumbh INTEGER NOT NULL,
thumbhash TEXT NOT NULL,
source TEXT NOT NULL,
fullbinary BLOB NOT NULL,
thumbbinary BLOB NOT NULL
);
`;
export const INIT_COMPANY = `
CREATE TABLE IF NOT EXISTS company (
id INTEGER PRIMARY KEY,
name TEXT NOT NULL COLLATE NOCASE UNIQUE,
root_category_id INTEGER,
default_language_id INTEGER,
taxrate INTEGER,
reducedtaxrate INTEGER,
taxfreerate INTEGER,
poscustomergroup_id INTEGER NOT NULL,
FOREIGN KEY (root_category_id) REFERENCES category(id) ON DELETE SET NULL,
FOREIGN KEY (default_language_id) REFERENCES language(id) ON DELETE SET NULL,
FOREIGN KEY (taxrate) REFERENCES tax(id) ON DELETE NO ACTION,
FOREIGN KEY (reducedtaxrate) REFERENCES tax(id) ON DELETE NO ACTION,
FOREIGN KEY (taxfreerate) REFERENCES tax(id) ON DELETE NO ACTION,
FOREIGN KEY (poscustomergroup_id) REFERENCES customergroup(id) ON DELETE NO ACTION
);
`;
export const INIT_GOOGLE_AUTH = `
CREATE TABLE IF NOT EXISTS google_auth (
id INTEGER PRIMARY KEY,
email TEXT NOT NULL COLLATE NOCASE UNIQUE,
picture TEXT,
picturebinary BLOB,
sub TEXT,
created_at TEXT NOT NULL DEFAULT (${UTC_NOW}),
selected_company INTEGER,
FOREIGN KEY (selected_company) REFERENCES company(id) ON DELETE SET NULL
);
CREATE UNIQUE INDEX IF NOT EXISTS UQ_google_auth_sub
ON google_auth(sub) WHERE sub IS NOT NULL;
`;
export const INIT_CUSTOMERGROUP = `
CREATE TABLE IF NOT EXISTS customergroup (
id INTEGER PRIMARY KEY,
name TEXT NOT NULL,
sort INTEGER NOT NULL DEFAULT 0,
company_id INTEGER,
FOREIGN KEY (company_id) REFERENCES company(id) ON DELETE CASCADE
);
`;
/* The FK is declared inline in INIT_COMPANY; SQLite cannot add it later. */
export const INIT_COMPANY_POS_CUSTOMERGROUP_FK = '';
export const INIT_ENTITY = `
CREATE TABLE IF NOT EXISTS entity (
id INTEGER PRIMARY KEY,
customergroup_id INTEGER NOT NULL,
company_id INTEGER,
first_name TEXT,
name TEXT NOT NULL,
"number" TEXT,
created_at TEXT NOT NULL DEFAULT (${UTC_NOW}),
updated_at TEXT NOT NULL DEFAULT (${UTC_NOW}),
FOREIGN KEY (customergroup_id) REFERENCES customergroup(id) ON DELETE CASCADE,
FOREIGN KEY (company_id) REFERENCES company(id) ON DELETE CASCADE
);
`;
/**
* SQLite cannot index a joined view, so company_id is denormalized onto entity.
* Triggers keep it synchronized with the entity's customer group.
*/
export const INIT_ENTITY_COMPANY_NUMBER_UQ = `
CREATE UNIQUE INDEX IF NOT EXISTS UQ_entity_company_number
ON entity(company_id, "number") WHERE "number" IS NOT NULL;
CREATE TRIGGER IF NOT EXISTS TR_entity_set_company_insert
AFTER INSERT ON entity
BEGIN
UPDATE entity
SET company_id = (SELECT company_id FROM customergroup WHERE id = NEW.customergroup_id)
WHERE id = NEW.id;
END;
CREATE TRIGGER IF NOT EXISTS TR_entity_set_company_update
AFTER UPDATE OF customergroup_id ON entity
BEGIN
UPDATE entity
SET company_id = (SELECT company_id FROM customergroup WHERE id = NEW.customergroup_id)
WHERE id = NEW.id;
END;
CREATE TRIGGER IF NOT EXISTS TR_customergroup_sync_entity_company
AFTER UPDATE OF company_id ON customergroup
BEGIN
UPDATE entity SET company_id = NEW.company_id WHERE customergroup_id = NEW.id;
END;
`;
export const INIT_ENTITYADDRESS = `
CREATE TABLE IF NOT EXISTS entityaddress (
id INTEGER PRIMARY KEY,
entity_id INTEGER NOT NULL,
first_name TEXT,
name TEXT,
street TEXT,
streetnumber TEXT,
zip TEXT,
city TEXT,
county TEXT,
addresstype TEXT NOT NULL,
sort INTEGER NOT NULL DEFAULT 0,
FOREIGN KEY (entity_id) REFERENCES entity(id) ON DELETE CASCADE
);
`;
export const INIT_ENTITYCONTACT = `
CREATE TABLE IF NOT EXISTS entitycontact (
id INTEGER PRIMARY KEY,
entity_id INTEGER NOT NULL,
contacttype TEXT NOT NULL,
contact TEXT NOT NULL,
sort INTEGER NOT NULL DEFAULT 0,
FOREIGN KEY (entity_id) REFERENCES entity(id) ON DELETE CASCADE
);
`;
export const INIT_UNIT = `
CREATE TABLE IF NOT EXISTS unit (
id INTEGER PRIMARY KEY,
company_id INTEGER NOT NULL,
si TEXT NOT NULL,
basesi TEXT NOT NULL,
basesifactor REAL NOT NULL,
UNIQUE (company_id, si),
FOREIGN KEY (company_id) REFERENCES company(id) ON DELETE NO ACTION
);
`;
export const INIT_UNITTEXT = `
CREATE TABLE IF NOT EXISTS unittext (
id INTEGER PRIMARY KEY,
unit_id INTEGER NOT NULL,
language_id INTEGER NOT NULL,
symbol TEXT NOT NULL,
name TEXT NOT NULL,
UNIQUE (unit_id, language_id),
FOREIGN KEY (unit_id) REFERENCES unit(id) ON DELETE CASCADE,
FOREIGN KEY (language_id) REFERENCES language(id) ON DELETE CASCADE
);
`;
export const INIT_OPTIONSLIST = `
CREATE TABLE IF NOT EXISTS optionslist (id INTEGER PRIMARY KEY);
`;
export const INIT_ARTICLELIST = `
CREATE TABLE IF NOT EXISTS articlelist (id INTEGER PRIMARY KEY);
`;
export const INIT_BRAND = `
CREATE TABLE IF NOT EXISTS brand (
id INTEGER PRIMARY KEY,
company_id INTEGER NOT NULL,
name TEXT NOT NULL COLLATE NOCASE,
gsprpinfo TEXT,
UNIQUE (company_id, name),
FOREIGN KEY (company_id) REFERENCES company(id) ON DELETE NO ACTION
);
`;
export const INIT_ARTICLE = `
CREATE TABLE IF NOT EXISTS article (
id INTEGER PRIMARY KEY,
sku TEXT COLLATE NOCASE UNIQUE,
unit_id INTEGER NOT NULL,
unitamount REAL NOT NULL,
weight REAL NOT NULL,
brand_id INTEGER,
articlelist_id INTEGER,
optionslist_id INTEGER,
is_father INTEGER NOT NULL DEFAULT 0,
fatherarticle_id INTEGER,
fathersort INTEGER NOT NULL DEFAULT 0,
created_at TEXT NOT NULL DEFAULT (${UTC_NOW}),
updated_at TEXT NOT NULL DEFAULT (${UTC_NOW}),
FOREIGN KEY (unit_id) REFERENCES unit(id) ON DELETE NO ACTION,
FOREIGN KEY (brand_id) REFERENCES brand(id) ON DELETE SET NULL,
FOREIGN KEY (articlelist_id) REFERENCES articlelist(id) ON DELETE SET NULL,
FOREIGN KEY (optionslist_id) REFERENCES optionslist(id) ON DELETE SET NULL,
FOREIGN KEY (fatherarticle_id) REFERENCES article(id) ON DELETE NO ACTION
);
CREATE UNIQUE INDEX IF NOT EXISTS UQ_article_fatherarticle_fathersort
ON article(fatherarticle_id, fathersort)
WHERE fatherarticle_id IS NOT NULL;
`;
export const INIT_ARTICLEEAN = `
CREATE TABLE IF NOT EXISTS articleean (
id INTEGER PRIMARY KEY,
article_id INTEGER NOT NULL,
ean TEXT NOT NULL UNIQUE,
FOREIGN KEY (article_id) REFERENCES article(id) ON DELETE CASCADE
);
CREATE INDEX IF NOT EXISTS IX_articleean_article_ean
ON articleean(article_id, ean);
`;
export const INIT_ARTICLEPIC = `
CREATE TABLE IF NOT EXISTS articlepic (
id INTEGER PRIMARY KEY,
article_id INTEGER NOT NULL,
pic_id INTEGER NOT NULL,
sort INTEGER NOT NULL DEFAULT 0,
UNIQUE (article_id, pic_id),
UNIQUE (article_id, sort),
FOREIGN KEY (article_id) REFERENCES article(id) ON DELETE CASCADE,
FOREIGN KEY (pic_id) REFERENCES pic(id) ON DELETE CASCADE
);
`;
export const INIT_BRANDPIC = `
CREATE TABLE IF NOT EXISTS brandpic (
id INTEGER PRIMARY KEY,
brand_id INTEGER NOT NULL,
pic_id INTEGER NOT NULL,
sort INTEGER NOT NULL DEFAULT 0,
UNIQUE (brand_id, pic_id),
UNIQUE (brand_id, sort),
FOREIGN KEY (brand_id) REFERENCES brand(id) ON DELETE CASCADE,
FOREIGN KEY (pic_id) REFERENCES pic(id) ON DELETE CASCADE
);
`;
export const INIT_ARTICLELISTARTICLE = `
CREATE TABLE IF NOT EXISTS articlelistarticle (
id INTEGER PRIMARY KEY,
articlelist_id INTEGER NOT NULL,
article_id INTEGER NOT NULL,
count INTEGER NOT NULL DEFAULT 1,
sort INTEGER NOT NULL DEFAULT 0,
UNIQUE (articlelist_id, article_id),
UNIQUE (articlelist_id, sort),
FOREIGN KEY (articlelist_id) REFERENCES articlelist(id) ON DELETE CASCADE,
FOREIGN KEY (article_id) REFERENCES article(id) ON DELETE CASCADE
);
`;
export const INIT_OPTIONSLISTARTICLE = `
CREATE TABLE IF NOT EXISTS optionslistarticle (
id INTEGER PRIMARY KEY,
optionslist_id INTEGER NOT NULL,
article_id INTEGER NOT NULL,
count INTEGER NOT NULL DEFAULT 1,
sort INTEGER NOT NULL DEFAULT 0,
mandated INTEGER NOT NULL DEFAULT 0,
UNIQUE (optionslist_id, article_id),
UNIQUE (optionslist_id, sort),
FOREIGN KEY (optionslist_id) REFERENCES optionslist(id) ON DELETE CASCADE,
FOREIGN KEY (article_id) REFERENCES article(id) ON DELETE CASCADE
);
`;
export const INIT_CATEGORYARTICLE = `
CREATE TABLE IF NOT EXISTS categoryarticle (
id INTEGER PRIMARY KEY,
category_id INTEGER NOT NULL,
article_id INTEGER NOT NULL,
UNIQUE (category_id, article_id),
FOREIGN KEY (category_id) REFERENCES category(id) ON DELETE NO ACTION,
FOREIGN KEY (article_id) REFERENCES article(id) ON DELETE CASCADE
);
CREATE INDEX IF NOT EXISTS IX_categoryarticle_article_category
ON categoryarticle(article_id, category_id);
`;
export const INIT_CATEGORYPIC = `
CREATE TABLE IF NOT EXISTS categorypic (
id INTEGER PRIMARY KEY,
category_id INTEGER NOT NULL,
pic_id INTEGER NOT NULL,
sort INTEGER NOT NULL DEFAULT 0,
UNIQUE (category_id, pic_id),
UNIQUE (category_id, sort),
FOREIGN KEY (category_id) REFERENCES category(id) ON DELETE CASCADE,
FOREIGN KEY (pic_id) REFERENCES pic(id) ON DELETE CASCADE
);
`;
export const INIT_CATEGORYTEXT = `
CREATE TABLE IF NOT EXISTS categorytext (
id INTEGER PRIMARY KEY,
category_id INTEGER NOT NULL,
language_id INTEGER NOT NULL,
name TEXT NOT NULL,
slug TEXT NOT NULL,
seo TEXT,
"desc" TEXT,
UNIQUE (category_id, language_id),
FOREIGN KEY (category_id) REFERENCES category(id) ON DELETE CASCADE,
FOREIGN KEY (language_id) REFERENCES language(id) ON DELETE CASCADE
);
`;
export const INIT_ARTICLENAME = `
CREATE TABLE IF NOT EXISTS articletext (
id INTEGER PRIMARY KEY,
article_id INTEGER NOT NULL,
language_id INTEGER NOT NULL,
name TEXT NOT NULL,
slug TEXT NOT NULL,
seo TEXT,
"desc" TEXT,
UNIQUE (article_id, language_id),
FOREIGN KEY (article_id) REFERENCES article(id) ON DELETE CASCADE,
FOREIGN KEY (language_id) REFERENCES language(id) ON DELETE CASCADE
);
`;
export const INIT_PRICE = `
CREATE TABLE IF NOT EXISTS price (
id INTEGER PRIMARY KEY,
tax_id INTEGER NOT NULL,
article_id INTEGER NOT NULL,
minmultiplier NUMERIC NOT NULL DEFAULT 1,
customergroup_id INTEGER NOT NULL,
net REAL NOT NULL,
FOREIGN KEY (tax_id) REFERENCES tax(id) ON DELETE CASCADE,
FOREIGN KEY (article_id) REFERENCES article(id) ON DELETE CASCADE,
FOREIGN KEY (customergroup_id) REFERENCES customergroup(id) ON DELETE CASCADE
);
CREATE INDEX IF NOT EXISTS IX_price_article_cg_mult
ON price(article_id, customergroup_id, minmultiplier, net, tax_id);
`;
export const INIT_ARTICLE_SUPPLIER = `
CREATE TABLE IF NOT EXISTS articlesupplier (
id INTEGER PRIMARY KEY,
article_id INTEGER NOT NULL,
entity_id INTEGER NOT NULL,
price_id INTEGER,
sku TEXT,
stock REAL,
pu REAL NOT NULL DEFAULT 1,
sort INTEGER NOT NULL DEFAULT 0,
UNIQUE (article_id, entity_id),
UNIQUE (article_id, sort),
FOREIGN KEY (article_id) REFERENCES article(id) ON DELETE CASCADE,
FOREIGN KEY (entity_id) REFERENCES entity(id) ON DELETE CASCADE,
FOREIGN KEY (price_id) REFERENCES price(id) ON DELETE NO ACTION
);
CREATE INDEX IF NOT EXISTS IX_articlesupplier_article_entity
ON articlesupplier(article_id, entity_id);
`;
export const INIT_MANIFEST = `
CREATE TABLE IF NOT EXISTS manifest (
id INTEGER PRIMARY KEY,
company_id INTEGER NOT NULL,
"number" TEXT NOT NULL,
"type" TEXT NOT NULL,
entity_id INTEGER,
external_number TEXT,
"date" TEXT NOT NULL DEFAULT (${UTC_NOW}),
FOREIGN KEY (company_id) REFERENCES company(id) ON DELETE NO ACTION,
FOREIGN KEY (entity_id) REFERENCES entity(id) ON DELETE SET NULL
);
`;
export const INIT_MANIFESTARTICLE = `
CREATE TABLE IF NOT EXISTS manifestarticle (
id INTEGER PRIMARY KEY,
manifest_id INTEGER NOT NULL,
sku TEXT,
name TEXT,
pu REAL NOT NULL DEFAULT 1,
amount REAL NOT NULL,
net REAL NOT NULL,
comment TEXT,
rebate REAL NOT NULL DEFAULT 0,
taxrate REAL NOT NULL DEFAULT 0,
FOREIGN KEY (manifest_id) REFERENCES manifest(id) ON DELETE CASCADE
);
`;
/* SQLite has no SQL Server ledger tables; constraints preserve the base shape. */
export const INIT_LEDGER = `
CREATE TABLE IF NOT EXISTS ledger (
id INTEGER PRIMARY KEY,
manifestarticle_id INTEGER NOT NULL,
transaction_type TEXT NOT NULL,
amount REAL NOT NULL,
transaction_text TEXT NOT NULL,
hash_version INTEGER NOT NULL,
prev_hash TEXT,
FOREIGN KEY (manifestarticle_id) REFERENCES manifestarticle(id) ON DELETE NO ACTION
);
`;
export const INIT_NUMBERS = `
CREATE TABLE IF NOT EXISTS numbers (
id INTEGER PRIMARY KEY,
company_id INTEGER NOT NULL,
"type" TEXT NOT NULL,
prefix TEXT NOT NULL DEFAULT '',
padding INTEGER NOT NULL DEFAULT 0,
"next" INTEGER NOT NULL DEFAULT 1,
UNIQUE (company_id, "type"),
FOREIGN KEY (company_id) REFERENCES company(id) ON DELETE CASCADE
);
`;
export const INIT_COMPANYUSER = `
CREATE TABLE IF NOT EXISTS companyuser (
id INTEGER PRIMARY KEY,
google_auth_id INTEGER NOT NULL,
company_id INTEGER NOT NULL,
UNIQUE (google_auth_id, company_id),
FOREIGN KEY (google_auth_id) REFERENCES google_auth(id) ON DELETE CASCADE,
FOREIGN KEY (company_id) REFERENCES company(id) ON DELETE CASCADE
);
`;
export const INIT_ARTICLEHISTORY = `
CREATE TABLE IF NOT EXISTS articlehistory (
id INTEGER PRIMARY KEY,
article_id INTEGER NOT NULL,
companyuser_id INTEGER,
"date" TEXT NOT NULL DEFAULT (${UTC_NOW}),
"text" TEXT NOT NULL,
FOREIGN KEY (article_id) REFERENCES article(id) ON DELETE CASCADE,
FOREIGN KEY (companyuser_id) REFERENCES companyuser(id) ON DELETE SET NULL
);
`;
export const INIT_ENTITYHISTORY = `
CREATE TABLE IF NOT EXISTS entityhistory (
id INTEGER PRIMARY KEY,
entity_id INTEGER NOT NULL,
companyuser_id INTEGER,
"date" TEXT NOT NULL DEFAULT (${UTC_NOW}),
"text" TEXT NOT NULL,
FOREIGN KEY (entity_id) REFERENCES entity(id) ON DELETE CASCADE,
FOREIGN KEY (companyuser_id) REFERENCES companyuser(id) ON DELETE NO ACTION
);
`;
export const INIT_SYNCPOS = `
CREATE TABLE IF NOT EXISTS syncpos (
id INTEGER PRIMARY KEY,
company_id INTEGER NOT NULL,
paircode TEXT NOT NULL UNIQUE,
token TEXT UNIQUE,
FOREIGN KEY (company_id) REFERENCES company(id) ON DELETE CASCADE
);
`;
export const INIT_COMPANYSETTING = `
CREATE TABLE IF NOT EXISTS companysetting (
id INTEGER PRIMARY KEY,
company_id INTEGER NOT NULL,
"key" TEXT NOT NULL,
value TEXT NOT NULL,
frontend INTEGER NOT NULL DEFAULT 0,
writeonly INTEGER NOT NULL DEFAULT 0,
UNIQUE (company_id, "key"),
FOREIGN KEY (company_id) REFERENCES company(id) ON DELETE CASCADE
);
`;
export const INIT_POSTERMINAL = `
CREATE TABLE IF NOT EXISTS posterminal (
id INTEGER PRIMARY KEY,
company_id INTEGER NOT NULL,
name TEXT NOT NULL,
token TEXT,
pairingpin TEXT NOT NULL,
FOREIGN KEY (company_id) REFERENCES company(id) ON DELETE CASCADE
);
CREATE UNIQUE INDEX IF NOT EXISTS UQ_posterminal_token
ON posterminal(token) WHERE token IS NOT NULL;
`;
export const INIT_POSTERMINALCATEGORY = `
CREATE TABLE IF NOT EXISTS posterminalcategory (
id INTEGER PRIMARY KEY,
posterminal_id INTEGER NOT NULL,
category_id INTEGER NOT NULL,
UNIQUE (posterminal_id, category_id),
FOREIGN KEY (posterminal_id) REFERENCES posterminal(id) ON DELETE CASCADE,
FOREIGN KEY (category_id) REFERENCES category(id) ON DELETE NO ACTION
);
`;
export const INIT_FILE = `
CREATE TABLE IF NOT EXISTS "file" (
id INTEGER PRIMARY KEY,
hash TEXT NOT NULL,
mimetype TEXT NOT NULL,
name TEXT NOT NULL,
size INTEGER NOT NULL,
created TEXT NOT NULL DEFAULT (${UTC_NOW}),
modified TEXT NOT NULL DEFAULT (${UTC_NOW}),
content BLOB NOT NULL,
thumbavif BLOB,
thumbx INTEGER,
thumby INTEGER,
meta TEXT
);
`;
export const INIT_MANIFESTATTACHMENT = `
CREATE TABLE IF NOT EXISTS manifestattachment (
id INTEGER PRIMARY KEY,
manifest_id INTEGER NOT NULL,
file_id INTEGER NOT NULL,
sort INTEGER NOT NULL DEFAULT 0,
UNIQUE (manifest_id, sort),
FOREIGN KEY (manifest_id) REFERENCES manifest(id) ON DELETE CASCADE,
FOREIGN KEY (file_id) REFERENCES "file"(id) ON DELETE CASCADE
);
`;
export const INIT_MANIFESTATTACHMENT_TRIGGER = `
CREATE TRIGGER IF NOT EXISTS TR_manifestattachment_delete_file
AFTER DELETE ON manifestattachment
BEGIN
DELETE FROM "file"
WHERE id = OLD.file_id
AND NOT EXISTS (
SELECT 1 FROM manifestattachment WHERE file_id = OLD.file_id
);
END;
`;
/** DDL scripts in dependency order for SQLite schema initialization. */
export const SCHEMA_SCRIPTS = [
INIT_META,
INIT_LANGUAGE,
INIT_TAX,
INIT_CATEGORY,
INIT_PIC,
INIT_COMPANY,
INIT_GOOGLE_AUTH,
INIT_CUSTOMERGROUP,
INIT_ENTITY,
INIT_ENTITY_COMPANY_NUMBER_UQ,
INIT_ENTITYADDRESS,
INIT_ENTITYCONTACT,
INIT_UNIT,
INIT_UNITTEXT,
INIT_OPTIONSLIST,
INIT_ARTICLELIST,
INIT_BRAND,
INIT_ARTICLE,
INIT_ARTICLEEAN,
INIT_ARTICLEPIC,
INIT_BRANDPIC,
INIT_ARTICLELISTARTICLE,
INIT_OPTIONSLISTARTICLE,
INIT_CATEGORYARTICLE,
INIT_CATEGORYPIC,
INIT_CATEGORYTEXT,
INIT_ARTICLENAME,
INIT_PRICE,
INIT_ARTICLE_SUPPLIER,
INIT_MANIFEST,
INIT_MANIFESTARTICLE,
INIT_LEDGER,
INIT_NUMBERS,
INIT_COMPANYUSER,
INIT_ARTICLEHISTORY,
INIT_ENTITYHISTORY,
INIT_SYNCPOS,
INIT_COMPANYSETTING,
INIT_POSTERMINAL,
INIT_POSTERMINALCATEGORY,
INIT_FILE,
INIT_MANIFESTATTACHMENT,
INIT_MANIFESTATTACHMENT_TRIGGER,
];