@things-factory/sales-base 4.3.639 → 4.3.643

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 (64) hide show
  1. package/dist-server/service/arrival-notice/arrival-notice-mutation.js +33 -2
  2. package/dist-server/service/arrival-notice/arrival-notice-mutation.js.map +1 -1
  3. package/dist-server/service/arrival-notice/arrival-notice-query.js +10 -3
  4. package/dist-server/service/arrival-notice/arrival-notice-query.js.map +1 -1
  5. package/dist-server/service/arrival-notice/arrival-notice-types.js +2 -2
  6. package/dist-server/service/arrival-notice/arrival-notice-types.js.map +1 -1
  7. package/dist-server/service/draft-release-good/draft-release-good-query.js +32 -26
  8. package/dist-server/service/draft-release-good/draft-release-good-query.js.map +1 -1
  9. package/dist-server/service/inventory-check-item/inventory-check-item-types.js +48 -12
  10. package/dist-server/service/inventory-check-item/inventory-check-item-types.js.map +1 -1
  11. package/dist-server/service/inventory-check-item/inventory-check-item.js +56 -4
  12. package/dist-server/service/inventory-check-item/inventory-check-item.js.map +1 -1
  13. package/dist-server/service/order-inventory/order-inventory-query.js +5 -1
  14. package/dist-server/service/order-inventory/order-inventory-query.js.map +1 -1
  15. package/dist-server/service/order-inventory/order-inventory-types.js +12 -12
  16. package/dist-server/service/order-inventory/order-inventory-types.js.map +1 -1
  17. package/dist-server/service/order-inventory/order-inventory.js +189 -13
  18. package/dist-server/service/order-inventory/order-inventory.js.map +1 -1
  19. package/dist-server/service/order-package-item/order-package-item-types.js +14 -2
  20. package/dist-server/service/order-package-item/order-package-item-types.js.map +1 -1
  21. package/dist-server/service/order-package-item/order-package-item.js +28 -2
  22. package/dist-server/service/order-package-item/order-package-item.js.map +1 -1
  23. package/dist-server/service/order-product/order-product-types.js +18 -18
  24. package/dist-server/service/order-product/order-product-types.js.map +1 -1
  25. package/dist-server/service/order-product/order-product.js +104 -13
  26. package/dist-server/service/order-product/order-product.js.map +1 -1
  27. package/dist-server/service/order-tote-item/order-tote-item-types.js +2 -2
  28. package/dist-server/service/order-tote-item/order-tote-item-types.js.map +1 -1
  29. package/dist-server/service/order-tote-item/order-tote-item.js +15 -1
  30. package/dist-server/service/order-tote-item/order-tote-item.js.map +1 -1
  31. package/dist-server/service/others/other-query.js +4 -4
  32. package/dist-server/service/others/other-query.js.map +1 -1
  33. package/dist-server/service/others/other-types.js +8 -4
  34. package/dist-server/service/others/other-types.js.map +1 -1
  35. package/dist-server/service/release-good/release-good-mutation.js +35 -6
  36. package/dist-server/service/release-good/release-good-mutation.js.map +1 -1
  37. package/dist-server/service/release-good/release-good-query.js +23 -11
  38. package/dist-server/service/release-good/release-good-query.js.map +1 -1
  39. package/dist-server/service/release-good/release-good-types.js +1 -1
  40. package/dist-server/service/release-good/release-good-types.js.map +1 -1
  41. package/dist-server/utils/inventory-util.js +18 -14
  42. package/dist-server/utils/inventory-util.js.map +1 -1
  43. package/package.json +8 -8
  44. package/server/service/arrival-notice/arrival-notice-mutation.ts +39 -2
  45. package/server/service/arrival-notice/arrival-notice-query.ts +40 -68
  46. package/server/service/arrival-notice/arrival-notice-types.ts +4 -4
  47. package/server/service/draft-release-good/draft-release-good-query.ts +49 -42
  48. package/server/service/inventory-check-item/inventory-check-item-types.ts +37 -10
  49. package/server/service/inventory-check-item/inventory-check-item.ts +52 -4
  50. package/server/service/order-inventory/order-inventory-query.ts +5 -0
  51. package/server/service/order-inventory/order-inventory-types.ts +12 -12
  52. package/server/service/order-inventory/order-inventory.ts +171 -13
  53. package/server/service/order-package-item/order-package-item-types.ts +12 -3
  54. package/server/service/order-package-item/order-package-item.ts +26 -2
  55. package/server/service/order-product/order-product-types.ts +18 -18
  56. package/server/service/order-product/order-product.ts +96 -12
  57. package/server/service/order-tote-item/order-tote-item-types.ts +3 -3
  58. package/server/service/order-tote-item/order-tote-item.ts +14 -1
  59. package/server/service/others/other-query.ts +8 -8
  60. package/server/service/others/other-types.ts +7 -4
  61. package/server/service/release-good/release-good-mutation.ts +51 -9
  62. package/server/service/release-good/release-good-query.ts +30 -14
  63. package/server/service/release-good/release-good-types.ts +1 -1
  64. package/server/utils/inventory-util.ts +50 -60
@@ -48,11 +48,11 @@ export class DraftReleaseGoodQuery {
48
48
  const skuFilter = params.filters.find(param => param.name === 'sku')
49
49
  const orderFilter = params.filters.find(param => param.name === 'name')
50
50
  const priorityDeliveryFilter = params.filters.find(param => param.name === 'priorityDelivery')
51
- const fromDateParam = new Date (params.filters.find(param => param.name === 'fromDate').value)
51
+ const fromDateParam = new Date(params.filters.find(param => param.name === 'fromDate').value)
52
52
  const toDateParam = new Date(params.filters.find(param => param.name === 'toDate').value)
53
53
 
54
54
  const fromDateFilter = fromDateParam.toISOString()
55
- const toDateFilter = new Date(toDateParam.setDate(toDateParam.getDate() + 1)).toISOString()
55
+ const toDateFilter = new Date(toDateParam.setDate(toDateParam.getDate() + 1)).toISOString()
56
56
 
57
57
  let bizplaceIds = []
58
58
  if (!bizplaceFilter) {
@@ -68,13 +68,16 @@ export class DraftReleaseGoodQuery {
68
68
  .filter(res => res !== '%')
69
69
  .join('')
70
70
 
71
- products = "{" + removeSymbol
72
- .toLowerCase()
73
- .split(',')
74
- .map(prod => {
75
- return '"%' + prod.trim().replace(/'/g, "''") + '%"'
76
- })
77
- .join(',') + "}"
71
+ products =
72
+ '{' +
73
+ removeSymbol
74
+ .toLowerCase()
75
+ .split(',')
76
+ .map(prod => {
77
+ return '"%' + prod.trim().replace(/'/g, "''") + '%"'
78
+ })
79
+ .join(',') +
80
+ '}'
78
81
  }
79
82
 
80
83
  let orderInfos
@@ -84,30 +87,34 @@ export class DraftReleaseGoodQuery {
84
87
  .filter(res => res !== '%')
85
88
  .join('')
86
89
 
87
- orderInfos = "{" + removeSymbol
88
- .toLowerCase()
89
- .split(',')
90
- .map(prod => {
91
- return '"%' + prod.trim().replace(/'/g, "''") + '%"'
92
- })
93
- .join(',') + "}"
90
+ orderInfos =
91
+ '{' +
92
+ removeSymbol
93
+ .toLowerCase()
94
+ .split(',')
95
+ .map(prod => {
96
+ return '"%' + prod.trim().replace(/'/g, "''") + '%"'
97
+ })
98
+ .join(',') +
99
+ '}'
94
100
  }
95
101
 
96
102
  const arrChildSortData = ['bizplace', 'creator']
97
- const camelToSnakeCase = (str) => str.replace(/[A-Z]/g, letter => `_${letter.toLowerCase()}`);
98
- const handleOrderBy = (params) => {
103
+ const camelToSnakeCase = str => str.replace(/[A-Z]/g, letter => `_${letter.toLowerCase()}`)
104
+ const handleOrderBy = params => {
99
105
  if (!params.sortings || params.sortings.length === 0) {
100
- return 'rank ASC, drg.created_at DESC';
106
+ return 'rank ASC, drg.created_at DESC'
101
107
  }
102
-
103
- return params.sortings.map(sort => {
104
- const field = arrChildSortData.indexOf(sort.name) >= 0
105
- ? `${sort.name}.name`
106
- : `drg.${camelToSnakeCase(sort.name)}`;
107
- const direction = sort.desc ? 'DESC' : 'ASC';
108
- return `${field} ${direction}`;
109
- }).join(', ');
110
- };
108
+
109
+ return params.sortings
110
+ .map(sort => {
111
+ const field =
112
+ arrChildSortData.indexOf(sort.name) >= 0 ? `${sort.name}.name` : `drg.${camelToSnakeCase(sort.name)}`
113
+ const direction = sort.desc ? 'DESC' : 'ASC'
114
+ return `${field} ${direction}`
115
+ })
116
+ .join(', ')
117
+ }
111
118
 
112
119
  const sort = handleOrderBy(params)
113
120
 
@@ -127,7 +134,7 @@ export class DraftReleaseGoodQuery {
127
134
  sort,
128
135
  params.pagination?.limit || 50
129
136
  ]
130
- );
137
+ )
131
138
 
132
139
  let newPlatformCode
133
140
  let uniqueItems = await removeDuplicates(items)
@@ -182,7 +189,7 @@ export class DraftReleaseGoodQuery {
182
189
  }
183
190
  })
184
191
 
185
- let total = (await tx.query(
192
+ let total = await tx.query(
186
193
  `SELECT COUNT(*) FROM get_draft_release_goods($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12)`,
187
194
  [
188
195
  domain.id,
@@ -198,7 +205,7 @@ export class DraftReleaseGoodQuery {
198
205
  sort,
199
206
  null
200
207
  ]
201
- ))
208
+ )
202
209
  total = total[0].count
203
210
  return { items, settingValue, total }
204
211
  } catch (error) {
@@ -314,7 +321,7 @@ export async function getDraftReleaseGoodFunction(_: any, context: any, id?: any
314
321
  status:
315
322
  itm.status === DRAFT_RELEASE_ORDER_STATUS.PARTIAL_RELEASED
316
323
  ? DRAFT_RELEASE_ORDER_STATUS.PARTIAL_RELEASED
317
- : foundProductInv?.transferQty
324
+ : foundProductInv?.transferQty > 0
318
325
  ? DRAFT_RELEASE_ORDER_STATUS.TRANSFER
319
326
  : (foundProductInv?.remainQty || 0) < itm.releaseQty
320
327
  ? DRAFT_RELEASE_ORDER_STATUS.INSUFFICIENT
@@ -356,16 +363,16 @@ export async function getDraftReleaseGoodFunction(_: any, context: any, id?: any
356
363
  })
357
364
  .flat()
358
365
 
359
- // sort by status
360
- result.orderProducts.sort((a, b) => {
361
- const statusOrder = {
362
- 'DRAFT': 1,
363
- 'PARTIAL RELEASED': 2,
364
- 'INSUFFICIENT': 3,
365
- }
366
-
367
- return statusOrder[a.status] - statusOrder[b.status];
368
- })
366
+ // sort by status
367
+ result.orderProducts.sort((a, b) => {
368
+ const statusOrder = {
369
+ DRAFT: 1,
370
+ 'PARTIAL RELEASED': 2,
371
+ INSUFFICIENT: 3
372
+ }
373
+
374
+ return statusOrder[a.status] - statusOrder[b.status]
375
+ })
369
376
 
370
377
  const foundAttachments: Attachment[] = await tx.getRepository(Attachment).find({
371
378
  where: {
@@ -19,7 +19,22 @@ export class NewInventoryCheckItem {
19
19
  name: string
20
20
 
21
21
  @Field({ nullable: true })
22
- status: string
22
+ countNo?: number
23
+
24
+ @Field(type => Float, { nullable: true })
25
+ originQty?: number
26
+
27
+ @Field(type => Float, { nullable: true })
28
+ inspectedQty?: number
29
+
30
+ @Field(type => Float, { nullable: true })
31
+ originUomValue?: number
32
+
33
+ @Field(type => Float, { nullable: true })
34
+ inspectedUomValue?: number
35
+
36
+ @Field({ nullable: true })
37
+ status?: string
23
38
 
24
39
  @Field(type => InventoryPatch, { nullable: true })
25
40
  inventory: InventoryPatch
@@ -42,6 +57,27 @@ export class InventoryCheckItemPatch {
42
57
  @Field({ nullable: true })
43
58
  name: string
44
59
 
60
+ @Field({ nullable: true })
61
+ countNo?: number
62
+
63
+ @Field(type => Float, { nullable: true })
64
+ originQty?: number
65
+
66
+ @Field(type => Float, { nullable: true })
67
+ inspectedQty?: number
68
+
69
+ @Field(type => Float, { nullable: true })
70
+ originUomValue?: number
71
+
72
+ @Field(type => Float, { nullable: true })
73
+ inspectedUomValue?: number
74
+
75
+ @Field({ nullable: true })
76
+ status: string
77
+
78
+ @Field({ nullable: true })
79
+ cuFlag: string
80
+
45
81
  @Field(type => ObjectRef, { nullable: true })
46
82
  inventory: ObjectRef
47
83
 
@@ -51,12 +87,6 @@ export class InventoryCheckItemPatch {
51
87
  @Field({ nullable: true })
52
88
  batchIdRef: string
53
89
 
54
- @Field(type => Int, { nullable: true })
55
- inspectedQty: number
56
-
57
- @Field(type => Float, { nullable: true })
58
- inspectedUomValue: number
59
-
60
90
  @Field(type => ObjectRef, { nullable: true })
61
91
  inspectedLocation: ObjectRef
62
92
 
@@ -71,7 +101,4 @@ export class InventoryCheckItemPatch {
71
101
 
72
102
  @Field({ nullable: true })
73
103
  productDetailId: string
74
-
75
- @Field({ nullable: true })
76
- status: string
77
104
  }
@@ -64,19 +64,67 @@ export class InventoryCheckItem {
64
64
  @Field({ nullable: true })
65
65
  countNo: number
66
66
 
67
- @Column({ nullable: true })
67
+ @Column({
68
+ type: 'decimal',
69
+ scale: 3,
70
+ nullable: true,
71
+ transformer: {
72
+ to: (value: string | null) => value,
73
+ from: (value: string | null) => {
74
+ if (value === null || value === undefined) return null
75
+ const parsed = parseFloat(value)
76
+ return isNaN(parsed) ? null : parsed
77
+ }
78
+ }
79
+ })
68
80
  @Field({ nullable: true })
69
81
  originQty: number
70
82
 
71
- @Column({ nullable: true })
83
+ @Column({
84
+ type: 'decimal',
85
+ scale: 3,
86
+ nullable: true,
87
+ transformer: {
88
+ to: (value: string | null) => value,
89
+ from: (value: string | null) => {
90
+ if (value === null || value === undefined) return null
91
+ const parsed = parseFloat(value)
92
+ return isNaN(parsed) ? null : parsed
93
+ }
94
+ }
95
+ })
72
96
  @Field({ nullable: true })
73
97
  inspectedQty: number
74
98
 
75
- @Column({ nullable: true, type: 'float' })
99
+ @Column({
100
+ type: 'decimal',
101
+ scale: 3,
102
+ nullable: true,
103
+ transformer: {
104
+ to: (value: string | null) => value,
105
+ from: (value: string | null) => {
106
+ if (value === null || value === undefined) return null
107
+ const parsed = parseFloat(value)
108
+ return isNaN(parsed) ? null : parsed
109
+ }
110
+ }
111
+ })
76
112
  @Field({ nullable: true })
77
113
  originUomValue: number
78
114
 
79
- @Column({ nullable: true, type: 'float' })
115
+ @Column({
116
+ type: 'decimal',
117
+ scale: 3,
118
+ nullable: true,
119
+ transformer: {
120
+ to: (value: string | null) => value,
121
+ from: (value: string | null) => {
122
+ if (value === null || value === undefined) return null
123
+ const parsed = parseFloat(value)
124
+ return isNaN(parsed) ? null : parsed
125
+ }
126
+ }
127
+ })
80
128
  @Field({ nullable: true })
81
129
  inspectedUomValue: number
82
130
 
@@ -294,8 +294,12 @@ export class OrderInventoryQuery {
294
294
  value: releaseGood.id,
295
295
  relation: true
296
296
  })
297
+ } else {
298
+ // If no matching release good is found, return empty result
299
+ return { items: [], total: 0 }
297
300
  }
298
301
  }
302
+
299
303
  const qb: SelectQueryBuilder<OrderInventory> = getRepository(OrderInventory).createQueryBuilder('oi')
300
304
  buildQuery(qb, params, context)
301
305
 
@@ -327,6 +331,7 @@ export class OrderInventoryQuery {
327
331
  productName: item.inventory.product.name,
328
332
  productSKU: item.inventory.product.sku,
329
333
  productBrand: item.inventory.product.brand,
334
+ isInventoryDecimal: item.inventory.product.isInventoryDecimal,
330
335
  packingSize: item.inventory.packingSize
331
336
  }
332
337
  })
@@ -68,16 +68,16 @@ export class NewOrderInventory {
68
68
  @Field({ nullable: true })
69
69
  releaseOrderId: string
70
70
 
71
- @Field(type => Int, { nullable: true })
71
+ @Field(type => Float, { nullable: true })
72
72
  releaseQty: number
73
73
 
74
- @Field(type => Int, { nullable: true })
74
+ @Field(type => Float, { nullable: true })
75
75
  pickedQty: number
76
76
 
77
- @Field(type => Int, { nullable: true })
77
+ @Field(type => Float, { nullable: true })
78
78
  sortedQty: number
79
79
 
80
- @Field(type => Int, { nullable: true })
80
+ @Field(type => Float, { nullable: true })
81
81
  packedQty: number
82
82
 
83
83
  @Field(type => Float, { nullable: true })
@@ -104,13 +104,13 @@ export class NewOrderInventory {
104
104
  @Field({ nullable: true })
105
105
  existingRow: boolean
106
106
 
107
- @Field(type => Int, { nullable: true })
107
+ @Field(type => Float, { nullable: true })
108
108
  returnQty: number
109
109
 
110
110
  @Field(type => Float, { nullable: true })
111
111
  returnUomValue: number
112
112
 
113
- @Field(type => Int, { nullable: true })
113
+ @Field(type => Float, { nullable: true })
114
114
  returnToLocationQty: number
115
115
 
116
116
  @Field(type => Float, { nullable: true })
@@ -146,7 +146,7 @@ export class OrderInventoryPatch {
146
146
  @Field(type => ObjectRef, { nullable: true })
147
147
  inventory: ObjectRef
148
148
 
149
- @Field(type => Int, { nullable: true })
149
+ @Field(type => Float, { nullable: true })
150
150
  inspectedQty: number
151
151
 
152
152
  @Field(type => Float, { nullable: true })
@@ -188,19 +188,19 @@ export class OrderInventoryPatch {
188
188
  @Field({ nullable: true })
189
189
  extraJsonData: string
190
190
 
191
- @Field(type => Int, { nullable: true })
191
+ @Field(type => Float, { nullable: true })
192
192
  releaseQty: number
193
193
 
194
194
  @Field({ nullable: true })
195
195
  serialNumber: string
196
196
 
197
- @Field(type => Int, { nullable: true })
197
+ @Field(type => Float, { nullable: true })
198
198
  sortedQty: number
199
199
 
200
- @Field(type => Int, { nullable: true })
200
+ @Field(type => Float, { nullable: true })
201
201
  pickedQty: number
202
202
 
203
- @Field(type => Int, { nullable: true })
203
+ @Field(type => Float, { nullable: true })
204
204
  packedQty: number
205
205
 
206
206
  @Field({ nullable: true })
@@ -221,7 +221,7 @@ export class OrderInventoryPatch {
221
221
  @Field(type => Float, { nullable: true })
222
222
  returnUomValue: number
223
223
 
224
- @Field(type => Int, { nullable: true })
224
+ @Field(type => Float, { nullable: true })
225
225
  actualPackQty: number
226
226
 
227
227
  @Field(type => Int, { nullable: true })
@@ -153,7 +153,18 @@ export class OrderInventory {
153
153
  @Field(type => User, { nullable: true })
154
154
  putawayBy: User
155
155
 
156
- @Column({ nullable: true, type: 'float' })
156
+ @Column({
157
+ nullable: true,
158
+ type: 'decimal',
159
+ scale: 3,
160
+ transformer: {
161
+ to: (value: string | null) => value,
162
+ from: (value: string | null) => {
163
+ if (value === null || value === undefined) return null
164
+ const parsed = parseFloat(value)
165
+ return isNaN(parsed) ? null : parsed
166
+ }
167
+ } })
157
168
  @Field({ nullable: true })
158
169
  actualPackUomValue: number
159
170
 
@@ -229,7 +240,18 @@ export class OrderInventory {
229
240
  @Field({ nullable: true })
230
241
  originQty: number
231
242
 
232
- @Column({ nullable: true })
243
+ @Column({
244
+ nullable: true,
245
+ type: 'decimal',
246
+ scale: 3,
247
+ transformer: {
248
+ to: (value: string | null) => value,
249
+ from: (value: string | null) => {
250
+ if (value === null || value === undefined) return null
251
+ const parsed = parseFloat(value)
252
+ return isNaN(parsed) ? null : parsed
253
+ }
254
+ } })
233
255
  @Field({ nullable: true })
234
256
  inspectedQty: number
235
257
 
@@ -237,7 +259,18 @@ export class OrderInventory {
237
259
  @Field({ nullable: true })
238
260
  originUomValue: number
239
261
 
240
- @Column({ nullable: true, type: 'float' })
262
+ @Column({
263
+ nullable: true,
264
+ type: 'decimal',
265
+ scale: 3,
266
+ transformer: {
267
+ to: (value: string | null) => value,
268
+ from: (value: string | null) => {
269
+ if (value === null || value === undefined) return null
270
+ const parsed = parseFloat(value)
271
+ return isNaN(parsed) ? null : parsed
272
+ }
273
+ } })
241
274
  @Field({ nullable: true })
242
275
  inspectedUomValue: number
243
276
 
@@ -270,23 +303,86 @@ export class OrderInventory {
270
303
  @RelationId((orderInventory: OrderInventory) => orderInventory.binLocation)
271
304
  binLocationId: string
272
305
 
273
- @Column({ nullable: true, type: 'float' })
306
+ @Column({
307
+ nullable: true,
308
+ type: 'decimal',
309
+ scale: 3,
310
+ transformer: {
311
+ to: (value: string | null) => value,
312
+ from: (value: string | null) => {
313
+ if (value === null || value === undefined) return null
314
+ const parsed = parseFloat(value)
315
+ return isNaN(parsed) ? null : parsed
316
+ }
317
+ }
318
+ })
274
319
  @Field({ nullable: true })
275
320
  releaseQty: number
276
321
 
277
- @Column({ nullable: true, type: 'float', default: 0 })
322
+ @Column({
323
+ nullable: true,
324
+ type: 'decimal',
325
+ scale: 3,
326
+ default: 0,
327
+ transformer: {
328
+ to: (value: string | null) => value,
329
+ from: (value: string | null) => {
330
+ if (value === null || value === undefined) return null
331
+ const parsed = parseFloat(value)
332
+ return isNaN(parsed) ? null : parsed
333
+ }
334
+ }
335
+ })
278
336
  @Field({ nullable: true })
279
337
  pickedQty: number
280
338
 
281
- @Column({ nullable: true, type: 'float', default: 0 })
339
+ @Column({
340
+ nullable: true,
341
+ type: 'decimal',
342
+ scale: 3,
343
+ default: 0,
344
+ transformer: {
345
+ to: (value: string | null) => value,
346
+ from: (value: string | null) => {
347
+ if (value === null || value === undefined) return null
348
+ const parsed = parseFloat(value)
349
+ return isNaN(parsed) ? null : parsed
350
+ }
351
+ }
352
+ })
282
353
  @Field({ nullable: true })
283
354
  packedQty: number
284
355
 
285
- @Column({ nullable: true, type: 'float', default: 0 })
356
+ @Column({
357
+ nullable: true,
358
+ type: 'decimal',
359
+ scale: 3,
360
+ default: 0,
361
+ transformer: {
362
+ to: (value: string | null) => value,
363
+ from: (value: string | null) => {
364
+ if (value === null || value === undefined) return null
365
+ const parsed = parseFloat(value)
366
+ return isNaN(parsed) ? null : parsed
367
+ }
368
+ }
369
+ })
286
370
  @Field({ nullable: true })
287
371
  sortedQty: number
288
372
 
289
- @Column({ nullable: true, type: 'float' })
373
+ @Column({
374
+ nullable: true,
375
+ type: 'decimal',
376
+ scale: 3,
377
+ transformer: {
378
+ to: (value: string | null) => value,
379
+ from: (value: string | null) => {
380
+ if (value === null || value === undefined) return null
381
+ const parsed = parseFloat(value)
382
+ return isNaN(parsed) ? null : parsed
383
+ }
384
+ }
385
+ })
290
386
  @Field({ nullable: true })
291
387
  releaseUomValue: number
292
388
 
@@ -294,23 +390,82 @@ export class OrderInventory {
294
390
  @Field({ nullable: true })
295
391
  uom: string
296
392
 
297
- @Column({ nullable: true, type: 'float' })
393
+ @Column({
394
+ nullable: true,
395
+ type: 'decimal',
396
+ scale: 3,
397
+ transformer: {
398
+ to: (value: string | null) => value,
399
+ from: (value: string | null) => {
400
+ if (value === null || value === undefined) return null
401
+ const parsed = parseFloat(value)
402
+ return isNaN(parsed) ? null : parsed
403
+ }
404
+ }
405
+ })
298
406
  @Field({ nullable: true })
299
407
  returnQty: number
300
408
 
301
- @Column({ nullable: true, type: 'float' })
409
+ @Column({
410
+ nullable: true,
411
+ type: 'decimal',
412
+ scale: 3,
413
+ transformer: {
414
+ to: (value: string | null) => value,
415
+ from: (value: string | null) => {
416
+ if (value === null || value === undefined) return null
417
+ const parsed = parseFloat(value)
418
+ return isNaN(parsed) ? null : parsed
419
+ }
420
+ }
421
+ })
302
422
  @Field({ nullable: true })
303
423
  returnUomValue: number
304
424
 
305
- @Column({ nullable: true, type: 'float' })
425
+ @Column({
426
+ nullable: true,
427
+ type: 'decimal',
428
+ scale: 3,
429
+ transformer: {
430
+ to: (value: string | null) => value,
431
+ from: (value: string | null) => {
432
+ if (value === null || value === undefined) return null
433
+ const parsed = parseFloat(value)
434
+ return isNaN(parsed) ? null : parsed
435
+ }
436
+ }
437
+ })
306
438
  @Field({ nullable: true })
307
439
  returnToLocationQty: number
308
440
 
309
- @Column({ nullable: true, type: 'float' })
441
+ @Column({
442
+ nullable: true,
443
+ type: 'decimal',
444
+ scale: 3,
445
+ transformer: {
446
+ to: (value: string | null) => value,
447
+ from: (value: string | null) => {
448
+ if (value === null || value === undefined) return null
449
+ const parsed = parseFloat(value)
450
+ return isNaN(parsed) ? null : parsed
451
+ }
452
+ }
453
+ })
310
454
  @Field({ nullable: true })
311
455
  returnToLocationUomValue: number
312
456
 
313
- @Column({ nullable: true })
457
+ @Column({
458
+ nullable: true,
459
+ type: 'decimal',
460
+ scale: 3,
461
+ transformer: {
462
+ to: (value: string | null) => value,
463
+ from: (value: string | null) => {
464
+ if (value === null || value === undefined) return null
465
+ const parsed = parseFloat(value)
466
+ return isNaN(parsed) ? null : parsed
467
+ }
468
+ } })
314
469
  @Field({ nullable: true })
315
470
  actualPackQty: number
316
471
 
@@ -490,6 +645,9 @@ export class OrderInventory {
490
645
  @Field({ nullable: true })
491
646
  pickingBin: string
492
647
 
648
+ @Field({ nullable: true })
649
+ isInventoryDecimal: boolean
650
+
493
651
  @Field(type => [ProductDetail], { nullable: true })
494
652
  productDetails: ProductDetail[]
495
653
  }
@@ -1,4 +1,4 @@
1
- import { Field, ID, InputType, Int, ObjectType } from 'type-graphql'
1
+ import { Field, Float, ID, InputType, Int, ObjectType } from 'type-graphql'
2
2
 
3
3
  import { OrderPackageItem } from './order-package-item'
4
4
 
@@ -9,6 +9,12 @@ export class NewOrderPackageItem {
9
9
 
10
10
  @Field({ nullable: true })
11
11
  status?: string
12
+
13
+ @Field(type => Float, { nullable: true })
14
+ releaseQty?: number
15
+
16
+ @Field(type => Float, { nullable: true })
17
+ packedQty?: number
12
18
  }
13
19
 
14
20
  @InputType()
@@ -19,9 +25,12 @@ export class OrderPackageItemPatch {
19
25
  @Field({ nullable: true })
20
26
  name?: string
21
27
 
22
- @Field({ nullable: true })
28
+ @Field(type => Float, { nullable: true })
23
29
  releaseQty?: number
24
30
 
31
+ @Field(type => Float, { nullable: true })
32
+ packedQty?: number
33
+
25
34
  @Field({ nullable: true })
26
35
  status?: string
27
36
 
@@ -46,6 +55,6 @@ export class TrackingInformation {
46
55
  @Field(type => String)
47
56
  sku: string
48
57
 
49
- @Field(type => String)
58
+ @Field(type => Float)
50
59
  releaseQty: number
51
60
  }