@devx-retailos/cms 0.0.2 → 0.1.0
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/.medusa/server/src/api/admin/retailos/cms/accumulation/[storeId]/route.js +3 -5
- package/.medusa/server/src/modules/cms/services/cms-module-service.js +30 -5
- package/package.json +3 -3
- package/src/api/admin/retailos/cms/accumulation/[storeId]/__tests__/route.test.ts +27 -9
- package/src/api/admin/retailos/cms/accumulation/[storeId]/route.ts +2 -4
- package/src/modules/cms/__tests__/cms-module-service.test.ts +1 -1
- package/src/modules/cms/services/cms-module-service.ts +54 -4
|
@@ -17,10 +17,8 @@ const GET = async (req, res) => {
|
|
|
17
17
|
const { storeId } = req.params;
|
|
18
18
|
try {
|
|
19
19
|
const service = getService(req);
|
|
20
|
-
const accumulation = await service.
|
|
21
|
-
return res.status(200).json({
|
|
22
|
-
accumulation: accumulation ?? { store_id: storeId, cash_in_store: 0 },
|
|
23
|
-
});
|
|
20
|
+
const accumulation = await service.getEnrichedAccumulation(storeId);
|
|
21
|
+
return res.status(200).json({ accumulation });
|
|
24
22
|
}
|
|
25
23
|
catch (err) {
|
|
26
24
|
getLogger(req).error("[retailos/cms] get accumulation failed", {
|
|
@@ -31,4 +29,4 @@ const GET = async (req, res) => {
|
|
|
31
29
|
}
|
|
32
30
|
};
|
|
33
31
|
exports.GET = GET;
|
|
34
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
32
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL3JldGFpbG9zL2Ntcy9hY2N1bXVsYXRpb24vW3N0b3JlSWRdL3JvdXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUlBLHVFQUFvRTtBQUdwRSxTQUFTLFVBQVUsQ0FBQyxHQUErQjtJQUNqRCxPQUFRLEdBQVcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLHNCQUFVLENBQUMsQ0FBQTtBQUMvQyxDQUFDO0FBRUQsU0FBUyxTQUFTLENBQUMsR0FBK0I7SUFDaEQsSUFBSSxDQUFDO1FBQ0gsT0FBUSxHQUFXLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQTtJQUM3QyxDQUFDO0lBQUMsTUFBTSxDQUFDO1FBQ1AsT0FBTyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsR0FBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxHQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLEdBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsR0FBRSxDQUFDLEVBQUUsQ0FBQTtJQUM3RSxDQUFDO0FBQ0gsQ0FBQztBQUVNLE1BQU0sR0FBRyxHQUFHLEtBQUssRUFBRSxHQUErQixFQUFFLEdBQW1CLEVBQUUsRUFBRTtJQUNoRixNQUFNLEVBQUUsT0FBTyxFQUFFLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQTtJQUM5QixJQUFJLENBQUM7UUFDSCxNQUFNLE9BQU8sR0FBRyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUE7UUFDL0IsTUFBTSxZQUFZLEdBQUcsTUFBTSxPQUFPLENBQUMsdUJBQXVCLENBQUMsT0FBTyxDQUFDLENBQUE7UUFDbkUsT0FBTyxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLFlBQVksRUFBRSxDQUFDLENBQUE7SUFDL0MsQ0FBQztJQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7UUFDYixTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLHdDQUF3QyxFQUFFO1lBQzdELFFBQVEsRUFBRSxPQUFPO1lBQ2pCLEtBQUssRUFBRSxHQUFHLFlBQVksS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDO1NBQ3hELENBQUMsQ0FBQTtRQUNGLE9BQU8sR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUsT0FBTyxFQUFHLEdBQWEsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFBO0lBQzFGLENBQUM7QUFDSCxDQUFDLENBQUE7QUFiWSxRQUFBLEdBQUcsT0FhZiJ9
|
|
@@ -33,6 +33,8 @@ class CmsModuleService extends (0, utils_1.MedusaService)({
|
|
|
33
33
|
else {
|
|
34
34
|
await this.updateRetailosCmsAccumulations([{ id: existing[0].id, cash_in_store: opening_amount }]);
|
|
35
35
|
}
|
|
36
|
+
const pettyCashes = await this.listRetailosPettyCashes({ store_id: [store_id] });
|
|
37
|
+
const petty_cash_balance = pettyCashes[0] ? pettyCashes[0].balance : 0;
|
|
36
38
|
await this.createRetailosPettyCashTransactions([{
|
|
37
39
|
store_id,
|
|
38
40
|
employee_id,
|
|
@@ -49,9 +51,9 @@ class CmsModuleService extends (0, utils_1.MedusaService)({
|
|
|
49
51
|
reason: null,
|
|
50
52
|
image_url: null,
|
|
51
53
|
date: new Date(),
|
|
52
|
-
metadata:
|
|
54
|
+
metadata: { petty_cash_balance },
|
|
53
55
|
}]);
|
|
54
|
-
this.logger_.info("cms.day_started", { store_id, employee_id, opening_amount });
|
|
56
|
+
this.logger_.info("cms.day_started", { store_id, employee_id, opening_amount, petty_cash_balance });
|
|
55
57
|
}
|
|
56
58
|
async dayEnd(input) {
|
|
57
59
|
const { store_id, employee_id, closing_amount } = input;
|
|
@@ -61,6 +63,8 @@ class CmsModuleService extends (0, utils_1.MedusaService)({
|
|
|
61
63
|
const accumulations = await this.listRetailosCmsAccumulations({ store_id: [store_id] });
|
|
62
64
|
const current_cash = accumulations[0] ? accumulations[0].cash_in_store : 0;
|
|
63
65
|
const difference = closing_amount - current_cash;
|
|
66
|
+
const pettyCashes = await this.listRetailosPettyCashes({ store_id: [store_id] });
|
|
67
|
+
const petty_cash_balance = pettyCashes[0] ? pettyCashes[0].balance : 0;
|
|
64
68
|
await this.createRetailosPettyCashTransactions([{
|
|
65
69
|
store_id,
|
|
66
70
|
employee_id,
|
|
@@ -77,9 +81,9 @@ class CmsModuleService extends (0, utils_1.MedusaService)({
|
|
|
77
81
|
reason: null,
|
|
78
82
|
image_url: null,
|
|
79
83
|
date: new Date(),
|
|
80
|
-
metadata:
|
|
84
|
+
metadata: { petty_cash_balance },
|
|
81
85
|
}]);
|
|
82
|
-
this.logger_.info("cms.day_ended", { store_id, employee_id, closing_amount, difference });
|
|
86
|
+
this.logger_.info("cms.day_ended", { store_id, employee_id, closing_amount, difference, petty_cash_balance });
|
|
83
87
|
}
|
|
84
88
|
async handover(input) {
|
|
85
89
|
const { store_id, handover_amount, type } = input;
|
|
@@ -214,6 +218,27 @@ class CmsModuleService extends (0, utils_1.MedusaService)({
|
|
|
214
218
|
const rows = await this.listRetailosCmsAccumulations({ store_id: [store_id] });
|
|
215
219
|
return rows[0] ?? null;
|
|
216
220
|
}
|
|
221
|
+
async getEnrichedAccumulation(store_id) {
|
|
222
|
+
const accumulation = await this.getAccumulation(store_id);
|
|
223
|
+
const pettyCashes = await this.listRetailosPettyCashes({ store_id: [store_id] });
|
|
224
|
+
const petty_cash = pettyCashes[0] ? pettyCashes[0].balance : 0;
|
|
225
|
+
const now = new Date();
|
|
226
|
+
const dateStr = `${now.getFullYear()}-${String(now.getMonth() + 1).padStart(2, "0")}-${String(now.getDate()).padStart(2, "0")}`;
|
|
227
|
+
const start = new Date(`${dateStr}T00:00:00.000Z`);
|
|
228
|
+
const end = new Date(`${dateStr}T23:59:59.999Z`);
|
|
229
|
+
const todayTxns = await this.listRetailosPettyCashTransactions({ store_id: [store_id], created_at: { $gte: start, $lte: end } }, { take: 10, order: { created_at: "ASC" } });
|
|
230
|
+
const txnList = todayTxns;
|
|
231
|
+
const openTx = txnList.find((t) => t.transaction_type === "open");
|
|
232
|
+
const closeTx = txnList.find((t) => t.transaction_type === "close");
|
|
233
|
+
return {
|
|
234
|
+
...(accumulation ? accumulation : { store_id, cash_in_store: 0 }),
|
|
235
|
+
petty_cash,
|
|
236
|
+
opening_store_cash: openTx ? openTx.amount : null,
|
|
237
|
+
opening_petty_cash: openTx?.metadata?.petty_cash_balance ?? null,
|
|
238
|
+
closing_store_cash: closeTx ? closeTx.amount : null,
|
|
239
|
+
closing_petty_cash: closeTx?.metadata?.petty_cash_balance ?? null,
|
|
240
|
+
};
|
|
241
|
+
}
|
|
217
242
|
async getReconciliationReport(input) {
|
|
218
243
|
const { store_id, date, net_cash_sales = 0 } = input;
|
|
219
244
|
const start = new Date(`${date}T00:00:00.000Z`);
|
|
@@ -277,4 +302,4 @@ class CmsModuleService extends (0, utils_1.MedusaService)({
|
|
|
277
302
|
}
|
|
278
303
|
}
|
|
279
304
|
exports.default = CmsModuleService;
|
|
280
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY21zLW1vZHVsZS1zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL21vZHVsZXMvY21zL3NlcnZpY2VzL2Ntcy1tb2R1bGUtc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLHFEQUF5RDtBQUN6RCw4Q0FBbUU7QUFDbkUsMEVBQWdEO0FBQ2hELGtGQUF3RDtBQUN4RCxzRUFBNEM7QUFDNUMsOEZBQW1FO0FBa0ZuRSxNQUFNLGdCQUFpQixTQUFRLElBQUEscUJBQWEsRUFBQztJQUMzQyxtQkFBbUIsRUFBRSxzQkFBVztJQUNoQyx1QkFBdUIsRUFBRSwwQkFBZTtJQUN4QyxpQkFBaUIsRUFBRSxvQkFBUztJQUM1Qiw0QkFBNEIsRUFBRSxnQ0FBb0I7Q0FDbkQsQ0FBQztJQUdBLFlBQVksR0FBRyxJQUFXO1FBQ3hCLEtBQUssQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFBO1FBQ2QsTUFBTSxTQUFTLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUF3QixDQUFBO1FBQ3hELElBQUksQ0FBQyxPQUFPLEdBQUcsU0FBUyxDQUFDLE1BQU0sSUFBSSxJQUFBLHVCQUFnQixHQUFFLENBQUE7UUFDckQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsb0NBQW9DLENBQUMsQ0FBQTtJQUMxRCxDQUFDO0lBRUQsS0FBSyxDQUFDLFFBQVEsQ0FBQyxLQUFvQjtRQUNqQyxNQUFNLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxjQUFjLEVBQUUsR0FBRyxLQUFLLENBQUE7UUFDdkQsSUFBSSxjQUFjLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDdkIsTUFBTSxJQUFJLEtBQUssQ0FBQyw0Q0FBNEMsQ0FBQyxDQUFBO1FBQy9ELENBQUM7UUFFRCxNQUFNLFFBQVEsR0FBRyxNQUFNLElBQUksQ0FBQyw0QkFBNEIsQ0FBQyxFQUFFLFFBQVEsRUFBRSxDQUFDLFFBQVEs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
|
|
305
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY21zLW1vZHVsZS1zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL21vZHVsZXMvY21zL3NlcnZpY2VzL2Ntcy1tb2R1bGUtc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLHFEQUF5RDtBQUN6RCw4Q0FBbUU7QUFDbkUsMEVBQWdEO0FBQ2hELGtGQUF3RDtBQUN4RCxzRUFBNEM7QUFDNUMsOEZBQW1FO0FBZ0duRSxNQUFNLGdCQUFpQixTQUFRLElBQUEscUJBQWEsRUFBQztJQUMzQyxtQkFBbUIsRUFBRSxzQkFBVztJQUNoQyx1QkFBdUIsRUFBRSwwQkFBZTtJQUN4QyxpQkFBaUIsRUFBRSxvQkFBUztJQUM1Qiw0QkFBNEIsRUFBRSxnQ0FBb0I7Q0FDbkQsQ0FBQztJQUdBLFlBQVksR0FBRyxJQUFXO1FBQ3hCLEtBQUssQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFBO1FBQ2QsTUFBTSxTQUFTLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUF3QixDQUFBO1FBQ3hELElBQUksQ0FBQyxPQUFPLEdBQUcsU0FBUyxDQUFDLE1BQU0sSUFBSSxJQUFBLHVCQUFnQixHQUFFLENBQUE7UUFDckQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsb0NBQW9DLENBQUMsQ0FBQTtJQUMxRCxDQUFDO0lBRUQsS0FBSyxDQUFDLFFBQVEsQ0FBQyxLQUFvQjtRQUNqQyxNQUFNLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxjQUFjLEVBQUUsR0FBRyxLQUFLLENBQUE7UUFDdkQsSUFBSSxjQUFjLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDdkIsTUFBTSxJQUFJLEtBQUssQ0FBQyw0Q0FBNEMsQ0FBQyxDQUFBO1FBQy9ELENBQUM7UUFFRCxNQUFNLFFBQVEsR0FBRyxNQUFNLElBQUksQ0FBQyw0QkFBNEIsQ0FBQyxFQUFFLFFBQVEsRUFBRSxDQUFDLFFBQVEs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
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@devx-retailos/cms",
|
|
3
|
-
"version": "0.0
|
|
3
|
+
"version": "0.1.0",
|
|
4
4
|
"description": "Cash Management System for retailOS: shift ops, handovers, petty cash, accumulation.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"main": "./.medusa/server/src/modules/cms/index.js",
|
|
@@ -25,9 +25,9 @@
|
|
|
25
25
|
"src"
|
|
26
26
|
],
|
|
27
27
|
"dependencies": {
|
|
28
|
-
"@devx-retailos/
|
|
28
|
+
"@devx-retailos/rbac": "0.0.2",
|
|
29
29
|
"@devx-retailos/employee": "0.0.3",
|
|
30
|
-
"@devx-retailos/
|
|
30
|
+
"@devx-retailos/core": "0.0.2"
|
|
31
31
|
},
|
|
32
32
|
"peerDependencies": {
|
|
33
33
|
"@medusajs/framework": "^2.15.0",
|
|
@@ -3,7 +3,7 @@ import { GET } from "../route"
|
|
|
3
3
|
|
|
4
4
|
function makeService() {
|
|
5
5
|
return {
|
|
6
|
-
|
|
6
|
+
getEnrichedAccumulation: vi.fn(),
|
|
7
7
|
}
|
|
8
8
|
}
|
|
9
9
|
|
|
@@ -28,35 +28,53 @@ function makeRes() {
|
|
|
28
28
|
}
|
|
29
29
|
|
|
30
30
|
describe("GET /accumulation/[storeId]", () => {
|
|
31
|
-
it("returns accumulation when it exists", async () => {
|
|
31
|
+
it("returns enriched accumulation when it exists", async () => {
|
|
32
32
|
const service = makeService()
|
|
33
|
-
const accumulation = {
|
|
34
|
-
|
|
33
|
+
const accumulation = {
|
|
34
|
+
id: "cmsa_1",
|
|
35
|
+
store_id: "s1",
|
|
36
|
+
cash_in_store: 750,
|
|
37
|
+
petty_cash: 200,
|
|
38
|
+
opening_store_cash: 500,
|
|
39
|
+
opening_petty_cash: 150,
|
|
40
|
+
closing_store_cash: null,
|
|
41
|
+
closing_petty_cash: null,
|
|
42
|
+
}
|
|
43
|
+
service.getEnrichedAccumulation.mockResolvedValue(accumulation)
|
|
35
44
|
const req = makeReq({ storeId: "s1" }, service)
|
|
36
45
|
const res = makeRes()
|
|
37
46
|
|
|
38
47
|
await GET(req as any, res as any)
|
|
39
48
|
|
|
40
|
-
expect(service.
|
|
49
|
+
expect(service.getEnrichedAccumulation).toHaveBeenCalledWith("s1")
|
|
41
50
|
expect(res.status).toHaveBeenCalledWith(200)
|
|
42
51
|
expect(res.json).toHaveBeenCalledWith({ accumulation })
|
|
43
52
|
})
|
|
44
53
|
|
|
45
|
-
it("returns default zero accumulation when
|
|
54
|
+
it("returns default zero accumulation when no day has started", async () => {
|
|
46
55
|
const service = makeService()
|
|
47
|
-
|
|
56
|
+
const accumulation = {
|
|
57
|
+
store_id: "s1",
|
|
58
|
+
cash_in_store: 0,
|
|
59
|
+
petty_cash: 0,
|
|
60
|
+
opening_store_cash: null,
|
|
61
|
+
opening_petty_cash: null,
|
|
62
|
+
closing_store_cash: null,
|
|
63
|
+
closing_petty_cash: null,
|
|
64
|
+
}
|
|
65
|
+
service.getEnrichedAccumulation.mockResolvedValue(accumulation)
|
|
48
66
|
const req = makeReq({ storeId: "s1" }, service)
|
|
49
67
|
const res = makeRes()
|
|
50
68
|
|
|
51
69
|
await GET(req as any, res as any)
|
|
52
70
|
|
|
53
71
|
expect(res.status).toHaveBeenCalledWith(200)
|
|
54
|
-
expect(res.json).toHaveBeenCalledWith({ accumulation
|
|
72
|
+
expect(res.json).toHaveBeenCalledWith({ accumulation })
|
|
55
73
|
})
|
|
56
74
|
|
|
57
75
|
it("returns 500 when service throws", async () => {
|
|
58
76
|
const service = makeService()
|
|
59
|
-
service.
|
|
77
|
+
service.getEnrichedAccumulation.mockRejectedValue(new Error("db error"))
|
|
60
78
|
const req = makeReq({ storeId: "s1" }, service)
|
|
61
79
|
const res = makeRes()
|
|
62
80
|
|
|
@@ -21,10 +21,8 @@ export const GET = async (req: AuthenticatedMedusaRequest, res: MedusaResponse)
|
|
|
21
21
|
const { storeId } = req.params
|
|
22
22
|
try {
|
|
23
23
|
const service = getService(req)
|
|
24
|
-
const accumulation = await service.
|
|
25
|
-
return res.status(200).json({
|
|
26
|
-
accumulation: accumulation ?? { store_id: storeId, cash_in_store: 0 },
|
|
27
|
-
})
|
|
24
|
+
const accumulation = await service.getEnrichedAccumulation(storeId)
|
|
25
|
+
return res.status(200).json({ accumulation })
|
|
28
26
|
} catch (err) {
|
|
29
27
|
getLogger(req).error("[retailos/cms] get accumulation failed", {
|
|
30
28
|
store_id: storeId,
|
|
@@ -12,7 +12,7 @@ class TestCmsService extends (CmsModuleService as any) {
|
|
|
12
12
|
listRetailosCmsAccumulations = vi.fn()
|
|
13
13
|
updateRetailosCmsAccumulations = vi.fn()
|
|
14
14
|
createRetailosPettyCashes = vi.fn()
|
|
15
|
-
listRetailosPettyCashes = vi.fn()
|
|
15
|
+
listRetailosPettyCashes = vi.fn().mockResolvedValue([])
|
|
16
16
|
updateRetailosPettyCashes = vi.fn()
|
|
17
17
|
createRetailosPettyCashTransactions = vi.fn()
|
|
18
18
|
listRetailosPettyCashTransactions = vi.fn()
|
|
@@ -67,6 +67,20 @@ export interface ReconciliationInput {
|
|
|
67
67
|
net_cash_sales?: number
|
|
68
68
|
}
|
|
69
69
|
|
|
70
|
+
export interface EnrichedAccumulation {
|
|
71
|
+
id?: string
|
|
72
|
+
store_id: string
|
|
73
|
+
cash_in_store: number
|
|
74
|
+
petty_cash: number
|
|
75
|
+
opening_store_cash: number | null
|
|
76
|
+
opening_petty_cash: number | null
|
|
77
|
+
closing_store_cash: number | null
|
|
78
|
+
closing_petty_cash: number | null
|
|
79
|
+
created_at?: string
|
|
80
|
+
updated_at?: string
|
|
81
|
+
metadata?: Record<string, unknown> | null
|
|
82
|
+
}
|
|
83
|
+
|
|
70
84
|
export interface ReconciliationReport {
|
|
71
85
|
date: string
|
|
72
86
|
store_id: string
|
|
@@ -113,6 +127,9 @@ class CmsModuleService extends MedusaService({
|
|
|
113
127
|
await this.updateRetailosCmsAccumulations([{ id: (existing[0] as any).id, cash_in_store: opening_amount }])
|
|
114
128
|
}
|
|
115
129
|
|
|
130
|
+
const pettyCashes = await this.listRetailosPettyCashes({ store_id: [store_id] })
|
|
131
|
+
const petty_cash_balance = pettyCashes[0] ? (pettyCashes[0] as any).balance : 0
|
|
132
|
+
|
|
116
133
|
await this.createRetailosPettyCashTransactions([{
|
|
117
134
|
store_id,
|
|
118
135
|
employee_id,
|
|
@@ -129,10 +146,10 @@ class CmsModuleService extends MedusaService({
|
|
|
129
146
|
reason: null,
|
|
130
147
|
image_url: null,
|
|
131
148
|
date: new Date(),
|
|
132
|
-
metadata:
|
|
149
|
+
metadata: { petty_cash_balance },
|
|
133
150
|
}])
|
|
134
151
|
|
|
135
|
-
this.logger_.info("cms.day_started", { store_id, employee_id, opening_amount })
|
|
152
|
+
this.logger_.info("cms.day_started", { store_id, employee_id, opening_amount, petty_cash_balance })
|
|
136
153
|
}
|
|
137
154
|
|
|
138
155
|
async dayEnd(input: DayEndInput): Promise<void> {
|
|
@@ -145,6 +162,9 @@ class CmsModuleService extends MedusaService({
|
|
|
145
162
|
const current_cash = accumulations[0] ? (accumulations[0] as any).cash_in_store : 0
|
|
146
163
|
const difference = closing_amount - current_cash
|
|
147
164
|
|
|
165
|
+
const pettyCashes = await this.listRetailosPettyCashes({ store_id: [store_id] })
|
|
166
|
+
const petty_cash_balance = pettyCashes[0] ? (pettyCashes[0] as any).balance : 0
|
|
167
|
+
|
|
148
168
|
await this.createRetailosPettyCashTransactions([{
|
|
149
169
|
store_id,
|
|
150
170
|
employee_id,
|
|
@@ -161,10 +181,10 @@ class CmsModuleService extends MedusaService({
|
|
|
161
181
|
reason: null,
|
|
162
182
|
image_url: null,
|
|
163
183
|
date: new Date(),
|
|
164
|
-
metadata:
|
|
184
|
+
metadata: { petty_cash_balance },
|
|
165
185
|
}])
|
|
166
186
|
|
|
167
|
-
this.logger_.info("cms.day_ended", { store_id, employee_id, closing_amount, difference })
|
|
187
|
+
this.logger_.info("cms.day_ended", { store_id, employee_id, closing_amount, difference, petty_cash_balance })
|
|
168
188
|
}
|
|
169
189
|
|
|
170
190
|
async handover(input: HandoverInput) {
|
|
@@ -320,6 +340,36 @@ class CmsModuleService extends MedusaService({
|
|
|
320
340
|
return rows[0] ?? null
|
|
321
341
|
}
|
|
322
342
|
|
|
343
|
+
async getEnrichedAccumulation(store_id: string): Promise<EnrichedAccumulation> {
|
|
344
|
+
const accumulation = await this.getAccumulation(store_id)
|
|
345
|
+
|
|
346
|
+
const pettyCashes = await this.listRetailosPettyCashes({ store_id: [store_id] })
|
|
347
|
+
const petty_cash = pettyCashes[0] ? (pettyCashes[0] as any).balance : 0
|
|
348
|
+
|
|
349
|
+
const now = new Date()
|
|
350
|
+
const dateStr = `${now.getFullYear()}-${String(now.getMonth() + 1).padStart(2, "0")}-${String(now.getDate()).padStart(2, "0")}`
|
|
351
|
+
const start = new Date(`${dateStr}T00:00:00.000Z`)
|
|
352
|
+
const end = new Date(`${dateStr}T23:59:59.999Z`)
|
|
353
|
+
|
|
354
|
+
const todayTxns = await this.listRetailosPettyCashTransactions(
|
|
355
|
+
{ store_id: [store_id], created_at: { $gte: start, $lte: end } as any },
|
|
356
|
+
{ take: 10, order: { created_at: "ASC" } as any }
|
|
357
|
+
)
|
|
358
|
+
|
|
359
|
+
const txnList = todayTxns as any[]
|
|
360
|
+
const openTx = txnList.find((t) => t.transaction_type === "open")
|
|
361
|
+
const closeTx = txnList.find((t) => t.transaction_type === "close")
|
|
362
|
+
|
|
363
|
+
return {
|
|
364
|
+
...(accumulation ? (accumulation as any) : { store_id, cash_in_store: 0 }),
|
|
365
|
+
petty_cash,
|
|
366
|
+
opening_store_cash: openTx ? openTx.amount : null,
|
|
367
|
+
opening_petty_cash: openTx?.metadata?.petty_cash_balance ?? null,
|
|
368
|
+
closing_store_cash: closeTx ? closeTx.amount : null,
|
|
369
|
+
closing_petty_cash: closeTx?.metadata?.petty_cash_balance ?? null,
|
|
370
|
+
}
|
|
371
|
+
}
|
|
372
|
+
|
|
323
373
|
async getReconciliationReport(input: ReconciliationInput): Promise<ReconciliationReport> {
|
|
324
374
|
const { store_id, date, net_cash_sales = 0 } = input
|
|
325
375
|
|