@things-factory/worksheet-base 4.0.0-y.0 → 4.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (173) hide show
  1. package/dist-server/controllers/ecommerce/ecommerce-controller.js +23 -9
  2. package/dist-server/controllers/ecommerce/ecommerce-controller.js.map +1 -1
  3. package/dist-server/controllers/ecommerce/index.js +1 -0
  4. package/dist-server/controllers/ecommerce/index.js.map +1 -1
  5. package/dist-server/controllers/ecommerce/sellercraft-controller.js +168 -0
  6. package/dist-server/controllers/ecommerce/sellercraft-controller.js.map +1 -0
  7. package/dist-server/controllers/inbound/unloading-worksheet-controller.js +6 -5
  8. package/dist-server/controllers/inbound/unloading-worksheet-controller.js.map +1 -1
  9. package/dist-server/controllers/index.js +1 -0
  10. package/dist-server/controllers/index.js.map +1 -1
  11. package/dist-server/controllers/inspect/cycle-count-worksheet-controller.js +43 -8
  12. package/dist-server/controllers/inspect/cycle-count-worksheet-controller.js.map +1 -1
  13. package/dist-server/controllers/outbound/packing-worksheet-controller.js +16 -1
  14. package/dist-server/controllers/outbound/packing-worksheet-controller.js.map +1 -1
  15. package/dist-server/controllers/outbound/picking-worksheet-controller.js +17 -9
  16. package/dist-server/controllers/outbound/picking-worksheet-controller.js.map +1 -1
  17. package/dist-server/controllers/render-grn.js +192 -0
  18. package/dist-server/controllers/render-grn.js.map +1 -0
  19. package/dist-server/controllers/render-job-sheet.js +51 -35
  20. package/dist-server/controllers/render-job-sheet.js.map +1 -1
  21. package/dist-server/controllers/render-kimeda-grn.js +12 -5
  22. package/dist-server/controllers/render-kimeda-grn.js.map +1 -1
  23. package/dist-server/controllers/render-ro-do.js +19 -5
  24. package/dist-server/controllers/render-ro-do.js.map +1 -1
  25. package/dist-server/controllers/render-seebuu-grn.js +9 -3
  26. package/dist-server/controllers/render-seebuu-grn.js.map +1 -1
  27. package/dist-server/controllers/vas/vas-worksheet-controller.js +75 -14
  28. package/dist-server/controllers/vas/vas-worksheet-controller.js.map +1 -1
  29. package/dist-server/controllers/worksheet-controller.js +61 -8
  30. package/dist-server/controllers/worksheet-controller.js.map +1 -1
  31. package/dist-server/graphql/resolvers/pallet/pallet-outbound.js +1 -1
  32. package/dist-server/graphql/resolvers/pallet/pallet-outbound.js.map +1 -1
  33. package/dist-server/graphql/resolvers/worksheet/cycle-count-adjustment.js +23 -1
  34. package/dist-server/graphql/resolvers/worksheet/cycle-count-adjustment.js.map +1 -1
  35. package/dist-server/graphql/resolvers/worksheet/cycle-count-worksheet.js +4 -2
  36. package/dist-server/graphql/resolvers/worksheet/cycle-count-worksheet.js.map +1 -1
  37. package/dist-server/graphql/resolvers/worksheet/fetch-sellercraft-airway-bill.js +25 -0
  38. package/dist-server/graphql/resolvers/worksheet/fetch-sellercraft-airway-bill.js.map +1 -0
  39. package/dist-server/graphql/resolvers/worksheet/generate-worksheet/generate-cycle-count-worksheet.js +4 -4
  40. package/dist-server/graphql/resolvers/worksheet/generate-worksheet/generate-cycle-count-worksheet.js.map +1 -1
  41. package/dist-server/graphql/resolvers/worksheet/index.js +5 -4
  42. package/dist-server/graphql/resolvers/worksheet/index.js.map +1 -1
  43. package/dist-server/graphql/resolvers/worksheet/not-tally-target-inventories.js +2 -2
  44. package/dist-server/graphql/resolvers/worksheet/not-tally-target-inventories.js.map +1 -1
  45. package/dist-server/graphql/resolvers/worksheet/packing/activate-packing.js +13 -1
  46. package/dist-server/graphql/resolvers/worksheet/packing/activate-packing.js.map +1 -1
  47. package/dist-server/graphql/resolvers/worksheet/packing/complete-packing.js +24 -38
  48. package/dist-server/graphql/resolvers/worksheet/packing/complete-packing.js.map +1 -1
  49. package/dist-server/graphql/resolvers/worksheet/packing/packing.js +13 -1
  50. package/dist-server/graphql/resolvers/worksheet/packing/packing.js.map +1 -1
  51. package/dist-server/graphql/resolvers/worksheet/packing/scan-product-packing.js +13 -1
  52. package/dist-server/graphql/resolvers/worksheet/packing/scan-product-packing.js.map +1 -1
  53. package/dist-server/graphql/resolvers/worksheet/packing-worksheet.js +60 -19
  54. package/dist-server/graphql/resolvers/worksheet/packing-worksheet.js.map +1 -1
  55. package/dist-server/graphql/resolvers/worksheet/picking/activate-batch-picking.js +20 -1
  56. package/dist-server/graphql/resolvers/worksheet/picking/activate-batch-picking.js.map +1 -1
  57. package/dist-server/graphql/resolvers/worksheet/picking/activate-picking.js +24 -14
  58. package/dist-server/graphql/resolvers/worksheet/picking/activate-picking.js.map +1 -1
  59. package/dist-server/graphql/resolvers/worksheet/picking/assign-picking-inventories.js +4 -4
  60. package/dist-server/graphql/resolvers/worksheet/picking/assign-picking-inventories.js.map +1 -1
  61. package/dist-server/graphql/resolvers/worksheet/picking/complete-batch-picking.js +19 -0
  62. package/dist-server/graphql/resolvers/worksheet/picking/complete-batch-picking.js.map +1 -1
  63. package/dist-server/graphql/resolvers/worksheet/picking/complete-picking.js +124 -149
  64. package/dist-server/graphql/resolvers/worksheet/picking/complete-picking.js.map +1 -1
  65. package/dist-server/graphql/resolvers/worksheet/picking/undo-picking-assignment.js +4 -4
  66. package/dist-server/graphql/resolvers/worksheet/picking/undo-picking-assignment.js.map +1 -1
  67. package/dist-server/graphql/resolvers/worksheet/picking-worksheet.js +2 -1
  68. package/dist-server/graphql/resolvers/worksheet/picking-worksheet.js.map +1 -1
  69. package/dist-server/graphql/resolvers/worksheet/recommend-putway-location.js +1 -1
  70. package/dist-server/graphql/resolvers/worksheet/recommend-putway-location.js.map +1 -1
  71. package/dist-server/graphql/resolvers/worksheet/replace-picking-pallets.js +13 -4
  72. package/dist-server/graphql/resolvers/worksheet/replace-picking-pallets.js.map +1 -1
  73. package/dist-server/graphql/resolvers/worksheet/unloading/complete-unloading.js +21 -2
  74. package/dist-server/graphql/resolvers/worksheet/unloading/complete-unloading.js.map +1 -1
  75. package/dist-server/graphql/resolvers/worksheet/unloading-return/complete-unload-returning.js +18 -1
  76. package/dist-server/graphql/resolvers/worksheet/unloading-return/complete-unload-returning.js.map +1 -1
  77. package/dist-server/graphql/resolvers/worksheet/vas-transactions/common-utils.js +302 -11
  78. package/dist-server/graphql/resolvers/worksheet/vas-transactions/common-utils.js.map +1 -1
  79. package/dist-server/graphql/resolvers/worksheet/vas-transactions/interfaces/index.js.map +1 -1
  80. package/dist-server/graphql/resolvers/worksheet/vas-transactions/interfaces/repackaging.js.map +1 -1
  81. package/dist-server/graphql/resolvers/worksheet/vas-transactions/repackaging/complete-repackaging.js +137 -31
  82. package/dist-server/graphql/resolvers/worksheet/vas-transactions/repackaging/complete-repackaging.js.map +1 -1
  83. package/dist-server/graphql/resolvers/worksheet/vas-transactions/repackaging/repackaging.js +157 -42
  84. package/dist-server/graphql/resolvers/worksheet/vas-transactions/repackaging/repackaging.js.map +1 -1
  85. package/dist-server/graphql/resolvers/worksheet/vas-transactions/repackaging/undo-repackaging.js +35 -21
  86. package/dist-server/graphql/resolvers/worksheet/vas-transactions/repackaging/undo-repackaging.js.map +1 -1
  87. package/dist-server/graphql/resolvers/worksheet/worksheet.js +33 -27
  88. package/dist-server/graphql/resolvers/worksheet/worksheet.js.map +1 -1
  89. package/dist-server/graphql/resolvers/worksheet/worksheets.js +39 -10
  90. package/dist-server/graphql/resolvers/worksheet/worksheets.js.map +1 -1
  91. package/dist-server/graphql/resolvers/worksheet-detail/generate-batch-picking-worksheet-details-by-bulk.js +1 -1
  92. package/dist-server/graphql/resolvers/worksheet-detail/generate-batch-picking-worksheet-details-by-bulk.js.map +1 -1
  93. package/dist-server/graphql/resolvers/worksheet-detail/generate-release-good-worksheet-details.js +3 -2
  94. package/dist-server/graphql/resolvers/worksheet-detail/generate-release-good-worksheet-details.js.map +1 -1
  95. package/dist-server/graphql/resolvers/worksheet-detail/worksheet-details-by-product-group.js +3 -2
  96. package/dist-server/graphql/resolvers/worksheet-detail/worksheet-details-by-product-group.js.map +1 -1
  97. package/dist-server/graphql/types/index.js +2 -1
  98. package/dist-server/graphql/types/index.js.map +1 -1
  99. package/dist-server/graphql/types/pallet/index.js +10 -0
  100. package/dist-server/graphql/types/pallet/index.js.map +1 -0
  101. package/dist-server/graphql/types/worksheet/airwaybill.js +10 -0
  102. package/dist-server/graphql/types/worksheet/airwaybill.js.map +1 -0
  103. package/dist-server/graphql/types/worksheet/index.js +10 -2
  104. package/dist-server/graphql/types/worksheet/index.js.map +1 -1
  105. package/dist-server/graphql/types/worksheet/worksheet-info.js +2 -0
  106. package/dist-server/graphql/types/worksheet/worksheet-info.js.map +1 -1
  107. package/dist-server/graphql/types/worksheet-detail/index.js +2 -1
  108. package/dist-server/graphql/types/worksheet-detail/index.js.map +1 -1
  109. package/dist-server/graphql/types/worksheet-detail/inventory-detail.js +1 -0
  110. package/dist-server/graphql/types/worksheet-detail/inventory-detail.js.map +1 -1
  111. package/dist-server/routes.js +10 -6
  112. package/dist-server/routes.js.map +1 -1
  113. package/dist-server/utils/inventory-util.js +7 -3
  114. package/dist-server/utils/inventory-util.js.map +1 -1
  115. package/package.json +16 -15
  116. package/server/controllers/ecommerce/ecommerce-controller.ts +37 -10
  117. package/server/controllers/ecommerce/index.ts +1 -0
  118. package/server/controllers/ecommerce/sellercraft-controller.ts +223 -0
  119. package/server/controllers/inbound/unloading-worksheet-controller.ts +16 -13
  120. package/server/controllers/index.ts +1 -0
  121. package/server/controllers/inspect/cycle-count-worksheet-controller.ts +108 -43
  122. package/server/controllers/outbound/packing-worksheet-controller.ts +21 -4
  123. package/server/controllers/outbound/picking-worksheet-controller.ts +26 -11
  124. package/server/controllers/render-grn.ts +218 -0
  125. package/server/controllers/render-job-sheet.ts +51 -39
  126. package/server/controllers/render-kimeda-grn.ts +16 -12
  127. package/server/controllers/render-ro-do.ts +22 -6
  128. package/server/controllers/render-seebuu-grn.ts +12 -12
  129. package/server/controllers/vas/vas-worksheet-controller.ts +104 -23
  130. package/server/controllers/worksheet-controller.ts +87 -22
  131. package/server/graphql/resolvers/pallet/pallet-outbound.ts +2 -1
  132. package/server/graphql/resolvers/worksheet/cycle-count-adjustment.ts +30 -2
  133. package/server/graphql/resolvers/worksheet/cycle-count-worksheet.ts +7 -4
  134. package/server/graphql/resolvers/worksheet/fetch-sellercraft-airway-bill.ts +30 -0
  135. package/server/graphql/resolvers/worksheet/generate-worksheet/generate-cycle-count-worksheet.ts +18 -3
  136. package/server/graphql/resolvers/worksheet/index.ts +6 -4
  137. package/server/graphql/resolvers/worksheet/not-tally-target-inventories.ts +4 -2
  138. package/server/graphql/resolvers/worksheet/packing/activate-packing.ts +20 -3
  139. package/server/graphql/resolvers/worksheet/packing/complete-packing.ts +30 -49
  140. package/server/graphql/resolvers/worksheet/packing/packing.ts +22 -3
  141. package/server/graphql/resolvers/worksheet/packing/scan-product-packing.ts +22 -3
  142. package/server/graphql/resolvers/worksheet/packing-worksheet.ts +71 -20
  143. package/server/graphql/resolvers/worksheet/picking/activate-batch-picking.ts +32 -3
  144. package/server/graphql/resolvers/worksheet/picking/activate-picking.ts +31 -17
  145. package/server/graphql/resolvers/worksheet/picking/assign-picking-inventories.ts +4 -3
  146. package/server/graphql/resolvers/worksheet/picking/complete-batch-picking.ts +31 -3
  147. package/server/graphql/resolvers/worksheet/picking/complete-picking.ts +143 -175
  148. package/server/graphql/resolvers/worksheet/picking/undo-picking-assignment.ts +5 -4
  149. package/server/graphql/resolvers/worksheet/picking-worksheet.ts +5 -2
  150. package/server/graphql/resolvers/worksheet/recommend-putway-location.ts +1 -1
  151. package/server/graphql/resolvers/worksheet/replace-picking-pallets.ts +22 -9
  152. package/server/graphql/resolvers/worksheet/unloading/complete-unloading.ts +27 -4
  153. package/server/graphql/resolvers/worksheet/unloading-return/complete-unload-returning.ts +23 -2
  154. package/server/graphql/resolvers/worksheet/vas-transactions/common-utils.ts +452 -14
  155. package/server/graphql/resolvers/worksheet/vas-transactions/interfaces/index.ts +36 -1
  156. package/server/graphql/resolvers/worksheet/vas-transactions/interfaces/repackaging.ts +8 -2
  157. package/server/graphql/resolvers/worksheet/vas-transactions/repackaging/complete-repackaging.ts +185 -56
  158. package/server/graphql/resolvers/worksheet/vas-transactions/repackaging/repackaging.ts +210 -54
  159. package/server/graphql/resolvers/worksheet/vas-transactions/repackaging/undo-repackaging.ts +64 -32
  160. package/server/graphql/resolvers/worksheet/worksheet.ts +67 -62
  161. package/server/graphql/resolvers/worksheet/worksheets.ts +51 -13
  162. package/server/graphql/resolvers/worksheet-detail/generate-batch-picking-worksheet-details-by-bulk.ts +1 -0
  163. package/server/graphql/resolvers/worksheet-detail/generate-release-good-worksheet-details.ts +2 -1
  164. package/server/graphql/resolvers/worksheet-detail/worksheet-details-by-product-group.ts +2 -1
  165. package/server/graphql/types/index.ts +2 -1
  166. package/server/graphql/types/pallet/index.ts +6 -0
  167. package/server/graphql/types/worksheet/airwaybill.ts +7 -0
  168. package/server/graphql/types/worksheet/index.ts +10 -2
  169. package/server/graphql/types/worksheet/worksheet-info.ts +2 -0
  170. package/server/graphql/types/worksheet-detail/index.ts +2 -1
  171. package/server/graphql/types/worksheet-detail/inventory-detail.ts +1 -0
  172. package/server/routes.ts +11 -6
  173. package/server/utils/inventory-util.ts +14 -5
@@ -1,15 +1,16 @@
1
- import { Bizplace, getMyBizplace } from '@things-factory/biz-base'
2
- import { Domain } from '@things-factory/shell'
3
1
  import { EntityManager } from 'typeorm'
4
- import { LoadingWorksheetController, PackingWorksheetController } from '../../../../controllers/'
5
- import { OrderInventory, ORDER_INVENTORY_STATUS, ReleaseGood } from '@things-factory/sales-base'
2
+
3
+ import { User } from '@things-factory/auth-base'
4
+ import { Bizplace, getMyBizplace } from '@things-factory/biz-base'
6
5
  import { MarketplaceStore } from '@things-factory/integration-marketplace'
6
+ import { Sellercraft, SellercraftStatus } from '@things-factory/integration-sellercraft'
7
7
  import { MarketplaceOrder } from '@things-factory/marketplace-base'
8
- import { User } from '@things-factory/auth-base'
9
- import { WORKSHEET_TYPE } from '../../../../constants'
10
- import { Worksheet, WorksheetDetail } from '../../../../entities'
11
- import { WorksheetController } from '../../../../controllers/worksheet-controller'
8
+ import { ReleaseGood } from '@things-factory/sales-base'
9
+ import { Domain } from '@things-factory/shell'
10
+
11
+ import { PackingWorksheetController } from '../../../../controllers/'
12
12
  import { EcommerceController } from '../../../../controllers/ecommerce'
13
+ import { WorksheetController } from '../../../../controllers/worksheet-controller'
13
14
 
14
15
  export const completePackingResolver = {
15
16
  async completePacking(_: any, { releaseGoodNo }, context: any) {
@@ -20,6 +21,7 @@ export const completePackingResolver = {
20
21
  where: { domain, name: releaseGoodNo },
21
22
  relations: [
22
23
  'bizplace',
24
+ 'bizplace.domain',
23
25
  'bizplace.company',
24
26
  'bizplace.company.domain',
25
27
  'orderInventories',
@@ -28,16 +30,27 @@ export const completePackingResolver = {
28
30
  })
29
31
 
30
32
  if (releaseGood.type === 'b2c') {
31
- const companyDomain: Domain = releaseGood.bizplace.company.domain
32
- const marketplaceOrder: MarketplaceOrder = await tx.getRepository(MarketplaceOrder).findOne({
33
- where: { releaseOrderId: releaseGood.id, domain: companyDomain },
34
- relations: ['marketplaceOrderItems', 'marketplaceStore', 'marketplaceStore.marketplaceDistributors']
35
- })
36
- const marketplaceStore: MarketplaceStore = marketplaceOrder.marketplaceStore
33
+ const sellercraft: Sellercraft = await tx
34
+ .getRepository(Sellercraft)
35
+ .findOne({ domain: releaseGood.bizplace.domain, status: SellercraftStatus.ACTIVE })
37
36
 
38
- if (marketplaceStore.isAutoUpdateShipment) {
39
- const ecommerceCtrl: EcommerceController = new EcommerceController(tx, domain, user)
40
- await ecommerceCtrl.createOrderShip(marketplaceStore, marketplaceOrder, companyDomain)
37
+ if (!sellercraft) {
38
+ const companyDomain: Domain = releaseGood.bizplace.company.domain
39
+ const marketplaceOrder: MarketplaceOrder = await tx.getRepository(MarketplaceOrder).findOne({
40
+ where: { orderNo: releaseGood.refNo, domain: companyDomain },
41
+ relations: [
42
+ 'marketplaceOrderItems',
43
+ 'marketplaceOrderItems.marketplaceOrderShipping',
44
+ 'marketplaceStore',
45
+ 'marketplaceStore.marketplaceDistributors'
46
+ ]
47
+ })
48
+ const marketplaceStore: MarketplaceStore = marketplaceOrder.marketplaceStore
49
+
50
+ if (marketplaceStore.isAutoUpdateShipment) {
51
+ const ecommerceCtrl: EcommerceController = new EcommerceController(tx, domain, user)
52
+ await ecommerceCtrl.createOrderShip(releaseGood, marketplaceStore, marketplaceOrder, companyDomain)
53
+ }
41
54
  }
42
55
  }
43
56
 
@@ -59,37 +72,5 @@ export async function completePacking(
59
72
  releaseGoodNo: string
60
73
  ): Promise<void> {
61
74
  const packingWSCtrl: PackingWorksheetController = new PackingWorksheetController(tx, domain, user)
62
- const releaseGood: ReleaseGood = await packingWSCtrl.findRefOrder(ReleaseGood, {
63
- domain,
64
- name: releaseGoodNo
65
- })
66
- const worksheet: Worksheet = await packingWSCtrl.findWorksheetByRefOrder(releaseGood, WORKSHEET_TYPE.PACKING, [
67
- 'worksheetDetails',
68
- 'worksheetDetails.targetInventory'
69
- ])
70
-
71
- const worksheetDetails: WorksheetDetail[] = worksheet.worksheetDetails
72
- const targetInventories: OrderInventory[] = worksheetDetails.map((wsd: WorksheetDetail) => wsd.targetInventory)
73
- const packedTargetInventories: OrderInventory[] = targetInventories
74
- .filter(targetInventory => targetInventory.status === ORDER_INVENTORY_STATUS.PACKED)
75
- .map((packedTargetInventory: OrderInventory) => {
76
- return packedTargetInventory
77
- })
78
-
79
75
  await packingWSCtrl.completePacking(releaseGoodNo)
80
-
81
- if (!releaseGood.courierOption) {
82
- const loadingWSCtrl: LoadingWorksheetController = new LoadingWorksheetController(tx, domain, user)
83
- let loadingWorksheet: Worksheet = await loadingWSCtrl.generateLoadingWorksheet(
84
- releaseGoodNo,
85
- packedTargetInventories
86
- )
87
-
88
- if (!loadingWorksheet.worksheetDetails?.length) {
89
- loadingWorksheet = await packingWSCtrl.findWorksheetById(loadingWorksheet.id)
90
- }
91
-
92
- const loadingWorksheetDetails: WorksheetDetail[] = loadingWorksheet.worksheetDetails
93
- await loadingWSCtrl.activateLoading(loadingWorksheet.name, loadingWorksheetDetails)
94
- }
95
76
  }
@@ -1,7 +1,12 @@
1
+ import { EntityManager } from 'typeorm'
2
+
1
3
  import { User } from '@things-factory/auth-base'
4
+ import { Sellercraft, SellercraftStatus } from '@things-factory/integration-sellercraft'
5
+ import { ReleaseGood } from '@things-factory/sales-base'
2
6
  import { Domain } from '@things-factory/shell'
3
- import { EntityManager } from 'typeorm'
4
- import { PackingWorksheetController } from '../../../../controllers'
7
+
8
+ import { PackingWorksheetController, SellercraftController } from '../../../../controllers'
9
+ import { Worksheet } from '../../../../entities'
5
10
 
6
11
  export const packingResolver = {
7
12
  async packing(_: any, { worksheetDetailName, releaseQty }, context: any) {
@@ -18,5 +23,19 @@ export async function packing(
18
23
  releaseQty: number
19
24
  ) {
20
25
  const worksheetController: PackingWorksheetController = new PackingWorksheetController(tx, domain, user)
21
- await worksheetController.packing(worksheetDetailName, releaseQty)
26
+ const worksheetDetail = await worksheetController.packing(worksheetDetailName, releaseQty)
27
+
28
+ let releaseGood: ReleaseGood = worksheetDetail.targetInventory.releaseGood
29
+ const worksheet: Worksheet = worksheetDetail.worksheet
30
+
31
+ if (releaseGood.type === 'b2c' && !releaseGood?.airwayBill) {
32
+ const sellercraft: Sellercraft = await tx
33
+ .getRepository(Sellercraft)
34
+ .findOne({ domain: worksheet.bizplace.domain, status: SellercraftStatus.ACTIVE })
35
+
36
+ if (sellercraft) {
37
+ const sellercraftCtrl: SellercraftController = new SellercraftController(tx, domain, user)
38
+ await sellercraftCtrl.fetchOrderDocument(sellercraft, releaseGood)
39
+ }
40
+ }
22
41
  }
@@ -1,7 +1,12 @@
1
+ import { EntityManager } from 'typeorm'
2
+
1
3
  import { User } from '@things-factory/auth-base'
4
+ import { Sellercraft, SellercraftStatus } from '@things-factory/integration-sellercraft'
5
+ import { ReleaseGood } from '@things-factory/sales-base'
2
6
  import { Domain } from '@things-factory/shell'
3
- import { EntityManager } from 'typeorm'
4
- import { PackingWorksheetController } from '../../../../controllers'
7
+
8
+ import { PackingWorksheetController, SellercraftController } from '../../../../controllers'
9
+ import { Worksheet } from '../../../../entities'
5
10
 
6
11
  export const scanProductPackingResolver = {
7
12
  async scanProductPacking(_: any, { worksheetDetailName, productBarcode }, context: any) {
@@ -18,5 +23,19 @@ export async function scanProductPacking(
18
23
  productBarcode: string
19
24
  ) {
20
25
  const worksheetController: PackingWorksheetController = new PackingWorksheetController(tx, domain, user)
21
- await worksheetController.scanProductPacking(worksheetDetailName, productBarcode)
26
+ const worksheetDetail = await worksheetController.scanProductPacking(worksheetDetailName, productBarcode)
27
+
28
+ let releaseGood: ReleaseGood = worksheetDetail.targetInventory.releaseGood
29
+ const worksheet: Worksheet = worksheetDetail.worksheet
30
+
31
+ if (releaseGood.type === 'b2c' && !releaseGood?.airwayBill) {
32
+ const sellercraft: Sellercraft = await tx
33
+ .getRepository(Sellercraft)
34
+ .findOne({ domain: worksheet.bizplace.domain, status: SellercraftStatus.ACTIVE })
35
+
36
+ if (sellercraft) {
37
+ const sellercraftCtrl: SellercraftController = new SellercraftController(tx, domain, user)
38
+ await sellercraftCtrl.fetchOrderDocument(sellercraft, releaseGood)
39
+ }
40
+ }
22
41
  }
@@ -1,16 +1,21 @@
1
- import { MarketplaceOrder, MarketplaceOrderItem } from '@things-factory/marketplace-base'
1
+ import { EntityManager } from 'typeorm'
2
+
3
+ import { User } from '@things-factory/auth-base'
4
+ import { Sellercraft, SellercraftStatus } from '@things-factory/integration-sellercraft'
5
+ import { MarketplaceOrder, MarketplaceOrderItem, MarketplaceOrderShipping } from '@things-factory/marketplace-base'
2
6
  import { OrderInventory, ReleaseGood } from '@things-factory/sales-base'
3
7
  import { Domain } from '@things-factory/shell'
4
8
  import { Inventory } from '@things-factory/warehouse-base'
5
- import { getRepository } from 'typeorm'
9
+
6
10
  import { WORKSHEET_TYPE } from '../../../constants'
11
+ import { SellercraftController } from '../../../controllers'
7
12
  import { Worksheet, WorksheetDetail } from '../../../entities'
8
13
  import { fetchExecutingWorksheet } from '../../../utils'
9
14
 
10
15
  export const packingWorksheetResolver = {
11
16
  async packingWorksheet(_: any, { releaseGoodNo }, context: any) {
12
- const { domain }: { domain: Domain } = context.state
13
- const releaseGood: ReleaseGood = await getRepository(ReleaseGood).findOne({
17
+ const { tx, domain, user }: { tx: EntityManager; domain: Domain; user: User } = context.state
18
+ let releaseGood: ReleaseGood = await tx.getRepository(ReleaseGood).findOne({
14
19
  where: {
15
20
  domain,
16
21
  name: releaseGoodNo
@@ -24,7 +29,9 @@ export const packingWorksheetResolver = {
24
29
  releaseGood.bizplace,
25
30
  [
26
31
  'bizplace',
32
+ 'bizplace.domain',
27
33
  'releaseGood',
34
+ 'releaseGood.domain',
28
35
  'worksheetDetails',
29
36
  'worksheetDetails.targetInventory',
30
37
  'worksheetDetails.targetInventory.binLocation',
@@ -41,36 +48,80 @@ export const packingWorksheetResolver = {
41
48
  let marketplaceOrderItems: MarketplaceOrderItem[] = []
42
49
  let marketplaceStore
43
50
  let trackingNo: string
51
+ let shippingProvider: string
52
+ let marketplaceStatus: string
44
53
 
45
54
  if (releaseGood.type === 'b2c') {
46
- marketplaceOrder = await getRepository(MarketplaceOrder).findOne({
47
- where: { releaseOrderId: releaseGood.id },
48
- relations: [
49
- 'domain',
50
- 'marketplaceStore',
51
- 'marketplaceOrderItems',
52
- 'marketplaceOrderItems.marketplaceOrderShipping'
53
- ]
55
+ const sellercraft: Sellercraft = await tx.getRepository(Sellercraft).findOne({
56
+ domain: worksheet.bizplace.domain,
57
+ status: SellercraftStatus.ACTIVE
54
58
  })
55
59
 
56
- if (!marketplaceOrder)
57
- throw new Error('Failed to retrieve ecommerce information, kindly contact our support team for this issue.')
58
- marketplaceOrderItems = marketplaceOrder.marketplaceOrderItems
59
- marketplaceStore = marketplaceOrder.marketplaceStore
60
- trackingNo = await getTrackingNo(marketplaceStore, marketplaceOrderItems)
60
+ if (sellercraft) {
61
+ if (!releaseGood?.airwayBill) {
62
+ const sellercraftCtrl: SellercraftController = new SellercraftController(tx, domain, user)
63
+ releaseGood = await sellercraftCtrl.fetchOrderDocument(sellercraft, releaseGood)
64
+ }
65
+ trackingNo = releaseGood?.trackingNo
66
+ shippingProvider = releaseGood?.transporter
67
+ marketplaceStatus = releaseGood?.marketplaceOrderStatus
68
+ }
69
+
70
+ if (!sellercraft) {
71
+ marketplaceOrder = await tx.getRepository(MarketplaceOrder).findOne({
72
+ where: { orderNo: releaseGood.refNo },
73
+ relations: [
74
+ 'domain',
75
+ 'marketplaceStore',
76
+ 'marketplaceOrderItems',
77
+ 'marketplaceOrderItems.marketplaceOrderShipping'
78
+ ]
79
+ })
80
+
81
+ if (!marketplaceOrder) {
82
+ throw new Error('Failed to retrieve ecommerce information, kindly contact our support team for this issue.')
83
+ }
84
+
85
+ let marketplaceOrderShipping: MarketplaceOrderShipping
86
+ if (marketplaceOrder.isSplitted) {
87
+ marketplaceOrderShipping = await tx.getRepository(MarketplaceOrderShipping).findOne({
88
+ where: { subOrderNoRef: worksheet.releaseGood.refNo2 }
89
+ })
90
+ } else {
91
+ marketplaceOrderShipping = await tx.getRepository(MarketplaceOrderShipping).findOne({
92
+ where: { orderNoRef: worksheet.releaseGood.refNo }
93
+ })
94
+ }
95
+
96
+ trackingNo = marketplaceOrderShipping.ownTrackingNo
97
+ ? marketplaceOrderShipping.ownTrackingNo
98
+ : marketplaceOrderShipping.trackingNo
99
+ shippingProvider = marketplaceOrderShipping.ownTransporter
100
+ ? marketplaceOrderShipping.ownTransporter
101
+ : marketplaceOrderShipping.transporter
102
+
103
+ marketplaceOrderItems = marketplaceOrder.marketplaceOrderItems.filter(
104
+ item => item.marketplaceOrderShipping.id === marketplaceOrderShipping.id
105
+ )
106
+ marketplaceStore = marketplaceOrder?.marketplaceStore
107
+ marketplaceStatus = marketplaceOrder?.status
108
+ }
61
109
  }
62
110
 
63
111
  return {
64
112
  worksheetInfo: {
65
113
  bizplaceName: releaseGood.bizplace.name,
66
114
  refNo: releaseGood.refNo,
115
+ refNo2: releaseGood.refNo2,
67
116
  partnerDomainId: releaseGood.bizplace?.domain.id,
68
117
  startedAt: worksheet.startedAt,
69
- shippingProvider: marketplaceOrder ? marketplaceOrder.shippingProvider : '',
118
+ shippingProvider: shippingProvider ? shippingProvider : '',
70
119
  trackingNo: trackingNo ? trackingNo : '',
71
- platform: marketplaceOrder ? marketplaceOrder.marketplaceStore.platform : '',
120
+ airwayBill: releaseGood?.airwayBill,
121
+ invoice: releaseGood?.invoice,
122
+ platform: marketplaceOrder ? marketplaceOrder.marketplaceStore.platform : 'operato',
72
123
  marketplaceStoreId: marketplaceOrder ? marketplaceOrder.marketplaceStore.id : '',
73
- marketplaceStatus: marketplaceOrder ? marketplaceOrder.status : '',
124
+ marketplaceStatus: marketplaceStatus ? marketplaceStatus : '',
74
125
  marketplaceOrder: marketplaceOrder ? marketplaceOrder : ''
75
126
  },
76
127
  worksheetDetailInfos: worksheet.worksheetDetails.map(async (packingWSD: WorksheetDetail) => {
@@ -1,8 +1,12 @@
1
+ import { EntityManager } from 'typeorm'
2
+
1
3
  import { User } from '@things-factory/auth-base'
2
4
  import { MarketplaceStore } from '@things-factory/integration-marketplace'
5
+ import { Sellercraft, SellercraftStatus } from '@things-factory/integration-sellercraft'
6
+ import { ReleaseGood } from '@things-factory/sales-base'
3
7
  import { Domain } from '@things-factory/shell'
4
- import { EntityManager } from 'typeorm'
5
- import { EcommerceController, PickingWorksheetController } from '../../../../controllers'
8
+
9
+ import { EcommerceController, PickingWorksheetController, SellercraftController } from '../../../../controllers'
6
10
  import { Worksheet } from '../../../../entities'
7
11
 
8
12
  export const activateBatchPickingResolver = {
@@ -20,8 +24,34 @@ export async function activateBatchPicking(
20
24
  ): Promise<Worksheet> {
21
25
  const worksheetController: PickingWorksheetController = new PickingWorksheetController(tx, domain, user)
22
26
  const worksheet = await worksheetController.activateBatchPicking(worksheetNo)
27
+ const worksheetDetails = worksheet.worksheetDetails
23
28
  const companyDomain: Domain = worksheet?.bizplace.company.domain
24
29
 
30
+ const sellercraft: Sellercraft = await tx
31
+ .getRepository(Sellercraft)
32
+ .findOne({ domain: worksheet.bizplace.domain, status: SellercraftStatus.ACTIVE })
33
+
34
+ if (sellercraft) {
35
+ const releaseGoods: ReleaseGood[] = worksheetDetails.map(
36
+ worksheetDetail => worksheetDetail.targetInventory && worksheetDetail.targetInventory.releaseGood
37
+ )
38
+ const uniqueReleaseGoods: ReleaseGood[] = []
39
+ const map = new Map()
40
+ for (const releaseGood of releaseGoods) {
41
+ if (!map.has(releaseGood.id)) {
42
+ map.set(releaseGood.id, true)
43
+ uniqueReleaseGoods.push({ ...releaseGood })
44
+ }
45
+ }
46
+
47
+ await Promise.all(
48
+ uniqueReleaseGoods.map(async releaseGood => {
49
+ const sellercraftCtrl: SellercraftController = new SellercraftController(tx, domain, user)
50
+ await sellercraftCtrl.initiateOrderShipment(sellercraft, releaseGood)
51
+ })
52
+ )
53
+ }
54
+
25
55
  // find for any existing marketplace store connections
26
56
  const marketplaceStores: MarketplaceStore[] = await tx.getRepository(MarketplaceStore).find({
27
57
  where: { domain: companyDomain, status: 'ACTIVE', isAutoUpdateStockQty: true },
@@ -29,7 +59,6 @@ export async function activateBatchPicking(
29
59
  })
30
60
 
31
61
  if (marketplaceStores?.length && marketplaceStores.some(store => store.isAutoUpdateStockQty)) {
32
- const worksheetDetails = worksheet.worksheetDetails
33
62
  let orderInventories: any[] = worksheetDetails.map(wsd => wsd.targetInventory)
34
63
  const ecommerceCtrl: EcommerceController = new EcommerceController(tx, domain, user)
35
64
  await ecommerceCtrl.updateProductVariationStock(marketplaceStores, orderInventories, companyDomain)
@@ -1,10 +1,13 @@
1
+ import { EntityManager } from 'typeorm'
2
+
1
3
  import { User } from '@things-factory/auth-base'
2
4
  import { MarketplaceStore } from '@things-factory/integration-marketplace'
5
+ import { Sellercraft, SellercraftStatus } from '@things-factory/integration-sellercraft'
3
6
  import { MarketplaceOrder } from '@things-factory/marketplace-base'
4
- import { ReleaseGood, ORDER_STATUS } from '@things-factory/sales-base'
7
+ import { ORDER_STATUS, ReleaseGood } from '@things-factory/sales-base'
5
8
  import { Domain } from '@things-factory/shell'
6
- import { EntityManager } from 'typeorm'
7
- import { EcommerceController, PickingWorksheetController } from '../../../../controllers'
9
+
10
+ import { EcommerceController, PickingWorksheetController, SellercraftController } from '../../../../controllers'
8
11
  import { Worksheet } from '../../../../entities'
9
12
 
10
13
  export const activatePickingResolver = {
@@ -30,25 +33,36 @@ export async function activatePicking(
30
33
  relations: ['marketplaceDistributors']
31
34
  })
32
35
 
33
- const releaseGood: ReleaseGood = worksheet.releaseGood
36
+ let releaseGood: ReleaseGood = worksheet.releaseGood
34
37
 
35
38
  if (releaseGood.type === 'b2c') {
36
- if (marketplaceStores?.length && marketplaceStores.some(store => store.isAutoUpdateStockQty)) {
37
- const worksheetDetails = worksheet.worksheetDetails
38
- let orderInventories: any[] = worksheetDetails.map(wsd => wsd.targetInventory)
39
- const ecommerceCtrl: EcommerceController = new EcommerceController(tx, domain, user)
40
- await ecommerceCtrl.updateProductVariationStock(marketplaceStores, orderInventories, companyDomain)
39
+ const sellercraft: Sellercraft = await tx
40
+ .getRepository(Sellercraft)
41
+ .findOne({ domain: worksheet.bizplace.domain, status: SellercraftStatus.ACTIVE })
42
+
43
+ if (sellercraft) {
44
+ const sellercraftCtrl: SellercraftController = new SellercraftController(tx, domain, user)
45
+ await sellercraftCtrl.initiateOrderShipment(sellercraft, releaseGood)
41
46
  }
42
47
 
43
- const marketplaceOrder: MarketplaceOrder = await tx.getRepository(MarketplaceOrder).findOne({
44
- where: { releaseOrderId: releaseGood.id, domain: companyDomain },
45
- relations: ['marketplaceStore']
46
- })
47
- const marketplaceStore: MarketplaceStore = marketplaceOrder.marketplaceStore
48
+ if (marketplaceStores?.length && !sellercraft) {
49
+ if (marketplaceStores.some(store => store.isAutoUpdateStockQty)) {
50
+ const worksheetDetails = worksheet.worksheetDetails
51
+ let orderInventories: any[] = worksheetDetails.map(wsd => wsd.targetInventory)
52
+ const ecommerceCtrl: EcommerceController = new EcommerceController(tx, domain, user)
53
+ await ecommerceCtrl.updateProductVariationStock(marketplaceStores, orderInventories, companyDomain)
54
+ }
55
+
56
+ const marketplaceOrder: MarketplaceOrder = await tx.getRepository(MarketplaceOrder).findOne({
57
+ where: { orderNo: releaseGood.refNo, domain: companyDomain },
58
+ relations: ['marketplaceStore']
59
+ })
60
+ const marketplaceStore: MarketplaceStore = marketplaceOrder.marketplaceStore
48
61
 
49
- if (marketplaceStore.isAutoUpdateShipment) {
50
- const ecommerceCtrl: EcommerceController = new EcommerceController(tx, domain, user)
51
- await ecommerceCtrl.createOrderComment(marketplaceStore, marketplaceOrder, ORDER_STATUS.PICKING)
62
+ if (marketplaceStore.isAutoUpdateShipment) {
63
+ const ecommerceCtrl: EcommerceController = new EcommerceController(tx, domain, user)
64
+ await ecommerceCtrl.createOrderComment(marketplaceStore, marketplaceOrder, ORDER_STATUS.PICKING)
65
+ }
52
66
  }
53
67
  }
54
68
 
@@ -7,11 +7,11 @@ import { WorksheetDetail } from '../../../../entities'
7
7
  export const assignPickingInventoriesResolver = {
8
8
  async assignPickingInventories(
9
9
  _: any,
10
- { worksheetNo, batchId, productId, packingType, worksheetDetails },
10
+ { worksheetNo, batchId, productId, packingType, packingSize, worksheetDetails },
11
11
  context: any
12
12
  ): Promise<void> {
13
13
  const { tx, domain, user }: { tx: EntityManager; domain: Domain; user: User } = context.state
14
- await assignPickingInventories(tx, domain, user, worksheetNo, batchId, productId, packingType, worksheetDetails)
14
+ await assignPickingInventories(tx, domain, user, worksheetNo, batchId, productId, packingType, packingSize, worksheetDetails)
15
15
  }
16
16
  }
17
17
 
@@ -23,8 +23,9 @@ export async function assignPickingInventories(
23
23
  batchId: string,
24
24
  productId: string,
25
25
  packingType: string,
26
+ packingSize: number,
26
27
  worksheetDetails: Partial<WorksheetDetail>[]
27
28
  ): Promise<void> {
28
29
  const worksheetController: PickingWorksheetController = new PickingWorksheetController(tx, domain, user)
29
- await worksheetController.assignPickingInventories(worksheetNo, batchId, productId, packingType, worksheetDetails)
30
+ await worksheetController.assignPickingInventories(worksheetNo, batchId, productId, packingType, packingSize, worksheetDetails)
30
31
  }
@@ -1,12 +1,15 @@
1
+ import { EntityManager } from 'typeorm'
2
+
1
3
  import { User } from '@things-factory/auth-base'
2
4
  import { Bizplace, getMyBizplace } from '@things-factory/biz-base'
3
- import { ReleaseGood, OrderInventory } from '@things-factory/sales-base'
5
+ import { Sellercraft, SellercraftStatus } from '@things-factory/integration-sellercraft'
6
+ import { OrderInventory, ReleaseGood } from '@things-factory/sales-base'
4
7
  import { Domain } from '@things-factory/shell'
5
- import { EntityManager } from 'typeorm'
6
- import { WORKSHEET_TYPE } from '../../../../constants'
8
+
7
9
  import {
8
10
  PackingWorksheetController,
9
11
  PickingWorksheetController,
12
+ SellercraftController,
10
13
  SortingWorksheetController
11
14
  } from '../../../../controllers/'
12
15
  import { WorksheetController } from '../../../../controllers/worksheet-controller'
@@ -41,6 +44,31 @@ export async function completeBatchPicking(
41
44
  const worksheetDetails: WorksheetDetail[] = worksheet.worksheetDetails
42
45
  const targetInventories: OrderInventory[] = worksheetDetails.map((wsd: WorksheetDetail) => wsd.targetInventory)
43
46
 
47
+ const sellercraft: Sellercraft = await tx
48
+ .getRepository(Sellercraft)
49
+ .findOne({ domain: worksheet.bizplace.domain, status: SellercraftStatus.ACTIVE })
50
+
51
+ if (sellercraft) {
52
+ const releaseGoods: ReleaseGood[] = worksheetDetails.map(
53
+ worksheetDetail => worksheetDetail.targetInventory && worksheetDetail.targetInventory.releaseGood
54
+ )
55
+ const uniqueReleaseGoods: ReleaseGood[] = []
56
+ const map = new Map()
57
+ for (const releaseGood of releaseGoods) {
58
+ if (!map.has(releaseGood.id)) {
59
+ map.set(releaseGood.id, true)
60
+ uniqueReleaseGoods.push({ ...releaseGood })
61
+ }
62
+ }
63
+
64
+ await Promise.all(
65
+ uniqueReleaseGoods.map(async releaseGood => {
66
+ const sellercraftCtrl: SellercraftController = new SellercraftController(tx, domain, user)
67
+ await sellercraftCtrl.initiateOrderDocument(sellercraft, releaseGood)
68
+ })
69
+ )
70
+ }
71
+
44
72
  const pickPackTargetInventories: OrderInventory[] = targetInventories
45
73
  .filter(targetInventory => targetInventory.releaseGood.packingOption)
46
74
  .map((pickPackTargetInventory: OrderInventory) => {