@things-factory/operato-hub 4.3.0 → 4.4.0-alpha.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 (63) hide show
  1. package/client/pages/constants/setting.js +0 -1
  2. package/config.development.js +49 -0
  3. package/dist-server/controllers/bizplace-initializer/dataset/codes.js +0 -9
  4. package/dist-server/controllers/bizplace-initializer/dataset/codes.js.map +1 -1
  5. package/dist-server/controllers/bizplace-initializer/dataset/index.js +5 -1
  6. package/dist-server/controllers/bizplace-initializer/dataset/index.js.map +1 -1
  7. package/dist-server/controllers/bizplace-initializer/dataset/settings.js +0 -10
  8. package/dist-server/controllers/bizplace-initializer/dataset/settings.js.map +1 -1
  9. package/dist-server/controllers/bizplace-initializer/index.js +5 -1
  10. package/dist-server/controllers/bizplace-initializer/index.js.map +1 -1
  11. package/dist-server/controllers/company-initializer/index.js +5 -1
  12. package/dist-server/controllers/company-initializer/index.js.map +1 -1
  13. package/dist-server/graphql/index.js +5 -1
  14. package/dist-server/graphql/index.js.map +1 -1
  15. package/dist-server/graphql/resolvers/index.js +5 -1
  16. package/dist-server/graphql/resolvers/index.js.map +1 -1
  17. package/dist-server/graphql/types/index.js +5 -1
  18. package/dist-server/graphql/types/index.js.map +1 -1
  19. package/dist-server/index.js +5 -1
  20. package/dist-server/index.js.map +1 -1
  21. package/dist-server/routers/api/restful-apis/unstable/add-marketplace-order.js +75 -85
  22. package/dist-server/routers/api/restful-apis/unstable/add-marketplace-order.js.map +1 -1
  23. package/dist-server/routers/api/restful-apis/unstable/add-release-order.js +35 -147
  24. package/dist-server/routers/api/restful-apis/unstable/add-release-order.js.map +1 -1
  25. package/dist-server/routers/api/restful-apis/unstable/index.js +0 -1
  26. package/dist-server/routers/api/restful-apis/unstable/index.js.map +1 -1
  27. package/dist-server/routers/api/restful-apis/v1/add-marketplace-order.js +75 -85
  28. package/dist-server/routers/api/restful-apis/v1/add-marketplace-order.js.map +1 -1
  29. package/dist-server/routers/api/restful-apis/v1/add-release-order.js +34 -146
  30. package/dist-server/routers/api/restful-apis/v1/add-release-order.js.map +1 -1
  31. package/dist-server/routers/api/restful-apis/v1/index.js +0 -1
  32. package/dist-server/routers/api/restful-apis/v1/index.js.map +1 -1
  33. package/dist-server/routers/api/restful-apis/v2/add-marketplace-order.js +75 -85
  34. package/dist-server/routers/api/restful-apis/v2/add-marketplace-order.js.map +1 -1
  35. package/dist-server/routers/api/restful-apis/v2/add-release-order.js +34 -149
  36. package/dist-server/routers/api/restful-apis/v2/add-release-order.js.map +1 -1
  37. package/dist-server/routers/api/restful-apis/v2/index.js +0 -1
  38. package/dist-server/routers/api/restful-apis/v2/index.js.map +1 -1
  39. package/dist-server/routers/business/index.js +5 -1
  40. package/dist-server/routers/business/index.js.map +1 -1
  41. package/dist-server/utils/index.js +5 -1
  42. package/dist-server/utils/index.js.map +1 -1
  43. package/package.json +69 -69
  44. package/server/controllers/bizplace-initializer/dataset/codes.ts +0 -9
  45. package/server/controllers/bizplace-initializer/dataset/settings.ts +0 -10
  46. package/server/routers/api/restful-apis/unstable/add-marketplace-order.ts +85 -97
  47. package/server/routers/api/restful-apis/unstable/add-release-order.ts +28 -211
  48. package/server/routers/api/restful-apis/unstable/index.ts +0 -1
  49. package/server/routers/api/restful-apis/v1/add-marketplace-order.ts +85 -97
  50. package/server/routers/api/restful-apis/v1/add-release-order.ts +26 -209
  51. package/server/routers/api/restful-apis/v1/index.ts +0 -1
  52. package/server/routers/api/restful-apis/v2/add-marketplace-order.ts +85 -97
  53. package/server/routers/api/restful-apis/v2/add-release-order.ts +26 -212
  54. package/server/routers/api/restful-apis/v2/index.ts +0 -1
  55. package/dist-server/routers/api/restful-apis/unstable/add-draft-release-order.js +0 -171
  56. package/dist-server/routers/api/restful-apis/unstable/add-draft-release-order.js.map +0 -1
  57. package/dist-server/routers/api/restful-apis/v1/add-draft-release-order.js +0 -171
  58. package/dist-server/routers/api/restful-apis/v1/add-draft-release-order.js.map +0 -1
  59. package/dist-server/routers/api/restful-apis/v2/add-draft-release-order.js +0 -171
  60. package/dist-server/routers/api/restful-apis/v2/add-draft-release-order.js.map +0 -1
  61. package/server/routers/api/restful-apis/unstable/add-draft-release-order.ts +0 -196
  62. package/server/routers/api/restful-apis/v1/add-draft-release-order.ts +0 -196
  63. package/server/routers/api/restful-apis/v2/add-draft-release-order.ts +0 -196
@@ -5,8 +5,6 @@
5
5
  import gql from 'graphql-tag'
6
6
 
7
7
  import { restfulApiRouter as router } from '@things-factory/api'
8
- import { EntityManager, getConnection } from 'typeorm'
9
- import { MarketplaceOrder } from '@things-factory/marketplace-base'
10
8
 
11
9
  import { businessMiddleware } from '../../../../middlewares/business-middleware'
12
10
  import { storeMiddleware } from '../../../../middlewares/store-middleware'
@@ -18,109 +16,99 @@ router.post(
18
16
  businessMiddleware,
19
17
  storeMiddleware,
20
18
  async (context, next) => {
21
- return await getConnection().transaction(async (tx: EntityManager) => {
22
- const { client, marketplaceStore, domain } = context.state
23
- const { t } = context
24
- const bodyReq = context.request.body
25
-
26
- if (typeof bodyReq === undefined || !Object.keys(bodyReq)?.length) {
27
- context.throw(400, t('error.invalid body request format'))
28
- }
29
-
30
- await checkMandatoryKey(context, bodyReq)
31
- debug('post:/add-marketplace-order body request', bodyReq)
32
-
33
- let existingMarketplaceOrder: MarketplaceOrder = await tx.getRepository(MarketplaceOrder).findOne({
34
- where: { name: bodyReq.name, domain, marketplaceStore }
35
- })
36
-
37
- if (existingMarketplaceOrder) {
38
- context.throw(400, `error.duplicate entry for order ${bodyReq.name}`)
39
- }
40
-
41
- context.body = {
42
- result: (
43
- await client.mutate({
44
- mutation: gql`
45
- mutation generateMarketplaceOrder($marketplaceOrder: NewMarketplaceOrder!) {
46
- generateMarketplaceOrder(marketplaceOrder: $marketplaceOrder) {
19
+ const { client, marketplaceStore, domain } = context.state
20
+ const { t } = context
21
+ const bodyReq = context.request.body
22
+
23
+ if (typeof bodyReq === undefined || !Object.keys(bodyReq)?.length) {
24
+ context.throw(400, t('error.invalid body request format'))
25
+ }
26
+
27
+ await checkMandatoryKey(context, bodyReq)
28
+ debug('post:/add-marketplace-order body request', bodyReq)
29
+
30
+ context.body = {
31
+ result: (
32
+ await client.mutate({
33
+ mutation: gql`
34
+ mutation generateMarketplaceOrder($marketplaceOrder: NewMarketplaceOrder!) {
35
+ generateMarketplaceOrder(marketplaceOrder: $marketplaceOrder) {
36
+ id
37
+ orderNo
38
+ currency
39
+ itemCount
40
+ totalAmount
41
+ paymentMethod
42
+ remark
43
+ giftOption
44
+ orderCreatedAt
45
+ orderUpdatedAt
46
+ marketplaceStore {
47
+ storeId
48
+ }
49
+ marketplaceOrderItems {
47
50
  id
48
- orderNo
49
- currency
50
- itemCount
51
- totalAmount
52
- paymentMethod
53
- remark
54
- giftOption
55
- orderCreatedAt
56
- orderUpdatedAt
57
- marketplaceStore {
58
- storeId
51
+ name
52
+ qty
53
+ cancelBy
54
+ returnStatus
55
+ paidPrice
56
+ packageId
57
+ invoiceNo
58
+ status
59
+ marketplaceOrderShippingItems {
60
+ marketplaceOrderShipping {
61
+ attentionTo
62
+ address1
63
+ address2
64
+ address3
65
+ address4
66
+ address5
67
+ state
68
+ city
69
+ postCode
70
+ country
71
+ phone1
72
+ phone2
73
+ email
74
+ orderType
75
+ freightType
76
+ parcelType
77
+ goodsType
78
+ deliveryMethod
79
+ totalWeight
80
+ totalVolume
81
+ transporter
82
+ }
59
83
  }
60
- marketplaceOrderItems {
84
+ marketplaceProductVariation {
61
85
  id
86
+ sku
87
+ variationId
88
+ variationSku
89
+ channelSku
62
90
  name
63
- qty
64
- cancelBy
65
- returnStatus
66
- paidPrice
67
- packageId
68
- invoiceNo
69
- status
70
- marketplaceOrderShippingItems {
71
- marketplaceOrderShipping {
72
- attentionTo
73
- address1
74
- address2
75
- address3
76
- address4
77
- address5
78
- state
79
- city
80
- postCode
81
- country
82
- phone1
83
- phone2
84
- email
85
- orderType
86
- freightType
87
- parcelType
88
- goodsType
89
- deliveryMethod
90
- totalWeight
91
- totalVolume
92
- transporter
93
- }
94
- }
95
- marketplaceProductVariation {
96
- id
97
- sku
98
- variationId
99
- variationSku
100
- channelSku
101
- name
102
- costPrice
103
- sellPrice
104
- marketplaceStatus
105
- }
91
+ costPrice
92
+ sellPrice
93
+ marketplaceStatus
106
94
  }
107
95
  }
108
96
  }
109
- `,
110
- variables: { marketplaceOrder: bodyReq },
111
- context: {
112
- ...context,
113
- state: {
114
- ...context.state,
115
- marketplaceStore,
116
- domain,
117
- type: 'api'
118
- }
119
97
  }
120
- } as any)
121
- ).data
122
- }
123
- })
98
+ `,
99
+ variables: { marketplaceOrder: bodyReq },
100
+ context: {
101
+ ...context,
102
+ state: {
103
+ ...context.state,
104
+ marketplaceStore,
105
+ domain,
106
+ type: 'api'
107
+ }
108
+ }
109
+ } as any)
110
+ ).data
111
+ }
124
112
  }
125
113
  )
126
114
 
@@ -258,37 +258,17 @@ router.post(
258
258
 
259
259
  if (!response.errors) {
260
260
  const items = response.data.inventoriesByPallet.items || []
261
- if (!items?.length) {
262
- context.body = {
263
- result: await createDraftOrder(
264
- client,
265
- customerBizplace,
266
- bodyReq,
267
- bundleInfo,
268
- domain,
269
- context,
270
- orderInventories,
271
- tx
261
+ if (!items?.length)
262
+ context.throw(
263
+ 404,
264
+ t(
265
+ `error.no inventories found for ${orderInventory.product?.sku} with batch ID ${orderInventory?.batchId}`
272
266
  )
273
- }
274
- return
275
- }
267
+ )
276
268
 
277
- items.forEach(async item => {
269
+ items.forEach(item => {
278
270
  if (orderInventory.releaseQty > item.remainQty || orderInventory.releaseQty <= 0) {
279
- context.body = {
280
- result: await createDraftOrder(
281
- client,
282
- customerBizplace,
283
- bodyReq,
284
- bundleInfo,
285
- domain,
286
- context,
287
- orderInventories,
288
- tx
289
- )
290
- }
291
- return
271
+ context.throw(404, t(`error.invalid release qty for ${orderInventory.product?.sku}`))
292
272
  }
293
273
 
294
274
  // 3. add more information to orderInventory
@@ -301,21 +281,7 @@ router.post(
301
281
  })
302
282
 
303
283
  return orderInventory
304
- } else {
305
- context.body = {
306
- result: await createDraftOrder(
307
- client,
308
- customerBizplace,
309
- bodyReq,
310
- bundleInfo,
311
- domain,
312
- context,
313
- orderInventories,
314
- tx
315
- )
316
- }
317
- return
318
- }
284
+ } else context.throw(404, t('error.failed to fetch inventory'))
319
285
  })
320
286
  )
321
287
  } else {
@@ -400,21 +366,8 @@ router.post(
400
366
  }
401
367
 
402
368
  let inventories: Inventory[] = await qb.getMany()
403
- if (!inventories?.length) {
404
- context.body = {
405
- result: await createDraftOrder(
406
- client,
407
- customerBizplace,
408
- bodyReq,
409
- bundleInfo,
410
- domain,
411
- context,
412
- orderInventories,
413
- tx
414
- )
415
- }
416
- return
417
- }
369
+ if (!inventories?.length) context.throw(404, t(`error.no inventories found for ${product.sku}`))
370
+
418
371
  inventories = inventories
419
372
  .map(inventory => {
420
373
  return {
@@ -425,24 +378,12 @@ router.post(
425
378
  })
426
379
  .filter(inventory => inventory.remainQty > 0)
427
380
 
428
- let targetInventories: WorksheetDetail[]
429
- try {
430
- targetInventories = _composeTargetInventories(context, product, orderInventory, inventories)
431
- } catch (e) {
432
- context.body = {
433
- result: await createDraftOrder(
434
- client,
435
- customerBizplace,
436
- bodyReq,
437
- bundleInfo,
438
- domain,
439
- context,
440
- orderInventories,
441
- tx
442
- )
443
- }
444
- return
445
- }
381
+ const targetInventories: WorksheetDetail[] = _composeTargetInventories(
382
+ context,
383
+ product,
384
+ orderInventory,
385
+ inventories
386
+ )
446
387
  targetInventories.map(item => {
447
388
  finalOrderInventories.push(item.targetInventory)
448
389
  })
@@ -491,37 +432,17 @@ router.post(
491
432
 
492
433
  if (!response.errors) {
493
434
  const items = response.data.inventoryProductGroup.items || []
494
- if (!items?.length) {
495
- context.body = {
496
- result: await createDraftOrder(
497
- client,
498
- customerBizplace,
499
- bodyReq,
500
- bundleInfo,
501
- domain,
502
- context,
503
- orderInventories,
504
- tx
435
+ if (!items?.length)
436
+ context.throw(
437
+ 404,
438
+ t(
439
+ `error.no inventories found for ${orderInventory.product?.sku} with batch ID ${orderInventory?.batchId}`
505
440
  )
506
- }
507
- return
508
- }
441
+ )
509
442
 
510
- items.forEach(async item => {
443
+ items.forEach(item => {
511
444
  if (orderInventory.releaseQty > item.remainQty || orderInventory.releaseQty <= 0) {
512
- context.body = {
513
- result: await createDraftOrder(
514
- client,
515
- customerBizplace,
516
- bodyReq,
517
- bundleInfo,
518
- domain,
519
- context,
520
- orderInventories,
521
- tx
522
- )
523
- }
524
- return
445
+ context.throw(404, t(`error.invalid release qty for ${orderInventory.product?.sku}`))
525
446
  }
526
447
 
527
448
  // 3. add more information to orderInventory
@@ -535,21 +456,7 @@ router.post(
535
456
 
536
457
  delete orderInventory.uomValue
537
458
  finalOrderInventories.push(orderInventory)
538
- } else {
539
- context.body = {
540
- result: await createDraftOrder(
541
- client,
542
- customerBizplace,
543
- bodyReq,
544
- bundleInfo,
545
- domain,
546
- context,
547
- orderInventories,
548
- tx
549
- )
550
- }
551
- return
552
- }
459
+ } else context.throw(404, t('error.failed to fetch inventory'))
553
460
  }
554
461
  }
555
462
  }
@@ -823,93 +730,3 @@ function combineItems(inventoryList) {
823
730
 
824
731
  return mappedList
825
732
  }
826
-
827
- async function createDraftOrder(client, customerBizplace, bodyReq, bundleInfo, domain, context, orderInventories, tx) {
828
- return (
829
- await client.mutate({
830
- mutation: gql`
831
- mutation upsertDraftReleaseGood(
832
- $draftReleaseGood: DraftReleaseGoodPatch!
833
- $orderProducts: [OrderProductPatch!]!
834
- ) {
835
- upsertDraftReleaseGood(draftReleaseGood: $draftReleaseGood, orderProducts: $orderProducts) {
836
- id
837
- name
838
- refNo
839
- refNo2
840
- status
841
- truckNo
842
- ownTransport
843
- marketplaceOrderStatus
844
- billingAddress
845
- deliveryAddress1
846
- deliveryAddress2
847
- deliveryAddress3
848
- deliveryAddress4
849
- deliveryAddress5
850
- attentionTo
851
- attentionCompany
852
- city
853
- state
854
- postalCode
855
- country
856
- phone1
857
- phone2
858
- email
859
- type
860
- exportOption
861
- releaseDate
862
- collectionOrderNo
863
- bizplace {
864
- name
865
- }
866
- }
867
- }
868
- `,
869
- variables: {
870
- draftReleaseGood: {
871
- bizplace: {
872
- id: customerBizplace.id
873
- },
874
- courierOption: bodyReq.courierOption,
875
- collectionOrderNo: bodyReq.collectionOrderNo,
876
- exportOption: bodyReq.exportOption,
877
- ownTransport: bodyReq.ownTransport,
878
- packingOption: bodyReq.packingOption,
879
- refNo: bodyReq.refNo,
880
- refNo2: bodyReq?.refNo2,
881
- releaseDate: bodyReq.releaseDate,
882
- type: bodyReq.type,
883
- marketplaceOrderStatus: bodyReq?.marketplaceOrderStatus,
884
- remark: bodyReq?.remark || null,
885
- billingAddress: bodyReq?.billTo?.billingAddress || null,
886
- deliveryAddress1: bodyReq?.deliverTo?.deliveryAddress1 || null,
887
- deliveryAddress2: bodyReq?.deliverTo?.deliveryAddress2 || null,
888
- deliveryAddress3: bodyReq?.deliverTo?.deliveryAddress3 || null,
889
- deliveryAddress4: bodyReq?.deliverTo?.deliveryAddress4 || null,
890
- deliveryAddress5: bodyReq?.deliverTo?.deliveryAddress5 || null,
891
- attentionTo: bodyReq?.deliverTo?.attentionTo || null,
892
- attentionCompany: bodyReq?.deliverTo?.attentionCompany || null,
893
- city: bodyReq?.deliverTo?.city || null,
894
- state: bodyReq?.deliverTo?.state || null,
895
- postalCode: bodyReq?.deliverTo?.postalCode || null,
896
- country: bodyReq?.deliverTo?.country || null,
897
- phone1: bodyReq?.deliverTo?.phone1 || null,
898
- phone2: bodyReq?.deliverTo?.phone2 || null,
899
- email: bodyReq?.deliverTo?.email || null
900
- },
901
- orderProducts: orderInventories
902
- },
903
- context: {
904
- ...context,
905
- hasUpload: true,
906
- state: {
907
- ...context.state,
908
- customerBizplace,
909
- domain,
910
- type: 'api'
911
- }
912
- }
913
- } as any)
914
- ).data
915
- }
@@ -2,7 +2,6 @@ import './add-contact-point'
2
2
  import './add-inbound-order'
3
3
  import './add-marketplace-order'
4
4
  import './add-products'
5
- import './add-draft-release-order'
6
5
  import './add-release-order'
7
6
  import './bizplace'
8
7
  import './reject-inbound-order'