@things-factory/sales-base 6.0.0-alpha.1 → 6.0.0-alpha.12

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 (97) hide show
  1. package/dist-server/controllers/ecommerce/ecommerce-controller.js +2 -2
  2. package/dist-server/controllers/ecommerce/ecommerce-controller.js.map +1 -1
  3. package/dist-server/controllers/ecommerce/sellercraft-controller.js +3 -3
  4. package/dist-server/controllers/ecommerce/sellercraft-controller.js.map +1 -1
  5. package/dist-server/service/arrival-notice/arrival-notice-mutation.js +26 -13
  6. package/dist-server/service/arrival-notice/arrival-notice-mutation.js.map +1 -1
  7. package/dist-server/service/arrival-notice/arrival-notice-query.js +2 -2
  8. package/dist-server/service/arrival-notice/arrival-notice-query.js.map +1 -1
  9. package/dist-server/service/arrival-notice/arrival-notice-types.js +4 -0
  10. package/dist-server/service/arrival-notice/arrival-notice-types.js.map +1 -1
  11. package/dist-server/service/arrival-notice/arrival-notice.js +5 -0
  12. package/dist-server/service/arrival-notice/arrival-notice.js.map +1 -1
  13. package/dist-server/service/claim/claim-mutation.js +9 -9
  14. package/dist-server/service/claim/claim-mutation.js.map +1 -1
  15. package/dist-server/service/claim/claim-query.js +4 -4
  16. package/dist-server/service/claim/claim-query.js.map +1 -1
  17. package/dist-server/service/delivery-order/delivery-order-mutation.js +1 -1
  18. package/dist-server/service/delivery-order/delivery-order-mutation.js.map +1 -1
  19. package/dist-server/service/delivery-order/delivery-order-query.js.map +1 -1
  20. package/dist-server/service/draft-release-good/draft-release-good-mutation.js +7 -5
  21. package/dist-server/service/draft-release-good/draft-release-good-mutation.js.map +1 -1
  22. package/dist-server/service/draft-release-good/draft-release-good-query.js +4 -4
  23. package/dist-server/service/draft-release-good/draft-release-good-query.js.map +1 -1
  24. package/dist-server/service/draft-release-good/draft-release-good.js +5 -0
  25. package/dist-server/service/draft-release-good/draft-release-good.js.map +1 -1
  26. package/dist-server/service/goods-receival-note/goods-receival-note-query.js +3 -3
  27. package/dist-server/service/goods-receival-note/goods-receival-note-query.js.map +1 -1
  28. package/dist-server/service/job-sheet/job-sheet-mutation.js +1 -1
  29. package/dist-server/service/job-sheet/job-sheet-mutation.js.map +1 -1
  30. package/dist-server/service/job-sheet/job-sheet-query.js +1 -1
  31. package/dist-server/service/job-sheet/job-sheet-query.js.map +1 -1
  32. package/dist-server/service/order-inventory/order-inventory-query.js +2 -2
  33. package/dist-server/service/order-inventory/order-inventory-query.js.map +1 -1
  34. package/dist-server/service/order-tote/order-tote-query.js +2 -2
  35. package/dist-server/service/order-tote/order-tote-query.js.map +1 -1
  36. package/dist-server/service/others/other-query.js +19 -11
  37. package/dist-server/service/others/other-query.js.map +1 -1
  38. package/dist-server/service/purchase-order/purchase-order-mutation.js +2 -2
  39. package/dist-server/service/purchase-order/purchase-order-mutation.js.map +1 -1
  40. package/dist-server/service/purchase-order/purchase-order-query.js +1 -1
  41. package/dist-server/service/purchase-order/purchase-order-query.js.map +1 -1
  42. package/dist-server/service/release-good/release-good-mutation.js +90 -55
  43. package/dist-server/service/release-good/release-good-mutation.js.map +1 -1
  44. package/dist-server/service/release-good/release-good-query.js +3 -3
  45. package/dist-server/service/release-good/release-good-query.js.map +1 -1
  46. package/dist-server/service/release-good/release-good.js +5 -0
  47. package/dist-server/service/release-good/release-good.js.map +1 -1
  48. package/dist-server/service/retail-replenishment-order/retail-replenishment-order-mutation.js +3 -3
  49. package/dist-server/service/retail-replenishment-order/retail-replenishment-order-mutation.js.map +1 -1
  50. package/dist-server/service/reverse-kitting-order/reverse-kitting-order-mutation.js +3 -3
  51. package/dist-server/service/reverse-kitting-order/reverse-kitting-order-mutation.js.map +1 -1
  52. package/dist-server/service/reverse-kitting-order/reverse-kitting-order-query.js +3 -3
  53. package/dist-server/service/reverse-kitting-order/reverse-kitting-order-query.js.map +1 -1
  54. package/dist-server/service/reverse-kitting-order-inventory/reverse-kitting-order-inventory-mutation.js +1 -1
  55. package/dist-server/service/reverse-kitting-order-inventory/reverse-kitting-order-inventory-mutation.js.map +1 -1
  56. package/dist-server/service/shipping-order/shipping-order-mutation.js +1 -1
  57. package/dist-server/service/shipping-order/shipping-order-mutation.js.map +1 -1
  58. package/dist-server/service/shipping-order/shipping-order-query.js +1 -1
  59. package/dist-server/service/shipping-order/shipping-order-query.js.map +1 -1
  60. package/dist-server/service/transfer-order/transfer-order-mutation.js +3 -3
  61. package/dist-server/service/transfer-order/transfer-order-mutation.js.map +1 -1
  62. package/dist-server/service/vas-order/vas-order-query.js +1 -1
  63. package/dist-server/service/vas-order/vas-order-query.js.map +1 -1
  64. package/dist-server/tsconfig.tsbuildinfo +1 -1
  65. package/package.json +13 -13
  66. package/server/controllers/ecommerce/ecommerce-controller.ts +2 -2
  67. package/server/controllers/ecommerce/sellercraft-controller.ts +3 -3
  68. package/server/service/arrival-notice/arrival-notice-mutation.ts +21 -8
  69. package/server/service/arrival-notice/arrival-notice-query.ts +2 -2
  70. package/server/service/arrival-notice/arrival-notice-types.ts +3 -0
  71. package/server/service/arrival-notice/arrival-notice.ts +4 -0
  72. package/server/service/claim/claim-mutation.ts +9 -9
  73. package/server/service/claim/claim-query.ts +4 -4
  74. package/server/service/delivery-order/delivery-order-mutation.ts +17 -17
  75. package/server/service/delivery-order/delivery-order-query.ts +1 -1
  76. package/server/service/draft-release-good/draft-release-good-mutation.ts +7 -5
  77. package/server/service/draft-release-good/draft-release-good-query.ts +4 -4
  78. package/server/service/draft-release-good/draft-release-good.ts +4 -0
  79. package/server/service/goods-receival-note/goods-receival-note-query.ts +3 -3
  80. package/server/service/job-sheet/job-sheet-mutation.ts +1 -1
  81. package/server/service/job-sheet/job-sheet-query.ts +1 -1
  82. package/server/service/order-inventory/order-inventory-query.ts +2 -2
  83. package/server/service/order-tote/order-tote-query.ts +2 -2
  84. package/server/service/others/other-query.ts +17 -9
  85. package/server/service/purchase-order/purchase-order-mutation.ts +2 -2
  86. package/server/service/purchase-order/purchase-order-query.ts +1 -1
  87. package/server/service/release-good/release-good-mutation.ts +110 -59
  88. package/server/service/release-good/release-good-query.ts +3 -3
  89. package/server/service/release-good/release-good.ts +4 -0
  90. package/server/service/retail-replenishment-order/retail-replenishment-order-mutation.ts +3 -3
  91. package/server/service/reverse-kitting-order/reverse-kitting-order-mutation.ts +3 -3
  92. package/server/service/reverse-kitting-order/reverse-kitting-order-query.ts +3 -3
  93. package/server/service/reverse-kitting-order-inventory/reverse-kitting-order-inventory-mutation.ts +1 -1
  94. package/server/service/shipping-order/shipping-order-mutation.ts +1 -1
  95. package/server/service/shipping-order/shipping-order-query.ts +1 -1
  96. package/server/service/transfer-order/transfer-order-mutation.ts +3 -3
  97. package/server/service/vas-order/vas-order-query.ts +1 -1
@@ -54,7 +54,7 @@ let OtherQuery = class OtherQuery {
54
54
  });
55
55
  }
56
56
  const companyDomain = foundPermittedBizplace.company.domain;
57
- companyBizplace = await tx.getRepository(biz_base_1.Bizplace).findOne({ where: { domain: companyDomain } });
57
+ companyBizplace = await tx.getRepository(biz_base_1.Bizplace).findOne({ where: { domain: { id: companyDomain.id } } });
58
58
  }
59
59
  }
60
60
  const bizplaces = [foundPermittedBizplace, companyBizplace];
@@ -80,7 +80,7 @@ let OtherQuery = class OtherQuery {
80
80
  });
81
81
  }
82
82
  const companyDomain = foundPermittedBizplace.company.domain;
83
- companyBizplace = await tx.getRepository(biz_base_1.Bizplace).findOne({ where: { domain: companyDomain } });
83
+ companyBizplace = await tx.getRepository(biz_base_1.Bizplace).findOne({ where: { domain: { id: companyDomain.id } } });
84
84
  }
85
85
  }
86
86
  const bizplaces = [foundPermittedBizplace, companyBizplace];
@@ -111,7 +111,7 @@ let OtherQuery = class OtherQuery {
111
111
  });
112
112
  }
113
113
  const companyDomain = foundPermittedBizplace.company.domain;
114
- companyBizplace = await tx.getRepository(biz_base_1.Bizplace).findOne({ where: { domain: companyDomain } });
114
+ companyBizplace = await tx.getRepository(biz_base_1.Bizplace).findOne({ where: { domain: { id: companyDomain.id } } });
115
115
  }
116
116
  }
117
117
  const bizplaces = [foundPermittedBizplace, companyBizplace];
@@ -209,7 +209,7 @@ let OtherQuery = class OtherQuery {
209
209
  return (0, orderBy_1.default)(newOrderInventories, ['isError'], ['desc']);
210
210
  }
211
211
  async bulkUploadValidateOrderProducts(context, partnerBizplaceId, orderProducts) {
212
- var _a;
212
+ var _a, _b;
213
213
  const { domain, user, tx, bizplace } = context.state;
214
214
  const productDetailRepo = tx.getRepository(product_base_1.ProductDetail);
215
215
  let permittedBizplaces = await (0, biz_base_1.getPermittedBizplaces)(domain, user);
@@ -225,7 +225,7 @@ let OtherQuery = class OtherQuery {
225
225
  });
226
226
  }
227
227
  const companyDomain = foundPermittedBizplace.company.domain;
228
- companyBizplace = await tx.getRepository(biz_base_1.Bizplace).findOne({ where: { domain: companyDomain } });
228
+ companyBizplace = await tx.getRepository(biz_base_1.Bizplace).findOne({ where: { domain: { id: companyDomain.id } } });
229
229
  }
230
230
  }
231
231
  const bizplaces = [foundPermittedBizplace, companyBizplace];
@@ -238,7 +238,11 @@ let OtherQuery = class OtherQuery {
238
238
  if (strictProductSelectionSetting)
239
239
  strictProduct = strictProductSelectionSetting.value;
240
240
  const partnerStrictProductSelectionSetting = await tx.getRepository(setting_base_1.PartnerSetting).findOne({
241
- where: { setting: strictProductSelectionSetting, domain, partnerDomain: foundPermittedBizplace === null || foundPermittedBizplace === void 0 ? void 0 : foundPermittedBizplace.domain }
241
+ where: {
242
+ setting: { id: strictProductSelectionSetting.id },
243
+ domain: { id: domain.id },
244
+ partnerDomain: { id: (_b = foundPermittedBizplace === null || foundPermittedBizplace === void 0 ? void 0 : foundPermittedBizplace.domain) === null || _b === void 0 ? void 0 : _b.id }
245
+ }
242
246
  });
243
247
  if (partnerStrictProductSelectionSetting)
244
248
  strictProduct = partnerStrictProductSelectionSetting.value;
@@ -249,7 +253,7 @@ let OtherQuery = class OtherQuery {
249
253
  const foundProduct = await tx.getRepository(product_base_1.Product).findOne({
250
254
  where: {
251
255
  sku: productSKU,
252
- bizplace: companyBizplace
256
+ bizplace: { id: companyBizplace.id }
253
257
  }
254
258
  });
255
259
  let newOrderProduct;
@@ -299,7 +303,7 @@ let OtherQuery = class OtherQuery {
299
303
  return newOrderProducts;
300
304
  }
301
305
  async bulkUploadValidatePoOrderProducts(context, partnerBizplaceId, orderProducts) {
302
- var _a;
306
+ var _a, _b;
303
307
  const { domain, user, tx, bizplace } = context.state;
304
308
  const productDetailRepo = tx.getRepository(product_base_1.ProductDetail);
305
309
  let permittedBizplaces = await (0, biz_base_1.getPermittedBizplaces)(domain, user);
@@ -315,7 +319,7 @@ let OtherQuery = class OtherQuery {
315
319
  });
316
320
  }
317
321
  const companyDomain = foundPermittedBizplace.company.domain;
318
- companyBizplace = await tx.getRepository(biz_base_1.Bizplace).findOne({ where: { domain: companyDomain } });
322
+ companyBizplace = await tx.getRepository(biz_base_1.Bizplace).findOne({ where: { domain: { id: companyDomain.id } } });
319
323
  }
320
324
  }
321
325
  const bizplaces = [foundPermittedBizplace, companyBizplace];
@@ -328,7 +332,11 @@ let OtherQuery = class OtherQuery {
328
332
  if (strictProductSelectionSetting)
329
333
  strictProduct = strictProductSelectionSetting.value;
330
334
  const partnerStrictProductSelectionSetting = await tx.getRepository(setting_base_1.PartnerSetting).findOne({
331
- where: { setting: strictProductSelectionSetting, domain, partnerDomain: foundPermittedBizplace === null || foundPermittedBizplace === void 0 ? void 0 : foundPermittedBizplace.domain }
335
+ where: {
336
+ setting: { id: strictProductSelectionSetting.id },
337
+ domain: { id: domain.id },
338
+ partnerDomain: { id: (_b = foundPermittedBizplace === null || foundPermittedBizplace === void 0 ? void 0 : foundPermittedBizplace.domain) === null || _b === void 0 ? void 0 : _b.id }
339
+ }
332
340
  });
333
341
  if (partnerStrictProductSelectionSetting)
334
342
  strictProduct = partnerStrictProductSelectionSetting.value;
@@ -339,7 +347,7 @@ let OtherQuery = class OtherQuery {
339
347
  const foundProduct = await tx.getRepository(product_base_1.Product).findOne({
340
348
  where: {
341
349
  sku: productSKU,
342
- bizplace: companyBizplace
350
+ bizplace: { id: companyBizplace.id }
343
351
  }
344
352
  });
345
353
  let newOrderProduct;
@@ -1 +1 @@
1
- {"version":3,"file":"other-query.js","sourceRoot":"","sources":["../../../server/service/others/other-query.ts"],"names":[],"mappings":"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","sourcesContent":["import orderBy from 'lodash/orderBy'\nimport { Arg, Args, Ctx, Directive, Query, Resolver } from 'type-graphql'\nimport { EntityManager } from 'typeorm'\n\nimport { User } from '@things-factory/auth-base'\nimport { Bizplace, getPermittedBizplaces } from '@things-factory/biz-base'\nimport { Product, ProductDetail } from '@things-factory/product-base'\nimport { PartnerSetting, Setting } from '@things-factory/setting-base'\nimport { Domain, ListParam } from '@things-factory/shell'\n\nimport {\n InventoryProductGroup,\n InventoryProductGroupList,\n NewOrderInventory,\n NewOrderProduct,\n OrderInventory,\n OrderProduct\n} from '../'\nimport { InventoryUtil } from '../../utils'\n\n@Resolver()\nexport class OtherQuery {\n @Directive('@privilege(category: \"inventory\", privilege: \"query\")')\n @Directive('@transaction')\n @Query(returns => InventoryProductGroupList)\n async allBizplaceProductInventory(\n @Ctx() context: ResolverContext,\n @Args() params: ListParam\n ): Promise<InventoryProductGroupList> {\n const { domain, user, tx, bizplace }: { domain: Domain; user: User; tx: EntityManager; bizplace?: Bizplace } =\n context.state\n\n let permittedBizplaces: Bizplace[] = await getPermittedBizplaces(domain, user)\n\n let bizplaceId: any = params.filters.find(filter => filter.name === 'bizplace_id').value\n let foundPermittedBizplace: Bizplace\n let companyBizplace: Bizplace\n\n if (bizplaceId) {\n foundPermittedBizplace = permittedBizplaces.find(biz => biz.id == bizplaceId)\n\n if (foundPermittedBizplace) {\n if (!foundPermittedBizplace.company?.id) {\n foundPermittedBizplace = await tx.getRepository(Bizplace).findOne({\n where: { id: foundPermittedBizplace.id },\n relations: ['company', 'company.domain']\n })\n }\n const companyDomain: Domain = foundPermittedBizplace.company.domain\n companyBizplace = await tx.getRepository(Bizplace).findOne({ where: { domain: companyDomain } })\n }\n }\n\n const bizplaces: Bizplace[] = [foundPermittedBizplace, companyBizplace]\n if (bizplace) bizplaces.push(bizplace)\n\n const { items, total } = await InventoryUtil.bizplaceProductInventory(bizplaces, params, context, tx)\n\n return { items, total }\n }\n\n @Directive('@privilege(category: \"inventory\", privilege: \"query\")')\n @Directive('@transaction')\n @Query(returns => InventoryProductGroupList)\n async inventoryProductGroup(\n @Ctx() context: ResolverContext,\n @Args() params: ListParam\n ): Promise<InventoryProductGroupList> {\n const { domain, user, tx, bizplace }: { domain: Domain; user: User; tx: EntityManager; bizplace?: Bizplace } =\n context.state\n\n let permittedBizplaces: Bizplace[] = await getPermittedBizplaces(domain, user)\n\n let bizplaceId: any = params.filters.find(filter => filter.name === 'bizplace_id').value\n let foundPermittedBizplace: Bizplace\n let companyBizplace: Bizplace\n\n if (bizplaceId) {\n foundPermittedBizplace = permittedBizplaces.find(biz => biz.id == bizplaceId)\n\n if (foundPermittedBizplace) {\n if (!foundPermittedBizplace.company?.id) {\n foundPermittedBizplace = await tx.getRepository(Bizplace).findOne({\n where: { id: foundPermittedBizplace.id },\n relations: ['company', 'company.domain']\n })\n }\n const companyDomain: Domain = foundPermittedBizplace.company.domain\n companyBizplace = await tx.getRepository(Bizplace).findOne({ where: { domain: companyDomain } })\n }\n }\n\n const bizplaces: Bizplace[] = [foundPermittedBizplace, companyBizplace]\n if (bizplace) bizplaces.push(bizplace)\n\n const { items, total } = await InventoryUtil.bizplaceInventoryProductGroup(bizplaces, params, context, tx)\n\n return { items, total }\n }\n\n @Directive('@transaction')\n @Query(returns => InventoryProductGroupList)\n async inventoryProductGroupOpenAPI(\n @Ctx() context: ResolverContext,\n @Args() params: ListParam\n ): Promise<InventoryProductGroupList> {\n const { domain, user, tx, bizplace }: { domain: Domain; user: User; tx: EntityManager; bizplace?: Bizplace } =\n context.state\n\n let permittedBizplaces: Bizplace[] = await getPermittedBizplaces(domain, user)\n\n let bizplaceId: any = params.filters.find(filter => filter.name === 'bizplace_id').value\n let foundPermittedBizplace: Bizplace\n let companyBizplace: Bizplace\n\n if (bizplaceId) {\n foundPermittedBizplace = permittedBizplaces.find(biz => biz.id == bizplaceId)\n\n if (foundPermittedBizplace) {\n if (!foundPermittedBizplace.company?.id) {\n foundPermittedBizplace = await tx.getRepository(Bizplace).findOne({\n where: { id: foundPermittedBizplace.id },\n relations: ['company', 'company.domain']\n })\n }\n const companyDomain: Domain = foundPermittedBizplace.company.domain\n companyBizplace = await tx.getRepository(Bizplace).findOne({ where: { domain: companyDomain } })\n }\n }\n\n const bizplaces: Bizplace[] = [foundPermittedBizplace, companyBizplace]\n if (bizplace) bizplaces.push(bizplace)\n\n const { items, total } = await InventoryUtil.inventoryProductGroupOpenAPI(bizplaces, params, context, tx)\n\n return { items, total }\n }\n\n @Directive('@privilege(category: \"order_customer\", privilege: \"query\")')\n @Directive('@transaction')\n @Query(returns => [OrderInventory])\n async bulkUploadValidateWarehousePartnersProductsQuantity(\n @Ctx() context: ResolverContext,\n @Arg('partnerBizplaceId') partnerBizplaceId: string,\n @Arg('orderInventories', type => [NewOrderInventory], { nullable: true }) orderInventories?: NewOrderInventory[]\n ): Promise<OrderInventory[]> {\n const { domain, user, tx, bizplace }: { domain: Domain; user: User; tx: EntityManager; bizplace?: Bizplace } =\n context.state\n\n let permittedBizplaces: Bizplace[] = await getPermittedBizplaces(domain, user)\n let foundPermittedBizplace: Bizplace\n let companyBizplace: Bizplace\n\n const partnerBizplace: Bizplace = await tx.getRepository(Bizplace).findOne({\n where: {\n id: partnerBizplaceId\n },\n relations: ['company', 'company.domain']\n })\n\n if (partnerBizplaceId) {\n foundPermittedBizplace = permittedBizplaces.find(biz => biz.id == partnerBizplaceId)\n\n if (foundPermittedBizplace) {\n if (!foundPermittedBizplace.company?.id) {\n foundPermittedBizplace = await tx.getRepository(Bizplace).findOne({\n where: { id: foundPermittedBizplace.id },\n relations: ['company', 'company.domain']\n })\n }\n const companyDomain: Domain = foundPermittedBizplace.company.domain\n companyBizplace = await tx.getRepository(Bizplace).findOne({ where: { domain: companyDomain } })\n }\n }\n\n const bizplaces: Bizplace[] = [foundPermittedBizplace, companyBizplace]\n if (bizplace) bizplaces.push(bizplace)\n\n let newOrderInventories: any[] = []\n\n for (var i = 0; i < orderInventories.length; i++) {\n const orderInventory: any = orderInventories[i]\n\n let filters: any[] = [\n {\n name: 'productName',\n operator: 'eq',\n value: orderInventory.productSKU\n }\n ]\n\n if (orderInventory?.packingType != null) {\n filters.push({\n name: 'packingType',\n operator: 'eq',\n value: orderInventory.packingType\n })\n }\n\n const params: any = {\n filters: [...filters]\n }\n\n const { items, total } = await InventoryUtil.bizplaceInventoryProductGroup(bizplaces, params, context, tx)\n\n // Filter to find for item with enough remain qty\n const availableItems = items.filter(item => item.remainQty >= orderInventory.releaseQty)\n let availableItem\n\n if (availableItems.length > 0) {\n availableItem = availableItems[0]\n }\n\n let packageUomValue = availableItem ? availableItem.remainUomValue / availableItem.remainQty : null\n const newOrderInventory: any = {\n product: availableItem\n ? {\n id: availableItem.productId,\n sku: availableItem.productSKU,\n name: availableItem.productName\n }\n : { id: null },\n inventory: availableItem\n ? {\n ...availableItem,\n remainQty: availableItem ? availableItem.remainQty : null,\n remainUomValue: availableItem ? availableItem.remainUomValue : null,\n remainUomValueWithUom: availableItem ? availableItem.remainUomValueWithUom : ''\n }\n : null,\n productId: availableItem ? availableItem.productId : null,\n productSKU: availableItem ? availableItem.productSKU : orderInventory.productSKU,\n productName: availableItem ? availableItem.productName : null,\n uom: availableItem ? availableItem.uom : null,\n remainQty: availableItem ? availableItem.remainQty : null,\n remainUomValue: availableItem ? availableItem.remainUomValue : null,\n remainUomValueWithUom: availableItem ? availableItem.remainUomValueWithUom : '',\n batchId: availableItem ? availableItem.batchId : null,\n batchIdRef: availableItem ? availableItem.batchIdRef : null,\n packingType: availableItem ? availableItem.packingType : orderInventory.packingType,\n packingSize: availableItem ? availableItem.packingSize : 1,\n releaseQty: orderInventory.releaseQty\n ? Number.isInteger(orderInventory.releaseQty)\n ? orderInventory.releaseQty\n : null\n : null,\n releaseUomValue: availableItem\n ? Number.isInteger(orderInventory.releaseQty)\n ? parseFloat((orderInventory.releaseQty * packageUomValue).toFixed(2))\n : null\n : null,\n groupType: availableItem ? availableItem.groupType : null,\n isError: !availableItem ? true : false\n }\n\n newOrderInventories.push(newOrderInventory)\n\n // end loop\n }\n\n try {\n await InventoryUtil.validateWarehousePartnersProductsQuantity(\n domain,\n partnerBizplace,\n newOrderInventories,\n context,\n tx\n )\n } catch (e) {\n const errorData = JSON.parse(e.detail.data)\n\n errorData.forEach(dt => {\n let idx = newOrderInventories.findIndex(\n x =>\n x.product?.id && x.product.id == dt.productId && x.batchId == dt.batchId && x.packingType == dt.packingType\n )\n\n if (idx >= 0) {\n newOrderInventories[idx].remainQty = dt.availableQty\n newOrderInventories[idx].remainUomValue = dt.availableUomValue\n newOrderInventories[idx].isError =\n dt.availableQty == null\n ? newOrderInventories[idx].releaseQty > 0\n : newOrderInventories[idx].releaseQty > dt.availableQty\n newOrderInventories[idx].remainUomValueWithUom =\n dt.availableUomValue == null ? '' : `${dt.availableUomValue} ${dt.uom}`\n if (newOrderInventories[idx].inventory != null) {\n newOrderInventories[idx].inventory.remainQty = dt.availableQty\n newOrderInventories[idx].inventory.remainUomValue = dt.availableUomValue\n newOrderInventories[idx].inventory.remainUomValueWithUom = `${dt.availableUomValue} ${dt.uom}` || ''\n }\n }\n })\n }\n\n return orderBy(newOrderInventories, ['isError'], ['desc'])\n }\n\n @Directive('@privilege(category: \"order_customer\", privilege: \"query\")')\n @Directive('@transaction')\n @Query(returns => [InventoryProductGroup])\n async bulkUploadValidateOrderProducts(\n @Ctx() context: ResolverContext,\n @Arg('partnerBizplaceId') partnerBizplaceId: string,\n @Arg('orderProducts', type => [NewOrderProduct], { nullable: true }) orderProducts: NewOrderProduct[]\n ): Promise<OrderProduct[]> {\n const { domain, user, tx, bizplace }: { domain: Domain; user: User; tx: EntityManager; bizplace?: Bizplace } =\n context.state\n\n const productDetailRepo = tx.getRepository(ProductDetail)\n\n let permittedBizplaces: Bizplace[] = await getPermittedBizplaces(domain, user)\n let foundPermittedBizplace: Bizplace\n let companyBizplace: Bizplace\n\n if (partnerBizplaceId) {\n foundPermittedBizplace = permittedBizplaces.find(biz => biz.id == partnerBizplaceId)\n\n if (foundPermittedBizplace) {\n if (!foundPermittedBizplace.company?.id) {\n foundPermittedBizplace = await tx.getRepository(Bizplace).findOne({\n where: { id: foundPermittedBizplace.id },\n relations: ['domain', 'company', 'company.domain']\n })\n }\n const companyDomain: Domain = foundPermittedBizplace.company.domain\n companyBizplace = await tx.getRepository(Bizplace).findOne({ where: { domain: companyDomain } })\n }\n }\n\n const bizplaces: Bizplace[] = [foundPermittedBizplace, companyBizplace]\n if (bizplace) bizplaces.push(bizplace)\n\n let strictProduct: boolean = false\n\n const strictProductSelectionSetting: Setting = await tx.getRepository(Setting).findOne({\n where: { domain: { id: domain.id }, category: 'id-rule', name: 'strict-product-selection' }\n })\n\n if (strictProductSelectionSetting) strictProduct = strictProductSelectionSetting.value\n\n const partnerStrictProductSelectionSetting: PartnerSetting = await tx.getRepository(PartnerSetting).findOne({\n where: { setting: strictProductSelectionSetting, domain, partnerDomain: foundPermittedBizplace?.domain }\n })\n\n if (partnerStrictProductSelectionSetting) strictProduct = partnerStrictProductSelectionSetting.value\n\n let newOrderProducts: any[] = []\n\n for (var i = 0; i < orderProducts.length; i++) {\n const orderProduct = orderProducts[i]\n const productSKU: string = orderProduct.productSKU\n const foundProduct: Product = await tx.getRepository(Product).findOne({\n where: {\n sku: productSKU,\n bizplace: companyBizplace\n }\n })\n\n let newOrderProduct: any\n\n if (foundProduct) {\n let productDetail: ProductDetail\n const hasConditions: boolean = Boolean(\n (orderProduct?.packingType && orderProduct?.packingType.trim() != '') ||\n (orderProduct?.uom && orderProduct?.uom.trim() != '')\n )\n let productDetailCondition: any = { product: foundProduct }\n\n if (hasConditions) {\n if (orderProduct?.packingType && orderProduct.packingType.trim() != '')\n productDetailCondition.packingType = orderProduct.packingType.trim()\n\n if (orderProduct?.uom && orderProduct.uom.trim() != '') productDetailCondition.uom = orderProduct.uom.trim()\n } else {\n productDetailCondition.isDefault = true\n }\n\n productDetail = await productDetailRepo.findOne({\n where: productDetailCondition\n })\n\n const uomValue: number =\n strictProduct == true\n ? productDetail?.uomValue\n ? productDetail.uomValue\n : null\n : orderProduct?.uomValue\n ? orderProduct.uomValue\n : productDetail.uomValue\n\n newOrderProduct = {\n ...orderProduct,\n packingType: orderProduct?.packingType ? orderProduct.packingType : productDetail.packingType,\n packingSize: productDetail?.packingSize ? productDetail.packingSize : null,\n uom: productDetail?.uom ? productDetail.uom : null,\n uomValue: uomValue,\n productName: `${foundProduct.name}(${foundProduct.description}(${foundProduct.sku}))`,\n productBrand: foundProduct?.brand ? foundProduct.brand : null,\n isError: productDetail ? false : true,\n product: {\n id: foundProduct.id,\n name: foundProduct.name,\n sku: foundProduct.sku,\n type: foundProduct.type,\n brand: foundProduct.brand,\n primaryUnit: productDetail?.uom ? productDetail.uom : null,\n primaryValue: productDetail?.uomValue ? productDetail.uomValue : null\n },\n totalUomValue:\n orderProduct.packQty > 0\n ? uomValue\n ? `${(orderProduct.packQty * uomValue).toFixed(2)} ${productDetail.uom}`\n : null\n : null\n }\n } else {\n newOrderProduct = {\n ...orderProduct,\n productName: orderProduct.productSKU,\n isError: true\n }\n }\n\n newOrderProducts.push(newOrderProduct)\n }\n\n return newOrderProducts\n }\n @Directive('@privilege(category: \"order_customer\", privilege: \"query\")')\n @Directive('@transaction')\n @Query(returns => [InventoryProductGroup])\n async bulkUploadValidatePoOrderProducts(\n @Ctx() context: ResolverContext,\n @Arg('partnerBizplaceId') partnerBizplaceId: string,\n @Arg('orderProducts', type => [NewOrderProduct], { nullable: true }) orderProducts: NewOrderProduct[]\n ): Promise<OrderProduct[]> {\n const { domain, user, tx, bizplace }: { domain: Domain; user: User; tx: EntityManager; bizplace?: Bizplace } =\n context.state\n\n const productDetailRepo = tx.getRepository(ProductDetail)\n\n let permittedBizplaces: Bizplace[] = await getPermittedBizplaces(domain, user)\n let foundPermittedBizplace: Bizplace\n let companyBizplace: Bizplace\n\n if (partnerBizplaceId) {\n foundPermittedBizplace = permittedBizplaces.find(biz => biz.id == partnerBizplaceId)\n\n if (foundPermittedBizplace) {\n if (!foundPermittedBizplace.company?.id) {\n foundPermittedBizplace = await tx.getRepository(Bizplace).findOne({\n where: { id: foundPermittedBizplace.id },\n relations: ['domain', 'company', 'company.domain']\n })\n }\n const companyDomain: Domain = foundPermittedBizplace.company.domain\n companyBizplace = await tx.getRepository(Bizplace).findOne({ where: { domain: companyDomain } })\n }\n }\n\n const bizplaces: Bizplace[] = [foundPermittedBizplace, companyBizplace]\n if (bizplace) bizplaces.push(bizplace)\n\n let strictProduct: boolean = false\n\n const strictProductSelectionSetting: Setting = await tx.getRepository(Setting).findOne({\n where: { domain: { id: domain.id }, category: 'id-rule', name: 'strict-product-selection' }\n })\n\n if (strictProductSelectionSetting) strictProduct = strictProductSelectionSetting.value\n\n const partnerStrictProductSelectionSetting: PartnerSetting = await tx.getRepository(PartnerSetting).findOne({\n where: { setting: strictProductSelectionSetting, domain, partnerDomain: foundPermittedBizplace?.domain }\n })\n\n if (partnerStrictProductSelectionSetting) strictProduct = partnerStrictProductSelectionSetting.value\n\n let newOrderProducts: any[] = []\n\n for (var i = 0; i < orderProducts.length; i++) {\n const orderProduct = orderProducts[i]\n const productSKU: string = orderProduct.productSKU\n const foundProduct: Product = await tx.getRepository(Product).findOne({\n where: {\n sku: productSKU,\n bizplace: companyBizplace\n }\n })\n\n let newOrderProduct: any\n\n if (foundProduct) {\n let productDetail: ProductDetail\n const hasConditions: boolean = Boolean(\n (orderProduct?.packingType && orderProduct?.packingType.trim() != '') ||\n (orderProduct?.uom && orderProduct?.uom.trim() != '')\n )\n let productDetailCondition: any = { product: foundProduct }\n\n if (hasConditions) {\n if (orderProduct?.packingType && orderProduct.packingType.trim() != '')\n productDetailCondition.packingType = orderProduct.packingType.trim()\n\n if (orderProduct?.uom && orderProduct.uom.trim() != '') productDetailCondition.uom = orderProduct.uom.trim()\n } else {\n productDetailCondition.isDefault = true\n }\n\n productDetail = await productDetailRepo.findOne({\n where: productDetailCondition\n })\n\n const uomValue: number =\n strictProduct == true\n ? productDetail?.uomValue\n ? productDetail.uomValue\n : null\n : orderProduct?.uomValue\n ? orderProduct.uomValue\n : productDetail.uomValue\n\n newOrderProduct = {\n ...orderProduct,\n packingType: orderProduct?.packingType ? orderProduct.packingType : productDetail.packingType,\n packingSize: productDetail?.packingSize ? productDetail.packingSize : null,\n uom: productDetail?.uom ? productDetail.uom : null,\n uomValue: uomValue,\n productName: `${foundProduct.name}(${foundProduct.description}(${foundProduct.sku}))`,\n productBrand: foundProduct?.brand ? foundProduct.brand : null,\n isError: productDetail ? false : true,\n product: {\n id: foundProduct.id,\n name: foundProduct.name,\n sku: foundProduct.sku,\n type: foundProduct.type,\n brand: foundProduct.brand,\n primaryUnit: productDetail?.uom ? productDetail.uom : null,\n primaryValue: productDetail?.uomValue ? productDetail.uomValue : null\n },\n totalUomValue:\n orderProduct.packQty > 0\n ? uomValue\n ? `${(orderProduct.packQty * uomValue).toFixed(2)} ${productDetail.uom}`\n : null\n : null\n }\n } else {\n newOrderProduct = {\n ...orderProduct,\n productName: orderProduct.productSKU,\n isError: true\n }\n }\n\n newOrderProducts.push(newOrderProduct)\n }\n\n return newOrderProducts\n }\n}\n"]}
1
+ {"version":3,"file":"other-query.js","sourceRoot":"","sources":["../../../server/service/others/other-query.ts"],"names":[],"mappings":"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","sourcesContent":["import orderBy from 'lodash/orderBy'\nimport { Arg, Args, Ctx, Directive, Query, Resolver } from 'type-graphql'\nimport { EntityManager } from 'typeorm'\n\nimport { User } from '@things-factory/auth-base'\nimport { Bizplace, getPermittedBizplaces } from '@things-factory/biz-base'\nimport { Product, ProductDetail } from '@things-factory/product-base'\nimport { PartnerSetting, Setting } from '@things-factory/setting-base'\nimport { Domain, ListParam } from '@things-factory/shell'\n\nimport {\n InventoryProductGroup,\n InventoryProductGroupList,\n NewOrderInventory,\n NewOrderProduct,\n OrderInventory,\n OrderProduct\n} from '../'\nimport { InventoryUtil } from '../../utils'\n\n@Resolver()\nexport class OtherQuery {\n @Directive('@privilege(category: \"inventory\", privilege: \"query\")')\n @Directive('@transaction')\n @Query(returns => InventoryProductGroupList)\n async allBizplaceProductInventory(\n @Ctx() context: ResolverContext,\n @Args() params: ListParam\n ): Promise<InventoryProductGroupList> {\n const { domain, user, tx, bizplace }: { domain: Domain; user: User; tx: EntityManager; bizplace?: Bizplace } =\n context.state\n\n let permittedBizplaces: Bizplace[] = await getPermittedBizplaces(domain, user)\n\n let bizplaceId: any = params.filters.find(filter => filter.name === 'bizplace_id').value\n let foundPermittedBizplace: Bizplace\n let companyBizplace: Bizplace\n\n if (bizplaceId) {\n foundPermittedBizplace = permittedBizplaces.find(biz => biz.id == bizplaceId)\n\n if (foundPermittedBizplace) {\n if (!foundPermittedBizplace.company?.id) {\n foundPermittedBizplace = await tx.getRepository(Bizplace).findOne({\n where: { id: foundPermittedBizplace.id },\n relations: ['company', 'company.domain']\n })\n }\n const companyDomain: Domain = foundPermittedBizplace.company.domain\n companyBizplace = await tx.getRepository(Bizplace).findOne({ where: { domain: companyDomain } })\n }\n }\n\n const bizplaces: Bizplace[] = [foundPermittedBizplace, companyBizplace]\n if (bizplace) bizplaces.push(bizplace)\n\n const { items, total } = await InventoryUtil.bizplaceProductInventory(bizplaces, params, context, tx)\n\n return { items, total }\n }\n\n @Directive('@privilege(category: \"inventory\", privilege: \"query\")')\n @Directive('@transaction')\n @Query(returns => InventoryProductGroupList)\n async inventoryProductGroup(\n @Ctx() context: ResolverContext,\n @Args() params: ListParam\n ): Promise<InventoryProductGroupList> {\n const { domain, user, tx, bizplace }: { domain: Domain; user: User; tx: EntityManager; bizplace?: Bizplace } =\n context.state\n\n let permittedBizplaces: Bizplace[] = await getPermittedBizplaces(domain, user)\n\n let bizplaceId: any = params.filters.find(filter => filter.name === 'bizplace_id').value\n let foundPermittedBizplace: Bizplace\n let companyBizplace: Bizplace\n\n if (bizplaceId) {\n foundPermittedBizplace = permittedBizplaces.find(biz => biz.id == bizplaceId)\n\n if (foundPermittedBizplace) {\n if (!foundPermittedBizplace.company?.id) {\n foundPermittedBizplace = await tx.getRepository(Bizplace).findOne({\n where: { id: foundPermittedBizplace.id },\n relations: ['company', 'company.domain']\n })\n }\n const companyDomain: Domain = foundPermittedBizplace.company.domain\n companyBizplace = await tx.getRepository(Bizplace).findOne({ where: { domain: { id: companyDomain.id } } })\n }\n }\n\n const bizplaces: Bizplace[] = [foundPermittedBizplace, companyBizplace]\n if (bizplace) bizplaces.push(bizplace)\n\n const { items, total } = await InventoryUtil.bizplaceInventoryProductGroup(bizplaces, params, context, tx)\n\n return { items, total }\n }\n\n @Directive('@transaction')\n @Query(returns => InventoryProductGroupList)\n async inventoryProductGroupOpenAPI(\n @Ctx() context: ResolverContext,\n @Args() params: ListParam\n ): Promise<InventoryProductGroupList> {\n const { domain, user, tx, bizplace }: { domain: Domain; user: User; tx: EntityManager; bizplace?: Bizplace } =\n context.state\n\n let permittedBizplaces: Bizplace[] = await getPermittedBizplaces(domain, user)\n\n let bizplaceId: any = params.filters.find(filter => filter.name === 'bizplace_id').value\n let foundPermittedBizplace: Bizplace\n let companyBizplace: Bizplace\n\n if (bizplaceId) {\n foundPermittedBizplace = permittedBizplaces.find(biz => biz.id == bizplaceId)\n\n if (foundPermittedBizplace) {\n if (!foundPermittedBizplace.company?.id) {\n foundPermittedBizplace = await tx.getRepository(Bizplace).findOne({\n where: { id: foundPermittedBizplace.id },\n relations: ['company', 'company.domain']\n })\n }\n const companyDomain: Domain = foundPermittedBizplace.company.domain\n companyBizplace = await tx.getRepository(Bizplace).findOne({ where: { domain: { id: companyDomain.id } } })\n }\n }\n\n const bizplaces: Bizplace[] = [foundPermittedBizplace, companyBizplace]\n if (bizplace) bizplaces.push(bizplace)\n\n const { items, total } = await InventoryUtil.inventoryProductGroupOpenAPI(bizplaces, params, context, tx)\n\n return { items, total }\n }\n\n @Directive('@privilege(category: \"order_customer\", privilege: \"query\")')\n @Directive('@transaction')\n @Query(returns => [OrderInventory])\n async bulkUploadValidateWarehousePartnersProductsQuantity(\n @Ctx() context: ResolverContext,\n @Arg('partnerBizplaceId') partnerBizplaceId: string,\n @Arg('orderInventories', type => [NewOrderInventory], { nullable: true }) orderInventories?: NewOrderInventory[]\n ): Promise<OrderInventory[]> {\n const { domain, user, tx, bizplace }: { domain: Domain; user: User; tx: EntityManager; bizplace?: Bizplace } =\n context.state\n\n let permittedBizplaces: Bizplace[] = await getPermittedBizplaces(domain, user)\n let foundPermittedBizplace: Bizplace\n let companyBizplace: Bizplace\n\n const partnerBizplace: Bizplace = await tx.getRepository(Bizplace).findOne({\n where: {\n id: partnerBizplaceId\n },\n relations: ['company', 'company.domain']\n })\n\n if (partnerBizplaceId) {\n foundPermittedBizplace = permittedBizplaces.find(biz => biz.id == partnerBizplaceId)\n\n if (foundPermittedBizplace) {\n if (!foundPermittedBizplace.company?.id) {\n foundPermittedBizplace = await tx.getRepository(Bizplace).findOne({\n where: { id: foundPermittedBizplace.id },\n relations: ['company', 'company.domain']\n })\n }\n const companyDomain: Domain = foundPermittedBizplace.company.domain\n companyBizplace = await tx.getRepository(Bizplace).findOne({ where: { domain: { id: companyDomain.id } } })\n }\n }\n\n const bizplaces: Bizplace[] = [foundPermittedBizplace, companyBizplace]\n if (bizplace) bizplaces.push(bizplace)\n\n let newOrderInventories: any[] = []\n\n for (var i = 0; i < orderInventories.length; i++) {\n const orderInventory: any = orderInventories[i]\n\n let filters: any[] = [\n {\n name: 'productName',\n operator: 'eq',\n value: orderInventory.productSKU\n }\n ]\n\n if (orderInventory?.packingType != null) {\n filters.push({\n name: 'packingType',\n operator: 'eq',\n value: orderInventory.packingType\n })\n }\n\n const params: any = {\n filters: [...filters]\n }\n\n const { items, total } = await InventoryUtil.bizplaceInventoryProductGroup(bizplaces, params, context, tx)\n\n // Filter to find for item with enough remain qty\n const availableItems = items.filter(item => item.remainQty >= orderInventory.releaseQty)\n let availableItem\n\n if (availableItems.length > 0) {\n availableItem = availableItems[0]\n }\n\n let packageUomValue = availableItem ? availableItem.remainUomValue / availableItem.remainQty : null\n const newOrderInventory: any = {\n product: availableItem\n ? {\n id: availableItem.productId,\n sku: availableItem.productSKU,\n name: availableItem.productName\n }\n : { id: null },\n inventory: availableItem\n ? {\n ...availableItem,\n remainQty: availableItem ? availableItem.remainQty : null,\n remainUomValue: availableItem ? availableItem.remainUomValue : null,\n remainUomValueWithUom: availableItem ? availableItem.remainUomValueWithUom : ''\n }\n : null,\n productId: availableItem ? availableItem.productId : null,\n productSKU: availableItem ? availableItem.productSKU : orderInventory.productSKU,\n productName: availableItem ? availableItem.productName : null,\n uom: availableItem ? availableItem.uom : null,\n remainQty: availableItem ? availableItem.remainQty : null,\n remainUomValue: availableItem ? availableItem.remainUomValue : null,\n remainUomValueWithUom: availableItem ? availableItem.remainUomValueWithUom : '',\n batchId: availableItem ? availableItem.batchId : null,\n batchIdRef: availableItem ? availableItem.batchIdRef : null,\n packingType: availableItem ? availableItem.packingType : orderInventory.packingType,\n packingSize: availableItem ? availableItem.packingSize : 1,\n releaseQty: orderInventory.releaseQty\n ? Number.isInteger(orderInventory.releaseQty)\n ? orderInventory.releaseQty\n : null\n : null,\n releaseUomValue: availableItem\n ? Number.isInteger(orderInventory.releaseQty)\n ? parseFloat((orderInventory.releaseQty * packageUomValue).toFixed(2))\n : null\n : null,\n groupType: availableItem ? availableItem.groupType : null,\n isError: !availableItem ? true : false\n }\n\n newOrderInventories.push(newOrderInventory)\n\n // end loop\n }\n\n try {\n await InventoryUtil.validateWarehousePartnersProductsQuantity(\n domain,\n partnerBizplace,\n newOrderInventories,\n context,\n tx\n )\n } catch (e) {\n const errorData = JSON.parse(e.detail.data)\n\n errorData.forEach(dt => {\n let idx = newOrderInventories.findIndex(\n x =>\n x.product?.id && x.product.id == dt.productId && x.batchId == dt.batchId && x.packingType == dt.packingType\n )\n\n if (idx >= 0) {\n newOrderInventories[idx].remainQty = dt.availableQty\n newOrderInventories[idx].remainUomValue = dt.availableUomValue\n newOrderInventories[idx].isError =\n dt.availableQty == null\n ? newOrderInventories[idx].releaseQty > 0\n : newOrderInventories[idx].releaseQty > dt.availableQty\n newOrderInventories[idx].remainUomValueWithUom =\n dt.availableUomValue == null ? '' : `${dt.availableUomValue} ${dt.uom}`\n if (newOrderInventories[idx].inventory != null) {\n newOrderInventories[idx].inventory.remainQty = dt.availableQty\n newOrderInventories[idx].inventory.remainUomValue = dt.availableUomValue\n newOrderInventories[idx].inventory.remainUomValueWithUom = `${dt.availableUomValue} ${dt.uom}` || ''\n }\n }\n })\n }\n\n return orderBy(newOrderInventories, ['isError'], ['desc'])\n }\n\n @Directive('@privilege(category: \"order_customer\", privilege: \"query\")')\n @Directive('@transaction')\n @Query(returns => [InventoryProductGroup])\n async bulkUploadValidateOrderProducts(\n @Ctx() context: ResolverContext,\n @Arg('partnerBizplaceId') partnerBizplaceId: string,\n @Arg('orderProducts', type => [NewOrderProduct], { nullable: true }) orderProducts: NewOrderProduct[]\n ): Promise<OrderProduct[]> {\n const { domain, user, tx, bizplace }: { domain: Domain; user: User; tx: EntityManager; bizplace?: Bizplace } =\n context.state\n\n const productDetailRepo = tx.getRepository(ProductDetail)\n\n let permittedBizplaces: Bizplace[] = await getPermittedBizplaces(domain, user)\n let foundPermittedBizplace: Bizplace\n let companyBizplace: Bizplace\n\n if (partnerBizplaceId) {\n foundPermittedBizplace = permittedBizplaces.find(biz => biz.id == partnerBizplaceId)\n\n if (foundPermittedBizplace) {\n if (!foundPermittedBizplace.company?.id) {\n foundPermittedBizplace = await tx.getRepository(Bizplace).findOne({\n where: { id: foundPermittedBizplace.id },\n relations: ['domain', 'company', 'company.domain']\n })\n }\n const companyDomain: Domain = foundPermittedBizplace.company.domain\n companyBizplace = await tx.getRepository(Bizplace).findOne({ where: { domain: { id: companyDomain.id } } })\n }\n }\n\n const bizplaces: Bizplace[] = [foundPermittedBizplace, companyBizplace]\n if (bizplace) bizplaces.push(bizplace)\n\n let strictProduct: boolean = false\n\n const strictProductSelectionSetting: Setting = await tx.getRepository(Setting).findOne({\n where: { domain: { id: domain.id }, category: 'id-rule', name: 'strict-product-selection' }\n })\n\n if (strictProductSelectionSetting) strictProduct = strictProductSelectionSetting.value\n\n const partnerStrictProductSelectionSetting: PartnerSetting = await tx.getRepository(PartnerSetting).findOne({\n where: {\n setting: { id: strictProductSelectionSetting.id },\n domain: { id: domain.id },\n partnerDomain: { id: foundPermittedBizplace?.domain?.id }\n }\n })\n\n if (partnerStrictProductSelectionSetting) strictProduct = partnerStrictProductSelectionSetting.value\n\n let newOrderProducts: any[] = []\n\n for (var i = 0; i < orderProducts.length; i++) {\n const orderProduct = orderProducts[i]\n const productSKU: string = orderProduct.productSKU\n const foundProduct: Product = await tx.getRepository(Product).findOne({\n where: {\n sku: productSKU,\n bizplace: { id: companyBizplace.id }\n }\n })\n\n let newOrderProduct: any\n\n if (foundProduct) {\n let productDetail: ProductDetail\n const hasConditions: boolean = Boolean(\n (orderProduct?.packingType && orderProduct?.packingType.trim() != '') ||\n (orderProduct?.uom && orderProduct?.uom.trim() != '')\n )\n let productDetailCondition: any = { product: foundProduct }\n\n if (hasConditions) {\n if (orderProduct?.packingType && orderProduct.packingType.trim() != '')\n productDetailCondition.packingType = orderProduct.packingType.trim()\n\n if (orderProduct?.uom && orderProduct.uom.trim() != '') productDetailCondition.uom = orderProduct.uom.trim()\n } else {\n productDetailCondition.isDefault = true\n }\n\n productDetail = await productDetailRepo.findOne({\n where: productDetailCondition\n })\n\n const uomValue: number =\n strictProduct == true\n ? productDetail?.uomValue\n ? productDetail.uomValue\n : null\n : orderProduct?.uomValue\n ? orderProduct.uomValue\n : productDetail.uomValue\n\n newOrderProduct = {\n ...orderProduct,\n packingType: orderProduct?.packingType ? orderProduct.packingType : productDetail.packingType,\n packingSize: productDetail?.packingSize ? productDetail.packingSize : null,\n uom: productDetail?.uom ? productDetail.uom : null,\n uomValue: uomValue,\n productName: `${foundProduct.name}(${foundProduct.description}(${foundProduct.sku}))`,\n productBrand: foundProduct?.brand ? foundProduct.brand : null,\n isError: productDetail ? false : true,\n product: {\n id: foundProduct.id,\n name: foundProduct.name,\n sku: foundProduct.sku,\n type: foundProduct.type,\n brand: foundProduct.brand,\n primaryUnit: productDetail?.uom ? productDetail.uom : null,\n primaryValue: productDetail?.uomValue ? productDetail.uomValue : null\n },\n totalUomValue:\n orderProduct.packQty > 0\n ? uomValue\n ? `${(orderProduct.packQty * uomValue).toFixed(2)} ${productDetail.uom}`\n : null\n : null\n }\n } else {\n newOrderProduct = {\n ...orderProduct,\n productName: orderProduct.productSKU,\n isError: true\n }\n }\n\n newOrderProducts.push(newOrderProduct)\n }\n\n return newOrderProducts\n }\n @Directive('@privilege(category: \"order_customer\", privilege: \"query\")')\n @Directive('@transaction')\n @Query(returns => [InventoryProductGroup])\n async bulkUploadValidatePoOrderProducts(\n @Ctx() context: ResolverContext,\n @Arg('partnerBizplaceId') partnerBizplaceId: string,\n @Arg('orderProducts', type => [NewOrderProduct], { nullable: true }) orderProducts: NewOrderProduct[]\n ): Promise<OrderProduct[]> {\n const { domain, user, tx, bizplace }: { domain: Domain; user: User; tx: EntityManager; bizplace?: Bizplace } =\n context.state\n\n const productDetailRepo = tx.getRepository(ProductDetail)\n\n let permittedBizplaces: Bizplace[] = await getPermittedBizplaces(domain, user)\n let foundPermittedBizplace: Bizplace\n let companyBizplace: Bizplace\n\n if (partnerBizplaceId) {\n foundPermittedBizplace = permittedBizplaces.find(biz => biz.id == partnerBizplaceId)\n\n if (foundPermittedBizplace) {\n if (!foundPermittedBizplace.company?.id) {\n foundPermittedBizplace = await tx.getRepository(Bizplace).findOne({\n where: { id: foundPermittedBizplace.id },\n relations: ['domain', 'company', 'company.domain']\n })\n }\n const companyDomain: Domain = foundPermittedBizplace.company.domain\n companyBizplace = await tx.getRepository(Bizplace).findOne({ where: { domain: { id: companyDomain.id } } })\n }\n }\n\n const bizplaces: Bizplace[] = [foundPermittedBizplace, companyBizplace]\n if (bizplace) bizplaces.push(bizplace)\n\n let strictProduct: boolean = false\n\n const strictProductSelectionSetting: Setting = await tx.getRepository(Setting).findOne({\n where: { domain: { id: domain.id }, category: 'id-rule', name: 'strict-product-selection' }\n })\n\n if (strictProductSelectionSetting) strictProduct = strictProductSelectionSetting.value\n\n const partnerStrictProductSelectionSetting: PartnerSetting = await tx.getRepository(PartnerSetting).findOne({\n where: {\n setting: { id: strictProductSelectionSetting.id },\n domain: { id: domain.id },\n partnerDomain: { id: foundPermittedBizplace?.domain?.id }\n }\n })\n\n if (partnerStrictProductSelectionSetting) strictProduct = partnerStrictProductSelectionSetting.value\n\n let newOrderProducts: any[] = []\n\n for (var i = 0; i < orderProducts.length; i++) {\n const orderProduct = orderProducts[i]\n const productSKU: string = orderProduct.productSKU\n const foundProduct: Product = await tx.getRepository(Product).findOne({\n where: {\n sku: productSKU,\n bizplace: { id: companyBizplace.id }\n }\n })\n\n let newOrderProduct: any\n\n if (foundProduct) {\n let productDetail: ProductDetail\n const hasConditions: boolean = Boolean(\n (orderProduct?.packingType && orderProduct?.packingType.trim() != '') ||\n (orderProduct?.uom && orderProduct?.uom.trim() != '')\n )\n let productDetailCondition: any = { product: foundProduct }\n\n if (hasConditions) {\n if (orderProduct?.packingType && orderProduct.packingType.trim() != '')\n productDetailCondition.packingType = orderProduct.packingType.trim()\n\n if (orderProduct?.uom && orderProduct.uom.trim() != '') productDetailCondition.uom = orderProduct.uom.trim()\n } else {\n productDetailCondition.isDefault = true\n }\n\n productDetail = await productDetailRepo.findOne({\n where: productDetailCondition\n })\n\n const uomValue: number =\n strictProduct == true\n ? productDetail?.uomValue\n ? productDetail.uomValue\n : null\n : orderProduct?.uomValue\n ? orderProduct.uomValue\n : productDetail.uomValue\n\n newOrderProduct = {\n ...orderProduct,\n packingType: orderProduct?.packingType ? orderProduct.packingType : productDetail.packingType,\n packingSize: productDetail?.packingSize ? productDetail.packingSize : null,\n uom: productDetail?.uom ? productDetail.uom : null,\n uomValue: uomValue,\n productName: `${foundProduct.name}(${foundProduct.description}(${foundProduct.sku}))`,\n productBrand: foundProduct?.brand ? foundProduct.brand : null,\n isError: productDetail ? false : true,\n product: {\n id: foundProduct.id,\n name: foundProduct.name,\n sku: foundProduct.sku,\n type: foundProduct.type,\n brand: foundProduct.brand,\n primaryUnit: productDetail?.uom ? productDetail.uom : null,\n primaryValue: productDetail?.uomValue ? productDetail.uomValue : null\n },\n totalUomValue:\n orderProduct.packQty > 0\n ? uomValue\n ? `${(orderProduct.packQty * uomValue).toFixed(2)} ${productDetail.uom}`\n : null\n : null\n }\n } else {\n newOrderProduct = {\n ...orderProduct,\n productName: orderProduct.productSKU,\n isError: true\n }\n }\n\n newOrderProducts.push(newOrderProduct)\n }\n\n return newOrderProducts\n }\n}\n"]}
@@ -34,7 +34,7 @@ let PurchaseOrderMutation = class PurchaseOrderMutation {
34
34
  relations: ['orderProducts', 'orderProducts.product', 'bufferLocation', 'bizplace', 'domain']
35
35
  });
36
36
  // const findPurchaseOrder: PurchaseOrder = await tx.getRepository(PurchaseOrder).findOne({where: {id}, relations:['bizplace']})
37
- // const findOrderProducts: OrderProduct[] = await tx.getRepository(OrderProduct).findBy({purchaseOrder: findPurchaseOrder})
37
+ // const findOrderProducts: OrderProduct[] = await tx.getRepository(OrderProduct).findBy({purchaseOrder: {id: findPurchaseOrder.id}}})
38
38
  // // 1. Approve purchase order
39
39
  const approvePurchaseOrder = await tx.getRepository(__1.PurchaseOrder).save(Object.assign(Object.assign({}, findPurchaseOrder), { status: constants_1.PURCHASE_ORDER_STATUS.APPROVED, approvedBy: user, approvedOn: new Date().toUTCString(), updater: user }));
40
40
  await tx.getRepository(__1.OrderProduct).save(findPurchaseOrder.orderProducts.map(itm => {
@@ -328,7 +328,7 @@ async function upsertPurchaseOrderProducts(domain, bizplace, purchaseOrder, orde
328
328
  delete op.id;
329
329
  let foundProductDetail = await tx
330
330
  .getRepository(product_base_1.ProductDetail)
331
- .findOne({ where: { product: op.product.id, packingType: op.packingType } });
331
+ .findOne({ where: { product: { id: op.product.id }, packingType: op.packingType } });
332
332
  return Object.assign(Object.assign({}, op), { domain, bizplace: bizplace, name: (op === null || op === void 0 ? void 0 : op.id) ? op.name : utils_1.OrderNoGenerator.orderProduct(), product: await productRepo.findOneBy({ id: op.product.id }), packingSize: (foundProductDetail === null || foundProductDetail === void 0 ? void 0 : foundProductDetail.packingSize) || 1, purchaseOrder: purchaseOrder, status: purchaseOrder.status, creator: (op === null || op === void 0 ? void 0 : op.id) ? op.creator : user, updater: user });
333
333
  }));
334
334
  await orderProductRepo.save(orderProducts);
@@ -1 +1 @@
1
- {"version":3,"file":"purchase-order-mutation.js","sourceRoot":"","sources":["../../../server/service/purchase-order/purchase-order-mutation.ts"],"names":[],"mappings":"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","sourcesContent":["import type { FileUpload } from 'graphql-upload/GraphQLUpload.js'\nimport GraphQLUpload from 'graphql-upload/GraphQLUpload.js'\nimport { Arg, Ctx, Directive, Mutation, Resolver } from 'type-graphql'\nimport { EntityManager, Repository } from 'typeorm'\n\nimport { Attachment, createAttachments, deleteAttachmentsByRef } from '@things-factory/attachment-base'\nimport { User } from '@things-factory/auth-base'\nimport { Bizplace, ContactPoint, getPermittedBizplaces } from '@things-factory/biz-base'\nimport { generateId } from '@things-factory/id-rule-base'\nimport { Product, ProductDetail } from '@things-factory/product-base'\nimport { Setting } from '@things-factory/setting-base'\nimport { Domain, getRepository } from '@things-factory/shell'\nimport { Location } from '@things-factory/warehouse-base'\n\nimport {\n ArrivalNotice,\n NewPurchaseOrder,\n OrderProduct,\n PurchaseOrder,\n PurchaseOrderOtherCharge,\n PurchaseOrderPatch\n} from '../'\nimport {\n ATTACHMENT_TYPE,\n ORDER_NUMBER_RULE_TYPE,\n ORDER_NUMBER_SETTING_KEY,\n ORDER_STATUS,\n PURCHASE_ORDER_STATUS\n} from '../../constants'\nimport { OrderNoGenerator } from '../../utils'\nimport { checkArrivedNoticeFunction, generateArrivalNoticeFunction } from '../arrival-notice/arrival-notice-mutation'\nimport { getPurchaseOrderFunction } from './purchase-order-query'\n\n@Resolver(PurchaseOrder)\nexport class PurchaseOrderMutation {\n @Directive('@privilege(category: \"order_customer\", privilege: \"mutation\")')\n @Directive('@transaction')\n @Mutation(returns => PurchaseOrder)\n async upsertPurchaseOrder(\n @Ctx() context: ResolverContext,\n @Arg('purchaseOrder', type => PurchaseOrderPatch) purchaseOrder: PurchaseOrderPatch,\n @Arg('files', type => [GraphQLUpload], { nullable: true }) files?: FileUpload\n ): Promise<PurchaseOrder> {\n try {\n const { tx } = context.state\n const createdPurchaseOrder: PurchaseOrder = await upsertPurchaseOrderFunction(\n null,\n purchaseOrder,\n files,\n context,\n tx\n )\n\n return createdPurchaseOrder\n } catch (error) {\n throw error\n }\n }\n\n @Directive('@privilege(category: \"order_customer\", privilege: \"mutation\")')\n @Directive('@transaction')\n @Mutation(returns => PurchaseOrder)\n async approvePurchaseOrder(@Arg('id') id: string, @Ctx() context: ResolverContext): Promise<PurchaseOrder> {\n const { tx, domain, user } = context.state\n\n const findPurchaseOrder: PurchaseOrder = await getRepository(PurchaseOrder).findOne({\n where: { domain: { id: domain.id }, id },\n relations: ['orderProducts', 'orderProducts.product', 'bufferLocation', 'bizplace', 'domain']\n })\n\n // const findPurchaseOrder: PurchaseOrder = await tx.getRepository(PurchaseOrder).findOne({where: {id}, relations:['bizplace']})\n // const findOrderProducts: OrderProduct[] = await tx.getRepository(OrderProduct).findBy({purchaseOrder: findPurchaseOrder})\n\n // // 1. Approve purchase order\n const approvePurchaseOrder: PurchaseOrder = await tx.getRepository(PurchaseOrder).save({\n ...findPurchaseOrder,\n status: PURCHASE_ORDER_STATUS.APPROVED,\n approvedBy: user,\n approvedOn: new Date().toUTCString(),\n updater: user\n })\n\n await tx.getRepository(OrderProduct).save(\n findPurchaseOrder.orderProducts.map(itm => {\n return {\n ...itm,\n status: PURCHASE_ORDER_STATUS.APPROVED\n }\n })\n )\n\n // // 2. Create and confirm arrival notice\n let newGANOrder = {\n ...findPurchaseOrder,\n orderProducts: findPurchaseOrder.orderProducts.map(itm => {\n delete itm.id, itm.name\n return {\n ...itm\n }\n }),\n customerBizplaceId: findPurchaseOrder.bizplace.id,\n purchaseOrder: approvePurchaseOrder,\n orderVass: [],\n creator: user,\n updater: user\n }\n\n delete newGANOrder.id\n //change gan status to intransit and call check arrived notice function right\n newGANOrder.status = ORDER_STATUS.INTRANSIT\n\n const createdGAN: ArrivalNotice = await generateArrivalNoticeFunction(null, newGANOrder, true, [], context, tx)\n\n // await confirmArrivalNoticeFunction(createdGAN.name, context, tx)\n\n // await receiveArrivalNoticeFunction(null, createdGAN.name, context)\n\n await checkArrivedNoticeFunction(createdGAN.name, context, tx)\n\n return approvePurchaseOrder\n }\n\n @Directive('@privilege(category: \"order_customer\", privilege: \"mutation\")')\n @Directive('@transaction')\n @Mutation(returns => PurchaseOrder)\n async rejectPurchaseOrder(@Arg('id') id: string, @Ctx() context: ResolverContext): Promise<PurchaseOrder> {\n const { tx, domain, user } = context.state\n\n const findPurchaseOrder: PurchaseOrder = await getRepository(PurchaseOrder).findOne({\n where: { domain: { id: domain.id }, id },\n relations: ['orderProducts']\n })\n // // 1. Reject purchase order\n const rejectedPurchaseOrder: PurchaseOrder = await tx.getRepository(PurchaseOrder).save({\n ...findPurchaseOrder,\n status: PURCHASE_ORDER_STATUS.REJECTED,\n updater: user\n })\n\n await tx.getRepository(OrderProduct).save(\n findPurchaseOrder.orderProducts.map(itm => {\n return {\n ...itm,\n status: PURCHASE_ORDER_STATUS.REJECTED\n }\n })\n )\n\n return rejectedPurchaseOrder\n }\n\n @Directive('@transaction')\n @Mutation(returns => PurchaseOrder)\n async createPurchaseOrder(\n @Arg('purchaseOrder', type => NewPurchaseOrder) purchaseOrder: NewPurchaseOrder,\n @Ctx() context: ResolverContext\n ): Promise<PurchaseOrder> {\n const { tx, domain, user } = context.state\n\n return await tx.getRepository(PurchaseOrder).save({\n ...purchaseOrder,\n domain,\n creator: user,\n updater: user\n })\n }\n\n @Directive('@transaction')\n @Mutation(returns => PurchaseOrder)\n async updatePurchaseOrder(\n @Arg('name') name: string,\n @Arg('patch', type => PurchaseOrderPatch) patch: PurchaseOrderPatch,\n @Ctx() context: ResolverContext\n ): Promise<PurchaseOrder> {\n const { tx, domain, user } = context.state\n\n const repository = tx.getRepository(PurchaseOrder)\n const purchaseOrder = await repository.findOne({\n where: { domain: { id: domain.id }, name }\n })\n\n return await repository.save({\n ...purchaseOrder,\n ...patch,\n updater: user\n })\n }\n\n @Directive('@transaction')\n @Mutation(returns => Boolean)\n async deletePurchaseOrder(@Arg('name') name: string, @Ctx() context: ResolverContext): Promise<boolean> {\n const { tx, domain } = context.state\n await tx.getRepository(PurchaseOrder).delete({ domain, name })\n return true\n }\n}\n\nexport async function upsertPurchaseOrderFunction(\n _: any,\n purchaseOrder: any,\n files: FileUpload[],\n context: any,\n tx?: EntityManager\n): Promise<PurchaseOrder> {\n if (!purchaseOrder.id) {\n purchaseOrder = await createPurchaseOrderFunction(_, purchaseOrder, files, context, tx)\n } else {\n purchaseOrder = await updatePurchaseOrderFunction(_, purchaseOrder, files, context, tx)\n }\n\n return purchaseOrder\n}\n\nexport async function createPurchaseOrderFunction(\n _: any,\n purchaseOrder: any,\n files: FileUpload[],\n context: any,\n tx?: EntityManager\n): Promise<PurchaseOrder> {\n const { domain, user } = context.state\n let orderProducts: OrderProduct[] = purchaseOrder.orderProducts\n let otherCharges: PurchaseOrderOtherCharge[] = purchaseOrder.otherCharges\n\n let myBizplace: Bizplace\n let orderNo: string = ''\n let arrError: string[] = []\n\n const settingRepo: Repository<Setting> = tx?.getRepository(Setting) || getRepository(Setting)\n\n if (purchaseOrder?.bizplace?.id) {\n const permittedBizplaces: Bizplace[] = await getPermittedBizplaces(domain, user)\n let foundPermittedBizplace: Bizplace = permittedBizplaces.find(biz => biz.id == purchaseOrder.bizplace.id)\n\n if (!foundPermittedBizplace) throw new Error(`This user does not permitted for this company`)\n\n purchaseOrder.bizplace = foundPermittedBizplace\n } else {\n arrError.push(`No bizplace was selected`)\n }\n\n if (purchaseOrder?.supplier?.id) {\n purchaseOrder.supplier = await getRepository(ContactPoint).findOneBy({ id: purchaseOrder.supplier.id })\n } else {\n arrError.push(`No supplier was selected`)\n }\n\n if (purchaseOrder?.bufferLocation?.id) {\n purchaseOrder.bufferLocation = await getRepository(Location).findOneBy({ id: purchaseOrder.bufferLocation.id })\n } else {\n arrError.push(`No buffer location was selected`)\n }\n\n if (arrError.length > 0) {\n throw new Error(arrError.join(', '))\n }\n\n // // find PO number rule setting\n const poNoSetting: Setting = await settingRepo.findOne({\n where: {\n domain: { id: domain.id },\n name: ORDER_NUMBER_SETTING_KEY.PO_NUMBER_RULE\n }\n })\n\n orderNo = poNoSetting\n ? await generateId({ domain, type: ORDER_NUMBER_RULE_TYPE.PO_NUMBER, seed: {} })\n : OrderNoGenerator.purchaseOrder()\n\n // // 1. Create purchase order\n const createdPurchaseOrder: PurchaseOrder = await tx.getRepository(PurchaseOrder).save({\n ...purchaseOrder,\n name: orderNo,\n domain,\n looseItem: purchaseOrder?.looseItem ? purchaseOrder.looseItem : false,\n creator: user,\n updater: user\n })\n\n // // 2. Create purchase order product\n await upsertPurchaseOrderProducts(domain, purchaseOrder.bizplace, createdPurchaseOrder, orderProducts, user, tx)\n\n // // 3. Create purchase order misc charges\n for await (let oc of otherCharges) {\n delete oc.id\n await tx.getRepository(PurchaseOrderOtherCharge).save({\n ...oc,\n domain,\n purchaseOrder: createdPurchaseOrder,\n creator: user,\n updater: user\n })\n }\n\n // // 4. Create Attacments\n if (files?.length) {\n const attachments: Attachment[] = files.map(attachment => {\n return {\n file: attachment,\n refType: ATTACHMENT_TYPE.PO,\n refBy: createdPurchaseOrder.id,\n category: ATTACHMENT_TYPE.PO /* TODO use refType */\n }\n })\n await createAttachments(_, { attachments }, context)\n }\n\n return createdPurchaseOrder\n}\n\nexport async function updatePurchaseOrderFunction(\n _: any,\n purchaseOrder: any,\n files: FileUpload[],\n context: any,\n tx?: EntityManager\n): Promise<PurchaseOrder> {\n const { domain, user } = context.state\n\n let existingPurchaseOrder: any = await getPurchaseOrderFunction(_, purchaseOrder.name, context, tx)\n\n let orderProducts: OrderProduct[] = purchaseOrder.orderProducts\n let otherCharges: PurchaseOrderOtherCharge[] = purchaseOrder.otherCharges\n\n if (purchaseOrder?.bizplace?.id) {\n const permittedBizplaces: Bizplace[] = await getPermittedBizplaces(domain, user)\n let foundPermittedBizplace: Bizplace = permittedBizplaces.find(biz => biz.id == purchaseOrder.bizplace.id)\n\n if (!foundPermittedBizplace) throw new Error(`This user does not permitted for this company`)\n\n purchaseOrder.bizplace = foundPermittedBizplace\n }\n\n if (purchaseOrder?.supplier?.id) {\n purchaseOrder.supplier = await getRepository(ContactPoint).findOneBy({ id: purchaseOrder.supplier.id })\n }\n\n if (purchaseOrder?.bufferLocation?.id) {\n purchaseOrder.bufferLocation = await getRepository(Location).findOneBy({ id: purchaseOrder.bufferLocation.id })\n }\n\n // // 1. Update purchase order\n const updatePurchaseOrder: PurchaseOrder = await tx.getRepository(PurchaseOrder).save({\n ...existingPurchaseOrder,\n ...purchaseOrder,\n domain,\n creator: user,\n updater: user\n })\n\n // // 2. Update purchase order product\n await upsertPurchaseOrderProducts(domain, purchaseOrder.bizplace, purchaseOrder, orderProducts, user, tx)\n\n // // 3. Delete Removed Other Charges\n const otherChargesRepo: Repository<PurchaseOrderOtherCharge> =\n tx?.getRepository(PurchaseOrderOtherCharge) || getRepository(PurchaseOrderOtherCharge)\n let removeOC = existingPurchaseOrder.otherCharges.filter(\n existingOC => (otherCharges.filter(inOC => inOC.id == existingOC.id).length = 0)\n )\n removeOC.forEach(async oc => {\n await otherChargesRepo.delete(oc)\n })\n\n // // 4. Process Purchase Other Other Charges Data and Insert/ Update data\n for await (let oc of otherCharges) {\n if (!oc?.id) delete oc.id\n await otherChargesRepo.save({\n ...oc,\n domain,\n purchaseOrder: existingPurchaseOrder,\n creator: oc?.id ? oc.creator : user,\n updater: user\n })\n }\n\n // // 5. Remove Purchase Order Products\n const foundAttachments: Attachment[] = await getRepository(Attachment).find({\n where: {\n domain: { id: domain.id },\n refBy: purchaseOrder.id,\n category: ATTACHMENT_TYPE.PO\n }\n })\n\n // // 6. Remove All Attachment\n if (foundAttachments?.length) {\n await deleteAttachmentsByRef(_, { refBys: foundAttachments.map(file => file.refBy) }, context)\n }\n\n // // 7. Add New Attachment\n if (files?.length > 0) {\n const attachments: Attachment[] = files.map(attachment => {\n return {\n file: attachment,\n refType: ATTACHMENT_TYPE.PO,\n refBy: updatePurchaseOrder.id,\n category: ATTACHMENT_TYPE.PO /* TODO use refType */\n }\n })\n await createAttachments(_, { attachments }, context)\n }\n\n return existingPurchaseOrder\n}\n\nexport async function upsertPurchaseOrderProducts(\n domain: Domain,\n bizplace: Bizplace,\n purchaseOrder: PurchaseOrder,\n orderProducts: OrderProduct[],\n user: User,\n tx?: EntityManager\n): Promise<void> {\n try {\n const purchaseOrderRepo: Repository<Product> = tx?.getRepository(PurchaseOrder) || getRepository(PurchaseOrder)\n const bizplaceRepo: Repository<Product> = tx?.getRepository(Bizplace) || getRepository(Bizplace)\n const orderProductRepo: Repository<OrderProduct> = tx?.getRepository(OrderProduct) || getRepository(OrderProduct)\n const productRepo: Repository<Product> = tx?.getRepository(Product) || getRepository(Product)\n\n // // Remove all existing order products that do not exist in current input\n let removeOP = purchaseOrder.orderProducts.filter(\n existingOP => (orderProducts.filter(inOP => inOP.id == existingOP.id).length = 0)\n )\n removeOP.forEach(async op => {\n await orderProductRepo.delete(op.id)\n })\n\n purchaseOrder = await purchaseOrderRepo.findOneBy({ id: purchaseOrder.id })\n\n bizplace = await bizplaceRepo.findOneBy({ id: bizplace.id })\n\n orderProducts = await Promise.all(\n orderProducts.map(async (op: OrderProduct) => {\n if (!op?.id) delete op.id\n let foundProductDetail: ProductDetail = await tx\n .getRepository(ProductDetail)\n .findOne({ where: { product: op.product.id, packingType: op.packingType } })\n return {\n ...op,\n domain,\n bizplace: bizplace,\n name: op?.id ? op.name : OrderNoGenerator.orderProduct(),\n product: await productRepo.findOneBy({ id: op.product.id }),\n packingSize: foundProductDetail?.packingSize || 1,\n purchaseOrder: purchaseOrder,\n status: purchaseOrder.status,\n creator: op?.id ? op.creator : user,\n updater: user\n }\n })\n )\n\n await orderProductRepo.save(orderProducts)\n } catch (error) {\n throw error\n }\n}\n"]}
1
+ {"version":3,"file":"purchase-order-mutation.js","sourceRoot":"","sources":["../../../server/service/purchase-order/purchase-order-mutation.ts"],"names":[],"mappings":"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","sourcesContent":["import type { FileUpload } from 'graphql-upload/GraphQLUpload.js'\nimport GraphQLUpload from 'graphql-upload/GraphQLUpload.js'\nimport { Arg, Ctx, Directive, Mutation, Resolver } from 'type-graphql'\nimport { EntityManager, Repository } from 'typeorm'\n\nimport { Attachment, createAttachments, deleteAttachmentsByRef } from '@things-factory/attachment-base'\nimport { User } from '@things-factory/auth-base'\nimport { Bizplace, ContactPoint, getPermittedBizplaces } from '@things-factory/biz-base'\nimport { generateId } from '@things-factory/id-rule-base'\nimport { Product, ProductDetail } from '@things-factory/product-base'\nimport { Setting } from '@things-factory/setting-base'\nimport { Domain, getRepository } from '@things-factory/shell'\nimport { Location } from '@things-factory/warehouse-base'\n\nimport {\n ArrivalNotice,\n NewPurchaseOrder,\n OrderProduct,\n PurchaseOrder,\n PurchaseOrderOtherCharge,\n PurchaseOrderPatch\n} from '../'\nimport {\n ATTACHMENT_TYPE,\n ORDER_NUMBER_RULE_TYPE,\n ORDER_NUMBER_SETTING_KEY,\n ORDER_STATUS,\n PURCHASE_ORDER_STATUS\n} from '../../constants'\nimport { OrderNoGenerator } from '../../utils'\nimport { checkArrivedNoticeFunction, generateArrivalNoticeFunction } from '../arrival-notice/arrival-notice-mutation'\nimport { getPurchaseOrderFunction } from './purchase-order-query'\n\n@Resolver(PurchaseOrder)\nexport class PurchaseOrderMutation {\n @Directive('@privilege(category: \"order_customer\", privilege: \"mutation\")')\n @Directive('@transaction')\n @Mutation(returns => PurchaseOrder)\n async upsertPurchaseOrder(\n @Ctx() context: ResolverContext,\n @Arg('purchaseOrder', type => PurchaseOrderPatch) purchaseOrder: PurchaseOrderPatch,\n @Arg('files', type => [GraphQLUpload], { nullable: true }) files?: FileUpload\n ): Promise<PurchaseOrder> {\n try {\n const { tx } = context.state\n const createdPurchaseOrder: PurchaseOrder = await upsertPurchaseOrderFunction(\n null,\n purchaseOrder,\n files,\n context,\n tx\n )\n\n return createdPurchaseOrder\n } catch (error) {\n throw error\n }\n }\n\n @Directive('@privilege(category: \"order_customer\", privilege: \"mutation\")')\n @Directive('@transaction')\n @Mutation(returns => PurchaseOrder)\n async approvePurchaseOrder(@Arg('id') id: string, @Ctx() context: ResolverContext): Promise<PurchaseOrder> {\n const { tx, domain, user } = context.state\n\n const findPurchaseOrder: PurchaseOrder = await getRepository(PurchaseOrder).findOne({\n where: { domain: { id: domain.id }, id },\n relations: ['orderProducts', 'orderProducts.product', 'bufferLocation', 'bizplace', 'domain']\n })\n\n // const findPurchaseOrder: PurchaseOrder = await tx.getRepository(PurchaseOrder).findOne({where: {id}, relations:['bizplace']})\n // const findOrderProducts: OrderProduct[] = await tx.getRepository(OrderProduct).findBy({purchaseOrder: {id: findPurchaseOrder.id}}})\n\n // // 1. Approve purchase order\n const approvePurchaseOrder: PurchaseOrder = await tx.getRepository(PurchaseOrder).save({\n ...findPurchaseOrder,\n status: PURCHASE_ORDER_STATUS.APPROVED,\n approvedBy: user,\n approvedOn: new Date().toUTCString(),\n updater: user\n })\n\n await tx.getRepository(OrderProduct).save(\n findPurchaseOrder.orderProducts.map(itm => {\n return {\n ...itm,\n status: PURCHASE_ORDER_STATUS.APPROVED\n }\n })\n )\n\n // // 2. Create and confirm arrival notice\n let newGANOrder = {\n ...findPurchaseOrder,\n orderProducts: findPurchaseOrder.orderProducts.map(itm => {\n delete itm.id, itm.name\n return {\n ...itm\n }\n }),\n customerBizplaceId: findPurchaseOrder.bizplace.id,\n purchaseOrder: approvePurchaseOrder,\n orderVass: [],\n creator: user,\n updater: user\n }\n\n delete newGANOrder.id\n //change gan status to intransit and call check arrived notice function right\n newGANOrder.status = ORDER_STATUS.INTRANSIT\n\n const createdGAN: ArrivalNotice = await generateArrivalNoticeFunction(null, newGANOrder, true, [], context, tx)\n\n // await confirmArrivalNoticeFunction(createdGAN.name, context, tx)\n\n // await receiveArrivalNoticeFunction(null, createdGAN.name, context)\n\n await checkArrivedNoticeFunction(createdGAN.name, context, tx)\n\n return approvePurchaseOrder\n }\n\n @Directive('@privilege(category: \"order_customer\", privilege: \"mutation\")')\n @Directive('@transaction')\n @Mutation(returns => PurchaseOrder)\n async rejectPurchaseOrder(@Arg('id') id: string, @Ctx() context: ResolverContext): Promise<PurchaseOrder> {\n const { tx, domain, user } = context.state\n\n const findPurchaseOrder: PurchaseOrder = await getRepository(PurchaseOrder).findOne({\n where: { domain: { id: domain.id }, id },\n relations: ['orderProducts']\n })\n // // 1. Reject purchase order\n const rejectedPurchaseOrder: PurchaseOrder = await tx.getRepository(PurchaseOrder).save({\n ...findPurchaseOrder,\n status: PURCHASE_ORDER_STATUS.REJECTED,\n updater: user\n })\n\n await tx.getRepository(OrderProduct).save(\n findPurchaseOrder.orderProducts.map(itm => {\n return {\n ...itm,\n status: PURCHASE_ORDER_STATUS.REJECTED\n }\n })\n )\n\n return rejectedPurchaseOrder\n }\n\n @Directive('@transaction')\n @Mutation(returns => PurchaseOrder)\n async createPurchaseOrder(\n @Arg('purchaseOrder', type => NewPurchaseOrder) purchaseOrder: NewPurchaseOrder,\n @Ctx() context: ResolverContext\n ): Promise<PurchaseOrder> {\n const { tx, domain, user } = context.state\n\n return await tx.getRepository(PurchaseOrder).save({\n ...purchaseOrder,\n domain,\n creator: user,\n updater: user\n })\n }\n\n @Directive('@transaction')\n @Mutation(returns => PurchaseOrder)\n async updatePurchaseOrder(\n @Arg('name') name: string,\n @Arg('patch', type => PurchaseOrderPatch) patch: PurchaseOrderPatch,\n @Ctx() context: ResolverContext\n ): Promise<PurchaseOrder> {\n const { tx, domain, user } = context.state\n\n const repository = tx.getRepository(PurchaseOrder)\n const purchaseOrder = await repository.findOne({\n where: { domain: { id: domain.id }, name }\n })\n\n return await repository.save({\n ...purchaseOrder,\n ...patch,\n updater: user\n })\n }\n\n @Directive('@transaction')\n @Mutation(returns => Boolean)\n async deletePurchaseOrder(@Arg('name') name: string, @Ctx() context: ResolverContext): Promise<boolean> {\n const { tx, domain } = context.state\n await tx.getRepository(PurchaseOrder).delete({ domain, name })\n return true\n }\n}\n\nexport async function upsertPurchaseOrderFunction(\n _: any,\n purchaseOrder: any,\n files: FileUpload[],\n context: any,\n tx?: EntityManager\n): Promise<PurchaseOrder> {\n if (!purchaseOrder.id) {\n purchaseOrder = await createPurchaseOrderFunction(_, purchaseOrder, files, context, tx)\n } else {\n purchaseOrder = await updatePurchaseOrderFunction(_, purchaseOrder, files, context, tx)\n }\n\n return purchaseOrder\n}\n\nexport async function createPurchaseOrderFunction(\n _: any,\n purchaseOrder: any,\n files: FileUpload[],\n context: any,\n tx?: EntityManager\n): Promise<PurchaseOrder> {\n const { domain, user } = context.state\n let orderProducts: OrderProduct[] = purchaseOrder.orderProducts\n let otherCharges: PurchaseOrderOtherCharge[] = purchaseOrder.otherCharges\n\n let myBizplace: Bizplace\n let orderNo: string = ''\n let arrError: string[] = []\n\n const settingRepo: Repository<Setting> = tx?.getRepository(Setting) || getRepository(Setting)\n\n if (purchaseOrder?.bizplace?.id) {\n const permittedBizplaces: Bizplace[] = await getPermittedBizplaces(domain, user)\n let foundPermittedBizplace: Bizplace = permittedBizplaces.find(biz => biz.id == purchaseOrder.bizplace.id)\n\n if (!foundPermittedBizplace) throw new Error(`This user does not permitted for this company`)\n\n purchaseOrder.bizplace = foundPermittedBizplace\n } else {\n arrError.push(`No bizplace was selected`)\n }\n\n if (purchaseOrder?.supplier?.id) {\n purchaseOrder.supplier = await getRepository(ContactPoint).findOneBy({ id: purchaseOrder.supplier.id })\n } else {\n arrError.push(`No supplier was selected`)\n }\n\n if (purchaseOrder?.bufferLocation?.id) {\n purchaseOrder.bufferLocation = await getRepository(Location).findOneBy({ id: purchaseOrder.bufferLocation.id })\n } else {\n arrError.push(`No buffer location was selected`)\n }\n\n if (arrError.length > 0) {\n throw new Error(arrError.join(', '))\n }\n\n // // find PO number rule setting\n const poNoSetting: Setting = await settingRepo.findOne({\n where: {\n domain: { id: domain.id },\n name: ORDER_NUMBER_SETTING_KEY.PO_NUMBER_RULE\n }\n })\n\n orderNo = poNoSetting\n ? await generateId({ domain, type: ORDER_NUMBER_RULE_TYPE.PO_NUMBER, seed: {} })\n : OrderNoGenerator.purchaseOrder()\n\n // // 1. Create purchase order\n const createdPurchaseOrder: PurchaseOrder = await tx.getRepository(PurchaseOrder).save({\n ...purchaseOrder,\n name: orderNo,\n domain,\n looseItem: purchaseOrder?.looseItem ? purchaseOrder.looseItem : false,\n creator: user,\n updater: user\n })\n\n // // 2. Create purchase order product\n await upsertPurchaseOrderProducts(domain, purchaseOrder.bizplace, createdPurchaseOrder, orderProducts, user, tx)\n\n // // 3. Create purchase order misc charges\n for await (let oc of otherCharges) {\n delete oc.id\n await tx.getRepository(PurchaseOrderOtherCharge).save({\n ...oc,\n domain,\n purchaseOrder: createdPurchaseOrder,\n creator: user,\n updater: user\n })\n }\n\n // // 4. Create Attacments\n if (files?.length) {\n const attachments: Attachment[] = files.map(attachment => {\n return {\n file: attachment,\n refType: ATTACHMENT_TYPE.PO,\n refBy: createdPurchaseOrder.id,\n category: ATTACHMENT_TYPE.PO /* TODO use refType */\n }\n })\n await createAttachments(_, { attachments }, context)\n }\n\n return createdPurchaseOrder\n}\n\nexport async function updatePurchaseOrderFunction(\n _: any,\n purchaseOrder: any,\n files: FileUpload[],\n context: any,\n tx?: EntityManager\n): Promise<PurchaseOrder> {\n const { domain, user } = context.state\n\n let existingPurchaseOrder: any = await getPurchaseOrderFunction(_, purchaseOrder.name, context, tx)\n\n let orderProducts: OrderProduct[] = purchaseOrder.orderProducts\n let otherCharges: PurchaseOrderOtherCharge[] = purchaseOrder.otherCharges\n\n if (purchaseOrder?.bizplace?.id) {\n const permittedBizplaces: Bizplace[] = await getPermittedBizplaces(domain, user)\n let foundPermittedBizplace: Bizplace = permittedBizplaces.find(biz => biz.id == purchaseOrder.bizplace.id)\n\n if (!foundPermittedBizplace) throw new Error(`This user does not permitted for this company`)\n\n purchaseOrder.bizplace = foundPermittedBizplace\n }\n\n if (purchaseOrder?.supplier?.id) {\n purchaseOrder.supplier = await getRepository(ContactPoint).findOneBy({ id: purchaseOrder.supplier.id })\n }\n\n if (purchaseOrder?.bufferLocation?.id) {\n purchaseOrder.bufferLocation = await getRepository(Location).findOneBy({ id: purchaseOrder.bufferLocation.id })\n }\n\n // // 1. Update purchase order\n const updatePurchaseOrder: PurchaseOrder = await tx.getRepository(PurchaseOrder).save({\n ...existingPurchaseOrder,\n ...purchaseOrder,\n domain,\n creator: user,\n updater: user\n })\n\n // // 2. Update purchase order product\n await upsertPurchaseOrderProducts(domain, purchaseOrder.bizplace, purchaseOrder, orderProducts, user, tx)\n\n // // 3. Delete Removed Other Charges\n const otherChargesRepo: Repository<PurchaseOrderOtherCharge> =\n tx?.getRepository(PurchaseOrderOtherCharge) || getRepository(PurchaseOrderOtherCharge)\n let removeOC = existingPurchaseOrder.otherCharges.filter(\n existingOC => (otherCharges.filter(inOC => inOC.id == existingOC.id).length = 0)\n )\n removeOC.forEach(async oc => {\n await otherChargesRepo.delete(oc)\n })\n\n // // 4. Process Purchase Other Other Charges Data and Insert/ Update data\n for await (let oc of otherCharges) {\n if (!oc?.id) delete oc.id\n await otherChargesRepo.save({\n ...oc,\n domain,\n purchaseOrder: existingPurchaseOrder,\n creator: oc?.id ? oc.creator : user,\n updater: user\n })\n }\n\n // // 5. Remove Purchase Order Products\n const foundAttachments: Attachment[] = await getRepository(Attachment).find({\n where: {\n domain: { id: domain.id },\n refBy: purchaseOrder.id,\n category: ATTACHMENT_TYPE.PO\n }\n })\n\n // // 6. Remove All Attachment\n if (foundAttachments?.length) {\n await deleteAttachmentsByRef(_, { refBys: foundAttachments.map(file => file.refBy) }, context)\n }\n\n // // 7. Add New Attachment\n if (files?.length > 0) {\n const attachments: Attachment[] = files.map(attachment => {\n return {\n file: attachment,\n refType: ATTACHMENT_TYPE.PO,\n refBy: updatePurchaseOrder.id,\n category: ATTACHMENT_TYPE.PO /* TODO use refType */\n }\n })\n await createAttachments(_, { attachments }, context)\n }\n\n return existingPurchaseOrder\n}\n\nexport async function upsertPurchaseOrderProducts(\n domain: Domain,\n bizplace: Bizplace,\n purchaseOrder: PurchaseOrder,\n orderProducts: OrderProduct[],\n user: User,\n tx?: EntityManager\n): Promise<void> {\n try {\n const purchaseOrderRepo: Repository<Product> = tx?.getRepository(PurchaseOrder) || getRepository(PurchaseOrder)\n const bizplaceRepo: Repository<Product> = tx?.getRepository(Bizplace) || getRepository(Bizplace)\n const orderProductRepo: Repository<OrderProduct> = tx?.getRepository(OrderProduct) || getRepository(OrderProduct)\n const productRepo: Repository<Product> = tx?.getRepository(Product) || getRepository(Product)\n\n // // Remove all existing order products that do not exist in current input\n let removeOP = purchaseOrder.orderProducts.filter(\n existingOP => (orderProducts.filter(inOP => inOP.id == existingOP.id).length = 0)\n )\n removeOP.forEach(async op => {\n await orderProductRepo.delete(op.id)\n })\n\n purchaseOrder = await purchaseOrderRepo.findOneBy({ id: purchaseOrder.id })\n\n bizplace = await bizplaceRepo.findOneBy({ id: bizplace.id })\n\n orderProducts = await Promise.all(\n orderProducts.map(async (op: OrderProduct) => {\n if (!op?.id) delete op.id\n let foundProductDetail: ProductDetail = await tx\n .getRepository(ProductDetail)\n .findOne({ where: { product: { id: op.product.id }, packingType: op.packingType } })\n return {\n ...op,\n domain,\n bizplace: bizplace,\n name: op?.id ? op.name : OrderNoGenerator.orderProduct(),\n product: await productRepo.findOneBy({ id: op.product.id }),\n packingSize: foundProductDetail?.packingSize || 1,\n purchaseOrder: purchaseOrder,\n status: purchaseOrder.status,\n creator: op?.id ? op.creator : user,\n updater: user\n }\n })\n )\n\n await orderProductRepo.save(orderProducts)\n } catch (error) {\n throw error\n }\n}\n"]}
@@ -84,7 +84,7 @@ exports.PurchaseOrderQuery = PurchaseOrderQuery;
84
84
  async function getPurchaseOrderFunction(_, name, context, tx) {
85
85
  const { domain, user, bizplace } = context.state;
86
86
  let result = await (0, shell_1.getRepository)(purchase_order_1.PurchaseOrder).findOne({
87
- where: { domain: { id: domain.id }, name, bizplace: (0, typeorm_1.In)(await (0, biz_base_1.getPermittedBizplaceIds)(domain, user)) },
87
+ where: { domain: { id: domain.id }, name, bizplace: { id: (0, typeorm_1.In)(await (0, biz_base_1.getPermittedBizplaceIds)(domain, user)) } },
88
88
  relations: [
89
89
  'arrivalNotice',
90
90
  'supplier',
@@ -1 +1 @@
1
- {"version":3,"file":"purchase-order-query.js","sourceRoot":"","sources":["../../../server/service/purchase-order/purchase-order-query.ts"],"names":[],"mappings":"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","sourcesContent":["import { Arg, Ctx, FieldResolver, Query, Resolver, Root } from 'type-graphql'\nimport { EntityManager, In } from 'typeorm'\n\nimport { Attachment } from '@things-factory/attachment-base'\nimport { User } from '@things-factory/auth-base'\nimport { Bizplace, getPermittedBizplaceIds } from '@things-factory/biz-base'\nimport { buildQuery, Domain, Filter, getRepository, Pagination, Sorting } from '@things-factory/shell'\n\nimport { PurchaseOrderList } from '../'\nimport { ATTACHMENT_TYPE } from '../../constants'\nimport { PurchaseOrder } from './purchase-order'\n\n@Resolver(PurchaseOrder)\nexport class PurchaseOrderQuery {\n @Query(returns => PurchaseOrderList)\n async purchaseOrders(\n @Ctx() context: ResolverContext,\n @Arg('filters', type => [Filter], { nullable: true }) filters?: Filter[],\n @Arg('pagination', type => Pagination, { nullable: true }) pagination?: Pagination,\n @Arg('sortings', type => [Sorting], { nullable: true }) sortings?: Sorting[]\n ): Promise<PurchaseOrderList> {\n const queryBuilder = getRepository(PurchaseOrder).createQueryBuilder()\n buildQuery(queryBuilder, { filters, pagination, sortings }, context)\n const [items, total] = await queryBuilder\n .leftJoinAndSelect('PurchaseOrder.supplier', 'Supplier')\n .leftJoinAndSelect('PurchaseOrder.domain', 'Domain')\n .leftJoinAndSelect('PurchaseOrder.creator', 'Creator')\n .leftJoinAndSelect('PurchaseOrder.updater', 'Updater')\n .leftJoinAndSelect('PurchaseOrder.arrivalNotice', 'ArrivalNotice')\n .getManyAndCount()\n\n return { items, total }\n }\n\n @Query(returns => PurchaseOrder)\n async purchaseOrder(@Arg('name') name: string, @Ctx() context: ResolverContext): Promise<PurchaseOrder> {\n const { tx } = context.state\n return getPurchaseOrderFunction(null, name, context, tx)\n }\n\n @FieldResolver(type => Domain)\n async domain(@Root() purchaseOrder: PurchaseOrder): Promise<Domain> {\n return await getRepository(Domain).findOneBy({ id: purchaseOrder.domainId })\n }\n\n @FieldResolver(type => User)\n async creator(@Root() purchaseOrder: PurchaseOrder): Promise<User> {\n return await getRepository(User).findOneBy({ id: purchaseOrder.creatorId })\n }\n\n @FieldResolver(type => User)\n async updater(@Root() purchaseOrder: PurchaseOrder): Promise<User> {\n return await getRepository(User).findOneBy({ id: purchaseOrder.updaterId })\n }\n}\n\nexport async function getPurchaseOrderFunction(_: any, name: any, context: any, tx?: EntityManager) {\n const { domain, user, bizplace }: { domain: Domain; user: User; bizplace: Bizplace } = context.state\n\n let result = await getRepository(PurchaseOrder).findOne({\n where: { domain: { id: domain.id }, name, bizplace: In(await getPermittedBizplaceIds(domain, user)) },\n relations: [\n 'arrivalNotice',\n 'supplier',\n 'orderProducts',\n 'orderProducts.product',\n 'otherCharges',\n 'bufferLocation',\n 'bizplace',\n 'domain',\n 'creator',\n 'updater'\n ]\n })\n\n if (!result?.id) throw new Error(`Failed to find arrival notice with ${name}`)\n\n const foundAttachments: Attachment[] = await getRepository(Attachment).find({\n where: {\n domain: { id: domain.id },\n refBy: result.id,\n category: ATTACHMENT_TYPE.PO\n }\n })\n\n return {\n ...result,\n attachment: foundAttachments\n }\n}\n"]}
1
+ {"version":3,"file":"purchase-order-query.js","sourceRoot":"","sources":["../../../server/service/purchase-order/purchase-order-query.ts"],"names":[],"mappings":"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","sourcesContent":["import { Arg, Ctx, FieldResolver, Query, Resolver, Root } from 'type-graphql'\nimport { EntityManager, In } from 'typeorm'\n\nimport { Attachment } from '@things-factory/attachment-base'\nimport { User } from '@things-factory/auth-base'\nimport { Bizplace, getPermittedBizplaceIds } from '@things-factory/biz-base'\nimport { buildQuery, Domain, Filter, getRepository, Pagination, Sorting } from '@things-factory/shell'\n\nimport { PurchaseOrderList } from '../'\nimport { ATTACHMENT_TYPE } from '../../constants'\nimport { PurchaseOrder } from './purchase-order'\n\n@Resolver(PurchaseOrder)\nexport class PurchaseOrderQuery {\n @Query(returns => PurchaseOrderList)\n async purchaseOrders(\n @Ctx() context: ResolverContext,\n @Arg('filters', type => [Filter], { nullable: true }) filters?: Filter[],\n @Arg('pagination', type => Pagination, { nullable: true }) pagination?: Pagination,\n @Arg('sortings', type => [Sorting], { nullable: true }) sortings?: Sorting[]\n ): Promise<PurchaseOrderList> {\n const queryBuilder = getRepository(PurchaseOrder).createQueryBuilder()\n buildQuery(queryBuilder, { filters, pagination, sortings }, context)\n const [items, total] = await queryBuilder\n .leftJoinAndSelect('PurchaseOrder.supplier', 'Supplier')\n .leftJoinAndSelect('PurchaseOrder.domain', 'Domain')\n .leftJoinAndSelect('PurchaseOrder.creator', 'Creator')\n .leftJoinAndSelect('PurchaseOrder.updater', 'Updater')\n .leftJoinAndSelect('PurchaseOrder.arrivalNotice', 'ArrivalNotice')\n .getManyAndCount()\n\n return { items, total }\n }\n\n @Query(returns => PurchaseOrder)\n async purchaseOrder(@Arg('name') name: string, @Ctx() context: ResolverContext): Promise<PurchaseOrder> {\n const { tx } = context.state\n return getPurchaseOrderFunction(null, name, context, tx)\n }\n\n @FieldResolver(type => Domain)\n async domain(@Root() purchaseOrder: PurchaseOrder): Promise<Domain> {\n return await getRepository(Domain).findOneBy({ id: purchaseOrder.domainId })\n }\n\n @FieldResolver(type => User)\n async creator(@Root() purchaseOrder: PurchaseOrder): Promise<User> {\n return await getRepository(User).findOneBy({ id: purchaseOrder.creatorId })\n }\n\n @FieldResolver(type => User)\n async updater(@Root() purchaseOrder: PurchaseOrder): Promise<User> {\n return await getRepository(User).findOneBy({ id: purchaseOrder.updaterId })\n }\n}\n\nexport async function getPurchaseOrderFunction(_: any, name: any, context: any, tx?: EntityManager) {\n const { domain, user, bizplace }: { domain: Domain; user: User; bizplace: Bizplace } = context.state\n\n let result = await getRepository(PurchaseOrder).findOne({\n where: { domain: { id: domain.id }, name, bizplace: { id: In(await getPermittedBizplaceIds(domain, user)) } },\n relations: [\n 'arrivalNotice',\n 'supplier',\n 'orderProducts',\n 'orderProducts.product',\n 'otherCharges',\n 'bufferLocation',\n 'bizplace',\n 'domain',\n 'creator',\n 'updater'\n ]\n })\n\n if (!result?.id) throw new Error(`Failed to find arrival notice with ${name}`)\n\n const foundAttachments: Attachment[] = await getRepository(Attachment).find({\n where: {\n domain: { id: domain.id },\n refBy: result.id,\n category: ATTACHMENT_TYPE.PO\n }\n })\n\n return {\n ...result,\n attachment: foundAttachments\n }\n}\n"]}