@things-factory/sales-base 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/constants/order.js +4 -1
- package/dist-server/constants/order.js.map +1 -1
- package/dist-server/constants/release-good.js +5 -1
- package/dist-server/constants/release-good.js.map +1 -1
- package/dist-server/controllers/ecommerce/ecommerce-controller.js +1 -1
- package/dist-server/controllers/ecommerce/ecommerce-controller.js.map +1 -1
- package/dist-server/controllers/ecommerce/sellercraft-controller.js +102 -94
- package/dist-server/controllers/ecommerce/sellercraft-controller.js.map +1 -1
- package/dist-server/controllers/order-controller.js +7 -5
- package/dist-server/controllers/order-controller.js.map +1 -1
- package/dist-server/service/arrival-notice/arrival-notice-mutation.js +152 -65
- package/dist-server/service/arrival-notice/arrival-notice-mutation.js.map +1 -1
- package/dist-server/service/arrival-notice/arrival-notice-query.js +15 -16
- package/dist-server/service/arrival-notice/arrival-notice-query.js.map +1 -1
- package/dist-server/service/arrival-notice/arrival-notice-types.js +1 -2
- package/dist-server/service/arrival-notice/arrival-notice-types.js.map +1 -1
- package/dist-server/service/arrival-notice/arrival-notice.js +7 -7
- package/dist-server/service/arrival-notice/arrival-notice.js.map +1 -1
- package/dist-server/service/claim/claim-mutation.js +15 -14
- package/dist-server/service/claim/claim-mutation.js.map +1 -1
- package/dist-server/service/claim/claim-query.js +8 -10
- package/dist-server/service/claim/claim-query.js.map +1 -1
- package/dist-server/service/claim/claim.js +7 -7
- package/dist-server/service/claim/claim.js.map +1 -1
- package/dist-server/service/claim-detail/claim-detail-mutation.js +9 -8
- package/dist-server/service/claim-detail/claim-detail-mutation.js.map +1 -1
- package/dist-server/service/claim-detail/claim-detail-query.js +9 -10
- package/dist-server/service/claim-detail/claim-detail-query.js.map +1 -1
- package/dist-server/service/claim-detail/claim-detail.js +3 -4
- package/dist-server/service/claim-detail/claim-detail.js.map +1 -1
- package/dist-server/service/claim-order/claim-order-mutation.js +9 -8
- package/dist-server/service/claim-order/claim-order-mutation.js.map +1 -1
- package/dist-server/service/claim-order/claim-order-query.js +9 -10
- package/dist-server/service/claim-order/claim-order-query.js.map +1 -1
- package/dist-server/service/claim-order/claim-order.js +3 -4
- package/dist-server/service/claim-order/claim-order.js.map +1 -1
- package/dist-server/service/collection-order/collection-order-mutation.js +15 -14
- package/dist-server/service/collection-order/collection-order-mutation.js.map +1 -1
- package/dist-server/service/collection-order/collection-order-query.js +14 -14
- package/dist-server/service/collection-order/collection-order-query.js.map +1 -1
- package/dist-server/service/collection-order/collection-order-types.js +4 -5
- package/dist-server/service/collection-order/collection-order-types.js.map +1 -1
- package/dist-server/service/collection-order/collection-order.js +7 -7
- package/dist-server/service/collection-order/collection-order.js.map +1 -1
- package/dist-server/service/delivery-order/delivery-order-mutation.js +138 -51
- package/dist-server/service/delivery-order/delivery-order-mutation.js.map +1 -1
- package/dist-server/service/delivery-order/delivery-order-query.js +51 -38
- package/dist-server/service/delivery-order/delivery-order-query.js.map +1 -1
- package/dist-server/service/delivery-order/delivery-order-types.js +22 -3
- package/dist-server/service/delivery-order/delivery-order-types.js.map +1 -1
- package/dist-server/service/delivery-order/delivery-order.js +92 -7
- package/dist-server/service/delivery-order/delivery-order.js.map +1 -1
- package/dist-server/service/draft-release-good/draft-release-good-mutation.js +157 -143
- package/dist-server/service/draft-release-good/draft-release-good-mutation.js.map +1 -1
- package/dist-server/service/draft-release-good/draft-release-good-query.js +54 -24
- package/dist-server/service/draft-release-good/draft-release-good-query.js.map +1 -1
- package/dist-server/service/draft-release-good/draft-release-good-type.js +3 -4
- package/dist-server/service/draft-release-good/draft-release-good-type.js.map +1 -1
- package/dist-server/service/draft-release-good/draft-release-good.js +11 -6
- package/dist-server/service/draft-release-good/draft-release-good.js.map +1 -1
- package/dist-server/service/goods-receival-note/goods-receival-note-mutation.js +12 -11
- package/dist-server/service/goods-receival-note/goods-receival-note-mutation.js.map +1 -1
- package/dist-server/service/goods-receival-note/goods-receival-note-query.js +104 -12
- package/dist-server/service/goods-receival-note/goods-receival-note-query.js.map +1 -1
- package/dist-server/service/goods-receival-note/goods-receival-note-types.js +67 -4
- package/dist-server/service/goods-receival-note/goods-receival-note-types.js.map +1 -1
- package/dist-server/service/goods-receival-note/goods-receival-note.js +46 -5
- package/dist-server/service/goods-receival-note/goods-receival-note.js.map +1 -1
- package/dist-server/service/inventory-check/inventory-check-mutation.js +6 -6
- package/dist-server/service/inventory-check/inventory-check-mutation.js.map +1 -1
- package/dist-server/service/inventory-check/inventory-check-query.js +8 -10
- package/dist-server/service/inventory-check/inventory-check-query.js.map +1 -1
- package/dist-server/service/inventory-check/inventory-check.js +5 -5
- package/dist-server/service/inventory-check/inventory-check.js.map +1 -1
- package/dist-server/service/invoice/invoice-mutation.js +5 -5
- package/dist-server/service/invoice/invoice-mutation.js.map +1 -1
- package/dist-server/service/invoice/invoice-query.js +7 -9
- package/dist-server/service/invoice/invoice-query.js.map +1 -1
- package/dist-server/service/invoice/invoice-types.js +2 -3
- package/dist-server/service/invoice/invoice-types.js.map +1 -1
- package/dist-server/service/invoice/invoice.js +3 -4
- package/dist-server/service/invoice/invoice.js.map +1 -1
- package/dist-server/service/invoice-product/invoice-product-mutation.js +1 -1
- package/dist-server/service/invoice-product/invoice-product-mutation.js.map +1 -1
- package/dist-server/service/invoice-product/invoice-product-query.js +7 -9
- package/dist-server/service/invoice-product/invoice-product-query.js.map +1 -1
- package/dist-server/service/invoice-product/invoice-product.js +5 -5
- package/dist-server/service/invoice-product/invoice-product.js.map +1 -1
- package/dist-server/service/job-sheet/job-sheet-mutation.js +5 -5
- package/dist-server/service/job-sheet/job-sheet-mutation.js.map +1 -1
- package/dist-server/service/job-sheet/job-sheet-query.js +6 -8
- package/dist-server/service/job-sheet/job-sheet-query.js.map +1 -1
- package/dist-server/service/job-sheet/job-sheet.js +5 -5
- package/dist-server/service/job-sheet/job-sheet.js.map +1 -1
- package/dist-server/service/manifest/manifest-mutation.js +84 -4
- package/dist-server/service/manifest/manifest-mutation.js.map +1 -1
- package/dist-server/service/manifest/manifest-query.js +52 -19
- package/dist-server/service/manifest/manifest-query.js.map +1 -1
- package/dist-server/service/manifest/manifest-type.js +8 -0
- package/dist-server/service/manifest/manifest-type.js.map +1 -1
- package/dist-server/service/manifest/manifest.js +8 -4
- package/dist-server/service/manifest/manifest.js.map +1 -1
- package/dist-server/service/order-inventory/order-inventory-mutation.js +3 -3
- package/dist-server/service/order-inventory/order-inventory-mutation.js.map +1 -1
- package/dist-server/service/order-inventory/order-inventory-query.js +202 -221
- package/dist-server/service/order-inventory/order-inventory-query.js.map +1 -1
- package/dist-server/service/order-inventory/order-inventory-types.js +15 -15
- package/dist-server/service/order-inventory/order-inventory-types.js.map +1 -1
- package/dist-server/service/order-inventory/order-inventory.js +45 -15
- package/dist-server/service/order-inventory/order-inventory.js.map +1 -1
- package/dist-server/service/order-product/order-product-mutation.js +2 -2
- package/dist-server/service/order-product/order-product-mutation.js.map +1 -1
- package/dist-server/service/order-product/order-product-query.js +44 -14
- package/dist-server/service/order-product/order-product-query.js.map +1 -1
- package/dist-server/service/order-product/order-product-types.js +18 -19
- package/dist-server/service/order-product/order-product-types.js.map +1 -1
- package/dist-server/service/order-product/order-product.js +14 -11
- package/dist-server/service/order-product/order-product.js.map +1 -1
- package/dist-server/service/order-tote/order-tote-mutation.js +2 -2
- package/dist-server/service/order-tote/order-tote-mutation.js.map +1 -1
- package/dist-server/service/order-tote/order-tote-query.js +13 -14
- package/dist-server/service/order-tote/order-tote-query.js.map +1 -1
- package/dist-server/service/order-tote/order-tote-types.js +4 -5
- package/dist-server/service/order-tote/order-tote-types.js.map +1 -1
- package/dist-server/service/order-tote/order-tote.js +6 -5
- package/dist-server/service/order-tote/order-tote.js.map +1 -1
- package/dist-server/service/order-tote-item/order-tote-item-mutation.js +2 -2
- package/dist-server/service/order-tote-item/order-tote-item-mutation.js.map +1 -1
- package/dist-server/service/order-tote-item/order-tote-item-query.js +7 -9
- package/dist-server/service/order-tote-item/order-tote-item-query.js.map +1 -1
- package/dist-server/service/order-tote-item/order-tote-item-types.js +5 -6
- package/dist-server/service/order-tote-item/order-tote-item-types.js.map +1 -1
- package/dist-server/service/order-tote-item/order-tote-item.js +2 -3
- package/dist-server/service/order-tote-item/order-tote-item.js.map +1 -1
- package/dist-server/service/order-tote-seal/order-tote-seal-mutation.js +2 -2
- package/dist-server/service/order-tote-seal/order-tote-seal-mutation.js.map +1 -1
- package/dist-server/service/order-tote-seal/order-tote-seal-query.js +8 -10
- package/dist-server/service/order-tote-seal/order-tote-seal-query.js.map +1 -1
- package/dist-server/service/order-tote-seal/order-tote-seal-types.js +2 -3
- package/dist-server/service/order-tote-seal/order-tote-seal-types.js.map +1 -1
- package/dist-server/service/order-tote-seal/order-tote-seal.js +2 -3
- package/dist-server/service/order-tote-seal/order-tote-seal.js.map +1 -1
- package/dist-server/service/order-vas/order-vas-mutation.js +1 -1
- package/dist-server/service/order-vas/order-vas-mutation.js.map +1 -1
- package/dist-server/service/order-vas/order-vas-query.js +8 -10
- package/dist-server/service/order-vas/order-vas-query.js.map +1 -1
- package/dist-server/service/order-vas/order-vas-types.js +16 -17
- package/dist-server/service/order-vas/order-vas-types.js.map +1 -1
- package/dist-server/service/order-vas/order-vas.js +7 -7
- package/dist-server/service/order-vas/order-vas.js.map +1 -1
- package/dist-server/service/others/other-query.js +48 -30
- package/dist-server/service/others/other-query.js.map +1 -1
- package/dist-server/service/purchase-order/purchase-order-mutation.js +36 -34
- package/dist-server/service/purchase-order/purchase-order-mutation.js.map +1 -1
- package/dist-server/service/purchase-order/purchase-order-query.js +11 -12
- package/dist-server/service/purchase-order/purchase-order-query.js.map +1 -1
- package/dist-server/service/purchase-order/purchase-order-types.js +8 -9
- package/dist-server/service/purchase-order/purchase-order-types.js.map +1 -1
- package/dist-server/service/purchase-order/purchase-order.js +8 -8
- package/dist-server/service/purchase-order/purchase-order.js.map +1 -1
- package/dist-server/service/purchase-order-other-charge/purchase-order-other-charge-mutation.js +1 -1
- package/dist-server/service/purchase-order-other-charge/purchase-order-other-charge-mutation.js.map +1 -1
- package/dist-server/service/purchase-order-other-charge/purchase-order-other-charge-query.js +9 -10
- package/dist-server/service/purchase-order-other-charge/purchase-order-other-charge-query.js.map +1 -1
- package/dist-server/service/purchase-order-other-charge/purchase-order-other-charge.js +3 -4
- package/dist-server/service/purchase-order-other-charge/purchase-order-other-charge.js.map +1 -1
- package/dist-server/service/release-good/release-good-mutation.js +182 -94
- package/dist-server/service/release-good/release-good-mutation.js.map +1 -1
- package/dist-server/service/release-good/release-good-query.js +251 -172
- package/dist-server/service/release-good/release-good-query.js.map +1 -1
- package/dist-server/service/release-good/release-good-types.js +181 -9
- package/dist-server/service/release-good/release-good-types.js.map +1 -1
- package/dist-server/service/release-good/release-good.js +64 -13
- package/dist-server/service/release-good/release-good.js.map +1 -1
- package/dist-server/service/retail-replenishment-order/retail-replenishment-order-mutation.js +19 -14
- package/dist-server/service/retail-replenishment-order/retail-replenishment-order-mutation.js.map +1 -1
- package/dist-server/service/retail-replenishment-order/retail-replenishment-order-query.js +8 -10
- package/dist-server/service/retail-replenishment-order/retail-replenishment-order-query.js.map +1 -1
- package/dist-server/service/retail-replenishment-order/retail-replenishment-order-types.js +6 -7
- package/dist-server/service/retail-replenishment-order/retail-replenishment-order-types.js.map +1 -1
- package/dist-server/service/retail-replenishment-order/retail-replenishment-order.js +5 -5
- package/dist-server/service/retail-replenishment-order/retail-replenishment-order.js.map +1 -1
- package/dist-server/service/return-order/return-order-mutation.js +38 -27
- package/dist-server/service/return-order/return-order-mutation.js.map +1 -1
- package/dist-server/service/return-order/return-order-query.js +14 -16
- package/dist-server/service/return-order/return-order-query.js.map +1 -1
- package/dist-server/service/return-order/return-order-types.js +9 -9
- package/dist-server/service/return-order/return-order-types.js.map +1 -1
- package/dist-server/service/return-order/return-order.js +6 -6
- package/dist-server/service/return-order/return-order.js.map +1 -1
- package/dist-server/service/reverse-kitting-order/reverse-kitting-order-mutation.js +17 -13
- package/dist-server/service/reverse-kitting-order/reverse-kitting-order-mutation.js.map +1 -1
- package/dist-server/service/reverse-kitting-order/reverse-kitting-order-query.js +13 -14
- package/dist-server/service/reverse-kitting-order/reverse-kitting-order-query.js.map +1 -1
- package/dist-server/service/reverse-kitting-order/reverse-kitting-order-type.js +9 -9
- package/dist-server/service/reverse-kitting-order/reverse-kitting-order-type.js.map +1 -1
- package/dist-server/service/reverse-kitting-order/reverse-kitting-order.js +8 -8
- package/dist-server/service/reverse-kitting-order/reverse-kitting-order.js.map +1 -1
- package/dist-server/service/reverse-kitting-order-inventory/reverse-kitting-order-inventory-mutation.js +4 -4
- package/dist-server/service/reverse-kitting-order-inventory/reverse-kitting-order-inventory-mutation.js.map +1 -1
- package/dist-server/service/reverse-kitting-order-inventory/reverse-kitting-order-inventory-query.js +7 -9
- package/dist-server/service/reverse-kitting-order-inventory/reverse-kitting-order-inventory-query.js.map +1 -1
- package/dist-server/service/reverse-kitting-order-inventory/reverse-kitting-order-inventory-type.js +4 -5
- package/dist-server/service/reverse-kitting-order-inventory/reverse-kitting-order-inventory-type.js.map +1 -1
- package/dist-server/service/reverse-kitting-order-inventory/reverse-kitting-order-inventory.js +7 -7
- package/dist-server/service/reverse-kitting-order-inventory/reverse-kitting-order-inventory.js.map +1 -1
- package/dist-server/service/shipping-order/shipping-order-mutation.js +2 -2
- package/dist-server/service/shipping-order/shipping-order-mutation.js.map +1 -1
- package/dist-server/service/shipping-order/shipping-order-query.js +9 -10
- package/dist-server/service/shipping-order/shipping-order-query.js.map +1 -1
- package/dist-server/service/shipping-order/shipping-order-types.js +21 -1
- package/dist-server/service/shipping-order/shipping-order-types.js.map +1 -1
- package/dist-server/service/shipping-order/shipping-order.js +27 -7
- package/dist-server/service/shipping-order/shipping-order.js.map +1 -1
- package/dist-server/service/transfer-order/transfer-order-mutation.js +19 -14
- package/dist-server/service/transfer-order/transfer-order-mutation.js.map +1 -1
- package/dist-server/service/transfer-order/transfer-order-query.js +8 -10
- package/dist-server/service/transfer-order/transfer-order-query.js.map +1 -1
- package/dist-server/service/transfer-order/transfer-order-types.js +1 -2
- package/dist-server/service/transfer-order/transfer-order-types.js.map +1 -1
- package/dist-server/service/transfer-order/transfer-order.js +5 -5
- package/dist-server/service/transfer-order/transfer-order.js.map +1 -1
- package/dist-server/service/vas/vas-mutation.js +2 -2
- package/dist-server/service/vas/vas-mutation.js.map +1 -1
- package/dist-server/service/vas/vas-query.js +8 -10
- package/dist-server/service/vas/vas-query.js.map +1 -1
- package/dist-server/service/vas/vas.js +3 -4
- package/dist-server/service/vas/vas.js.map +1 -1
- package/dist-server/service/vas-order/vas-order-mutation.js +20 -15
- package/dist-server/service/vas-order/vas-order-mutation.js.map +1 -1
- package/dist-server/service/vas-order/vas-order-query.js +11 -12
- package/dist-server/service/vas-order/vas-order-query.js.map +1 -1
- package/dist-server/service/vas-order/vas-order.js +5 -5
- package/dist-server/service/vas-order/vas-order.js.map +1 -1
- package/dist-server/tsconfig.tsbuildinfo +1 -1
- package/dist-server/utils/datetime-util.js +49 -0
- package/dist-server/utils/datetime-util.js.map +1 -0
- package/dist-server/utils/index.js +1 -0
- package/dist-server/utils/index.js.map +1 -1
- package/dist-server/utils/inventory-util.js +89 -29
- package/dist-server/utils/inventory-util.js.map +1 -1
- package/package.json +13 -13
- package/server/constants/order.ts +4 -1
- package/server/constants/release-good.ts +6 -3
- package/server/controllers/ecommerce/ecommerce-controller.ts +1 -1
- package/server/controllers/ecommerce/sellercraft-controller.ts +124 -107
- package/server/controllers/order-controller.ts +7 -5
- package/server/service/arrival-notice/arrival-notice-mutation.ts +204 -91
- package/server/service/arrival-notice/arrival-notice-query.ts +17 -17
- package/server/service/claim/claim-mutation.ts +20 -14
- package/server/service/claim/claim-query.ts +10 -9
- package/server/service/claim-detail/claim-detail-mutation.ts +16 -10
- package/server/service/claim-detail/claim-detail-query.ts +13 -8
- package/server/service/claim-order/claim-order-mutation.ts +16 -10
- package/server/service/claim-order/claim-order-query.ts +10 -8
- package/server/service/collection-order/collection-order-mutation.ts +31 -32
- package/server/service/collection-order/collection-order-query.ts +18 -15
- package/server/service/delivery-order/delivery-order-mutation.ts +206 -73
- package/server/service/delivery-order/delivery-order-query.ts +90 -53
- package/server/service/delivery-order/delivery-order-types.ts +15 -0
- package/server/service/delivery-order/delivery-order.ts +68 -0
- package/server/service/draft-release-good/draft-release-good-mutation.ts +208 -183
- package/server/service/draft-release-good/draft-release-good-query.ts +81 -44
- package/server/service/draft-release-good/draft-release-good.ts +7 -3
- package/server/service/goods-receival-note/goods-receival-note-mutation.ts +23 -18
- package/server/service/goods-receival-note/goods-receival-note-query.ts +126 -15
- package/server/service/goods-receival-note/goods-receival-note-types.ts +48 -0
- package/server/service/goods-receival-note/goods-receival-note.ts +32 -0
- package/server/service/inventory-check/inventory-check-mutation.ts +24 -19
- package/server/service/inventory-check/inventory-check-query.ts +10 -9
- package/server/service/invoice/invoice-mutation.ts +14 -11
- package/server/service/invoice/invoice-query.ts +8 -9
- package/server/service/invoice-product/invoice-product-mutation.ts +4 -4
- package/server/service/invoice-product/invoice-product-query.ts +8 -9
- package/server/service/job-sheet/job-sheet-mutation.ts +12 -10
- package/server/service/job-sheet/job-sheet-query.ts +16 -11
- package/server/service/manifest/manifest-mutation.ts +93 -8
- package/server/service/manifest/manifest-query.ts +73 -23
- package/server/service/manifest/manifest-type.ts +6 -0
- package/server/service/manifest/manifest.ts +6 -2
- package/server/service/order-inventory/order-inventory-mutation.ts +13 -12
- package/server/service/order-inventory/order-inventory-query.ts +226 -253
- package/server/service/order-inventory/order-inventory.ts +26 -2
- package/server/service/order-product/order-product-mutation.ts +11 -10
- package/server/service/order-product/order-product-query.ts +55 -18
- package/server/service/order-product/order-product.ts +7 -0
- package/server/service/order-tote/order-tote-mutation.ts +10 -9
- package/server/service/order-tote/order-tote-query.ts +13 -15
- package/server/service/order-tote/order-tote.ts +13 -2
- package/server/service/order-tote-item/order-tote-item-mutation.ts +10 -9
- package/server/service/order-tote-item/order-tote-item-query.ts +12 -18
- package/server/service/order-tote-seal/order-tote-seal-mutation.ts +10 -9
- package/server/service/order-tote-seal/order-tote-seal-query.ts +10 -11
- package/server/service/order-vas/order-vas-mutation.ts +4 -5
- package/server/service/order-vas/order-vas-query.ts +10 -9
- package/server/service/others/other-query.ts +76 -54
- package/server/service/purchase-order/purchase-order-mutation.ts +46 -46
- package/server/service/purchase-order/purchase-order-query.ts +13 -11
- package/server/service/purchase-order-other-charge/purchase-order-other-charge-mutation.ts +7 -7
- package/server/service/purchase-order-other-charge/purchase-order-other-charge-query.ts +14 -9
- package/server/service/release-good/release-good-mutation.ts +297 -134
- package/server/service/release-good/release-good-query.ts +268 -186
- package/server/service/release-good/release-good-types.ts +132 -4
- package/server/service/release-good/release-good.ts +55 -24
- package/server/service/retail-replenishment-order/retail-replenishment-order-mutation.ts +35 -29
- package/server/service/retail-replenishment-order/retail-replenishment-order-query.ts +13 -9
- package/server/service/retail-replenishment-order/retail-replenishment-order-types.ts +7 -5
- package/server/service/return-order/return-order-mutation.ts +82 -54
- package/server/service/return-order/return-order-query.ts +21 -19
- package/server/service/reverse-kitting-order/reverse-kitting-order-mutation.ts +38 -23
- package/server/service/reverse-kitting-order/reverse-kitting-order-query.ts +19 -16
- package/server/service/reverse-kitting-order/reverse-kitting-order.ts +2 -2
- package/server/service/reverse-kitting-order-inventory/reverse-kitting-order-inventory-mutation.ts +9 -9
- package/server/service/reverse-kitting-order-inventory/reverse-kitting-order-inventory-query.ts +7 -8
- package/server/service/shipping-order/shipping-order-mutation.ts +11 -11
- package/server/service/shipping-order/shipping-order-query.ts +13 -11
- package/server/service/shipping-order/shipping-order-types.ts +16 -1
- package/server/service/shipping-order/shipping-order.ts +18 -2
- package/server/service/transfer-order/transfer-order-mutation.ts +34 -25
- package/server/service/transfer-order/transfer-order-query.ts +11 -10
- package/server/service/vas/vas-mutation.ts +13 -15
- package/server/service/vas/vas-query.ts +12 -10
- package/server/service/vas-order/vas-order-mutation.ts +38 -28
- package/server/service/vas-order/vas-order-query.ts +15 -13
- package/server/utils/datetime-util.ts +54 -0
- package/server/utils/index.ts +1 -0
- package/server/utils/inventory-util.ts +128 -34
- package/translations/en.json +4 -0
- package/translations/ko.json +6 -2
- package/translations/ms.json +5 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"arrival-notice-mutation.js","sourceRoot":"","sources":["../../../server/service/arrival-notice/arrival-notice-mutation.ts"],"names":[],"mappings":"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","sourcesContent":["import type { FileUpload } from 'graphql-upload/GraphQLUpload.js'\nimport GraphQLUpload from 'graphql-upload/GraphQLUpload.js'\nimport { Arg, Ctx, Directive, Mutation, Resolver } from 'type-graphql'\nimport { EntityManager, getConnection, getRepository, In, Repository } from 'typeorm'\n\nimport { Attachment, createAttachments } from '@things-factory/attachment-base'\nimport { Role, User } from '@things-factory/auth-base'\nimport {\n Bizplace,\n ContactPoint,\n getDomainUsers,\n getMyBizplace,\n getOutletBizplace,\n getPermittedBizplaces\n} from '@things-factory/biz-base'\nimport { generateId } from '@things-factory/id-rule-base'\nimport { sendNotification } from '@things-factory/notification'\nimport { Product } from '@things-factory/product-base'\nimport { Setting } from '@things-factory/setting-base'\nimport { Domain } from '@things-factory/shell'\n\nimport {\n ORDER_NUMBER_RULE_TYPE,\n ORDER_NUMBER_SETTING_KEY,\n ORDER_PRODUCT_STATUS,\n ORDER_STATUS,\n ORDER_TYPES,\n ORDER_VAS_STATUS\n} from '../../constants'\nimport { ATTACHMENT_TYPE } from '../../constants/attachment-type'\nimport { ValidationError } from '../../errors'\nimport { OrderNoGenerator } from '../../utils/order-no-generator'\nimport { CollectionOrder } from '../collection-order/collection-order'\nimport { JobSheet } from '../job-sheet/job-sheet'\nimport { generateJobSheet } from '../job-sheet/job-sheet-mutation'\nimport { OrderProduct } from '../order-product/order-product'\nimport { NewOrderProduct, OrderProductPatch } from '../order-product/order-product-types'\nimport { OrderVas } from '../order-vas/order-vas'\nimport { ReleaseGood } from '../release-good/release-good'\nimport { confirmReleaseGood, deleteReleaseGood, rejectReleaseGood } from '../release-good/release-good-mutation'\nimport { Vas } from '../vas/vas'\nimport { validateBulkArrivalNoticesFunction } from './'\nimport { ArrivalNotice } from './arrival-notice'\nimport { ArrivalNoticeList, ArrivalNoticePatch, NewArrivalNotice, RawArrivalNotice } from './arrival-notice-types'\n\nconst debug = require('debug')('things-factory:operato-wms:addArrivalNotice')\n\n@Resolver(ArrivalNotice)\nexport class ArrivalNoticeMutation {\n @Directive('@privilege(category: \"order_customer\", privilege: \"mutation\")')\n @Directive('@transaction')\n @Mutation(returns => Boolean)\n async deleteArrivalNotice(@Arg('name') name: string, @Ctx() context: any): Promise<Boolean> {\n const { tx, user, domain }: { tx: EntityManager; user: User; domain: Domain } = context.state\n\n return await deleteArrivalNotice(tx, name, user, domain)\n }\n\n @Directive('@privilege(category: \"order_customer\", privilege: \"mutation\")')\n @Directive('@transaction')\n @Mutation(returns => ArrivalNotice)\n async generateArrivalNotice(\n @Ctx() context: any,\n @Arg('arrivalNotice', type => NewArrivalNotice) arrivalNotice: NewArrivalNotice,\n @Arg('files', type => [GraphQLUpload], { nullable: true }) files?: FileUpload[]\n ): Promise<ArrivalNotice> {\n const { tx }: { tx: EntityManager } = context.state\n const createdArrivalNotice: ArrivalNotice = await generateArrivalNoticeFunction(\n null,\n arrivalNotice,\n files,\n context,\n tx\n )\n\n return createdArrivalNotice\n }\n\n @Directive('@privilege(category: \"order_customer\", privilege: \"mutation\")')\n @Directive('@transaction')\n @Mutation(returns => ArrivalNotice)\n async confirmArrivalNotice(@Arg('name') name: string, @Ctx() context: any): Promise<ArrivalNotice> {\n const { tx }: { tx: EntityManager } = context.state\n const arrivalNotice: ArrivalNotice = await confirmArrivalNoticeFunction(name, context, tx)\n\n // If current GAN has cross docking\n if (arrivalNotice.crossDocking) {\n const { releaseGood } = await tx.getRepository(ArrivalNotice).findOne(arrivalNotice.id, {\n relations: ['releaseGood']\n })\n\n // If status of related RO is not equal to PENDING_RECEIVE (i.e. Wasn't confirmed yet.)\n if (releaseGood.status !== ORDER_STATUS.PENDING_RECEIVE) {\n await confirmReleaseGood(releaseGood.name, context)\n }\n }\n\n return arrivalNotice\n }\n\n @Directive('@privilege(category: \"order_warehouse\", privilege: \"mutation\")')\n @Directive('@transaction')\n @Mutation(returns => ArrivalNotice)\n async receiveArrivalNotice(@Arg('name') name: string, @Ctx() context: any): Promise<ArrivalNotice> {\n const receiveArrivalNotice: ArrivalNotice = await receiveArrivalNoticeFunction(null, name, context)\n\n return receiveArrivalNotice\n }\n\n @Directive('@privilege(category: \"order_warehouse\", privilege: \"mutation\")')\n @Directive('@transaction')\n @Mutation(returns => ArrivalNotice)\n async checkArrivedNotice(@Arg('name') name: string, @Ctx() context: any): Promise<ArrivalNotice> {\n const { tx }: { tx: EntityManager } = context.state\n\n return await checkArrivedNoticeFunction(name, context, tx)\n }\n\n @Directive('@privilege(category: \"order_warehouse\", privilege: \"mutation\")')\n @Directive('@transaction')\n @Mutation(returns => ArrivalNotice)\n async rejectArrivalNotice(\n @Arg('name') name: string,\n @Arg('patch', type => ArrivalNoticePatch) patch: ArrivalNoticePatch,\n @Ctx() context: any\n ): Promise<ArrivalNotice> {\n const { tx }: { tx: EntityManager } = context.state\n\n const arrivalNotice: ArrivalNotice = await rejectArrivalNotice(tx, name, patch.remark, context)\n\n if (arrivalNotice.crossDocking) {\n const { releaseGood }: { releaseGood: ReleaseGood } = await tx\n .getRepository(ArrivalNotice)\n .findOne(arrivalNotice.id, {\n relations: ['releaseGood']\n })\n\n if (releaseGood.status !== ORDER_STATUS.REJECTED) {\n await rejectReleaseGood(tx, releaseGood.name, patch.remark, context)\n }\n }\n\n return arrivalNotice\n }\n\n @Directive('@privilege(category: \"order_warehouse\", privilege: \"mutation\")')\n @Directive('@transaction')\n @Mutation(returns => Boolean)\n async addEditArrivalNoticeProducts(\n @Ctx() context: any,\n @Arg('ganNo') ganNo: string,\n @Arg('newOrderProducts', type => [NewOrderProduct], { nullable: true }) newOrderProducts?: NewOrderProduct[],\n @Arg('existingOrderProducts', type => [OrderProductPatch], { nullable: true })\n existingOrderProducts?: OrderProductPatch[]\n ): Promise<Boolean> {\n const { user, domain, tx }: { user: User; domain: Domain; tx: EntityManager } = context.state\n\n let arrivalNotice: ArrivalNotice = await tx.getRepository(ArrivalNotice).findOne({\n where: { name: ganNo },\n relations: ['bizplace', 'orderProducts']\n })\n\n arrivalNotice.status = ORDER_STATUS.PENDING_APPROVAL\n arrivalNotice.updater = user\n arrivalNotice = await tx.getRepository(ArrivalNotice).save(arrivalNotice)\n\n debug('gan-new-order-products', ganNo, newOrderProducts)\n if (newOrderProducts?.length > 0) await addArrivalNoticeProducts(domain, arrivalNotice, newOrderProducts, user, tx)\n\n debug('gan-existing-order-products', ganNo, existingOrderProducts)\n if (existingOrderProducts?.length > 0) await editArrivalNoticeProducts(existingOrderProducts, user, tx)\n\n // notification logics\n const users: any[] = await getDomainUsers(arrivalNotice?.bizplace, tx)\n debug('users', users)\n\n if (users?.length && context.header?.referer) {\n const receivers: any[] = users.map(user => user.id)\n const msg = {\n title: `Products are added/edited for ${arrivalNotice.name}`,\n body: `Warehouse need your review for changes to be approved`,\n url: context.header.referer,\n data: { url: context.header.referer }\n }\n await sendNotification({\n receivers,\n message: { ...msg }\n })\n }\n\n return true\n }\n\n @Directive('@privilege(category: \"order_customer\", privilege: \"mutation\")')\n @Directive('@transaction')\n @Mutation(returns => ArrivalNotice)\n async addArrivalNotice(\n @Ctx() context: any,\n @Arg('arrivalNotice', type => NewArrivalNotice) arrivalNotice: NewArrivalNotice,\n @Arg('file', type => GraphQLUpload, { nullable: true }) file?: FileUpload\n ): Promise<ArrivalNotice> {\n const { tx }: { tx: EntityManager } = context.state\n const createdGAN: ArrivalNotice = await generateArrivalNoticeFunction(null, arrivalNotice, file, context, tx)\n\n debug('createdGAN', createdGAN)\n\n const confirmedGAN: ArrivalNotice = await confirmArrivalNoticeFunction(createdGAN.name, context, tx)\n\n debug('confirmedGAN', confirmedGAN)\n\n return confirmedGAN\n }\n\n @Directive('@privilege(category: \"order_customer\", privilege: \"mutation\")')\n @Directive('@transaction')\n @Mutation(returns => ArrivalNotice)\n async updateArrivalNoticeDetails(\n @Ctx() context: any,\n @Arg('arrivalNotice', type => ArrivalNoticePatch) arrivalNotice: ArrivalNoticePatch\n ): Promise<ArrivalNotice> {\n const { domain, tx } = context.state\n let existingArrivalNotice = await tx\n .getRepository(ArrivalNotice)\n .findOne({ where: { name: arrivalNotice.name, domain } })\n\n if (!existingArrivalNotice) {\n throw new Error('Existing Arrival Notice not found.')\n }\n\n await tx.getRepository(ArrivalNotice).update(existingArrivalNotice.id, arrivalNotice)\n return await tx.getRepository(ArrivalNotice).findOne(existingArrivalNotice.id)\n }\n\n @Directive('@privilege(category: \"order_customer\", privilege: \"mutation\")')\n @Directive('@transaction')\n @Mutation(returns => ArrivalNoticeList)\n async bulkGenerateArrivalNotices(\n @Ctx() context: any,\n @Arg('rawArrivalNotices', type => [NewArrivalNotice], { nullable: true }) rawArrivalNotices: NewArrivalNotice[],\n @Arg('bizplaceId', type => String) bizplaceId: string\n ): Promise<ArrivalNoticeList> {\n const { domain, user, tx }: { domain: Domain; user: User; tx: EntityManager } = context.state\n let createdArrivalNoticeIds: string[] = [],\n createdOrderProductIds: string[] = [],\n errorsCaught: any[] = [],\n finalArrivalNoticeList: ArrivalNotice[] = []\n\n const foundBizplace: Bizplace = await tx.getRepository(Bizplace).findOne(bizplaceId)\n\n if (!foundBizplace) throw new Error('company not found')\n\n // to check whether the raw data are valid\n const validatedArrivalNotices: RawArrivalNotice[] = await validateBulkArrivalNoticesFunction(\n rawArrivalNotices,\n bizplaceId,\n tx\n )\n\n // check for custom GAN order no setting\n const ganNoSetting: Setting = await tx.getRepository(Setting).findOne({\n where: {\n domain,\n name: ORDER_NUMBER_SETTING_KEY.GAN_NUMBER_RULE\n }\n })\n\n // extract rawArrivalNotices data into normal ArrivalNotice format\n let arrivalNotices: Partial<ArrivalNotice[]> = extractArrivalNotices(validatedArrivalNotices)\n\n for (let i = 0, l = arrivalNotices.length; i < l; i++) {\n try {\n await getConnection().transaction(async childTx => {\n // check for duplication\n const duplicatedArrivalNotice: ArrivalNotice = await childTx.getRepository(ArrivalNotice).findOne({\n where: {\n refNo: arrivalNotices[i].refNo,\n refNo2: arrivalNotices[i].refNo2,\n refNo3: arrivalNotices[i].refNo3,\n etaDate: arrivalNotices[i].etaDate,\n truckNo: arrivalNotices[i].truckNo,\n containerNo: arrivalNotices[i].containerNo,\n containerSize: arrivalNotices[i].containerSize,\n looseItem: arrivalNotices[i].looseItem,\n importCargo: arrivalNotices[i].importCargo\n }\n })\n\n if (duplicatedArrivalNotice) {\n throw new Error(`duplicated with ${duplicatedArrivalNotice.name}`)\n }\n\n // save new arrival notice\n const createdArrivalNotice: ArrivalNotice = await childTx.getRepository(ArrivalNotice).save({\n ...arrivalNotices[i],\n name: ganNoSetting\n ? await generateId({ domain, type: ORDER_NUMBER_RULE_TYPE.GAN_NUMBER, seed: {} })\n : OrderNoGenerator.arrivalNotice(),\n domain,\n bizplace: foundBizplace,\n status: ORDER_STATUS.PENDING,\n creator: user,\n updater: user\n })\n\n // save new order products\n let createdOrderProducts: OrderProduct[] = await Promise.all(\n arrivalNotices[i].orderProducts.map(async (op: OrderProduct) => {\n return {\n ...op,\n domain,\n bizplace: foundBizplace,\n name: OrderNoGenerator.orderProduct(),\n // product: await childTx.getRepository(Product).findOne(op.product.id),\n status: ORDER_PRODUCT_STATUS.PENDING,\n arrivalNotice: createdArrivalNotice,\n creator: user\n }\n })\n )\n createdOrderProducts = await childTx.getRepository(OrderProduct).save(createdOrderProducts)\n\n // generate new jobsheet\n await generateJobSheet(domain, user, createdArrivalNotice, childTx)\n\n // push arrivalNotice and orderProducts IDs if successfully saved\n createdArrivalNoticeIds.push(createdArrivalNotice.id)\n createdOrderProductIds.push(...createdOrderProducts.map(op => op.id))\n })\n } catch (error) {\n // collect the arrivalNotice details and its error\n let rawArrivalNotices: RawArrivalNotice[] = formRawArrivalNotices(arrivalNotices[i], error.message)\n errorsCaught.push(...rawArrivalNotices)\n }\n }\n\n if (createdArrivalNoticeIds.length && createdOrderProductIds.length) {\n await getConnection().transaction(async childTx => {\n // update arrivalNotices status to PENDING_RECEIVE\n await childTx\n .getRepository(ArrivalNotice)\n .update({ id: In(createdArrivalNoticeIds) }, { status: ORDER_STATUS.PENDING_RECEIVE, updater: user })\n\n // update orderProducts status to PENDING_RECEIVE\n await childTx\n .getRepository(OrderProduct)\n .update({ id: In(createdOrderProductIds) }, { status: ORDER_PRODUCT_STATUS.PENDING_RECEIVE, updater: user })\n\n finalArrivalNoticeList = await childTx.getRepository(ArrivalNotice).find({\n where: { id: In(createdArrivalNoticeIds) },\n relations: ['orderProducts', 'orderProducts.product', 'bizplace']\n })\n })\n }\n\n if (errorsCaught.length) {\n // should return this error list in the grist so that user know which gan need to amend\n throw new ValidationError({\n ...ValidationError.ERROR_CODES.INVALID_DATA_FOUND,\n detail: { data: JSON.stringify(errorsCaught) }\n })\n }\n\n // return arrivalNotices with its orderProducts list\n return { items: finalArrivalNoticeList, total: 0 }\n }\n}\n\nexport async function deleteArrivalNotice(\n tx: EntityManager,\n name: string,\n user: User,\n domain: Domain\n): Promise<boolean> {\n let foundArrivalNotice: ArrivalNotice = await tx.getRepository(ArrivalNotice).findOne({\n where: { domain, name },\n relations: ['bizplace', 'releaseGood', 'orderProducts', 'orderVass', 'collectionOrders', 'creator', 'updater']\n })\n\n if (!foundArrivalNotice) throw new Error(`Arrival notice doesn't exists.`)\n\n const foundJS: JobSheet = await tx.getRepository(JobSheet).findOne({\n where: {\n bizplace: foundArrivalNotice.bizplace,\n arrivalNoticeRefNo: foundArrivalNotice.name\n }\n })\n\n if (foundJS) await tx.getRepository(JobSheet).delete({ arrivalNoticeRefNo: foundArrivalNotice.name })\n\n const foundOPs: OrderProduct[] = foundArrivalNotice.orderProducts\n const foundOVs: OrderVas[] = foundArrivalNotice.orderVass\n\n // 1. delete order products\n const productIds = foundOPs.map((product: OrderProduct) => product.id)\n if (productIds.length) {\n await tx.getRepository(OrderProduct).delete({ id: In(productIds) })\n }\n\n // 2. delete order vass\n const vasIds = foundOVs.map((vas: OrderVas) => vas.id)\n if (vasIds.length) {\n await tx.getRepository(OrderVas).delete({ id: In(vasIds) })\n }\n\n await tx.getRepository(ArrivalNotice).save({\n ...foundArrivalNotice,\n updater: user\n })\n\n // 4. Remove relation with RO if it's cross docking\n if (foundArrivalNotice.crossDocking && foundArrivalNotice.releaseGood?.id) {\n let releaseGood: ReleaseGood = foundArrivalNotice.releaseGood\n releaseGood.arrivalNotice = null\n releaseGood = await tx.getRepository(ReleaseGood).save(releaseGood)\n\n await tx.getRepository(ArrivalNotice).delete({ domain, name })\n await deleteReleaseGood(tx, releaseGood.name, user, domain)\n } else {\n // 5. delete GAN\n await tx.getRepository(ArrivalNotice).delete({ domain, name })\n }\n return true\n}\n\nexport async function generateArrivalNoticeFunction(\n _: any,\n arrivalNotice: any,\n files: FileUpload[],\n context: any,\n tx?: EntityManager\n): Promise<ArrivalNotice> {\n const { domain, user }: { domain: Domain; user: User } = context.state\n let orderProducts: OrderProduct[] = arrivalNotice.orderProducts\n let orderVass: OrderVas[] = arrivalNotice.orderVass\n let myBizplace: Bizplace\n let orderNo: string = ''\n\n const settingRepo: Repository<Setting> = tx?.getRepository(Setting) || getRepository(Setting)\n\n if (arrivalNotice.bizplace) myBizplace = arrivalNotice.bizplace\n else if (arrivalNotice.customerBizplaceId) {\n const permittedBizplaces: Bizplace[] = await getPermittedBizplaces(domain, user)\n let foundPermittedBizplace: Bizplace = permittedBizplaces.find(biz => biz.id == arrivalNotice.customerBizplaceId)\n\n if (!foundPermittedBizplace) throw new Error(`This user does not permitted for this company`)\n\n myBizplace = arrivalNotice.customerBizplaceId\n } else if (arrivalNotice.partnerBizplaceId) {\n const permittedBizplaces: Bizplace[] = await getPermittedBizplaces(domain, user)\n let foundPermittedBizplace: Bizplace = permittedBizplaces.find(biz => biz.id == arrivalNotice.partnerBizplaceId)\n\n if (!foundPermittedBizplace) throw new Error(`This user does not permitted for this company`)\n\n myBizplace = arrivalNotice.partnerBizplaceId\n } else if (arrivalNotice.warehouseId) myBizplace = await getOutletBizplace(arrivalNotice.warehouseId)\n else myBizplace = await getMyBizplace(domain, user)\n\n if (arrivalNotice.supplier) {\n const supplier: ContactPoint = await tx\n .getRepository(ContactPoint)\n .findOne({ where: { bizplace: arrivalNotice.supplier, domain }, relation: ['bizplace'] })\n\n if (!supplier) throw new Error('contact point does not exist')\n\n arrivalNotice.supplier = supplier\n }\n // find GAN number rule setting\n const ganNoSetting: Setting = await settingRepo.findOne({\n where: {\n domain,\n name: ORDER_NUMBER_SETTING_KEY.GAN_NUMBER_RULE\n }\n })\n\n if (ganNoSetting) {\n orderNo = await generateId({ domain, type: ORDER_NUMBER_RULE_TYPE.GAN_NUMBER, seed: {} })\n } else {\n orderNo = OrderNoGenerator.arrivalNotice()\n }\n\n // 1. Create arrival notice\n const createdArrivalNotice: ArrivalNotice = await tx.getRepository(ArrivalNotice).save({\n ...arrivalNotice,\n name: orderNo,\n domain,\n bizplace: myBizplace,\n looseItem: arrivalNotice?.looseItem ? arrivalNotice.looseItem : false,\n status: ORDER_STATUS.PENDING,\n creator: user,\n updater: user\n })\n\n // 2. Create arrival notice product\n await addArrivalNoticeProducts(\n domain,\n createdArrivalNotice,\n orderProducts.map((op: OrderProduct) => {\n return { ...op, status: ORDER_PRODUCT_STATUS.PENDING }\n }),\n user,\n tx\n )\n\n await generateJobSheet(domain, user, createdArrivalNotice, tx)\n\n // 3. Create arrival notice vas\n if (orderVass?.length) {\n orderVass = await Promise.all(\n orderVass.map(async (ov: OrderVas) => {\n if (ov.targetProduct) {\n ov.targetProduct = await tx.getRepository(Product).findOne(ov.targetProduct.id)\n }\n\n return {\n ...ov,\n domain,\n bizplace: myBizplace,\n name: OrderNoGenerator.orderVas(),\n vas: await tx.getRepository(Vas).findOne({ domain, id: ov.vas.id }),\n type: ORDER_TYPES.ARRIVAL_NOTICE,\n arrivalNotice: createdArrivalNotice,\n status: ORDER_VAS_STATUS.PENDING,\n creator: user,\n updater: user\n }\n })\n )\n await tx.getRepository(OrderVas).save(orderVass)\n }\n\n if (files?.length) {\n const attachments: Attachment[] = files.map(attachment => {\n return {\n file: attachment,\n refType: ATTACHMENT_TYPE.GAN,\n refBy: createdArrivalNotice.id,\n category: ATTACHMENT_TYPE.GAN /* TODO use refType */\n }\n })\n await createAttachments(_, { attachments }, context)\n }\n\n return createdArrivalNotice\n}\n\nexport async function confirmArrivalNoticeFunction(\n name: string,\n context: any,\n tx?: EntityManager\n): Promise<ArrivalNotice> {\n const { user, domain }: { user: User; domain: Domain } = context.state\n\n const foundArrivalNotice: ArrivalNotice = await tx.getRepository(ArrivalNotice).findOne({\n where: { domain, name, status: ORDER_STATUS.PENDING },\n relations: [\n 'bizplace',\n 'releaseGood',\n 'orderProducts',\n 'orderProducts.product',\n 'orderVass',\n 'orderVass.vas',\n 'creator',\n 'updater'\n ]\n })\n\n let foundOPs: OrderProduct[] = foundArrivalNotice.orderProducts\n let foundOVs: OrderVas[] = foundArrivalNotice.orderVass\n let customerBizplace: Bizplace = foundArrivalNotice.bizplace\n\n if (!foundArrivalNotice) throw new Error(`Arrival notice doesn't exists.`)\n\n // 1. GAN Status change (PENDING => PENDING_RECEIVE)\n const arrivalNotice: ArrivalNotice = await tx.getRepository(ArrivalNotice).save({\n ...foundArrivalNotice,\n status: ORDER_STATUS.PENDING_RECEIVE,\n updater: user\n })\n\n foundOPs = foundOPs.map((op: OrderProduct) => {\n return { ...op, status: ORDER_PRODUCT_STATUS.PENDING_RECEIVE }\n })\n await tx.getRepository(OrderProduct).save(foundOPs)\n\n // 2. Update order vas status if it exists.\n if (foundOVs && foundOVs.length) {\n foundOVs = foundOVs.map((ov: OrderVas) => {\n return { ...ov, status: ORDER_VAS_STATUS.PENDING_RECEIVE }\n })\n\n await tx.getRepository(OrderVas).save(foundOVs)\n }\n\n // notification logics\n // get Office Admin Users\n if (context?.state?.type != 'api') {\n const users: any[] = await tx\n .getRepository('users_roles')\n .createQueryBuilder('ur')\n .select('ur.users_id', 'id')\n .where(qb => {\n const subQuery = qb\n .subQuery()\n .select('role.id')\n .from(Role, 'role')\n .where(\"role.name = 'Office Admin'\")\n .andWhere('role.domain_id = :domain', { domain: domain.id })\n .getQuery()\n return 'ur.roles_id IN ' + subQuery\n })\n .getRawMany()\n\n // send notification to Office Admin Users\n if (users?.length && context.header?.referer) {\n const receivers: any[] = users.map(user => user.id)\n const msg = {\n title: `New Arrival Notice from ${customerBizplace.name}`,\n body: `New incoming order, ${foundArrivalNotice.name} is pending for receiving`,\n url: context.header.referer,\n data: { url: context.header.referer }\n }\n\n await sendNotification({\n receivers,\n message: { ...msg }\n })\n }\n }\n\n return arrivalNotice\n}\n\nexport async function receiveArrivalNoticeFunction(_: any, name: String, context: any): Promise<ArrivalNotice> {\n const { user, domain, tx }: { user: User; domain: Domain; tx: EntityManager } = context.state\n try {\n const foundArrivalNotice: ArrivalNotice = await tx.getRepository(ArrivalNotice).findOne({\n where: { domain, name, status: ORDER_STATUS.PENDING_RECEIVE },\n relations: ['bizplace', 'collectionOrders', 'orderProducts', 'orderVass']\n })\n\n if (!foundArrivalNotice) throw new Error(`Arrival notice doesn't exists.`)\n\n let foundOPs: OrderProduct[] = foundArrivalNotice.orderProducts\n let foundOVs: OrderVas[] = foundArrivalNotice.orderVass\n let foundCOs: CollectionOrder[] = await tx.getRepository(CollectionOrder).find({\n where: { domain, refNo: foundArrivalNotice.name }\n })\n\n // 1. Update status of order products (PENDING_RECEIVE => INTRANSIT)\n foundOPs = foundOPs.map((op: OrderProduct) => {\n return {\n ...op,\n status: ORDER_PRODUCT_STATUS.INTRANSIT,\n updater: user\n }\n })\n await tx.getRepository(OrderProduct).save(foundOPs)\n\n // 2. Update status of order vass if it exists (PENDING_RECEIVE => INTRANSIT)\n if (foundOVs && foundOVs.length) {\n foundOVs = foundOVs.map((ov: OrderVas) => {\n return {\n ...ov,\n status: ORDER_VAS_STATUS.INTRANSIT,\n updater: user\n }\n })\n await tx.getRepository(OrderVas).save(foundOVs)\n }\n\n // 3. If there's collection order, update status of collection order (PENDING_RECEIVE => READY_TO_DISPATCH)\n if (foundCOs) {\n foundCOs = foundCOs.map((co: CollectionOrder) => {\n return {\n ...co,\n status: ORDER_STATUS.READY_TO_DISPATCH,\n updater: user\n }\n })\n }\n\n // notification logics\n const users: any[] = await getDomainUsers(foundArrivalNotice?.bizplace, tx)\n\n // send notification to Customer Users\n if (users?.length && context.header?.referer) {\n const receivers: any[] = users.map(user => user.id)\n const msg = {\n title: `Latest status for ${foundArrivalNotice.name}`,\n body: `Your GAN has been received and processed by ${domain.name}`,\n url: context.header.referer,\n data: { url: context.header.referer }\n }\n await sendNotification({\n receivers,\n message: { ...msg }\n })\n }\n\n // 4. Update status of arrival notice (PENDING_RECEIVE => INTRANSIT)\n await tx.getRepository(ArrivalNotice).save({\n ...foundArrivalNotice,\n status: ORDER_STATUS.INTRANSIT,\n acceptedBy: user,\n acceptedAt: new Date(),\n updater: user\n })\n\n return foundArrivalNotice\n } catch (e) {\n throw e\n }\n}\n\nexport async function checkArrivedNoticeFunction(\n name: string,\n context: any,\n tx?: EntityManager\n): Promise<ArrivalNotice> {\n const { user, domain }: { user: User; domain: Domain } = context.state\n try {\n const foundArrivalNotice: ArrivalNotice = await tx.getRepository(ArrivalNotice).findOne({\n where: { domain, name, status: ORDER_STATUS.INTRANSIT },\n relations: ['bizplace', 'collectionOrders', 'orderProducts', 'orderVass']\n })\n\n debug('ganNo', name, foundArrivalNotice)\n\n if (!foundArrivalNotice) throw new Error(`Arrival notice doesn't exists.`)\n\n // 1. Check wheter related collection order is done or not\n const foundCOs: CollectionOrder[] = foundArrivalNotice.collectionOrders\n if (foundCOs && foundCOs.length) {\n foundCOs.map((co: CollectionOrder) => {\n if (co.status !== ORDER_STATUS.DONE) {\n throw new Error(`Collection Order: ${co.name} is not finished yet.`)\n }\n })\n }\n\n let foundOPs: OrderProduct[] = foundArrivalNotice.orderProducts\n let foundOVs: OrderVas[] = foundArrivalNotice.orderVass\n\n // 2. Update status of order products (INTRANSIT => ARRIVED)\n foundOPs = foundOPs.map((op: OrderProduct) => {\n return {\n ...op,\n status: ORDER_PRODUCT_STATUS.ARRIVED,\n updater: user\n }\n })\n await tx.getRepository(OrderProduct).save(foundOPs)\n\n // 3. Update status of order vass if it exists (INTRANSIT => ARRIVED)\n if (foundOVs && foundOVs.length) {\n foundOVs = foundOVs.map((ov: OrderVas) => {\n return {\n ...ov,\n status: ORDER_VAS_STATUS.ARRIVED,\n updater: user\n }\n })\n await tx.getRepository(OrderVas).save(foundOVs)\n }\n\n // 4. Update status of arrival notice (INTRANSIT => ARRIVED)\n await tx.getRepository(ArrivalNotice).save({\n ...foundArrivalNotice,\n status: ORDER_STATUS.ARRIVED,\n updater: user\n })\n\n // notification logics\n const users: any[] = await getDomainUsers(foundArrivalNotice?.bizplace, tx)\n\n if (users?.length && context.header?.referer) {\n const receivers: any[] = users.map(user => user.id)\n const msg = {\n title: `Latest status for ${foundArrivalNotice.name}`,\n body: `Your goods has safely arrived at ${domain.name}`,\n url: context.header.referer,\n data: { url: context.header.referer }\n }\n await sendNotification({\n receivers,\n message: { ...msg }\n })\n }\n\n return foundArrivalNotice\n } catch (e) {\n throw e\n }\n}\n\nexport async function rejectArrivalNotice(\n tx: EntityManager,\n name: string,\n remark: string,\n context: any\n): Promise<ArrivalNotice> {\n const { user, domain }: { user: User; domain: Domain } = context.state\n\n const foundArrivalNotice: ArrivalNotice = await tx.getRepository(ArrivalNotice).findOne({\n where: { domain, name, status: ORDER_STATUS.PENDING_RECEIVE },\n relations: ['bizplace', 'orderProducts', 'orderVass', 'collectionOrders']\n })\n\n if (!foundArrivalNotice) throw new Error(`Arrival notice doesn't exists.`)\n if (!remark) throw new Error('Remark is not exist.')\n\n let foundOPs: OrderProduct[] = foundArrivalNotice.orderProducts\n let foundOVs: OrderVas[] = foundArrivalNotice.orderVass\n let foundCOs: CollectionOrder[] = foundArrivalNotice.collectionOrders\n\n // 1. Update status of order products (PENDING_RECEIVE => REJECTED)\n foundOPs = foundOPs.map((op: OrderProduct) => {\n op.status = ORDER_PRODUCT_STATUS.REJECTED\n op.updater = user\n return op\n })\n await tx.getRepository(OrderProduct).save(foundOPs)\n\n // 2. Update status of order vass if it exists (PENDING_RECEIVE => REJECTED)\n if (foundOVs && foundOVs.length) {\n foundOVs = foundOVs.map((ov: OrderVas) => {\n ov.status = ORDER_VAS_STATUS.REJECTED\n ov.updater = user\n return ov\n })\n await tx.getRepository(OrderVas).save(foundOVs)\n }\n\n // 3. If there's collection order, update status of collection order (PENDING_RECEIVE => REJECTED)\n if (foundCOs) {\n foundCOs = foundCOs.map((co: CollectionOrder) => {\n co.status = ORDER_STATUS.REJECTED\n co.updater = user\n return co\n })\n await tx.getRepository(CollectionOrder).save(foundCOs)\n }\n\n foundArrivalNotice.remark = remark\n foundArrivalNotice.status = ORDER_STATUS.REJECTED\n foundArrivalNotice.updater = user\n await tx.getRepository(ArrivalNotice).save(foundArrivalNotice)\n\n // notification logics\n const users: any[] = await getDomainUsers(foundArrivalNotice?.bizplace, tx)\n\n // send notification to Customer Users\n if (users?.length && context.header?.referer) {\n const receivers: any[] = users.map(user => user.id)\n const msg = {\n title: `Latest status for ${foundArrivalNotice.name}`,\n body: `Your GAN has been rejected.`,\n url: context.header.referer,\n data: { url: context.header.referer }\n }\n\n await sendNotification({\n receivers,\n message: { ...msg }\n })\n }\n\n return foundArrivalNotice\n}\n\nexport async function addArrivalNoticeProducts(\n domain: Domain,\n arrivalNotice: ArrivalNotice,\n newOrderProducts: any[],\n user: User,\n tx?: EntityManager\n): Promise<void> {\n const productRepo: Repository<Product> = tx?.getRepository(Product) || getRepository(Product)\n const orderProductRepo: Repository<OrderProduct> = tx?.getRepository(OrderProduct) || getRepository(OrderProduct)\n\n if (!arrivalNotice?.bizplace || !arrivalNotice?.orderProducts?.length) {\n arrivalNotice = await tx.getRepository(ArrivalNotice).findOne({\n where: { domain, name: arrivalNotice.name },\n relations: ['bizplace', 'orderProducts']\n })\n }\n\n const createdOrderProducts: OrderProduct[] = await Promise.all(\n newOrderProducts.map(async (op: OrderProduct) => {\n return {\n ...op,\n domain,\n bizplace: arrivalNotice.bizplace,\n name: OrderNoGenerator.orderProduct(),\n product: await productRepo.findOne(op.product.id),\n arrivalNotice,\n creator: user\n }\n })\n )\n\n debug('gan-created-order-products', createdOrderProducts)\n await orderProductRepo.save(createdOrderProducts)\n}\n\nexport async function editArrivalNoticeProducts(\n existingOrderProducts: (OrderProduct | OrderProductPatch)[],\n user: User,\n tx?: EntityManager\n): Promise<void> {\n const orderProductRepo: Repository<OrderProduct> = tx?.getRepository(OrderProduct) || getRepository(OrderProduct)\n\n const updatedOrderProducts: OrderProduct[] = await Promise.all(\n existingOrderProducts.map(async (op: OrderProduct) => {\n return {\n ...op,\n status: ORDER_PRODUCT_STATUS.EDITED,\n updater: user\n }\n })\n )\n\n debug('gan-updated-order-products', updatedOrderProducts)\n await orderProductRepo.save(updatedOrderProducts)\n}\n\nfunction extractArrivalNotices(rawArrivalNotices): Partial<ArrivalNotice[]> {\n return rawArrivalNotices.reduce((arrivalNotices, raw) => {\n // discard the item that has no productId or productDetailId\n if (!raw.productId || !raw.productDetailId) return\n\n const idx: number = arrivalNotices.findIndex(an => {\n // consider these attributes if they are exist in \"item\"\n const comparison = [\n 'refNo2',\n 'refNo3',\n 'truckNo',\n 'ownTransport',\n 'container',\n 'containerNo',\n 'containerSize',\n 'looseItem',\n 'importCargo'\n ]\n\n let a: any = {},\n b: any = {}\n\n comparison.forEach(cc => {\n if (raw[cc] !== null) {\n a[cc] = raw[cc]\n b[cc] = an[cc]\n }\n })\n\n a = JSON.stringify(Object.fromEntries(Object.entries(a).sort()))\n b = JSON.stringify(Object.fromEntries(Object.entries(b).sort()))\n\n return an.refNo == raw.refNo && an.etaDate == raw.etaDate && a === b\n })\n\n const product: Product = Object.assign(new Product(), { id: raw.productId, sku: raw.sku })\n const orderProduct: Partial<OrderProduct> = {\n product,\n batchId: raw.batchId,\n batchIdRef: raw.batchIdRef,\n packingType: raw.packingType,\n packingSize: raw.packingSize,\n packQty: raw.packQty,\n uomValue: raw.uomValue,\n uom: raw.uom,\n totalUomValue: raw.totalUomValue,\n palletQty: raw.palletQty,\n unitPrice: raw.unitPrice,\n manufactureDate: raw.manufactureDate\n }\n\n if (idx >= 0) {\n const duplicateSkuIdx: number = arrivalNotices[idx].orderProducts.findIndex(\n op =>\n op.sku === raw.sku &&\n op.packingType === raw.packingType &&\n op.packingSize === raw.packingSize &&\n op.batchId === raw.batchId\n )\n\n if (duplicateSkuIdx >= 0) arrivalNotices[idx].orderProducts[duplicateSkuIdx].packQty += raw.packQty\n else arrivalNotices[idx].orderProducts.push(orderProduct)\n } else {\n arrivalNotices.push({\n refNo: raw.refNo,\n refNo2: raw.refNo2,\n refNo3: raw.refNo3,\n etaDate: raw.etaDate,\n truckNo: raw.truckNo,\n ownTransport: raw.ownTransport,\n container: raw.container,\n containerNo: raw.containerNo,\n containerSize: raw.containerSize,\n importCargo: raw.importCargo,\n looseItem: raw.looseItem,\n orderProducts: [orderProduct]\n })\n }\n\n return arrivalNotices\n }, [])\n}\n\nfunction formRawArrivalNotices(arrivalNotice, errorMsg) {\n let rawArrivalNotices = []\n for (let i = 0, l = arrivalNotice.orderProducts.length; i < l; i++) {\n let rawArrivalNotice = {\n ...arrivalNotice,\n ...arrivalNotice.orderProducts[i],\n sku: arrivalNotice.orderProducts[i].product.sku,\n errorMsg\n }\n\n delete rawArrivalNotice.orderProducts\n delete rawArrivalNotice.product\n\n rawArrivalNotices.push(rawArrivalNotice)\n }\n return rawArrivalNotices\n}\n"]}
|
|
1
|
+
{"version":3,"file":"arrival-notice-mutation.js","sourceRoot":"","sources":["../../../server/service/arrival-notice/arrival-notice-mutation.ts"],"names":[],"mappings":"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","sourcesContent":["import type { FileUpload } from 'graphql-upload/GraphQLUpload.js'\nimport GraphQLUpload from 'graphql-upload/GraphQLUpload.js'\nimport { Arg, Ctx, Directive, Mutation, Resolver } from 'type-graphql'\nimport { EntityManager, getConnection, In, Repository } from 'typeorm'\n\nimport { Attachment, createAttachments } from '@things-factory/attachment-base'\nimport { Role, User } from '@things-factory/auth-base'\nimport {\n Bizplace,\n ContactPoint,\n getDomainUsers,\n getMyBizplace,\n getOutletBizplace,\n getPermittedBizplaces\n} from '@things-factory/biz-base'\nimport { generateId } from '@things-factory/id-rule-base'\nimport { Product } from '@things-factory/product-base'\nimport { PartnerSetting, Setting } from '@things-factory/setting-base'\nimport { Domain, getRepository } from '@things-factory/shell'\n\nimport {\n ORDER_NUMBER_RULE_TYPE,\n ORDER_NUMBER_SETTING_KEY,\n ORDER_PRODUCT_STATUS,\n ORDER_STATUS,\n ORDER_TYPES,\n ORDER_VAS_STATUS\n} from '../../constants'\nimport { ATTACHMENT_TYPE } from '../../constants/attachment-type'\nimport { ValidationError } from '../../errors'\nimport { OrderNoGenerator } from '../../utils/order-no-generator'\nimport { CollectionOrder } from '../collection-order/collection-order'\nimport { JobSheet } from '../job-sheet/job-sheet'\nimport { generateJobSheet } from '../job-sheet/job-sheet-mutation'\nimport { OrderProduct } from '../order-product/order-product'\nimport { NewOrderProduct, OrderProductPatch } from '../order-product/order-product-types'\nimport { OrderVas } from '../order-vas/order-vas'\nimport { ReleaseGood } from '../release-good/release-good'\nimport { confirmReleaseGood, deleteReleaseGood, rejectReleaseGood } from '../release-good/release-good-mutation'\nimport { Vas } from '../vas/vas'\nimport { validateBulkArrivalNoticesFunction } from './'\nimport { ArrivalNotice } from './arrival-notice'\nimport { ArrivalNoticeList, ArrivalNoticePatch, NewArrivalNotice, RawArrivalNotice } from './arrival-notice-types'\n\nconst debug = require('debug')('things-factory:operato-wms:addArrivalNotice')\n\n@Resolver(ArrivalNotice)\nexport class ArrivalNoticeMutation {\n @Directive('@privilege(category: \"order_customer\", privilege: \"mutation\")')\n @Directive('@transaction')\n @Mutation(returns => Boolean)\n async deleteArrivalNotice(@Arg('name') name: string, @Ctx() context: ResolverContext): Promise<Boolean> {\n const { tx, user, domain } = context.state\n\n return await deleteArrivalNotice(tx, name, user, domain)\n }\n\n @Directive('@privilege(category: \"order_customer\", privilege: \"mutation\")')\n @Directive('@transaction')\n @Mutation(returns => ArrivalNotice)\n async generateArrivalNotice(\n @Ctx() context: ResolverContext,\n @Arg('arrivalNotice', type => NewArrivalNotice) arrivalNotice: NewArrivalNotice,\n @Arg('files', type => [GraphQLUpload], { nullable: true }) files?: FileUpload[]\n ): Promise<ArrivalNotice> {\n const { tx } = context.state\n const createdArrivalNotice: ArrivalNotice = await generateArrivalNoticeFunction(\n null,\n arrivalNotice,\n false,\n files,\n context,\n tx\n )\n\n return createdArrivalNotice\n }\n\n @Directive('@privilege(category: \"order_customer\", privilege: \"mutation\")')\n @Directive('@transaction')\n @Mutation(returns => ArrivalNotice)\n async confirmArrivalNotice(@Arg('name') name: string, @Ctx() context: ResolverContext): Promise<ArrivalNotice> {\n const { tx } = context.state\n const arrivalNotice: ArrivalNotice = await confirmArrivalNoticeFunction(name, context, tx)\n\n // If current GAN has cross docking\n if (arrivalNotice.crossDocking) {\n const { releaseGood } = await tx.getRepository(ArrivalNotice).findOne({\n where: { id: arrivalNotice.id },\n relations: ['releaseGood']\n })\n\n // If status of related RO is not equal to PENDING_RECEIVE (i.e. Wasn't confirmed yet.)\n if (releaseGood.status !== ORDER_STATUS.PENDING_RECEIVE) {\n await confirmReleaseGood(releaseGood.name, context)\n }\n }\n\n return arrivalNotice\n }\n\n @Directive('@privilege(category: \"order_warehouse\", privilege: \"mutation\")')\n @Directive('@transaction')\n @Mutation(returns => ArrivalNotice)\n async receiveArrivalNotice(@Arg('name') name: string, @Ctx() context: ResolverContext): Promise<ArrivalNotice> {\n const receiveArrivalNotice: ArrivalNotice = await receiveArrivalNoticeFunction(null, name, context)\n\n return receiveArrivalNotice\n }\n\n @Directive('@privilege(category: \"order_warehouse\", privilege: \"mutation\")')\n @Directive('@transaction')\n @Mutation(returns => ArrivalNotice)\n async checkArrivedNotice(@Arg('name') name: string, @Ctx() context: ResolverContext): Promise<ArrivalNotice> {\n const { tx } = context.state\n\n return await checkArrivedNoticeFunction(name, context, tx)\n }\n\n @Directive('@privilege(category: \"order_warehouse\", privilege: \"mutation\")')\n @Directive('@transaction')\n @Mutation(returns => ArrivalNotice)\n async rejectArrivalNotice(\n @Arg('name') name: string,\n @Arg('patch', type => ArrivalNoticePatch) patch: ArrivalNoticePatch,\n @Ctx() context: ResolverContext\n ): Promise<ArrivalNotice> {\n const { tx } = context.state\n\n const arrivalNotice: ArrivalNotice = await rejectArrivalNotice(tx, name, patch.remark, context)\n\n if (arrivalNotice.crossDocking) {\n const { releaseGood }: { releaseGood: ReleaseGood } = await tx.getRepository(ArrivalNotice).findOne({\n where: { id: arrivalNotice.id },\n relations: ['releaseGood']\n })\n\n if (releaseGood.status !== ORDER_STATUS.REJECTED) {\n await rejectReleaseGood(tx, context, releaseGood.name, patch.remark)\n }\n }\n\n return arrivalNotice\n }\n\n @Directive('@privilege(category: \"order_warehouse\", privilege: \"mutation\")')\n @Directive('@transaction')\n @Mutation(returns => Boolean)\n async addEditArrivalNoticeProducts(\n @Ctx() context: ResolverContext,\n @Arg('ganNo') ganNo: string,\n @Arg('newOrderProducts', type => [NewOrderProduct], { nullable: true }) newOrderProducts?: NewOrderProduct[],\n @Arg('existingOrderProducts', type => [OrderProductPatch], { nullable: true })\n existingOrderProducts?: OrderProductPatch[]\n ): Promise<Boolean> {\n const { user, domain, tx } = context.state\n\n let arrivalNotice: ArrivalNotice = await tx.getRepository(ArrivalNotice).findOne({\n where: { name: ganNo },\n relations: ['bizplace', 'orderProducts']\n })\n\n arrivalNotice.status = ORDER_STATUS.PENDING_APPROVAL\n arrivalNotice.updater = user\n arrivalNotice = await tx.getRepository(ArrivalNotice).save(arrivalNotice)\n\n debug('gan-new-order-products', ganNo, newOrderProducts)\n if (newOrderProducts?.length > 0) await addArrivalNoticeProducts(domain, arrivalNotice, newOrderProducts, user, tx)\n\n debug('gan-existing-order-products', ganNo, existingOrderProducts)\n if (existingOrderProducts?.length > 0) await editArrivalNoticeProducts(existingOrderProducts, user, tx)\n\n // notification logics\n const users: any[] = await getDomainUsers(arrivalNotice?.bizplace, tx)\n debug('users', users)\n\n if (users?.length && context.header?.referer) {\n const receivers: any[] = users.map(user => user.id)\n const msg = {\n title: `Products are added/edited for ${arrivalNotice.name}`,\n body: `Warehouse need your review for changes to be approved`,\n url: context.header.referer,\n data: { url: context.header.referer }\n }\n /**\n * @notes Temporary off sendNotification due to suspect of causing wms down\n */\n\n // await sendNotification({\n // receivers,\n // message: { ...msg }\n // })\n }\n\n return true\n }\n\n @Directive('@privilege(category: \"order_customer\", privilege: \"mutation\")')\n @Directive('@transaction')\n @Mutation(returns => ArrivalNotice)\n async addArrivalNotice(\n @Ctx() context: ResolverContext,\n @Arg('arrivalNotice', type => NewArrivalNotice) arrivalNotice: NewArrivalNotice,\n @Arg('file', type => GraphQLUpload, { nullable: true }) file?: FileUpload\n ): Promise<ArrivalNotice> {\n const { tx } = context.state\n const createdGAN: ArrivalNotice = await generateArrivalNoticeFunction(null, arrivalNotice, false, file, context, tx)\n\n debug('createdGAN', createdGAN)\n\n const confirmedGAN: ArrivalNotice = await confirmArrivalNoticeFunction(createdGAN.name, context, tx)\n\n debug('confirmedGAN', confirmedGAN)\n\n return confirmedGAN\n }\n\n @Directive('@privilege(category: \"order_customer\", privilege: \"mutation\")')\n @Directive('@transaction')\n @Mutation(returns => ArrivalNotice)\n async updateArrivalNoticeDetails(\n @Ctx() context: ResolverContext,\n @Arg('arrivalNotice', type => ArrivalNoticePatch) arrivalNotice: ArrivalNoticePatch\n ): Promise<ArrivalNotice> {\n const { domain, tx } = context.state\n let existingArrivalNotice = await tx\n .getRepository(ArrivalNotice)\n .findOne({ where: { name: arrivalNotice.name, domain } })\n\n if (!existingArrivalNotice) {\n throw new Error('Existing Arrival Notice not found.')\n }\n\n await tx.getRepository(ArrivalNotice).update(existingArrivalNotice.id, arrivalNotice)\n return await tx.getRepository(ArrivalNotice).findOneBy({ id: existingArrivalNotice.id })\n }\n\n @Directive('@privilege(category: \"order_customer\", privilege: \"mutation\")')\n @Directive('@transaction')\n @Mutation(returns => ArrivalNoticeList)\n async bulkGenerateArrivalNotices(\n @Ctx() context: ResolverContext,\n @Arg('rawArrivalNotices', type => [NewArrivalNotice], { nullable: true }) rawArrivalNotices: NewArrivalNotice[],\n @Arg('bizplaceId', type => String) bizplaceId: string,\n @Arg('bufferLocation', type => String, { nullable: true }) bufferLocation: string\n ): Promise<ArrivalNoticeList> {\n const { domain, user, tx } = context.state\n let createdArrivalNoticeIds: string[] = [],\n createdOrderProductIds: string[] = [],\n errorsCaught: any[] = [],\n finalArrivalNoticeList: ArrivalNotice[] = []\n let opStatus = ORDER_PRODUCT_STATUS.PENDING_RECEIVE\n let anStatus = ORDER_STATUS.PENDING_RECEIVE\n\n const foundBizplace: Bizplace = await tx\n .getRepository(Bizplace)\n .findOne({ where: { id: bizplaceId }, relations: ['domain'] })\n\n if (!foundBizplace) throw new Error('company not found')\n\n // to check whether the raw data are valid\n const validatedArrivalNotices: RawArrivalNotice[] = await validateBulkArrivalNoticesFunction(\n rawArrivalNotices,\n bizplaceId,\n tx\n )\n\n // check for custom GAN order no setting\n const ganNoSetting: Setting = await tx.getRepository(Setting).findOne({\n where: {\n domain: { id: domain.id },\n name: ORDER_NUMBER_SETTING_KEY.GAN_NUMBER_RULE\n }\n })\n\n const ganProcessingSetting: Setting = await tx.getRepository(Setting).findOne({\n where: { domain: { id: domain.id }, category: 'id-rule', name: 'gan-order-processing' }\n })\n\n const partnerGanProcessingSetting: PartnerSetting = await tx.getRepository(PartnerSetting).findOne({\n where: { setting: ganProcessingSetting, domain, partnerDomain: foundBizplace.domain.id }\n })\n\n // If status of GAN is PENDING_RECEIVE then directly to assign warehouse\n if (ganProcessingSetting) {\n let setting = !isNaN(partnerGanProcessingSetting?.value)\n ? partnerGanProcessingSetting?.value\n : ganProcessingSetting.value\n\n // CONFIRM to assign if setting value is 1\n if (setting == 1) {\n opStatus = ORDER_PRODUCT_STATUS.ARRIVED\n anStatus = ORDER_STATUS.ARRIVED\n }\n }\n\n // extract rawArrivalNotices data into normal ArrivalNotice format\n let arrivalNotices: Partial<ArrivalNotice[]> = extractArrivalNotices(validatedArrivalNotices)\n\n for (let i = 0, l = arrivalNotices.length; i < l; i++) {\n try {\n await getConnection().transaction(async childTx => {\n // check for duplication\n const duplicatedArrivalNotice: ArrivalNotice = await childTx.getRepository(ArrivalNotice).findOne({\n where: {\n refNo: arrivalNotices[i].refNo,\n refNo2: arrivalNotices[i].refNo2,\n refNo3: arrivalNotices[i].refNo3,\n etaDate: arrivalNotices[i].etaDate,\n truckNo: arrivalNotices[i].truckNo,\n containerNo: arrivalNotices[i].containerNo,\n containerSize: arrivalNotices[i].containerSize,\n looseItem: arrivalNotices[i].looseItem,\n importCargo: arrivalNotices[i].importCargo\n }\n })\n\n if (duplicatedArrivalNotice) {\n throw new Error(`duplicated with ${duplicatedArrivalNotice.name}`)\n }\n\n // save new arrival notice\n const createdArrivalNotice: ArrivalNotice = await childTx.getRepository(ArrivalNotice).save({\n ...arrivalNotices[i],\n name: ganNoSetting\n ? await generateId({ domain, type: ORDER_NUMBER_RULE_TYPE.GAN_NUMBER, seed: {} })\n : OrderNoGenerator.arrivalNotice(),\n domain,\n bizplace: foundBizplace,\n status: ORDER_STATUS.PENDING,\n creator: user,\n updater: user\n })\n\n // save new order products\n let createdOrderProducts: OrderProduct[] = await Promise.all(\n arrivalNotices[i].orderProducts.map(async (op: OrderProduct) => {\n return {\n ...op,\n domain,\n bizplace: foundBizplace,\n name: OrderNoGenerator.orderProduct(),\n // product: await childTx.getRepository(Product).findOneBy({ id: op.product.id }),\n status: ORDER_PRODUCT_STATUS.PENDING,\n arrivalNotice: createdArrivalNotice,\n creator: user\n }\n })\n )\n createdOrderProducts = await childTx.getRepository(OrderProduct).save(createdOrderProducts)\n\n // generate new jobsheet\n await generateJobSheet(domain, user, createdArrivalNotice, childTx)\n\n // push arrivalNotice and orderProducts IDs if successfully saved\n createdArrivalNoticeIds.push(createdArrivalNotice.id)\n createdOrderProductIds.push(...createdOrderProducts.map(op => op.id))\n })\n } catch (error) {\n // collect the arrivalNotice details and its error\n let rawArrivalNotices: RawArrivalNotice[] = formRawArrivalNotices(arrivalNotices[i], error.message)\n errorsCaught.push(...rawArrivalNotices)\n }\n }\n\n if (createdArrivalNoticeIds.length && createdOrderProductIds.length) {\n await getConnection().transaction(async childTx => {\n // update arrivalNotices status to PENDING_RECEIVE\n await childTx\n .getRepository(ArrivalNotice)\n .update({ id: In(createdArrivalNoticeIds) }, { status: anStatus, updater: user })\n\n // update orderProducts status to PENDING_RECEIVE\n await childTx\n .getRepository(OrderProduct)\n .update({ id: In(createdOrderProductIds) }, { status: opStatus, updater: user })\n\n finalArrivalNoticeList = await childTx.getRepository(ArrivalNotice).find({\n where: { id: In(createdArrivalNoticeIds) },\n relations: ['orderProducts', 'orderProducts.product', 'bizplace']\n })\n })\n }\n\n if (errorsCaught.length) {\n // should return this error list in the grist so that user know which gan need to amend\n throw new ValidationError({\n ...ValidationError.ERROR_CODES.INVALID_DATA_FOUND,\n detail: { data: JSON.stringify(errorsCaught) }\n })\n }\n\n // return arrivalNotices with its orderProducts list\n return { items: finalArrivalNoticeList, total: 0 }\n }\n}\n\nexport async function deleteArrivalNotice(\n tx: EntityManager,\n name: string,\n user: User,\n domain: Domain\n): Promise<boolean> {\n let foundArrivalNotice: ArrivalNotice = await tx.getRepository(ArrivalNotice).findOne({\n where: { domain: { id: domain.id }, name },\n relations: ['bizplace', 'releaseGood', 'orderProducts', 'orderVass', 'collectionOrders', 'creator', 'updater']\n })\n\n if (!foundArrivalNotice) throw new Error(`Arrival notice doesn't exists.`)\n\n const foundJS: JobSheet = await tx.getRepository(JobSheet).findOne({\n where: {\n bizplace: foundArrivalNotice.bizplace,\n arrivalNoticeRefNo: foundArrivalNotice.name\n }\n })\n\n if (foundJS) await tx.getRepository(JobSheet).delete({ arrivalNoticeRefNo: foundArrivalNotice.name })\n\n const foundOPs: OrderProduct[] = foundArrivalNotice.orderProducts\n const foundOVs: OrderVas[] = foundArrivalNotice.orderVass\n\n // 1. delete order products\n const productIds = foundOPs.map((product: OrderProduct) => product.id)\n if (productIds.length) {\n await tx.getRepository(OrderProduct).delete({ id: In(productIds) })\n }\n\n // 2. delete order vass\n const vasIds = foundOVs.map((vas: OrderVas) => vas.id)\n if (vasIds.length) {\n await tx.getRepository(OrderVas).delete({ id: In(vasIds) })\n }\n\n await tx.getRepository(ArrivalNotice).save({\n ...foundArrivalNotice,\n updater: user\n })\n\n // 4. Remove relation with RO if it's cross docking\n if (foundArrivalNotice.crossDocking && foundArrivalNotice.releaseGood?.id) {\n let releaseGood: ReleaseGood = foundArrivalNotice.releaseGood\n releaseGood.arrivalNotice = null\n releaseGood = await tx.getRepository(ReleaseGood).save(releaseGood)\n\n await tx.getRepository(ArrivalNotice).delete({ domain, name })\n await deleteReleaseGood(tx, releaseGood.name, user, domain)\n } else {\n // 5. delete GAN\n await tx.getRepository(ArrivalNotice).delete({ domain, name })\n }\n return true\n}\n\nexport async function generateArrivalNoticeFunction(\n _: any,\n arrivalNotice: any,\n fromPo: Boolean,\n files: FileUpload[],\n context: any,\n tx?: EntityManager\n): Promise<ArrivalNotice> {\n const { domain, user } = context.state\n let orderProducts: OrderProduct[] = arrivalNotice.orderProducts\n let orderVass: OrderVas[] = arrivalNotice.orderVass\n let myBizplace: Bizplace\n let orderNo: string = ''\n\n const settingRepo: Repository<Setting> = tx?.getRepository(Setting) || getRepository(Setting)\n\n if (arrivalNotice.bizplace) myBizplace = arrivalNotice.bizplace\n else if (arrivalNotice.customerBizplaceId) {\n const permittedBizplaces: Bizplace[] = await getPermittedBizplaces(domain, user)\n let foundPermittedBizplace: Bizplace = permittedBizplaces.find(biz => biz.id == arrivalNotice.customerBizplaceId)\n\n if (!foundPermittedBizplace) throw new Error(`This user does not permitted for this company`)\n\n myBizplace = arrivalNotice.customerBizplaceId\n } else if (arrivalNotice.partnerBizplaceId) {\n const permittedBizplaces: Bizplace[] = await getPermittedBizplaces(domain, user)\n let foundPermittedBizplace: Bizplace = permittedBizplaces.find(biz => biz.id == arrivalNotice.partnerBizplaceId)\n\n if (!foundPermittedBizplace) throw new Error(`This user does not permitted for this company`)\n\n myBizplace = arrivalNotice.partnerBizplaceId\n } else if (arrivalNotice.warehouseId) myBizplace = await getOutletBizplace(arrivalNotice.warehouseId)\n else myBizplace = await getMyBizplace(domain, user)\n\n if (arrivalNotice.supplier) {\n const supplier: ContactPoint = await tx\n .getRepository(ContactPoint)\n .findOne({ where: { bizplace: arrivalNotice.supplier, domain }, relations: ['bizplace'] })\n\n if (!supplier) throw new Error('contact point does not exist')\n\n arrivalNotice.supplier = supplier\n }\n // find GAN number rule setting\n const ganNoSetting: Setting = await settingRepo.findOne({\n where: {\n domain: { id: domain.id },\n name: ORDER_NUMBER_SETTING_KEY.GAN_NUMBER_RULE\n }\n })\n\n if (ganNoSetting) {\n orderNo = await generateId({ domain, type: ORDER_NUMBER_RULE_TYPE.GAN_NUMBER, seed: {} })\n } else {\n orderNo = OrderNoGenerator.arrivalNotice()\n }\n\n // 1. Create arrival notice\n const createdArrivalNotice: ArrivalNotice = await tx.getRepository(ArrivalNotice).save({\n ...arrivalNotice,\n name: orderNo,\n domain,\n bizplace: myBizplace,\n looseItem: arrivalNotice?.looseItem ? arrivalNotice.looseItem : false,\n status: fromPo ? ORDER_STATUS.INTRANSIT : ORDER_STATUS.PENDING,\n creator: user,\n updater: user\n })\n\n // 2. Create arrival notice product\n await addArrivalNoticeProducts(\n domain,\n createdArrivalNotice,\n orderProducts.map((op: OrderProduct) => {\n return { ...op, status: fromPo ? ORDER_PRODUCT_STATUS.INTRANSIT : ORDER_PRODUCT_STATUS.PENDING }\n }),\n user,\n tx\n )\n\n await generateJobSheet(domain, user, createdArrivalNotice, tx)\n\n // 3. Create arrival notice vas\n if (orderVass?.length) {\n orderVass = await Promise.all(\n orderVass.map(async (ov: OrderVas) => {\n if (ov.targetProduct) {\n ov.targetProduct = await tx.getRepository(Product).findOneBy({ id: ov.targetProduct.id })\n }\n\n return {\n ...ov,\n domain,\n bizplace: myBizplace,\n name: OrderNoGenerator.orderVas(),\n vas: await tx.getRepository(Vas).findOneBy({ domain: { id: domain.id }, id: ov.vas.id }),\n type: ORDER_TYPES.ARRIVAL_NOTICE,\n arrivalNotice: createdArrivalNotice,\n status: fromPo ? ORDER_VAS_STATUS.INTRANSIT : ORDER_VAS_STATUS.PENDING,\n creator: user,\n updater: user\n }\n })\n )\n await tx.getRepository(OrderVas).save(orderVass)\n }\n\n if (files?.length) {\n const attachments: Attachment[] = files.map(attachment => {\n return {\n file: attachment,\n refType: ATTACHMENT_TYPE.GAN,\n refBy: createdArrivalNotice.id,\n category: ATTACHMENT_TYPE.GAN /* TODO use refType */\n }\n })\n await createAttachments(_, { attachments }, context)\n }\n\n return createdArrivalNotice\n}\n\nexport async function confirmArrivalNoticeFunction(\n name: string,\n context: any,\n tx?: EntityManager\n): Promise<ArrivalNotice> {\n const { user, domain } = context.state\n\n const foundArrivalNotice: ArrivalNotice = await tx.getRepository(ArrivalNotice).findOne({\n where: { domain: { id: domain.id }, name, status: ORDER_STATUS.PENDING },\n relations: [\n 'bizplace',\n 'bizplace.domain',\n 'releaseGood',\n 'orderProducts',\n 'orderProducts.product',\n 'orderVass',\n 'orderVass.vas',\n 'creator',\n 'updater'\n ]\n })\n\n let foundOPs: OrderProduct[] = foundArrivalNotice.orderProducts\n let foundOVs: OrderVas[] = foundArrivalNotice.orderVass\n let customerBizplace: Bizplace = foundArrivalNotice.bizplace\n let opStatus = ORDER_PRODUCT_STATUS.PENDING_RECEIVE\n let anStatus = ORDER_STATUS.PENDING_RECEIVE\n let ovStatus = ORDER_VAS_STATUS.PENDING_RECEIVE\n let acceptedByUser = null\n let acceptedTime = null\n\n const ganProcessingSetting: Setting = await tx.getRepository(Setting).findOne({\n where: { domain: { id: domain.id }, category: 'id-rule', name: 'gan-order-processing' }\n })\n\n const partnerGanProcessingSetting: PartnerSetting = await tx.getRepository(PartnerSetting).findOne({\n where: { setting: ganProcessingSetting, domain, partnerDomain: customerBizplace?.domain }\n })\n\n // If status of GAN is PENDING_RECEIVE then directly to assign warehouse\n if (ganProcessingSetting) {\n let setting = !isNaN(partnerGanProcessingSetting?.value)\n ? partnerGanProcessingSetting?.value\n : ganProcessingSetting.value\n\n // CONFIRM to assign if setting value is 1\n if (setting == 1) {\n opStatus = ORDER_PRODUCT_STATUS.ARRIVED\n anStatus = ORDER_STATUS.ARRIVED\n ovStatus = ORDER_VAS_STATUS.ARRIVED\n acceptedByUser = user\n acceptedTime = new Date()\n }\n }\n\n if (!foundArrivalNotice) throw new Error(`Arrival notice doesn't exists.`)\n\n // 1. GAN Status change (PENDING => PENDING_RECEIVE)\n let arrivalNotice: ArrivalNotice = await tx.getRepository(ArrivalNotice).save({\n ...foundArrivalNotice,\n status: anStatus,\n updater: user,\n acceptedBy: acceptedByUser,\n acceptedAt: acceptedTime\n })\n\n foundOPs = foundOPs.map((op: OrderProduct) => {\n return { ...op, status: opStatus }\n })\n await tx.getRepository(OrderProduct).save(foundOPs)\n\n // 2. Update order vas status if it exists.\n if (foundOVs && foundOVs.length) {\n foundOVs = foundOVs.map((ov: OrderVas) => {\n return { ...ov, status: ovStatus }\n })\n\n await tx.getRepository(OrderVas).save(foundOVs)\n }\n\n // notification logics\n // get Office Admin Users\n if (context?.state?.type != 'api') {\n const users: any[] = await tx\n .getRepository('users_roles')\n .createQueryBuilder('ur')\n .select('ur.users_id', 'id')\n .where(qb => {\n const subQuery = qb\n .subQuery()\n .select('role.id')\n .from(Role, 'role')\n .where(\"role.name = 'Office Admin'\")\n .andWhere('role.domain_id = :domain', { domain: domain.id })\n .getQuery()\n return 'ur.roles_id IN ' + subQuery\n })\n .getRawMany()\n\n // send notification to Office Admin Users\n if (users?.length && context.header?.referer) {\n const receivers: any[] = users.map(user => user.id)\n const msg = {\n title: `New Arrival Notice from ${customerBizplace.name}`,\n body: `New incoming order, ${foundArrivalNotice.name} is pending for receiving`,\n url: context.header.referer,\n data: { url: context.header.referer }\n }\n\n /**\n * @notes Temporary off sendNotification due to suspect of causing wms down\n */\n\n // await sendNotification({\n // receivers,\n // message: { ...msg }\n // })\n }\n }\n\n return arrivalNotice\n}\n\nexport async function receiveArrivalNoticeFunction(\n _: any,\n name: string,\n context: ResolverContext\n): Promise<ArrivalNotice> {\n const { user, domain, tx } = context.state\n try {\n const foundArrivalNotice: ArrivalNotice = await tx.getRepository(ArrivalNotice).findOne({\n where: { domain: { id: domain.id }, name, status: ORDER_STATUS.PENDING_RECEIVE },\n relations: ['bizplace', 'bizplace.domain', 'collectionOrders', 'orderProducts', 'orderVass']\n })\n\n let foundOPs: OrderProduct[] = foundArrivalNotice.orderProducts\n let foundOVs: OrderVas[] = foundArrivalNotice.orderVass\n let foundCOs: CollectionOrder[] = await tx.getRepository(CollectionOrder).find({\n where: { domain: { id: domain.id }, refNo: foundArrivalNotice.name }\n })\n let customerBizplace: Bizplace = foundArrivalNotice.bizplace\n let opStatus = ORDER_PRODUCT_STATUS.INTRANSIT\n let anStatus = ORDER_STATUS.INTRANSIT\n let ovStatus = ORDER_VAS_STATUS.INTRANSIT\n let coStatus = ORDER_STATUS.READY_TO_DISPATCH\n\n const ganProcessingSetting: Setting = await tx.getRepository(Setting).findOne({\n where: { domain: { id: domain.id }, category: 'id-rule', name: 'gan-order-processing' }\n })\n\n const partnerGanProcessingSetting: PartnerSetting = await tx.getRepository(PartnerSetting).findOne({\n where: { setting: ganProcessingSetting, domain, partnerDomain: customerBizplace?.domain }\n })\n\n // If status of GAN is INTRANSIT then directly to assign warehouse\n if (ganProcessingSetting) {\n let setting = !isNaN(partnerGanProcessingSetting?.value)\n ? partnerGanProcessingSetting?.value\n : ganProcessingSetting.value\n\n // RECEIVE to assign if setting value is 2\n if (setting == 2) {\n opStatus = ORDER_PRODUCT_STATUS.ARRIVED\n anStatus = ORDER_STATUS.ARRIVED\n ovStatus = ORDER_VAS_STATUS.ARRIVED\n coStatus = ORDER_STATUS.READY_TO_DISPATCH\n }\n }\n\n if (!foundArrivalNotice) throw new Error(`Arrival notice doesn't exists.`)\n\n // 1. Update status of order products (PENDING_RECEIVE => INTRANSIT)\n foundOPs = foundOPs.map((op: OrderProduct) => {\n return {\n ...op,\n status: opStatus,\n updater: user\n }\n })\n await tx.getRepository(OrderProduct).save(foundOPs)\n\n // 2. Update status of order vass if it exists (PENDING_RECEIVE => INTRANSIT)\n if (foundOVs && foundOVs.length) {\n foundOVs = foundOVs.map((ov: OrderVas) => {\n return {\n ...ov,\n status: ovStatus,\n updater: user\n }\n })\n await tx.getRepository(OrderVas).save(foundOVs)\n }\n\n // 3. If there's collection order, update status of collection order (PENDING_RECEIVE => READY_TO_DISPATCH)\n if (foundCOs) {\n foundCOs = foundCOs.map((co: CollectionOrder) => {\n return {\n ...co,\n status: coStatus,\n updater: user\n }\n })\n }\n\n // notification logics\n const users: any[] = await getDomainUsers(foundArrivalNotice?.bizplace, tx)\n\n // send notification to Customer Users\n if (users?.length && context.header?.referer) {\n const receivers: any[] = users.map(user => user.id)\n const msg = {\n title: `Latest status for ${foundArrivalNotice.name}`,\n body: `Your GAN has been received and processed by ${domain.name}`,\n url: context.header.referer,\n data: { url: context.header.referer }\n }\n\n /**\n * @notes Temporary off sendNotification due to suspect of causing wms down\n */\n\n // await sendNotification({\n // receivers,\n // message: { ...msg }\n // })\n }\n\n // 4. Update status of arrival notice (PENDING_RECEIVE => INTRANSIT)\n let rcvArrivalNotice = await tx.getRepository(ArrivalNotice).save({\n ...foundArrivalNotice,\n status: anStatus,\n acceptedBy: user,\n acceptedAt: new Date(),\n updater: user\n })\n\n return foundArrivalNotice\n } catch (e) {\n throw e\n }\n}\n\nexport async function checkArrivedNoticeFunction(\n name: string,\n context: any,\n tx?: EntityManager\n): Promise<ArrivalNotice> {\n const { user, domain } = context.state\n try {\n const foundArrivalNotice: ArrivalNotice = await tx.getRepository(ArrivalNotice).findOne({\n where: { domain: { id: domain.id }, name, status: ORDER_STATUS.INTRANSIT },\n relations: ['bizplace', 'collectionOrders', 'orderProducts', 'orderVass']\n })\n\n debug('ganNo', name, foundArrivalNotice)\n\n if (!foundArrivalNotice) throw new Error(`Arrival notice doesn't exists.`)\n\n // 1. Check wheter related collection order is done or not\n const foundCOs: CollectionOrder[] = foundArrivalNotice.collectionOrders\n if (foundCOs && foundCOs.length) {\n foundCOs.map((co: CollectionOrder) => {\n if (co.status !== ORDER_STATUS.DONE) {\n throw new Error(`Collection Order: ${co.name} is not finished yet.`)\n }\n })\n }\n\n let foundOPs: OrderProduct[] = foundArrivalNotice.orderProducts\n let foundOVs: OrderVas[] = foundArrivalNotice.orderVass\n\n // 2. Update status of order products (INTRANSIT => ARRIVED)\n foundOPs = foundOPs.map((op: OrderProduct) => {\n return {\n ...op,\n status: ORDER_PRODUCT_STATUS.ARRIVED,\n updater: user\n }\n })\n await tx.getRepository(OrderProduct).save(foundOPs)\n\n // 3. Update status of order vass if it exists (INTRANSIT => ARRIVED)\n if (foundOVs && foundOVs.length) {\n foundOVs = foundOVs.map((ov: OrderVas) => {\n return {\n ...ov,\n status: ORDER_VAS_STATUS.ARRIVED,\n updater: user\n }\n })\n await tx.getRepository(OrderVas).save(foundOVs)\n }\n\n // 4. Update status of arrival notice (INTRANSIT => ARRIVED)\n await tx.getRepository(ArrivalNotice).save({\n ...foundArrivalNotice,\n status: ORDER_STATUS.ARRIVED,\n updater: user\n })\n\n // notification logics\n const users: any[] = await getDomainUsers(foundArrivalNotice?.bizplace, tx)\n\n if (users?.length && context.header?.referer) {\n const receivers: any[] = users.map(user => user.id)\n const msg = {\n title: `Latest status for ${foundArrivalNotice.name}`,\n body: `Your goods has safely arrived at ${domain.name}`,\n url: context.header.referer,\n data: { url: context.header.referer }\n }\n\n /**\n * @notes Temporary off sendNotification due to suspect of causing wms down\n */\n\n // await sendNotification({\n // receivers,\n // message: { ...msg }\n // })\n }\n\n return foundArrivalNotice\n } catch (e) {\n throw e\n }\n}\n\nexport async function rejectArrivalNotice(\n tx: EntityManager,\n name: string,\n remark: string,\n context: any\n): Promise<ArrivalNotice> {\n const { user, domain } = context.state\n\n const foundArrivalNotice: ArrivalNotice = await tx.getRepository(ArrivalNotice).findOne({\n where: { domain: { id: domain.id }, name, status: ORDER_STATUS.PENDING_RECEIVE },\n relations: ['bizplace', 'orderProducts', 'orderVass', 'collectionOrders']\n })\n\n if (!foundArrivalNotice) throw new Error(`Arrival notice doesn't exists.`)\n if (!remark) throw new Error('Remark is not exist.')\n\n let foundOPs: OrderProduct[] = foundArrivalNotice.orderProducts\n let foundOVs: OrderVas[] = foundArrivalNotice.orderVass\n let foundCOs: CollectionOrder[] = foundArrivalNotice.collectionOrders\n\n // 1. Update status of order products (PENDING_RECEIVE => REJECTED)\n foundOPs = foundOPs.map((op: OrderProduct) => {\n op.status = ORDER_PRODUCT_STATUS.REJECTED\n op.updater = user\n return op\n })\n await tx.getRepository(OrderProduct).save(foundOPs)\n\n // 2. Update status of order vass if it exists (PENDING_RECEIVE => REJECTED)\n if (foundOVs && foundOVs.length) {\n foundOVs = foundOVs.map((ov: OrderVas) => {\n ov.status = ORDER_VAS_STATUS.REJECTED\n ov.updater = user\n return ov\n })\n await tx.getRepository(OrderVas).save(foundOVs)\n }\n\n // 3. If there's collection order, update status of collection order (PENDING_RECEIVE => REJECTED)\n if (foundCOs) {\n foundCOs = foundCOs.map((co: CollectionOrder) => {\n co.status = ORDER_STATUS.REJECTED\n co.updater = user\n return co\n })\n await tx.getRepository(CollectionOrder).save(foundCOs)\n }\n\n foundArrivalNotice.remark = remark\n foundArrivalNotice.status = ORDER_STATUS.REJECTED\n foundArrivalNotice.updater = user\n await tx.getRepository(ArrivalNotice).save(foundArrivalNotice)\n\n // notification logics\n const users: any[] = await getDomainUsers(foundArrivalNotice?.bizplace, tx)\n\n // send notification to Customer Users\n if (users?.length && context.header?.referer) {\n const receivers: any[] = users.map(user => user.id)\n const msg = {\n title: `Latest status for ${foundArrivalNotice.name}`,\n body: `Your GAN has been rejected.`,\n url: context.header.referer,\n data: { url: context.header.referer }\n }\n\n /**\n * @notes Temporary off sendNotification due to suspect of causing wms down\n */\n\n // await sendNotification({\n // receivers,\n // message: { ...msg }\n // })\n }\n\n return foundArrivalNotice\n}\n\nexport async function addArrivalNoticeProducts(\n domain: Domain,\n arrivalNotice: ArrivalNotice,\n newOrderProducts: any[],\n user: User,\n tx?: EntityManager\n): Promise<void> {\n const productRepo: Repository<Product> = tx?.getRepository(Product) || getRepository(Product)\n const orderProductRepo: Repository<OrderProduct> = tx?.getRepository(OrderProduct) || getRepository(OrderProduct)\n\n if (!arrivalNotice?.bizplace || !arrivalNotice?.orderProducts?.length) {\n arrivalNotice = await tx.getRepository(ArrivalNotice).findOne({\n where: { domain: { id: domain.id }, name: arrivalNotice.name },\n relations: ['bizplace', 'orderProducts']\n })\n }\n\n const createdOrderProducts: OrderProduct[] = await Promise.all(\n newOrderProducts.map(async (op: OrderProduct) => {\n return {\n ...op,\n domain,\n bizplace: arrivalNotice.bizplace,\n name: OrderNoGenerator.orderProduct(),\n product: await productRepo.findOneBy({ id: op.product.id }),\n arrivalNotice,\n creator: user\n }\n })\n )\n\n debug('gan-created-order-products', createdOrderProducts)\n await orderProductRepo.save(createdOrderProducts)\n}\n\nexport async function editArrivalNoticeProducts(\n existingOrderProducts: (OrderProduct | OrderProductPatch)[],\n user: User,\n tx?: EntityManager\n): Promise<void> {\n const orderProductRepo: Repository<OrderProduct> = tx?.getRepository(OrderProduct) || getRepository(OrderProduct)\n\n const updatedOrderProducts: OrderProduct[] = await Promise.all(\n existingOrderProducts.map(async (op: OrderProduct) => {\n return {\n ...op,\n status: ORDER_PRODUCT_STATUS.EDITED,\n updater: user\n }\n })\n )\n\n debug('gan-updated-order-products', updatedOrderProducts)\n await orderProductRepo.save(updatedOrderProducts)\n}\n\nfunction extractArrivalNotices(rawArrivalNotices): Partial<ArrivalNotice[]> {\n return rawArrivalNotices.reduce((arrivalNotices, raw) => {\n // discard the item that has no productId or productDetailId\n if (!raw.productId || !raw.productDetailId) return\n\n const idx: number = arrivalNotices.findIndex(an => {\n // consider these attributes if they are exist in \"item\"\n const comparison = [\n 'refNo2',\n 'refNo3',\n 'truckNo',\n 'ownTransport',\n 'container',\n 'containerNo',\n 'containerSize',\n 'looseItem',\n 'importCargo'\n ]\n\n let a: any = {},\n b: any = {}\n\n comparison.forEach(cc => {\n if (raw[cc] !== null) {\n a[cc] = raw[cc]\n b[cc] = an[cc]\n }\n })\n\n a = JSON.stringify(Object.fromEntries(Object.entries(a).sort()))\n b = JSON.stringify(Object.fromEntries(Object.entries(b).sort()))\n\n return an.refNo == raw.refNo && an.etaDate == raw.etaDate && a === b\n })\n\n const product: Product = Object.assign(new Product(), { id: raw.productId, sku: raw.sku })\n const orderProduct: Partial<OrderProduct> = {\n product,\n batchId: raw.batchId,\n batchIdRef: raw.batchIdRef,\n packingType: raw.packingType,\n packingSize: raw.packingSize,\n packQty: raw.packQty,\n uomValue: raw.uomValue,\n uom: raw.uom,\n totalUomValue: raw.totalUomValue,\n palletQty: raw.palletQty,\n unitPrice: raw.unitPrice,\n manufactureDate: raw.manufactureDate\n }\n\n if (idx >= 0) {\n const duplicateSkuIdx: number = arrivalNotices[idx].orderProducts.findIndex(\n op =>\n op.sku === raw.sku &&\n op.packingType === raw.packingType &&\n op.packingSize === raw.packingSize &&\n op.batchId === raw.batchId\n )\n\n if (duplicateSkuIdx >= 0) arrivalNotices[idx].orderProducts[duplicateSkuIdx].packQty += raw.packQty\n else arrivalNotices[idx].orderProducts.push(orderProduct)\n } else {\n arrivalNotices.push({\n refNo: raw.refNo,\n refNo2: raw.refNo2,\n refNo3: raw.refNo3,\n etaDate: raw.etaDate,\n truckNo: raw.truckNo,\n ownTransport: raw.ownTransport,\n container: raw.container,\n containerNo: raw.containerNo,\n containerSize: raw.containerSize,\n importCargo: raw.importCargo,\n looseItem: raw.looseItem,\n orderProducts: [orderProduct]\n })\n }\n\n return arrivalNotices\n }, [])\n}\n\nfunction formRawArrivalNotices(arrivalNotice, errorMsg) {\n let rawArrivalNotices = []\n for (let i = 0, l = arrivalNotice.orderProducts.length; i < l; i++) {\n let rawArrivalNotice = {\n ...arrivalNotice,\n ...arrivalNotice.orderProducts[i],\n sku: arrivalNotice.orderProducts[i].product.sku,\n errorMsg\n }\n\n delete rawArrivalNotice.orderProducts\n delete rawArrivalNotice.product\n\n rawArrivalNotices.push(rawArrivalNotice)\n }\n return rawArrivalNotices\n}\n"]}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var _a, _b;
|
|
3
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
3
|
exports.validateBulkArrivalNoticesFunction = exports.ArrivalNoticeQuery = void 0;
|
|
5
4
|
const tslib_1 = require("tslib");
|
|
@@ -24,7 +23,7 @@ let ArrivalNoticeQuery = class ArrivalNoticeQuery {
|
|
|
24
23
|
param = Object.assign(Object.assign({}, param), { refNo });
|
|
25
24
|
else
|
|
26
25
|
return;
|
|
27
|
-
let foundGAN = await (0,
|
|
26
|
+
let foundGAN = await (0, shell_1.getRepository)(arrival_notice_1.ArrivalNotice).findOne({
|
|
28
27
|
where: Object.assign({}, param),
|
|
29
28
|
relations: [
|
|
30
29
|
'domain',
|
|
@@ -50,17 +49,17 @@ let ArrivalNoticeQuery = class ArrivalNoticeQuery {
|
|
|
50
49
|
if (name && !foundGAN)
|
|
51
50
|
throw new Error(`Failed to find arrival notice with ${name}`);
|
|
52
51
|
if (foundGAN) {
|
|
53
|
-
const foundAttachments = await (0,
|
|
52
|
+
const foundAttachments = await (0, shell_1.getRepository)(attachment_base_1.Attachment).find({
|
|
54
53
|
where: {
|
|
55
|
-
domain,
|
|
54
|
+
domain: { id: domain.id },
|
|
56
55
|
refBy: foundGAN === null || foundGAN === void 0 ? void 0 : foundGAN.id,
|
|
57
56
|
category: constants_1.ATTACHMENT_TYPE.GAN
|
|
58
57
|
}
|
|
59
58
|
});
|
|
60
59
|
const foundPOAttachments = ((_a = foundGAN === null || foundGAN === void 0 ? void 0 : foundGAN.purchaseOrder) === null || _a === void 0 ? void 0 : _a.id)
|
|
61
|
-
? await (0,
|
|
60
|
+
? await (0, shell_1.getRepository)(attachment_base_1.Attachment).find({
|
|
62
61
|
where: {
|
|
63
|
-
domain,
|
|
62
|
+
domain: { id: domain.id },
|
|
64
63
|
refBy: (_b = foundGAN.purchaseOrder) === null || _b === void 0 ? void 0 : _b.id,
|
|
65
64
|
category: constants_1.ATTACHMENT_TYPE.PO
|
|
66
65
|
}
|
|
@@ -68,7 +67,7 @@ let ArrivalNoticeQuery = class ArrivalNoticeQuery {
|
|
|
68
67
|
: [];
|
|
69
68
|
// add productDetails data to orderProduct.product
|
|
70
69
|
foundGAN.orderProducts = await Promise.all(foundGAN.orderProducts.map(async (orderProduct) => {
|
|
71
|
-
orderProduct.product['productDetails'] = await (0,
|
|
70
|
+
orderProduct.product['productDetails'] = await (0, shell_1.getRepository)(product_base_1.ProductDetail).find({
|
|
72
71
|
where: {
|
|
73
72
|
product: orderProduct.product.id,
|
|
74
73
|
packingType: orderProduct.packingType,
|
|
@@ -80,7 +79,7 @@ let ArrivalNoticeQuery = class ArrivalNoticeQuery {
|
|
|
80
79
|
// add productDetails data to orderInventory.inventory.product if orderInventory is exist
|
|
81
80
|
if (foundGAN.orderInventories && foundGAN.orderInventories.length) {
|
|
82
81
|
foundGAN.orderInventories = await Promise.all(foundGAN.orderInventories.map(async (orderInventory) => {
|
|
83
|
-
orderInventory.inventory.product['productDetails'] = await (0,
|
|
82
|
+
orderInventory.inventory.product['productDetails'] = await (0, shell_1.getRepository)(product_base_1.ProductDetail).find({
|
|
84
83
|
where: {
|
|
85
84
|
product: orderInventory.inventory.product.id,
|
|
86
85
|
packingType: orderInventory.inventory.packingType,
|
|
@@ -138,7 +137,7 @@ let ArrivalNoticeQuery = class ArrivalNoticeQuery {
|
|
|
138
137
|
relation: false
|
|
139
138
|
});
|
|
140
139
|
}
|
|
141
|
-
const qb = (0,
|
|
140
|
+
const qb = (0, shell_1.getRepository)(arrival_notice_1.ArrivalNotice).createQueryBuilder('an');
|
|
142
141
|
(0, shell_1.buildQuery)(qb, params, context);
|
|
143
142
|
qb.addSelect('COALESCE("cc".rank, 9999)', 'rank');
|
|
144
143
|
qb.leftJoinAndSelect('an.domain', 'domain');
|
|
@@ -205,7 +204,7 @@ let ArrivalNoticeQuery = class ArrivalNoticeQuery {
|
|
|
205
204
|
relation: false
|
|
206
205
|
});
|
|
207
206
|
}
|
|
208
|
-
const qb = (0,
|
|
207
|
+
const qb = (0, shell_1.getRepository)(arrival_notice_1.ArrivalNotice).createQueryBuilder('an');
|
|
209
208
|
(0, shell_1.buildQuery)(qb, params, context);
|
|
210
209
|
qb.addSelect('COALESCE("cc".rank, 9999)', 'rank');
|
|
211
210
|
qb.leftJoinAndSelect('an.domain', 'domain');
|
|
@@ -240,13 +239,13 @@ let ArrivalNoticeQuery = class ArrivalNoticeQuery {
|
|
|
240
239
|
return await validateBulkArrivalNoticesFunction(rawArrivalNotices, bizplaceId, tx);
|
|
241
240
|
}
|
|
242
241
|
async domain(arrivalNotice) {
|
|
243
|
-
return await (0,
|
|
242
|
+
return await (0, shell_1.getRepository)(shell_1.Domain).findOneBy({ id: arrivalNotice.domainId });
|
|
244
243
|
}
|
|
245
244
|
async creator(arrivalNotice) {
|
|
246
|
-
return await (0,
|
|
245
|
+
return await (0, shell_1.getRepository)(auth_base_1.User).findOneBy({ id: arrivalNotice.creatorId });
|
|
247
246
|
}
|
|
248
247
|
async updater(arrivalNotice) {
|
|
249
|
-
return await (0,
|
|
248
|
+
return await (0, shell_1.getRepository)(auth_base_1.User).findOneBy({ id: arrivalNotice.updaterId });
|
|
250
249
|
}
|
|
251
250
|
};
|
|
252
251
|
tslib_1.__decorate([
|
|
@@ -265,7 +264,7 @@ tslib_1.__decorate([
|
|
|
265
264
|
tslib_1.__param(0, (0, type_graphql_1.Ctx)()),
|
|
266
265
|
tslib_1.__param(1, (0, type_graphql_1.Args)()),
|
|
267
266
|
tslib_1.__metadata("design:type", Function),
|
|
268
|
-
tslib_1.__metadata("design:paramtypes", [Object,
|
|
267
|
+
tslib_1.__metadata("design:paramtypes", [Object, shell_1.ListParam]),
|
|
269
268
|
tslib_1.__metadata("design:returntype", Promise)
|
|
270
269
|
], ArrivalNoticeQuery.prototype, "arrivalNotices", null);
|
|
271
270
|
tslib_1.__decorate([
|
|
@@ -274,7 +273,7 @@ tslib_1.__decorate([
|
|
|
274
273
|
tslib_1.__param(0, (0, type_graphql_1.Args)()),
|
|
275
274
|
tslib_1.__param(1, (0, type_graphql_1.Ctx)()),
|
|
276
275
|
tslib_1.__metadata("design:type", Function),
|
|
277
|
-
tslib_1.__metadata("design:paramtypes", [
|
|
276
|
+
tslib_1.__metadata("design:paramtypes", [shell_1.ListParam, Object]),
|
|
278
277
|
tslib_1.__metadata("design:returntype", Promise)
|
|
279
278
|
], ArrivalNoticeQuery.prototype, "arrivalNoticeRequests", null);
|
|
280
279
|
tslib_1.__decorate([
|
|
@@ -443,7 +442,6 @@ async function validateBulkArrivalNoticesFunction(rawArrivalNotices, bizplaceId,
|
|
|
443
442
|
AND raw.import_cargo = an.import_cargo
|
|
444
443
|
LEFT JOIN products pr ON LOWER(pr.sku) = LOWER(raw.sku)
|
|
445
444
|
LEFT JOIN product_details pd ON pr.id = pd.product_id
|
|
446
|
-
AND pr.bizplace_id = $1
|
|
447
445
|
AND CASE WHEN raw.packing_type NOTNULL AND raw.packing_size NOTNULL AND raw.uom NOTNULL
|
|
448
446
|
THEN pd.packing_type = raw.packing_type AND pd.packing_size = raw.packing_size AND pd.uom = raw.uom
|
|
449
447
|
WHEN raw.packing_type NOTNULL AND raw.packing_size NOTNULL AND raw.uom ISNULL
|
|
@@ -451,6 +449,7 @@ async function validateBulkArrivalNoticesFunction(rawArrivalNotices, bizplaceId,
|
|
|
451
449
|
WHEN raw.packing_type ISNULL AND raw.packing_size ISNULL AND raw.uom NOTNULL
|
|
452
450
|
THEN pd.uom = raw.uom AND pd.is_default IS TRUE ELSE pd.is_default IS TRUE
|
|
453
451
|
END
|
|
452
|
+
WHERE pr.bizplace_id = $1
|
|
454
453
|
GROUP BY raw.ref_no, raw.ref_no_2, raw.ref_no_3, raw.eta_date, raw.truck_no, raw.own_transport, raw.container, raw.container_no, raw.container_size, raw.import_cargo, raw.loose_item,
|
|
455
454
|
pr.id, pd.id, raw.sku, pr.name, pr.description, raw.batch_id, raw.batch_id_ref, raw.packing_type, raw.packing_size, raw.uom, raw.unit_price, raw.manufacture_date, an.ref_no, an.name
|
|
456
455
|
) SELECT foo.*,
|