@things-factory/sales-base 4.3.71 → 4.3.75

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 (91) hide show
  1. package/dist-server/constants/index.js +5 -1
  2. package/dist-server/constants/index.js.map +1 -1
  3. package/dist-server/controllers/ecommerce/index.js +5 -1
  4. package/dist-server/controllers/ecommerce/index.js.map +1 -1
  5. package/dist-server/controllers/index.js +5 -1
  6. package/dist-server/controllers/index.js.map +1 -1
  7. package/dist-server/errors/index.js +5 -1
  8. package/dist-server/errors/index.js.map +1 -1
  9. package/dist-server/errors/validation-error.js +5 -1
  10. package/dist-server/errors/validation-error.js.map +1 -1
  11. package/dist-server/index.js +5 -1
  12. package/dist-server/index.js.map +1 -1
  13. package/dist-server/service/arrival-notice/arrival-notice-query.js +1 -1
  14. package/dist-server/service/arrival-notice/index.js +5 -1
  15. package/dist-server/service/arrival-notice/index.js.map +1 -1
  16. package/dist-server/service/claim/index.js +5 -1
  17. package/dist-server/service/claim/index.js.map +1 -1
  18. package/dist-server/service/claim-detail/index.js +5 -1
  19. package/dist-server/service/claim-detail/index.js.map +1 -1
  20. package/dist-server/service/claim-order/index.js +5 -1
  21. package/dist-server/service/claim-order/index.js.map +1 -1
  22. package/dist-server/service/collection-order/index.js +5 -1
  23. package/dist-server/service/collection-order/index.js.map +1 -1
  24. package/dist-server/service/delivery-order/index.js +5 -1
  25. package/dist-server/service/delivery-order/index.js.map +1 -1
  26. package/dist-server/service/draft-release-good/draft-release-good-query.js +8 -10
  27. package/dist-server/service/draft-release-good/draft-release-good-query.js.map +1 -1
  28. package/dist-server/service/draft-release-good/index.js +5 -1
  29. package/dist-server/service/draft-release-good/index.js.map +1 -1
  30. package/dist-server/service/goods-receival-note/index.js +5 -1
  31. package/dist-server/service/goods-receival-note/index.js.map +1 -1
  32. package/dist-server/service/index.js +5 -1
  33. package/dist-server/service/index.js.map +1 -1
  34. package/dist-server/service/inventory-check/index.js +5 -1
  35. package/dist-server/service/inventory-check/index.js.map +1 -1
  36. package/dist-server/service/invoice/index.js +5 -1
  37. package/dist-server/service/invoice/index.js.map +1 -1
  38. package/dist-server/service/invoice-product/index.js +5 -1
  39. package/dist-server/service/invoice-product/index.js.map +1 -1
  40. package/dist-server/service/job-sheet/index.js +5 -1
  41. package/dist-server/service/job-sheet/index.js.map +1 -1
  42. package/dist-server/service/order-inventory/index.js +5 -1
  43. package/dist-server/service/order-inventory/index.js.map +1 -1
  44. package/dist-server/service/order-product/index.js +5 -1
  45. package/dist-server/service/order-product/index.js.map +1 -1
  46. package/dist-server/service/order-product/order-product.js +3 -0
  47. package/dist-server/service/order-product/order-product.js.map +1 -1
  48. package/dist-server/service/order-tote/index.js +5 -1
  49. package/dist-server/service/order-tote/index.js.map +1 -1
  50. package/dist-server/service/order-tote-item/index.js +5 -1
  51. package/dist-server/service/order-tote-item/index.js.map +1 -1
  52. package/dist-server/service/order-tote-seal/index.js +5 -1
  53. package/dist-server/service/order-tote-seal/index.js.map +1 -1
  54. package/dist-server/service/order-vas/index.js +5 -1
  55. package/dist-server/service/order-vas/index.js.map +1 -1
  56. package/dist-server/service/others/index.js +5 -1
  57. package/dist-server/service/others/index.js.map +1 -1
  58. package/dist-server/service/purchase-order/index.js +5 -1
  59. package/dist-server/service/purchase-order/index.js.map +1 -1
  60. package/dist-server/service/purchase-order-other-charge/index.js +5 -1
  61. package/dist-server/service/purchase-order-other-charge/index.js.map +1 -1
  62. package/dist-server/service/release-good/index.js +5 -1
  63. package/dist-server/service/release-good/index.js.map +1 -1
  64. package/dist-server/service/release-good/release-good-mutation.js +3 -1
  65. package/dist-server/service/release-good/release-good-mutation.js.map +1 -1
  66. package/dist-server/service/release-good/release-good-query.js +109 -112
  67. package/dist-server/service/release-good/release-good-query.js.map +1 -1
  68. package/dist-server/service/retail-replenishment-order/index.js +5 -1
  69. package/dist-server/service/retail-replenishment-order/index.js.map +1 -1
  70. package/dist-server/service/return-order/index.js +5 -1
  71. package/dist-server/service/return-order/index.js.map +1 -1
  72. package/dist-server/service/reverse-kitting-order/index.js +5 -1
  73. package/dist-server/service/reverse-kitting-order/index.js.map +1 -1
  74. package/dist-server/service/reverse-kitting-order-inventory/index.js +5 -1
  75. package/dist-server/service/reverse-kitting-order-inventory/index.js.map +1 -1
  76. package/dist-server/service/shipping-order/index.js +5 -1
  77. package/dist-server/service/shipping-order/index.js.map +1 -1
  78. package/dist-server/service/transfer-order/index.js +5 -1
  79. package/dist-server/service/transfer-order/index.js.map +1 -1
  80. package/dist-server/service/vas/index.js +5 -1
  81. package/dist-server/service/vas/index.js.map +1 -1
  82. package/dist-server/service/vas-order/index.js +5 -1
  83. package/dist-server/service/vas-order/index.js.map +1 -1
  84. package/dist-server/utils/index.js +5 -1
  85. package/dist-server/utils/index.js.map +1 -1
  86. package/package.json +13 -13
  87. package/server/service/arrival-notice/arrival-notice-query.ts +1 -1
  88. package/server/service/draft-release-good/draft-release-good-query.ts +8 -10
  89. package/server/service/order-product/order-product.ts +7 -0
  90. package/server/service/release-good/release-good-mutation.ts +3 -2
  91. package/server/service/release-good/release-good-query.ts +94 -109
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@things-factory/sales-base",
3
- "version": "4.3.71",
3
+ "version": "4.3.75",
4
4
  "main": "dist-server/index.js",
5
5
  "browser": "client/index.js",
6
6
  "things-factory": true,
@@ -24,17 +24,17 @@
24
24
  "migration:create": "node ../../node_modules/typeorm/cli.js migration:create -d ./server/migrations"
25
25
  },
26
26
  "dependencies": {
27
- "@things-factory/attachment-base": "^4.3.69",
28
- "@things-factory/auth-base": "^4.3.69",
29
- "@things-factory/biz-base": "^4.3.69",
30
- "@things-factory/code-base": "^4.3.69",
31
- "@things-factory/integration-sftp": "^4.3.69",
32
- "@things-factory/notification": "^4.3.69",
33
- "@things-factory/product-base": "^4.3.69",
34
- "@things-factory/setting-base": "^4.3.69",
35
- "@things-factory/shell": "^4.3.69",
36
- "@things-factory/transport-base": "^4.3.69",
37
- "@things-factory/warehouse-base": "^4.3.69"
27
+ "@things-factory/attachment-base": "^4.3.74",
28
+ "@things-factory/auth-base": "^4.3.74",
29
+ "@things-factory/biz-base": "^4.3.74",
30
+ "@things-factory/code-base": "^4.3.74",
31
+ "@things-factory/integration-sftp": "^4.3.74",
32
+ "@things-factory/notification": "^4.3.74",
33
+ "@things-factory/product-base": "^4.3.75",
34
+ "@things-factory/setting-base": "^4.3.74",
35
+ "@things-factory/shell": "^4.3.74",
36
+ "@things-factory/transport-base": "^4.3.74",
37
+ "@things-factory/warehouse-base": "^4.3.75"
38
38
  },
39
- "gitHead": "b625baf20f3ff9b95925a19f6dfd6fd0f797b6fd"
39
+ "gitHead": "3076ac1b79bc1f56d033b4d13c1dd9baac545e27"
40
40
  }
@@ -478,7 +478,6 @@ export async function validateBulkArrivalNoticesFunction(
478
478
  AND raw.import_cargo = an.import_cargo
479
479
  LEFT JOIN products pr ON LOWER(pr.sku) = LOWER(raw.sku)
480
480
  LEFT JOIN product_details pd ON pr.id = pd.product_id
481
- AND pr.bizplace_id = $1
482
481
  AND CASE WHEN raw.packing_type NOTNULL AND raw.packing_size NOTNULL AND raw.uom NOTNULL
483
482
  THEN pd.packing_type = raw.packing_type AND pd.packing_size = raw.packing_size AND pd.uom = raw.uom
484
483
  WHEN raw.packing_type NOTNULL AND raw.packing_size NOTNULL AND raw.uom ISNULL
@@ -486,6 +485,7 @@ export async function validateBulkArrivalNoticesFunction(
486
485
  WHEN raw.packing_type ISNULL AND raw.packing_size ISNULL AND raw.uom NOTNULL
487
486
  THEN pd.uom = raw.uom AND pd.is_default IS TRUE ELSE pd.is_default IS TRUE
488
487
  END
488
+ WHERE pr.bizplace_id = $1
489
489
  GROUP BY raw.ref_no, raw.ref_no_2, raw.ref_no_3, raw.eta_date, raw.truck_no, raw.own_transport, raw.container, raw.container_no, raw.container_size, raw.import_cargo, raw.loose_item,
490
490
  pr.id, pd.id, raw.sku, pr.name, pr.description, raw.batch_id, raw.batch_id_ref, raw.packing_type, raw.packing_size, raw.uom, raw.unit_price, raw.manufacture_date, an.ref_no, an.name
491
491
  ) SELECT foo.*,
@@ -109,18 +109,16 @@ export class DraftReleaseGoodQuery {
109
109
  tx.query(
110
110
  `
111
111
  create temp table temp_op_calculation on commit drop as (
112
- select drg1.id, sum(case when wboi."remainQty" >= op.release_qty then 0 else 1 end) as insufficient_count, count(*) as total_row
113
- from draft_release_goods drg1
112
+ SELECT drg1.id from draft_release_goods drg1
114
113
  left join order_products op on drg1.id = op.draft_release_good_id
115
- left join warehouse_bizplace_onhand_inventories wboi
116
- on (wboi."productId" = op.product_id or wboi."productBundleId" = op.product_id)
117
- and wboi."packingType" = op.packing_type
118
- and wboi."packingSize" = op.packing_size
119
- and wboi.uom = op.uom
114
+ where drg1.status ='DRAFT' AND drg1.domain_id = $1
115
+ AND NOT EXISTS (
116
+ SELECT * FROM warehouse_bizplace_onhand_inventories wboi
117
+ where (wboi."productId" = op.product_id or wboi."productBundleId" = op.product_id)
120
118
  and wboi."domainId" = op.domain_id
121
119
  and wboi."bizplaceId" = op.bizplace_id
122
- where op.domain_id = $1 and drg1.status ='DRAFT'
123
- group by drg1.id
120
+ AND wboi."remainQty" >= op.release_qty
121
+ ) GROUP BY drg1.id
124
122
  )
125
123
  `,
126
124
  [domain.id]
@@ -130,7 +128,7 @@ export class DraftReleaseGoodQuery {
130
128
  buildQuery(qb, params, context)
131
129
  qb.addSelect('COALESCE("cc".rank, 99999)', 'rank')
132
130
  qb.addSelect(
133
- `CASE WHEN "drg".status = 'DRAFT' and (tmp_calc.insufficient_count > 0 or tmp_calc.total_row = 0) then 'INSUFFICIENT' else "drg".status END`,
131
+ `CASE WHEN "drg".status = 'DRAFT' and tmp_calc.id IS NOT null then 'INSUFFICIENT' else "drg".status END`,
134
132
  'computed_status'
135
133
  )
136
134
  qb.leftJoin(`temp_op_calculation`, 'tmp_calc', 'tmp_calc.id = drg.id')
@@ -59,6 +59,13 @@ import { OrderInventory } from '../order-inventory/order-inventory'
59
59
  ],
60
60
  { unique: true }
61
61
  )
62
+ @Index(
63
+ 'ix_order-product_4',
64
+ (orderProduct: OrderProduct) => [
65
+ orderProduct.draftReleaseGood
66
+ ],
67
+ { unique: false }
68
+ )
62
69
  @ObjectType()
63
70
  export class OrderProduct {
64
71
  @PrimaryGeneratedColumn('uuid')
@@ -16,12 +16,13 @@ import { MarketplaceStore } from '@things-factory/integration-marketplace'
16
16
  import { Sellercraft, SellercraftStatus } from '@things-factory/integration-sellercraft'
17
17
  import { Sftp } from '@things-factory/integration-sftp'
18
18
  import { MarketplaceOrder, MarketplaceProductVariation } from '@things-factory/marketplace-base'
19
- import { sendNotification } from '@things-factory/notification'
19
+ // import { sendNotification } from '@things-factory/notification'
20
20
  import { Product, ProductBundleSetting } from '@things-factory/product-base'
21
21
  import { PartnerSetting, Setting } from '@things-factory/setting-base'
22
22
  import { Domain } from '@things-factory/shell'
23
23
  import { Inventory } from '@things-factory/warehouse-base'
24
24
 
25
+ // import { NewOrderProduct } from '../order-product/order-product-types'
25
26
  import {
26
27
  ATTACHMENT_TYPE,
27
28
  ORDER_INVENTORY_STATUS,
@@ -48,7 +49,6 @@ import { ShippingOrderPatch } from '../shipping-order/shipping-order-types'
48
49
  import { Vas } from '../vas/vas'
49
50
  import { ReleaseGood } from './release-good'
50
51
  import { bulkReleaseGoodsAvailableItemsFunction } from './release-good-query'
51
- import { NewOrderProduct } from '../order-product/order-product-types'
52
52
 
53
53
  @Resolver(ReleaseGood)
54
54
  export class ReleaseGoodMutation {
@@ -1294,6 +1294,7 @@ export async function bulkGenerateReleaseGood(
1294
1294
  refNo3: releaseGood.refNo3,
1295
1295
  releaseDate: releaseGood.releaseDate,
1296
1296
  ownTransport: releaseGood?.ownTransport || false,
1297
+ orderMethod: ORDER_METHOD.SELECT_BY_PRODUCT,
1297
1298
  status: ORDER_STATUS.PENDING,
1298
1299
  creator: user,
1299
1300
  updater: user
@@ -1,11 +1,10 @@
1
- import orderBy from 'lodash/orderBy'
2
1
  import { Arg, Args, Ctx, Directive, FieldResolver, Query, Resolver, Root } from 'type-graphql'
3
2
  import { EntityManager, getRepository, In, Repository, SelectQueryBuilder } from 'typeorm'
4
3
 
5
4
  import { Attachment } from '@things-factory/attachment-base'
6
5
  import { checkUserBelongsDomain, User } from '@things-factory/auth-base'
7
6
  import { Bizplace, getCompanyBizplace, getMyBizplace, getPermittedBizplaceIds } from '@things-factory/biz-base'
8
- import { Product } from '@things-factory/product-base'
7
+ import { logger } from '@things-factory/env'
9
8
  import { buildQuery, Domain, Filter, ListParam, Pagination, Sorting } from '@things-factory/shell'
10
9
  import { Inventory, LOCATION_TYPE } from '@things-factory/warehouse-base'
11
10
 
@@ -13,7 +12,7 @@ import { ATTACHMENT_TYPE, ORDER_INVENTORY_STATUS, ORDER_STATUS } from '../../con
13
12
  import { OrderInventory } from '../order-inventory/order-inventory'
14
13
  import { ShippingOrder } from '../shipping-order/shipping-order'
15
14
  import { ReleaseGood } from './release-good'
16
- import { InventoryInfos, NewReleaseGood, ReleasableInventoryList, ReleaseGoodList } from './release-good-types'
15
+ import { NewReleaseGood, ReleasableInventoryList, ReleaseGoodList } from './release-good-types'
17
16
 
18
17
  @Resolver(ReleaseGood)
19
18
  export class ReleaseGoodQuery {
@@ -166,56 +165,58 @@ export class ReleaseGoodQuery {
166
165
  @Arg('refNo', { nullable: true }) refNo?: string,
167
166
  @Arg('name', { nullable: true }) name?: string
168
167
  ): Promise<ReleaseGood> {
169
- const { domain, tx }: { domain: Domain; tx: EntityManager } = context.state
170
- let param: any
171
-
172
- if (name) param = { domain, name }
173
- else param = { domain, refNo }
174
-
175
- const releaseGood: ReleaseGood = await tx.getRepository(ReleaseGood).findOne({
176
- where: { ...param },
177
- relations: [
178
- 'domain',
179
- 'bizplace',
180
- 'shippingOrder',
181
- 'arrivalNotice',
182
- 'orderProducts',
183
- 'orderProducts.product',
184
- 'orderInventories',
185
- 'orderInventories.inventory',
186
- 'orderInventories.product',
187
- 'orderInventories.inventory.product',
188
- 'orderInventories.inventory.location',
189
- 'orderVass',
190
- 'orderVass.vas',
191
- 'orderVass.targetProduct',
192
- 'orderVass.inventory',
193
- 'creator',
194
- 'updater',
195
- 'deliverTo'
196
- ]
197
- })
168
+ try {
169
+ const { domain, tx }: { domain: Domain; tx: EntityManager } = context.state
170
+ let param: any
198
171
 
199
- if (releaseGood) {
200
- const roBizId: string = releaseGood.bizplace.id
201
- const shippingOrder: ShippingOrder = releaseGood.shippingOrder
202
- const foundAttachments: Attachment[] = await tx.getRepository(Attachment).find({
203
- where: {
204
- domain,
205
- refBy: releaseGood.id,
206
- category: ATTACHMENT_TYPE.DELIVERY_ORDER
207
- }
172
+ if (name) param = { domain, name }
173
+ else param = { domain, refNo }
174
+
175
+ const releaseGood: ReleaseGood = await tx.getRepository(ReleaseGood).findOne({
176
+ where: { ...param },
177
+ relations: [
178
+ 'domain',
179
+ 'bizplace',
180
+ 'shippingOrder',
181
+ 'arrivalNotice',
182
+ 'orderProducts',
183
+ 'orderProducts.product',
184
+ 'orderVass',
185
+ 'orderVass.vas',
186
+ 'orderVass.targetProduct',
187
+ 'orderVass.inventory',
188
+ 'creator',
189
+ 'updater'
190
+ ]
208
191
  })
209
192
 
210
- await prepOITempTable(domain, tx)
193
+ if (releaseGood) {
194
+ let oiQb: SelectQueryBuilder<OrderInventory> = tx
195
+ .getRepository(OrderInventory)
196
+ .createQueryBuilder('oi')
197
+ .leftJoinAndSelect('oi.inventory', 'inventory')
198
+ .leftJoinAndSelect('oi.product', 'product')
199
+ .leftJoinAndSelect('inventory.location', 'location')
200
+ .where('oi.domain_id = :domainId', { domainId: domain.id })
201
+ .andWhere('oi.release_good_id = :releaseGoodId', { releaseGoodId: releaseGood.id })
202
+ .andWhere('oi.status NOT IN (:...orderInventoryStatus)', {
203
+ orderInventoryStatus: [ORDER_INVENTORY_STATUS.COMPLETE_SPLIT, ORDER_INVENTORY_STATUS.REPLACED]
204
+ })
205
+ .orderBy('product.sku', 'ASC')
206
+
207
+ let orderInventories: OrderInventory[] = await oiQb.getMany()
208
+
209
+ const shippingOrder: ShippingOrder = releaseGood.shippingOrder
210
+ const foundAttachments: Attachment[] = await tx.getRepository(Attachment).find({
211
+ where: {
212
+ domain,
213
+ refBy: releaseGood.id,
214
+ category: ATTACHMENT_TYPE.DELIVERY_ORDER
215
+ }
216
+ })
211
217
 
212
- let invInfos = await Promise.all(
213
- releaseGood.orderInventories
214
- .filter(
215
- itm =>
216
- itm.status !== ORDER_INVENTORY_STATUS.COMPLETE_SPLIT && itm.status !== ORDER_INVENTORY_STATUS.REPLACED
217
- )
218
- .map(async (orderInv: OrderInventory) => {
218
+ let invInfos = await Promise.all(
219
+ orderInventories.map(async (orderInv: OrderInventory) => {
219
220
  if (orderInv?.inventory?.id) {
220
221
  const inventory: Inventory = orderInv.inventory
221
222
  return {
@@ -224,11 +225,11 @@ export class ReleaseGoodQuery {
224
225
  batchId: inventory.batchId,
225
226
  batchIdRef: inventory.batchIdRef,
226
227
  palletId: inventory.palletId,
227
- product: inventory.product,
228
- productIdRef: inventory.product.id,
229
- productName: `${inventory.product.name} (${inventory.product.description})`,
230
- packingType: inventory.packingType,
231
- packingSize: inventory.packingSize,
228
+ product: orderInv.product,
229
+ productIdRef: orderInv.product.id,
230
+ productName: `${orderInv.product.name} (${orderInv.product.description})`,
231
+ packingType: orderInv.packingType,
232
+ packingSize: orderInv.packingSize,
232
233
  location: inventory.location,
233
234
  qty: inventory.qty,
234
235
  lockedQty: inventory.lockedQty,
@@ -241,58 +242,31 @@ export class ReleaseGoodQuery {
241
242
  status: orderInv.status,
242
243
  refWorksheetId: orderInv.refWorksheetId
243
244
  }
244
- } else {
245
- const {
246
- batchId,
247
- batchIdRef,
248
- product,
249
- packingType,
250
- packingSize,
251
- releaseQty,
252
- releaseUomValue,
253
- refWorksheetId
254
- } = orderInv
255
- const { id: productIdRef, name: productName }: Product = product
256
- const { qty, uomValue, uom } = await getAvailableAmount(roBizId, productIdRef, batchId, packingType, tx)
257
-
258
- return {
259
- batchId,
260
- batchIdRef,
261
- productIdRef,
262
- product,
263
- productName,
264
- packingType,
265
- packingSize,
266
- qty,
267
- uom,
268
- uomValue,
269
- releaseQty,
270
- releaseUomValue,
271
- refWorksheetId
272
- }
273
245
  }
274
246
  })
275
- )
276
-
277
- const result = {
278
- ...releaseGood,
279
- attachment: foundAttachments,
280
- shippingOrderInfo: {
281
- containerNo: shippingOrder?.containerNo || '',
282
- containerSize: shippingOrder?.containerSize || '',
283
- containerLeavingDate: shippingOrder?.containerLeavingDate || '',
284
- containerArrivalDate: shippingOrder?.containerArrivalDate || '',
285
- containerClosureDate: shippingOrder?.containerClosureDate || '',
286
- shipName: shippingOrder?.shipName || '',
287
- remark: shippingOrder?.remark || '',
288
- remindContainerDeparture: shippingOrder?.remindContainerDeparture || null
289
- },
290
- inventoryInfos: orderBy<InventoryInfos>(invInfos, ['product.sku'], ['asc'])
291
- }
247
+ )
292
248
 
293
- dropOITempTable(domain, tx)
249
+ const result = {
250
+ ...releaseGood,
251
+ attachment: foundAttachments,
252
+ shippingOrderInfo: {
253
+ containerNo: shippingOrder?.containerNo || '',
254
+ containerSize: shippingOrder?.containerSize || '',
255
+ containerLeavingDate: shippingOrder?.containerLeavingDate || '',
256
+ containerArrivalDate: shippingOrder?.containerArrivalDate || '',
257
+ containerClosureDate: shippingOrder?.containerClosureDate || '',
258
+ shipName: shippingOrder?.shipName || '',
259
+ remark: shippingOrder?.remark || '',
260
+ remindContainerDeparture: shippingOrder?.remindContainerDeparture || null
261
+ },
262
+ inventoryInfos: invInfos
263
+ }
294
264
 
295
- return result
265
+ return result
266
+ }
267
+ } catch (error) {
268
+ logger.error(`release-good-query[releaseGoodDetail]: ${error}`)
269
+ throw new Error(error)
296
270
  }
297
271
  }
298
272
 
@@ -300,6 +274,7 @@ export class ReleaseGoodQuery {
300
274
  @Query(returns => ReleaseGoodList)
301
275
  async releaseGoodRequests(@Ctx() context: any, @Args() params: ListParam): Promise<ReleaseGoodList> {
302
276
  try {
277
+ console.time('t1')
303
278
  const { domain, user }: { domain: Domain; user: User } = context.state
304
279
 
305
280
  const statusFilter = params.filters.some(e => e.name === 'status')
@@ -310,6 +285,7 @@ export class ReleaseGoodQuery {
310
285
  const orderRemarkFilter = params.filters.find(param => param.name === 'orderRemark')
311
286
  const manifestedFilter = params.filters.find(param => param.name === 'manifested')
312
287
  const orderInfoFilter = params.filters.find(param => param.name === 'name')
288
+ const typeFilter = params.filters.find(param => param.name === 'type')?.value
313
289
 
314
290
  if (await checkUserBelongsDomain(domain, user)) {
315
291
  if (!statusFilter && !params.filters.some(e => e.name === 'name')) {
@@ -393,12 +369,16 @@ export class ReleaseGoodQuery {
393
369
  const fromDateParamIdx = params.filters.findIndex(param => param.name === 'fromDate')
394
370
  if (fromDateParamIdx >= 0) {
395
371
  let fromDateVal = new Date(params.filters[fromDateParamIdx].value)
372
+ let releaseDateFrom = params.filters.find(param => param.name === 'fromDate')?.value
396
373
  params.filters.splice(fromDateParamIdx, 1)
397
374
 
398
375
  params.filters.push({
399
- name: 'createdAt',
376
+ name: typeFilter == 'b2c' ? 'releaseDate' : 'createdAt',
400
377
  operator: 'gte',
401
- value: fromDateVal.toISOString(),
378
+ value:
379
+ typeFilter == 'b2c'
380
+ ? releaseDateFrom
381
+ : fromDateVal.toISOString(),
402
382
  relation: false
403
383
  })
404
384
  }
@@ -406,12 +386,16 @@ export class ReleaseGoodQuery {
406
386
  const toDateParamIdx = params.filters.findIndex(param => param.name === 'toDate')
407
387
  if (toDateParamIdx >= 0) {
408
388
  let toDateVal = new Date(params.filters[toDateParamIdx].value)
389
+ let releaseDateTo = params.filters.find(param => param.name === 'toDate')?.value
409
390
  params.filters.splice(toDateParamIdx, 1)
410
391
 
411
392
  params.filters.push({
412
- name: 'createdAt',
413
- operator: 'lt',
414
- value: new Date(toDateVal.setDate(toDateVal.getDate() + 1)).toISOString(),
393
+ name: typeFilter == 'b2c' ? 'releaseDate' : 'createdAt',
394
+ operator: typeFilter == 'b2c' ? 'lte' : 'lt',
395
+ value:
396
+ typeFilter == 'b2c'
397
+ ? releaseDateTo
398
+ : new Date(toDateVal.setDate(toDateVal.getDate() + 1)).toISOString(),
415
399
  relation: false
416
400
  })
417
401
  }
@@ -520,9 +504,10 @@ export class ReleaseGoodQuery {
520
504
  orderRemark: item?.remark ? true : false
521
505
  }
522
506
  })
523
-
507
+ console.timeEnd('t1')
524
508
  return { items, total }
525
509
  } catch (error) {
510
+ logger.error(`release-good-query[releaseGoodRequests]: ${error}`)
526
511
  throw error
527
512
  }
528
513
  }
@@ -679,7 +664,7 @@ export class ReleaseGoodQuery {
679
664
  async function prepOITempTable(domain: Domain, tx: EntityManager) {
680
665
  await tx.query(
681
666
  `
682
- CREATE TEMP TABLE oi AS (
667
+ CREATE TEMP TABLE oi ON COMMIT DROP AS (
683
668
  SELECT
684
669
  SUM(oi.release_qty) as release_qty,
685
670
  SUM(oi.release_uom_value) as release_uom_value,