@things-factory/sales-base 6.0.0-alpha.1 → 6.0.0-alpha.12

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 (97) hide show
  1. package/dist-server/controllers/ecommerce/ecommerce-controller.js +2 -2
  2. package/dist-server/controllers/ecommerce/ecommerce-controller.js.map +1 -1
  3. package/dist-server/controllers/ecommerce/sellercraft-controller.js +3 -3
  4. package/dist-server/controllers/ecommerce/sellercraft-controller.js.map +1 -1
  5. package/dist-server/service/arrival-notice/arrival-notice-mutation.js +26 -13
  6. package/dist-server/service/arrival-notice/arrival-notice-mutation.js.map +1 -1
  7. package/dist-server/service/arrival-notice/arrival-notice-query.js +2 -2
  8. package/dist-server/service/arrival-notice/arrival-notice-query.js.map +1 -1
  9. package/dist-server/service/arrival-notice/arrival-notice-types.js +4 -0
  10. package/dist-server/service/arrival-notice/arrival-notice-types.js.map +1 -1
  11. package/dist-server/service/arrival-notice/arrival-notice.js +5 -0
  12. package/dist-server/service/arrival-notice/arrival-notice.js.map +1 -1
  13. package/dist-server/service/claim/claim-mutation.js +9 -9
  14. package/dist-server/service/claim/claim-mutation.js.map +1 -1
  15. package/dist-server/service/claim/claim-query.js +4 -4
  16. package/dist-server/service/claim/claim-query.js.map +1 -1
  17. package/dist-server/service/delivery-order/delivery-order-mutation.js +1 -1
  18. package/dist-server/service/delivery-order/delivery-order-mutation.js.map +1 -1
  19. package/dist-server/service/delivery-order/delivery-order-query.js.map +1 -1
  20. package/dist-server/service/draft-release-good/draft-release-good-mutation.js +7 -5
  21. package/dist-server/service/draft-release-good/draft-release-good-mutation.js.map +1 -1
  22. package/dist-server/service/draft-release-good/draft-release-good-query.js +4 -4
  23. package/dist-server/service/draft-release-good/draft-release-good-query.js.map +1 -1
  24. package/dist-server/service/draft-release-good/draft-release-good.js +5 -0
  25. package/dist-server/service/draft-release-good/draft-release-good.js.map +1 -1
  26. package/dist-server/service/goods-receival-note/goods-receival-note-query.js +3 -3
  27. package/dist-server/service/goods-receival-note/goods-receival-note-query.js.map +1 -1
  28. package/dist-server/service/job-sheet/job-sheet-mutation.js +1 -1
  29. package/dist-server/service/job-sheet/job-sheet-mutation.js.map +1 -1
  30. package/dist-server/service/job-sheet/job-sheet-query.js +1 -1
  31. package/dist-server/service/job-sheet/job-sheet-query.js.map +1 -1
  32. package/dist-server/service/order-inventory/order-inventory-query.js +2 -2
  33. package/dist-server/service/order-inventory/order-inventory-query.js.map +1 -1
  34. package/dist-server/service/order-tote/order-tote-query.js +2 -2
  35. package/dist-server/service/order-tote/order-tote-query.js.map +1 -1
  36. package/dist-server/service/others/other-query.js +19 -11
  37. package/dist-server/service/others/other-query.js.map +1 -1
  38. package/dist-server/service/purchase-order/purchase-order-mutation.js +2 -2
  39. package/dist-server/service/purchase-order/purchase-order-mutation.js.map +1 -1
  40. package/dist-server/service/purchase-order/purchase-order-query.js +1 -1
  41. package/dist-server/service/purchase-order/purchase-order-query.js.map +1 -1
  42. package/dist-server/service/release-good/release-good-mutation.js +90 -55
  43. package/dist-server/service/release-good/release-good-mutation.js.map +1 -1
  44. package/dist-server/service/release-good/release-good-query.js +3 -3
  45. package/dist-server/service/release-good/release-good-query.js.map +1 -1
  46. package/dist-server/service/release-good/release-good.js +5 -0
  47. package/dist-server/service/release-good/release-good.js.map +1 -1
  48. package/dist-server/service/retail-replenishment-order/retail-replenishment-order-mutation.js +3 -3
  49. package/dist-server/service/retail-replenishment-order/retail-replenishment-order-mutation.js.map +1 -1
  50. package/dist-server/service/reverse-kitting-order/reverse-kitting-order-mutation.js +3 -3
  51. package/dist-server/service/reverse-kitting-order/reverse-kitting-order-mutation.js.map +1 -1
  52. package/dist-server/service/reverse-kitting-order/reverse-kitting-order-query.js +3 -3
  53. package/dist-server/service/reverse-kitting-order/reverse-kitting-order-query.js.map +1 -1
  54. package/dist-server/service/reverse-kitting-order-inventory/reverse-kitting-order-inventory-mutation.js +1 -1
  55. package/dist-server/service/reverse-kitting-order-inventory/reverse-kitting-order-inventory-mutation.js.map +1 -1
  56. package/dist-server/service/shipping-order/shipping-order-mutation.js +1 -1
  57. package/dist-server/service/shipping-order/shipping-order-mutation.js.map +1 -1
  58. package/dist-server/service/shipping-order/shipping-order-query.js +1 -1
  59. package/dist-server/service/shipping-order/shipping-order-query.js.map +1 -1
  60. package/dist-server/service/transfer-order/transfer-order-mutation.js +3 -3
  61. package/dist-server/service/transfer-order/transfer-order-mutation.js.map +1 -1
  62. package/dist-server/service/vas-order/vas-order-query.js +1 -1
  63. package/dist-server/service/vas-order/vas-order-query.js.map +1 -1
  64. package/dist-server/tsconfig.tsbuildinfo +1 -1
  65. package/package.json +13 -13
  66. package/server/controllers/ecommerce/ecommerce-controller.ts +2 -2
  67. package/server/controllers/ecommerce/sellercraft-controller.ts +3 -3
  68. package/server/service/arrival-notice/arrival-notice-mutation.ts +21 -8
  69. package/server/service/arrival-notice/arrival-notice-query.ts +2 -2
  70. package/server/service/arrival-notice/arrival-notice-types.ts +3 -0
  71. package/server/service/arrival-notice/arrival-notice.ts +4 -0
  72. package/server/service/claim/claim-mutation.ts +9 -9
  73. package/server/service/claim/claim-query.ts +4 -4
  74. package/server/service/delivery-order/delivery-order-mutation.ts +17 -17
  75. package/server/service/delivery-order/delivery-order-query.ts +1 -1
  76. package/server/service/draft-release-good/draft-release-good-mutation.ts +7 -5
  77. package/server/service/draft-release-good/draft-release-good-query.ts +4 -4
  78. package/server/service/draft-release-good/draft-release-good.ts +4 -0
  79. package/server/service/goods-receival-note/goods-receival-note-query.ts +3 -3
  80. package/server/service/job-sheet/job-sheet-mutation.ts +1 -1
  81. package/server/service/job-sheet/job-sheet-query.ts +1 -1
  82. package/server/service/order-inventory/order-inventory-query.ts +2 -2
  83. package/server/service/order-tote/order-tote-query.ts +2 -2
  84. package/server/service/others/other-query.ts +17 -9
  85. package/server/service/purchase-order/purchase-order-mutation.ts +2 -2
  86. package/server/service/purchase-order/purchase-order-query.ts +1 -1
  87. package/server/service/release-good/release-good-mutation.ts +110 -59
  88. package/server/service/release-good/release-good-query.ts +3 -3
  89. package/server/service/release-good/release-good.ts +4 -0
  90. package/server/service/retail-replenishment-order/retail-replenishment-order-mutation.ts +3 -3
  91. package/server/service/reverse-kitting-order/reverse-kitting-order-mutation.ts +3 -3
  92. package/server/service/reverse-kitting-order/reverse-kitting-order-query.ts +3 -3
  93. package/server/service/reverse-kitting-order-inventory/reverse-kitting-order-inventory-mutation.ts +1 -1
  94. package/server/service/shipping-order/shipping-order-mutation.ts +1 -1
  95. package/server/service/shipping-order/shipping-order-query.ts +1 -1
  96. package/server/service/transfer-order/transfer-order-mutation.ts +3 -3
  97. package/server/service/vas-order/vas-order-query.ts +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"arrival-notice-mutation.js","sourceRoot":"","sources":["../../../server/service/arrival-notice/arrival-notice-mutation.ts"],"names":[],"mappings":"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","sourcesContent":["import type { FileUpload } from 'graphql-upload/GraphQLUpload.js'\nimport GraphQLUpload from 'graphql-upload/GraphQLUpload.js'\nimport { Arg, Ctx, Directive, Mutation, Resolver } from 'type-graphql'\nimport { EntityManager, getConnection, In, Repository } from 'typeorm'\n\nimport { Attachment, createAttachments } from '@things-factory/attachment-base'\nimport { Role, User } from '@things-factory/auth-base'\nimport {\n Bizplace,\n ContactPoint,\n getDomainUsers,\n getMyBizplace,\n getOutletBizplace,\n getPermittedBizplaces\n} from '@things-factory/biz-base'\nimport { generateId } from '@things-factory/id-rule-base'\nimport { Product } from '@things-factory/product-base'\nimport { PartnerSetting, Setting } from '@things-factory/setting-base'\nimport { Domain, getRepository } from '@things-factory/shell'\n\nimport {\n ORDER_NUMBER_RULE_TYPE,\n ORDER_NUMBER_SETTING_KEY,\n ORDER_PRODUCT_STATUS,\n ORDER_STATUS,\n ORDER_TYPES,\n ORDER_VAS_STATUS\n} from '../../constants'\nimport { ATTACHMENT_TYPE } from '../../constants/attachment-type'\nimport { ValidationError } from '../../errors'\nimport { OrderNoGenerator } from '../../utils/order-no-generator'\nimport { CollectionOrder } from '../collection-order/collection-order'\nimport { JobSheet } from '../job-sheet/job-sheet'\nimport { generateJobSheet } from '../job-sheet/job-sheet-mutation'\nimport { OrderProduct } from '../order-product/order-product'\nimport { NewOrderProduct, OrderProductPatch } from '../order-product/order-product-types'\nimport { OrderVas } from '../order-vas/order-vas'\nimport { ReleaseGood } from '../release-good/release-good'\nimport { confirmReleaseGood, deleteReleaseGood, rejectReleaseGood } from '../release-good/release-good-mutation'\nimport { Vas } from '../vas/vas'\nimport { validateBulkArrivalNoticesFunction } from './'\nimport { ArrivalNotice } from './arrival-notice'\nimport { ArrivalNoticeList, ArrivalNoticePatch, NewArrivalNotice, RawArrivalNotice } from './arrival-notice-types'\n\nconst debug = require('debug')('things-factory:operato-wms:addArrivalNotice')\n\n@Resolver(ArrivalNotice)\nexport class ArrivalNoticeMutation {\n @Directive('@privilege(category: \"order_customer\", privilege: \"mutation\")')\n @Directive('@transaction')\n @Mutation(returns => Boolean)\n async deleteArrivalNotice(@Arg('name') name: string, @Ctx() context: ResolverContext): Promise<Boolean> {\n const { tx, user, domain } = context.state\n\n return await deleteArrivalNotice(tx, name, user, domain)\n }\n\n @Directive('@privilege(category: \"order_customer\", privilege: \"mutation\")')\n @Directive('@transaction')\n @Mutation(returns => ArrivalNotice)\n async generateArrivalNotice(\n @Ctx() context: ResolverContext,\n @Arg('arrivalNotice', type => NewArrivalNotice) arrivalNotice: NewArrivalNotice,\n @Arg('files', type => [GraphQLUpload], { nullable: true }) files?: FileUpload[]\n ): Promise<ArrivalNotice> {\n const { tx } = context.state\n const createdArrivalNotice: ArrivalNotice = await generateArrivalNoticeFunction(\n null,\n arrivalNotice,\n false,\n files,\n context,\n tx\n )\n\n return createdArrivalNotice\n }\n\n @Directive('@privilege(category: \"order_customer\", privilege: \"mutation\")')\n @Directive('@transaction')\n @Mutation(returns => ArrivalNotice)\n async confirmArrivalNotice(@Arg('name') name: string, @Ctx() context: ResolverContext): Promise<ArrivalNotice> {\n const { tx } = context.state\n const arrivalNotice: ArrivalNotice = await confirmArrivalNoticeFunction(name, context, tx)\n\n // If current GAN has cross docking\n if (arrivalNotice.crossDocking) {\n const { releaseGood } = await tx.getRepository(ArrivalNotice).findOne({\n where: { id: arrivalNotice.id },\n relations: ['releaseGood']\n })\n\n // If status of related RO is not equal to PENDING_RECEIVE (i.e. Wasn't confirmed yet.)\n if (releaseGood.status !== ORDER_STATUS.PENDING_RECEIVE) {\n await confirmReleaseGood(releaseGood.name, context)\n }\n }\n\n return arrivalNotice\n }\n\n @Directive('@privilege(category: \"order_warehouse\", privilege: \"mutation\")')\n @Directive('@transaction')\n @Mutation(returns => ArrivalNotice)\n async receiveArrivalNotice(@Arg('name') name: string, @Ctx() context: ResolverContext): Promise<ArrivalNotice> {\n const receiveArrivalNotice: ArrivalNotice = await receiveArrivalNoticeFunction(null, name, context)\n\n return receiveArrivalNotice\n }\n\n @Directive('@privilege(category: \"order_warehouse\", privilege: \"mutation\")')\n @Directive('@transaction')\n @Mutation(returns => ArrivalNotice)\n async checkArrivedNotice(@Arg('name') name: string, @Ctx() context: ResolverContext): Promise<ArrivalNotice> {\n const { tx } = context.state\n\n return await checkArrivedNoticeFunction(name, context, tx)\n }\n\n @Directive('@privilege(category: \"order_warehouse\", privilege: \"mutation\")')\n @Directive('@transaction')\n @Mutation(returns => ArrivalNotice)\n async rejectArrivalNotice(\n @Arg('name') name: string,\n @Arg('patch', type => ArrivalNoticePatch) patch: ArrivalNoticePatch,\n @Ctx() context: ResolverContext\n ): Promise<ArrivalNotice> {\n const { tx } = context.state\n\n const arrivalNotice: ArrivalNotice = await rejectArrivalNotice(tx, name, patch.remark, context)\n\n if (arrivalNotice.crossDocking) {\n const { releaseGood }: { releaseGood: ReleaseGood } = await tx.getRepository(ArrivalNotice).findOne({\n where: { id: arrivalNotice.id },\n relations: ['releaseGood']\n })\n\n if (releaseGood.status !== ORDER_STATUS.REJECTED) {\n await rejectReleaseGood(tx, context, releaseGood.name, patch.remark)\n }\n }\n\n return arrivalNotice\n }\n\n @Directive('@privilege(category: \"order_warehouse\", privilege: \"mutation\")')\n @Directive('@transaction')\n @Mutation(returns => Boolean)\n async addEditArrivalNoticeProducts(\n @Ctx() context: ResolverContext,\n @Arg('ganNo') ganNo: string,\n @Arg('newOrderProducts', type => [NewOrderProduct], { nullable: true }) newOrderProducts?: NewOrderProduct[],\n @Arg('existingOrderProducts', type => [OrderProductPatch], { nullable: true })\n existingOrderProducts?: OrderProductPatch[]\n ): Promise<Boolean> {\n const { user, domain, tx } = context.state\n\n let arrivalNotice: ArrivalNotice = await tx.getRepository(ArrivalNotice).findOne({\n where: { name: ganNo },\n relations: ['bizplace', 'orderProducts']\n })\n\n arrivalNotice.status = ORDER_STATUS.PENDING_APPROVAL\n arrivalNotice.updater = user\n arrivalNotice = await tx.getRepository(ArrivalNotice).save(arrivalNotice)\n\n debug('gan-new-order-products', ganNo, newOrderProducts)\n if (newOrderProducts?.length > 0) await addArrivalNoticeProducts(domain, arrivalNotice, newOrderProducts, user, tx)\n\n debug('gan-existing-order-products', ganNo, existingOrderProducts)\n if (existingOrderProducts?.length > 0) await editArrivalNoticeProducts(existingOrderProducts, user, tx)\n\n // notification logics\n const users: any[] = await getDomainUsers(arrivalNotice?.bizplace, tx)\n debug('users', users)\n\n if (users?.length && context.header?.referer) {\n const receivers: any[] = users.map(user => user.id)\n const msg = {\n title: `Products are added/edited for ${arrivalNotice.name}`,\n body: `Warehouse need your review for changes to be approved`,\n url: context.header.referer,\n data: { url: context.header.referer }\n }\n /**\n * @notes Temporary off sendNotification due to suspect of causing wms down\n */\n\n // await sendNotification({\n // receivers,\n // message: { ...msg }\n // })\n }\n\n return true\n }\n\n @Directive('@privilege(category: \"order_customer\", privilege: \"mutation\")')\n @Directive('@transaction')\n @Mutation(returns => ArrivalNotice)\n async addArrivalNotice(\n @Ctx() context: ResolverContext,\n @Arg('arrivalNotice', type => NewArrivalNotice) arrivalNotice: NewArrivalNotice,\n @Arg('file', type => GraphQLUpload, { nullable: true }) file?: FileUpload\n ): Promise<ArrivalNotice> {\n const { tx } = context.state\n const createdGAN: ArrivalNotice = await generateArrivalNoticeFunction(null, arrivalNotice, false, file, context, tx)\n\n debug('createdGAN', createdGAN)\n\n const confirmedGAN: ArrivalNotice = await confirmArrivalNoticeFunction(createdGAN.name, context, tx)\n\n debug('confirmedGAN', confirmedGAN)\n\n return confirmedGAN\n }\n\n @Directive('@privilege(category: \"order_customer\", privilege: \"mutation\")')\n @Directive('@transaction')\n @Mutation(returns => ArrivalNotice)\n async updateArrivalNoticeDetails(\n @Ctx() context: ResolverContext,\n @Arg('arrivalNotice', type => ArrivalNoticePatch) arrivalNotice: ArrivalNoticePatch\n ): Promise<ArrivalNotice> {\n const { domain, tx } = context.state\n let existingArrivalNotice = await tx\n .getRepository(ArrivalNotice)\n .findOne({ where: { name: arrivalNotice.name, domain } })\n\n if (!existingArrivalNotice) {\n throw new Error('Existing Arrival Notice not found.')\n }\n\n await tx.getRepository(ArrivalNotice).update(existingArrivalNotice.id, arrivalNotice)\n return await tx.getRepository(ArrivalNotice).findOneBy({ id: existingArrivalNotice.id })\n }\n\n @Directive('@privilege(category: \"order_customer\", privilege: \"mutation\")')\n @Directive('@transaction')\n @Mutation(returns => ArrivalNoticeList)\n async bulkGenerateArrivalNotices(\n @Ctx() context: ResolverContext,\n @Arg('rawArrivalNotices', type => [NewArrivalNotice], { nullable: true }) rawArrivalNotices: NewArrivalNotice[],\n @Arg('bizplaceId', type => String) bizplaceId: string,\n @Arg('bufferLocation', type => String, { nullable: true }) bufferLocation: string\n ): Promise<ArrivalNoticeList> {\n const { domain, user, tx } = context.state\n let createdArrivalNoticeIds: string[] = [],\n createdOrderProductIds: string[] = [],\n errorsCaught: any[] = [],\n finalArrivalNoticeList: ArrivalNotice[] = []\n let opStatus = ORDER_PRODUCT_STATUS.PENDING_RECEIVE\n let anStatus = ORDER_STATUS.PENDING_RECEIVE\n\n const foundBizplace: Bizplace = await tx\n .getRepository(Bizplace)\n .findOne({ where: { id: bizplaceId }, relations: ['domain'] })\n\n if (!foundBizplace) throw new Error('company not found')\n\n // to check whether the raw data are valid\n const validatedArrivalNotices: RawArrivalNotice[] = await validateBulkArrivalNoticesFunction(\n rawArrivalNotices,\n bizplaceId,\n tx\n )\n\n // check for custom GAN order no setting\n const ganNoSetting: Setting = await tx.getRepository(Setting).findOne({\n where: {\n domain: { id: domain.id },\n name: ORDER_NUMBER_SETTING_KEY.GAN_NUMBER_RULE\n }\n })\n\n const ganProcessingSetting: Setting = await tx.getRepository(Setting).findOne({\n where: { domain: { id: domain.id }, category: 'id-rule', name: 'gan-order-processing' }\n })\n\n const partnerGanProcessingSetting: PartnerSetting = await tx.getRepository(PartnerSetting).findOne({\n where: { setting: ganProcessingSetting, domain, partnerDomain: foundBizplace.domain.id }\n })\n\n // If status of GAN is PENDING_RECEIVE then directly to assign warehouse\n if (ganProcessingSetting) {\n let setting = !isNaN(partnerGanProcessingSetting?.value)\n ? partnerGanProcessingSetting?.value\n : ganProcessingSetting.value\n\n // CONFIRM to assign if setting value is 1\n if (setting == 1) {\n opStatus = ORDER_PRODUCT_STATUS.ARRIVED\n anStatus = ORDER_STATUS.ARRIVED\n }\n }\n\n // extract rawArrivalNotices data into normal ArrivalNotice format\n let arrivalNotices: Partial<ArrivalNotice[]> = extractArrivalNotices(validatedArrivalNotices)\n\n for (let i = 0, l = arrivalNotices.length; i < l; i++) {\n try {\n await getConnection().transaction(async childTx => {\n // check for duplication\n const duplicatedArrivalNotice: ArrivalNotice = await childTx.getRepository(ArrivalNotice).findOne({\n where: {\n refNo: arrivalNotices[i].refNo,\n refNo2: arrivalNotices[i].refNo2,\n refNo3: arrivalNotices[i].refNo3,\n etaDate: arrivalNotices[i].etaDate,\n truckNo: arrivalNotices[i].truckNo,\n containerNo: arrivalNotices[i].containerNo,\n containerSize: arrivalNotices[i].containerSize,\n looseItem: arrivalNotices[i].looseItem,\n importCargo: arrivalNotices[i].importCargo\n }\n })\n\n if (duplicatedArrivalNotice) {\n throw new Error(`duplicated with ${duplicatedArrivalNotice.name}`)\n }\n\n // save new arrival notice\n const createdArrivalNotice: ArrivalNotice = await childTx.getRepository(ArrivalNotice).save({\n ...arrivalNotices[i],\n name: ganNoSetting\n ? await generateId({ domain, type: ORDER_NUMBER_RULE_TYPE.GAN_NUMBER, seed: {} })\n : OrderNoGenerator.arrivalNotice(),\n domain,\n bizplace: foundBizplace,\n status: ORDER_STATUS.PENDING,\n creator: user,\n updater: user\n })\n\n // save new order products\n let createdOrderProducts: OrderProduct[] = await Promise.all(\n arrivalNotices[i].orderProducts.map(async (op: OrderProduct) => {\n return {\n ...op,\n domain,\n bizplace: foundBizplace,\n name: OrderNoGenerator.orderProduct(),\n // product: await childTx.getRepository(Product).findOneBy({ id: op.product.id }),\n status: ORDER_PRODUCT_STATUS.PENDING,\n arrivalNotice: createdArrivalNotice,\n creator: user\n }\n })\n )\n createdOrderProducts = await childTx.getRepository(OrderProduct).save(createdOrderProducts)\n\n // generate new jobsheet\n await generateJobSheet(domain, user, createdArrivalNotice, childTx)\n\n // push arrivalNotice and orderProducts IDs if successfully saved\n createdArrivalNoticeIds.push(createdArrivalNotice.id)\n createdOrderProductIds.push(...createdOrderProducts.map(op => op.id))\n })\n } catch (error) {\n // collect the arrivalNotice details and its error\n let rawArrivalNotices: RawArrivalNotice[] = formRawArrivalNotices(arrivalNotices[i], error.message)\n errorsCaught.push(...rawArrivalNotices)\n }\n }\n\n if (createdArrivalNoticeIds.length && createdOrderProductIds.length) {\n await getConnection().transaction(async childTx => {\n // update arrivalNotices status to PENDING_RECEIVE\n await childTx\n .getRepository(ArrivalNotice)\n .update({ id: In(createdArrivalNoticeIds) }, { status: anStatus, updater: user })\n\n // update orderProducts status to PENDING_RECEIVE\n await childTx\n .getRepository(OrderProduct)\n .update({ id: In(createdOrderProductIds) }, { status: opStatus, updater: user })\n\n finalArrivalNoticeList = await childTx.getRepository(ArrivalNotice).find({\n where: { id: In(createdArrivalNoticeIds) },\n relations: ['orderProducts', 'orderProducts.product', 'bizplace']\n })\n })\n }\n\n if (errorsCaught.length) {\n // should return this error list in the grist so that user know which gan need to amend\n throw new ValidationError({\n ...ValidationError.ERROR_CODES.INVALID_DATA_FOUND,\n detail: { data: JSON.stringify(errorsCaught) }\n })\n }\n\n // return arrivalNotices with its orderProducts list\n return { items: finalArrivalNoticeList, total: 0 }\n }\n}\n\nexport async function deleteArrivalNotice(\n tx: EntityManager,\n name: string,\n user: User,\n domain: Domain\n): Promise<boolean> {\n let foundArrivalNotice: ArrivalNotice = await tx.getRepository(ArrivalNotice).findOne({\n where: { domain: { id: domain.id }, name },\n relations: ['bizplace', 'releaseGood', 'orderProducts', 'orderVass', 'collectionOrders', 'creator', 'updater']\n })\n\n if (!foundArrivalNotice) throw new Error(`Arrival notice doesn't exists.`)\n\n const foundJS: JobSheet = await tx.getRepository(JobSheet).findOne({\n where: {\n bizplace: foundArrivalNotice.bizplace,\n arrivalNoticeRefNo: foundArrivalNotice.name\n }\n })\n\n if (foundJS) await tx.getRepository(JobSheet).delete({ arrivalNoticeRefNo: foundArrivalNotice.name })\n\n const foundOPs: OrderProduct[] = foundArrivalNotice.orderProducts\n const foundOVs: OrderVas[] = foundArrivalNotice.orderVass\n\n // 1. delete order products\n const productIds = foundOPs.map((product: OrderProduct) => product.id)\n if (productIds.length) {\n await tx.getRepository(OrderProduct).delete({ id: In(productIds) })\n }\n\n // 2. delete order vass\n const vasIds = foundOVs.map((vas: OrderVas) => vas.id)\n if (vasIds.length) {\n await tx.getRepository(OrderVas).delete({ id: In(vasIds) })\n }\n\n await tx.getRepository(ArrivalNotice).save({\n ...foundArrivalNotice,\n updater: user\n })\n\n // 4. Remove relation with RO if it's cross docking\n if (foundArrivalNotice.crossDocking && foundArrivalNotice.releaseGood?.id) {\n let releaseGood: ReleaseGood = foundArrivalNotice.releaseGood\n releaseGood.arrivalNotice = null\n releaseGood = await tx.getRepository(ReleaseGood).save(releaseGood)\n\n await tx.getRepository(ArrivalNotice).delete({ domain, name })\n await deleteReleaseGood(tx, releaseGood.name, user, domain)\n } else {\n // 5. delete GAN\n await tx.getRepository(ArrivalNotice).delete({ domain, name })\n }\n return true\n}\n\nexport async function generateArrivalNoticeFunction(\n _: any,\n arrivalNotice: any,\n fromPo: Boolean,\n files: FileUpload[],\n context: any,\n tx?: EntityManager\n): Promise<ArrivalNotice> {\n const { domain, user } = context.state\n let orderProducts: OrderProduct[] = arrivalNotice.orderProducts\n let orderVass: OrderVas[] = arrivalNotice.orderVass\n let myBizplace: Bizplace\n let orderNo: string = ''\n\n const settingRepo: Repository<Setting> = tx?.getRepository(Setting) || getRepository(Setting)\n\n if (arrivalNotice.bizplace) myBizplace = arrivalNotice.bizplace\n else if (arrivalNotice.customerBizplaceId) {\n const permittedBizplaces: Bizplace[] = await getPermittedBizplaces(domain, user)\n let foundPermittedBizplace: Bizplace = permittedBizplaces.find(biz => biz.id == arrivalNotice.customerBizplaceId)\n\n if (!foundPermittedBizplace) throw new Error(`This user does not permitted for this company`)\n\n myBizplace = arrivalNotice.customerBizplaceId\n } else if (arrivalNotice.partnerBizplaceId) {\n const permittedBizplaces: Bizplace[] = await getPermittedBizplaces(domain, user)\n let foundPermittedBizplace: Bizplace = permittedBizplaces.find(biz => biz.id == arrivalNotice.partnerBizplaceId)\n\n if (!foundPermittedBizplace) throw new Error(`This user does not permitted for this company`)\n\n myBizplace = arrivalNotice.partnerBizplaceId\n } else if (arrivalNotice.warehouseId) myBizplace = await getOutletBizplace(arrivalNotice.warehouseId)\n else myBizplace = await getMyBizplace(domain, user)\n\n if (arrivalNotice.supplier) {\n const supplier: ContactPoint = await tx\n .getRepository(ContactPoint)\n .findOne({ where: { bizplace: arrivalNotice.supplier, domain }, relations: ['bizplace'] })\n\n if (!supplier) throw new Error('contact point does not exist')\n\n arrivalNotice.supplier = supplier\n }\n // find GAN number rule setting\n const ganNoSetting: Setting = await settingRepo.findOne({\n where: {\n domain: { id: domain.id },\n name: ORDER_NUMBER_SETTING_KEY.GAN_NUMBER_RULE\n }\n })\n\n if (ganNoSetting) {\n orderNo = await generateId({ domain, type: ORDER_NUMBER_RULE_TYPE.GAN_NUMBER, seed: {} })\n } else {\n orderNo = OrderNoGenerator.arrivalNotice()\n }\n\n // 1. Create arrival notice\n const createdArrivalNotice: ArrivalNotice = await tx.getRepository(ArrivalNotice).save({\n ...arrivalNotice,\n name: orderNo,\n domain,\n bizplace: myBizplace,\n looseItem: arrivalNotice?.looseItem ? arrivalNotice.looseItem : false,\n status: fromPo ? ORDER_STATUS.INTRANSIT : ORDER_STATUS.PENDING,\n creator: user,\n updater: user\n })\n\n // 2. Create arrival notice product\n await addArrivalNoticeProducts(\n domain,\n createdArrivalNotice,\n orderProducts.map((op: OrderProduct) => {\n return { ...op, status: fromPo ? ORDER_PRODUCT_STATUS.INTRANSIT : ORDER_PRODUCT_STATUS.PENDING }\n }),\n user,\n tx\n )\n\n await generateJobSheet(domain, user, createdArrivalNotice, tx)\n\n // 3. Create arrival notice vas\n if (orderVass?.length) {\n orderVass = await Promise.all(\n orderVass.map(async (ov: OrderVas) => {\n if (ov.targetProduct) {\n ov.targetProduct = await tx.getRepository(Product).findOneBy({ id: ov.targetProduct.id })\n }\n\n return {\n ...ov,\n domain,\n bizplace: myBizplace,\n name: OrderNoGenerator.orderVas(),\n vas: await tx.getRepository(Vas).findOneBy({ domain: { id: domain.id }, id: ov.vas.id }),\n type: ORDER_TYPES.ARRIVAL_NOTICE,\n arrivalNotice: createdArrivalNotice,\n status: fromPo ? ORDER_VAS_STATUS.INTRANSIT : ORDER_VAS_STATUS.PENDING,\n creator: user,\n updater: user\n }\n })\n )\n await tx.getRepository(OrderVas).save(orderVass)\n }\n\n if (files?.length) {\n const attachments: Attachment[] = files.map(attachment => {\n return {\n file: attachment,\n refType: ATTACHMENT_TYPE.GAN,\n refBy: createdArrivalNotice.id,\n category: ATTACHMENT_TYPE.GAN /* TODO use refType */\n }\n })\n await createAttachments(_, { attachments }, context)\n }\n\n return createdArrivalNotice\n}\n\nexport async function confirmArrivalNoticeFunction(\n name: string,\n context: any,\n tx?: EntityManager\n): Promise<ArrivalNotice> {\n const { user, domain } = context.state\n\n const foundArrivalNotice: ArrivalNotice = await tx.getRepository(ArrivalNotice).findOne({\n where: { domain: { id: domain.id }, name, status: ORDER_STATUS.PENDING },\n relations: [\n 'bizplace',\n 'bizplace.domain',\n 'releaseGood',\n 'orderProducts',\n 'orderProducts.product',\n 'orderVass',\n 'orderVass.vas',\n 'creator',\n 'updater'\n ]\n })\n\n let foundOPs: OrderProduct[] = foundArrivalNotice.orderProducts\n let foundOVs: OrderVas[] = foundArrivalNotice.orderVass\n let customerBizplace: Bizplace = foundArrivalNotice.bizplace\n let opStatus = ORDER_PRODUCT_STATUS.PENDING_RECEIVE\n let anStatus = ORDER_STATUS.PENDING_RECEIVE\n let ovStatus = ORDER_VAS_STATUS.PENDING_RECEIVE\n let acceptedByUser = null\n let acceptedTime = null\n\n const ganProcessingSetting: Setting = await tx.getRepository(Setting).findOne({\n where: { domain: { id: domain.id }, category: 'id-rule', name: 'gan-order-processing' }\n })\n\n const partnerGanProcessingSetting: PartnerSetting = await tx.getRepository(PartnerSetting).findOne({\n where: { setting: ganProcessingSetting, domain, partnerDomain: customerBizplace?.domain }\n })\n\n // If status of GAN is PENDING_RECEIVE then directly to assign warehouse\n if (ganProcessingSetting) {\n let setting = !isNaN(partnerGanProcessingSetting?.value)\n ? partnerGanProcessingSetting?.value\n : ganProcessingSetting.value\n\n // CONFIRM to assign if setting value is 1\n if (setting == 1) {\n opStatus = ORDER_PRODUCT_STATUS.ARRIVED\n anStatus = ORDER_STATUS.ARRIVED\n ovStatus = ORDER_VAS_STATUS.ARRIVED\n acceptedByUser = user\n acceptedTime = new Date()\n }\n }\n\n if (!foundArrivalNotice) throw new Error(`Arrival notice doesn't exists.`)\n\n // 1. GAN Status change (PENDING => PENDING_RECEIVE)\n let arrivalNotice: ArrivalNotice = await tx.getRepository(ArrivalNotice).save({\n ...foundArrivalNotice,\n status: anStatus,\n updater: user,\n acceptedBy: acceptedByUser,\n acceptedAt: acceptedTime\n })\n\n foundOPs = foundOPs.map((op: OrderProduct) => {\n return { ...op, status: opStatus }\n })\n await tx.getRepository(OrderProduct).save(foundOPs)\n\n // 2. Update order vas status if it exists.\n if (foundOVs && foundOVs.length) {\n foundOVs = foundOVs.map((ov: OrderVas) => {\n return { ...ov, status: ovStatus }\n })\n\n await tx.getRepository(OrderVas).save(foundOVs)\n }\n\n // notification logics\n // get Office Admin Users\n if (context?.state?.type != 'api') {\n const users: any[] = await tx\n .getRepository('users_roles')\n .createQueryBuilder('ur')\n .select('ur.users_id', 'id')\n .where(qb => {\n const subQuery = qb\n .subQuery()\n .select('role.id')\n .from(Role, 'role')\n .where(\"role.name = 'Office Admin'\")\n .andWhere('role.domain_id = :domain', { domain: domain.id })\n .getQuery()\n return 'ur.roles_id IN ' + subQuery\n })\n .getRawMany()\n\n // send notification to Office Admin Users\n if (users?.length && context.header?.referer) {\n const receivers: any[] = users.map(user => user.id)\n const msg = {\n title: `New Arrival Notice from ${customerBizplace.name}`,\n body: `New incoming order, ${foundArrivalNotice.name} is pending for receiving`,\n url: context.header.referer,\n data: { url: context.header.referer }\n }\n\n /**\n * @notes Temporary off sendNotification due to suspect of causing wms down\n */\n\n // await sendNotification({\n // receivers,\n // message: { ...msg }\n // })\n }\n }\n\n return arrivalNotice\n}\n\nexport async function receiveArrivalNoticeFunction(\n _: any,\n name: string,\n context: ResolverContext\n): Promise<ArrivalNotice> {\n const { user, domain, tx } = context.state\n try {\n const foundArrivalNotice: ArrivalNotice = await tx.getRepository(ArrivalNotice).findOne({\n where: { domain: { id: domain.id }, name, status: ORDER_STATUS.PENDING_RECEIVE },\n relations: ['bizplace', 'bizplace.domain', 'collectionOrders', 'orderProducts', 'orderVass']\n })\n\n let foundOPs: OrderProduct[] = foundArrivalNotice.orderProducts\n let foundOVs: OrderVas[] = foundArrivalNotice.orderVass\n let foundCOs: CollectionOrder[] = await tx.getRepository(CollectionOrder).find({\n where: { domain: { id: domain.id }, refNo: foundArrivalNotice.name }\n })\n let customerBizplace: Bizplace = foundArrivalNotice.bizplace\n let opStatus = ORDER_PRODUCT_STATUS.INTRANSIT\n let anStatus = ORDER_STATUS.INTRANSIT\n let ovStatus = ORDER_VAS_STATUS.INTRANSIT\n let coStatus = ORDER_STATUS.READY_TO_DISPATCH\n\n const ganProcessingSetting: Setting = await tx.getRepository(Setting).findOne({\n where: { domain: { id: domain.id }, category: 'id-rule', name: 'gan-order-processing' }\n })\n\n const partnerGanProcessingSetting: PartnerSetting = await tx.getRepository(PartnerSetting).findOne({\n where: { setting: ganProcessingSetting, domain, partnerDomain: customerBizplace?.domain }\n })\n\n // If status of GAN is INTRANSIT then directly to assign warehouse\n if (ganProcessingSetting) {\n let setting = !isNaN(partnerGanProcessingSetting?.value)\n ? partnerGanProcessingSetting?.value\n : ganProcessingSetting.value\n\n // RECEIVE to assign if setting value is 2\n if (setting == 2) {\n opStatus = ORDER_PRODUCT_STATUS.ARRIVED\n anStatus = ORDER_STATUS.ARRIVED\n ovStatus = ORDER_VAS_STATUS.ARRIVED\n coStatus = ORDER_STATUS.READY_TO_DISPATCH\n }\n }\n\n if (!foundArrivalNotice) throw new Error(`Arrival notice doesn't exists.`)\n\n // 1. Update status of order products (PENDING_RECEIVE => INTRANSIT)\n foundOPs = foundOPs.map((op: OrderProduct) => {\n return {\n ...op,\n status: opStatus,\n updater: user\n }\n })\n await tx.getRepository(OrderProduct).save(foundOPs)\n\n // 2. Update status of order vass if it exists (PENDING_RECEIVE => INTRANSIT)\n if (foundOVs && foundOVs.length) {\n foundOVs = foundOVs.map((ov: OrderVas) => {\n return {\n ...ov,\n status: ovStatus,\n updater: user\n }\n })\n await tx.getRepository(OrderVas).save(foundOVs)\n }\n\n // 3. If there's collection order, update status of collection order (PENDING_RECEIVE => READY_TO_DISPATCH)\n if (foundCOs) {\n foundCOs = foundCOs.map((co: CollectionOrder) => {\n return {\n ...co,\n status: coStatus,\n updater: user\n }\n })\n }\n\n // notification logics\n const users: any[] = await getDomainUsers(foundArrivalNotice?.bizplace, tx)\n\n // send notification to Customer Users\n if (users?.length && context.header?.referer) {\n const receivers: any[] = users.map(user => user.id)\n const msg = {\n title: `Latest status for ${foundArrivalNotice.name}`,\n body: `Your GAN has been received and processed by ${domain.name}`,\n url: context.header.referer,\n data: { url: context.header.referer }\n }\n\n /**\n * @notes Temporary off sendNotification due to suspect of causing wms down\n */\n\n // await sendNotification({\n // receivers,\n // message: { ...msg }\n // })\n }\n\n // 4. Update status of arrival notice (PENDING_RECEIVE => INTRANSIT)\n let rcvArrivalNotice = await tx.getRepository(ArrivalNotice).save({\n ...foundArrivalNotice,\n status: anStatus,\n acceptedBy: user,\n acceptedAt: new Date(),\n updater: user\n })\n\n return foundArrivalNotice\n } catch (e) {\n throw e\n }\n}\n\nexport async function checkArrivedNoticeFunction(\n name: string,\n context: any,\n tx?: EntityManager\n): Promise<ArrivalNotice> {\n const { user, domain } = context.state\n try {\n const foundArrivalNotice: ArrivalNotice = await tx.getRepository(ArrivalNotice).findOne({\n where: { domain: { id: domain.id }, name, status: ORDER_STATUS.INTRANSIT },\n relations: ['bizplace', 'collectionOrders', 'orderProducts', 'orderVass']\n })\n\n debug('ganNo', name, foundArrivalNotice)\n\n if (!foundArrivalNotice) throw new Error(`Arrival notice doesn't exists.`)\n\n // 1. Check wheter related collection order is done or not\n const foundCOs: CollectionOrder[] = foundArrivalNotice.collectionOrders\n if (foundCOs && foundCOs.length) {\n foundCOs.map((co: CollectionOrder) => {\n if (co.status !== ORDER_STATUS.DONE) {\n throw new Error(`Collection Order: ${co.name} is not finished yet.`)\n }\n })\n }\n\n let foundOPs: OrderProduct[] = foundArrivalNotice.orderProducts\n let foundOVs: OrderVas[] = foundArrivalNotice.orderVass\n\n // 2. Update status of order products (INTRANSIT => ARRIVED)\n foundOPs = foundOPs.map((op: OrderProduct) => {\n return {\n ...op,\n status: ORDER_PRODUCT_STATUS.ARRIVED,\n updater: user\n }\n })\n await tx.getRepository(OrderProduct).save(foundOPs)\n\n // 3. Update status of order vass if it exists (INTRANSIT => ARRIVED)\n if (foundOVs && foundOVs.length) {\n foundOVs = foundOVs.map((ov: OrderVas) => {\n return {\n ...ov,\n status: ORDER_VAS_STATUS.ARRIVED,\n updater: user\n }\n })\n await tx.getRepository(OrderVas).save(foundOVs)\n }\n\n // 4. Update status of arrival notice (INTRANSIT => ARRIVED)\n await tx.getRepository(ArrivalNotice).save({\n ...foundArrivalNotice,\n status: ORDER_STATUS.ARRIVED,\n updater: user\n })\n\n // notification logics\n const users: any[] = await getDomainUsers(foundArrivalNotice?.bizplace, tx)\n\n if (users?.length && context.header?.referer) {\n const receivers: any[] = users.map(user => user.id)\n const msg = {\n title: `Latest status for ${foundArrivalNotice.name}`,\n body: `Your goods has safely arrived at ${domain.name}`,\n url: context.header.referer,\n data: { url: context.header.referer }\n }\n\n /**\n * @notes Temporary off sendNotification due to suspect of causing wms down\n */\n\n // await sendNotification({\n // receivers,\n // message: { ...msg }\n // })\n }\n\n return foundArrivalNotice\n } catch (e) {\n throw e\n }\n}\n\nexport async function rejectArrivalNotice(\n tx: EntityManager,\n name: string,\n remark: string,\n context: any\n): Promise<ArrivalNotice> {\n const { user, domain } = context.state\n\n const foundArrivalNotice: ArrivalNotice = await tx.getRepository(ArrivalNotice).findOne({\n where: { domain: { id: domain.id }, name, status: ORDER_STATUS.PENDING_RECEIVE },\n relations: ['bizplace', 'orderProducts', 'orderVass', 'collectionOrders']\n })\n\n if (!foundArrivalNotice) throw new Error(`Arrival notice doesn't exists.`)\n if (!remark) throw new Error('Remark is not exist.')\n\n let foundOPs: OrderProduct[] = foundArrivalNotice.orderProducts\n let foundOVs: OrderVas[] = foundArrivalNotice.orderVass\n let foundCOs: CollectionOrder[] = foundArrivalNotice.collectionOrders\n\n // 1. Update status of order products (PENDING_RECEIVE => REJECTED)\n foundOPs = foundOPs.map((op: OrderProduct) => {\n op.status = ORDER_PRODUCT_STATUS.REJECTED\n op.updater = user\n return op\n })\n await tx.getRepository(OrderProduct).save(foundOPs)\n\n // 2. Update status of order vass if it exists (PENDING_RECEIVE => REJECTED)\n if (foundOVs && foundOVs.length) {\n foundOVs = foundOVs.map((ov: OrderVas) => {\n ov.status = ORDER_VAS_STATUS.REJECTED\n ov.updater = user\n return ov\n })\n await tx.getRepository(OrderVas).save(foundOVs)\n }\n\n // 3. If there's collection order, update status of collection order (PENDING_RECEIVE => REJECTED)\n if (foundCOs) {\n foundCOs = foundCOs.map((co: CollectionOrder) => {\n co.status = ORDER_STATUS.REJECTED\n co.updater = user\n return co\n })\n await tx.getRepository(CollectionOrder).save(foundCOs)\n }\n\n foundArrivalNotice.remark = remark\n foundArrivalNotice.status = ORDER_STATUS.REJECTED\n foundArrivalNotice.updater = user\n await tx.getRepository(ArrivalNotice).save(foundArrivalNotice)\n\n // notification logics\n const users: any[] = await getDomainUsers(foundArrivalNotice?.bizplace, tx)\n\n // send notification to Customer Users\n if (users?.length && context.header?.referer) {\n const receivers: any[] = users.map(user => user.id)\n const msg = {\n title: `Latest status for ${foundArrivalNotice.name}`,\n body: `Your GAN has been rejected.`,\n url: context.header.referer,\n data: { url: context.header.referer }\n }\n\n /**\n * @notes Temporary off sendNotification due to suspect of causing wms down\n */\n\n // await sendNotification({\n // receivers,\n // message: { ...msg }\n // })\n }\n\n return foundArrivalNotice\n}\n\nexport async function addArrivalNoticeProducts(\n domain: Domain,\n arrivalNotice: ArrivalNotice,\n newOrderProducts: any[],\n user: User,\n tx?: EntityManager\n): Promise<void> {\n const productRepo: Repository<Product> = tx?.getRepository(Product) || getRepository(Product)\n const orderProductRepo: Repository<OrderProduct> = tx?.getRepository(OrderProduct) || getRepository(OrderProduct)\n\n if (!arrivalNotice?.bizplace || !arrivalNotice?.orderProducts?.length) {\n arrivalNotice = await tx.getRepository(ArrivalNotice).findOne({\n where: { domain: { id: domain.id }, name: arrivalNotice.name },\n relations: ['bizplace', 'orderProducts']\n })\n }\n\n const createdOrderProducts: OrderProduct[] = await Promise.all(\n newOrderProducts.map(async (op: OrderProduct) => {\n return {\n ...op,\n domain,\n bizplace: arrivalNotice.bizplace,\n name: OrderNoGenerator.orderProduct(),\n product: await productRepo.findOneBy({ id: op.product.id }),\n arrivalNotice,\n creator: user\n }\n })\n )\n\n debug('gan-created-order-products', createdOrderProducts)\n await orderProductRepo.save(createdOrderProducts)\n}\n\nexport async function editArrivalNoticeProducts(\n existingOrderProducts: (OrderProduct | OrderProductPatch)[],\n user: User,\n tx?: EntityManager\n): Promise<void> {\n const orderProductRepo: Repository<OrderProduct> = tx?.getRepository(OrderProduct) || getRepository(OrderProduct)\n\n const updatedOrderProducts: OrderProduct[] = await Promise.all(\n existingOrderProducts.map(async (op: OrderProduct) => {\n return {\n ...op,\n status: ORDER_PRODUCT_STATUS.EDITED,\n updater: user\n }\n })\n )\n\n debug('gan-updated-order-products', updatedOrderProducts)\n await orderProductRepo.save(updatedOrderProducts)\n}\n\nfunction extractArrivalNotices(rawArrivalNotices): Partial<ArrivalNotice[]> {\n return rawArrivalNotices.reduce((arrivalNotices, raw) => {\n // discard the item that has no productId or productDetailId\n if (!raw.productId || !raw.productDetailId) return\n\n const idx: number = arrivalNotices.findIndex(an => {\n // consider these attributes if they are exist in \"item\"\n const comparison = [\n 'refNo2',\n 'refNo3',\n 'truckNo',\n 'ownTransport',\n 'container',\n 'containerNo',\n 'containerSize',\n 'looseItem',\n 'importCargo'\n ]\n\n let a: any = {},\n b: any = {}\n\n comparison.forEach(cc => {\n if (raw[cc] !== null) {\n a[cc] = raw[cc]\n b[cc] = an[cc]\n }\n })\n\n a = JSON.stringify(Object.fromEntries(Object.entries(a).sort()))\n b = JSON.stringify(Object.fromEntries(Object.entries(b).sort()))\n\n return an.refNo == raw.refNo && an.etaDate == raw.etaDate && a === b\n })\n\n const product: Product = Object.assign(new Product(), { id: raw.productId, sku: raw.sku })\n const orderProduct: Partial<OrderProduct> = {\n product,\n batchId: raw.batchId,\n batchIdRef: raw.batchIdRef,\n packingType: raw.packingType,\n packingSize: raw.packingSize,\n packQty: raw.packQty,\n uomValue: raw.uomValue,\n uom: raw.uom,\n totalUomValue: raw.totalUomValue,\n palletQty: raw.palletQty,\n unitPrice: raw.unitPrice,\n manufactureDate: raw.manufactureDate\n }\n\n if (idx >= 0) {\n const duplicateSkuIdx: number = arrivalNotices[idx].orderProducts.findIndex(\n op =>\n op.sku === raw.sku &&\n op.packingType === raw.packingType &&\n op.packingSize === raw.packingSize &&\n op.batchId === raw.batchId\n )\n\n if (duplicateSkuIdx >= 0) arrivalNotices[idx].orderProducts[duplicateSkuIdx].packQty += raw.packQty\n else arrivalNotices[idx].orderProducts.push(orderProduct)\n } else {\n arrivalNotices.push({\n refNo: raw.refNo,\n refNo2: raw.refNo2,\n refNo3: raw.refNo3,\n etaDate: raw.etaDate,\n truckNo: raw.truckNo,\n ownTransport: raw.ownTransport,\n container: raw.container,\n containerNo: raw.containerNo,\n containerSize: raw.containerSize,\n importCargo: raw.importCargo,\n looseItem: raw.looseItem,\n orderProducts: [orderProduct]\n })\n }\n\n return arrivalNotices\n }, [])\n}\n\nfunction formRawArrivalNotices(arrivalNotice, errorMsg) {\n let rawArrivalNotices = []\n for (let i = 0, l = arrivalNotice.orderProducts.length; i < l; i++) {\n let rawArrivalNotice = {\n ...arrivalNotice,\n ...arrivalNotice.orderProducts[i],\n sku: arrivalNotice.orderProducts[i].product.sku,\n errorMsg\n }\n\n delete rawArrivalNotice.orderProducts\n delete rawArrivalNotice.product\n\n rawArrivalNotices.push(rawArrivalNotice)\n }\n return rawArrivalNotices\n}\n"]}
1
+ {"version":3,"file":"arrival-notice-mutation.js","sourceRoot":"","sources":["../../../server/service/arrival-notice/arrival-notice-mutation.ts"],"names":[],"mappings":"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","sourcesContent":["import type { FileUpload } from 'graphql-upload/GraphQLUpload.js'\nimport GraphQLUpload from 'graphql-upload/GraphQLUpload.js'\nimport { Arg, Ctx, Directive, Mutation, Resolver } from 'type-graphql'\nimport { EntityManager, getConnection, In, Repository } from 'typeorm'\n\nimport { Attachment, createAttachments } from '@things-factory/attachment-base'\nimport { Role, User } from '@things-factory/auth-base'\nimport {\n Bizplace,\n ContactPoint,\n getDomainUsers,\n getMyBizplace,\n getOutletBizplace,\n getPermittedBizplaces\n} from '@things-factory/biz-base'\nimport { generateId } from '@things-factory/id-rule-base'\nimport { Product } from '@things-factory/product-base'\nimport { PartnerSetting, Setting } from '@things-factory/setting-base'\nimport { Domain, getRepository } from '@things-factory/shell'\n\nimport {\n ORDER_NUMBER_RULE_TYPE,\n ORDER_NUMBER_SETTING_KEY,\n ORDER_PRODUCT_STATUS,\n ORDER_STATUS,\n ORDER_TYPES,\n ORDER_VAS_STATUS\n} from '../../constants'\nimport { ATTACHMENT_TYPE } from '../../constants/attachment-type'\nimport { ValidationError } from '../../errors'\nimport { OrderNoGenerator } from '../../utils/order-no-generator'\nimport { CollectionOrder } from '../collection-order/collection-order'\nimport { JobSheet } from '../job-sheet/job-sheet'\nimport { generateJobSheet } from '../job-sheet/job-sheet-mutation'\nimport { OrderProduct } from '../order-product/order-product'\nimport { NewOrderProduct, OrderProductPatch } from '../order-product/order-product-types'\nimport { OrderVas } from '../order-vas/order-vas'\nimport { ReleaseGood } from '../release-good/release-good'\nimport { confirmReleaseGood, deleteReleaseGood, rejectReleaseGood } from '../release-good/release-good-mutation'\nimport { Vas } from '../vas/vas'\nimport { validateBulkArrivalNoticesFunction } from './'\nimport { ArrivalNotice } from './arrival-notice'\nimport { ArrivalNoticeList, ArrivalNoticePatch, NewArrivalNotice, RawArrivalNotice } from './arrival-notice-types'\n\nconst debug = require('debug')('things-factory:operato-wms:addArrivalNotice')\n\n@Resolver(ArrivalNotice)\nexport class ArrivalNoticeMutation {\n @Directive('@privilege(category: \"order_customer\", privilege: \"mutation\")')\n @Directive('@transaction')\n @Mutation(returns => Boolean)\n async deleteArrivalNotice(@Arg('name') name: string, @Ctx() context: ResolverContext): Promise<Boolean> {\n const { tx, user, domain } = context.state\n\n return await deleteArrivalNotice(tx, name, user, domain)\n }\n\n @Directive('@privilege(category: \"order_customer\", privilege: \"mutation\")')\n @Directive('@transaction')\n @Mutation(returns => ArrivalNotice)\n async generateArrivalNotice(\n @Ctx() context: ResolverContext,\n @Arg('arrivalNotice', type => NewArrivalNotice) arrivalNotice: NewArrivalNotice,\n @Arg('files', type => [GraphQLUpload], { nullable: true }) files?: FileUpload[]\n ): Promise<ArrivalNotice> {\n const { tx } = context.state\n const createdArrivalNotice: ArrivalNotice = await generateArrivalNoticeFunction(\n null,\n arrivalNotice,\n false,\n files,\n context,\n tx\n )\n\n return createdArrivalNotice\n }\n\n @Directive('@privilege(category: \"order_customer\", privilege: \"mutation\")')\n @Directive('@transaction')\n @Mutation(returns => ArrivalNotice)\n async confirmArrivalNotice(@Arg('name') name: string, @Ctx() context: ResolverContext): Promise<ArrivalNotice> {\n const { tx } = context.state\n const arrivalNotice: ArrivalNotice = await confirmArrivalNoticeFunction(name, context, tx)\n\n // If current GAN has cross docking\n if (arrivalNotice.crossDocking) {\n const { releaseGood } = await tx.getRepository(ArrivalNotice).findOne({\n where: { id: arrivalNotice.id },\n relations: ['releaseGood']\n })\n\n // If status of related RO is not equal to PENDING_RECEIVE (i.e. Wasn't confirmed yet.)\n if (releaseGood.status !== ORDER_STATUS.PENDING_RECEIVE) {\n await confirmReleaseGood(releaseGood.name, context)\n }\n }\n\n return arrivalNotice\n }\n\n @Directive('@privilege(category: \"order_warehouse\", privilege: \"mutation\")')\n @Directive('@transaction')\n @Mutation(returns => ArrivalNotice)\n async receiveArrivalNotice(@Arg('name') name: string, @Ctx() context: ResolverContext): Promise<ArrivalNotice> {\n const receiveArrivalNotice: ArrivalNotice = await receiveArrivalNoticeFunction(null, name, context)\n\n return receiveArrivalNotice\n }\n\n @Directive('@privilege(category: \"order_warehouse\", privilege: \"mutation\")')\n @Directive('@transaction')\n @Mutation(returns => ArrivalNotice)\n async checkArrivedNotice(@Arg('name') name: string, @Ctx() context: ResolverContext): Promise<ArrivalNotice> {\n const { tx } = context.state\n\n return await checkArrivedNoticeFunction(name, context, tx)\n }\n\n @Directive('@privilege(category: \"order_warehouse\", privilege: \"mutation\")')\n @Directive('@transaction')\n @Mutation(returns => ArrivalNotice)\n async rejectArrivalNotice(\n @Arg('name') name: string,\n @Arg('patch', type => ArrivalNoticePatch) patch: ArrivalNoticePatch,\n @Ctx() context: ResolverContext\n ): Promise<ArrivalNotice> {\n const { tx } = context.state\n\n const arrivalNotice: ArrivalNotice = await rejectArrivalNotice(tx, name, patch.remark, context)\n\n if (arrivalNotice.crossDocking) {\n const { releaseGood }: { releaseGood: ReleaseGood } = await tx.getRepository(ArrivalNotice).findOne({\n where: { id: arrivalNotice.id },\n relations: ['releaseGood']\n })\n\n if (releaseGood.status !== ORDER_STATUS.REJECTED) {\n await rejectReleaseGood(tx, context, releaseGood.name, patch.remark)\n }\n }\n\n return arrivalNotice\n }\n\n @Directive('@privilege(category: \"order_warehouse\", privilege: \"mutation\")')\n @Directive('@transaction')\n @Mutation(returns => Boolean)\n async addEditArrivalNoticeProducts(\n @Ctx() context: ResolverContext,\n @Arg('ganNo') ganNo: string,\n @Arg('newOrderProducts', type => [NewOrderProduct], { nullable: true }) newOrderProducts?: NewOrderProduct[],\n @Arg('existingOrderProducts', type => [OrderProductPatch], { nullable: true })\n existingOrderProducts?: OrderProductPatch[]\n ): Promise<Boolean> {\n const { user, domain, tx } = context.state\n\n let arrivalNotice: ArrivalNotice = await tx.getRepository(ArrivalNotice).findOne({\n where: { name: ganNo },\n relations: ['bizplace', 'orderProducts']\n })\n\n arrivalNotice.status = ORDER_STATUS.PENDING_APPROVAL\n arrivalNotice.updater = user\n arrivalNotice = await tx.getRepository(ArrivalNotice).save(arrivalNotice)\n\n debug('gan-new-order-products', ganNo, newOrderProducts)\n if (newOrderProducts?.length > 0) await addArrivalNoticeProducts(domain, arrivalNotice, newOrderProducts, user, tx)\n\n debug('gan-existing-order-products', ganNo, existingOrderProducts)\n if (existingOrderProducts?.length > 0) await editArrivalNoticeProducts(existingOrderProducts, user, tx)\n\n // notification logics\n const users: any[] = await getDomainUsers(arrivalNotice?.bizplace, tx)\n debug('users', users)\n\n if (users?.length && context.header?.referer) {\n const receivers: any[] = users.map(user => user.id)\n const msg = {\n title: `Products are added/edited for ${arrivalNotice.name}`,\n body: `Warehouse need your review for changes to be approved`,\n url: context.header.referer,\n data: { url: context.header.referer }\n }\n /**\n * @notes Temporary off sendNotification due to suspect of causing wms down\n */\n\n // await sendNotification({\n // receivers,\n // message: { ...msg }\n // })\n }\n\n return true\n }\n\n @Directive('@privilege(category: \"order_customer\", privilege: \"mutation\")')\n @Directive('@transaction')\n @Mutation(returns => ArrivalNotice)\n async addArrivalNotice(\n @Ctx() context: ResolverContext,\n @Arg('arrivalNotice', type => NewArrivalNotice) arrivalNotice: NewArrivalNotice,\n @Arg('file', type => GraphQLUpload, { nullable: true }) file?: FileUpload\n ): Promise<ArrivalNotice> {\n const { tx } = context.state\n const createdGAN: ArrivalNotice = await generateArrivalNoticeFunction(null, arrivalNotice, false, file, context, tx)\n\n debug('createdGAN', createdGAN)\n\n const confirmedGAN: ArrivalNotice = await confirmArrivalNoticeFunction(createdGAN.name, context, tx)\n\n debug('confirmedGAN', confirmedGAN)\n\n return confirmedGAN\n }\n\n @Directive('@privilege(category: \"order_customer\", privilege: \"mutation\")')\n @Directive('@transaction')\n @Mutation(returns => ArrivalNotice)\n async updateArrivalNoticeDetails(\n @Ctx() context: ResolverContext,\n @Arg('arrivalNotice', type => ArrivalNoticePatch) arrivalNotice: ArrivalNoticePatch\n ): Promise<ArrivalNotice> {\n const { domain, tx } = context.state\n let existingArrivalNotice = await tx\n .getRepository(ArrivalNotice)\n .findOne({ where: { name: arrivalNotice.name, domain: { id: domain.id } } })\n\n if (!existingArrivalNotice) {\n throw new Error('Existing Arrival Notice not found.')\n }\n\n await tx.getRepository(ArrivalNotice).update(existingArrivalNotice.id, arrivalNotice)\n return await tx.getRepository(ArrivalNotice).findOneBy({ id: existingArrivalNotice.id })\n }\n\n @Directive('@privilege(category: \"order_customer\", privilege: \"mutation\")')\n @Directive('@transaction')\n @Mutation(returns => ArrivalNoticeList)\n async bulkGenerateArrivalNotices(\n @Ctx() context: ResolverContext,\n @Arg('rawArrivalNotices', type => [NewArrivalNotice], { nullable: true }) rawArrivalNotices: NewArrivalNotice[],\n @Arg('bizplaceId', type => String) bizplaceId: string,\n @Arg('bufferLocation', type => String, { nullable: true }) bufferLocation: string\n ): Promise<ArrivalNoticeList> {\n const { domain, user, tx } = context.state\n let createdArrivalNoticeIds: string[] = [],\n createdOrderProductIds: string[] = [],\n errorsCaught: any[] = [],\n finalArrivalNoticeList: ArrivalNotice[] = []\n let opStatus = ORDER_PRODUCT_STATUS.PENDING_RECEIVE\n let anStatus = ORDER_STATUS.PENDING_RECEIVE\n\n const foundBizplace: Bizplace = await tx\n .getRepository(Bizplace)\n .findOne({ where: { id: bizplaceId }, relations: ['domain'] })\n\n if (!foundBizplace) throw new Error('company not found')\n\n // to check whether the raw data are valid\n const validatedArrivalNotices: RawArrivalNotice[] = await validateBulkArrivalNoticesFunction(\n rawArrivalNotices,\n bizplaceId,\n tx\n )\n\n // check for custom GAN order no setting\n const ganNoSetting: Setting = await tx.getRepository(Setting).findOne({\n where: {\n domain: { id: domain.id },\n name: ORDER_NUMBER_SETTING_KEY.GAN_NUMBER_RULE\n }\n })\n\n const ganProcessingSetting: Setting = await tx.getRepository(Setting).findOne({\n where: { domain: { id: domain.id }, category: 'id-rule', name: 'gan-order-processing' }\n })\n\n const partnerGanProcessingSetting: PartnerSetting = await tx.getRepository(PartnerSetting).findOne({\n where: {\n setting: { id: ganProcessingSetting.id },\n domain: { id: domain.id },\n partnerDomain: { id: foundBizplace.domain.id }\n }\n })\n\n // If status of GAN is PENDING_RECEIVE then directly to assign warehouse\n if (ganProcessingSetting) {\n let setting = !isNaN(partnerGanProcessingSetting?.value)\n ? partnerGanProcessingSetting?.value\n : ganProcessingSetting.value\n\n // CONFIRM to assign if setting value is 1\n if (setting == 1) {\n opStatus = ORDER_PRODUCT_STATUS.ARRIVED\n anStatus = ORDER_STATUS.ARRIVED\n }\n }\n\n // extract rawArrivalNotices data into normal ArrivalNotice format\n let arrivalNotices: Partial<ArrivalNotice[]> = extractArrivalNotices(validatedArrivalNotices)\n\n for (let i = 0, l = arrivalNotices.length; i < l; i++) {\n try {\n await getConnection().transaction(async childTx => {\n // check for duplication\n const duplicatedArrivalNotice: ArrivalNotice = await childTx.getRepository(ArrivalNotice).findOne({\n where: {\n refNo: arrivalNotices[i].refNo,\n refNo2: arrivalNotices[i].refNo2,\n refNo3: arrivalNotices[i].refNo3,\n etaDate: arrivalNotices[i].etaDate,\n truckNo: arrivalNotices[i].truckNo,\n containerNo: arrivalNotices[i].containerNo,\n containerSize: arrivalNotices[i].containerSize,\n looseItem: arrivalNotices[i].looseItem,\n importCargo: arrivalNotices[i].importCargo\n }\n })\n\n if (duplicatedArrivalNotice) {\n throw new Error(`duplicated with ${duplicatedArrivalNotice.name}`)\n }\n\n // save new arrival notice\n const createdArrivalNotice: ArrivalNotice = await childTx.getRepository(ArrivalNotice).save({\n ...arrivalNotices[i],\n name: ganNoSetting\n ? await generateId({ domain, type: ORDER_NUMBER_RULE_TYPE.GAN_NUMBER, seed: {} })\n : OrderNoGenerator.arrivalNotice(),\n domain,\n bizplace: foundBizplace,\n status: ORDER_STATUS.PENDING,\n creator: user,\n updater: user\n })\n\n // save new order products\n let createdOrderProducts: OrderProduct[] = await Promise.all(\n arrivalNotices[i].orderProducts.map(async (op: OrderProduct) => {\n return {\n ...op,\n domain,\n bizplace: foundBizplace,\n name: OrderNoGenerator.orderProduct(),\n // product: await childTx.getRepository(Product).findOneBy({ id: op.product.id }),\n status: ORDER_PRODUCT_STATUS.PENDING,\n arrivalNotice: createdArrivalNotice,\n creator: user\n }\n })\n )\n createdOrderProducts = await childTx.getRepository(OrderProduct).save(createdOrderProducts)\n\n // generate new jobsheet\n await generateJobSheet(domain, user, createdArrivalNotice, childTx)\n\n // push arrivalNotice and orderProducts IDs if successfully saved\n createdArrivalNoticeIds.push(createdArrivalNotice.id)\n createdOrderProductIds.push(...createdOrderProducts.map(op => op.id))\n })\n } catch (error) {\n // collect the arrivalNotice details and its error\n let rawArrivalNotices: RawArrivalNotice[] = formRawArrivalNotices(arrivalNotices[i], error.message)\n errorsCaught.push(...rawArrivalNotices)\n }\n }\n\n if (createdArrivalNoticeIds.length && createdOrderProductIds.length) {\n await getConnection().transaction(async childTx => {\n // update arrivalNotices status to PENDING_RECEIVE\n await childTx\n .getRepository(ArrivalNotice)\n .update({ id: In(createdArrivalNoticeIds) }, { status: anStatus, updater: user })\n\n // update orderProducts status to PENDING_RECEIVE\n await childTx\n .getRepository(OrderProduct)\n .update({ id: In(createdOrderProductIds) }, { status: opStatus, updater: user })\n\n finalArrivalNoticeList = await childTx.getRepository(ArrivalNotice).find({\n where: { id: In(createdArrivalNoticeIds) },\n relations: ['orderProducts', 'orderProducts.product', 'bizplace']\n })\n })\n }\n\n if (errorsCaught.length) {\n // should return this error list in the grist so that user know which gan need to amend\n throw new ValidationError({\n ...ValidationError.ERROR_CODES.INVALID_DATA_FOUND,\n detail: { data: JSON.stringify(errorsCaught) }\n })\n }\n\n // return arrivalNotices with its orderProducts list\n return { items: finalArrivalNoticeList, total: 0 }\n }\n}\n\nexport async function deleteArrivalNotice(\n tx: EntityManager,\n name: string,\n user: User,\n domain: Domain\n): Promise<boolean> {\n let foundArrivalNotice: ArrivalNotice = await tx.getRepository(ArrivalNotice).findOne({\n where: { domain: { id: domain.id }, name },\n relations: ['bizplace', 'releaseGood', 'orderProducts', 'orderVass', 'collectionOrders', 'creator', 'updater']\n })\n\n if (!foundArrivalNotice) throw new Error(`Arrival notice doesn't exists.`)\n\n const foundJS: JobSheet = await tx.getRepository(JobSheet).findOne({\n where: {\n bizplace: { id: foundArrivalNotice.bizplace.id },\n arrivalNoticeRefNo: foundArrivalNotice.name\n }\n })\n\n if (foundJS) await tx.getRepository(JobSheet).delete({ arrivalNoticeRefNo: foundArrivalNotice.name })\n\n const foundOPs: OrderProduct[] = foundArrivalNotice.orderProducts\n const foundOVs: OrderVas[] = foundArrivalNotice.orderVass\n\n // 1. delete order products\n const productIds = foundOPs.map((product: OrderProduct) => product.id)\n if (productIds.length) {\n await tx.getRepository(OrderProduct).delete({ id: In(productIds) })\n }\n\n // 2. delete order vass\n const vasIds = foundOVs.map((vas: OrderVas) => vas.id)\n if (vasIds.length) {\n await tx.getRepository(OrderVas).delete({ id: In(vasIds) })\n }\n\n await tx.getRepository(ArrivalNotice).save({\n ...foundArrivalNotice,\n updater: user\n })\n\n // 4. Remove relation with RO if it's cross docking\n if (foundArrivalNotice.crossDocking && foundArrivalNotice.releaseGood?.id) {\n let releaseGood: ReleaseGood = foundArrivalNotice.releaseGood\n releaseGood.arrivalNotice = null\n releaseGood = await tx.getRepository(ReleaseGood).save(releaseGood)\n\n await tx.getRepository(ArrivalNotice).delete({ domain, name })\n await deleteReleaseGood(tx, releaseGood.name, user, domain)\n } else {\n // 5. delete GAN\n await tx.getRepository(ArrivalNotice).delete({ domain, name })\n }\n return true\n}\n\nexport async function generateArrivalNoticeFunction(\n _: any,\n arrivalNotice: any,\n fromPo: Boolean,\n files: FileUpload[],\n context: any,\n tx?: EntityManager\n): Promise<ArrivalNotice> {\n const { domain, user } = context.state\n let orderProducts: OrderProduct[] = arrivalNotice.orderProducts\n let orderVass: OrderVas[] = arrivalNotice.orderVass\n let myBizplace: Bizplace\n let orderNo: string = ''\n\n const settingRepo: Repository<Setting> = tx?.getRepository(Setting) || getRepository(Setting)\n\n if (arrivalNotice.bizplace) myBizplace = arrivalNotice.bizplace\n else if (arrivalNotice.customerBizplaceId) {\n const permittedBizplaces: Bizplace[] = await getPermittedBizplaces(domain, user)\n let foundPermittedBizplace: Bizplace = permittedBizplaces.find(biz => biz.id == arrivalNotice.customerBizplaceId)\n\n if (!foundPermittedBizplace) throw new Error(`This user does not permitted for this company`)\n\n myBizplace = arrivalNotice.customerBizplaceId\n } else if (arrivalNotice.partnerBizplaceId) {\n const permittedBizplaces: Bizplace[] = await getPermittedBizplaces(domain, user)\n let foundPermittedBizplace: Bizplace = permittedBizplaces.find(biz => biz.id == arrivalNotice.partnerBizplaceId)\n\n if (!foundPermittedBizplace) throw new Error(`This user does not permitted for this company`)\n\n myBizplace = arrivalNotice.partnerBizplaceId\n } else if (arrivalNotice.warehouseId) myBizplace = await getOutletBizplace(arrivalNotice.warehouseId)\n else myBizplace = await getMyBizplace(domain, user)\n\n if (arrivalNotice.supplier) {\n const supplier: ContactPoint = await tx.getRepository(ContactPoint).findOne({\n where: { bizplace: { id: arrivalNotice.supplier.id }, domain: { id: domain.id } },\n relations: ['bizplace']\n })\n\n if (!supplier) throw new Error('contact point does not exist')\n\n arrivalNotice.supplier = supplier\n }\n // find GAN number rule setting\n const ganNoSetting: Setting = await settingRepo.findOne({\n where: {\n domain: { id: domain.id },\n name: ORDER_NUMBER_SETTING_KEY.GAN_NUMBER_RULE\n }\n })\n\n if (ganNoSetting) {\n orderNo = await generateId({ domain, type: ORDER_NUMBER_RULE_TYPE.GAN_NUMBER, seed: {} })\n } else {\n orderNo = OrderNoGenerator.arrivalNotice()\n }\n\n // 1. Create arrival notice\n const createdArrivalNotice: ArrivalNotice = await tx.getRepository(ArrivalNotice).save({\n ...arrivalNotice,\n name: orderNo,\n domain,\n bizplace: myBizplace,\n looseItem: arrivalNotice?.looseItem ? arrivalNotice.looseItem : false,\n status: fromPo ? ORDER_STATUS.INTRANSIT : ORDER_STATUS.PENDING,\n creator: user,\n updater: user\n })\n\n // 2. Create arrival notice product\n await addArrivalNoticeProducts(\n domain,\n createdArrivalNotice,\n orderProducts.map((op: OrderProduct) => {\n return { ...op, status: fromPo ? ORDER_PRODUCT_STATUS.INTRANSIT : ORDER_PRODUCT_STATUS.PENDING }\n }),\n user,\n tx\n )\n\n await generateJobSheet(domain, user, createdArrivalNotice, tx)\n\n // 3. Create arrival notice vas\n if (orderVass?.length) {\n orderVass = await Promise.all(\n orderVass.map(async (ov: OrderVas) => {\n if (ov.targetProduct) {\n ov.targetProduct = await tx.getRepository(Product).findOneBy({ id: ov.targetProduct.id })\n }\n\n return {\n ...ov,\n domain,\n bizplace: myBizplace,\n name: OrderNoGenerator.orderVas(),\n vas: await tx.getRepository(Vas).findOneBy({ domain: { id: domain.id }, id: ov.vas.id }),\n type: ORDER_TYPES.ARRIVAL_NOTICE,\n arrivalNotice: createdArrivalNotice,\n status: fromPo ? ORDER_VAS_STATUS.INTRANSIT : ORDER_VAS_STATUS.PENDING,\n creator: user,\n updater: user\n }\n })\n )\n await tx.getRepository(OrderVas).save(orderVass)\n }\n\n if (files?.length) {\n const attachments: Attachment[] = files.map(attachment => {\n return {\n file: attachment,\n refType: ATTACHMENT_TYPE.GAN,\n refBy: createdArrivalNotice.id,\n category: ATTACHMENT_TYPE.GAN /* TODO use refType */\n }\n })\n await createAttachments(_, { attachments }, context)\n }\n\n return createdArrivalNotice\n}\n\nexport async function confirmArrivalNoticeFunction(\n name: string,\n context: any,\n tx?: EntityManager\n): Promise<ArrivalNotice> {\n const { user, domain } = context.state\n\n const foundArrivalNotice: ArrivalNotice = await tx.getRepository(ArrivalNotice).findOne({\n where: { domain: { id: domain.id }, name, status: ORDER_STATUS.PENDING },\n relations: [\n 'bizplace',\n 'bizplace.domain',\n 'releaseGood',\n 'orderProducts',\n 'orderProducts.product',\n 'orderVass',\n 'orderVass.vas',\n 'creator',\n 'updater'\n ]\n })\n\n let foundOPs: OrderProduct[] = foundArrivalNotice.orderProducts\n let foundOVs: OrderVas[] = foundArrivalNotice.orderVass\n let customerBizplace: Bizplace = foundArrivalNotice.bizplace\n let opStatus = ORDER_PRODUCT_STATUS.PENDING_RECEIVE\n let anStatus = ORDER_STATUS.PENDING_RECEIVE\n let ovStatus = ORDER_VAS_STATUS.PENDING_RECEIVE\n let acceptedByUser = null\n let acceptedTime = null\n\n const ganProcessingSetting: Setting = await tx.getRepository(Setting).findOne({\n where: { domain: { id: domain.id }, category: 'id-rule', name: 'gan-order-processing' }\n })\n\n const partnerGanProcessingSetting: PartnerSetting = await tx.getRepository(PartnerSetting).findOne({\n where: {\n setting: { id: ganProcessingSetting.id },\n domain: { id: domain.id },\n partnerDomain: { id: customerBizplace?.domain?.id }\n }\n })\n\n // If status of GAN is PENDING_RECEIVE then directly to assign warehouse\n if (ganProcessingSetting) {\n let setting = !isNaN(partnerGanProcessingSetting?.value)\n ? partnerGanProcessingSetting?.value\n : ganProcessingSetting.value\n\n // CONFIRM to assign if setting value is 1\n if (setting == 1) {\n opStatus = ORDER_PRODUCT_STATUS.ARRIVED\n anStatus = ORDER_STATUS.ARRIVED\n ovStatus = ORDER_VAS_STATUS.ARRIVED\n acceptedByUser = user\n acceptedTime = new Date()\n }\n }\n\n if (!foundArrivalNotice) throw new Error(`Arrival notice doesn't exists.`)\n\n // 1. GAN Status change (PENDING => PENDING_RECEIVE)\n let arrivalNotice: ArrivalNotice = await tx.getRepository(ArrivalNotice).save({\n ...foundArrivalNotice,\n status: anStatus,\n updater: user,\n acceptedBy: acceptedByUser,\n acceptedAt: acceptedTime\n })\n\n foundOPs = foundOPs.map((op: OrderProduct) => {\n return { ...op, status: opStatus }\n })\n await tx.getRepository(OrderProduct).save(foundOPs)\n\n // 2. Update order vas status if it exists.\n if (foundOVs && foundOVs.length) {\n foundOVs = foundOVs.map((ov: OrderVas) => {\n return { ...ov, status: ovStatus }\n })\n\n await tx.getRepository(OrderVas).save(foundOVs)\n }\n\n // notification logics\n // get Office Admin Users\n if (context?.state?.type != 'api') {\n const users: any[] = await tx\n .getRepository('users_roles')\n .createQueryBuilder('ur')\n .select('ur.users_id', 'id')\n .where(qb => {\n const subQuery = qb\n .subQuery()\n .select('role.id')\n .from(Role, 'role')\n .where(\"role.name = 'Office Admin'\")\n .andWhere('role.domain_id = :domain', { domain: domain.id })\n .getQuery()\n return 'ur.roles_id IN ' + subQuery\n })\n .getRawMany()\n\n // send notification to Office Admin Users\n if (users?.length && context.header?.referer) {\n const receivers: any[] = users.map(user => user.id)\n const msg = {\n title: `New Arrival Notice from ${customerBizplace.name}`,\n body: `New incoming order, ${foundArrivalNotice.name} is pending for receiving`,\n url: context.header.referer,\n data: { url: context.header.referer }\n }\n\n /**\n * @notes Temporary off sendNotification due to suspect of causing wms down\n */\n\n // await sendNotification({\n // receivers,\n // message: { ...msg }\n // })\n }\n }\n\n return arrivalNotice\n}\n\nexport async function receiveArrivalNoticeFunction(\n _: any,\n name: string,\n context: ResolverContext\n): Promise<ArrivalNotice> {\n const { user, domain, tx } = context.state\n try {\n const foundArrivalNotice: ArrivalNotice = await tx.getRepository(ArrivalNotice).findOne({\n where: { domain: { id: domain.id }, name, status: ORDER_STATUS.PENDING_RECEIVE },\n relations: ['bizplace', 'bizplace.domain', 'collectionOrders', 'orderProducts', 'orderVass']\n })\n\n let foundOPs: OrderProduct[] = foundArrivalNotice.orderProducts\n let foundOVs: OrderVas[] = foundArrivalNotice.orderVass\n let foundCOs: CollectionOrder[] = await tx.getRepository(CollectionOrder).find({\n where: { domain: { id: domain.id }, refNo: foundArrivalNotice.name }\n })\n let customerBizplace: Bizplace = foundArrivalNotice.bizplace\n let opStatus = ORDER_PRODUCT_STATUS.INTRANSIT\n let anStatus = ORDER_STATUS.INTRANSIT\n let ovStatus = ORDER_VAS_STATUS.INTRANSIT\n let coStatus = ORDER_STATUS.READY_TO_DISPATCH\n\n const ganProcessingSetting: Setting = await tx.getRepository(Setting).findOne({\n where: { domain: { id: domain.id }, category: 'id-rule', name: 'gan-order-processing' }\n })\n\n const partnerGanProcessingSetting: PartnerSetting = await tx.getRepository(PartnerSetting).findOne({\n where: {\n setting: { id: ganProcessingSetting.id },\n domain: { id: domain.id },\n partnerDomain: { id: customerBizplace?.domain?.id }\n }\n })\n\n // If status of GAN is INTRANSIT then directly to assign warehouse\n if (ganProcessingSetting) {\n let setting = !isNaN(partnerGanProcessingSetting?.value)\n ? partnerGanProcessingSetting?.value\n : ganProcessingSetting.value\n\n // RECEIVE to assign if setting value is 2\n if (setting == 2) {\n opStatus = ORDER_PRODUCT_STATUS.ARRIVED\n anStatus = ORDER_STATUS.ARRIVED\n ovStatus = ORDER_VAS_STATUS.ARRIVED\n coStatus = ORDER_STATUS.READY_TO_DISPATCH\n }\n }\n\n if (!foundArrivalNotice) throw new Error(`Arrival notice doesn't exists.`)\n\n // 1. Update status of order products (PENDING_RECEIVE => INTRANSIT)\n foundOPs = foundOPs.map((op: OrderProduct) => {\n return {\n ...op,\n status: opStatus,\n updater: user\n }\n })\n await tx.getRepository(OrderProduct).save(foundOPs)\n\n // 2. Update status of order vass if it exists (PENDING_RECEIVE => INTRANSIT)\n if (foundOVs && foundOVs.length) {\n foundOVs = foundOVs.map((ov: OrderVas) => {\n return {\n ...ov,\n status: ovStatus,\n updater: user\n }\n })\n await tx.getRepository(OrderVas).save(foundOVs)\n }\n\n // 3. If there's collection order, update status of collection order (PENDING_RECEIVE => READY_TO_DISPATCH)\n if (foundCOs) {\n foundCOs = foundCOs.map((co: CollectionOrder) => {\n return {\n ...co,\n status: coStatus,\n updater: user\n }\n })\n }\n\n // notification logics\n const users: any[] = await getDomainUsers(foundArrivalNotice?.bizplace, tx)\n\n // send notification to Customer Users\n if (users?.length && context.header?.referer) {\n const receivers: any[] = users.map(user => user.id)\n const msg = {\n title: `Latest status for ${foundArrivalNotice.name}`,\n body: `Your GAN has been received and processed by ${domain.name}`,\n url: context.header.referer,\n data: { url: context.header.referer }\n }\n\n /**\n * @notes Temporary off sendNotification due to suspect of causing wms down\n */\n\n // await sendNotification({\n // receivers,\n // message: { ...msg }\n // })\n }\n\n // 4. Update status of arrival notice (PENDING_RECEIVE => INTRANSIT)\n let rcvArrivalNotice = await tx.getRepository(ArrivalNotice).save({\n ...foundArrivalNotice,\n status: anStatus,\n acceptedBy: user,\n acceptedAt: new Date(),\n updater: user\n })\n\n return foundArrivalNotice\n } catch (e) {\n throw e\n }\n}\n\nexport async function checkArrivedNoticeFunction(\n name: string,\n context: any,\n tx?: EntityManager\n): Promise<ArrivalNotice> {\n const { user, domain } = context.state\n try {\n const foundArrivalNotice: ArrivalNotice = await tx.getRepository(ArrivalNotice).findOne({\n where: { domain: { id: domain.id }, name, status: ORDER_STATUS.INTRANSIT },\n relations: ['bizplace', 'collectionOrders', 'orderProducts', 'orderVass']\n })\n\n debug('ganNo', name, foundArrivalNotice)\n\n if (!foundArrivalNotice) throw new Error(`Arrival notice doesn't exists.`)\n\n // 1. Check wheter related collection order is done or not\n const foundCOs: CollectionOrder[] = foundArrivalNotice.collectionOrders\n if (foundCOs && foundCOs.length) {\n foundCOs.map((co: CollectionOrder) => {\n if (co.status !== ORDER_STATUS.DONE) {\n throw new Error(`Collection Order: ${co.name} is not finished yet.`)\n }\n })\n }\n\n let foundOPs: OrderProduct[] = foundArrivalNotice.orderProducts\n let foundOVs: OrderVas[] = foundArrivalNotice.orderVass\n\n // 2. Update status of order products (INTRANSIT => ARRIVED)\n foundOPs = foundOPs.map((op: OrderProduct) => {\n return {\n ...op,\n status: ORDER_PRODUCT_STATUS.ARRIVED,\n updater: user\n }\n })\n await tx.getRepository(OrderProduct).save(foundOPs)\n\n // 3. Update status of order vass if it exists (INTRANSIT => ARRIVED)\n if (foundOVs && foundOVs.length) {\n foundOVs = foundOVs.map((ov: OrderVas) => {\n return {\n ...ov,\n status: ORDER_VAS_STATUS.ARRIVED,\n updater: user\n }\n })\n await tx.getRepository(OrderVas).save(foundOVs)\n }\n\n // 4. Update status of arrival notice (INTRANSIT => ARRIVED)\n await tx.getRepository(ArrivalNotice).save({\n ...foundArrivalNotice,\n status: ORDER_STATUS.ARRIVED,\n updater: user\n })\n\n // notification logics\n const users: any[] = await getDomainUsers(foundArrivalNotice?.bizplace, tx)\n\n if (users?.length && context.header?.referer) {\n const receivers: any[] = users.map(user => user.id)\n const msg = {\n title: `Latest status for ${foundArrivalNotice.name}`,\n body: `Your goods has safely arrived at ${domain.name}`,\n url: context.header.referer,\n data: { url: context.header.referer }\n }\n\n /**\n * @notes Temporary off sendNotification due to suspect of causing wms down\n */\n\n // await sendNotification({\n // receivers,\n // message: { ...msg }\n // })\n }\n\n return foundArrivalNotice\n } catch (e) {\n throw e\n }\n}\n\nexport async function rejectArrivalNotice(\n tx: EntityManager,\n name: string,\n remark: string,\n context: any\n): Promise<ArrivalNotice> {\n const { user, domain } = context.state\n\n const foundArrivalNotice: ArrivalNotice = await tx.getRepository(ArrivalNotice).findOne({\n where: { domain: { id: domain.id }, name, status: ORDER_STATUS.PENDING_RECEIVE },\n relations: ['bizplace', 'orderProducts', 'orderVass', 'collectionOrders']\n })\n\n if (!foundArrivalNotice) throw new Error(`Arrival notice doesn't exists.`)\n if (!remark) throw new Error('Remark is not exist.')\n\n let foundOPs: OrderProduct[] = foundArrivalNotice.orderProducts\n let foundOVs: OrderVas[] = foundArrivalNotice.orderVass\n let foundCOs: CollectionOrder[] = foundArrivalNotice.collectionOrders\n\n // 1. Update status of order products (PENDING_RECEIVE => REJECTED)\n foundOPs = foundOPs.map((op: OrderProduct) => {\n op.status = ORDER_PRODUCT_STATUS.REJECTED\n op.updater = user\n return op\n })\n await tx.getRepository(OrderProduct).save(foundOPs)\n\n // 2. Update status of order vass if it exists (PENDING_RECEIVE => REJECTED)\n if (foundOVs && foundOVs.length) {\n foundOVs = foundOVs.map((ov: OrderVas) => {\n ov.status = ORDER_VAS_STATUS.REJECTED\n ov.updater = user\n return ov\n })\n await tx.getRepository(OrderVas).save(foundOVs)\n }\n\n // 3. If there's collection order, update status of collection order (PENDING_RECEIVE => REJECTED)\n if (foundCOs) {\n foundCOs = foundCOs.map((co: CollectionOrder) => {\n co.status = ORDER_STATUS.REJECTED\n co.updater = user\n return co\n })\n await tx.getRepository(CollectionOrder).save(foundCOs)\n }\n\n foundArrivalNotice.remark = remark\n foundArrivalNotice.status = ORDER_STATUS.REJECTED\n foundArrivalNotice.updater = user\n await tx.getRepository(ArrivalNotice).save(foundArrivalNotice)\n\n // notification logics\n const users: any[] = await getDomainUsers(foundArrivalNotice?.bizplace, tx)\n\n // send notification to Customer Users\n if (users?.length && context.header?.referer) {\n const receivers: any[] = users.map(user => user.id)\n const msg = {\n title: `Latest status for ${foundArrivalNotice.name}`,\n body: `Your GAN has been rejected.`,\n url: context.header.referer,\n data: { url: context.header.referer }\n }\n\n /**\n * @notes Temporary off sendNotification due to suspect of causing wms down\n */\n\n // await sendNotification({\n // receivers,\n // message: { ...msg }\n // })\n }\n\n return foundArrivalNotice\n}\n\nexport async function addArrivalNoticeProducts(\n domain: Domain,\n arrivalNotice: ArrivalNotice,\n newOrderProducts: any[],\n user: User,\n tx?: EntityManager\n): Promise<void> {\n const productRepo: Repository<Product> = tx?.getRepository(Product) || getRepository(Product)\n const orderProductRepo: Repository<OrderProduct> = tx?.getRepository(OrderProduct) || getRepository(OrderProduct)\n\n if (!arrivalNotice?.bizplace || !arrivalNotice?.orderProducts?.length) {\n arrivalNotice = await tx.getRepository(ArrivalNotice).findOne({\n where: { domain: { id: domain.id }, name: arrivalNotice.name },\n relations: ['bizplace', 'orderProducts']\n })\n }\n\n const createdOrderProducts: OrderProduct[] = await Promise.all(\n newOrderProducts.map(async (op: OrderProduct) => {\n return {\n ...op,\n domain,\n bizplace: arrivalNotice.bizplace,\n name: OrderNoGenerator.orderProduct(),\n product: await productRepo.findOneBy({ id: op.product.id }),\n arrivalNotice,\n creator: user\n }\n })\n )\n\n debug('gan-created-order-products', createdOrderProducts)\n await orderProductRepo.save(createdOrderProducts)\n}\n\nexport async function editArrivalNoticeProducts(\n existingOrderProducts: (OrderProduct | OrderProductPatch)[],\n user: User,\n tx?: EntityManager\n): Promise<void> {\n const orderProductRepo: Repository<OrderProduct> = tx?.getRepository(OrderProduct) || getRepository(OrderProduct)\n\n const updatedOrderProducts: OrderProduct[] = await Promise.all(\n existingOrderProducts.map(async (op: OrderProduct) => {\n return {\n ...op,\n status: ORDER_PRODUCT_STATUS.EDITED,\n updater: user\n }\n })\n )\n\n debug('gan-updated-order-products', updatedOrderProducts)\n await orderProductRepo.save(updatedOrderProducts)\n}\n\nfunction extractArrivalNotices(rawArrivalNotices): Partial<ArrivalNotice[]> {\n return rawArrivalNotices.reduce((arrivalNotices, raw) => {\n // discard the item that has no productId or productDetailId\n if (!raw.productId || !raw.productDetailId) return\n\n const idx: number = arrivalNotices.findIndex(an => {\n // consider these attributes if they are exist in \"item\"\n const comparison = [\n 'refNo2',\n 'refNo3',\n 'truckNo',\n 'ownTransport',\n 'container',\n 'containerNo',\n 'containerSize',\n 'looseItem',\n 'importCargo'\n ]\n\n let a: any = {},\n b: any = {}\n\n comparison.forEach(cc => {\n if (raw[cc] !== null) {\n a[cc] = raw[cc]\n b[cc] = an[cc]\n }\n })\n\n a = JSON.stringify(Object.fromEntries(Object.entries(a).sort()))\n b = JSON.stringify(Object.fromEntries(Object.entries(b).sort()))\n\n return an.refNo == raw.refNo && an.etaDate == raw.etaDate && a === b\n })\n\n const product: Product = Object.assign(new Product(), { id: raw.productId, sku: raw.sku })\n const orderProduct: Partial<OrderProduct> = {\n product,\n batchId: raw.batchId,\n batchIdRef: raw.batchIdRef,\n packingType: raw.packingType,\n packingSize: raw.packingSize,\n packQty: raw.packQty,\n uomValue: raw.uomValue,\n uom: raw.uom,\n totalUomValue: raw.totalUomValue,\n palletQty: raw.palletQty,\n unitPrice: raw.unitPrice,\n manufactureDate: raw.manufactureDate\n }\n\n if (idx >= 0) {\n const duplicateSkuIdx: number = arrivalNotices[idx].orderProducts.findIndex(\n op =>\n op.sku === raw.sku &&\n op.packingType === raw.packingType &&\n op.packingSize === raw.packingSize &&\n op.batchId === raw.batchId\n )\n\n if (duplicateSkuIdx >= 0) arrivalNotices[idx].orderProducts[duplicateSkuIdx].packQty += raw.packQty\n else arrivalNotices[idx].orderProducts.push(orderProduct)\n } else {\n arrivalNotices.push({\n refNo: raw.refNo,\n refNo2: raw.refNo2,\n refNo3: raw.refNo3,\n etaDate: raw.etaDate,\n truckNo: raw.truckNo,\n ownTransport: raw.ownTransport,\n container: raw.container,\n containerNo: raw.containerNo,\n containerSize: raw.containerSize,\n importCargo: raw.importCargo,\n looseItem: raw.looseItem,\n orderProducts: [orderProduct]\n })\n }\n\n return arrivalNotices\n }, [])\n}\n\nfunction formRawArrivalNotices(arrivalNotice, errorMsg) {\n let rawArrivalNotices = []\n for (let i = 0, l = arrivalNotice.orderProducts.length; i < l; i++) {\n let rawArrivalNotice = {\n ...arrivalNotice,\n ...arrivalNotice.orderProducts[i],\n sku: arrivalNotice.orderProducts[i].product.sku,\n errorMsg\n }\n\n delete rawArrivalNotice.orderProducts\n delete rawArrivalNotice.product\n\n rawArrivalNotices.push(rawArrivalNotice)\n }\n return rawArrivalNotices\n}\n"]}
@@ -69,7 +69,7 @@ let ArrivalNoticeQuery = class ArrivalNoticeQuery {
69
69
  foundGAN.orderProducts = await Promise.all(foundGAN.orderProducts.map(async (orderProduct) => {
70
70
  orderProduct.product['productDetails'] = await (0, shell_1.getRepository)(product_base_1.ProductDetail).find({
71
71
  where: {
72
- product: orderProduct.product.id,
72
+ product: { id: orderProduct.product.id },
73
73
  packingType: orderProduct.packingType,
74
74
  packingSize: orderProduct.packingSize
75
75
  }
@@ -81,7 +81,7 @@ let ArrivalNoticeQuery = class ArrivalNoticeQuery {
81
81
  foundGAN.orderInventories = await Promise.all(foundGAN.orderInventories.map(async (orderInventory) => {
82
82
  orderInventory.inventory.product['productDetails'] = await (0, shell_1.getRepository)(product_base_1.ProductDetail).find({
83
83
  where: {
84
- product: orderInventory.inventory.product.id,
84
+ product: { id: orderInventory.inventory.product.id },
85
85
  packingType: orderInventory.inventory.packingType,
86
86
  packingSize: orderInventory.inventory.packingSize
87
87
  }
@@ -1 +1 @@
1
- {"version":3,"file":"arrival-notice-query.js","sourceRoot":"","sources":["../../../server/service/arrival-notice/arrival-notice-query.ts"],"names":[],"mappings":"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","sourcesContent":["import { Arg, Args, Ctx, Directive, FieldResolver, Query, Resolver, Root } from 'type-graphql'\nimport { EntityManager, In, OrderByCondition, SelectQueryBuilder } from 'typeorm'\n\nimport { Attachment } from '@things-factory/attachment-base'\nimport { checkUserBelongsDomain, User } from '@things-factory/auth-base'\nimport { Bizplace, getCompanyBizplace, getPermittedBizplaceIds } from '@things-factory/biz-base'\nimport { ProductDetail } from '@things-factory/product-base'\nimport { buildQuery, Domain, getRepository, ListParam } from '@things-factory/shell'\n\nimport { ArrivalNoticeList, NewArrivalNotice, RawArrivalNotice } from '../'\nimport { ATTACHMENT_TYPE, ORDER_STATUS } from '../../constants'\nimport { OrderInventory, OrderProduct } from '../../service'\nimport { ArrivalNotice } from './arrival-notice'\n\n@Resolver(ArrivalNotice)\nexport class ArrivalNoticeQuery {\n @Directive('@privilege(category: \"order\", privilege: \"query\")')\n @Query(returns => ArrivalNotice)\n async arrivalNotice(\n @Ctx() context: ResolverContext,\n @Arg('name', { nullable: true }) name?: string,\n @Arg('refNo', { nullable: true }) refNo?: string\n ): Promise<ArrivalNotice> {\n const { domain, user, bizplace }: { domain: Domain; user: User; bizplace?: Bizplace } = context.state\n\n let param: any = { domain, bizplace: bizplace ? bizplace : In(await getPermittedBizplaceIds(domain, user)) }\n\n if (name) param = { ...param, name }\n else if (refNo) param = { ...param, refNo }\n else return\n\n let foundGAN: ArrivalNotice = await getRepository(ArrivalNotice).findOne({\n where: { ...param },\n relations: [\n 'domain',\n 'bizplace',\n 'bizplace.domain',\n 'releaseGood',\n 'purchaseOrder',\n 'purchaseOrder.bufferLocation',\n 'orderProducts',\n 'orderProducts.product',\n 'orderInventories',\n 'orderInventories.inventory',\n 'orderInventories.inventory.product',\n 'orderInventories.inventory.location',\n 'orderVass',\n 'orderVass.vas',\n 'orderVass.targetProduct',\n 'supplier',\n 'creator',\n 'updater'\n ]\n })\n\n if (name && !foundGAN) throw new Error(`Failed to find arrival notice with ${name}`)\n\n if (foundGAN) {\n const foundAttachments: Attachment[] = await getRepository(Attachment).find({\n where: {\n domain: { id: domain.id },\n refBy: foundGAN?.id,\n category: ATTACHMENT_TYPE.GAN\n }\n })\n\n const foundPOAttachments: Attachment[] = foundGAN?.purchaseOrder?.id\n ? await getRepository(Attachment).find({\n where: {\n domain: { id: domain.id },\n refBy: foundGAN.purchaseOrder?.id,\n category: ATTACHMENT_TYPE.PO\n }\n })\n : []\n\n // add productDetails data to orderProduct.product\n foundGAN.orderProducts = await Promise.all(\n foundGAN.orderProducts.map(async (orderProduct: OrderProduct) => {\n orderProduct.product['productDetails'] = await getRepository(ProductDetail).find({\n where: {\n product: orderProduct.product.id,\n packingType: orderProduct.packingType,\n packingSize: orderProduct.packingSize\n }\n })\n return orderProduct\n })\n )\n\n // add productDetails data to orderInventory.inventory.product if orderInventory is exist\n if (foundGAN.orderInventories && foundGAN.orderInventories.length) {\n foundGAN.orderInventories = await Promise.all(\n foundGAN.orderInventories.map(async (orderInventory: OrderInventory) => {\n orderInventory.inventory.product['productDetails'] = await getRepository(ProductDetail).find({\n where: {\n product: orderInventory.inventory.product.id,\n packingType: orderInventory.inventory.packingType,\n packingSize: orderInventory.inventory.packingSize\n }\n })\n return orderInventory\n })\n )\n }\n\n return {\n ...foundGAN,\n attachment: [...foundPOAttachments, ...foundAttachments]\n }\n } else {\n return\n }\n }\n\n @Directive('@privilege(category: \"order_customer\", privilege: \"query\")')\n @Query(returns => ArrivalNoticeList)\n async arrivalNotices(@Ctx() context: ResolverContext, @Args() params: ListParam): Promise<ArrivalNoticeList> {\n const { domain, user } = context.state\n\n if (await checkUserBelongsDomain(domain, user)) {\n if (!params.filters.some(e => e.name === 'status') && !params.filters.some(e => e.name === 'name')) {\n params.filters.push({\n name: 'status',\n operator: 'notin',\n value: [ORDER_STATUS.PENDING, ORDER_STATUS.EDITING],\n relation: false\n })\n }\n }\n\n if (!params.filters.find((filter: any) => filter.name === 'bizplace')) {\n params.filters.push({\n name: 'bizplaceId',\n operator: 'in',\n value: await getPermittedBizplaceIds(domain, user),\n relation: false\n })\n }\n\n const fromDateParamIdx = params.filters.findIndex(param => param.name === 'fromDate')\n if (fromDateParamIdx >= 0) {\n let fromDateVal = new Date(params.filters[fromDateParamIdx].value)\n params.filters.splice(fromDateParamIdx, 1)\n\n params.filters.push({\n name: 'createdAt',\n operator: 'gte',\n value: fromDateVal.toISOString(),\n relation: false\n })\n }\n\n const toDateParamIdx = params.filters.findIndex(param => param.name === 'toDate')\n if (toDateParamIdx >= 0) {\n let toDateVal = new Date(params.filters[toDateParamIdx].value)\n params.filters.splice(toDateParamIdx, 1)\n\n params.filters.push({\n name: 'createdAt',\n operator: 'lt',\n value: new Date(toDateVal.setDate(toDateVal.getDate() + 1)).toISOString(),\n relation: false\n })\n }\n\n const qb: SelectQueryBuilder<ArrivalNotice> = getRepository(ArrivalNotice).createQueryBuilder('an')\n buildQuery(qb, params, context)\n qb.addSelect('COALESCE(\"cc\".rank, 9999)', 'rank')\n qb.leftJoinAndSelect('an.domain', 'domain')\n qb.leftJoinAndSelect('an.bizplace', 'bizplace')\n qb.leftJoinAndSelect('an.releaseGood', 'ro')\n qb.leftJoinAndSelect('an.creator', 'creator')\n qb.leftJoinAndSelect('an.updater', 'updater')\n qb.leftJoinAndSelect('an.acceptedBy', 'accepter')\n qb.leftJoin(\n subQuery => {\n return subQuery\n .select(`ccd.rank`, 'rank')\n .addSelect(`ccd.name`, 'status')\n .from(`common_code_details`, 'ccd')\n .innerJoin(`ccd.commonCode`, 'cc')\n .where(`ccd.domain_id = :domainId`, { domainId: domain.id })\n .andWhere(`cc.name = 'ORDER_STATUS'`)\n },\n 'cc',\n 'cc.status = an.status'\n )\n\n const arrChildSortData = ['bizplace']\n const sort: OrderByCondition = (params.sortings || []).reduce(\n (acc, sort) => ({\n ...acc,\n [arrChildSortData.indexOf(sort.name) >= 0 ? sort.name + '.name' : 'an.' + sort.name]: sort.desc ? 'DESC' : 'ASC'\n }),\n !params.sortings.some(e => e.name === 'status') ? { rank: 'ASC' } : {}\n )\n\n qb.orderBy(sort)\n\n const [items, total] = await qb.getManyAndCount()\n\n return { items, total }\n }\n\n @Directive('@privilege(category: \"order_warehouse\", privilege: \"query\")')\n @Query(returns => ArrivalNoticeList)\n async arrivalNoticeRequests(@Args() params: ListParam, @Ctx() context: ResolverContext): Promise<ArrivalNoticeList> {\n try {\n const { domain, user } = context.state\n const statusFilter = params.filters.some(e => e.name === 'status')\n const bizplaceFilter = params.filters.find(param => param.name === 'bizplaceId')\n\n if (!statusFilter) {\n params.filters.push({\n name: 'status',\n operator: 'notin',\n value: [ORDER_STATUS.PENDING, ORDER_STATUS.EDITING],\n relation: false\n })\n }\n\n if (!bizplaceFilter) {\n params.filters.push({\n name: 'bizplaceId',\n operator: 'in',\n value: await getPermittedBizplaceIds(domain, user),\n relation: false\n })\n }\n\n const fromDateParamIdx = params.filters.findIndex(param => param.name === 'fromDate')\n if (fromDateParamIdx >= 0) {\n let fromDateVal = new Date(params.filters[fromDateParamIdx].value)\n params.filters.splice(fromDateParamIdx, 1)\n\n params.filters.push({\n name: 'createdAt',\n operator: 'gte',\n value: fromDateVal.toISOString(),\n relation: false\n })\n }\n\n const toDateParamIdx = params.filters.findIndex(param => param.name === 'toDate')\n if (toDateParamIdx >= 0) {\n let toDateVal = new Date(params.filters[toDateParamIdx].value)\n params.filters.splice(toDateParamIdx, 1)\n\n params.filters.push({\n name: 'createdAt',\n operator: 'lt',\n value: new Date(toDateVal.setDate(toDateVal.getDate() + 1)).toISOString(),\n relation: false\n })\n }\n\n const qb: SelectQueryBuilder<ArrivalNotice> = getRepository(ArrivalNotice).createQueryBuilder('an')\n buildQuery(qb, params, context)\n qb.addSelect('COALESCE(\"cc\".rank, 9999)', 'rank')\n qb.leftJoinAndSelect('an.domain', 'domain')\n qb.leftJoinAndSelect('an.bizplace', 'bizplace')\n qb.leftJoinAndSelect('an.releaseGood', 'ro')\n qb.leftJoinAndSelect('an.creator', 'creator')\n qb.leftJoinAndSelect('an.updater', 'updater')\n qb.leftJoinAndSelect('an.acceptedBy', 'accepter')\n qb.leftJoin(\n subQuery => {\n return subQuery\n .select(`ccd.rank`, 'rank')\n .addSelect(`ccd.name`, 'status')\n .from(`common_code_details`, 'ccd')\n .innerJoin(`ccd.commonCode`, 'cc')\n .where(`ccd.domain_id = :domainId`, { domainId: domain.id })\n .andWhere(`cc.name = 'ORDER_STATUS'`)\n },\n 'cc',\n 'cc.status = an.status'\n )\n\n const arrChildSortData = ['bizplace']\n const sort: OrderByCondition = (params.sortings || []).reduce(\n (acc, sort) => ({\n ...acc,\n [arrChildSortData.indexOf(sort.name) >= 0 ? sort.name + '.name' : 'an.' + sort.name]: sort.desc\n ? 'DESC'\n : 'ASC'\n }),\n !params.sortings.some(e => e.name === 'status') ? { rank: 'ASC' } : {}\n )\n\n qb.orderBy(sort)\n\n const [items, total] = await qb.getManyAndCount()\n\n return { items, total }\n } catch (error) {\n throw error\n }\n }\n\n @Directive('@transaction')\n @Query(returns => [RawArrivalNotice])\n async validateBulkArrivalNotices(\n @Ctx() context: ResolverContext,\n @Arg('rawArrivalNotices', type => [NewArrivalNotice], { nullable: true }) rawArrivalNotices: NewArrivalNotice[],\n @Arg('bizplaceId', type => String) bizplaceId: string\n ): Promise<RawArrivalNotice[]> {\n const tx: EntityManager = context.state.tx\n return await validateBulkArrivalNoticesFunction(rawArrivalNotices, bizplaceId, tx)\n }\n\n @FieldResolver(type => Domain)\n async domain(@Root() arrivalNotice: ArrivalNotice): Promise<Domain> {\n return await getRepository(Domain).findOneBy({ id: arrivalNotice.domainId })\n }\n\n @FieldResolver(type => User)\n async creator(@Root() arrivalNotice: ArrivalNotice): Promise<User> {\n return await getRepository(User).findOneBy({ id: arrivalNotice.creatorId })\n }\n\n @FieldResolver(type => User)\n async updater(@Root() arrivalNotice: ArrivalNotice): Promise<User> {\n return await getRepository(User).findOneBy({ id: arrivalNotice.updaterId })\n }\n}\n\nexport async function validateBulkArrivalNoticesFunction(\n rawArrivalNotices: NewArrivalNotice[],\n bizplaceId: string,\n trxMgr: EntityManager\n): Promise<RawArrivalNotice[]> {\n const companyBizplace: Bizplace = await getCompanyBizplace(null, null, bizplaceId)\n\n const json_oi = JSON.stringify(\n rawArrivalNotices.map(raw => {\n return {\n ref_no: raw.refNo || null,\n ref_no_2: raw.refNo2 || null,\n ref_no_3: raw.refNo3 || null,\n eta_date: raw.etaDate || null,\n truck_no: raw.truckNo || null,\n own_transport: !!raw.truckNo || false,\n loose_item: raw.looseItem || false,\n import_cargo: raw.importCargo || false,\n container: (!!raw.containerNo && !!raw.containerSize) || false,\n container_no: raw.containerNo || null,\n container_size: raw.containerSize || null,\n sku: raw.sku || null,\n batch_id: raw.batchId || null,\n batch_id_ref: raw.batchIdRef || null,\n packing_type: raw.packingType || null,\n packing_size: raw.packingSize || null,\n uom: raw.uom || null,\n pack_qty: raw.packQty || null,\n pallet_qty: raw.palletQty || null,\n unit_price: raw.unitPrice || null,\n manufacture_date: raw.manufactureDate || null\n }\n })\n )\n\n await trxMgr.query(\n `\n CREATE TEMP TABLE raw_arrival_notices(\n ref_no VARCHAR(150),\n ref_no_2 VARCHAR(150),\n ref_no_3 VARCHAR(150),\n eta_date VARCHAR(24),\n truck_no VARCHAR(10),\n own_transport BOOLEAN,\n container BOOLEAN,\n container_no VARCHAR(50),\n container_size VARCHAR(24),\n import_cargo BOOLEAN,\n loose_item BOOLEAN,\n sku VARCHAR(150),\n batch_id VARCHAR(100),\n batch_id_ref VARCHAR(100),\n packing_type VARCHAR(50),\n packing_size INT,\n uom VARCHAR(10),\n pack_qty INT,\n pallet_qty INT,\n unit_price FLOAT8,\n manufacture_date DATE\n );\n `\n )\n\n await trxMgr.query(\n `\n CREATE TEMP TABLE temp_gan AS (\n SELECT an.name, an.ref_no, an.ref_no_2, an.ref_no_3, an.eta_date, an.truck_no, an.own_transport, an.container, an.container_no, an.container_size, an.import_cargo, an.loose_item\n FROM arrival_notices an\n WHERE EXISTS (\n SELECT raw.* FROM\n JSON_POPULATE_RECORDSET(NULL:: arrival_notices, $1) raw\n WHERE raw.ref_no = an.ref_no \n AND raw.ref_no_2 = an.ref_no_2\n AND raw.ref_no_3 = an.ref_no_3\n AND raw.eta_date::date = an.eta_date::date\n AND raw.truck_no = an.truck_no\n AND raw.own_transport = an.own_transport\n AND raw.container = an.container\n AND raw.container_no = an.container_no\n AND raw.container_size = an.container_size\n AND raw.loose_item = an.loose_item\n AND raw.import_cargo = an.import_cargo\t\t\t\n )\n )\n `,\n [json_oi]\n )\n\n await trxMgr.query(\n `\n INSERT INTO raw_arrival_notices \n SELECT \n js.ref_no, js.ref_no_2, js.ref_no_3, js.eta_date, js.truck_no, js.own_transport, js.container,\n js.container_no, js.container_size, js.import_cargo, js.loose_item, js.sku, js.batch_id,\n js.batch_id_ref, js.packing_type, js.packing_size, js.uom, js.pack_qty, js.pallet_qty,\n js.unit_price, js.manufacture_date\n FROM \n JSON_POPULATE_RECORDSET(NULL:: raw_arrival_notices, $1) js;\n `,\n [json_oi]\n )\n\n const insertResult: any[] = await trxMgr.query(`\n SELECT * from raw_arrival_notices\n `)\n\n let validatedItems = await trxMgr.query(\n `\n WITH foo AS (\n\t SELECT \n\t \tan.name AS gan_name,\n\t \tan.ref_no AS gan_ref_no,\n\t raw.ref_no, \n\t raw.ref_no_2, \n\t raw.ref_no_3, \n\t raw.eta_date, \n\t raw.truck_no, \n\t raw.own_transport, \n\t raw.container, \n\t raw.container_no, \n\t raw.container_size, \n\t raw.import_cargo, \n\t raw.loose_item, \n\t pr.id AS product_id, \n\t pd.id AS product_detail_id, \n\t raw.sku AS sku, \n\t CASE WHEN pr.description NOT IN (NULL, '', '-') THEN CONCAT(pr.name, '(', pr.description, ')') ELSE pr.name END AS product_info, \n\t raw.batch_id,\n\t raw.batch_id_ref,\n\t pd.packing_type, \n\t pd.packing_size, \n\t sum(raw.pack_qty) AS pack_qty, \n\t sum(pd.uom_value) AS uom_value,\n\t pd.uom, \n\t sum(raw.pallet_qty) AS pallet_qty, \n\t raw.unit_price, \n\t raw.manufacture_date\n\t FROM \n\t raw_arrival_notices raw \n\t LEFT JOIN temp_gan an ON raw.ref_no = an.ref_no \n\t AND raw.ref_no_2 = an.ref_no_2\n\t AND raw.ref_no_3 = an.ref_no_3\n\t AND raw.eta_date::date = an.eta_date::date\n\t AND raw.truck_no = an.truck_no\n\t AND raw.own_transport = an.own_transport\n\t AND raw.container = an.container\n\t AND raw.container_no = an.container_no\n\t AND raw.container_size = an.container_size\n\t AND raw.loose_item = an.loose_item\n\t AND raw.import_cargo = an.import_cargo \n\t LEFT JOIN products pr ON LOWER(pr.sku) = LOWER(raw.sku)\n\t LEFT JOIN product_details pd ON pr.id = pd.product_id\n\t AND CASE WHEN raw.packing_type NOTNULL AND raw.packing_size NOTNULL AND raw.uom NOTNULL\n\t THEN pd.packing_type = raw.packing_type AND pd.packing_size = raw.packing_size AND pd.uom = raw.uom \n\t WHEN raw.packing_type NOTNULL AND raw.packing_size NOTNULL AND raw.uom ISNULL\n\t THEN pd.packing_type = raw.packing_type AND pd.packing_size = raw.packing_size AND pd.is_default IS TRUE\n\t WHEN raw.packing_type ISNULL AND raw.packing_size ISNULL AND raw.uom NOTNULL\n\t THEN pd.uom = raw.uom AND pd.is_default IS TRUE ELSE pd.is_default IS TRUE\n\t END\n WHERE pr.bizplace_id = $1\n\t 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,\n\t 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\n ) SELECT foo.*, \n\t CONCAT(COALESCE(ROUND(foo.uom_value:: numeric, 2), 0) * COALESCE(foo.pack_qty, 0), ' ', foo.uom) AS total_uom_value,\n CASE WHEN foo.gan_ref_no NOTNULL THEN concat('order duplicated with ', foo.gan_name)\n WHEN foo.manufacture_date > current_date THEN 'invalid manufacture date'\n WHEN foo.product_id ISNULL OR foo.product_detail_id ISNULL OR foo.sku ISNULL THEN 'product not found'\n WHEN foo.pack_qty ISNULL OR foo.pack_qty <= 0 THEN 'invalid pack qty'\n WHEN foo.batch_id ISNULL THEN 'batch no. is required'\n WHEN foo.ref_no ISNULL OR foo.ref_no = '' THEN 'ref no. is required'\n WHEN foo.eta_date ISNULL THEN 'eta date is required'\n WHEN foo.container_no NOTNULL AND foo.container_size ISNULL OR foo.container_no ISNULL AND foo.container_size NOTNULL THEN 'incomplete container information'\n WHEN foo.unit_price < 0 THEN 'invalid unit price'\n WHEN foo.pallet_qty < 0 THEN 'invalid pallet qty'\n ELSE '' END AS error_msg\n FROM foo\n ORDER BY foo.ref_no, foo.ref_no_2, foo.ref_no_3, foo.sku\n `,\n [companyBizplace.id]\n )\n\n await trxMgr.query('DROP TABLE raw_arrival_notices, temp_gan')\n\n return validatedItems.map(item => {\n return {\n refNo: item.ref_no,\n refNo2: item.ref_no_2,\n refNo3: item.ref_no_3,\n etaDate: item.eta_date,\n truckNo: item.truck_no,\n ownTransport: !!item.own_transport,\n container: item.container,\n containerNo: item.container_no,\n containerSize: item.container_size,\n importCargo: !!item.import_cargo,\n looseItem: !!item.loose_item,\n productId: item.product_id,\n productDetailId: item.product_detail_id,\n sku: item.sku,\n productInfo: item.product_info,\n batchId: item.batch_id,\n batchIdRef: item.batch_id_ref,\n packingType: item.packing_type,\n packingSize: item.packing_size,\n uom: item.uom,\n packQty: item.pack_qty,\n uomValue: item.uom_value,\n totalUomValue: item.total_uom_value,\n palletQty: item.pallet_qty,\n unitPrice: item.unit_price,\n manufactureDate: item.manufacture_date,\n errorMsg: item.error_msg\n }\n })\n}\n"]}
1
+ {"version":3,"file":"arrival-notice-query.js","sourceRoot":"","sources":["../../../server/service/arrival-notice/arrival-notice-query.ts"],"names":[],"mappings":"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","sourcesContent":["import { Arg, Args, Ctx, Directive, FieldResolver, Query, Resolver, Root } from 'type-graphql'\nimport { EntityManager, In, OrderByCondition, SelectQueryBuilder } from 'typeorm'\n\nimport { Attachment } from '@things-factory/attachment-base'\nimport { checkUserBelongsDomain, User } from '@things-factory/auth-base'\nimport { Bizplace, getCompanyBizplace, getPermittedBizplaceIds } from '@things-factory/biz-base'\nimport { ProductDetail } from '@things-factory/product-base'\nimport { buildQuery, Domain, getRepository, ListParam } from '@things-factory/shell'\n\nimport { ArrivalNoticeList, NewArrivalNotice, RawArrivalNotice } from '../'\nimport { ATTACHMENT_TYPE, ORDER_STATUS } from '../../constants'\nimport { OrderInventory, OrderProduct } from '../../service'\nimport { ArrivalNotice } from './arrival-notice'\n\n@Resolver(ArrivalNotice)\nexport class ArrivalNoticeQuery {\n @Directive('@privilege(category: \"order\", privilege: \"query\")')\n @Query(returns => ArrivalNotice)\n async arrivalNotice(\n @Ctx() context: ResolverContext,\n @Arg('name', { nullable: true }) name?: string,\n @Arg('refNo', { nullable: true }) refNo?: string\n ): Promise<ArrivalNotice> {\n const { domain, user, bizplace }: { domain: Domain; user: User; bizplace?: Bizplace } = context.state\n\n let param: any = { domain, bizplace: bizplace ? bizplace : In(await getPermittedBizplaceIds(domain, user)) }\n\n if (name) param = { ...param, name }\n else if (refNo) param = { ...param, refNo }\n else return\n\n let foundGAN: ArrivalNotice = await getRepository(ArrivalNotice).findOne({\n where: { ...param },\n relations: [\n 'domain',\n 'bizplace',\n 'bizplace.domain',\n 'releaseGood',\n 'purchaseOrder',\n 'purchaseOrder.bufferLocation',\n 'orderProducts',\n 'orderProducts.product',\n 'orderInventories',\n 'orderInventories.inventory',\n 'orderInventories.inventory.product',\n 'orderInventories.inventory.location',\n 'orderVass',\n 'orderVass.vas',\n 'orderVass.targetProduct',\n 'supplier',\n 'creator',\n 'updater'\n ]\n })\n\n if (name && !foundGAN) throw new Error(`Failed to find arrival notice with ${name}`)\n\n if (foundGAN) {\n const foundAttachments: Attachment[] = await getRepository(Attachment).find({\n where: {\n domain: { id: domain.id },\n refBy: foundGAN?.id,\n category: ATTACHMENT_TYPE.GAN\n }\n })\n\n const foundPOAttachments: Attachment[] = foundGAN?.purchaseOrder?.id\n ? await getRepository(Attachment).find({\n where: {\n domain: { id: domain.id },\n refBy: foundGAN.purchaseOrder?.id,\n category: ATTACHMENT_TYPE.PO\n }\n })\n : []\n\n // add productDetails data to orderProduct.product\n foundGAN.orderProducts = await Promise.all(\n foundGAN.orderProducts.map(async (orderProduct: OrderProduct) => {\n orderProduct.product['productDetails'] = await getRepository(ProductDetail).find({\n where: {\n product: { id: orderProduct.product.id },\n packingType: orderProduct.packingType,\n packingSize: orderProduct.packingSize\n }\n })\n return orderProduct\n })\n )\n\n // add productDetails data to orderInventory.inventory.product if orderInventory is exist\n if (foundGAN.orderInventories && foundGAN.orderInventories.length) {\n foundGAN.orderInventories = await Promise.all(\n foundGAN.orderInventories.map(async (orderInventory: OrderInventory) => {\n orderInventory.inventory.product['productDetails'] = await getRepository(ProductDetail).find({\n where: {\n product: { id: orderInventory.inventory.product.id },\n packingType: orderInventory.inventory.packingType,\n packingSize: orderInventory.inventory.packingSize\n }\n })\n return orderInventory\n })\n )\n }\n\n return {\n ...foundGAN,\n attachment: [...foundPOAttachments, ...foundAttachments]\n }\n } else {\n return\n }\n }\n\n @Directive('@privilege(category: \"order_customer\", privilege: \"query\")')\n @Query(returns => ArrivalNoticeList)\n async arrivalNotices(@Ctx() context: ResolverContext, @Args() params: ListParam): Promise<ArrivalNoticeList> {\n const { domain, user } = context.state\n\n if (await checkUserBelongsDomain(domain, user)) {\n if (!params.filters.some(e => e.name === 'status') && !params.filters.some(e => e.name === 'name')) {\n params.filters.push({\n name: 'status',\n operator: 'notin',\n value: [ORDER_STATUS.PENDING, ORDER_STATUS.EDITING],\n relation: false\n })\n }\n }\n\n if (!params.filters.find((filter: any) => filter.name === 'bizplace')) {\n params.filters.push({\n name: 'bizplaceId',\n operator: 'in',\n value: await getPermittedBizplaceIds(domain, user),\n relation: false\n })\n }\n\n const fromDateParamIdx = params.filters.findIndex(param => param.name === 'fromDate')\n if (fromDateParamIdx >= 0) {\n let fromDateVal = new Date(params.filters[fromDateParamIdx].value)\n params.filters.splice(fromDateParamIdx, 1)\n\n params.filters.push({\n name: 'createdAt',\n operator: 'gte',\n value: fromDateVal.toISOString(),\n relation: false\n })\n }\n\n const toDateParamIdx = params.filters.findIndex(param => param.name === 'toDate')\n if (toDateParamIdx >= 0) {\n let toDateVal = new Date(params.filters[toDateParamIdx].value)\n params.filters.splice(toDateParamIdx, 1)\n\n params.filters.push({\n name: 'createdAt',\n operator: 'lt',\n value: new Date(toDateVal.setDate(toDateVal.getDate() + 1)).toISOString(),\n relation: false\n })\n }\n\n const qb: SelectQueryBuilder<ArrivalNotice> = getRepository(ArrivalNotice).createQueryBuilder('an')\n buildQuery(qb, params, context)\n qb.addSelect('COALESCE(\"cc\".rank, 9999)', 'rank')\n qb.leftJoinAndSelect('an.domain', 'domain')\n qb.leftJoinAndSelect('an.bizplace', 'bizplace')\n qb.leftJoinAndSelect('an.releaseGood', 'ro')\n qb.leftJoinAndSelect('an.creator', 'creator')\n qb.leftJoinAndSelect('an.updater', 'updater')\n qb.leftJoinAndSelect('an.acceptedBy', 'accepter')\n qb.leftJoin(\n subQuery => {\n return subQuery\n .select(`ccd.rank`, 'rank')\n .addSelect(`ccd.name`, 'status')\n .from(`common_code_details`, 'ccd')\n .innerJoin(`ccd.commonCode`, 'cc')\n .where(`ccd.domain_id = :domainId`, { domainId: domain.id })\n .andWhere(`cc.name = 'ORDER_STATUS'`)\n },\n 'cc',\n 'cc.status = an.status'\n )\n\n const arrChildSortData = ['bizplace']\n const sort: OrderByCondition = (params.sortings || []).reduce(\n (acc, sort) => ({\n ...acc,\n [arrChildSortData.indexOf(sort.name) >= 0 ? sort.name + '.name' : 'an.' + sort.name]: sort.desc ? 'DESC' : 'ASC'\n }),\n !params.sortings.some(e => e.name === 'status') ? { rank: 'ASC' } : {}\n )\n\n qb.orderBy(sort)\n\n const [items, total] = await qb.getManyAndCount()\n\n return { items, total }\n }\n\n @Directive('@privilege(category: \"order_warehouse\", privilege: \"query\")')\n @Query(returns => ArrivalNoticeList)\n async arrivalNoticeRequests(@Args() params: ListParam, @Ctx() context: ResolverContext): Promise<ArrivalNoticeList> {\n try {\n const { domain, user } = context.state\n const statusFilter = params.filters.some(e => e.name === 'status')\n const bizplaceFilter = params.filters.find(param => param.name === 'bizplaceId')\n\n if (!statusFilter) {\n params.filters.push({\n name: 'status',\n operator: 'notin',\n value: [ORDER_STATUS.PENDING, ORDER_STATUS.EDITING],\n relation: false\n })\n }\n\n if (!bizplaceFilter) {\n params.filters.push({\n name: 'bizplaceId',\n operator: 'in',\n value: await getPermittedBizplaceIds(domain, user),\n relation: false\n })\n }\n\n const fromDateParamIdx = params.filters.findIndex(param => param.name === 'fromDate')\n if (fromDateParamIdx >= 0) {\n let fromDateVal = new Date(params.filters[fromDateParamIdx].value)\n params.filters.splice(fromDateParamIdx, 1)\n\n params.filters.push({\n name: 'createdAt',\n operator: 'gte',\n value: fromDateVal.toISOString(),\n relation: false\n })\n }\n\n const toDateParamIdx = params.filters.findIndex(param => param.name === 'toDate')\n if (toDateParamIdx >= 0) {\n let toDateVal = new Date(params.filters[toDateParamIdx].value)\n params.filters.splice(toDateParamIdx, 1)\n\n params.filters.push({\n name: 'createdAt',\n operator: 'lt',\n value: new Date(toDateVal.setDate(toDateVal.getDate() + 1)).toISOString(),\n relation: false\n })\n }\n\n const qb: SelectQueryBuilder<ArrivalNotice> = getRepository(ArrivalNotice).createQueryBuilder('an')\n buildQuery(qb, params, context)\n qb.addSelect('COALESCE(\"cc\".rank, 9999)', 'rank')\n qb.leftJoinAndSelect('an.domain', 'domain')\n qb.leftJoinAndSelect('an.bizplace', 'bizplace')\n qb.leftJoinAndSelect('an.releaseGood', 'ro')\n qb.leftJoinAndSelect('an.creator', 'creator')\n qb.leftJoinAndSelect('an.updater', 'updater')\n qb.leftJoinAndSelect('an.acceptedBy', 'accepter')\n qb.leftJoin(\n subQuery => {\n return subQuery\n .select(`ccd.rank`, 'rank')\n .addSelect(`ccd.name`, 'status')\n .from(`common_code_details`, 'ccd')\n .innerJoin(`ccd.commonCode`, 'cc')\n .where(`ccd.domain_id = :domainId`, { domainId: domain.id })\n .andWhere(`cc.name = 'ORDER_STATUS'`)\n },\n 'cc',\n 'cc.status = an.status'\n )\n\n const arrChildSortData = ['bizplace']\n const sort: OrderByCondition = (params.sortings || []).reduce(\n (acc, sort) => ({\n ...acc,\n [arrChildSortData.indexOf(sort.name) >= 0 ? sort.name + '.name' : 'an.' + sort.name]: sort.desc\n ? 'DESC'\n : 'ASC'\n }),\n !params.sortings.some(e => e.name === 'status') ? { rank: 'ASC' } : {}\n )\n\n qb.orderBy(sort)\n\n const [items, total] = await qb.getManyAndCount()\n\n return { items, total }\n } catch (error) {\n throw error\n }\n }\n\n @Directive('@transaction')\n @Query(returns => [RawArrivalNotice])\n async validateBulkArrivalNotices(\n @Ctx() context: ResolverContext,\n @Arg('rawArrivalNotices', type => [NewArrivalNotice], { nullable: true }) rawArrivalNotices: NewArrivalNotice[],\n @Arg('bizplaceId', type => String) bizplaceId: string\n ): Promise<RawArrivalNotice[]> {\n const tx: EntityManager = context.state.tx\n return await validateBulkArrivalNoticesFunction(rawArrivalNotices, bizplaceId, tx)\n }\n\n @FieldResolver(type => Domain)\n async domain(@Root() arrivalNotice: ArrivalNotice): Promise<Domain> {\n return await getRepository(Domain).findOneBy({ id: arrivalNotice.domainId })\n }\n\n @FieldResolver(type => User)\n async creator(@Root() arrivalNotice: ArrivalNotice): Promise<User> {\n return await getRepository(User).findOneBy({ id: arrivalNotice.creatorId })\n }\n\n @FieldResolver(type => User)\n async updater(@Root() arrivalNotice: ArrivalNotice): Promise<User> {\n return await getRepository(User).findOneBy({ id: arrivalNotice.updaterId })\n }\n}\n\nexport async function validateBulkArrivalNoticesFunction(\n rawArrivalNotices: NewArrivalNotice[],\n bizplaceId: string,\n trxMgr: EntityManager\n): Promise<RawArrivalNotice[]> {\n const companyBizplace: Bizplace = await getCompanyBizplace(null, null, bizplaceId)\n\n const json_oi = JSON.stringify(\n rawArrivalNotices.map(raw => {\n return {\n ref_no: raw.refNo || null,\n ref_no_2: raw.refNo2 || null,\n ref_no_3: raw.refNo3 || null,\n eta_date: raw.etaDate || null,\n truck_no: raw.truckNo || null,\n own_transport: !!raw.truckNo || false,\n loose_item: raw.looseItem || false,\n import_cargo: raw.importCargo || false,\n container: (!!raw.containerNo && !!raw.containerSize) || false,\n container_no: raw.containerNo || null,\n container_size: raw.containerSize || null,\n sku: raw.sku || null,\n batch_id: raw.batchId || null,\n batch_id_ref: raw.batchIdRef || null,\n packing_type: raw.packingType || null,\n packing_size: raw.packingSize || null,\n uom: raw.uom || null,\n pack_qty: raw.packQty || null,\n pallet_qty: raw.palletQty || null,\n unit_price: raw.unitPrice || null,\n manufacture_date: raw.manufactureDate || null\n }\n })\n )\n\n await trxMgr.query(\n `\n CREATE TEMP TABLE raw_arrival_notices(\n ref_no VARCHAR(150),\n ref_no_2 VARCHAR(150),\n ref_no_3 VARCHAR(150),\n eta_date VARCHAR(24),\n truck_no VARCHAR(10),\n own_transport BOOLEAN,\n container BOOLEAN,\n container_no VARCHAR(50),\n container_size VARCHAR(24),\n import_cargo BOOLEAN,\n loose_item BOOLEAN,\n sku VARCHAR(150),\n batch_id VARCHAR(100),\n batch_id_ref VARCHAR(100),\n packing_type VARCHAR(50),\n packing_size INT,\n uom VARCHAR(10),\n pack_qty INT,\n pallet_qty INT,\n unit_price FLOAT8,\n manufacture_date DATE\n );\n `\n )\n\n await trxMgr.query(\n `\n CREATE TEMP TABLE temp_gan AS (\n SELECT an.name, an.ref_no, an.ref_no_2, an.ref_no_3, an.eta_date, an.truck_no, an.own_transport, an.container, an.container_no, an.container_size, an.import_cargo, an.loose_item\n FROM arrival_notices an\n WHERE EXISTS (\n SELECT raw.* FROM\n JSON_POPULATE_RECORDSET(NULL:: arrival_notices, $1) raw\n WHERE raw.ref_no = an.ref_no \n AND raw.ref_no_2 = an.ref_no_2\n AND raw.ref_no_3 = an.ref_no_3\n AND raw.eta_date::date = an.eta_date::date\n AND raw.truck_no = an.truck_no\n AND raw.own_transport = an.own_transport\n AND raw.container = an.container\n AND raw.container_no = an.container_no\n AND raw.container_size = an.container_size\n AND raw.loose_item = an.loose_item\n AND raw.import_cargo = an.import_cargo\t\t\t\n )\n )\n `,\n [json_oi]\n )\n\n await trxMgr.query(\n `\n INSERT INTO raw_arrival_notices \n SELECT \n js.ref_no, js.ref_no_2, js.ref_no_3, js.eta_date, js.truck_no, js.own_transport, js.container,\n js.container_no, js.container_size, js.import_cargo, js.loose_item, js.sku, js.batch_id,\n js.batch_id_ref, js.packing_type, js.packing_size, js.uom, js.pack_qty, js.pallet_qty,\n js.unit_price, js.manufacture_date\n FROM \n JSON_POPULATE_RECORDSET(NULL:: raw_arrival_notices, $1) js;\n `,\n [json_oi]\n )\n\n const insertResult: any[] = await trxMgr.query(`\n SELECT * from raw_arrival_notices\n `)\n\n let validatedItems = await trxMgr.query(\n `\n WITH foo AS (\n\t SELECT \n\t \tan.name AS gan_name,\n\t \tan.ref_no AS gan_ref_no,\n\t raw.ref_no, \n\t raw.ref_no_2, \n\t raw.ref_no_3, \n\t raw.eta_date, \n\t raw.truck_no, \n\t raw.own_transport, \n\t raw.container, \n\t raw.container_no, \n\t raw.container_size, \n\t raw.import_cargo, \n\t raw.loose_item, \n\t pr.id AS product_id, \n\t pd.id AS product_detail_id, \n\t raw.sku AS sku, \n\t CASE WHEN pr.description NOT IN (NULL, '', '-') THEN CONCAT(pr.name, '(', pr.description, ')') ELSE pr.name END AS product_info, \n\t raw.batch_id,\n\t raw.batch_id_ref,\n\t pd.packing_type, \n\t pd.packing_size, \n\t sum(raw.pack_qty) AS pack_qty, \n\t sum(pd.uom_value) AS uom_value,\n\t pd.uom, \n\t sum(raw.pallet_qty) AS pallet_qty, \n\t raw.unit_price, \n\t raw.manufacture_date\n\t FROM \n\t raw_arrival_notices raw \n\t LEFT JOIN temp_gan an ON raw.ref_no = an.ref_no \n\t AND raw.ref_no_2 = an.ref_no_2\n\t AND raw.ref_no_3 = an.ref_no_3\n\t AND raw.eta_date::date = an.eta_date::date\n\t AND raw.truck_no = an.truck_no\n\t AND raw.own_transport = an.own_transport\n\t AND raw.container = an.container\n\t AND raw.container_no = an.container_no\n\t AND raw.container_size = an.container_size\n\t AND raw.loose_item = an.loose_item\n\t AND raw.import_cargo = an.import_cargo \n\t LEFT JOIN products pr ON LOWER(pr.sku) = LOWER(raw.sku)\n\t LEFT JOIN product_details pd ON pr.id = pd.product_id\n\t AND CASE WHEN raw.packing_type NOTNULL AND raw.packing_size NOTNULL AND raw.uom NOTNULL\n\t THEN pd.packing_type = raw.packing_type AND pd.packing_size = raw.packing_size AND pd.uom = raw.uom \n\t WHEN raw.packing_type NOTNULL AND raw.packing_size NOTNULL AND raw.uom ISNULL\n\t THEN pd.packing_type = raw.packing_type AND pd.packing_size = raw.packing_size AND pd.is_default IS TRUE\n\t WHEN raw.packing_type ISNULL AND raw.packing_size ISNULL AND raw.uom NOTNULL\n\t THEN pd.uom = raw.uom AND pd.is_default IS TRUE ELSE pd.is_default IS TRUE\n\t END\n WHERE pr.bizplace_id = $1\n\t 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,\n\t 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\n ) SELECT foo.*, \n\t CONCAT(COALESCE(ROUND(foo.uom_value:: numeric, 2), 0) * COALESCE(foo.pack_qty, 0), ' ', foo.uom) AS total_uom_value,\n CASE WHEN foo.gan_ref_no NOTNULL THEN concat('order duplicated with ', foo.gan_name)\n WHEN foo.manufacture_date > current_date THEN 'invalid manufacture date'\n WHEN foo.product_id ISNULL OR foo.product_detail_id ISNULL OR foo.sku ISNULL THEN 'product not found'\n WHEN foo.pack_qty ISNULL OR foo.pack_qty <= 0 THEN 'invalid pack qty'\n WHEN foo.batch_id ISNULL THEN 'batch no. is required'\n WHEN foo.ref_no ISNULL OR foo.ref_no = '' THEN 'ref no. is required'\n WHEN foo.eta_date ISNULL THEN 'eta date is required'\n WHEN foo.container_no NOTNULL AND foo.container_size ISNULL OR foo.container_no ISNULL AND foo.container_size NOTNULL THEN 'incomplete container information'\n WHEN foo.unit_price < 0 THEN 'invalid unit price'\n WHEN foo.pallet_qty < 0 THEN 'invalid pallet qty'\n ELSE '' END AS error_msg\n FROM foo\n ORDER BY foo.ref_no, foo.ref_no_2, foo.ref_no_3, foo.sku\n `,\n [companyBizplace.id]\n )\n\n await trxMgr.query('DROP TABLE raw_arrival_notices, temp_gan')\n\n return validatedItems.map(item => {\n return {\n refNo: item.ref_no,\n refNo2: item.ref_no_2,\n refNo3: item.ref_no_3,\n etaDate: item.eta_date,\n truckNo: item.truck_no,\n ownTransport: !!item.own_transport,\n container: item.container,\n containerNo: item.container_no,\n containerSize: item.container_size,\n importCargo: !!item.import_cargo,\n looseItem: !!item.loose_item,\n productId: item.product_id,\n productDetailId: item.product_detail_id,\n sku: item.sku,\n productInfo: item.product_info,\n batchId: item.batch_id,\n batchIdRef: item.batch_id_ref,\n packingType: item.packing_type,\n packingSize: item.packing_size,\n uom: item.uom,\n packQty: item.pack_qty,\n uomValue: item.uom_value,\n totalUomValue: item.total_uom_value,\n palletQty: item.pallet_qty,\n unitPrice: item.unit_price,\n manufactureDate: item.manufacture_date,\n errorMsg: item.error_msg\n }\n })\n}\n"]}
@@ -167,6 +167,10 @@ tslib_1.__decorate([
167
167
  (0, type_graphql_1.Field)({ nullable: true }),
168
168
  tslib_1.__metadata("design:type", String)
169
169
  ], NewArrivalNotice.prototype, "manufactureDate", void 0);
170
+ tslib_1.__decorate([
171
+ (0, type_graphql_1.Field)({ nullable: true }),
172
+ tslib_1.__metadata("design:type", String)
173
+ ], NewArrivalNotice.prototype, "source", void 0);
170
174
  tslib_1.__decorate([
171
175
  (0, type_graphql_1.Field)({ nullable: true }),
172
176
  tslib_1.__metadata("design:type", String)