@devx-retailos/cms 0.0.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.
Files changed (56) hide show
  1. package/.medusa/server/src/admin/index.js +23 -0
  2. package/.medusa/server/src/admin/index.mjs +24 -0
  3. package/.medusa/server/src/api/admin/retailos/cms/accumulation/[storeId]/route.js +34 -0
  4. package/.medusa/server/src/api/admin/retailos/cms/export/route.js +52 -0
  5. package/.medusa/server/src/api/admin/retailos/cms/handovers/[id]/route.js +35 -0
  6. package/.medusa/server/src/api/admin/retailos/cms/handovers/route.js +78 -0
  7. package/.medusa/server/src/api/admin/retailos/cms/operation/route.js +124 -0
  8. package/.medusa/server/src/api/admin/retailos/cms/petty-cash/route.js +31 -0
  9. package/.medusa/server/src/api/admin/retailos/cms/shift-logs/route.js +36 -0
  10. package/.medusa/server/src/links/employee-to-cms-handover.js +13 -0
  11. package/.medusa/server/src/links/store-to-cms-handover.js +13 -0
  12. package/.medusa/server/src/modules/cms/constants.js +5 -0
  13. package/.medusa/server/src/modules/cms/index.js +53 -0
  14. package/.medusa/server/src/modules/cms/migrations/Migration20260622000000.js +30 -0
  15. package/.medusa/server/src/modules/cms/migrations/Migration20260622000001.js +16 -0
  16. package/.medusa/server/src/modules/cms/models/cms-accumulation.js +11 -0
  17. package/.medusa/server/src/modules/cms/models/cms-handover.js +17 -0
  18. package/.medusa/server/src/modules/cms/models/index.js +15 -0
  19. package/.medusa/server/src/modules/cms/models/petty-cash-transaction.js +24 -0
  20. package/.medusa/server/src/modules/cms/models/petty-cash.js +11 -0
  21. package/.medusa/server/src/modules/cms/permissions.js +36 -0
  22. package/.medusa/server/src/modules/cms/services/cms-module-service.js +210 -0
  23. package/.medusa/server/src/modules/cms/services/index.js +9 -0
  24. package/README.md +155 -0
  25. package/package.json +60 -0
  26. package/src/admin/.gitkeep +0 -0
  27. package/src/api/admin/retailos/cms/accumulation/[storeId]/__tests__/route.test.ts +68 -0
  28. package/src/api/admin/retailos/cms/accumulation/[storeId]/route.ts +35 -0
  29. package/src/api/admin/retailos/cms/export/__tests__/route.test.ts +126 -0
  30. package/src/api/admin/retailos/cms/export/route.ts +58 -0
  31. package/src/api/admin/retailos/cms/handovers/[id]/__tests__/route.test.ts +68 -0
  32. package/src/api/admin/retailos/cms/handovers/[id]/route.ts +36 -0
  33. package/src/api/admin/retailos/cms/handovers/__tests__/route.test.ts +104 -0
  34. package/src/api/admin/retailos/cms/handovers/route.ts +79 -0
  35. package/src/api/admin/retailos/cms/operation/__tests__/route.test.ts +169 -0
  36. package/src/api/admin/retailos/cms/operation/route.ts +130 -0
  37. package/src/api/admin/retailos/cms/petty-cash/__tests__/route.test.ts +73 -0
  38. package/src/api/admin/retailos/cms/petty-cash/route.ts +35 -0
  39. package/src/api/admin/retailos/cms/shift-logs/__tests__/route.test.ts +77 -0
  40. package/src/api/admin/retailos/cms/shift-logs/route.ts +38 -0
  41. package/src/links/employee-to-cms-handover.ts +11 -0
  42. package/src/links/store-to-cms-handover.ts +11 -0
  43. package/src/modules/cms/__tests__/cms-module-service.test.ts +333 -0
  44. package/src/modules/cms/__tests__/permissions.test.ts +36 -0
  45. package/src/modules/cms/constants.ts +1 -0
  46. package/src/modules/cms/index.ts +24 -0
  47. package/src/modules/cms/migrations/Migration20260622000000.ts +58 -0
  48. package/src/modules/cms/migrations/Migration20260622000001.ts +17 -0
  49. package/src/modules/cms/models/cms-accumulation.ts +10 -0
  50. package/src/modules/cms/models/cms-handover.ts +16 -0
  51. package/src/modules/cms/models/index.ts +4 -0
  52. package/src/modules/cms/models/petty-cash-transaction.ts +23 -0
  53. package/src/modules/cms/models/petty-cash.ts +10 -0
  54. package/src/modules/cms/permissions.ts +34 -0
  55. package/src/modules/cms/services/cms-module-service.ts +284 -0
  56. package/src/modules/cms/services/index.ts +13 -0
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ require("@medusajs/admin-shared");
3
+ const widgetModule = { widgets: [] };
4
+ const routeModule = {
5
+ routes: []
6
+ };
7
+ const menuItemModule = {
8
+ menuItems: []
9
+ };
10
+ const formModule = { customFields: {} };
11
+ const displayModule = {
12
+ displays: {}
13
+ };
14
+ const i18nModule = { resources: {} };
15
+ const plugin = {
16
+ widgetModule,
17
+ routeModule,
18
+ menuItemModule,
19
+ formModule,
20
+ displayModule,
21
+ i18nModule
22
+ };
23
+ module.exports = plugin;
@@ -0,0 +1,24 @@
1
+ import "@medusajs/admin-shared";
2
+ const widgetModule = { widgets: [] };
3
+ const routeModule = {
4
+ routes: []
5
+ };
6
+ const menuItemModule = {
7
+ menuItems: []
8
+ };
9
+ const formModule = { customFields: {} };
10
+ const displayModule = {
11
+ displays: {}
12
+ };
13
+ const i18nModule = { resources: {} };
14
+ const plugin = {
15
+ widgetModule,
16
+ routeModule,
17
+ menuItemModule,
18
+ formModule,
19
+ displayModule,
20
+ i18nModule
21
+ };
22
+ export {
23
+ plugin as default
24
+ };
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GET = void 0;
4
+ const constants_1 = require("../../../../../../modules/cms/constants");
5
+ function getService(req) {
6
+ return req.scope.resolve(constants_1.CMS_MODULE);
7
+ }
8
+ function getLogger(req) {
9
+ try {
10
+ return req.scope.resolve("logger");
11
+ }
12
+ catch {
13
+ return { info: () => { }, warn: () => { }, error: () => { }, debug: () => { } };
14
+ }
15
+ }
16
+ const GET = async (req, res) => {
17
+ const { storeId } = req.params;
18
+ try {
19
+ const service = getService(req);
20
+ const accumulation = await service.getAccumulation(storeId);
21
+ return res.status(200).json({
22
+ accumulation: accumulation ?? { store_id: storeId, cash_in_store: 0 },
23
+ });
24
+ }
25
+ catch (err) {
26
+ getLogger(req).error("[retailos/cms] get accumulation failed", {
27
+ store_id: storeId,
28
+ error: err instanceof Error ? err.message : String(err),
29
+ });
30
+ return res.status(500).json({ code: "INTERNAL_ERROR", message: err.message });
31
+ }
32
+ };
33
+ exports.GET = GET;
34
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL3JldGFpbG9zL2Ntcy9hY2N1bXVsYXRpb24vW3N0b3JlSWRdL3JvdXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUlBLHVFQUFvRTtBQUdwRSxTQUFTLFVBQVUsQ0FBQyxHQUErQjtJQUNqRCxPQUFRLEdBQVcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLHNCQUFVLENBQUMsQ0FBQTtBQUMvQyxDQUFDO0FBRUQsU0FBUyxTQUFTLENBQUMsR0FBK0I7SUFDaEQsSUFBSSxDQUFDO1FBQ0gsT0FBUSxHQUFXLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQTtJQUM3QyxDQUFDO0lBQUMsTUFBTSxDQUFDO1FBQ1AsT0FBTyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsR0FBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxHQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLEdBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsR0FBRSxDQUFDLEVBQUUsQ0FBQTtJQUM3RSxDQUFDO0FBQ0gsQ0FBQztBQUVNLE1BQU0sR0FBRyxHQUFHLEtBQUssRUFBRSxHQUErQixFQUFFLEdBQW1CLEVBQUUsRUFBRTtJQUNoRixNQUFNLEVBQUUsT0FBTyxFQUFFLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQTtJQUM5QixJQUFJLENBQUM7UUFDSCxNQUFNLE9BQU8sR0FBRyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUE7UUFDL0IsTUFBTSxZQUFZLEdBQUcsTUFBTSxPQUFPLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxDQUFBO1FBQzNELE9BQU8sR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUM7WUFDMUIsWUFBWSxFQUFFLFlBQVksSUFBSSxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsYUFBYSxFQUFFLENBQUMsRUFBRTtTQUN0RSxDQUFDLENBQUE7SUFDSixDQUFDO0lBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztRQUNiLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsd0NBQXdDLEVBQUU7WUFDN0QsUUFBUSxFQUFFLE9BQU87WUFDakIsS0FBSyxFQUFFLEdBQUcsWUFBWSxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUM7U0FDeEQsQ0FBQyxDQUFBO1FBQ0YsT0FBTyxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRSxPQUFPLEVBQUcsR0FBYSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUE7SUFDMUYsQ0FBQztBQUNILENBQUMsQ0FBQTtBQWZZLFFBQUEsR0FBRyxPQWVmIn0=
@@ -0,0 +1,52 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GET = void 0;
4
+ const constants_1 = require("../../../../../modules/cms/constants");
5
+ function getService(req) {
6
+ return req.scope.resolve(constants_1.CMS_MODULE);
7
+ }
8
+ function getLogger(req) {
9
+ try {
10
+ return req.scope.resolve("logger");
11
+ }
12
+ catch {
13
+ return { info: () => { }, warn: () => { }, error: () => { }, debug: () => { } };
14
+ }
15
+ }
16
+ function escapeCSV(val) {
17
+ if (val == null)
18
+ return "";
19
+ const s = String(val);
20
+ if (s.includes(",") || s.includes('"') || s.includes("\n")) {
21
+ return `"${s.replace(/"/g, '""')}"`;
22
+ }
23
+ return s;
24
+ }
25
+ const GET = async (req, res) => {
26
+ const query = req.query;
27
+ const store_id = query.store_id;
28
+ try {
29
+ const service = getService(req);
30
+ const filters = {};
31
+ if (store_id)
32
+ filters.store_id = [store_id];
33
+ const [handovers] = await service.listAndCountCmsHandovers(filters, {
34
+ take: 10000,
35
+ order: { created_at: "DESC" },
36
+ });
37
+ const headers = ["id", "store_id", "employee_id", "handover_id", "handover_amount", "total_cash", "type", "remark", "created_at"];
38
+ const rows = handovers.map((h) => headers.map((k) => escapeCSV(h[k])).join(","));
39
+ const csv = [headers.join(","), ...rows].join("\n");
40
+ res.setHeader("Content-Type", "text/csv");
41
+ res.setHeader("Content-Disposition", `attachment; filename="cms-handovers-${Date.now()}.csv"`);
42
+ return res.status(200).send(csv);
43
+ }
44
+ catch (err) {
45
+ getLogger(req).error("[retailos/cms] export failed", {
46
+ error: err instanceof Error ? err.message : String(err),
47
+ });
48
+ return res.status(500).json({ code: "INTERNAL_ERROR", message: err.message });
49
+ }
50
+ };
51
+ exports.GET = GET;
52
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL3JldGFpbG9zL2Ntcy9leHBvcnQvcm91dGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBSUEsb0VBQWlFO0FBR2pFLFNBQVMsVUFBVSxDQUFDLEdBQStCO0lBQ2pELE9BQVEsR0FBVyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsc0JBQVUsQ0FBQyxDQUFBO0FBQy9DLENBQUM7QUFFRCxTQUFTLFNBQVMsQ0FBQyxHQUErQjtJQUNoRCxJQUFJLENBQUM7UUFDSCxPQUFRLEdBQVcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFBO0lBQzdDLENBQUM7SUFBQyxNQUFNLENBQUM7UUFDUCxPQUFPLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxHQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLEdBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsR0FBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxHQUFFLENBQUMsRUFBRSxDQUFBO0lBQzdFLENBQUM7QUFDSCxDQUFDO0FBRUQsU0FBUyxTQUFTLENBQUMsR0FBWTtJQUM3QixJQUFJLEdBQUcsSUFBSSxJQUFJO1FBQUUsT0FBTyxFQUFFLENBQUE7SUFDMUIsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFBO0lBQ3JCLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztRQUMzRCxPQUFPLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQTtJQUNyQyxDQUFDO0lBQ0QsT0FBTyxDQUFDLENBQUE7QUFDVixDQUFDO0FBRU0sTUFBTSxHQUFHLEdBQUcsS0FBSyxFQUFFLEdBQStCLEVBQUUsR0FBbUIsRUFBRSxFQUFFO0lBQ2hGLE1BQU0sS0FBSyxHQUFHLEdBQUcsQ0FBQyxLQUErQixDQUFBO0lBQ2pELE1BQU0sUUFBUSxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUE7SUFFL0IsSUFBSSxDQUFDO1FBQ0gsTUFBTSxPQUFPLEdBQUcsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFBO1FBQy9CLE1BQU0sT0FBTyxHQUE0QixFQUFFLENBQUE7UUFDM0MsSUFBSSxRQUFRO1lBQUUsT0FBTyxDQUFDLFFBQVEsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFBO1FBRTNDLE1BQU0sQ0FBQyxTQUFTLENBQUMsR0FBRyxNQUFNLE9BQU8sQ0FBQyx3QkFBd0IsQ0FBQyxPQUFPLEVBQUU7WUFDbEUsSUFBSSxFQUFFLEtBQUs7WUFDWCxLQUFLLEVBQUUsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFO1NBQzlCLENBQUMsQ0FBQTtRQUVGLE1BQU0sT0FBTyxHQUFHLENBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRSxhQUFhLEVBQUUsYUFBYSxFQUFFLGlCQUFpQixFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLFlBQVksQ0FBQyxDQUFBO1FBQ2pJLE1BQU0sSUFBSSxHQUFJLFNBQW1CLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FDMUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsU0FBUyxDQUFFLENBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUN2RCxDQUFBO1FBQ0QsTUFBTSxHQUFHLEdBQUcsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFBO1FBRW5ELEdBQUcsQ0FBQyxTQUFTLENBQUMsY0FBYyxFQUFFLFVBQVUsQ0FBQyxDQUFBO1FBQ3pDLEdBQUcsQ0FBQyxTQUFTLENBQUMscUJBQXFCLEVBQUUsdUNBQXVDLElBQUksQ0FBQyxHQUFHLEVBQUUsT0FBTyxDQUFDLENBQUE7UUFDOUYsT0FBTyxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQTtJQUNsQyxDQUFDO0lBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztRQUNiLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsOEJBQThCLEVBQUU7WUFDbkQsS0FBSyxFQUFFLEdBQUcsWUFBWSxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUM7U0FDeEQsQ0FBQyxDQUFBO1FBQ0YsT0FBTyxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRSxPQUFPLEVBQUcsR0FBYSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUE7SUFDMUYsQ0FBQztBQUNILENBQUMsQ0FBQTtBQTdCWSxRQUFBLEdBQUcsT0E2QmYifQ==
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GET = void 0;
4
+ const constants_1 = require("../../../../../../modules/cms/constants");
5
+ function getService(req) {
6
+ return req.scope.resolve(constants_1.CMS_MODULE);
7
+ }
8
+ function getLogger(req) {
9
+ try {
10
+ return req.scope.resolve("logger");
11
+ }
12
+ catch {
13
+ return { info: () => { }, warn: () => { }, error: () => { }, debug: () => { } };
14
+ }
15
+ }
16
+ const GET = async (req, res) => {
17
+ const { id } = req.params;
18
+ try {
19
+ const service = getService(req);
20
+ const handover = await service.retrieveCmsHandover(id);
21
+ if (!handover) {
22
+ return res.status(404).json({ code: "NOT_FOUND", message: "Handover not found" });
23
+ }
24
+ return res.status(200).json({ handover });
25
+ }
26
+ catch (err) {
27
+ getLogger(req).error("[retailos/cms] retrieve handover failed", {
28
+ id,
29
+ error: err instanceof Error ? err.message : String(err),
30
+ });
31
+ return res.status(500).json({ code: "INTERNAL_ERROR", message: err.message });
32
+ }
33
+ };
34
+ exports.GET = GET;
35
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL3JldGFpbG9zL2Ntcy9oYW5kb3ZlcnMvW2lkXS9yb3V0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFJQSx1RUFBb0U7QUFHcEUsU0FBUyxVQUFVLENBQUMsR0FBK0I7SUFDakQsT0FBUSxHQUFXLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxzQkFBVSxDQUFDLENBQUE7QUFDL0MsQ0FBQztBQUVELFNBQVMsU0FBUyxDQUFDLEdBQStCO0lBQ2hELElBQUksQ0FBQztRQUNILE9BQVEsR0FBVyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUE7SUFDN0MsQ0FBQztJQUFDLE1BQU0sQ0FBQztRQUNQLE9BQU8sRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLEdBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsR0FBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxHQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLEdBQUUsQ0FBQyxFQUFFLENBQUE7SUFDN0UsQ0FBQztBQUNILENBQUM7QUFFTSxNQUFNLEdBQUcsR0FBRyxLQUFLLEVBQUUsR0FBK0IsRUFBRSxHQUFtQixFQUFFLEVBQUU7SUFDaEYsTUFBTSxFQUFFLEVBQUUsRUFBRSxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUE7SUFDekIsSUFBSSxDQUFDO1FBQ0gsTUFBTSxPQUFPLEdBQUcsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFBO1FBQy9CLE1BQU0sUUFBUSxHQUFHLE1BQU0sT0FBTyxDQUFDLG1CQUFtQixDQUFDLEVBQUUsQ0FBQyxDQUFBO1FBQ3RELElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNkLE9BQU8sR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxDQUFDLENBQUE7UUFDbkYsQ0FBQztRQUNELE9BQU8sR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFBO0lBQzNDLENBQUM7SUFBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO1FBQ2IsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyx5Q0FBeUMsRUFBRTtZQUM5RCxFQUFFO1lBQ0YsS0FBSyxFQUFFLEdBQUcsWUFBWSxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUM7U0FDeEQsQ0FBQyxDQUFBO1FBQ0YsT0FBTyxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRSxPQUFPLEVBQUcsR0FBYSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUE7SUFDMUYsQ0FBQztBQUNILENBQUMsQ0FBQTtBQWhCWSxRQUFBLEdBQUcsT0FnQmYifQ==
@@ -0,0 +1,78 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.POST = exports.GET = void 0;
4
+ const zod_1 = require("zod");
5
+ const constants_1 = require("../../../../../modules/cms/constants");
6
+ const createSchema = zod_1.z.object({
7
+ store_id: zod_1.z.string().min(1),
8
+ employee_id: zod_1.z.string().min(1),
9
+ handover_id: zod_1.z.string().nullable().optional(),
10
+ handover_amount: zod_1.z.number().nonnegative(),
11
+ total_cash: zod_1.z.number().nullable().optional(),
12
+ type: zod_1.z.enum(["DB", "CR"]).nullable().optional(),
13
+ image_url: zod_1.z.string().nullable().optional(),
14
+ remark: zod_1.z.string().nullable().optional(),
15
+ metadata: zod_1.z.record(zod_1.z.string(), zod_1.z.unknown()).nullable().optional(),
16
+ });
17
+ function getService(req) {
18
+ return req.scope.resolve(constants_1.CMS_MODULE);
19
+ }
20
+ function getLogger(req) {
21
+ try {
22
+ return req.scope.resolve("logger");
23
+ }
24
+ catch {
25
+ return { info: () => { }, warn: () => { }, error: () => { }, debug: () => { } };
26
+ }
27
+ }
28
+ const GET = async (req, res) => {
29
+ try {
30
+ const service = getService(req);
31
+ const filters = (req.filterableFields ?? {});
32
+ const [data, count] = await service.listAndCountCmsHandovers(filters, {
33
+ take: 100,
34
+ order: { created_at: "DESC" },
35
+ });
36
+ return res.status(200).json({ handovers: data, count });
37
+ }
38
+ catch (err) {
39
+ getLogger(req).error("[retailos/cms] list handovers failed", {
40
+ error: err instanceof Error ? err.message : String(err),
41
+ });
42
+ return res.status(500).json({ code: "INTERNAL_ERROR", message: err.message });
43
+ }
44
+ };
45
+ exports.GET = GET;
46
+ const POST = async (req, res) => {
47
+ const parsed = createSchema.safeParse(req.body);
48
+ if (!parsed.success) {
49
+ return res.status(400).json({
50
+ code: "BAD_REQUEST",
51
+ message: "Invalid handover input",
52
+ details: parsed.error.flatten(),
53
+ });
54
+ }
55
+ try {
56
+ const service = getService(req);
57
+ const created = await service.handover({
58
+ store_id: parsed.data.store_id,
59
+ employee_id: parsed.data.employee_id,
60
+ handover_id: parsed.data.handover_id ?? null,
61
+ handover_amount: parsed.data.handover_amount,
62
+ total_cash: parsed.data.total_cash ?? null,
63
+ type: parsed.data.type ?? null,
64
+ image_url: parsed.data.image_url ?? null,
65
+ remark: parsed.data.remark ?? null,
66
+ metadata: parsed.data.metadata ?? null,
67
+ });
68
+ return res.status(201).json({ handover: created });
69
+ }
70
+ catch (err) {
71
+ getLogger(req).error("[retailos/cms] create handover failed", {
72
+ error: err instanceof Error ? err.message : String(err),
73
+ });
74
+ return res.status(500).json({ code: "INTERNAL_ERROR", message: err.message });
75
+ }
76
+ };
77
+ exports.POST = POST;
78
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL3JldGFpbG9zL2Ntcy9oYW5kb3ZlcnMvcm91dGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBSUEsNkJBQXVCO0FBQ3ZCLG9FQUFpRTtBQUdqRSxNQUFNLFlBQVksR0FBRyxPQUFDLENBQUMsTUFBTSxDQUFDO0lBQzVCLFFBQVEsRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUMzQixXQUFXLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDOUIsV0FBVyxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxRQUFRLEVBQUU7SUFDN0MsZUFBZSxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxXQUFXLEVBQUU7SUFDekMsVUFBVSxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxRQUFRLEVBQUU7SUFDNUMsSUFBSSxFQUFFLE9BQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxRQUFRLEVBQUU7SUFDaEQsU0FBUyxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxRQUFRLEVBQUU7SUFDM0MsTUFBTSxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxRQUFRLEVBQUU7SUFDeEMsUUFBUSxFQUFFLE9BQUMsQ0FBQyxNQUFNLENBQUMsT0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLE9BQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLFFBQVEsRUFBRTtDQUNsRSxDQUFDLENBQUE7QUFFRixTQUFTLFVB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
@@ -0,0 +1,124 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.POST = void 0;
4
+ const zod_1 = require("zod");
5
+ const constants_1 = require("../../../../../modules/cms/constants");
6
+ const OPERATIONS = ["day_start", "day_end", "handover", "add_petty_cash", "add_expense"];
7
+ const operationSchema = zod_1.z.object({
8
+ operation: zod_1.z.enum(OPERATIONS),
9
+ store_id: zod_1.z.string().min(1),
10
+ employee_id: zod_1.z.string().min(1),
11
+ opening_amount: zod_1.z.number().nonnegative().optional(),
12
+ closing_amount: zod_1.z.number().nonnegative().optional(),
13
+ handover_id: zod_1.z.string().nullable().optional(),
14
+ handover_amount: zod_1.z.number().nonnegative().optional(),
15
+ total_cash: zod_1.z.number().nullable().optional(),
16
+ type: zod_1.z.enum(["DB", "CR"]).nullable().optional(),
17
+ image_url: zod_1.z.string().nullable().optional(),
18
+ remark: zod_1.z.string().nullable().optional(),
19
+ amount: zod_1.z.number().positive().optional(),
20
+ source: zod_1.z.enum(["self", "from_petty_cash"]).nullable().optional(),
21
+ category: zod_1.z.string().nullable().optional(),
22
+ sub_category: zod_1.z.string().nullable().optional(),
23
+ reason: zod_1.z.string().nullable().optional(),
24
+ metadata: zod_1.z.record(zod_1.z.string(), zod_1.z.unknown()).nullable().optional(),
25
+ });
26
+ function getService(req) {
27
+ return req.scope.resolve(constants_1.CMS_MODULE);
28
+ }
29
+ function getLogger(req) {
30
+ try {
31
+ return req.scope.resolve("logger");
32
+ }
33
+ catch {
34
+ return { info: () => { }, warn: () => { }, error: () => { }, debug: () => { } };
35
+ }
36
+ }
37
+ const POST = async (req, res) => {
38
+ const parsed = operationSchema.safeParse(req.body);
39
+ if (!parsed.success) {
40
+ return res.status(400).json({
41
+ code: "BAD_REQUEST",
42
+ message: "Invalid operation input",
43
+ details: parsed.error.flatten(),
44
+ });
45
+ }
46
+ const data = parsed.data;
47
+ const service = getService(req);
48
+ const logger = getLogger(req);
49
+ try {
50
+ switch (data.operation) {
51
+ case "day_start": {
52
+ if (data.opening_amount == null) {
53
+ return res.status(400).json({ code: "BAD_REQUEST", message: "opening_amount is required for day_start" });
54
+ }
55
+ await service.dayStart({ store_id: data.store_id, employee_id: data.employee_id, opening_amount: data.opening_amount });
56
+ return res.status(200).json({ operation: "day_start", store_id: data.store_id });
57
+ }
58
+ case "day_end": {
59
+ if (data.closing_amount == null) {
60
+ return res.status(400).json({ code: "BAD_REQUEST", message: "closing_amount is required for day_end" });
61
+ }
62
+ await service.dayEnd({ store_id: data.store_id, employee_id: data.employee_id, closing_amount: data.closing_amount });
63
+ return res.status(200).json({ operation: "day_end", store_id: data.store_id });
64
+ }
65
+ case "handover": {
66
+ if (data.handover_amount == null) {
67
+ return res.status(400).json({ code: "BAD_REQUEST", message: "handover_amount is required for handover" });
68
+ }
69
+ const handover = await service.handover({
70
+ store_id: data.store_id,
71
+ employee_id: data.employee_id,
72
+ handover_id: data.handover_id ?? null,
73
+ handover_amount: data.handover_amount,
74
+ total_cash: data.total_cash ?? null,
75
+ type: data.type ?? null,
76
+ image_url: data.image_url ?? null,
77
+ remark: data.remark ?? null,
78
+ metadata: data.metadata ?? null,
79
+ });
80
+ return res.status(201).json({ operation: "handover", handover });
81
+ }
82
+ case "add_petty_cash": {
83
+ if (data.amount == null) {
84
+ return res.status(400).json({ code: "BAD_REQUEST", message: "amount is required for add_petty_cash" });
85
+ }
86
+ const tx = await service.addPettyCash({
87
+ store_id: data.store_id,
88
+ employee_id: data.employee_id,
89
+ amount: data.amount,
90
+ source: data.source ?? null,
91
+ });
92
+ return res.status(201).json({ operation: "add_petty_cash", transaction: tx });
93
+ }
94
+ case "add_expense": {
95
+ if (data.amount == null) {
96
+ return res.status(400).json({ code: "BAD_REQUEST", message: "amount is required for add_expense" });
97
+ }
98
+ const tx = await service.addExpense({
99
+ store_id: data.store_id,
100
+ employee_id: data.employee_id,
101
+ amount: data.amount,
102
+ category: data.category ?? null,
103
+ sub_category: data.sub_category ?? null,
104
+ reason: data.reason ?? null,
105
+ image_url: data.image_url ?? null,
106
+ metadata: data.metadata ?? null,
107
+ });
108
+ return res.status(201).json({ operation: "add_expense", transaction: tx });
109
+ }
110
+ default:
111
+ return res.status(400).json({ code: "BAD_REQUEST", message: "Unknown operation" });
112
+ }
113
+ }
114
+ catch (err) {
115
+ logger.error("[retailos/cms] operation failed", {
116
+ operation: data.operation,
117
+ store_id: data.store_id,
118
+ error: err instanceof Error ? err.message : String(err),
119
+ });
120
+ return res.status(500).json({ code: "INTERNAL_ERROR", message: err.message });
121
+ }
122
+ };
123
+ exports.POST = POST;
124
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL3JldGFpbG9zL2Ntcy9vcGVyYXRpb24vcm91dGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBSUEsNkJBQXVCO0FBQ3ZCLG9FQUFpRTtBQUdqRSxNQUFNLFVBQVUsR0FBRyxDQUFDLFdBQVcsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLGdCQUFnQixFQUFFLGFBQWEsQ0FBVSxDQUFBO0FBR2pHLE1BQU0sZUFBZSxHQUFHLE9BQUMsQ0FBQyxNQUFNLENBQUM7SUFDL0IsU0FBUyxFQUFFLE9BQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDO0lBQzdCLFFBQVEsRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUMzQixXQUFXLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDOUIsY0FBYyxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxRQUFRLEVBQUU7SUFDbkQsY0FBYyxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxRQUFRLEVBQUU7SUFDbkQsV0FBVyxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxRQUFRLEVBQUU7SUFDN0MsZUFBZSxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxRQUFRLEVBQUU7SUFDcEQsVUFBVSxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxRQUFRLEVBQUU7SUFDNUMsSUFBSSxFQUFFLE9BQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxRQUFRLEVBQUU7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
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GET = void 0;
4
+ const constants_1 = require("../../../../../modules/cms/constants");
5
+ function getService(req) {
6
+ return req.scope.resolve(constants_1.CMS_MODULE);
7
+ }
8
+ function getLogger(req) {
9
+ try {
10
+ return req.scope.resolve("logger");
11
+ }
12
+ catch {
13
+ return { info: () => { }, warn: () => { }, error: () => { }, debug: () => { } };
14
+ }
15
+ }
16
+ const GET = async (req, res) => {
17
+ try {
18
+ const service = getService(req);
19
+ const filters = (req.filterableFields ?? {});
20
+ const [transactions, count] = await service.listAndCountPettyCashTransactions({ ...filters, transaction_type: ["open", "close", "petty_cash"] }, { take: 100, order: { created_at: "DESC" } });
21
+ return res.status(200).json({ transactions, count });
22
+ }
23
+ catch (err) {
24
+ getLogger(req).error("[retailos/cms] list petty cash failed", {
25
+ error: err instanceof Error ? err.message : String(err),
26
+ });
27
+ return res.status(500).json({ code: "INTERNAL_ERROR", message: err.message });
28
+ }
29
+ };
30
+ exports.GET = GET;
31
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL3JldGFpbG9zL2Ntcy9wZXR0eS1jYXNoL3JvdXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUlBLG9FQUFpRTtBQUdqRSxTQUFTLFVBQVUsQ0FBQyxHQUErQjtJQUNqRCxPQUFRLEdBQVcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLHNCQUFVLENBQUMsQ0FBQTtBQUMvQyxDQUFDO0FBRUQsU0FBUyxTQUFTLENBQUMsR0FBK0I7SUFDaEQsSUFBSSxDQUFDO1FBQ0gsT0FBUSxHQUFXLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQTtJQUM3QyxDQUFDO0lBQUMsTUFBTSxDQUFDO1FBQ1AsT0FBTyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsR0FBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxHQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLEdBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsR0FBRSxDQUFDLEVBQUUsQ0FBQTtJQUM3RSxDQUFDO0FBQ0gsQ0FBQztBQUVNLE1BQU0sR0FBRyxHQUFHLEtBQUssRUFBRSxHQUErQixFQUFFLEdBQW1CLEVBQUUsRUFBRTtJQUNoRixJQUFJLENBQUM7UUFDSCxNQUFNLE9BQU8sR0FBRyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUE7UUFDL0IsTUFBTSxPQUFPLEdBQUcsQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLElBQUksRUFBRSxDQUE0QixDQUFBO1FBQ3ZFLE1BQU0sQ0FBQyxZQUFZLEVBQUUsS0FBSyxDQUFDLEdBQUcsTUFBTSxPQUFPLENBQUMsaUNBQWlDLENBQzNFLEVBQUUsR0FBRyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsQ0FBQyxNQUFNLEVBQUUsT0FBTyxFQUFFLFlBQVksQ0FBQyxFQUFFLEVBQ2pFLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLEVBQUUsQ0FDN0MsQ0FBQTtRQUNELE9BQU8sR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQTtJQUN0RCxDQUFDO0lBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztRQUNiLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsdUNBQXVDLEVBQUU7WUFDNUQsS0FBSyxFQUFFLEdBQUcsWUFBWSxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUM7U0FDeEQsQ0FBQyxDQUFBO1FBQ0YsT0FBTyxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRSxPQUFPLEVBQUcsR0FBYSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUE7SUFDMUYsQ0FBQztBQUNILENBQUMsQ0FBQTtBQWZZLFFBQUEsR0FBRyxPQWVmIn0=
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GET = void 0;
4
+ const constants_1 = require("../../../../../modules/cms/constants");
5
+ function getService(req) {
6
+ return req.scope.resolve(constants_1.CMS_MODULE);
7
+ }
8
+ function getLogger(req) {
9
+ try {
10
+ return req.scope.resolve("logger");
11
+ }
12
+ catch {
13
+ return { info: () => { }, warn: () => { }, error: () => { }, debug: () => { } };
14
+ }
15
+ }
16
+ const GET = async (req, res) => {
17
+ const query = req.query;
18
+ const store_id = query.store_id;
19
+ const limit = query.limit ? Number(query.limit) : 50;
20
+ try {
21
+ const service = getService(req);
22
+ const logs = await service.getShiftLogs({
23
+ store_id: store_id || undefined,
24
+ limit,
25
+ });
26
+ return res.status(200).json({ shift_logs: logs, count: logs.length });
27
+ }
28
+ catch (err) {
29
+ getLogger(req).error("[retailos/cms] list shift logs failed", {
30
+ error: err instanceof Error ? err.message : String(err),
31
+ });
32
+ return res.status(500).json({ code: "INTERNAL_ERROR", message: err.message });
33
+ }
34
+ };
35
+ exports.GET = GET;
36
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL3JldGFpbG9zL2Ntcy9zaGlmdC1sb2dzL3JvdXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUlBLG9FQUFpRTtBQUdqRSxTQUFTLFVBQVUsQ0FBQyxHQUErQjtJQUNqRCxPQUFRLEdBQVcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLHNCQUFVLENBQUMsQ0FBQTtBQUMvQyxDQUFDO0FBRUQsU0FBUyxTQUFTLENBQUMsR0FBK0I7SUFDaEQsSUFBSSxDQUFDO1FBQ0gsT0FBUSxHQUFXLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQTtJQUM3QyxDQUFDO0lBQUMsTUFBTSxDQUFDO1FBQ1AsT0FBTyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsR0FBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxHQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLEdBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsR0FBRSxDQUFDLEVBQUUsQ0FBQTtJQUM3RSxDQUFDO0FBQ0gsQ0FBQztBQUVNLE1BQU0sR0FBRyxHQUFHLEtBQUssRUFBRSxHQUErQixFQUFFLEdBQW1CLEVBQUUsRUFBRTtJQUNoRixNQUFNLEtBQUssR0FBRyxHQUFHLENBQUMsS0FBK0IsQ0FBQTtJQUNqRCxNQUFNLFFBQVEsR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFBO0lBQy9CLE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQTtJQUVwRCxJQUFJLENBQUM7UUFDSCxNQUFNLE9BQU8sR0FBRyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUE7UUFDL0IsTUFBTSxJQUFJLEdBQUcsTUFBTSxPQUFPLENBQUMsWUFBWSxDQUFDO1lBQ3RDLFFBQVEsRUFBRSxRQUFRLElBQUksU0FBUztZQUMvQixLQUFLO1NBQ04sQ0FBQyxDQUFBO1FBQ0YsT0FBTyxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFBO0lBQ3ZFLENBQUM7SUFBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO1FBQ2IsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyx1Q0FBdUMsRUFBRTtZQUM1RCxLQUFLLEVBQUUsR0FBRyxZQUFZLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQztTQUN4RCxDQUFDLENBQUE7UUFDRixPQUFPLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFLE9BQU8sRUFBRyxHQUFhLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQTtJQUMxRixDQUFDO0FBQ0gsQ0FBQyxDQUFBO0FBbEJZLFFBQUEsR0FBRyxPQWtCZiJ9
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const utils_1 = require("@medusajs/framework/utils");
7
+ const employee_1 = __importDefault(require("@devx-retailos/employee"));
8
+ const cms_1 = __importDefault(require("../modules/cms"));
9
+ exports.default = (0, utils_1.defineLink)(employee_1.default.linkable.retailosEmployee, {
10
+ linkable: cms_1.default.linkable.retailosCmsHandover,
11
+ isList: true,
12
+ });
13
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW1wbG95ZWUtdG8tY21zLWhhbmRvdmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpbmtzL2VtcGxveWVlLXRvLWNtcy1oYW5kb3Zlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLHFEQUFzRDtBQUN0RCx1RUFBb0Q7QUFDcEQseURBQXNDO0FBRXRDLGtCQUFlLElBQUEsa0JBQVUsRUFDdEIsa0JBQXNCLENBQUMsUUFBUSxDQUFDLGdCQUFnQixFQUNqRDtJQUNFLFFBQVEsRUFBRyxhQUFpQixDQUFDLFFBQVEsQ0FBQyxtQkFBbUI7SUFDekQsTUFBTSxFQUFFLElBQUk7Q0FDYixDQUNGLENBQUEifQ==
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const utils_1 = require("@medusajs/framework/utils");
7
+ const rbac_1 = __importDefault(require("@devx-retailos/rbac"));
8
+ const cms_1 = __importDefault(require("../modules/cms"));
9
+ exports.default = (0, utils_1.defineLink)(rbac_1.default.linkable.retailosStore, {
10
+ linkable: cms_1.default.linkable.retailosCmsHandover,
11
+ isList: true,
12
+ });
13
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmUtdG8tY21zLWhhbmRvdmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpbmtzL3N0b3JlLXRvLWNtcy1oYW5kb3Zlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLHFEQUFzRDtBQUN0RCwrREFBNEM7QUFDNUMseURBQXNDO0FBRXRDLGtCQUFlLElBQUEsa0JBQVUsRUFDdEIsY0FBa0IsQ0FBQyxRQUFRLENBQUMsYUFBYSxFQUMxQztJQUNFLFFBQVEsRUFBRyxhQUFpQixDQUFDLFFBQVEsQ0FBQyxtQkFBbUI7SUFDekQsTUFBTSxFQUFFLElBQUk7Q0FDYixDQUNGLENBQUEifQ==
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CMS_MODULE = void 0;
4
+ exports.CMS_MODULE = "cms";
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL21vZHVsZXMvY21zL2NvbnN0YW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBYSxRQUFBLFVBQVUsR0FBRyxLQUFLLENBQUEifQ==
@@ -0,0 +1,53 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ var __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.models = exports.CMS_PERMISSIONS = exports.CmsModuleService = exports.CMS_MODULE = void 0;
40
+ const utils_1 = require("@medusajs/framework/utils");
41
+ const constants_1 = require("./constants");
42
+ const cms_module_service_1 = __importDefault(require("./services/cms-module-service"));
43
+ exports.default = (0, utils_1.Module)(constants_1.CMS_MODULE, {
44
+ service: cms_module_service_1.default,
45
+ });
46
+ var constants_2 = require("./constants");
47
+ Object.defineProperty(exports, "CMS_MODULE", { enumerable: true, get: function () { return constants_2.CMS_MODULE; } });
48
+ var services_1 = require("./services");
49
+ Object.defineProperty(exports, "CmsModuleService", { enumerable: true, get: function () { return services_1.CmsModuleService; } });
50
+ var permissions_1 = require("./permissions");
51
+ Object.defineProperty(exports, "CMS_PERMISSIONS", { enumerable: true, get: function () { return permissions_1.CMS_PERMISSIONS; } });
52
+ exports.models = __importStar(require("./models"));
53
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbW9kdWxlcy9jbXMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEscURBQWtEO0FBQ2xELDJDQUF3QztBQUN4Qyx1RkFBNEQ7QUFFNUQsa0JBQWUsSUFBQSxjQUFNLEVBQUMsc0JBQVUsRUFBRTtJQUNoQyxPQUFPLEVBQUUsNEJBQWdCO0NBQzFCLENBQUMsQ0FBQTtBQUVGLHlDQUF3QztBQUEvQix1R0FBQSxVQUFVLE9BQUE7QUFDbkIsdUNBQTZDO0FBQXBDLDRHQUFBLGdCQUFnQixPQUFBO0FBYXpCLDZDQUErQztBQUF0Qyw4R0FBQSxlQUFlLE9BQUE7QUFDeEIsbURBQWtDIn0=
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Migration20260622000000 = void 0;
4
+ const migrations_1 = require("@medusajs/framework/mikro-orm/migrations");
5
+ class Migration20260622000000 extends migrations_1.Migration {
6
+ async up() {
7
+ this.addSql(`create table if not exists "retailos_cms_handover" ("id" text not null, "store_id" text not null, "employee_id" text not null, "handover_id" text null, "handover_amount" integer null, "total_cash" integer null, "type" text null, "image_url" text null, "remark" text null, "metadata" jsonb null, "created_at" timestamptz not null default now(), "updated_at" timestamptz not null default now(), "deleted_at" timestamptz null, constraint "retailos_cms_handover_pkey" primary key ("id"));`);
8
+ this.addSql(`CREATE INDEX IF NOT EXISTS "IDX_retailos_cms_handover_store_id" ON "retailos_cms_handover" ("store_id") WHERE deleted_at IS NULL;`);
9
+ this.addSql(`CREATE INDEX IF NOT EXISTS "IDX_retailos_cms_handover_employee_id" ON "retailos_cms_handover" ("employee_id") WHERE deleted_at IS NULL;`);
10
+ this.addSql(`CREATE INDEX IF NOT EXISTS "IDX_retailos_cms_handover_deleted_at" ON "retailos_cms_handover" ("deleted_at") WHERE deleted_at IS NULL;`);
11
+ this.addSql(`create table if not exists "retailos_cms_accumulation" ("id" text not null, "store_id" text not null, "cash_in_store" integer not null default 0, "created_at" timestamptz not null default now(), "updated_at" timestamptz not null default now(), "deleted_at" timestamptz null, constraint "retailos_cms_accumulation_pkey" primary key ("id"));`);
12
+ this.addSql(`CREATE UNIQUE INDEX IF NOT EXISTS "IDX_retailos_cms_accumulation_store_id_unique" ON "retailos_cms_accumulation" ("store_id") WHERE deleted_at IS NULL;`);
13
+ this.addSql(`CREATE INDEX IF NOT EXISTS "IDX_retailos_cms_accumulation_deleted_at" ON "retailos_cms_accumulation" ("deleted_at") WHERE deleted_at IS NULL;`);
14
+ this.addSql(`create table if not exists "retailos_petty_cash" ("id" text not null, "store_id" text not null, "balance" integer not null default 0, "created_at" timestamptz not null default now(), "updated_at" timestamptz not null default now(), "deleted_at" timestamptz null, constraint "retailos_petty_cash_pkey" primary key ("id"));`);
15
+ this.addSql(`CREATE UNIQUE INDEX IF NOT EXISTS "IDX_retailos_petty_cash_store_id_unique" ON "retailos_petty_cash" ("store_id") WHERE deleted_at IS NULL;`);
16
+ this.addSql(`CREATE INDEX IF NOT EXISTS "IDX_retailos_petty_cash_deleted_at" ON "retailos_petty_cash" ("deleted_at") WHERE deleted_at IS NULL;`);
17
+ this.addSql(`create table if not exists "retailos_petty_cash_transaction" ("id" text not null, "store_id" text not null, "employee_id" text not null, "transaction_type" text not null, "entry_type" text null, "source" text null, "amount" integer not null default 0, "opening_balance" integer null, "closing_balance" integer null, "expense_amount" integer not null default 0, "difference_amount" integer not null default 0, "category" text null, "sub_category" text null, "reason" text null, "image_url" text null, "date" timestamptz null, "metadata" jsonb null, "created_at" timestamptz not null default now(), "updated_at" timestamptz not null default now(), "deleted_at" timestamptz null, constraint "retailos_petty_cash_transaction_pkey" primary key ("id"));`);
18
+ this.addSql(`CREATE INDEX IF NOT EXISTS "IDX_retailos_petty_cash_transaction_store_id" ON "retailos_petty_cash_transaction" ("store_id") WHERE deleted_at IS NULL;`);
19
+ this.addSql(`CREATE INDEX IF NOT EXISTS "IDX_retailos_petty_cash_transaction_type" ON "retailos_petty_cash_transaction" ("transaction_type") WHERE deleted_at IS NULL;`);
20
+ this.addSql(`CREATE INDEX IF NOT EXISTS "IDX_retailos_petty_cash_transaction_deleted_at" ON "retailos_petty_cash_transaction" ("deleted_at") WHERE deleted_at IS NULL;`);
21
+ }
22
+ async down() {
23
+ this.addSql(`drop table if exists "retailos_petty_cash_transaction" cascade;`);
24
+ this.addSql(`drop table if exists "retailos_petty_cash" cascade;`);
25
+ this.addSql(`drop table if exists "retailos_cms_accumulation" cascade;`);
26
+ this.addSql(`drop table if exists "retailos_cms_handover" cascade;`);
27
+ }
28
+ }
29
+ exports.Migration20260622000000 = Migration20260622000000;
30
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWlncmF0aW9uMjAyNjA2MjIwMDAwMDAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbW9kdWxlcy9jbXMvbWlncmF0aW9ucy9NaWdyYXRpb24yMDI2MDYyMjAwMDAwMC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSx5RUFBb0U7QUFFcEUsTUFBYSx1QkFBd0IsU0FBUSxzQkFBUztJQUMzQyxLQUFLLENBQUMsRUFBRTtRQUNmLElBQUksQ0FBQyxNQUFNLENBQ1Qsc2VBQXNlLENBQ3ZlLENBQUE7UUFDRCxJQUFJLENBQUMsTUFBTSxDQUNULG1JQUFtSSxDQUNwSSxDQUFBO1FBQ0QsSUFBSSxDQUFDLE1BQU0sQ0FDVCx5SUFBeUksQ0FDMUksQ0FBQTtRQUNELElBQUksQ0FBQyxNQUFNLENBQ1QsdUlBQXVJLENBQ3hJLENBQUE7UUFFRCxJQUFJLENBQUMsTUFBTSxDQUNULHFWQUFxVixDQUN0VixDQUFBO1FBQ0QsSUFBSSxDQUFDLE1BQU0sQ0FDVCx5SkFBeUosQ0FDMUosQ0FBQTtRQUNELElBQUksQ0FBQyxNQUFNLENBQ1QsK0lBQStJLENBQ2hKLENBQUE7UUFFRCxJQUFJLENBQUMsTUFBTSxDQUNULG1VQUFtVSxDQUNwVSxDQUFBO1FBQ0QsSUFBSSxDQUFDLE1BQU0sQ0FDVCw2SUFBNkksQ0FDOUksQ0FBQTtRQUNELElBQUksQ0FBQyxNQUFNLENBQ1QsbUlBQW1JLENBQ3BJLENBQUE7UUFFRCxJQUFJLENBQUMsTUFBTSxDQUNULDZ1QkFBNnVCLENBQzl1QixDQUFBO1FBQ0QsSUFBSSxDQUFDLE1BQU0sQ0FDVCx1SkFBdUosQ0FDeEosQ0FBQTtRQUNELElBQUksQ0FBQyxNQUFNLENBQ1QsMkpBQTJKLENBQzVKLENBQUE7UUFDRCxJQUFJLENBQUMsTUFBTSxDQUNULDJKQUEySixDQUM1SixDQUFBO0lBQ0gsQ0FBQztJQUVRLEtBQUssQ0FBQyxJQUFJO1FBQ2pCLElBQUksQ0FBQyxNQUFNLENBQUMsaUVBQWlFLENBQUMsQ0FBQTtRQUM5RSxJQUFJLENBQUMsTUFBTSxDQUFDLHFEQUFxRCxDQUFDLENBQUE7UUFDbEUsSUFBSSxDQUFDLE1BQU0sQ0FBQywyREFBMkQsQ0FBQyxDQUFBO1FBQ3hFLElBQUksQ0FBQyxNQUFNLENBQUMsdURBQXVELENBQUMsQ0FBQTtJQUN0RSxDQUFDO0NBQ0Y7QUF2REQsMERBdURDIn0=
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Migration20260622000001 = void 0;
4
+ const migrations_1 = require("@medusajs/framework/mikro-orm/migrations");
5
+ class Migration20260622000001 extends migrations_1.Migration {
6
+ async up() {
7
+ this.addSql(`alter table if exists "retailos_cms_accumulation" add column if not exists "metadata" jsonb null;`);
8
+ this.addSql(`alter table if exists "retailos_petty_cash" add column if not exists "metadata" jsonb null;`);
9
+ }
10
+ async down() {
11
+ this.addSql(`alter table if exists "retailos_cms_accumulation" drop column if exists "metadata";`);
12
+ this.addSql(`alter table if exists "retailos_petty_cash" drop column if exists "metadata";`);
13
+ }
14
+ }
15
+ exports.Migration20260622000001 = Migration20260622000001;
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWlncmF0aW9uMjAyNjA2MjIwMDAwMDEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbW9kdWxlcy9jbXMvbWlncmF0aW9ucy9NaWdyYXRpb24yMDI2MDYyMjAwMDAwMS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSx5RUFBb0U7QUFFcEUsTUFBYSx1QkFBd0IsU0FBUSxzQkFBUztJQUMzQyxLQUFLLENBQUMsRUFBRTtRQUNmLElBQUksQ0FBQyxNQUFNLENBQ1QsbUdBQW1HLENBQ3BHLENBQUE7UUFDRCxJQUFJLENBQUMsTUFBTSxDQUNULDZGQUE2RixDQUM5RixDQUFBO0lBQ0gsQ0FBQztJQUVRLEtBQUssQ0FBQyxJQUFJO1FBQ2pCLElBQUksQ0FBQyxNQUFNLENBQUMscUZBQXFGLENBQUMsQ0FBQTtRQUNsRyxJQUFJLENBQUMsTUFBTSxDQUFDLCtFQUErRSxDQUFDLENBQUE7SUFDOUYsQ0FBQztDQUNGO0FBZEQsMERBY0MifQ==