@things-factory/sales-base 4.3.3 → 4.4.0-alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (173) hide show
  1. package/dist-server/constants/attachment-type.js +1 -2
  2. package/dist-server/constants/attachment-type.js.map +1 -1
  3. package/dist-server/constants/index.js +5 -2
  4. package/dist-server/constants/index.js.map +1 -1
  5. package/dist-server/constants/order.js +3 -12
  6. package/dist-server/constants/order.js.map +1 -1
  7. package/dist-server/controllers/ecommerce/index.js +5 -1
  8. package/dist-server/controllers/ecommerce/index.js.map +1 -1
  9. package/dist-server/controllers/index.js +5 -1
  10. package/dist-server/controllers/index.js.map +1 -1
  11. package/dist-server/errors/index.js +5 -1
  12. package/dist-server/errors/index.js.map +1 -1
  13. package/dist-server/errors/validation-error.js +5 -1
  14. package/dist-server/errors/validation-error.js.map +1 -1
  15. package/dist-server/index.js +5 -1
  16. package/dist-server/index.js.map +1 -1
  17. package/dist-server/service/arrival-notice/index.js +5 -1
  18. package/dist-server/service/arrival-notice/index.js.map +1 -1
  19. package/dist-server/service/claim/index.js +5 -1
  20. package/dist-server/service/claim/index.js.map +1 -1
  21. package/dist-server/service/claim-detail/index.js +5 -1
  22. package/dist-server/service/claim-detail/index.js.map +1 -1
  23. package/dist-server/service/claim-order/index.js +5 -1
  24. package/dist-server/service/claim-order/index.js.map +1 -1
  25. package/dist-server/service/collection-order/index.js +5 -1
  26. package/dist-server/service/collection-order/index.js.map +1 -1
  27. package/dist-server/service/delivery-order/index.js +5 -1
  28. package/dist-server/service/delivery-order/index.js.map +1 -1
  29. package/dist-server/service/goods-receival-note/index.js +5 -1
  30. package/dist-server/service/goods-receival-note/index.js.map +1 -1
  31. package/dist-server/service/index.js +24 -48
  32. package/dist-server/service/index.js.map +1 -1
  33. package/dist-server/service/inventory-check/index.js +5 -1
  34. package/dist-server/service/inventory-check/index.js.map +1 -1
  35. package/dist-server/service/invoice/index.js +5 -1
  36. package/dist-server/service/invoice/index.js.map +1 -1
  37. package/dist-server/service/invoice-product/index.js +5 -1
  38. package/dist-server/service/invoice-product/index.js.map +1 -1
  39. package/dist-server/service/job-sheet/index.js +5 -1
  40. package/dist-server/service/job-sheet/index.js.map +1 -1
  41. package/dist-server/service/order-inventory/index.js +5 -1
  42. package/dist-server/service/order-inventory/index.js.map +1 -1
  43. package/dist-server/service/order-inventory/order-inventory-query.js +1 -38
  44. package/dist-server/service/order-inventory/order-inventory-query.js.map +1 -1
  45. package/dist-server/service/order-inventory/order-inventory-types.js +1 -9
  46. package/dist-server/service/order-inventory/order-inventory-types.js.map +1 -1
  47. package/dist-server/service/order-inventory/order-inventory.js +1 -5
  48. package/dist-server/service/order-inventory/order-inventory.js.map +1 -1
  49. package/dist-server/service/order-product/index.js +5 -1
  50. package/dist-server/service/order-product/index.js.map +1 -1
  51. package/dist-server/service/order-product/order-product-types.js +13 -13
  52. package/dist-server/service/order-product/order-product-types.js.map +1 -1
  53. package/dist-server/service/order-product/order-product.js +4 -39
  54. package/dist-server/service/order-product/order-product.js.map +1 -1
  55. package/dist-server/service/order-vas/index.js +5 -1
  56. package/dist-server/service/order-vas/index.js.map +1 -1
  57. package/dist-server/service/others/index.js +5 -1
  58. package/dist-server/service/others/index.js.map +1 -1
  59. package/dist-server/service/others/other-query.js +2 -37
  60. package/dist-server/service/others/other-query.js.map +1 -1
  61. package/dist-server/service/purchase-order/index.js +5 -1
  62. package/dist-server/service/purchase-order/index.js.map +1 -1
  63. package/dist-server/service/purchase-order-other-charge/index.js +5 -1
  64. package/dist-server/service/purchase-order-other-charge/index.js.map +1 -1
  65. package/dist-server/service/release-good/index.js +5 -1
  66. package/dist-server/service/release-good/index.js.map +1 -1
  67. package/dist-server/service/release-good/release-good-mutation.js +1 -23
  68. package/dist-server/service/release-good/release-good-mutation.js.map +1 -1
  69. package/dist-server/service/release-good/release-good-query.js +2 -28
  70. package/dist-server/service/release-good/release-good-query.js.map +1 -1
  71. package/dist-server/service/release-good/release-good.js +12 -32
  72. package/dist-server/service/release-good/release-good.js.map +1 -1
  73. package/dist-server/service/retail-replenishment-order/index.js +5 -1
  74. package/dist-server/service/retail-replenishment-order/index.js.map +1 -1
  75. package/dist-server/service/return-order/index.js +5 -1
  76. package/dist-server/service/return-order/index.js.map +1 -1
  77. package/dist-server/service/reverse-kitting-order/index.js +5 -1
  78. package/dist-server/service/reverse-kitting-order/index.js.map +1 -1
  79. package/dist-server/service/reverse-kitting-order-inventory/index.js +5 -1
  80. package/dist-server/service/reverse-kitting-order-inventory/index.js.map +1 -1
  81. package/dist-server/service/shipping-order/index.js +5 -1
  82. package/dist-server/service/shipping-order/index.js.map +1 -1
  83. package/dist-server/service/transfer-order/index.js +5 -1
  84. package/dist-server/service/transfer-order/index.js.map +1 -1
  85. package/dist-server/service/vas/index.js +5 -1
  86. package/dist-server/service/vas/index.js.map +1 -1
  87. package/dist-server/service/vas-order/index.js +5 -1
  88. package/dist-server/service/vas-order/index.js.map +1 -1
  89. package/dist-server/utils/index.js +5 -1
  90. package/dist-server/utils/index.js.map +1 -1
  91. package/dist-server/utils/inventory-util.js +99 -258
  92. package/dist-server/utils/inventory-util.js.map +1 -1
  93. package/dist-server/utils/order-no-generator.js +0 -7
  94. package/dist-server/utils/order-no-generator.js.map +1 -1
  95. package/package.json +13 -13
  96. package/server/constants/attachment-type.ts +1 -2
  97. package/server/constants/index.ts +0 -1
  98. package/server/constants/order.ts +2 -12
  99. package/server/service/index.ts +21 -51
  100. package/server/service/order-inventory/order-inventory-query.ts +2 -40
  101. package/server/service/order-inventory/order-inventory-types.ts +0 -6
  102. package/server/service/order-inventory/order-inventory.ts +5 -5
  103. package/server/service/order-product/order-product-types.ts +3 -5
  104. package/server/service/order-product/order-product.ts +3 -30
  105. package/server/service/others/other-query.ts +8 -43
  106. package/server/service/release-good/release-good-mutation.ts +2 -24
  107. package/server/service/release-good/release-good-query.ts +30 -57
  108. package/server/service/release-good/release-good.ts +9 -28
  109. package/server/utils/inventory-util.ts +106 -287
  110. package/server/utils/order-no-generator.ts +48 -42
  111. package/dist-server/constants/release-good.js +0 -9
  112. package/dist-server/constants/release-good.js.map +0 -1
  113. package/dist-server/service/draft-release-good/draft-release-good-mutation.js +0 -563
  114. package/dist-server/service/draft-release-good/draft-release-good-mutation.js.map +0 -1
  115. package/dist-server/service/draft-release-good/draft-release-good-query.js +0 -289
  116. package/dist-server/service/draft-release-good/draft-release-good-query.js.map +0 -1
  117. package/dist-server/service/draft-release-good/draft-release-good-type.js +0 -364
  118. package/dist-server/service/draft-release-good/draft-release-good-type.js.map +0 -1
  119. package/dist-server/service/draft-release-good/draft-release-good.js +0 -321
  120. package/dist-server/service/draft-release-good/draft-release-good.js.map +0 -1
  121. package/dist-server/service/draft-release-good/index.js +0 -21
  122. package/dist-server/service/draft-release-good/index.js.map +0 -1
  123. package/dist-server/service/order-tote/index.js +0 -21
  124. package/dist-server/service/order-tote/index.js.map +0 -1
  125. package/dist-server/service/order-tote/order-tote-mutation.js +0 -56
  126. package/dist-server/service/order-tote/order-tote-mutation.js.map +0 -1
  127. package/dist-server/service/order-tote/order-tote-query.js +0 -123
  128. package/dist-server/service/order-tote/order-tote-query.js.map +0 -1
  129. package/dist-server/service/order-tote/order-tote-types.js +0 -79
  130. package/dist-server/service/order-tote/order-tote-types.js.map +0 -1
  131. package/dist-server/service/order-tote/order-tote.js +0 -91
  132. package/dist-server/service/order-tote/order-tote.js.map +0 -1
  133. package/dist-server/service/order-tote-item/index.js +0 -21
  134. package/dist-server/service/order-tote-item/index.js.map +0 -1
  135. package/dist-server/service/order-tote-item/order-tote-item-mutation.js +0 -56
  136. package/dist-server/service/order-tote-item/order-tote-item-mutation.js.map +0 -1
  137. package/dist-server/service/order-tote-item/order-tote-item-query.js +0 -100
  138. package/dist-server/service/order-tote-item/order-tote-item-query.js.map +0 -1
  139. package/dist-server/service/order-tote-item/order-tote-item-types.js +0 -91
  140. package/dist-server/service/order-tote-item/order-tote-item-types.js.map +0 -1
  141. package/dist-server/service/order-tote-item/order-tote-item.js +0 -104
  142. package/dist-server/service/order-tote-item/order-tote-item.js.map +0 -1
  143. package/dist-server/service/order-tote-seal/index.js +0 -21
  144. package/dist-server/service/order-tote-seal/index.js.map +0 -1
  145. package/dist-server/service/order-tote-seal/order-tote-seal-mutation.js +0 -56
  146. package/dist-server/service/order-tote-seal/order-tote-seal-mutation.js.map +0 -1
  147. package/dist-server/service/order-tote-seal/order-tote-seal-query.js +0 -97
  148. package/dist-server/service/order-tote-seal/order-tote-seal-query.js.map +0 -1
  149. package/dist-server/service/order-tote-seal/order-tote-seal-types.js +0 -71
  150. package/dist-server/service/order-tote-seal/order-tote-seal-types.js.map +0 -1
  151. package/dist-server/service/order-tote-seal/order-tote-seal.js +0 -71
  152. package/dist-server/service/order-tote-seal/order-tote-seal.js.map +0 -1
  153. package/server/constants/release-good.ts +0 -6
  154. package/server/service/draft-release-good/draft-release-good-mutation.ts +0 -734
  155. package/server/service/draft-release-good/draft-release-good-query.ts +0 -314
  156. package/server/service/draft-release-good/draft-release-good-type.ts +0 -261
  157. package/server/service/draft-release-good/draft-release-good.ts +0 -270
  158. package/server/service/draft-release-good/index.ts +0 -9
  159. package/server/service/order-tote/index.ts +0 -9
  160. package/server/service/order-tote/order-tote-mutation.ts +0 -30
  161. package/server/service/order-tote/order-tote-query.ts +0 -114
  162. package/server/service/order-tote/order-tote-types.ts +0 -47
  163. package/server/service/order-tote/order-tote.ts +0 -62
  164. package/server/service/order-tote-item/index.ts +0 -9
  165. package/server/service/order-tote-item/order-tote-item-mutation.ts +0 -30
  166. package/server/service/order-tote-item/order-tote-item-query.ts +0 -88
  167. package/server/service/order-tote-item/order-tote-item-types.ts +0 -56
  168. package/server/service/order-tote-item/order-tote-item.ts +0 -72
  169. package/server/service/order-tote-seal/index.ts +0 -9
  170. package/server/service/order-tote-seal/order-tote-seal-mutation.ts +0 -30
  171. package/server/service/order-tote-seal/order-tote-seal-query.ts +0 -60
  172. package/server/service/order-tote-seal/order-tote-seal-types.ts +0 -41
  173. package/server/service/order-tote-seal/order-tote-seal.ts +0 -46
@@ -1,314 +0,0 @@
1
- import { Arg, Args, Ctx, FieldResolver, Query, Resolver, Root, Directive } from 'type-graphql'
2
- import { getRepository, SelectQueryBuilder, EntityManager, In, getManager } from 'typeorm'
3
-
4
- import { checkUserBelongsDomain, User } from '@things-factory/auth-base'
5
- import { Bizplace, getPermittedBizplaces, getPermittedBizplaceIds } from '@things-factory/biz-base'
6
- import { buildQuery, Domain, ListParam, Filter, Pagination, Sorting } from '@things-factory/shell'
7
-
8
- import { DRAFT_RELEASE_ORDER_STATUS, ORDER_STATUS } from '../../constants'
9
- import { DraftReleaseGood } from './draft-release-good'
10
- import { DraftReleaseGoodList } from './draft-release-good-type'
11
-
12
- import { Attachment } from '@things-factory/attachment-base'
13
- import { ATTACHMENT_TYPE } from '../../constants'
14
-
15
- import { InventoryUtil } from '../../utils'
16
- import { OrderProduct } from '../order-product/order-product'
17
-
18
- @Resolver(DraftReleaseGood)
19
- export class DraftReleaseGoodQuery {
20
- @Query(returns => DraftReleaseGood, { description: 'To fetch a DraftReleaseGood' })
21
- async draftReleaseGood(@Arg('id') id: string, @Ctx() context: any): Promise<DraftReleaseGood> {
22
- const { domain } = context.state
23
-
24
- return await getRepository(DraftReleaseGood).findOne({
25
- where: { domain, id }
26
- })
27
- }
28
-
29
- @Directive('@transaction')
30
- @Query(returns => DraftReleaseGood, { description: 'To fetch a DraftReleaseGood' })
31
- async draftReleaseGoodByName(@Arg('name') name: string, @Ctx() context: any): Promise<DraftReleaseGood> {
32
- const { domain, tx }: { domain: Domain; tx: EntityManager } = context.state
33
-
34
- return getDraftReleaseGoodFunction(null, name, context, tx)
35
- }
36
-
37
- @Directive('@transaction')
38
- @Query(returns => DraftReleaseGoodList, { description: 'To fetch multiple DraftReleaseGoods' })
39
- async draftReleaseGoods(@Args() params: ListParam, @Ctx() context: any): Promise<DraftReleaseGoodList> {
40
- try {
41
- const { domain, user, tx }: { domain: Domain; user: User, tx: EntityManager } = context.state
42
-
43
- const statusFilter = params.filters.find(e => e.name === 'status')
44
- const bizplaceFilter = params.filters.find(param => param.name === 'bizplaceId')
45
- const noOfItemsFilter = params.filters.find(param => param.name === 'noOfItems')
46
- const skuFilter = params.filters.find(param => param.name === 'sku')
47
- const orderRemarkFilter = params.filters.find(param => param.name === 'orderRemark')
48
-
49
- if (!bizplaceFilter) {
50
- params.filters.push({
51
- name: 'bizplaceId',
52
- operator: 'in',
53
- value: await getPermittedBizplaceIds(domain, user),
54
- relation: false
55
- })
56
- }
57
-
58
- params.filters = params.filters.filter(itm => itm.name !== 'noOfItems' && itm.name !== 'sku' && itm.name !== 'status')
59
-
60
- if (orderRemarkFilter) {
61
- const orderRemarkIdx = params.filters.findIndex(param => param.name === 'orderRemark')
62
- if (orderRemarkFilter.value == true) {
63
- params.filters.splice(orderRemarkIdx, 1)
64
- params.filters.push({
65
- name: 'remark',
66
- operator: 'is_not_null',
67
- value: null,
68
- relation: false
69
- })
70
- } else {
71
- params.filters.splice(orderRemarkIdx, 1)
72
- params.filters.push({
73
- name: 'remark',
74
- operator: 'is_null',
75
- value: null,
76
- relation: false
77
- })
78
- }
79
- }
80
-
81
- const fromDateParamIdx = params.filters.findIndex(param => param.name === 'fromDate')
82
- if (fromDateParamIdx >= 0) {
83
- let fromDateVal = new Date(params.filters[fromDateParamIdx].value)
84
- params.filters.splice(fromDateParamIdx, 1)
85
-
86
- params.filters.push({
87
- name: 'createdAt',
88
- operator: 'gte',
89
- value: fromDateVal.toISOString(),
90
- relation: false
91
- })
92
- }
93
-
94
- const toDateParamIdx = params.filters.findIndex(param => param.name === 'toDate')
95
- if (toDateParamIdx >= 0) {
96
- let toDateVal = new Date(params.filters[toDateParamIdx].value)
97
- params.filters.splice(toDateParamIdx, 1)
98
-
99
- params.filters.push({
100
- name: 'createdAt',
101
- operator: 'lt',
102
- value: new Date(toDateVal.setDate(toDateVal.getDate() + 1)).toISOString(),
103
- relation: false
104
- })
105
- }
106
-
107
- tx.query(`
108
- create temp table temp_op_calculation on commit drop as (
109
- select drg1.id, sum(case when wboi."remainQty" >= op.release_qty then 0 else 1 end) as insufficient_count, count(*) as total_row
110
- from draft_release_goods drg1
111
- left join order_products op on drg1.id = op.draft_release_good_id
112
- left join warehouse_bizplace_onhand_inventories wboi
113
- on (wboi."productId" = op.product_id or wboi."productBundleId" = op.product_id)
114
- and wboi."packingType" = op.packing_type
115
- and wboi."packingSize" = op.packing_size
116
- and wboi.uom = op.uom
117
- and wboi."domainId" = op.domain_id
118
- and wboi."bizplaceId" = op.bizplace_id
119
- where op.domain_id = $1 and drg1.status ='DRAFT'
120
- group by drg1.id
121
- )
122
- `, [domain.id])
123
-
124
- const qb: SelectQueryBuilder<DraftReleaseGood> = tx.getRepository(DraftReleaseGood).createQueryBuilder('drg')
125
- buildQuery(qb, params, context)
126
- qb.addSelect('COALESCE("cc".rank, 99999)', 'rank')
127
- qb.addSelect(`CASE WHEN "drg".status = 'DRAFT' and (tmp_calc.insufficient_count > 0 or tmp_calc.total_row = 0) then 'INSUFFICIENT' else "drg".status END`, 'computed_status')
128
- qb.leftJoin(`temp_op_calculation`, 'tmp_calc', 'tmp_calc.id = drg.id')
129
- qb.leftJoinAndSelect('drg.domain', 'domain')
130
- qb.leftJoinAndSelect('drg.bizplace', 'bizplace')
131
- qb.leftJoinAndSelect('drg.creator', 'creator')
132
- qb.leftJoinAndSelect('drg.updater', 'updater')
133
- qb.leftJoinAndSelect('drg.deliverTo', 'deliverTo')
134
- qb.leftJoin(
135
- subQuery => {
136
- return subQuery
137
- .select(`ccd.rank`, 'rank')
138
- .addSelect(`ccd.name`, 'status')
139
- .from(`common_code_details`, 'ccd')
140
- .innerJoin(`ccd.commonCode`, 'cc')
141
- .where(`ccd.domain_id = :domainId`, { domainId: domain.id })
142
- .andWhere(`cc.name = 'ODO_REQUESTS_STATUS'`)
143
- },
144
- 'cc',
145
- 'cc.status = drg.status'
146
- )
147
-
148
- if (skuFilter) {
149
- qb.andWhere(
150
- `
151
- exists (
152
- select * from order_products op
153
- inner join products p on op.product_id = p.id
154
- where op.draft_release_good_id = drg.id
155
- and lower(p.sku) ilike :sku
156
- )
157
- `,
158
- { sku: skuFilter.value.toLowerCase() }
159
- )
160
- }
161
-
162
- if (noOfItemsFilter) {
163
- qb.andWhere(
164
- `
165
- exists (
166
- select numberFilterOp.product_id from order_products numberFilterOp
167
- where numberFilterOp.draft_release_good_id = drg.id
168
- group by numberFilterOp.product_id having count(*) ${noOfItemsFilter.value == 1 ? ' = 1' : '> 1'}
169
- )
170
- `
171
- )
172
- }
173
-
174
- if (statusFilter) {
175
- if (statusFilter.value == DRAFT_RELEASE_ORDER_STATUS.DRAFT) {
176
- qb.andWhere(
177
- `
178
- drg.status = 'DRAFT' AND tmp_calc.insufficient_count = 0 AND tmp_calc.total_row > 0
179
- `
180
- )
181
- } else if (statusFilter.value == DRAFT_RELEASE_ORDER_STATUS.INSUFFICIENT) {
182
- qb.andWhere(
183
- `
184
- drg.status = 'DRAFT' AND (tmp_calc.insufficient_count > 0 OR tmp_calc.total_row = 0)
185
- `
186
- )
187
- } else {
188
- qb.andWhere(
189
- `
190
- drg.status = '${statusFilter.value}'
191
- `
192
- )
193
- }
194
- }
195
-
196
- const arrChildSortData = ['bizplace', 'creator']
197
- const sort = (params.sortings || []).reduce(
198
- (acc, sort) => ({
199
- ...acc,
200
- [arrChildSortData.indexOf(sort.name) >= 0 ? sort.name + '.name' : 'drg.' + sort.name]: sort.desc
201
- ? 'DESC'
202
- : 'ASC'
203
- }),
204
- params.sortings.length < 1 ? { rank: 'ASC', 'drg.createdAt': 'DESC' } : {}
205
- )
206
-
207
- qb.orderBy(sort)
208
-
209
- let [items, total] = await Promise.all([qb.getRawMany(), qb.getCount()])
210
-
211
-
212
- items = items.map(itm => {
213
- return {
214
- id: itm.drg_id,
215
- name: itm.drg_name,
216
- description: itm.drg_description,
217
- type: itm.drg_type,
218
- releaseDate: itm.drg_release_date,
219
- exportOption: itm.drg_export_option,
220
- ownTransport: itm.drg_own_transport,
221
- bizplace: { id: itm.bizplace_id, name: itm.bizplace_name, description: itm.bizplace_description },
222
- refNo: itm.drg_ref_no,
223
- refNo2: itm.drg_ref_no_2,
224
- refNo3: itm.drg_ref_no_3,
225
- status: itm.computed_status,
226
- createdAt: itm.drg_created_at,
227
- creator: { id: itm.creator_id, name: itm.creator_name, description: itm.creator_description },
228
- updatedAt: itm.drg_updated_at,
229
- updater: { id: itm.updater_id, name: itm.updater_name, description: itm.updater_description }
230
- }
231
- })
232
-
233
- return { items, total }
234
- } catch (error) {
235
- throw error
236
- }
237
-
238
- }
239
- }
240
-
241
- export async function getDraftReleaseGoodFunction(_: any, name: any, context: any, tx?: EntityManager) {
242
- try {
243
- const { domain, user, bizplace }: { domain: Domain; user: User; bizplace: Bizplace } = context.state
244
-
245
- let permittedBizplaces = await getPermittedBizplaces(domain, user)
246
- let result = await tx.getRepository(DraftReleaseGood).findOne({
247
- where: { domain, name, bizplace: In(permittedBizplaces.map(biz => biz.id)) },
248
- relations: [
249
- 'releaseGood',
250
- 'orderProducts',
251
- 'orderProducts.product',
252
- 'orderProducts.productBundle',
253
- 'shippingOrder',
254
- 'bizplace',
255
- 'domain',
256
- 'creator',
257
- 'updater'
258
- ]
259
- })
260
-
261
- if (!result?.id) throw new Error(`Failed to find draft release good ${name}`)
262
-
263
-
264
- let foundPermittedBizplace: Bizplace
265
- let companyBizplace: Bizplace
266
-
267
- if (result.bizplace.id) {
268
- foundPermittedBizplace = permittedBizplaces.find(biz => biz.id == result.bizplace.id)
269
-
270
- if (foundPermittedBizplace) {
271
- if (!foundPermittedBizplace.company?.id) {
272
- foundPermittedBizplace = await tx.getRepository(Bizplace).findOne(foundPermittedBizplace.id, {
273
- relations: ['company', 'company.domain']
274
- })
275
- }
276
- const companyDomain: Domain = foundPermittedBizplace.company.domain
277
- companyBizplace = await tx.getRepository(Bizplace).findOne({ where: { domain: companyDomain } })
278
- }
279
- }
280
-
281
- const bizplaces: Bizplace[] = [foundPermittedBizplace, companyBizplace]
282
-
283
- let productInventory
284
- if (result.orderProducts.length > 0)
285
- productInventory = await InventoryUtil.bizplaceProductInventory(bizplaces, { filters: [{ name: 'productId', operator: 'in', value: [...result.orderProducts.filter(itm => itm?.product).map(itm => { return itm.product.id }), ...result.orderProducts.filter(itm => itm?.productBundle).map(itm => { return itm.productBundle.id })] }] }, context, tx)
286
-
287
- result.orderProducts = result.orderProducts.map(itm => {
288
- let foundProductInv = productInventory?.items.find(i => (i.productId == itm?.product?.id || i.productId == itm?.productBundle?.id) && i.packingType == itm.packingType && i.packingSize == itm.packingSize && i.uom == itm.uom)
289
- return {
290
- ...itm,
291
- product: itm.product || { id: foundProductInv.productId, name: foundProductInv.productName, brand: foundProductInv.productBrand, sku: foundProductInv.productSKU },
292
- groupType: foundProductInv ? foundProductInv.groupType : 'SINGLE',
293
- remainQty: foundProductInv ? foundProductInv.remainQty : 0,
294
- remainUomValue: foundProductInv ? foundProductInv.remainUomValue : 0,
295
- remainUomValueWithUom: foundProductInv ? foundProductInv.remainUomValueWithUom : 0,
296
- }
297
- })
298
- const foundAttachments: Attachment[] = await tx.getRepository(Attachment).find({
299
- where: {
300
- domain,
301
- refBy: result.id,
302
- category: ATTACHMENT_TYPE.DGRN
303
- }
304
- })
305
-
306
- return {
307
- ...result,
308
- attachment: foundAttachments
309
- }
310
-
311
- } catch (error) {
312
- console.error(error)
313
- }
314
- }
@@ -1,261 +0,0 @@
1
- import { Field, InputType, Int, ObjectType } from 'type-graphql'
2
-
3
- import { ObjectRef } from '@things-factory/shell'
4
-
5
- import { OrderProductPatch } from '../order-product/order-product-types'
6
- import { DraftReleaseGood } from './draft-release-good'
7
-
8
- @InputType()
9
- export class NewDraftReleaseGood {
10
- @Field({ nullable: true })
11
- name: string
12
-
13
- @Field({ nullable: true })
14
- releaseDate: string
15
-
16
- @Field({ nullable: true })
17
- type: string
18
-
19
- @Field({ nullable: true })
20
- collectionOrderNo: string
21
-
22
- @Field({ nullable: true })
23
- ownTransport: Boolean
24
-
25
- @Field({ nullable: true })
26
- courierOption: Boolean
27
-
28
- @Field({ nullable: true })
29
- packingOption: Boolean
30
-
31
- @Field({ nullable: true })
32
- packageId: string
33
-
34
- @Field({ nullable: true })
35
- truckNo: string
36
-
37
- @Field({ nullable: true })
38
- refNo: string
39
-
40
- @Field({ nullable: true })
41
- refNo2: string
42
-
43
- @Field({ nullable: true })
44
- refNo3: string
45
-
46
- @Field({ nullable: true })
47
- pickupAddress: string
48
-
49
- @Field({ nullable: true })
50
- pickupTime: string
51
-
52
- @Field({ nullable: true })
53
- handoverType: string
54
-
55
- @Field({ nullable: true })
56
- dropoffAddress: string
57
-
58
- @Field({ nullable: true })
59
- marketplaceOrderStatus: string
60
-
61
- @Field({ nullable: true })
62
- billingAddress: string
63
-
64
- @Field({ nullable: true })
65
- deliveryAddress1: string
66
-
67
- @Field({ nullable: true })
68
- deliveryAddress2: string
69
-
70
- @Field({ nullable: true })
71
- deliveryAddress3: string
72
-
73
- @Field({ nullable: true })
74
- deliveryAddress4: string
75
-
76
- @Field({ nullable: true })
77
- deliveryAddress5: string
78
-
79
- @Field({ nullable: true })
80
- attentionTo: string
81
-
82
- @Field({ nullable: true })
83
- attentionCompany: string
84
-
85
- @Field({ nullable: true })
86
- city: string
87
-
88
- @Field({ nullable: true })
89
- state: string
90
-
91
- @Field({ nullable: true })
92
- postalCode: string
93
-
94
- @Field({ nullable: true })
95
- country: string
96
-
97
- @Field({ nullable: true })
98
- phone1: string
99
-
100
- @Field({ nullable: true })
101
- phone2: string
102
-
103
- @Field({ nullable: true })
104
- email: string
105
-
106
- @Field()
107
- exportOption: Boolean
108
-
109
- @Field({ nullable: true })
110
- status: string
111
-
112
- @Field({ nullable: true })
113
- description: string
114
-
115
- @Field({ nullable: true })
116
- deliverTo: string
117
-
118
- @Field(type => ObjectRef, { nullable: true })
119
- bizplace: ObjectRef
120
-
121
- @Field({ nullable: true })
122
- remark: string
123
-
124
- @Field(type => [ObjectRef], { nullable: true })
125
- orderProducts: ObjectRef[]
126
- }
127
-
128
- @InputType()
129
- export class DraftReleaseGoodPatch {
130
- @Field({ nullable: true })
131
- id: string
132
-
133
- @Field({ nullable: true })
134
- name: string
135
-
136
- @Field(type => ObjectRef, { nullable: true })
137
- bizplace: ObjectRef
138
-
139
- @Field({ nullable: true })
140
- releaseDate: string
141
-
142
- @Field({ nullable: true })
143
- collectionOrderNo: string
144
-
145
- @Field({ nullable: true })
146
- ownTransport: Boolean
147
-
148
- @Field({ nullable: true })
149
- type: string
150
-
151
- @Field({ nullable: true })
152
- truckNo: string
153
-
154
- @Field({ nullable: true })
155
- packageId: string
156
-
157
- @Field({ nullable: true })
158
- refNo: string
159
-
160
- @Field({ nullable: true })
161
- refNo2: string
162
-
163
- @Field({ nullable: true })
164
- refNo3: string
165
-
166
- @Field({ nullable: true })
167
- exportOption: Boolean
168
-
169
- @Field({ nullable: true })
170
- packingOption: Boolean
171
-
172
- @Field(type => ObjectRef, { nullable: true })
173
- shippingOrder: ObjectRef
174
-
175
- @Field({ nullable: true })
176
- status: string
177
-
178
- @Field({ nullable: true })
179
- remark: string
180
-
181
- @Field({ nullable: true })
182
- billingAddress: string
183
-
184
- @Field({ nullable: true })
185
- deliveryAddress1: string
186
-
187
- @Field({ nullable: true })
188
- deliveryAddress2: string
189
-
190
- @Field({ nullable: true })
191
- deliveryAddress3: string
192
-
193
- @Field({ nullable: true })
194
- deliveryAddress4: string
195
-
196
- @Field({ nullable: true })
197
- deliveryAddress5: string
198
-
199
- @Field({ nullable: true })
200
- attentionTo: string
201
-
202
- @Field({ nullable: true })
203
- attentionCompany: string
204
-
205
- @Field({ nullable: true })
206
- city: string
207
-
208
- @Field({ nullable: true })
209
- state: string
210
-
211
- @Field({ nullable: true })
212
- postalCode: string
213
-
214
- @Field({ nullable: true })
215
- country: string
216
-
217
- @Field({ nullable: true })
218
- phone1: string
219
-
220
- @Field({ nullable: true })
221
- phone2: string
222
-
223
- @Field({ nullable: true })
224
- email: string
225
-
226
- @Field({ nullable: true })
227
- description: string
228
-
229
- @Field({ nullable: true })
230
- courierOption: Boolean
231
-
232
- @Field({ nullable: true })
233
- pickupAddress: string
234
-
235
- @Field({ nullable: true })
236
- pickupTime: string
237
-
238
- @Field({ nullable: true })
239
- handoverType: string
240
-
241
- @Field({ nullable: true })
242
- dropoffAddress: string
243
-
244
- @Field({ nullable: true })
245
- marketplaceOrderStatus: string
246
-
247
- @Field({ nullable: true })
248
- deliverTo: string
249
-
250
- @Field(type => [OrderProductPatch], { nullable: true })
251
- orderProducts: OrderProductPatch[]
252
- }
253
-
254
- @ObjectType()
255
- export class DraftReleaseGoodList {
256
- @Field(type => [DraftReleaseGood])
257
- items: DraftReleaseGood[]
258
-
259
- @Field(type => Int)
260
- total: number
261
- }