@devx-retailos/cms 0.0.2 → 0.2.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/api/admin/retailos/cms/handovers/route.js +13 -5
- package/.medusa/server/src/api/admin/retailos/cms/petty-cash/route.js +60 -4
- package/.medusa/server/src/modules/cms/services/cms-module-service.js +30 -5
- package/package.json +1 -1
- 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/api/admin/retailos/cms/handovers/route.ts +11 -4
- package/src/api/admin/retailos/cms/petty-cash/__tests__/route.test.ts +2 -2
- package/src/api/admin/retailos/cms/petty-cash/route.ts +59 -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
|
|
@@ -37,12 +37,20 @@ const GET = async (req, res) => {
|
|
|
37
37
|
if (q[key] !== undefined && q[key] !== "")
|
|
38
38
|
filters[key] = q[key];
|
|
39
39
|
}
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
40
|
+
// handover_id / invoice_number filtering (invoice_number ilike takes highest precedence)
|
|
41
|
+
if (q.invoice_number) {
|
|
42
|
+
filters.handover_id = { $ilike: `%${q.invoice_number}%` };
|
|
43
|
+
}
|
|
44
|
+
else if (q.q) {
|
|
44
45
|
filters.handover_id = { $ilike: `%${q.q}%` };
|
|
45
46
|
}
|
|
47
|
+
else if (q.handover_id) {
|
|
48
|
+
filters.handover_id = q.handover_id;
|
|
49
|
+
}
|
|
50
|
+
// customer_id: stored in metadata JSONB field
|
|
51
|
+
if (q.customer_id) {
|
|
52
|
+
filters.metadata = { customer_id: q.customer_id };
|
|
53
|
+
}
|
|
46
54
|
// Date range filters
|
|
47
55
|
if (q.created_at) {
|
|
48
56
|
filters.created_at = typeof q.created_at === "object" ? q.created_at : { $gte: new Date(q.created_at) };
|
|
@@ -140,4 +148,4 @@ const POST = async (req, res) => {
|
|
|
140
148
|
}
|
|
141
149
|
};
|
|
142
150
|
exports.POST = POST;
|
|
143
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
151
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL3JldGFpbG9zL2Ntcy9oYW5kb3ZlcnMvcm91dGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBSUEscURBQXFFO0FBQ3JFLDZCQUF1QjtBQUN2QixvRUFBaUU7QUFHakUsTUFBTSxZQUFZLEdBQUcsT0FBQyxDQUFDLE1BQU0sQ0FBQztJQUM1QixRQUFRLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDM0IsV0FBVyxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQzlCLFdBQVcsRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUMsUUFBUSxFQUFFO0lBQzdDLGVBQWUsRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsV0FBVyxFQUFFO0lBQ3pDLFVBQVUsRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUMsUUFBUSxFQUFFO0lBQzVDLElBQUksRUFBRSxPQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsUUFBUSxFQUFFO0lBQ2hELFNBQVMsRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUMsUUFBUSxFQUFFO0lBQzNDLE1BQU0sRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUMsUUFBUSxFQUFFO0lBQ3hDLFFBQVEsRUFBRSxPQUFDLENBQUMsTUFBTSxDQUFDLE9BQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxPQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxRQUFRLEVBQUU7Q0FDbEUsQ0FBQyxDQUFB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
|
|
@@ -20,10 +20,66 @@ const GET = async (req, res) => {
|
|
|
20
20
|
const q = req.query;
|
|
21
21
|
const filters = {};
|
|
22
22
|
if (q.store_id)
|
|
23
|
-
filters.store_id =
|
|
24
|
-
|
|
23
|
+
filters.store_id = q.store_id;
|
|
24
|
+
if (q.entry_type)
|
|
25
|
+
filters.entry_type = q.entry_type;
|
|
26
|
+
// employee_name: resolve IDs by splitting on spaces and querying first/last name separately
|
|
27
|
+
// (MedusaService does not support $or at the filter top-level)
|
|
28
|
+
if (q.employee_name) {
|
|
29
|
+
try {
|
|
30
|
+
const employeeService = req.scope.resolve(EMPLOYEE_MODULE);
|
|
31
|
+
const words = q.employee_name.trim().toLowerCase().split(/\s+/).filter(Boolean);
|
|
32
|
+
let matchedIds = null;
|
|
33
|
+
for (const word of words) {
|
|
34
|
+
const nameQ = `%${word}%`;
|
|
35
|
+
const [byFirst, byLast] = await Promise.all([
|
|
36
|
+
employeeService.listEmployees({ first_name: { $ilike: nameQ } }, { select: ["id"] }).catch(() => []),
|
|
37
|
+
employeeService.listEmployees({ last_name: { $ilike: nameQ } }, { select: ["id"] }).catch(() => []),
|
|
38
|
+
]);
|
|
39
|
+
const wordIds = [...new Set([...byFirst, ...byLast].map((e) => e.id))];
|
|
40
|
+
matchedIds = matchedIds === null ? wordIds : matchedIds.filter((id) => new Set(wordIds).has(id));
|
|
41
|
+
}
|
|
42
|
+
const finalIds = matchedIds ?? [];
|
|
43
|
+
filters.employee_id = { $in: finalIds.length > 0 ? finalIds : [""] };
|
|
44
|
+
}
|
|
45
|
+
catch {
|
|
46
|
+
// employee module unavailable — skip filter
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
else if (q.employee_id) {
|
|
50
|
+
filters.employee_id = q.employee_id;
|
|
51
|
+
}
|
|
52
|
+
// transaction_type: defaults to all; pass "petty_cash" to filter to only expense entries
|
|
53
|
+
filters.transaction_type = q.transaction_type
|
|
54
|
+
? q.transaction_type
|
|
55
|
+
: ["open", "close", "petty_cash"];
|
|
56
|
+
// q: full-text search on reason
|
|
57
|
+
if (q.q)
|
|
58
|
+
filters.reason = { $ilike: `%${q.q}%` };
|
|
59
|
+
if (q.category)
|
|
60
|
+
filters.category = { $ilike: `%${q.category}%` };
|
|
61
|
+
// Amount range
|
|
62
|
+
if (q.amount_gte || q.amount_lte) {
|
|
63
|
+
const range = {};
|
|
64
|
+
if (q.amount_gte)
|
|
65
|
+
range.$gte = Number(q.amount_gte);
|
|
66
|
+
if (q.amount_lte)
|
|
67
|
+
range.$lte = Number(q.amount_lte);
|
|
68
|
+
filters.amount = range;
|
|
69
|
+
}
|
|
70
|
+
const limit = q.limit ? Math.min(parseInt(q.limit, 10), 500) : 20;
|
|
25
71
|
const offset = q.offset ? parseInt(q.offset, 10) : 0;
|
|
26
|
-
|
|
72
|
+
// Ordering: "field" = ASC, "-field" = DESC
|
|
73
|
+
const SORTABLE = new Set(["created_at", "updated_at", "amount"]);
|
|
74
|
+
let order = { created_at: "DESC" };
|
|
75
|
+
if (q.order) {
|
|
76
|
+
const raw = q.order;
|
|
77
|
+
const isDesc = raw.startsWith("-");
|
|
78
|
+
const field = isDesc ? raw.slice(1) : raw;
|
|
79
|
+
if (SORTABLE.has(field))
|
|
80
|
+
order = { [field]: isDesc ? "DESC" : "ASC" };
|
|
81
|
+
}
|
|
82
|
+
const [transactions, count] = await service.listAndCountRetailosPettyCashTransactions(filters, { take: limit, skip: offset, order });
|
|
27
83
|
// Enrich with employee data via bulk lookup
|
|
28
84
|
const employeeIds = [...new Set(transactions.map((t) => t.employee_id).filter(Boolean))];
|
|
29
85
|
let employeeMap = new Map();
|
|
@@ -59,4 +115,4 @@ const GET = async (req, res) => {
|
|
|
59
115
|
}
|
|
60
116
|
};
|
|
61
117
|
exports.GET = GET;
|
|
62
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
118
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL3JldGFpbG9zL2Ntcy9wZXR0eS1jYXNoL3JvdXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUlBLG9FQUFpRTtBQUdqRSxNQUFNLGVBQWUsR0FBRyxVQUFVLENBQUE7QUFFbEMsU0FBUyxVQUFVLENBQUMsR0FBK0I7SUFDakQsT0FBUSxHQUFXLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxzQkFBVSxDQUFDLENBQUE7QUFDL0MsQ0FBQztBQUVELFNBQVMsU0FBUyxDQUFDLEdBQStCO0lBQ2hELElBQUksQ0FBQztRQUNILE9BQVEsR0FBVyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUE7SUFDN0MsQ0FBQztJQUFDLE1BQU0sQ0FBQztRQUNQLE9BQU8sRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLEdBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsR0FBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxHQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLEdBQUUsQ0FBQyxFQUFFLENBQUE7SUFDN0UsQ0FBQztBQUNILENBQUM7QUFFTSxNQUFNLEdBQUcsR0FBRyxLQUFLLEVBQUUsR0FBK0IsRUFBRSxHQUFtQixFQUFFLEVBQUU7SUFDaEYsSUFBSSxDQUFDO1FBQ0gsTUFBTSxPQUFPLEdBQUcsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFBO1FBQy9CLE1BQU0sQ0FBQyxHQUFHLEdBQUcsQ0FBQyxLQUE0QixDQUFBO1FBRTFDLE1BQU0sT0FBTyxHQUE0QixFQUFFLENBQUE7UUFFM0MsSUFBSSxDQUFDLENBQUMsUUFBUTtZQUFJLE9BQU8sQ0FBQyxRQUFRLEdBQUssQ0FBQyxDQUFDLFFBQVEsQ0FBQTtRQUNqRCxJQUFJLENBQUMsQ0FBQyxVQUFVO1lBQUUsT0FBTyxD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
|
|
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY21zLW1vZHVsZS1zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL21vZHVsZXMvY21zL3NlcnZpY2VzL2Ntcy1tb2R1bGUtc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLHFEQUF5RDtBQUN6RCw4Q0FBbUU7QUFDbkUsMEVBQWdEO0FBQ2hELGtGQUF3RDtBQUN4RCxzRUFBNEM7QUFDNUMsOEZBQW1FO0FBa0ZuRSxNQUFNLGdCQUFpQixTQUFRLElBQUEscUJBQWEsRUFBQztJQUMzQyxtQkFBbUIsRUFBRSxzQkFBVztJQUNoQyx1QkFBdUIsRUFBRSwwQkFBZTtJQUN4QyxpQkFBaUIsRUFBRSxvQkFBUztJQUM1Qiw0QkFBNEIsRUFBRSxnQ0FBb0I7Q0FDbkQsQ0FBQztJQUdBLFlBQVksR0FBRyxJQUFXO1FBQ3hCLEtBQUssQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFBO1FBQ2QsTUFBTSxTQUFTLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUF3QixDQUFBO1FBQ3hELElBQUksQ0FBQyxPQUFPLEdBQUcsU0FBUyxDQUFDLE1BQU0sSUFBSSxJQUFBLHVCQUFnQixHQUFFLENBQUE7UUFDckQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsb0NBQW9DLENBQUMsQ0FBQTtJQUMxRCxDQUFDO0lBRUQsS0FBSyxDQUFDLFFBQVEsQ0FBQyxLQUFvQjtRQUNqQyxNQUFNLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxjQUFjLEVBQUUsR0FBRyxLQUFLLENBQUE7UUFDdkQsSUFBSSxjQUFjLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDdkIsTUFBTSxJQUFJLEtBQUssQ0FBQyw0Q0FBNEMsQ0FBQyxDQUFBO1FBQy9ELENBQUM7UUFFRCxNQUFNLFFBQVEsR0FBRyxNQUFNLElBQUksQ0FBQyw0QkFBNEIsQ0FBQyxFQUFFLFFBQVEsRUFBRSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQTtRQUNsRixJQUFJLFFBQVEsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDMUIsTUFBTSxJQUFJLENBQUMsOEJBQThCLENBQUMsQ0FBQyxFQUFFLFFBQVEsRUFBRSxhQUFhLEVBQUUsY0FBYyxFQUFFLENBQUMsQ0FBQyxDQUFBO1FBQzFGLENBQUM7YUFBTSxDQUFDO1lBQ04sTUFBTSxJQUFJLENBQUMsOEJBQThCLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRyxRQUFRLENBQUMsQ0FBQyxDQUFTLENBQUMsRUFBRSxFQUFFLGFBQWEsRUFBRSxjQUFjLEVBQUUsQ0FBQyxDQUFDLENBQUE7UUFDN0csQ0FBQztRQUVELE1BQU0sSUFBSSxDQUFDLG1DQUFtQyxDQUFDLENBQUM7Z0JBQzlDLFFBQVE7Z0JBQ1IsV0FBVztnQkFDWCxnQkFBZ0IsRUFBRSxNQUF5QjtnQkFDM0MsVUFBVSxFQUFFLElBQWlCO2dCQUM3QixNQUFNLEVBQUUsSUFBSTtnQkFDWixNQUFNLEVBQUUsY0FBYztnQkFDdEIsZUFBZSxFQUFFLGNBQWM7Z0JBQy9CLGVBQWUsRUFBRSxJQUFJO2dCQUNyQixjQUFjLEVBQUUsQ0FBQztnQkFDakIsaUJBQWlCLEVBQUUsQ0FBQztnQkFDcEIsUUFBUSxFQUFFLElBQUk7Z0JBQ2QsWUFBWSxFQUFFLElBQUk7Z0JBQ2xCLE1BQU0sRUFBRSxJQUFJO2dCQUNaLFNBQVMsRUFBRSxJQUFJO2dCQUNmLElBQUksRUFBRSxJQUFJLElBQUksRUFBRTtnQkFDaEIsUUFBUSxFQUFFLElBQUk7YUFDZixDQUFDLENBQUMsQ0FBQTtRQUVILElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLGlCQUFpQixFQUFFLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxjQUFjLEVBQUUsQ0FBQyxDQUFBO0lBQ2pGLENBQUM7SUFFRCxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQWtCO1FBQzdCLE1BQU0sRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLGNBQWMsRUFBRSxHQUFHLEtBQUssQ0FBQTtRQUN2RCxJQUFJLGNBQWMsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUN2QixNQUFNLElBQUksS0FBSyxDQUFDLDRDQUE0QyxDQUFDLENBQUE7UUFDL0QsQ0FBQztRQUVELE1BQU0sYUFBYSxHQUFHLE1BQU0sSUFBSSxDQUFDLDRCQUE0QixDQUFDLEVBQUUsUUFBUSxFQUFFLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFBO1FBQ3ZGLE1BQU0sWUFBWSxHQUFHLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUUsYUFBYSxDQUFDLENBQUMsQ0FBUyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO1FBQ25GLE1BQU0sVUFBVSxHQUFHLGNBQWMsR0FBRyxZQUFZLENBQUE7UUFFaEQsTUFBTSxJQUFJLENBQUMsbUNBQW1DLENBQUMsQ0FBQztnQkFDOUMsUUFBUTtnQkFDUixXQUFXO2dCQUNYLGdCQUFnQixFQUFFLE9BQTBCO2dCQUM1QyxVQUFVLEVBQUUsSUFBaUI7Z0JBQzdCLE1BQU0sRUFBRSxJQUFJO2dCQUNaLE1BQU0sRUFBRSxjQUFjO2dCQUN0QixlQUFlLEVBQUUsWUFBWTtnQkFDN0IsZUFBZSxFQUFFLGNBQWM7Z0JBQy9CLGNBQWMsRUFBRSxDQUFDO2dCQUNqQixpQkFBaUIsRUFBRSxVQUFVO2dCQUM3QixRQUFRLEVBQUUsSUFBSTtnQkFDZCxZQUFZLEVBQUUsSUFBSTtnQkFDbEIsTUFBTSxFQUFFLElBQUk7Z0JBQ1osU0FBUyxFQUFFLElBQUk7Z0JBQ2YsSUFBSSxFQUFFLElBQUksSUFBSSxFQUFFO2dCQUNoQixRQUFRLEVBQUUsSUFBSTthQUNmLENBQUMsQ0FBQyxDQUFBO1FBRUgsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxjQUFjLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQTtJQUMzRixDQUFDO0lBRUQsS0FBSyxDQUFDLFFBQVEsQ0FBQyxLQUFvQjtRQUNqQyxNQUFNLEVBQUUsUUFBUSxFQUFFLGVBQWUsRUFBRSxJQUFJLEVBQUUsR0FBRyxLQUFLLENBQUE7UUFDakQsSUFBSSxlQUFlLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDeEIsTUFBTSxJQUFJLEtBQUssQ0FBQyw2Q0FBNkMsQ0FBQyxDQUFBO1FBQ2hFLENBQUM7UUFFRCxNQUFNLGFBQWEsR0FBRyxNQUFNLElBQUksQ0FBQyw0QkFBNEIsQ0FBQyxFQUFFLFFBQVEsRUFBRSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQTtRQUN2RixJQUFJLGFBQWEsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDL0IsTUFBTSxJQUFJLEtBQUssQ0FBQyx1RUFBdUUsQ0FBQyxDQUFBO1FBQzFGLENBQUM7UUFFRCxNQUFNLGVBQWUsR0FBSSxhQUFhLENBQUMsQ0FBQyxDQUFTLENBQUMsYUFBdUIsQ0FBQTtRQUV6RSxJQUFJLGVBQWUsR0FBRyxlQUFlLENBQUE7UUFDckMsSUFBSSxJQUFJLEtBQUssSUFBSSxFQUFFLENBQUM7WUFDbEIsZUFBZSxHQUFHLGVBQWUsR0FBRyxlQUFlLENBQUE7UUFDckQsQ0FBQzthQUFNLElBQUksSUFBSSxLQUFLLElBQUksRUFBRSxDQUFDO1lBQ3pCLElBQUksZUFBZSxHQUFHLGVBQWUsRUFBRSxDQUFDO2dCQUN0QyxNQUFNLElBQUksS0FBSyxDQUNiLDJEQUEyRCxlQUFlLHdCQUF3QixlQUFlLEVBQUUsQ0FDcEgsQ0FBQTtZQUNILENBQUM7WUFDRCxlQUFlLEdBQUcsZUFBZSxHQUFHLGVBQWUsQ0FBQTtRQUNyRCxDQUFDO1FBRUQsTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLE1BQU0sSUFBSSxDQUFDLDBCQUEwQixDQUFDLENBQUM7Z0JBQ3ZELFFBQVE7Z0JBQ1IsV0FBVyxFQUFFLEtBQUssQ0FBQyxXQUFXO2dCQUM5QixXQUFXLEVBQUUsS0FBSyxDQUFDLFdBQVcsSUFBSSxJQUFJO2dCQUN0QyxlQUFlO2dCQUNmLFVBQVUsRUFBRSxlQUFlO2dCQUMzQixlQUFlO2dCQUNmLGVBQWU7Z0JBQ2YsSUFBSSxFQUFFLElBQUksSUFBSSxJQUFJO2dCQUNsQixTQUFTLEVBQUUsS0FBSyxDQUFDLFNBQVMsSUFBSSxJQUFJO2dCQUNsQyxNQUFNLEVBQUUsS0FBSyxDQUFDLE1BQU0sSUFBSSxJQUFJO2dCQUM1QixRQUFRLEVBQUUsS0FBSyxDQUFDLFFBQVEsSUFBSSxJQUFJO2FBQ2pDLENBQUMsQ0FBQyxDQUFBO1FBRUgsTUFBTSxJQUFJLENBQUMsOEJBQThCLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRyxhQUFhLENBQUMsQ0FBQyxDQUFTLENBQUMsRUFBRSxFQUFFLGFBQWEsRUFBRSxlQUFlLEVBQUUsQ0FBQyxDQUFDLENBQUE7UUFFakgsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsaUNBQWlDLEVBQUU7WUFDbkQsRUFBRSxFQUFHLE9BQWUsRUFBRSxFQUFFO1lBQ3hCLFFBQVE7WUFDUixlQUFlO1lBQ2YsSUFBSTtZQUNKLGVBQWU7WUFDZixlQUFlO1NBQ2hCLENBQUMsQ0FBQTtRQUVGLE9BQU8sT0FBTyxDQUFBO0lBQ2hCLENBQUM7SUFFRCxLQUFLLENBQUMsWUFBWSxDQUFDLEtBQXdCO1FBQ3pDLE1BQU0sRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxLQUFLLENBQUE7UUFDdkQsSUFBSSxNQUFNLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDaEIsTUFBTSxJQUFJLEtBQUssQ0FBQyxtQ0FBbUMsQ0FBQyxDQUFBO1FBQ3RELENBQUM7UUFFRCxNQUFNLFFBQVEsR0FBRyxNQUFNLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxFQUFFLFFBQVEsRUFBRSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQTtRQUM3RSxNQUFNLGVBQWUsR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFFLFFBQVEsQ0FBQyxDQUFDLENBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtRQUN0RSxNQUFNLFdBQVcsR0FBRyxlQUFlLEdBQUcsTUFBTSxDQUFBO1FBRTVDLElBQUksUUFBUSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUMxQixNQUFNLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUE7UUFDNUUsQ0FBQzthQUFNLENBQUM7WUFDTixNQUFNLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFHLFFBQVEsQ0FBQyxDQUFDLENBQVMsQ0FBQyxFQUFFLEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQTtRQUMvRixDQUFDO1FBRUQsdUVBQXVFO1FBQ3ZFLElBQUksTUFBTSxLQUFLLGlCQUFpQixFQUFFLENBQUM7WUFDakMsTUFBTSxhQUFhLEdBQUcsTUFBTSxJQUFJLENBQUMsNEJBQTRCLENBQUMsRUFBRSxRQUFRLEVBQUUsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUE7WUFDdkYsTUFBTSxrQkFBa0IsR0FBRyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFFLGFBQWEsQ0FBQyxDQUFDLENBQVMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtZQUN6RixNQUFNLGNBQWMsR0FBRyxrQkFBa0IsR0FBRyxNQUFNLENBQUE7WUFFbEQsSUFBSSxhQUFhLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO2dCQUMvQixNQUFNLElBQUksQ0FBQyw4QkFBOEIsQ0FBQyxDQUFDLEVBQUUsUUFBUSxFQUFFLGFBQWEsRUFBRSxjQUFjLEVBQUUsQ0FBQyxDQUFDLENBQUE7WUFDMUYsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLE1BQU0sSUFBSSxDQUFDLDhCQUE4QixDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUcsYUFBYSxDQUFDLENBQUMsQ0FBUyxDQUFDLEVBQUUsRUFBRSxhQUFhLEVBQUUsY0FBYyxFQUFFLENBQUMsQ0FBQyxDQUFBO1lBQ2xILENBQUM7WUFFRCxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyw0REFBNEQsRUFBRTtnQkFDOUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxjQUFjO2FBQ2pDLENBQUMsQ0FBQTtRQUNKLENBQUM7UUFFRCxNQUFNLENBQUMsRUFBRSxDQUFDLEdBQUcsTUFBTSxJQUFJLENBQUMsbUNBQW1DLENBQUMsQ0FBQztnQkFDM0QsUUFBUTtnQkFDUixXQUFXO2dCQUNYLGdCQUFnQixFQUFFLFlBQStCO2dCQUNqRCxVQUFVLEVBQUUsSUFBaUI7Z0JBQzdCLE1BQU0sRUFBRSxNQUFNLElBQUksSUFBSTtnQkFDdEIsTUFBTTtnQkFDTixlQUFlLEVBQUUsZUFBZTtnQkFDaEMsZUFBZSxFQUFFLFdBQVc7Z0JBQzVCLGNBQWMsRUFBRSxDQUFDO2dCQUNqQixpQkFBaUIsRUFBRSxDQUFDO2dCQUNwQixRQUFRLEVBQUUsSUFBSTtnQkFDZCxZQUFZLEVBQUUsSUFBSTtnQkFDbEIsTUFBTSxFQUFFLElBQUk7Z0JBQ1osU0FBUyxFQUFFLElBQUk7Z0JBQ2YsSUFBSSxFQUFFLElBQUksSUFBSSxFQUFFO2dCQUNoQixRQUFRLEVBQUUsSUFBSTthQUNmLENBQUMsQ0FBQyxDQUFBO1FBRUgsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsaUNBQWlDLEVBQUUsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxDQUFDLENBQUE7UUFDdkYsT0FBTyxFQUFFLENBQUE7SUFDWCxDQUFDO0lBRUQsS0FBSyxDQUFDLFVBQVUsQ0FBQyxLQUFzQjtRQUNyQyxNQUFNLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsR0FBRyxLQUFLLENBQUE7UUFDL0MsSUFBSSxNQUFNLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDaEIsTUFBTSxJQUFJLEtBQUssQ0FBQywyQ0FBMkMsQ0FBQyxDQUFBO1FBQzlELENBQUM7UUFFRCxNQUFNLFFBQVEsR0FBRyxNQUFNLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxFQUFFLFFBQVEsRUFBRSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQTtRQUM3RSxNQUFNLGVBQWUsR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFFLFFBQVEsQ0FBQyxDQUFDLENBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtRQUN0RSxNQUFNLFdBQVcsR0FBRyxlQUFlLEdBQUcsTUFBTSxDQUFBO1FBRTVDLElBQUksUUFBUSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUMxQixNQUFNLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUE7UUFDNUUsQ0FBQzthQUFNLENBQUM7WUFDTixNQUFNLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFHLFFBQVEsQ0FBQyxDQUFDLENBQVMsQ0FBQyxFQUFFLEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQTtRQUMvRixDQUFDO1FBRUQsTUFBTSxDQUFDLEVBQUUsQ0FBQyxHQUFHLE1BQU0sSUFBSSxDQUFDLG1DQUFtQyxDQUFDLENBQUM7Z0JBQzNELFFBQVE7Z0JBQ1IsV0FBVztnQkFDWCxnQkFBZ0IsRUFBRSxZQUErQjtnQkFDakQsVUFBVSxFQUFFLElBQWlCO2dCQUM3QixNQUFNLEVBQUUsSUFBSTtnQkFDWixNQUFNO2dCQUNOLGVBQWUsRUFBRSxlQUFlO2dCQUNoQyxlQUFlLEVBQUUsV0FBVztnQkFDNUIsY0FBYyxFQUFFLE1BQU07Z0JBQ3RCLGlCQUFpQixFQUFFLENBQUM7Z0JBQ3BCLFFBQVEsRUFBRSxLQUFLLENBQUMsUUFBUSxJQUFJLElBQUk7Z0JBQ2hDLFlBQVksRUFBRSxLQUFLLENBQUMsWUFBWSxJQUFJLElBQUk7Z0JBQ3hDLE1BQU0sRUFBRSxLQUFLLENBQUMsTUFBTSxJQUFJLElBQUk7Z0JBQzVCLFNBQVMsRUFBRSxLQUFLLENBQUMsU0FBUyxJQUFJLElBQUk7Z0JBQ2xDLElBQUksRUFBRSxJQUFJLElBQUksRUFBRTtnQkFDaEIsUUFBUSxFQUFFLEtBQUssQ0FBQyxRQUFRLElBQUksSUFBSTthQUNqQyxDQUFDLENBQUMsQ0FBQTtRQUVILElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLGlDQUFpQyxFQUFFLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUE7UUFDcEcsT0FBTyxFQUFFLENBQUE7SUFDWCxDQUFDO0lBRUQsS0FBSyxDQUFDLGVBQWUsQ0FBQyxRQUFnQjtRQUNwQyxNQUFNLElBQUksR0FBRyxNQUFNLElBQUksQ0FBQyw0QkFBNEIsQ0FBQyxFQUFFLFFBQVEsRUFBRSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQTtRQUM5RSxPQUFPLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUE7SUFDeEIsQ0FBQztJQUVELEtBQUssQ0FBQyx1QkFBdUIsQ0FBQyxLQUEwQjtRQUN0RCxNQUFNLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxjQUFjLEdBQUcsQ0FBQyxFQUFFLEdBQUcsS0FBSyxDQUFBO1FBRXBELE1BQU0sS0FBSyxHQUFHLElBQUksSUFBSSxDQUFDLEdBQUcsSUFBSSxnQkFBZ0IsQ0FBQyxDQUFBO1FBQy9DLE1BQU0sR0FBRyxHQUFHLElBQUksSUFBSSxDQUFDLEdBQUcsSUFBSSxnQkFBZ0IsQ0FBQyxDQUFBO1FBQzdDLE1BQU0sVUFBVSxHQUFHLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLENBQUE7UUFFN0MsTUFBTSxJQUFJLEdBQUcsTUFBTSxJQUFJLENBQUMsaUNBQWlDLENBQ3ZELEVBQUUsUUFBUSxFQUFFLENBQUMsUUFBUSxDQUFDLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxFQUNoRCxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBUyxFQUFFLENBQ3BELENBQUE7UUFFRCxNQUFNLFNBQVMsR0FBRyxNQUFNLElBQUksQ0FBQyx3QkFBd0IsQ0FDbkQsRUFBRSxRQUFRLEVBQUUsQ0FBQyxRQUFRLENBQUMsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLEVBQ2hELEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFTLEVBQUUsQ0FDcEQsQ0FBQTtRQUVELE1BQU0sWUFBWSxHQUFHLE1BQU0sSUFBSSxDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUMsQ0FBQTtRQUV6RCxNQUFNLE9BQU8sR0FBRyxJQUFhLENBQUE7UUFDN0IsTUFBTSxZQUFZLEdBQUcsU0FBa0IsQ0FBQTtRQUV2QyxNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLEtBQUssTUFBTSxDQUFDLENBQUE7UUFDakUsTUFBTSxPQUFPLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixLQUFLLE9BQU8sQ0FBQyxDQUFBO1FBRW5FLE1BQU0sZUFBZSxHQUFXLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO1FBQzFELE1BQU0sZUFBZSxHQUFrQixPQUFPLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQTtRQUV0RSxNQUFNLGFBQWEsR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLEtBQUssWUFBWSxDQUFDLENBQUE7UUFDaEYsTUFBTSxhQUFhLEdBQUcsYUFBYTthQUNoQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxVQUFVLEtBQUssSUFBSSxDQUFDO2FBQ3BDLE1BQU0sQ0FBQyxDQUFDLEdBQVcsRUFBRSxDQUFNLEVBQUUsRUFBRSxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFBO1FBQ3JELE1BQU0sY0FBYyxHQUFHLGFBQWE7YUFDakMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsVUFBVSxLQUFLLElBQUksQ0FBQzthQUNwQyxNQUFNLENBQUMsQ0FBQyxHQUFXLEVBQUUsQ0FBTSxFQUFFLEVBQUUsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQTtRQUVyRCxNQUFNLGtCQUFrQixHQUFHLFlBQVk7YUFDcEMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLElBQUksQ0FBQzthQUM5QixNQUFNLENBQUMsQ0FBQyxHQUFXLEVBQUUsQ0FBTSxFQUFFLEVBQUUsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLGVBQWUsRUFBRSxDQUFDLENBQUMsQ0FBQTtRQUM5RCxNQUFNLG1CQUFtQixHQUFHLFlBQVk7YUFDckMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLElBQUksQ0FBQzthQUM5QixNQUFNLENBQUMsQ0FBQyxHQUFXLEVBQUUsQ0FBTSxFQUFFLEVBQUUsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLGVBQWUsRUFBRSxDQUFDLENBQUMsQ0FBQTtRQUU5RCxNQUFNLHdCQUF3QixHQUM1QixlQUFlLEdBQUcsY0FBYyxHQUFHLGFBQWEsR0FBRyxjQUFjLEdBQUcsa0JBQWtCLEdBQUcsbUJBQW1CLENBQUE7UUFFOUcsTUFBTSxRQUFRLEdBQUcsZUFBZSxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsZUFBZSxHQUFHLHdCQUF3QixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUE7UUFDN0YsTUFBTSxXQUFXLEdBQUcsUUFBUSxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsUUFBUSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFBO1FBRTdELE1BQU0sVUFBVSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQy9CLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLEtBQUssTUFBTSxJQUFJLENBQUMsQ0FBQyxnQkFBZ0IsS0FBSyxPQUFPLENBQ3ZFLENBQUE7UUFFRCxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxnREFBZ0QsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFBO1FBRXZGLE9BQU87WUFDTCxJQUFJO1lBQ0osUUFBUTtZQUNSLGVBQWU7WUFDZixjQUFjO1lBQ2Qsa0JBQWtCO1lBQ2xCLG1CQUFtQjtZQUNuQixhQUFhO1lBQ2IsY0FBYztZQUNkLHdCQUF3QjtZQUN4QixlQUFlO1lBQ2YsV0FBVyxFQUFFLFlBQVksQ0FBQyxDQUFDLENBQUUsWUFBb0IsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLElBQUk7WUFDdEUsUUFBUTtZQUNSLFdBQVc7WUFDWCxTQUFTLEVBQUUsWUFBWTtZQUN2QixVQUFVO1NBQ1gsQ0FBQTtJQUNILENBQUM7SUFFRCxLQUFLLENBQUMsWUFBWSxDQUFDLE9BQXdCO1FBQ3pDLE1BQU0sU0FBUyxHQUE0QixFQUFFLENBQUE7UUFDN0MsSUFBSSxPQUFPLENBQUMsUUFBUTtZQUFFLFNBQVMsQ0FBQyxRQUFRLEdBQUcsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUE7UUFDN0QsU0FBUyxDQUFDLGdCQUFnQixHQUFHLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFBO1FBRTlDLE1BQU0sSUFBSSxHQUFHLE1BQU0sSUFBSSxDQUFDLGlDQUFpQyxDQUFDLFNBQVMsRUFBRTtZQUNuRSxJQUFJLEVBQUUsT0FBTyxDQUFDLEtBQUssSUFBSSxHQUFHO1lBQzFCLEtBQUssRUFBRSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQVM7U0FDckMsQ0FBQyxDQUFBO1FBQ0YsT0FBTyxJQUFJLENBQUE7SUFDYixDQUFDO0NBQ0Y7QUFFRCxrQkFBZSxnQkFBZ0IsQ0FBQSJ9
|
|
305
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY21zLW1vZHVsZS1zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL21vZHVsZXMvY21zL3NlcnZpY2VzL2Ntcy1tb2R1bGUtc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLHFEQUF5RDtBQUN6RCw4Q0FBbUU7QUFDbkUsMEVBQWdEO0FBQ2hELGtGQUF3RDtBQUN4RCxzRUFBNEM7QUFDNUMsOEZBQW1FO0FBZ0duRSxNQUFNLGdCQUFpQixTQUFRLElBQUEscUJBQWEsRUFBQztJQUMzQyxtQkFBbUIsRUFBRSxzQkFBVztJQUNoQyx1QkFBdUIsRUFBRSwwQkFBZTtJQUN4QyxpQkFBaUIsRUFBRSxvQkFBUztJQUM1Qiw0QkFBNEIsRUFBRSxnQ0FBb0I7Q0FDbkQsQ0FBQztJQUdBLFlBQVksR0FBRyxJQUFXO1FBQ3hCLEtBQUssQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFBO1FBQ2QsTUFBTSxTQUFTLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUF3QixDQUFBO1FBQ3hELElBQUksQ0FBQyxPQUFPLEdBQUcsU0FBUyxDQUFDLE1BQU0sSUFBSSxJQUFBLHVCQUFnQixHQUFFLENBQUE7UUFDckQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsb0NBQW9DLENBQUMsQ0FBQTtJQUMxRCxDQUFDO0lBRUQsS0FBSyxDQUFDLFFBQVEsQ0FBQyxLQUFvQjtRQUNqQyxNQUFNLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxjQUFjLEVBQUUsR0FBRyxLQUFLLENBQUE7UUFDdkQsSUFBSSxjQUFjLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDdkIsTUFBTSxJQUFJLEtBQUssQ0FBQyw0Q0FBNEMsQ0FBQyxDQUFBO1FBQy9ELENBQUM7UUFFRCxNQUFNLFFBQVEsR0FBRyxNQUFNLElBQUksQ0FBQyw0QkFBNEIsQ0FBQyxFQUFFLFFBQVEsRUFBRSxDQUFDLFFBQVEs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
|
package/package.json
CHANGED
|
@@ -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,
|
|
@@ -43,11 +43,18 @@ export const GET = async (req: AuthenticatedMedusaRequest, res: MedusaResponse)
|
|
|
43
43
|
for (const key of DIRECT) {
|
|
44
44
|
if (q[key] !== undefined && q[key] !== "") filters[key] = q[key]
|
|
45
45
|
}
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
if (q.q) {
|
|
46
|
+
// handover_id / invoice_number filtering (invoice_number ilike takes highest precedence)
|
|
47
|
+
if (q.invoice_number) {
|
|
48
|
+
filters.handover_id = { $ilike: `%${q.invoice_number}%` }
|
|
49
|
+
} else if (q.q) {
|
|
50
50
|
filters.handover_id = { $ilike: `%${q.q}%` }
|
|
51
|
+
} else if (q.handover_id) {
|
|
52
|
+
filters.handover_id = q.handover_id
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
// customer_id: stored in metadata JSONB field
|
|
56
|
+
if (q.customer_id) {
|
|
57
|
+
filters.metadata = { customer_id: q.customer_id }
|
|
51
58
|
}
|
|
52
59
|
|
|
53
60
|
// Date range filters
|
|
@@ -39,7 +39,7 @@ describe("GET /petty-cash", () => {
|
|
|
39
39
|
|
|
40
40
|
expect(service.listAndCountRetailosPettyCashTransactions).toHaveBeenCalledWith(
|
|
41
41
|
expect.objectContaining({ transaction_type: ["open", "close", "petty_cash"] }),
|
|
42
|
-
expect.objectContaining({ take:
|
|
42
|
+
expect.objectContaining({ take: 20 })
|
|
43
43
|
)
|
|
44
44
|
expect(res.status).toHaveBeenCalledWith(200)
|
|
45
45
|
expect(res.json).toHaveBeenCalledWith({
|
|
@@ -60,7 +60,7 @@ describe("GET /petty-cash", () => {
|
|
|
60
60
|
await GET(req as any, res as any)
|
|
61
61
|
|
|
62
62
|
expect(service.listAndCountRetailosPettyCashTransactions).toHaveBeenCalledWith(
|
|
63
|
-
expect.objectContaining({ store_id:
|
|
63
|
+
expect.objectContaining({ store_id: "s1", transaction_type: ["open", "close", "petty_cash"] }),
|
|
64
64
|
expect.any(Object)
|
|
65
65
|
)
|
|
66
66
|
})
|
|
@@ -25,14 +25,69 @@ export const GET = async (req: AuthenticatedMedusaRequest, res: MedusaResponse)
|
|
|
25
25
|
const q = req.query as Record<string, any>
|
|
26
26
|
|
|
27
27
|
const filters: Record<string, unknown> = {}
|
|
28
|
-
if (q.store_id) filters.store_id = [q.store_id]
|
|
29
28
|
|
|
30
|
-
|
|
29
|
+
if (q.store_id) filters.store_id = q.store_id
|
|
30
|
+
if (q.entry_type) filters.entry_type = q.entry_type
|
|
31
|
+
|
|
32
|
+
// employee_name: resolve IDs by splitting on spaces and querying first/last name separately
|
|
33
|
+
// (MedusaService does not support $or at the filter top-level)
|
|
34
|
+
if (q.employee_name) {
|
|
35
|
+
try {
|
|
36
|
+
const employeeService = (req as any).scope.resolve(EMPLOYEE_MODULE)
|
|
37
|
+
const words = (q.employee_name as string).trim().toLowerCase().split(/\s+/).filter(Boolean)
|
|
38
|
+
let matchedIds: string[] | null = null
|
|
39
|
+
for (const word of words) {
|
|
40
|
+
const nameQ = `%${word}%`
|
|
41
|
+
const [byFirst, byLast] = await Promise.all([
|
|
42
|
+
(employeeService.listEmployees({ first_name: { $ilike: nameQ } }, { select: ["id"] }) as Promise<any[]>).catch(() => [] as any[]),
|
|
43
|
+
(employeeService.listEmployees({ last_name: { $ilike: nameQ } }, { select: ["id"] }) as Promise<any[]>).catch(() => [] as any[]),
|
|
44
|
+
])
|
|
45
|
+
const wordIds = [...new Set([...byFirst, ...byLast].map((e: any) => e.id))]
|
|
46
|
+
matchedIds = matchedIds === null ? wordIds : matchedIds.filter((id) => new Set(wordIds).has(id))
|
|
47
|
+
}
|
|
48
|
+
const finalIds = matchedIds ?? []
|
|
49
|
+
filters.employee_id = { $in: finalIds.length > 0 ? finalIds : [""] }
|
|
50
|
+
} catch {
|
|
51
|
+
// employee module unavailable — skip filter
|
|
52
|
+
}
|
|
53
|
+
} else if (q.employee_id) {
|
|
54
|
+
filters.employee_id = q.employee_id
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
// transaction_type: defaults to all; pass "petty_cash" to filter to only expense entries
|
|
58
|
+
filters.transaction_type = q.transaction_type
|
|
59
|
+
? q.transaction_type
|
|
60
|
+
: ["open", "close", "petty_cash"]
|
|
61
|
+
|
|
62
|
+
// q: full-text search on reason
|
|
63
|
+
if (q.q) filters.reason = { $ilike: `%${q.q}%` }
|
|
64
|
+
|
|
65
|
+
if (q.category) filters.category = { $ilike: `%${q.category}%` }
|
|
66
|
+
|
|
67
|
+
// Amount range
|
|
68
|
+
if (q.amount_gte || q.amount_lte) {
|
|
69
|
+
const range: Record<string, number> = {}
|
|
70
|
+
if (q.amount_gte) range.$gte = Number(q.amount_gte)
|
|
71
|
+
if (q.amount_lte) range.$lte = Number(q.amount_lte)
|
|
72
|
+
filters.amount = range
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
const limit = q.limit ? Math.min(parseInt(q.limit as string, 10), 500) : 20
|
|
31
76
|
const offset = q.offset ? parseInt(q.offset as string, 10) : 0
|
|
32
77
|
|
|
78
|
+
// Ordering: "field" = ASC, "-field" = DESC
|
|
79
|
+
const SORTABLE = new Set(["created_at", "updated_at", "amount"])
|
|
80
|
+
let order: Record<string, "ASC" | "DESC"> = { created_at: "DESC" }
|
|
81
|
+
if (q.order) {
|
|
82
|
+
const raw = q.order as string
|
|
83
|
+
const isDesc = raw.startsWith("-")
|
|
84
|
+
const field = isDesc ? raw.slice(1) : raw
|
|
85
|
+
if (SORTABLE.has(field)) order = { [field]: isDesc ? "DESC" : "ASC" }
|
|
86
|
+
}
|
|
87
|
+
|
|
33
88
|
const [transactions, count] = await service.listAndCountRetailosPettyCashTransactions(
|
|
34
|
-
|
|
35
|
-
{ take: limit, skip: offset, order
|
|
89
|
+
filters,
|
|
90
|
+
{ take: limit, skip: offset, order } as any
|
|
36
91
|
)
|
|
37
92
|
|
|
38
93
|
// Enrich with employee data via bulk lookup
|
|
@@ -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
|
|