@things-factory/operato-hub 5.0.13 → 6.0.0-alpha.1
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/bizplace-initializer/dataset/codes.js +9 -0
- package/dist-server/controllers/bizplace-initializer/dataset/codes.js.map +1 -1
- package/dist-server/controllers/bizplace-initializer/dataset/settings.js +5 -0
- package/dist-server/controllers/bizplace-initializer/dataset/settings.js.map +1 -1
- package/dist-server/controllers/bizplace-initializer/generate-bizplace-domain-roles.js +3 -3
- package/dist-server/controllers/bizplace-initializer/generate-bizplace-domain-roles.js.map +1 -1
- package/dist-server/controllers/bizplace-initializer/generate-bizplace-domain.js +2 -2
- package/dist-server/controllers/bizplace-initializer/generate-bizplace-domain.js.map +1 -1
- package/dist-server/controllers/bizplace-initializer/menus.js +2 -2
- package/dist-server/controllers/bizplace-initializer/menus.js.map +1 -1
- package/dist-server/controllers/company-initializer/business-register.js +6 -7
- package/dist-server/controllers/company-initializer/business-register.js.map +1 -1
- package/dist-server/controllers/company-initializer/generate-company-roles.js +4 -4
- package/dist-server/controllers/company-initializer/generate-company-roles.js.map +1 -1
- package/dist-server/controllers/invitation.js +9 -9
- package/dist-server/controllers/invitation.js.map +1 -1
- package/dist-server/controllers/utils/save-invitation-token.js +2 -2
- package/dist-server/controllers/utils/save-invitation-token.js.map +1 -1
- package/dist-server/graphql/resolvers/generators/generate-bizplace.js.map +1 -1
- package/dist-server/graphql/resolvers/generators/generate-company.js +4 -3
- package/dist-server/graphql/resolvers/generators/generate-company.js.map +1 -1
- package/dist-server/graphql/resolvers/generators/update-domain-extType.js +1 -1
- package/dist-server/graphql/resolvers/generators/update-domain-extType.js.map +1 -1
- package/dist-server/graphql/resolvers/invitations/partner-invitation.js +6 -6
- package/dist-server/graphql/resolvers/invitations/partner-invitation.js.map +1 -1
- package/dist-server/graphql/resolvers/oauth2/company-roles-by-scope.js +5 -2
- package/dist-server/graphql/resolvers/oauth2/company-roles-by-scope.js.map +1 -1
- package/dist-server/graphql/resolvers/synchronization/auto-update-all-marketplace-product-variation-quantity.js +149 -0
- package/dist-server/graphql/resolvers/synchronization/auto-update-all-marketplace-product-variation-quantity.js.map +1 -0
- package/dist-server/graphql/resolvers/synchronization/create-dat-shipments.js +58 -0
- package/dist-server/graphql/resolvers/synchronization/create-dat-shipments.js.map +1 -0
- package/dist-server/graphql/resolvers/synchronization/fetch-sync-products.js +3 -3
- package/dist-server/graphql/resolvers/synchronization/fetch-sync-products.js.map +1 -1
- package/dist-server/graphql/resolvers/synchronization/index.js +6 -2
- package/dist-server/graphql/resolvers/synchronization/index.js.map +1 -1
- package/dist-server/graphql/resolvers/synchronization/sellercraft-pack-marketplace-order.js +68 -0
- package/dist-server/graphql/resolvers/synchronization/sellercraft-pack-marketplace-order.js.map +1 -0
- package/dist-server/graphql/resolvers/synchronization/sync-all-products-to-sellercraft.js +35 -0
- package/dist-server/graphql/resolvers/synchronization/sync-all-products-to-sellercraft.js.map +1 -0
- package/dist-server/graphql/resolvers/synchronization/sync-products-from-account.js +1 -1
- package/dist-server/graphql/resolvers/synchronization/sync-products-from-account.js.map +1 -1
- package/dist-server/graphql/resolvers/synchronization/sync-products-to-account.js +1 -1
- package/dist-server/graphql/resolvers/synchronization/sync-products-to-account.js.map +1 -1
- package/dist-server/graphql/resolvers/synchronization/sync-products-to-sellercraft.js +4 -2
- package/dist-server/graphql/resolvers/synchronization/sync-products-to-sellercraft.js.map +1 -1
- package/dist-server/graphql/types/synchronization/index.js +4 -0
- package/dist-server/graphql/types/synchronization/index.js.map +1 -1
- package/dist-server/index.js +5 -5
- package/dist-server/index.js.map +1 -1
- package/dist-server/middlewares/business-middleware.js +2 -3
- package/dist-server/middlewares/business-middleware.js.map +1 -1
- package/dist-server/middlewares/store-middleware.js +2 -2
- package/dist-server/middlewares/store-middleware.js.map +1 -1
- package/dist-server/middlewares/warehouse-middleware.js +3 -2
- package/dist-server/middlewares/warehouse-middleware.js.map +1 -1
- package/dist-server/migrations/1597668478399-SeedBusinessDomain.js +2 -3
- package/dist-server/migrations/1597668478399-SeedBusinessDomain.js.map +1 -1
- package/dist-server/migrations/1597668478401-SeedBusinessRoles.js +2 -2
- package/dist-server/migrations/1597668478401-SeedBusinessRoles.js.map +1 -1
- package/dist-server/migrations/1608009991065-SeedUser.js +5 -6
- package/dist-server/migrations/1608009991065-SeedUser.js.map +1 -1
- package/dist-server/routers/api/restful-apis/unstable/add-draft-release-order.js +2 -1
- package/dist-server/routers/api/restful-apis/unstable/add-draft-release-order.js.map +1 -1
- package/dist-server/routers/api/restful-apis/unstable/add-inbound-order.js +5 -4
- package/dist-server/routers/api/restful-apis/unstable/add-inbound-order.js.map +1 -1
- package/dist-server/routers/api/restful-apis/unstable/add-marketplace-order.js +5 -2
- package/dist-server/routers/api/restful-apis/unstable/add-marketplace-order.js.map +1 -1
- package/dist-server/routers/api/restful-apis/unstable/add-products.js +32 -16
- package/dist-server/routers/api/restful-apis/unstable/add-products.js.map +1 -1
- package/dist-server/routers/api/restful-apis/unstable/add-release-order.js +149 -40
- package/dist-server/routers/api/restful-apis/unstable/add-release-order.js.map +1 -1
- package/dist-server/routers/api/restful-apis/unstable/cancel-release-order.js +4 -4
- package/dist-server/routers/api/restful-apis/unstable/cancel-release-order.js.map +1 -1
- package/dist-server/routers/api/restful-apis/unstable/get-delivery-orders.js +27 -11
- package/dist-server/routers/api/restful-apis/unstable/get-delivery-orders.js.map +1 -1
- package/dist-server/routers/api/restful-apis/unstable/get-goods-received-notes.js +9 -2
- package/dist-server/routers/api/restful-apis/unstable/get-goods-received-notes.js.map +1 -1
- package/dist-server/routers/api/restful-apis/unstable/get-onhand-inventories.js +2 -2
- package/dist-server/routers/api/restful-apis/unstable/get-onhand-inventories.js.map +1 -1
- package/dist-server/routers/api/restful-apis/unstable/get-partners.js +5 -4
- package/dist-server/routers/api/restful-apis/unstable/get-partners.js.map +1 -1
- package/dist-server/routers/api/restful-apis/unstable/get-products.js +1 -0
- package/dist-server/routers/api/restful-apis/unstable/get-products.js.map +1 -1
- package/dist-server/routers/api/restful-apis/unstable/get-warehouses.js +2 -2
- package/dist-server/routers/api/restful-apis/unstable/get-warehouses.js.map +1 -1
- package/dist-server/routers/api/restful-apis/unstable/update-release-order-details.js +2 -2
- package/dist-server/routers/api/restful-apis/unstable/update-release-order-details.js.map +1 -1
- package/dist-server/routers/api/restful-apis/v1/add-inbound-order.js +6 -5
- package/dist-server/routers/api/restful-apis/v1/add-inbound-order.js.map +1 -1
- package/dist-server/routers/api/restful-apis/v1/add-marketplace-order.js +8 -5
- package/dist-server/routers/api/restful-apis/v1/add-marketplace-order.js.map +1 -1
- package/dist-server/routers/api/restful-apis/v1/add-products.js +32 -16
- package/dist-server/routers/api/restful-apis/v1/add-products.js.map +1 -1
- package/dist-server/routers/api/restful-apis/v1/add-release-order.js +8 -6
- package/dist-server/routers/api/restful-apis/v1/add-release-order.js.map +1 -1
- package/dist-server/routers/api/restful-apis/v1/cancel-release-order.js +4 -4
- package/dist-server/routers/api/restful-apis/v1/cancel-release-order.js.map +1 -1
- package/dist-server/routers/api/restful-apis/v1/get-delivery-orders.js +27 -11
- package/dist-server/routers/api/restful-apis/v1/get-delivery-orders.js.map +1 -1
- package/dist-server/routers/api/restful-apis/v1/get-goods-received-notes.js +9 -2
- package/dist-server/routers/api/restful-apis/v1/get-goods-received-notes.js.map +1 -1
- package/dist-server/routers/api/restful-apis/v1/get-onhand-inventories.js +2 -2
- package/dist-server/routers/api/restful-apis/v1/get-onhand-inventories.js.map +1 -1
- package/dist-server/routers/api/restful-apis/v1/get-partners.js +5 -4
- package/dist-server/routers/api/restful-apis/v1/get-partners.js.map +1 -1
- package/dist-server/routers/api/restful-apis/v1/get-products.js +1 -0
- package/dist-server/routers/api/restful-apis/v1/get-products.js.map +1 -1
- package/dist-server/routers/api/restful-apis/v1/get-warehouses.js +2 -2
- package/dist-server/routers/api/restful-apis/v1/get-warehouses.js.map +1 -1
- package/dist-server/routers/api/restful-apis/v1/update-release-order-details.js +2 -2
- package/dist-server/routers/api/restful-apis/v1/update-release-order-details.js.map +1 -1
- package/dist-server/routers/api/restful-apis/v2/add-inbound-order.js +6 -5
- package/dist-server/routers/api/restful-apis/v2/add-inbound-order.js.map +1 -1
- package/dist-server/routers/api/restful-apis/v2/add-marketplace-order.js +8 -5
- package/dist-server/routers/api/restful-apis/v2/add-marketplace-order.js.map +1 -1
- package/dist-server/routers/api/restful-apis/v2/add-products.js +32 -16
- package/dist-server/routers/api/restful-apis/v2/add-products.js.map +1 -1
- package/dist-server/routers/api/restful-apis/v2/add-release-order.js +8 -6
- package/dist-server/routers/api/restful-apis/v2/add-release-order.js.map +1 -1
- package/dist-server/routers/api/restful-apis/v2/cancel-release-order.js +4 -4
- package/dist-server/routers/api/restful-apis/v2/cancel-release-order.js.map +1 -1
- package/dist-server/routers/api/restful-apis/v2/get-delivery-orders.js +27 -11
- package/dist-server/routers/api/restful-apis/v2/get-delivery-orders.js.map +1 -1
- package/dist-server/routers/api/restful-apis/v2/get-goods-received-notes.js +9 -2
- package/dist-server/routers/api/restful-apis/v2/get-goods-received-notes.js.map +1 -1
- package/dist-server/routers/api/restful-apis/v2/get-onhand-inventories.js +2 -2
- package/dist-server/routers/api/restful-apis/v2/get-onhand-inventories.js.map +1 -1
- package/dist-server/routers/api/restful-apis/v2/get-partners.js +5 -4
- package/dist-server/routers/api/restful-apis/v2/get-partners.js.map +1 -1
- package/dist-server/routers/api/restful-apis/v2/get-products.js +1 -0
- package/dist-server/routers/api/restful-apis/v2/get-products.js.map +1 -1
- package/dist-server/routers/api/restful-apis/v2/get-warehouses.js +2 -2
- package/dist-server/routers/api/restful-apis/v2/get-warehouses.js.map +1 -1
- package/dist-server/routers/api/restful-apis/v2/update-release-order-details.js +2 -2
- package/dist-server/routers/api/restful-apis/v2/update-release-order-details.js.map +1 -1
- package/dist-server/routers/auth-invitation-router.js +2 -2
- package/dist-server/routers/auth-invitation-router.js.map +1 -1
- package/dist-server/routers/business/bizplace-register-router.js +3 -3
- package/dist-server/routers/business/bizplace-register-router.js.map +1 -1
- package/dist-server/tsconfig.tsbuildinfo +1 -1
- package/dist-server/utils/get-warehouses.js +15 -11
- package/dist-server/utils/get-warehouses.js.map +1 -1
- package/openapi/unstable/product.yaml +9 -3
- package/openapi/v1/product.yaml +9 -3
- package/openapi/v2/product.yaml +9 -3
- package/package.json +47 -47
- package/server/controllers/bizplace-initializer/dataset/codes.ts +9 -0
- package/server/controllers/bizplace-initializer/dataset/settings.ts +5 -0
- package/server/controllers/bizplace-initializer/generate-bizplace-domain-roles.ts +4 -2
- package/server/controllers/bizplace-initializer/generate-bizplace-domain.ts +4 -3
- package/server/controllers/bizplace-initializer/menus.ts +4 -2
- package/server/controllers/company-initializer/business-register.ts +5 -3
- package/server/controllers/company-initializer/generate-company-roles.ts +4 -3
- package/server/controllers/invitation.ts +11 -7
- package/server/controllers/utils/save-invitation-token.ts +1 -1
- package/server/graphql/resolvers/generators/generate-bizplace.ts +1 -1
- package/server/graphql/resolvers/generators/generate-company.ts +5 -4
- package/server/graphql/resolvers/generators/update-domain-extType.ts +7 -5
- package/server/graphql/resolvers/invitations/partner-invitation.ts +5 -5
- package/server/graphql/resolvers/oauth2/company-roles-by-scope.ts +8 -6
- package/server/graphql/resolvers/synchronization/auto-update-all-marketplace-product-variation-quantity.ts +180 -0
- package/server/graphql/resolvers/synchronization/create-dat-shipments.ts +64 -0
- package/server/graphql/resolvers/synchronization/fetch-sync-products.ts +3 -2
- package/server/graphql/resolvers/synchronization/index.ts +10 -2
- package/server/graphql/resolvers/synchronization/sellercraft-pack-marketplace-order.ts +91 -0
- package/server/graphql/resolvers/synchronization/sync-all-products-to-sellercraft.ts +39 -0
- package/server/graphql/resolvers/synchronization/sync-products-from-account.ts +4 -4
- package/server/graphql/resolvers/synchronization/sync-products-to-account.ts +4 -4
- package/server/graphql/resolvers/synchronization/sync-products-to-sellercraft.ts +19 -12
- package/server/graphql/types/synchronization/index.ts +4 -0
- package/server/index.ts +7 -7
- package/server/middlewares/business-middleware.ts +1 -2
- package/server/middlewares/store-middleware.ts +1 -1
- package/server/middlewares/warehouse-middleware.ts +3 -2
- package/server/migrations/1597668478399-SeedBusinessDomain.ts +3 -2
- package/server/migrations/1597668478401-SeedBusinessRoles.ts +2 -2
- package/server/migrations/1608009991065-SeedUser.ts +5 -3
- package/server/routers/api/restful-apis/unstable/add-draft-release-order.ts +2 -1
- package/server/routers/api/restful-apis/unstable/add-inbound-order.ts +3 -2
- package/server/routers/api/restful-apis/unstable/add-marketplace-order.ts +13 -2
- package/server/routers/api/restful-apis/unstable/add-products.ts +40 -16
- package/server/routers/api/restful-apis/unstable/add-release-order.ts +98 -48
- package/server/routers/api/restful-apis/unstable/cancel-release-order.ts +2 -2
- package/server/routers/api/restful-apis/unstable/get-delivery-orders.ts +27 -11
- package/server/routers/api/restful-apis/unstable/get-goods-received-notes.ts +9 -2
- package/server/routers/api/restful-apis/unstable/get-onhand-inventories.ts +1 -1
- package/server/routers/api/restful-apis/unstable/get-partners.ts +4 -2
- package/server/routers/api/restful-apis/unstable/get-products.ts +1 -0
- package/server/routers/api/restful-apis/unstable/get-warehouses.ts +3 -2
- package/server/routers/api/restful-apis/unstable/update-release-order-details.ts +1 -1
- package/server/routers/api/restful-apis/v1/add-inbound-order.ts +4 -3
- package/server/routers/api/restful-apis/v1/add-marketplace-order.ts +17 -5
- package/server/routers/api/restful-apis/v1/add-products.ts +40 -16
- package/server/routers/api/restful-apis/v1/add-release-order.ts +10 -6
- package/server/routers/api/restful-apis/v1/cancel-release-order.ts +2 -2
- package/server/routers/api/restful-apis/v1/get-delivery-orders.ts +27 -11
- package/server/routers/api/restful-apis/v1/get-goods-received-notes.ts +9 -2
- package/server/routers/api/restful-apis/v1/get-onhand-inventories.ts +1 -1
- package/server/routers/api/restful-apis/v1/get-partners.ts +4 -2
- package/server/routers/api/restful-apis/v1/get-products.ts +1 -0
- package/server/routers/api/restful-apis/v1/get-warehouses.ts +3 -2
- package/server/routers/api/restful-apis/v1/update-release-order-details.ts +1 -1
- package/server/routers/api/restful-apis/v2/add-inbound-order.ts +4 -3
- package/server/routers/api/restful-apis/v2/add-marketplace-order.ts +17 -5
- package/server/routers/api/restful-apis/v2/add-products.ts +40 -16
- package/server/routers/api/restful-apis/v2/add-release-order.ts +10 -6
- package/server/routers/api/restful-apis/v2/cancel-release-order.ts +2 -2
- package/server/routers/api/restful-apis/v2/get-delivery-orders.ts +27 -11
- package/server/routers/api/restful-apis/v2/get-goods-received-notes.ts +9 -2
- package/server/routers/api/restful-apis/v2/get-onhand-inventories.ts +1 -1
- package/server/routers/api/restful-apis/v2/get-partners.ts +4 -2
- package/server/routers/api/restful-apis/v2/get-products.ts +1 -0
- package/server/routers/api/restful-apis/v2/get-warehouses.ts +3 -2
- package/server/routers/api/restful-apis/v2/update-release-order-details.ts +1 -1
- package/server/routers/auth-invitation-router.ts +2 -2
- package/server/routers/business/bizplace-register-router.ts +3 -1
- package/server/utils/get-warehouses.ts +46 -36
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"add-release-order.js","sourceRoot":"","sources":["../../../../../server/routers/api/restful-apis/unstable/add-release-order.ts"],"names":[],"mappings":"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","sourcesContent":["import { EntityManager, getConnection, getRepository, In, Not, Repository, SelectQueryBuilder } from 'typeorm'\nimport { v4 as uuidv4 } from 'uuid'\n\nimport { restfulApiRouter as router } from '@things-factory/api'\nimport { User } from '@things-factory/auth-base'\nimport { Bizplace, getCompanyBizplace } from '@things-factory/biz-base'\nimport { logger } from '@things-factory/env'\nimport { generateId } from '@things-factory/id-rule-base'\nimport { createPayloadLog, PayloadType } from '@things-factory/integration-base'\nimport { Sellercraft } from '@things-factory/integration-sellercraft'\nimport { MarketplaceOrder } from '@things-factory/marketplace-base'\nimport { ProductBundle, ProductDetail } from '@things-factory/product-base'\nimport {\n createDraftReleaseGoodFunction,\n DRAFT_RELEASE_ORDER_STATUS,\n DraftReleaseGood,\n ORDER_INVENTORY_STATUS,\n ORDER_NUMBER_RULE_TYPE,\n ORDER_NUMBER_SETTING_KEY,\n ORDER_PRODUCT_STATUS,\n ORDER_STATUS,\n ORDER_TYPES,\n OrderInventory,\n OrderNoGenerator,\n OrderProduct,\n ReleaseGood,\n SellercraftController\n} from '@things-factory/sales-base'\nimport { Setting } from '@things-factory/setting-base'\nimport { Domain } from '@things-factory/shell'\nimport { Inventory, INVENTORY_STATUS, LOCATION_TYPE } from '@things-factory/warehouse-base'\n\nimport { ValidationError } from '../../../../errors/index'\nimport { businessMiddleware } from '../../../../middlewares/business-middleware'\nimport { warehouseMiddleware } from '../../../../middlewares/warehouse-middleware'\n\nconst debug = require('debug')('things-factory:operato-hub:restful-api:unstable:add-release-order')\nconst apiVersion = 'unstable'\n\nrouter.post(\n `/${apiVersion}/warehouse/:warehouseId/add-release-order`,\n businessMiddleware,\n warehouseMiddleware,\n async (context, next) => {\n return await getConnection().transaction(async (tx: EntityManager) => {\n const { client, domain, user } = context.state\n const { warehouseId: customerBizplaceId } = context.params\n const { t } = context\n const bodyReq = context.request.body\n const requiredDraft: Boolean = bodyReq.hasOwnProperty('requiredDraft') ? bodyReq.requiredDraft : true\n let releaseGood\n let massagedData = { orderProducts: [], combinedItems: [] }\n // const isAutoAssign: Boolean = bodyReq.hasOwnProperty('isAutoAssign') ? bodyReq.isAutoAssign : true\n\n try {\n if (!customerBizplaceId) context.throw(404, t('error.warehouse id not found'))\n\n if (typeof bodyReq === undefined || !Object.keys(bodyReq)?.length) {\n context.throw(400, t('error.invalid body request format'))\n }\n debug('post:/add-release-order request.body', bodyReq)\n await checkMandatoryKey(context, bodyReq)\n\n // get customer company's bizplace\n const custCompanyBizplace: Bizplace = await getCompanyBizplace(null, null, customerBizplaceId, tx)\n const customerBizplace: Bizplace = await tx.getRepository(Bizplace).findOne({\n where: { id: customerBizplaceId },\n relations: ['domain']\n })\n\n releaseGood = {\n domain,\n bizplace: customerBizplace,\n companyBizplace: custCompanyBizplace,\n courierOption: bodyReq.courierOption,\n collectionOrderNo: bodyReq.collectionOrderNo,\n exportOption: bodyReq.exportOption,\n ownTransport: bodyReq.ownTransport,\n packingOption: bodyReq.packingOption,\n refNo: bodyReq.refNo,\n refNo2: bodyReq?.refNo2,\n refNo3: bodyReq?.refNo3,\n releaseDate: bodyReq.releaseDate,\n type: bodyReq.type,\n marketplaceOrderStatus: bodyReq?.marketplaceOrderStatus,\n remark: bodyReq?.remark || null,\n billingAddress: bodyReq?.billTo?.billingAddress || null,\n deliveryAddress1: bodyReq?.deliverTo?.deliveryAddress1 || null,\n deliveryAddress2: bodyReq?.deliverTo?.deliveryAddress2 || null,\n deliveryAddress3: bodyReq?.deliverTo?.deliveryAddress3 || null,\n deliveryAddress4: bodyReq?.deliverTo?.deliveryAddress4 || null,\n deliveryAddress5: bodyReq?.deliverTo?.deliveryAddress5 || null,\n attentionTo: bodyReq?.deliverTo?.attentionTo || null,\n attentionCompany: bodyReq?.deliverTo?.attentionCompany || null,\n city: bodyReq?.deliverTo?.city || null,\n state: bodyReq?.deliverTo?.state || null,\n postalCode: bodyReq?.deliverTo?.postalCode || null,\n country: bodyReq?.deliverTo?.country || null,\n phone1: bodyReq?.deliverTo?.phone1 || null,\n phone2: bodyReq?.deliverTo?.phone2 || null,\n email: bodyReq?.deliverTo?.email || null,\n transporter: bodyReq?.transporter,\n trackingNo: bodyReq?.trackingNo,\n airwayBill: bodyReq?.airwayBill,\n invoice: bodyReq?.invoice,\n storeName: bodyReq?.storeName,\n storeId: bodyReq?.storeId,\n routeId: bodyReq?.routeId,\n stopId: bodyReq?.stopId\n }\n\n // check existing order\n await checkExistingOrder(releaseGood, customerBizplace, context, tx)\n\n //massage data\n massagedData = await massageOrderItems(releaseGood, bodyReq.orderInventories, context)\n\n // validation\n let errorList = []\n await Promise.all(\n massagedData.combinedItems.map(async item => {\n let itemList = await tx.query(\n `\n select wboi.* from warehouse_bizplace_onhand_inventories wboi \n where wboi.\"domainId\"= $1 and \n wboi.\"bizplaceId\" = $2 and \n wboi.\"groupType\" = 'SINGLE' and \n wboi.\"productId\" = $3 and\n wboi.\"packingType\" = $4 and\n wboi.\"packingSize\" = $5 and\n wboi.\"uom\" = $6 and\n wboi.\"remainQty\" >= $7 and\n wboi.\"remainUomValue\" >= $8\n `,\n [\n domain.id,\n customerBizplace.id,\n item.product.id,\n item.packingType,\n item.packingSize,\n item.uom,\n item.releaseQty,\n item.releaseUomValue\n ]\n )\n if (itemList.length <= 0) {\n errorList.push(\n JSON.stringify({\n code: 'insufficient stock',\n sku: item.product.sku,\n packingType: item.packingType,\n packingSize: item.packingSize,\n uom: item.uom,\n qty: item.releaseQty,\n uom_value: item.releaseUomValue\n })\n )\n }\n console.log()\n })\n )\n\n if (errorList.length > 0) {\n throw new ValidationError({\n errorCode: 'INSUFFICIENT_STOCK',\n message: 'insufficient stock',\n detail: errorList.join(', ')\n })\n }\n // assignment\n console.time('assign')\n let assignedOrderProducts = await assignToInventory(massagedData.orderProducts, customerBizplace, context, tx)\n console.timeEnd('assign')\n\n // create order\n console.time('save')\n let result = await createReleaseGood(releaseGood, assignedOrderProducts, customerBizplace, context, tx)\n console.timeEnd('save')\n\n const sellercraft: Sellercraft = await tx.getRepository(Sellercraft).findOne({ domain: customerBizplace.domain })\n if (sellercraft) {\n try {\n const sellercraftCtrl: SellercraftController = new SellercraftController(tx, domain, user)\n let packageInfo = await sellercraftCtrl.packOrder(sellercraft, {\n ...result,\n orderProducts: result.orderProducts\n })\n\n await getRepository(ReleaseGood).update({ id: result.id }, { packageId: packageInfo.packageId })\n } catch (error) {\n logger.error(`add-release-order[packageId][OrderNo: ${result.name}]: ${JSON.stringify(error)}`)\n }\n }\n\n let addReleaseGood = {\n id: result.id,\n name: result.name,\n refNo: result.refNo,\n refNo2: result.refNo2,\n refNo3: result.refNo3,\n status: result.status,\n truckNo: result.truckNo,\n ownTransport: result.ownTransport,\n crossDocking: result.crossDocking,\n marketplaceOrderStatus: result.marketplaceOrderStatus,\n billingAddress: result.billingAddress,\n deliveryAddress1: result.deliveryAddress1,\n deliveryAddress2: result.deliveryAddress2,\n deliveryAddress3: result.deliveryAddress3,\n deliveryAddress4: result.deliveryAddress4,\n deliveryAddress5: result.deliveryAddress5,\n attentionTo: result.attentionTo,\n attentionCompany: result.attentionCompany,\n city: result.city,\n state: result.state,\n postalCode: result.postalCode,\n country: result.country,\n phone1: result.phone1,\n phone2: result.phone2,\n email: result.email,\n transporter: result.transporter,\n trackingNo: result.trackingNo,\n airwayBill: result.airwayBill,\n invoice: result.invoice,\n type: result.type,\n storeName: result.storeName,\n storeId: result.storeId,\n routeId: result.routeId,\n stopId: result.stopId,\n exportOption: result.exportOption,\n releaseDate: result.releaseDate,\n collectionOrderNo: result.collectionOrderNo,\n bizplace: { name: result.bizplace.name },\n domain: { name: result.domain.name },\n orderInventories: result.orderInventories\n }\n // return body\n context.body = { result: { addReleaseGood } }\n\n createPayloadLog(\n customerBizplaceId,\n `/${apiVersion}/warehouse/:warehouseId/add-release-order`,\n bodyReq,\n context.body,\n context,\n PayloadType.INGESTION\n )\n } catch (error) {\n createPayloadLog(\n customerBizplaceId,\n `/${apiVersion}/warehouse/:warehouseId/add-release-order`,\n bodyReq,\n error,\n context,\n PayloadType.INGESTION\n )\n\n if (error.errorCode) {\n if (error.errorCode == 'INSUFFICIENT_STOCK' && requiredDraft) {\n await createDraftOrder(releaseGood, massagedData.orderProducts, context)\n }\n }\n logger.error(`add-release-order: ${JSON.stringify(error)}`)\n context.throw(400, context.t(error))\n }\n })\n }\n)\n\nasync function checkMandatoryKey(context, params) {\n let noparams = ['releaseDate', 'exportOption'].filter(param => !(param in params))\n\n if ('ownTransport' in params) {\n if (params.ownTransport == true) {\n if (!params.hasOwnProperty('collectionOrderNo')) {\n noparams.push('collectionOrderNo')\n }\n }\n } else {\n noparams.push('ownTransport')\n }\n\n if ('exportOption' in params) {\n if (params.exportOption === true) {\n if (\n params.exportOption.filter(\n record =>\n !record.containerNo || !record.containerArrivalDate || !record.containerLeavingDate || !record.shipName\n ).length\n ) {\n noparams.push('exportOption')\n }\n }\n }\n\n if ('orderInventories' in params) {\n params.orderInventories.forEach((param, key) => {\n let noSubParams = []\n\n if (!param?.releaseQty) noSubParams.push('releaseQty')\n\n if (!param?.product) noSubParams.push('product')\n\n if (noSubParams?.length)\n context.throw(400, context.t('error.required param x not found', { x: `${noSubParams.join(', ')}` }))\n })\n } else {\n noparams.push('orderInventories')\n }\n\n if (noparams?.length) {\n context.throw(400, context.t('error.required param x not found', { x: `${noparams.join(', ')}` }))\n }\n\n return params\n}\n\nasync function checkExistingOrder(releaseGood, bizplace, context, tx) {\n const { domain, user }: { domain: Domain; user: User } = context.state\n const refNo: string = releaseGood.refNo\n const refNo2: string = releaseGood.refNo2\n const refNo3: string = releaseGood.refNo3\n\n if (releaseGood.type == 'b2c') {\n const foundDraftReleaseGood: DraftReleaseGood = await tx.getRepository(DraftReleaseGood).findOne({\n where: {\n domain,\n refNo: refNo || null,\n refNo2: refNo2 || null,\n refNo3: refNo3 || null,\n status: Not(In([DRAFT_RELEASE_ORDER_STATUS.CANCELLED]))\n }\n })\n\n if (foundDraftReleaseGood) {\n throw new ValidationError({\n errorCode: 'EXISTING_ORDER',\n message: 'existing draft release order found',\n detail: foundDraftReleaseGood.name\n })\n }\n\n const sellercraft: Sellercraft = await tx.getRepository(Sellercraft).findOne({ domain: bizplace.domain })\n\n if (sellercraft) {\n const sellercraftCtrl: SellercraftController = new SellercraftController(tx, bizplace.domain, user)\n await sellercraftCtrl.checkExistingReleaseGood(sellercraft, releaseGood)\n } else {\n const foundReleaseGood: ReleaseGood = await tx.getRepository(ReleaseGood).findOne({\n where: {\n domain: domain,\n refNo,\n status: Not(In([ORDER_STATUS.CANCELLED, ORDER_STATUS.PENDING_CANCEL]))\n },\n relations: ['bizplace', 'bizplace.domain', 'bizplace.company', 'bizplace.company.domain']\n })\n\n if (foundReleaseGood) {\n const customerCompanyDomain: Domain = foundReleaseGood.bizplace.company.domain\n const marketplaceOrder: MarketplaceOrder = await tx.getRepository(MarketplaceOrder).findOne({\n where: { orderNo: refNo, domain: customerCompanyDomain }\n })\n\n // Need to restructure the validation\n if (marketplaceOrder?.isSplitted) {\n const refNo2: string = releaseGood.refNo2\n const foundSplittedReleaseGood = await tx.getRepository(ReleaseGood).findOne({\n where: {\n domain,\n refNo2,\n status: Not(In([ORDER_STATUS.CANCELLED, ORDER_STATUS.PENDING_CANCEL]))\n },\n relations: ['bizplace', 'bizplace.domain', 'bizplace.company', 'bizplace.company.domain']\n })\n\n if (foundSplittedReleaseGood)\n throw new ValidationError({\n errorCode: 'EXISTING_ORDER',\n message: 'existing release order found',\n detail: foundSplittedReleaseGood.name\n })\n } else {\n throw new ValidationError({\n errorCode: 'EXISTING_ORDER',\n message: 'existing release order found',\n detail: foundReleaseGood.name\n })\n }\n }\n }\n }\n}\n\nasync function createDraftOrder(releaseGood, orderProducts, context) {\n return await getConnection().transaction(async (tx: EntityManager) => {\n return await createDraftReleaseGoodFunction(null, releaseGood, orderProducts, null, [], context, tx)\n })\n}\n\nasync function createReleaseGood(\n releaseGood: any,\n orderProducts: OrderProduct[],\n bizplace: Bizplace,\n context: any,\n tx?: EntityManager\n): Promise<ReleaseGood> {\n try {\n const { domain, user }: { domain: Domain; user: User } = context.state\n const settingRepo: Repository<Setting> = tx?.getRepository(Setting) || getRepository(Setting)\n\n if (orderProducts.length <= 0) {\n throw new ValidationError({\n errorCode: 'ITEM_NOT_FOUND',\n message: 'no order items found',\n detail: JSON.stringify(releaseGood)\n })\n }\n\n let newReleaseGood: ReleaseGood = new ReleaseGood()\n\n // find RO number rule setting\n const roNoSetting: Setting = await settingRepo.findOne({\n where: {\n domain,\n name: ORDER_NUMBER_SETTING_KEY.RO_NUMBER_RULE\n }\n })\n\n newReleaseGood = {\n ...newReleaseGood,\n name: roNoSetting\n ? await generateId({ domain, type: ORDER_NUMBER_RULE_TYPE.RO_NUMBER, seed: {} })\n : OrderNoGenerator.releaseGood(),\n domain: domain,\n bizplace: bizplace,\n collectionOrderNo: releaseGood.collectionOrderNo,\n courierOption: releaseGood.courierOption,\n exportOption: releaseGood.exportOption,\n ownTransport: releaseGood.ownTransport,\n packingOption: releaseGood.packingOption,\n marketplaceOrderStatus: releaseGood?.marketplaceOrderStatus || null,\n billingAddress: releaseGood?.billingAddress || null,\n deliveryAddress1: releaseGood?.deliveryAddress1 || null,\n deliveryAddress2: releaseGood?.deliveryAddress2 || null,\n deliveryAddress3: releaseGood?.deliveryAddress3 || null,\n deliveryAddress4: releaseGood?.deliveryAddress4 || null,\n deliveryAddress5: releaseGood?.deliveryAddress5 || 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 phone2: releaseGood?.phone2 || null,\n email: releaseGood?.email || null,\n transporter: releaseGood?.transporter,\n trackingNo: releaseGood?.trackingNo,\n airwayBill: releaseGood?.airwayBill,\n invoice: releaseGood?.invoice,\n refNo: releaseGood.refNo,\n refNo2: releaseGood.refNo2 || null,\n refNo3: releaseGood.refNo3 || null,\n remark: releaseGood?.remark || null,\n releaseDate: releaseGood.releaseDate,\n truckNo: releaseGood.truckNo,\n type: releaseGood?.type ? releaseGood.type : 'b2b',\n status: ORDER_STATUS.PENDING_WORKSHEET,\n storeName: releaseGood?.storeName,\n storeId: releaseGood?.storeId,\n routeId: releaseGood?.routeId,\n stopId: releaseGood?.stopId,\n noOfItems: orderProducts.length,\n creator: user,\n updater: user,\n acceptedBy: user,\n acceptedAt: new Date()\n }\n\n let resultReleaseGood = await tx.getRepository(ReleaseGood).save(newReleaseGood)\n let combinedOrderInventories: OrderInventory[] = []\n let savedOrderProducts = await Promise.all(\n orderProducts.map(async orderProduct => {\n let orderInventories: OrderInventory[] = orderProduct.orderInventories\n orderProduct = Object.assign(new OrderProduct(), {\n ...orderProduct,\n name: uuidv4(),\n domain: domain,\n bizplace: bizplace,\n releaseGood: resultReleaseGood,\n type: ORDER_TYPES.RELEASE_OF_GOODS,\n status: ORDER_PRODUCT_STATUS.ASSIGNED\n })\n let result = await tx.getRepository(OrderProduct).save(orderProduct)\n\n for (let oiIdx = 0; oiIdx < orderInventories.length; oiIdx++) {\n let orderInventory = Object.assign(new OrderInventory(), {\n ...orderInventories[oiIdx],\n name: uuidv4(),\n domain: domain,\n bizplace: bizplace,\n releaseGood: resultReleaseGood,\n type: ORDER_TYPES.RELEASE_OF_GOODS,\n status: ORDER_PRODUCT_STATUS.ASSIGNED\n })\n await tx.getRepository(OrderInventory).save(orderInventory)\n\n combinedOrderInventories.push({\n product: { name: orderInventory.product.name, sku: orderInventory.product.sku },\n batchId: orderInventory.batchId,\n packingType: orderInventory.packingType,\n packingSize: orderInventory.packingSize,\n releaseQty: orderInventory.releaseQty,\n releaseUomValue: orderInventory.releaseUomValue\n })\n }\n\n return result\n })\n )\n\n newReleaseGood.orderProducts = savedOrderProducts\n newReleaseGood.orderInventories = combinedOrderInventories\n\n return newReleaseGood\n } catch (error) {\n throw error\n }\n}\n\nasync function massageOrderItems(\n releaseGood,\n inputOrderProducts,\n context\n): Promise<{ orderProducts: OrderProduct[]; combinedItems: OrderProduct[] }> {\n const { t } = context\n try {\n let orderProducts: OrderProduct[] = []\n let errorList = []\n //combine any repeated skus\n inputOrderProducts = inputOrderProducts.reduce((acc, itm, idx) => {\n let { sku, refCode } = itm.product\n let { packingType, packingSize, batchId, releaseQty } = itm\n\n if (!sku && !refCode) {\n errorList.push(\n JSON.stringify({\n code: 'INVALID_DATA',\n message: 'sku or refCode not found',\n sku: sku,\n refCode: refCode,\n packingType: packingType?.trim(),\n packingSize: packingSize,\n qty: releaseQty\n })\n )\n }\n\n if (releaseQty <= 0) {\n errorList.push(\n JSON.stringify({\n code: 'INVALID_DATA',\n message: 'negative stock request',\n sku: sku,\n refCode: refCode,\n packingType: packingType?.trim(),\n packingSize: packingSize,\n qty: releaseQty\n })\n )\n }\n\n let existingIndex = acc.findIndex(\n itm =>\n itm?.sku == sku?.trim() &&\n itm?.refCode == refCode?.trim() &&\n itm?.packingType == packingType?.trim() &&\n itm?.packingSize == packingSize\n )\n\n if (existingIndex >= 0 && releaseQty > 0) {\n acc[existingIndex].releaseQty = acc[existingIndex].releaseQty + releaseQty\n } else {\n acc.push({\n sku: sku?.trim(),\n refCode: refCode?.trim(),\n packingType: packingType?.trim(),\n packingSize: packingSize,\n releaseQty: releaseQty\n })\n }\n\n return acc\n }, [])\n\n if (errorList.length > 0) {\n throw new ValidationError({\n errorCode: 'INVALID_DATA',\n message: 'invalid data',\n detail: errorList.join(', ')\n })\n }\n\n //find customer sku in system\n await Promise.all(\n inputOrderProducts.map(async inputOrderItem => {\n const sku: string = inputOrderItem.sku\n const refCode: string = inputOrderItem.refCode\n const packingType: string = inputOrderItem.packingType\n const packingSize: string = inputOrderItem.packingSize\n\n const qb: SelectQueryBuilder<ProductDetail> = getRepository(ProductDetail)\n .createQueryBuilder('PD')\n .innerJoinAndSelect('PD.product', 'PROD')\n .where('PROD.bizplace_id = :bizplaceId', { bizplaceId: releaseGood.companyBizplace.id })\n\n if (!sku && !refCode) {\n context.throw(404, t('error.sku or refCode not found'))\n }\n\n if (refCode) {\n qb.andWhere('PD.ref_code = :refCode', { refCode })\n }\n\n if (sku) {\n qb.andWhere('PROD.sku = :sku', { sku })\n }\n\n if (packingType) {\n qb.andWhere('PD.packing_type = :packingType', { packingType })\n }\n\n if ((!packingType && !refCode) || !packingSize) {\n qb.andWhere('PD.is_default = :isDefault', { isDefault: true })\n }\n\n const productDetail: ProductDetail = await qb.getOne()\n\n // order Product based on product detail\n if (productDetail) {\n let newOrderProduct: OrderInventory = Object.assign({}, inputOrderItem)\n newOrderProduct = {\n ...newOrderProduct,\n product: productDetail.product,\n productDetail: productDetail,\n packingType: productDetail.packingType,\n packingSize: packingSize || productDetail.packingSize,\n uom: productDetail.uom,\n uomValue: productDetail.uomValue,\n refCode: inputOrderItem.refCode,\n releaseQty: inputOrderItem.releaseQty,\n releaseUomValue: inputOrderItem.releaseQty * (productDetail.uomValue || 1),\n packQty: 0,\n actualPackQty: 0,\n palletQty: 0,\n actualPalletQty: 0,\n type: 'RELEASE_OF_GOODS',\n status: ORDER_PRODUCT_STATUS.ASSIGNED,\n batchId: '-'\n }\n\n newOrderProduct.orderInventories = [\n {\n ...newOrderProduct,\n packQty: 0,\n actualPackQty: 0,\n palletQty: 0,\n actualPalletQty: 0,\n type: 'RELEASE_OF_GOODS',\n status: ORDER_INVENTORY_STATUS.PENDING_WORKSHEET\n }\n ]\n\n orderProducts.push(newOrderProduct)\n }\n\n if (!productDetail) {\n const qb: SelectQueryBuilder<ProductDetail> = getRepository(ProductBundle)\n .createQueryBuilder('PB')\n .innerJoinAndSelect('PB.productBundleSettings', 'PBS')\n .innerJoinAndSelect('PBS.productDetail', 'PBD')\n .innerJoinAndSelect('PBD.product', 'PROD')\n .where('PB.bizplace_id = :bizplaceId', { bizplaceId: releaseGood.companyBizplace.id })\n\n if (!sku && !refCode) {\n context.throw(404, t('error.sku or refCode not found'))\n }\n\n if (refCode) {\n qb.andWhere('PB.ref_code = :refCode', { refCode })\n }\n\n if (sku) {\n qb.andWhere('PB.sku = :sku', { sku })\n }\n\n if (packingType) {\n qb.andWhere('PB.packing_type = :packingType', { packingType })\n }\n\n const foundProductBundle: ProductBundle = await qb.getOne()\n\n if (foundProductBundle) {\n let orderProduct = {\n productBundle: foundProductBundle,\n refCode,\n packingType: foundProductBundle.packingType,\n packingSize: packingSize || 1,\n uom: inputOrderItem?.uom,\n releaseQty: inputOrderItem.releaseQty,\n releaseUomValue: inputOrderItem.releaseQty,\n packQty: 0,\n actualPackQty: 0,\n palletQty: 0,\n actualPalletQty: 0,\n orderInventories: [],\n type: 'RELEASE_OF_GOODS',\n status: ORDER_PRODUCT_STATUS.ASSIGNED,\n batchId: '-'\n }\n\n const bundleProductSettings: any[] = foundProductBundle.productBundleSettings\n bundleProductSettings.map(bundleProductSetting => {\n const productDetailBundle: ProductDetail = bundleProductSetting.productDetail\n\n let newOrderInventory: OrderInventory = {\n product: productDetailBundle.product,\n productDetail: productDetailBundle,\n sku: productDetailBundle.product.sku,\n packingType: productDetailBundle.packingType,\n packingSize: productDetailBundle.packingSize,\n uom: productDetailBundle.uom,\n packQty: 0,\n actualPackQty: 0,\n palletQty: 0,\n actualPalletQty: 0,\n releaseQty: inputOrderItem.releaseQty * bundleProductSetting.bundleQty,\n releaseUomValue:\n inputOrderItem.releaseQty *\n bundleProductSetting.bundleQty *\n (productDetailBundle.uomValue <= 0 ? 1 : productDetailBundle.uomValue),\n type: 'RELEASE_OF_GOODS',\n status: ORDER_INVENTORY_STATUS.PENDING_WORKSHEET\n }\n\n orderProduct.orderInventories.push(newOrderInventory)\n })\n orderProducts.push(orderProduct)\n } else {\n if (sku && refCode) {\n context.throw(404, t(`error.sku ${sku} and refCode ${refCode} not exist in product / bundle master`))\n }\n\n if (sku) {\n context.throw(404, t(`error.sku ${sku} not exist in product / bundle master`))\n }\n\n if (refCode) {\n context.throw(404, t(`error.refCode ${refCode} not exist in product / bundle master`))\n }\n }\n }\n })\n )\n\n //combine any repeated skus\n let combinedItems: OrderProduct[] = orderProducts.reduce((acc, op, idx) => {\n let oi = op?.orderInventories || []\n oi.forEach(itm => {\n let { sku, refCode } = itm.product\n let { packingType, packingSize, batchId, releaseQty, product, productDetail, uom } = itm\n\n if (!sku && !refCode) {\n context.throw(404, t('error.sku or refCode not found'))\n }\n let existingIndex = acc.findIndex(\n itm =>\n itm?.sku == sku?.trim() &&\n itm?.refCode == refCode?.trim() &&\n itm?.packingType == packingType?.trim() &&\n itm?.packingSize == packingSize &&\n itm?.batchId == batchId?.trim() &&\n itm?.uom == uom?.trim()\n )\n\n if (existingIndex >= 0 && releaseQty > 0) {\n acc[existingIndex].releaseQty = acc[existingIndex].releaseQty + releaseQty\n acc[existingIndex].releaseUomValue =\n acc[existingIndex].releaseUomValue + releaseQty * (productDetail.uomValue <= 0 ? 1 : productDetail.uomValue)\n } else {\n let updateObj = {\n sku: sku?.trim(),\n packingType: packingType?.trim(),\n packingSize: packingSize,\n uom: uom?.trim(),\n releaseQty: releaseQty,\n releaseUomValue: releaseQty * (productDetail.uomValue <= 0 ? 1 : productDetail.uomValue),\n product,\n productDetail\n }\n\n if (refCode) updateObj['refCode'] = refCode.trim()\n updateObj['batchId'] = batchId ? batchId?.trim() : '-'\n\n acc.push(updateObj)\n }\n })\n return acc\n }, [])\n\n return { orderProducts, combinedItems }\n } catch (error) {\n throw error\n }\n}\n\nasync function assignToInventory(orderProducts: OrderProduct[], customerBizplace, context, tx) {\n const { client, domain, user } = context.state\n for (let opIdx = 0; opIdx < orderProducts.length; opIdx++) {\n let orderProduct = orderProducts[opIdx]\n\n let assignedOrderInventories = []\n for (let oiIdx = 0; oiIdx < orderProducts[opIdx].orderInventories.length; oiIdx++) {\n const orderInventory = orderProduct.orderInventories[oiIdx]\n let sortings: any = []\n\n switch (orderInventory.product.pickingStrategy) {\n case 'LIFO':\n sortings.push({ name: 'iv.created_at', desc: true })\n\n break\n case 'FEFO':\n sortings.push({ name: 'iv.expiration_date', desc: false })\n sortings.push({ name: 'iv.created_at', desc: false })\n\n break\n case 'FMFO':\n sortings.push({ name: 'iv.manufacture_date', desc: false })\n sortings.push({ name: 'iv.created_at', desc: false })\n\n break\n case 'LOCATION':\n const pickingProductSetting: Setting = await tx.getRepository(Setting).findOne({\n where: { domain, name: 'rule-for-picking-product' }\n })\n if (pickingProductSetting?.value) {\n for (const [key, value] of Object.entries(JSON.parse(pickingProductSetting.value))) {\n sortings.push({ name: `loc.${key}`, desc: value == 'DESC' ? true : false })\n }\n } else {\n sortings.push({ name: 'loc.name', desc: true })\n }\n\n break\n //Every other case includes 'FIFO' will be applicable for this case\n default:\n sortings.push({ name: 'iv.created_at', desc: false })\n break\n }\n\n let queryFilters = []\n\n let queryStrings = queryFilters.reduce(\n (acc, itm, idx, arr) => {\n acc.values.push(itm.filters)\n\n switch (itm?.operator) {\n case 'notin':\n case 'in':\n acc.query.push(\n `${itm.query} ${itm.operator == 'notin' ? 'NOT IN' : 'IN'} (${itm.filtes\n .map((itm, idx) => {\n return `$${acc.values.length + 1}`\n })\n .join(',')})`\n )\n break\n\n default:\n acc.query.push(`${itm.query} ${itm?.operator ? itm.operator : '='} $${acc.values.length + 1}`)\n break\n }\n acc.query.push(`${itm.query} ${itm?.operator ? itm.operator : '='} $${acc.values.length + 1}`)\n },\n {\n query: [],\n values: []\n }\n )\n\n let sortQuery = sortings\n .map(itm => {\n return `${itm.name} ${itm.desc ? 'DESC' : 'ASC'}`\n })\n .join(`,`)\n\n let updatedInventories = await tx.getRepository(Inventory).query(\n `\n update inventories tgt set locked_qty = coalesce(locked_qty,0) + src.reserve_qty, \n locked_uom_value = coalesce(locked_uom_value,0) + src.reserve_uom_value,\n updated_at = NOW(),\n updater_id = $1\n from (\n select \"id\", \"pallet_id\",\"carton_id\", \"batch_id\", \"batch_id_ref\", \"unit\", \"uom\", \"packing_type\", \"packing_size\", \"manufacture_year\",\n \"reserve_qty\", ((\"uom_value\"/\"qty\") * \"reserve_qty\") as \"reserve_uom_value\" from (\t\n select \"sort_seq\", \"id\", \"pallet_id\", \"batch_id\", \"batch_id_ref\", \"unit\", \"uom\", \"packing_type\", \"packing_size\", \"manufacture_year\", \"carton_id\", \"uom_value\", \"locked_uom_value\", \"qty\", \"locked_qty\", \"created_at\", \n \"release_qty\", \"release_uom_value\", lock_amount, \n case when \"lock_amount\" < 0 then \"available_qty\" else \"available_qty\" - \"lock_amount\" end as \"reserve_qty\"\n from (\n select *,\n qty - locked_qty as available_qty,\n sum(qty - locked_qty - release_qty) over (order by sort_seq asc rows between unbounded preceding and current row) as lock_amount\n from (\n SELECT 0 as sort_seq, null as id, null as pallet_id, null as batch_id, null as batch_id_ref, \n null as unit, '${orderInventory.uom}' as uom, '${orderInventory.packingType}' as packing_type, '${orderInventory.packingSize\n }' as packing_size,\n null as manufacture_year, null as carton_id, 0 as uom_value, 0 as locked_uom_value, 0 as qty, 0 as locked_qty, null as created_at,\n '${orderInventory.releaseQty}' as release_qty, '${orderInventory.releaseUomValue}' as release_uom_value\n UNION\n (\n SELECT ROW_NUMBER() OVER(PARTITION BY iv.domain_id ORDER BY ${sortQuery}) as sort_seq, \n iv.id, iv.pallet_id, iv.batch_id, iv.batch_id_ref, \n iv.unit, iv.uom, iv.packing_type, iv.packing_size, \n iv.manufacture_year, iv.carton_id, iv.uom_value, \n coalesce(iv.locked_uom_value,0) as locked_uom_value, iv.qty, coalesce(iv.locked_qty,0) as locked_qty, iv.created_at,\n 0 as release_qty, 0 as release_uom_value\n FROM \"inventories\" \"iv\" \n INNER JOIN \"locations\" \"loc\" ON \"loc\".\"id\"=\"iv\".\"location_id\" \n WHERE case when coalesce(\"iv\".\"locked_qty\",0) < 0 then 0 else (\"iv\".\"qty\" - coalesce(\"iv\".\"locked_qty\",0)) end > 0 AND \n \"iv\".\"domain_id\" = $2 AND \"iv\".\"bizplace_id\" = $3 AND \"iv\".\"packing_type\" = $4 AND \"iv\".\"packing_size\" = $5 AND \"iv\".\"product_id\" = $6 AND \"iv\".\"status\" = $7 AND \"loc\".\"type\" NOT IN ($8, $9)\n ${queryStrings.query.length > 0 ? `AND ${queryStrings.join(' AND ')}` : ''}\n ORDER BY ${sortQuery}\n )\n ) dt1\n ) dt2 where case when \"lock_amount\" < 0 then \"available_qty\" else \"available_qty\" - \"lock_amount\" end > 0\t\t\n ) dt3 where sort_seq > 0\n ) src where src.id = tgt.id\n returning \n tgt.\"id\", tgt.\"qty\", tgt.\"pallet_id\", tgt.\"carton_id\", tgt.\"batch_id\", tgt.\"batch_id_ref\", tgt.\"unit\", \n tgt.\"uom\", tgt.\"packing_type\", tgt.\"packing_size\", tgt.\"manufacture_year\", \n tgt.\"locked_qty\", tgt.\"uom_value\", tgt.\"locked_uom_value\", src.\"reserve_qty\", src.\"reserve_uom_value\";`,\n [\n user.id,\n domain.id,\n customerBizplace.id,\n orderInventory.packingType,\n orderInventory.packingSize,\n orderInventory.product.id,\n INVENTORY_STATUS.STORED,\n LOCATION_TYPE.QUARANTINE,\n LOCATION_TYPE.RESERVE,\n ...queryStrings.values\n ]\n )\n\n // let data = await qb.getMany()\n\n let totalAssigned = updatedInventories[0].reduce((acc, inv) => {\n return acc + inv.reserve_qty\n }, 0)\n\n if (orderInventory.releaseQty != totalAssigned) {\n throw new ValidationError({\n errorCode: 'INSUFFICIENT_STOCK',\n message: 'insufficient stock',\n detail: JSON.stringify({\n code: 'insufficient stock',\n sku: orderInventory.product.sku,\n packingType: orderInventory.packingType,\n packingSize: orderInventory.packingSize,\n uom: orderInventory.uom,\n qty: orderInventory.releaseQty,\n uom_value: orderInventory.releaseUomValue\n })\n })\n }\n\n updatedInventories[0].forEach(inv => {\n let oi = {\n ...orderInventory,\n inventory: { id: inv.id },\n uom: inv.uom,\n packingType: inv.packing_type,\n batchId: inv.batch_id,\n releaseQty: inv.reserve_qty,\n releaseUomValue: inv.reserve_uom_value,\n pickedQty: 0,\n packedQty: 0,\n type: ORDER_TYPES.RELEASE_OF_GOODS,\n status: ORDER_INVENTORY_STATUS.PENDING_WORKSHEET,\n domain: { id: domain.id },\n bizplace: { id: customerBizplace.id }\n }\n\n assignedOrderInventories.push(oi)\n })\n }\n\n orderProducts[opIdx].orderInventories = assignedOrderInventories\n }\n\n return orderProducts\n}\n"]}
|
|
1
|
+
{"version":3,"file":"add-release-order.js","sourceRoot":"","sources":["../../../../../server/routers/api/restful-apis/unstable/add-release-order.ts"],"names":[],"mappings":"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","sourcesContent":["import { EntityManager, getConnection, In, Not, Repository, SelectQueryBuilder } from 'typeorm'\nimport { v4 as uuidv4 } from 'uuid'\n\nimport { restfulApiRouter as router } from '@things-factory/api'\nimport { Bizplace, getCompanyBizplace } from '@things-factory/biz-base'\nimport { logger } from '@things-factory/env'\nimport { generateId } from '@things-factory/id-rule-base'\nimport { createPayloadLog, PayloadType } from '@things-factory/integration-base'\nimport { Sellercraft } from '@things-factory/integration-sellercraft'\nimport { MarketplaceOrder } from '@things-factory/marketplace-base'\nimport { ProductBundle, ProductDetail } from '@things-factory/product-base'\nimport {\n createDraftReleaseGoodFunction,\n DRAFT_RELEASE_ORDER_STATUS,\n DraftReleaseGood,\n ORDER_INVENTORY_STATUS,\n ORDER_NUMBER_RULE_TYPE,\n ORDER_NUMBER_SETTING_KEY,\n ORDER_PRODUCT_STATUS,\n ORDER_STATUS,\n ORDER_TYPES,\n OrderInventory,\n OrderNoGenerator,\n OrderProduct,\n ReleaseGood,\n SellercraftController\n} from '@things-factory/sales-base'\nimport { Setting } from '@things-factory/setting-base'\nimport { Domain, getRepository } from '@things-factory/shell'\nimport { Inventory, INVENTORY_STATUS, LOCATION_TYPE } from '@things-factory/warehouse-base'\n\nimport { ValidationError } from '../../../../errors/index'\nimport { businessMiddleware } from '../../../../middlewares/business-middleware'\nimport { warehouseMiddleware } from '../../../../middlewares/warehouse-middleware'\n\nconst debug = require('debug')('things-factory:operato-hub:restful-api:unstable:add-release-order')\nconst apiVersion = 'unstable'\n\nrouter.post(\n `/${apiVersion}/warehouse/:warehouseId/add-release-order`,\n businessMiddleware,\n warehouseMiddleware,\n async (context, next) => {\n return await getConnection().transaction(async (tx: EntityManager) => {\n const { client, domain, user } = context.state\n const { warehouseId: customerBizplaceId } = context.params\n const { t } = context\n const bodyReq = context.request.body\n const requiredDraft: Boolean = bodyReq.hasOwnProperty('requiredDraft') ? bodyReq.requiredDraft : true\n let releaseGood\n let massagedData = { orderProducts: [], combinedItems: [] }\n // const isAutoAssign: Boolean = bodyReq.hasOwnProperty('isAutoAssign') ? bodyReq.isAutoAssign : true\n\n try {\n if (!customerBizplaceId) context.throw(404, t('error.warehouse id not found'))\n\n if (typeof bodyReq === undefined || !Object.keys(bodyReq)?.length) {\n context.throw(400, t('error.invalid body request format'))\n }\n debug('post:/add-release-order request.body', bodyReq)\n await checkMandatoryKey(context, bodyReq)\n\n // get customer company's bizplace\n const custCompanyBizplace: Bizplace = await getCompanyBizplace(null, null, customerBizplaceId, tx)\n const customerBizplace: Bizplace = await tx.getRepository(Bizplace).findOne({\n where: { id: customerBizplaceId },\n relations: ['domain']\n })\n\n releaseGood = {\n domain,\n bizplace: customerBizplace,\n companyBizplace: custCompanyBizplace,\n courierOption: bodyReq.courierOption,\n collectionOrderNo: bodyReq.collectionOrderNo,\n exportOption: bodyReq.exportOption,\n ownTransport: bodyReq.ownTransport,\n packingOption: bodyReq.packingOption,\n refNo: bodyReq.refNo,\n refNo2: bodyReq?.refNo2,\n refNo3: bodyReq?.refNo3,\n releaseDate: bodyReq.releaseDate,\n type: bodyReq.type,\n marketplaceOrderStatus: bodyReq?.marketplaceOrderStatus,\n remark: bodyReq?.remark || null,\n billingAddress: bodyReq?.billTo?.billingAddress || null,\n deliveryAddress1: bodyReq?.deliverTo?.deliveryAddress1 || null,\n deliveryAddress2: bodyReq?.deliverTo?.deliveryAddress2 || null,\n deliveryAddress3: bodyReq?.deliverTo?.deliveryAddress3 || null,\n deliveryAddress4: bodyReq?.deliverTo?.deliveryAddress4 || null,\n deliveryAddress5: bodyReq?.deliverTo?.deliveryAddress5 || null,\n attentionTo: bodyReq?.deliverTo?.attentionTo || null,\n attentionCompany: bodyReq?.deliverTo?.attentionCompany || null,\n city: bodyReq?.deliverTo?.city || null,\n state: bodyReq?.deliverTo?.state || null,\n postalCode: bodyReq?.deliverTo?.postalCode || null,\n country: bodyReq?.deliverTo?.country || null,\n phone1: bodyReq?.deliverTo?.phone1 || null,\n phone2: bodyReq?.deliverTo?.phone2 || null,\n email: bodyReq?.deliverTo?.email || null,\n transporter: bodyReq?.transporter,\n trackingNo: bodyReq?.trackingNo,\n airwayBill: bodyReq?.airwayBill,\n invoice: bodyReq?.invoice,\n packageId: bodyReq?.packageId,\n storeName: bodyReq?.storeName,\n storeId: bodyReq?.storeId,\n routeId: bodyReq?.routeId,\n stopId: bodyReq?.stopId\n }\n\n // check existing order\n await checkExistingOrder(releaseGood, customerBizplace, bodyReq?.checkDuplicationValidation, context, tx)\n\n //massage data\n massagedData = await massageOrderItems(releaseGood, bodyReq.orderInventories, context)\n\n // validation\n let errorList = []\n await Promise.all(\n massagedData.combinedItems.map(async item => {\n let itemList = await tx.query(\n `\n select wboi.* from warehouse_bizplace_onhand_inventories wboi \n where wboi.\"domainId\"= $1 and \n wboi.\"bizplaceId\" = $2 and \n wboi.\"groupType\" = 'SINGLE' and \n wboi.\"productId\" = $3 and\n wboi.\"packingType\" = $4 and\n wboi.\"packingSize\" = $5 and\n wboi.\"uom\" = $6 and\n wboi.\"remainQty\" >= $7 and\n wboi.\"remainUomValue\" >= $8\n `,\n [\n domain.id,\n customerBizplace.id,\n item.product.id,\n item.packingType,\n item.packingSize,\n item.uom,\n item.releaseQty,\n item.releaseUomValue\n ]\n )\n if (itemList.length <= 0) {\n errorList.push(\n JSON.stringify({\n code: 'insufficient stock',\n sku: item.product.sku,\n packingType: item.packingType,\n packingSize: item.packingSize,\n uom: item.uom,\n qty: item.releaseQty,\n uom_value: item.releaseUomValue\n })\n )\n }\n console.log()\n })\n )\n\n if (errorList.length > 0) {\n throw new ValidationError({\n errorCode: 'INSUFFICIENT_STOCK',\n message: 'insufficient stock',\n detail: errorList.join(', ')\n })\n }\n // assignment\n // console.time('assign')\n let assignedOrderProducts = await assignToInventory(massagedData.orderProducts, customerBizplace, context, tx)\n // console.timeEnd('assign')\n\n // create order\n // console.time('save')\n let result = await createReleaseGood(releaseGood, assignedOrderProducts, customerBizplace, context, tx)\n // console.timeEnd('save')\n\n let addReleaseGood = {\n id: result.id,\n name: result.name,\n refNo: result.refNo,\n refNo2: result.refNo2,\n refNo3: result.refNo3,\n status: result.status,\n truckNo: result.truckNo,\n ownTransport: result.ownTransport,\n crossDocking: result.crossDocking,\n marketplaceOrderStatus: result.marketplaceOrderStatus,\n billingAddress: result.billingAddress,\n deliveryAddress1: result.deliveryAddress1,\n deliveryAddress2: result.deliveryAddress2,\n deliveryAddress3: result.deliveryAddress3,\n deliveryAddress4: result.deliveryAddress4,\n deliveryAddress5: result.deliveryAddress5,\n attentionTo: result.attentionTo,\n attentionCompany: result.attentionCompany,\n city: result.city,\n state: result.state,\n postalCode: result.postalCode,\n country: result.country,\n phone1: result.phone1,\n phone2: result.phone2,\n email: result.email,\n transporter: result.transporter,\n trackingNo: result.trackingNo,\n airwayBill: result.airwayBill,\n invoice: result.invoice,\n type: result.type,\n packageId: result.packageId,\n storeName: result.storeName,\n storeId: result.storeId,\n routeId: result.routeId,\n stopId: result.stopId,\n exportOption: result.exportOption,\n releaseDate: result.releaseDate,\n collectionOrderNo: result.collectionOrderNo,\n bizplace: { name: result.bizplace.name },\n domain: { name: result.domain.name },\n orderInventories: result.orderInventories\n }\n // return body\n context.body = { result: { addReleaseGood } }\n createPayloadLog(\n customerBizplaceId,\n `/${apiVersion}/warehouse/:warehouseId/add-release-order`,\n bodyReq,\n context.body,\n context,\n PayloadType.INGESTION\n )\n } catch (error) {\n createPayloadLog(\n customerBizplaceId,\n `/${apiVersion}/warehouse/:warehouseId/add-release-order`,\n bodyReq,\n error,\n context,\n PayloadType.INGESTION\n )\n\n if (error.errorCode) {\n if (error.errorCode == 'INSUFFICIENT_STOCK' && requiredDraft) {\n const result = await createDraftOrder(releaseGood, massagedData.orderProducts, context)\n let createdDraftOrder = {\n id: result.id,\n name: result.name,\n refNo: result.refNo,\n refNo2: result.refNo2,\n refNo3: result.refNo3,\n status: result.status,\n truckNo: result.truckNo,\n ownTransport: result.ownTransport,\n marketplaceOrderStatus: result.marketplaceOrderStatus,\n billingAddress: result.billingAddress,\n deliveryAddress1: result.deliveryAddress1,\n deliveryAddress2: result.deliveryAddress2,\n deliveryAddress3: result.deliveryAddress3,\n deliveryAddress4: result.deliveryAddress4,\n deliveryAddress5: result.deliveryAddress5,\n attentionTo: result.attentionTo,\n attentionCompany: result.attentionCompany,\n city: result.city,\n state: result.state,\n postalCode: result.postalCode,\n country: result.country,\n phone1: result.phone1,\n phone2: result.phone2,\n email: result.email,\n type: result.type,\n packageId: result.packageId,\n exportOption: result.exportOption,\n releaseDate: result.releaseDate,\n collectionOrderNo: result.collectionOrderNo,\n bizplace: { name: result.bizplace.name },\n domain: { name: result.domain.name }\n }\n context.body = { result: { createdDraftOrder } }\n } else {\n logger.error(`add-release-order: ${JSON.stringify(error)}`)\n context.throw(400, context.t(error))\n }\n } else {\n logger.error(`add-release-order: ${JSON.stringify(error)}`)\n context.throw(400, context.t(error))\n }\n }\n })\n }\n)\n\nasync function checkMandatoryKey(context, params) {\n let noparams = ['releaseDate', 'exportOption'].filter(param => !(param in params))\n\n if ('ownTransport' in params) {\n if (params.ownTransport == true) {\n if (!params.hasOwnProperty('collectionOrderNo')) {\n noparams.push('collectionOrderNo')\n }\n }\n } else {\n noparams.push('ownTransport')\n }\n\n if ('exportOption' in params) {\n if (params.exportOption === true) {\n if (\n params.exportOption.filter(\n record =>\n !record.containerNo || !record.containerArrivalDate || !record.containerLeavingDate || !record.shipName\n ).length\n ) {\n noparams.push('exportOption')\n }\n }\n }\n\n if ('orderInventories' in params) {\n params.orderInventories.forEach((param, key) => {\n let noSubParams = []\n\n if (!param?.releaseQty) noSubParams.push('releaseQty')\n\n if (!param?.product) noSubParams.push('product')\n\n if (noSubParams?.length)\n context.throw(400, context.t('error.required param x not found', { x: `${noSubParams.join(', ')}` }))\n })\n } else {\n noparams.push('orderInventories')\n }\n\n if (noparams?.length) {\n context.throw(400, context.t('error.required param x not found', { x: `${noparams.join(', ')}` }))\n }\n\n return params\n}\n\nasync function checkExistingOrder(releaseGood, bizplace, checkDuplicationValidation = true, context, tx) {\n const { domain, user } = context.state\n const refNo: string = releaseGood.refNo\n const refNo2: string = releaseGood.refNo2\n const refNo3: string = releaseGood.refNo3\n\n if (checkDuplicationValidation) {\n const foundDraftReleaseGood: DraftReleaseGood = await tx.getRepository(DraftReleaseGood).findOne({\n where: {\n domain: { id: domain.id },\n refNo: refNo || null,\n refNo2: refNo2 || null,\n refNo3: refNo3 || null,\n status: Not(In([DRAFT_RELEASE_ORDER_STATUS.CANCELLED]))\n }\n })\n\n if (foundDraftReleaseGood) {\n throw new ValidationError({\n errorCode: 'EXISTING_ORDER',\n message: 'existing draft release order found',\n detail: foundDraftReleaseGood.name\n })\n }\n\n const sellercraft: Sellercraft = await tx.getRepository(Sellercraft).findOneBy({ domain: bizplace.domain })\n\n if (sellercraft) {\n const sellercraftCtrl: SellercraftController = new SellercraftController(tx, bizplace.domain, user)\n await sellercraftCtrl.checkExistingReleaseGood(sellercraft, releaseGood)\n } else {\n const foundReleaseGood: ReleaseGood = await tx.getRepository(ReleaseGood).findOne({\n where: {\n domain: domain,\n refNo,\n status: Not(In([ORDER_STATUS.CANCELLED, ORDER_STATUS.PENDING_CANCEL]))\n },\n relations: ['bizplace', 'bizplace.domain', 'bizplace.company', 'bizplace.company.domain']\n })\n\n if (foundReleaseGood) {\n const customerCompanyDomain: Domain = foundReleaseGood.bizplace.company.domain\n const marketplaceOrder: MarketplaceOrder = await tx.getRepository(MarketplaceOrder).findOne({\n where: { orderNo: refNo, domain: customerCompanyDomain }\n })\n\n // Need to restructure the validation\n if (marketplaceOrder?.isSplitted) {\n const refNo2: string = releaseGood.refNo2\n const foundSplittedReleaseGood = await tx.getRepository(ReleaseGood).findOne({\n where: {\n domain: { id: domain.id },\n refNo2,\n status: Not(In([ORDER_STATUS.CANCELLED, ORDER_STATUS.PENDING_CANCEL]))\n },\n relations: ['bizplace', 'bizplace.domain', 'bizplace.company', 'bizplace.company.domain']\n })\n\n if (foundSplittedReleaseGood)\n throw new ValidationError({\n errorCode: 'EXISTING_ORDER',\n message: 'existing release order found',\n detail: foundSplittedReleaseGood.name\n })\n } else {\n throw new ValidationError({\n errorCode: 'EXISTING_ORDER',\n message: 'existing release order found',\n detail: foundReleaseGood.name\n })\n }\n }\n }\n }\n}\n\nasync function createDraftOrder(releaseGood, orderProducts, context) {\n return await getConnection().transaction(async (tx: EntityManager) => {\n return await createDraftReleaseGoodFunction(null, releaseGood, orderProducts, null, [], context, tx)\n })\n}\n\nasync function createReleaseGood(\n releaseGood: any,\n orderProducts: OrderProduct[],\n bizplace: Bizplace,\n context: any,\n tx?: EntityManager\n): Promise<ReleaseGood> {\n try {\n const { domain, user } = context.state\n const settingRepo: Repository<Setting> = tx?.getRepository(Setting) || getRepository(Setting)\n\n if (orderProducts.length <= 0) {\n throw new ValidationError({\n errorCode: 'ITEM_NOT_FOUND',\n message: 'no order items found',\n detail: JSON.stringify(releaseGood)\n })\n }\n\n let newReleaseGood: ReleaseGood = new ReleaseGood()\n\n // find RO number rule setting\n const roNoSetting: Setting = await settingRepo.findOne({\n where: {\n domain: { id: domain.id },\n name: ORDER_NUMBER_SETTING_KEY.RO_NUMBER_RULE\n }\n })\n\n newReleaseGood = {\n name: roNoSetting\n ? await generateId({ domain, type: ORDER_NUMBER_RULE_TYPE.RO_NUMBER, seed: {} })\n : OrderNoGenerator.releaseGood(),\n domain: domain,\n bizplace: bizplace,\n collectionOrderNo: releaseGood.collectionOrderNo,\n courierOption: releaseGood.courierOption,\n exportOption: releaseGood.exportOption,\n ownTransport: releaseGood.ownTransport,\n packingOption: releaseGood.packingOption,\n marketplaceOrderStatus: releaseGood?.marketplaceOrderStatus || null,\n billingAddress: releaseGood?.billingAddress || null,\n deliveryAddress1: releaseGood?.deliveryAddress1 || null,\n deliveryAddress2: releaseGood?.deliveryAddress2 || null,\n deliveryAddress3: releaseGood?.deliveryAddress3 || null,\n deliveryAddress4: releaseGood?.deliveryAddress4 || null,\n deliveryAddress5: releaseGood?.deliveryAddress5 || 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 phone2: releaseGood?.phone2 || null,\n email: releaseGood?.email || null,\n transporter: releaseGood?.transporter,\n trackingNo: releaseGood?.trackingNo,\n airwayBill: releaseGood?.airwayBill,\n invoice: releaseGood?.invoice,\n refNo: releaseGood.refNo,\n refNo2: releaseGood.refNo2 || null,\n refNo3: releaseGood.refNo3 || null,\n remark: releaseGood?.remark || null,\n releaseDate: releaseGood.releaseDate,\n truckNo: releaseGood.truckNo,\n type: releaseGood?.type ? releaseGood.type : 'b2b',\n status: ORDER_STATUS.PENDING_WORKSHEET,\n storeName: releaseGood?.storeName,\n storeId: releaseGood?.storeId,\n routeId: releaseGood?.routeId,\n stopId: releaseGood?.stopId,\n packageId: releaseGood?.packageId || null,\n noOfItems: orderProducts.length,\n creator: user,\n updater: user,\n acceptedBy: user,\n acceptedAt: new Date()\n }\n\n let resultReleaseGood = await tx.getRepository(ReleaseGood).save(newReleaseGood)\n let combinedOrderInventories: OrderInventory[] = []\n let savedOrderProducts = await Promise.all(\n orderProducts.map(async orderProduct => {\n let orderInventories: OrderInventory[] = orderProduct.orderInventories\n orderProduct = Object.assign(new OrderProduct(), {\n ...orderProduct,\n name: uuidv4(),\n domain: domain,\n bizplace: bizplace,\n releaseGood: resultReleaseGood,\n type: ORDER_TYPES.RELEASE_OF_GOODS,\n status: ORDER_PRODUCT_STATUS.ASSIGNED\n })\n let result = await tx.getRepository(OrderProduct).save(orderProduct)\n\n for (let oiIdx = 0; oiIdx < orderInventories.length; oiIdx++) {\n let orderInventory = Object.assign(new OrderInventory(), {\n ...orderInventories[oiIdx],\n name: uuidv4(),\n domain: domain,\n bizplace: bizplace,\n releaseGood: resultReleaseGood,\n type: ORDER_TYPES.RELEASE_OF_GOODS,\n status: ORDER_INVENTORY_STATUS.PENDING_WORKSHEET\n })\n await tx.getRepository(OrderInventory).save(orderInventory)\n\n combinedOrderInventories.push({\n product: { name: orderInventory.product.name, sku: orderInventory.product.sku },\n batchId: orderInventory.batchId,\n packingType: orderInventory.packingType,\n packingSize: orderInventory.packingSize,\n releaseQty: orderInventory.releaseQty,\n releaseUomValue: orderInventory.releaseUomValue\n })\n }\n\n return result\n })\n )\n\n newReleaseGood.orderProducts = savedOrderProducts\n newReleaseGood.orderInventories = combinedOrderInventories\n\n return newReleaseGood\n } catch (error) {\n throw error\n }\n}\n\nasync function massageOrderItems(\n releaseGood,\n inputOrderProducts,\n context\n): Promise<{ orderProducts: OrderProduct[]; combinedItems: OrderProduct[] }> {\n const { t } = context\n try {\n let orderProducts: OrderProduct[] = []\n let errorList = []\n //combine any repeated skus\n inputOrderProducts = inputOrderProducts.reduce((acc, itm, idx) => {\n let { sku, refCode } = itm.product\n let { packingType, packingSize, batchId, releaseQty } = itm\n\n if (!sku && !refCode) {\n errorList.push(\n JSON.stringify({\n code: 'INVALID_DATA',\n message: 'sku or refCode not found',\n sku: sku,\n refCode: refCode,\n packingType: packingType?.trim(),\n packingSize: packingSize,\n qty: releaseQty\n })\n )\n }\n\n if (releaseQty <= 0) {\n errorList.push(\n JSON.stringify({\n code: 'INVALID_DATA',\n message: 'negative stock request',\n sku: sku,\n refCode: refCode,\n packingType: packingType?.trim(),\n packingSize: packingSize,\n qty: releaseQty\n })\n )\n }\n\n let existingIndex = acc.findIndex(\n itm =>\n itm?.sku == sku?.trim() &&\n itm?.refCode == refCode?.trim() &&\n itm?.packingType == packingType?.trim() &&\n itm?.packingSize == packingSize\n )\n\n if (existingIndex >= 0 && releaseQty > 0) {\n acc[existingIndex].releaseQty = acc[existingIndex].releaseQty + releaseQty\n } else {\n acc.push({\n sku: sku?.trim(),\n refCode: refCode?.trim(),\n packingType: packingType?.trim(),\n packingSize: packingSize,\n releaseQty: releaseQty\n })\n }\n\n return acc\n }, [])\n\n if (errorList.length > 0) {\n throw new ValidationError({\n errorCode: 'INVALID_DATA',\n message: 'invalid data',\n detail: errorList.join(', ')\n })\n }\n\n //find customer sku in system\n await Promise.all(\n inputOrderProducts.map(async inputOrderItem => {\n const sku: string = inputOrderItem.sku\n const refCode: string = inputOrderItem.refCode\n const packingType: string = inputOrderItem.packingType\n const packingSize: string = inputOrderItem.packingSize\n\n const qb: SelectQueryBuilder<ProductDetail> = getRepository(ProductDetail)\n .createQueryBuilder('PD')\n .innerJoinAndSelect('PD.product', 'PROD')\n .where('PROD.bizplace_id = :bizplaceId', { bizplaceId: releaseGood.companyBizplace.id })\n\n if (!sku && !refCode) {\n context.throw(404, t('error.sku or refCode not found'))\n }\n\n if (refCode) {\n qb.andWhere('PD.ref_code = :refCode', { refCode })\n }\n\n if (sku) {\n qb.andWhere('PROD.sku = :sku', { sku })\n }\n\n if (packingType) {\n qb.andWhere('PD.packing_type = :packingType', { packingType })\n }\n\n if ((!packingType && !refCode) || !packingSize) {\n qb.andWhere('PD.is_default = :isDefault', { isDefault: true })\n }\n\n const productDetail: ProductDetail = await qb.getOne()\n\n // order Product based on product detail\n if (productDetail) {\n let newOrderProduct: OrderInventory = Object.assign({}, inputOrderItem)\n newOrderProduct = {\n ...newOrderProduct,\n product: productDetail.product,\n productDetail: productDetail,\n packingType: productDetail.packingType,\n packingSize: packingSize || productDetail.packingSize,\n uom: productDetail.uom,\n uomValue: productDetail.uomValue,\n refCode: inputOrderItem.refCode,\n releaseQty: inputOrderItem.releaseQty,\n releaseUomValue: inputOrderItem.releaseQty * (productDetail.uomValue || 1),\n packQty: 0,\n actualPackQty: 0,\n palletQty: 0,\n actualPalletQty: 0,\n type: 'RELEASE_OF_GOODS',\n status: ORDER_PRODUCT_STATUS.ASSIGNED,\n batchId: '-'\n }\n\n newOrderProduct.orderInventories = [\n {\n ...newOrderProduct,\n packQty: 0,\n actualPackQty: 0,\n palletQty: 0,\n actualPalletQty: 0,\n type: 'RELEASE_OF_GOODS',\n status: ORDER_INVENTORY_STATUS.PENDING_WORKSHEET\n }\n ]\n\n orderProducts.push(newOrderProduct)\n }\n\n if (!productDetail) {\n const qb: SelectQueryBuilder<ProductDetail> = getRepository(ProductBundle)\n .createQueryBuilder('PB')\n .innerJoinAndSelect('PB.productBundleSettings', 'PBS')\n .innerJoinAndSelect('PBS.productDetail', 'PBD')\n .innerJoinAndSelect('PBD.product', 'PROD')\n .where('PB.bizplace_id = :bizplaceId', { bizplaceId: releaseGood.companyBizplace.id })\n\n if (!sku && !refCode) {\n context.throw(404, t('error.sku or refCode not found'))\n }\n\n if (refCode) {\n qb.andWhere('PB.ref_code = :refCode', { refCode })\n }\n\n if (sku) {\n qb.andWhere('PB.sku = :sku', { sku })\n }\n\n if (packingType) {\n qb.andWhere('PB.packing_type = :packingType', { packingType })\n }\n\n const foundProductBundle: ProductBundle = await qb.getOne()\n\n if (foundProductBundle) {\n let orderProduct = {\n productBundle: foundProductBundle,\n refCode,\n packingType: foundProductBundle.packingType,\n packingSize: packingSize || 1,\n uom: inputOrderItem?.uom,\n releaseQty: inputOrderItem.releaseQty,\n releaseUomValue: inputOrderItem.releaseQty,\n packQty: 0,\n actualPackQty: 0,\n palletQty: 0,\n actualPalletQty: 0,\n orderInventories: [],\n type: 'RELEASE_OF_GOODS',\n status: ORDER_PRODUCT_STATUS.ASSIGNED,\n batchId: '-'\n }\n\n const bundleProductSettings: any[] = foundProductBundle.productBundleSettings\n bundleProductSettings.map(bundleProductSetting => {\n const productDetailBundle: ProductDetail = bundleProductSetting.productDetail\n\n let newOrderInventory: OrderInventory = {\n product: productDetailBundle.product,\n productDetail: productDetailBundle,\n sku: productDetailBundle.product.sku,\n packingType: productDetailBundle.packingType,\n packingSize: productDetailBundle.packingSize,\n uom: productDetailBundle.uom,\n packQty: 0,\n actualPackQty: 0,\n palletQty: 0,\n actualPalletQty: 0,\n releaseQty: inputOrderItem.releaseQty * bundleProductSetting.bundleQty,\n releaseUomValue:\n inputOrderItem.releaseQty *\n bundleProductSetting.bundleQty *\n (productDetailBundle.uomValue <= 0 ? 1 : productDetailBundle.uomValue),\n type: 'RELEASE_OF_GOODS',\n status: ORDER_INVENTORY_STATUS.PENDING_WORKSHEET\n }\n\n orderProduct.orderInventories.push(newOrderInventory)\n })\n orderProducts.push(orderProduct)\n } else {\n if (sku && refCode) {\n context.throw(404, t(`error.sku ${sku} and refCode ${refCode} not exist in product / bundle master`))\n }\n\n if (sku) {\n context.throw(404, t(`error.sku ${sku} not exist in product / bundle master`))\n }\n\n if (refCode) {\n context.throw(404, t(`error.refCode ${refCode} not exist in product / bundle master`))\n }\n }\n }\n })\n )\n\n //combine any repeated skus\n let combinedItems: OrderProduct[] = orderProducts.reduce((acc, op, idx) => {\n let oi = op?.orderInventories || []\n oi.forEach(itm => {\n let { sku, refCode } = itm.product\n let { packingType, packingSize, batchId, releaseQty, product, productDetail, uom } = itm\n\n if (!sku && !refCode) {\n context.throw(404, t('error.sku or refCode not found'))\n }\n let existingIndex = acc.findIndex(\n itm =>\n itm?.sku == sku?.trim() &&\n itm?.refCode == refCode?.trim() &&\n itm?.packingType == packingType?.trim() &&\n itm?.packingSize == packingSize &&\n itm?.batchId == batchId?.trim() &&\n itm?.uom == uom?.trim()\n )\n\n if (existingIndex >= 0 && releaseQty > 0) {\n acc[existingIndex].releaseQty = acc[existingIndex].releaseQty + releaseQty\n acc[existingIndex].releaseUomValue =\n acc[existingIndex].releaseUomValue + releaseQty * (productDetail.uomValue <= 0 ? 1 : productDetail.uomValue)\n } else {\n let updateObj = {\n sku: sku?.trim(),\n packingType: packingType?.trim(),\n packingSize: packingSize,\n uom: uom?.trim(),\n releaseQty: releaseQty,\n releaseUomValue: releaseQty * (productDetail.uomValue <= 0 ? 1 : productDetail.uomValue),\n product,\n productDetail\n }\n\n if (refCode) updateObj['refCode'] = refCode.trim()\n updateObj['batchId'] = batchId ? batchId?.trim() : '-'\n\n acc.push(updateObj)\n }\n })\n return acc\n }, [])\n\n return { orderProducts, combinedItems }\n } catch (error) {\n throw error\n }\n}\n\nasync function assignToInventory(orderProducts: OrderProduct[], customerBizplace, context, tx) {\n const { client, domain, user } = context.state\n for (let opIdx = 0; opIdx < orderProducts.length; opIdx++) {\n let orderProduct = orderProducts[opIdx]\n\n let assignedOrderInventories = []\n const pickingProductSetting: Setting = await tx.getRepository(Setting).findOne({\n where: { domain: { id: domain.id }, name: 'rule-for-picking-product' }\n })\n\n for (let oiIdx = 0; oiIdx < orderProducts[opIdx].orderInventories.length; oiIdx++) {\n const orderInventory = orderProduct.orderInventories[oiIdx]\n let sortings: any = []\n\n switch (orderInventory.product.pickingStrategy) {\n case 'LIFO':\n sortings.push({ name: 'iv.created_at', desc: true })\n if (pickingProductSetting?.value) {\n for (const [key, value] of Object.entries(JSON.parse(pickingProductSetting.value))) {\n sortings.push({ name: `loc.${key}`, desc: value == 'DESC' ? true : false })\n }\n } else {\n sortings.push({ name: 'loc.name', desc: false }, { name: 'iv.created_at', desc: false })\n }\n\n break\n case 'FEFO':\n sortings.push({ name: 'iv.expiration_date', desc: false }, { name: 'iv.created_at', desc: false })\n if (pickingProductSetting?.value) {\n for (const [key, value] of Object.entries(JSON.parse(pickingProductSetting.value))) {\n sortings.push({ name: `loc.${key}`, desc: value == 'DESC' ? true : false })\n }\n } else {\n sortings.push({ name: 'loc.name', desc: false }, { name: 'iv.created_at', desc: false })\n }\n\n break\n case 'FMFO':\n sortings.push({ name: 'iv.manufacture_date', desc: false }, { name: 'iv.created_at', desc: false })\n if (pickingProductSetting?.value) {\n for (const [key, value] of Object.entries(JSON.parse(pickingProductSetting.value))) {\n sortings.push({ name: `loc.${key}`, desc: value == 'DESC' ? true : false })\n }\n } else {\n sortings.push({ name: 'loc.name', desc: false }, { name: 'iv.created_at', desc: false })\n }\n\n break\n case 'LOCATION':\n if (pickingProductSetting?.value) {\n for (const [key, value] of Object.entries(JSON.parse(pickingProductSetting.value))) {\n sortings.push({ name: `loc.${key}`, desc: value == 'DESC' ? true : false })\n }\n } else {\n sortings.push({ name: 'loc.name', desc: false }, { name: 'iv.created_at', desc: false })\n }\n\n break\n //Every other case includes 'FIFO' will be applicable for this case\n default:\n sortings.push({ name: 'iv.created_at', desc: false })\n if (pickingProductSetting?.value) {\n for (const [key, value] of Object.entries(JSON.parse(pickingProductSetting.value))) {\n sortings.push({ name: `loc.${key}`, desc: value == 'DESC' ? true : false })\n }\n } else {\n sortings.push({ name: 'loc.name', desc: false })\n sortings.push({ name: 'iv.pallet_id', desc: false })\n }\n break\n }\n\n let queryFilters = []\n\n let queryStrings = queryFilters.reduce(\n (acc, itm, idx, arr) => {\n acc.values.push(itm.filters)\n\n switch (itm?.operator) {\n case 'notin':\n case 'in':\n acc.query.push(\n `${itm.query} ${itm.operator == 'notin' ? 'NOT IN' : 'IN'} (${itm.filtes\n .map((itm, idx) => {\n return `$${acc.values.length + 1}`\n })\n .join(',')})`\n )\n break\n\n default:\n acc.query.push(`${itm.query} ${itm?.operator ? itm.operator : '='} $${acc.values.length + 1}`)\n break\n }\n acc.query.push(`${itm.query} ${itm?.operator ? itm.operator : '='} $${acc.values.length + 1}`)\n },\n {\n query: [],\n values: []\n }\n )\n\n let sortQuery = sortings\n .map(itm => {\n return `${itm.name} ${itm.desc ? 'DESC' : 'ASC'}`\n })\n .join(`,`)\n\n let updatedInventories = await tx.getRepository(Inventory).query(\n `\n update inventories tgt set locked_qty = coalesce(locked_qty,0) + src.reserve_qty, \n locked_uom_value = coalesce(locked_uom_value,0) + src.reserve_uom_value,\n updated_at = NOW(),\n updater_id = $1\n from (\n select \"id\", \"pallet_id\",\"carton_id\", \"batch_id\", \"batch_id_ref\", \"unit\", \"uom\", \"packing_type\", \"packing_size\", \"manufacture_year\",\n \"reserve_qty\", ((\"uom_value\"/\"qty\") * \"reserve_qty\") as \"reserve_uom_value\" from (\t\n select \"sort_seq\", \"id\", \"pallet_id\", \"batch_id\", \"batch_id_ref\", \"unit\", \"uom\", \"packing_type\", \"packing_size\", \"manufacture_year\", \"carton_id\", \"uom_value\", \"locked_uom_value\", \"qty\", \"locked_qty\", \"created_at\", \n \"release_qty\", \"release_uom_value\", lock_amount, \n case when \"lock_amount\" < 0 then \"available_qty\" else \"available_qty\" - \"lock_amount\" end as \"reserve_qty\"\n from (\n select *,\n qty - locked_qty as available_qty,\n sum(qty - locked_qty - release_qty) over (order by sort_seq asc rows between unbounded preceding and current row) as lock_amount\n from (\n SELECT 0 as sort_seq, null as id, null as pallet_id, null as batch_id, null as batch_id_ref, \n null as unit, '${orderInventory.uom}' as uom, '${orderInventory.packingType}' as packing_type, '${\n orderInventory.packingSize\n }' as packing_size,\n null as manufacture_year, null as carton_id, 0 as uom_value, 0 as locked_uom_value, 0 as qty, 0 as locked_qty, null as created_at,\n '${orderInventory.releaseQty}' as release_qty, '${orderInventory.releaseUomValue}' as release_uom_value\n UNION\n (\n SELECT ROW_NUMBER() OVER(PARTITION BY iv.domain_id ORDER BY ${sortQuery}) as sort_seq, \n iv.id, iv.pallet_id, iv.batch_id, iv.batch_id_ref, \n iv.unit, iv.uom, iv.packing_type, iv.packing_size, \n iv.manufacture_year, iv.carton_id, iv.uom_value, \n coalesce(iv.locked_uom_value,0) as locked_uom_value, iv.qty, coalesce(iv.locked_qty,0) as locked_qty, iv.created_at,\n 0 as release_qty, 0 as release_uom_value\n FROM \"inventories\" \"iv\" \n INNER JOIN \"locations\" \"loc\" ON \"loc\".\"id\"=\"iv\".\"location_id\" \n WHERE case when coalesce(\"iv\".\"locked_qty\",0) < 0 then 0 else (\"iv\".\"qty\" - coalesce(\"iv\".\"locked_qty\",0)) end > 0 AND \n \"iv\".\"domain_id\" = $2 AND \"iv\".\"bizplace_id\" = $3 AND \"iv\".\"packing_type\" = $4 AND \"iv\".\"packing_size\" = $5 AND \"iv\".\"product_id\" = $6 AND \"iv\".\"status\" = $7 AND \"loc\".\"type\" NOT IN ($8, $9)\n ${queryStrings.query.length > 0 ? `AND ${queryStrings.join(' AND ')}` : ''}\n ORDER BY ${sortQuery}\n )\n ) dt1\n ) dt2 where case when \"lock_amount\" < 0 then \"available_qty\" else \"available_qty\" - \"lock_amount\" end > 0\t\t\n ) dt3 where sort_seq > 0\n ) src where src.id = tgt.id\n returning \n tgt.\"id\", tgt.\"qty\", tgt.\"pallet_id\", tgt.\"carton_id\", tgt.\"batch_id\", tgt.\"batch_id_ref\", tgt.\"unit\", \n tgt.\"uom\", tgt.\"packing_type\", tgt.\"packing_size\", tgt.\"manufacture_year\", \n tgt.\"locked_qty\", tgt.\"uom_value\", tgt.\"locked_uom_value\", src.\"reserve_qty\", src.\"reserve_uom_value\";`,\n [\n user.id,\n domain.id,\n customerBizplace.id,\n orderInventory.packingType,\n orderInventory.packingSize,\n orderInventory.product.id,\n INVENTORY_STATUS.STORED,\n LOCATION_TYPE.QUARANTINE,\n LOCATION_TYPE.RESERVE,\n ...queryStrings.values\n ]\n )\n\n let totalAssigned = updatedInventories[0].reduce((acc, inv) => {\n return acc + inv.reserve_qty\n }, 0)\n\n if (orderInventory.releaseQty != totalAssigned) {\n throw new ValidationError({\n errorCode: 'INSUFFICIENT_STOCK',\n message: 'insufficient stock',\n detail: JSON.stringify({\n code: 'insufficient stock',\n sku: orderInventory.product.sku,\n packingType: orderInventory.packingType,\n packingSize: orderInventory.packingSize,\n uom: orderInventory.uom,\n qty: orderInventory.releaseQty,\n uom_value: orderInventory.releaseUomValue\n })\n })\n }\n\n updatedInventories[0].forEach(inv => {\n let oi = {\n ...orderInventory,\n inventory: { id: inv.id },\n uom: inv.uom,\n packingType: inv.packing_type,\n batchId: inv.batch_id,\n releaseQty: inv.reserve_qty,\n releaseUomValue: inv.reserve_uom_value,\n pickedQty: 0,\n packedQty: 0,\n type: ORDER_TYPES.RELEASE_OF_GOODS,\n status: ORDER_INVENTORY_STATUS.PENDING_WORKSHEET,\n domain: { id: domain.id },\n bizplace: { id: customerBizplace.id }\n }\n\n assignedOrderInventories.push(oi)\n })\n }\n\n orderProducts[opIdx].orderInventories = assignedOrderInventories\n }\n\n return orderProducts\n}\n"]}
|
|
@@ -2,10 +2,10 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
const tslib_1 = require("tslib");
|
|
4
4
|
const graphql_tag_1 = tslib_1.__importDefault(require("graphql-tag"));
|
|
5
|
-
const typeorm_1 = require("typeorm");
|
|
6
5
|
const api_1 = require("@things-factory/api");
|
|
7
6
|
const biz_base_1 = require("@things-factory/biz-base");
|
|
8
7
|
const sales_base_1 = require("@things-factory/sales-base");
|
|
8
|
+
const shell_1 = require("@things-factory/shell");
|
|
9
9
|
const business_middleware_1 = require("../../../../middlewares/business-middleware");
|
|
10
10
|
const warehouse_middleware_1 = require("../../../../middlewares/warehouse-middleware");
|
|
11
11
|
const debug = require('debug')('things-factory:operato-hub:restful-api:unstable:cancel-release-order');
|
|
@@ -18,14 +18,14 @@ api_1.restfulApiRouter.post('/unstable/warehouse/:warehouseId/cancel-release-ord
|
|
|
18
18
|
if (typeof bodyReq === undefined || !((_a = Object.keys(bodyReq)) === null || _a === void 0 ? void 0 : _a.length)) {
|
|
19
19
|
context.throw(400, t('error.invalid body request format'));
|
|
20
20
|
}
|
|
21
|
-
const customerBizplace = await (0,
|
|
21
|
+
const customerBizplace = await (0, shell_1.getRepository)(biz_base_1.Bizplace).findOne({
|
|
22
22
|
where: { id: warehouseId }
|
|
23
23
|
});
|
|
24
|
-
const releaseOrder = await (0,
|
|
24
|
+
const releaseOrder = await (0, shell_1.getRepository)(sales_base_1.ReleaseGood).findOne({
|
|
25
25
|
where: [{ id: bodyReq.releaseOrderId }, { refNo: bodyReq.orderNo }]
|
|
26
26
|
});
|
|
27
27
|
if (!releaseOrder) {
|
|
28
|
-
const draftReleaseOrder = await (0,
|
|
28
|
+
const draftReleaseOrder = await (0, shell_1.getRepository)(sales_base_1.DraftReleaseGood).findOne({
|
|
29
29
|
where: [{ refNo: bodyReq.orderNo }]
|
|
30
30
|
});
|
|
31
31
|
if (draftReleaseOrder) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cancel-release-order.js","sourceRoot":"","sources":["../../../../../server/routers/api/restful-apis/unstable/cancel-release-order.ts"],"names":[],"mappings":";;;AAAA,sEAA6B;
|
|
1
|
+
{"version":3,"file":"cancel-release-order.js","sourceRoot":"","sources":["../../../../../server/routers/api/restful-apis/unstable/cancel-release-order.ts"],"names":[],"mappings":";;;AAAA,sEAA6B;AAE7B,6CAAgE;AAChE,uDAAmD;AACnD,2DAA0E;AAC1E,iDAAqD;AAErD,qFAAgF;AAChF,uFAAkF;AAElF,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,sEAAsE,CAAC,CAAA;AAEtG,sBAAM,CAAC,IAAI,CACT,uDAAuD,EACvD,wCAAkB,EAClB,0CAAmB,EACnB,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE;;IACtB,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;IACxC,MAAM,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC,MAAM,CAAA;IACtC,MAAM,EAAE,CAAC,EAAE,GAAG,OAAO,CAAA;IACrB,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,CAAA;IAEpC,IAAI,OAAO,OAAO,KAAK,SAAS,IAAI,CAAC,CAAA,MAAA,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,0CAAE,MAAM,CAAA,EAAE;QACjE,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,mCAAmC,CAAC,CAAC,CAAA;KAC3D;IAED,MAAM,gBAAgB,GAAa,MAAM,IAAA,qBAAa,EAAC,mBAAQ,CAAC,CAAC,OAAO,CAAC;QACvE,KAAK,EAAE,EAAE,EAAE,EAAE,WAAW,EAAE;KAC3B,CAAC,CAAA;IAEF,MAAM,YAAY,GAAgB,MAAM,IAAA,qBAAa,EAAC,wBAAW,CAAC,CAAC,OAAO,CAAC;QACzE,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,OAAO,CAAC,cAAc,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC;KACpE,CAAC,CAAA;IAEF,IAAI,CAAC,YAAY,EAAE;QACjB,MAAM,iBAAiB,GAAqB,MAAM,IAAA,qBAAa,EAAC,6BAAgB,CAAC,CAAC,OAAO,CAAC;YACxF,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC;SACpC,CAAC,CAAA;QACF,IAAI,iBAAiB,EAAE;YACrB,OAAO,CAAC,IAAI,GAAG;gBACb,MAAM,EAAE,CACN,MAAM,MAAM,CAAC,MAAM,CAAC;oBAClB,QAAQ,EAAE,IAAA,qBAAG,EAAA;;;;eAIZ;oBACD,SAAS,EAAE,EAAE,IAAI,EAAE,iBAAiB,CAAC,IAAI,EAAE;oBAC3C,OAAO,kCACF,OAAO,KACV,KAAK,kCACA,OAAO,CAAC,KAAK,KAChB,gBAAgB;4BAChB,MAAM,EACN,IAAI,EAAE,KAAK,MAEd;iBACK,CAAC,CACV,CAAC,IAAI;aACP,CAAA;YACD,OAAM;SACP;aAAM;YACL,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,+BAA+B,CAAC,CAAC,CAAA;SACvD;KACF;IAED,KAAK,CAAC,yCAAyC,EAAE,OAAO,CAAC,CAAA;IAEzD,OAAO,CAAC,IAAI,GAAG;QACb,MAAM,EAAE,CACN,MAAM,MAAM,CAAC,MAAM,CAAC;YAClB,QAAQ,EAAE,IAAA,qBAAG,EAAA;;;;WAIZ;YACD,SAAS,EAAE,EAAE,IAAI,EAAE,YAAY,CAAC,IAAI,EAAE;YACtC,OAAO,kCACF,OAAO,KACV,KAAK,kCACA,OAAO,CAAC,KAAK,KAChB,gBAAgB;oBAChB,MAAM,EACN,IAAI,EAAE,KAAK,MAEd;SACK,CAAC,CACV,CAAC,IAAI;KACP,CAAA;AACH,CAAC,CACF,CAAA","sourcesContent":["import gql from 'graphql-tag'\n\nimport { restfulApiRouter as router } from '@things-factory/api'\nimport { Bizplace } from '@things-factory/biz-base'\nimport { DraftReleaseGood, ReleaseGood } from '@things-factory/sales-base'\nimport { getRepository } from '@things-factory/shell'\n\nimport { businessMiddleware } from '../../../../middlewares/business-middleware'\nimport { warehouseMiddleware } from '../../../../middlewares/warehouse-middleware'\n\nconst debug = require('debug')('things-factory:operato-hub:restful-api:unstable:cancel-release-order')\n\nrouter.post(\n '/unstable/warehouse/:warehouseId/cancel-release-order',\n businessMiddleware,\n warehouseMiddleware,\n async (context, next) => {\n const { client, domain } = context.state\n const { warehouseId } = context.params\n const { t } = context\n const bodyReq = context.request.body\n\n if (typeof bodyReq === undefined || !Object.keys(bodyReq)?.length) {\n context.throw(400, t('error.invalid body request format'))\n }\n\n const customerBizplace: Bizplace = await getRepository(Bizplace).findOne({\n where: { id: warehouseId }\n })\n\n const releaseOrder: ReleaseGood = await getRepository(ReleaseGood).findOne({\n where: [{ id: bodyReq.releaseOrderId }, { refNo: bodyReq.orderNo }]\n })\n\n if (!releaseOrder) {\n const draftReleaseOrder: DraftReleaseGood = await getRepository(DraftReleaseGood).findOne({\n where: [{ refNo: bodyReq.orderNo }]\n })\n if (draftReleaseOrder) {\n context.body = {\n result: (\n await client.mutate({\n mutation: gql`\n mutation cancelDraftReleaseOrder($name: String!) {\n cancelDraftReleaseOrder(name: $name)\n }\n `,\n variables: { name: draftReleaseOrder.name },\n context: {\n ...context,\n state: {\n ...context.state,\n customerBizplace,\n domain,\n type: 'api'\n }\n }\n } as any)\n ).data\n }\n return\n } else {\n context.throw(400, t('error.release order not exist'))\n }\n }\n\n debug('post:/cancel-release-order body request', bodyReq)\n\n context.body = {\n result: (\n await client.mutate({\n mutation: gql`\n mutation pendingCancellationReleaseOrder($name: String!) {\n pendingCancellationReleaseOrder(name: $name)\n }\n `,\n variables: { name: releaseOrder.name },\n context: {\n ...context,\n state: {\n ...context.state,\n customerBizplace,\n domain,\n type: 'api'\n }\n }\n } as any)\n ).data\n }\n }\n)\n"]}
|
|
@@ -66,6 +66,33 @@ api_1.restfulApiRouter.get('/unstable/warehouse/:warehouseId/get-delivery-orders
|
|
|
66
66
|
refBy
|
|
67
67
|
path
|
|
68
68
|
}
|
|
69
|
+
orderInventories {
|
|
70
|
+
batchId
|
|
71
|
+
batchIdRef
|
|
72
|
+
packingType
|
|
73
|
+
packingSize
|
|
74
|
+
uom
|
|
75
|
+
releaseQty
|
|
76
|
+
releaseUomValue
|
|
77
|
+
product {
|
|
78
|
+
sku
|
|
79
|
+
name
|
|
80
|
+
description
|
|
81
|
+
brand
|
|
82
|
+
brandSku
|
|
83
|
+
gtin
|
|
84
|
+
type
|
|
85
|
+
}
|
|
86
|
+
orderToteItems {
|
|
87
|
+
qty
|
|
88
|
+
orderTote {
|
|
89
|
+
name
|
|
90
|
+
orderToteSeals {
|
|
91
|
+
name
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
}
|
|
69
96
|
releaseGood {
|
|
70
97
|
name
|
|
71
98
|
description
|
|
@@ -76,7 +103,6 @@ api_1.restfulApiRouter.get('/unstable/warehouse/:warehouseId/get-delivery-orders
|
|
|
76
103
|
ownTransport
|
|
77
104
|
crossDocking
|
|
78
105
|
status
|
|
79
|
-
releaseDateTime
|
|
80
106
|
releaseDate
|
|
81
107
|
remark
|
|
82
108
|
courierOption
|
|
@@ -110,16 +136,6 @@ api_1.restfulApiRouter.get('/unstable/warehouse/:warehouseId/get-delivery-orders
|
|
|
110
136
|
handoverType
|
|
111
137
|
dropoffAddress
|
|
112
138
|
noOfItems
|
|
113
|
-
orderProducts {
|
|
114
|
-
id
|
|
115
|
-
type
|
|
116
|
-
batchId
|
|
117
|
-
packingType
|
|
118
|
-
packingSize
|
|
119
|
-
releaseQty
|
|
120
|
-
releaseUomValue
|
|
121
|
-
status
|
|
122
|
-
}
|
|
123
139
|
}
|
|
124
140
|
createdAt
|
|
125
141
|
updatedAt
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-delivery-orders.js","sourceRoot":"","sources":["../../../../../server/routers/api/restful-apis/unstable/get-delivery-orders.ts"],"names":[],"mappings":";;;AAAA,sEAA6B;AAC7B,qCAAsD;AAEtD,6CAAgE;AAEhE,qFAAgF;AAChF,uFAAkF;AAElF,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,qEAAqE,CAAC,CAAA;AAErG,sBAAM,CAAC,GAAG,CACR,sDAAsD,EACtD,wCAAkB,EAClB,0CAAmB,EACnB,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE;IACtB,OAAO,MAAM,IAAA,uBAAa,GAAE,CAAC,WAAW,CAAC,KAAK,EAAE,EAAiB,EAAE,EAAE;;QACnE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;QAC7D,MAAM,EAAE,WAAW,EAAE,kBAAkB,EAAE,GAAG,OAAO,CAAC,MAAM,CAAA;QAC1D,MAAM,EAAE,CAAC,EAAE,GAAG,OAAO,CAAA;QAErB,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,GAAG,EAAE,EAAE,IAAI,GAAG,CAAC,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;QAEhE,IAAI,CAAC,kBAAkB;YAAE,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,+BAA+B,CAAC,CAAC,CAAA;QAC/E,IAAI,CAAC,QAAQ,IAAI,CAAC,MAAM;YAAE,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,0CAA0C,CAAC,CAAC,CAAA;QAC3F,IAAI,KAAK,GAAG,GAAG,IAAI,KAAK,GAAG,CAAC;YAAE,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,iDAAiD,CAAC,CAAC,CAAA;QAEtG,IAAI,QAAQ,GAAG,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,GAAG,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,GAAG,EAAE,CAAC,CAAA;QAC/F,IAAI,QAAQ,IAAI,EAAE,IAAI,QAAQ,IAAI,CAAC;YACjC,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,0DAA0D,CAAC,CAAC,CAAA;QAEnF,IAAI,OAAO,GAAQ;YACjB,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,kBAAkB,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;YACjF,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE;YACrE,EAAE,IAAI,EAAE,kBAAkB,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE;SAC7D,CAAA;QAED,IAAI,UAAU,GAAQ,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAA;QAEtE,IAAI,IAAI,GAAG;YACT,MAAM,EAAE,CACN,MAAM,MAAM,CAAC,KAAK,CAAC;gBACjB,KAAK,EAAE,IAAA,qBAAG,EAAA
|
|
1
|
+
{"version":3,"file":"get-delivery-orders.js","sourceRoot":"","sources":["../../../../../server/routers/api/restful-apis/unstable/get-delivery-orders.ts"],"names":[],"mappings":"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","sourcesContent":["import gql from 'graphql-tag'\nimport { EntityManager, getConnection } from 'typeorm'\n\nimport { restfulApiRouter as router } from '@things-factory/api'\n\nimport { businessMiddleware } from '../../../../middlewares/business-middleware'\nimport { warehouseMiddleware } from '../../../../middlewares/warehouse-middleware'\n\nconst debug = require('debug')('things-factory:operato-hub:restful-api:unstable:get-delivery-orders')\n\nrouter.get(\n '/unstable/warehouse/:warehouseId/get-delivery-orders',\n businessMiddleware,\n warehouseMiddleware,\n async (context, next) => {\n return await getConnection().transaction(async (tx: EntityManager) => {\n const { client, warehouse: bizplace, domain } = context.state\n const { warehouseId: customerBizplaceId } = context.params\n const { t } = context\n\n const { fromDate, toDate, limit = 10, page = 1 } = context.query\n\n if (!customerBizplaceId) context.throw(404, t('Error: Warehouse id not found'))\n if (!fromDate || !toDate) context.throw(400, t('Error: Date range not provided correctly'))\n if (limit > 100 || limit < 0) context.throw(400, t('Error: Limit value exceed 100 maximum threshold'))\n\n let noOfDays = (new Date(toDate).getTime() - new Date(fromDate).getTime()) / (1000 * 3600 * 24)\n if (noOfDays >= 31 || noOfDays <= 0)\n context.throw(400, t('Error: Date range value exceed 1 month maximum threshold'))\n\n let filters: any = [\n { name: 'bizplace', operator: 'in', value: [customerBizplaceId], relation: true },\n { name: 'createdAt', operator: 'between', value: [fromDate, toDate] },\n { name: 'orderProductsApi', operator: 'equal', value: true }\n ]\n\n let pagination: any = { page: parseInt(page), limit: parseInt(limit) }\n\n let data = {\n result: (\n await client.query({\n query: gql`\n query deliveryOrders($filters: [Filter!], $pagination: Pagination, $sortings: [Sorting!]) {\n deliveryOrders(filters: $filters, pagination: $pagination, sortings: $sortings) {\n items {\n name\n from\n to\n contactPointRefId\n truckNo\n deliveryDate\n status\n ownCollection\n looseItem\n deliveryDateTime\n loadWeight\n cargoType\n urgency\n telNo\n refNo\n otherDriver\n palletQty\n remark\n description\n reusablePallet\n domain {\n name\n }\n bizplace {\n name\n }\n attachments {\n name\n refBy\n path\n }\n orderInventories {\n batchId\n batchIdRef\n packingType\n packingSize\n uom\n releaseQty\n releaseUomValue\n product {\n sku\n name\n description\n brand\n brandSku\n gtin\n type\n }\n orderToteItems {\n qty\n orderTote {\n name\n orderToteSeals {\n name\n }\n }\n }\n }\n releaseGood {\n name\n description\n refNo\n collectionOrderNo\n truckNo\n exportOption\n ownTransport\n crossDocking\n status\n releaseDate\n remark\n courierOption\n packingOption\n refNo2\n refNo3\n type\n acceptedAt\n marketplaceOrderStatus\n billingAddress\n deliveryAddress1\n deliveryAddress2\n deliveryAddress3\n deliveryAddress4\n deliveryAddress5\n attentionTo\n attentionCompany\n city\n state\n postalCode\n country\n phone1\n phone2\n email\n transporter\n trackingNo\n airwayBill\n invoice\n pickupAddress\n pickupTime\n handoverType\n dropoffAddress\n noOfItems\n }\n createdAt\n updatedAt\n updater {\n name\n }\n }\n total\n }\n }\n `,\n variables: {\n filters,\n pagination,\n sortings: [{ name: 'createdAt', desc: true }]\n },\n context: {\n ...context,\n state: {\n ...context.state,\n bizplace,\n domain\n }\n }\n } as any)\n ).data\n }\n\n context.body = data?.result?.deliveryOrders?.items?.length == 0 ? 'No data available' : data\n })\n }\n)\n"]}
|
|
@@ -59,8 +59,15 @@ api_1.restfulApiRouter.get('/unstable/warehouse/:warehouseId/get-goods-received-
|
|
|
59
59
|
batchId
|
|
60
60
|
packingType
|
|
61
61
|
packingSize
|
|
62
|
-
|
|
63
|
-
|
|
62
|
+
packQty
|
|
63
|
+
actualPackQty
|
|
64
|
+
palletQty
|
|
65
|
+
actualPalletQty
|
|
66
|
+
uom
|
|
67
|
+
uomValue
|
|
68
|
+
totalUomValue
|
|
69
|
+
issue
|
|
70
|
+
remark
|
|
64
71
|
status
|
|
65
72
|
product {
|
|
66
73
|
id
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-goods-received-notes.js","sourceRoot":"","sources":["../../../../../server/routers/api/restful-apis/unstable/get-goods-received-notes.ts"],"names":[],"mappings":";;;AAAA,sEAA6B;AAC7B,qCAAsD;AAEtD,6CAAgE;AAEhE,qFAAgF;AAChF,uFAAkF;AAElF,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,0EAA0E,CAAC,CAAA;AAE1G,sBAAM,CAAC,GAAG,CACR,2DAA2D,EAC3D,wCAAkB,EAClB,0CAAmB,EACnB,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE;IACtB,OAAO,MAAM,IAAA,uBAAa,GAAE,CAAC,WAAW,CAAC,KAAK,EAAE,EAAiB,EAAE,EAAE;;QACnE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;QAC7D,MAAM,EAAE,WAAW,EAAE,kBAAkB,EAAE,GAAG,OAAO,CAAC,MAAM,CAAA;QAC1D,MAAM,EAAE,CAAC,EAAE,GAAG,OAAO,CAAA;QAErB,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,GAAG,EAAE,EAAE,IAAI,GAAG,CAAC,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;QAEhE,IAAI,CAAC,kBAAkB;YAAE,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,+BAA+B,CAAC,CAAC,CAAA;QAC/E,IAAI,CAAC,QAAQ,IAAI,CAAC,MAAM;YAAE,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,0CAA0C,CAAC,CAAC,CAAA;QAC3F,IAAI,KAAK,GAAG,GAAG,IAAI,KAAK,GAAG,CAAC;YAAE,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,iDAAiD,CAAC,CAAC,CAAA;QAEtG,IAAI,QAAQ,GAAG,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,GAAG,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,GAAG,EAAE,CAAC,CAAA;QAC/F,IAAI,QAAQ,IAAI,EAAE,IAAI,QAAQ,IAAI,CAAC;YACjC,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,0DAA0D,CAAC,CAAC,CAAA;QAEnF,IAAI,OAAO,GAAQ;YACjB,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,kBAAkB,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;YACjF,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE;YACrE,EAAE,IAAI,EAAE,kBAAkB,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE;SAC7D,CAAA;QAED,IAAI,UAAU,GAAQ,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAA;QAEtE,IAAI,IAAI,GAAG;YACT,MAAM,EAAE,CACN,MAAM,MAAM,CAAC,KAAK,CAAC;gBACjB,KAAK,EAAE,IAAA,qBAAG,EAAA
|
|
1
|
+
{"version":3,"file":"get-goods-received-notes.js","sourceRoot":"","sources":["../../../../../server/routers/api/restful-apis/unstable/get-goods-received-notes.ts"],"names":[],"mappings":"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","sourcesContent":["import gql from 'graphql-tag'\nimport { EntityManager, getConnection } from 'typeorm'\n\nimport { restfulApiRouter as router } from '@things-factory/api'\n\nimport { businessMiddleware } from '../../../../middlewares/business-middleware'\nimport { warehouseMiddleware } from '../../../../middlewares/warehouse-middleware'\n\nconst debug = require('debug')('things-factory:operato-hub:restful-api:unstable:get-goods-received-notes')\n\nrouter.get(\n '/unstable/warehouse/:warehouseId/get-goods-received-notes',\n businessMiddleware,\n warehouseMiddleware,\n async (context, next) => {\n return await getConnection().transaction(async (tx: EntityManager) => {\n const { client, warehouse: bizplace, domain } = context.state\n const { warehouseId: customerBizplaceId } = context.params\n const { t } = context\n\n const { fromDate, toDate, limit = 10, page = 1 } = context.query\n\n if (!customerBizplaceId) context.throw(404, t('Error: Warehouse id not found'))\n if (!fromDate || !toDate) context.throw(400, t('Error: Date range not provided correctly'))\n if (limit > 100 || limit < 0) context.throw(400, t('Error: Limit value exceed 100 maximum threshold'))\n\n let noOfDays = (new Date(toDate).getTime() - new Date(fromDate).getTime()) / (1000 * 3600 * 24)\n if (noOfDays >= 31 || noOfDays <= 0)\n context.throw(400, t('Error: Date range value exceed 1 month maximum threshold'))\n\n let filters: any = [\n { name: 'bizplace', operator: 'in', value: [customerBizplaceId], relation: true },\n { name: 'createdAt', operator: 'between', value: [fromDate, toDate] },\n { name: 'orderProductsApi', operator: 'equal', value: true }\n ]\n\n let pagination: any = { page: parseInt(page), limit: parseInt(limit) }\n\n let data = {\n result: (\n await client.query({\n query: gql`\n query goodsReceivalNotes($filters: [Filter!], $pagination: Pagination, $sortings: [Sorting!]) {\n goodsReceivalNotes(filters: $filters, pagination: $pagination, sortings: $sortings) {\n items {\n id\n name\n refNo\n description\n customerStatus\n status\n domain {\n id\n name\n }\n arrivalNotice {\n id\n name\n description\n status\n refNo\n refNo2\n refNo3\n orderProducts {\n id\n type\n batchId\n packingType\n packingSize\n packQty\n actualPackQty\n palletQty\n actualPalletQty\n uom\n uomValue\n totalUomValue\n issue\n remark\n status\n product {\n id\n name\n sku\n packingType\n primaryUnit\n primaryValue\n gtin\n }\n }\n }\n bizplace {\n id\n name\n description\n }\n attachments {\n id\n name\n refBy\n path\n }\n createdAt\n updatedAt\n updater {\n id\n name\n description\n }\n }\n total\n }\n }\n `,\n variables: {\n filters,\n pagination,\n sortings: [{ name: 'createdAt', desc: true }]\n },\n context: {\n ...context,\n state: {\n ...context.state,\n bizplace,\n domain\n }\n }\n } as any)\n ).data\n }\n\n context.body = data?.result?.goodsReceivalNotes?.items?.length == 0 ? 'No data available' : data\n })\n }\n)\n"]}
|
|
@@ -3,9 +3,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.checkValidity = void 0;
|
|
4
4
|
const tslib_1 = require("tslib");
|
|
5
5
|
const graphql_tag_1 = tslib_1.__importDefault(require("graphql-tag"));
|
|
6
|
-
const typeorm_1 = require("typeorm");
|
|
7
6
|
const api_1 = require("@things-factory/api");
|
|
8
7
|
const product_base_1 = require("@things-factory/product-base");
|
|
8
|
+
const shell_1 = require("@things-factory/shell");
|
|
9
9
|
const business_middleware_1 = require("../../../../middlewares/business-middleware");
|
|
10
10
|
const warehouse_middleware_1 = require("../../../../middlewares/warehouse-middleware");
|
|
11
11
|
const debug = require('debug')('things-factory:operato-hub:restful-api:unstable:onhand-inventories');
|
|
@@ -86,7 +86,7 @@ async function checkValidity(bizplace, skuId, batchId) {
|
|
|
86
86
|
filters = [...filters, { name: 'bizplace', operator: 'in', value: [bizplace.id], relation: true }];
|
|
87
87
|
}
|
|
88
88
|
if (skuId) {
|
|
89
|
-
product = await (0,
|
|
89
|
+
product = await (0, shell_1.getRepository)(product_base_1.Product).findOne({
|
|
90
90
|
where: {
|
|
91
91
|
sku: skuId
|
|
92
92
|
},
|