@things-factory/sales-base 3.7.2 → 3.7.7

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 (193) hide show
  1. package/dist-server/constants/order.js +9 -1
  2. package/dist-server/constants/order.js.map +1 -1
  3. package/dist-server/entities/index.js +4 -1
  4. package/dist-server/entities/index.js.map +1 -1
  5. package/dist-server/entities/manifest.js +100 -0
  6. package/dist-server/entities/manifest.js.map +1 -0
  7. package/dist-server/entities/order-inventory.js +4 -0
  8. package/dist-server/entities/order-inventory.js.map +1 -1
  9. package/dist-server/entities/order-reverse-kitting.js +7 -9
  10. package/dist-server/entities/order-reverse-kitting.js.map +1 -1
  11. package/dist-server/entities/release-good.js +22 -1
  12. package/dist-server/entities/release-good.js.map +1 -1
  13. package/dist-server/graphql/resolvers/arrival-notice/add-edit-arrival-notice-products.js +1 -1
  14. package/dist-server/graphql/resolvers/arrival-notice/add-edit-arrival-notice-products.js.map +1 -1
  15. package/dist-server/graphql/resolvers/arrival-notice/arrival-notice.js +74 -73
  16. package/dist-server/graphql/resolvers/arrival-notice/arrival-notice.js.map +1 -1
  17. package/dist-server/graphql/resolvers/delivery-order/delivery-orders.js +20 -4
  18. package/dist-server/graphql/resolvers/delivery-order/delivery-orders.js.map +1 -1
  19. package/dist-server/graphql/resolvers/goods-receival-note/goods-receival-notes.js +86 -43
  20. package/dist-server/graphql/resolvers/goods-receival-note/goods-receival-notes.js.map +1 -1
  21. package/dist-server/graphql/resolvers/index.js +7 -2
  22. package/dist-server/graphql/resolvers/index.js.map +1 -1
  23. package/dist-server/graphql/resolvers/manifest/delete-manifest.js +13 -0
  24. package/dist-server/graphql/resolvers/manifest/delete-manifest.js.map +1 -0
  25. package/dist-server/graphql/resolvers/manifest/dispatch-manifest.js +22 -0
  26. package/dist-server/graphql/resolvers/manifest/dispatch-manifest.js.map +1 -0
  27. package/dist-server/graphql/resolvers/manifest/generate-manifest.js +45 -0
  28. package/dist-server/graphql/resolvers/manifest/generate-manifest.js.map +1 -0
  29. package/dist-server/graphql/resolvers/manifest/index.js +11 -0
  30. package/dist-server/graphql/resolvers/manifest/index.js.map +1 -0
  31. package/dist-server/graphql/resolvers/manifest/manifest.js +25 -0
  32. package/dist-server/graphql/resolvers/manifest/manifest.js.map +1 -0
  33. package/dist-server/graphql/resolvers/manifest/manifests.js +36 -0
  34. package/dist-server/graphql/resolvers/manifest/manifests.js.map +1 -0
  35. package/dist-server/graphql/resolvers/order-inventory/index.js +2 -1
  36. package/dist-server/graphql/resolvers/order-inventory/index.js.map +1 -1
  37. package/dist-server/graphql/resolvers/order-inventory/order-inventories.js +1 -0
  38. package/dist-server/graphql/resolvers/order-inventory/order-inventories.js.map +1 -1
  39. package/dist-server/graphql/resolvers/order-inventory/order-inventory.js +3 -3
  40. package/dist-server/graphql/resolvers/order-inventory/order-inventory.js.map +1 -1
  41. package/dist-server/graphql/resolvers/order-inventory/update-order-inventories-serial-number.js +23 -0
  42. package/dist-server/graphql/resolvers/order-inventory/update-order-inventories-serial-number.js.map +1 -0
  43. package/dist-server/graphql/resolvers/order-reverse-kitting/index.js +2 -1
  44. package/dist-server/graphql/resolvers/order-reverse-kitting/index.js.map +1 -1
  45. package/dist-server/graphql/resolvers/order-reverse-kitting/update-order-reverse-kitting.js +20 -0
  46. package/dist-server/graphql/resolvers/order-reverse-kitting/update-order-reverse-kitting.js.map +1 -0
  47. package/dist-server/graphql/resolvers/others/bulk-upload-validate-warehouse-partners-products-quantity.js +2 -1
  48. package/dist-server/graphql/resolvers/others/bulk-upload-validate-warehouse-partners-products-quantity.js.map +1 -1
  49. package/dist-server/graphql/resolvers/release-good/index.js +2 -1
  50. package/dist-server/graphql/resolvers/release-good/index.js.map +1 -1
  51. package/dist-server/graphql/resolvers/release-good/release-good-detail.js +12 -6
  52. package/dist-server/graphql/resolvers/release-good/release-good-detail.js.map +1 -1
  53. package/dist-server/graphql/resolvers/release-good/release-good-requests.js +2 -2
  54. package/dist-server/graphql/resolvers/release-good/release-good-requests.js.map +1 -1
  55. package/dist-server/graphql/resolvers/release-good/release-good.js +18 -2
  56. package/dist-server/graphql/resolvers/release-good/release-good.js.map +1 -1
  57. package/dist-server/graphql/resolvers/release-good/update-release-good-details.js +42 -0
  58. package/dist-server/graphql/resolvers/release-good/update-release-good-details.js.map +1 -0
  59. package/dist-server/graphql/resolvers/reverse-kitting-order/cancel-reverse-kitting-order.js +9 -3
  60. package/dist-server/graphql/resolvers/reverse-kitting-order/cancel-reverse-kitting-order.js.map +1 -1
  61. package/dist-server/graphql/resolvers/reverse-kitting-order/complete-reverse-kitting-order.js +2 -0
  62. package/dist-server/graphql/resolvers/reverse-kitting-order/complete-reverse-kitting-order.js.map +1 -1
  63. package/dist-server/graphql/resolvers/reverse-kitting-order/delete-reverse-kitting-order.js +11 -1
  64. package/dist-server/graphql/resolvers/reverse-kitting-order/delete-reverse-kitting-order.js.map +1 -1
  65. package/dist-server/graphql/resolvers/reverse-kitting-order/execute-reverse-kitting.js +1 -2
  66. package/dist-server/graphql/resolvers/reverse-kitting-order/execute-reverse-kitting.js.map +1 -1
  67. package/dist-server/graphql/resolvers/reverse-kitting-order/generate-reverse-kitting-order.js +6 -1
  68. package/dist-server/graphql/resolvers/reverse-kitting-order/generate-reverse-kitting-order.js.map +1 -1
  69. package/dist-server/graphql/resolvers/reverse-kitting-order/generate-reverse-kitting-pallet-id.js +60 -0
  70. package/dist-server/graphql/resolvers/reverse-kitting-order/generate-reverse-kitting-pallet-id.js.map +1 -0
  71. package/dist-server/graphql/resolvers/reverse-kitting-order/index.js +3 -1
  72. package/dist-server/graphql/resolvers/reverse-kitting-order/index.js.map +1 -1
  73. package/dist-server/graphql/resolvers/reverse-kitting-order/reverse-kitting-inventories.js +9 -2
  74. package/dist-server/graphql/resolvers/reverse-kitting-order/reverse-kitting-inventories.js.map +1 -1
  75. package/dist-server/graphql/resolvers/reverse-kitting-order/undo-reverse-kitting-inventory.js +46 -0
  76. package/dist-server/graphql/resolvers/reverse-kitting-order/undo-reverse-kitting-inventory.js.map +1 -0
  77. package/dist-server/graphql/types/index.js +7 -3
  78. package/dist-server/graphql/types/index.js.map +1 -1
  79. package/dist-server/graphql/types/manifest/index.js +35 -0
  80. package/dist-server/graphql/types/manifest/index.js.map +1 -0
  81. package/dist-server/graphql/types/manifest/manifest-item.js +15 -0
  82. package/dist-server/graphql/types/manifest/manifest-item.js.map +1 -0
  83. package/dist-server/graphql/types/manifest/manifest-list.js +14 -0
  84. package/dist-server/graphql/types/manifest/manifest-list.js.map +1 -0
  85. package/dist-server/graphql/types/manifest/manifest-patch.js +19 -0
  86. package/dist-server/graphql/types/manifest/manifest-patch.js.map +1 -0
  87. package/dist-server/graphql/types/manifest/manifest.js +25 -0
  88. package/dist-server/graphql/types/manifest/manifest.js.map +1 -0
  89. package/dist-server/graphql/types/manifest/new-manifest.js +13 -0
  90. package/dist-server/graphql/types/manifest/new-manifest.js.map +1 -0
  91. package/dist-server/graphql/types/manifest/tracking-no.js +20 -0
  92. package/dist-server/graphql/types/manifest/tracking-no.js.map +1 -0
  93. package/dist-server/graphql/types/order-inventory/index.js +5 -1
  94. package/dist-server/graphql/types/order-inventory/index.js.map +1 -1
  95. package/dist-server/graphql/types/order-inventory/new-order-inventory.js +1 -0
  96. package/dist-server/graphql/types/order-inventory/new-order-inventory.js.map +1 -1
  97. package/dist-server/graphql/types/order-inventory/order-inventory-patch.js +1 -0
  98. package/dist-server/graphql/types/order-inventory/order-inventory-patch.js.map +1 -1
  99. package/dist-server/graphql/types/order-inventory/order-inventory.js +1 -0
  100. package/dist-server/graphql/types/order-inventory/order-inventory.js.map +1 -1
  101. package/dist-server/graphql/types/order-reverse-kitting/index.js +6 -1
  102. package/dist-server/graphql/types/order-reverse-kitting/index.js.map +1 -1
  103. package/dist-server/graphql/types/order-reverse-kitting/new-order-reverse-kitting.js +1 -0
  104. package/dist-server/graphql/types/order-reverse-kitting/new-order-reverse-kitting.js.map +1 -1
  105. package/dist-server/graphql/types/order-reverse-kitting/order-reverse-kitting-patch.js +1 -0
  106. package/dist-server/graphql/types/order-reverse-kitting/order-reverse-kitting-patch.js.map +1 -1
  107. package/dist-server/graphql/types/order-reverse-kitting/order-reverse-kitting.js +1 -0
  108. package/dist-server/graphql/types/order-reverse-kitting/order-reverse-kitting.js.map +1 -1
  109. package/dist-server/graphql/types/release-good/index.js +5 -0
  110. package/dist-server/graphql/types/release-good/index.js.map +1 -1
  111. package/dist-server/graphql/types/release-good/inventory-infos.js +2 -0
  112. package/dist-server/graphql/types/release-good/inventory-infos.js.map +1 -1
  113. package/dist-server/graphql/types/release-good/release-good-detail.js +1 -0
  114. package/dist-server/graphql/types/release-good/release-good-detail.js.map +1 -1
  115. package/dist-server/graphql/types/release-good/release-good-patch.js +1 -0
  116. package/dist-server/graphql/types/release-good/release-good-patch.js.map +1 -1
  117. package/dist-server/graphql/types/release-good/release-good.js +2 -0
  118. package/dist-server/graphql/types/release-good/release-good.js.map +1 -1
  119. package/dist-server/graphql/types/release-good/shipping-order-info.js +1 -0
  120. package/dist-server/graphql/types/release-good/shipping-order-info.js.map +1 -1
  121. package/dist-server/graphql/types/reverse-kitting-order/index.js +8 -1
  122. package/dist-server/graphql/types/reverse-kitting-order/index.js.map +1 -1
  123. package/dist-server/graphql/types/shipping-order/shipping-order-patch.js +1 -0
  124. package/dist-server/graphql/types/shipping-order/shipping-order-patch.js.map +1 -1
  125. package/dist-server/utils/inventory-util.js +9 -5
  126. package/dist-server/utils/inventory-util.js.map +1 -1
  127. package/dist-server/utils/order-no-generator.js +35 -31
  128. package/dist-server/utils/order-no-generator.js.map +1 -1
  129. package/package.json +12 -12
  130. package/server/constants/order.ts +10 -0
  131. package/server/entities/index.ts +3 -0
  132. package/server/entities/manifest.ts +79 -0
  133. package/server/entities/order-inventory.ts +3 -0
  134. package/server/entities/order-reverse-kitting.ts +6 -9
  135. package/server/entities/release-good.ts +29 -1
  136. package/server/graphql/resolvers/arrival-notice/add-edit-arrival-notice-products.ts +3 -1
  137. package/server/graphql/resolvers/arrival-notice/arrival-notice.ts +79 -74
  138. package/server/graphql/resolvers/delivery-order/delivery-orders.ts +27 -5
  139. package/server/graphql/resolvers/goods-receival-note/goods-receival-notes.ts +105 -47
  140. package/server/graphql/resolvers/index.ts +7 -2
  141. package/server/graphql/resolvers/manifest/delete-manifest.ts +13 -0
  142. package/server/graphql/resolvers/manifest/dispatch-manifest.ts +34 -0
  143. package/server/graphql/resolvers/manifest/generate-manifest.ts +50 -0
  144. package/server/graphql/resolvers/manifest/index.ts +16 -0
  145. package/server/graphql/resolvers/manifest/manifest.ts +28 -0
  146. package/server/graphql/resolvers/manifest/manifests.ts +43 -0
  147. package/server/graphql/resolvers/order-inventory/index.ts +3 -1
  148. package/server/graphql/resolvers/order-inventory/order-inventories.ts +1 -0
  149. package/server/graphql/resolvers/order-inventory/order-inventory.ts +3 -3
  150. package/server/graphql/resolvers/order-inventory/update-order-inventories-serial-number.ts +28 -0
  151. package/server/graphql/resolvers/order-reverse-kitting/index.ts +4 -1
  152. package/server/graphql/resolvers/order-reverse-kitting/update-order-reverse-kitting.ts +26 -0
  153. package/server/graphql/resolvers/others/bulk-upload-validate-warehouse-partners-products-quantity.ts +10 -7
  154. package/server/graphql/resolvers/release-good/index.ts +3 -1
  155. package/server/graphql/resolvers/release-good/release-good-detail.ts +16 -7
  156. package/server/graphql/resolvers/release-good/release-good-requests.ts +2 -2
  157. package/server/graphql/resolvers/release-good/release-good.ts +27 -3
  158. package/server/graphql/resolvers/release-good/update-release-good-details.ts +61 -0
  159. package/server/graphql/resolvers/reverse-kitting-order/cancel-reverse-kitting-order.ts +18 -4
  160. package/server/graphql/resolvers/reverse-kitting-order/complete-reverse-kitting-order.ts +2 -0
  161. package/server/graphql/resolvers/reverse-kitting-order/delete-reverse-kitting-order.ts +19 -1
  162. package/server/graphql/resolvers/reverse-kitting-order/execute-reverse-kitting.ts +1 -2
  163. package/server/graphql/resolvers/reverse-kitting-order/generate-reverse-kitting-order.ts +8 -1
  164. package/server/graphql/resolvers/reverse-kitting-order/generate-reverse-kitting-pallet-id.ts +71 -0
  165. package/server/graphql/resolvers/reverse-kitting-order/index.ts +5 -1
  166. package/server/graphql/resolvers/reverse-kitting-order/reverse-kitting-inventories.ts +12 -2
  167. package/server/graphql/resolvers/reverse-kitting-order/undo-reverse-kitting-inventory.ts +70 -0
  168. package/server/graphql/types/index.ts +7 -3
  169. package/server/graphql/types/manifest/index.ts +34 -0
  170. package/server/graphql/types/manifest/manifest-item.ts +9 -0
  171. package/server/graphql/types/manifest/manifest-list.ts +8 -0
  172. package/server/graphql/types/manifest/manifest-patch.ts +13 -0
  173. package/server/graphql/types/manifest/manifest.ts +19 -0
  174. package/server/graphql/types/manifest/new-manifest.ts +7 -0
  175. package/server/graphql/types/manifest/tracking-no.ts +14 -0
  176. package/server/graphql/types/order-inventory/index.ts +5 -1
  177. package/server/graphql/types/order-inventory/new-order-inventory.ts +1 -0
  178. package/server/graphql/types/order-inventory/order-inventory-patch.ts +1 -0
  179. package/server/graphql/types/order-inventory/order-inventory.ts +1 -0
  180. package/server/graphql/types/order-reverse-kitting/index.ts +6 -1
  181. package/server/graphql/types/order-reverse-kitting/new-order-reverse-kitting.ts +1 -0
  182. package/server/graphql/types/order-reverse-kitting/order-reverse-kitting-patch.ts +1 -0
  183. package/server/graphql/types/order-reverse-kitting/order-reverse-kitting.ts +1 -0
  184. package/server/graphql/types/release-good/index.ts +5 -0
  185. package/server/graphql/types/release-good/inventory-infos.ts +2 -0
  186. package/server/graphql/types/release-good/release-good-detail.ts +1 -0
  187. package/server/graphql/types/release-good/release-good-patch.ts +1 -0
  188. package/server/graphql/types/release-good/release-good.ts +2 -0
  189. package/server/graphql/types/release-good/shipping-order-info.ts +1 -0
  190. package/server/graphql/types/reverse-kitting-order/index.ts +8 -1
  191. package/server/graphql/types/shipping-order/shipping-order-patch.ts +1 -0
  192. package/server/utils/inventory-util.ts +17 -12
  193. package/server/utils/order-no-generator.ts +43 -36
@@ -78,12 +78,23 @@ export const deliveryOrdersResolver = {
78
78
  })
79
79
  }
80
80
 
81
+ let refNoFilter = params.filters.find(x => x.name == 'refNo')
82
+ let refNo2Filter = params.filters.find(x => x.name == 'refNo2')
83
+ let refNo3Filter = params.filters.find(x => x.name == 'refNo3')
84
+
85
+ params.filters = params.filters.filter(
86
+ x =>
87
+ x.name != 'refNo' &&
88
+ x.name != 'refNo2' &&
89
+ x.name != 'refNo3'
90
+ )
91
+
81
92
  const qb: any = getRepository(DeliveryOrder).createQueryBuilder('do')
82
93
  buildQuery(qb, params, context)
83
94
  qb.addSelect('COALESCE("cc".rank, 99999)', 'rank')
84
95
  qb.leftJoinAndSelect('do.domain', 'domain')
85
96
  qb.leftJoinAndSelect('do.bizplace', 'bizplace')
86
- qb.leftJoinAndSelect('do.releaseGood', 'rg')
97
+ qb.leftJoinAndSelect('do.releaseGood', 'releaseGood')
87
98
  qb.leftJoinAndSelect('do.transportDriver', 'td')
88
99
  qb.leftJoinAndSelect('do.transportVehicle', 'th')
89
100
  qb.leftJoinAndSelect('do.orderInventories', 'oi')
@@ -105,20 +116,31 @@ export const deliveryOrdersResolver = {
105
116
  'cc.status = do.status'
106
117
  )
107
118
 
108
- const arrChildSortData = ['bizplace', 'releaseGood']
119
+ if (refNoFilter?.value) {
120
+ qb.andWhere('releaseGood.ref_no ilike :refNo', { refNo: refNoFilter.value })
121
+ }
122
+ if (refNo2Filter?.value) {
123
+ qb.andWhere('releaseGood.ref_no_2 ilike :refNo2', { refNo2: refNo2Filter.value })
124
+ }
125
+ if (refNo3Filter?.value) {
126
+ qb.andWhere('releaseGood.ref_no_3 ilike :refNo3', { refNo3: refNo3Filter.value })
127
+ }
128
+
129
+ const arrChildSortData = ['refNo', 'refNo2', 'refNo3']
130
+ const arrNameSortData = ['bizplace', 'releaseGood', 'updater']
109
131
  const sort = (params.sortings || []).reduce(
110
132
  (acc, sort) => ({
111
133
  ...acc,
112
- [arrChildSortData.indexOf(sort.name) >= 0 ? sort.name + '.name' : 'do.' + sort.name]: sort.desc
134
+ [arrChildSortData.indexOf(sort.name) >= 0 ? 'releaseGood.' + sort.name : arrNameSortData.indexOf(sort.name) >= 0 ? sort.name + '.name' : 'do.' + sort.name]: sort.desc
113
135
  ? 'DESC'
114
136
  : 'ASC'
115
137
  }),
116
- !params.sortings.some(e => e.name === 'status') ? { rank: 'ASC' } : {}
138
+ params.sortings.length < 1 ? { rank: 'ASC', 'do.createdAt': 'DESC' } : {}
117
139
  )
118
140
 
119
141
  qb.orderBy(sort)
120
- const [items, total] = await qb.getManyAndCount()
121
142
 
143
+ const [items, total] = await qb.getManyAndCount()
122
144
  return { items, total }
123
145
  } catch (error) {
124
146
  debug('deliveryOrders', error.toString())
@@ -1,65 +1,123 @@
1
+ import { getRepository, SelectQueryBuilder } from 'typeorm'
2
+
1
3
  import { User } from '@things-factory/auth-base'
2
- import { Bizplace, getPermittedBizplaceIds } from '@things-factory/biz-base'
3
- import { convertListParams, Domain, ListParam } from '@things-factory/shell'
4
- import { getRepository, In, IsNull } from 'typeorm'
5
- import { ArrivalNotice } from '../../../entities/arrival-notice'
6
- import { GoodsReceivalNote } from '../../../entities/goods-receival-note'
4
+ import { buildQuery, Domain, ListParam } from '@things-factory/shell'
5
+
6
+ import { GoodsReceivalNote } from '../../../entities'
7
7
 
8
8
  export const goodsReceivalNotesResolver = {
9
9
  async goodsReceivalNotes(_: any, params: ListParam, context: any) {
10
10
  const { domain, user }: { domain: Domain; user: User } = context.state
11
11
 
12
- const convertedParams = convertListParams(params)
13
-
14
- const arrivalNoticeParam: any = params.filters.find((param: any) => param.name === 'arrivalNoticeNo')
15
- const arrivalNoticeRefNoParam = params.filters.find(param => param.name === 'arrivalNoticeRefNo')
12
+ const fromDateParamIdx = params.filters.findIndex(param => param.name === 'fromDate')
13
+ if (fromDateParamIdx >= 0) {
14
+ let fromDateVal = new Date(params.filters[fromDateParamIdx].value)
15
+ params.filters.splice(fromDateParamIdx, 1)
16
16
 
17
- const bizplaceParam = params.filters.find(param => param.name === 'bizplaceName')
18
- if (bizplaceParam) {
19
- const foundBizplaces: Bizplace[] = await getRepository(Bizplace).find({
20
- where: {
21
- ...convertListParams({ filters: [{ ...bizplaceParam, name: 'name' }] }).where
22
- }
17
+ params.filters.push({
18
+ name: 'createdAt',
19
+ operator: 'gte',
20
+ value: fromDateVal.toISOString(),
21
+ relation: false
23
22
  })
24
-
25
- // remove non-column params
26
- delete convertedParams.where.bizplaceName
27
-
28
- if (foundBizplaces && foundBizplaces.length) {
29
- convertedParams.where.bizplace = In(foundBizplaces.map((foundBizplace: Bizplace) => foundBizplace.id))
30
- } else {
31
- convertedParams.where.bizplace = IsNull()
32
- }
33
- } else {
34
- convertedParams.where.bizplace = In(await getPermittedBizplaceIds(domain, user))
35
- convertedParams.where.domain = domain
36
23
  }
37
24
 
38
- if (arrivalNoticeParam || arrivalNoticeRefNoParam) {
39
- let arrFilters = []
40
- if (arrivalNoticeParam) {
41
- arrFilters.push({ ...arrivalNoticeParam, name: 'name' })
42
- }
43
- if (arrivalNoticeRefNoParam) arrFilters.push({ ...arrivalNoticeRefNoParam, name: 'refNo' })
44
- const foundArrivalNotices: ArrivalNotice[] = await getRepository(ArrivalNotice).find({
45
- ...convertListParams({ filters: arrFilters })
25
+ const toDateParamIdx = params.filters.findIndex(param => param.name === 'toDate')
26
+ if (toDateParamIdx >= 0) {
27
+ let toDateVal = new Date(params.filters[toDateParamIdx].value)
28
+ params.filters.splice(toDateParamIdx, 1)
29
+
30
+ params.filters.push({
31
+ name: 'createdAt',
32
+ operator: 'lt',
33
+ value: new Date(toDateVal.setDate(toDateVal.getDate() + 1)).toISOString(),
34
+ relation: false
46
35
  })
36
+ }
37
+
38
+ let refNoFilter = params.filters.find(x=> x.name =='refNo')
39
+ let refNo2Filter = params.filters.find(x=> x.name =='refNo2')
40
+ let refNo3Filter = params.filters.find(x=> x.name =='refNo3')
41
+ let ganNameFilter = params.filters.find(x=> x.name =='arrivalNoticeNo')
42
+ let bizplaceFilter = params.filters.find(x=> x.name =='bizplaceName')
43
+ let ganStatusFilter = params.filters.find(x=> x.name =='ganStatus')
44
+ let grnStatusFilter = params.filters.find(x=> x.name =='grnStatus')
45
+
46
+
47
+ params.filters = params.filters.filter(
48
+ x =>
49
+ x.name != 'refNo' &&
50
+ x.name != 'refNo2' &&
51
+ x.name != 'refNo3' &&
52
+ x.name != 'arrivalNoticeNo' &&
53
+ x.name != 'bizplaceName' &&
54
+ x.name != 'ganStatus' &&
55
+ x.name != 'grnStatus'
56
+ )
47
57
 
48
- // remove non-column params
49
- delete convertedParams.where.arrivalNoticeNo
50
- delete convertedParams.where.arrivalNoticeRefNo
58
+ const qb: SelectQueryBuilder<GoodsReceivalNote> = getRepository(GoodsReceivalNote).createQueryBuilder('grn')
59
+ buildQuery(qb, params, context)
60
+ qb.addSelect('COALESCE("cc".rank, 9999)', 'rank')
61
+ qb.leftJoinAndSelect('grn.domain', 'domain')
62
+ qb.leftJoinAndSelect('grn.bizplace', 'bizplace')
63
+ qb.leftJoinAndSelect('grn.creator', 'creator')
64
+ qb.leftJoinAndSelect('grn.updater', 'updater')
65
+ qb.innerJoinAndSelect('grn.arrivalNotice', 'arrivalNotice')
66
+ qb.leftJoin(
67
+ subQuery => {
68
+ return subQuery
69
+ .select(`ccd.rank`, 'rank')
70
+ .addSelect(`ccd.name`, 'status')
71
+ .from(`common_code_details`, 'ccd')
72
+ .innerJoin(`ccd.commonCode`, 'cc')
73
+ .where(`ccd.domain_id = :domainId`, { domainId: domain.id })
74
+ .andWhere(`cc.name = 'GRN_STATUS'`)
75
+ .andWhere(`cc.name = 'GAN_REQUESTS_STATUS'`)
76
+ },
77
+ 'cc',
78
+ 'cc.status = arrivalNotice.status'
79
+ )
51
80
 
52
- if (foundArrivalNotices && foundArrivalNotices.length) {
53
- convertedParams.where.arrivalNotice = In(foundArrivalNotices.map((foundAN: ArrivalNotice) => foundAN.id))
54
- } else {
55
- convertListParams.where.arrivalNotice = IsNull()
56
- }
81
+ if (refNoFilter?.value) {
82
+ qb.andWhere('arrivalNotice.ref_no ilike :refNo', { refNo: refNoFilter.value })
57
83
  }
84
+ if (refNo2Filter?.value) {
85
+ qb.andWhere('arrivalNotice.ref_no_2 ilike :refNo2', { refNo2: refNo2Filter.value })
86
+ }
87
+ if (refNo3Filter?.value) {
88
+ qb.andWhere('arrivalNotice.ref_no_3 ilike :refNo3', { refNo3: refNo3Filter.value })
89
+ }
90
+ if (ganNameFilter?.value) {
91
+ qb.andWhere('arrivalNotice.name ilike :ganName', { ganName: ganNameFilter.value })
92
+ }
93
+ if (bizplaceFilter?.value) {
94
+ qb.andWhere('bizplace.name ilike :bizName', { bizName: bizplaceFilter.value })
95
+ }
96
+ if (ganStatusFilter?.value) {
97
+ qb.andWhere('arrivalNotice.status ilike :ganStatus', { ganStatus: ganStatusFilter.value })
98
+ }
99
+ if (grnStatusFilter?.value) {
100
+ qb.andWhere('grn.status ilike :grnStatus', { grnStatus: grnStatusFilter.value })
101
+ }
102
+
103
+ const arrChildSortData = ['refNo', 'refNo2', 'refNo3']
104
+ const arrNameSortData = ['bizplace', 'arrivalNotice', 'updater']
105
+ const arrGanStatusSortData = ['ganStatus']
106
+ const arrGrnStatuSortData = ['status']
107
+ const sort = (params.sortings || []).reduce(
108
+ (acc, sort) => ({
109
+ ...acc,
110
+ [arrChildSortData.indexOf(sort.name) >= 0 ? 'arrivalNotice.' + sort.name : arrNameSortData.indexOf(sort.name) >= 0 ? sort.name + '.name'
111
+ : arrGanStatusSortData.indexOf(sort.name) >= 0 ? 'arrivalNotice.status' : arrGrnStatuSortData.indexOf(sort.name) >=0 ? 'grn.status' : 'grn.' + sort.name]: sort.desc
112
+ ? 'DESC'
113
+ : 'ASC'
114
+ }),
115
+ !params.sortings.some(e => e.name === 'status') ? { rank: 'ASC' } : {}
116
+ )
117
+
118
+ qb.orderBy(sort)
58
119
 
59
- let [items, total] = await getRepository(GoodsReceivalNote).findAndCount({
60
- ...convertedParams,
61
- relations: ['domain', 'arrivalNotice', 'bizplace', 'creator', 'updater']
62
- })
120
+ const [items, total] = await qb.getManyAndCount()
63
121
 
64
122
  return { items, total }
65
123
  }
@@ -8,8 +8,10 @@ import * as GoodsReceivalNote from './goods-receival-note'
8
8
  import * as InventoryCheck from './inventory-check'
9
9
  import * as Invoice from './invoice'
10
10
  import * as JobSheet from './job-sheet'
11
+ import * as Manifest from './manifest'
11
12
  import * as OrderInventory from './order-inventory'
12
13
  import * as OrderProduct from './order-product'
14
+ import * as OrderReverseKitting from './order-reverse-kitting'
13
15
  import * as OrderVas from './order-vas'
14
16
  import * as Others from './others'
15
17
  import * as PurchaseOrder from './purchase-order'
@@ -47,7 +49,8 @@ export const queries = [
47
49
  VasOrder.Query,
48
50
  GoodsReceivalNote.Query,
49
51
  Others.Query,
50
- ReverseKittingOrder.Query
52
+ ReverseKittingOrder.Query,
53
+ Manifest.Query
51
54
  ]
52
55
 
53
56
  export const mutations = [
@@ -74,5 +77,7 @@ export const mutations = [
74
77
  VasOrder.Mutation,
75
78
  GoodsReceivalNote.Mutation,
76
79
  Others.Mutation,
77
- ReverseKittingOrder.Mutation
80
+ ReverseKittingOrder.Mutation,
81
+ OrderReverseKitting.Mutation,
82
+ Manifest.Mutation
78
83
  ]
@@ -0,0 +1,13 @@
1
+ import { getRepository } from 'typeorm'
2
+ import { Manifest } from '../../../entities'
3
+
4
+ export const deleteManifest = {
5
+ async deleteManifest(_: any, { name }, context: any) {
6
+ const { domain, user } = context.state
7
+
8
+ await getRepository(Manifest).delete({ domain, name })
9
+
10
+ return true
11
+ }
12
+ }
13
+
@@ -0,0 +1,34 @@
1
+ import { DISPATCHMENT_STATUS, MANIFEST_STATUS } from '../../../constants'
2
+ import { Manifest, ReleaseGood } from '../../../entities'
3
+
4
+ export const dispatchManifest = {
5
+ async dispatchManifest(_: any, { name, patch }, context: any) {
6
+ const { domain, user, tx } = context.state
7
+
8
+ const manifest: Manifest = await tx.getRepository(Manifest).findOne({
9
+ where: { domain, name, status: MANIFEST_STATUS.OPEN }
10
+ })
11
+ if (!manifest) throw new Error(`Unable to find ${name}`)
12
+
13
+ let releaseGoods: any[] = await tx.getRepository(ReleaseGood).find({ where: { domain, manifest } })
14
+
15
+ releaseGoods = await Promise.all(
16
+ releaseGoods.map((releaseGood: ReleaseGood) => {
17
+ return {
18
+ ...releaseGood,
19
+ dispatchmentStatus: DISPATCHMENT_STATUS.DISPATCHED,
20
+ updater: user
21
+ }
22
+ })
23
+ )
24
+ await tx.getRepository(ReleaseGood).save(releaseGoods)
25
+
26
+ return await tx.getRepository(Manifest).save({
27
+ ...manifest,
28
+ ...patch,
29
+ status: MANIFEST_STATUS.CLOSED,
30
+ dispatchedAt: new Date(),
31
+ updater: user
32
+ })
33
+ }
34
+ }
@@ -0,0 +1,50 @@
1
+ import { MANIFEST_STATUS } from '../../../constants'
2
+ import { Manifest, ReleaseGood } from '../../../entities'
3
+ import { OrderNoGenerator } from '../../../utils'
4
+
5
+ export const generateManifest = {
6
+ async generateManifest(_: any, { manifest }, context: any) {
7
+ const { domain, user, tx } = context.state
8
+ const manifestItems: any[] = manifest.manifestItems
9
+
10
+ // regroup array of object by transporter
11
+ let shippingProviderGrouping: any = manifestItems.reduce((a, b) => {
12
+ a[b.transporter] = [...(a[b.transporter] || []), b]
13
+ return a
14
+ }, {})
15
+
16
+ for (const transporter in shippingProviderGrouping) {
17
+ const items: any[] = shippingProviderGrouping[transporter]
18
+
19
+ const openManifest: Manifest = await tx
20
+ .getRepository(Manifest)
21
+ .findOne({ domain, shippingProvider: transporter, status: MANIFEST_STATUS.OPEN })
22
+
23
+ let manifest: Manifest
24
+
25
+ if (openManifest) {
26
+ manifest = openManifest
27
+ } else {
28
+ manifest = new Manifest()
29
+ manifest.domain = domain
30
+ manifest.shippingProvider = transporter
31
+ manifest.name = OrderNoGenerator.manifest()
32
+ manifest.creator = user
33
+ manifest = await tx.getRepository(Manifest).save(manifest)
34
+ }
35
+
36
+ await Promise.all(
37
+ items.map(async item => {
38
+ let releaseOrder: ReleaseGood = await tx
39
+ .getRepository(ReleaseGood)
40
+ .findOne({ domain, refNo: item.refNo, trackingNo: item.trackingNo })
41
+ releaseOrder.manifest = manifest
42
+ releaseOrder.updater = user
43
+ await tx.getRepository(ReleaseGood).save(releaseOrder)
44
+ })
45
+ )
46
+ }
47
+
48
+ return true
49
+ }
50
+ }
@@ -0,0 +1,16 @@
1
+ import { deleteManifest } from './delete-manifest'
2
+ import { dispatchManifest } from './dispatch-manifest'
3
+ import { generateManifest } from './generate-manifest'
4
+ import { manifestResolver } from './manifest'
5
+ import { manifestsResolver } from './manifests'
6
+
7
+ export const Query = {
8
+ ...manifestResolver,
9
+ ...manifestsResolver
10
+ }
11
+
12
+ export const Mutation = {
13
+ ...deleteManifest,
14
+ ...generateManifest,
15
+ ...dispatchManifest
16
+ }
@@ -0,0 +1,28 @@
1
+ import { Manifest, ReleaseGood } from '../../../entities'
2
+
3
+ export const manifestResolver = {
4
+ async manifest(_: any, { name }, context: any) {
5
+ const { domain, tx } = context.state
6
+ const manifest: Manifest = await tx.getRepository(Manifest).findOne({ where: { domain, name } })
7
+
8
+ const releaseGoods: ReleaseGood[] = await tx.getRepository(ReleaseGood).find({ where: { manifest } })
9
+
10
+ const trackingNos: any[] = releaseGoods.map(releaseGood => {
11
+ return {
12
+ trackingNo: releaseGood.trackingNo,
13
+ refNo: releaseGood.refNo,
14
+ deliveryAddress: releaseGood.deliveryAddress1,
15
+ attentionTo: releaseGood.attentionTo,
16
+ postalCode: releaseGood.postalCode,
17
+ city: releaseGood.city,
18
+ phone: releaseGood.phone1,
19
+ dispatchmentStatus: releaseGood.dispatchmentStatus
20
+ }
21
+ })
22
+
23
+ return {
24
+ ...manifest,
25
+ trackingNos
26
+ }
27
+ }
28
+ }
@@ -0,0 +1,43 @@
1
+ import { getRepository } from 'typeorm'
2
+
3
+ import { convertListParams, ListParam } from '@things-factory/shell'
4
+
5
+ import { Manifest as ManifestEntity } from '../../../entities'
6
+
7
+ export const manifestsResolver = {
8
+ async manifests(_: any, params: ListParam, context: any) {
9
+ const fromDateParamIdx = params.filters.findIndex(param => param.name === 'fromDate')
10
+ if (fromDateParamIdx >= 0) {
11
+ let fromDateVal = new Date(params.filters[fromDateParamIdx].value)
12
+ params.filters.splice(fromDateParamIdx, 1)
13
+
14
+ params.filters.push({
15
+ name: 'createdAt',
16
+ operator: 'gte',
17
+ value: fromDateVal.toISOString(),
18
+ relation: false
19
+ })
20
+ }
21
+
22
+ const toDateParamIdx = params.filters.findIndex(param => param.name === 'toDate')
23
+ if (toDateParamIdx >= 0) {
24
+ let toDateVal = new Date(params.filters[toDateParamIdx].value)
25
+ params.filters.splice(toDateParamIdx, 1)
26
+
27
+ params.filters.push({
28
+ name: 'createdAt',
29
+ operator: 'lt',
30
+ value: new Date(toDateVal.setDate(toDateVal.getDate() + 1)).toISOString(),
31
+ relation: false
32
+ })
33
+ }
34
+
35
+ const convertedParams = convertListParams(params)
36
+ const [items, total] = await getRepository(ManifestEntity).findAndCount({
37
+ ...convertedParams,
38
+ relations: ['domain', 'creator', 'updater']
39
+ })
40
+
41
+ return { items, total }
42
+ }
43
+ }
@@ -2,6 +2,7 @@ import { orderInventoryResolver } from './order-inventory'
2
2
  import { orderInventoriesResolver } from './order-inventories'
3
3
  import { inventoriesByOrderResolver } from './inventories-by-order'
4
4
  import { mergedProductOrderInventoriesResolver } from './merged-product-order-inventories'
5
+ import { updateOrderInventorySerialNumberResolver } from './update-order-inventories-serial-number'
5
6
 
6
7
  import { deleteOrderInventory } from './delete-order-inventory'
7
8
  import { deleteOrderInventories } from './delete-order-inventories'
@@ -15,5 +16,6 @@ export const Query = {
15
16
 
16
17
  export const Mutation = {
17
18
  ...deleteOrderInventory,
18
- ...deleteOrderInventories
19
+ ...deleteOrderInventories,
20
+ ...updateOrderInventorySerialNumberResolver
19
21
  }
@@ -55,6 +55,7 @@ export const orderInventoriesResolver = {
55
55
  'inventory.product',
56
56
  'releaseGood',
57
57
  'deliveryOrder',
58
+ 'bizplace',
58
59
  'creator',
59
60
  'updater'
60
61
  ]
@@ -3,15 +3,15 @@ import { getRepository } from 'typeorm'
3
3
  import { OrderInventory } from '../../../entities'
4
4
 
5
5
  export const orderInventoryResolver = {
6
- async orderInventory(_: any, { name }, context: any) {
6
+ async orderInventory(_: any, { id }, context: any) {
7
7
  const { domain }: { domain: Domain } = context.state
8
8
 
9
9
  return await getRepository(OrderInventory).findOne({
10
10
  where: {
11
11
  domain,
12
- name
12
+ id
13
13
  },
14
- relations: ['domain', 'releaseGood', 'vasOrder', 'shippingOrder', 'inventory', 'creator', 'updater']
14
+ relations: ['domain', 'releaseGood', 'inventory', 'creator', 'updater']
15
15
  })
16
16
  }
17
17
  }
@@ -0,0 +1,28 @@
1
+ import { Product } from '@things-factory/product-base'
2
+ import { convertListParams, ListParam, Domain } from '@things-factory/shell'
3
+ import { getRepository, EntityManager } from 'typeorm'
4
+ import { OrderInventory } from '../../../entities'
5
+
6
+ export const updateOrderInventorySerialNumberResolver = {
7
+ async updateOrderInventorySerialNumber(_: any, { orderInventory }, context: any) {
8
+ try {
9
+ const { tx, domain }: { tx: EntityManager; domain: Domain } = context.state
10
+
11
+ await tx.getRepository(OrderInventory).update(
12
+ {
13
+ domain,
14
+ id: orderInventory.id
15
+ },
16
+ {
17
+ serialNumber: orderInventory.serialNumber
18
+ }
19
+ )
20
+ orderInventory = await tx.getRepository(OrderInventory).findOne({ id: orderInventory.id })
21
+
22
+ return orderInventory
23
+ } catch (error) {
24
+ throw error
25
+ }
26
+
27
+ }
28
+ }
@@ -1,9 +1,12 @@
1
1
  import { orderReverseKittingResolver } from './order-reverse-kitting'
2
2
  import { orderReverseKittingsResolver } from './order-reverse-kittings'
3
+ import { updateOrderReverseKitting } from './update-order-reverse-kitting'
3
4
 
4
5
  export const Query = {
5
6
  ...orderReverseKittingResolver,
6
7
  ...orderReverseKittingsResolver
7
8
  }
8
9
 
9
- export const Mutation = {}
10
+ export const Mutation = {
11
+ ...updateOrderReverseKitting
12
+ }
@@ -0,0 +1,26 @@
1
+ import { EntityManager, In } from 'typeorm'
2
+
3
+ import { User } from '@things-factory/auth-base'
4
+ import { getPermittedBizplaceIds } from '@things-factory/biz-base'
5
+ import { Domain } from '@things-factory/shell'
6
+
7
+ import { OrderReverseKitting } from '../../../entities'
8
+
9
+ export const updateOrderReverseKitting = {
10
+ async updateOrderReverseKitting(_: any, { id, patch }, context: any) {
11
+ const { tx, user, domain }: { tx: EntityManager; user: User; domain: Domain } = context.state
12
+ const orderReverseKitting: OrderReverseKitting = await tx.getRepository(OrderReverseKitting).findOne({
13
+ where: {
14
+ domain,
15
+ bizplace: In(await getPermittedBizplaceIds(domain, user)),
16
+ id
17
+ }
18
+ })
19
+
20
+ return await tx.getRepository(OrderReverseKitting).save({
21
+ ...orderReverseKitting,
22
+ ...patch,
23
+ updater: user
24
+ })
25
+ }
26
+ }
@@ -1,9 +1,11 @@
1
+ import orderBy from 'lodash/orderBy'
2
+ import { EntityManager } from 'typeorm'
3
+
1
4
  import { User } from '@things-factory/auth-base'
2
5
  import { Bizplace, getPermittedBizplaces } from '@things-factory/biz-base'
3
6
  import { Domain } from '@things-factory/shell'
4
- import { EntityManager } from 'typeorm'
7
+
5
8
  import { InventoryUtil } from '../../../utils'
6
- import orderBy from 'lodash/orderBy'
7
9
 
8
10
  export const bulkUploadValidateWarehousePartnersProductsQuantityResolver = {
9
11
  async bulkUploadValidateWarehousePartnersProductsQuantity(
@@ -81,15 +83,16 @@ export const bulkUploadValidateWarehousePartnersProductsQuantityResolver = {
81
83
  inventory:
82
84
  total > 0
83
85
  ? {
84
- ...items[0],
85
- remainQty: total > 0 ? items[0].remainQty : null,
86
- remainUomValue: total > 0 ? items[0].remainUomValue : null,
87
- remainUomValueWithUom: total > 0 ? items[0].remainUomValueWithUom : ''
88
- }
86
+ ...items[0],
87
+ remainQty: total > 0 ? items[0].remainQty : null,
88
+ remainUomValue: total > 0 ? items[0].remainUomValue : null,
89
+ remainUomValueWithUom: total > 0 ? items[0].remainUomValueWithUom : ''
90
+ }
89
91
  : null,
90
92
  productId: total > 0 ? items[0].productId : null,
91
93
  productSKU: total > 0 ? items[0].productSKU : orderInventory.productSKU,
92
94
  productName: total > 0 ? items[0].productName : null,
95
+ uom: total > 0 ? items[0].uom : null,
93
96
  remainQty: total > 0 ? items[0].remainQty : null,
94
97
  remainUomValue: total > 0 ? items[0].remainUomValue : null,
95
98
  remainUomValueWithUom: total > 0 ? items[0].remainUomValueWithUom : '',
@@ -10,6 +10,7 @@ import { releaseGoodResolver } from './release-good'
10
10
  import { releaseGoodDetailResolver } from './release-good-detail'
11
11
  import { releaseGoodRequestsResolver } from './release-good-requests'
12
12
  import { releaseGoodsResolver } from './release-goods'
13
+ import { updateReleaseGoodDetailsResolver } from './update-release-good-details'
13
14
 
14
15
  export const Query = {
15
16
  ...releaseGoodsResolver,
@@ -26,5 +27,6 @@ export const Mutation = {
26
27
  ...generateReleaseGood,
27
28
  ...receiveReleaseGoodResolver,
28
29
  ...rejectReleaseGoodResolver,
29
- ...addReleaseGood
30
+ ...addReleaseGood,
31
+ ...updateReleaseGoodDetailsResolver
30
32
  }
@@ -74,6 +74,8 @@ export const releaseGoodDetailResolver = {
74
74
  packingSize: inventory.packingSize,
75
75
  location: inventory.location,
76
76
  qty: inventory.qty,
77
+ lockedQty: inventory.lockedQty,
78
+ lockedUomValue: inventory. lockedUomValue,
77
79
  uom: inventory.uom,
78
80
  uomValue: inventory.uomValue,
79
81
  releaseQty: orderInv.releaseQty,
@@ -103,18 +105,25 @@ export const releaseGoodDetailResolver = {
103
105
  })
104
106
  )
105
107
 
106
- const result = {
108
+ let result = {
107
109
  ...releaseGood,
108
110
  attachment: foundAttachments,
109
- shippingOrderInfo: {
110
- containerNo: shippingOrder?.containerNo || '',
111
- containerLeavingDate: shippingOrder?.containerLeavingDate || '',
112
- containerArrivalDate: shippingOrder?.containerArrivalDate || '',
113
- shipName: shippingOrder?.shipName || ''
114
- },
111
+ shippingOrderInfo: {},
115
112
  inventoryInfos: orderBy(invInfos, ['product.sku'], ['asc'])
116
113
  }
117
114
 
115
+ if (shippingOrder) {
116
+ result = {
117
+ ...result,
118
+ shippingOrderInfo: {
119
+ id: shippingOrder?.id ,
120
+ containerNo: shippingOrder?.containerNo,
121
+ containerLeavingDate: shippingOrder?.containerLeavingDate,
122
+ containerArrivalDate: shippingOrder?.containerArrivalDate,
123
+ shipName: shippingOrder?.shipName
124
+ }
125
+ }
126
+ }
118
127
  dropOITempTable(domain, tx)
119
128
 
120
129
  return result