@fctc/interface-logic 4.3.9 → 4.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/constants.d.mts +3 -1
- package/dist/constants.d.ts +3 -1
- package/dist/constants.js +2 -0
- package/dist/constants.mjs +2 -0
- package/dist/environment.d.mts +1 -1
- package/dist/environment.d.ts +1 -1
- package/dist/hooks.d.mts +8 -3
- package/dist/hooks.d.ts +8 -3
- package/dist/hooks.js +347 -805
- package/dist/hooks.mjs +196 -654
- package/dist/provider.d.mts +14 -6
- package/dist/provider.d.ts +14 -6
- package/dist/provider.js +262 -703
- package/dist/provider.mjs +236 -679
- package/dist/services.d.mts +16 -8
- package/dist/services.d.ts +16 -8
- package/dist/services.js +303 -762
- package/dist/services.mjs +285 -743
- package/dist/store.js +1 -1
- package/dist/store.mjs +1 -1
- package/package.json +92 -91
- package/dist/import-snapshot-Ds0gqFFm.d.mts +0 -3
- package/dist/import-snapshot-Ds0gqFFm.d.ts +0 -3
package/dist/provider.mjs
CHANGED
|
@@ -64,7 +64,7 @@ var initialState2 = {
|
|
|
64
64
|
lang: "vi_VN",
|
|
65
65
|
tz: "Asia/Saigon"
|
|
66
66
|
},
|
|
67
|
-
|
|
67
|
+
isSupaMode: false
|
|
68
68
|
};
|
|
69
69
|
var envSlice = createSlice2({
|
|
70
70
|
name: "env",
|
|
@@ -710,6 +710,58 @@ var UriConstants = /* @__PURE__ */ ((UriConstants2) => {
|
|
|
710
710
|
// src/utils/format.ts
|
|
711
711
|
import moment from "moment";
|
|
712
712
|
|
|
713
|
+
// src/constants/model/model-constant.ts
|
|
714
|
+
var LoadDataModel = /* @__PURE__ */ ((LoadDataModel2) => {
|
|
715
|
+
LoadDataModel2["ACCOUNT_CASH_ROUNDING"] = "account.cash.rounding";
|
|
716
|
+
LoadDataModel2["ACCOUNT_FISCAL_POSITION"] = "account.fiscal.position";
|
|
717
|
+
LoadDataModel2["ACCOUNT_FISCAL_POSITION_TAX"] = "account.fiscal.position.tax";
|
|
718
|
+
LoadDataModel2["ACCOUNT_TAX"] = "account.tax";
|
|
719
|
+
LoadDataModel2["ACCOUNT_TAX_GROUP"] = "account.tax.group";
|
|
720
|
+
LoadDataModel2["DECIMAL_PRECISION"] = "decimal.precision";
|
|
721
|
+
LoadDataModel2["IR_MODULE_MODULE"] = "ir.module.module";
|
|
722
|
+
LoadDataModel2["IR_UI_VIEW"] = "ir.ui.view";
|
|
723
|
+
LoadDataModel2["POS_BILL"] = "pos.bill";
|
|
724
|
+
LoadDataModel2["POS_CATEGORY"] = "pos.category";
|
|
725
|
+
LoadDataModel2["POS_CONFIG"] = "pos.config";
|
|
726
|
+
LoadDataModel2["POS_NOTE"] = "pos.note";
|
|
727
|
+
LoadDataModel2["POS_ORDER"] = "pos.order";
|
|
728
|
+
LoadDataModel2["POS_ORDER_LINE"] = "pos.order.line";
|
|
729
|
+
LoadDataModel2["POS_PACK_OPERATION_LOT"] = "pos.pack.operation.lot";
|
|
730
|
+
LoadDataModel2["POS_PAYMENT"] = "pos.payment";
|
|
731
|
+
LoadDataModel2["POS_PAYMENT_METHOD"] = "pos.payment.method";
|
|
732
|
+
LoadDataModel2["POS_PRINTER"] = "pos.printer";
|
|
733
|
+
LoadDataModel2["POS_SESSION"] = "pos.session";
|
|
734
|
+
LoadDataModel2["POS_PREPARATION_DISPLAY_DISPLAY"] = "pos_preparation_display.display";
|
|
735
|
+
LoadDataModel2["PRODUCT_ATTRIBUTE"] = "product.attribute";
|
|
736
|
+
LoadDataModel2["PRODUCT_ATTRIBUTE_CUSTOM_VALUE"] = "product.attribute.custom.value";
|
|
737
|
+
LoadDataModel2["PRODUCT_CATEGORY"] = "product.category";
|
|
738
|
+
LoadDataModel2["PRODUCT_COMBO"] = "product.combo";
|
|
739
|
+
LoadDataModel2["PRODUCT_COMBO_ITEM"] = "product.combo.item";
|
|
740
|
+
LoadDataModel2["PRODUCT_PACKAGING"] = "product.packaging";
|
|
741
|
+
LoadDataModel2["PRODUCT_PRICELIST"] = "product.pricelist";
|
|
742
|
+
LoadDataModel2["PRODUCT_PRICELIST_ITEM"] = "product.pricelist.item";
|
|
743
|
+
LoadDataModel2["PRODUCT_PRODUCT"] = "product.product";
|
|
744
|
+
LoadDataModel2["PRODUCT_TAG"] = "product.tag";
|
|
745
|
+
LoadDataModel2["PRODUCT_TEMPLATE_ATTRIBUTE_LINE"] = "product.template.attribute.line";
|
|
746
|
+
LoadDataModel2["PRODUCT_TEMPLATE_ATTRIBUTE_VALUE"] = "product.template.attribute.value";
|
|
747
|
+
LoadDataModel2["RES_COMPANY"] = "res.company";
|
|
748
|
+
LoadDataModel2["RES_COUNTRY"] = "res.country";
|
|
749
|
+
LoadDataModel2["RES_COUNTRY_STATE"] = "res.country.state";
|
|
750
|
+
LoadDataModel2["RES_CURRENCY"] = "res.currency";
|
|
751
|
+
LoadDataModel2["RES_LANG"] = "res.lang";
|
|
752
|
+
LoadDataModel2["RES_PARTNER"] = "res.partner";
|
|
753
|
+
LoadDataModel2["RES_USERS"] = "res.users";
|
|
754
|
+
LoadDataModel2["STOCK_PICKING_TYPE"] = "stock.picking.type";
|
|
755
|
+
LoadDataModel2["UOM_CATEGORY"] = "uom.category";
|
|
756
|
+
LoadDataModel2["UOM_UOM"] = "uom.uom";
|
|
757
|
+
LoadDataModel2["LOYALTY_PROGRAM"] = "loyalty.program";
|
|
758
|
+
LoadDataModel2["LOYALTY_RULE"] = "loyalty.rule";
|
|
759
|
+
LoadDataModel2["RESTAURANT_TABLE"] = "restaurant.table";
|
|
760
|
+
LoadDataModel2["RESTAURANT_FLOOR"] = "restaurant.floor";
|
|
761
|
+
LoadDataModel2["POS_MAKE_PAYMENT"] = "pos.make.payment";
|
|
762
|
+
return LoadDataModel2;
|
|
763
|
+
})(LoadDataModel || {});
|
|
764
|
+
|
|
713
765
|
// src/constants/widget/widget-avatar-constant.ts
|
|
714
766
|
var WIDGETAVATAR = /* @__PURE__ */ ((WIDGETAVATAR2) => {
|
|
715
767
|
WIDGETAVATAR2["many2one_avatar_user"] = "many2one_avatar_user";
|
|
@@ -2879,13 +2931,6 @@ function cleanObject(obj) {
|
|
|
2879
2931
|
}
|
|
2880
2932
|
return result;
|
|
2881
2933
|
}
|
|
2882
|
-
var extractIdFromDomain = (domain) => {
|
|
2883
|
-
if (!domain || !Array.isArray(domain)) return null;
|
|
2884
|
-
const idCond = domain.find(
|
|
2885
|
-
([field, operator]) => field === "id" && operator === "="
|
|
2886
|
-
);
|
|
2887
|
-
return idCond ? Number(idCond[2]) : null;
|
|
2888
|
-
};
|
|
2889
2934
|
|
|
2890
2935
|
// src/utils/storage/local-storage.ts
|
|
2891
2936
|
var localStorageUtils = () => {
|
|
@@ -5168,544 +5213,7 @@ var getASessionService = (env) => {
|
|
|
5168
5213
|
|
|
5169
5214
|
// src/services/pos-service/add-entity.ts
|
|
5170
5215
|
import { useCallback as useCallback12 } from "react";
|
|
5171
|
-
|
|
5172
|
-
// src/services/filesystem-service/file-service.ts
|
|
5173
|
-
import { Directory, Encoding, Filesystem } from "@capacitor/filesystem";
|
|
5174
|
-
var fileService = {
|
|
5175
|
-
read: async (path) => {
|
|
5176
|
-
try {
|
|
5177
|
-
const res = await Filesystem.readFile({
|
|
5178
|
-
path,
|
|
5179
|
-
directory: Directory.Data,
|
|
5180
|
-
encoding: Encoding.UTF8
|
|
5181
|
-
});
|
|
5182
|
-
if (typeof res.data === "string") return res.data;
|
|
5183
|
-
if (res.data instanceof Blob) return await res.data.text();
|
|
5184
|
-
return null;
|
|
5185
|
-
} catch {
|
|
5186
|
-
return null;
|
|
5187
|
-
}
|
|
5188
|
-
},
|
|
5189
|
-
write: async (path, data) => {
|
|
5190
|
-
await Filesystem.writeFile({
|
|
5191
|
-
path,
|
|
5192
|
-
data,
|
|
5193
|
-
directory: Directory.Data,
|
|
5194
|
-
encoding: Encoding.UTF8,
|
|
5195
|
-
recursive: true
|
|
5196
|
-
});
|
|
5197
|
-
},
|
|
5198
|
-
writeAtomic: async (path, data) => {
|
|
5199
|
-
const tempPath = path + ".tmp";
|
|
5200
|
-
await Filesystem.writeFile({
|
|
5201
|
-
path: tempPath,
|
|
5202
|
-
data,
|
|
5203
|
-
directory: Directory.Data,
|
|
5204
|
-
encoding: Encoding.UTF8,
|
|
5205
|
-
recursive: true
|
|
5206
|
-
});
|
|
5207
|
-
try {
|
|
5208
|
-
await Filesystem.deleteFile({
|
|
5209
|
-
path,
|
|
5210
|
-
directory: Directory.Data
|
|
5211
|
-
});
|
|
5212
|
-
} catch {
|
|
5213
|
-
}
|
|
5214
|
-
await Filesystem.rename({
|
|
5215
|
-
from: tempPath,
|
|
5216
|
-
to: path,
|
|
5217
|
-
directory: Directory.Data
|
|
5218
|
-
});
|
|
5219
|
-
},
|
|
5220
|
-
delete: async (path) => {
|
|
5221
|
-
try {
|
|
5222
|
-
await Filesystem.deleteFile({
|
|
5223
|
-
path,
|
|
5224
|
-
directory: Directory.Data
|
|
5225
|
-
});
|
|
5226
|
-
} catch {
|
|
5227
|
-
}
|
|
5228
|
-
},
|
|
5229
|
-
exists: async (path) => {
|
|
5230
|
-
try {
|
|
5231
|
-
await Filesystem.stat({
|
|
5232
|
-
path,
|
|
5233
|
-
directory: Directory.Data
|
|
5234
|
-
});
|
|
5235
|
-
return true;
|
|
5236
|
-
} catch {
|
|
5237
|
-
return false;
|
|
5238
|
-
}
|
|
5239
|
-
},
|
|
5240
|
-
mkdir: async (path) => {
|
|
5241
|
-
try {
|
|
5242
|
-
await Filesystem.mkdir({
|
|
5243
|
-
path,
|
|
5244
|
-
directory: Directory.Data,
|
|
5245
|
-
recursive: true
|
|
5246
|
-
});
|
|
5247
|
-
} catch (e) {
|
|
5248
|
-
if (!String(e?.message).includes("Exists")) {
|
|
5249
|
-
throw e;
|
|
5250
|
-
}
|
|
5251
|
-
}
|
|
5252
|
-
},
|
|
5253
|
-
list: async (path) => {
|
|
5254
|
-
return Filesystem.readdir({
|
|
5255
|
-
path,
|
|
5256
|
-
directory: Directory.Data
|
|
5257
|
-
});
|
|
5258
|
-
},
|
|
5259
|
-
getUri: async (path) => {
|
|
5260
|
-
return Filesystem.getUri({
|
|
5261
|
-
path,
|
|
5262
|
-
directory: Directory.Data
|
|
5263
|
-
});
|
|
5264
|
-
}
|
|
5265
|
-
};
|
|
5266
|
-
|
|
5267
|
-
// src/services/filesystem-service/json-worker.ts
|
|
5268
|
-
function createWorkerBlob() {
|
|
5269
|
-
const workerCode = `
|
|
5270
|
-
self.addEventListener("message", async (ev) => {
|
|
5271
|
-
const { id, cmd, payload } = ev.data;
|
|
5272
|
-
try {
|
|
5273
|
-
if (cmd === "parse") {
|
|
5274
|
-
const parsed = JSON.parse(payload);
|
|
5275
|
-
self.postMessage({ id, ok: true, result: parsed });
|
|
5276
|
-
} else if (cmd === "stringify") {
|
|
5277
|
-
const str = JSON.stringify(payload);
|
|
5278
|
-
self.postMessage({ id, ok: true, result: str });
|
|
5279
|
-
}
|
|
5280
|
-
} catch (err) {
|
|
5281
|
-
self.postMessage({ id, ok: false, error: err?.message || String(err) });
|
|
5282
|
-
}
|
|
5283
|
-
});
|
|
5284
|
-
`;
|
|
5285
|
-
const blob = new Blob([workerCode], { type: "application/javascript" });
|
|
5286
|
-
return URL.createObjectURL(blob);
|
|
5287
|
-
}
|
|
5288
|
-
function spawnParseWorker(raw) {
|
|
5289
|
-
return new Promise((resolve, reject) => {
|
|
5290
|
-
const workerUrl = createWorkerBlob();
|
|
5291
|
-
const worker = new Worker(workerUrl);
|
|
5292
|
-
const id = Math.random().toString(36).slice(2);
|
|
5293
|
-
worker.onmessage = (ev) => {
|
|
5294
|
-
const { ok, result, error } = ev.data;
|
|
5295
|
-
if (ok) {
|
|
5296
|
-
resolve(result);
|
|
5297
|
-
} else {
|
|
5298
|
-
reject(new Error(error));
|
|
5299
|
-
}
|
|
5300
|
-
URL.revokeObjectURL(workerUrl);
|
|
5301
|
-
worker.terminate();
|
|
5302
|
-
};
|
|
5303
|
-
worker.onerror = (err) => {
|
|
5304
|
-
reject(err);
|
|
5305
|
-
URL.revokeObjectURL(workerUrl);
|
|
5306
|
-
worker.terminate();
|
|
5307
|
-
};
|
|
5308
|
-
worker.postMessage({ id, cmd: "parse", payload: raw });
|
|
5309
|
-
});
|
|
5310
|
-
}
|
|
5311
|
-
function spawnStringifyWorker(obj) {
|
|
5312
|
-
return new Promise((resolve, reject) => {
|
|
5313
|
-
const workerUrl = createWorkerBlob();
|
|
5314
|
-
const worker = new Worker(workerUrl);
|
|
5315
|
-
worker.onmessage = (ev) => {
|
|
5316
|
-
const { ok, result, error } = ev.data;
|
|
5317
|
-
if (ok) resolve(result);
|
|
5318
|
-
else reject(new Error(error));
|
|
5319
|
-
URL.revokeObjectURL(workerUrl);
|
|
5320
|
-
worker.terminate();
|
|
5321
|
-
};
|
|
5322
|
-
worker.onerror = (err) => {
|
|
5323
|
-
reject(err);
|
|
5324
|
-
URL.revokeObjectURL(workerUrl);
|
|
5325
|
-
worker.terminate();
|
|
5326
|
-
};
|
|
5327
|
-
worker.postMessage({ cmd: "stringify", payload: obj });
|
|
5328
|
-
});
|
|
5329
|
-
}
|
|
5330
|
-
|
|
5331
|
-
// src/services/filesystem-service/manifest.ts
|
|
5332
|
-
var MANIFEST_PATH = "pos/manifest.json";
|
|
5333
|
-
var MANIFEST_BAK_PATH = "pos/manifest.bak.json";
|
|
5334
|
-
async function writeManifest(manifest) {
|
|
5335
|
-
const oldRaw = await fileService.read(MANIFEST_PATH);
|
|
5336
|
-
if (oldRaw !== null) {
|
|
5337
|
-
await fileService.writeAtomic(MANIFEST_BAK_PATH, oldRaw);
|
|
5338
|
-
}
|
|
5339
|
-
await fileService.writeAtomic(MANIFEST_PATH, JSON.stringify(manifest));
|
|
5340
|
-
try {
|
|
5341
|
-
await fileService.delete(MANIFEST_BAK_PATH);
|
|
5342
|
-
} catch {
|
|
5343
|
-
}
|
|
5344
|
-
}
|
|
5345
|
-
|
|
5346
|
-
// src/services/filesystem-service/import-snapshot.ts
|
|
5347
|
-
var DATA_DIR = "pos";
|
|
5348
|
-
var MODELS_DIR = `${DATA_DIR}/models`;
|
|
5349
|
-
var MODELS_META_DIR = `${DATA_DIR}/models_meta`;
|
|
5350
|
-
var importSnapshot = async ({ data, onProgress }) => {
|
|
5351
|
-
onProgress?.(1, "Parsing snapshot");
|
|
5352
|
-
const parsed = await spawnParseWorker(data);
|
|
5353
|
-
const modelNames = Object.keys(parsed);
|
|
5354
|
-
const total = modelNames.length;
|
|
5355
|
-
const manifest = { version: (/* @__PURE__ */ new Date()).toISOString(), models: {} };
|
|
5356
|
-
const TMP_PREFIX = `pos/data/tmp_import_${Date.now()}`;
|
|
5357
|
-
await fileService.writeAtomic(`${TMP_PREFIX}/.marker`, "1");
|
|
5358
|
-
let i = 0;
|
|
5359
|
-
for (const model of modelNames) {
|
|
5360
|
-
i++;
|
|
5361
|
-
onProgress?.(
|
|
5362
|
-
Math.round(i / total * 100),
|
|
5363
|
-
`Processing ${model} (${i}/${total})`
|
|
5364
|
-
);
|
|
5365
|
-
const block = parsed[model];
|
|
5366
|
-
const dataPart = block?.data ?? block ?? [];
|
|
5367
|
-
const fields = block?.fields ?? [];
|
|
5368
|
-
const relations = block?.relations ?? {};
|
|
5369
|
-
const serialized = await spawnStringifyWorker(dataPart);
|
|
5370
|
-
const tmpModelPath = `${TMP_PREFIX}/${encodeURIComponent(model)}.json`;
|
|
5371
|
-
await fileService.writeAtomic(tmpModelPath, serialized);
|
|
5372
|
-
const meta = {
|
|
5373
|
-
fields,
|
|
5374
|
-
relations,
|
|
5375
|
-
count: Array.isArray(dataPart) ? dataPart.length : 0,
|
|
5376
|
-
writtenAt: (/* @__PURE__ */ new Date()).toISOString()
|
|
5377
|
-
};
|
|
5378
|
-
const tmpMetaPath = `${TMP_PREFIX}/${encodeURIComponent(model)}.meta.json`;
|
|
5379
|
-
await fileService.writeAtomic(tmpMetaPath, JSON.stringify(meta));
|
|
5380
|
-
manifest.models[model] = {
|
|
5381
|
-
file: `${MODELS_DIR}/${encodeURIComponent(model)}.json`,
|
|
5382
|
-
metaFile: `${MODELS_META_DIR}/${encodeURIComponent(model)}.meta.json`,
|
|
5383
|
-
count: meta.count,
|
|
5384
|
-
updatedAt: meta.writtenAt
|
|
5385
|
-
};
|
|
5386
|
-
}
|
|
5387
|
-
onProgress?.(95, "Committing import (moving files)");
|
|
5388
|
-
for (const model of modelNames) {
|
|
5389
|
-
const tmpModelPath = `${TMP_PREFIX}/${encodeURIComponent(model)}.json`;
|
|
5390
|
-
const finalModelPath = `${MODELS_DIR}/${encodeURIComponent(model)}.json`;
|
|
5391
|
-
const tmpMetaPath = `${TMP_PREFIX}/${encodeURIComponent(model)}.meta.json`;
|
|
5392
|
-
const finalMetaPath = `${MODELS_META_DIR}/${encodeURIComponent(
|
|
5393
|
-
model
|
|
5394
|
-
)}.meta.json`;
|
|
5395
|
-
const tmpRaw = await fileService.read(tmpModelPath);
|
|
5396
|
-
if (tmpRaw !== null) await fileService.writeAtomic(finalModelPath, tmpRaw);
|
|
5397
|
-
const tmpMetaRaw = await fileService.read(tmpMetaPath);
|
|
5398
|
-
if (tmpMetaRaw !== null)
|
|
5399
|
-
await fileService.writeAtomic(finalMetaPath, tmpMetaRaw);
|
|
5400
|
-
onProgress?.(
|
|
5401
|
-
95 + Math.round(
|
|
5402
|
-
(Object.keys(manifest.models).indexOf(model) + 1) / modelNames.length * 5
|
|
5403
|
-
),
|
|
5404
|
-
`Committed ${model}`
|
|
5405
|
-
);
|
|
5406
|
-
}
|
|
5407
|
-
await writeManifest(manifest);
|
|
5408
|
-
try {
|
|
5409
|
-
for (const model of modelNames) {
|
|
5410
|
-
await fileService.delete(
|
|
5411
|
-
`${TMP_PREFIX}/${encodeURIComponent(model)}.json`
|
|
5412
|
-
);
|
|
5413
|
-
await fileService.delete(
|
|
5414
|
-
`${TMP_PREFIX}/${encodeURIComponent(model)}.meta.json`
|
|
5415
|
-
);
|
|
5416
|
-
}
|
|
5417
|
-
await fileService.delete(`${TMP_PREFIX}/.marker`);
|
|
5418
|
-
} catch (e) {
|
|
5419
|
-
console.log("Failed to cleanup tmp import files:", e);
|
|
5420
|
-
}
|
|
5421
|
-
onProgress?.(100, "Import complete");
|
|
5422
|
-
return manifest;
|
|
5423
|
-
};
|
|
5424
|
-
var import_snapshot_default = importSnapshot;
|
|
5425
|
-
|
|
5426
|
-
// src/services/filesystem-service/memory-cache.ts
|
|
5427
|
-
var MemoryCache = class {
|
|
5428
|
-
map = /* @__PURE__ */ new Map();
|
|
5429
|
-
get(k) {
|
|
5430
|
-
const e = this.map.get(k);
|
|
5431
|
-
if (!e) return null;
|
|
5432
|
-
if (e.ttl && Date.now() - e.t > e.ttl) {
|
|
5433
|
-
this.map.delete(k);
|
|
5434
|
-
return null;
|
|
5435
|
-
}
|
|
5436
|
-
return e.value;
|
|
5437
|
-
}
|
|
5438
|
-
set(k, v, ttl = 5 * 60 * 1e3) {
|
|
5439
|
-
this.map.set(k, { value: v, t: Date.now(), ttl });
|
|
5440
|
-
}
|
|
5441
|
-
del(k) {
|
|
5442
|
-
this.map.delete(k);
|
|
5443
|
-
}
|
|
5444
|
-
clear() {
|
|
5445
|
-
this.map.clear();
|
|
5446
|
-
}
|
|
5447
|
-
};
|
|
5448
|
-
var memoryCache = new MemoryCache();
|
|
5449
|
-
|
|
5450
|
-
// src/services/filesystem-service/model-loader.ts
|
|
5451
|
-
var MODELS_DIR2 = "pos/models";
|
|
5452
|
-
var MODELS_META_DIR2 = "pos/models_meta";
|
|
5453
|
-
async function loadModelData(modelName, includeMeta = true) {
|
|
5454
|
-
const key = `model:${modelName}:meta:${includeMeta}`;
|
|
5455
|
-
const cached = memoryCache.get(key);
|
|
5456
|
-
if (cached) return cached;
|
|
5457
|
-
const dataPath = `${MODELS_DIR2}/${encodeURIComponent(modelName)}.json`;
|
|
5458
|
-
const metaPath = `${MODELS_META_DIR2}/${encodeURIComponent(
|
|
5459
|
-
modelName
|
|
5460
|
-
)}.meta.json`;
|
|
5461
|
-
const rawData = await fileService.read(dataPath);
|
|
5462
|
-
if (!rawData) return null;
|
|
5463
|
-
const parsedData = await spawnParseWorker(rawData);
|
|
5464
|
-
const data = Array.isArray(parsedData) ? parsedData : [];
|
|
5465
|
-
if (!includeMeta) {
|
|
5466
|
-
const result2 = { data };
|
|
5467
|
-
memoryCache.set(key, result2, 1e3 * 60 * 60);
|
|
5468
|
-
return result2;
|
|
5469
|
-
}
|
|
5470
|
-
const rawMeta = await fileService.read(metaPath);
|
|
5471
|
-
let fields = [];
|
|
5472
|
-
let relations = {};
|
|
5473
|
-
if (rawMeta) {
|
|
5474
|
-
const parsedMeta = await spawnParseWorker(rawMeta);
|
|
5475
|
-
fields = parsedMeta?.fields ?? [];
|
|
5476
|
-
relations = parsedMeta?.relations ?? {};
|
|
5477
|
-
}
|
|
5478
|
-
const result = {
|
|
5479
|
-
data,
|
|
5480
|
-
fields,
|
|
5481
|
-
relations
|
|
5482
|
-
};
|
|
5483
|
-
memoryCache.set(key, result, 1e3 * 60 * 60);
|
|
5484
|
-
return result;
|
|
5485
|
-
}
|
|
5486
|
-
async function loadData(includeMeta = true) {
|
|
5487
|
-
try {
|
|
5488
|
-
const listResult = await fileService.list(MODELS_DIR2);
|
|
5489
|
-
if (!listResult || !Array.isArray(listResult.files)) {
|
|
5490
|
-
console.log("No models found");
|
|
5491
|
-
return {};
|
|
5492
|
-
}
|
|
5493
|
-
const result = {};
|
|
5494
|
-
for (const file of listResult.files) {
|
|
5495
|
-
if (file.type !== "file") continue;
|
|
5496
|
-
if (!file.name.endsWith(".json")) continue;
|
|
5497
|
-
const fileName = file.name;
|
|
5498
|
-
const modelName = fileName.replace(/\.json$/, "");
|
|
5499
|
-
const dataPath = `${MODELS_DIR2}/${fileName}`;
|
|
5500
|
-
const rawData = await fileService.read(dataPath);
|
|
5501
|
-
if (!rawData) continue;
|
|
5502
|
-
const parsedData = await spawnParseWorker(rawData);
|
|
5503
|
-
const data = Array.isArray(parsedData) ? parsedData : [];
|
|
5504
|
-
if (!includeMeta) {
|
|
5505
|
-
result[modelName] = { data };
|
|
5506
|
-
continue;
|
|
5507
|
-
}
|
|
5508
|
-
const metaPath = `${MODELS_META_DIR2}/${encodeURIComponent(
|
|
5509
|
-
modelName
|
|
5510
|
-
)}.meta.json`;
|
|
5511
|
-
const rawMeta = await fileService.read(metaPath);
|
|
5512
|
-
let fields = [];
|
|
5513
|
-
let relations = {};
|
|
5514
|
-
if (rawMeta) {
|
|
5515
|
-
const parsedMeta = await spawnParseWorker(rawMeta);
|
|
5516
|
-
fields = parsedMeta?.fields ?? [];
|
|
5517
|
-
relations = parsedMeta?.relations ?? {};
|
|
5518
|
-
}
|
|
5519
|
-
result[modelName] = {
|
|
5520
|
-
data,
|
|
5521
|
-
fields,
|
|
5522
|
-
relations
|
|
5523
|
-
};
|
|
5524
|
-
}
|
|
5525
|
-
return result;
|
|
5526
|
-
} catch (error) {
|
|
5527
|
-
console.error("Error loading data:", error);
|
|
5528
|
-
throw error;
|
|
5529
|
-
}
|
|
5530
|
-
}
|
|
5531
|
-
|
|
5532
|
-
// src/services/filesystem-service/snapshot-helper.ts
|
|
5533
|
-
var createEmptySnapshot = () => {
|
|
5534
|
-
return {
|
|
5535
|
-
data: []
|
|
5536
|
-
};
|
|
5537
|
-
};
|
|
5538
|
-
var generateNextId = (existingIds, startFrom = 1) => {
|
|
5539
|
-
if (!existingIds || existingIds.length === 0) {
|
|
5540
|
-
return startFrom;
|
|
5541
|
-
}
|
|
5542
|
-
const maxId = Math.max(...existingIds, startFrom - 1);
|
|
5543
|
-
return maxId + 1;
|
|
5544
|
-
};
|
|
5545
|
-
var loadSnapshot = async ({
|
|
5546
|
-
modelName
|
|
5547
|
-
}) => {
|
|
5548
|
-
try {
|
|
5549
|
-
const snapshot = await loadModelData(modelName);
|
|
5550
|
-
if (!snapshot || typeof snapshot !== "object") {
|
|
5551
|
-
console.warn("invalid snapshot, creating new one");
|
|
5552
|
-
return createEmptySnapshot();
|
|
5553
|
-
}
|
|
5554
|
-
return {
|
|
5555
|
-
data: Array.isArray(snapshot.data) ? snapshot.data : []
|
|
5556
|
-
};
|
|
5557
|
-
} catch (error) {
|
|
5558
|
-
console.error("Failed to load snapshot:", error);
|
|
5559
|
-
return createEmptySnapshot();
|
|
5560
|
-
}
|
|
5561
|
-
};
|
|
5562
|
-
var getExistingIds = (snapshot) => {
|
|
5563
|
-
return snapshot.data.map((order) => order.id).filter((id) => typeof id === "number");
|
|
5564
|
-
};
|
|
5565
|
-
var saveSnapshot = async ({
|
|
5566
|
-
snapshot,
|
|
5567
|
-
modelName
|
|
5568
|
-
}) => {
|
|
5569
|
-
try {
|
|
5570
|
-
await import_snapshot_default({
|
|
5571
|
-
data: JSON.stringify({
|
|
5572
|
-
[modelName]: snapshot
|
|
5573
|
-
})
|
|
5574
|
-
});
|
|
5575
|
-
return true;
|
|
5576
|
-
} catch (error) {
|
|
5577
|
-
console.error("failed to save snapshot:", error);
|
|
5578
|
-
return false;
|
|
5579
|
-
}
|
|
5580
|
-
};
|
|
5581
|
-
var addRecordResponseHandler = ({
|
|
5582
|
-
modelName,
|
|
5583
|
-
id,
|
|
5584
|
-
data
|
|
5585
|
-
}) => {
|
|
5586
|
-
if (modelName === "restaurant.floor" /* RESTAURANT_FLOOR */ || modelName === "res.partner" /* RES_PARTNER */) {
|
|
5587
|
-
return [[id, ""]];
|
|
5588
|
-
}
|
|
5589
|
-
return data;
|
|
5590
|
-
};
|
|
5591
|
-
|
|
5592
|
-
// src/services/filesystem-service/model-repository.ts
|
|
5593
|
-
var ModelRepository = class {
|
|
5594
|
-
getAll = async ({ modelName }) => {
|
|
5595
|
-
try {
|
|
5596
|
-
const snapshot = await loadSnapshot({
|
|
5597
|
-
modelName
|
|
5598
|
-
});
|
|
5599
|
-
return snapshot.data;
|
|
5600
|
-
} catch (error) {
|
|
5601
|
-
console.error("failed to get all records:", error);
|
|
5602
|
-
return [];
|
|
5603
|
-
}
|
|
5604
|
-
};
|
|
5605
|
-
getRecord = async ({
|
|
5606
|
-
id,
|
|
5607
|
-
modelName
|
|
5608
|
-
}) => {
|
|
5609
|
-
try {
|
|
5610
|
-
const snapshot = await loadSnapshot({
|
|
5611
|
-
modelName
|
|
5612
|
-
});
|
|
5613
|
-
return snapshot.data.find((record) => record.id === id) || null;
|
|
5614
|
-
} catch (error) {
|
|
5615
|
-
console.error("failed to get record:", error);
|
|
5616
|
-
return null;
|
|
5617
|
-
}
|
|
5618
|
-
};
|
|
5619
|
-
addRecord = async ({
|
|
5620
|
-
newRecord,
|
|
5621
|
-
modelName
|
|
5622
|
-
}) => {
|
|
5623
|
-
try {
|
|
5624
|
-
const snapshot = await loadSnapshot({
|
|
5625
|
-
modelName
|
|
5626
|
-
});
|
|
5627
|
-
const existingIds = getExistingIds(snapshot);
|
|
5628
|
-
const newId = generateNextId(existingIds, snapshot.data.length);
|
|
5629
|
-
snapshot.data.push({
|
|
5630
|
-
...newRecord,
|
|
5631
|
-
id: newId
|
|
5632
|
-
});
|
|
5633
|
-
const saved = await saveSnapshot({
|
|
5634
|
-
snapshot,
|
|
5635
|
-
modelName
|
|
5636
|
-
});
|
|
5637
|
-
if (!saved) {
|
|
5638
|
-
console.error("failed to add new record");
|
|
5639
|
-
return [];
|
|
5640
|
-
}
|
|
5641
|
-
console.log("lib data:", snapshot.data);
|
|
5642
|
-
const response = addRecordResponseHandler({
|
|
5643
|
-
id: newId,
|
|
5644
|
-
modelName,
|
|
5645
|
-
data: snapshot.data
|
|
5646
|
-
});
|
|
5647
|
-
return response;
|
|
5648
|
-
} catch (error) {
|
|
5649
|
-
console.error("failed to add new record:", error);
|
|
5650
|
-
return [];
|
|
5651
|
-
}
|
|
5652
|
-
};
|
|
5653
|
-
updateRecord = async ({
|
|
5654
|
-
id,
|
|
5655
|
-
update,
|
|
5656
|
-
modelName
|
|
5657
|
-
}) => {
|
|
5658
|
-
try {
|
|
5659
|
-
const snapshot = await loadSnapshot({
|
|
5660
|
-
modelName
|
|
5661
|
-
});
|
|
5662
|
-
const index = snapshot.data.findIndex((record) => record.id === id);
|
|
5663
|
-
if (index === -1) {
|
|
5664
|
-
console.error(`record with id ${id} not found`);
|
|
5665
|
-
return false;
|
|
5666
|
-
}
|
|
5667
|
-
snapshot.data[index] = {
|
|
5668
|
-
...snapshot.data[index],
|
|
5669
|
-
...update
|
|
5670
|
-
};
|
|
5671
|
-
return await saveSnapshot({
|
|
5672
|
-
snapshot,
|
|
5673
|
-
modelName
|
|
5674
|
-
});
|
|
5675
|
-
} catch (error) {
|
|
5676
|
-
console.error("error updating record:", error);
|
|
5677
|
-
return false;
|
|
5678
|
-
}
|
|
5679
|
-
};
|
|
5680
|
-
deleteRecord = async ({
|
|
5681
|
-
id,
|
|
5682
|
-
modelName
|
|
5683
|
-
}) => {
|
|
5684
|
-
try {
|
|
5685
|
-
const snapshot = await loadSnapshot({
|
|
5686
|
-
modelName
|
|
5687
|
-
});
|
|
5688
|
-
const before = snapshot.data.length;
|
|
5689
|
-
snapshot.data = snapshot.data.filter((record) => record.id !== id);
|
|
5690
|
-
if (snapshot.data.length === before) {
|
|
5691
|
-
console.error(`record with id ${id} not found`);
|
|
5692
|
-
return false;
|
|
5693
|
-
}
|
|
5694
|
-
return await saveSnapshot({
|
|
5695
|
-
snapshot,
|
|
5696
|
-
modelName
|
|
5697
|
-
});
|
|
5698
|
-
} catch (error) {
|
|
5699
|
-
console.error("error deleting record:", error);
|
|
5700
|
-
return false;
|
|
5701
|
-
}
|
|
5702
|
-
};
|
|
5703
|
-
};
|
|
5704
|
-
|
|
5705
|
-
// src/services/pos-service/add-entity.ts
|
|
5706
5216
|
var addEntityService = (env) => {
|
|
5707
|
-
const isLocalMode = env?.isLocalMode;
|
|
5708
|
-
const repo = new ModelRepository();
|
|
5709
5217
|
const addEntity = useCallback12(
|
|
5710
5218
|
({
|
|
5711
5219
|
model,
|
|
@@ -5714,12 +5222,6 @@ var addEntityService = (env) => {
|
|
|
5714
5222
|
service,
|
|
5715
5223
|
isCreateEndpoint = false
|
|
5716
5224
|
}) => {
|
|
5717
|
-
if (isLocalMode) {
|
|
5718
|
-
return repo.addRecord({
|
|
5719
|
-
newRecord: values,
|
|
5720
|
-
modelName: model
|
|
5721
|
-
});
|
|
5722
|
-
}
|
|
5723
5225
|
const jsonData = {
|
|
5724
5226
|
model,
|
|
5725
5227
|
values
|
|
@@ -5736,7 +5238,7 @@ var addEntityService = (env) => {
|
|
|
5736
5238
|
service
|
|
5737
5239
|
);
|
|
5738
5240
|
},
|
|
5739
|
-
[env
|
|
5241
|
+
[env]
|
|
5740
5242
|
);
|
|
5741
5243
|
return {
|
|
5742
5244
|
addEntity
|
|
@@ -5858,8 +5360,6 @@ var createEInvoiceService = (env) => {
|
|
|
5858
5360
|
// src/services/pos-service/create-entity.ts
|
|
5859
5361
|
import { useCallback as useCallback16 } from "react";
|
|
5860
5362
|
var createEntityService = (env) => {
|
|
5861
|
-
const isLocalMode = env?.isLocalMode;
|
|
5862
|
-
const repo = new ModelRepository();
|
|
5863
5363
|
const createEntity = useCallback16(
|
|
5864
5364
|
({
|
|
5865
5365
|
model,
|
|
@@ -5867,12 +5367,6 @@ var createEntityService = (env) => {
|
|
|
5867
5367
|
xNode,
|
|
5868
5368
|
service
|
|
5869
5369
|
}) => {
|
|
5870
|
-
if (isLocalMode) {
|
|
5871
|
-
return repo.addRecord({
|
|
5872
|
-
newRecord: args[0],
|
|
5873
|
-
modelName: model
|
|
5874
|
-
});
|
|
5875
|
-
}
|
|
5876
5370
|
const jsonData = {
|
|
5877
5371
|
model,
|
|
5878
5372
|
method: "create" /* CREATE */,
|
|
@@ -5890,7 +5384,7 @@ var createEntityService = (env) => {
|
|
|
5890
5384
|
service
|
|
5891
5385
|
);
|
|
5892
5386
|
},
|
|
5893
|
-
[env
|
|
5387
|
+
[env]
|
|
5894
5388
|
);
|
|
5895
5389
|
return {
|
|
5896
5390
|
createEntity
|
|
@@ -5975,8 +5469,6 @@ var createSessionService = (env) => {
|
|
|
5975
5469
|
// src/services/pos-service/delete-entity.ts
|
|
5976
5470
|
import { useCallback as useCallback19 } from "react";
|
|
5977
5471
|
var deleteEntityService = (env) => {
|
|
5978
|
-
const isLocalMode = env?.isLocalMode;
|
|
5979
|
-
const repo = new ModelRepository();
|
|
5980
5472
|
const deleteEntity = useCallback19(
|
|
5981
5473
|
({
|
|
5982
5474
|
model,
|
|
@@ -5985,14 +5477,6 @@ var deleteEntityService = (env) => {
|
|
|
5985
5477
|
service,
|
|
5986
5478
|
method
|
|
5987
5479
|
}) => {
|
|
5988
|
-
if (isLocalMode) {
|
|
5989
|
-
const id = ids[0];
|
|
5990
|
-
if (!id) return;
|
|
5991
|
-
return repo.deleteRecord({
|
|
5992
|
-
modelName: model,
|
|
5993
|
-
id
|
|
5994
|
-
});
|
|
5995
|
-
}
|
|
5996
5480
|
const jsonData = {
|
|
5997
5481
|
model,
|
|
5998
5482
|
ids,
|
|
@@ -6010,7 +5494,7 @@ var deleteEntityService = (env) => {
|
|
|
6010
5494
|
service
|
|
6011
5495
|
);
|
|
6012
5496
|
},
|
|
6013
|
-
[env
|
|
5497
|
+
[env]
|
|
6014
5498
|
);
|
|
6015
5499
|
return {
|
|
6016
5500
|
deleteEntity
|
|
@@ -6087,8 +5571,6 @@ var getCurrentUserService = (env) => {
|
|
|
6087
5571
|
// src/services/pos-service/get-list.ts
|
|
6088
5572
|
import { useCallback as useCallback22 } from "react";
|
|
6089
5573
|
var getListService = (env) => {
|
|
6090
|
-
const isLocalMode = env?.isLocalMode;
|
|
6091
|
-
const repo = new ModelRepository();
|
|
6092
5574
|
const getList = useCallback22(
|
|
6093
5575
|
async ({
|
|
6094
5576
|
model,
|
|
@@ -6099,12 +5581,6 @@ var getListService = (env) => {
|
|
|
6099
5581
|
offset,
|
|
6100
5582
|
limit
|
|
6101
5583
|
}) => {
|
|
6102
|
-
if (isLocalMode) {
|
|
6103
|
-
const data = await repo.getAll({
|
|
6104
|
-
modelName: model
|
|
6105
|
-
});
|
|
6106
|
-
return data;
|
|
6107
|
-
}
|
|
6108
5584
|
const jsonData = {
|
|
6109
5585
|
model,
|
|
6110
5586
|
method: "web_search_read" /* WEB_SEARCH_READ */,
|
|
@@ -6127,7 +5603,7 @@ var getListService = (env) => {
|
|
|
6127
5603
|
service
|
|
6128
5604
|
);
|
|
6129
5605
|
},
|
|
6130
|
-
[env
|
|
5606
|
+
[env]
|
|
6131
5607
|
);
|
|
6132
5608
|
return {
|
|
6133
5609
|
getList
|
|
@@ -6456,8 +5932,52 @@ var handleClosingSessionService = (env) => {
|
|
|
6456
5932
|
|
|
6457
5933
|
// src/services/pos-service/load-data-pos-session.ts
|
|
6458
5934
|
import { useCallback as useCallback31 } from "react";
|
|
5935
|
+
|
|
5936
|
+
// src/provider/supabase-provider.tsx
|
|
5937
|
+
import { createContext, useContext, useMemo } from "react";
|
|
5938
|
+
import { createClient } from "@supabase/supabase-js";
|
|
5939
|
+
import { jsx as jsx4 } from "react/jsx-runtime";
|
|
5940
|
+
var SupabaseContext = createContext(null);
|
|
5941
|
+
var SupabaseProvider = ({
|
|
5942
|
+
supabaseUrl,
|
|
5943
|
+
supabaseKey,
|
|
5944
|
+
children
|
|
5945
|
+
}) => {
|
|
5946
|
+
const supabase = useMemo(() => {
|
|
5947
|
+
if (!supabaseUrl || !supabaseKey) return null;
|
|
5948
|
+
return createClient(supabaseUrl, supabaseKey);
|
|
5949
|
+
}, [supabaseUrl, supabaseKey]);
|
|
5950
|
+
return /* @__PURE__ */ jsx4(SupabaseContext.Provider, { value: supabase, children });
|
|
5951
|
+
};
|
|
5952
|
+
var useSupabase = () => {
|
|
5953
|
+
const context = useContext(SupabaseContext);
|
|
5954
|
+
if (!context) {
|
|
5955
|
+
throw new Error(
|
|
5956
|
+
"useSupabase must be used within a SupabaseProvider or check your env config"
|
|
5957
|
+
);
|
|
5958
|
+
}
|
|
5959
|
+
return context;
|
|
5960
|
+
};
|
|
5961
|
+
|
|
5962
|
+
// src/services/pos-service/load-data-pos-session.ts
|
|
5963
|
+
var MODEL_TO_TABLE = {
|
|
5964
|
+
["account.tax" /* ACCOUNT_TAX */]: "account_taxes",
|
|
5965
|
+
["res.company" /* RES_COMPANY */]: "companies",
|
|
5966
|
+
["res.partner" /* RES_PARTNER */]: "customers",
|
|
5967
|
+
["res.users" /* RES_USERS */]: "employees",
|
|
5968
|
+
["loyalty.program" /* LOYALTY_PROGRAM */]: "loyalty_programs",
|
|
5969
|
+
["loyalty.rule" /* LOYALTY_RULE */]: "loyalty_rules",
|
|
5970
|
+
["pos.order.line" /* POS_ORDER_LINE */]: "order_lines",
|
|
5971
|
+
["pos.order" /* POS_ORDER */]: "orders",
|
|
5972
|
+
["pos.payment.method" /* POS_PAYMENT_METHOD */]: "payment_methods",
|
|
5973
|
+
["pos.payment" /* POS_PAYMENT */]: "payments",
|
|
5974
|
+
["product.category" /* PRODUCT_CATEGORY */]: "product_categories",
|
|
5975
|
+
["product.product" /* PRODUCT_PRODUCT */]: "products",
|
|
5976
|
+
["restaurant.floor" /* RESTAURANT_FLOOR */]: "restaurant_floors",
|
|
5977
|
+
["restaurant.table" /* RESTAURANT_TABLE */]: "restaurant_tables"
|
|
5978
|
+
};
|
|
6459
5979
|
var loadDataPosSessionService = (env) => {
|
|
6460
|
-
const
|
|
5980
|
+
const supabase = useSupabase();
|
|
6461
5981
|
const loadDataPosSession = useCallback31(
|
|
6462
5982
|
async ({
|
|
6463
5983
|
model,
|
|
@@ -6468,10 +5988,6 @@ var loadDataPosSessionService = (env) => {
|
|
|
6468
5988
|
modelsToLoad = [],
|
|
6469
5989
|
searchParams
|
|
6470
5990
|
}) => {
|
|
6471
|
-
if (isLocalMode) {
|
|
6472
|
-
const data = await loadData();
|
|
6473
|
-
return data;
|
|
6474
|
-
}
|
|
6475
5991
|
const jsonData = {
|
|
6476
5992
|
model,
|
|
6477
5993
|
method: "load_data" /* LOAD_DATA */,
|
|
@@ -6498,10 +6014,59 @@ var loadDataPosSessionService = (env) => {
|
|
|
6498
6014
|
service
|
|
6499
6015
|
);
|
|
6500
6016
|
},
|
|
6501
|
-
[env
|
|
6017
|
+
[env]
|
|
6502
6018
|
);
|
|
6019
|
+
const loadDataPosSessionSupabase = useCallback31(async () => {
|
|
6020
|
+
try {
|
|
6021
|
+
const allModels = Object.values(LoadDataModel);
|
|
6022
|
+
const promises = allModels.map(async (modelName) => {
|
|
6023
|
+
const tableName = MODEL_TO_TABLE[modelName];
|
|
6024
|
+
if (!tableName) {
|
|
6025
|
+
return {
|
|
6026
|
+
modelName,
|
|
6027
|
+
data: [],
|
|
6028
|
+
fields: {},
|
|
6029
|
+
relations: {}
|
|
6030
|
+
};
|
|
6031
|
+
}
|
|
6032
|
+
const { data, error } = await supabase.from(tableName).select("*");
|
|
6033
|
+
if (error) {
|
|
6034
|
+
console.error(`Error loading ${modelName}:`, error);
|
|
6035
|
+
return {
|
|
6036
|
+
modelName,
|
|
6037
|
+
data: [],
|
|
6038
|
+
fields: {},
|
|
6039
|
+
relations: {}
|
|
6040
|
+
};
|
|
6041
|
+
}
|
|
6042
|
+
return {
|
|
6043
|
+
modelName,
|
|
6044
|
+
data: data || [],
|
|
6045
|
+
fields: {},
|
|
6046
|
+
relations: {}
|
|
6047
|
+
};
|
|
6048
|
+
});
|
|
6049
|
+
const results = await Promise.all(promises);
|
|
6050
|
+
const response = results.reduce(
|
|
6051
|
+
(acc, { modelName, data, fields, relations }) => {
|
|
6052
|
+
acc[modelName] = {
|
|
6053
|
+
data,
|
|
6054
|
+
fields,
|
|
6055
|
+
relations
|
|
6056
|
+
};
|
|
6057
|
+
return acc;
|
|
6058
|
+
},
|
|
6059
|
+
{}
|
|
6060
|
+
);
|
|
6061
|
+
return response;
|
|
6062
|
+
} catch (error) {
|
|
6063
|
+
console.error("Error loading data from Supabase:", error);
|
|
6064
|
+
return {};
|
|
6065
|
+
}
|
|
6066
|
+
}, [supabase]);
|
|
6503
6067
|
return {
|
|
6504
|
-
loadDataPosSession
|
|
6068
|
+
loadDataPosSession,
|
|
6069
|
+
loadDataPosSessionSupabase
|
|
6505
6070
|
};
|
|
6506
6071
|
};
|
|
6507
6072
|
|
|
@@ -6723,8 +6288,6 @@ var updateClosedSessionService = (env) => {
|
|
|
6723
6288
|
// src/services/pos-service/update-entity.ts
|
|
6724
6289
|
import { useCallback as useCallback38 } from "react";
|
|
6725
6290
|
var updateEntityService = (env) => {
|
|
6726
|
-
const isLocalMode = env?.isLocalMode;
|
|
6727
|
-
const repo = new ModelRepository();
|
|
6728
6291
|
const updateEntity = useCallback38(
|
|
6729
6292
|
({
|
|
6730
6293
|
model,
|
|
@@ -6734,15 +6297,6 @@ var updateEntityService = (env) => {
|
|
|
6734
6297
|
xNode,
|
|
6735
6298
|
service
|
|
6736
6299
|
}) => {
|
|
6737
|
-
if (isLocalMode) {
|
|
6738
|
-
const id = extractIdFromDomain(domain);
|
|
6739
|
-
if (!id) return;
|
|
6740
|
-
return repo.updateRecord({
|
|
6741
|
-
update: values,
|
|
6742
|
-
modelName: model,
|
|
6743
|
-
id
|
|
6744
|
-
});
|
|
6745
|
-
}
|
|
6746
6300
|
const jsonData = {
|
|
6747
6301
|
model,
|
|
6748
6302
|
domain,
|
|
@@ -6760,7 +6314,7 @@ var updateEntityService = (env) => {
|
|
|
6760
6314
|
service
|
|
6761
6315
|
);
|
|
6762
6316
|
},
|
|
6763
|
-
[env
|
|
6317
|
+
[env]
|
|
6764
6318
|
);
|
|
6765
6319
|
return {
|
|
6766
6320
|
updateEntity
|
|
@@ -6800,6 +6354,49 @@ var updateOrderStatusService = (env) => {
|
|
|
6800
6354
|
};
|
|
6801
6355
|
};
|
|
6802
6356
|
|
|
6357
|
+
// src/services/pos-service/complete-current-stage.ts
|
|
6358
|
+
import { useCallback as useCallback40 } from "react";
|
|
6359
|
+
var completeCurrentStageService = (env) => {
|
|
6360
|
+
const completeCurrentStage = useCallback40(
|
|
6361
|
+
({
|
|
6362
|
+
ids,
|
|
6363
|
+
withContext,
|
|
6364
|
+
xNode,
|
|
6365
|
+
service,
|
|
6366
|
+
requestStageId
|
|
6367
|
+
}) => {
|
|
6368
|
+
const jsonData = {
|
|
6369
|
+
model: "pos_preparation_display.orderline" /* POS_PREPARATION_ORDER_LINE */,
|
|
6370
|
+
method: "complete_current_stage" /* COMPLETE_CURRENT_STAGE */,
|
|
6371
|
+
ids,
|
|
6372
|
+
kwargs: {
|
|
6373
|
+
request_stage_id: requestStageId
|
|
6374
|
+
},
|
|
6375
|
+
with_context: withContext || {
|
|
6376
|
+
lang: "vi_VN",
|
|
6377
|
+
tz: "Asia/Ho_Chi_Minh",
|
|
6378
|
+
uid: 2
|
|
6379
|
+
}
|
|
6380
|
+
};
|
|
6381
|
+
return env?.requests.post(
|
|
6382
|
+
"/call" /* CALL_PATH */,
|
|
6383
|
+
jsonData,
|
|
6384
|
+
{
|
|
6385
|
+
headers: {
|
|
6386
|
+
"Content-Type": "application/json",
|
|
6387
|
+
...xNode ? { "X-Node": xNode } : {}
|
|
6388
|
+
}
|
|
6389
|
+
},
|
|
6390
|
+
service
|
|
6391
|
+
);
|
|
6392
|
+
},
|
|
6393
|
+
[env]
|
|
6394
|
+
);
|
|
6395
|
+
return {
|
|
6396
|
+
completeCurrentStage
|
|
6397
|
+
};
|
|
6398
|
+
};
|
|
6399
|
+
|
|
6803
6400
|
// src/services/pos-service/index.ts
|
|
6804
6401
|
var serviceFactories = [
|
|
6805
6402
|
addEntityService,
|
|
@@ -6830,7 +6427,8 @@ var serviceFactories = [
|
|
|
6830
6427
|
searchJournalService,
|
|
6831
6428
|
updateClosedSessionService,
|
|
6832
6429
|
updateEntityService,
|
|
6833
|
-
updateOrderStatusService
|
|
6430
|
+
updateOrderStatusService,
|
|
6431
|
+
completeCurrentStageService
|
|
6834
6432
|
];
|
|
6835
6433
|
var usePosService = () => {
|
|
6836
6434
|
const { env } = useEnv();
|
|
@@ -6842,52 +6440,8 @@ var usePosService = () => {
|
|
|
6842
6440
|
return service;
|
|
6843
6441
|
};
|
|
6844
6442
|
|
|
6845
|
-
// src/services/filesystem-service/init-snapshot.ts
|
|
6846
|
-
var isSnapshotReady = async () => {
|
|
6847
|
-
try {
|
|
6848
|
-
const raw = await fileService.read("pos/manifest.json");
|
|
6849
|
-
if (!raw) return false;
|
|
6850
|
-
const manifest = JSON.parse(raw);
|
|
6851
|
-
if (!manifest.models || typeof manifest.models !== "object") {
|
|
6852
|
-
return false;
|
|
6853
|
-
}
|
|
6854
|
-
const modelEntries = Object.values(manifest.models);
|
|
6855
|
-
if (modelEntries.length === 0) return false;
|
|
6856
|
-
const firstModel = modelEntries[0];
|
|
6857
|
-
if (!firstModel.file) return false;
|
|
6858
|
-
const modelExists = await fileService.exists(firstModel.file);
|
|
6859
|
-
return modelExists;
|
|
6860
|
-
} catch {
|
|
6861
|
-
return false;
|
|
6862
|
-
}
|
|
6863
|
-
};
|
|
6864
|
-
async function initSnapshot(onProgress) {
|
|
6865
|
-
const ready = await isSnapshotReady();
|
|
6866
|
-
if (ready) {
|
|
6867
|
-
console.log("skip initialization.");
|
|
6868
|
-
return;
|
|
6869
|
-
}
|
|
6870
|
-
console.log("initializing from data.json...");
|
|
6871
|
-
const jsonData = await fetch("/data.json").then((r) => r.text());
|
|
6872
|
-
if (!jsonData) {
|
|
6873
|
-
console.error("cannot load data.json");
|
|
6874
|
-
return;
|
|
6875
|
-
}
|
|
6876
|
-
await import_snapshot_default({
|
|
6877
|
-
data: jsonData,
|
|
6878
|
-
onProgress
|
|
6879
|
-
});
|
|
6880
|
-
}
|
|
6881
|
-
|
|
6882
|
-
// src/services/filesystem-service/index.ts
|
|
6883
|
-
var useFileSystemService = () => {
|
|
6884
|
-
return {
|
|
6885
|
-
initSnapshot
|
|
6886
|
-
};
|
|
6887
|
-
};
|
|
6888
|
-
|
|
6889
6443
|
// src/provider/version-gate-provider.tsx
|
|
6890
|
-
import { Fragment, jsx as
|
|
6444
|
+
import { Fragment, jsx as jsx5 } from "react/jsx-runtime";
|
|
6891
6445
|
var VersionGate = ({ children }) => {
|
|
6892
6446
|
const queryClient = useQueryClient();
|
|
6893
6447
|
const [ready, setReady] = useState3(false);
|
|
@@ -6919,11 +6473,11 @@ var VersionGate = ({ children }) => {
|
|
|
6919
6473
|
return () => window.removeEventListener("keydown", onKey);
|
|
6920
6474
|
}
|
|
6921
6475
|
}, [queryClient]);
|
|
6922
|
-
return ready ? /* @__PURE__ */
|
|
6476
|
+
return ready ? /* @__PURE__ */ jsx5(Fragment, { children }) : null;
|
|
6923
6477
|
};
|
|
6924
6478
|
|
|
6925
6479
|
// src/provider/env-provider.tsx
|
|
6926
|
-
import { createContext, useContext, useState as useState4, useCallback as
|
|
6480
|
+
import { createContext as createContext2, useContext as useContext2, useState as useState4, useCallback as useCallback41 } from "react";
|
|
6927
6481
|
|
|
6928
6482
|
// src/configs/axios-client.ts
|
|
6929
6483
|
import axios from "axios";
|
|
@@ -7252,7 +6806,7 @@ var axiosClient = {
|
|
|
7252
6806
|
};
|
|
7253
6807
|
|
|
7254
6808
|
// src/provider/env-provider.tsx
|
|
7255
|
-
import { jsx as
|
|
6809
|
+
import { jsx as jsx6 } from "react/jsx-runtime";
|
|
7256
6810
|
var initialEnvState = {
|
|
7257
6811
|
env: null,
|
|
7258
6812
|
baseUrl: "",
|
|
@@ -7274,9 +6828,9 @@ var initialEnvState = {
|
|
|
7274
6828
|
tz: "Asia/Saigon"
|
|
7275
6829
|
},
|
|
7276
6830
|
excludeLanguages: [],
|
|
7277
|
-
|
|
6831
|
+
isSupaMode: false
|
|
7278
6832
|
};
|
|
7279
|
-
var EnvContext =
|
|
6833
|
+
var EnvContext = createContext2(null);
|
|
7280
6834
|
function EnvProvider({
|
|
7281
6835
|
children,
|
|
7282
6836
|
localStorageUtils: localStorageUtil = localStorageUtils(),
|
|
@@ -7287,7 +6841,7 @@ function EnvProvider({
|
|
|
7287
6841
|
localStorageUtils: localStorageUtil,
|
|
7288
6842
|
sessionStorageUtils: sessionStorageUtil
|
|
7289
6843
|
});
|
|
7290
|
-
const setupEnv =
|
|
6844
|
+
const setupEnv = useCallback41(
|
|
7291
6845
|
(envConfig) => {
|
|
7292
6846
|
const updatedEnv = {
|
|
7293
6847
|
...env,
|
|
@@ -7301,31 +6855,31 @@ function EnvProvider({
|
|
|
7301
6855
|
},
|
|
7302
6856
|
[env, localStorageUtil, sessionStorageUtil]
|
|
7303
6857
|
);
|
|
7304
|
-
const setUid2 =
|
|
6858
|
+
const setUid2 = useCallback41((uid) => {
|
|
7305
6859
|
setEnvState((prev) => ({
|
|
7306
6860
|
...prev,
|
|
7307
6861
|
context: { ...prev.context, uid }
|
|
7308
6862
|
}));
|
|
7309
6863
|
}, []);
|
|
7310
|
-
const setLang2 =
|
|
6864
|
+
const setLang2 = useCallback41((lang) => {
|
|
7311
6865
|
setEnvState((prev) => ({
|
|
7312
6866
|
...prev,
|
|
7313
6867
|
context: { ...prev.context, lang }
|
|
7314
6868
|
}));
|
|
7315
6869
|
}, []);
|
|
7316
|
-
const setAllowCompanies2 =
|
|
6870
|
+
const setAllowCompanies2 = useCallback41((allowed_company_ids) => {
|
|
7317
6871
|
setEnvState((prev) => ({
|
|
7318
6872
|
...prev,
|
|
7319
6873
|
context: { ...prev.context, allowed_company_ids }
|
|
7320
6874
|
}));
|
|
7321
6875
|
}, []);
|
|
7322
|
-
const setCompanies2 =
|
|
6876
|
+
const setCompanies2 = useCallback41((companies) => {
|
|
7323
6877
|
setEnvState((prev) => ({
|
|
7324
6878
|
...prev,
|
|
7325
6879
|
companies
|
|
7326
6880
|
}));
|
|
7327
6881
|
}, []);
|
|
7328
|
-
const setDefaultCompany2 =
|
|
6882
|
+
const setDefaultCompany2 = useCallback41(
|
|
7329
6883
|
(defaultCompany) => {
|
|
7330
6884
|
setEnvState((prev) => ({
|
|
7331
6885
|
...prev,
|
|
@@ -7334,25 +6888,25 @@ function EnvProvider({
|
|
|
7334
6888
|
},
|
|
7335
6889
|
[]
|
|
7336
6890
|
);
|
|
7337
|
-
const setUserInfo =
|
|
6891
|
+
const setUserInfo = useCallback41((user) => {
|
|
7338
6892
|
setEnvState((prev) => ({
|
|
7339
6893
|
...prev,
|
|
7340
6894
|
user
|
|
7341
6895
|
}));
|
|
7342
6896
|
}, []);
|
|
7343
|
-
const setConfig2 =
|
|
6897
|
+
const setConfig2 = useCallback41((config) => {
|
|
7344
6898
|
setEnvState((prev) => ({
|
|
7345
6899
|
...prev,
|
|
7346
6900
|
config
|
|
7347
6901
|
}));
|
|
7348
6902
|
}, []);
|
|
7349
|
-
const setEnvFile2 =
|
|
6903
|
+
const setEnvFile2 = useCallback41((envFile) => {
|
|
7350
6904
|
setEnvState((prev) => ({
|
|
7351
6905
|
...prev,
|
|
7352
6906
|
envFile
|
|
7353
6907
|
}));
|
|
7354
6908
|
}, []);
|
|
7355
|
-
return /* @__PURE__ */
|
|
6909
|
+
return /* @__PURE__ */ jsx6(
|
|
7356
6910
|
EnvContext.Provider,
|
|
7357
6911
|
{
|
|
7358
6912
|
value: {
|
|
@@ -7372,7 +6926,7 @@ function EnvProvider({
|
|
|
7372
6926
|
);
|
|
7373
6927
|
}
|
|
7374
6928
|
function useEnv() {
|
|
7375
|
-
const context =
|
|
6929
|
+
const context = useContext2(EnvContext);
|
|
7376
6930
|
if (!context) {
|
|
7377
6931
|
throw new Error("useEnv must be used within an EnvProvider");
|
|
7378
6932
|
}
|
|
@@ -7380,7 +6934,7 @@ function useEnv() {
|
|
|
7380
6934
|
}
|
|
7381
6935
|
|
|
7382
6936
|
// src/provider/service-provider.tsx
|
|
7383
|
-
import { createContext as
|
|
6937
|
+
import { createContext as createContext3, useContext as useContext3 } from "react";
|
|
7384
6938
|
|
|
7385
6939
|
// src/hooks/auth/use-forgot-password.ts
|
|
7386
6940
|
import { useMutation } from "@tanstack/react-query";
|
|
@@ -8252,9 +7806,9 @@ var BaseModel = class {
|
|
|
8252
7806
|
};
|
|
8253
7807
|
|
|
8254
7808
|
// src/hooks/model/use-model.ts
|
|
8255
|
-
import { useCallback as
|
|
7809
|
+
import { useCallback as useCallback42 } from "react";
|
|
8256
7810
|
var useModel = () => {
|
|
8257
|
-
const initModel =
|
|
7811
|
+
const initModel = useCallback42((modelData) => {
|
|
8258
7812
|
switch (modelData?.name) {
|
|
8259
7813
|
default:
|
|
8260
7814
|
return new BaseModel(modelData);
|
|
@@ -9271,8 +8825,9 @@ var use_handle_closing_session_default = useHandleClosingSession;
|
|
|
9271
8825
|
import { useMutation as useMutation77 } from "@tanstack/react-query";
|
|
9272
8826
|
var useLoadDataPosSession = () => {
|
|
9273
8827
|
const pos = usePosService();
|
|
8828
|
+
const { env } = useEnv();
|
|
9274
8829
|
return useMutation77({
|
|
9275
|
-
mutationFn: pos.loadDataPosSession
|
|
8830
|
+
mutationFn: env.isSupaMode ? pos.loadDataPosSessionSupabase : pos.loadDataPosSession
|
|
9276
8831
|
});
|
|
9277
8832
|
};
|
|
9278
8833
|
var use_load_data_pos_session_default = useLoadDataPosSession;
|
|
@@ -9357,19 +8912,19 @@ var useUpdateOrderStatus = () => {
|
|
|
9357
8912
|
};
|
|
9358
8913
|
var use_update_order_status_default = useUpdateOrderStatus;
|
|
9359
8914
|
|
|
9360
|
-
// src/hooks/pos/use-
|
|
8915
|
+
// src/hooks/pos/use-complete-current-stage.ts
|
|
9361
8916
|
import { useMutation as useMutation86 } from "@tanstack/react-query";
|
|
9362
|
-
var
|
|
9363
|
-
const
|
|
8917
|
+
var useCompleteCurrentStage = () => {
|
|
8918
|
+
const pos = usePosService();
|
|
9364
8919
|
return useMutation86({
|
|
9365
|
-
mutationFn:
|
|
8920
|
+
mutationFn: pos.completeCurrentStage
|
|
9366
8921
|
});
|
|
9367
8922
|
};
|
|
9368
|
-
var
|
|
8923
|
+
var use_complete_current_stage_default = useCompleteCurrentStage;
|
|
9369
8924
|
|
|
9370
8925
|
// src/provider/service-provider.tsx
|
|
9371
|
-
import { jsx as
|
|
9372
|
-
var ServiceContext =
|
|
8926
|
+
import { jsx as jsx7 } from "react/jsx-runtime";
|
|
8927
|
+
var ServiceContext = createContext3(null);
|
|
9373
8928
|
var ServiceProvider = ({
|
|
9374
8929
|
children
|
|
9375
8930
|
}) => {
|
|
@@ -9486,12 +9041,12 @@ var ServiceProvider = ({
|
|
|
9486
9041
|
useGetWard: use_get_ward_default,
|
|
9487
9042
|
useGetCountry: use_get_country_default,
|
|
9488
9043
|
useGetPartnerTitle: use_get_partner_title_default,
|
|
9489
|
-
|
|
9044
|
+
useCompleteCurrentStage: use_complete_current_stage_default
|
|
9490
9045
|
};
|
|
9491
|
-
return /* @__PURE__ */
|
|
9046
|
+
return /* @__PURE__ */ jsx7(ServiceContext.Provider, { value: services, children });
|
|
9492
9047
|
};
|
|
9493
9048
|
var useService = () => {
|
|
9494
|
-
const context =
|
|
9049
|
+
const context = useContext3(ServiceContext);
|
|
9495
9050
|
if (!context) {
|
|
9496
9051
|
throw new Error("useService must be used within a ServiceProvider");
|
|
9497
9052
|
}
|
|
@@ -9500,7 +9055,7 @@ var useService = () => {
|
|
|
9500
9055
|
|
|
9501
9056
|
// src/provider/meta-provider.tsx
|
|
9502
9057
|
import { useEffect as useEffect3 } from "react";
|
|
9503
|
-
import { Fragment as Fragment2, jsx as
|
|
9058
|
+
import { Fragment as Fragment2, jsx as jsx8 } from "react/jsx-runtime";
|
|
9504
9059
|
var MetaProvider = ({ children }) => {
|
|
9505
9060
|
const { env } = useEnv();
|
|
9506
9061
|
function updateMetadata() {
|
|
@@ -9551,7 +9106,7 @@ var MetaProvider = ({ children }) => {
|
|
|
9551
9106
|
useEffect3(() => {
|
|
9552
9107
|
updateMetadata();
|
|
9553
9108
|
}, [env?.defaultCompany]);
|
|
9554
|
-
return /* @__PURE__ */
|
|
9109
|
+
return /* @__PURE__ */ jsx8(Fragment2, { children });
|
|
9555
9110
|
};
|
|
9556
9111
|
export {
|
|
9557
9112
|
EnvProvider,
|
|
@@ -9559,7 +9114,9 @@ export {
|
|
|
9559
9114
|
MetaProvider,
|
|
9560
9115
|
ReactQueryProvider,
|
|
9561
9116
|
ServiceProvider,
|
|
9117
|
+
SupabaseProvider,
|
|
9562
9118
|
VersionGate,
|
|
9563
9119
|
useEnv,
|
|
9564
|
-
useService
|
|
9120
|
+
useService,
|
|
9121
|
+
useSupabase
|
|
9565
9122
|
};
|