@things-factory/sales-base 4.3.79 → 4.3.80-alpha.3
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/service/arrival-notice/arrival-notice-mutation.js +6 -5
- package/dist-server/service/arrival-notice/arrival-notice-mutation.js.map +1 -1
- package/dist-server/service/arrival-notice/arrival-notice-query.js.map +1 -1
- package/dist-server/service/arrival-notice/arrival-notice-types.js.map +1 -1
- package/dist-server/service/arrival-notice/arrival-notice.js +5 -0
- package/dist-server/service/arrival-notice/arrival-notice.js.map +1 -1
- package/dist-server/service/claim/claim-mutation.js.map +1 -1
- package/dist-server/service/claim/claim-query.js.map +1 -1
- package/dist-server/service/claim/claim-types.js.map +1 -1
- package/dist-server/service/claim/claim.js.map +1 -1
- package/dist-server/service/claim-detail/claim-detail-mutation.js.map +1 -1
- package/dist-server/service/claim-detail/claim-detail-query.js.map +1 -1
- package/dist-server/service/claim-detail/claim-detail-types.js.map +1 -1
- package/dist-server/service/claim-detail/claim-detail.js.map +1 -1
- package/dist-server/service/claim-order/claim-order-mutation.js.map +1 -1
- package/dist-server/service/claim-order/claim-order-query.js.map +1 -1
- package/dist-server/service/claim-order/claim-order-types.js.map +1 -1
- package/dist-server/service/claim-order/claim-order.js.map +1 -1
- package/dist-server/service/collection-order/collection-order-mutation.js.map +1 -1
- package/dist-server/service/collection-order/collection-order-query.js.map +1 -1
- package/dist-server/service/collection-order/collection-order-types.js.map +1 -1
- package/dist-server/service/collection-order/collection-order.js.map +1 -1
- package/dist-server/service/delivery-order/delivery-order-mutation.js.map +1 -1
- package/dist-server/service/delivery-order/delivery-order-query.js.map +1 -1
- package/dist-server/service/delivery-order/delivery-order-types.js.map +1 -1
- package/dist-server/service/delivery-order/delivery-order.js.map +1 -1
- package/dist-server/service/draft-release-good/draft-release-good-mutation.js +3 -8
- package/dist-server/service/draft-release-good/draft-release-good-mutation.js.map +1 -1
- package/dist-server/service/draft-release-good/draft-release-good-query.js +4 -7
- 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.map +1 -1
- package/dist-server/service/draft-release-good/draft-release-good.js +5 -0
- package/dist-server/service/draft-release-good/draft-release-good.js.map +1 -1
- package/dist-server/service/goods-receival-note/goods-receival-note-mutation.js.map +1 -1
- 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.map +1 -1
- package/dist-server/service/goods-receival-note/goods-receival-note.js.map +1 -1
- package/dist-server/service/inventory-check/inventory-check-mutation.js.map +1 -1
- package/dist-server/service/inventory-check/inventory-check-query.js.map +1 -1
- package/dist-server/service/inventory-check/inventory-check-types.js.map +1 -1
- package/dist-server/service/inventory-check/inventory-check.js.map +1 -1
- package/dist-server/service/invoice/invoice-mutation.js.map +1 -1
- package/dist-server/service/invoice/invoice-query.js.map +1 -1
- package/dist-server/service/invoice/invoice-types.js.map +1 -1
- package/dist-server/service/invoice/invoice.js.map +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.map +1 -1
- package/dist-server/service/invoice-product/invoice-product-types.js.map +1 -1
- package/dist-server/service/invoice-product/invoice-product.js +8 -3
- package/dist-server/service/invoice-product/invoice-product.js.map +1 -1
- package/dist-server/service/job-sheet/job-sheet-mutation.js.map +1 -1
- package/dist-server/service/job-sheet/job-sheet-query.js.map +1 -1
- package/dist-server/service/job-sheet/job-sheet-types.js.map +1 -1
- package/dist-server/service/job-sheet/job-sheet.js.map +1 -1
- package/dist-server/service/manifest/manifest-mutation.js.map +1 -1
- package/dist-server/service/manifest/manifest-query.js.map +1 -1
- package/dist-server/service/manifest/manifest-type.js.map +1 -1
- package/dist-server/service/manifest/manifest.js.map +1 -1
- package/dist-server/service/order-inventory/order-inventory-mutation.js.map +1 -1
- package/dist-server/service/order-inventory/order-inventory-query.js +2 -1
- package/dist-server/service/order-inventory/order-inventory-query.js.map +1 -1
- package/dist-server/service/order-inventory/order-inventory-types.js +18 -10
- package/dist-server/service/order-inventory/order-inventory-types.js.map +1 -1
- package/dist-server/service/order-inventory/order-inventory.js +12 -3
- package/dist-server/service/order-inventory/order-inventory.js.map +1 -1
- package/dist-server/service/order-product/order-product-mutation.js.map +1 -1
- package/dist-server/service/order-product/order-product-query.js +1 -0
- package/dist-server/service/order-product/order-product-query.js.map +1 -1
- package/dist-server/service/order-product/order-product-types.js +18 -10
- package/dist-server/service/order-product/order-product-types.js.map +1 -1
- package/dist-server/service/order-product/order-product.js.map +1 -1
- package/dist-server/service/order-tote/order-tote-mutation.js.map +1 -1
- package/dist-server/service/order-tote/order-tote-query.js.map +1 -1
- package/dist-server/service/order-tote/order-tote-types.js.map +1 -1
- package/dist-server/service/order-tote/order-tote.js.map +1 -1
- 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.map +1 -1
- 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.map +1 -1
- 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.map +1 -1
- 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.map +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.map +1 -1
- package/dist-server/service/order-vas/order-vas-types.js.map +1 -1
- package/dist-server/service/order-vas/order-vas.js +9 -3
- package/dist-server/service/order-vas/order-vas.js.map +1 -1
- package/dist-server/service/others/other-query.js +17 -21
- package/dist-server/service/others/other-query.js.map +1 -1
- package/dist-server/service/others/other-types.js +4 -0
- package/dist-server/service/others/other-types.js.map +1 -1
- package/dist-server/service/purchase-order/purchase-order-mutation.js +10 -2
- package/dist-server/service/purchase-order/purchase-order-mutation.js.map +1 -1
- package/dist-server/service/purchase-order/purchase-order-query.js +1 -0
- package/dist-server/service/purchase-order/purchase-order-query.js.map +1 -1
- package/dist-server/service/purchase-order/purchase-order-types.js.map +1 -1
- 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.map +1 -1
- 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-types.js.map +1 -1
- 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 +187 -49
- package/dist-server/service/release-good/release-good-mutation.js.map +1 -1
- package/dist-server/service/release-good/release-good-query.js +4 -6
- package/dist-server/service/release-good/release-good-query.js.map +1 -1
- package/dist-server/service/release-good/release-good-types.js +8 -4
- package/dist-server/service/release-good/release-good-types.js.map +1 -1
- package/dist-server/service/release-good/release-good.js +5 -0
- package/dist-server/service/release-good/release-good.js.map +1 -1
- package/dist-server/service/retail-replenishment-order/retail-replenishment-order-mutation.js.map +1 -1
- 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.map +1 -1
- package/dist-server/service/retail-replenishment-order/retail-replenishment-order.js.map +1 -1
- package/dist-server/service/return-order/return-order-mutation.js +2 -0
- package/dist-server/service/return-order/return-order-mutation.js.map +1 -1
- package/dist-server/service/return-order/return-order-query.js.map +1 -1
- package/dist-server/service/return-order/return-order-types.js.map +1 -1
- package/dist-server/service/return-order/return-order.js.map +1 -1
- 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.map +1 -1
- 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.map +1 -1
- 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.map +1 -1
- 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 +8 -3
- 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.map +1 -1
- package/dist-server/service/shipping-order/shipping-order-query.js.map +1 -1
- package/dist-server/service/shipping-order/shipping-order-types.js.map +1 -1
- package/dist-server/service/shipping-order/shipping-order.js.map +1 -1
- package/dist-server/service/transfer-order/transfer-order-mutation.js.map +1 -1
- package/dist-server/service/transfer-order/transfer-order-query.js.map +1 -1
- package/dist-server/service/transfer-order/transfer-order-types.js.map +1 -1
- package/dist-server/service/transfer-order/transfer-order.js.map +1 -1
- package/dist-server/service/vas/vas-mutation.js.map +1 -1
- package/dist-server/service/vas/vas-query.js.map +1 -1
- package/dist-server/service/vas/vas-types.js.map +1 -1
- package/dist-server/service/vas/vas.js.map +1 -1
- package/dist-server/service/vas-order/vas-order-mutation.js.map +1 -1
- package/dist-server/service/vas-order/vas-order-query.js.map +1 -1
- package/dist-server/service/vas-order/vas-order-types.js.map +1 -1
- package/dist-server/service/vas-order/vas-order.js.map +1 -1
- package/dist-server/utils/inventory-util.js +33 -102
- package/dist-server/utils/inventory-util.js.map +1 -1
- package/package.json +4 -4
- package/server/service/arrival-notice/arrival-notice-mutation.ts +6 -3
- package/server/service/arrival-notice/arrival-notice.ts +4 -0
- package/server/service/draft-release-good/draft-release-good-mutation.ts +10 -12
- package/server/service/draft-release-good/draft-release-good-query.ts +5 -5
- package/server/service/draft-release-good/draft-release-good.ts +4 -0
- package/server/service/invoice-product/invoice-product.ts +5 -1
- package/server/service/order-inventory/order-inventory-query.ts +2 -0
- package/server/service/order-inventory/order-inventory-types.ts +6 -0
- package/server/service/order-inventory/order-inventory.ts +8 -1
- package/server/service/order-product/order-product-query.ts +1 -0
- package/server/service/order-product/order-product-types.ts +6 -0
- package/server/service/order-vas/order-vas.ts +6 -1
- package/server/service/others/other-query.ts +30 -31
- package/server/service/others/other-types.ts +3 -0
- package/server/service/purchase-order/purchase-order-mutation.ts +10 -1
- package/server/service/purchase-order/purchase-order-query.ts +1 -0
- package/server/service/release-good/release-good-mutation.ts +221 -50
- package/server/service/release-good/release-good-query.ts +4 -7
- package/server/service/release-good/release-good-types.ts +4 -3
- package/server/service/release-good/release-good.ts +8 -6
- package/server/service/return-order/return-order-mutation.ts +3 -1
- package/server/service/return-order/return-order-types.ts +1 -0
- package/server/service/reverse-kitting-order-inventory/reverse-kitting-order-inventory.ts +5 -1
- package/server/utils/inventory-util.ts +67 -147
|
@@ -3,7 +3,7 @@ import { Arg, Ctx, Directive, Mutation, Resolver } from 'type-graphql'
|
|
|
3
3
|
import { EntityManager, getConnection, getRepository, In, Not, Repository } from 'typeorm'
|
|
4
4
|
|
|
5
5
|
import { Attachment, createAttachments } from '@things-factory/attachment-base'
|
|
6
|
-
import { Partner, Role, User } from '@things-factory/auth-base'
|
|
6
|
+
import { ApplicationType, Partner, Role, User } from '@things-factory/auth-base'
|
|
7
7
|
import {
|
|
8
8
|
Bizplace,
|
|
9
9
|
getDomainUsers,
|
|
@@ -14,10 +14,9 @@ import {
|
|
|
14
14
|
import { generateId } from '@things-factory/id-rule-base'
|
|
15
15
|
import { MarketplaceStore } from '@things-factory/integration-marketplace'
|
|
16
16
|
import { Sellercraft, SellercraftStatus } from '@things-factory/integration-sellercraft'
|
|
17
|
-
import { Sftp } from '@things-factory/integration-sftp'
|
|
18
17
|
import { MarketplaceOrder, MarketplaceProductVariation } from '@things-factory/marketplace-base'
|
|
19
18
|
// import { sendNotification } from '@things-factory/notification'
|
|
20
|
-
import { Product, ProductBundleSetting } from '@things-factory/product-base'
|
|
19
|
+
import { Product, ProductBundleSetting, ProductDetail } from '@things-factory/product-base'
|
|
21
20
|
import { PartnerSetting, Setting } from '@things-factory/setting-base'
|
|
22
21
|
import { Domain } from '@things-factory/shell'
|
|
23
22
|
import { Inventory } from '@things-factory/warehouse-base'
|
|
@@ -485,20 +484,18 @@ export async function generateReleaseGoodFunction(
|
|
|
485
484
|
await InventoryUtil.validateWarehousePartnersProductsQuantity(domain, bizplace, orderInventories, context, tx)
|
|
486
485
|
/** End Validate Release Order Product Quantity Section */
|
|
487
486
|
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
487
|
+
const orderSource: string = releaseGood.source
|
|
488
|
+
switch (orderSource) {
|
|
489
|
+
case ApplicationType.SELLERCRAFT:
|
|
490
|
+
const sellercraft: Sellercraft = await tx
|
|
491
|
+
.getRepository(Sellercraft)
|
|
492
|
+
.findOne({ domain: bizplace.domain, status: SellercraftStatus.ACTIVE })
|
|
492
493
|
|
|
493
|
-
let customerAvailableSftp: Sftp = await tx.getRepository(Sftp).findOne({
|
|
494
|
-
where: { domain: bizplace.domain }
|
|
495
|
-
})
|
|
496
|
-
|
|
497
|
-
if (sellercraft) {
|
|
498
494
|
const sellercraftCtrl: SellercraftController = new SellercraftController(tx, domain, user)
|
|
499
495
|
await sellercraftCtrl.checkExistingReleaseGood(sellercraft, releaseGood)
|
|
500
|
-
|
|
501
|
-
|
|
496
|
+
break
|
|
497
|
+
|
|
498
|
+
case ApplicationType.MMS:
|
|
502
499
|
const refNo: string = releaseGood.refNo
|
|
503
500
|
const foundReleaseGood: ReleaseGood = await tx.getRepository(ReleaseGood).findOne({
|
|
504
501
|
where: {
|
|
@@ -532,9 +529,62 @@ export async function generateReleaseGoodFunction(
|
|
|
532
529
|
throw new Error('Existing release order found')
|
|
533
530
|
}
|
|
534
531
|
}
|
|
535
|
-
|
|
532
|
+
break
|
|
533
|
+
|
|
534
|
+
default:
|
|
535
|
+
break
|
|
536
536
|
}
|
|
537
537
|
|
|
538
|
+
// if (releaseGood.type == 'b2c') {
|
|
539
|
+
// const sellercraft: Sellercraft = await tx
|
|
540
|
+
// .getRepository(Sellercraft)
|
|
541
|
+
// .findOne({ domain: bizplace.domain, status: SellercraftStatus.ACTIVE })
|
|
542
|
+
|
|
543
|
+
// let customerAvailableSftp: Sftp = await tx.getRepository(Sftp).findOne({
|
|
544
|
+
// where: { domain: bizplace.domain }
|
|
545
|
+
// })
|
|
546
|
+
|
|
547
|
+
// if (sellercraft) {
|
|
548
|
+
// const sellercraftCtrl: SellercraftController = new SellercraftController(tx, domain, user)
|
|
549
|
+
// await sellercraftCtrl.checkExistingReleaseGood(sellercraft, releaseGood)
|
|
550
|
+
// } else if (customerAvailableSftp) {
|
|
551
|
+
// } else {
|
|
552
|
+
// const refNo: string = releaseGood.refNo
|
|
553
|
+
// const foundReleaseGood: ReleaseGood = await tx.getRepository(ReleaseGood).findOne({
|
|
554
|
+
// where: {
|
|
555
|
+
// domain: warehouseDomain,
|
|
556
|
+
// refNo,
|
|
557
|
+
// status: Not(In([ORDER_STATUS.CANCELLED, ORDER_STATUS.PENDING_CANCEL]))
|
|
558
|
+
// },
|
|
559
|
+
// relations: ['bizplace', 'bizplace.domain', 'bizplace.company', 'bizplace.company.domain']
|
|
560
|
+
// })
|
|
561
|
+
|
|
562
|
+
// if (foundReleaseGood) {
|
|
563
|
+
// const customerCompanyDomain: Domain = foundReleaseGood.bizplace.company.domain
|
|
564
|
+
// const marketplaceOrder: MarketplaceOrder = await tx.getRepository(MarketplaceOrder).findOne({
|
|
565
|
+
// where: { orderNo: refNo, domain: customerCompanyDomain }
|
|
566
|
+
// })
|
|
567
|
+
|
|
568
|
+
// // Need to restructure the validation
|
|
569
|
+
// if (marketplaceOrder?.isSplitted) {
|
|
570
|
+
// const refNo2: string = releaseGood.refNo2
|
|
571
|
+
// const foundSplittedReleaseGood = await tx.getRepository(ReleaseGood).findOne({
|
|
572
|
+
// where: {
|
|
573
|
+
// domain: warehouseDomain,
|
|
574
|
+
// refNo2,
|
|
575
|
+
// status: Not(In([ORDER_STATUS.CANCELLED, ORDER_STATUS.PENDING_CANCEL]))
|
|
576
|
+
// },
|
|
577
|
+
// relations: ['bizplace', 'bizplace.domain', 'bizplace.company', 'bizplace.company.domain']
|
|
578
|
+
// })
|
|
579
|
+
|
|
580
|
+
// if (foundSplittedReleaseGood) throw new Error('Existing release order found')
|
|
581
|
+
// } else {
|
|
582
|
+
// throw new Error('Existing release order found')
|
|
583
|
+
// }
|
|
584
|
+
// }
|
|
585
|
+
// }
|
|
586
|
+
// }
|
|
587
|
+
|
|
538
588
|
let newReleaseGood: ReleaseGood = new ReleaseGood()
|
|
539
589
|
|
|
540
590
|
/** Generate Shipping Order */
|
|
@@ -672,7 +722,7 @@ export async function generateReleaseGoodFunction(
|
|
|
672
722
|
|
|
673
723
|
const pbSettings: ProductBundleSetting[] = await tx.getRepository(ProductBundleSetting).find({
|
|
674
724
|
where: { productBundle: oi.product.id },
|
|
675
|
-
relations: ['product', 'productBundle']
|
|
725
|
+
relations: ['product', 'productBundle', 'productDetail']
|
|
676
726
|
})
|
|
677
727
|
|
|
678
728
|
pbSettings.forEach(pbs => {
|
|
@@ -686,6 +736,9 @@ export async function generateReleaseGoodFunction(
|
|
|
686
736
|
id: pbs.product.id,
|
|
687
737
|
name: pbs.product.name,
|
|
688
738
|
groupType: PRODUCT_GROUP_TYPE.SINGLE
|
|
739
|
+
},
|
|
740
|
+
productDetail: {
|
|
741
|
+
id: pbs.productDetail.id
|
|
689
742
|
}
|
|
690
743
|
}
|
|
691
744
|
splitBundleOIs.push(splitOI)
|
|
@@ -700,6 +753,10 @@ export async function generateReleaseGoodFunction(
|
|
|
700
753
|
newReleaseGood = await tx.getRepository(ReleaseGood).save(newReleaseGood)
|
|
701
754
|
|
|
702
755
|
for (let oi of orderInventories) {
|
|
756
|
+
let productDetail: any = await tx
|
|
757
|
+
.getRepository(ProductDetail)
|
|
758
|
+
.findOne(oi.productDetail.id, { relations: ['product'] })
|
|
759
|
+
|
|
703
760
|
let newOrderInv: OrderInventory = Object.assign({}, oi)
|
|
704
761
|
newOrderInv = {
|
|
705
762
|
...newOrderInv,
|
|
@@ -708,7 +765,8 @@ export async function generateReleaseGoodFunction(
|
|
|
708
765
|
status: ORDER_INVENTORY_STATUS.PENDING,
|
|
709
766
|
name: OrderNoGenerator.orderInventory(),
|
|
710
767
|
releaseGood: newReleaseGood,
|
|
711
|
-
product:
|
|
768
|
+
product: productDetail.product,
|
|
769
|
+
productDetail,
|
|
712
770
|
creator: user,
|
|
713
771
|
updater: user
|
|
714
772
|
}
|
|
@@ -746,9 +804,9 @@ export async function generateReleaseGoodFunction(
|
|
|
746
804
|
}
|
|
747
805
|
|
|
748
806
|
let assignedOrderInventories: OrderInventory[] = await InventoryUtil.autoAssignInventoryForRelease(
|
|
749
|
-
newOrderInv.product,
|
|
750
807
|
oi,
|
|
751
|
-
|
|
808
|
+
productDetail.product,
|
|
809
|
+
productDetail,
|
|
752
810
|
locationSortingRules,
|
|
753
811
|
bizplace,
|
|
754
812
|
warehouseDomain,
|
|
@@ -887,16 +945,28 @@ export async function confirmReleaseGood(name: string, context: any, tx?: Entity
|
|
|
887
945
|
let foundOVs: OrderVas[] = foundReleaseGood.orderVass
|
|
888
946
|
let customerBizplace: Bizplace = foundReleaseGood.bizplace
|
|
889
947
|
const companyDomain: Domain = customerBizplace?.company.domain
|
|
890
|
-
const sellercraft: Sellercraft = await tx.getRepository(Sellercraft).findOne({
|
|
891
|
-
where: { domain: foundReleaseGood.bizplace.domain, status: SellercraftStatus.ACTIVE },
|
|
892
|
-
relations: ['domain']
|
|
893
|
-
})
|
|
894
948
|
|
|
895
|
-
|
|
896
|
-
|
|
949
|
+
const orderSource: string = foundReleaseGood.source
|
|
950
|
+
switch (orderSource) {
|
|
951
|
+
case ApplicationType.SELLERCRAFT:
|
|
952
|
+
const sellercraft: Sellercraft = await tx.getRepository(Sellercraft).findOne({
|
|
953
|
+
where: { domain: foundReleaseGood.bizplace.domain, status: SellercraftStatus.ACTIVE },
|
|
954
|
+
relations: ['domain']
|
|
955
|
+
})
|
|
956
|
+
|
|
897
957
|
const sellercraftCtrl: SellercraftController = new SellercraftController(tx, domain, user)
|
|
898
|
-
|
|
899
|
-
|
|
958
|
+
if (foundReleaseGood.type == 'b2c') {
|
|
959
|
+
foundReleaseGood = await sellercraftCtrl.packOrder(sellercraft, {
|
|
960
|
+
...foundReleaseGood,
|
|
961
|
+
orderProducts: foundOPs
|
|
962
|
+
})
|
|
963
|
+
} else if (foundReleaseGood.type == 'b2b') {
|
|
964
|
+
await sellercraftCtrl.updateSellercraftStock(sellercraft, foundOPs, 'CONFIRM_ORDER')
|
|
965
|
+
}
|
|
966
|
+
|
|
967
|
+
break
|
|
968
|
+
|
|
969
|
+
case ApplicationType.MMS:
|
|
900
970
|
// find for any existing marketplace store connections
|
|
901
971
|
let marketplaceStores: MarketplaceStore[] = await tx.getRepository(MarketplaceStore).find({
|
|
902
972
|
where: { domain: companyDomain, status: 'ACTIVE' },
|
|
@@ -959,16 +1029,94 @@ export async function confirmReleaseGood(name: string, context: any, tx?: Entity
|
|
|
959
1029
|
const ecommerceCtrl: EcommerceController = new EcommerceController(tx, domain, user)
|
|
960
1030
|
await ecommerceCtrl.updateProductVariationStock(marketplaceStores, productIds, companyDomain)
|
|
961
1031
|
}
|
|
962
|
-
|
|
963
|
-
}
|
|
1032
|
+
break
|
|
964
1033
|
|
|
965
|
-
|
|
966
|
-
|
|
967
|
-
const sellercraftCtrl: SellercraftController = new SellercraftController(tx, domain, user)
|
|
968
|
-
await sellercraftCtrl.updateSellercraftStock(sellercraft, foundOPs, 'CONFIRM_ORDER')
|
|
969
|
-
}
|
|
1034
|
+
default:
|
|
1035
|
+
break
|
|
970
1036
|
}
|
|
971
1037
|
|
|
1038
|
+
// const sellercraft: Sellercraft = await tx.getRepository(Sellercraft).findOne({
|
|
1039
|
+
// where: { domain: foundReleaseGood.bizplace.domain, status: SellercraftStatus.ACTIVE },
|
|
1040
|
+
// relations: ['domain']
|
|
1041
|
+
// })
|
|
1042
|
+
|
|
1043
|
+
// if (foundReleaseGood.type == 'b2c') {
|
|
1044
|
+
// if (sellercraft) {
|
|
1045
|
+
// const sellercraftCtrl: SellercraftController = new SellercraftController(tx, domain, user)
|
|
1046
|
+
// foundReleaseGood = await sellercraftCtrl.packOrder(sellercraft, { ...foundReleaseGood, orderProducts: foundOPs })
|
|
1047
|
+
// } else {
|
|
1048
|
+
// // find for any existing marketplace store connections
|
|
1049
|
+
// let marketplaceStores: MarketplaceStore[] = await tx.getRepository(MarketplaceStore).find({
|
|
1050
|
+
// where: { domain: companyDomain, status: 'ACTIVE' },
|
|
1051
|
+
// relations: ['marketplaceDistributors']
|
|
1052
|
+
// })
|
|
1053
|
+
|
|
1054
|
+
// const foundMarketplaceOrder: MarketplaceOrder = await tx.getRepository(MarketplaceOrder).findOne({
|
|
1055
|
+
// where: { domain: companyDomain, orderNo: foundReleaseGood.refNo },
|
|
1056
|
+
// relations: ['marketplaceStore']
|
|
1057
|
+
// })
|
|
1058
|
+
|
|
1059
|
+
// let matchedMarketplaceStore: MarketplaceStore
|
|
1060
|
+
// if (foundMarketplaceOrder) {
|
|
1061
|
+
// matchedMarketplaceStore = marketplaceStores.filter(
|
|
1062
|
+
// marketplaceStore => marketplaceStore.id == foundMarketplaceOrder.marketplaceStore.id
|
|
1063
|
+
// )[0]
|
|
1064
|
+
// }
|
|
1065
|
+
|
|
1066
|
+
// let combinedOrderInventories: any[] = foundOIs.map(oi => {
|
|
1067
|
+
// return {
|
|
1068
|
+
// sku: oi.product.sku,
|
|
1069
|
+
// releaseQty: oi.releaseQty
|
|
1070
|
+
// }
|
|
1071
|
+
// })
|
|
1072
|
+
|
|
1073
|
+
// if (foundBundleInfo?.length) {
|
|
1074
|
+
// foundBundleInfo.map(bundle => {
|
|
1075
|
+
// combinedOrderInventories.push({
|
|
1076
|
+
// sku: bundle.sku,
|
|
1077
|
+
// releaseQty: bundle.releaseQty
|
|
1078
|
+
// })
|
|
1079
|
+
// })
|
|
1080
|
+
// }
|
|
1081
|
+
|
|
1082
|
+
// for (let oi of combinedOrderInventories) {
|
|
1083
|
+
// let foundMarketplaceProductVariations: MarketplaceProductVariation[] = await tx
|
|
1084
|
+
// .getRepository(MarketplaceProductVariation)
|
|
1085
|
+
// .find({
|
|
1086
|
+
// where: { domain: companyDomain, sku: oi.sku },
|
|
1087
|
+
// relations: ['marketplaceProduct', 'marketplaceProduct.marketplaceStore']
|
|
1088
|
+
// })
|
|
1089
|
+
|
|
1090
|
+
// if (foundMarketplaceProductVariations) {
|
|
1091
|
+
// await Promise.all(
|
|
1092
|
+
// foundMarketplaceProductVariations.map(async variation => {
|
|
1093
|
+
// if (variation.marketplaceProduct.marketplaceStore.reserveEnabled) {
|
|
1094
|
+
// variation.reserveQty -= oi.releaseQty
|
|
1095
|
+
// }
|
|
1096
|
+
|
|
1097
|
+
// await tx.getRepository(MarketplaceProductVariation).save(variation)
|
|
1098
|
+
// })
|
|
1099
|
+
// )
|
|
1100
|
+
// }
|
|
1101
|
+
// }
|
|
1102
|
+
|
|
1103
|
+
// if (marketplaceStores?.length && marketplaceStores.some(store => store.isAutoUpdateStockQty)) {
|
|
1104
|
+
// marketplaceStores = marketplaceStores.filter(marketplaceStore => marketplaceStore.isAutoUpdateStockQty)
|
|
1105
|
+
// let productIds: string[] = foundOIs.map(oi => oi.product.id)
|
|
1106
|
+
// productIds = Array.from(new Set([...productIds]))
|
|
1107
|
+
// const ecommerceCtrl: EcommerceController = new EcommerceController(tx, domain, user)
|
|
1108
|
+
// await ecommerceCtrl.updateProductVariationStock(marketplaceStores, productIds, companyDomain)
|
|
1109
|
+
// }
|
|
1110
|
+
// }
|
|
1111
|
+
// }
|
|
1112
|
+
|
|
1113
|
+
// if (foundReleaseGood.type == 'b2b') {
|
|
1114
|
+
// if (sellercraft) {
|
|
1115
|
+
// const sellercraftCtrl: SellercraftController = new SellercraftController(tx, domain, user)
|
|
1116
|
+
// await sellercraftCtrl.updateSellercraftStock(sellercraft, foundOPs, 'CONFIRM_ORDER')
|
|
1117
|
+
// }
|
|
1118
|
+
// }
|
|
1119
|
+
|
|
972
1120
|
// 1. RO Status change (PENDING => PENDING_RECEIVE)
|
|
973
1121
|
const releaseGood: ReleaseGood = await tx.getRepository(ReleaseGood).save({
|
|
974
1122
|
...foundReleaseGood,
|
|
@@ -1183,15 +1331,32 @@ export async function rejectReleaseGood(
|
|
|
1183
1331
|
}
|
|
1184
1332
|
|
|
1185
1333
|
if (foundOPs && foundOPs.length) {
|
|
1186
|
-
const
|
|
1187
|
-
|
|
1188
|
-
|
|
1334
|
+
const orderSource: string = releaseGood.source
|
|
1335
|
+
switch (orderSource) {
|
|
1336
|
+
case ApplicationType.SELLERCRAFT:
|
|
1337
|
+
const sellercraft: Sellercraft = await tx
|
|
1338
|
+
.getRepository(Sellercraft)
|
|
1339
|
+
.findOne({ domain: releaseGood.bizplace.domain, status: SellercraftStatus.ACTIVE })
|
|
1340
|
+
|
|
1341
|
+
if (sellercraft) {
|
|
1342
|
+
const sellercraftCtrl: SellercraftController = new SellercraftController(tx, domain, user)
|
|
1343
|
+
await sellercraftCtrl.updateSellercraftStock(sellercraft, foundOPs, 'REJECT_ORDER')
|
|
1344
|
+
}
|
|
1345
|
+
break
|
|
1189
1346
|
|
|
1190
|
-
|
|
1191
|
-
|
|
1192
|
-
await sellercraftCtrl.updateSellercraftStock(sellercraft, foundOPs, 'REJECT_ORDER')
|
|
1347
|
+
default:
|
|
1348
|
+
break
|
|
1193
1349
|
}
|
|
1194
1350
|
|
|
1351
|
+
// const sellercraft: Sellercraft = await tx
|
|
1352
|
+
// .getRepository(Sellercraft)
|
|
1353
|
+
// .findOne({ domain: releaseGood.bizplace.domain, status: SellercraftStatus.ACTIVE })
|
|
1354
|
+
|
|
1355
|
+
// if (sellercraft) {
|
|
1356
|
+
// const sellercraftCtrl: SellercraftController = new SellercraftController(tx, domain, user)
|
|
1357
|
+
// await sellercraftCtrl.updateSellercraftStock(sellercraft, foundOPs, 'REJECT_ORDER')
|
|
1358
|
+
// }
|
|
1359
|
+
|
|
1195
1360
|
await tx.getRepository(OrderProduct).save(
|
|
1196
1361
|
await Promise.all(
|
|
1197
1362
|
foundOPs.map(async (op: OrderProduct) => {
|
|
@@ -1288,6 +1453,7 @@ export async function bulkGenerateReleaseGood(
|
|
|
1288
1453
|
phone1: releaseGood?.phone1 || null,
|
|
1289
1454
|
phone2: releaseGood?.phone2 || null,
|
|
1290
1455
|
email: releaseGood?.email || null,
|
|
1456
|
+
source: releaseGood?.source || null,
|
|
1291
1457
|
airwayBill: releaseGood?.airwayBill,
|
|
1292
1458
|
refNo: releaseGood.refNo,
|
|
1293
1459
|
refNo2: releaseGood.refNo2,
|
|
@@ -1296,8 +1462,8 @@ export async function bulkGenerateReleaseGood(
|
|
|
1296
1462
|
ownTransport: releaseGood?.ownTransport || false,
|
|
1297
1463
|
orderMethod: ORDER_METHOD.SELECT_BY_PRODUCT,
|
|
1298
1464
|
status: ORDER_STATUS.PENDING,
|
|
1299
|
-
creator: user,
|
|
1300
|
-
updater: user
|
|
1465
|
+
creator: releaseGood?.creator || user,
|
|
1466
|
+
updater: releaseGood?.updater || user
|
|
1301
1467
|
}
|
|
1302
1468
|
|
|
1303
1469
|
newReleaseGood = await tx.getRepository(ReleaseGood).save(newReleaseGood)
|
|
@@ -1339,12 +1505,17 @@ export async function bulkGenerateReleaseGood(
|
|
|
1339
1505
|
}
|
|
1340
1506
|
}
|
|
1341
1507
|
|
|
1342
|
-
|
|
1508
|
+
let productDetail = oi.orderProduct?.productDetail
|
|
1509
|
+
let product = oi.orderProduct?.product
|
|
1510
|
+
if (!productDetail) {
|
|
1511
|
+
productDetail = await tx.getRepository(ProductDetail).findOne(oi.productDetailId, { relations: ['product'] })
|
|
1512
|
+
product = productDetail.product
|
|
1513
|
+
}
|
|
1343
1514
|
|
|
1344
1515
|
let assignedResult = await InventoryUtil.autoAssignInventoryForRelease(
|
|
1345
|
-
product,
|
|
1346
1516
|
oi,
|
|
1347
|
-
|
|
1517
|
+
product,
|
|
1518
|
+
productDetail,
|
|
1348
1519
|
locationSortingRules,
|
|
1349
1520
|
bizplace,
|
|
1350
1521
|
warehouseDomain,
|
|
@@ -1370,8 +1541,8 @@ export async function bulkGenerateReleaseGood(
|
|
|
1370
1541
|
status: ORDER_INVENTORY_STATUS.PENDING,
|
|
1371
1542
|
name: OrderNoGenerator.orderInventory(),
|
|
1372
1543
|
releaseGood: newReleaseGood,
|
|
1373
|
-
creator: user,
|
|
1374
|
-
updater: user
|
|
1544
|
+
creator: newReleaseGood?.creator || user,
|
|
1545
|
+
updater: newReleaseGood?.updater || user
|
|
1375
1546
|
}
|
|
1376
1547
|
|
|
1377
1548
|
let newOrderProduct: Partial<OrderProduct>
|
|
@@ -1393,8 +1564,8 @@ export async function bulkGenerateReleaseGood(
|
|
|
1393
1564
|
actualPalletQty: 0,
|
|
1394
1565
|
status: ORDER_PRODUCT_STATUS.ASSIGNED,
|
|
1395
1566
|
releaseGood: newReleaseGood,
|
|
1396
|
-
creator: user,
|
|
1397
|
-
updater: user
|
|
1567
|
+
creator: newReleaseGood?.creator || user,
|
|
1568
|
+
updater: newReleaseGood?.updater || user
|
|
1398
1569
|
}
|
|
1399
1570
|
|
|
1400
1571
|
newOrderProduct = await tx.getRepository(OrderProduct).save(newOrderProduct)
|
|
@@ -1403,7 +1574,7 @@ export async function bulkGenerateReleaseGood(
|
|
|
1403
1574
|
...oi.orderProduct,
|
|
1404
1575
|
totalUomValue: `${oi.orderProduct.releaseUomValue} ${oi.orderProduct.uom}`,
|
|
1405
1576
|
status: ORDER_PRODUCT_STATUS.ASSIGNED,
|
|
1406
|
-
updater: user
|
|
1577
|
+
updater: newReleaseGood?.updater || user
|
|
1407
1578
|
})
|
|
1408
1579
|
}
|
|
1409
1580
|
|
|
@@ -196,6 +196,7 @@ export class ReleaseGoodQuery {
|
|
|
196
196
|
.createQueryBuilder('oi')
|
|
197
197
|
.leftJoinAndSelect('oi.inventory', 'inventory')
|
|
198
198
|
.leftJoinAndSelect('oi.product', 'product')
|
|
199
|
+
.leftJoinAndSelect('oi.productDetail', 'productDetail')
|
|
199
200
|
.leftJoinAndSelect('inventory.location', 'location')
|
|
200
201
|
.where('oi.domain_id = :domainId', { domainId: domain.id })
|
|
201
202
|
.andWhere('oi.release_good_id = :releaseGoodId', { releaseGoodId: releaseGood.id })
|
|
@@ -226,6 +227,7 @@ export class ReleaseGoodQuery {
|
|
|
226
227
|
batchIdRef: inventory.batchIdRef,
|
|
227
228
|
palletId: inventory.palletId,
|
|
228
229
|
product: orderInv.product,
|
|
230
|
+
productDetail: orderInv.productDetail,
|
|
229
231
|
productIdRef: orderInv.product.id,
|
|
230
232
|
productName: `${orderInv.product.name} (${orderInv.product.description})`,
|
|
231
233
|
packingType: orderInv.packingType,
|
|
@@ -375,10 +377,7 @@ export class ReleaseGoodQuery {
|
|
|
375
377
|
params.filters.push({
|
|
376
378
|
name: typeFilter == 'b2c' ? 'releaseDate' : 'createdAt',
|
|
377
379
|
operator: 'gte',
|
|
378
|
-
value:
|
|
379
|
-
typeFilter == 'b2c'
|
|
380
|
-
? releaseDateFrom
|
|
381
|
-
: fromDateVal.toISOString(),
|
|
380
|
+
value: typeFilter == 'b2c' ? releaseDateFrom : fromDateVal.toISOString(),
|
|
382
381
|
relation: false
|
|
383
382
|
})
|
|
384
383
|
}
|
|
@@ -393,9 +392,7 @@ export class ReleaseGoodQuery {
|
|
|
393
392
|
name: typeFilter == 'b2c' ? 'releaseDate' : 'createdAt',
|
|
394
393
|
operator: typeFilter == 'b2c' ? 'lte' : 'lt',
|
|
395
394
|
value:
|
|
396
|
-
typeFilter == 'b2c'
|
|
397
|
-
? releaseDateTo
|
|
398
|
-
: new Date(toDateVal.setDate(toDateVal.getDate() + 1)).toISOString(),
|
|
395
|
+
typeFilter == 'b2c' ? releaseDateTo : new Date(toDateVal.setDate(toDateVal.getDate() + 1)).toISOString(),
|
|
399
396
|
relation: false
|
|
400
397
|
})
|
|
401
398
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Field, Float, InputType, Int, ObjectType } from 'type-graphql'
|
|
2
2
|
|
|
3
|
-
import { Product } from '@things-factory/product-base'
|
|
3
|
+
import { Product, ProductDetail } from '@things-factory/product-base'
|
|
4
4
|
import { ObjectRef } from '@things-factory/shell'
|
|
5
5
|
import { Location } from '@things-factory/warehouse-base'
|
|
6
6
|
|
|
@@ -77,6 +77,9 @@ export class InventoryInfos {
|
|
|
77
77
|
@Field(type => Product, { nullable: true })
|
|
78
78
|
product?: Product
|
|
79
79
|
|
|
80
|
+
@Field(type => ProductDetail, { nullable: true })
|
|
81
|
+
productDetail?: ProductDetail
|
|
82
|
+
|
|
80
83
|
@Field({ nullable: true })
|
|
81
84
|
packingType?: string
|
|
82
85
|
|
|
@@ -185,8 +188,6 @@ export class NewReleaseGood {
|
|
|
185
188
|
@Field({ nullable: true })
|
|
186
189
|
orderMethod: string
|
|
187
190
|
|
|
188
|
-
|
|
189
|
-
|
|
190
191
|
@Field({ nullable: true })
|
|
191
192
|
collectionOrderNo: string
|
|
192
193
|
|
|
@@ -95,8 +95,8 @@ export class ReleaseGood {
|
|
|
95
95
|
DATABASE_TYPE == 'postgres' || DATABASE_TYPE == 'mysql' || DATABASE_TYPE == 'mariadb'
|
|
96
96
|
? 'enum'
|
|
97
97
|
: DATABASE_TYPE == 'oracle'
|
|
98
|
-
|
|
99
|
-
|
|
98
|
+
? 'varchar2'
|
|
99
|
+
: 'smallint',
|
|
100
100
|
enum: ReleaseOrderType,
|
|
101
101
|
default: ReleaseOrderType.B2B
|
|
102
102
|
})
|
|
@@ -167,15 +167,13 @@ export class ReleaseGood {
|
|
|
167
167
|
DATABASE_TYPE == 'postgres' || DATABASE_TYPE == 'mysql' || DATABASE_TYPE == 'mariadb'
|
|
168
168
|
? 'enum'
|
|
169
169
|
: DATABASE_TYPE == 'oracle'
|
|
170
|
-
|
|
171
|
-
|
|
170
|
+
? 'varchar2'
|
|
171
|
+
: 'smallint',
|
|
172
172
|
enum: DispatchmentStatus,
|
|
173
173
|
default: DispatchmentStatus.READY_TO_DISPATCH
|
|
174
174
|
})
|
|
175
175
|
dispatchmentStatus: DispatchmentStatus
|
|
176
176
|
|
|
177
|
-
|
|
178
|
-
|
|
179
177
|
@Column({ nullable: true })
|
|
180
178
|
@Field({ nullable: true })
|
|
181
179
|
refNo: String
|
|
@@ -443,6 +441,10 @@ export class ReleaseGood {
|
|
|
443
441
|
@Field({ nullable: true })
|
|
444
442
|
stopId: string
|
|
445
443
|
|
|
444
|
+
@Column({ nullable: true })
|
|
445
|
+
@Field({ nullable: true })
|
|
446
|
+
source: string
|
|
447
|
+
|
|
446
448
|
@Column({ nullable: true })
|
|
447
449
|
@Field({ nullable: true })
|
|
448
450
|
manifestedAt: Date
|
|
@@ -6,7 +6,7 @@ import { Attachment, createAttachments } from '@things-factory/attachment-base'
|
|
|
6
6
|
import { Role, User } from '@things-factory/auth-base'
|
|
7
7
|
import { Bizplace, getDomainUsers } from '@things-factory/biz-base'
|
|
8
8
|
import { sendNotification } from '@things-factory/notification'
|
|
9
|
-
import { Product } from '@things-factory/product-base'
|
|
9
|
+
import { Product, ProductDetail } from '@things-factory/product-base'
|
|
10
10
|
import { Domain } from '@things-factory/shell'
|
|
11
11
|
import { Inventory } from '@things-factory/warehouse-base'
|
|
12
12
|
|
|
@@ -59,6 +59,7 @@ export class ReturnOrderMutation {
|
|
|
59
59
|
itm =>
|
|
60
60
|
itm.product.id === curr.product.id &&
|
|
61
61
|
itm.packingType === curr.packingType &&
|
|
62
|
+
itm.productDetailId === curr.product.productDetailId &&
|
|
62
63
|
itm.batchId === curr.batchId &&
|
|
63
64
|
itm.packingSize === curr.packingSize
|
|
64
65
|
)
|
|
@@ -99,6 +100,7 @@ export class ReturnOrderMutation {
|
|
|
99
100
|
newOrderInv.name = OrderNoGenerator.orderInventory()
|
|
100
101
|
newOrderInv.returnOrder = createdReturnOrder
|
|
101
102
|
newOrderInv.product = await tx.getRepository(Product).findOne(moi.product.id)
|
|
103
|
+
newOrderInv.productDetail = await tx.getRepository(ProductDetail).findOne(moi.productDetail.id)
|
|
102
104
|
newOrderInv.creator = user
|
|
103
105
|
newOrderInv.updater = user
|
|
104
106
|
|
|
@@ -12,7 +12,7 @@ import {
|
|
|
12
12
|
|
|
13
13
|
import { User } from '@things-factory/auth-base'
|
|
14
14
|
import { Bizplace } from '@things-factory/biz-base'
|
|
15
|
-
import { Product } from '@things-factory/product-base'
|
|
15
|
+
import { Product, ProductDetail } from '@things-factory/product-base'
|
|
16
16
|
import { Domain } from '@things-factory/shell'
|
|
17
17
|
import { Inventory } from '@things-factory/warehouse-base'
|
|
18
18
|
|
|
@@ -127,6 +127,10 @@ export class ReverseKittingOrderInventory {
|
|
|
127
127
|
@Field({ nullable: true })
|
|
128
128
|
updatedAt?: Date
|
|
129
129
|
|
|
130
|
+
@ManyToOne(type => ProductDetail, { nullable: true })
|
|
131
|
+
@Field({ nullable: true })
|
|
132
|
+
productDetail: ProductDetail
|
|
133
|
+
|
|
130
134
|
@ManyToOne(type => User, { nullable: true })
|
|
131
135
|
@Field({ nullable: true })
|
|
132
136
|
creator?: User
|