@things-factory/operato-hub 4.3.78 → 4.3.79-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 (168) hide show
  1. package/dist-server/middlewares/business-middleware.js +4 -1
  2. package/dist-server/middlewares/business-middleware.js.map +1 -1
  3. package/dist-server/middlewares/store-middleware.js.map +1 -1
  4. package/dist-server/routers/api/restful-apis/unstable/add-draft-release-order.js +3 -2
  5. package/dist-server/routers/api/restful-apis/unstable/add-draft-release-order.js.map +1 -1
  6. package/dist-server/routers/api/restful-apis/unstable/add-inbound-order.js +5 -2
  7. package/dist-server/routers/api/restful-apis/unstable/add-inbound-order.js.map +1 -1
  8. package/dist-server/routers/api/restful-apis/unstable/add-release-order.js +4 -2
  9. package/dist-server/routers/api/restful-apis/unstable/add-release-order.js.map +1 -1
  10. package/dist-server/routers/api/restful-apis/v1/company/add-contact-points.js +94 -0
  11. package/dist-server/routers/api/restful-apis/v1/company/add-contact-points.js.map +1 -0
  12. package/dist-server/routers/api/restful-apis/v1/company/add-marketplace-order.js +208 -0
  13. package/dist-server/routers/api/restful-apis/v1/company/add-marketplace-order.js.map +1 -0
  14. package/dist-server/routers/api/restful-apis/v1/company/add-product.js +65 -0
  15. package/dist-server/routers/api/restful-apis/v1/company/add-product.js.map +1 -0
  16. package/dist-server/routers/api/restful-apis/v1/company/cancel-marketplace-order.js +97 -0
  17. package/dist-server/routers/api/restful-apis/v1/company/cancel-marketplace-order.js.map +1 -0
  18. package/dist-server/routers/api/restful-apis/v1/company/get-bizplace-list.js +50 -0
  19. package/dist-server/routers/api/restful-apis/v1/company/get-bizplace-list.js.map +1 -0
  20. package/dist-server/routers/api/restful-apis/v1/company/get-contact-point-list.js +63 -0
  21. package/dist-server/routers/api/restful-apis/v1/company/get-contact-point-list.js.map +1 -0
  22. package/dist-server/routers/api/restful-apis/v1/company/get-marketplace-order-shipping-list.js +110 -0
  23. package/dist-server/routers/api/restful-apis/v1/company/get-marketplace-order-shipping-list.js.map +1 -0
  24. package/dist-server/routers/api/restful-apis/v1/company/get-marketplace-store-list.js +52 -0
  25. package/dist-server/routers/api/restful-apis/v1/company/get-marketplace-store-list.js.map +1 -0
  26. package/dist-server/routers/api/restful-apis/v1/company/get-partner-list.js +90 -0
  27. package/dist-server/routers/api/restful-apis/v1/company/get-partner-list.js.map +1 -0
  28. package/dist-server/routers/api/restful-apis/v1/company/get-product-list.js +99 -0
  29. package/dist-server/routers/api/restful-apis/v1/company/get-product-list.js.map +1 -0
  30. package/dist-server/routers/api/restful-apis/v1/company/index.js +14 -0
  31. package/dist-server/routers/api/restful-apis/v1/company/index.js.map +1 -0
  32. package/dist-server/routers/api/restful-apis/v1/company/update-marketplace-order-delivered.js +65 -0
  33. package/dist-server/routers/api/restful-apis/v1/company/update-marketplace-order-delivered.js.map +1 -0
  34. package/dist-server/routers/api/restful-apis/v1/index.js +2 -31
  35. package/dist-server/routers/api/restful-apis/v1/index.js.map +1 -1
  36. package/dist-server/routers/api/restful-apis/v1/middlewares/business-middleware.js +29 -0
  37. package/dist-server/routers/api/restful-apis/v1/middlewares/business-middleware.js.map +1 -0
  38. package/dist-server/routers/api/restful-apis/v1/middlewares/index.js +40 -0
  39. package/dist-server/routers/api/restful-apis/v1/middlewares/index.js.map +1 -0
  40. package/dist-server/routers/api/restful-apis/v1/middlewares/logging-middleware.js +23 -0
  41. package/dist-server/routers/api/restful-apis/v1/middlewares/logging-middleware.js.map +1 -0
  42. package/dist-server/routers/api/restful-apis/v1/middlewares/store-middleware.js +32 -0
  43. package/dist-server/routers/api/restful-apis/v1/middlewares/store-middleware.js.map +1 -0
  44. package/dist-server/routers/api/restful-apis/v1/middlewares/validation-middleware.js +53 -0
  45. package/dist-server/routers/api/restful-apis/v1/middlewares/validation-middleware.js.map +1 -0
  46. package/dist-server/routers/api/restful-apis/v1/middlewares/warehouse-middleware.js +31 -0
  47. package/dist-server/routers/api/restful-apis/v1/middlewares/warehouse-middleware.js.map +1 -0
  48. package/dist-server/routers/api/restful-apis/v1/utils/error-util.js +71 -0
  49. package/dist-server/routers/api/restful-apis/v1/utils/error-util.js.map +1 -0
  50. package/dist-server/routers/api/restful-apis/v1/utils/expected-parameters.js +201 -0
  51. package/dist-server/routers/api/restful-apis/v1/utils/expected-parameters.js.map +1 -0
  52. package/dist-server/routers/api/restful-apis/v1/utils/params.js +293 -0
  53. package/dist-server/routers/api/restful-apis/v1/utils/params.js.map +1 -0
  54. package/dist-server/routers/api/restful-apis/v1/utils/validate-util.js +90 -0
  55. package/dist-server/routers/api/restful-apis/v1/utils/validate-util.js.map +1 -0
  56. package/dist-server/routers/api/restful-apis/v1/warehouse/add-inbound-order.js +277 -0
  57. package/dist-server/routers/api/restful-apis/v1/warehouse/add-inbound-order.js.map +1 -0
  58. package/dist-server/routers/api/restful-apis/v1/warehouse/add-release-order.js +810 -0
  59. package/dist-server/routers/api/restful-apis/v1/warehouse/add-release-order.js.map +1 -0
  60. package/dist-server/routers/api/restful-apis/v1/warehouse/cancel-inbound-order.js +116 -0
  61. package/dist-server/routers/api/restful-apis/v1/warehouse/cancel-inbound-order.js.map +1 -0
  62. package/dist-server/routers/api/restful-apis/v1/warehouse/get-delivery-order-list.js +140 -0
  63. package/dist-server/routers/api/restful-apis/v1/warehouse/get-delivery-order-list.js.map +1 -0
  64. package/dist-server/routers/api/restful-apis/v1/warehouse/get-goods-received-note-list.js +100 -0
  65. package/dist-server/routers/api/restful-apis/v1/warehouse/get-goods-received-note-list.js.map +1 -0
  66. package/dist-server/routers/api/restful-apis/v1/warehouse/get-inbound-order-details.js +78 -0
  67. package/dist-server/routers/api/restful-apis/v1/warehouse/get-inbound-order-details.js.map +1 -0
  68. package/dist-server/routers/api/restful-apis/v1/warehouse/get-inbound-order-list.js +96 -0
  69. package/dist-server/routers/api/restful-apis/v1/warehouse/get-inbound-order-list.js.map +1 -0
  70. package/dist-server/routers/api/restful-apis/v1/warehouse/get-inventory-product-group-list.js +244 -0
  71. package/dist-server/routers/api/restful-apis/v1/warehouse/get-inventory-product-group-list.js.map +1 -0
  72. package/dist-server/routers/api/restful-apis/v1/warehouse/get-onhand-inventory-list.js +96 -0
  73. package/dist-server/routers/api/restful-apis/v1/warehouse/get-onhand-inventory-list.js.map +1 -0
  74. package/dist-server/routers/api/restful-apis/v1/warehouse/get-release-order-details.js +94 -0
  75. package/dist-server/routers/api/restful-apis/v1/warehouse/get-release-order-details.js.map +1 -0
  76. package/dist-server/routers/api/restful-apis/v1/warehouse/get-release-order-list.js +112 -0
  77. package/dist-server/routers/api/restful-apis/v1/warehouse/get-release-order-list.js.map +1 -0
  78. package/dist-server/routers/api/restful-apis/v1/warehouse/index.js +13 -0
  79. package/dist-server/routers/api/restful-apis/v1/warehouse/index.js.map +1 -0
  80. package/package.json +54 -54
  81. package/server/middlewares/business-middleware.ts +5 -1
  82. package/server/middlewares/store-middleware.ts +1 -0
  83. package/server/routers/api/restful-apis/unstable/add-draft-release-order.ts +3 -2
  84. package/server/routers/api/restful-apis/unstable/add-inbound-order.ts +5 -2
  85. package/server/routers/api/restful-apis/unstable/add-release-order.ts +4 -2
  86. package/server/routers/api/restful-apis/v1/company/add-contact-points.ts +94 -0
  87. package/server/routers/api/restful-apis/v1/company/add-marketplace-order.ts +242 -0
  88. package/server/routers/api/restful-apis/v1/company/add-product.ts +78 -0
  89. package/server/routers/api/restful-apis/v1/company/cancel-marketplace-order.ts +102 -0
  90. package/server/routers/api/restful-apis/v1/company/get-bizplace-list.ts +56 -0
  91. package/server/routers/api/restful-apis/v1/company/get-contact-point-list.ts +69 -0
  92. package/server/routers/api/restful-apis/v1/company/get-marketplace-order-shipping-list.ts +118 -0
  93. package/server/routers/api/restful-apis/v1/company/get-marketplace-store-list.ts +58 -0
  94. package/server/routers/api/restful-apis/v1/company/get-partner-list.ts +97 -0
  95. package/server/routers/api/restful-apis/v1/company/get-product-list.ts +105 -0
  96. package/server/routers/api/restful-apis/v1/company/index.ts +11 -0
  97. package/server/routers/api/restful-apis/v1/company/update-marketplace-order-delivered.ts +70 -0
  98. package/server/routers/api/restful-apis/v1/index.ts +2 -31
  99. package/server/routers/api/restful-apis/v1/middlewares/business-middleware.ts +31 -0
  100. package/server/routers/api/restful-apis/v1/middlewares/index.ts +26 -0
  101. package/server/routers/api/restful-apis/v1/middlewares/logging-middleware.ts +24 -0
  102. package/server/routers/api/restful-apis/v1/middlewares/store-middleware.ts +34 -0
  103. package/server/routers/api/restful-apis/v1/middlewares/validation-middleware.ts +50 -0
  104. package/server/routers/api/restful-apis/v1/middlewares/warehouse-middleware.ts +31 -0
  105. package/server/routers/api/restful-apis/v1/utils/error-util.ts +70 -0
  106. package/server/routers/api/restful-apis/v1/utils/expected-parameters.ts +199 -0
  107. package/server/routers/api/restful-apis/v1/utils/params.ts +291 -0
  108. package/server/routers/api/restful-apis/v1/utils/validate-util.ts +74 -0
  109. package/server/routers/api/restful-apis/v1/warehouse/add-inbound-order.ts +361 -0
  110. package/server/routers/api/restful-apis/v1/warehouse/add-release-order.ts +1000 -0
  111. package/server/routers/api/restful-apis/v1/warehouse/cancel-inbound-order.ts +139 -0
  112. package/server/routers/api/restful-apis/v1/warehouse/get-delivery-order-list.ts +144 -0
  113. package/server/routers/api/restful-apis/v1/warehouse/get-goods-received-note-list.ts +109 -0
  114. package/server/routers/api/restful-apis/v1/warehouse/get-inbound-order-details.ts +74 -0
  115. package/server/routers/api/restful-apis/v1/warehouse/get-inbound-order-list.ts +99 -0
  116. package/server/routers/api/restful-apis/v1/warehouse/get-inventory-product-group-list.ts +295 -0
  117. package/server/routers/api/restful-apis/v1/warehouse/get-onhand-inventory-list.ts +99 -0
  118. package/server/routers/api/restful-apis/v1/warehouse/get-release-order-details.ts +97 -0
  119. package/server/routers/api/restful-apis/v1/warehouse/get-release-order-list.ts +116 -0
  120. package/server/routers/api/restful-apis/v1/warehouse/index.ts +10 -0
  121. package/dist-server/routers/api/restful-apis/v1/bizplace.js +0 -45
  122. package/dist-server/routers/api/restful-apis/v1/bizplace.js.map +0 -1
  123. package/dist-server/routers/api/restful-apis/v1/get-contact-point-list.js +0 -103
  124. package/dist-server/routers/api/restful-apis/v1/get-contact-point-list.js.map +0 -1
  125. package/dist-server/routers/api/restful-apis/v1/get-delivery-order-detail.js +0 -47
  126. package/dist-server/routers/api/restful-apis/v1/get-delivery-order-detail.js.map +0 -1
  127. package/dist-server/routers/api/restful-apis/v1/get-delivery-order-list.js +0 -124
  128. package/dist-server/routers/api/restful-apis/v1/get-delivery-order-list.js.map +0 -1
  129. package/dist-server/routers/api/restful-apis/v1/get-delivery-orders.js +0 -164
  130. package/dist-server/routers/api/restful-apis/v1/get-delivery-orders.js.map +0 -1
  131. package/dist-server/routers/api/restful-apis/v1/get-goods-received-notes.js +0 -120
  132. package/dist-server/routers/api/restful-apis/v1/get-goods-received-notes.js.map +0 -1
  133. package/dist-server/routers/api/restful-apis/v1/get-inbound-order-detail.js +0 -115
  134. package/dist-server/routers/api/restful-apis/v1/get-inbound-order-detail.js.map +0 -1
  135. package/dist-server/routers/api/restful-apis/v1/get-inbound-order-list.js +0 -125
  136. package/dist-server/routers/api/restful-apis/v1/get-inbound-order-list.js.map +0 -1
  137. package/dist-server/routers/api/restful-apis/v1/get-inventory-overall-product-group.js +0 -88
  138. package/dist-server/routers/api/restful-apis/v1/get-inventory-overall-product-group.js.map +0 -1
  139. package/dist-server/routers/api/restful-apis/v1/get-marketplace-store-list.js +0 -79
  140. package/dist-server/routers/api/restful-apis/v1/get-marketplace-store-list.js.map +0 -1
  141. package/dist-server/routers/api/restful-apis/v1/get-onhand-inventories.js +0 -110
  142. package/dist-server/routers/api/restful-apis/v1/get-onhand-inventories.js.map +0 -1
  143. package/dist-server/routers/api/restful-apis/v1/get-partners.js +0 -23
  144. package/dist-server/routers/api/restful-apis/v1/get-partners.js.map +0 -1
  145. package/dist-server/routers/api/restful-apis/v1/get-products.js +0 -210
  146. package/dist-server/routers/api/restful-apis/v1/get-products.js.map +0 -1
  147. package/dist-server/routers/api/restful-apis/v1/get-release-order-detail.js +0 -122
  148. package/dist-server/routers/api/restful-apis/v1/get-release-order-detail.js.map +0 -1
  149. package/dist-server/routers/api/restful-apis/v1/get-release-order-list.js +0 -191
  150. package/dist-server/routers/api/restful-apis/v1/get-release-order-list.js.map +0 -1
  151. package/dist-server/routers/api/restful-apis/v1/get-warehouses.js +0 -20
  152. package/dist-server/routers/api/restful-apis/v1/get-warehouses.js.map +0 -1
  153. package/server/routers/api/restful-apis/v1/bizplace.ts +0 -45
  154. package/server/routers/api/restful-apis/v1/get-contact-point-list.ts +0 -110
  155. package/server/routers/api/restful-apis/v1/get-delivery-order-detail.ts +0 -46
  156. package/server/routers/api/restful-apis/v1/get-delivery-order-list.ts +0 -121
  157. package/server/routers/api/restful-apis/v1/get-delivery-orders.ts +0 -178
  158. package/server/routers/api/restful-apis/v1/get-goods-received-notes.ts +0 -134
  159. package/server/routers/api/restful-apis/v1/get-inbound-order-detail.ts +0 -128
  160. package/server/routers/api/restful-apis/v1/get-inbound-order-list.ts +0 -126
  161. package/server/routers/api/restful-apis/v1/get-inventory-overall-product-group.ts +0 -99
  162. package/server/routers/api/restful-apis/v1/get-marketplace-store-list.ts +0 -81
  163. package/server/routers/api/restful-apis/v1/get-onhand-inventories.ts +0 -125
  164. package/server/routers/api/restful-apis/v1/get-partners.ts +0 -24
  165. package/server/routers/api/restful-apis/v1/get-products.ts +0 -216
  166. package/server/routers/api/restful-apis/v1/get-release-order-detail.ts +0 -134
  167. package/server/routers/api/restful-apis/v1/get-release-order-list.ts +0 -198
  168. package/server/routers/api/restful-apis/v1/get-warehouses.ts +0 -18
@@ -0,0 +1,139 @@
1
+ import { EntityManager, getConnection } from 'typeorm'
2
+
3
+ import { restfulApiRouter as router } from '@things-factory/api'
4
+ import { ArrivalNotice, ReleaseGood, rejectReleaseGood } from '@things-factory/sales-base'
5
+
6
+ import { ApiError, ApiErrorHandler, throwInternalServerError } from '../utils/error-util'
7
+ import { expectedParams, reqParams } from '../utils/expected-parameters'
8
+ import { validateBizplaceOfCompany, validateFilter, validateReqParams } from '../utils/validate-util'
9
+ import _ from 'lodash'
10
+
11
+ // import for cancelling Inbound Order Purpose
12
+ import { ORDER_STATUS } from '@things-factory/sales-base'
13
+ import { User } from '@things-factory/auth-base'
14
+ import { Domain } from '@things-factory/shell'
15
+ import { OrderProduct, OrderVas, CollectionOrder } from '@things-factory/sales-base'
16
+ import { ORDER_PRODUCT_STATUS, ORDER_VAS_STATUS } from '@things-factory/sales-base'
17
+ import { getDomainUsers } from '@things-factory/biz-base'
18
+ import { loggingMiddleware, businessMiddleware } from '../middlewares'
19
+
20
+ router.post('/v1/warehouse/cancel-inbound-order', businessMiddleware, loggingMiddleware, async (context, next) => {
21
+ try {
22
+ //try to validate bizplace
23
+ validateReqParams(context.request.body, reqParams.cancelInboundOrder)
24
+ validateFilter(context.request.body, expectedParams.cancelInboundOrder)
25
+ validateReqParams(context.request.body.data, reqParams.cancelInboundOrderData)
26
+ validateFilter(context.request.body.data, expectedParams.cancelInboundOrderData)
27
+
28
+ await getConnection().transaction(async (tx: EntityManager) => {
29
+ const validateArrivalNotice: ArrivalNotice = await tx.getRepository(ArrivalNotice).findOne({
30
+ where: { name: context.request.body.data.ganNo }
31
+ })
32
+ if (!validateArrivalNotice) throw new ApiError('E01', 'ganNo does not exist')
33
+
34
+ // take from arrival-notice-mutation (line 120)
35
+ const arrivalNotice: ArrivalNotice = await rejectArrivalNotice(
36
+ tx,
37
+ validateArrivalNotice.name,
38
+ context.request.body.data.remark,
39
+ context
40
+ )
41
+
42
+ if (arrivalNotice.crossDocking) {
43
+ const { releaseGood }: ReleaseGood = await tx.getRepository(arrivalNotice).findOne(arrivalNotice.id, {
44
+ relations: ['releaseGood']
45
+ })
46
+
47
+ if (releaseGood.status !== ORDER_STATUS.REJECTED) {
48
+ await rejectReleaseGood(tx, releaseGood.name, context.request.body.data.remark, context)
49
+ }
50
+ }
51
+
52
+ // what to show in response
53
+ const data = {
54
+ responseCode: '200',
55
+ message: 'success',
56
+ data: {
57
+ ganNo: arrivalNotice.name
58
+ //remark: arrivalNotice.remark // <-- is not needed to be seen
59
+ }
60
+ }
61
+
62
+ context.body = {
63
+ data
64
+ }
65
+ })
66
+ } catch (e) {
67
+ if (e instanceof ApiError) ApiErrorHandler(context, e)
68
+ else throwInternalServerError(context, e)
69
+ }
70
+ })
71
+
72
+ async function rejectArrivalNotice(
73
+ tx: EntityManager,
74
+ name: string,
75
+ remark: string,
76
+ context: any
77
+ ): Promise<ArrivalNotice> {
78
+ const { user, domain }: { user: User; domain: Domain } = context.state
79
+
80
+ const foundArrivalNotice: ArrivalNotice = await tx.getRepository(ArrivalNotice).findOne({
81
+ where: { name, status: ORDER_STATUS.PENDING_RECEIVE }, // try remove domain
82
+ relations: ['bizplace', 'orderProducts', 'orderVass', 'collectionOrders']
83
+ })
84
+
85
+ if (!foundArrivalNotice) throw new Error(`Arrival notice doesn't exists.`)
86
+ if (!remark) throw new Error('Remark is not exist.')
87
+
88
+ let foundOPs: OrderProduct[] = foundArrivalNotice.orderProducts
89
+ let foundOVs: OrderVas[] = foundArrivalNotice.orderVass
90
+ let foundCOs: CollectionOrder[] = foundArrivalNotice.collectionOrders
91
+
92
+ // 1. Update status of order products (PENDING_RECEIVE => REJECTED)
93
+ foundOPs = foundOPs.map((op: OrderProduct) => {
94
+ op.status = ORDER_PRODUCT_STATUS.REJECTED
95
+ op.updater = user
96
+ return op
97
+ })
98
+ await tx.getRepository(OrderProduct).save(foundOPs)
99
+
100
+ // 2. Update status of order vass if it exists (PENDING_RECEIVE => REJECTED)
101
+ if (foundOVs && foundOVs.length) {
102
+ foundOVs = foundOVs.map((ov: OrderVas) => {
103
+ ov.status = ORDER_VAS_STATUS.REJECTED
104
+ ov.updater = user
105
+ return ov
106
+ })
107
+ await tx.getRepository(OrderVas).save(foundOVs)
108
+ }
109
+
110
+ // 3. If there's collection order, update status of collection order (PENDING_RECEIVE => REJECTED)
111
+ if (foundCOs) {
112
+ foundCOs = foundCOs.map((co: CollectionOrder) => {
113
+ co.status = ORDER_STATUS.REJECTED
114
+ co.updater = user
115
+ return co
116
+ })
117
+ await tx.getRepository(CollectionOrder).save(foundCOs)
118
+ }
119
+
120
+ foundArrivalNotice.remark = remark
121
+ foundArrivalNotice.status = ORDER_STATUS.REJECTED
122
+ foundArrivalNotice.updater = user
123
+ await tx.getRepository(ArrivalNotice).save(foundArrivalNotice)
124
+
125
+ // notification logics
126
+ const users: any[] = await getDomainUsers(foundArrivalNotice?.bizplace, tx)
127
+
128
+ // send notification to Customer Users
129
+ if (users?.length && context.header?.referer) {
130
+ const receivers: any[] = users.map(user => user.id)
131
+ const msg = {
132
+ title: `Latest status for ${foundArrivalNotice.name}`,
133
+ body: `Your GAN has been rejected.`,
134
+ url: context.header.referer,
135
+ data: { url: context.header.referer }
136
+ }
137
+ }
138
+ return foundArrivalNotice
139
+ }
@@ -0,0 +1,144 @@
1
+ import _ from 'lodash'
2
+ import { Between, getRepository } from 'typeorm'
3
+
4
+ import { restfulApiRouter as router } from '@things-factory/api'
5
+ import { DeliveryOrder } from '@things-factory/sales-base'
6
+
7
+ import { ApiError, ApiErrorHandler, throwInternalServerError } from '../utils/error-util'
8
+ import { validateFromToDate, validateLimitOffset } from '../utils/validate-util'
9
+ import { businessMiddleware, validationMiddleware, loggingMiddleware } from '../middlewares'
10
+
11
+ router.get(
12
+ '/v1/warehouse/get-delivery-order-list',
13
+ businessMiddleware,
14
+ validationMiddleware,
15
+ loggingMiddleware,
16
+ async (context, next) => {
17
+ try {
18
+ const { limit, offset } = validateLimitOffset(context.query.limit, context.query.offset)
19
+ const { fromDate, toDate } = validateFromToDate(context.query.fromDate, context.query.toDate)
20
+
21
+ // get contact points for that bizplace
22
+ // optional query parameter filter
23
+ let filter = { ...context.query }
24
+ filter['bizplace'] = filter['bizplaceId']
25
+ delete filter['bizplaceId']
26
+ if (_.has(filter, 'doNo')) {
27
+ filter['name'] = filter['doNo']
28
+ delete filter['doNo']
29
+ }
30
+ filter['createdAt'] = Between(fromDate, toDate)
31
+
32
+ delete filter['fromDate']
33
+ delete filter['toDate']
34
+ delete filter['limit']
35
+ delete filter['offset']
36
+ const [deliveryOrders, totalCount]: DeliveryOrder[] = await getRepository(DeliveryOrder).findAndCount({
37
+ where: filter,
38
+ relations: ['releaseGood', 'releaseGood.orderInventories', 'bizplace', 'domain'],
39
+ skip: offset,
40
+ take: limit,
41
+ order: { createdAt: 'DESC' }
42
+ })
43
+
44
+ // create and format data response
45
+ let data = []
46
+ for (const deliveryOrder of deliveryOrders) {
47
+ let orderInventories = []
48
+ for (const orderInventory of deliveryOrder.releaseGood.orderInventories) {
49
+ orderInventories.push(orderInventory)
50
+ }
51
+ const datapoint = {
52
+ id: deliveryOrder.id,
53
+ doNo: deliveryOrder.name,
54
+ from: deliveryOrder.from,
55
+ to: deliveryOrder.to,
56
+ contactPointRefId: deliveryOrder.contactPointRefId,
57
+ truckNo: deliveryOrder.truckNo,
58
+ deliveryDate: deliveryOrder.deliveryDate,
59
+ status: deliveryOrder.status,
60
+ ownCollection: deliveryOrder.ownCollection,
61
+ looseItem: deliveryOrder.looseItem,
62
+ deliveryDateTime: deliveryOrder.deliveryDateTime,
63
+ loadWeight: deliveryOrder.loadWeight,
64
+ cargoType: deliveryOrder.cargoType,
65
+ urgency: deliveryOrder.urgency,
66
+ telNo: deliveryOrder.telNo,
67
+ refNo: deliveryOrder.refNo,
68
+ otherDriver: deliveryOrder.otherDriver,
69
+ palletQty: deliveryOrder.palletQty,
70
+ remark: deliveryOrder.remark,
71
+ description: deliveryOrder.description,
72
+ reusablePallet: deliveryOrder.reusablePallet,
73
+ bizplace: {
74
+ id: deliveryOrder.bizplace.id,
75
+ name: deliveryOrder.bizplace.name,
76
+ description: deliveryOrder.bizplace.description
77
+ },
78
+ domain: {
79
+ id: deliveryOrder.domain.id,
80
+ name: deliveryOrder.domain.name
81
+ },
82
+ releaseGood: {
83
+ id: deliveryOrder.releaseGood.id,
84
+ roNo: deliveryOrder.releaseGood.name,
85
+ description: deliveryOrder.releaseGood.description,
86
+ status: deliveryOrder.releaseGood.status,
87
+ refNo: deliveryOrder.releaseGood.refNo,
88
+ refNo2: deliveryOrder.releaseGood.refNo2,
89
+ refNo3: deliveryOrder.releaseGood.refNo3,
90
+ truckNo: deliveryOrder.releaseGood.truckNo,
91
+ exportOption: deliveryOrder.releaseGood.exportOption,
92
+ ownTransport: deliveryOrder.releaseGood.ownTransport,
93
+ crossDocking: deliveryOrder.releaseGood.crossDocking,
94
+ releaseDateTime: deliveryOrder.releaseGood.releaseDateTime,
95
+ releaseDate: deliveryOrder.releaseGood.releaseDate,
96
+ remark: deliveryOrder.releaseGood.remark,
97
+ courierOption: deliveryOrder.releaseGood.courierOption,
98
+ packingOption: deliveryOrder.releaseGood.packingOption,
99
+ type: deliveryOrder.releaseGood.type,
100
+ acceptedAt: deliveryOrder.releaseGood.acceptedAt,
101
+ marketplaceOrderStatus: deliveryOrder.releaseGood.marketplaceOrderStatus,
102
+ billingAddress: deliveryOrder.releaseGood.billingAddress,
103
+ deliveryAddress1: deliveryOrder.releaseGood.deliveryAddress1,
104
+ deliveryAddress2: deliveryOrder.releaseGood.deliveryAddress2,
105
+ deliveryAddress3: deliveryOrder.releaseGood.deliveryAddress3,
106
+ deliveryAddress4: deliveryOrder.releaseGood.deliveryAddress4,
107
+ deliveryAddress5: deliveryOrder.releaseGood.deliveryAddress5,
108
+ attentionTo: deliveryOrder.releaseGood.attentionTo,
109
+ attentionCompany: deliveryOrder.releaseGood.attentionCompany,
110
+ city: deliveryOrder.releaseGood.city,
111
+ state: deliveryOrder.releaseGood.state,
112
+ postalCode: deliveryOrder.releaseGood.postalCode,
113
+ country: deliveryOrder.releaseGood.country,
114
+ phone1: deliveryOrder.releaseGood.phone1,
115
+ phone2: deliveryOrder.releaseGood.phone2,
116
+ email: deliveryOrder.releaseGood.email,
117
+ transporter: deliveryOrder.releaseGood.transporter,
118
+ trackingNo: deliveryOrder.releaseGood.trackingNo,
119
+ airwayBill: deliveryOrder.releaseGood.airwayBill,
120
+ invoice: deliveryOrder.releaseGood.invoice,
121
+ pickupAddress: deliveryOrder.releaseGood.pickupAddress,
122
+ pickupTime: deliveryOrder.releaseGood.pickupTime,
123
+ handoverType: deliveryOrder.releaseGood.handoverType,
124
+ dropoffAddress: deliveryOrder.releaseGood.dropoffAddress,
125
+ noOfItems: deliveryOrder.releaseGood.noOfItems,
126
+ orderProducts: []
127
+ },
128
+ orderInventories
129
+ }
130
+ data.push(datapoint)
131
+ }
132
+
133
+ context.body = {
134
+ data,
135
+ totalCount,
136
+ limit,
137
+ offset
138
+ }
139
+ } catch (e) {
140
+ if (e instanceof ApiError) ApiErrorHandler(context, e)
141
+ else throwInternalServerError(context, e)
142
+ }
143
+ }
144
+ )
@@ -0,0 +1,109 @@
1
+ import { Between, getRepository } from 'typeorm'
2
+
3
+ import { restfulApiRouter as router } from '@things-factory/api'
4
+ import { GoodsReceivalNote } from '@things-factory/sales-base'
5
+
6
+ import { ApiError, ApiErrorHandler, throwInternalServerError } from '../utils/error-util'
7
+ import { validateFromToDate, validateLimitOffset } from '../utils/validate-util'
8
+ import { businessMiddleware, validationMiddleware, loggingMiddleware } from '../middlewares'
9
+
10
+ router.get(
11
+ '/v1/warehouse/get-goods-received-note-list',
12
+ businessMiddleware,
13
+ validationMiddleware,
14
+ loggingMiddleware,
15
+ async (context, next) => {
16
+ try {
17
+ const { limit, offset } = validateLimitOffset(context.query.limit, context.query.offset)
18
+ const { fromDate, toDate } = validateFromToDate(context.query.fromDate, context.query.toDate)
19
+
20
+ // get contact points for that bizplace
21
+ // optional query parameter filter
22
+ let filter = { ...context.query }
23
+ filter['bizplace'] = filter['bizplaceId']
24
+ delete filter['bizplaceId']
25
+ filter['createdAt'] = Between(fromDate, toDate)
26
+
27
+ delete filter['fromDate']
28
+ delete filter['toDate']
29
+ delete filter['limit']
30
+ delete filter['offset']
31
+ const [goodsReceivedNotes, totalCount]: GoodsReceivalNote[] = await getRepository(GoodsReceivalNote).findAndCount(
32
+ {
33
+ where: filter,
34
+ relations: [
35
+ 'bizplace',
36
+ 'domain',
37
+ 'arrivalNotice',
38
+ 'arrivalNotice.orderProducts',
39
+ 'arrivalNotice.orderProducts.product'
40
+ ],
41
+ skip: offset,
42
+ take: limit,
43
+ order: { createdAt: 'DESC' }
44
+ }
45
+ )
46
+ const limitedGoodsReceivedNotes: GoodsReceivalNote[] = goodsReceivedNotes.slice(offset, offset + limit)
47
+
48
+ // create and format data response
49
+ let data = []
50
+ for (const goodsReceivedNote of limitedGoodsReceivedNotes) {
51
+ let orderProducts = []
52
+ for (const orderProduct of goodsReceivedNote.arrivalNotice.orderProducts) {
53
+ const orderProductsDataPoint = {
54
+ product: {
55
+ sku: orderProduct.product.sku,
56
+ brandSku: orderProduct.product.brandSku,
57
+ name: orderProduct.product.name,
58
+ description: orderProduct.product.description
59
+ },
60
+ type: orderProduct.type,
61
+ batchId: orderProduct.batchId,
62
+ packingType: orderProduct.packingType,
63
+ packingSize: orderProduct.packingSize,
64
+ releaseQty: orderProduct.releaseQty,
65
+ releaseUomValue: orderProduct.releaseUomValue,
66
+ status: orderProduct.status
67
+ }
68
+ orderProducts.push(orderProductsDataPoint)
69
+ }
70
+ const datapoint = {
71
+ id: goodsReceivedNote.id,
72
+ grnNo: goodsReceivedNote.grnNo,
73
+ refNo: goodsReceivedNote.refNo,
74
+ customerStatus: goodsReceivedNote.customerStatus,
75
+ status: goodsReceivedNote.status,
76
+ bizplace: {
77
+ id: goodsReceivedNote.bizplace.id,
78
+ name: goodsReceivedNote.bizplace.name,
79
+ description: goodsReceivedNote.bizplace.description
80
+ },
81
+ domain: {
82
+ id: goodsReceivedNote.domain.id,
83
+ name: goodsReceivedNote.domain.name
84
+ },
85
+ arrivalNotice: {
86
+ id: goodsReceivedNote.arrivalNotice.id,
87
+ ganNo: goodsReceivedNote.arrivalNotice.ganNo,
88
+ status: goodsReceivedNote.arrivalNotice.status,
89
+ refNo: goodsReceivedNote.arrivalNotice.refNo,
90
+ refNo2: goodsReceivedNote.arrivalNotice.refNo2,
91
+ refNo3: goodsReceivedNote.arrivalNotice.refNo3,
92
+ orderProducts
93
+ }
94
+ }
95
+ data.push(datapoint)
96
+ }
97
+
98
+ context.body = {
99
+ data,
100
+ totalCount,
101
+ limit,
102
+ offset
103
+ }
104
+ } catch (e) {
105
+ if (e instanceof ApiError) ApiErrorHandler(context, e)
106
+ else throwInternalServerError(context, e)
107
+ }
108
+ }
109
+ )
@@ -0,0 +1,74 @@
1
+ import { getRepository } from 'typeorm'
2
+
3
+ import { restfulApiRouter as router } from '@things-factory/api'
4
+ import { ArrivalNotice } from '@things-factory/sales-base'
5
+
6
+ import { ApiError, ApiErrorHandler, throwInternalServerError } from '../utils/error-util'
7
+ import _ from 'lodash'
8
+ import { businessMiddleware, validationMiddleware, loggingMiddleware } from '../middlewares'
9
+
10
+ router.get('/v1/warehouse/get-inbound-order-details', businessMiddleware, validationMiddleware, loggingMiddleware, async (context, next) => {
11
+ try {
12
+ // get contact points for that bizplace
13
+ // optional query parameter filter
14
+ let filter = { ...context.query }
15
+ filter['bizplace'] = filter['bizplaceId']
16
+ delete filter['bizplaceId']
17
+ if (_.has(filter, 'ganNo')) {
18
+ filter['name'] = filter['ganNo']
19
+ delete filter['ganNo']
20
+ }
21
+
22
+ const arrivalNotice: ArrivalNotice = await getRepository(ArrivalNotice).findOne({
23
+ where: filter,
24
+ relations: ['orderProducts', 'orderProducts.product']
25
+ })
26
+
27
+ // create and format data response
28
+ let orderProducts = []
29
+ for (const orderProduct of arrivalNotice.orderProducts) {
30
+ const orderProductsDataPoint = {
31
+ product: {
32
+ sku: orderProduct.product.sku,
33
+ uom: orderProduct.product.uom,
34
+ uomValue: orderProduct.product.uomValue
35
+ },
36
+ batchId: orderProduct.batchId,
37
+ packingType: orderProduct.packingType,
38
+ packingSize: orderProduct.packingSize,
39
+ packQty: orderProduct.packQty,
40
+ palletQty: orderProduct.palletQty
41
+ }
42
+ orderProducts.push(orderProductsDataPoint)
43
+ }
44
+ const data = {
45
+ id: arrivalNotice.id,
46
+ ganNo: arrivalNotice.name,
47
+ refNo: arrivalNotice.refNo,
48
+ refNo2: arrivalNotice.refNo2,
49
+ refNo3: arrivalNotice.refNo3,
50
+ etaDate: arrivalNotice.etaDate,
51
+ ownTransport: arrivalNotice.ownTransport,
52
+ importCargo: arrivalNotice.importCargo,
53
+ container: arrivalNotice.container,
54
+ truckNo: arrivalNotice.truckNo,
55
+ deliveryOrderNo: arrivalNotice.deliveryOrderNo,
56
+ containerNo: arrivalNotice.containerNo,
57
+ containerSize: arrivalNotice.containerSize,
58
+ orderProducts,
59
+ supplier: {
60
+ name: arrivalNotice?.supplier?.name || null,
61
+ companyName: arrivalNotice?.supplier?.companyName || null,
62
+ email: arrivalNotice?.supplier?.email || null,
63
+ accountNo: arrivalNotice?.supplier?.accountNo || null
64
+ }
65
+ }
66
+
67
+ context.body = {
68
+ data
69
+ }
70
+ } catch (e) {
71
+ if (e instanceof ApiError) ApiErrorHandler(context, e)
72
+ else throwInternalServerError(context, e)
73
+ }
74
+ })
@@ -0,0 +1,99 @@
1
+ import { Between, getRepository } from 'typeorm'
2
+
3
+ import { restfulApiRouter as router } from '@things-factory/api'
4
+ import { ArrivalNotice } from '@things-factory/sales-base'
5
+
6
+ import { ApiError, ApiErrorHandler, throwInternalServerError } from '../utils/error-util'
7
+ import { validateFromToDate, validateLimitOffset } from '../utils/validate-util'
8
+ import _ from 'lodash'
9
+ import { businessMiddleware, validationMiddleware, loggingMiddleware } from '../middlewares'
10
+
11
+ router.get(
12
+ '/v1/warehouse/get-inbound-order-list',
13
+ businessMiddleware,
14
+ validationMiddleware,
15
+ loggingMiddleware,
16
+ async (context, next) => {
17
+ try {
18
+ const { limit, offset } = validateLimitOffset(context.query.limit, context.query.offset)
19
+ const { fromDate, toDate } = validateFromToDate(context.query.fromDate, context.query.toDate)
20
+
21
+ // get contact points for that bizplace
22
+ // optional query parameter filter
23
+ let filter = { ...context.query }
24
+ filter['bizplace'] = filter['bizplaceId']
25
+ delete filter['bizplaceId']
26
+ if (_.has(filter, 'ganNo')) {
27
+ filter['name'] = filter['ganNo']
28
+ delete filter['ganNo']
29
+ }
30
+ filter['createdAt'] = Between(fromDate, toDate)
31
+
32
+ delete filter['fromDate']
33
+ delete filter['toDate']
34
+ delete filter['limit']
35
+ delete filter['offset']
36
+ const [arrivalNotices, totalCount]: ArrivalNotice[] = await getRepository(ArrivalNotice).findAndCount({
37
+ where: filter,
38
+ relations: ['orderProducts', 'orderProducts.product'],
39
+ skip: offset,
40
+ take: limit,
41
+ order: { createdAt: 'DESC' }
42
+ })
43
+
44
+ // create and format data response
45
+ let data = []
46
+ for (const arrivalNotice of arrivalNotices) {
47
+ let orderProducts = []
48
+ for (const orderProduct of arrivalNotice.orderProducts) {
49
+ const orderProductsDataPoint = {
50
+ product: {
51
+ sku: orderProduct.product.sku,
52
+ uom: orderProduct.product.uom,
53
+ uomValue: orderProduct.product.uomValue
54
+ },
55
+ batchId: orderProduct.batchId,
56
+ packingType: orderProduct.packingType,
57
+ packingSize: orderProduct.packingSize,
58
+ packQty: orderProduct.packQty,
59
+ palletQty: orderProduct.palletQty
60
+ }
61
+ orderProducts.push(orderProductsDataPoint)
62
+ }
63
+ const datapoint = {
64
+ id: arrivalNotice.id,
65
+ ganNo: arrivalNotice.ganNo,
66
+ refNo: arrivalNotice.refNo,
67
+ refNo2: arrivalNotice.refNo2,
68
+ refNo3: arrivalNotice.refNo3,
69
+ etaDate: arrivalNotice.etaDate,
70
+ ownTransport: arrivalNotice.ownTransport,
71
+ importCargo: arrivalNotice.importCargo,
72
+ container: arrivalNotice.container,
73
+ truckNo: arrivalNotice.truckNo,
74
+ deliveryOrderNo: arrivalNotice.deliveryOrderNo,
75
+ containerNo: arrivalNotice.containerNo,
76
+ containerSize: arrivalNotice.containerSize,
77
+ orderProducts,
78
+ supplier: {
79
+ name: arrivalNotice?.supplier?.name || null,
80
+ companyName: arrivalNotice?.supplier?.companyName || null,
81
+ email: arrivalNotice?.supplier?.email || null,
82
+ accountNo: arrivalNotice?.supplier?.accountNo || null
83
+ }
84
+ }
85
+ data.push(datapoint)
86
+ }
87
+
88
+ context.body = {
89
+ data,
90
+ totalCount,
91
+ limit,
92
+ offset
93
+ }
94
+ } catch (e) {
95
+ if (e instanceof ApiError) ApiErrorHandler(context, e)
96
+ else throwInternalServerError(context, e)
97
+ }
98
+ }
99
+ )