@things-factory/sales-base 3.7.12 → 3.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (55) hide show
  1. package/dist-server/constants/validation-error-code.js +2 -1
  2. package/dist-server/constants/validation-error-code.js.map +1 -1
  3. package/dist-server/entities/release-good.js +4 -0
  4. package/dist-server/entities/release-good.js.map +1 -1
  5. package/dist-server/graphql/resolvers/arrival-notice/update-arrival-notice-details.js +28 -0
  6. package/dist-server/graphql/resolvers/arrival-notice/update-arrival-notice-details.js.map +1 -0
  7. package/dist-server/graphql/resolvers/order-inventory/inventories-by-order.js +1 -1
  8. package/dist-server/graphql/resolvers/order-inventory/inventories-by-order.js.map +1 -1
  9. package/dist-server/graphql/resolvers/release-good/bulk-add-release-goods.js +213 -0
  10. package/dist-server/graphql/resolvers/release-good/bulk-add-release-goods.js.map +1 -0
  11. package/dist-server/graphql/resolvers/release-good/bulk-release-goods-available-items.js +163 -0
  12. package/dist-server/graphql/resolvers/release-good/bulk-release-goods-available-items.js.map +1 -0
  13. package/dist-server/graphql/resolvers/release-good/generate-release-good.js +2 -1
  14. package/dist-server/graphql/resolvers/release-good/generate-release-good.js.map +1 -1
  15. package/dist-server/graphql/resolvers/release-good/index.js +5 -3
  16. package/dist-server/graphql/resolvers/release-good/index.js.map +1 -1
  17. package/dist-server/graphql/resolvers/release-good/release-good-requests.js +17 -0
  18. package/dist-server/graphql/resolvers/release-good/release-good-requests.js.map +1 -1
  19. package/dist-server/graphql/resolvers/release-good/update-release-good-details.js +4 -5
  20. package/dist-server/graphql/resolvers/release-good/update-release-good-details.js.map +1 -1
  21. package/dist-server/graphql/resolvers/return-order/generate-return-order.js +2 -4
  22. package/dist-server/graphql/resolvers/return-order/generate-return-order.js.map +1 -1
  23. package/dist-server/graphql/types/order-inventory/order-inventory.js +1 -0
  24. package/dist-server/graphql/types/order-inventory/order-inventory.js.map +1 -1
  25. package/dist-server/graphql/types/others/inventory-product-group.js +1 -0
  26. package/dist-server/graphql/types/others/inventory-product-group.js.map +1 -1
  27. package/dist-server/graphql/types/release-good/index.js +14 -0
  28. package/dist-server/graphql/types/release-good/index.js.map +1 -1
  29. package/dist-server/graphql/types/release-good/new-raw-release-good.js +62 -0
  30. package/dist-server/graphql/types/release-good/new-raw-release-good.js.map +1 -0
  31. package/dist-server/graphql/types/release-good/raw-release-good.js +65 -0
  32. package/dist-server/graphql/types/release-good/raw-release-good.js.map +1 -0
  33. package/dist-server/graphql/types/release-good/release-good.js +1 -0
  34. package/dist-server/graphql/types/release-good/release-good.js.map +1 -1
  35. package/dist-server/utils/inventory-util.js +10 -1
  36. package/dist-server/utils/inventory-util.js.map +1 -1
  37. package/package.json +12 -12
  38. package/server/constants/validation-error-code.ts +3 -2
  39. package/server/entities/release-good.ts +3 -0
  40. package/server/graphql/resolvers/arrival-notice/update-arrival-notice-details.ts +32 -0
  41. package/server/graphql/resolvers/order-inventory/inventories-by-order.ts +1 -0
  42. package/server/graphql/resolvers/release-good/bulk-add-release-goods.ts +343 -0
  43. package/server/graphql/resolvers/release-good/bulk-release-goods-available-items.ts +207 -0
  44. package/server/graphql/resolvers/release-good/generate-release-good.ts +3 -2
  45. package/server/graphql/resolvers/release-good/index.ts +5 -1
  46. package/server/graphql/resolvers/release-good/release-good-requests.ts +23 -0
  47. package/server/graphql/resolvers/release-good/update-release-good-details.ts +8 -5
  48. package/server/graphql/resolvers/return-order/generate-return-order.ts +6 -6
  49. package/server/graphql/types/order-inventory/order-inventory.ts +1 -0
  50. package/server/graphql/types/others/inventory-product-group.ts +1 -0
  51. package/server/graphql/types/release-good/index.ts +14 -0
  52. package/server/graphql/types/release-good/new-raw-release-good.ts +56 -0
  53. package/server/graphql/types/release-good/raw-release-good.ts +59 -0
  54. package/server/graphql/types/release-good/release-good.ts +1 -0
  55. package/server/utils/inventory-util.ts +20 -8
@@ -1,10 +1,12 @@
1
+ import { EntityManager } from 'typeorm'
2
+
1
3
  import { Attachment, createAttachments } from '@things-factory/attachment-base'
2
4
  import { User } from '@things-factory/auth-base'
3
- import { Bizplace, getMyBizplace } from '@things-factory/biz-base'
5
+ import { Bizplace } from '@things-factory/biz-base'
4
6
  import { Product } from '@things-factory/product-base'
5
7
  import { Domain } from '@things-factory/shell'
6
8
  import { Inventory } from '@things-factory/warehouse-base'
7
- import { EntityManager } from 'typeorm'
9
+
8
10
  import { ORDER_STATUS } from '../../../constants'
9
11
  import { ATTACHMENT_TYPE } from '../../../constants/attachment-type'
10
12
  import { ORDER_INVENTORY_STATUS } from '../../../constants/order'
@@ -17,7 +19,6 @@ export const generateReturnOrder = {
17
19
 
18
20
  const bizplace: Bizplace = await tx.getRepository(Bizplace).findOne(returnOrder.customerBizplaceId)
19
21
  let orderInventories: OrderInventory[] = returnOrder.orderInventories
20
- let foundInv = Inventory
21
22
 
22
23
  let newReturnOrder: ReturnOrder = {
23
24
  ...returnOrder,
@@ -29,7 +30,7 @@ export const generateReturnOrder = {
29
30
  updater: user
30
31
  }
31
32
 
32
- if (newReturnOrder.orderInventories[0].returnQty < 0) {
33
+ if (newReturnOrder.orderInventories[0].returnQty < 0) {
33
34
  throw new Error('invalid return quantity')
34
35
  }
35
36
 
@@ -47,8 +48,7 @@ export const generateReturnOrder = {
47
48
  newOrderInv.updater = user
48
49
 
49
50
  if (newOrderInv.inventory?.id) {
50
- foundInv = await tx.getRepository(Inventory).findOne(newOrderInv.inventory.id)
51
- newOrderInv.inventory = foundInv
51
+ newOrderInv.inventory = await tx.getRepository(Inventory).findOne(newOrderInv.inventory?.id)
52
52
  }
53
53
 
54
54
  await tx.getRepository(OrderInventory).save(newOrderInv)
@@ -16,6 +16,7 @@ export const OrderInventory = gql`
16
16
  batchIdRef: String
17
17
  productName: String
18
18
  productSKU: String
19
+ productBrand: String
19
20
  packingType: String
20
21
  packingSize: Float
21
22
  originQty: Int
@@ -6,6 +6,7 @@ export const InventoryProductGroup = gql`
6
6
  batchId: String
7
7
  batchIdRef: String
8
8
  productSKU: String
9
+ productBrand: String
9
10
  productName: String
10
11
  packingType: String
11
12
  packingSize: Float
@@ -1,5 +1,7 @@
1
1
  import { InventoryInfos } from './inventory-infos'
2
+ import { NewRawReleaseGood } from './new-raw-release-good'
2
3
  import { NewReleaseGood } from './new-release-good'
4
+ import { RawReleaseGood } from './raw-release-good'
3
5
  import { ReleasableInventory } from './releasable-inventory'
4
6
  import { ReleasableInventoryList } from './releasable-inventory-list'
5
7
  import { ReleaseGood } from './release-good'
@@ -9,6 +11,11 @@ import { ReleaseGoodPatch } from './release-good-patch'
9
11
  import { ShippingOrderInfo } from './shipping-order-info'
10
12
 
11
13
  export const Mutation = /* GraphQL */ `
14
+ bulkAddReleaseGoods (
15
+ rawReleaseGoods: [NewRawReleaseGood]
16
+ bizplaceId: String
17
+ ): ReleaseGoodList @privilege(category: "order_customer", privilege: "mutation") @transaction
18
+
12
19
  deleteReleaseGood (
13
20
  name: String!
14
21
  ): Boolean @privilege(category: "order_customer", privilege: "mutation") @transaction
@@ -49,6 +56,11 @@ export const Mutation = /* GraphQL */ `
49
56
  `
50
57
 
51
58
  export const Query = /* GraphQL */ `
59
+ bulkReleaseGoodsAvailableItems (
60
+ rawReleaseGoods: [NewRawReleaseGood]
61
+ bizplaceId: String
62
+ ): [RawReleaseGood] @privilege(category: "order_customer", privilege: "query") @transaction
63
+
52
64
  releaseGoods (
53
65
  filters: [Filter],
54
66
  pagination: Pagination,
@@ -78,7 +90,9 @@ export const Query = /* GraphQL */ `
78
90
  `
79
91
 
80
92
  export const Types = [
93
+ RawReleaseGood,
81
94
  ReleaseGood,
95
+ NewRawReleaseGood,
82
96
  NewReleaseGood,
83
97
  ReleaseGoodPatch,
84
98
  ReleaseGoodList,
@@ -0,0 +1,56 @@
1
+ import gql from 'graphql-tag'
2
+
3
+ export const NewRawReleaseGood = gql`
4
+ input NewRawReleaseGood {
5
+ name: String
6
+ releaseDate: String
7
+ type: String
8
+ collectionOrderNo: String
9
+ ownTransport: Boolean
10
+ crossDocking: Boolean
11
+ courierOption: Boolean
12
+ packingOption: Boolean
13
+ packageId: String
14
+ truckNo: String
15
+ refNo: String
16
+ refNo2: String
17
+ refNo3: String
18
+ pickupAddress: String
19
+ pickupTime: String
20
+ handoverType: String
21
+ dropoffAddress: String
22
+ marketplaceOrderStatus: String
23
+ billingAddress: String
24
+ deliveryAddress1: String
25
+ deliveryAddress2: String
26
+ deliveryAddress3: String
27
+ deliveryAddress4: String
28
+ deliveryAddress5: String
29
+ attentionTo: String
30
+ attentionCompany: String
31
+ city: String
32
+ state: String
33
+ postalCode: String
34
+ country: String
35
+ phone1: String
36
+ phone2: String
37
+ email: String
38
+ transporter: String
39
+ trackingNo: String
40
+ airwayBill: String
41
+ invoice: String
42
+ status: String
43
+ description: String
44
+ warehouseId: String #outletID
45
+ deliverTo: String
46
+ customerBizplaceId: String
47
+ partnerBizplaceId: String
48
+ batchId: String
49
+ packingType: String
50
+ packingSize: Int
51
+ uom: String
52
+ productId: String
53
+ sku: String
54
+ releaseQty: Int
55
+ }
56
+ `
@@ -0,0 +1,59 @@
1
+ import gql from 'graphql-tag'
2
+
3
+ export const RawReleaseGood = gql`
4
+ type RawReleaseGood {
5
+ name: String
6
+ releaseDate: String
7
+ type: String
8
+ collectionOrderNo: String
9
+ ownTransport: Boolean
10
+ crossDocking: Boolean
11
+ courierOption: Boolean
12
+ packingOption: Boolean
13
+ packageId: String
14
+ truckNo: String
15
+ refNo: String
16
+ refNo2: String
17
+ refNo3: String
18
+ pickupAddress: String
19
+ pickupTime: String
20
+ handoverType: String
21
+ dropoffAddress: String
22
+ marketplaceOrderStatus: String
23
+ billingAddress: String
24
+ deliveryAddress1: String
25
+ deliveryAddress2: String
26
+ deliveryAddress3: String
27
+ deliveryAddress4: String
28
+ deliveryAddress5: String
29
+ attentionTo: String
30
+ attentionCompany: String
31
+ city: String
32
+ state: String
33
+ postalCode: String
34
+ country: String
35
+ phone1: String
36
+ phone2: String
37
+ email: String
38
+ transporter: String
39
+ trackingNo: String
40
+ airwayBill: String
41
+ invoice: String
42
+ status: String
43
+ description: String
44
+ warehouseId: String #outletID
45
+ deliverTo: String
46
+ customerBizplaceId: String
47
+ partnerBizplaceId: String
48
+ batchId: String
49
+ packingType: String
50
+ packingSize: Int
51
+ uom: String
52
+ productId: String
53
+ sku: String
54
+ releaseQty: Int
55
+ releaseUomValue: Float
56
+ assignedQty: Int
57
+ assignedUomValue: Float
58
+ }
59
+ `
@@ -25,6 +25,7 @@ export const ReleaseGood = gql`
25
25
  refNo: String
26
26
  refNo2: String
27
27
  refNo3: String
28
+ noOfItems: Int
28
29
  attachments: [Attachment]
29
30
  deliveryOrders: [DeliveryOrder]
30
31
  exportOption: Boolean
@@ -11,6 +11,7 @@ import {
11
11
  InventoryNoGenerator,
12
12
  Location,
13
13
  LOCATION_STATUS,
14
+ LOCATION_TYPE,
14
15
  Pallet
15
16
  } from '@things-factory/warehouse-base'
16
17
 
@@ -99,6 +100,7 @@ export const InventoryUtil = {
99
100
  i.uom AS "uom",
100
101
  concat(p.name, ' (', p.description, ')') AS "productName",
101
102
  coalesce(p.sku, '') AS "productSKU",
103
+ coalesce(p.brand, '') AS "productBrand",
102
104
  p.id AS "productId",
103
105
  SUM(COALESCE(i.qty, 0)) - SUM(COALESCE(i.locked_qty, 0)) - MAX(COALESCE(oi.release_qty, 0)) - MAX(COALESCE(bp.bundle_product_release_qty, 0)) AS "remainQty",
104
106
  SUM(COALESCE(i.uom_value, 0)) - SUM(COALESCE(i.locked_uom_value, 0)) - MAX(COALESCE(oi.release_uom_value, 0)) - MAX(COALESCE(bp.bundle_product_release_uom_value, 0)) AS "remainUomValue",
@@ -108,6 +110,7 @@ export const InventoryUtil = {
108
110
  inventories i
109
111
  LEFT JOIN products p ON i.product_id = p.id
110
112
  LEFT JOIN oi ON i.batch_id = oi.batch_id AND p.name = oi.product_name AND i.packing_type = oi.packing_type AND i.packing_size = oi.packing_size AND i.uom = oi.uom
113
+ LEFT JOIN locations l2 ON i.location_id = l2.id AND i.domain_id = l2.domain_id
111
114
  LEFT JOIN (
112
115
  SELECT pbs.product_id, SUM(pbs.bundle_qty * src.release_qty) AS bundle_product_release_qty, SUM(pbs.bundle_qty * src.release_uom_value) AS bundle_product_release_uom_value
113
116
  FROM product_bundle_settings pbs
@@ -115,6 +118,7 @@ export const InventoryUtil = {
115
118
  GROUP BY pbs.product_id
116
119
  ) bp on i.product_id = bp.product_id
117
120
  WHERE i.domain_id = $1
121
+ AND l2.type NOT IN ('${LOCATION_TYPE.QUARANTINE}', '${LOCATION_TYPE.RESERVE}')
118
122
  ${productWhereClause}
119
123
  GROUP BY
120
124
  i.batch_id,
@@ -124,7 +128,7 @@ export const InventoryUtil = {
124
128
  i.packing_size,
125
129
  i.uom
126
130
  UNION
127
- SELECT 'BUNDLE' AS "batchId", null as "batchIdRef", packing_type, packing_size,'UNIT' AS "uom", name AS "productName", sku AS "productSKU", id AS "productId",
131
+ SELECT 'BUNDLE' AS "batchId", null as "batchIdRef", packing_type, packing_size,'UNIT' AS "uom", name AS "productName", sku AS "productSKU", 'brand' AS "productBrand", id AS "productId",
128
132
  MIN(FLOOR(pbs."availableQty")) AS "remainQty",
129
133
  MIN(FLOOR(pbs."availableUomValue")) AS "remainUomValue",
130
134
  CONCAT(MIN(FLOOR(pbs."availableUomValue")),' UNIT') AS "remainUomValueWithUom",
@@ -336,6 +340,10 @@ async function getConditions(
336
340
  whereClause += `AND LOWER("batchIdRef") LIKE '${value.toLowerCase()}'`
337
341
  break
338
342
 
343
+ case 'productBrand':
344
+ whereClause += `AND LOWER("productBrand") LIKE '${value.toLowerCase()}'`
345
+ break
346
+
339
347
  case 'productName':
340
348
  const products: Product[] = await trxMgr.getRepository(Product).find({
341
349
  select: ['id'],
@@ -417,22 +425,26 @@ async function getConditions(
417
425
  whereClause += `AND LOWER("groupType") LIKE 'bundle'`
418
426
  break
419
427
 
428
+ case 'hideBundle':
429
+ whereClause += `AND LOWER("groupType") LIKE 'single'`
430
+ break
431
+
420
432
  case 'batch_product':
421
433
  productWhereClause += `
422
434
  AND (i.batch_id, p.id, i.packing_type) ${operator === 'in' ? 'IN' : 'NOT IN'} (${value
423
- .map(
424
- (v: { batchId: string; productId: string; packingType: string }) =>
425
- `('${v.batchId}', '${v.productId}', '${v.packingType}')`
426
- )
427
- .join()})
435
+ .map(
436
+ (v: { batchId: string; productId: string; packingType: string }) =>
437
+ `('${v.batchId}', '${v.productId}', '${v.packingType}')`
438
+ )
439
+ .join()})
428
440
  `
429
441
  break
430
442
 
431
443
  case 'batch_bundle':
432
444
  bundleWhereClause += `
433
445
  ${bundleWhereClause == '' ? 'WHERE' : 'AND'} pb.id ${operator === 'in' ? 'IN' : 'NOT IN'} (${value
434
- .map((v: { productId: string }) => `('${v.productId}')`)
435
- .join()})
446
+ .map((v: { productId: string }) => `('${v.productId}')`)
447
+ .join()})
436
448
  `
437
449
  break
438
450
  }