@things-factory/warehouse-base 3.6.39 → 3.6.41
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist-server/graphql/resolvers/location/location-occupancies.js +15 -28
- package/dist-server/graphql/resolvers/location/location-occupancies.js.map +1 -1
- package/dist-server/graphql/resolvers/movement/inbound-movements-counter.js +5 -7
- package/dist-server/graphql/resolvers/movement/inbound-movements-counter.js.map +1 -1
- package/dist-server/graphql/resolvers/movement/outbound-movements-counter.js +5 -7
- package/dist-server/graphql/resolvers/movement/outbound-movements-counter.js.map +1 -1
- package/dist-server/graphql/resolvers/movement/weekly-movements-counter.js +14 -32
- package/dist-server/graphql/resolvers/movement/weekly-movements-counter.js.map +1 -1
- package/dist-server/graphql/types/location/index.js +1 -1
- package/package.json +2 -2
- package/server/graphql/resolvers/location/location-occupancies.ts +19 -31
- package/server/graphql/resolvers/movement/inbound-movements-counter.ts +8 -7
- package/server/graphql/resolvers/movement/outbound-movements-counter.ts +8 -7
- package/server/graphql/resolvers/movement/weekly-movements-counter.ts +21 -31
- package/server/graphql/types/location/index.ts +1 -1
|
@@ -4,38 +4,25 @@ exports.locationOccupanciesResolver = void 0;
|
|
|
4
4
|
const typeorm_1 = require("typeorm");
|
|
5
5
|
const entities_1 = require("../../../entities");
|
|
6
6
|
exports.locationOccupanciesResolver = {
|
|
7
|
-
async locationOccupancies(_, { warehouse }, context) {
|
|
7
|
+
async locationOccupancies(_, { warehouse, types }, context) {
|
|
8
|
+
var _a, _b;
|
|
8
9
|
const { domain } = context.state;
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
where: {
|
|
16
|
-
domain: domain,
|
|
17
|
-
name: warehouse
|
|
18
|
-
}
|
|
19
|
-
});
|
|
20
|
-
if (foundWarehouse)
|
|
21
|
-
where['warehouse'] = foundWarehouse.id;
|
|
22
|
-
else
|
|
23
|
-
throw new Error(`${warehouse} was not found!`);
|
|
24
|
-
}
|
|
25
|
-
const locations = await (0, typeorm_1.getRepository)(entities_1.Location).find({
|
|
26
|
-
where,
|
|
27
|
-
relations: ['domain', 'warehouse', 'creator', 'updater']
|
|
28
|
-
});
|
|
29
|
-
let occupied = 0;
|
|
30
|
-
locations.forEach(location => {
|
|
31
|
-
if (location.status === 'OCCUPIED')
|
|
32
|
-
occupied += 1;
|
|
10
|
+
const foundWarehouse = await (0, typeorm_1.getRepository)(entities_1.Warehouse).findOne({
|
|
11
|
+
where: {
|
|
12
|
+
domain,
|
|
13
|
+
name: warehouse
|
|
14
|
+
},
|
|
15
|
+
relations: ['locations']
|
|
33
16
|
});
|
|
17
|
+
if (!foundWarehouse)
|
|
18
|
+
throw new Error(`${warehouse} was not found!`);
|
|
19
|
+
const locations = types && types.length
|
|
20
|
+
? (_a = foundWarehouse === null || foundWarehouse === void 0 ? void 0 : foundWarehouse.locations) === null || _a === void 0 ? void 0 : _a.filter((location) => types.indexOf(location.type) !== -1)
|
|
21
|
+
: foundWarehouse === null || foundWarehouse === void 0 ? void 0 : foundWarehouse.locations;
|
|
34
22
|
const total = locations.length;
|
|
23
|
+
const occupied = ((_b = locations.filter((location) => location.status === 'OCCUPIED')) === null || _b === void 0 ? void 0 : _b.length) || 0;
|
|
35
24
|
const empty = total - occupied;
|
|
36
|
-
|
|
37
|
-
if (occupied !== 0)
|
|
38
|
-
percentage = Math.round((occupied / total) * 100);
|
|
25
|
+
const percentage = occupied > 0 ? Math.round((occupied / total) * 100) : 0;
|
|
39
26
|
return { total, occupied, empty, percentage };
|
|
40
27
|
}
|
|
41
28
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"location-occupancies.js","sourceRoot":"","sources":["../../../../server/graphql/resolvers/location/location-occupancies.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"location-occupancies.js","sourceRoot":"","sources":["../../../../server/graphql/resolvers/location/location-occupancies.ts"],"names":[],"mappings":";;;AAAA,qCAAuC;AAIvC,gDAAuD;AAE1C,QAAA,2BAA2B,GAAG;IACzC,KAAK,CAAC,mBAAmB,CAAC,CAAM,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,OAAY;;QAClE,MAAM,EAAE,MAAM,EAAE,GAAuB,OAAO,CAAC,KAAK,CAAA;QAEpD,MAAM,cAAc,GAAc,MAAM,IAAA,uBAAa,EAAC,oBAAS,CAAC,CAAC,OAAO,CAAC;YACvE,KAAK,EAAE;gBACL,MAAM;gBACN,IAAI,EAAE,SAAS;aAChB;YACD,SAAS,EAAE,CAAC,WAAW,CAAC;SACzB,CAAC,CAAA;QAEF,IAAI,CAAC,cAAc;YAAE,MAAM,IAAI,KAAK,CAAC,GAAG,SAAS,iBAAiB,CAAC,CAAA;QAEnE,MAAM,SAAS,GACb,KAAK,IAAI,KAAK,CAAC,MAAM;YACnB,CAAC,CAAC,MAAA,cAAc,aAAd,cAAc,uBAAd,cAAc,CAAE,SAAS,0CAAE,MAAM,CAAC,CAAC,QAAkB,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;YAChG,CAAC,CAAC,cAAc,aAAd,cAAc,uBAAd,cAAc,CAAE,SAAS,CAAA;QAE/B,MAAM,KAAK,GAAW,SAAS,CAAC,MAAM,CAAA;QACtC,MAAM,QAAQ,GAAW,CAAA,MAAA,SAAS,CAAC,MAAM,CAAC,CAAC,QAAkB,EAAE,EAAE,CAAC,QAAQ,CAAC,MAAM,KAAK,UAAU,CAAC,0CAAE,MAAM,KAAI,CAAC,CAAA;QAC9G,MAAM,KAAK,GAAW,KAAK,GAAG,QAAQ,CAAA;QACtC,MAAM,UAAU,GAAW,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,QAAQ,GAAG,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;QAElF,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,CAAA;IAC/C,CAAC;CACF,CAAA"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.inboundMovementsCounterResolver = void 0;
|
|
4
|
-
const biz_base_1 = require("@things-factory/biz-base");
|
|
5
4
|
const typeorm_1 = require("typeorm");
|
|
5
|
+
const biz_base_1 = require("@things-factory/biz-base");
|
|
6
6
|
const entities_1 = require("../../../entities");
|
|
7
7
|
exports.inboundMovementsCounterResolver = {
|
|
8
8
|
async inboundMovementsCounter(_, params, context) {
|
|
@@ -46,12 +46,10 @@ exports.inboundMovementsCounterResolver = {
|
|
|
46
46
|
compareDate.setHours(0);
|
|
47
47
|
compareDate.setMinutes(0);
|
|
48
48
|
compareDate.setSeconds(0);
|
|
49
|
-
items = items.map(item => {
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
}
|
|
54
|
-
}
|
|
49
|
+
items = items.map((item) => {
|
|
50
|
+
var _a;
|
|
51
|
+
item.count =
|
|
52
|
+
((_a = counter.find(ctr => ctr.inbound_date.toLocaleDateString() === compareDate.toLocaleDateString())) === null || _a === void 0 ? void 0 : _a.count) || 0;
|
|
55
53
|
compareDate.setDate(compareDate.getDate() + 1);
|
|
56
54
|
return item;
|
|
57
55
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inbound-movements-counter.js","sourceRoot":"","sources":["../../../../server/graphql/resolvers/movement/inbound-movements-counter.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"inbound-movements-counter.js","sourceRoot":"","sources":["../../../../server/graphql/resolvers/movement/inbound-movements-counter.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.outboundMovementsCounterResolver = void 0;
|
|
4
|
-
const biz_base_1 = require("@things-factory/biz-base");
|
|
5
4
|
const typeorm_1 = require("typeorm");
|
|
5
|
+
const biz_base_1 = require("@things-factory/biz-base");
|
|
6
6
|
const entities_1 = require("../../../entities");
|
|
7
7
|
exports.outboundMovementsCounterResolver = {
|
|
8
8
|
async outboundMovementsCounter(_, { month, year }, context) {
|
|
@@ -48,12 +48,10 @@ exports.outboundMovementsCounterResolver = {
|
|
|
48
48
|
compareDate.setHours(0);
|
|
49
49
|
compareDate.setMinutes(0);
|
|
50
50
|
compareDate.setSeconds(0);
|
|
51
|
-
items = items.map(item => {
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
}
|
|
56
|
-
}
|
|
51
|
+
items = items.map((item) => {
|
|
52
|
+
var _a;
|
|
53
|
+
item.count =
|
|
54
|
+
((_a = counter.find(ctr => ctr.outbound_date.toLocaleDateString() === compareDate.toLocaleDateString())) === null || _a === void 0 ? void 0 : _a.count) || 0;
|
|
57
55
|
compareDate.setDate(compareDate.getDate() + 1);
|
|
58
56
|
return item;
|
|
59
57
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"outbound-movements-counter.js","sourceRoot":"","sources":["../../../../server/graphql/resolvers/movement/outbound-movements-counter.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"outbound-movements-counter.js","sourceRoot":"","sources":["../../../../server/graphql/resolvers/movement/outbound-movements-counter.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.weeklyMovementsCounterResolver = void 0;
|
|
4
|
-
const biz_base_1 = require("@things-factory/biz-base");
|
|
5
4
|
const typeorm_1 = require("typeorm");
|
|
5
|
+
const biz_base_1 = require("@things-factory/biz-base");
|
|
6
6
|
const entities_1 = require("../../../entities");
|
|
7
7
|
exports.weeklyMovementsCounterResolver = {
|
|
8
8
|
async weeklyMovementsCounter(_, { month, year }, context) {
|
|
@@ -51,41 +51,23 @@ exports.weeklyMovementsCounterResolver = {
|
|
|
51
51
|
) src
|
|
52
52
|
group by movement_date
|
|
53
53
|
`);
|
|
54
|
-
// pre-set the movements accordingly with initial value of in/outbound = 0
|
|
55
54
|
let movements = [
|
|
56
|
-
{ week: 'Week 01',
|
|
57
|
-
{ week: 'Week 02',
|
|
58
|
-
{ week: 'Week 03',
|
|
59
|
-
{ week: 'Week 04',
|
|
55
|
+
Object.assign({ week: 'Week 01' }, getMovementByWeek(data, [0, 7])),
|
|
56
|
+
Object.assign({ week: 'Week 02' }, getMovementByWeek(data, [8, 14])),
|
|
57
|
+
Object.assign({ week: 'Week 03' }, getMovementByWeek(data, [15, 21])),
|
|
58
|
+
Object.assign({ week: 'Week 04' }, getMovementByWeek(data, [21, 31]))
|
|
60
59
|
];
|
|
61
|
-
// loop through all date that were retrieved from database
|
|
62
|
-
for (let i = 0; i < data.length; i++) {
|
|
63
|
-
// asign data based on week number
|
|
64
|
-
movements = movements.map(movement => {
|
|
65
|
-
const compareDate = data[i].movement_date;
|
|
66
|
-
const inboundCount = parseInt(data[i].inbound_count);
|
|
67
|
-
const outboundCount = parseInt(data[i].outbound_count);
|
|
68
|
-
if (movement.week === 'Week 01' && compareDate.getDate() > 0 && compareDate.getDate() <= 7) {
|
|
69
|
-
movement.inbound += inboundCount;
|
|
70
|
-
movement.outbound += outboundCount;
|
|
71
|
-
}
|
|
72
|
-
else if (movement.week === 'Week 02' && compareDate.getDate() > 7 && compareDate.getDate() <= 14) {
|
|
73
|
-
movement.inbound += inboundCount;
|
|
74
|
-
movement.outbound += outboundCount;
|
|
75
|
-
}
|
|
76
|
-
else if (movement.week === 'Week 03' && compareDate.getDate() > 14 && compareDate.getDate() <= 21) {
|
|
77
|
-
movement.inbound += inboundCount;
|
|
78
|
-
movement.outbound += outboundCount;
|
|
79
|
-
}
|
|
80
|
-
else if (movement.week === 'Week 04' && compareDate.getDate() > 21) {
|
|
81
|
-
movement.inbound += inboundCount;
|
|
82
|
-
movement.outbound += outboundCount;
|
|
83
|
-
}
|
|
84
|
-
return movement;
|
|
85
|
-
});
|
|
86
|
-
}
|
|
87
60
|
// return total 4 weeks of in/outbound movements for a specific month
|
|
88
61
|
return movements;
|
|
89
62
|
}
|
|
90
63
|
};
|
|
64
|
+
function getMovementByWeek(data, range) {
|
|
65
|
+
return data
|
|
66
|
+
.filter(item => item.movement_date.getDate() > range[0] && item.movement_date.getDate() <= range[1])
|
|
67
|
+
.reduce((inout, curr) => {
|
|
68
|
+
inout.inbound += Number(curr.inbound_count);
|
|
69
|
+
inout.outbound += Number(curr.outbound_count);
|
|
70
|
+
return inout;
|
|
71
|
+
}, { inbound: 0, outbound: 0 });
|
|
72
|
+
}
|
|
91
73
|
//# sourceMappingURL=weekly-movements-counter.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"weekly-movements-counter.js","sourceRoot":"","sources":["../../../../server/graphql/resolvers/movement/weekly-movements-counter.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"weekly-movements-counter.js","sourceRoot":"","sources":["../../../../server/graphql/resolvers/movement/weekly-movements-counter.ts"],"names":[],"mappings":"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"}
|
|
@@ -36,7 +36,7 @@ exports.Mutation = `
|
|
|
36
36
|
`;
|
|
37
37
|
exports.Query = `
|
|
38
38
|
locations(filters: [Filter], pagination: Pagination, sortings: [Sorting]): LocationList @privilege(category: "warehouse", privilege: "query")
|
|
39
|
-
locationOccupancies(warehouse: String): LocationOccupancy @privilege(category: "warehouse", privilege: "query")
|
|
39
|
+
locationOccupancies(warehouse: String!, types: [String]): LocationOccupancy @privilege(category: "warehouse", privilege: "query")
|
|
40
40
|
location(name: String!): Location @privilege(category: "warehouse", privilege: "query")
|
|
41
41
|
locationByName(name: String!): Location @privilege(category: "warehouse", privilege: "query")
|
|
42
42
|
locationsByGroup(filters: [Filter], pagination: Pagination, sortings: [Sorting]): LocationList @privilege(category: "warehouse", privilege: "query")
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@things-factory/warehouse-base",
|
|
3
|
-
"version": "3.6.
|
|
3
|
+
"version": "3.6.41",
|
|
4
4
|
"main": "dist-server/index.js",
|
|
5
5
|
"browser": "client/index.js",
|
|
6
6
|
"things-factory": true,
|
|
@@ -31,5 +31,5 @@
|
|
|
31
31
|
"@things-factory/product-base": "^3.6.38",
|
|
32
32
|
"@things-factory/setting-base": "^3.6.38"
|
|
33
33
|
},
|
|
34
|
-
"gitHead": "
|
|
34
|
+
"gitHead": "d9b00f6d798d14b2e8292059bad88d6d7d066d2f"
|
|
35
35
|
}
|
|
@@ -1,44 +1,32 @@
|
|
|
1
|
-
import { Domain } from '@things-factory/shell'
|
|
2
1
|
import { getRepository } from 'typeorm'
|
|
2
|
+
|
|
3
|
+
import { Domain } from '@things-factory/shell'
|
|
4
|
+
|
|
3
5
|
import { Location, Warehouse } from '../../../entities'
|
|
4
6
|
|
|
5
7
|
export const locationOccupanciesResolver = {
|
|
6
|
-
async locationOccupancies(_: any, { warehouse }, context: any) {
|
|
8
|
+
async locationOccupancies(_: any, { warehouse, types }, context: any) {
|
|
7
9
|
const { domain }: { domain: Domain } = context.state
|
|
8
10
|
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
const foundWarehouse = await getRepository(Warehouse).findOne({
|
|
16
|
-
where: {
|
|
17
|
-
domain: domain,
|
|
18
|
-
name: warehouse
|
|
19
|
-
}
|
|
20
|
-
})
|
|
21
|
-
|
|
22
|
-
if (foundWarehouse) where['warehouse'] = foundWarehouse.id
|
|
23
|
-
else throw new Error(`${warehouse} was not found!`)
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
const locations = await getRepository(Location).find({
|
|
27
|
-
where,
|
|
28
|
-
relations: ['domain', 'warehouse', 'creator', 'updater']
|
|
29
|
-
})
|
|
30
|
-
|
|
31
|
-
let occupied = 0
|
|
32
|
-
locations.forEach(location => {
|
|
33
|
-
if (location.status === 'OCCUPIED') occupied += 1
|
|
11
|
+
const foundWarehouse: Warehouse = await getRepository(Warehouse).findOne({
|
|
12
|
+
where: {
|
|
13
|
+
domain,
|
|
14
|
+
name: warehouse
|
|
15
|
+
},
|
|
16
|
+
relations: ['locations']
|
|
34
17
|
})
|
|
35
18
|
|
|
36
|
-
|
|
19
|
+
if (!foundWarehouse) throw new Error(`${warehouse} was not found!`)
|
|
37
20
|
|
|
38
|
-
const
|
|
21
|
+
const locations: Location[] =
|
|
22
|
+
types && types.length
|
|
23
|
+
? foundWarehouse?.locations?.filter((location: Location) => types.indexOf(location.type) !== -1)
|
|
24
|
+
: foundWarehouse?.locations
|
|
39
25
|
|
|
40
|
-
|
|
41
|
-
|
|
26
|
+
const total: number = locations.length
|
|
27
|
+
const occupied: number = locations.filter((location: Location) => location.status === 'OCCUPIED')?.length || 0
|
|
28
|
+
const empty: number = total - occupied
|
|
29
|
+
const percentage: number = occupied > 0 ? Math.round((occupied / total) * 100) : 0
|
|
42
30
|
|
|
43
31
|
return { total, occupied, empty, percentage }
|
|
44
32
|
}
|
|
@@ -1,7 +1,9 @@
|
|
|
1
|
+
import { getRepository } from 'typeorm'
|
|
2
|
+
|
|
1
3
|
import { User } from '@things-factory/auth-base'
|
|
2
4
|
import { getPermittedBizplaceIds } from '@things-factory/biz-base'
|
|
3
5
|
import { Domain, ListParam } from '@things-factory/shell'
|
|
4
|
-
|
|
6
|
+
|
|
5
7
|
import { InventoryHistory } from '../../../entities'
|
|
6
8
|
|
|
7
9
|
export const inboundMovementsCounterResolver = {
|
|
@@ -53,13 +55,12 @@ export const inboundMovementsCounterResolver = {
|
|
|
53
55
|
compareDate.setMinutes(0)
|
|
54
56
|
compareDate.setSeconds(0)
|
|
55
57
|
|
|
56
|
-
items = items.map(item => {
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
}
|
|
61
|
-
}
|
|
58
|
+
items = items.map((item: { date: string; count: number }) => {
|
|
59
|
+
item.count =
|
|
60
|
+
counter.find(ctr => ctr.inbound_date.toLocaleDateString() === compareDate.toLocaleDateString())?.count || 0
|
|
61
|
+
|
|
62
62
|
compareDate.setDate(compareDate.getDate() + 1)
|
|
63
|
+
|
|
63
64
|
return item
|
|
64
65
|
})
|
|
65
66
|
|
|
@@ -1,7 +1,9 @@
|
|
|
1
|
+
import { getRepository } from 'typeorm'
|
|
2
|
+
|
|
1
3
|
import { User } from '@things-factory/auth-base'
|
|
2
4
|
import { getPermittedBizplaceIds } from '@things-factory/biz-base'
|
|
3
5
|
import { Domain } from '@things-factory/shell'
|
|
4
|
-
|
|
6
|
+
|
|
5
7
|
import { InventoryHistory } from '../../../entities'
|
|
6
8
|
|
|
7
9
|
export const outboundMovementsCounterResolver = {
|
|
@@ -55,13 +57,12 @@ export const outboundMovementsCounterResolver = {
|
|
|
55
57
|
compareDate.setMinutes(0)
|
|
56
58
|
compareDate.setSeconds(0)
|
|
57
59
|
|
|
58
|
-
items = items.map(item => {
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
}
|
|
63
|
-
}
|
|
60
|
+
items = items.map((item: { date: string; count: number }) => {
|
|
61
|
+
item.count =
|
|
62
|
+
counter.find(ctr => ctr.outbound_date.toLocaleDateString() === compareDate.toLocaleDateString())?.count || 0
|
|
63
|
+
|
|
64
64
|
compareDate.setDate(compareDate.getDate() + 1)
|
|
65
|
+
|
|
65
66
|
return item
|
|
66
67
|
})
|
|
67
68
|
|
|
@@ -1,7 +1,9 @@
|
|
|
1
|
+
import { getRepository } from 'typeorm'
|
|
2
|
+
|
|
1
3
|
import { User } from '@things-factory/auth-base'
|
|
2
4
|
import { getPermittedBizplaceIds } from '@things-factory/biz-base'
|
|
3
5
|
import { Domain } from '@things-factory/shell'
|
|
4
|
-
|
|
6
|
+
|
|
5
7
|
import { InventoryHistory } from '../../../entities'
|
|
6
8
|
|
|
7
9
|
export const weeklyMovementsCounterResolver = {
|
|
@@ -55,40 +57,28 @@ export const weeklyMovementsCounterResolver = {
|
|
|
55
57
|
group by movement_date
|
|
56
58
|
`)
|
|
57
59
|
|
|
58
|
-
// pre-set the movements accordingly with initial value of in/outbound = 0
|
|
59
60
|
let movements = [
|
|
60
|
-
{ week: 'Week 01',
|
|
61
|
-
{ week: 'Week 02',
|
|
62
|
-
{ week: 'Week 03',
|
|
63
|
-
{ week: 'Week 04',
|
|
61
|
+
{ week: 'Week 01', ...getMovementByWeek(data, [0, 7]) },
|
|
62
|
+
{ week: 'Week 02', ...getMovementByWeek(data, [8, 14]) },
|
|
63
|
+
{ week: 'Week 03', ...getMovementByWeek(data, [15, 21]) },
|
|
64
|
+
{ week: 'Week 04', ...getMovementByWeek(data, [21, 31]) }
|
|
64
65
|
]
|
|
65
66
|
|
|
66
|
-
// loop through all date that were retrieved from database
|
|
67
|
-
for (let i = 0; i < data.length; i++) {
|
|
68
|
-
// asign data based on week number
|
|
69
|
-
movements = movements.map(movement => {
|
|
70
|
-
const compareDate = data[i].movement_date
|
|
71
|
-
const inboundCount = parseInt(data[i].inbound_count)
|
|
72
|
-
const outboundCount = parseInt(data[i].outbound_count)
|
|
73
|
-
|
|
74
|
-
if (movement.week === 'Week 01' && compareDate.getDate() > 0 && compareDate.getDate() <= 7) {
|
|
75
|
-
movement.inbound += inboundCount
|
|
76
|
-
movement.outbound += outboundCount
|
|
77
|
-
} else if (movement.week === 'Week 02' && compareDate.getDate() > 7 && compareDate.getDate() <= 14) {
|
|
78
|
-
movement.inbound += inboundCount
|
|
79
|
-
movement.outbound += outboundCount
|
|
80
|
-
} else if (movement.week === 'Week 03' && compareDate.getDate() > 14 && compareDate.getDate() <= 21) {
|
|
81
|
-
movement.inbound += inboundCount
|
|
82
|
-
movement.outbound += outboundCount
|
|
83
|
-
} else if (movement.week === 'Week 04' && compareDate.getDate() > 21) {
|
|
84
|
-
movement.inbound += inboundCount
|
|
85
|
-
movement.outbound += outboundCount
|
|
86
|
-
}
|
|
87
|
-
return movement
|
|
88
|
-
})
|
|
89
|
-
}
|
|
90
|
-
|
|
91
67
|
// return total 4 weeks of in/outbound movements for a specific month
|
|
92
68
|
return movements
|
|
93
69
|
}
|
|
94
70
|
}
|
|
71
|
+
|
|
72
|
+
function getMovementByWeek(data, range): { inbound: number; outbound: number } {
|
|
73
|
+
return data
|
|
74
|
+
.filter(item => item.movement_date.getDate() > range[0] && item.movement_date.getDate() <= range[1])
|
|
75
|
+
.reduce(
|
|
76
|
+
(inout: { inbound: number; outbound: number }, curr) => {
|
|
77
|
+
inout.inbound += Number(curr.inbound_count)
|
|
78
|
+
inout.outbound += Number(curr.outbound_count)
|
|
79
|
+
|
|
80
|
+
return inout
|
|
81
|
+
},
|
|
82
|
+
{ inbound: 0, outbound: 0 }
|
|
83
|
+
)
|
|
84
|
+
}
|
|
@@ -35,7 +35,7 @@ export const Mutation = /* GraphQL */ `
|
|
|
35
35
|
|
|
36
36
|
export const Query = /* GraphQL */ `
|
|
37
37
|
locations(filters: [Filter], pagination: Pagination, sortings: [Sorting]): LocationList @privilege(category: "warehouse", privilege: "query")
|
|
38
|
-
locationOccupancies(warehouse: String): LocationOccupancy @privilege(category: "warehouse", privilege: "query")
|
|
38
|
+
locationOccupancies(warehouse: String!, types: [String]): LocationOccupancy @privilege(category: "warehouse", privilege: "query")
|
|
39
39
|
location(name: String!): Location @privilege(category: "warehouse", privilege: "query")
|
|
40
40
|
locationByName(name: String!): Location @privilege(category: "warehouse", privilege: "query")
|
|
41
41
|
locationsByGroup(filters: [Filter], pagination: Pagination, sortings: [Sorting]): LocationList @privilege(category: "warehouse", privilege: "query")
|