@things-factory/sales-base 6.0.68 → 6.0.70

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.
@@ -1 +1 @@
1
- {"version":3,"file":"release-good-query.js","sourceRoot":"","sources":["../../../server/service/release-good/release-good-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, Repository, SelectQueryBuilder } from 'typeorm'\n\nimport { Attachment } from '@things-factory/attachment-base'\nimport { checkUserBelongsDomain, User } from '@things-factory/auth-base'\nimport { Bizplace, getCompanyBizplace, getMyBizplace, getPermittedBizplaceIds } from '@things-factory/biz-base'\nimport { logger } from '@things-factory/env'\nimport { buildQuery, Domain, Filter, getRepository, ListParam, Pagination, Sorting } from '@things-factory/shell'\nimport { Inventory, LOCATION_TYPE } from '@things-factory/warehouse-base'\n\nimport { ATTACHMENT_TYPE, ORDER_INVENTORY_STATUS, ORDER_STATUS } from '../../constants'\nimport { OrderInventory } from '../order-inventory/order-inventory'\nimport { ShippingOrder } from '../shipping-order/shipping-order'\nimport { ReleaseGood } from './release-good'\nimport { NewReleaseGood, ReleasableInventoryList, ReleaseGoodList } from './release-good-types'\n\n@Resolver(ReleaseGood)\nexport class ReleaseGoodQuery {\n @Directive('@privilege(category: \"order_customer\", privilege: \"query\")')\n @Query(returns => ReleaseGoodList)\n async releaseGoods(@Ctx() context: ResolverContext, @Args() params: ListParam): Promise<ReleaseGoodList> {\n try {\n const { domain, user } = context.state\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<ReleaseGood> = getRepository(ReleaseGood).createQueryBuilder('rg')\n buildQuery(qb, params, context)\n let items: any\n let total: number\n qb.addSelect('COALESCE(\"cc\".rank, 99999)', 'rank')\n qb.leftJoinAndSelect('rg.domain', 'domain')\n qb.leftJoinAndSelect('rg.bizplace', 'bizplace')\n qb.leftJoinAndSelect('rg.orderInventories', 'oi')\n qb.leftJoinAndSelect('rg.orderProducts', 'op')\n qb.leftJoinAndSelect('oi.inventory', 'inv')\n qb.leftJoinAndSelect('oi.product', 'prod')\n qb.leftJoinAndSelect('rg.arrivalNotice', 'an')\n qb.leftJoinAndSelect('rg.creator', 'creator')\n qb.leftJoinAndSelect('rg.updater', 'updater')\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 = 'RO_LIST_STATUS'`)\n },\n 'cc',\n 'cc.status = rg.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' : 'rg.' + 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 let [itemsRes, totalRes] = await qb.getManyAndCount()\n items = itemsRes\n total = totalRes\n\n return { items, total }\n } catch (error) {\n throw error\n }\n }\n\n @Directive('@privilege(category: \"order\", privilege: \"query\")')\n @Query(returns => ReleaseGood)\n async releaseGood(\n @Ctx() context: ResolverContext,\n @Arg('name', { nullable: true }) name: string,\n @Arg('trackingNo', { nullable: true }) trackingNo: string\n ): Promise<ReleaseGood> {\n const { domain, user } = context.state\n\n if (name) {\n return await getRepository(ReleaseGood).findOne({\n where: {\n domain: { id: domain.id },\n name,\n bizplace: { id: In(await getPermittedBizplaceIds(domain, user)) }\n },\n relations: [\n 'domain',\n 'bizplace',\n 'shippingOrder',\n 'arrivalNotice',\n 'orderInventories',\n 'orderInventories.product',\n 'orderInventories.inventory',\n 'orderInventories.inventory.product',\n 'orderVass',\n 'orderVass.vas',\n 'creator',\n 'updater'\n ]\n })\n } else if (trackingNo) {\n let releaseGood = await getRepository(ReleaseGood).findOne({\n where: {\n domain: { id: domain.id },\n trackingNo,\n bizplace: { id: In(await getPermittedBizplaceIds(domain, user)) }\n },\n relations: ['bizplace']\n })\n\n if (!releaseGood) {\n throw new Error('Tracking No not found in any orders')\n } else {\n return releaseGood\n }\n }\n }\n\n @Directive('@privilege(category: \"order\", privilege: \"query\")')\n @Directive('@transaction')\n @Query(returns => ReleaseGood)\n async releaseGoodDetail(\n @Ctx() context: ResolverContext,\n @Arg('refNo', { nullable: true }) refNo?: string,\n @Arg('name', { nullable: true }) name?: string\n ): Promise<ReleaseGood> {\n try {\n const { domain, tx } = context.state\n let param: any\n\n if (name) param = { domain, name }\n else param = { domain, refNo }\n\n const releaseGood: ReleaseGood = await tx.getRepository(ReleaseGood).findOne({\n where: { ...param },\n relations: [\n 'domain',\n 'bizplace',\n 'shippingOrder',\n 'arrivalNotice',\n 'orderProducts',\n 'orderProducts.product',\n 'orderVass',\n 'orderVass.vas',\n 'orderVass.targetProduct',\n 'orderVass.inventory',\n 'creator',\n 'updater'\n ]\n })\n\n if (releaseGood) {\n let oiQb: SelectQueryBuilder<OrderInventory> = tx\n .getRepository(OrderInventory)\n .createQueryBuilder('oi')\n .leftJoinAndSelect('oi.inventory', 'inventory')\n .leftJoinAndSelect('oi.product', 'product')\n .leftJoinAndSelect('inventory.location', 'location')\n .where('oi.domain_id = :domainId', { domainId: domain.id })\n .andWhere('oi.release_good_id = :releaseGoodId', { releaseGoodId: releaseGood.id })\n .andWhere('oi.status NOT IN (:...orderInventoryStatus)', {\n orderInventoryStatus: [ORDER_INVENTORY_STATUS.COMPLETE_SPLIT, ORDER_INVENTORY_STATUS.REPLACED]\n })\n .orderBy('product.sku', 'ASC')\n\n let orderInventories: OrderInventory[] = await oiQb.getMany()\n\n const shippingOrder: ShippingOrder = releaseGood.shippingOrder\n const foundAttachments: Attachment[] = await tx.getRepository(Attachment).find({\n where: {\n domain: { id: domain.id },\n refBy: releaseGood.id,\n category: ATTACHMENT_TYPE.DELIVERY_ORDER\n }\n })\n\n let invInfos = await Promise.all(\n orderInventories.map(async (orderInv: OrderInventory) => {\n if (orderInv?.inventory?.id) {\n const inventory: Inventory = orderInv.inventory\n return {\n id: inventory.id,\n name: inventory.name,\n batchId: inventory.batchId,\n batchIdRef: inventory.batchIdRef,\n palletId: inventory.palletId,\n product: orderInv.product,\n productIdRef: orderInv.product.id,\n productName: `${orderInv.product.name} (${orderInv.product.description})`,\n packingType: orderInv.packingType,\n packingSize: orderInv.packingSize,\n location: inventory.location,\n qty: inventory.qty,\n lockedQty: inventory.lockedQty,\n lockedUomValue: inventory.lockedUomValue,\n uom: inventory.uom,\n uomValue: inventory.uomValue,\n invStatus: inventory.status,\n releaseQty: orderInv.releaseQty,\n releaseUomValue: orderInv.releaseUomValue,\n status: orderInv.status,\n refWorksheetId: orderInv.refWorksheetId\n }\n }\n })\n )\n\n const result = {\n ...releaseGood,\n attachment: foundAttachments,\n shippingOrderInfo: {\n containerNo: shippingOrder?.containerNo || '',\n containerSize: shippingOrder?.containerSize || '',\n containerLeavingDate: shippingOrder?.containerLeavingDate || '',\n containerArrivalDate: shippingOrder?.containerArrivalDate || '',\n containerClosureDate: shippingOrder?.containerClosureDate || '',\n shipName: shippingOrder?.shipName || '',\n remark: shippingOrder?.remark || '',\n remindContainerDeparture: shippingOrder?.remindContainerDeparture || null\n },\n inventoryInfos: invInfos\n }\n\n return result\n }\n } catch (error) {\n logger.error(`release-good-query[releaseGoodDetail]: ${error}`)\n throw new Error(error)\n }\n }\n\n @Directive('@privilege(category: \"order_warehouse\", privilege: \"query\")')\n @Query(returns => ReleaseGoodList)\n async releaseGoodRequests(@Ctx() context: ResolverContext, @Args() params: ListParam): Promise<ReleaseGoodList> {\n try {\n console.time('t1')\n const { domain, user } = context.state\n\n const statusFilter = params.filters.some(e => e.name === 'status')\n const bizplaceFilter = params.filters.find(param => param.name === 'bizplaceId')\n const noOfItemsFilter = params.filters.find(param => param.name === 'noOfItems')\n const skuFilter = params.filters.find(param => param.name === 'sku')\n const routeId = params.filters.find(param => param.name === 'routeId')\n const orderRemarkFilter = params.filters.find(param => param.name === 'orderRemark')\n const manifestedFilter = params.filters.find(param => param.name === 'manifested')\n const orderInfoFilter = params.filters.find(param => param.name === 'name')\n const typeFilter = params.filters.find(param => param.name === 'type')?.value\n\n if (await checkUserBelongsDomain(domain, user)) {\n if (!statusFilter && !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 (!bizplaceFilter) {\n params.filters.push({\n name: 'bizplaceId',\n operator: 'in',\n value: await getPermittedBizplaceIds(domain, user),\n relation: false\n })\n }\n\n if (skuFilter) {\n params.filters = params.filters.filter(param => param.name !== 'sku')\n }\n\n if (orderInfoFilter) {\n params.filters = params.filters.filter(param => param.name !== 'name')\n }\n\n if (routeId) {\n if (routeId.value == true) {\n params.filters.find(param => param.name === 'routeId').value = 'null'\n } else {\n params.filters.find(param => param.name === 'routeId').operator = 'is_null'\n params.filters.find(param => param.name === 'routeId').value = null\n }\n }\n\n if (orderRemarkFilter) {\n const orderRemarkIdx = params.filters.findIndex(param => param.name === 'orderRemark')\n if (orderRemarkFilter.value == true) {\n params.filters.splice(orderRemarkIdx, 1)\n params.filters.push({\n name: 'remark',\n operator: 'is_not_null',\n value: null,\n relation: false\n })\n } else {\n params.filters.splice(orderRemarkIdx, 1)\n params.filters.push({\n name: 'remark',\n operator: 'is_null',\n value: null,\n relation: false\n })\n }\n }\n\n if (manifestedFilter) {\n const manifestedIdx = params.filters.findIndex(param => param.name === 'manifested')\n if (manifestedFilter.value == true) {\n params.filters.splice(manifestedIdx, 1)\n params.filters.push({\n name: 'manifestId',\n operator: 'is_not_null',\n value: null,\n relation: false\n })\n } else {\n params.filters.splice(manifestedIdx, 1)\n params.filters.push({\n name: 'manifestId',\n operator: 'is_null',\n value: null,\n relation: false\n })\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 let releaseDateFrom = params.filters.find(param => param.name === 'fromDate')?.value\n params.filters.splice(fromDateParamIdx, 1)\n\n params.filters.push({\n name: typeFilter == 'b2c' ? 'releaseDate' : 'createdAt',\n operator: 'gte',\n value: typeFilter == 'b2c' ? releaseDateFrom : 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 let releaseDateTo = params.filters.find(param => param.name === 'toDate')?.value\n params.filters.splice(toDateParamIdx, 1)\n\n params.filters.push({\n name: typeFilter == 'b2c' ? 'releaseDate' : 'createdAt',\n operator: typeFilter == 'b2c' ? 'lte' : 'lt',\n value:\n typeFilter == 'b2c' ? releaseDateTo : new Date(toDateVal.setDate(toDateVal.getDate() + 1)).toISOString(),\n relation: false\n })\n }\n\n if (noOfItemsFilter && noOfItemsFilter.value == 1) {\n params.filters.find(param => param.name === 'noOfItems').operator = 'eq'\n }\n\n const qb: SelectQueryBuilder<ReleaseGood> = getRepository(ReleaseGood).createQueryBuilder('rg')\n buildQuery(qb, params, context)\n qb.addSelect('COALESCE(\"cc\".rank, 99999)', 'rank')\n qb.leftJoinAndSelect('rg.domain', 'domain')\n qb.leftJoinAndSelect('rg.bizplace', 'bizplace')\n qb.leftJoinAndSelect('rg.arrivalNotice', 'an')\n qb.leftJoinAndSelect('rg.creator', 'creator')\n qb.leftJoinAndSelect('rg.updater', 'updater')\n qb.leftJoinAndSelect('rg.acceptedBy', 'acceptedBy')\n qb.leftJoinAndSelect('rg.deliverTo', 'deliverTo')\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 = 'RO_REQUESTS_STATUS'`)\n },\n 'cc',\n 'cc.status = rg.status'\n )\n\n if (skuFilter) {\n let removeSymbol = skuFilter.value\n .split('')\n .filter(res => res !== '%')\n .join('')\n\n let products = removeSymbol\n .toLowerCase()\n .split(',')\n .map(prod => {\n return \"'%\" + prod.trim().replace(/'/g, \"''\") + \"%'\"\n })\n .join(',')\n\n qb.andWhere(\n `\n exists (select * from order_inventories oi \n inner join products p on oi.product_id = p.id\n inner join inventories i on i.product_id = p.id\n where oi.release_good_id = rg.id\n and (lower(p.sku) like any(array[${products}])\n or lower(p.brand_sku) like any(array[${products}])\n or lower(p.name) like any(array[${products}])\n or lower(p.description) like any(array[${products}]))\n )\n `\n )\n }\n\n if (orderInfoFilter) {\n let removeSymbol = orderInfoFilter.value\n .split('')\n .filter(res => res !== '%')\n .join('')\n\n let orderInfos = removeSymbol\n .toLowerCase()\n .split(',')\n .map(prod => {\n return \"'%\" + prod.trim().replace(/'/g, \"''\") + \"%'\"\n })\n .join(',')\n\n qb.andWhere(`(\n lower(rg.name) like any(array[${orderInfos}])\n or lower(rg.ref_no) like any(array[${orderInfos}])\n or lower(rg.ref_no_2) like any(array[${orderInfos}])\n or lower(rg.ref_no_3) like any(array[${orderInfos}])\n )`)\n }\n\n const arrChildSortData = ['bizplace', 'creator']\n const sort: OrderByCondition = (params.sortings || []).reduce(\n (acc, sort) => ({\n ...acc,\n [arrChildSortData.indexOf(sort.name) >= 0 ? sort.name + '.name' : 'rg.' + sort.name]: sort.desc\n ? 'DESC'\n : 'ASC'\n }),\n params.sortings.length < 1 ? { rank: 'ASC', 'rg.createdAt': 'DESC' } : {}\n )\n\n qb.orderBy(sort)\n\n let [items, total] = await qb.getManyAndCount()\n\n items = items\n .filter(item => {\n return item.domainId === domain.id\n })\n .map(item => {\n return {\n ...item,\n orderRemark: item?.remark ? true : false\n }\n })\n console.timeEnd('t1')\n return { items, total }\n } catch (error) {\n logger.error(`release-good-query[releaseGoodRequests]: ${error}`)\n throw error\n }\n }\n\n @Directive('@privilege(category: \"order\", privilege: \"query\")')\n @Query(returns => ReleasableInventoryList)\n async releasableInventories(\n @Ctx() context: ResolverContext,\n @Arg('filters', type => [Filter], { nullable: true }) filters?: Filter[],\n @Arg('pagination', type => Pagination, { nullable: true }) pagination?: Pagination,\n @Arg('sortings', type => [Sorting], { nullable: true }) sortings?: Sorting[]\n ): Promise<ReleasableInventoryList> {\n const myBizplace: Bizplace = await getMyBizplace(context.state.domain, context.state.user)\n const INV_ALIAS = 'INV'\n const PROD_ALIAS = 'PROD'\n const GAN_ALIAS = 'GAN'\n const conditions = filters\n let {\n batchId = null,\n containerNo = null,\n product = [],\n packingType = null,\n inventory = []\n } = getConditionValues(conditions)\n\n const SELECT: string = `\n SELECT\n ${INV_ALIAS}.batch_id,\n ${INV_ALIAS}.packing_type,\n (SUM(COALESCE(${INV_ALIAS}.qty, 0)) - SUM(COALESCE(${INV_ALIAS}.locked_qty, 0))) as remain_qty,\n (SUM(COALESCE(${INV_ALIAS}.uomValue, 0)) - SUM(COALESCE(${INV_ALIAS}.locked_uom_value, 0))) as remain_uom_value,\n ${PROD_ALIAS}.id as product_id,\n ${PROD_ALIAS}.name as product_name,\n ${GAN_ALIAS}.container_no\n `\n const FROM: string = `\n FROM\n inventories ${INV_ALIAS}\n LEFT JOIN\n products ${PROD_ALIAS}\n ON\n ${PROD_ALIAS}.id = ${INV_ALIAS}.product_id\n LEFT JOIN\n arrival_notices ${GAN_ALIAS}\n ON\n ${GAN_ALIAS}.id = CAST(${INV_ALIAS}.ref_order_id as uuid)\n `\n\n const WHERE: string = `\n WHERE\n ${INV_ALIAS}.status = 'STORED'\n AND ${INV_ALIAS}.qty > 0\n AND ${INV_ALIAS}.bizplace_id = '${myBizplace.id}'\n ${batchId ? `AND LOWER(${INV_ALIAS}.batch_id) LIKE '%${batchId.toLowerCase()}%'` : ''}\n ${packingType ? `AND LOWER(${INV_ALIAS}.packing_type) LIKE '%${packingType.toLowerCase()}%'` : ''}\n ${containerNo ? `AND LOWER(${GAN_ALIAS}.container_no) LIKE '%${containerNo.toLowerCase()}%'` : ''}\n ${\n product?.length > 0 && product[0]\n ? `AND ${PROD_ALIAS}.id IN (${product.map((id: string) => `'${id}'`).join(', ')})`\n : product[0] === null\n ? `AND ${PROD_ALIAS}.id isnull`\n : ''\n }\n ${\n inventory?.length > 0\n ? `\n AND (${INV_ALIAS}.batch_id, ${PROD_ALIAS}.id) ${\n filters.find((filter: { name: string; operator: string; value: any }) => filter.name === 'inventory')\n .operator\n } (\n ${inventory\n .map((inv: { batchId: string; productId: string }) => `('${inv.batchId}', '${inv.productId}')`)\n .join(', ')}\n )\n `\n : ''\n }\n `\n\n // ${product?.length > 0 ? `AND ${PROD_ALIAS}.id IN (${product.map((id: string) => id ? `'${id}'` : null).join(', ')})` : ''}\n const GROUP_BY: string = `\n GROUP BY\n ${INV_ALIAS}.batch_id,\n ${INV_ALIAS}.packing_type,\n ${GAN_ALIAS}.container_no,\n ${PROD_ALIAS}.id\n `\n\n const OFFSET_LIMIT: string = `\n OFFSET ${pagination.limit * (pagination.page - 1)}\n LIMIT ${pagination.limit}\n `\n\n const invRepo: Repository<Inventory> = getRepository(Inventory)\n let items: Inventory[] = await invRepo.query(`\n ${SELECT} ${FROM} ${WHERE} ${GROUP_BY} ${OFFSET_LIMIT}\n `)\n items = items.map((item: Inventory) => {\n return {\n batchId: item.batch_id,\n packingType: item.packing_type,\n remainQty: item.remain_qty,\n remainUomValue: item.remain_uom_value,\n productName: item.product_name,\n product: {\n id: item.product_id,\n name: item.product_name\n },\n containerNo: item.container_no\n }\n })\n\n const results: [{ total: number }] = await invRepo.query(`\n SELECT max(cnt.cnt) as total FROM (\n SELECT (ROW_NUMBER() OVER()) as cnt ${FROM} ${WHERE} ${GROUP_BY}\n ) as cnt\n `)\n\n return {\n items,\n total: Number(results[0].total)\n }\n }\n\n @Directive('@transaction')\n @Query(returns => [ReleaseGood])\n async bulkReleaseGoodsAvailableItems(\n @Ctx() context: ResolverContext,\n @Arg('rawReleaseGoods', type => [NewReleaseGood], { nullable: true }) rawReleaseGoods: NewReleaseGood[],\n @Arg('bizplaceId', type => String) bizplaceId: string\n ): Promise<ReleaseGood[]> {\n const { tx } = context.state\n const availableItems: any[] = await bulkReleaseGoodsAvailableItemsFunction(rawReleaseGoods, bizplaceId, context, tx)\n\n return availableItems\n }\n\n @FieldResolver(type => Domain)\n async domain(@Root() releaseGood: ReleaseGood): Promise<Domain> {\n return await getRepository(Domain).findOneBy({ id: releaseGood.domainId })\n }\n\n @FieldResolver(type => User)\n async creator(@Root() releaseGood: ReleaseGood): Promise<User> {\n return await getRepository(User).findOneBy({ id: releaseGood.creatorId })\n }\n\n @FieldResolver(type => User)\n async updater(@Root() releaseGood: ReleaseGood): Promise<User> {\n return await getRepository(User).findOneBy({ id: releaseGood.updaterId })\n }\n}\n\nasync function prepOITempTable(domain: Domain, tx: EntityManager) {\n await tx.query(\n `\n CREATE TEMP TABLE oi ON COMMIT DROP AS (\n SELECT\n SUM(oi.release_qty) as release_qty,\n SUM(oi.release_uom_value) as release_uom_value,\n oi.batch_id,\n p.id as product_id,\n oi.packing_type\n FROM\n order_inventories oi\n LEFT JOIN\n products p\n ON\n oi.product_id = p.id\n WHERE\n oi.status IN ('PENDING', 'PENDING_RECEIVE', 'PENDING_WORKSHEET', 'PENDING_SPLIT') \n AND oi.batch_id NOTNULL\n AND oi.product_id NOTNULL\n AND oi.packing_type NOTNULL\n AND oi.inventory_id IS NULL\n AND oi.domain_id = $1\n GROUP BY\n oi.product_id,\n oi.batch_id,\n oi.packing_type,\n p.id\n )`,\n [domain.id]\n )\n}\n\nasync function getAvailableAmount(\n roBizId: string,\n productIdRef: string,\n batchId: string,\n packingType: string,\n tx: EntityManager\n): Promise<{ qty: number; uomValue: number; uom: string }> {\n const result: any[] = await tx.getRepository(Inventory).query(`\n SELECT\n SUM(COALESCE(i.qty, 0)) - SUM(COALESCE(i.locked_qty, 0)) - MAX(COALESCE(oi.release_qty, 0)) as \"qty\",\n SUM(COALESCE(i.uom_value, 0)) - SUM(COALESCE(i.locked_uom_value, 0)) - MAX(COALESCE(oi.release_uom_value, 0)) as \"uom_value\",\n uom\n FROM\n inventories i\n LEFT JOIN products p on i.product_id = p.id\n LEFT JOIN oi on i.batch_id = oi.batch_id\n AND p.id = oi.product_id\n AND i.packing_type = oi.packing_type\n WHERE\n i.bizplace_id = '${roBizId}'\n AND i.status = 'STORED'\n AND i.batch_id = '${batchId}'\n AND p.id = '${productIdRef}'\n AND i.packing_type = '${packingType}'\n GROUP BY\n i.batch_id,\n p.id,\n i.packing_type,\n i.uom\n `)\n\n let qty: number = 0\n let uomValue: number = 0\n let uom: string = ''\n if (result?.length) {\n qty = result[0].qty\n uomValue = result[0].uom_value\n uom = result[0].uom\n }\n\n return { qty, uomValue, uom }\n}\n\nasync function dropOITempTable(domain: Domain, tx: EntityManager) {\n await tx.query(`DROP TABLE oi`)\n}\n\nexport async function bulkReleaseGoodsAvailableItemsFunction(\n rawReleaseGoods: any[],\n bizplaceId: string,\n context: any,\n tx?: EntityManager\n): Promise<any[]> {\n const { domain } = context.state\n const companyBizplaceId: Bizplace = await getCompanyBizplace(null, null, bizplaceId)\n\n if (!rawReleaseGoods) return\n const json_oi = JSON.stringify(\n rawReleaseGoods.map(raw => {\n return {\n sku: raw.sku,\n packing_type: raw.packingType,\n packing_size: raw.packingSize,\n uom: raw.uom,\n releaseQty: raw.releaseQty,\n release_qty: raw.releaseQty\n }\n })\n )\n\n await tx.query(\n `\n CREATE TEMP TABLE raw_release_goods(\n product_id VARCHAR(50),\n product_detail_id VARCHAR(50),\n sku VARCHAR(150),\n product_info VARCHAR(250),\n packing_type VARCHAR(50),\n packing_size INT,\n uom VARCHAR(10),\n release_qty INT\n );\n `\n )\n\n await tx.query(\n `\n INSERT INTO raw_release_goods\n SELECT p.id AS product_id,\n pd.id AS product_detail_id,\n js.sku,\n CASE WHEN p.description NOT IN (NULL, '', '-') THEN CONCAT(p.name, '(', p.description, ')')\n ELSE p.name END AS product_info,\n CASE WHEN js.packing_type NOTNULL AND js.packing_size NOTNULL THEN js.packing_type ELSE pd.packing_type END,\n CASE WHEN js.packing_type NOTNULL AND js.packing_size NOTNULL THEN js.packing_size ELSE pd.packing_size END,\n CASE WHEN js.uom NOTNULL THEN js.uom ELSE pd.uom END\n FROM JSON_POPULATE_RECORDSET(NULL::raw_release_goods, $1) js\n LEFT JOIN products p ON LOWER(js.sku) = LOWER(p.sku) AND p.bizplace_id = $2\n LEFT JOIN product_details pd ON p.id = pd.product_id\n AND CASE WHEN js.packing_type NOTNULL AND js.packing_size NOTNULL AND js.uom NOTNULL\n THEN pd.packing_type = js.packing_type AND pd.packing_size = js.packing_size AND pd.uom = js.uom \n WHEN js.packing_type NOTNULL AND js.packing_size NOTNULL AND js.uom ISNULL \t\n THEN pd.packing_type = js.packing_type AND pd.packing_size = js.packing_size AND pd.is_default IS TRUE\n WHEN js.packing_type ISNULL AND js.packing_size ISNULL AND js.uom NOTNULL\n THEN pd.uom = js.uom AND pd.is_default IS TRUE ELSE pd.is_default IS TRUE \n END;\n `,\n [json_oi, companyBizplaceId.id]\n )\n\n let availableItems = await tx.query(\n `\n WITH inv AS (\n SELECT i.product_id, foo.product_detail_id, foo.sku, foo.product_info, i.packing_type, i.packing_size, i.uom,\n SUM(i.qty - COALESCE(i.locked_qty, 0)) - COALESCE(\n (\n SELECT SUM(oi.release_qty) FROM order_inventories oi \n WHERE oi.status IN ('PENDING', 'PENDING_RECEIVE', 'PENDING_WORKSHEET', 'PENDING_SPLIT')\n AND oi.inventory_id IS null\n AND oi.product_id = i.product_id::uuid\n AND oi.packing_type = i.packing_type\n AND oi.uom = i.uom\n AND oi.domain_id = $1\n AND oi.bizplace_id = $2\n ), 0) as \"remain_qty\",\n SUM(i.uom_value - COALESCE(i.locked_uom_value, 0)) - COALESCE(\n (\n SELECT SUM(oi.release_uom_value) FROM order_inventories oi \n WHERE oi.status IN ('PENDING', 'PENDING_RECEIVE', 'PENDING_WORKSHEET', 'PENDING_SPLIT')\n AND oi.inventory_id IS null\n AND oi.product_id = i.product_id::uuid\n AND oi.packing_type = i.packing_type\n AND oi.uom = i.uom\n AND oi.domain_id = $1\n AND oi.bizplace_id = $2\n ), 0) as \"remain_uom_value\"\n FROM inventories i\n LEFT JOIN locations l\n ON i.location_id = l.id\n INNER JOIN (\n SELECT rrg.product_id, rrg.product_detail_id, rrg.sku, rrg.product_info, rrg.packing_type, rrg.packing_size, rrg.uom \n FROM raw_release_goods rrg\n GROUP BY rrg.product_id, rrg.product_detail_id, rrg.sku, rrg.product_info, rrg.packing_type, rrg.packing_size, rrg.uom\n ) AS foo\n ON i.product_id = foo.product_id::uuid\n AND i.packing_type = foo.packing_type\n AND i.packing_size = foo.packing_size\n AND i.uom = foo.uom\n AND i.domain_id = $1\n AND i.bizplace_id = $2\n WHERE l.type NOT IN ($3, $4)\n GROUP BY i.product_id, foo.product_detail_id, foo.sku,foo.product_info, i.packing_type, i.packing_size, i.uom\n ORDER BY foo.sku, remain_qty\n ) SELECT * FROM inv WHERE remain_qty > 0\n `,\n [domain.id, bizplaceId, LOCATION_TYPE.QUARANTINE, LOCATION_TYPE.RESERVE]\n )\n\n await tx.query(`DROP TABLE raw_release_goods`)\n\n availableItems = availableItems.map(item => {\n return {\n productId: item.product_id,\n productDetailId: item.product_detail_id,\n productInfo: item.product_info,\n sku: item.sku,\n packingType: item.packing_type,\n packingSize: Number(item.packing_size || 0),\n uom: item.uom,\n remainQty: item.remain_qty,\n remainUomValue: item.remain_uom_value\n }\n })\n\n return _extractData(rawReleaseGoods, availableItems)\n}\n\nfunction _extractData(rawData, validatedData) {\n return rawData.map(raw => {\n const idx = validatedData.findIndex(val => {\n const comparison = ['packingType', 'packingSize', 'uom']\n\n let a: any = {},\n b: any = {}\n\n comparison.forEach(cc => {\n if (raw[cc]) {\n a[cc] = raw[cc]\n b[cc] = val[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 val.sku.toLowerCase() == raw.sku.toLowerCase() && a === b\n })\n\n let releaseUomValue = 0\n\n // if sku is matched, assign qty and product id\n if (idx >= 0) {\n // assign qty to rawData as much as possible\n releaseUomValue =\n (Math.round((validatedData[idx]?.remainUomValue / validatedData[idx]?.remainQty) * 100) / 100) * raw.releaseQty\n\n raw.assignedQty =\n validatedData[idx].remainQty >= raw.releaseQty\n ? raw.releaseQty > 0\n ? raw.releaseQty\n : 0\n : validatedData[idx].remainQty\n\n raw.assignedUomValue =\n validatedData[idx].remainUomValue >= releaseUomValue\n ? releaseUomValue > 0\n ? releaseUomValue\n : 0\n : validatedData[idx].remainUomValue\n\n // deduct qty & uomValue from validateData\n validatedData[idx].remainQty -= raw.assignedQty\n validatedData[idx].remainUomValue -= raw.assignedUomValue\n\n raw.productId = validatedData[idx].productId\n raw.productDetailId = validatedData[idx].productDetailId\n raw.productInfo = validatedData[idx].productInfo\n raw.packingType = validatedData[idx].packingType\n raw.packingSize = validatedData[idx].packingSize\n raw.uom = validatedData[idx].uom\n } else {\n raw.assignedQty = 0\n raw.assignedUomValue = 0\n raw.productId = null\n }\n\n let releaseDate = _getStdDateStr(new Date(raw.releaseDate || ''))\n\n return {\n ...raw,\n releaseUomValue,\n errorMsg:\n !raw.productId || !raw.productDetailId\n ? 'inventory or product not found'\n : raw.releaseQty <= 0\n ? 'invalid release qty'\n : raw.assignedQty < raw.releaseQty\n ? 'insufficient stock'\n : raw.releaseDate == ''\n ? 'release date is empty'\n : releaseDate < _getStdDateStr(new Date())\n ? 'backdate is not allowed'\n : !raw.refNo\n ? 'ref no is empty'\n : ''\n }\n })\n}\n\nfunction getConditionValues(conditions: Filter[]): {\n batchId?: string\n containerNo?: string\n product?: string[]\n packingType?: string\n inventory?: { batchId: string; productId: string }[]\n} {\n return conditions.reduce((condition, cond: Filter): {} => {\n condition = {\n ...condition,\n [cond.name]: cond.value\n }\n\n return condition\n }, {})\n}\n\nfunction _getStdDateStr(date) {\n if (isNaN(date.getFullYear())) return ''\n else {\n date.setHours(date.getHours() + 8)\n return date.toISOString().split('T')[0]\n }\n}\n"]}
1
+ {"version":3,"file":"release-good-query.js","sourceRoot":"","sources":["../../../server/service/release-good/release-good-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, Repository, SelectQueryBuilder } from 'typeorm'\n\nimport { Attachment } from '@things-factory/attachment-base'\nimport { checkUserBelongsDomain, User } from '@things-factory/auth-base'\nimport { Bizplace, getCompanyBizplace, getMyBizplace, getPermittedBizplaceIds } from '@things-factory/biz-base'\nimport { logger } from '@things-factory/env'\nimport { buildQuery, Domain, Filter, getRepository, ListParam, Pagination, Sorting } from '@things-factory/shell'\nimport { Inventory, LOCATION_TYPE } from '@things-factory/warehouse-base'\n\nimport { ATTACHMENT_TYPE, ORDER_INVENTORY_STATUS, ORDER_STATUS } from '../../constants'\nimport { OrderInventory } from '../order-inventory/order-inventory'\nimport { ShippingOrder } from '../shipping-order/shipping-order'\nimport { ReleaseGood } from './release-good'\nimport { NewReleaseGood, ReleasableInventoryList, ReleaseGoodList } from './release-good-types'\n\n@Resolver(ReleaseGood)\nexport class ReleaseGoodQuery {\n @Directive('@privilege(category: \"order_customer\", privilege: \"query\", domainOwnerGranted: true)')\n @Query(returns => ReleaseGoodList)\n async releaseGoods(@Ctx() context: ResolverContext, @Args() params: ListParam): Promise<ReleaseGoodList> {\n try {\n const { domain, user } = context.state\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<ReleaseGood> = getRepository(ReleaseGood).createQueryBuilder('rg')\n buildQuery(qb, params, context)\n let items: any\n let total: number\n qb.addSelect('COALESCE(\"cc\".rank, 99999)', 'rank')\n qb.leftJoinAndSelect('rg.domain', 'domain')\n qb.leftJoinAndSelect('rg.bizplace', 'bizplace')\n qb.leftJoinAndSelect('rg.orderInventories', 'oi')\n qb.leftJoinAndSelect('rg.orderProducts', 'op')\n qb.leftJoinAndSelect('oi.inventory', 'inv')\n qb.leftJoinAndSelect('oi.product', 'prod')\n qb.leftJoinAndSelect('rg.arrivalNotice', 'an')\n qb.leftJoinAndSelect('rg.creator', 'creator')\n qb.leftJoinAndSelect('rg.updater', 'updater')\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 = 'RO_LIST_STATUS'`)\n },\n 'cc',\n 'cc.status = rg.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' : 'rg.' + 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 let [itemsRes, totalRes] = await qb.getManyAndCount()\n items = itemsRes\n total = totalRes\n\n return { items, total }\n } catch (error) {\n throw error\n }\n }\n\n @Directive('@privilege(category: \"order\", privilege: \"query\", domainOwnerGranted: true)')\n @Query(returns => ReleaseGood)\n async releaseGood(\n @Ctx() context: ResolverContext,\n @Arg('name', { nullable: true }) name: string,\n @Arg('trackingNo', { nullable: true }) trackingNo: string\n ): Promise<ReleaseGood> {\n const { domain, user } = context.state\n\n if (name) {\n return await getRepository(ReleaseGood).findOne({\n where: {\n domain: { id: domain.id },\n name,\n bizplace: { id: In(await getPermittedBizplaceIds(domain, user)) }\n },\n relations: [\n 'domain',\n 'bizplace',\n 'shippingOrder',\n 'arrivalNotice',\n 'orderInventories',\n 'orderInventories.product',\n 'orderInventories.inventory',\n 'orderInventories.inventory.product',\n 'orderVass',\n 'orderVass.vas',\n 'creator',\n 'updater'\n ]\n })\n } else if (trackingNo) {\n let releaseGood = await getRepository(ReleaseGood).findOne({\n where: {\n domain: { id: domain.id },\n trackingNo,\n bizplace: { id: In(await getPermittedBizplaceIds(domain, user)) }\n },\n relations: ['bizplace']\n })\n\n if (!releaseGood) {\n throw new Error('Tracking No not found in any orders')\n } else {\n return releaseGood\n }\n }\n }\n\n @Directive('@privilege(category: \"order\", privilege: \"query\", domainOwnerGranted: true)')\n @Directive('@transaction')\n @Query(returns => ReleaseGood)\n async releaseGoodDetail(\n @Ctx() context: ResolverContext,\n @Arg('refNo', { nullable: true }) refNo?: string,\n @Arg('name', { nullable: true }) name?: string\n ): Promise<ReleaseGood> {\n try {\n const { domain, tx } = context.state\n let param: any\n\n if (name) param = { domain, name }\n else param = { domain, refNo }\n\n const releaseGood: ReleaseGood = await tx.getRepository(ReleaseGood).findOne({\n where: { ...param },\n relations: [\n 'domain',\n 'bizplace',\n 'shippingOrder',\n 'arrivalNotice',\n 'orderProducts',\n 'orderProducts.product',\n 'orderVass',\n 'orderVass.vas',\n 'orderVass.targetProduct',\n 'orderVass.inventory',\n 'creator',\n 'updater'\n ]\n })\n\n if (releaseGood) {\n let oiQb: SelectQueryBuilder<OrderInventory> = tx\n .getRepository(OrderInventory)\n .createQueryBuilder('oi')\n .leftJoinAndSelect('oi.inventory', 'inventory')\n .leftJoinAndSelect('oi.product', 'product')\n .leftJoinAndSelect('inventory.location', 'location')\n .where('oi.domain_id = :domainId', { domainId: domain.id })\n .andWhere('oi.release_good_id = :releaseGoodId', { releaseGoodId: releaseGood.id })\n .andWhere('oi.status NOT IN (:...orderInventoryStatus)', {\n orderInventoryStatus: [ORDER_INVENTORY_STATUS.COMPLETE_SPLIT, ORDER_INVENTORY_STATUS.REPLACED]\n })\n .orderBy('product.sku', 'ASC')\n\n let orderInventories: OrderInventory[] = await oiQb.getMany()\n\n const shippingOrder: ShippingOrder = releaseGood.shippingOrder\n const foundAttachments: Attachment[] = await tx.getRepository(Attachment).find({\n where: {\n domain: { id: domain.id },\n refBy: releaseGood.id,\n category: ATTACHMENT_TYPE.DELIVERY_ORDER\n }\n })\n\n let invInfos = await Promise.all(\n orderInventories.map(async (orderInv: OrderInventory) => {\n if (orderInv?.inventory?.id) {\n const inventory: Inventory = orderInv.inventory\n return {\n id: inventory.id,\n name: inventory.name,\n batchId: inventory.batchId,\n batchIdRef: inventory.batchIdRef,\n palletId: inventory.palletId,\n product: orderInv.product,\n productIdRef: orderInv.product.id,\n productName: `${orderInv.product.name} (${orderInv.product.description})`,\n packingType: orderInv.packingType,\n packingSize: orderInv.packingSize,\n location: inventory.location,\n qty: inventory.qty,\n lockedQty: inventory.lockedQty,\n lockedUomValue: inventory.lockedUomValue,\n uom: inventory.uom,\n uomValue: inventory.uomValue,\n invStatus: inventory.status,\n releaseQty: orderInv.releaseQty,\n releaseUomValue: orderInv.releaseUomValue,\n status: orderInv.status,\n refWorksheetId: orderInv.refWorksheetId\n }\n }\n })\n )\n\n const result = {\n ...releaseGood,\n attachment: foundAttachments,\n shippingOrderInfo: {\n containerNo: shippingOrder?.containerNo || '',\n containerSize: shippingOrder?.containerSize || '',\n containerLeavingDate: shippingOrder?.containerLeavingDate || '',\n containerArrivalDate: shippingOrder?.containerArrivalDate || '',\n containerClosureDate: shippingOrder?.containerClosureDate || '',\n shipName: shippingOrder?.shipName || '',\n remark: shippingOrder?.remark || '',\n remindContainerDeparture: shippingOrder?.remindContainerDeparture || null\n },\n inventoryInfos: invInfos\n }\n\n return result\n }\n } catch (error) {\n logger.error(`release-good-query[releaseGoodDetail]: ${error}`)\n throw new Error(error)\n }\n }\n\n @Directive('@privilege(category: \"order_warehouse\", privilege: \"query\", domainOwnerGranted: true)')\n @Query(returns => ReleaseGoodList)\n async releaseGoodRequests(@Ctx() context: ResolverContext, @Args() params: ListParam): Promise<ReleaseGoodList> {\n try {\n console.time('t1')\n const { domain, user } = context.state\n\n const statusFilter = params.filters.some(e => e.name === 'status')\n const bizplaceFilter = params.filters.find(param => param.name === 'bizplaceId')\n const noOfItemsFilter = params.filters.find(param => param.name === 'noOfItems')\n const skuFilter = params.filters.find(param => param.name === 'sku')\n const routeId = params.filters.find(param => param.name === 'routeId')\n const orderRemarkFilter = params.filters.find(param => param.name === 'orderRemark')\n const manifestedFilter = params.filters.find(param => param.name === 'manifested')\n const orderInfoFilter = params.filters.find(param => param.name === 'name')\n const typeFilter = params.filters.find(param => param.name === 'type')?.value\n\n if (await checkUserBelongsDomain(domain, user)) {\n if (!statusFilter && !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 (!bizplaceFilter) {\n params.filters.push({\n name: 'bizplaceId',\n operator: 'in',\n value: await getPermittedBizplaceIds(domain, user),\n relation: false\n })\n }\n\n if (skuFilter) {\n params.filters = params.filters.filter(param => param.name !== 'sku')\n }\n\n if (orderInfoFilter) {\n params.filters = params.filters.filter(param => param.name !== 'name')\n }\n\n if (routeId) {\n if (routeId.value == true) {\n params.filters.find(param => param.name === 'routeId').value = 'null'\n } else {\n params.filters.find(param => param.name === 'routeId').operator = 'is_null'\n params.filters.find(param => param.name === 'routeId').value = null\n }\n }\n\n if (orderRemarkFilter) {\n const orderRemarkIdx = params.filters.findIndex(param => param.name === 'orderRemark')\n if (orderRemarkFilter.value == true) {\n params.filters.splice(orderRemarkIdx, 1)\n params.filters.push({\n name: 'remark',\n operator: 'is_not_null',\n value: null,\n relation: false\n })\n } else {\n params.filters.splice(orderRemarkIdx, 1)\n params.filters.push({\n name: 'remark',\n operator: 'is_null',\n value: null,\n relation: false\n })\n }\n }\n\n if (manifestedFilter) {\n const manifestedIdx = params.filters.findIndex(param => param.name === 'manifested')\n if (manifestedFilter.value == true) {\n params.filters.splice(manifestedIdx, 1)\n params.filters.push({\n name: 'manifestId',\n operator: 'is_not_null',\n value: null,\n relation: false\n })\n } else {\n params.filters.splice(manifestedIdx, 1)\n params.filters.push({\n name: 'manifestId',\n operator: 'is_null',\n value: null,\n relation: false\n })\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 let releaseDateFrom = params.filters.find(param => param.name === 'fromDate')?.value\n params.filters.splice(fromDateParamIdx, 1)\n\n params.filters.push({\n name: typeFilter == 'b2c' ? 'releaseDate' : 'createdAt',\n operator: 'gte',\n value: typeFilter == 'b2c' ? releaseDateFrom : 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 let releaseDateTo = params.filters.find(param => param.name === 'toDate')?.value\n params.filters.splice(toDateParamIdx, 1)\n\n params.filters.push({\n name: typeFilter == 'b2c' ? 'releaseDate' : 'createdAt',\n operator: typeFilter == 'b2c' ? 'lte' : 'lt',\n value:\n typeFilter == 'b2c' ? releaseDateTo : new Date(toDateVal.setDate(toDateVal.getDate() + 1)).toISOString(),\n relation: false\n })\n }\n\n if (noOfItemsFilter && noOfItemsFilter.value == 1) {\n params.filters.find(param => param.name === 'noOfItems').operator = 'eq'\n }\n\n const qb: SelectQueryBuilder<ReleaseGood> = getRepository(ReleaseGood).createQueryBuilder('rg')\n buildQuery(qb, params, context)\n qb.addSelect('COALESCE(\"cc\".rank, 99999)', 'rank')\n qb.leftJoinAndSelect('rg.domain', 'domain')\n qb.leftJoinAndSelect('rg.bizplace', 'bizplace')\n qb.leftJoinAndSelect('rg.arrivalNotice', 'an')\n qb.leftJoinAndSelect('rg.creator', 'creator')\n qb.leftJoinAndSelect('rg.updater', 'updater')\n qb.leftJoinAndSelect('rg.acceptedBy', 'acceptedBy')\n qb.leftJoinAndSelect('rg.deliverTo', 'deliverTo')\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 = 'RO_REQUESTS_STATUS'`)\n },\n 'cc',\n 'cc.status = rg.status'\n )\n\n if (skuFilter) {\n let removeSymbol = skuFilter.value\n .split('')\n .filter(res => res !== '%')\n .join('')\n\n let products = removeSymbol\n .toLowerCase()\n .split(',')\n .map(prod => {\n return \"'%\" + prod.trim().replace(/'/g, \"''\") + \"%'\"\n })\n .join(',')\n\n qb.andWhere(\n `\n exists (select * from order_inventories oi \n inner join products p on oi.product_id = p.id\n inner join inventories i on i.product_id = p.id\n where oi.release_good_id = rg.id\n and (lower(p.sku) like any(array[${products}])\n or lower(p.brand_sku) like any(array[${products}])\n or lower(p.name) like any(array[${products}])\n or lower(p.description) like any(array[${products}]))\n )\n `\n )\n }\n\n if (orderInfoFilter) {\n let removeSymbol = orderInfoFilter.value\n .split('')\n .filter(res => res !== '%')\n .join('')\n\n let orderInfos = removeSymbol\n .toLowerCase()\n .split(',')\n .map(prod => {\n return \"'%\" + prod.trim().replace(/'/g, \"''\") + \"%'\"\n })\n .join(',')\n\n qb.andWhere(`(\n lower(rg.name) like any(array[${orderInfos}])\n or lower(rg.ref_no) like any(array[${orderInfos}])\n or lower(rg.ref_no_2) like any(array[${orderInfos}])\n or lower(rg.ref_no_3) like any(array[${orderInfos}])\n )`)\n }\n\n const arrChildSortData = ['bizplace', 'creator']\n const sort: OrderByCondition = (params.sortings || []).reduce(\n (acc, sort) => ({\n ...acc,\n [arrChildSortData.indexOf(sort.name) >= 0 ? sort.name + '.name' : 'rg.' + sort.name]: sort.desc\n ? 'DESC'\n : 'ASC'\n }),\n params.sortings.length < 1 ? { rank: 'ASC', 'rg.createdAt': 'DESC' } : {}\n )\n\n qb.orderBy(sort)\n\n let [items, total] = await qb.getManyAndCount()\n\n items = items\n .filter(item => {\n return item.domainId === domain.id\n })\n .map(item => {\n return {\n ...item,\n orderRemark: item?.remark ? true : false\n }\n })\n console.timeEnd('t1')\n return { items, total }\n } catch (error) {\n logger.error(`release-good-query[releaseGoodRequests]: ${error}`)\n throw error\n }\n }\n\n @Directive('@privilege(category: \"order\", privilege: \"query\", domainOwnerGranted: true)')\n @Query(returns => ReleasableInventoryList)\n async releasableInventories(\n @Ctx() context: ResolverContext,\n @Arg('filters', type => [Filter], { nullable: true }) filters?: Filter[],\n @Arg('pagination', type => Pagination, { nullable: true }) pagination?: Pagination,\n @Arg('sortings', type => [Sorting], { nullable: true }) sortings?: Sorting[]\n ): Promise<ReleasableInventoryList> {\n const myBizplace: Bizplace = await getMyBizplace(context.state.domain, context.state.user)\n const INV_ALIAS = 'INV'\n const PROD_ALIAS = 'PROD'\n const GAN_ALIAS = 'GAN'\n const conditions = filters\n let {\n batchId = null,\n containerNo = null,\n product = [],\n packingType = null,\n inventory = []\n } = getConditionValues(conditions)\n\n const SELECT: string = `\n SELECT\n ${INV_ALIAS}.batch_id,\n ${INV_ALIAS}.packing_type,\n (SUM(COALESCE(${INV_ALIAS}.qty, 0)) - SUM(COALESCE(${INV_ALIAS}.locked_qty, 0))) as remain_qty,\n (SUM(COALESCE(${INV_ALIAS}.uomValue, 0)) - SUM(COALESCE(${INV_ALIAS}.locked_uom_value, 0))) as remain_uom_value,\n ${PROD_ALIAS}.id as product_id,\n ${PROD_ALIAS}.name as product_name,\n ${GAN_ALIAS}.container_no\n `\n const FROM: string = `\n FROM\n inventories ${INV_ALIAS}\n LEFT JOIN\n products ${PROD_ALIAS}\n ON\n ${PROD_ALIAS}.id = ${INV_ALIAS}.product_id\n LEFT JOIN\n arrival_notices ${GAN_ALIAS}\n ON\n ${GAN_ALIAS}.id = CAST(${INV_ALIAS}.ref_order_id as uuid)\n `\n\n const WHERE: string = `\n WHERE\n ${INV_ALIAS}.status = 'STORED'\n AND ${INV_ALIAS}.qty > 0\n AND ${INV_ALIAS}.bizplace_id = '${myBizplace.id}'\n ${batchId ? `AND LOWER(${INV_ALIAS}.batch_id) LIKE '%${batchId.toLowerCase()}%'` : ''}\n ${packingType ? `AND LOWER(${INV_ALIAS}.packing_type) LIKE '%${packingType.toLowerCase()}%'` : ''}\n ${containerNo ? `AND LOWER(${GAN_ALIAS}.container_no) LIKE '%${containerNo.toLowerCase()}%'` : ''}\n ${\n product?.length > 0 && product[0]\n ? `AND ${PROD_ALIAS}.id IN (${product.map((id: string) => `'${id}'`).join(', ')})`\n : product[0] === null\n ? `AND ${PROD_ALIAS}.id isnull`\n : ''\n }\n ${\n inventory?.length > 0\n ? `\n AND (${INV_ALIAS}.batch_id, ${PROD_ALIAS}.id) ${\n filters.find((filter: { name: string; operator: string; value: any }) => filter.name === 'inventory')\n .operator\n } (\n ${inventory\n .map((inv: { batchId: string; productId: string }) => `('${inv.batchId}', '${inv.productId}')`)\n .join(', ')}\n )\n `\n : ''\n }\n `\n\n // ${product?.length > 0 ? `AND ${PROD_ALIAS}.id IN (${product.map((id: string) => id ? `'${id}'` : null).join(', ')})` : ''}\n const GROUP_BY: string = `\n GROUP BY\n ${INV_ALIAS}.batch_id,\n ${INV_ALIAS}.packing_type,\n ${GAN_ALIAS}.container_no,\n ${PROD_ALIAS}.id\n `\n\n const OFFSET_LIMIT: string = `\n OFFSET ${pagination.limit * (pagination.page - 1)}\n LIMIT ${pagination.limit}\n `\n\n const invRepo: Repository<Inventory> = getRepository(Inventory)\n let items: Inventory[] = await invRepo.query(`\n ${SELECT} ${FROM} ${WHERE} ${GROUP_BY} ${OFFSET_LIMIT}\n `)\n items = items.map((item: Inventory) => {\n return {\n batchId: item.batch_id,\n packingType: item.packing_type,\n remainQty: item.remain_qty,\n remainUomValue: item.remain_uom_value,\n productName: item.product_name,\n product: {\n id: item.product_id,\n name: item.product_name\n },\n containerNo: item.container_no\n }\n })\n\n const results: [{ total: number }] = await invRepo.query(`\n SELECT max(cnt.cnt) as total FROM (\n SELECT (ROW_NUMBER() OVER()) as cnt ${FROM} ${WHERE} ${GROUP_BY}\n ) as cnt\n `)\n\n return {\n items,\n total: Number(results[0].total)\n }\n }\n\n @Directive('@transaction')\n @Query(returns => [ReleaseGood])\n async bulkReleaseGoodsAvailableItems(\n @Ctx() context: ResolverContext,\n @Arg('rawReleaseGoods', type => [NewReleaseGood], { nullable: true }) rawReleaseGoods: NewReleaseGood[],\n @Arg('bizplaceId', type => String) bizplaceId: string\n ): Promise<ReleaseGood[]> {\n const { tx } = context.state\n const availableItems: any[] = await bulkReleaseGoodsAvailableItemsFunction(rawReleaseGoods, bizplaceId, context, tx)\n\n return availableItems\n }\n\n @FieldResolver(type => Domain)\n async domain(@Root() releaseGood: ReleaseGood): Promise<Domain> {\n return await getRepository(Domain).findOneBy({ id: releaseGood.domainId })\n }\n\n @FieldResolver(type => User)\n async creator(@Root() releaseGood: ReleaseGood): Promise<User> {\n return await getRepository(User).findOneBy({ id: releaseGood.creatorId })\n }\n\n @FieldResolver(type => User)\n async updater(@Root() releaseGood: ReleaseGood): Promise<User> {\n return await getRepository(User).findOneBy({ id: releaseGood.updaterId })\n }\n}\n\nasync function prepOITempTable(domain: Domain, tx: EntityManager) {\n await tx.query(\n `\n CREATE TEMP TABLE oi ON COMMIT DROP AS (\n SELECT\n SUM(oi.release_qty) as release_qty,\n SUM(oi.release_uom_value) as release_uom_value,\n oi.batch_id,\n p.id as product_id,\n oi.packing_type\n FROM\n order_inventories oi\n LEFT JOIN\n products p\n ON\n oi.product_id = p.id\n WHERE\n oi.status IN ('PENDING', 'PENDING_RECEIVE', 'PENDING_WORKSHEET', 'PENDING_SPLIT') \n AND oi.batch_id NOTNULL\n AND oi.product_id NOTNULL\n AND oi.packing_type NOTNULL\n AND oi.inventory_id IS NULL\n AND oi.domain_id = $1\n GROUP BY\n oi.product_id,\n oi.batch_id,\n oi.packing_type,\n p.id\n )`,\n [domain.id]\n )\n}\n\nasync function getAvailableAmount(\n roBizId: string,\n productIdRef: string,\n batchId: string,\n packingType: string,\n tx: EntityManager\n): Promise<{ qty: number; uomValue: number; uom: string }> {\n const result: any[] = await tx.getRepository(Inventory).query(`\n SELECT\n SUM(COALESCE(i.qty, 0)) - SUM(COALESCE(i.locked_qty, 0)) - MAX(COALESCE(oi.release_qty, 0)) as \"qty\",\n SUM(COALESCE(i.uom_value, 0)) - SUM(COALESCE(i.locked_uom_value, 0)) - MAX(COALESCE(oi.release_uom_value, 0)) as \"uom_value\",\n uom\n FROM\n inventories i\n LEFT JOIN products p on i.product_id = p.id\n LEFT JOIN oi on i.batch_id = oi.batch_id\n AND p.id = oi.product_id\n AND i.packing_type = oi.packing_type\n WHERE\n i.bizplace_id = '${roBizId}'\n AND i.status = 'STORED'\n AND i.batch_id = '${batchId}'\n AND p.id = '${productIdRef}'\n AND i.packing_type = '${packingType}'\n GROUP BY\n i.batch_id,\n p.id,\n i.packing_type,\n i.uom\n `)\n\n let qty: number = 0\n let uomValue: number = 0\n let uom: string = ''\n if (result?.length) {\n qty = result[0].qty\n uomValue = result[0].uom_value\n uom = result[0].uom\n }\n\n return { qty, uomValue, uom }\n}\n\nasync function dropOITempTable(domain: Domain, tx: EntityManager) {\n await tx.query(`DROP TABLE oi`)\n}\n\nexport async function bulkReleaseGoodsAvailableItemsFunction(\n rawReleaseGoods: any[],\n bizplaceId: string,\n context: any,\n tx?: EntityManager\n): Promise<any[]> {\n const { domain } = context.state\n const companyBizplaceId: Bizplace = await getCompanyBizplace(null, null, bizplaceId)\n\n if (!rawReleaseGoods) return\n const json_oi = JSON.stringify(\n rawReleaseGoods.map(raw => {\n return {\n sku: raw.sku,\n packing_type: raw.packingType,\n packing_size: raw.packingSize,\n uom: raw.uom,\n releaseQty: raw.releaseQty,\n release_qty: raw.releaseQty\n }\n })\n )\n\n await tx.query(\n `\n CREATE TEMP TABLE raw_release_goods(\n product_id VARCHAR(50),\n product_detail_id VARCHAR(50),\n sku VARCHAR(150),\n product_info VARCHAR(250),\n packing_type VARCHAR(50),\n packing_size INT,\n uom VARCHAR(10),\n release_qty INT\n );\n `\n )\n\n await tx.query(\n `\n INSERT INTO raw_release_goods\n SELECT p.id AS product_id,\n pd.id AS product_detail_id,\n js.sku,\n CASE WHEN p.description NOT IN (NULL, '', '-') THEN CONCAT(p.name, '(', p.description, ')')\n ELSE p.name END AS product_info,\n CASE WHEN js.packing_type NOTNULL AND js.packing_size NOTNULL THEN js.packing_type ELSE pd.packing_type END,\n CASE WHEN js.packing_type NOTNULL AND js.packing_size NOTNULL THEN js.packing_size ELSE pd.packing_size END,\n CASE WHEN js.uom NOTNULL THEN js.uom ELSE pd.uom END\n FROM JSON_POPULATE_RECORDSET(NULL::raw_release_goods, $1) js\n LEFT JOIN products p ON LOWER(js.sku) = LOWER(p.sku) AND p.bizplace_id = $2\n LEFT JOIN product_details pd ON p.id = pd.product_id\n AND CASE WHEN js.packing_type NOTNULL AND js.packing_size NOTNULL AND js.uom NOTNULL\n THEN pd.packing_type = js.packing_type AND pd.packing_size = js.packing_size AND pd.uom = js.uom \n WHEN js.packing_type NOTNULL AND js.packing_size NOTNULL AND js.uom ISNULL \t\n THEN pd.packing_type = js.packing_type AND pd.packing_size = js.packing_size AND pd.is_default IS TRUE\n WHEN js.packing_type ISNULL AND js.packing_size ISNULL AND js.uom NOTNULL\n THEN pd.uom = js.uom AND pd.is_default IS TRUE ELSE pd.is_default IS TRUE \n END;\n `,\n [json_oi, companyBizplaceId.id]\n )\n\n let availableItems = await tx.query(\n `\n WITH inv AS (\n SELECT i.product_id, foo.product_detail_id, foo.sku, foo.product_info, i.packing_type, i.packing_size, i.uom,\n SUM(i.qty - COALESCE(i.locked_qty, 0)) - COALESCE(\n (\n SELECT SUM(oi.release_qty) FROM order_inventories oi \n WHERE oi.status IN ('PENDING', 'PENDING_RECEIVE', 'PENDING_WORKSHEET', 'PENDING_SPLIT')\n AND oi.inventory_id IS null\n AND oi.product_id = i.product_id::uuid\n AND oi.packing_type = i.packing_type\n AND oi.uom = i.uom\n AND oi.domain_id = $1\n AND oi.bizplace_id = $2\n ), 0) as \"remain_qty\",\n SUM(i.uom_value - COALESCE(i.locked_uom_value, 0)) - COALESCE(\n (\n SELECT SUM(oi.release_uom_value) FROM order_inventories oi \n WHERE oi.status IN ('PENDING', 'PENDING_RECEIVE', 'PENDING_WORKSHEET', 'PENDING_SPLIT')\n AND oi.inventory_id IS null\n AND oi.product_id = i.product_id::uuid\n AND oi.packing_type = i.packing_type\n AND oi.uom = i.uom\n AND oi.domain_id = $1\n AND oi.bizplace_id = $2\n ), 0) as \"remain_uom_value\"\n FROM inventories i\n LEFT JOIN locations l\n ON i.location_id = l.id\n INNER JOIN (\n SELECT rrg.product_id, rrg.product_detail_id, rrg.sku, rrg.product_info, rrg.packing_type, rrg.packing_size, rrg.uom \n FROM raw_release_goods rrg\n GROUP BY rrg.product_id, rrg.product_detail_id, rrg.sku, rrg.product_info, rrg.packing_type, rrg.packing_size, rrg.uom\n ) AS foo\n ON i.product_id = foo.product_id::uuid\n AND i.packing_type = foo.packing_type\n AND i.packing_size = foo.packing_size\n AND i.uom = foo.uom\n AND i.domain_id = $1\n AND i.bizplace_id = $2\n WHERE l.type NOT IN ($3, $4)\n GROUP BY i.product_id, foo.product_detail_id, foo.sku,foo.product_info, i.packing_type, i.packing_size, i.uom\n ORDER BY foo.sku, remain_qty\n ) SELECT * FROM inv WHERE remain_qty > 0\n `,\n [domain.id, bizplaceId, LOCATION_TYPE.QUARANTINE, LOCATION_TYPE.RESERVE]\n )\n\n await tx.query(`DROP TABLE raw_release_goods`)\n\n availableItems = availableItems.map(item => {\n return {\n productId: item.product_id,\n productDetailId: item.product_detail_id,\n productInfo: item.product_info,\n sku: item.sku,\n packingType: item.packing_type,\n packingSize: Number(item.packing_size || 0),\n uom: item.uom,\n remainQty: item.remain_qty,\n remainUomValue: item.remain_uom_value\n }\n })\n\n return _extractData(rawReleaseGoods, availableItems)\n}\n\nfunction _extractData(rawData, validatedData) {\n return rawData.map(raw => {\n const idx = validatedData.findIndex(val => {\n const comparison = ['packingType', 'packingSize', 'uom']\n\n let a: any = {},\n b: any = {}\n\n comparison.forEach(cc => {\n if (raw[cc]) {\n a[cc] = raw[cc]\n b[cc] = val[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 val.sku.toLowerCase() == raw.sku.toLowerCase() && a === b\n })\n\n let releaseUomValue = 0\n\n // if sku is matched, assign qty and product id\n if (idx >= 0) {\n // assign qty to rawData as much as possible\n releaseUomValue =\n (Math.round((validatedData[idx]?.remainUomValue / validatedData[idx]?.remainQty) * 100) / 100) * raw.releaseQty\n\n raw.assignedQty =\n validatedData[idx].remainQty >= raw.releaseQty\n ? raw.releaseQty > 0\n ? raw.releaseQty\n : 0\n : validatedData[idx].remainQty\n\n raw.assignedUomValue =\n validatedData[idx].remainUomValue >= releaseUomValue\n ? releaseUomValue > 0\n ? releaseUomValue\n : 0\n : validatedData[idx].remainUomValue\n\n // deduct qty & uomValue from validateData\n validatedData[idx].remainQty -= raw.assignedQty\n validatedData[idx].remainUomValue -= raw.assignedUomValue\n\n raw.productId = validatedData[idx].productId\n raw.productDetailId = validatedData[idx].productDetailId\n raw.productInfo = validatedData[idx].productInfo\n raw.packingType = validatedData[idx].packingType\n raw.packingSize = validatedData[idx].packingSize\n raw.uom = validatedData[idx].uom\n } else {\n raw.assignedQty = 0\n raw.assignedUomValue = 0\n raw.productId = null\n }\n\n let releaseDate = _getStdDateStr(new Date(raw.releaseDate || ''))\n\n return {\n ...raw,\n releaseUomValue,\n errorMsg:\n !raw.productId || !raw.productDetailId\n ? 'inventory or product not found'\n : raw.releaseQty <= 0\n ? 'invalid release qty'\n : raw.assignedQty < raw.releaseQty\n ? 'insufficient stock'\n : raw.releaseDate == ''\n ? 'release date is empty'\n : releaseDate < _getStdDateStr(new Date())\n ? 'backdate is not allowed'\n : !raw.refNo\n ? 'ref no is empty'\n : ''\n }\n })\n}\n\nfunction getConditionValues(conditions: Filter[]): {\n batchId?: string\n containerNo?: string\n product?: string[]\n packingType?: string\n inventory?: { batchId: string; productId: string }[]\n} {\n return conditions.reduce((condition, cond: Filter): {} => {\n condition = {\n ...condition,\n [cond.name]: cond.value\n }\n\n return condition\n }, {})\n}\n\nfunction _getStdDateStr(date) {\n if (isNaN(date.getFullYear())) return ''\n else {\n date.setHours(date.getHours() + 8)\n return date.toISOString().split('T')[0]\n }\n}\n"]}
@@ -192,7 +192,7 @@ tslib_1.__decorate([
192
192
  tslib_1.__metadata("design:returntype", Promise)
193
193
  ], ReturnOrderQuery.prototype, "returnOrderDetail", null);
194
194
  tslib_1.__decorate([
195
- (0, type_graphql_1.Directive)('@privilege(category: "order_warehouse", privilege: "query")'),
195
+ (0, type_graphql_1.Directive)('@privilege(category: "order_warehouse", privilege: "query", domainOwnerGranted: true)'),
196
196
  (0, type_graphql_1.Query)(returns => __1.ReturnOrderList),
197
197
  tslib_1.__param(0, (0, type_graphql_1.Ctx)()),
198
198
  tslib_1.__param(1, (0, type_graphql_1.Arg)('filters', type => [shell_1.Filter], { nullable: true })),
@@ -1 +1 @@
1
- {"version":3,"file":"return-order-query.js","sourceRoot":"","sources":["../../../server/service/return-order/return-order-query.ts"],"names":[],"mappings":"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","sourcesContent":["import { Arg, Ctx, Directive, FieldResolver, Query, Resolver, Root } from 'type-graphql'\nimport { OrderByCondition, SelectQueryBuilder } from 'typeorm'\n\nimport { Attachment } from '@things-factory/attachment-base'\nimport { User } from '@things-factory/auth-base'\nimport { getPermittedBizplaceIds } from '@things-factory/biz-base'\nimport { buildQuery, Domain, Filter, getRepository, Pagination, Sorting } from '@things-factory/shell'\nimport { Inventory } from '@things-factory/warehouse-base'\n\nimport { OrderInventory, ReturnOrderDetail, ReturnOrderList } from '../'\nimport { ATTACHMENT_TYPE, ORDER_INVENTORY_TYPE, ORDER_STATUS } from '../../constants'\nimport { ReturnOrder } from './return-order'\n\n@Resolver(ReturnOrder)\nexport class ReturnOrderQuery {\n @Query(returns => ReturnOrderList)\n async returnOrders(\n @Ctx() context: ResolverContext,\n @Arg('filters', type => [Filter], { nullable: true }) filters?: Filter[],\n @Arg('pagination', type => Pagination, { nullable: true }) pagination?: Pagination,\n @Arg('sortings', type => [Sorting], { nullable: true }) sortings?: Sorting[]\n ): Promise<ReturnOrderList> {\n try {\n const { domain, user } = context.state\n\n filters.push({\n name: 'bizplaceId',\n operator: 'in',\n value: await getPermittedBizplaceIds(domain, user),\n relation: false\n })\n\n const qb: SelectQueryBuilder<ReturnOrder> = getRepository(ReturnOrder).createQueryBuilder('ro')\n buildQuery(qb, { filters, pagination, sortings }, context)\n qb.addSelect(subQuery => {\n return subQuery\n .select('COALESCE(\"ccd\".rank, 99999)', 'rank')\n .from('common_code_details', 'ccd')\n .innerJoin('ccd.commonCode', 'cc')\n .where('\"ccd\".\"name\" = \"ro\".\"status\"')\n .andWhere('\"ccd\".\"domain_id\" = \"ro\".\"domain_id\"')\n .andWhere('\"cc\".\"name\" = \\'RETURN_LIST_STATUS\\'')\n }, 'rank')\n qb.leftJoinAndSelect('ro.domain', 'domain')\n qb.leftJoinAndSelect('ro.bizplace', 'bizplace')\n qb.leftJoinAndSelect('ro.creator', 'creator')\n qb.leftJoinAndSelect('ro.updater', 'updater')\n qb.leftJoinAndSelect('ro.acceptedBy', 'acceptedBy')\n\n const arrChildSortData = ['bizplace']\n const sort: OrderByCondition = (sortings || []).reduce(\n (acc, sort) => ({\n ...acc,\n [arrChildSortData.indexOf(sort.name) >= 0 ? sort.name + '.name' : 'ro.' + sort.name]: sort.desc\n ? 'DESC'\n : 'ASC'\n }),\n !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 @Query(returns => ReturnOrder)\n async returnOrder(@Arg('name') name: string, @Ctx() context: ResolverContext): Promise<ReturnOrder> {\n const { domain } = context.state\n\n const repository = getRepository(ReturnOrder)\n\n return await repository.findOne({\n where: { domain: { id: domain.id }, name },\n relations: ['domain', 'creator', 'updater']\n })\n }\n\n @Query(returns => ReturnOrderDetail)\n async returnOrderDetail(@Arg('name') name: string, @Ctx() context: ResolverContext): Promise<ReturnOrderDetail> {\n const { domain, user } = context.state\n\n const returnOrder: ReturnOrder = await getRepository(ReturnOrder).findOne({\n where: {\n domain: { id: domain.id },\n name\n },\n relations: [\n 'domain',\n 'bizplace',\n 'orderInventories',\n 'orderInventories.inventory',\n 'orderInventories.product',\n 'orderInventories.inventory.product',\n 'orderInventories.inventory.location',\n 'orderVass',\n 'orderVass.vas',\n 'orderVass.targetProduct',\n 'orderVass.inventory',\n 'creator',\n 'updater'\n ]\n })\n\n const foundAttachments: Attachment[] = await getRepository(Attachment).find({\n where: {\n domain: { id: domain.id },\n refBy: returnOrder.id,\n category: ATTACHMENT_TYPE.RETURN_ORDER\n }\n })\n\n return {\n ...(returnOrder as any),\n attachment: foundAttachments,\n inventoryInfos: returnOrder.orderInventories\n .filter(orderInv => orderInv.type === ORDER_INVENTORY_TYPE.RETURN_ORDER)\n .map((orderInv: OrderInventory) => {\n const inventory: Inventory = orderInv.inventory\n return {\n id: inventory.id,\n name: inventory.name,\n batchId: inventory.batchId,\n palletId: inventory.palletId,\n product: inventory.product,\n productName: `${inventory.product.name} (${inventory.product.description})`,\n packingType: inventory.packingType,\n packingSize: inventory.packingSize,\n returnQty: orderInv.returnQty,\n returnUomValue: orderInv.returnUomValue,\n status: orderInv.status,\n remark: orderInv.remark\n }\n })\n }\n }\n\n @Directive('@privilege(category: \"order_warehouse\", privilege: \"query\")')\n @Query(returns => ReturnOrderList)\n async returnOrderRequests(\n @Ctx() context: ResolverContext,\n @Arg('filters', type => [Filter], { nullable: true }) filters?: Filter[],\n @Arg('pagination', type => Pagination, { nullable: true }) pagination?: Pagination,\n @Arg('sortings', type => [Sorting], { nullable: true }) sortings?: Sorting[]\n ): Promise<ReturnOrderList> {\n try {\n const { domain, user } = context.state\n\n const statusFilter = filters.some(e => e.name === 'status')\n const bizplaceFilter = filters.find(param => param.name === 'bizplaceId')\n\n if (!statusFilter) {\n 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 filters.push({\n name: 'bizplaceId',\n operator: 'in',\n value: await getPermittedBizplaceIds(domain, user),\n relation: false\n })\n }\n\n const qb: SelectQueryBuilder<ReturnOrder> = getRepository(ReturnOrder).createQueryBuilder('ro')\n buildQuery(qb, { filters, pagination, sortings }, context)\n qb.addSelect(subQuery => {\n return subQuery\n .select('COALESCE(\"ccd\".rank, 99999)', 'rank')\n .from('common_code_details', 'ccd')\n .innerJoin('ccd.commonCode', 'cc')\n .where('\"ccd\".\"name\" = \"ro\".\"status\"')\n .andWhere('\"ccd\".\"domain_id\" = \"ro\".\"domain_id\"')\n .andWhere('\"cc\".\"name\" = \\'RETURN_LIST_STATUS\\'')\n }, 'rank')\n qb.leftJoinAndSelect('ro.domain', 'domain')\n qb.leftJoinAndSelect('ro.bizplace', 'bizplace')\n qb.leftJoinAndSelect('ro.creator', 'creator')\n qb.leftJoinAndSelect('ro.updater', 'updater')\n qb.leftJoinAndSelect('ro.acceptedBy', 'acceptedBy')\n\n const arrChildSortData = ['bizplace']\n const sort: OrderByCondition = (sortings || []).reduce(\n (acc, sort) => ({\n ...acc,\n [arrChildSortData.indexOf(sort.name) >= 0 ? sort.name + '.name' : 'ro.' + sort.name]: sort.desc\n ? 'DESC'\n : 'ASC'\n }),\n !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 @FieldResolver(type => Domain)\n async domain(@Root() returnOrder: ReturnOrder): Promise<Domain> {\n return await getRepository(Domain).findOneBy({ id: returnOrder.domainId })\n }\n\n @FieldResolver(type => User)\n async creator(@Root() returnOrder: ReturnOrder): Promise<User> {\n return await getRepository(User).findOneBy({ id: returnOrder.creatorId })\n }\n\n @FieldResolver(type => User)\n async updater(@Root() returnOrder: ReturnOrder): Promise<User> {\n return await getRepository(User).findOneBy({ id: returnOrder.updaterId })\n }\n}\n"]}
1
+ {"version":3,"file":"return-order-query.js","sourceRoot":"","sources":["../../../server/service/return-order/return-order-query.ts"],"names":[],"mappings":";;;;AAAA,+CAAwF;AAGxF,qEAA4D;AAC5D,yDAAgD;AAChD,uDAAkE;AAClE,iDAAsG;AAGtG,2BAAwE;AACxE,+CAAqF;AACrF,iDAA4C;AAGrC,IAAM,gBAAgB,GAAtB,MAAM,gBAAgB;IAErB,AAAN,KAAK,CAAC,YAAY,CACT,OAAwB,EACuB,OAAkB,EACb,UAAuB,EAC1B,QAAoB;QAE5E,IAAI;YACF,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;YAEtC,OAAO,CAAC,IAAI,CAAC;gBACX,IAAI,EAAE,YAAY;gBAClB,QAAQ,EAAE,IAAI;gBACd,KAAK,EAAE,MAAM,IAAA,kCAAuB,EAAC,MAAM,EAAE,IAAI,CAAC;gBAClD,QAAQ,EAAE,KAAK;aAChB,CAAC,CAAA;YAEF,MAAM,EAAE,GAAoC,IAAA,qBAAa,EAAC,0BAAW,CAAC,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAA;YAC/F,IAAA,kBAAU,EAAC,EAAE,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,EAAE,OAAO,CAAC,CAAA;YAC1D,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE;gBACtB,OAAO,QAAQ;qBACZ,MAAM,CAAC,6BAA6B,EAAE,MAAM,CAAC;qBAC7C,IAAI,CAAC,qBAAqB,EAAE,KAAK,CAAC;qBAClC,SAAS,CAAC,gBAAgB,EAAE,IAAI,CAAC;qBACjC,KAAK,CAAC,8BAA8B,CAAC;qBACrC,QAAQ,CAAC,sCAAsC,CAAC;qBAChD,QAAQ,CAAC,sCAAsC,CAAC,CAAA;YACrD,CAAC,EAAE,MAAM,CAAC,CAAA;YACV,EAAE,CAAC,iBAAiB,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAA;YAC3C,EAAE,CAAC,iBAAiB,CAAC,aAAa,EAAE,UAAU,CAAC,CAAA;YAC/C,EAAE,CAAC,iBAAiB,CAAC,YAAY,EAAE,SAAS,CAAC,CAAA;YAC7C,EAAE,CAAC,iBAAiB,CAAC,YAAY,EAAE,SAAS,CAAC,CAAA;YAC7C,EAAE,CAAC,iBAAiB,CAAC,eAAe,EAAE,YAAY,CAAC,CAAA;YAEnD,MAAM,gBAAgB,GAAG,CAAC,UAAU,CAAC,CAAA;YACrC,MAAM,IAAI,GAAqB,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,MAAM,CACpD,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,iCACV,GAAG,KACN,CAAC,gBAAgB,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,IAAI;oBAC7F,CAAC,CAAC,MAAM;oBACR,CAAC,CAAC,KAAK,IACT,EACF,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAChE,CAAA;YAED,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;YAEhB,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,MAAM,EAAE,CAAC,eAAe,EAAE,CAAA;YAEjD,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAA;SACxB;QAAC,OAAO,KAAK,EAAE;YACd,MAAM,KAAK,CAAA;SACZ;IACH,CAAC;IAGK,AAAN,KAAK,CAAC,WAAW,CAAc,IAAY,EAAS,OAAwB;QAC1E,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;QAEhC,MAAM,UAAU,GAAG,IAAA,qBAAa,EAAC,0BAAW,CAAC,CAAA;QAE7C,OAAO,MAAM,UAAU,CAAC,OAAO,CAAC;YAC9B,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE;YAC1C,SAAS,EAAE,CAAC,QAAQ,EAAE,SAAS,EAAE,SAAS,CAAC;SAC5C,CAAC,CAAA;IACJ,CAAC;IAGK,AAAN,KAAK,CAAC,iBAAiB,CAAc,IAAY,EAAS,OAAwB;QAChF,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;QAEtC,MAAM,WAAW,GAAgB,MAAM,IAAA,qBAAa,EAAC,0BAAW,CAAC,CAAC,OAAO,CAAC;YACxE,KAAK,EAAE;gBACL,MAAM,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE;gBACzB,IAAI;aACL;YACD,SAAS,EAAE;gBACT,QAAQ;gBACR,UAAU;gBACV,kBAAkB;gBAClB,4BAA4B;gBAC5B,0BAA0B;gBAC1B,oCAAoC;gBACpC,qCAAqC;gBACrC,WAAW;gBACX,eAAe;gBACf,yBAAyB;gBACzB,qBAAqB;gBACrB,SAAS;gBACT,SAAS;aACV;SACF,CAAC,CAAA;QAEF,MAAM,gBAAgB,GAAiB,MAAM,IAAA,qBAAa,EAAC,4BAAU,CAAC,CAAC,IAAI,CAAC;YAC1E,KAAK,EAAE;gBACL,MAAM,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE;gBACzB,KAAK,EAAE,WAAW,CAAC,EAAE;gBACrB,QAAQ,EAAE,2BAAe,CAAC,YAAY;aACvC;SACF,CAAC,CAAA;QAEF,uCACM,WAAmB,KACvB,UAAU,EAAE,gBAAgB,EAC5B,cAAc,EAAE,WAAW,CAAC,gBAAgB;iBACzC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,KAAK,gCAAoB,CAAC,YAAY,CAAC;iBACvE,GAAG,CAAC,CAAC,QAAwB,EAAE,EAAE;gBAChC,MAAM,SAAS,GAAc,QAAQ,CAAC,SAAS,CAAA;gBAC/C,OAAO;oBACL,EAAE,EAAE,SAAS,CAAC,EAAE;oBAChB,IAAI,EAAE,SAAS,CAAC,IAAI;oBACpB,OAAO,EAAE,SAAS,CAAC,OAAO;oBAC1B,QAAQ,EAAE,SAAS,CAAC,QAAQ;oBAC5B,OAAO,EAAE,SAAS,CAAC,OAAO;oBAC1B,WAAW,EAAE,GAAG,SAAS,CAAC,OAAO,CAAC,IAAI,KAAK,SAAS,CAAC,OAAO,CAAC,WAAW,GAAG;oBAC3E,WAAW,EAAE,SAAS,CAAC,WAAW;oBAClC,WAAW,EAAE,SAAS,CAAC,WAAW;oBAClC,SAAS,EAAE,QAAQ,CAAC,SAAS;oBAC7B,cAAc,EAAE,QAAQ,CAAC,cAAc;oBACvC,MAAM,EAAE,QAAQ,CAAC,MAAM;oBACvB,MAAM,EAAE,QAAQ,CAAC,MAAM;iBACxB,CAAA;YACH,CAAC,CAAC,IACL;IACH,CAAC;IAIK,AAAN,KAAK,CAAC,mBAAmB,CAChB,OAAwB,EACuB,OAAkB,EACb,UAAuB,EAC1B,QAAoB;QAE5E,IAAI;YACF,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;YAEtC,MAAM,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAA;YAC3D,MAAM,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,YAAY,CAAC,CAAA;YAEzE,IAAI,CAAC,YAAY,EAAE;gBACjB,OAAO,CAAC,IAAI,CAAC;oBACX,IAAI,EAAE,QAAQ;oBACd,QAAQ,EAAE,OAAO;oBACjB,KAAK,EAAE,CAAC,wBAAY,CAAC,OAAO,EAAE,wBAAY,CAAC,OAAO,CAAC;oBACnD,QAAQ,EAAE,KAAK;iBAChB,CAAC,CAAA;aACH;YAED,IAAI,CAAC,cAAc,EAAE;gBACnB,OAAO,CAAC,IAAI,CAAC;oBACX,IAAI,EAAE,YAAY;oBAClB,QAAQ,EAAE,IAAI;oBACd,KAAK,EAAE,MAAM,IAAA,kCAAuB,EAAC,MAAM,EAAE,IAAI,CAAC;oBAClD,QAAQ,EAAE,KAAK;iBAChB,CAAC,CAAA;aACH;YAED,MAAM,EAAE,GAAoC,IAAA,qBAAa,EAAC,0BAAW,CAAC,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAA;YAC/F,IAAA,kBAAU,EAAC,EAAE,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,EAAE,OAAO,CAAC,CAAA;YAC1D,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE;gBACtB,OAAO,QAAQ;qBACZ,MAAM,CAAC,6BAA6B,EAAE,MAAM,CAAC;qBAC7C,IAAI,CAAC,qBAAqB,EAAE,KAAK,CAAC;qBAClC,SAAS,CAAC,gBAAgB,EAAE,IAAI,CAAC;qBACjC,KAAK,CAAC,8BAA8B,CAAC;qBACrC,QAAQ,CAAC,sCAAsC,CAAC;qBAChD,QAAQ,CAAC,sCAAsC,CAAC,CAAA;YACrD,CAAC,EAAE,MAAM,CAAC,CAAA;YACV,EAAE,CAAC,iBAAiB,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAA;YAC3C,EAAE,CAAC,iBAAiB,CAAC,aAAa,EAAE,UAAU,CAAC,CAAA;YAC/C,EAAE,CAAC,iBAAiB,CAAC,YAAY,EAAE,SAAS,CAAC,CAAA;YAC7C,EAAE,CAAC,iBAAiB,CAAC,YAAY,EAAE,SAAS,CAAC,CAAA;YAC7C,EAAE,CAAC,iBAAiB,CAAC,eAAe,EAAE,YAAY,CAAC,CAAA;YAEnD,MAAM,gBAAgB,GAAG,CAAC,UAAU,CAAC,CAAA;YACrC,MAAM,IAAI,GAAqB,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,MAAM,CACpD,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,iCACV,GAAG,KACN,CAAC,gBAAgB,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,IAAI;oBAC7F,CAAC,CAAC,MAAM;oBACR,CAAC,CAAC,KAAK,IACT,EACF,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAChE,CAAA;YAED,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;YAEhB,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,MAAM,EAAE,CAAC,eAAe,EAAE,CAAA;YAEjD,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAA;SACxB;QAAC,OAAO,KAAK,EAAE;YACd,MAAM,KAAK,CAAA;SACZ;IACH,CAAC;IAGK,AAAN,KAAK,CAAC,MAAM,CAAS,WAAwB;QAC3C,OAAO,MAAM,IAAA,qBAAa,EAAC,cAAM,CAAC,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,WAAW,CAAC,QAAQ,EAAE,CAAC,CAAA;IAC5E,CAAC;IAGK,AAAN,KAAK,CAAC,OAAO,CAAS,WAAwB;QAC5C,OAAO,MAAM,IAAA,qBAAa,EAAC,gBAAI,CAAC,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,WAAW,CAAC,SAAS,EAAE,CAAC,CAAA;IAC3E,CAAC;IAGK,AAAN,KAAK,CAAC,OAAO,CAAS,WAAwB;QAC5C,OAAO,MAAM,IAAA,qBAAa,EAAC,gBAAI,CAAC,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,WAAW,CAAC,SAAS,EAAE,CAAC,CAAA;IAC3E,CAAC;CACF,CAAA;AAjNO;IADL,IAAA,oBAAK,EAAC,OAAO,CAAC,EAAE,CAAC,mBAAe,CAAC;IAE/B,mBAAA,IAAA,kBAAG,GAAE,CAAA;IACL,mBAAA,IAAA,kBAAG,EAAC,SAAS,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,cAAM,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAA;IACpD,mBAAA,IAAA,kBAAG,EAAC,YAAY,EAAE,IAAI,CAAC,EAAE,CAAC,kBAAU,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAA;IACzD,mBAAA,IAAA,kBAAG,EAAC,UAAU,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,eAAO,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAA;;4DADiB,kBAAU;;oDAiDnF;AAGK;IADL,IAAA,oBAAK,EAAC,OAAO,CAAC,EAAE,CAAC,0BAAW,CAAC;IACX,mBAAA,IAAA,kBAAG,EAAC,MAAM,CAAC,CAAA;IAAgB,mBAAA,IAAA,kBAAG,GAAE,CAAA;;;;mDASlD;AAGK;IADL,IAAA,oBAAK,EAAC,OAAO,CAAC,EAAE,CAAC,qBAAiB,CAAC;IACX,mBAAA,IAAA,kBAAG,EAAC,MAAM,CAAC,CAAA;IAAgB,mBAAA,IAAA,kBAAG,GAAE,CAAA;;;;yDAwDxD;AAIK;IAFL,IAAA,wBAAS,EAAC,uFAAuF,CAAC;IAClG,IAAA,oBAAK,EAAC,OAAO,CAAC,EAAE,CAAC,mBAAe,CAAC;IAE/B,mBAAA,IAAA,kBAAG,GAAE,CAAA;IACL,mBAAA,IAAA,kBAAG,EAAC,SAAS,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,cAAM,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAA;IACpD,mBAAA,IAAA,kBAAG,EAAC,YAAY,EAAE,IAAI,CAAC,EAAE,CAAC,kBAAU,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAA;IACzD,mBAAA,IAAA,kBAAG,EAAC,UAAU,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,eAAO,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAA;;4DADiB,kBAAU;;2DA+DnF;AAGK;IADL,IAAA,4BAAa,EAAC,IAAI,CAAC,EAAE,CAAC,cAAM,CAAC;IAChB,mBAAA,IAAA,mBAAI,GAAE,CAAA;;6CAAc,0BAAW;;8CAE5C;AAGK;IADL,IAAA,4BAAa,EAAC,IAAI,CAAC,EAAE,CAAC,gBAAI,CAAC;IACb,mBAAA,IAAA,mBAAI,GAAE,CAAA;;6CAAc,0BAAW;;+CAE7C;AAGK;IADL,IAAA,4BAAa,EAAC,IAAI,CAAC,EAAE,CAAC,gBAAI,CAAC;IACb,mBAAA,IAAA,mBAAI,GAAE,CAAA;;6CAAc,0BAAW;;+CAE7C;AAlNU,gBAAgB;IAD5B,IAAA,uBAAQ,EAAC,0BAAW,CAAC;GACT,gBAAgB,CAmN5B;AAnNY,4CAAgB","sourcesContent":["import { Arg, Ctx, Directive, FieldResolver, Query, Resolver, Root } from 'type-graphql'\nimport { OrderByCondition, SelectQueryBuilder } from 'typeorm'\n\nimport { Attachment } from '@things-factory/attachment-base'\nimport { User } from '@things-factory/auth-base'\nimport { getPermittedBizplaceIds } from '@things-factory/biz-base'\nimport { buildQuery, Domain, Filter, getRepository, Pagination, Sorting } from '@things-factory/shell'\nimport { Inventory } from '@things-factory/warehouse-base'\n\nimport { OrderInventory, ReturnOrderDetail, ReturnOrderList } from '../'\nimport { ATTACHMENT_TYPE, ORDER_INVENTORY_TYPE, ORDER_STATUS } from '../../constants'\nimport { ReturnOrder } from './return-order'\n\n@Resolver(ReturnOrder)\nexport class ReturnOrderQuery {\n @Query(returns => ReturnOrderList)\n async returnOrders(\n @Ctx() context: ResolverContext,\n @Arg('filters', type => [Filter], { nullable: true }) filters?: Filter[],\n @Arg('pagination', type => Pagination, { nullable: true }) pagination?: Pagination,\n @Arg('sortings', type => [Sorting], { nullable: true }) sortings?: Sorting[]\n ): Promise<ReturnOrderList> {\n try {\n const { domain, user } = context.state\n\n filters.push({\n name: 'bizplaceId',\n operator: 'in',\n value: await getPermittedBizplaceIds(domain, user),\n relation: false\n })\n\n const qb: SelectQueryBuilder<ReturnOrder> = getRepository(ReturnOrder).createQueryBuilder('ro')\n buildQuery(qb, { filters, pagination, sortings }, context)\n qb.addSelect(subQuery => {\n return subQuery\n .select('COALESCE(\"ccd\".rank, 99999)', 'rank')\n .from('common_code_details', 'ccd')\n .innerJoin('ccd.commonCode', 'cc')\n .where('\"ccd\".\"name\" = \"ro\".\"status\"')\n .andWhere('\"ccd\".\"domain_id\" = \"ro\".\"domain_id\"')\n .andWhere('\"cc\".\"name\" = \\'RETURN_LIST_STATUS\\'')\n }, 'rank')\n qb.leftJoinAndSelect('ro.domain', 'domain')\n qb.leftJoinAndSelect('ro.bizplace', 'bizplace')\n qb.leftJoinAndSelect('ro.creator', 'creator')\n qb.leftJoinAndSelect('ro.updater', 'updater')\n qb.leftJoinAndSelect('ro.acceptedBy', 'acceptedBy')\n\n const arrChildSortData = ['bizplace']\n const sort: OrderByCondition = (sortings || []).reduce(\n (acc, sort) => ({\n ...acc,\n [arrChildSortData.indexOf(sort.name) >= 0 ? sort.name + '.name' : 'ro.' + sort.name]: sort.desc\n ? 'DESC'\n : 'ASC'\n }),\n !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 @Query(returns => ReturnOrder)\n async returnOrder(@Arg('name') name: string, @Ctx() context: ResolverContext): Promise<ReturnOrder> {\n const { domain } = context.state\n\n const repository = getRepository(ReturnOrder)\n\n return await repository.findOne({\n where: { domain: { id: domain.id }, name },\n relations: ['domain', 'creator', 'updater']\n })\n }\n\n @Query(returns => ReturnOrderDetail)\n async returnOrderDetail(@Arg('name') name: string, @Ctx() context: ResolverContext): Promise<ReturnOrderDetail> {\n const { domain, user } = context.state\n\n const returnOrder: ReturnOrder = await getRepository(ReturnOrder).findOne({\n where: {\n domain: { id: domain.id },\n name\n },\n relations: [\n 'domain',\n 'bizplace',\n 'orderInventories',\n 'orderInventories.inventory',\n 'orderInventories.product',\n 'orderInventories.inventory.product',\n 'orderInventories.inventory.location',\n 'orderVass',\n 'orderVass.vas',\n 'orderVass.targetProduct',\n 'orderVass.inventory',\n 'creator',\n 'updater'\n ]\n })\n\n const foundAttachments: Attachment[] = await getRepository(Attachment).find({\n where: {\n domain: { id: domain.id },\n refBy: returnOrder.id,\n category: ATTACHMENT_TYPE.RETURN_ORDER\n }\n })\n\n return {\n ...(returnOrder as any),\n attachment: foundAttachments,\n inventoryInfos: returnOrder.orderInventories\n .filter(orderInv => orderInv.type === ORDER_INVENTORY_TYPE.RETURN_ORDER)\n .map((orderInv: OrderInventory) => {\n const inventory: Inventory = orderInv.inventory\n return {\n id: inventory.id,\n name: inventory.name,\n batchId: inventory.batchId,\n palletId: inventory.palletId,\n product: inventory.product,\n productName: `${inventory.product.name} (${inventory.product.description})`,\n packingType: inventory.packingType,\n packingSize: inventory.packingSize,\n returnQty: orderInv.returnQty,\n returnUomValue: orderInv.returnUomValue,\n status: orderInv.status,\n remark: orderInv.remark\n }\n })\n }\n }\n\n @Directive('@privilege(category: \"order_warehouse\", privilege: \"query\", domainOwnerGranted: true)')\n @Query(returns => ReturnOrderList)\n async returnOrderRequests(\n @Ctx() context: ResolverContext,\n @Arg('filters', type => [Filter], { nullable: true }) filters?: Filter[],\n @Arg('pagination', type => Pagination, { nullable: true }) pagination?: Pagination,\n @Arg('sortings', type => [Sorting], { nullable: true }) sortings?: Sorting[]\n ): Promise<ReturnOrderList> {\n try {\n const { domain, user } = context.state\n\n const statusFilter = filters.some(e => e.name === 'status')\n const bizplaceFilter = filters.find(param => param.name === 'bizplaceId')\n\n if (!statusFilter) {\n 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 filters.push({\n name: 'bizplaceId',\n operator: 'in',\n value: await getPermittedBizplaceIds(domain, user),\n relation: false\n })\n }\n\n const qb: SelectQueryBuilder<ReturnOrder> = getRepository(ReturnOrder).createQueryBuilder('ro')\n buildQuery(qb, { filters, pagination, sortings }, context)\n qb.addSelect(subQuery => {\n return subQuery\n .select('COALESCE(\"ccd\".rank, 99999)', 'rank')\n .from('common_code_details', 'ccd')\n .innerJoin('ccd.commonCode', 'cc')\n .where('\"ccd\".\"name\" = \"ro\".\"status\"')\n .andWhere('\"ccd\".\"domain_id\" = \"ro\".\"domain_id\"')\n .andWhere('\"cc\".\"name\" = \\'RETURN_LIST_STATUS\\'')\n }, 'rank')\n qb.leftJoinAndSelect('ro.domain', 'domain')\n qb.leftJoinAndSelect('ro.bizplace', 'bizplace')\n qb.leftJoinAndSelect('ro.creator', 'creator')\n qb.leftJoinAndSelect('ro.updater', 'updater')\n qb.leftJoinAndSelect('ro.acceptedBy', 'acceptedBy')\n\n const arrChildSortData = ['bizplace']\n const sort: OrderByCondition = (sortings || []).reduce(\n (acc, sort) => ({\n ...acc,\n [arrChildSortData.indexOf(sort.name) >= 0 ? sort.name + '.name' : 'ro.' + sort.name]: sort.desc\n ? 'DESC'\n : 'ASC'\n }),\n !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 @FieldResolver(type => Domain)\n async domain(@Root() returnOrder: ReturnOrder): Promise<Domain> {\n return await getRepository(Domain).findOneBy({ id: returnOrder.domainId })\n }\n\n @FieldResolver(type => User)\n async creator(@Root() returnOrder: ReturnOrder): Promise<User> {\n return await getRepository(User).findOneBy({ id: returnOrder.creatorId })\n }\n\n @FieldResolver(type => User)\n async updater(@Root() returnOrder: ReturnOrder): Promise<User> {\n return await getRepository(User).findOneBy({ id: returnOrder.updaterId })\n }\n}\n"]}
@@ -39,7 +39,7 @@ let VasQuery = class VasQuery {
39
39
  }
40
40
  };
41
41
  tslib_1.__decorate([
42
- (0, type_graphql_1.Directive)('@privilege(category: "vas", privilege: "query")'),
42
+ (0, type_graphql_1.Directive)('@privilege(category: "vas", privilege: "query", domainOwnerGranted: true)'),
43
43
  (0, type_graphql_1.Query)(returns => __1.VasList),
44
44
  tslib_1.__param(0, (0, type_graphql_1.Ctx)()),
45
45
  tslib_1.__param(1, (0, type_graphql_1.Arg)('filters', type => [shell_1.Filter], { nullable: true })),
@@ -1 +1 @@
1
- {"version":3,"file":"vas-query.js","sourceRoot":"","sources":["../../../server/service/vas/vas-query.ts"],"names":[],"mappings":"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","sourcesContent":["import { Arg, Ctx, Directive, FieldResolver, Query, Resolver, Root } from 'type-graphql'\nimport { SelectQueryBuilder } from 'typeorm'\n\nimport { User } from '@things-factory/auth-base'\nimport { buildQuery, Domain, Filter, getRepository, Pagination, Sorting } from '@things-factory/shell'\n\nimport { VasList } from '../'\nimport { Vas } from './vas'\n\n@Resolver(Vas)\nexport class VasQuery {\n @Directive('@privilege(category: \"vas\", privilege: \"query\")')\n @Query(returns => VasList)\n async vass(\n @Ctx() context: ResolverContext,\n @Arg('filters', type => [Filter], { nullable: true }) filters?: Filter[],\n @Arg('pagination', type => Pagination, { nullable: true }) pagination?: Pagination,\n @Arg('sortings', type => [Sorting], { nullable: true }) sortings?: Sorting[]\n ): Promise<VasList> {\n const qb: SelectQueryBuilder<Vas> = getRepository(Vas).createQueryBuilder()\n buildQuery(qb, { filters, pagination, sortings }, context)\n\n const [items, total] = await qb\n .leftJoinAndSelect('Vas.domain', 'Domain')\n .leftJoinAndSelect('Vas.creator', 'Creator')\n .leftJoinAndSelect('Vas.updater', 'Updater')\n .getManyAndCount()\n\n return { items, total }\n }\n\n @Directive('@privilege(category: \"vas\", privilege: \"query\") ')\n @Query(returns => Vas)\n async vas(@Arg('name') name: string, @Ctx() context: ResolverContext): Promise<Vas> {\n const { domain } = context.state\n\n return await getRepository(Vas).findOne({\n where: {\n domain: { id: domain.id },\n name\n },\n relations: ['domain', 'creator', 'updater']\n })\n }\n\n @FieldResolver(type => Domain)\n async domain(@Root() vas: Vas): Promise<Domain> {\n return await getRepository(Domain).findOneBy({ id: vas.domainId })\n }\n\n @FieldResolver(type => User)\n async creator(@Root() vas: Vas): Promise<User> {\n return await getRepository(User).findOneBy({ id: vas.creatorId })\n }\n\n @FieldResolver(type => User)\n async updater(@Root() vas: Vas): Promise<User> {\n return await getRepository(User).findOneBy({ id: vas.updaterId })\n }\n}\n"]}
1
+ {"version":3,"file":"vas-query.js","sourceRoot":"","sources":["../../../server/service/vas/vas-query.ts"],"names":[],"mappings":"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","sourcesContent":["import { Arg, Ctx, Directive, FieldResolver, Query, Resolver, Root } from 'type-graphql'\nimport { SelectQueryBuilder } from 'typeorm'\n\nimport { User } from '@things-factory/auth-base'\nimport { buildQuery, Domain, Filter, getRepository, Pagination, Sorting } from '@things-factory/shell'\n\nimport { VasList } from '../'\nimport { Vas } from './vas'\n\n@Resolver(Vas)\nexport class VasQuery {\n @Directive('@privilege(category: \"vas\", privilege: \"query\", domainOwnerGranted: true)')\n @Query(returns => VasList)\n async vass(\n @Ctx() context: ResolverContext,\n @Arg('filters', type => [Filter], { nullable: true }) filters?: Filter[],\n @Arg('pagination', type => Pagination, { nullable: true }) pagination?: Pagination,\n @Arg('sortings', type => [Sorting], { nullable: true }) sortings?: Sorting[]\n ): Promise<VasList> {\n const qb: SelectQueryBuilder<Vas> = getRepository(Vas).createQueryBuilder()\n buildQuery(qb, { filters, pagination, sortings }, context)\n\n const [items, total] = await qb\n .leftJoinAndSelect('Vas.domain', 'Domain')\n .leftJoinAndSelect('Vas.creator', 'Creator')\n .leftJoinAndSelect('Vas.updater', 'Updater')\n .getManyAndCount()\n\n return { items, total }\n }\n\n @Directive('@privilege(category: \"vas\", privilege: \"query\") ')\n @Query(returns => Vas)\n async vas(@Arg('name') name: string, @Ctx() context: ResolverContext): Promise<Vas> {\n const { domain } = context.state\n\n return await getRepository(Vas).findOne({\n where: {\n domain: { id: domain.id },\n name\n },\n relations: ['domain', 'creator', 'updater']\n })\n }\n\n @FieldResolver(type => Domain)\n async domain(@Root() vas: Vas): Promise<Domain> {\n return await getRepository(Domain).findOneBy({ id: vas.domainId })\n }\n\n @FieldResolver(type => User)\n async creator(@Root() vas: Vas): Promise<User> {\n return await getRepository(User).findOneBy({ id: vas.creatorId })\n }\n\n @FieldResolver(type => User)\n async updater(@Root() vas: Vas): Promise<User> {\n return await getRepository(User).findOneBy({ id: vas.updaterId })\n }\n}\n"]}