@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.
- package/dist-server/controllers/ecommerce/ecommerce-controller.js +2 -2
- package/dist-server/controllers/ecommerce/ecommerce-controller.js.map +1 -1
- package/dist-server/controllers/ecommerce/sellercraft-controller.js +3 -3
- package/dist-server/controllers/ecommerce/sellercraft-controller.js.map +1 -1
- package/dist-server/service/arrival-notice/arrival-notice-mutation.js +26 -13
- package/dist-server/service/arrival-notice/arrival-notice-mutation.js.map +1 -1
- package/dist-server/service/arrival-notice/arrival-notice-query.js +2 -2
- package/dist-server/service/arrival-notice/arrival-notice-query.js.map +1 -1
- package/dist-server/service/arrival-notice/arrival-notice-types.js +4 -0
- package/dist-server/service/arrival-notice/arrival-notice-types.js.map +1 -1
- package/dist-server/service/arrival-notice/arrival-notice.js +5 -0
- package/dist-server/service/arrival-notice/arrival-notice.js.map +1 -1
- package/dist-server/service/claim/claim-mutation.js +9 -9
- package/dist-server/service/claim/claim-mutation.js.map +1 -1
- package/dist-server/service/claim/claim-query.js +4 -4
- package/dist-server/service/claim/claim-query.js.map +1 -1
- package/dist-server/service/delivery-order/delivery-order-mutation.js +1 -1
- package/dist-server/service/delivery-order/delivery-order-mutation.js.map +1 -1
- package/dist-server/service/delivery-order/delivery-order-query.js.map +1 -1
- package/dist-server/service/draft-release-good/draft-release-good-mutation.js +7 -5
- package/dist-server/service/draft-release-good/draft-release-good-mutation.js.map +1 -1
- package/dist-server/service/draft-release-good/draft-release-good-query.js +4 -4
- package/dist-server/service/draft-release-good/draft-release-good-query.js.map +1 -1
- package/dist-server/service/draft-release-good/draft-release-good.js +5 -0
- package/dist-server/service/draft-release-good/draft-release-good.js.map +1 -1
- package/dist-server/service/goods-receival-note/goods-receival-note-query.js +3 -3
- package/dist-server/service/goods-receival-note/goods-receival-note-query.js.map +1 -1
- package/dist-server/service/job-sheet/job-sheet-mutation.js +1 -1
- package/dist-server/service/job-sheet/job-sheet-mutation.js.map +1 -1
- package/dist-server/service/job-sheet/job-sheet-query.js +1 -1
- package/dist-server/service/job-sheet/job-sheet-query.js.map +1 -1
- package/dist-server/service/order-inventory/order-inventory-query.js +2 -2
- package/dist-server/service/order-inventory/order-inventory-query.js.map +1 -1
- package/dist-server/service/order-tote/order-tote-query.js +2 -2
- package/dist-server/service/order-tote/order-tote-query.js.map +1 -1
- package/dist-server/service/others/other-query.js +19 -11
- package/dist-server/service/others/other-query.js.map +1 -1
- package/dist-server/service/purchase-order/purchase-order-mutation.js +2 -2
- package/dist-server/service/purchase-order/purchase-order-mutation.js.map +1 -1
- package/dist-server/service/purchase-order/purchase-order-query.js +1 -1
- package/dist-server/service/purchase-order/purchase-order-query.js.map +1 -1
- package/dist-server/service/release-good/release-good-mutation.js +90 -55
- package/dist-server/service/release-good/release-good-mutation.js.map +1 -1
- package/dist-server/service/release-good/release-good-query.js +3 -3
- package/dist-server/service/release-good/release-good-query.js.map +1 -1
- package/dist-server/service/release-good/release-good.js +5 -0
- package/dist-server/service/release-good/release-good.js.map +1 -1
- package/dist-server/service/retail-replenishment-order/retail-replenishment-order-mutation.js +3 -3
- package/dist-server/service/retail-replenishment-order/retail-replenishment-order-mutation.js.map +1 -1
- package/dist-server/service/reverse-kitting-order/reverse-kitting-order-mutation.js +3 -3
- package/dist-server/service/reverse-kitting-order/reverse-kitting-order-mutation.js.map +1 -1
- package/dist-server/service/reverse-kitting-order/reverse-kitting-order-query.js +3 -3
- package/dist-server/service/reverse-kitting-order/reverse-kitting-order-query.js.map +1 -1
- package/dist-server/service/reverse-kitting-order-inventory/reverse-kitting-order-inventory-mutation.js +1 -1
- package/dist-server/service/reverse-kitting-order-inventory/reverse-kitting-order-inventory-mutation.js.map +1 -1
- package/dist-server/service/shipping-order/shipping-order-mutation.js +1 -1
- package/dist-server/service/shipping-order/shipping-order-mutation.js.map +1 -1
- package/dist-server/service/shipping-order/shipping-order-query.js +1 -1
- package/dist-server/service/shipping-order/shipping-order-query.js.map +1 -1
- package/dist-server/service/transfer-order/transfer-order-mutation.js +3 -3
- package/dist-server/service/transfer-order/transfer-order-mutation.js.map +1 -1
- package/dist-server/service/vas-order/vas-order-query.js +1 -1
- package/dist-server/service/vas-order/vas-order-query.js.map +1 -1
- package/dist-server/tsconfig.tsbuildinfo +1 -1
- package/package.json +13 -13
- package/server/controllers/ecommerce/ecommerce-controller.ts +2 -2
- package/server/controllers/ecommerce/sellercraft-controller.ts +3 -3
- package/server/service/arrival-notice/arrival-notice-mutation.ts +21 -8
- package/server/service/arrival-notice/arrival-notice-query.ts +2 -2
- package/server/service/arrival-notice/arrival-notice-types.ts +3 -0
- package/server/service/arrival-notice/arrival-notice.ts +4 -0
- package/server/service/claim/claim-mutation.ts +9 -9
- package/server/service/claim/claim-query.ts +4 -4
- package/server/service/delivery-order/delivery-order-mutation.ts +17 -17
- package/server/service/delivery-order/delivery-order-query.ts +1 -1
- package/server/service/draft-release-good/draft-release-good-mutation.ts +7 -5
- package/server/service/draft-release-good/draft-release-good-query.ts +4 -4
- package/server/service/draft-release-good/draft-release-good.ts +4 -0
- package/server/service/goods-receival-note/goods-receival-note-query.ts +3 -3
- package/server/service/job-sheet/job-sheet-mutation.ts +1 -1
- package/server/service/job-sheet/job-sheet-query.ts +1 -1
- package/server/service/order-inventory/order-inventory-query.ts +2 -2
- package/server/service/order-tote/order-tote-query.ts +2 -2
- package/server/service/others/other-query.ts +17 -9
- package/server/service/purchase-order/purchase-order-mutation.ts +2 -2
- package/server/service/purchase-order/purchase-order-query.ts +1 -1
- package/server/service/release-good/release-good-mutation.ts +110 -59
- package/server/service/release-good/release-good-query.ts +3 -3
- package/server/service/release-good/release-good.ts +4 -0
- package/server/service/retail-replenishment-order/retail-replenishment-order-mutation.ts +3 -3
- package/server/service/reverse-kitting-order/reverse-kitting-order-mutation.ts +3 -3
- package/server/service/reverse-kitting-order/reverse-kitting-order-query.ts +3 -3
- package/server/service/reverse-kitting-order-inventory/reverse-kitting-order-inventory-mutation.ts +1 -1
- package/server/service/shipping-order/shipping-order-mutation.ts +1 -1
- package/server/service/shipping-order/shipping-order-query.ts +1 -1
- package/server/service/transfer-order/transfer-order-mutation.ts +3 -3
- package/server/service/vas-order/vas-order-query.ts +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"delivery-order-mutation.js","sourceRoot":"","sources":["../../../server/service/delivery-order/delivery-order-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, In, Repository } from 'typeorm'\n\nimport { Attachment, createAttachment, deleteAttachment } from '@things-factory/attachment-base'\nimport { User } from '@things-factory/auth-base'\nimport { Bizplace, ContactPoint, getPermittedBizplaceIds } from '@things-factory/biz-base'\nimport { generateId } from '@things-factory/id-rule-base'\nimport { Product } from '@things-factory/product-base'\nimport { Setting } from '@things-factory/setting-base'\nimport { Domain, getRepository, ObjectRef } from '@things-factory/shell'\nimport { TransportDriver, TransportVehicle, TRUCK_STATUS } from '@things-factory/transport-base'\nimport { Inventory } from '@things-factory/warehouse-base'\n\nimport {\n ORDER_INVENTORY_STATUS,\n ORDER_NUMBER_RULE_TYPE,\n ORDER_NUMBER_SETTING_KEY,\n ORDER_STATUS,\n ORDER_TYPES\n} from '../../constants'\nimport { OrderNoGenerator } from '../../utils/order-no-generator'\nimport { OrderInventory } from '../order-inventory/order-inventory'\nimport { NewOrderInventory, OrderInventoryPatch } from '../order-inventory/order-inventory-types'\nimport { ReleaseGood } from '../release-good/release-good'\nimport { ExportInformationPatch, ShippingOrderInfoPatch } from '../release-good/release-good-types'\nimport { ShippingOrder } from '../shipping-order/shipping-order'\nimport { DeliveryOrder } from './delivery-order'\nimport { DeliveryOrderPatch, NewDeliveryOrder } from './delivery-order-types'\n\n@Resolver(DeliveryOrder)\nexport class DeliveryOrderMutation {\n @Directive('@transaction')\n @Mutation(returns => DeliveryOrder)\n async createDeliveryOrder(\n @Ctx() context: ResolverContext,\n @Arg('orderInfo', type => NewDeliveryOrder, { nullable: true }) orderInfo?: NewDeliveryOrder,\n @Arg('customerBizplace', type => ObjectRef, { nullable: true }) customerBizplace?: ObjectRef,\n @Arg('targetInventories', type => [NewOrderInventory], { nullable: true }) targetInventories?: NewOrderInventory[],\n @Arg('file', type => [GraphQLUpload], { nullable: true }) file?: FileUpload[]\n ): Promise<DeliveryOrder> {\n const { tx, domain, user } = context.state\n\n return await createDeliveryOrder(orderInfo, customerBizplace, targetInventories, file, domain, user, tx)\n }\n\n @Directive('@transaction')\n @Mutation(returns => DeliveryOrder)\n async updateDeliveryOrder(\n @Arg('name') name: string,\n @Arg('patch', type => DeliveryOrderPatch) patch: DeliveryOrderPatch,\n @Ctx() context: ResolverContext\n ): Promise<DeliveryOrder> {\n const { tx, domain, user } = context.state\n\n const deliveryOrder = await tx.getRepository(DeliveryOrder).findOne({\n where: {\n domain: { id: domain.id },\n name,\n bizplace: In(await getPermittedBizplaceIds(domain, user))\n }\n })\n\n return await tx.getRepository(DeliveryOrder).save({\n ...deliveryOrder,\n ...patch,\n updater: user\n })\n }\n\n @Directive('@transaction')\n @Mutation(returns => Boolean)\n async deleteDeliveryOrder(@Arg('name') name: string, @Ctx() context: ResolverContext): Promise<boolean> {\n const { tx, domain } = context.state\n\n const foundDO = await tx.getRepository(DeliveryOrder).findOne({\n where: { domain: { id: domain.id }, name }\n })\n if (foundDO) {\n const previousAttachment: Attachment = await tx.getRepository(Attachment).findOne({\n where: { domain: { id: domain.id }, refBy: foundDO.id }\n })\n if (previousAttachment) await deleteAttachment(null, { id: previousAttachment.id }, context)\n await tx.getRepository(DeliveryOrder).delete({ domain, name })\n }\n return true\n }\n\n @Directive('@transaction')\n @Mutation(returns => DeliveryOrder)\n async generateDeliveryOrder(\n @Ctx() context: ResolverContext,\n @Arg('orderInfo', type => DeliveryOrderPatch, { nullable: true }) orderInfo?: DeliveryOrderPatch,\n @Arg('customerBizplace', type => ObjectRef, { nullable: true }) customerBizplace?: ObjectRef,\n @Arg('releaseGood', type => ObjectRef, { nullable: true }) releaseGood?: ObjectRef,\n @Arg('targetInventories', type => [ObjectRef], { nullable: true }) targetInventories?: ObjectRef[]\n ): Promise<DeliveryOrder> {\n const { tx, domain, user } = context.state\n\n return await generateDeliveryOrder(\n orderInfo,\n targetInventories as any,\n customerBizplace,\n releaseGood as any,\n domain,\n user,\n tx\n )\n }\n\n @Directive('@transaction')\n @Mutation(returns => DeliveryOrder)\n async confirmDeliveryOrder(@Arg('name') name: string, @Ctx() context: ResolverContext): Promise<DeliveryOrder> {\n const { tx, domain, user } = context.state\n\n const foundDeliveryOrder: DeliveryOrder = await tx.getRepository(DeliveryOrder).findOne({\n where: { domain: { id: domain.id }, name },\n relations: ['creator', 'updater']\n })\n\n let deliveryOrder: DeliveryOrder\n if (!foundDeliveryOrder) throw new Error(`Delivery Order doesn't exists.`)\n if (foundDeliveryOrder.status !== ORDER_STATUS.PENDING) throw new Error('Not confirmable status.')\n\n // delivery Order Status change (PENDING => PENDING_RECEIVE)\n deliveryOrder = await tx.getRepository(DeliveryOrder).save({\n ...foundDeliveryOrder,\n status: ORDER_STATUS.PENDING_RECEIVE,\n updater: user\n })\n\n return deliveryOrder\n }\n\n @Directive('@transaction')\n @Mutation(returns => DeliveryOrder)\n async receiveDeliveryOrder(@Arg('name') name: string, @Ctx() context: ResolverContext): Promise<DeliveryOrder> {\n try {\n const { tx, domain, user } = context.state\n\n const deliveryOrder: DeliveryOrder = await tx.getRepository(DeliveryOrder).findOne({\n where: { domain: { id: domain.id }, name }\n })\n\n if (!deliveryOrder) throw new Error(`Delivery order doesn't exists.`)\n if (deliveryOrder.status !== ORDER_STATUS.PENDING_RECEIVE) throw new Error(`Status is not receivable.`)\n\n await tx.getRepository(DeliveryOrder).save({\n ...deliveryOrder,\n status: ORDER_STATUS.READY_TO_DISPATCH,\n updater: user\n })\n\n return deliveryOrder\n } catch (e) {\n throw e\n }\n }\n\n @Directive('@transaction')\n @Mutation(returns => DeliveryOrder)\n async checkDeliveredOrder(\n @Ctx() context: ResolverContext,\n @Arg('name') name: string,\n @Arg('patch', type => DeliveryOrderPatch, { nullable: true }) patch?: DeliveryOrderPatch\n ): Promise<DeliveryOrder> {\n try {\n const { tx, domain, user } = context.state\n const deliveryOrder: DeliveryOrder = await tx.getRepository(DeliveryOrder).findOne({\n where: { domain: { id: domain.id }, name },\n relations: ['bizplace', 'transportDriver', 'transportVehicle']\n })\n\n if (!deliveryOrder) throw new Error(`Delivery order doesn't exists.`)\n if (deliveryOrder.status !== ORDER_STATUS.DELIVERING) throw new Error(`Status is not receivable.`)\n\n let orderInventories: OrderInventory[] = await tx.getRepository(OrderInventory).find({\n where: { domain: { id: domain.id }, deliveryOrder: { id: deliveryOrder.id } },\n relations: ['product']\n })\n\n // update order inventory status for manual DO only\n orderInventories = orderInventories.map((orderInventory: OrderInventory) => {\n if (\n orderInventory.type === ORDER_TYPES.DELIVERY &&\n orderInventory.status === ORDER_INVENTORY_STATUS.DELIVERING\n ) {\n return {\n ...orderInventory,\n status: ORDER_INVENTORY_STATUS.DONE\n }\n } else return orderInventory\n })\n await tx.getRepository(OrderInventory).save(orderInventories)\n\n await tx.getRepository(DeliveryOrder).save({\n ...deliveryOrder,\n ...patch,\n status: ORDER_STATUS.DONE,\n updater: user\n })\n\n if (!deliveryOrder?.ownCollection) {\n const foundTruck: TransportVehicle = deliveryOrder.transportVehicle\n await tx.getRepository(TransportVehicle).save({\n ...foundTruck,\n status: TRUCK_STATUS.IDLE,\n updater: user\n })\n }\n\n return deliveryOrder\n } catch (e) {\n throw e\n }\n }\n\n /**\n * comment start\n * detailed review needed 06 Aug 2022 by @ChrisLim-git\n * @param context \n * @param orderInfo \n * @param orderItems \n * @param shippingOrderInfo \n * @param exportInfo \n * @returns DeliveryOrder\n */\n @Directive('@transaction')\n @Mutation(returns => DeliveryOrder)\n async dispatchDeliveryOrder(\n @Ctx() context: ResolverContext,\n @Arg('orderInfo', type => DeliveryOrderPatch, { nullable: true }) orderInfo?: DeliveryOrderPatch,\n @Arg('orderItems', type => [OrderInventoryPatch], { nullable: true }) orderItems?: OrderInventoryPatch[],\n @Arg('shippingInfo', type => ShippingOrderInfoPatch, { nullable: true })\n shippingOrderInfo?: ShippingOrderInfoPatch,\n @Arg('exportInfo', type => ExportInformationPatch, { nullable: true }) exportInfo?: ExportInformationPatch\n ): Promise<DeliveryOrder> {\n try {\n const { tx, domain, user } = context.state\n const foundDeliveryOrder: DeliveryOrder = await tx.getRepository(DeliveryOrder).findOne({\n where: { domain: { id: domain.id }, name: orderInfo.name },\n relations: ['transportVehicle', 'bizplace']\n })\n\n const foundReleaseGood: ReleaseGood = await tx.getRepository(ReleaseGood).findOne({\n where: {\n name: orderInfo.releaseGoodNo,\n domain\n },\n relations: ['shippingOrder']\n })\n\n if (!foundDeliveryOrder) throw new Error(`Delivery order doesn't exists.`)\n if (foundDeliveryOrder.status === ORDER_STATUS.PENDING_CANCEL)\n throw new Error('Release order is pending for cancel')\n\n foundDeliveryOrder.ownCollection = orderInfo.transportType == 'Own Transport' ? true : false\n\n let deliveryOrderStatus = foundDeliveryOrder.status\n let orderInventories: OrderInventory[]\n orderInventories = await tx.getRepository(OrderInventory).find({\n where: { domain: { id: domain.id }, deliveryOrder: { id: foundDeliveryOrder.id } },\n relations: ['inventory', 'inventory.product', 'inventory.reusablePallet']\n })\n\n orderInventories = orderInventories.map((orderInventory: OrderInventory) => {\n const inventory: Inventory = orderInventory.inventory\n const product: Product = inventory.product\n const foundItem = inventory.reusablePallet\n ? orderItems.filter(\n (item: any) =>\n item.productName === `${product.name} (${product.description})` &&\n item.batchId === orderInventory.batchId &&\n item.pallet === inventory.reusablePallet.name\n )\n : orderItems.filter(\n (item: any) =>\n item.productName === `${product.name} (${product.description})` &&\n item.batchId === orderInventory.batchId\n )\n\n if (foundItem[0].remark !== '') orderInventory.remark = foundItem[0].remark\n return orderInventory\n })\n await tx.getRepository(OrderInventory).save(orderInventories)\n\n // if there is other destination value, create a new contact point\n let foundCP: any = {}\n if (orderInfo?.otherDestination) {\n foundCP = {\n domain,\n name: orderInfo.contactName,\n bizplace: foundDeliveryOrder.bizplace,\n address: orderInfo.otherDestination,\n billingAddress: orderInfo.billingAddress,\n phone: orderInfo.contactPhone,\n email: orderInfo.contactEmail,\n companyName: orderInfo.contactCompany,\n type: orderInfo.contactType,\n creator: user\n }\n foundCP = await tx.getRepository(ContactPoint).save(foundCP)\n } else {\n foundCP = await tx.getRepository(ContactPoint).findOne({\n where: { domain: { id: domain.id }, id: orderInfo.contactPoint, bizplace: foundDeliveryOrder.bizplace }\n })\n }\n\n let transportDriver: TransportDriver = null\n let transportVehicle: TransportVehicle = null\n if (orderInfo?.ownDriver) {\n transportDriver = await tx.getRepository(TransportDriver).findOne({\n where: { domain: { id: domain.id }, name: orderInfo.ownDriver }\n })\n }\n\n if (orderInfo?.ownTruck) {\n transportVehicle = await tx.getRepository(TransportVehicle).findOne({\n where: { domain: { id: domain.id }, name: orderInfo.ownTruck }\n })\n\n await tx.getRepository(TransportVehicle).save({\n ...transportVehicle,\n status: TRUCK_STATUS.IN_USE,\n updater: user\n })\n }\n\n if (foundDeliveryOrder.status === ORDER_STATUS.READY_TO_DISPATCH) {\n // update status to DELIVERING if current status is READY_TO_DISPATCH\n deliveryOrderStatus = ORDER_STATUS.DELIVERING\n }\n\n // save export option information\n if (orderInfo?.exportOption) {\n let savedShippingOrder: any = ''\n /**\n * Could potentially override important data\n */\n if (foundReleaseGood.shippingOrder == null) {\n savedShippingOrder = await tx.getRepository(ShippingOrder).save({\n name: OrderNoGenerator.shippingOrder(),\n shipName: exportInfo.shipName,\n containerNo: exportInfo.containerNo,\n containerArrivalDate: exportInfo.containerArrivalDate,\n containerLeavingDate: exportInfo.containerLeavingDate,\n status: ORDER_STATUS.PENDING,\n domain,\n bizplace: foundDeliveryOrder.bizplace,\n creator: user,\n updater: user\n })\n }\n\n /**\n * @oscarchuaweiwen-fsd\n * I think the expectation here is to update instead of save\n * Should use .update instead of .save as it will override data that was not meant to be updated\n * example:\n * \n * savedShippingOrder = await tx.getRepository(ShippingOrder).update({\n * shipName: exportInfo.shipName,\n * containerNo: exportInfo.containerNo,\n * containerArrivalDate: exportInfo.containerArrivalDate,\n * containerLeavingDate: exportInfo.containerLeavingDate,\n * status: ORDER_STATUS.PENDING,\n * updater: user\n * })\n * \n * Unless the intention was not to update but to insert\n */\n savedShippingOrder = await tx.getRepository(ShippingOrder).save({\n ...foundReleaseGood.shippingOrder,\n name: OrderNoGenerator.shippingOrder(),\n shipName: exportInfo.shipName,\n containerNo: exportInfo.containerNo,\n containerArrivalDate: exportInfo.containerArrivalDate,\n containerLeavingDate: exportInfo.containerLeavingDate,\n status: ORDER_STATUS.PENDING,\n domain,\n bizplace: foundDeliveryOrder.bizplace,\n creator: user,\n updater: user\n })\n /** */\n\n exportInfo = savedShippingOrder\n foundReleaseGood.exportOption = true\n } else {\n foundReleaseGood.exportOption = false\n foundReleaseGood.collectionOrderNo = ''\n }\n\n await tx.getRepository(ReleaseGood).save({\n ...foundReleaseGood,\n shippingOrder: {\n ...exportInfo\n },\n collectionOrderNo: orderInfo.coNo\n })\n\n await tx.getRepository(DeliveryOrder).save({\n ...foundDeliveryOrder,\n transportDriver,\n palletQty: orderInfo?.totalPalletQty,\n transportVehicle,\n contactPointRefId: foundCP?.id || null,\n otherDriver: orderInfo?.otherDriver || null,\n truckNo: orderInfo?.otherTruck || orderInfo?.ownTruck,\n to: foundCP?.address,\n deliveryDate: orderInfo?.deliveryDate,\n deliveryDateTime: new Date(),\n remark: orderInfo?.remark,\n status: deliveryOrderStatus,\n reusablePallet: orderInfo?.reusablePallet,\n attentionTo: shippingOrderInfo?.attentionTo || null,\n attentionCompany: shippingOrderInfo?.attentionCompany || null,\n city: shippingOrderInfo?.city || null,\n state: shippingOrderInfo?.state || null,\n postalCode: shippingOrderInfo?.postalCode || null,\n country: shippingOrderInfo?.country || null,\n phone1: shippingOrderInfo?.phone1 || null,\n deliveryAddress1: shippingOrderInfo?.deliveryAddress1 || null,\n billingAddress: shippingOrderInfo?.billingAddress || null,\n billingCountry: shippingOrderInfo?.billingCountry || null,\n billingPostalCode: shippingOrderInfo?.billingPostalCode || null,\n billingState: shippingOrderInfo?.billingState || null,\n billingCity: shippingOrderInfo?.billingCity || null,\n updater: user\n })\n\n return foundDeliveryOrder\n } catch (e) {\n throw e\n }\n }\n /** */\n\n @Directive('@transaction')\n @Mutation(returns => DeliveryOrder)\n async dispatchManualDeliveryOrder(\n @Ctx() context: ResolverContext,\n @Arg('orderInfo', type => DeliveryOrderPatch, { nullable: true }) orderInfo?: DeliveryOrderPatch,\n @Arg('orderItems', type => [OrderInventoryPatch], { nullable: true }) orderItems?: OrderInventoryPatch[]\n ): Promise<DeliveryOrder> {\n try {\n const { tx, domain, user } = context.state\n const foundDeliveryOrder: DeliveryOrder = await tx.getRepository(DeliveryOrder).findOne({\n where: { domain: { id: domain.id }, name: orderInfo.name },\n relations: ['transportVehicle', 'bizplace']\n })\n\n if (!foundDeliveryOrder) throw new Error(`Delivery order doesn't exists.`)\n if (foundDeliveryOrder.status === ORDER_STATUS.PENDING_CANCEL)\n throw new Error('Release order is pending for cancel')\n\n let deliveryOrderStatus = foundDeliveryOrder.status\n let orderInventories: OrderInventory[]\n orderInventories = await tx.getRepository(OrderInventory).find({\n where: { domain: { id: domain.id }, deliveryOrder: { id: foundDeliveryOrder.id } },\n relations: ['product']\n })\n\n // if there is other destination value, create a new contact point\n let foundCP: any = {}\n if (orderInfo?.otherDestination) {\n foundCP = {\n domain,\n name: orderInfo.contactName,\n bizplace: foundDeliveryOrder.bizplace,\n address: orderInfo.otherDestination,\n billingAddress: orderInfo.billingAddress,\n phone: orderInfo.contactPhone,\n email: orderInfo.contactEmail,\n companyName: orderInfo.contactCompany,\n type: orderInfo.contactType,\n creator: user\n }\n foundCP = await tx.getRepository(ContactPoint).save(foundCP)\n } else {\n foundCP = await tx.getRepository(ContactPoint).findOne({\n where: { domain: { id: domain.id }, id: orderInfo.contactPoint }\n })\n }\n\n let transportDriver: TransportDriver = null\n let transportVehicle: TransportVehicle = null\n if (orderInfo?.ownDriver) {\n transportDriver = await tx.getRepository(TransportDriver).findOne({\n where: { domain: { id: domain.id }, name: orderInfo.ownDriver }\n })\n }\n\n if (orderInfo?.ownTruck) {\n transportVehicle = await tx.getRepository(TransportVehicle).findOne({\n where: { domain: { id: domain.id }, name: orderInfo.ownTruck }\n })\n\n await tx.getRepository(TransportVehicle).save({\n ...transportVehicle,\n status: TRUCK_STATUS.IN_USE,\n updater: user\n })\n }\n\n orderInventories = orderInventories.map((orderInventory: OrderInventory) => {\n const remark = orderItems.find(\n (item: any) => item.productId === orderInventory.product.id && item.batchId === orderInventory.batchId\n ).remark\n\n // add remark if found, else remain existing remark\n if (remark) {\n orderInventory.remark = remark\n }\n\n // update status of DO and order inventory to DELIVERING if current status is READY_TO_DISPATCH\n if (foundDeliveryOrder.status === ORDER_STATUS.READY_TO_DISPATCH) {\n deliveryOrderStatus = ORDER_STATUS.DELIVERING\n orderInventory.status = ORDER_STATUS.DELIVERING\n }\n\n return orderInventory\n })\n await tx.getRepository(OrderInventory).save(orderInventories)\n\n await tx.getRepository(DeliveryOrder).save({\n ...foundDeliveryOrder,\n transportDriver,\n transportVehicle,\n contactPointRefId: foundCP.id || null,\n otherDriver: orderInfo?.otherDriver || null,\n truckNo: orderInfo?.otherTruck || orderInfo?.ownTruck,\n to: foundCP.address,\n deliveryDate: orderInfo.deliveryDate,\n deliveryDateTime: new Date(),\n remark: orderInfo.remark,\n status: deliveryOrderStatus,\n reusablePallet: orderInfo.reusablePallet,\n updater: user\n })\n\n return foundDeliveryOrder\n } catch (e) {\n throw e\n }\n }\n\n @Directive('@transaction')\n @Mutation(returns => DeliveryOrder)\n async sendDeliveryOrder(\n @Ctx() context: ResolverContext,\n @Arg('orderInfo', type => DeliveryOrderPatch, { nullable: true }) orderInfo?: DeliveryOrderPatch,\n @Arg('orderItems', type => [OrderInventoryPatch], { nullable: true }) orderItems?: OrderInventoryPatch[]\n ): Promise<DeliveryOrder> {\n try {\n const { tx, domain, user } = context.state\n const foundDeliveryOrder: DeliveryOrder = await tx.getRepository(DeliveryOrder).findOne({\n where: { domain: { id: domain.id }, name: orderInfo.name },\n relations: ['transportVehicle', 'bizplace']\n })\n\n if (!foundDeliveryOrder) throw new Error(`Delivery order doesn't exists.`)\n if (foundDeliveryOrder.status === ORDER_STATUS.PENDING_CANCEL)\n throw new Error('Release order is pending for cancel')\n\n let deliveryOrderStatus = foundDeliveryOrder.status\n let orderInventories: OrderInventory[]\n orderInventories = await tx.getRepository(OrderInventory).find({\n where: { domain: { id: domain.id }, deliveryOrder: { id: foundDeliveryOrder.id } },\n relations: ['inventory', 'inventory.product', 'inventory.reusablePallet']\n })\n\n orderInventories = orderInventories.map((orderInventory: OrderInventory) => {\n const inventory: Inventory = orderInventory.inventory\n const product: Product = inventory.product\n const foundItem = inventory.reusablePallet\n ? orderItems.filter(\n (item: any) =>\n item.productName === `${product.name} (${product.description})` &&\n item.batchId === orderInventory.batchId &&\n item.pallet === inventory.reusablePallet.name\n )\n : orderItems.filter(\n (item: any) =>\n item.productName === `${product.name} (${product.description})` &&\n item.batchId === orderInventory.batchId\n )\n if (foundItem[0].remark !== '') orderInventory.remark = foundItem[0].remark\n return orderInventory\n })\n await tx.getRepository(OrderInventory).save(orderInventories)\n\n let transportDriver: TransportDriver = null\n let transportVehicle: TransportVehicle = null\n if (orderInfo?.ownDriver) {\n transportDriver = await tx.getRepository(TransportDriver).findOne({\n where: { domain: { id: domain.id }, name: orderInfo.ownDriver }\n })\n }\n\n if (orderInfo?.ownTruck) {\n transportVehicle = await tx.getRepository(TransportVehicle).findOne({\n where: { domain: { id: domain.id }, name: orderInfo.ownTruck }\n })\n\n await tx.getRepository(TransportVehicle).save({\n ...transportVehicle,\n status: TRUCK_STATUS.IN_USE,\n updater: user\n })\n }\n\n if (foundDeliveryOrder.status === ORDER_STATUS.READY_TO_DISPATCH) {\n // update status to DELIVERING if current status is READY_TO_DISPATCH\n deliveryOrderStatus = ORDER_STATUS.DELIVERING\n }\n\n await tx.getRepository(DeliveryOrder).save({\n ...foundDeliveryOrder,\n transportDriver,\n transportVehicle,\n otherDriver: orderInfo?.otherDriver || null,\n truckNo: orderInfo?.otherTruck || orderInfo?.ownTruck,\n to: foundDeliveryOrder.bizplace.address,\n deliveryDate: orderInfo.deliveryDate,\n remark: orderInfo.remark,\n status: deliveryOrderStatus,\n reusablePallet: orderInfo.reusablePallet,\n updater: user\n })\n\n return foundDeliveryOrder\n } catch (e) {\n throw e\n }\n return\n }\n\n @Directive('@transaction')\n @Mutation(returns => DeliveryOrder)\n async rejectDeliveryOrder(\n @Arg('name') name: string,\n @Arg('patch', type => DeliveryOrderPatch) patch: DeliveryOrderPatch,\n @Ctx() context: ResolverContext\n ): Promise<DeliveryOrder> {\n try {\n const { tx, domain, user } = context.state\n\n const deliveryOrder: DeliveryOrder = await tx.getRepository(DeliveryOrder).findOne({\n where: { domain: { id: domain.id }, name }\n })\n\n if (!deliveryOrder) throw new Error(`Delivery order doesn't exists.`)\n if (deliveryOrder.status !== ORDER_STATUS.PENDING_RECEIVE) throw new Error(`Status is not receivable.`)\n\n await tx.getRepository(DeliveryOrder).save({\n ...deliveryOrder,\n status: ORDER_STATUS.READY_TO_DISPATCH,\n updater: user\n })\n\n return deliveryOrder\n } catch (e) {\n throw e\n }\n }\n\n @Directive('@transaction')\n @Mutation(returns => DeliveryOrder)\n async submitGoodsDeliveryNote(\n @Ctx() context: ResolverContext,\n @Arg('name') name: string,\n @Arg('file', type => GraphQLUpload, { nullable: true }) file?: FileUpload\n ): Promise<DeliveryOrder> {\n const { tx, domain, user } = context.state\n\n const foundDO: DeliveryOrder = await tx.getRepository(DeliveryOrder).findOne({\n where: { domain: { id: domain.id }, name },\n relations: ['bizplace']\n })\n\n if (!foundDO) throw new Error(`DO doesn't exists.`)\n\n const foundAttachment: Attachment = await tx.getRepository(Attachment).findOne({\n where: { domain: { id: domain.id }, refBy: foundDO.id }\n })\n\n const attachment = {\n refType: 'DO',\n refBy: foundDO.id,\n file: file,\n category: 'DO' /* TODO use refType */\n }\n\n if (!foundAttachment) {\n await createAttachment(null, { attachment }, context)\n } else {\n const id = foundAttachment.id\n await deleteAttachment(null, { id }, context)\n await createAttachment(null, { attachment }, context)\n }\n\n return await tx.getRepository(DeliveryOrder).save({\n ...foundDO,\n status: ORDER_STATUS.DONE,\n updater: user\n })\n }\n}\n\nexport async function createDeliveryOrder(\n orderInfo: any,\n customerBizplace: Bizplace,\n targetInventories: (OrderInventory | NewOrderInventory)[],\n file: FileUpload[],\n domain: Domain,\n user: User,\n tx?: EntityManager\n): Promise<DeliveryOrder> {\n const bizplaceRepo: Repository<Bizplace> = tx?.getRepository(Bizplace) || getRepository(Bizplace)\n const deliveryOrderRepo: Repository<DeliveryOrder> = tx?.getRepository(DeliveryOrder) || getRepository(DeliveryOrder)\n const productRepo: Repository<Product> = tx?.getRepository(Product) || getRepository(Product)\n const transportVehicleRepo: Repository<TransportVehicle> =\n tx?.getRepository(TransportVehicle) || getRepository(TransportVehicle)\n const transportDriverRepo: Repository<TransportDriver> =\n tx?.getRepository(TransportDriver) || getRepository(TransportDriver)\n const orderInventoryRepo: Repository<OrderInventory> =\n tx?.getRepository(OrderInventory) || getRepository(OrderInventory)\n const settingRepo: Repository<Setting> = tx?.getRepository(Setting) || getRepository(Setting)\n\n const foundBizplace: Bizplace = await bizplaceRepo.findOne({\n where: {\n id: customerBizplace.id,\n name: customerBizplace.name\n }\n })\n\n if (!foundBizplace) throw new Error(`customer not found`)\n\n // #1 find order number setting and set as DO name\n const doNoSetting: Setting = await settingRepo.findOne({\n where: {\n domain: { id: domain.id },\n name: ORDER_NUMBER_SETTING_KEY.DO_NUMBER_RULE\n }\n })\n\n let orderNo: string = ''\n\n if (doNoSetting) {\n orderNo = await generateId({ domain, type: ORDER_NUMBER_RULE_TYPE.DO_NUMBER, seed: {} })\n } else {\n orderNo = OrderNoGenerator.deliveryOrder()\n }\n\n // #2 update truck vehicle status to IN_USE (only if using warehouse truck)\n let transportVehicle: TransportVehicle = null\n let transportDriver: TransportDriver = null\n\n if (!orderInfo.ownCollection) {\n transportVehicle = await transportVehicleRepo.findOne({\n where: {\n domain: { id: domain.id },\n id: orderInfo.transportVehicle\n }\n })\n\n transportDriver = await transportDriverRepo.findOne({\n where: {\n domain: { id: domain.id },\n id: orderInfo.transportDriver\n }\n })\n\n transportVehicle = {\n ...transportVehicle,\n status: TRUCK_STATUS.IN_USE,\n updater: user\n }\n\n await transportVehicleRepo.save(transportVehicle)\n }\n\n // #3 save other destination info in Contact Point if there's any\n let foundCP: ContactPoint = {}\n if (orderInfo?.otherDestination) {\n foundCP = {\n domain,\n name: orderInfo.contactName,\n bizplace: foundBizplace,\n address: orderInfo.otherDestination,\n billingAddress: orderInfo.otherBillingAddress ? orderInfo.otherBillingAddress : orderInfo.otherDestination,\n phone: orderInfo.contactPhone || '-',\n email: orderInfo.contactEmail || '-',\n companyName: orderInfo.contactCompany || '-',\n type: orderInfo.contactType,\n creator: user,\n updater: user\n }\n foundCP = await tx.getRepository(ContactPoint).save(foundCP)\n } else {\n foundCP = await tx.getRepository(ContactPoint).findOne({\n where: { domain: { id: domain.id }, id: orderInfo.contactPointRefId, bizplace: foundBizplace }\n })\n }\n\n // #4 save the delivery order info\n let totalPalletQty = 0\n targetInventories.forEach(oi => (totalPalletQty += oi.palletQty))\n\n let deliveryOrder: any = {\n domain,\n name: orderNo,\n refNo: orderInfo.refNo,\n bizplace: foundBizplace,\n deliveryDate: orderInfo.deliveryDate,\n ownCollection: orderInfo.ownCollection,\n truckNo: orderInfo.truckNo,\n palletQty: totalPalletQty,\n status: ORDER_STATUS.READY_TO_DISPATCH,\n contactPointRefId: foundCP.id,\n remark: orderInfo.remark,\n transportDriver,\n transportVehicle,\n otherDriver: orderInfo.otherDriver,\n creator: user,\n updater: user\n }\n deliveryOrder = <DeliveryOrder>await deliveryOrderRepo.save(deliveryOrder)\n\n // #5 save order inventories\n targetInventories = await Promise.all(\n targetInventories.map(async (orderInventory: OrderInventory) => {\n const product: Product = await productRepo.findOne({\n where: {\n id: orderInventory.product.id\n }\n })\n\n if (!product) throw new Error(`product not found`)\n return {\n ...orderInventory,\n domain,\n product,\n name: OrderNoGenerator.orderInventory(),\n bizplace: foundBizplace,\n status: ORDER_INVENTORY_STATUS.READY_TO_DISPATCH,\n type: ORDER_TYPES.DELIVERY,\n deliveryOrder,\n creator: user,\n updater: user\n }\n })\n )\n await orderInventoryRepo.save(targetInventories)\n\n // if (file?.length) {\n // const attachments: Attachment[] = file.map(attachment => {\n // return {\n // file: attachment,\n // refType: ATTACHMENT_TYPE.GAN,\n // refBy: deliveryOrder.id,\n // category: ATTACHMENT_TYPE.GAN /* TODO use refType */\n // }\n // })\n // await createAttachments(_, { attachments }, context)\n // }\n\n return deliveryOrder\n}\n\nexport async function generateDeliveryOrder(\n orderInfo: DeliveryOrder | DeliveryOrderPatch,\n targetInventories: OrderInventory[],\n customerBizplace: Bizplace,\n releaseGood: ReleaseGood,\n domain: Domain,\n user: User,\n tx?: EntityManager\n): Promise<DeliveryOrder> {\n /**\n * 1. Validation for creating DO - data existing\n */\n const deliveryOrderRepo: Repository<DeliveryOrder> = tx?.getRepository(DeliveryOrder) || getRepository(DeliveryOrder)\n const transportVehicleRepo: Repository<TransportVehicle> =\n tx?.getRepository(TransportVehicle) || getRepository(TransportVehicle)\n const transportDriverRepo: Repository<TransportDriver> =\n tx?.getRepository(TransportDriver) || getRepository(TransportDriver)\n const orderInventoryRepo: Repository<OrderInventory> =\n tx?.getRepository(OrderInventory) || getRepository(OrderInventory)\n const settingRepo: Repository<Setting> = tx?.getRepository(Setting) || getRepository(Setting)\n\n let transportVehicle: TransportVehicle = null\n if (orderInfo?.truckNo) {\n transportVehicle = await transportVehicleRepo.findOne({\n where: { domain: { id: domain.id }, name: orderInfo.truckNo }\n })\n }\n\n let transportDriver: TransportDriver = null\n if (orderInfo?.transportDriver) {\n transportDriver = await transportDriverRepo.findOne({\n where: { domain: { id: domain.id }, id: orderInfo.transportDriver.id }\n })\n }\n\n const doNoSetting: Setting = await settingRepo.findOne({\n where: {\n domain: { id: domain.id },\n name: ORDER_NUMBER_SETTING_KEY.DO_NUMBER_RULE\n }\n })\n\n let orderNo: string = ''\n\n if (doNoSetting) {\n orderNo = await generateId({ domain, type: ORDER_NUMBER_RULE_TYPE.DO_NUMBER, seed: {} })\n } else {\n orderNo = OrderNoGenerator.deliveryOrder()\n }\n\n // insert shipping information from r/o to d/o\n\n let deliveryOrder: any = {\n domain,\n name: orderNo,\n bizplace: customerBizplace,\n releaseGood,\n refNo: releaseGood.refNo,\n ownCollection: orderInfo.ownCollection,\n truckNo: orderInfo?.truckNo || null,\n palletQty: orderInfo?.palletQty || null,\n transportVehicle,\n transportDriver,\n status: ORDER_STATUS.READY_TO_DISPATCH,\n contactPointRefId: orderInfo?.contactPointRefId || null,\n attentionTo: releaseGood?.attentionTo || null,\n attentionCompany: releaseGood?.attentionCompany || null,\n city: releaseGood?.city || null,\n state: releaseGood?.state || null,\n postalCode: releaseGood?.postalCode || null,\n country: releaseGood?.country || null,\n phone1: releaseGood?.phone1 || null,\n deliveryAddress1: releaseGood?.deliveryAddress1 || null,\n billingAddress: releaseGood?.billingAddress || null,\n billingCountry: releaseGood?.billingCountry || null,\n billingPostalCode: releaseGood?.billingPostalCode || null,\n billingState: releaseGood?.billingState || null,\n billingCity: releaseGood?.billingCity || null,\n creator: user,\n updater: user\n }\n\n deliveryOrder = <DeliveryOrder>await deliveryOrderRepo.save(deliveryOrder)\n\n targetInventories = targetInventories.map((targetInventory: OrderInventory) => {\n return {\n ...targetInventory,\n deliveryOrder,\n updater: user\n }\n })\n await orderInventoryRepo.save(targetInventories)\n\n return deliveryOrder\n}\n"]}
|
|
1
|
+
{"version":3,"file":"delivery-order-mutation.js","sourceRoot":"","sources":["../../../server/service/delivery-order/delivery-order-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, In, Repository } from 'typeorm'\n\nimport { Attachment, createAttachment, deleteAttachment } from '@things-factory/attachment-base'\nimport { User } from '@things-factory/auth-base'\nimport { Bizplace, ContactPoint, getPermittedBizplaceIds } from '@things-factory/biz-base'\nimport { generateId } from '@things-factory/id-rule-base'\nimport { Product } from '@things-factory/product-base'\nimport { Setting } from '@things-factory/setting-base'\nimport { Domain, getRepository, ObjectRef } from '@things-factory/shell'\nimport { TransportDriver, TransportVehicle, TRUCK_STATUS } from '@things-factory/transport-base'\nimport { Inventory } from '@things-factory/warehouse-base'\n\nimport {\n ORDER_INVENTORY_STATUS,\n ORDER_NUMBER_RULE_TYPE,\n ORDER_NUMBER_SETTING_KEY,\n ORDER_STATUS,\n ORDER_TYPES\n} from '../../constants'\nimport { OrderNoGenerator } from '../../utils/order-no-generator'\nimport { OrderInventory } from '../order-inventory/order-inventory'\nimport { NewOrderInventory, OrderInventoryPatch } from '../order-inventory/order-inventory-types'\nimport { ReleaseGood } from '../release-good/release-good'\nimport { ExportInformationPatch, ShippingOrderInfoPatch } from '../release-good/release-good-types'\nimport { ShippingOrder } from '../shipping-order/shipping-order'\nimport { DeliveryOrder } from './delivery-order'\nimport { DeliveryOrderPatch, NewDeliveryOrder } from './delivery-order-types'\n\n@Resolver(DeliveryOrder)\nexport class DeliveryOrderMutation {\n @Directive('@transaction')\n @Mutation(returns => DeliveryOrder)\n async createDeliveryOrder(\n @Ctx() context: ResolverContext,\n @Arg('orderInfo', type => NewDeliveryOrder, { nullable: true }) orderInfo?: NewDeliveryOrder,\n @Arg('customerBizplace', type => ObjectRef, { nullable: true }) customerBizplace?: ObjectRef,\n @Arg('targetInventories', type => [NewOrderInventory], { nullable: true }) targetInventories?: NewOrderInventory[],\n @Arg('file', type => [GraphQLUpload], { nullable: true }) file?: FileUpload[]\n ): Promise<DeliveryOrder> {\n const { tx, domain, user } = context.state\n\n return await createDeliveryOrder(orderInfo, customerBizplace, targetInventories, file, domain, user, tx)\n }\n\n @Directive('@transaction')\n @Mutation(returns => DeliveryOrder)\n async updateDeliveryOrder(\n @Arg('name') name: string,\n @Arg('patch', type => DeliveryOrderPatch) patch: DeliveryOrderPatch,\n @Ctx() context: ResolverContext\n ): Promise<DeliveryOrder> {\n const { tx, domain, user } = context.state\n\n const deliveryOrder = await tx.getRepository(DeliveryOrder).findOne({\n where: {\n domain: { id: domain.id },\n name,\n bizplace: In(await getPermittedBizplaceIds(domain, user))\n }\n })\n\n return await tx.getRepository(DeliveryOrder).save({\n ...deliveryOrder,\n ...patch,\n updater: user\n })\n }\n\n @Directive('@transaction')\n @Mutation(returns => Boolean)\n async deleteDeliveryOrder(@Arg('name') name: string, @Ctx() context: ResolverContext): Promise<boolean> {\n const { tx, domain } = context.state\n\n const foundDO = await tx.getRepository(DeliveryOrder).findOne({\n where: { domain: { id: domain.id }, name }\n })\n if (foundDO) {\n const previousAttachment: Attachment = await tx.getRepository(Attachment).findOne({\n where: { domain: { id: domain.id }, refBy: foundDO.id }\n })\n if (previousAttachment) await deleteAttachment(null, { id: previousAttachment.id }, context)\n await tx.getRepository(DeliveryOrder).delete({ domain, name })\n }\n return true\n }\n\n @Directive('@transaction')\n @Mutation(returns => DeliveryOrder)\n async generateDeliveryOrder(\n @Ctx() context: ResolverContext,\n @Arg('orderInfo', type => DeliveryOrderPatch, { nullable: true }) orderInfo?: DeliveryOrderPatch,\n @Arg('customerBizplace', type => ObjectRef, { nullable: true }) customerBizplace?: ObjectRef,\n @Arg('releaseGood', type => ObjectRef, { nullable: true }) releaseGood?: ObjectRef,\n @Arg('targetInventories', type => [ObjectRef], { nullable: true }) targetInventories?: ObjectRef[]\n ): Promise<DeliveryOrder> {\n const { tx, domain, user } = context.state\n\n return await generateDeliveryOrder(\n orderInfo,\n targetInventories as any,\n customerBizplace,\n releaseGood as any,\n domain,\n user,\n tx\n )\n }\n\n @Directive('@transaction')\n @Mutation(returns => DeliveryOrder)\n async confirmDeliveryOrder(@Arg('name') name: string, @Ctx() context: ResolverContext): Promise<DeliveryOrder> {\n const { tx, domain, user } = context.state\n\n const foundDeliveryOrder: DeliveryOrder = await tx.getRepository(DeliveryOrder).findOne({\n where: { domain: { id: domain.id }, name },\n relations: ['creator', 'updater']\n })\n\n let deliveryOrder: DeliveryOrder\n if (!foundDeliveryOrder) throw new Error(`Delivery Order doesn't exists.`)\n if (foundDeliveryOrder.status !== ORDER_STATUS.PENDING) throw new Error('Not confirmable status.')\n\n // delivery Order Status change (PENDING => PENDING_RECEIVE)\n deliveryOrder = await tx.getRepository(DeliveryOrder).save({\n ...foundDeliveryOrder,\n status: ORDER_STATUS.PENDING_RECEIVE,\n updater: user\n })\n\n return deliveryOrder\n }\n\n @Directive('@transaction')\n @Mutation(returns => DeliveryOrder)\n async receiveDeliveryOrder(@Arg('name') name: string, @Ctx() context: ResolverContext): Promise<DeliveryOrder> {\n try {\n const { tx, domain, user } = context.state\n\n const deliveryOrder: DeliveryOrder = await tx.getRepository(DeliveryOrder).findOne({\n where: { domain: { id: domain.id }, name }\n })\n\n if (!deliveryOrder) throw new Error(`Delivery order doesn't exists.`)\n if (deliveryOrder.status !== ORDER_STATUS.PENDING_RECEIVE) throw new Error(`Status is not receivable.`)\n\n await tx.getRepository(DeliveryOrder).save({\n ...deliveryOrder,\n status: ORDER_STATUS.READY_TO_DISPATCH,\n updater: user\n })\n\n return deliveryOrder\n } catch (e) {\n throw e\n }\n }\n\n @Directive('@transaction')\n @Mutation(returns => DeliveryOrder)\n async checkDeliveredOrder(\n @Ctx() context: ResolverContext,\n @Arg('name') name: string,\n @Arg('patch', type => DeliveryOrderPatch, { nullable: true }) patch?: DeliveryOrderPatch\n ): Promise<DeliveryOrder> {\n try {\n const { tx, domain, user } = context.state\n const deliveryOrder: DeliveryOrder = await tx.getRepository(DeliveryOrder).findOne({\n where: { domain: { id: domain.id }, name },\n relations: ['bizplace', 'transportDriver', 'transportVehicle']\n })\n\n if (!deliveryOrder) throw new Error(`Delivery order doesn't exists.`)\n if (deliveryOrder.status !== ORDER_STATUS.DELIVERING) throw new Error(`Status is not receivable.`)\n\n let orderInventories: OrderInventory[] = await tx.getRepository(OrderInventory).find({\n where: { domain: { id: domain.id }, deliveryOrder: { id: deliveryOrder.id } },\n relations: ['product']\n })\n\n // update order inventory status for manual DO only\n orderInventories = orderInventories.map((orderInventory: OrderInventory) => {\n if (\n orderInventory.type === ORDER_TYPES.DELIVERY &&\n orderInventory.status === ORDER_INVENTORY_STATUS.DELIVERING\n ) {\n return {\n ...orderInventory,\n status: ORDER_INVENTORY_STATUS.DONE\n }\n } else return orderInventory\n })\n await tx.getRepository(OrderInventory).save(orderInventories)\n\n await tx.getRepository(DeliveryOrder).save({\n ...deliveryOrder,\n ...patch,\n status: ORDER_STATUS.DONE,\n updater: user\n })\n\n if (!deliveryOrder?.ownCollection) {\n const foundTruck: TransportVehicle = deliveryOrder.transportVehicle\n await tx.getRepository(TransportVehicle).save({\n ...foundTruck,\n status: TRUCK_STATUS.IDLE,\n updater: user\n })\n }\n\n return deliveryOrder\n } catch (e) {\n throw e\n }\n }\n\n /**\n * comment start\n * detailed review needed 06 Aug 2022 by @ChrisLim-git\n * @param context\n * @param orderInfo\n * @param orderItems\n * @param shippingOrderInfo\n * @param exportInfo\n * @returns DeliveryOrder\n */\n @Directive('@transaction')\n @Mutation(returns => DeliveryOrder)\n async dispatchDeliveryOrder(\n @Ctx() context: ResolverContext,\n @Arg('orderInfo', type => DeliveryOrderPatch, { nullable: true }) orderInfo?: DeliveryOrderPatch,\n @Arg('orderItems', type => [OrderInventoryPatch], { nullable: true }) orderItems?: OrderInventoryPatch[],\n @Arg('shippingInfo', type => ShippingOrderInfoPatch, { nullable: true })\n shippingOrderInfo?: ShippingOrderInfoPatch,\n @Arg('exportInfo', type => ExportInformationPatch, { nullable: true }) exportInfo?: ExportInformationPatch\n ): Promise<DeliveryOrder> {\n try {\n const { tx, domain, user } = context.state\n const foundDeliveryOrder: DeliveryOrder = await tx.getRepository(DeliveryOrder).findOne({\n where: { domain: { id: domain.id }, name: orderInfo.name },\n relations: ['transportVehicle', 'bizplace']\n })\n\n const foundReleaseGood: ReleaseGood = await tx.getRepository(ReleaseGood).findOne({\n where: {\n name: orderInfo.releaseGoodNo,\n domain: { id: domain.id }\n },\n relations: ['shippingOrder']\n })\n\n if (!foundDeliveryOrder) throw new Error(`Delivery order doesn't exists.`)\n if (foundDeliveryOrder.status === ORDER_STATUS.PENDING_CANCEL)\n throw new Error('Release order is pending for cancel')\n\n foundDeliveryOrder.ownCollection = orderInfo.transportType == 'Own Transport' ? true : false\n\n let deliveryOrderStatus = foundDeliveryOrder.status\n let orderInventories: OrderInventory[]\n orderInventories = await tx.getRepository(OrderInventory).find({\n where: { domain: { id: domain.id }, deliveryOrder: { id: foundDeliveryOrder.id } },\n relations: ['inventory', 'inventory.product', 'inventory.reusablePallet']\n })\n\n orderInventories = orderInventories.map((orderInventory: OrderInventory) => {\n const inventory: Inventory = orderInventory.inventory\n const product: Product = inventory.product\n const foundItem = inventory.reusablePallet\n ? orderItems.filter(\n (item: any) =>\n item.productName === `${product.name} (${product.description})` &&\n item.batchId === orderInventory.batchId &&\n item.pallet === inventory.reusablePallet.name\n )\n : orderItems.filter(\n (item: any) =>\n item.productName === `${product.name} (${product.description})` &&\n item.batchId === orderInventory.batchId\n )\n\n if (foundItem[0].remark !== '') orderInventory.remark = foundItem[0].remark\n return orderInventory\n })\n await tx.getRepository(OrderInventory).save(orderInventories)\n\n // if there is other destination value, create a new contact point\n let foundCP: any = {}\n if (orderInfo?.otherDestination) {\n foundCP = {\n domain,\n name: orderInfo.contactName,\n bizplace: foundDeliveryOrder.bizplace,\n address: orderInfo.otherDestination,\n billingAddress: orderInfo.billingAddress,\n phone: orderInfo.contactPhone,\n email: orderInfo.contactEmail,\n companyName: orderInfo.contactCompany,\n type: orderInfo.contactType,\n creator: user\n }\n foundCP = await tx.getRepository(ContactPoint).save(foundCP)\n } else {\n foundCP = await tx.getRepository(ContactPoint).findOne({\n where: { domain: { id: domain.id }, id: orderInfo.contactPoint, bizplace: foundDeliveryOrder.bizplace }\n })\n }\n\n let transportDriver: TransportDriver = null\n let transportVehicle: TransportVehicle = null\n if (orderInfo?.ownDriver) {\n transportDriver = await tx.getRepository(TransportDriver).findOne({\n where: { domain: { id: domain.id }, name: orderInfo.ownDriver }\n })\n }\n\n if (orderInfo?.ownTruck) {\n transportVehicle = await tx.getRepository(TransportVehicle).findOne({\n where: { domain: { id: domain.id }, name: orderInfo.ownTruck }\n })\n\n await tx.getRepository(TransportVehicle).save({\n ...transportVehicle,\n status: TRUCK_STATUS.IN_USE,\n updater: user\n })\n }\n\n if (foundDeliveryOrder.status === ORDER_STATUS.READY_TO_DISPATCH) {\n // update status to DELIVERING if current status is READY_TO_DISPATCH\n deliveryOrderStatus = ORDER_STATUS.DELIVERING\n }\n\n // save export option information\n if (orderInfo?.exportOption) {\n let savedShippingOrder: any = ''\n /**\n * Could potentially override important data\n */\n if (foundReleaseGood.shippingOrder == null) {\n savedShippingOrder = await tx.getRepository(ShippingOrder).save({\n name: OrderNoGenerator.shippingOrder(),\n shipName: exportInfo.shipName,\n containerNo: exportInfo.containerNo,\n containerArrivalDate: exportInfo.containerArrivalDate,\n containerLeavingDate: exportInfo.containerLeavingDate,\n status: ORDER_STATUS.PENDING,\n domain,\n bizplace: foundDeliveryOrder.bizplace,\n creator: user,\n updater: user\n })\n }\n\n /**\n * @oscarchuaweiwen-fsd\n * I think the expectation here is to update instead of save\n * Should use .update instead of .save as it will override data that was not meant to be updated\n * example:\n *\n * savedShippingOrder = await tx.getRepository(ShippingOrder).update({\n * shipName: exportInfo.shipName,\n * containerNo: exportInfo.containerNo,\n * containerArrivalDate: exportInfo.containerArrivalDate,\n * containerLeavingDate: exportInfo.containerLeavingDate,\n * status: ORDER_STATUS.PENDING,\n * updater: user\n * })\n *\n * Unless the intention was not to update but to insert\n */\n savedShippingOrder = await tx.getRepository(ShippingOrder).save({\n ...foundReleaseGood.shippingOrder,\n name: OrderNoGenerator.shippingOrder(),\n shipName: exportInfo.shipName,\n containerNo: exportInfo.containerNo,\n containerArrivalDate: exportInfo.containerArrivalDate,\n containerLeavingDate: exportInfo.containerLeavingDate,\n status: ORDER_STATUS.PENDING,\n domain,\n bizplace: foundDeliveryOrder.bizplace,\n creator: user,\n updater: user\n })\n /** */\n\n exportInfo = savedShippingOrder\n foundReleaseGood.exportOption = true\n } else {\n foundReleaseGood.exportOption = false\n foundReleaseGood.collectionOrderNo = ''\n }\n\n await tx.getRepository(ReleaseGood).save({\n ...foundReleaseGood,\n shippingOrder: {\n ...exportInfo\n },\n collectionOrderNo: orderInfo.coNo\n })\n\n await tx.getRepository(DeliveryOrder).save({\n ...foundDeliveryOrder,\n transportDriver,\n palletQty: orderInfo?.totalPalletQty,\n transportVehicle,\n contactPointRefId: foundCP?.id || null,\n otherDriver: orderInfo?.otherDriver || null,\n truckNo: orderInfo?.otherTruck || orderInfo?.ownTruck,\n to: foundCP?.address,\n deliveryDate: orderInfo?.deliveryDate,\n deliveryDateTime: new Date(),\n remark: orderInfo?.remark,\n status: deliveryOrderStatus,\n reusablePallet: orderInfo?.reusablePallet,\n attentionTo: shippingOrderInfo?.attentionTo || null,\n attentionCompany: shippingOrderInfo?.attentionCompany || null,\n city: shippingOrderInfo?.city || null,\n state: shippingOrderInfo?.state || null,\n postalCode: shippingOrderInfo?.postalCode || null,\n country: shippingOrderInfo?.country || null,\n phone1: shippingOrderInfo?.phone1 || null,\n deliveryAddress1: shippingOrderInfo?.deliveryAddress1 || null,\n billingAddress: shippingOrderInfo?.billingAddress || null,\n billingCountry: shippingOrderInfo?.billingCountry || null,\n billingPostalCode: shippingOrderInfo?.billingPostalCode || null,\n billingState: shippingOrderInfo?.billingState || null,\n billingCity: shippingOrderInfo?.billingCity || null,\n updater: user\n })\n\n return foundDeliveryOrder\n } catch (e) {\n throw e\n }\n }\n /** */\n\n @Directive('@transaction')\n @Mutation(returns => DeliveryOrder)\n async dispatchManualDeliveryOrder(\n @Ctx() context: ResolverContext,\n @Arg('orderInfo', type => DeliveryOrderPatch, { nullable: true }) orderInfo?: DeliveryOrderPatch,\n @Arg('orderItems', type => [OrderInventoryPatch], { nullable: true }) orderItems?: OrderInventoryPatch[]\n ): Promise<DeliveryOrder> {\n try {\n const { tx, domain, user } = context.state\n const foundDeliveryOrder: DeliveryOrder = await tx.getRepository(DeliveryOrder).findOne({\n where: { domain: { id: domain.id }, name: orderInfo.name },\n relations: ['transportVehicle', 'bizplace']\n })\n\n if (!foundDeliveryOrder) throw new Error(`Delivery order doesn't exists.`)\n if (foundDeliveryOrder.status === ORDER_STATUS.PENDING_CANCEL)\n throw new Error('Release order is pending for cancel')\n\n let deliveryOrderStatus = foundDeliveryOrder.status\n let orderInventories: OrderInventory[]\n orderInventories = await tx.getRepository(OrderInventory).find({\n where: { domain: { id: domain.id }, deliveryOrder: { id: foundDeliveryOrder.id } },\n relations: ['product']\n })\n\n // if there is other destination value, create a new contact point\n let foundCP: any = {}\n if (orderInfo?.otherDestination) {\n foundCP = {\n domain,\n name: orderInfo.contactName,\n bizplace: foundDeliveryOrder.bizplace,\n address: orderInfo.otherDestination,\n billingAddress: orderInfo.billingAddress,\n phone: orderInfo.contactPhone,\n email: orderInfo.contactEmail,\n companyName: orderInfo.contactCompany,\n type: orderInfo.contactType,\n creator: user\n }\n foundCP = await tx.getRepository(ContactPoint).save(foundCP)\n } else {\n foundCP = await tx.getRepository(ContactPoint).findOne({\n where: { domain: { id: domain.id }, id: orderInfo.contactPoint }\n })\n }\n\n let transportDriver: TransportDriver = null\n let transportVehicle: TransportVehicle = null\n if (orderInfo?.ownDriver) {\n transportDriver = await tx.getRepository(TransportDriver).findOne({\n where: { domain: { id: domain.id }, name: orderInfo.ownDriver }\n })\n }\n\n if (orderInfo?.ownTruck) {\n transportVehicle = await tx.getRepository(TransportVehicle).findOne({\n where: { domain: { id: domain.id }, name: orderInfo.ownTruck }\n })\n\n await tx.getRepository(TransportVehicle).save({\n ...transportVehicle,\n status: TRUCK_STATUS.IN_USE,\n updater: user\n })\n }\n\n orderInventories = orderInventories.map((orderInventory: OrderInventory) => {\n const remark = orderItems.find(\n (item: any) => item.productId === orderInventory.product.id && item.batchId === orderInventory.batchId\n ).remark\n\n // add remark if found, else remain existing remark\n if (remark) {\n orderInventory.remark = remark\n }\n\n // update status of DO and order inventory to DELIVERING if current status is READY_TO_DISPATCH\n if (foundDeliveryOrder.status === ORDER_STATUS.READY_TO_DISPATCH) {\n deliveryOrderStatus = ORDER_STATUS.DELIVERING\n orderInventory.status = ORDER_STATUS.DELIVERING\n }\n\n return orderInventory\n })\n await tx.getRepository(OrderInventory).save(orderInventories)\n\n await tx.getRepository(DeliveryOrder).save({\n ...foundDeliveryOrder,\n transportDriver,\n transportVehicle,\n contactPointRefId: foundCP.id || null,\n otherDriver: orderInfo?.otherDriver || null,\n truckNo: orderInfo?.otherTruck || orderInfo?.ownTruck,\n to: foundCP.address,\n deliveryDate: orderInfo.deliveryDate,\n deliveryDateTime: new Date(),\n remark: orderInfo.remark,\n status: deliveryOrderStatus,\n reusablePallet: orderInfo.reusablePallet,\n updater: user\n })\n\n return foundDeliveryOrder\n } catch (e) {\n throw e\n }\n }\n\n @Directive('@transaction')\n @Mutation(returns => DeliveryOrder)\n async sendDeliveryOrder(\n @Ctx() context: ResolverContext,\n @Arg('orderInfo', type => DeliveryOrderPatch, { nullable: true }) orderInfo?: DeliveryOrderPatch,\n @Arg('orderItems', type => [OrderInventoryPatch], { nullable: true }) orderItems?: OrderInventoryPatch[]\n ): Promise<DeliveryOrder> {\n try {\n const { tx, domain, user } = context.state\n const foundDeliveryOrder: DeliveryOrder = await tx.getRepository(DeliveryOrder).findOne({\n where: { domain: { id: domain.id }, name: orderInfo.name },\n relations: ['transportVehicle', 'bizplace']\n })\n\n if (!foundDeliveryOrder) throw new Error(`Delivery order doesn't exists.`)\n if (foundDeliveryOrder.status === ORDER_STATUS.PENDING_CANCEL)\n throw new Error('Release order is pending for cancel')\n\n let deliveryOrderStatus = foundDeliveryOrder.status\n let orderInventories: OrderInventory[]\n orderInventories = await tx.getRepository(OrderInventory).find({\n where: { domain: { id: domain.id }, deliveryOrder: { id: foundDeliveryOrder.id } },\n relations: ['inventory', 'inventory.product', 'inventory.reusablePallet']\n })\n\n orderInventories = orderInventories.map((orderInventory: OrderInventory) => {\n const inventory: Inventory = orderInventory.inventory\n const product: Product = inventory.product\n const foundItem = inventory.reusablePallet\n ? orderItems.filter(\n (item: any) =>\n item.productName === `${product.name} (${product.description})` &&\n item.batchId === orderInventory.batchId &&\n item.pallet === inventory.reusablePallet.name\n )\n : orderItems.filter(\n (item: any) =>\n item.productName === `${product.name} (${product.description})` &&\n item.batchId === orderInventory.batchId\n )\n if (foundItem[0].remark !== '') orderInventory.remark = foundItem[0].remark\n return orderInventory\n })\n await tx.getRepository(OrderInventory).save(orderInventories)\n\n let transportDriver: TransportDriver = null\n let transportVehicle: TransportVehicle = null\n if (orderInfo?.ownDriver) {\n transportDriver = await tx.getRepository(TransportDriver).findOne({\n where: { domain: { id: domain.id }, name: orderInfo.ownDriver }\n })\n }\n\n if (orderInfo?.ownTruck) {\n transportVehicle = await tx.getRepository(TransportVehicle).findOne({\n where: { domain: { id: domain.id }, name: orderInfo.ownTruck }\n })\n\n await tx.getRepository(TransportVehicle).save({\n ...transportVehicle,\n status: TRUCK_STATUS.IN_USE,\n updater: user\n })\n }\n\n if (foundDeliveryOrder.status === ORDER_STATUS.READY_TO_DISPATCH) {\n // update status to DELIVERING if current status is READY_TO_DISPATCH\n deliveryOrderStatus = ORDER_STATUS.DELIVERING\n }\n\n await tx.getRepository(DeliveryOrder).save({\n ...foundDeliveryOrder,\n transportDriver,\n transportVehicle,\n otherDriver: orderInfo?.otherDriver || null,\n truckNo: orderInfo?.otherTruck || orderInfo?.ownTruck,\n to: foundDeliveryOrder.bizplace.address,\n deliveryDate: orderInfo.deliveryDate,\n remark: orderInfo.remark,\n status: deliveryOrderStatus,\n reusablePallet: orderInfo.reusablePallet,\n updater: user\n })\n\n return foundDeliveryOrder\n } catch (e) {\n throw e\n }\n return\n }\n\n @Directive('@transaction')\n @Mutation(returns => DeliveryOrder)\n async rejectDeliveryOrder(\n @Arg('name') name: string,\n @Arg('patch', type => DeliveryOrderPatch) patch: DeliveryOrderPatch,\n @Ctx() context: ResolverContext\n ): Promise<DeliveryOrder> {\n try {\n const { tx, domain, user } = context.state\n\n const deliveryOrder: DeliveryOrder = await tx.getRepository(DeliveryOrder).findOne({\n where: { domain: { id: domain.id }, name }\n })\n\n if (!deliveryOrder) throw new Error(`Delivery order doesn't exists.`)\n if (deliveryOrder.status !== ORDER_STATUS.PENDING_RECEIVE) throw new Error(`Status is not receivable.`)\n\n await tx.getRepository(DeliveryOrder).save({\n ...deliveryOrder,\n status: ORDER_STATUS.READY_TO_DISPATCH,\n updater: user\n })\n\n return deliveryOrder\n } catch (e) {\n throw e\n }\n }\n\n @Directive('@transaction')\n @Mutation(returns => DeliveryOrder)\n async submitGoodsDeliveryNote(\n @Ctx() context: ResolverContext,\n @Arg('name') name: string,\n @Arg('file', type => GraphQLUpload, { nullable: true }) file?: FileUpload\n ): Promise<DeliveryOrder> {\n const { tx, domain, user } = context.state\n\n const foundDO: DeliveryOrder = await tx.getRepository(DeliveryOrder).findOne({\n where: { domain: { id: domain.id }, name },\n relations: ['bizplace']\n })\n\n if (!foundDO) throw new Error(`DO doesn't exists.`)\n\n const foundAttachment: Attachment = await tx.getRepository(Attachment).findOne({\n where: { domain: { id: domain.id }, refBy: foundDO.id }\n })\n\n const attachment = {\n refType: 'DO',\n refBy: foundDO.id,\n file: file,\n category: 'DO' /* TODO use refType */\n }\n\n if (!foundAttachment) {\n await createAttachment(null, { attachment }, context)\n } else {\n const id = foundAttachment.id\n await deleteAttachment(null, { id }, context)\n await createAttachment(null, { attachment }, context)\n }\n\n return await tx.getRepository(DeliveryOrder).save({\n ...foundDO,\n status: ORDER_STATUS.DONE,\n updater: user\n })\n }\n}\n\nexport async function createDeliveryOrder(\n orderInfo: any,\n customerBizplace: Bizplace,\n targetInventories: (OrderInventory | NewOrderInventory)[],\n file: FileUpload[],\n domain: Domain,\n user: User,\n tx?: EntityManager\n): Promise<DeliveryOrder> {\n const bizplaceRepo: Repository<Bizplace> = tx?.getRepository(Bizplace) || getRepository(Bizplace)\n const deliveryOrderRepo: Repository<DeliveryOrder> = tx?.getRepository(DeliveryOrder) || getRepository(DeliveryOrder)\n const productRepo: Repository<Product> = tx?.getRepository(Product) || getRepository(Product)\n const transportVehicleRepo: Repository<TransportVehicle> =\n tx?.getRepository(TransportVehicle) || getRepository(TransportVehicle)\n const transportDriverRepo: Repository<TransportDriver> =\n tx?.getRepository(TransportDriver) || getRepository(TransportDriver)\n const orderInventoryRepo: Repository<OrderInventory> =\n tx?.getRepository(OrderInventory) || getRepository(OrderInventory)\n const settingRepo: Repository<Setting> = tx?.getRepository(Setting) || getRepository(Setting)\n\n const foundBizplace: Bizplace = await bizplaceRepo.findOne({\n where: {\n id: customerBizplace.id,\n name: customerBizplace.name\n }\n })\n\n if (!foundBizplace) throw new Error(`customer not found`)\n\n // #1 find order number setting and set as DO name\n const doNoSetting: Setting = await settingRepo.findOne({\n where: {\n domain: { id: domain.id },\n name: ORDER_NUMBER_SETTING_KEY.DO_NUMBER_RULE\n }\n })\n\n let orderNo: string = ''\n\n if (doNoSetting) {\n orderNo = await generateId({ domain, type: ORDER_NUMBER_RULE_TYPE.DO_NUMBER, seed: {} })\n } else {\n orderNo = OrderNoGenerator.deliveryOrder()\n }\n\n // #2 update truck vehicle status to IN_USE (only if using warehouse truck)\n let transportVehicle: TransportVehicle = null\n let transportDriver: TransportDriver = null\n\n if (!orderInfo.ownCollection) {\n transportVehicle = await transportVehicleRepo.findOne({\n where: {\n domain: { id: domain.id },\n id: orderInfo.transportVehicle\n }\n })\n\n transportDriver = await transportDriverRepo.findOne({\n where: {\n domain: { id: domain.id },\n id: orderInfo.transportDriver\n }\n })\n\n transportVehicle = {\n ...transportVehicle,\n status: TRUCK_STATUS.IN_USE,\n updater: user\n }\n\n await transportVehicleRepo.save(transportVehicle)\n }\n\n // #3 save other destination info in Contact Point if there's any\n let foundCP: ContactPoint = {}\n if (orderInfo?.otherDestination) {\n foundCP = {\n domain,\n name: orderInfo.contactName,\n bizplace: foundBizplace,\n address: orderInfo.otherDestination,\n billingAddress: orderInfo.otherBillingAddress ? orderInfo.otherBillingAddress : orderInfo.otherDestination,\n phone: orderInfo.contactPhone || '-',\n email: orderInfo.contactEmail || '-',\n companyName: orderInfo.contactCompany || '-',\n type: orderInfo.contactType,\n creator: user,\n updater: user\n }\n foundCP = await tx.getRepository(ContactPoint).save(foundCP)\n } else {\n foundCP = await tx.getRepository(ContactPoint).findOne({\n where: { domain: { id: domain.id }, id: orderInfo.contactPointRefId, bizplace: foundBizplace }\n })\n }\n\n // #4 save the delivery order info\n let totalPalletQty = 0\n targetInventories.forEach(oi => (totalPalletQty += oi.palletQty))\n\n let deliveryOrder: any = {\n domain,\n name: orderNo,\n refNo: orderInfo.refNo,\n bizplace: foundBizplace,\n deliveryDate: orderInfo.deliveryDate,\n ownCollection: orderInfo.ownCollection,\n truckNo: orderInfo.truckNo,\n palletQty: totalPalletQty,\n status: ORDER_STATUS.READY_TO_DISPATCH,\n contactPointRefId: foundCP.id,\n remark: orderInfo.remark,\n transportDriver,\n transportVehicle,\n otherDriver: orderInfo.otherDriver,\n creator: user,\n updater: user\n }\n deliveryOrder = <DeliveryOrder>await deliveryOrderRepo.save(deliveryOrder)\n\n // #5 save order inventories\n targetInventories = await Promise.all(\n targetInventories.map(async (orderInventory: OrderInventory) => {\n const product: Product = await productRepo.findOne({\n where: {\n id: orderInventory.product.id\n }\n })\n\n if (!product) throw new Error(`product not found`)\n return {\n ...orderInventory,\n domain,\n product,\n name: OrderNoGenerator.orderInventory(),\n bizplace: foundBizplace,\n status: ORDER_INVENTORY_STATUS.READY_TO_DISPATCH,\n type: ORDER_TYPES.DELIVERY,\n deliveryOrder,\n creator: user,\n updater: user\n }\n })\n )\n await orderInventoryRepo.save(targetInventories)\n\n // if (file?.length) {\n // const attachments: Attachment[] = file.map(attachment => {\n // return {\n // file: attachment,\n // refType: ATTACHMENT_TYPE.GAN,\n // refBy: deliveryOrder.id,\n // category: ATTACHMENT_TYPE.GAN /* TODO use refType */\n // }\n // })\n // await createAttachments(_, { attachments }, context)\n // }\n\n return deliveryOrder\n}\n\nexport async function generateDeliveryOrder(\n orderInfo: DeliveryOrder | DeliveryOrderPatch,\n targetInventories: OrderInventory[],\n customerBizplace: Bizplace,\n releaseGood: ReleaseGood,\n domain: Domain,\n user: User,\n tx?: EntityManager\n): Promise<DeliveryOrder> {\n /**\n * 1. Validation for creating DO - data existing\n */\n const deliveryOrderRepo: Repository<DeliveryOrder> = tx?.getRepository(DeliveryOrder) || getRepository(DeliveryOrder)\n const transportVehicleRepo: Repository<TransportVehicle> =\n tx?.getRepository(TransportVehicle) || getRepository(TransportVehicle)\n const transportDriverRepo: Repository<TransportDriver> =\n tx?.getRepository(TransportDriver) || getRepository(TransportDriver)\n const orderInventoryRepo: Repository<OrderInventory> =\n tx?.getRepository(OrderInventory) || getRepository(OrderInventory)\n const settingRepo: Repository<Setting> = tx?.getRepository(Setting) || getRepository(Setting)\n\n let transportVehicle: TransportVehicle = null\n if (orderInfo?.truckNo) {\n transportVehicle = await transportVehicleRepo.findOne({\n where: { domain: { id: domain.id }, name: orderInfo.truckNo }\n })\n }\n\n let transportDriver: TransportDriver = null\n if (orderInfo?.transportDriver) {\n transportDriver = await transportDriverRepo.findOne({\n where: { domain: { id: domain.id }, id: orderInfo.transportDriver.id }\n })\n }\n\n const doNoSetting: Setting = await settingRepo.findOne({\n where: {\n domain: { id: domain.id },\n name: ORDER_NUMBER_SETTING_KEY.DO_NUMBER_RULE\n }\n })\n\n let orderNo: string = ''\n\n if (doNoSetting) {\n orderNo = await generateId({ domain, type: ORDER_NUMBER_RULE_TYPE.DO_NUMBER, seed: {} })\n } else {\n orderNo = OrderNoGenerator.deliveryOrder()\n }\n\n // insert shipping information from r/o to d/o\n\n let deliveryOrder: any = {\n domain,\n name: orderNo,\n bizplace: customerBizplace,\n releaseGood,\n refNo: releaseGood.refNo,\n ownCollection: orderInfo.ownCollection,\n truckNo: orderInfo?.truckNo || null,\n palletQty: orderInfo?.palletQty || null,\n transportVehicle,\n transportDriver,\n status: ORDER_STATUS.READY_TO_DISPATCH,\n contactPointRefId: orderInfo?.contactPointRefId || null,\n attentionTo: releaseGood?.attentionTo || null,\n attentionCompany: releaseGood?.attentionCompany || null,\n city: releaseGood?.city || null,\n state: releaseGood?.state || null,\n postalCode: releaseGood?.postalCode || null,\n country: releaseGood?.country || null,\n phone1: releaseGood?.phone1 || null,\n deliveryAddress1: releaseGood?.deliveryAddress1 || null,\n billingAddress: releaseGood?.billingAddress || null,\n billingCountry: releaseGood?.billingCountry || null,\n billingPostalCode: releaseGood?.billingPostalCode || null,\n billingState: releaseGood?.billingState || null,\n billingCity: releaseGood?.billingCity || null,\n creator: user,\n updater: user\n }\n\n deliveryOrder = <DeliveryOrder>await deliveryOrderRepo.save(deliveryOrder)\n\n targetInventories = targetInventories.map((targetInventory: OrderInventory) => {\n return {\n ...targetInventory,\n deliveryOrder,\n updater: user\n }\n })\n await orderInventoryRepo.save(targetInventories)\n\n return deliveryOrder\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"delivery-order-query.js","sourceRoot":"","sources":["../../../server/service/delivery-order/delivery-order-query.ts"],"names":[],"mappings":"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","sourcesContent":["import { Arg, Args, Ctx, FieldResolver, Query, Resolver, Root } from 'type-graphql'\nimport { EntityManager, In, Not, OrderByCondition, Repository } 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 { Product } from '@things-factory/product-base'\nimport {\n buildQuery,\n convertListParams,\n Domain,\n Filter,\n getRepository,\n ListParam,\n Pagination,\n Sorting\n} from '@things-factory/shell'\nimport { Inventory } from '@things-factory/warehouse-base'\n\nimport { ORDER_STATUS } from '../../constants'\nimport { OrderInventory } from '../order-inventory/order-inventory'\nimport { OrderInventoryList } from '../order-inventory/order-inventory-types'\nimport { ReleaseGood } from '../release-good/release-good'\nimport { DeliveryOrder } from './delivery-order'\nimport { DeliveryOrderList } from './delivery-order-types'\n\nconst debug = require('debug')('things-factory:sales-base:delivery-orders')\n\n@Resolver(DeliveryOrder)\nexport class DeliveryOrderQuery {\n @Query(returns => DeliveryOrderList)\n async deliveryOrders(@Ctx() context: ResolverContext, @Args() params: ListParam): Promise<DeliveryOrderList> {\n try {\n const { domain, user, tx } = context.state\n\n const bizplaceFilter = params.filters.find(param => param.name === 'bizplaceId')\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 releaseGoodParam = params.filters.find(param => param.name === 'releaseGoodNo')\n if (releaseGoodParam) {\n let arrFilters = []\n params.filters.splice(\n params.filters.findIndex(item => item.name == 'releaseGoodNo'),\n 1\n )\n arrFilters.push({ ...releaseGoodParam, name: 'name' })\n\n const foundReleaseGoods: ReleaseGood[] = await getRepository(ReleaseGood).find({\n ...convertListParams(\n { filters: arrFilters },\n {\n searchables: ['name', 'releaseGoodNo', 'truckNo']\n }\n )\n })\n\n if (foundReleaseGoods && foundReleaseGoods.length) {\n params.filters.push({\n name: 'releaseGoodId',\n operator: 'in',\n value: foundReleaseGoods.map((releaseGood: ReleaseGood) => releaseGood.id),\n relation: false\n })\n }\n }\n\n const tzOffsetIdx = params.filters.findIndex(param => param.name === 'tzoffset')\n let tzOffset = 0\n if (tzOffsetIdx >= 0) {\n tzOffset = params.filters[tzOffsetIdx].value\n params.filters.splice(tzOffsetIdx, 1)\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 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 let refNoFilter = params.filters.find(x => x.name == 'refNo')\n let refNo2Filter = params.filters.find(x => x.name == 'refNo2')\n let refNo3Filter = params.filters.find(x => x.name == 'refNo3')\n let orderProductsApiFilter = params.filters.find(x => x.name == 'orderProductsApi')\n\n params.filters = params.filters.filter(\n x => x.name != 'refNo' && x.name != 'refNo2' && x.name != 'refNo3' && x.name != 'orderProductsApi'\n )\n\n const qb: any = getRepository(DeliveryOrder).createQueryBuilder('do')\n buildQuery(qb, params, context)\n qb.addSelect('COALESCE(\"cc\".rank, 99999)', 'rank')\n qb.leftJoinAndSelect('do.bizplace', 'bizplace')\n qb.leftJoinAndSelect('do.releaseGood', 'releaseGood')\n qb.leftJoinAndSelect('do.transportDriver', 'td')\n qb.leftJoinAndSelect('do.transportVehicle', 'th')\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 = 'DELIVERY_STATUS'`)\n },\n 'cc',\n 'cc.status = do.status'\n )\n\n // was add specifically for API usage, do we really need\n // orderProducts over orderInventories? else we should remove this\n if (orderProductsApiFilter?.value) {\n qb.innerJoinAndSelect('releaseGood.orderProducts', 'orderProducts')\n }\n\n if (refNoFilter?.value) {\n qb.andWhere('releaseGood.ref_no ilike :refNo', { refNo: refNoFilter.value })\n }\n if (refNo2Filter?.value) {\n qb.andWhere('releaseGood.ref_no_2 ilike :refNo2', { refNo2: refNo2Filter.value })\n }\n if (refNo3Filter?.value) {\n qb.andWhere('releaseGood.ref_no_3 ilike :refNo3', { refNo3: refNo3Filter.value })\n }\n\n const arrChildSortData = ['refNo', 'refNo2', 'refNo3']\n const arrNameSortData = ['bizplace', 'releaseGood', 'updater']\n const sort: OrderByCondition = (params.sortings || []).reduce(\n (acc, sort) => ({\n ...acc,\n [arrChildSortData.indexOf(sort.name) >= 0\n ? 'releaseGood.' + sort.name\n : arrNameSortData.indexOf(sort.name) >= 0\n ? sort.name + '.name'\n : 'do.' + sort.name]: sort.desc ? 'DESC' : 'ASC'\n }),\n params.sortings.length < 1 ? { rank: 'ASC', 'do.createdAt': 'DESC' } : {}\n )\n\n qb.orderBy(sort)\n\n let [items, total] = await qb.getManyAndCount()\n if (orderProductsApiFilter?.value) {\n items = await Promise.all(\n items.map(async itm => {\n const qb: any = getRepository(OrderInventory).createQueryBuilder('OrderInventory')\n\n let orderInventories: any[] = await qb\n .leftJoinAndSelect('OrderInventory.product', 'Product')\n .leftJoinAndSelect('OrderInventory.orderToteItems', 'OrderToteItems')\n .leftJoinAndSelect('OrderToteItems.orderTote', 'OrderTote')\n .leftJoinAndSelect('OrderTote.orderToteSeals', 'OrderToteSeals')\n .where('OrderInventory.delivery_order_id = :deliveryOrderId', { deliveryOrderId: itm.id })\n .andWhere('OrderInventory.domain_id = :domainId', { domainId: domain.id })\n .getMany()\n\n return {\n ...itm,\n orderInventories\n }\n })\n )\n }\n\n return { items, total }\n } catch (error) {\n debug('deliveryOrders', error.toString())\n throw error\n }\n }\n\n @Query(returns => DeliveryOrder)\n async deliveryOrder(@Arg('name') name: string, @Ctx() context: ResolverContext): Promise<DeliveryOrder> {\n const { domain } = context.state\n\n const foundDO = await getRepository(DeliveryOrder).findOne({\n where: {\n domain: { id: domain.id },\n name\n },\n relations: ['domain', 'bizplace', 'transportDriver', 'transportVehicle', 'releaseGood', 'creator', 'updater']\n })\n\n let foundAttachments = []\n if (foundDO) {\n foundAttachments = await getRepository(Attachment).find({\n where: {\n domain: { id: domain.id },\n refBy: foundDO.id\n }\n })\n }\n\n return { ...foundDO, attachments: foundAttachments }\n }\n\n @Query(returns => DeliveryOrderList)\n async deliveryOrderRequests(\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<DeliveryOrderList> {\n const { domain, user } = context.state\n\n const convertedParams = convertListParams({ filters, pagination, sortings })\n\n if (!convertedParams.where || !convertedParams.where.status) {\n convertedParams.where.status = Not(In([ORDER_STATUS.PENDING, ORDER_STATUS.EDITING]))\n }\n\n ;(convertedParams as any).bizplace = In(await getPermittedBizplaceIds(domain, user))\n\n const [items, total] = await getRepository(DeliveryOrder).findAndCount({\n ...convertedParams,\n relations: ['domain', 'bizplace', 'releaseGood', 'transportDriver', 'transportVehicle', 'creator', 'updater']\n })\n\n return { items, total }\n }\n\n @Query(returns => DeliveryOrderList)\n async deliveryOrderByReleaseGood(\n @Arg('releaseGoodNo') releaseGoodNo: string,\n @Ctx() context: ResolverContext\n ): Promise<DeliveryOrderList> {\n const releaseGood: ReleaseGood = await getRepository(ReleaseGood).findOne({\n where: { name: releaseGoodNo }\n })\n\n return await deliveryOrderByReleaseGood(releaseGood)\n }\n\n @Query(returns => OrderInventoryList)\n async deliveryOrderItems(@Arg('name') name: string, @Ctx() context: ResolverContext): Promise<OrderInventoryList> {\n const { domain } = context.state\n const deliveryOrder: DeliveryOrder = await getRepository(DeliveryOrder).findOne({\n where: { domain: { id: domain.id }, name }\n })\n\n let [items, total] = await getRepository(OrderInventory).findAndCount({\n where: { domain: { id: domain.id }, deliveryOrder: { id: deliveryOrder.id } },\n relations: ['inventory', 'inventory.product', 'inventory.reusablePallet']\n })\n\n items = items\n .map((oi: OrderInventory) => {\n const inventory: Inventory = oi.inventory\n const product: Product = inventory.product\n return {\n inventory: inventory,\n productName: `${product.name} (${product.description})`,\n packingType: inventory.packingType,\n batchId: inventory.batchId,\n releaseQty: oi.releaseQty,\n releaseUomValue: oi.releaseUomValue,\n remark: oi.remark,\n crossDocking: oi.crossDocking,\n pallet: inventory?.reusablePallet && inventory?.reusablePallet?.name ? inventory.reusablePallet.name : ''\n }\n })\n .reduce((newItem, item) => {\n var foundItem = newItem.find(\n newItem =>\n newItem.productName === item.productName &&\n newItem.batchId === item.batchId &&\n newItem.crossDocking === item.crossDocking &&\n newItem.pallet === item.pallet\n )\n if (!foundItem) {\n foundItem = {\n inventory: item.inventory,\n productName: item.productName,\n packingType: item.packingType,\n batchId: item.batchId,\n releaseQty: item.releaseQty,\n releaseUomValue: item.releaseUomValue,\n palletQty: 1,\n remark: item.remark,\n crossDocking: item.crossDocking,\n pallet: item.pallet\n }\n\n newItem.push(foundItem)\n return newItem\n } else {\n return newItem.map(ni => {\n if (\n ni.productName === item.productName &&\n ni.batchId === item.batchId &&\n ni.crossDocking === item.crossDocking &&\n ni.pallet === item.pallet\n ) {\n return {\n ...ni,\n palletQty: ni.palletQty + 1,\n releaseQty: ni.releaseQty + item.releaseQty,\n releaseUomValue: ni.releaseUomValue + item.releaseUomValue\n }\n } else {\n return ni\n }\n })\n }\n }, [])\n\n items = items.map((prod: any) => {\n return {\n ...prod,\n systemRemark: prod?.remark\n ? prod.remark\n : prod.crossDocking\n ? prod.pallet === ''\n ? `${prod.palletQty} PALLET(S) [C/D]`\n : `${prod.palletQty} PALLET(S) (${prod.pallet}) [C/D]`\n : prod.pallet === ''\n ? `${prod.palletQty} PALLET(S)`\n : `${prod.palletQty} PALLET(S) (${prod.pallet})`\n }\n })\n\n return { items, total }\n }\n\n @Query(returns => OrderInventoryList)\n async manualDeliveryOrderItems(\n @Arg('name') name: string,\n @Ctx() context: ResolverContext\n ): Promise<OrderInventoryList> {\n const { domain } = context.state\n const deliveryOrder: DeliveryOrder = await getRepository(DeliveryOrder).findOne({\n where: { domain: { id: domain.id }, name }\n })\n\n let [items, total] = await getRepository(OrderInventory).findAndCount({\n where: { domain: { id: domain.id }, deliveryOrder: { id: deliveryOrder.id } },\n relations: ['product']\n })\n\n items = items\n .map((oi: OrderInventory) => {\n const product: Product = oi.product\n return {\n inventory: oi.inventory,\n productId: product.id,\n productName: `${product.name} (${product.description})`,\n packingType: oi.packingType,\n batchId: oi.batchId,\n releaseQty: oi.releaseQty,\n releaseUomValue: oi.releaseUomValue,\n remark: oi.remark,\n crossDocking: oi.crossDocking,\n pallet: ''\n }\n })\n .reduce((newItem, item) => {\n var foundItem = newItem.find(\n newItem =>\n newItem.productName === item.productName &&\n newItem.batchId === item.batchId &&\n newItem.crossDocking === item.crossDocking &&\n newItem.pallet === item.pallet\n )\n if (!foundItem) {\n foundItem = {\n inventory: item.inventory,\n productId: item.productId,\n productName: item.productName,\n packingType: item.packingType,\n batchId: item.batchId,\n releaseQty: item.releaseQty,\n releaseUomValue: item.releaseUomValue,\n palletQty: 1,\n remark: item.remark,\n crossDocking: item.crossDocking,\n pallet: item.pallet\n }\n\n newItem.push(foundItem)\n return newItem\n } else {\n return newItem.map(ni => {\n if (\n ni.productName === item.productName &&\n ni.batchId === item.batchId &&\n ni.crossDocking === item.crossDocking &&\n ni.pallet === item.pallet\n ) {\n return {\n ...ni,\n palletQty: ni.palletQty + 1,\n releaseQty: ni.releaseQty + item.releaseQty,\n releaseUomValue: ni.releaseUomValue + item.releaseUomValue\n }\n } else {\n return ni\n }\n })\n }\n }, [])\n\n items = items.map((prod: any) => {\n return {\n ...prod,\n systemRemark: prod?.remark\n ? prod.remark\n : prod.crossDocking\n ? prod.pallet === ''\n ? `${prod.palletQty} PALLET(S) [C/D]`\n : `${prod.palletQty} PALLET(S) (${prod.pallet}) [C/D]`\n : prod.pallet === ''\n ? `${prod.palletQty} PALLET(S)`\n : `${prod.palletQty} PALLET(S) (${prod.pallet})`\n }\n })\n\n return { items, total }\n }\n\n @Query(returns => DeliveryOrderList)\n async deliveryOrderReport(@Ctx() context: ResolverContext, @Args() params: ListParam): Promise<DeliveryOrderList> {\n try {\n const { domain, user } = context.state\n\n const bizplaceFilter = params.filters.find(param => param.name === 'bizplaceId')\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 releaseGoodParam = params.filters.find(param => param.name === 'releaseGoodNo')\n if (releaseGoodParam) {\n let arrFilters = []\n params.filters.splice(\n params.filters.findIndex(item => item.name == 'releaseGoodNo'),\n 1\n )\n arrFilters.push({ ...releaseGoodParam, name: 'name' })\n\n const foundReleaseGoods: ReleaseGood[] = await getRepository(ReleaseGood).find({\n ...convertListParams({ filters: arrFilters })\n })\n\n if (foundReleaseGoods && foundReleaseGoods.length) {\n params.filters.push({\n name: 'releaseGoodId',\n operator: 'in',\n value: foundReleaseGoods.map((releaseGood: ReleaseGood) => releaseGood.id),\n relation: false\n })\n }\n }\n\n const tzOffsetIdx = params.filters.findIndex(param => param.name === 'tzoffset')\n let tzOffset = 0\n if (tzOffsetIdx >= 0) {\n tzOffset = params.filters[tzOffsetIdx].value\n params.filters.splice(tzOffsetIdx, 1)\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 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 let refNoFilter = params.filters.find(x => x.name == 'refNo')\n let refNo2Filter = params.filters.find(x => x.name == 'refNo2')\n let refNo3Filter = params.filters.find(x => x.name == 'refNo3')\n\n params.filters = params.filters.filter(x => x.name != 'refNo' && x.name != 'refNo2' && x.name != 'refNo3')\n\n const qb: any = getRepository(DeliveryOrder).createQueryBuilder('do')\n buildQuery(qb, params, context)\n qb.addSelect('COALESCE(\"cc\".rank, 99999)', 'rank')\n qb.leftJoinAndSelect('do.domain', 'domain')\n qb.leftJoinAndSelect('do.bizplace', 'bizplace')\n qb.leftJoinAndSelect('do.releaseGood', 'releaseGood')\n qb.leftJoinAndSelect('do.transportDriver', 'td')\n qb.leftJoinAndSelect('do.transportVehicle', 'th')\n qb.leftJoinAndSelect('do.orderInventories', 'oi')\n qb.leftJoinAndSelect('oi.inventory', 'inv')\n qb.leftJoinAndSelect('inv.product', 'prd')\n qb.leftJoinAndSelect('do.creator', 'creator')\n qb.leftJoinAndSelect('do.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 = 'DELIVERY_STATUS'`)\n },\n 'cc',\n 'cc.status = do.status'\n )\n\n if (refNoFilter?.value) {\n qb.andWhere('releaseGood.ref_no ilike :refNo', { refNo: refNoFilter.value })\n }\n if (refNo2Filter?.value) {\n qb.andWhere('releaseGood.ref_no_2 ilike :refNo2', { refNo2: refNo2Filter.value })\n }\n if (refNo3Filter?.value) {\n qb.andWhere('releaseGood.ref_no_3 ilike :refNo3', { refNo3: refNo3Filter.value })\n }\n\n const arrChildSortData = ['refNo', 'refNo2', 'refNo3']\n const arrNameSortData = ['bizplace', 'releaseGood', 'updater']\n const sort: OrderByCondition = (params.sortings || []).reduce(\n (acc, sort) => ({\n ...acc,\n [arrChildSortData.indexOf(sort.name) >= 0\n ? 'releaseGood.' + sort.name\n : arrNameSortData.indexOf(sort.name) >= 0\n ? sort.name + '.name'\n : 'do.' + sort.name]: sort.desc ? 'DESC' : 'ASC'\n }),\n params.sortings.length < 1 ? { rank: 'ASC', 'do.createdAt': 'DESC' } : {}\n )\n\n qb.orderBy(sort)\n\n const [items, total] = await qb.getManyAndCount()\n return { items, total }\n } catch (error) {\n debug('deliveryOrders', error.toString())\n throw error\n }\n }\n\n @FieldResolver(type => Domain)\n async domain(@Root() deliveryOrder: DeliveryOrder): Promise<Domain> {\n return await getRepository(Domain).findOneBy({ id: deliveryOrder.domainId })\n }\n\n @FieldResolver(type => User)\n async creator(@Root() deliveryOrder: DeliveryOrder): Promise<User> {\n return await getRepository(User).findOneBy({ id: deliveryOrder.creatorId })\n }\n\n @FieldResolver(type => User)\n async updater(@Root() deliveryOrder: DeliveryOrder): Promise<User> {\n return await getRepository(User).findOneBy({ id: deliveryOrder.updaterId })\n }\n}\n\nexport async function deliveryOrderByReleaseGood(releaseGood: ReleaseGood, trxMgr?: EntityManager): Promise<any> {\n const doRepo: Repository<DeliveryOrder> = trxMgr?.getRepository(DeliveryOrder) || getRepository(DeliveryOrder)\n const oiRepo: Repository<OrderInventory> = trxMgr?.getRepository(OrderInventory) || getRepository(OrderInventory)\n\n let [items, total] = await doRepo.findAndCount({\n where: { releaseGood: { id: releaseGood.id } },\n relations: ['domain', 'bizplace', 'releaseGood', 'transportDriver', 'transportVehicle', 'creator', 'updater']\n })\n\n items = await Promise.all(\n items.map(async (deliveryOrder: DeliveryOrder) => {\n return {\n ...deliveryOrder,\n truck: deliveryOrder?.truckNo || deliveryOrder.transportVehicle?.name || null,\n targetInventories: await oiRepo.find({\n where: { deliveryOrder: { id: deliveryOrder.id } },\n relations: ['domain', 'bizplace', 'releaseGood', 'inventory']\n })\n }\n })\n )\n\n return {\n items,\n total\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"delivery-order-query.js","sourceRoot":"","sources":["../../../server/service/delivery-order/delivery-order-query.ts"],"names":[],"mappings":"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","sourcesContent":["import { Arg, Args, Ctx, FieldResolver, Query, Resolver, Root } from 'type-graphql'\nimport { EntityManager, In, Not, OrderByCondition, Repository } 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 { Product } from '@things-factory/product-base'\nimport {\n buildQuery,\n convertListParams,\n Domain,\n Filter,\n getRepository,\n ListParam,\n Pagination,\n Sorting\n} from '@things-factory/shell'\nimport { Inventory } from '@things-factory/warehouse-base'\n\nimport { ORDER_STATUS } from '../../constants'\nimport { OrderInventory } from '../order-inventory/order-inventory'\nimport { OrderInventoryList } from '../order-inventory/order-inventory-types'\nimport { ReleaseGood } from '../release-good/release-good'\nimport { DeliveryOrder } from './delivery-order'\nimport { DeliveryOrderList } from './delivery-order-types'\n\nconst debug = require('debug')('things-factory:sales-base:delivery-orders')\n\n@Resolver(DeliveryOrder)\nexport class DeliveryOrderQuery {\n @Query(returns => DeliveryOrderList)\n async deliveryOrders(@Ctx() context: ResolverContext, @Args() params: ListParam): Promise<DeliveryOrderList> {\n try {\n const { domain, user, tx } = context.state\n\n const bizplaceFilter = params.filters.find(param => param.name === 'bizplaceId')\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 releaseGoodParam = params.filters.find(param => param.name === 'releaseGoodNo')\n if (releaseGoodParam) {\n let arrFilters = []\n params.filters.splice(\n params.filters.findIndex(item => item.name == 'releaseGoodNo'),\n 1\n )\n arrFilters.push({ ...releaseGoodParam, name: 'name' })\n\n const foundReleaseGoods: ReleaseGood[] = await getRepository(ReleaseGood).find({\n ...convertListParams(\n { filters: arrFilters },\n {\n searchables: ['name', 'releaseGoodNo', 'truckNo']\n }\n )\n })\n\n if (foundReleaseGoods && foundReleaseGoods.length) {\n params.filters.push({\n name: 'releaseGoodId',\n operator: 'in',\n value: foundReleaseGoods.map((releaseGood: ReleaseGood) => releaseGood.id),\n relation: false\n })\n }\n }\n\n const tzOffsetIdx = params.filters.findIndex(param => param.name === 'tzoffset')\n let tzOffset = 0\n if (tzOffsetIdx >= 0) {\n tzOffset = params.filters[tzOffsetIdx].value\n params.filters.splice(tzOffsetIdx, 1)\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 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 let refNoFilter = params.filters.find(x => x.name == 'refNo')\n let refNo2Filter = params.filters.find(x => x.name == 'refNo2')\n let refNo3Filter = params.filters.find(x => x.name == 'refNo3')\n let orderProductsApiFilter = params.filters.find(x => x.name == 'orderProductsApi')\n\n params.filters = params.filters.filter(\n x => x.name != 'refNo' && x.name != 'refNo2' && x.name != 'refNo3' && x.name != 'orderProductsApi'\n )\n\n const qb: any = getRepository(DeliveryOrder).createQueryBuilder('do')\n buildQuery(qb, params, context)\n qb.addSelect('COALESCE(\"cc\".rank, 99999)', 'rank')\n qb.leftJoinAndSelect('do.bizplace', 'bizplace')\n qb.leftJoinAndSelect('do.releaseGood', 'releaseGood')\n qb.leftJoinAndSelect('do.transportDriver', 'td')\n qb.leftJoinAndSelect('do.transportVehicle', 'th')\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 = 'DELIVERY_STATUS'`)\n },\n 'cc',\n 'cc.status = do.status'\n )\n\n // was add specifically for API usage, do we really need\n // orderProducts over orderInventories? else we should remove this\n if (orderProductsApiFilter?.value) {\n qb.innerJoinAndSelect('releaseGood.orderProducts', 'orderProducts')\n }\n\n if (refNoFilter?.value) {\n qb.andWhere('releaseGood.ref_no ilike :refNo', { refNo: refNoFilter.value })\n }\n if (refNo2Filter?.value) {\n qb.andWhere('releaseGood.ref_no_2 ilike :refNo2', { refNo2: refNo2Filter.value })\n }\n if (refNo3Filter?.value) {\n qb.andWhere('releaseGood.ref_no_3 ilike :refNo3', { refNo3: refNo3Filter.value })\n }\n\n const arrChildSortData = ['refNo', 'refNo2', 'refNo3']\n const arrNameSortData = ['bizplace', 'releaseGood', 'updater']\n const sort: OrderByCondition = (params.sortings || []).reduce(\n (acc, sort) => ({\n ...acc,\n [arrChildSortData.indexOf(sort.name) >= 0\n ? 'releaseGood.' + sort.name\n : arrNameSortData.indexOf(sort.name) >= 0\n ? sort.name + '.name'\n : 'do.' + sort.name]: sort.desc ? 'DESC' : 'ASC'\n }),\n params.sortings.length < 1 ? { rank: 'ASC', 'do.createdAt': 'DESC' } : {}\n )\n\n qb.orderBy(sort)\n\n let [items, total] = await qb.getManyAndCount()\n if (orderProductsApiFilter?.value) {\n items = await Promise.all(\n items.map(async itm => {\n const qb: any = getRepository(OrderInventory).createQueryBuilder('OrderInventory')\n\n let orderInventories: any[] = await qb\n .leftJoinAndSelect('OrderInventory.product', 'Product')\n .leftJoinAndSelect('OrderInventory.orderToteItems', 'OrderToteItems')\n .leftJoinAndSelect('OrderToteItems.orderTote', 'OrderTote')\n .leftJoinAndSelect('OrderTote.orderToteSeals', 'OrderToteSeals')\n .where('OrderInventory.delivery_order_id = :deliveryOrderId', { deliveryOrderId: itm.id })\n .andWhere('OrderInventory.domain_id = :domainId', { domainId: domain.id })\n .getMany()\n\n return {\n ...itm,\n orderInventories\n }\n })\n )\n }\n\n return { items, total }\n } catch (error) {\n debug('deliveryOrders', error.toString())\n throw error\n }\n }\n\n @Query(returns => DeliveryOrder)\n async deliveryOrder(@Arg('name') name: string, @Ctx() context: ResolverContext): Promise<DeliveryOrder> {\n const { domain } = context.state\n\n const foundDO = await getRepository(DeliveryOrder).findOne({\n where: {\n domain: { id: domain.id },\n name\n },\n relations: ['domain', 'bizplace', 'transportDriver', 'transportVehicle', 'releaseGood', 'creator', 'updater']\n })\n\n let foundAttachments = []\n if (foundDO) {\n foundAttachments = await getRepository(Attachment).find({\n where: {\n domain: { id: domain.id },\n refBy: foundDO.id\n }\n })\n }\n\n return { ...foundDO, attachments: foundAttachments }\n }\n\n @Query(returns => DeliveryOrderList)\n async deliveryOrderRequests(\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<DeliveryOrderList> {\n const { domain, user } = context.state\n\n const convertedParams = convertListParams({ filters, pagination, sortings })\n\n if (!convertedParams.where || !convertedParams.where.status) {\n convertedParams.where.status = Not(In([ORDER_STATUS.PENDING, ORDER_STATUS.EDITING]))\n }\n\n ;(convertedParams as any).bizplace = In(await getPermittedBizplaceIds(domain, user))\n\n const [items, total] = await getRepository(DeliveryOrder).findAndCount({\n ...convertedParams,\n relations: ['domain', 'bizplace', 'releaseGood', 'transportDriver', 'transportVehicle', 'creator', 'updater']\n })\n\n return { items, total }\n }\n\n @Query(returns => DeliveryOrderList)\n async deliveryOrderByReleaseGood(\n @Arg('releaseGoodNo') releaseGoodNo: string,\n @Ctx() context: ResolverContext\n ): Promise<DeliveryOrderList> {\n const releaseGood: ReleaseGood = await getRepository(ReleaseGood).findOne({\n where: { name: releaseGoodNo }\n })\n\n return await deliveryOrderByReleaseGood(releaseGood)\n }\n\n @Query(returns => OrderInventoryList)\n async deliveryOrderItems(@Arg('name') name: string, @Ctx() context: ResolverContext): Promise<OrderInventoryList> {\n const { domain } = context.state\n const deliveryOrder: DeliveryOrder = await getRepository(DeliveryOrder).findOne({\n where: { domain: { id: domain.id }, name }\n })\n\n let [items, total] = await getRepository(OrderInventory).findAndCount({\n where: { domain: { id: domain.id }, deliveryOrder: { id: deliveryOrder.id } },\n relations: ['inventory', 'inventory.product', 'inventory.reusablePallet']\n })\n\n items = items\n .map((oi: OrderInventory) => {\n const inventory: Inventory = oi.inventory\n const product: Product = inventory.product\n return {\n inventory: inventory,\n productName: `${product.name} (${product.description})`,\n packingType: inventory.packingType,\n batchId: inventory.batchId,\n releaseQty: oi.releaseQty,\n releaseUomValue: oi.releaseUomValue,\n remark: oi.remark,\n crossDocking: oi.crossDocking,\n pallet: inventory?.reusablePallet && inventory?.reusablePallet?.name ? inventory.reusablePallet.name : ''\n }\n })\n .reduce((newItem, item) => {\n var foundItem = newItem.find(\n newItem =>\n newItem.productName === item.productName &&\n newItem.batchId === item.batchId &&\n newItem.crossDocking === item.crossDocking &&\n newItem.pallet === item.pallet\n )\n if (!foundItem) {\n foundItem = {\n inventory: item.inventory,\n productName: item.productName,\n packingType: item.packingType,\n batchId: item.batchId,\n releaseQty: item.releaseQty,\n releaseUomValue: item.releaseUomValue,\n palletQty: 1,\n remark: item.remark,\n crossDocking: item.crossDocking,\n pallet: item.pallet\n }\n\n newItem.push(foundItem)\n return newItem\n } else {\n return newItem.map(ni => {\n if (\n ni.productName === item.productName &&\n ni.batchId === item.batchId &&\n ni.crossDocking === item.crossDocking &&\n ni.pallet === item.pallet\n ) {\n return {\n ...ni,\n palletQty: ni.palletQty + 1,\n releaseQty: ni.releaseQty + item.releaseQty,\n releaseUomValue: ni.releaseUomValue + item.releaseUomValue\n }\n } else {\n return ni\n }\n })\n }\n }, [])\n\n items = items.map((prod: any) => {\n return {\n ...prod,\n systemRemark: prod?.remark\n ? prod.remark\n : prod.crossDocking\n ? prod.pallet === ''\n ? `${prod.palletQty} PALLET(S) [C/D]`\n : `${prod.palletQty} PALLET(S) (${prod.pallet}) [C/D]`\n : prod.pallet === ''\n ? `${prod.palletQty} PALLET(S)`\n : `${prod.palletQty} PALLET(S) (${prod.pallet})`\n }\n })\n\n return { items, total }\n }\n\n @Query(returns => OrderInventoryList)\n async manualDeliveryOrderItems(\n @Arg('name') name: string,\n @Ctx() context: ResolverContext\n ): Promise<OrderInventoryList> {\n const { domain } = context.state\n const deliveryOrder: DeliveryOrder = await getRepository(DeliveryOrder).findOne({\n where: { domain: { id: domain.id }, name }\n })\n\n let [items, total] = await getRepository(OrderInventory).findAndCount({\n where: { domain: { id: domain.id }, deliveryOrder: { id: deliveryOrder.id } },\n relations: ['product']\n })\n\n items = items\n .map((oi: OrderInventory) => {\n const product: Product = oi.product\n return {\n inventory: oi.inventory,\n productId: product.id,\n productName: `${product.name} (${product.description})`,\n packingType: oi.packingType,\n batchId: oi.batchId,\n releaseQty: oi.releaseQty,\n releaseUomValue: oi.releaseUomValue,\n remark: oi.remark,\n crossDocking: oi.crossDocking,\n pallet: ''\n }\n })\n .reduce((newItem, item) => {\n var foundItem = newItem.find(\n newItem =>\n newItem.productName === item.productName &&\n newItem.batchId === item.batchId &&\n newItem.crossDocking === item.crossDocking &&\n newItem.pallet === item.pallet\n )\n if (!foundItem) {\n foundItem = {\n inventory: item.inventory,\n productId: item.productId,\n productName: item.productName,\n packingType: item.packingType,\n batchId: item.batchId,\n releaseQty: item.releaseQty,\n releaseUomValue: item.releaseUomValue,\n palletQty: 1,\n remark: item.remark,\n crossDocking: item.crossDocking,\n pallet: item.pallet\n }\n\n newItem.push(foundItem)\n return newItem\n } else {\n return newItem.map(ni => {\n if (\n ni.productName === item.productName &&\n ni.batchId === item.batchId &&\n ni.crossDocking === item.crossDocking &&\n ni.pallet === item.pallet\n ) {\n return {\n ...ni,\n palletQty: ni.palletQty + 1,\n releaseQty: ni.releaseQty + item.releaseQty,\n releaseUomValue: ni.releaseUomValue + item.releaseUomValue\n }\n } else {\n return ni\n }\n })\n }\n }, [])\n\n items = items.map((prod: any) => {\n return {\n ...prod,\n systemRemark: prod?.remark\n ? prod.remark\n : prod.crossDocking\n ? prod.pallet === ''\n ? `${prod.palletQty} PALLET(S) [C/D]`\n : `${prod.palletQty} PALLET(S) (${prod.pallet}) [C/D]`\n : prod.pallet === ''\n ? `${prod.palletQty} PALLET(S)`\n : `${prod.palletQty} PALLET(S) (${prod.pallet})`\n }\n })\n\n return { items, total }\n }\n\n @Query(returns => DeliveryOrderList)\n async deliveryOrderReport(@Ctx() context: ResolverContext, @Args() params: ListParam): Promise<DeliveryOrderList> {\n try {\n const { domain, user } = context.state\n\n const bizplaceFilter = params.filters.find(param => param.name === 'bizplaceId')\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 releaseGoodParam = params.filters.find(param => param.name === 'releaseGoodNo')\n if (releaseGoodParam) {\n let arrFilters = [] \n params.filters.splice(\n params.filters.findIndex(item => item.name == 'releaseGoodNo'),\n 1\n )\n arrFilters.push({ ...releaseGoodParam, name: 'name' })\n\n const foundReleaseGoods: ReleaseGood[] = await getRepository(ReleaseGood).find({\n ...convertListParams({ filters: arrFilters })\n })\n\n if (foundReleaseGoods && foundReleaseGoods.length) {\n params.filters.push({\n name: 'releaseGoodId',\n operator: 'in',\n value: foundReleaseGoods.map((releaseGood: ReleaseGood) => releaseGood.id),\n relation: false\n })\n }\n }\n\n const tzOffsetIdx = params.filters.findIndex(param => param.name === 'tzoffset')\n let tzOffset = 0\n if (tzOffsetIdx >= 0) {\n tzOffset = params.filters[tzOffsetIdx].value\n params.filters.splice(tzOffsetIdx, 1)\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 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 let refNoFilter = params.filters.find(x => x.name == 'refNo')\n let refNo2Filter = params.filters.find(x => x.name == 'refNo2')\n let refNo3Filter = params.filters.find(x => x.name == 'refNo3')\n\n params.filters = params.filters.filter(x => x.name != 'refNo' && x.name != 'refNo2' && x.name != 'refNo3')\n\n const qb: any = getRepository(DeliveryOrder).createQueryBuilder('do')\n buildQuery(qb, params, context)\n qb.addSelect('COALESCE(\"cc\".rank, 99999)', 'rank')\n qb.leftJoinAndSelect('do.domain', 'domain')\n qb.leftJoinAndSelect('do.bizplace', 'bizplace')\n qb.leftJoinAndSelect('do.releaseGood', 'releaseGood')\n qb.leftJoinAndSelect('do.transportDriver', 'td')\n qb.leftJoinAndSelect('do.transportVehicle', 'th')\n qb.leftJoinAndSelect('do.orderInventories', 'oi')\n qb.leftJoinAndSelect('oi.inventory', 'inv')\n qb.leftJoinAndSelect('inv.product', 'prd')\n qb.leftJoinAndSelect('do.creator', 'creator')\n qb.leftJoinAndSelect('do.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 = 'DELIVERY_STATUS'`)\n },\n 'cc',\n 'cc.status = do.status'\n )\n\n if (refNoFilter?.value) {\n qb.andWhere('releaseGood.ref_no ilike :refNo', { refNo: refNoFilter.value })\n }\n if (refNo2Filter?.value) {\n qb.andWhere('releaseGood.ref_no_2 ilike :refNo2', { refNo2: refNo2Filter.value })\n }\n if (refNo3Filter?.value) {\n qb.andWhere('releaseGood.ref_no_3 ilike :refNo3', { refNo3: refNo3Filter.value })\n }\n\n const arrChildSortData = ['refNo', 'refNo2', 'refNo3']\n const arrNameSortData = ['bizplace', 'releaseGood', 'updater']\n const sort: OrderByCondition = (params.sortings || []).reduce(\n (acc, sort) => ({\n ...acc,\n [arrChildSortData.indexOf(sort.name) >= 0\n ? 'releaseGood.' + sort.name\n : arrNameSortData.indexOf(sort.name) >= 0\n ? sort.name + '.name'\n : 'do.' + sort.name]: sort.desc ? 'DESC' : 'ASC'\n }),\n params.sortings.length < 1 ? { rank: 'ASC', 'do.createdAt': 'DESC' } : {}\n )\n\n qb.orderBy(sort)\n\n const [items, total] = await qb.getManyAndCount()\n return { items, total }\n } catch (error) {\n debug('deliveryOrders', error.toString())\n throw error\n }\n }\n\n @FieldResolver(type => Domain)\n async domain(@Root() deliveryOrder: DeliveryOrder): Promise<Domain> {\n return await getRepository(Domain).findOneBy({ id: deliveryOrder.domainId })\n }\n\n @FieldResolver(type => User)\n async creator(@Root() deliveryOrder: DeliveryOrder): Promise<User> {\n return await getRepository(User).findOneBy({ id: deliveryOrder.creatorId })\n }\n\n @FieldResolver(type => User)\n async updater(@Root() deliveryOrder: DeliveryOrder): Promise<User> {\n return await getRepository(User).findOneBy({ id: deliveryOrder.updaterId })\n }\n}\n\nexport async function deliveryOrderByReleaseGood(releaseGood: ReleaseGood, trxMgr?: EntityManager): Promise<any> {\n const doRepo: Repository<DeliveryOrder> = trxMgr?.getRepository(DeliveryOrder) || getRepository(DeliveryOrder)\n const oiRepo: Repository<OrderInventory> = trxMgr?.getRepository(OrderInventory) || getRepository(OrderInventory)\n\n let [items, total] = await doRepo.findAndCount({\n where: { releaseGood: { id: releaseGood.id } },\n relations: ['domain', 'bizplace', 'releaseGood', 'transportDriver', 'transportVehicle', 'creator', 'updater']\n })\n\n items = await Promise.all(\n items.map(async (deliveryOrder: DeliveryOrder) => {\n return {\n ...deliveryOrder,\n truck: deliveryOrder?.truckNo || deliveryOrder.transportVehicle?.name || null,\n targetInventories: await oiRepo.find({\n where: { deliveryOrder: { id: deliveryOrder.id } },\n relations: ['domain', 'bizplace', 'releaseGood', 'inventory']\n })\n }\n })\n )\n\n return {\n items,\n total\n }\n}\n"]}
|
|
@@ -132,7 +132,9 @@ let DraftReleaseGoodMutation = class DraftReleaseGoodMutation {
|
|
|
132
132
|
relations: ['company', 'company.domain']
|
|
133
133
|
});
|
|
134
134
|
const companyDomain = foundPermittedBizplace.company.domain;
|
|
135
|
-
companyBizplace = await parentTx
|
|
135
|
+
companyBizplace = await parentTx
|
|
136
|
+
.getRepository(biz_base_1.Bizplace)
|
|
137
|
+
.findOne({ where: { domain: { id: companyDomain.id } } });
|
|
136
138
|
}
|
|
137
139
|
else {
|
|
138
140
|
return false;
|
|
@@ -501,12 +503,12 @@ async function upsertDraftReleaseGoodProducts(domain, bizplace, draftReleaseGood
|
|
|
501
503
|
let updatePatch = Object.assign(Object.assign(Object.assign({}, existingOP), op), { domain, batchId: '', packQty: 0, actualPackQty: 0, palletQty: 0, actualPalletQty: 0, bizplace: bizplace, name: (op === null || op === void 0 ? void 0 : op.id) ? op.name : utils_1.OrderNoGenerator.orderProduct(), draftReleaseGood: draftReleaseGood, status: draftReleaseGood.status, creator: (op === null || op === void 0 ? void 0 : op.id) ? op.creator : user, updater: user });
|
|
502
504
|
if ((_a = op === null || op === void 0 ? void 0 : op.product) === null || _a === void 0 ? void 0 : _a.id) {
|
|
503
505
|
product = await productRepo.findOne({
|
|
504
|
-
where: { domain: customerCompanyDomain, id: op.product.id }
|
|
506
|
+
where: { domain: { id: customerCompanyDomain.id }, id: op.product.id }
|
|
505
507
|
});
|
|
506
508
|
updatePatch['product'] = product || undefined;
|
|
507
509
|
if (!product) {
|
|
508
510
|
productBundle = await productBundleRepo.findOne({
|
|
509
|
-
where: { domain: customerCompanyDomain, id: op.product.id }
|
|
511
|
+
where: { domain: { id: customerCompanyDomain.id }, id: op.product.id }
|
|
510
512
|
});
|
|
511
513
|
updatePatch['productBundle'] = productBundle || undefined;
|
|
512
514
|
}
|
|
@@ -522,7 +524,7 @@ async function upsertDraftReleaseGoodProducts(domain, bizplace, draftReleaseGood
|
|
|
522
524
|
}
|
|
523
525
|
else {
|
|
524
526
|
product = await productRepo.findOne({
|
|
525
|
-
where: { domain: customerCompanyDomain, sku: op.product.sku, deletedAt: (0, typeorm_1.IsNull)() },
|
|
527
|
+
where: { domain: { id: customerCompanyDomain.id }, sku: op.product.sku, deletedAt: (0, typeorm_1.IsNull)() },
|
|
526
528
|
relations: ['productDetails']
|
|
527
529
|
});
|
|
528
530
|
if (product) {
|
|
@@ -541,7 +543,7 @@ async function upsertDraftReleaseGoodProducts(domain, bizplace, draftReleaseGood
|
|
|
541
543
|
updatePatch['product'] = product || undefined;
|
|
542
544
|
if (!product) {
|
|
543
545
|
productBundle = await productBundleRepo.findOne({
|
|
544
|
-
where: { domain: customerCompanyDomain, sku: op.product.sku }
|
|
546
|
+
where: { domain: { id: customerCompanyDomain.id }, sku: op.product.sku }
|
|
545
547
|
});
|
|
546
548
|
updatePatch['productBundle'] = productBundle || undefined;
|
|
547
549
|
}
|