@things-factory/sales-base 4.3.0-alpha.1 → 4.3.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 (173) hide show
  1. package/dist-server/constants/attachment-type.js +2 -1
  2. package/dist-server/constants/attachment-type.js.map +1 -1
  3. package/dist-server/constants/index.js +2 -5
  4. package/dist-server/constants/index.js.map +1 -1
  5. package/dist-server/constants/order.js +12 -3
  6. package/dist-server/constants/order.js.map +1 -1
  7. package/dist-server/constants/release-good.js +9 -0
  8. package/dist-server/constants/release-good.js.map +1 -0
  9. package/dist-server/controllers/ecommerce/index.js +1 -5
  10. package/dist-server/controllers/ecommerce/index.js.map +1 -1
  11. package/dist-server/controllers/index.js +1 -5
  12. package/dist-server/controllers/index.js.map +1 -1
  13. package/dist-server/errors/index.js +1 -5
  14. package/dist-server/errors/index.js.map +1 -1
  15. package/dist-server/errors/validation-error.js +1 -5
  16. package/dist-server/errors/validation-error.js.map +1 -1
  17. package/dist-server/index.js +1 -5
  18. package/dist-server/index.js.map +1 -1
  19. package/dist-server/service/arrival-notice/index.js +1 -5
  20. package/dist-server/service/arrival-notice/index.js.map +1 -1
  21. package/dist-server/service/claim/index.js +1 -5
  22. package/dist-server/service/claim/index.js.map +1 -1
  23. package/dist-server/service/claim-detail/index.js +1 -5
  24. package/dist-server/service/claim-detail/index.js.map +1 -1
  25. package/dist-server/service/claim-order/index.js +1 -5
  26. package/dist-server/service/claim-order/index.js.map +1 -1
  27. package/dist-server/service/collection-order/index.js +1 -5
  28. package/dist-server/service/collection-order/index.js.map +1 -1
  29. package/dist-server/service/delivery-order/index.js +1 -5
  30. package/dist-server/service/delivery-order/index.js.map +1 -1
  31. package/dist-server/service/draft-release-good/draft-release-good-mutation.js +501 -0
  32. package/dist-server/service/draft-release-good/draft-release-good-mutation.js.map +1 -0
  33. package/dist-server/service/draft-release-good/draft-release-good-query.js +289 -0
  34. package/dist-server/service/draft-release-good/draft-release-good-query.js.map +1 -0
  35. package/dist-server/service/draft-release-good/draft-release-good-type.js +364 -0
  36. package/dist-server/service/draft-release-good/draft-release-good-type.js.map +1 -0
  37. package/dist-server/service/draft-release-good/draft-release-good.js +321 -0
  38. package/dist-server/service/draft-release-good/draft-release-good.js.map +1 -0
  39. package/dist-server/service/draft-release-good/index.js +21 -0
  40. package/dist-server/service/draft-release-good/index.js.map +1 -0
  41. package/dist-server/service/goods-receival-note/index.js +1 -5
  42. package/dist-server/service/goods-receival-note/index.js.map +1 -1
  43. package/dist-server/service/index.js +48 -24
  44. package/dist-server/service/index.js.map +1 -1
  45. package/dist-server/service/inventory-check/index.js +1 -5
  46. package/dist-server/service/inventory-check/index.js.map +1 -1
  47. package/dist-server/service/invoice/index.js +1 -5
  48. package/dist-server/service/invoice/index.js.map +1 -1
  49. package/dist-server/service/invoice-product/index.js +1 -5
  50. package/dist-server/service/invoice-product/index.js.map +1 -1
  51. package/dist-server/service/job-sheet/index.js +1 -5
  52. package/dist-server/service/job-sheet/index.js.map +1 -1
  53. package/dist-server/service/order-inventory/index.js +1 -5
  54. package/dist-server/service/order-inventory/index.js.map +1 -1
  55. package/dist-server/service/order-inventory/order-inventory-query.js +38 -1
  56. package/dist-server/service/order-inventory/order-inventory-query.js.map +1 -1
  57. package/dist-server/service/order-inventory/order-inventory-types.js +9 -1
  58. package/dist-server/service/order-inventory/order-inventory-types.js.map +1 -1
  59. package/dist-server/service/order-inventory/order-inventory.js +5 -1
  60. package/dist-server/service/order-inventory/order-inventory.js.map +1 -1
  61. package/dist-server/service/order-product/index.js +1 -5
  62. package/dist-server/service/order-product/index.js.map +1 -1
  63. package/dist-server/service/order-product/order-product-types.js +13 -13
  64. package/dist-server/service/order-product/order-product-types.js.map +1 -1
  65. package/dist-server/service/order-product/order-product.js +39 -4
  66. package/dist-server/service/order-product/order-product.js.map +1 -1
  67. package/dist-server/service/order-tote/index.js +21 -0
  68. package/dist-server/service/order-tote/index.js.map +1 -0
  69. package/dist-server/service/order-tote/order-tote-mutation.js +56 -0
  70. package/dist-server/service/order-tote/order-tote-mutation.js.map +1 -0
  71. package/dist-server/service/order-tote/order-tote-query.js +123 -0
  72. package/dist-server/service/order-tote/order-tote-query.js.map +1 -0
  73. package/dist-server/service/order-tote/order-tote-types.js +79 -0
  74. package/dist-server/service/order-tote/order-tote-types.js.map +1 -0
  75. package/dist-server/service/order-tote/order-tote.js +91 -0
  76. package/dist-server/service/order-tote/order-tote.js.map +1 -0
  77. package/dist-server/service/order-tote-item/index.js +21 -0
  78. package/dist-server/service/order-tote-item/index.js.map +1 -0
  79. package/dist-server/service/order-tote-item/order-tote-item-mutation.js +56 -0
  80. package/dist-server/service/order-tote-item/order-tote-item-mutation.js.map +1 -0
  81. package/dist-server/service/order-tote-item/order-tote-item-query.js +100 -0
  82. package/dist-server/service/order-tote-item/order-tote-item-query.js.map +1 -0
  83. package/dist-server/service/order-tote-item/order-tote-item-types.js +91 -0
  84. package/dist-server/service/order-tote-item/order-tote-item-types.js.map +1 -0
  85. package/dist-server/service/order-tote-item/order-tote-item.js +104 -0
  86. package/dist-server/service/order-tote-item/order-tote-item.js.map +1 -0
  87. package/dist-server/service/order-tote-seal/index.js +21 -0
  88. package/dist-server/service/order-tote-seal/index.js.map +1 -0
  89. package/dist-server/service/order-tote-seal/order-tote-seal-mutation.js +56 -0
  90. package/dist-server/service/order-tote-seal/order-tote-seal-mutation.js.map +1 -0
  91. package/dist-server/service/order-tote-seal/order-tote-seal-query.js +97 -0
  92. package/dist-server/service/order-tote-seal/order-tote-seal-query.js.map +1 -0
  93. package/dist-server/service/order-tote-seal/order-tote-seal-types.js +71 -0
  94. package/dist-server/service/order-tote-seal/order-tote-seal-types.js.map +1 -0
  95. package/dist-server/service/order-tote-seal/order-tote-seal.js +71 -0
  96. package/dist-server/service/order-tote-seal/order-tote-seal.js.map +1 -0
  97. package/dist-server/service/order-vas/index.js +1 -5
  98. package/dist-server/service/order-vas/index.js.map +1 -1
  99. package/dist-server/service/others/index.js +1 -5
  100. package/dist-server/service/others/index.js.map +1 -1
  101. package/dist-server/service/others/other-query.js +37 -2
  102. package/dist-server/service/others/other-query.js.map +1 -1
  103. package/dist-server/service/purchase-order/index.js +1 -5
  104. package/dist-server/service/purchase-order/index.js.map +1 -1
  105. package/dist-server/service/purchase-order-other-charge/index.js +1 -5
  106. package/dist-server/service/purchase-order-other-charge/index.js.map +1 -1
  107. package/dist-server/service/release-good/index.js +1 -5
  108. package/dist-server/service/release-good/index.js.map +1 -1
  109. package/dist-server/service/release-good/release-good-mutation.js +23 -1
  110. package/dist-server/service/release-good/release-good-mutation.js.map +1 -1
  111. package/dist-server/service/release-good/release-good-query.js +28 -2
  112. package/dist-server/service/release-good/release-good-query.js.map +1 -1
  113. package/dist-server/service/release-good/release-good.js +32 -12
  114. package/dist-server/service/release-good/release-good.js.map +1 -1
  115. package/dist-server/service/retail-replenishment-order/index.js +1 -5
  116. package/dist-server/service/retail-replenishment-order/index.js.map +1 -1
  117. package/dist-server/service/return-order/index.js +1 -5
  118. package/dist-server/service/return-order/index.js.map +1 -1
  119. package/dist-server/service/reverse-kitting-order/index.js +1 -5
  120. package/dist-server/service/reverse-kitting-order/index.js.map +1 -1
  121. package/dist-server/service/reverse-kitting-order-inventory/index.js +1 -5
  122. package/dist-server/service/reverse-kitting-order-inventory/index.js.map +1 -1
  123. package/dist-server/service/shipping-order/index.js +1 -5
  124. package/dist-server/service/shipping-order/index.js.map +1 -1
  125. package/dist-server/service/transfer-order/index.js +1 -5
  126. package/dist-server/service/transfer-order/index.js.map +1 -1
  127. package/dist-server/service/vas/index.js +1 -5
  128. package/dist-server/service/vas/index.js.map +1 -1
  129. package/dist-server/service/vas-order/index.js +1 -5
  130. package/dist-server/service/vas-order/index.js.map +1 -1
  131. package/dist-server/utils/index.js +1 -5
  132. package/dist-server/utils/index.js.map +1 -1
  133. package/dist-server/utils/inventory-util.js +258 -99
  134. package/dist-server/utils/inventory-util.js.map +1 -1
  135. package/dist-server/utils/order-no-generator.js +7 -0
  136. package/dist-server/utils/order-no-generator.js.map +1 -1
  137. package/package.json +13 -13
  138. package/server/constants/attachment-type.ts +2 -1
  139. package/server/constants/index.ts +1 -0
  140. package/server/constants/order.ts +12 -2
  141. package/server/constants/release-good.ts +6 -0
  142. package/server/service/draft-release-good/draft-release-good-mutation.ts +671 -0
  143. package/server/service/draft-release-good/draft-release-good-query.ts +314 -0
  144. package/server/service/draft-release-good/draft-release-good-type.ts +261 -0
  145. package/server/service/draft-release-good/draft-release-good.ts +270 -0
  146. package/server/service/draft-release-good/index.ts +9 -0
  147. package/server/service/index.ts +51 -21
  148. package/server/service/order-inventory/order-inventory-query.ts +40 -2
  149. package/server/service/order-inventory/order-inventory-types.ts +6 -0
  150. package/server/service/order-inventory/order-inventory.ts +5 -5
  151. package/server/service/order-product/order-product-types.ts +5 -3
  152. package/server/service/order-product/order-product.ts +30 -3
  153. package/server/service/order-tote/index.ts +9 -0
  154. package/server/service/order-tote/order-tote-mutation.ts +30 -0
  155. package/server/service/order-tote/order-tote-query.ts +114 -0
  156. package/server/service/order-tote/order-tote-types.ts +47 -0
  157. package/server/service/order-tote/order-tote.ts +62 -0
  158. package/server/service/order-tote-item/index.ts +9 -0
  159. package/server/service/order-tote-item/order-tote-item-mutation.ts +30 -0
  160. package/server/service/order-tote-item/order-tote-item-query.ts +88 -0
  161. package/server/service/order-tote-item/order-tote-item-types.ts +56 -0
  162. package/server/service/order-tote-item/order-tote-item.ts +72 -0
  163. package/server/service/order-tote-seal/index.ts +9 -0
  164. package/server/service/order-tote-seal/order-tote-seal-mutation.ts +30 -0
  165. package/server/service/order-tote-seal/order-tote-seal-query.ts +60 -0
  166. package/server/service/order-tote-seal/order-tote-seal-types.ts +41 -0
  167. package/server/service/order-tote-seal/order-tote-seal.ts +46 -0
  168. package/server/service/others/other-query.ts +43 -8
  169. package/server/service/release-good/release-good-mutation.ts +24 -2
  170. package/server/service/release-good/release-good-query.ts +57 -30
  171. package/server/service/release-good/release-good.ts +28 -9
  172. package/server/utils/inventory-util.ts +287 -106
  173. package/server/utils/order-no-generator.ts +42 -48
@@ -0,0 +1,46 @@
1
+ import { Field, ObjectType } from 'type-graphql'
2
+ import { Column, Entity, Index, ManyToOne, PrimaryGeneratedColumn, RelationId, UpdateDateColumn } from 'typeorm'
3
+
4
+ import { User } from '@things-factory/auth-base'
5
+ import { Domain } from '@things-factory/shell'
6
+ import { OrderTote } from '../order-tote/order-tote'
7
+
8
+ @Entity()
9
+ @Index('ix_order_tote_seal_0', (orderToteSeal: OrderToteSeal) => [orderToteSeal.name], { unique: true })
10
+ @ObjectType()
11
+ export class OrderToteSeal {
12
+ @PrimaryGeneratedColumn('uuid')
13
+ @Field()
14
+ id: string
15
+
16
+ @ManyToOne(type => Domain)
17
+ @Field()
18
+ domain: Domain
19
+
20
+ @RelationId((orderToteSeal: OrderToteSeal) => orderToteSeal.domain)
21
+ domainId: string
22
+
23
+ @Column()
24
+ @Field()
25
+ name: string
26
+
27
+ @ManyToOne(type => OrderTote)
28
+ @Field(type => OrderTote, { nullable: true })
29
+ orderTote?: OrderTote
30
+
31
+ @RelationId((orderToteSeal: OrderToteSeal) => orderToteSeal.orderTote)
32
+ orderToteId: string
33
+
34
+ @UpdateDateColumn()
35
+ @Field({ nullable: true })
36
+ updatedAt: Date
37
+
38
+ @ManyToOne(type => User, {
39
+ nullable: true
40
+ })
41
+ @Field({ nullable: true })
42
+ updater: User
43
+
44
+ @RelationId((orderToteSeal: OrderToteSeal) => orderToteSeal.updater)
45
+ updaterId: string
46
+ }
@@ -20,6 +20,41 @@ import { InventoryUtil } from '../../utils'
20
20
 
21
21
  @Resolver()
22
22
  export class OtherQuery {
23
+ @Directive('@privilege(category: "inventory", privilege: "query")')
24
+ @Directive('@transaction')
25
+ @Query(returns => InventoryProductGroupList)
26
+ async allBizplaceProductInventory(@Ctx() context: any, @Args() params: ListParam): Promise<InventoryProductGroupList> {
27
+ const { domain, user, tx, bizplace }: { domain: Domain; user: User; tx: EntityManager; bizplace: Bizplace } =
28
+ context.state
29
+
30
+ let permittedBizplaces: Bizplace[] = await getPermittedBizplaces(domain, user)
31
+
32
+ let bizplaceId: any = params.filters.find(filter => filter.name === 'bizplace_id').value
33
+ let foundPermittedBizplace: Bizplace
34
+ let companyBizplace: Bizplace
35
+
36
+ if (bizplaceId) {
37
+ foundPermittedBizplace = permittedBizplaces.find(biz => biz.id == bizplaceId)
38
+
39
+ if (foundPermittedBizplace) {
40
+ if (!foundPermittedBizplace.company?.id) {
41
+ foundPermittedBizplace = await tx.getRepository(Bizplace).findOne(foundPermittedBizplace.id, {
42
+ relations: ['company', 'company.domain']
43
+ })
44
+ }
45
+ const companyDomain: Domain = foundPermittedBizplace.company.domain
46
+ companyBizplace = await tx.getRepository(Bizplace).findOne({ where: { domain: companyDomain } })
47
+ }
48
+ }
49
+
50
+ const bizplaces: Bizplace[] = [foundPermittedBizplace, companyBizplace]
51
+ if (bizplace) bizplaces.push(bizplace)
52
+
53
+ const { items, total } = await InventoryUtil.bizplaceProductInventory(bizplaces, params, context, tx)
54
+
55
+ return { items, total }
56
+ }
57
+
23
58
  @Directive('@privilege(category: "inventory", privilege: "query")')
24
59
  @Directive('@transaction')
25
60
  @Query(returns => InventoryProductGroupList)
@@ -165,11 +200,11 @@ export class OtherQuery {
165
200
  inventory:
166
201
  total > 0
167
202
  ? {
168
- ...items[0],
169
- remainQty: total > 0 ? items[0].remainQty : null,
170
- remainUomValue: total > 0 ? items[0].remainUomValue : null,
171
- remainUomValueWithUom: total > 0 ? items[0].remainUomValueWithUom : ''
172
- }
203
+ ...items[0],
204
+ remainQty: total > 0 ? items[0].remainQty : null,
205
+ remainUomValue: total > 0 ? items[0].remainUomValue : null,
206
+ remainUomValueWithUom: total > 0 ? items[0].remainUomValueWithUom : ''
207
+ }
173
208
  : null,
174
209
  productId: total > 0 ? items[0].productId : null,
175
210
  productSKU: total > 0 ? items[0].productSKU : orderInventory.productSKU,
@@ -304,7 +339,7 @@ export class OtherQuery {
304
339
  let productDetail: ProductDetail
305
340
  const hasConditions: boolean = Boolean(
306
341
  (orderProduct?.packingType && orderProduct?.packingType.trim() != '') ||
307
- (orderProduct?.uom && orderProduct?.uom.trim() != '')
342
+ (orderProduct?.uom && orderProduct?.uom.trim() != '')
308
343
  )
309
344
  let productDetailCondition: any = { product: foundProduct }
310
345
 
@@ -327,8 +362,8 @@ export class OtherQuery {
327
362
  ? productDetail.uomValue
328
363
  : null
329
364
  : orderProduct?.uomValue
330
- ? orderProduct.uomValue
331
- : productDetail.uomValue
365
+ ? orderProduct.uomValue
366
+ : productDetail.uomValue
332
367
 
333
368
  newOrderProduct = {
334
369
  ...orderProduct,
@@ -134,7 +134,7 @@ export class ReleaseGoodMutation {
134
134
  context,
135
135
  tx
136
136
  )
137
- } catch (error) {}
137
+ } catch (error) { }
138
138
 
139
139
  if (errorsCaught.length)
140
140
  throw new ValidationError({
@@ -226,7 +226,8 @@ export class ReleaseGoodMutation {
226
226
 
227
227
  foundReleaseGood = await tx.getRepository(ReleaseGood).save({
228
228
  ...foundReleaseGood,
229
- ...releaseGood
229
+ ...releaseGood,
230
+ remark: releaseGood?.remark ? releaseGood.remark : null
230
231
  })
231
232
 
232
233
  return foundReleaseGood
@@ -300,6 +301,27 @@ export class ReleaseGoodMutation {
300
301
 
301
302
  return receivedRO
302
303
  }
304
+
305
+ @Directive('@privilege(category: "order_customer", privilege: "mutation")')
306
+ @Directive('@transaction')
307
+ @Mutation(returns => Boolean)
308
+ async executeOrderRemark(@Arg('releaseGoodNo') releaseGoodNo: string, @Ctx() context: any): Promise<boolean> {
309
+ const { domain, tx, user } = context.state
310
+
311
+ await tx.getRepository(ReleaseGood).update(
312
+ {
313
+ domain,
314
+ name: releaseGoodNo
315
+ },
316
+ {
317
+ checkedRemarkAt: new Date(),
318
+ checkedRemarkUser: user,
319
+ checkedRemarkBy: user.name
320
+ }
321
+ )
322
+
323
+ return true
324
+ }
303
325
  }
304
326
 
305
327
  export async function deleteReleaseGood(tx: EntityManager, name: string, user: User, domain: Domain): Promise<boolean> {
@@ -264,6 +264,7 @@ export class ReleaseGoodQuery {
264
264
  const noOfItemsFilter = params.filters.find(param => param.name === 'noOfItems')
265
265
  const skuFilter = params.filters.find(param => param.name === 'sku')
266
266
  const routeId = params.filters.find(param => param.name === 'routeId')
267
+ const orderRemarkFilter = params.filters.find(param => param.name === 'orderRemark')
267
268
 
268
269
  if (await checkUserBelongsDomain(domain, user)) {
269
270
  if (!statusFilter && !params.filters.some(e => e.name === 'name')) {
@@ -298,6 +299,27 @@ export class ReleaseGoodQuery {
298
299
  }
299
300
  }
300
301
 
302
+ if (orderRemarkFilter) {
303
+ const orderRemarkIdx = params.filters.findIndex(param => param.name === 'orderRemark')
304
+ if (orderRemarkFilter.value == true) {
305
+ params.filters.splice(orderRemarkIdx, 1)
306
+ params.filters.push({
307
+ name: 'remark',
308
+ operator: 'is_not_null',
309
+ value: null,
310
+ relation: false
311
+ })
312
+ } else {
313
+ params.filters.splice(orderRemarkIdx, 1)
314
+ params.filters.push({
315
+ name: 'remark',
316
+ operator: 'is_null',
317
+ value: null,
318
+ relation: false
319
+ })
320
+ }
321
+ }
322
+
301
323
  const fromDateParamIdx = params.filters.findIndex(param => param.name === 'fromDate')
302
324
  if (fromDateParamIdx >= 0) {
303
325
  let fromDateVal = new Date(params.filters[fromDateParamIdx].value)
@@ -378,7 +400,14 @@ export class ReleaseGoodQuery {
378
400
 
379
401
  qb.orderBy(sort)
380
402
 
381
- const [items, total] = await qb.getManyAndCount()
403
+ let [items, total] = await qb.getManyAndCount()
404
+
405
+ items = items.map(item => {
406
+ return {
407
+ ...item,
408
+ orderRemark: item?.remark ? true : false
409
+ }
410
+ })
382
411
 
383
412
  return { items, total }
384
413
  } catch (error) {
@@ -438,27 +467,24 @@ export class ReleaseGoodQuery {
438
467
  ${batchId ? `AND LOWER(${INV_ALIAS}.batch_id) LIKE '%${batchId.toLowerCase()}%'` : ''}
439
468
  ${packingType ? `AND LOWER(${INV_ALIAS}.packing_type) LIKE '%${packingType.toLowerCase()}%'` : ''}
440
469
  ${containerNo ? `AND LOWER(${GAN_ALIAS}.container_no) LIKE '%${containerNo.toLowerCase()}%'` : ''}
441
- ${
442
- product?.length > 0 && product[0]
443
- ? `AND ${PROD_ALIAS}.id IN (${product.map((id: string) => `'${id}'`).join(', ')})`
444
- : product[0] === null
445
- ? `AND ${PROD_ALIAS}.id isnull`
446
- : ''
447
- }
448
- ${
449
- inventory?.length > 0
450
- ? `
451
- AND (${INV_ALIAS}.batch_id, ${PROD_ALIAS}.id) ${
452
- filters.find((filter: { name: string; operator: string; value: any }) => filter.name === 'inventory')
453
- .operator
454
- } (
470
+ ${product?.length > 0 && product[0]
471
+ ? `AND ${PROD_ALIAS}.id IN (${product.map((id: string) => `'${id}'`).join(', ')})`
472
+ : product[0] === null
473
+ ? `AND ${PROD_ALIAS}.id isnull`
474
+ : ''
475
+ }
476
+ ${inventory?.length > 0
477
+ ? `
478
+ AND (${INV_ALIAS}.batch_id, ${PROD_ALIAS}.id) ${filters.find((filter: { name: string; operator: string; value: any }) => filter.name === 'inventory')
479
+ .operator
480
+ } (
455
481
  ${inventory
456
- .map((inv: { batchId: string; productId: string }) => `('${inv.batchId}', '${inv.productId}')`)
457
- .join(', ')}
482
+ .map((inv: { batchId: string; productId: string }) => `('${inv.batchId}', '${inv.productId}')`)
483
+ .join(', ')}
458
484
  )
459
485
  `
460
- : ''
461
- }
486
+ : ''
487
+ }
462
488
  `
463
489
 
464
490
  // ${product?.length > 0 ? `AND ${PROD_ALIAS}.id IN (${product.map((id: string) => id ? `'${id}'` : null).join(', ')})` : ''}
@@ -632,7 +658,8 @@ export async function bulkReleaseGoodsAvailableItemsFunction(
632
658
  packing_type: raw.packingType,
633
659
  packing_size: raw.packingSize,
634
660
  uom: raw.uom,
635
- release_qty: raw.releaseQty
661
+ releaseQty: raw.releaseQty,
662
+ release_qty: raw.releaseQty,
636
663
  }
637
664
  })
638
665
  )
@@ -812,16 +839,16 @@ function _extractData(rawData, validatedData) {
812
839
  !raw.productId || !raw.productDetailId
813
840
  ? 'inventory or product not found'
814
841
  : raw.releaseQty <= 0
815
- ? 'invalid release qty'
816
- : raw.assignedQty < raw.releaseQty
817
- ? 'insufficient stock'
818
- : raw.releaseDate == ''
819
- ? 'release date is empty'
820
- : releaseDate < _getStdDateStr(new Date())
821
- ? 'backdate is not allowed'
822
- : !raw.refNo
823
- ? 'ref no is empty'
824
- : ''
842
+ ? 'invalid release qty'
843
+ : raw.assignedQty < raw.releaseQty
844
+ ? 'insufficient stock'
845
+ : raw.releaseDate == ''
846
+ ? 'release date is empty'
847
+ : releaseDate < _getStdDateStr(new Date())
848
+ ? 'backdate is not allowed'
849
+ : !raw.refNo
850
+ ? 'ref no is empty'
851
+ : ''
825
852
  }
826
853
  })
827
854
  }
@@ -28,25 +28,29 @@ import {
28
28
  OrderProduct,
29
29
  OrderVas,
30
30
  ShippingOrder,
31
- ShippingOrderInfo
31
+ ShippingOrderInfo,
32
32
  } from '../'
33
33
 
34
+ import { ReleaseOrderType } from '../../constants'
35
+
34
36
  const ORMCONFIG = config.get('ormconfig', {})
35
37
  const DATABASE_TYPE = ORMCONFIG.type
36
38
 
37
- export enum ReleaseOrderType {
38
- B2B = 'b2b',
39
- B2C = 'b2c'
40
- }
39
+ // export enum ReleaseOrderType {
40
+ // B2B = 'b2b',
41
+ // B2C = 'b2c'
42
+ // }
41
43
 
42
44
  export enum DispatchmentStatus {
43
45
  READY_TO_DISPATCH = 'READY_TO_DISPATCH',
44
46
  DISPATCHED = 'DISPATCHED'
45
47
  }
48
+
46
49
  @Entity()
47
50
  @Index('ix_release-good_0', (releaseGood: ReleaseGood) => [releaseGood.domain, releaseGood.name], { unique: true })
48
51
  @Index('ix_release-good_1', (releaseGood: ReleaseGood) => [releaseGood.domain, releaseGood.refNo])
49
52
  @Index('ix_release-good_2', (releaseGood: ReleaseGood) => [releaseGood.domain, releaseGood.refNo2])
53
+ @Index('ix_release-good_3', (releaseGood: ReleaseGood) => [releaseGood.domain, releaseGood.remark])
50
54
  @ObjectType()
51
55
  export class ReleaseGood {
52
56
  @PrimaryGeneratedColumn('uuid')
@@ -92,8 +96,8 @@ export class ReleaseGood {
92
96
  DATABASE_TYPE == 'postgres' || DATABASE_TYPE == 'mysql' || DATABASE_TYPE == 'mariadb'
93
97
  ? 'enum'
94
98
  : DATABASE_TYPE == 'oracle'
95
- ? 'varchar2'
96
- : 'smallint',
99
+ ? 'varchar2'
100
+ : 'smallint',
97
101
  enum: ReleaseOrderType,
98
102
  default: ReleaseOrderType.B2B
99
103
  })
@@ -160,8 +164,8 @@ export class ReleaseGood {
160
164
  DATABASE_TYPE == 'postgres' || DATABASE_TYPE == 'mysql' || DATABASE_TYPE == 'mariadb'
161
165
  ? 'enum'
162
166
  : DATABASE_TYPE == 'oracle'
163
- ? 'varchar2'
164
- : 'smallint',
167
+ ? 'varchar2'
168
+ : 'smallint',
165
169
  enum: DispatchmentStatus,
166
170
  default: DispatchmentStatus.READY_TO_DISPATCH
167
171
  })
@@ -306,6 +310,18 @@ export class ReleaseGood {
306
310
  @Field()
307
311
  updatedAt: Date
308
312
 
313
+ @ManyToOne(type => User)
314
+ @Field(type => User, { nullable: true })
315
+ checkedRemarkUser: User
316
+
317
+ @Column({ nullable: true })
318
+ @Field({ nullable: true })
319
+ checkedRemarkBy: string
320
+
321
+ @Column({ nullable: true })
322
+ @Field({ nullable: true })
323
+ checkedRemarkAt: Date
324
+
309
325
  @ManyToOne(type => User)
310
326
  @Field(type => User, { nullable: true })
311
327
  acceptedBy: User
@@ -405,4 +421,7 @@ export class ReleaseGood {
405
421
  @Column({ nullable: true })
406
422
  @Field({ nullable: true })
407
423
  stopId: string
424
+
425
+ @Field({ nullable: true })
426
+ orderRemark: Boolean
408
427
  }