@things-factory/sales-base 4.3.637 → 4.3.638

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 (58) hide show
  1. package/dist-server/service/arrival-notice/arrival-notice-mutation.js +3 -34
  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 +3 -10
  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/inventory-check-item/inventory-check-item-types.js +12 -48
  8. package/dist-server/service/inventory-check-item/inventory-check-item-types.js.map +1 -1
  9. package/dist-server/service/inventory-check-item/inventory-check-item.js +4 -56
  10. package/dist-server/service/inventory-check-item/inventory-check-item.js.map +1 -1
  11. package/dist-server/service/order-inventory/order-inventory-query.js +1 -5
  12. package/dist-server/service/order-inventory/order-inventory-query.js.map +1 -1
  13. package/dist-server/service/order-inventory/order-inventory-types.js +12 -12
  14. package/dist-server/service/order-inventory/order-inventory-types.js.map +1 -1
  15. package/dist-server/service/order-inventory/order-inventory.js +13 -189
  16. package/dist-server/service/order-inventory/order-inventory.js.map +1 -1
  17. package/dist-server/service/order-package-item/order-package-item-types.js +2 -14
  18. package/dist-server/service/order-package-item/order-package-item-types.js.map +1 -1
  19. package/dist-server/service/order-package-item/order-package-item.js +2 -28
  20. package/dist-server/service/order-package-item/order-package-item.js.map +1 -1
  21. package/dist-server/service/order-product/order-product-types.js +18 -18
  22. package/dist-server/service/order-product/order-product-types.js.map +1 -1
  23. package/dist-server/service/order-product/order-product.js +13 -104
  24. package/dist-server/service/order-product/order-product.js.map +1 -1
  25. package/dist-server/service/order-tote-item/order-tote-item-types.js +2 -2
  26. package/dist-server/service/order-tote-item/order-tote-item-types.js.map +1 -1
  27. package/dist-server/service/order-tote-item/order-tote-item.js +1 -13
  28. package/dist-server/service/order-tote-item/order-tote-item.js.map +1 -1
  29. package/dist-server/service/others/other-types.js +0 -4
  30. package/dist-server/service/others/other-types.js.map +1 -1
  31. package/dist-server/service/release-good/release-good-mutation.js +6 -35
  32. package/dist-server/service/release-good/release-good-mutation.js.map +1 -1
  33. package/dist-server/service/release-good/release-good-query.js +19 -24
  34. package/dist-server/service/release-good/release-good-query.js.map +1 -1
  35. package/dist-server/service/release-good/release-good-types.js +1 -1
  36. package/dist-server/service/release-good/release-good-types.js.map +1 -1
  37. package/dist-server/utils/inventory-util.js +8 -12
  38. package/dist-server/utils/inventory-util.js.map +1 -1
  39. package/package.json +7 -7
  40. package/server/service/arrival-notice/arrival-notice-mutation.ts +3 -40
  41. package/server/service/arrival-notice/arrival-notice-query.ts +68 -40
  42. package/server/service/arrival-notice/arrival-notice-types.ts +4 -4
  43. package/server/service/inventory-check-item/inventory-check-item-types.ts +10 -37
  44. package/server/service/inventory-check-item/inventory-check-item.ts +4 -52
  45. package/server/service/order-inventory/order-inventory-query.ts +0 -5
  46. package/server/service/order-inventory/order-inventory-types.ts +12 -12
  47. package/server/service/order-inventory/order-inventory.ts +13 -171
  48. package/server/service/order-package-item/order-package-item-types.ts +3 -12
  49. package/server/service/order-package-item/order-package-item.ts +2 -26
  50. package/server/service/order-product/order-product-types.ts +18 -18
  51. package/server/service/order-product/order-product.ts +12 -96
  52. package/server/service/order-tote-item/order-tote-item-types.ts +3 -3
  53. package/server/service/order-tote-item/order-tote-item.ts +1 -12
  54. package/server/service/others/other-types.ts +0 -3
  55. package/server/service/release-good/release-good-mutation.ts +9 -51
  56. package/server/service/release-good/release-good-query.ts +124 -89
  57. package/server/service/release-good/release-good-types.ts +1 -1
  58. package/server/utils/inventory-util.ts +54 -44
@@ -1,4 +1,4 @@
1
- import { Field, Float, ID, InputType, Int, ObjectType } from 'type-graphql'
1
+ import { Field, ID, InputType, Int, ObjectType } from 'type-graphql'
2
2
 
3
3
  import { OrderPackageItem } from './order-package-item'
4
4
 
@@ -9,12 +9,6 @@ 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
18
12
  }
19
13
 
20
14
  @InputType()
@@ -25,12 +19,9 @@ export class OrderPackageItemPatch {
25
19
  @Field({ nullable: true })
26
20
  name?: string
27
21
 
28
- @Field(type => Float, { nullable: true })
22
+ @Field({ nullable: true })
29
23
  releaseQty?: number
30
24
 
31
- @Field(type => Float, { nullable: true })
32
- packedQty?: number
33
-
34
25
  @Field({ nullable: true })
35
26
  status?: string
36
27
 
@@ -55,6 +46,6 @@ export class TrackingInformation {
55
46
  @Field(type => String)
56
47
  sku: string
57
48
 
58
- @Field(type => Float)
49
+ @Field(type => String)
59
50
  releaseQty: number
60
51
  }
@@ -70,35 +70,11 @@ export class OrderPackageItem {
70
70
  @Field({ nullable: true })
71
71
  status?: string
72
72
 
73
- @Column({
74
- type: 'decimal',
75
- scale: 3,
76
- nullable: true,
77
- transformer: {
78
- to: (value: string | null) => value,
79
- from: (value: string | null) => {
80
- if (value === null || value === undefined) return null
81
- const parsed = parseFloat(value)
82
- return isNaN(parsed) ? null : parsed
83
- }
84
- }
85
- })
73
+ @Column({ nullable: true })
86
74
  @Field({ nullable: true })
87
75
  releaseQty: number
88
76
 
89
- @Column({
90
- type: 'decimal',
91
- scale: 3,
92
- nullable: true,
93
- transformer: {
94
- to: (value: string | null) => value,
95
- from: (value: string | null) => {
96
- if (value === null || value === undefined) return null
97
- const parsed = parseFloat(value)
98
- return isNaN(parsed) ? null : parsed
99
- }
100
- }
101
- })
77
+ @Column({ nullable: true })
102
78
  @Field({ nullable: true })
103
79
  packedQty: number
104
80
 
@@ -132,25 +132,25 @@ export class OrderProductPatch {
132
132
  @Field(type => Float, { nullable: true })
133
133
  unpackUomValue: number
134
134
 
135
- @Field(type => Float, { nullable: true })
135
+ @Field(type => Int, { nullable: true })
136
136
  packQty: number
137
137
 
138
- @Field(type => Float, { nullable: true })
138
+ @Field(type => Int, { nullable: true })
139
139
  adjustedPackQty: number
140
140
 
141
- @Field(type => Float, { nullable: true })
141
+ @Field(type => Int, { nullable: true })
142
142
  actualPackQty: number
143
143
 
144
- @Field(type => Float, { nullable: true })
144
+ @Field(type => Int, { nullable: true })
145
145
  unpackQty: number
146
146
 
147
- @Field(type => Float, { nullable: true })
147
+ @Field(type => Int, { nullable: true })
148
148
  palletQty: number
149
149
 
150
- @Field(type => Float, { nullable: true })
150
+ @Field(type => Int, { nullable: true })
151
151
  actualPalletQty: number
152
152
 
153
- @Field(type => Float, { nullable: true })
153
+ @Field(type => Int, { nullable: true })
154
154
  adjustedPalletQty: number
155
155
 
156
156
  @Field({ nullable: true })
@@ -162,7 +162,7 @@ export class OrderProductPatch {
162
162
  @Field({ nullable: true })
163
163
  totalUomValue: string
164
164
 
165
- @Field(type => Float, { nullable: true })
165
+ @Field(type => Int, { nullable: true })
166
166
  releaseQty: number
167
167
 
168
168
  @Field(type => Float, { nullable: true })
@@ -282,37 +282,37 @@ export class NewOrderProduct {
282
282
  @Field(type => Float, { nullable: true })
283
283
  unpackUomValue: number
284
284
 
285
- @Field(type => Float, { nullable: true })
285
+ @Field(type => Int, { nullable: true })
286
286
  packQty: number
287
287
 
288
- @Field(type => Float, { nullable: true })
288
+ @Field(type => Int, { nullable: true })
289
289
  adjustedPackQty: number
290
290
 
291
- @Field(type => Float, { nullable: true })
291
+ @Field(type => Int, { nullable: true })
292
292
  actualPackQty: number
293
293
 
294
- @Field(type => Float, { nullable: true })
294
+ @Field(type => Int, { nullable: true })
295
295
  unpackQty: number
296
296
 
297
- @Field(type => Float, { nullable: true })
297
+ @Field(type => Int, { nullable: true })
298
298
  palletQty: number
299
299
 
300
- @Field(type => Float, { nullable: true })
300
+ @Field(type => Int, { nullable: true })
301
301
  actualPalletQty: number
302
302
 
303
- @Field(type => Float, { nullable: true })
303
+ @Field(type => Int, { nullable: true })
304
304
  adjustedPalletQty: number
305
305
 
306
306
  @Field({ nullable: true })
307
- adjustedTotalUomValue: string
307
+ palletId: string
308
308
 
309
309
  @Field({ nullable: true })
310
- palletId: string
310
+ adjustedTotalUomValue: string
311
311
 
312
312
  @Field({ nullable: true })
313
313
  totalUomValue: string
314
314
 
315
- @Field(type => Float, { nullable: true })
315
+ @Field(type => Int, { nullable: true })
316
316
  releaseQty: number
317
317
 
318
318
  @Field(type => Float, { nullable: true })
@@ -254,101 +254,25 @@ export class OrderProduct {
254
254
  @Field({ nullable: true })
255
255
  adjustedUomValue: number
256
256
 
257
- @Column({
258
- nullable: true,
259
- type: 'decimal',
260
- scale: 3,
261
- transformer: {
262
- to: (value: string | null) => value,
263
- from: (value: string | null) => {
264
- if (value === null || value === undefined) return null
265
- const parsed = parseFloat(value)
266
- return isNaN(parsed) ? null : parsed
267
- }
268
- }
269
- })
270
- @Field({ nullable: true })
271
- unpackQty: number
272
-
273
- @Column({
274
- nullable: true,
275
- type: 'decimal',
276
- scale: 3,
277
- transformer: {
278
- to: (value: string | null) => value,
279
- from: (value: string | null) => {
280
- if (value === null || value === undefined) return null
281
- const parsed = parseFloat(value)
282
- return isNaN(parsed) ? null : parsed
283
- }
284
- }
285
- })
257
+ @Column('float', { nullable: true })
286
258
  @Field({ nullable: true })
287
259
  unpackUomValue: number
288
260
 
289
- @Column({
290
- nullable: true,
291
- type: 'decimal',
292
- scale: 3,
293
- transformer: {
294
- to: (value: string | null) => value,
295
- from: (value: string | null) => {
296
- if (value === null || value === undefined) return null
297
- const parsed = parseFloat(value)
298
- return isNaN(parsed) ? null : parsed
299
- }
300
- }
301
- })
302
- @Field({ nullable: true })
261
+ @Column()
262
+ @Field()
303
263
  packQty: number
304
264
 
305
- @Column({
306
- nullable: true,
307
- type: 'decimal',
308
- scale: 3,
309
- transformer: {
310
- to: (value: string | null) => value,
311
- from: (value: string | null) => {
312
- if (value === null || value === undefined) return null
313
- const parsed = parseFloat(value)
314
- return isNaN(parsed) ? null : parsed
315
- }
316
- }
317
- })
265
+ @Column({ nullable: true })
318
266
  @Field({ nullable: true })
319
267
  adjustedPackQty: number
320
268
 
321
- @Column({
322
- nullable: true,
323
- type: 'decimal',
324
- scale: 3,
325
- transformer: {
326
- to: (value: string | null) => value,
327
- from: (value: string | null) => {
328
- if (value === null || value === undefined) return null
329
- const parsed = parseFloat(value)
330
- return isNaN(parsed) ? null : parsed
331
- }
332
- }
333
- })
269
+ @Column({ nullable: true })
334
270
  @Field({ nullable: true })
335
271
  actualPackQty: number
336
272
 
337
- @Column({
338
- nullable: true,
339
- type: 'decimal',
340
- scale: 3,
341
- transformer: {
342
- to: (value: string | null) => value,
343
- from: (value: string | null) => {
344
- if (value === null || value === undefined) return null
345
- const parsed = parseFloat(value)
346
- return isNaN(parsed) ? null : parsed
347
- }
348
- }
349
- })
273
+ @Column('float', { nullable: true })
350
274
  @Field({ nullable: true })
351
- releaseUomValue: number
275
+ unpackQty: number
352
276
 
353
277
  @Column('float', { nullable: true })
354
278
  @Field({ nullable: true })
@@ -402,22 +326,14 @@ export class OrderProduct {
402
326
  @Field({ nullable: true })
403
327
  adjustedTotalUomValue: string
404
328
 
405
- @Column({
406
- nullable: true,
407
- type: 'decimal',
408
- scale: 3,
409
- transformer: {
410
- to: (value: string | null) => value,
411
- from: (value: string | null) => {
412
- if (value === null || value === undefined) return null
413
- const parsed = parseFloat(value)
414
- return isNaN(parsed) ? null : parsed
415
- }
416
- }
417
- })
329
+ @Column({ nullable: true })
418
330
  @Field({ nullable: true })
419
331
  releaseQty: number
420
332
 
333
+ @Column({ nullable: true, type: 'float' })
334
+ @Field({ nullable: true })
335
+ releaseUomValue: number
336
+
421
337
  @Column({ nullable: true })
422
338
  @Field({ nullable: true })
423
339
  remark: string
@@ -1,4 +1,4 @@
1
- import { Field, Float, InputType, Int, ObjectType } from 'type-graphql'
1
+ import { Field, InputType, Int, ObjectType } from 'type-graphql'
2
2
 
3
3
  import { ObjectRef } from '@things-factory/shell'
4
4
 
@@ -30,7 +30,7 @@ export class NewOrderToteItem {
30
30
  @Field(type => ObjectRef, { nullable: true })
31
31
  orderTote: ObjectRef
32
32
 
33
- @Field(type => Float, { nullable: true })
33
+ @Field(type => Int)
34
34
  qty: number
35
35
  }
36
36
 
@@ -51,6 +51,6 @@ export class OrderToteItemPatch {
51
51
  @Field(type => ObjectRef, { nullable: true })
52
52
  orderTote: ObjectRef
53
53
 
54
- @Field(type => Float, { nullable: true })
54
+ @Field(type => Int)
55
55
  qty: number
56
56
  }
@@ -47,18 +47,7 @@ export class OrderToteItem {
47
47
  @RelationId((orderToteItem: OrderToteItem) => orderToteItem.orderTote)
48
48
  orderToteId: string
49
49
 
50
- @Column({
51
- type: 'decimal',
52
- scale: 3,
53
- transformer: {
54
- to: (value: string | null) => value,
55
- from: (value: string | null) => {
56
- if (value === null || value === undefined) return null
57
- const parsed = parseFloat(value)
58
- return isNaN(parsed) ? null : parsed
59
- }
60
- }
61
- })
50
+ @Column('int')
62
51
  @Field({ nullable: true })
63
52
  qty?: number
64
53
 
@@ -37,9 +37,6 @@ export class InventoryProductGroup {
37
37
  @Field({ nullable: true })
38
38
  productBrand: string
39
39
 
40
- @Field({ nullable: true })
41
- isInventoryDecimal: boolean
42
-
43
40
  @Field({ nullable: true })
44
41
  packingType: string
45
42
 
@@ -65,40 +65,6 @@ import { editVas } from '../vas'
65
65
  import { ReleaseGood } from './release-good'
66
66
  import { bulkReleaseGoodsAvailableItemsFunction } from './release-good-query'
67
67
 
68
- // Utility function for safe decimal arithmetic
69
- function safeDecimalOperation(value1: number, value2: number, operation: 'add' | 'subtract' | 'multiply'): number {
70
- // Convert to string with fixed precision to avoid floating point issues
71
- const num1 = parseFloat(value1.toFixed(3))
72
- const num2 = parseFloat(value2.toFixed(3))
73
-
74
- let result: number
75
- switch (operation) {
76
- case 'add':
77
- result = num1 + num2
78
- break
79
- case 'subtract':
80
- result = num1 - num2
81
- break
82
- case 'multiply':
83
- result = num1 * num2
84
- break
85
- default:
86
- throw new Error('Invalid operation')
87
- }
88
-
89
- // Ensure result is within valid range and has correct precision
90
- if (result < 0) {
91
- throw new Error('Decimal value cannot be negative')
92
- }
93
-
94
- // Check if result exceeds maximum precision (10 digits total with 3 decimal places)
95
- if (result > 9999999.999) {
96
- throw new Error('Decimal value exceeds maximum allowed precision')
97
- }
98
-
99
- return parseFloat(result.toFixed(3))
100
- }
101
-
102
68
  @Resolver(ReleaseGood)
103
69
  export class ReleaseGoodMutation {
104
70
  @Directive('@privilege(category: "order_customer", privilege: "mutation")')
@@ -478,8 +444,8 @@ export async function deleteReleaseGood(tx: EntityManager, name: string, user: U
478
444
 
479
445
  await tx.getRepository(Inventory).save({
480
446
  ...oi.inventory,
481
- lockedQty: safeDecimalOperation(oi.inventory.lockedQty, oi.releaseQty, 'subtract'),
482
- lockedUomValue: safeDecimalOperation(oi.inventory.lockedUomValue, oi.releaseUomValue, 'subtract'),
447
+ lockedQty: oi.inventory.lockedQty - oi.releaseQty,
448
+ lockedUomValue: oi.inventory.lockedUomValue - oi.releaseUomValue,
483
449
  updater: user
484
450
  })
485
451
  }
@@ -840,12 +806,8 @@ export async function generateReleaseGoodFunction(
840
806
  pbSettings.forEach(pbs => {
841
807
  splitOI = {
842
808
  ...oi,
843
- releaseQty: safeDecimalOperation(oi.releaseQty, pbs.bundleQty, 'multiply'),
844
- releaseUomValue: safeDecimalOperation(
845
- safeDecimalOperation(oi.releaseUomValue, pbs.bundleQty, 'multiply'),
846
- pbs.product.primaryValue,
847
- 'multiply'
848
- ),
809
+ releaseQty: oi.releaseQty * pbs.bundleQty,
810
+ releaseUomValue: oi.releaseUomValue * pbs.bundleQty * pbs.product.primaryValue,
849
811
  packingType: pbs.product.packingType,
850
812
  batchId: '',
851
813
  product: {
@@ -1435,8 +1397,8 @@ export async function rejectReleaseGood(
1435
1397
 
1436
1398
  await tx.getRepository(Inventory).save({
1437
1399
  ...oi.inventory,
1438
- lockedQty: safeDecimalOperation(oi.inventory.lockedQty, oi.releaseQty, 'subtract'),
1439
- lockedUomValue: safeDecimalOperation(oi.inventory.lockedUomValue, oi.releaseUomValue, 'subtract'),
1400
+ lockedQty: oi.inventory.lockedQty - oi.releaseQty,
1401
+ lockedUomValue: oi.inventory.lockedUomValue - oi.releaseUomValue,
1440
1402
  updater: user
1441
1403
  })
1442
1404
  }
@@ -1927,11 +1889,7 @@ function extractRawReleaseGoods(rawReleaseGoods): Partial<ReleaseGood[]> {
1927
1889
 
1928
1890
  // if there is duplicated SKU, merge them and sum up the releaseQty
1929
1891
  if (duplicateSkuIdx >= 0) {
1930
- releaseGoods[idx].orderInventories[duplicateSkuIdx].releaseQty = safeDecimalOperation(
1931
- releaseGoods[idx].orderInventories[duplicateSkuIdx].releaseQty,
1932
- item.releaseQty,
1933
- 'add'
1934
- )
1892
+ releaseGoods[idx].orderInventories[duplicateSkuIdx].releaseQty += item.releaseQty
1935
1893
  } else {
1936
1894
  releaseGoods[idx].orderInventories.push({
1937
1895
  sku: item.sku,
@@ -1939,8 +1897,8 @@ function extractRawReleaseGoods(rawReleaseGoods): Partial<ReleaseGood[]> {
1939
1897
  packingType: item.packingType,
1940
1898
  packingSize: item.packingSize,
1941
1899
  uom: item.uom,
1942
- releaseQty: parseFloat(item.releaseQty.toFixed(3)),
1943
- releaseUomValue: parseFloat(item.releaseUomValue.toFixed(3))
1900
+ releaseQty: item.releaseQty,
1901
+ releaseUomValue: item.releaseUomValue
1944
1902
  })
1945
1903
  }
1946
1904
  } else {