@things-factory/sales-base 5.0.0-alpha.51 → 5.0.0-alpha.52

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 (130) hide show
  1. package/dist-server/constants/attachment-type.js +2 -1
  2. package/dist-server/constants/attachment-type.js.map +1 -1
  3. package/dist-server/constants/index.js +1 -0
  4. package/dist-server/constants/index.js.map +1 -1
  5. package/dist-server/constants/order.js +12 -3
  6. package/dist-server/constants/order.js.map +1 -1
  7. package/dist-server/constants/release-good.js +9 -0
  8. package/dist-server/constants/release-good.js.map +1 -0
  9. package/dist-server/controllers/ecommerce/sellercraft-controller.js +6 -2
  10. package/dist-server/controllers/ecommerce/sellercraft-controller.js.map +1 -1
  11. package/dist-server/index.js +1 -0
  12. package/dist-server/index.js.map +1 -1
  13. package/dist-server/service/delivery-order/delivery-order-query.js +3 -1
  14. package/dist-server/service/delivery-order/delivery-order-query.js.map +1 -1
  15. package/dist-server/service/draft-release-good/draft-release-good-mutation.js +563 -0
  16. package/dist-server/service/draft-release-good/draft-release-good-mutation.js.map +1 -0
  17. package/dist-server/service/draft-release-good/draft-release-good-query.js +289 -0
  18. package/dist-server/service/draft-release-good/draft-release-good-query.js.map +1 -0
  19. package/dist-server/service/draft-release-good/draft-release-good-type.js +364 -0
  20. package/dist-server/service/draft-release-good/draft-release-good-type.js.map +1 -0
  21. package/dist-server/service/draft-release-good/draft-release-good.js +321 -0
  22. package/dist-server/service/draft-release-good/draft-release-good.js.map +1 -0
  23. package/dist-server/service/draft-release-good/index.js +25 -0
  24. package/dist-server/service/draft-release-good/index.js.map +1 -0
  25. package/dist-server/service/goods-receival-note/goods-receival-note-query.js +1 -0
  26. package/dist-server/service/goods-receival-note/goods-receival-note-query.js.map +1 -1
  27. package/dist-server/service/index.js +47 -19
  28. package/dist-server/service/index.js.map +1 -1
  29. package/dist-server/service/order-inventory/order-inventory-query.js +40 -2
  30. package/dist-server/service/order-inventory/order-inventory-query.js.map +1 -1
  31. package/dist-server/service/order-inventory/order-inventory-types.js +9 -1
  32. package/dist-server/service/order-inventory/order-inventory-types.js.map +1 -1
  33. package/dist-server/service/order-inventory/order-inventory.js +5 -1
  34. package/dist-server/service/order-inventory/order-inventory.js.map +1 -1
  35. package/dist-server/service/order-product/order-product-types.js +12 -12
  36. package/dist-server/service/order-product/order-product-types.js.map +1 -1
  37. package/dist-server/service/order-product/order-product.js +54 -4
  38. package/dist-server/service/order-product/order-product.js.map +1 -1
  39. package/dist-server/service/order-tote/index.js +25 -0
  40. package/dist-server/service/order-tote/index.js.map +1 -0
  41. package/dist-server/service/order-tote/order-tote-mutation.js +56 -0
  42. package/dist-server/service/order-tote/order-tote-mutation.js.map +1 -0
  43. package/dist-server/service/order-tote/order-tote-query.js +123 -0
  44. package/dist-server/service/order-tote/order-tote-query.js.map +1 -0
  45. package/dist-server/service/order-tote/order-tote-types.js +79 -0
  46. package/dist-server/service/order-tote/order-tote-types.js.map +1 -0
  47. package/dist-server/service/order-tote/order-tote.js +91 -0
  48. package/dist-server/service/order-tote/order-tote.js.map +1 -0
  49. package/dist-server/service/order-tote-item/index.js +25 -0
  50. package/dist-server/service/order-tote-item/index.js.map +1 -0
  51. package/dist-server/service/order-tote-item/order-tote-item-mutation.js +56 -0
  52. package/dist-server/service/order-tote-item/order-tote-item-mutation.js.map +1 -0
  53. package/dist-server/service/order-tote-item/order-tote-item-query.js +100 -0
  54. package/dist-server/service/order-tote-item/order-tote-item-query.js.map +1 -0
  55. package/dist-server/service/order-tote-item/order-tote-item-types.js +91 -0
  56. package/dist-server/service/order-tote-item/order-tote-item-types.js.map +1 -0
  57. package/dist-server/service/order-tote-item/order-tote-item.js +104 -0
  58. package/dist-server/service/order-tote-item/order-tote-item.js.map +1 -0
  59. package/dist-server/service/order-tote-seal/index.js +25 -0
  60. package/dist-server/service/order-tote-seal/index.js.map +1 -0
  61. package/dist-server/service/order-tote-seal/order-tote-seal-mutation.js +56 -0
  62. package/dist-server/service/order-tote-seal/order-tote-seal-mutation.js.map +1 -0
  63. package/dist-server/service/order-tote-seal/order-tote-seal-query.js +97 -0
  64. package/dist-server/service/order-tote-seal/order-tote-seal-query.js.map +1 -0
  65. package/dist-server/service/order-tote-seal/order-tote-seal-types.js +71 -0
  66. package/dist-server/service/order-tote-seal/order-tote-seal-types.js.map +1 -0
  67. package/dist-server/service/order-tote-seal/order-tote-seal.js +71 -0
  68. package/dist-server/service/order-tote-seal/order-tote-seal.js.map +1 -0
  69. package/dist-server/service/others/other-query.js +137 -2
  70. package/dist-server/service/others/other-query.js.map +1 -1
  71. package/dist-server/service/others/other-types.js +24 -0
  72. package/dist-server/service/others/other-types.js.map +1 -1
  73. package/dist-server/service/release-good/release-good-mutation.js +28 -5
  74. package/dist-server/service/release-good/release-good-mutation.js.map +1 -1
  75. package/dist-server/service/release-good/release-good-query.js +64 -26
  76. package/dist-server/service/release-good/release-good-query.js.map +1 -1
  77. package/dist-server/service/release-good/release-good.js +36 -12
  78. package/dist-server/service/release-good/release-good.js.map +1 -1
  79. package/dist-server/service/reverse-kitting-order-inventory/reverse-kitting-order-inventory-query.js +5 -3
  80. package/dist-server/service/reverse-kitting-order-inventory/reverse-kitting-order-inventory-query.js.map +1 -1
  81. package/dist-server/service/shipping-order/shipping-order-mutation.js +2 -5
  82. package/dist-server/service/shipping-order/shipping-order-mutation.js.map +1 -1
  83. package/dist-server/utils/inventory-util.js +290 -103
  84. package/dist-server/utils/inventory-util.js.map +1 -1
  85. package/dist-server/utils/order-no-generator.js +13 -9
  86. package/dist-server/utils/order-no-generator.js.map +1 -1
  87. package/package.json +13 -13
  88. package/server/constants/attachment-type.ts +2 -1
  89. package/server/constants/index.ts +1 -0
  90. package/server/constants/order.ts +12 -2
  91. package/server/constants/release-good.ts +6 -0
  92. package/server/controllers/ecommerce/sellercraft-controller.ts +9 -2
  93. package/server/index.ts +1 -0
  94. package/server/service/delivery-order/delivery-order-query.ts +6 -1
  95. package/server/service/draft-release-good/draft-release-good-mutation.ts +734 -0
  96. package/server/service/draft-release-good/draft-release-good-query.ts +314 -0
  97. package/server/service/draft-release-good/draft-release-good-type.ts +261 -0
  98. package/server/service/draft-release-good/draft-release-good.ts +270 -0
  99. package/server/service/draft-release-good/index.ts +9 -0
  100. package/server/service/goods-receival-note/goods-receival-note-query.ts +1 -0
  101. package/server/service/index.ts +51 -21
  102. package/server/service/order-inventory/order-inventory-query.ts +44 -5
  103. package/server/service/order-inventory/order-inventory-types.ts +6 -0
  104. package/server/service/order-inventory/order-inventory.ts +5 -5
  105. package/server/service/order-product/order-product-types.ts +2 -2
  106. package/server/service/order-product/order-product.ts +45 -12
  107. package/server/service/order-tote/index.ts +9 -0
  108. package/server/service/order-tote/order-tote-mutation.ts +30 -0
  109. package/server/service/order-tote/order-tote-query.ts +114 -0
  110. package/server/service/order-tote/order-tote-types.ts +47 -0
  111. package/server/service/order-tote/order-tote.ts +62 -0
  112. package/server/service/order-tote-item/index.ts +9 -0
  113. package/server/service/order-tote-item/order-tote-item-mutation.ts +30 -0
  114. package/server/service/order-tote-item/order-tote-item-query.ts +88 -0
  115. package/server/service/order-tote-item/order-tote-item-types.ts +56 -0
  116. package/server/service/order-tote-item/order-tote-item.ts +72 -0
  117. package/server/service/order-tote-seal/index.ts +9 -0
  118. package/server/service/order-tote-seal/order-tote-seal-mutation.ts +30 -0
  119. package/server/service/order-tote-seal/order-tote-seal-query.ts +60 -0
  120. package/server/service/order-tote-seal/order-tote-seal-types.ts +41 -0
  121. package/server/service/order-tote-seal/order-tote-seal.ts +46 -0
  122. package/server/service/others/other-query.ts +168 -0
  123. package/server/service/others/other-types.ts +18 -0
  124. package/server/service/release-good/release-good-mutation.ts +28 -5
  125. package/server/service/release-good/release-good-query.ts +77 -37
  126. package/server/service/release-good/release-good.ts +31 -9
  127. package/server/service/reverse-kitting-order-inventory/reverse-kitting-order-inventory-query.ts +16 -6
  128. package/server/service/shipping-order/shipping-order-mutation.ts +2 -2
  129. package/server/utils/inventory-util.ts +315 -105
  130. package/server/utils/order-no-generator.ts +17 -6
@@ -0,0 +1,563 @@
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.upsertDraftReleaseGoodProducts = exports.updateDraftReleaseGoodFunction = exports.createDraftReleaseGoodFunction = exports.upsertDraftReleaseGoodFunction = exports.DraftReleaseGoodMutation = void 0;
16
+ const graphql_upload_1 = require("graphql-upload");
17
+ const type_graphql_1 = require("type-graphql");
18
+ const typeorm_1 = require("typeorm");
19
+ const attachment_base_1 = require("@things-factory/attachment-base");
20
+ const biz_base_1 = require("@things-factory/biz-base");
21
+ const id_rule_base_1 = require("@things-factory/id-rule-base");
22
+ const product_base_1 = require("@things-factory/product-base");
23
+ const setting_base_1 = require("@things-factory/setting-base");
24
+ // import { Location } from '@things-factory/warehouse-base'
25
+ const __1 = require("../");
26
+ const constants_1 = require("../../constants");
27
+ const errors_1 = require("../../errors");
28
+ const utils_1 = require("../../utils");
29
+ const order_product_types_1 = require("../order-product/order-product-types");
30
+ const release_good_mutation_1 = require("../release-good/release-good-mutation");
31
+ const release_good_query_1 = require("../release-good/release-good-query");
32
+ const shipping_order_1 = require("../shipping-order/shipping-order");
33
+ const shipping_order_types_1 = require("../shipping-order/shipping-order-types");
34
+ // import {
35
+ // checkArrivedNoticeFunction,
36
+ // confirmArrivalNoticeFunction,
37
+ // generateArrivalNoticeFunction,
38
+ // receiveArrivalNoticeFunction
39
+ // } from '../arrival-notice/arrival-notice-mutation'
40
+ const draft_release_good_query_1 = require("./draft-release-good-query");
41
+ let DraftReleaseGoodMutation = class DraftReleaseGoodMutation {
42
+ async upsertDraftReleaseGood(context, draftReleaseGood, orderProducts, files, shippingOrder) {
43
+ try {
44
+ const { tx } = context.state;
45
+ const createdDraftReleaseGood = await upsertDraftReleaseGoodFunction(null, draftReleaseGood, orderProducts, shippingOrder, files, context, tx);
46
+ return createdDraftReleaseGood;
47
+ }
48
+ catch (error) {
49
+ throw error;
50
+ }
51
+ }
52
+ async createDraftReleaseGood(draftReleaseGood, context) {
53
+ const { domain, user, tx } = context.state;
54
+ let drg = await tx.getRepository(__1.DraftReleaseGood).save(Object.assign(Object.assign({}, draftReleaseGood), { domain, status: 'INSUFFICIENT', creator: user, updater: user }));
55
+ // add order products
56
+ return drg;
57
+ }
58
+ async updateDraftReleaseGood(id, patch, context) {
59
+ const { domain, user, tx } = context.state;
60
+ const repository = tx.getRepository(__1.DraftReleaseGood);
61
+ const draftReleaseGood = await repository.findOne({
62
+ where: { domain, id }
63
+ });
64
+ return await repository.save(Object.assign(Object.assign(Object.assign({}, draftReleaseGood), patch), { updater: user }));
65
+ }
66
+ async updateMultipleDraftReleaseGood(patches, context) {
67
+ const { domain, user, tx } = context.state;
68
+ let results = [];
69
+ const _createRecords = patches.filter((patch) => patch.cuFlag.toUpperCase() === '+');
70
+ const _updateRecords = patches.filter((patch) => patch.cuFlag.toUpperCase() === 'M');
71
+ const draftReleaseGoodRepo = tx.getRepository(__1.DraftReleaseGood);
72
+ if (_createRecords.length > 0) {
73
+ for (let i = 0; i < _createRecords.length; i++) {
74
+ const newRecord = _createRecords[i];
75
+ const result = await draftReleaseGoodRepo.save(Object.assign(Object.assign({}, newRecord), { domain, creator: user, updater: user }));
76
+ results.push(Object.assign(Object.assign({}, result), { cuFlag: '+' }));
77
+ }
78
+ }
79
+ if (_updateRecords.length > 0) {
80
+ for (let i = 0; i < _updateRecords.length; i++) {
81
+ const newRecord = _updateRecords[i];
82
+ const draftReleaseGood = await draftReleaseGoodRepo.findOne(newRecord.id);
83
+ const result = await draftReleaseGoodRepo.save(Object.assign(Object.assign(Object.assign({}, draftReleaseGood), newRecord), { updater: user }));
84
+ results.push(Object.assign(Object.assign({}, result), { cuFlag: 'M' }));
85
+ }
86
+ }
87
+ return results;
88
+ }
89
+ async deleteDraftReleaseGood(id, context) {
90
+ const { domain, tx } = context.state;
91
+ await tx.getRepository(__1.DraftReleaseGood).delete({ domain, id });
92
+ return true;
93
+ }
94
+ async deleteDraftReleaseGoods(ids, context) {
95
+ const { domain, tx } = context.state;
96
+ await tx.getRepository(__1.DraftReleaseGood).delete({
97
+ domain,
98
+ id: (0, typeorm_1.In)(ids)
99
+ });
100
+ return true;
101
+ }
102
+ async generateReleaseGoodsFromDraft(context, ids
103
+ // @Arg('rawReleaseGoods', type => [NewReleaseGood], { nullable: true }) rawReleaseGoods: NewReleaseGood[],
104
+ // @Arg('bizplaceId', type => String) bizplaceId: string
105
+ ) {
106
+ var _a;
107
+ const { domain, user, tx } = context.state;
108
+ const updatableDraftOrders = await tx.getRepository(__1.DraftReleaseGood).find({
109
+ where: {
110
+ domain,
111
+ id: (0, typeorm_1.In)(ids),
112
+ status: constants_1.DRAFT_RELEASE_ORDER_STATUS.DRAFT
113
+ },
114
+ relations: [
115
+ 'orderProducts',
116
+ 'orderProducts.product',
117
+ 'orderProducts.productBundle',
118
+ 'shippingOrder',
119
+ 'bizplace',
120
+ 'domain',
121
+ 'creator',
122
+ 'updater'
123
+ ]
124
+ });
125
+ if (updatableDraftOrders.length > 0) {
126
+ let createdReleaseGoods = [];
127
+ const settingRepo = (tx === null || tx === void 0 ? void 0 : tx.getRepository(setting_base_1.Setting)) || (0, typeorm_1.getRepository)(setting_base_1.Setting);
128
+ const roNoSetting = await settingRepo.findOne({
129
+ where: {
130
+ domain,
131
+ name: constants_1.ORDER_NUMBER_SETTING_KEY.RO_NUMBER_RULE
132
+ }
133
+ });
134
+ for (let index = 0; index < updatableDraftOrders.length; index++) {
135
+ const draftOrder = updatableDraftOrders[index];
136
+ let foundPermittedBizplace;
137
+ let companyBizplace;
138
+ if ((_a = draftOrder === null || draftOrder === void 0 ? void 0 : draftOrder.bizplace) === null || _a === void 0 ? void 0 : _a.id) {
139
+ foundPermittedBizplace = await tx.getRepository(biz_base_1.Bizplace).findOne(draftOrder.bizplace.id, {
140
+ relations: ['company', 'company.domain']
141
+ });
142
+ const companyDomain = foundPermittedBizplace.company.domain;
143
+ companyBizplace = await tx.getRepository(biz_base_1.Bizplace).findOne({ where: { domain: companyDomain } });
144
+ }
145
+ else {
146
+ return false;
147
+ }
148
+ const bizplaces = [foundPermittedBizplace, companyBizplace];
149
+ let productInventory = await utils_1.InventoryUtil.bizplaceProductInventory(bizplaces, {
150
+ filters: [
151
+ {
152
+ name: 'productId',
153
+ operator: 'in',
154
+ value: [
155
+ ...draftOrder.orderProducts
156
+ .filter(itm => itm === null || itm === void 0 ? void 0 : itm.product)
157
+ .map(itm => {
158
+ return itm.product.id;
159
+ }),
160
+ ...draftOrder.orderProducts
161
+ .filter(itm => itm === null || itm === void 0 ? void 0 : itm.productBundle)
162
+ .map(itm => {
163
+ return itm.productBundle.id;
164
+ })
165
+ ]
166
+ }
167
+ ]
168
+ }, context, tx);
169
+ draftOrder.orderProducts = draftOrder.orderProducts.map(itm => {
170
+ let foundProductInv = productInventory.items.find(i => {
171
+ var _a, _b;
172
+ return (i.productId == ((_a = itm === null || itm === void 0 ? void 0 : itm.product) === null || _a === void 0 ? void 0 : _a.id) || i.productId == ((_b = itm === null || itm === void 0 ? void 0 : itm.productBundle) === null || _b === void 0 ? void 0 : _b.id)) &&
173
+ i.packingType == itm.packingType &&
174
+ i.packingSize == itm.packingSize &&
175
+ i.uom == itm.uom &&
176
+ itm.releaseQty <= i.remainQty;
177
+ });
178
+ return Object.assign(Object.assign({}, itm), { status: foundProductInv ? 'suffice' : 'insufficient' });
179
+ });
180
+ let insufficient = draftOrder.orderProducts.find(op => op.status == 'insufficient');
181
+ if (!insufficient) {
182
+ //create RO
183
+ let releaseGood = Object.assign({}, draftOrder);
184
+ delete releaseGood.id;
185
+ delete releaseGood.name;
186
+ delete releaseGood.createdAt;
187
+ delete releaseGood.createdBy;
188
+ delete releaseGood.updatedAt;
189
+ delete releaseGood.updatedBy;
190
+ let orderInventories = [];
191
+ for (let index = 0; index < draftOrder.orderProducts.length; index++) {
192
+ const itm = draftOrder.orderProducts[index];
193
+ let data = [];
194
+ if (itm.productBundle) {
195
+ let bundle = await tx.getRepository(product_base_1.ProductBundle).findOne({
196
+ where: { id: itm.productBundle.id },
197
+ relations: [
198
+ 'productBundleSettings',
199
+ 'productBundleSettings.productDetail',
200
+ 'productBundleSettings.product'
201
+ ]
202
+ });
203
+ for (let index2 = 0; index2 < bundle.productBundleSettings.length; index2++) {
204
+ const objProductBundleSetting = bundle.productBundleSettings[index2];
205
+ data.push({
206
+ sku: objProductBundleSetting.product.sku,
207
+ packing_type: objProductBundleSetting.productDetail.packingType,
208
+ packing_size: objProductBundleSetting.productDetail.packingSize,
209
+ uom: objProductBundleSetting.productDetail.uom,
210
+ release_qty: objProductBundleSetting.bundleQty * itm.releaseQty,
211
+ assignedQty: undefined,
212
+ assignedUomValue: undefined,
213
+ releaseUomValue: undefined
214
+ });
215
+ }
216
+ }
217
+ else {
218
+ data = [
219
+ {
220
+ sku: itm.product.sku,
221
+ packing_type: itm.packingType,
222
+ packing_size: itm.packingSize,
223
+ uom: itm.uom,
224
+ release_qty: itm.releaseQty,
225
+ assignedQty: undefined,
226
+ assignedUomValue: undefined,
227
+ releaseUomValue: undefined
228
+ }
229
+ ];
230
+ }
231
+ data.forEach(data => {
232
+ let existingOI = orderInventories.find(itm => itm.sku == data.sku &&
233
+ itm.packing_type == data.packing_type &&
234
+ itm.packing_size == data.packing_size &&
235
+ itm.uom == data.uom);
236
+ if (existingOI) {
237
+ existingOI.release_qty = existingOI.release_qty + data.release_qty;
238
+ }
239
+ else {
240
+ orderInventories.push(data);
241
+ }
242
+ });
243
+ }
244
+ try {
245
+ await (0, typeorm_1.getConnection)().transaction(async (childTx) => {
246
+ let availableItems = await (0, release_good_query_1.bulkReleaseGoodsAvailableItemsFunction)(orderInventories, draftOrder.bizplace.id, context, childTx);
247
+ if (availableItems.some(item => !item.release_qty || item.release_qty > item.assignedQty))
248
+ throw new errors_1.ValidationError(Object.assign(Object.assign({}, errors_1.ValidationError.ERROR_CODES.INSUFFICIENT_STOCK), { detail: { data: JSON.stringify(availableItems) } }));
249
+ // update orderInventories if availableItems are valid
250
+ releaseGood.orderInventories = availableItems.map(itm => {
251
+ return Object.assign(Object.assign({}, itm), { releaseQty: itm.release_qty });
252
+ });
253
+ let createdReleaseGood = await (0, release_good_mutation_1.bulkGenerateReleaseGood)(releaseGood, releaseGood.bizplace.id, roNoSetting, domain, user, childTx);
254
+ await childTx
255
+ .getRepository(__1.DraftReleaseGood)
256
+ .update({ id: draftOrder.id }, { releaseGood: createdReleaseGood, status: constants_1.DRAFT_RELEASE_ORDER_STATUS.SUBMITTED });
257
+ createdReleaseGood = await (0, release_good_mutation_1.confirmReleaseGood)(createdReleaseGood.name, context, childTx);
258
+ });
259
+ }
260
+ catch (error) {
261
+ console.error(error);
262
+ }
263
+ }
264
+ }
265
+ }
266
+ return true;
267
+ }
268
+ };
269
+ __decorate([
270
+ (0, type_graphql_1.Directive)('@privilege(category: "order_customer", privilege: "mutation")'),
271
+ (0, type_graphql_1.Directive)('@transaction'),
272
+ (0, type_graphql_1.Mutation)(returns => __1.DraftReleaseGood),
273
+ __param(0, (0, type_graphql_1.Ctx)()),
274
+ __param(1, (0, type_graphql_1.Arg)('draftReleaseGood', type => __1.DraftReleaseGoodPatch)),
275
+ __param(2, (0, type_graphql_1.Arg)('orderProducts', type => [order_product_types_1.OrderProductPatch])),
276
+ __param(3, (0, type_graphql_1.Arg)('files', type => [graphql_upload_1.GraphQLUpload], { nullable: true })),
277
+ __param(4, (0, type_graphql_1.Arg)('shippingOrder', type => shipping_order_types_1.ShippingOrderPatch, { nullable: true })),
278
+ __metadata("design:type", Function),
279
+ __metadata("design:paramtypes", [Object, __1.DraftReleaseGoodPatch, Array, Array, shipping_order_types_1.ShippingOrderPatch]),
280
+ __metadata("design:returntype", Promise)
281
+ ], DraftReleaseGoodMutation.prototype, "upsertDraftReleaseGood", null);
282
+ __decorate([
283
+ (0, type_graphql_1.Directive)('@transaction'),
284
+ (0, type_graphql_1.Mutation)(returns => __1.DraftReleaseGood, { description: 'To create new DraftReleaseGood' }),
285
+ __param(0, (0, type_graphql_1.Arg)('draftReleaseGood', type => __1.NewDraftReleaseGood, { nullable: true })),
286
+ __param(1, (0, type_graphql_1.Ctx)()),
287
+ __metadata("design:type", Function),
288
+ __metadata("design:paramtypes", [__1.NewDraftReleaseGood, Object]),
289
+ __metadata("design:returntype", Promise)
290
+ ], DraftReleaseGoodMutation.prototype, "createDraftReleaseGood", null);
291
+ __decorate([
292
+ (0, type_graphql_1.Directive)('@transaction'),
293
+ (0, type_graphql_1.Mutation)(returns => __1.DraftReleaseGood, { description: 'To modify DraftReleaseGood information' }),
294
+ __param(0, (0, type_graphql_1.Arg)('id')),
295
+ __param(1, (0, type_graphql_1.Arg)('patch', type => __1.DraftReleaseGoodPatch)),
296
+ __param(2, (0, type_graphql_1.Ctx)()),
297
+ __metadata("design:type", Function),
298
+ __metadata("design:paramtypes", [String, __1.DraftReleaseGoodPatch, Object]),
299
+ __metadata("design:returntype", Promise)
300
+ ], DraftReleaseGoodMutation.prototype, "updateDraftReleaseGood", null);
301
+ __decorate([
302
+ (0, type_graphql_1.Directive)('@transaction'),
303
+ (0, type_graphql_1.Mutation)(returns => [__1.DraftReleaseGood], { description: "To modify multiple DraftReleaseGoods' information" }),
304
+ __param(0, (0, type_graphql_1.Arg)('patches', type => [__1.DraftReleaseGoodPatch])),
305
+ __param(1, (0, type_graphql_1.Ctx)()),
306
+ __metadata("design:type", Function),
307
+ __metadata("design:paramtypes", [Array, Object]),
308
+ __metadata("design:returntype", Promise)
309
+ ], DraftReleaseGoodMutation.prototype, "updateMultipleDraftReleaseGood", null);
310
+ __decorate([
311
+ (0, type_graphql_1.Directive)('@transaction'),
312
+ (0, type_graphql_1.Mutation)(returns => Boolean, { description: 'To delete DraftReleaseGood' }),
313
+ __param(0, (0, type_graphql_1.Arg)('id')),
314
+ __param(1, (0, type_graphql_1.Ctx)()),
315
+ __metadata("design:type", Function),
316
+ __metadata("design:paramtypes", [String, Object]),
317
+ __metadata("design:returntype", Promise)
318
+ ], DraftReleaseGoodMutation.prototype, "deleteDraftReleaseGood", null);
319
+ __decorate([
320
+ (0, type_graphql_1.Directive)('@transaction'),
321
+ (0, type_graphql_1.Mutation)(returns => Boolean, { description: 'To delete multiple draftReleaseGoods' }),
322
+ __param(0, (0, type_graphql_1.Arg)('ids', type => [String])),
323
+ __param(1, (0, type_graphql_1.Ctx)()),
324
+ __metadata("design:type", Function),
325
+ __metadata("design:paramtypes", [Array, Object]),
326
+ __metadata("design:returntype", Promise)
327
+ ], DraftReleaseGoodMutation.prototype, "deleteDraftReleaseGoods", null);
328
+ __decorate([
329
+ (0, type_graphql_1.Directive)('@privilege(category: "order_customer", privilege: "mutation")'),
330
+ (0, type_graphql_1.Directive)('@transaction'),
331
+ (0, type_graphql_1.Mutation)(returns => Boolean, { description: 'To generate Release Goods from Draft' }),
332
+ __param(0, (0, type_graphql_1.Ctx)()),
333
+ __param(1, (0, type_graphql_1.Arg)('ids', type => [String])),
334
+ __metadata("design:type", Function),
335
+ __metadata("design:paramtypes", [Object, Array]),
336
+ __metadata("design:returntype", Promise)
337
+ ], DraftReleaseGoodMutation.prototype, "generateReleaseGoodsFromDraft", null);
338
+ DraftReleaseGoodMutation = __decorate([
339
+ (0, type_graphql_1.Resolver)(__1.DraftReleaseGood)
340
+ ], DraftReleaseGoodMutation);
341
+ exports.DraftReleaseGoodMutation = DraftReleaseGoodMutation;
342
+ async function upsertDraftReleaseGoodFunction(_, draftReleaseGood, orderProducts, shippingOrder, files, context, tx) {
343
+ if (!draftReleaseGood.id) {
344
+ draftReleaseGood = await createDraftReleaseGoodFunction(_, draftReleaseGood, orderProducts, shippingOrder, files, context, tx);
345
+ }
346
+ else {
347
+ draftReleaseGood = await updateDraftReleaseGoodFunction(_, draftReleaseGood, orderProducts, shippingOrder, files, context, tx);
348
+ }
349
+ return draftReleaseGood;
350
+ }
351
+ exports.upsertDraftReleaseGoodFunction = upsertDraftReleaseGoodFunction;
352
+ async function createDraftReleaseGoodFunction(_, draftReleaseGood, orderProducts, shippingOrder, files, context, tx) {
353
+ var _a;
354
+ const { domain, user } = context.state;
355
+ let myBizplace;
356
+ let orderNo = '';
357
+ let arrError = [];
358
+ const settingRepo = (tx === null || tx === void 0 ? void 0 : tx.getRepository(setting_base_1.Setting)) || (0, typeorm_1.getRepository)(setting_base_1.Setting);
359
+ if ((_a = draftReleaseGood === null || draftReleaseGood === void 0 ? void 0 : draftReleaseGood.bizplace) === null || _a === void 0 ? void 0 : _a.id) {
360
+ const permittedBizplaces = await (0, biz_base_1.getPermittedBizplaces)(domain, user);
361
+ let foundPermittedBizplace = permittedBizplaces.find(biz => biz.id == draftReleaseGood.bizplace.id);
362
+ if (!foundPermittedBizplace)
363
+ throw new Error(`This user does not permitted for this company`);
364
+ draftReleaseGood.bizplace = foundPermittedBizplace;
365
+ }
366
+ else {
367
+ arrError.push(`No bizplace was selected`);
368
+ }
369
+ if (arrError.length > 0) {
370
+ throw new Error(arrError.join(', '));
371
+ }
372
+ // // find DRO number rule setting
373
+ const droNoSetting = await settingRepo.findOne({
374
+ where: {
375
+ domain,
376
+ name: constants_1.ORDER_NUMBER_SETTING_KEY.DO_NUMBER_RULE
377
+ }
378
+ });
379
+ if (droNoSetting) {
380
+ orderNo = await (0, id_rule_base_1.generateId)({ domain, type: constants_1.ORDER_NUMBER_RULE_TYPE.DRO_NUMBER, seed: {} });
381
+ }
382
+ else {
383
+ orderNo = utils_1.OrderNoGenerator.draftReleaseGood();
384
+ }
385
+ // // 1. Create draft release good
386
+ const createdDraftReleaseGood = await tx.getRepository(__1.DraftReleaseGood).save(Object.assign(Object.assign({}, draftReleaseGood), { name: orderNo, status: constants_1.DRAFT_RELEASE_ORDER_STATUS.DRAFT, domain, creator: user, updater: user }));
387
+ // // 2. Create draft release good product
388
+ await upsertDraftReleaseGoodProducts(domain, draftReleaseGood.bizplace, createdDraftReleaseGood, orderProducts, user, tx);
389
+ // // 3. Create Attachments
390
+ if (files === null || files === void 0 ? void 0 : files.length) {
391
+ const attachments = files.map(attachment => {
392
+ return {
393
+ file: attachment,
394
+ refBy: createdDraftReleaseGood.id,
395
+ category: constants_1.ATTACHMENT_TYPE.DGRN
396
+ };
397
+ });
398
+ await (0, attachment_base_1.createAttachments)(_, { attachments }, context);
399
+ }
400
+ return createdDraftReleaseGood;
401
+ }
402
+ exports.createDraftReleaseGoodFunction = createDraftReleaseGoodFunction;
403
+ async function updateDraftReleaseGoodFunction(_, draftReleaseGood, orderProducts, shippingOrder, files, context, tx) {
404
+ var _a;
405
+ const { domain, user } = context.state;
406
+ let existingDraftReleaseGood = await (0, draft_release_good_query_1.getDraftReleaseGoodFunction)(_, draftReleaseGood.name, context, tx);
407
+ if ((_a = draftReleaseGood === null || draftReleaseGood === void 0 ? void 0 : draftReleaseGood.bizplace) === null || _a === void 0 ? void 0 : _a.id) {
408
+ const permittedBizplaces = await (0, biz_base_1.getPermittedBizplaces)(domain, user);
409
+ let foundPermittedBizplace = permittedBizplaces.find(biz => biz.id == draftReleaseGood.bizplace.id);
410
+ if (!foundPermittedBizplace)
411
+ throw new Error(`This user does not permitted for this company`);
412
+ draftReleaseGood.bizplace = foundPermittedBizplace;
413
+ }
414
+ if (shippingOrder) {
415
+ // case to update existing shippingOrder
416
+ if (existingDraftReleaseGood.shippingOrder) {
417
+ await tx.getRepository(shipping_order_1.ShippingOrder).update(existingDraftReleaseGood.shippingOrder.id, shippingOrder);
418
+ }
419
+ else {
420
+ let newShippingOrder = await tx.getRepository(shipping_order_1.ShippingOrder).save(Object.assign(Object.assign({}, shippingOrder), { name: utils_1.OrderNoGenerator.shippingOrder(), domain, bizplace: draftReleaseGood.bizplace, status: constants_1.ORDER_STATUS.PENDING, creator: user, updater: user }));
421
+ draftReleaseGood.shippingOrder = newShippingOrder;
422
+ }
423
+ }
424
+ else {
425
+ // case to delete existing shippingOrder
426
+ if (existingDraftReleaseGood.shippingOrder) {
427
+ await tx.getRepository(shipping_order_1.ShippingOrder).delete(existingDraftReleaseGood.shippingOrder);
428
+ }
429
+ }
430
+ // // 1. Update draft release good
431
+ const updateDraftReleaseGood = await tx.getRepository(__1.DraftReleaseGood).save(Object.assign(Object.assign(Object.assign({}, existingDraftReleaseGood), draftReleaseGood), { domain, creator: user, updater: user }));
432
+ // // 2. Update draft release good product
433
+ await upsertDraftReleaseGoodProducts(domain, draftReleaseGood.bizplace, draftReleaseGood, orderProducts, user, tx);
434
+ // // 3. Remove Purchase Order Attachment
435
+ const foundAttachments = await (0, typeorm_1.getRepository)(attachment_base_1.Attachment).find({
436
+ where: {
437
+ domain,
438
+ refBy: draftReleaseGood.id,
439
+ category: constants_1.ATTACHMENT_TYPE.DGRN
440
+ }
441
+ });
442
+ // // 4. Remove All Attachment
443
+ if (foundAttachments === null || foundAttachments === void 0 ? void 0 : foundAttachments.length) {
444
+ await (0, attachment_base_1.deleteAttachmentsByRef)(_, { refBys: foundAttachments.map(file => file.refBy) }, context);
445
+ }
446
+ // // 5. Add New Attachment
447
+ if ((files === null || files === void 0 ? void 0 : files.length) > 0) {
448
+ const attachments = files.map(attachment => {
449
+ return {
450
+ file: attachment,
451
+ refBy: updateDraftReleaseGood.id,
452
+ category: constants_1.ATTACHMENT_TYPE.DGRN
453
+ };
454
+ });
455
+ await (0, attachment_base_1.createAttachments)(_, { attachments }, context);
456
+ }
457
+ return existingDraftReleaseGood;
458
+ }
459
+ exports.updateDraftReleaseGoodFunction = updateDraftReleaseGoodFunction;
460
+ async function upsertDraftReleaseGoodProducts(domain, bizplace, draftReleaseGood, orderProductsPatch, user, tx) {
461
+ try {
462
+ let orderProducts = [];
463
+ const draftReleaseGoodRepo = (tx === null || tx === void 0 ? void 0 : tx.getRepository(__1.DraftReleaseGood)) || (0, typeorm_1.getRepository)(__1.DraftReleaseGood);
464
+ const bizplaceRepo = (tx === null || tx === void 0 ? void 0 : tx.getRepository(biz_base_1.Bizplace)) || (0, typeorm_1.getRepository)(biz_base_1.Bizplace);
465
+ const orderProductRepo = (tx === null || tx === void 0 ? void 0 : tx.getRepository(__1.OrderProduct)) || (0, typeorm_1.getRepository)(__1.OrderProduct);
466
+ const productRepo = (tx === null || tx === void 0 ? void 0 : tx.getRepository(product_base_1.Product)) || (0, typeorm_1.getRepository)(product_base_1.Product);
467
+ const productBundleRepo = (tx === null || tx === void 0 ? void 0 : tx.getRepository(product_base_1.ProductBundle)) || (0, typeorm_1.getRepository)(product_base_1.ProductBundle);
468
+ draftReleaseGood = await draftReleaseGoodRepo.findOne({
469
+ where: { id: draftReleaseGood.id },
470
+ relations: [
471
+ 'orderProducts',
472
+ 'orderProducts.product',
473
+ 'orderProducts.productBundle',
474
+ 'orderProducts.creator',
475
+ 'orderProducts.updater'
476
+ ]
477
+ });
478
+ // Remove all existing order products that do not exist in current input
479
+ let removeOP = draftReleaseGood.orderProducts.filter(existingOP => orderProductsPatch.filter(inOP => inOP.id == existingOP.id).length == 0);
480
+ // removeOP.forEach(async op => {
481
+ // await orderProductRepo.delete(op)
482
+ // })
483
+ if (removeOP.length > 0)
484
+ await orderProductRepo.delete(removeOP.map(itm => itm.id));
485
+ bizplace = await bizplaceRepo.findOne(bizplace.id, {
486
+ relations: ['domain', 'company', 'company.domain']
487
+ });
488
+ orderProducts = await Promise.all(orderProductsPatch.map(async (op) => {
489
+ var _a, _b;
490
+ if (!(op === null || op === void 0 ? void 0 : op.id))
491
+ delete op.id;
492
+ const customerCompanyDomain = bizplace.company.domain;
493
+ let product = null;
494
+ let productBundle = null;
495
+ let existingOP = draftReleaseGood.orderProducts.find(existOP => existOP.id == op.id);
496
+ let updatePatch = Object.assign(Object.assign(Object.assign({}, existingOP), op), { domain, batchId: '', packQty: 0, actualPackQty: 0, palletQty: 0, actualPalletQty: 0, bizplace: bizplace, name: (op === null || op === void 0 ? void 0 : op.id) ? op.name : utils_1.OrderNoGenerator.orderProduct(), draftReleaseGood: draftReleaseGood, status: draftReleaseGood.status, creator: (op === null || op === void 0 ? void 0 : op.id) ? op.creator : user, updater: user });
497
+ if ((_a = op === null || op === void 0 ? void 0 : op.product) === null || _a === void 0 ? void 0 : _a.id) {
498
+ product = await productRepo.findOne({
499
+ where: { domain: customerCompanyDomain, id: op.product.id }
500
+ });
501
+ updatePatch['product'] = product || undefined;
502
+ if (!product) {
503
+ productBundle = await productBundleRepo.findOne({
504
+ where: { domain: customerCompanyDomain, id: op.product.id }
505
+ });
506
+ updatePatch['productBundle'] = productBundle || undefined;
507
+ }
508
+ if (!product && !productBundle)
509
+ throw new Error(`product not found`);
510
+ }
511
+ else {
512
+ if (existingOP) {
513
+ product = existingOP.product;
514
+ productBundle = existingOP.productBundle;
515
+ updatePatch['product'] = existingOP.product || undefined;
516
+ updatePatch['productBundle'] = existingOP.productBundle || undefined;
517
+ }
518
+ else {
519
+ product = await productRepo.findOne({
520
+ where: { domain: customerCompanyDomain, sku: op.product.sku, deletedAt: (0, typeorm_1.IsNull)() },
521
+ relations: ['productDetails']
522
+ });
523
+ if (product) {
524
+ const productDetails = product.productDetails;
525
+ let selectedProductDetail;
526
+ if ((_b = op === null || op === void 0 ? void 0 : op.product) === null || _b === void 0 ? void 0 : _b.packingType) {
527
+ selectedProductDetail = productDetails.filter(pd => pd.packingType == op.product.packingType);
528
+ }
529
+ else {
530
+ selectedProductDetail = productDetails.filter(pd => pd.isDefault);
531
+ }
532
+ product.packingType = selectedProductDetail[0].packingType;
533
+ product.primaryUnit = selectedProductDetail[0].uom;
534
+ product.primaryValue = selectedProductDetail[0].uomValue;
535
+ }
536
+ updatePatch['product'] = product || undefined;
537
+ if (!product) {
538
+ productBundle = await productBundleRepo.findOne({
539
+ where: { domain: customerCompanyDomain, sku: op.product.sku }
540
+ });
541
+ updatePatch['productBundle'] = productBundle || undefined;
542
+ }
543
+ if (!product && !productBundle)
544
+ throw new Error(`product not found`);
545
+ }
546
+ }
547
+ updatePatch['packingType'] = (op === null || op === void 0 ? void 0 : op.packingType)
548
+ ? op.packingType
549
+ : (product === null || product === void 0 ? void 0 : product.packingType)
550
+ ? product.packingType
551
+ : productBundle.packingType;
552
+ updatePatch['uom'] = (op === null || op === void 0 ? void 0 : op.uom) ? op.uom : (product === null || product === void 0 ? void 0 : product.primaryUnit) ? product.primaryUnit : 'UNIT';
553
+ updatePatch['uomValue'] = (op === null || op === void 0 ? void 0 : op.uomValue) ? op.uomValue : (product === null || product === void 0 ? void 0 : product.primaryValue) ? product.primaryValue : 0;
554
+ return updatePatch;
555
+ }));
556
+ await orderProductRepo.save(orderProducts);
557
+ }
558
+ catch (error) {
559
+ throw error;
560
+ }
561
+ }
562
+ exports.upsertDraftReleaseGoodProducts = upsertDraftReleaseGoodProducts;
563
+ //# sourceMappingURL=draft-release-good-mutation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"draft-release-good-mutation.js","sourceRoot":"","sources":["../../../server/service/draft-release-good/draft-release-good-mutation.ts"],"names":[],"mappings":"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"}