@things-factory/warehouse-base 4.3.647 → 4.3.651

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 (191) hide show
  1. package/package.json +5 -5
  2. package/dist-server/constants/adjustment-code.js +0 -13
  3. package/dist-server/constants/adjustment-code.js.map +0 -1
  4. package/dist-server/constants/index.js +0 -23
  5. package/dist-server/constants/index.js.map +0 -1
  6. package/dist-server/constants/inventory.js +0 -74
  7. package/dist-server/constants/inventory.js.map +0 -1
  8. package/dist-server/constants/location.js +0 -19
  9. package/dist-server/constants/location.js.map +0 -1
  10. package/dist-server/constants/pallet.js +0 -13
  11. package/dist-server/constants/pallet.js.map +0 -1
  12. package/dist-server/constants/rule-type.js +0 -8
  13. package/dist-server/constants/rule-type.js.map +0 -1
  14. package/dist-server/constants/tote.js +0 -9
  15. package/dist-server/constants/tote.js.map +0 -1
  16. package/dist-server/controllers/ecommerce/ecommerce-controller.js +0 -125
  17. package/dist-server/controllers/ecommerce/ecommerce-controller.js.map +0 -1
  18. package/dist-server/controllers/ecommerce/index.js +0 -22
  19. package/dist-server/controllers/ecommerce/index.js.map +0 -1
  20. package/dist-server/controllers/ecommerce/pos-controller.js +0 -65
  21. package/dist-server/controllers/ecommerce/pos-controller.js.map +0 -1
  22. package/dist-server/controllers/ecommerce/powrup-controller.js +0 -87
  23. package/dist-server/controllers/ecommerce/powrup-controller.js.map +0 -1
  24. package/dist-server/controllers/ecommerce/sellercraft-controller.js +0 -85
  25. package/dist-server/controllers/ecommerce/sellercraft-controller.js.map +0 -1
  26. package/dist-server/controllers/ecommerce/webspert-controller.js +0 -131
  27. package/dist-server/controllers/ecommerce/webspert-controller.js.map +0 -1
  28. package/dist-server/controllers/index.js +0 -19
  29. package/dist-server/controllers/index.js.map +0 -1
  30. package/dist-server/controllers/warehouse-controller.js +0 -143
  31. package/dist-server/controllers/warehouse-controller.js.map +0 -1
  32. package/dist-server/index.js +0 -35
  33. package/dist-server/index.js.map +0 -1
  34. package/dist-server/middlewares/index.js +0 -1
  35. package/dist-server/middlewares/index.js.map +0 -1
  36. package/dist-server/migrations/index.js +0 -12
  37. package/dist-server/migrations/index.js.map +0 -1
  38. package/dist-server/service/index.js +0 -96
  39. package/dist-server/service/index.js.map +0 -1
  40. package/dist-server/service/inventory/index.js +0 -9
  41. package/dist-server/service/inventory/index.js.map +0 -1
  42. package/dist-server/service/inventory/inventory-mutation.js +0 -414
  43. package/dist-server/service/inventory/inventory-mutation.js.map +0 -1
  44. package/dist-server/service/inventory/inventory-query.js +0 -1211
  45. package/dist-server/service/inventory/inventory-query.js.map +0 -1
  46. package/dist-server/service/inventory/inventory-types.js +0 -478
  47. package/dist-server/service/inventory/inventory-types.js.map +0 -1
  48. package/dist-server/service/inventory/inventory.js +0 -569
  49. package/dist-server/service/inventory/inventory.js.map +0 -1
  50. package/dist-server/service/inventory-change/index.js +0 -9
  51. package/dist-server/service/inventory-change/index.js.map +0 -1
  52. package/dist-server/service/inventory-change/inventory-change-mutation.js +0 -1188
  53. package/dist-server/service/inventory-change/inventory-change-mutation.js.map +0 -1
  54. package/dist-server/service/inventory-change/inventory-change-query.js +0 -150
  55. package/dist-server/service/inventory-change/inventory-change-query.js.map +0 -1
  56. package/dist-server/service/inventory-change/inventory-change-types.js +0 -73
  57. package/dist-server/service/inventory-change/inventory-change-types.js.map +0 -1
  58. package/dist-server/service/inventory-change/inventory-change.js +0 -225
  59. package/dist-server/service/inventory-change/inventory-change.js.map +0 -1
  60. package/dist-server/service/inventory-history/index.js +0 -9
  61. package/dist-server/service/inventory-history/index.js.map +0 -1
  62. package/dist-server/service/inventory-history/inventory-history-mutation.js +0 -121
  63. package/dist-server/service/inventory-history/inventory-history-mutation.js.map +0 -1
  64. package/dist-server/service/inventory-history/inventory-history-query.js +0 -1694
  65. package/dist-server/service/inventory-history/inventory-history-query.js.map +0 -1
  66. package/dist-server/service/inventory-history/inventory-history-types.js +0 -626
  67. package/dist-server/service/inventory-history/inventory-history-types.js.map +0 -1
  68. package/dist-server/service/inventory-history/inventory-history.js +0 -238
  69. package/dist-server/service/inventory-history/inventory-history.js.map +0 -1
  70. package/dist-server/service/inventory-item/index.js +0 -9
  71. package/dist-server/service/inventory-item/index.js.map +0 -1
  72. package/dist-server/service/inventory-item/inventory-item-mutation.js +0 -274
  73. package/dist-server/service/inventory-item/inventory-item-mutation.js.map +0 -1
  74. package/dist-server/service/inventory-item/inventory-item-query.js +0 -265
  75. package/dist-server/service/inventory-item/inventory-item-query.js.map +0 -1
  76. package/dist-server/service/inventory-item/inventory-item-type.js +0 -127
  77. package/dist-server/service/inventory-item/inventory-item-type.js.map +0 -1
  78. package/dist-server/service/inventory-item/inventory-item.js +0 -146
  79. package/dist-server/service/inventory-item/inventory-item.js.map +0 -1
  80. package/dist-server/service/inventory-item-change/index.js +0 -9
  81. package/dist-server/service/inventory-item-change/index.js.map +0 -1
  82. package/dist-server/service/inventory-item-change/inventory-item-change-mutation.js +0 -121
  83. package/dist-server/service/inventory-item-change/inventory-item-change-mutation.js.map +0 -1
  84. package/dist-server/service/inventory-item-change/inventory-item-change-query.js +0 -87
  85. package/dist-server/service/inventory-item-change/inventory-item-change-query.js.map +0 -1
  86. package/dist-server/service/inventory-item-change/inventory-item-change-type.js +0 -107
  87. package/dist-server/service/inventory-item-change/inventory-item-change-type.js.map +0 -1
  88. package/dist-server/service/inventory-item-change/inventory-item-change.js +0 -110
  89. package/dist-server/service/inventory-item-change/inventory-item-change.js.map +0 -1
  90. package/dist-server/service/inventory-product/index.js +0 -9
  91. package/dist-server/service/inventory-product/index.js.map +0 -1
  92. package/dist-server/service/inventory-product/inventory-product-mutation.js +0 -120
  93. package/dist-server/service/inventory-product/inventory-product-mutation.js.map +0 -1
  94. package/dist-server/service/inventory-product/inventory-product-query.js +0 -87
  95. package/dist-server/service/inventory-product/inventory-product-query.js.map +0 -1
  96. package/dist-server/service/inventory-product/inventory-product-type.js +0 -95
  97. package/dist-server/service/inventory-product/inventory-product-type.js.map +0 -1
  98. package/dist-server/service/inventory-product/inventory-product.js +0 -112
  99. package/dist-server/service/inventory-product/inventory-product.js.map +0 -1
  100. package/dist-server/service/location/index.js +0 -9
  101. package/dist-server/service/location/index.js.map +0 -1
  102. package/dist-server/service/location/location-mutation.js +0 -279
  103. package/dist-server/service/location/location-mutation.js.map +0 -1
  104. package/dist-server/service/location/location-query.js +0 -320
  105. package/dist-server/service/location/location-query.js.map +0 -1
  106. package/dist-server/service/location/location-types.js +0 -296
  107. package/dist-server/service/location/location-types.js.map +0 -1
  108. package/dist-server/service/location/location.js +0 -146
  109. package/dist-server/service/location/location.js.map +0 -1
  110. package/dist-server/service/movement/index.js +0 -9
  111. package/dist-server/service/movement/index.js.map +0 -1
  112. package/dist-server/service/movement/movement-mutation.js +0 -80
  113. package/dist-server/service/movement/movement-mutation.js.map +0 -1
  114. package/dist-server/service/movement/movement-query.js +0 -286
  115. package/dist-server/service/movement/movement-query.js.map +0 -1
  116. package/dist-server/service/movement/movement-types.js +0 -117
  117. package/dist-server/service/movement/movement-types.js.map +0 -1
  118. package/dist-server/service/movement/movement.js +0 -101
  119. package/dist-server/service/movement/movement.js.map +0 -1
  120. package/dist-server/service/pallet/index.js +0 -9
  121. package/dist-server/service/pallet/index.js.map +0 -1
  122. package/dist-server/service/pallet/pallet-mutation.js +0 -194
  123. package/dist-server/service/pallet/pallet-mutation.js.map +0 -1
  124. package/dist-server/service/pallet/pallet-query.js +0 -164
  125. package/dist-server/service/pallet/pallet-query.js.map +0 -1
  126. package/dist-server/service/pallet/pallet-types.js +0 -109
  127. package/dist-server/service/pallet/pallet-types.js.map +0 -1
  128. package/dist-server/service/pallet/pallet.js +0 -112
  129. package/dist-server/service/pallet/pallet.js.map +0 -1
  130. package/dist-server/service/pallet-count/index.js +0 -9
  131. package/dist-server/service/pallet-count/index.js.map +0 -1
  132. package/dist-server/service/pallet-count/pallet-count-mutation.js +0 -153
  133. package/dist-server/service/pallet-count/pallet-count-mutation.js.map +0 -1
  134. package/dist-server/service/pallet-count/pallet-count-query.js +0 -86
  135. package/dist-server/service/pallet-count/pallet-count-query.js.map +0 -1
  136. package/dist-server/service/pallet-count/pallet-count-types.js +0 -65
  137. package/dist-server/service/pallet-count/pallet-count-types.js.map +0 -1
  138. package/dist-server/service/pallet-count/pallet-count.js +0 -89
  139. package/dist-server/service/pallet-count/pallet-count.js.map +0 -1
  140. package/dist-server/service/pallet-history/index.js +0 -9
  141. package/dist-server/service/pallet-history/index.js.map +0 -1
  142. package/dist-server/service/pallet-history/pallet-history-mutation.js +0 -120
  143. package/dist-server/service/pallet-history/pallet-history-mutation.js.map +0 -1
  144. package/dist-server/service/pallet-history/pallet-history-query.js +0 -87
  145. package/dist-server/service/pallet-history/pallet-history-query.js.map +0 -1
  146. package/dist-server/service/pallet-history/pallet-history-types.js +0 -65
  147. package/dist-server/service/pallet-history/pallet-history-types.js.map +0 -1
  148. package/dist-server/service/pallet-history/pallet-history.js +0 -107
  149. package/dist-server/service/pallet-history/pallet-history.js.map +0 -1
  150. package/dist-server/service/product-detail-stock/index.js +0 -9
  151. package/dist-server/service/product-detail-stock/index.js.map +0 -1
  152. package/dist-server/service/product-detail-stock/product-detail-stock-mutation.js +0 -120
  153. package/dist-server/service/product-detail-stock/product-detail-stock-mutation.js.map +0 -1
  154. package/dist-server/service/product-detail-stock/product-detail-stock-query.js +0 -66
  155. package/dist-server/service/product-detail-stock/product-detail-stock-query.js.map +0 -1
  156. package/dist-server/service/product-detail-stock/product-detail-stock-types.js +0 -57
  157. package/dist-server/service/product-detail-stock/product-detail-stock-types.js.map +0 -1
  158. package/dist-server/service/product-detail-stock/product-detail-stock.js +0 -90
  159. package/dist-server/service/product-detail-stock/product-detail-stock.js.map +0 -1
  160. package/dist-server/service/reduced-inventory-history/index.js +0 -6
  161. package/dist-server/service/reduced-inventory-history/index.js.map +0 -1
  162. package/dist-server/service/reduced-inventory-history/reduced-inventory-history.js +0 -133
  163. package/dist-server/service/reduced-inventory-history/reduced-inventory-history.js.map +0 -1
  164. package/dist-server/service/tote/index.js +0 -9
  165. package/dist-server/service/tote/index.js.map +0 -1
  166. package/dist-server/service/tote/tote-mutation.js +0 -192
  167. package/dist-server/service/tote/tote-mutation.js.map +0 -1
  168. package/dist-server/service/tote/tote-query.js +0 -162
  169. package/dist-server/service/tote/tote-query.js.map +0 -1
  170. package/dist-server/service/tote/tote-types.js +0 -75
  171. package/dist-server/service/tote/tote-types.js.map +0 -1
  172. package/dist-server/service/tote/tote.js +0 -98
  173. package/dist-server/service/tote/tote.js.map +0 -1
  174. package/dist-server/service/warehouse/index.js +0 -9
  175. package/dist-server/service/warehouse/index.js.map +0 -1
  176. package/dist-server/service/warehouse/warehouse-mutation.js +0 -148
  177. package/dist-server/service/warehouse/warehouse-mutation.js.map +0 -1
  178. package/dist-server/service/warehouse/warehouse-query.js +0 -91
  179. package/dist-server/service/warehouse/warehouse-query.js.map +0 -1
  180. package/dist-server/service/warehouse/warehouse-types.js +0 -82
  181. package/dist-server/service/warehouse/warehouse-types.js.map +0 -1
  182. package/dist-server/service/warehouse/warehouse.js +0 -114
  183. package/dist-server/service/warehouse/warehouse.js.map +0 -1
  184. package/dist-server/utils/datetime-util.js +0 -61
  185. package/dist-server/utils/datetime-util.js.map +0 -1
  186. package/dist-server/utils/index.js +0 -20
  187. package/dist-server/utils/index.js.map +0 -1
  188. package/dist-server/utils/inventory-no-generator.js +0 -17
  189. package/dist-server/utils/inventory-no-generator.js.map +0 -1
  190. package/dist-server/utils/inventory-util.js +0 -413
  191. package/dist-server/utils/inventory-util.js.map +0 -1
@@ -1,414 +0,0 @@
1
- "use strict";
2
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
- return c > 3 && r && Object.defineProperty(target, key, r), r;
7
- };
8
- var __metadata = (this && this.__metadata) || function (k, v) {
9
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
- };
11
- var __param = (this && this.__param) || function (paramIndex, decorator) {
12
- return function (target, key) { decorator(target, key, paramIndex); }
13
- };
14
- Object.defineProperty(exports, "__esModule", { value: true });
15
- exports.InventoryMutation = void 0;
16
- const type_graphql_1 = require("type-graphql");
17
- const typeorm_1 = require("typeorm");
18
- const auth_base_1 = require("@things-factory/auth-base");
19
- const biz_base_1 = require("@things-factory/biz-base");
20
- const id_rule_base_1 = require("@things-factory/id-rule-base");
21
- const integration_sellercraft_1 = require("@things-factory/integration-sellercraft");
22
- const product_base_1 = require("@things-factory/product-base");
23
- const constants_1 = require("../../constants");
24
- const controllers_1 = require("../../controllers");
25
- const utils_1 = require("../../utils");
26
- const inventory_history_1 = require("../inventory-history/inventory-history");
27
- const location_1 = require("../location/location");
28
- const inventory_1 = require("./inventory");
29
- const inventory_types_1 = require("./inventory-types");
30
- let InventoryMutation = class InventoryMutation {
31
- async createInventory(inventory, context) {
32
- const { tx } = context.state;
33
- return await tx.getRepository(inventory_1.Inventory).save(Object.assign({ domain: context.state.domain, creator: context.state.user, updater: context.state.user }, inventory));
34
- }
35
- async updateInventory(patch, context) {
36
- const { domain, user, tx } = context.state;
37
- const invQb = await tx
38
- .getRepository(inventory_1.Inventory)
39
- .createQueryBuilder('INV')
40
- .where('INV.domain_id = :domainId', { domainId: domain.id })
41
- .andWhere('INV.bizplace_id = :bizplaceId', { bizplaceId: patch.bizplace.id })
42
- .andWhere('INV.batch_id = :batchId', { batchId: patch.batchId })
43
- .andWhere('INV.product_id = :productId', { productId: patch.product.id })
44
- .andWhere('INV.packing_type = :packingType', { packingType: patch.packingType })
45
- .andWhere('INV.packing_size = :packingSize', { packingSize: patch.packingSize });
46
- if (patch === null || patch === void 0 ? void 0 : patch.cartonId)
47
- invQb.andWhere('INV.carton_id = :cartonId', { cartonId: patch.cartonId });
48
- else
49
- invQb.andWhere('INV.pallet_id = :palletId', { palletId: patch.palletId });
50
- const inventory = await invQb.getOne();
51
- return await tx.getRepository(inventory_1.Inventory).save(Object.assign(Object.assign(Object.assign({}, inventory), patch), { updater: user }));
52
- }
53
- async updateInventoryRemark(id, remark, context) {
54
- const { domain, user, tx } = context.state;
55
- const repository = tx.getRepository(inventory_1.Inventory);
56
- const inventory = await repository.findOne({ where: { domain: domain, id } });
57
- return await repository.save(Object.assign(Object.assign({}, inventory), { remark, updater: user }));
58
- }
59
- async deleteInventory(name, context) {
60
- const { tx } = context.state;
61
- await tx.getRepository(inventory_1.Inventory).delete({ domain: context.state.domain, name });
62
- return true;
63
- }
64
- async updateMultipleInventory(patches, context) {
65
- const { domain, user, tx } = context.state;
66
- let results = [];
67
- const _createRecords = patches.filter((patch) => !patch.id);
68
- const _updateRecords = patches.filter((patch) => patch.id);
69
- const inventoryRepo = tx.getRepository(inventory_1.Inventory);
70
- if (_createRecords.length > 0) {
71
- let today = new Date();
72
- let year = today.getFullYear();
73
- let month = today.getMonth();
74
- let date = today.getDate();
75
- for (let i = 0; i < _createRecords.length; i++) {
76
- const total = await tx.getRepository(inventory_1.Inventory).count({
77
- createdAt: (0, typeorm_1.MoreThan)(new Date(year, month, date))
78
- });
79
- const newRecord = _createRecords[i];
80
- if (newRecord.location && newRecord.location.id) {
81
- var location = await tx.getRepository(location_1.Location).findOne({
82
- where: { id: newRecord.location.id },
83
- relations: ['warehouse']
84
- });
85
- newRecord.location = location;
86
- newRecord.zone = location.zone;
87
- newRecord.warehouse = location.warehouse;
88
- }
89
- if (newRecord.bizplace && newRecord.bizplace.id) {
90
- newRecord.bizplace = await tx.getRepository(biz_base_1.Bizplace).findOne(newRecord.bizplace.id);
91
- }
92
- if (newRecord.product && newRecord.product.id) {
93
- var product = await tx.getRepository(product_base_1.Product).findOne(newRecord.product.id);
94
- newRecord.product = product;
95
- }
96
- let palletId = 'P' +
97
- year.toString().substr(year.toString().length - 2) +
98
- ('0' + (month + 1).toString()).substr(('0' + (month + 1).toString()).toString().length - 2) +
99
- ('0' + date.toString()).substr(('0' + date.toString()).length - 2) +
100
- ('0000' + (total + 1).toString()).substr(('0000' + (total + 1).toString()).length - 4);
101
- newRecord.name = palletId;
102
- newRecord.status = newRecord.qty < 1 ? 'TERMINATED' : 'STORED';
103
- newRecord.palletId = palletId;
104
- const result = await inventoryRepo.save(Object.assign({ domain: domain, creator: user, updater: user, lastSeq: 0 }, newRecord));
105
- await tx.getRepository(inventory_history_1.InventoryHistory).save(Object.assign(Object.assign({}, newRecord), { domain: domain, creator: user, updater: user, name: utils_1.InventoryNoGenerator.inventoryHistoryName(), seq: 0, transactionType: 'NEW', productId: newRecord.product.id, warehouseId: newRecord.warehouse.id, locationId: newRecord.location.id }));
106
- results.push(Object.assign(Object.assign({}, result), { cuFlag: '+' }));
107
- }
108
- }
109
- if (_updateRecords.length > 0) {
110
- for (let i = 0; i < _updateRecords.length; i++) {
111
- const newRecord = _updateRecords[i];
112
- const newHistoryRecord = JSON.parse(JSON.stringify(_updateRecords[i]));
113
- let transactionType = '';
114
- let inventory = await inventoryRepo.findOne({
115
- where: { id: newRecord.id },
116
- relations: ['warehouse', 'location', 'product', 'bizplace']
117
- });
118
- newHistoryRecord.openingQty = inventory.qty;
119
- newHistoryRecord.openingUomValue = inventory.uomValue;
120
- // Get last sequence from InventoryHistory
121
- let latestEntry = await tx.getRepository(inventory_history_1.InventoryHistory).find({
122
- where: { palletId: inventory.palletId },
123
- order: { seq: 'DESC' },
124
- take: 1
125
- });
126
- let lastSeq = latestEntry[0].seq;
127
- // Condition 1: Change location (RELOCATE)
128
- if (newRecord.location && newRecord.location.id) {
129
- var location = await tx.getRepository(location_1.Location).findOne({
130
- where: { id: newRecord.location.id },
131
- relations: ['warehouse']
132
- });
133
- newRecord.location = location;
134
- newRecord.zone = location.zone;
135
- newRecord.warehouse = location.warehouse;
136
- newHistoryRecord.location = location;
137
- newHistoryRecord.zone = location.zone;
138
- newHistoryRecord.warehouse = location.warehouse;
139
- transactionType = 'RELOCATE';
140
- }
141
- // Condition 2: Change of qty or uomValue.
142
- // Set qty movement for inventory history
143
- if (typeof newRecord.qty != 'undefined') {
144
- transactionType = 'ADJUSTMENT';
145
- newHistoryRecord.qty = newRecord.qty - inventory.qty;
146
- if (newRecord.qty < 1) {
147
- newRecord.status = 'TERMINATED';
148
- newRecord.qty = 0;
149
- newRecord.uomValue = 0;
150
- }
151
- }
152
- else {
153
- newHistoryRecord.qty = 0;
154
- }
155
- // Set uomValue movement for inventory history
156
- if (typeof newRecord.uomValue != 'undefined') {
157
- transactionType = 'ADJUSTMENT';
158
- newHistoryRecord.uomValue = newRecord.uomValue - inventory.uomValue;
159
- if (newRecord.uomValue < 1) {
160
- newRecord.uomValue = 0;
161
- }
162
- }
163
- else {
164
- newHistoryRecord.uomValue = 0;
165
- }
166
- // Condition 3: Change of bizplace or product or batch id or packing type
167
- if (newRecord.bizplace && newRecord.bizplace.id) {
168
- newRecord.bizplace = await tx.getRepository(biz_base_1.Bizplace).findOne(newRecord.bizplace.id);
169
- }
170
- if (newRecord.product && newRecord.product.id) {
171
- newRecord.product = await tx.getRepository(product_base_1.Product).findOne(newRecord.product.id);
172
- }
173
- if ((newRecord.product && newRecord.product.id) ||
174
- (newRecord.bizplace && newRecord.bizplace.id) ||
175
- newRecord.batchId ||
176
- newRecord.packingType) {
177
- if (inventory.bizplace.id !== (newRecord.bizplace ? newRecord.bizplace.id : '') ||
178
- inventory.product.id !== (newRecord.product ? newRecord.product.id : '') ||
179
- inventory.batchId !== newRecord.batchId ||
180
- inventory.packingType !== newRecord.packingType) {
181
- transactionType = 'ADJUSTMENT';
182
- lastSeq = lastSeq + 1;
183
- let inventoryHistory = Object.assign(Object.assign({}, inventory), { domain: domain, bizplace: inventory.bizplace.id, openingQty: inventory.qty, openingUomValue: inventory.uomValue, qty: -inventory.qty || 0, uomValue: -inventory.uomValue || 0, name: utils_1.InventoryNoGenerator.inventoryHistoryName(), seq: lastSeq, transactionType: transactionType, status: constants_1.INVENTORY_STATUS.TERMINATED, productId: inventory.product.id, warehouseId: inventory.warehouse.id, locationId: inventory.location.id, creator: user, updater: user });
184
- delete inventoryHistory.id;
185
- await tx.getRepository(inventory_history_1.InventoryHistory).save(inventoryHistory);
186
- newHistoryRecord.qty = newRecord.qty || inventory.qty;
187
- newHistoryRecord.uomValue = newRecord.uomValue || inventory.uomValue || 0;
188
- newHistoryRecord.openingQty = 0;
189
- newHistoryRecord.openingUomValue = 0;
190
- newHistoryRecord.batchId = newRecord.batchId || inventory.batchId || '-';
191
- }
192
- }
193
- //Transaction type will be RELOCATE if there is only location change. Any other changes will be considered Adjustment.
194
- lastSeq = lastSeq + 1;
195
- let inventoryHistory = Object.assign(Object.assign(Object.assign({}, inventory), newHistoryRecord), { domain: domain, creator: user, updater: user, name: utils_1.InventoryNoGenerator.inventoryHistoryName(), seq: lastSeq, transactionType: transactionType == '' ? 'ADJUSTMENT' : transactionType, productId: newHistoryRecord.product ? newHistoryRecord.product.id : inventory.product.id, warehouseId: newHistoryRecord.warehouse ? newHistoryRecord.warehouse.id : inventory.warehouse.id, locationId: newHistoryRecord.location ? newHistoryRecord.location.id : inventory.location.id });
196
- delete inventoryHistory.id;
197
- await tx.getRepository(inventory_history_1.InventoryHistory).save(inventoryHistory);
198
- const result = await inventoryRepo.save(Object.assign(Object.assign(Object.assign({}, inventory), newRecord), { updater: user, lastSeq: lastSeq }));
199
- results.push(Object.assign(Object.assign({}, result), { cuFlag: 'M' }));
200
- }
201
- }
202
- return results;
203
- }
204
- async deleteInventories(ids, context) {
205
- const { tx } = context.state;
206
- await tx.getRepository(inventory_1.Inventory).delete({
207
- id: (0, typeorm_1.In)(ids)
208
- });
209
- return true;
210
- }
211
- async inventoryTransfer(originPalletId, palletId, cartonId, fromLocationName, toLocationName, qty, context) {
212
- const { domain, user, tx } = context.state;
213
- const fromLocation = await tx.getRepository(location_1.Location).findOne({
214
- where: { domain: domain, name: fromLocationName },
215
- relations: ['domain', 'warehouse']
216
- });
217
- // 1. check toLocation exist
218
- const toLocation = await tx.getRepository(location_1.Location).findOne({
219
- where: { domain: domain, name: toLocationName },
220
- relations: ['domain', 'warehouse']
221
- });
222
- if (!toLocation)
223
- throw new Error(`To location doesn't exists`);
224
- if (qty < 0)
225
- throw new Error(`Invalid quantity`);
226
- // 2. search for related inventory
227
- const invQb = await tx
228
- .getRepository(inventory_1.Inventory)
229
- .createQueryBuilder('INV')
230
- .innerJoinAndSelect('INV.location', 'loc')
231
- .innerJoinAndSelect('INV.product', 'product')
232
- .innerJoinAndSelect('INV.bizplace', 'bizplace')
233
- .leftJoinAndSelect('INV.refInventory', 'refInventory')
234
- .leftJoinAndSelect('INV.reusablePallet', 'reusablePallet')
235
- .leftJoinAndSelect('INV.productDetail', 'productDetail')
236
- .leftJoinAndSelect('bizplace.domain', 'domain')
237
- .leftJoinAndSelect('product.productDetails', 'productDetails')
238
- .where('INV.domain_id = :domainId', { domainId: domain.id })
239
- .andWhere('INV.pallet_id = :palletId', { palletId: originPalletId });
240
- let inventory = await invQb.getOne();
241
- if (!inventory)
242
- throw new Error('Inventory not found');
243
- // Check if quantity has decimals and validate against product settings
244
- if (qty % 1 !== 0 && !inventory.product.isInventoryDecimal) {
245
- throw new Error('Decimal quantities are not allowed for this product');
246
- }
247
- if (qty > inventory.qty - ((inventory === null || inventory === void 0 ? void 0 : inventory.lockedQty) > 0 ? inventory.lockedQty : 0))
248
- throw new Error('Transfer quantity exceeded inventory quantity');
249
- if (toLocation.name == inventory.location.name)
250
- throw new Error('Inventory is in current location');
251
- let transactionInventory = new utils_1.InventoryUtil(tx, domain, user);
252
- const sellercraft = await tx.getRepository(integration_sellercraft_1.Sellercraft).findOne({
253
- where: { domain: inventory.bizplace.domain, status: integration_sellercraft_1.SellercraftStatus.ACTIVE },
254
- relations: ['domain']
255
- });
256
- const customerDomain = inventory.bizplace.domain;
257
- const customerBizplaceId = inventory.bizplace.id;
258
- const companyBizplace = await (0, biz_base_1.getCompanyBizplace)(domain, null, customerBizplaceId, tx);
259
- const application = await tx.getRepository(auth_base_1.Application).findOne({
260
- domain: companyBizplace.domain,
261
- status: 'ACTIVE',
262
- type: auth_base_1.ApplicationType.POWRUP
263
- });
264
- const partialTransferFunc = async function (inventory, qty, fromLocation, toLocation, cartonId, palletId, context) {
265
- const { user, tx } = context.state;
266
- if (qty < inventory.qty - ((inventory === null || inventory === void 0 ? void 0 : inventory.lockedQty) > 0 ? inventory.lockedQty : 0)) {
267
- if (!palletId || palletId.trim() == '')
268
- throw new Error('Require new lot id for partial transfer');
269
- let transferQty = qty;
270
- let transferUomValue = (inventory.uomValue / inventory.qty) * qty;
271
- let newInventory = Object.assign(Object.assign({}, inventory), { palletId, location: toLocation, warehouse: toLocation.warehouse, zone: toLocation.zone, creator: user, updater: user });
272
- delete newInventory.id;
273
- delete newInventory.updatedAt;
274
- delete newInventory.createdAt;
275
- newInventory.cartonId = cartonId;
276
- newInventory.qty = transferQty;
277
- newInventory.lockedQty = 0;
278
- newInventory.transferQty = 0;
279
- newInventory.uomValue = transferUomValue;
280
- newInventory.lockedUomValue = 0;
281
- newInventory.transferUomValue = 0;
282
- await transactionInventory.transactionInventory(Object.assign(Object.assign({}, inventory), { qty: inventory.qty - transferQty, uomValue: inventory.uomValue - transferUomValue }), null, -transferQty, -transferUomValue, constants_1.INVENTORY_TRANSACTION_TYPE.RELOCATE);
283
- await transactionInventory.transactionInventory(newInventory, null, transferQty, transferUomValue, constants_1.INVENTORY_TRANSACTION_TYPE.RELOCATE);
284
- if (sellercraft) {
285
- const sellercraftCtrl = new controllers_1.SellercraftController(tx, domain, user);
286
- await sellercraftCtrl.updateSellercraftStock(sellercraft, inventory);
287
- await sellercraftCtrl.updateSellercraftStock(sellercraft, newInventory);
288
- }
289
- if (application) {
290
- const powrupController = new controllers_1.PowrupController();
291
- powrupController.updateStock([inventory], customerDomain, user, tx);
292
- powrupController.updateStock([newInventory], customerDomain, user, tx);
293
- }
294
- }
295
- else {
296
- inventory.warehouse = toLocation.warehouse;
297
- inventory.location = toLocation;
298
- inventory.zone = toLocation.zone;
299
- inventory.updater = user;
300
- inventory.cartonId = cartonId;
301
- let isNotEmptyLocation = await tx.getRepository(inventory_1.Inventory).findOne({
302
- where: { location: fromLocation, status: constants_1.INVENTORY_STATUS.STORED, id: (0, typeorm_1.Not)(inventory.id) }
303
- });
304
- if (!isNotEmptyLocation) {
305
- await tx.getRepository(location_1.Location).save(Object.assign(Object.assign({}, fromLocation), { status: constants_1.LOCATION_STATUS.EMPTY }));
306
- }
307
- await transactionInventory.transactionInventory(inventory, null, 0, 0, constants_1.INVENTORY_TRANSACTION_TYPE.RELOCATE);
308
- if (sellercraft) {
309
- const sellercraftCtrl = new controllers_1.SellercraftController(tx, domain, user);
310
- await sellercraftCtrl.updateSellercraftStock(sellercraft, inventory);
311
- }
312
- }
313
- };
314
- if (inventory.cartonId && inventory.cartonId != '') {
315
- if (!cartonId) {
316
- cartonId = inventory.cartonId;
317
- }
318
- // throw new Error('Require carton id')
319
- if (qty < inventory.qty - ((inventory === null || inventory === void 0 ? void 0 : inventory.lockedQty) > 0 ? inventory.lockedQty : 0)) {
320
- palletId = await (0, id_rule_base_1.generateId)({
321
- domain: domain,
322
- type: constants_1.RULE_TYPE.LOT_NUMBER_ID,
323
- seed: { date: utils_1.DateGenerator.generateDate() }
324
- });
325
- }
326
- await partialTransferFunc(inventory, qty, fromLocation, toLocation, cartonId, palletId, context);
327
- }
328
- else {
329
- await partialTransferFunc(inventory, qty, fromLocation, toLocation, null, palletId, context);
330
- }
331
- return true;
332
- }
333
- };
334
- __decorate([
335
- (0, type_graphql_1.Directive)('@privilege(category: "inventory", privilege: "mutation")'),
336
- (0, type_graphql_1.Directive)('@transaction'),
337
- (0, type_graphql_1.Mutation)(returns => inventory_1.Inventory),
338
- __param(0, (0, type_graphql_1.Arg)('inventory')),
339
- __param(1, (0, type_graphql_1.Ctx)()),
340
- __metadata("design:type", Function),
341
- __metadata("design:paramtypes", [inventory_types_1.NewInventory, Object]),
342
- __metadata("design:returntype", Promise)
343
- ], InventoryMutation.prototype, "createInventory", null);
344
- __decorate([
345
- (0, type_graphql_1.Directive)('@privilege(category: "inventory", privilege: "mutation")'),
346
- (0, type_graphql_1.Directive)('@transaction'),
347
- (0, type_graphql_1.Mutation)(returns => inventory_1.Inventory),
348
- __param(0, (0, type_graphql_1.Arg)('patch')),
349
- __param(1, (0, type_graphql_1.Ctx)()),
350
- __metadata("design:type", Function),
351
- __metadata("design:paramtypes", [inventory_types_1.InventoryPatch, Object]),
352
- __metadata("design:returntype", Promise)
353
- ], InventoryMutation.prototype, "updateInventory", null);
354
- __decorate([
355
- (0, type_graphql_1.Directive)('@privilege(category: "inventory", privilege: "mutation")'),
356
- (0, type_graphql_1.Directive)('@transaction'),
357
- (0, type_graphql_1.Mutation)(returns => inventory_1.Inventory),
358
- __param(0, (0, type_graphql_1.Arg)('id')),
359
- __param(1, (0, type_graphql_1.Arg)('remark')),
360
- __param(2, (0, type_graphql_1.Ctx)()),
361
- __metadata("design:type", Function),
362
- __metadata("design:paramtypes", [String, String, Object]),
363
- __metadata("design:returntype", Promise)
364
- ], InventoryMutation.prototype, "updateInventoryRemark", null);
365
- __decorate([
366
- (0, type_graphql_1.Directive)('@privilege(category: "inventory", privilege: "mutation")'),
367
- (0, type_graphql_1.Directive)('@transaction'),
368
- (0, type_graphql_1.Mutation)(returns => Boolean),
369
- __param(0, (0, type_graphql_1.Arg)('name')),
370
- __param(1, (0, type_graphql_1.Ctx)()),
371
- __metadata("design:type", Function),
372
- __metadata("design:paramtypes", [String, Object]),
373
- __metadata("design:returntype", Promise)
374
- ], InventoryMutation.prototype, "deleteInventory", null);
375
- __decorate([
376
- (0, type_graphql_1.Directive)('@privilege(category: "inventory", privilege: "mutation")'),
377
- (0, type_graphql_1.Directive)('@transaction'),
378
- (0, type_graphql_1.Mutation)(returns => [inventory_1.Inventory]),
379
- __param(0, (0, type_graphql_1.Arg)('patches', type => [inventory_types_1.InventoryPatch])),
380
- __param(1, (0, type_graphql_1.Ctx)()),
381
- __metadata("design:type", Function),
382
- __metadata("design:paramtypes", [Array, Object]),
383
- __metadata("design:returntype", Promise)
384
- ], InventoryMutation.prototype, "updateMultipleInventory", null);
385
- __decorate([
386
- (0, type_graphql_1.Directive)('@privilege(category: "inventory", privilege: "mutation")'),
387
- (0, type_graphql_1.Directive)('@transaction'),
388
- (0, type_graphql_1.Mutation)(returns => Boolean),
389
- __param(0, (0, type_graphql_1.Arg)('ids', type => [String])),
390
- __param(1, (0, type_graphql_1.Ctx)()),
391
- __metadata("design:type", Function),
392
- __metadata("design:paramtypes", [Array, Object]),
393
- __metadata("design:returntype", Promise)
394
- ], InventoryMutation.prototype, "deleteInventories", null);
395
- __decorate([
396
- (0, type_graphql_1.Directive)('@privilege(category: "inventory", privilege: "mutation")'),
397
- (0, type_graphql_1.Directive)('@transaction'),
398
- (0, type_graphql_1.Mutation)(returns => Boolean),
399
- __param(0, (0, type_graphql_1.Arg)('originPalletId')),
400
- __param(1, (0, type_graphql_1.Arg)('palletId', { nullable: true })),
401
- __param(2, (0, type_graphql_1.Arg)('cartonId', { nullable: true })),
402
- __param(3, (0, type_graphql_1.Arg)('fromLocationName')),
403
- __param(4, (0, type_graphql_1.Arg)('toLocationName')),
404
- __param(5, (0, type_graphql_1.Arg)('qty')),
405
- __param(6, (0, type_graphql_1.Ctx)()),
406
- __metadata("design:type", Function),
407
- __metadata("design:paramtypes", [String, String, String, String, String, Number, Object]),
408
- __metadata("design:returntype", Promise)
409
- ], InventoryMutation.prototype, "inventoryTransfer", null);
410
- InventoryMutation = __decorate([
411
- (0, type_graphql_1.Resolver)(inventory_1.Inventory)
412
- ], InventoryMutation);
413
- exports.InventoryMutation = InventoryMutation;
414
- //# sourceMappingURL=inventory-mutation.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"inventory-mutation.js","sourceRoot":"","sources":["../../../server/service/inventory/inventory-mutation.ts"],"names":[],"mappings":"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"}