@things-factory/marketplace-base 8.0.0-beta.9 → 8.0.2
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/tsconfig.tsbuildinfo +1 -1
- package/package.json +7 -7
- package/server/constants/attachment.ts +3 -0
- package/server/constants/index.ts +4 -0
- package/server/constants/order.ts +11 -0
- package/server/constants/platform.ts +7 -0
- package/server/constants/product.ts +5 -0
- package/server/constants/reserve-qty-order-statuses.ts +7 -0
- package/server/controllers/index.ts +0 -0
- package/server/entities/index.ts +45 -0
- package/server/entities/marketplace-order-item.ts +137 -0
- package/server/entities/marketplace-order-shipping-item.ts +55 -0
- package/server/entities/marketplace-order-shipping.ts +168 -0
- package/server/entities/marketplace-order.ts +141 -0
- package/server/entities/marketplace-product-attribute.ts +83 -0
- package/server/entities/marketplace-product-category.ts +53 -0
- package/server/entities/marketplace-product-variation-price.ts +63 -0
- package/server/entities/marketplace-product-variation.ts +147 -0
- package/server/entities/marketplace-product.ts +164 -0
- package/server/entities/marketplace-refund-order-item.ts +56 -0
- package/server/entities/marketplace-refund-order.ts +51 -0
- package/server/entities/marketplace-setting.ts +49 -0
- package/server/entities/store-replenishment-item.ts +48 -0
- package/server/entities/store-replenishment.ts +79 -0
- package/server/graphql/index.ts +9 -0
- package/server/graphql/resolvers/index.ts +14 -0
- package/server/graphql/resolvers/marketplace-order/auto-initialise-logistics-by-batch.ts +164 -0
- package/server/graphql/resolvers/marketplace-order/auto-update-order-ready-to-ship.ts +136 -0
- package/server/graphql/resolvers/marketplace-order/cancel-marketplace-order.ts +64 -0
- package/server/graphql/resolvers/marketplace-order/create-marketplace-order-note.ts +21 -0
- package/server/graphql/resolvers/marketplace-order/dashboard-marketplace-orders.ts +82 -0
- package/server/graphql/resolvers/marketplace-order/dashboard-marketplace-sales-average.ts +82 -0
- package/server/graphql/resolvers/marketplace-order/dashboard-marketplace-sales.ts +93 -0
- package/server/graphql/resolvers/marketplace-order/delete-marketplace-orders.ts +17 -0
- package/server/graphql/resolvers/marketplace-order/generate-marketplace-order.ts +180 -0
- package/server/graphql/resolvers/marketplace-order/get-address-list.ts +9 -0
- package/server/graphql/resolvers/marketplace-order/get-branch-list.ts +9 -0
- package/server/graphql/resolvers/marketplace-order/get-etrax-order-document.ts +49 -0
- package/server/graphql/resolvers/marketplace-order/get-logistics-param.ts +47 -0
- package/server/graphql/resolvers/marketplace-order/get-order-document.ts +149 -0
- package/server/graphql/resolvers/marketplace-order/get-store-logistics.ts +9 -0
- package/server/graphql/resolvers/marketplace-order/get-time-slot.ts +9 -0
- package/server/graphql/resolvers/marketplace-order/index.ts +75 -0
- package/server/graphql/resolvers/marketplace-order/initialise-lazada-logistics-by-batch.ts +165 -0
- package/server/graphql/resolvers/marketplace-order/initialise-logistics-by-batch.ts +41 -0
- package/server/graphql/resolvers/marketplace-order/initialise-logistics.ts +29 -0
- package/server/graphql/resolvers/marketplace-order/initialise-shopee-logistics-by-batch.ts +97 -0
- package/server/graphql/resolvers/marketplace-order/marketplace-order.ts +12 -0
- package/server/graphql/resolvers/marketplace-order/marketplace-orders-for-batch-init.ts +52 -0
- package/server/graphql/resolvers/marketplace-order/marketplace-orders-for-export.ts +63 -0
- package/server/graphql/resolvers/marketplace-order/marketplace-orders.ts +56 -0
- package/server/graphql/resolvers/marketplace-order/set-marketplace-order-delivered.ts +25 -0
- package/server/graphql/resolvers/marketplace-order/set-marketplace-order-failed-delivery.ts +25 -0
- package/server/graphql/resolvers/marketplace-order/set-own-shipping-provider-by-orders.ts +39 -0
- package/server/graphql/resolvers/marketplace-order/split-orders-by-batch.ts +245 -0
- package/server/graphql/resolvers/marketplace-order/sync-all-marketplace-order.ts +39 -0
- package/server/graphql/resolvers/marketplace-order/sync-marketplace-order.ts +940 -0
- package/server/graphql/resolvers/marketplace-order/sync-marketplace-orders-by-platform.ts +31 -0
- package/server/graphql/resolvers/marketplace-order/sync-shopee-awb.ts +49 -0
- package/server/graphql/resolvers/marketplace-order/update-marketplace-order.ts +35 -0
- package/server/graphql/resolvers/marketplace-order/update-order-ready-to-ship.ts +142 -0
- package/server/graphql/resolvers/marketplace-order-item/create-marketplace-order-item.ts +14 -0
- package/server/graphql/resolvers/marketplace-order-item/delete-marketplace-order-item.ts +10 -0
- package/server/graphql/resolvers/marketplace-order-item/delete-marketplace-order-items.ts +17 -0
- package/server/graphql/resolvers/marketplace-order-item/index.ts +22 -0
- package/server/graphql/resolvers/marketplace-order-item/marketplace-order-item.ts +14 -0
- package/server/graphql/resolvers/marketplace-order-item/marketplace-order-items.ts +15 -0
- package/server/graphql/resolvers/marketplace-order-item/update-marketplace-order-item.ts +18 -0
- package/server/graphql/resolvers/marketplace-order-item/update-multiple-marketplace-order-item.ts +44 -0
- package/server/graphql/resolvers/marketplace-order-shipping/create-marketplace-order-shipping.ts +14 -0
- package/server/graphql/resolvers/marketplace-order-shipping/delete-marketplace-order-shipping.ts +10 -0
- package/server/graphql/resolvers/marketplace-order-shipping/delete-marketplace-order-shippings.ts +17 -0
- package/server/graphql/resolvers/marketplace-order-shipping/index.ts +23 -0
- package/server/graphql/resolvers/marketplace-order-shipping/marketplace-order-shipping.ts +25 -0
- package/server/graphql/resolvers/marketplace-order-shipping/marketplace-order-shippings-for-batch-init.ts +88 -0
- package/server/graphql/resolvers/marketplace-order-shipping/marketplace-order-shippings.ts +43 -0
- package/server/graphql/resolvers/marketplace-order-shipping/update-marketplace-order-shipping.ts +32 -0
- package/server/graphql/resolvers/marketplace-order-shipping/update-multiple-marketplace-order-shipping.ts +44 -0
- package/server/graphql/resolvers/marketplace-order-shipping-item/create-marketplace-order-shipping-item.ts +14 -0
- package/server/graphql/resolvers/marketplace-order-shipping-item/delete-marketplace-order-shipping-item.ts +10 -0
- package/server/graphql/resolvers/marketplace-order-shipping-item/delete-marketplace-order-shipping-items.ts +15 -0
- package/server/graphql/resolvers/marketplace-order-shipping-item/index.ts +20 -0
- package/server/graphql/resolvers/marketplace-order-shipping-item/marketplace-order-shipping-item.ts +21 -0
- package/server/graphql/resolvers/marketplace-order-shipping-item/marketplace-order-shipping-items.ts +14 -0
- package/server/graphql/resolvers/marketplace-order-shipping-item/update-marketplace-order-shipping-item.ts +18 -0
- package/server/graphql/resolvers/marketplace-order-shipping-item/update-multiple-marketplace-order-shipping-item.ts +44 -0
- package/server/graphql/resolvers/marketplace-product/create-marketplace-product.ts +35 -0
- package/server/graphql/resolvers/marketplace-product/delete-marketplace-product.ts +10 -0
- package/server/graphql/resolvers/marketplace-product/delete-marketplace-products.ts +17 -0
- package/server/graphql/resolvers/marketplace-product/index.ts +27 -0
- package/server/graphql/resolvers/marketplace-product/marketplace-product.ts +24 -0
- package/server/graphql/resolvers/marketplace-product/marketplace-products.ts +23 -0
- package/server/graphql/resolvers/marketplace-product/sync-all-marketplace-store-products.ts +225 -0
- package/server/graphql/resolvers/marketplace-product/sync-marketplace-store-products.ts +222 -0
- package/server/graphql/resolvers/marketplace-product/update-marketplace-product.ts +24 -0
- package/server/graphql/resolvers/marketplace-product/upsert-marketplace-product.ts +39 -0
- package/server/graphql/resolvers/marketplace-product-attribute/create-marketplace-product-attribute.ts +14 -0
- package/server/graphql/resolvers/marketplace-product-attribute/delete-marketplace-product-attribute.ts +10 -0
- package/server/graphql/resolvers/marketplace-product-attribute/delete-marketplace-product-attributes.ts +17 -0
- package/server/graphql/resolvers/marketplace-product-attribute/index.ts +22 -0
- package/server/graphql/resolvers/marketplace-product-attribute/marketplace-product-attribute.ts +14 -0
- package/server/graphql/resolvers/marketplace-product-attribute/marketplace-product-attributes.ts +14 -0
- package/server/graphql/resolvers/marketplace-product-attribute/update-marketplace-product-attribute.ts +18 -0
- package/server/graphql/resolvers/marketplace-product-attribute/update-multiple-marketplace-product-attribute.ts +44 -0
- package/server/graphql/resolvers/marketplace-product-category/create-marketplace-product-category.ts +14 -0
- package/server/graphql/resolvers/marketplace-product-category/delete-marketplace-product-categories.ts +17 -0
- package/server/graphql/resolvers/marketplace-product-category/delete-marketplace-product-category.ts +10 -0
- package/server/graphql/resolvers/marketplace-product-category/index.ts +22 -0
- package/server/graphql/resolvers/marketplace-product-category/marketplace-product-categories.ts +14 -0
- package/server/graphql/resolvers/marketplace-product-category/marketplace-product-category.ts +14 -0
- package/server/graphql/resolvers/marketplace-product-category/update-marketplace-product-category.ts +18 -0
- package/server/graphql/resolvers/marketplace-product-category/update-multiple-marketplace-product-category.ts +44 -0
- package/server/graphql/resolvers/marketplace-product-variation/create-marketplace-product-variation.ts +14 -0
- package/server/graphql/resolvers/marketplace-product-variation/delete-marketplace-product-variation.ts +10 -0
- package/server/graphql/resolvers/marketplace-product-variation/delete-marketplace-product-variations.ts +17 -0
- package/server/graphql/resolvers/marketplace-product-variation/index.ts +30 -0
- package/server/graphql/resolvers/marketplace-product-variation/link-warehouse-marketplace-product-variations.ts +59 -0
- package/server/graphql/resolvers/marketplace-product-variation/marketplace-product-variation.ts +14 -0
- package/server/graphql/resolvers/marketplace-product-variation/marketplace-product-variations.ts +79 -0
- package/server/graphql/resolvers/marketplace-product-variation/update-marketplace-product-variation.ts +32 -0
- package/server/graphql/resolvers/marketplace-product-variation/update-multiple-marketplace-product-variation-quantity.ts +76 -0
- package/server/graphql/resolvers/marketplace-product-variation/update-multiple-marketplace-product-variations.ts +49 -0
- package/server/graphql/resolvers/marketplace-product-variation-price/create-marketplace-product-variation-price.ts +16 -0
- package/server/graphql/resolvers/marketplace-product-variation-price/delete-marketplace-product-variation-price.ts +13 -0
- package/server/graphql/resolvers/marketplace-product-variation-price/delete-marketplace-product-variation-prices.ts +18 -0
- package/server/graphql/resolvers/marketplace-product-variation-price/index.ts +19 -0
- package/server/graphql/resolvers/marketplace-product-variation-price/marketplace-product-variation-price-query.ts +52 -0
- package/server/graphql/resolvers/marketplace-product-variation-price/update-marketplace-product-variation-price.ts +20 -0
- package/server/graphql/resolvers/marketplace-product-variation-price/update-multiple-marketplace-product-variation-price.ts +49 -0
- package/server/graphql/resolvers/marketplace-refund-order/index.ts +9 -0
- package/server/graphql/resolvers/marketplace-refund-order/sync-all-marketplace-refund-orders.ts +122 -0
- package/server/graphql/resolvers/marketplace-refund-order/sync-marketplace-refund-orders.ts +106 -0
- package/server/graphql/resolvers/marketplace-report/index.ts +7 -0
- package/server/graphql/resolvers/marketplace-report/marketplace-sales-report.ts +143 -0
- package/server/graphql/resolvers/store-replenishment/create-store-replenishment.ts +16 -0
- package/server/graphql/resolvers/store-replenishment/delete-store-replenishment.ts +13 -0
- package/server/graphql/resolvers/store-replenishment/delete-store-replenishments.ts +18 -0
- package/server/graphql/resolvers/store-replenishment/index.ts +19 -0
- package/server/graphql/resolvers/store-replenishment/store-replenishment-query.ts +52 -0
- package/server/graphql/resolvers/store-replenishment/update-multiple-store-replenishment.ts +49 -0
- package/server/graphql/resolvers/store-replenishment/update-store-replenishment.ts +20 -0
- package/server/graphql/resolvers/store-replenishment-item/create-store-replenishment-item.ts +16 -0
- package/server/graphql/resolvers/store-replenishment-item/delete-store-replenishment-item.ts +13 -0
- package/server/graphql/resolvers/store-replenishment-item/delete-store-replenishment-items.ts +18 -0
- package/server/graphql/resolvers/store-replenishment-item/index.ts +19 -0
- package/server/graphql/resolvers/store-replenishment-item/store-replenishment-item-query.ts +52 -0
- package/server/graphql/resolvers/store-replenishment-item/update-multiple-store-replenishment-item.ts +49 -0
- package/server/graphql/resolvers/store-replenishment-item/update-store-replenishment-item.ts +20 -0
- package/server/graphql/types/index.ts +13 -0
- package/server/graphql/types/marketplace-order/dashboard-order.ts +13 -0
- package/server/graphql/types/marketplace-order/full-logistics-detail.ts +10 -0
- package/server/graphql/types/marketplace-order/index.ts +69 -0
- package/server/graphql/types/marketplace-order/logistics-detail.ts +8 -0
- package/server/graphql/types/marketplace-order/logistics-info.ts +27 -0
- package/server/graphql/types/marketplace-order/logistics-init.ts +9 -0
- package/server/graphql/types/marketplace-order/logistics-time.ts +9 -0
- package/server/graphql/types/marketplace-order/logistics.ts +21 -0
- package/server/graphql/types/marketplace-order/marketplace-logistics.ts +11 -0
- package/server/graphql/types/marketplace-order/marketplace-order-export.ts +19 -0
- package/server/graphql/types/marketplace-order/marketplace-order-list.ts +8 -0
- package/server/graphql/types/marketplace-order/marketplace-order-patch.ts +14 -0
- package/server/graphql/types/marketplace-order/marketplace-order.ts +40 -0
- package/server/graphql/types/marketplace-order/new-marketplace-order.ts +22 -0
- package/server/graphql/types/marketplace-order/order-address.ts +16 -0
- package/server/graphql/types/marketplace-order/order-document.ts +13 -0
- package/server/graphql/types/marketplace-order-item/index.ts +21 -0
- package/server/graphql/types/marketplace-order-item/marketplace-order-item-list.ts +8 -0
- package/server/graphql/types/marketplace-order-item/marketplace-order-item-patch.ts +10 -0
- package/server/graphql/types/marketplace-order-item/marketplace-order-item.ts +32 -0
- package/server/graphql/types/marketplace-order-item/new-marketplace-order-item.ts +17 -0
- package/server/graphql/types/marketplace-order-shipping/index.ts +31 -0
- package/server/graphql/types/marketplace-order-shipping/marketplace-order-shipping-list.ts +8 -0
- package/server/graphql/types/marketplace-order-shipping/marketplace-order-shipping-patch.ts +45 -0
- package/server/graphql/types/marketplace-order-shipping/marketplace-order-shipping.ts +59 -0
- package/server/graphql/types/marketplace-order-shipping/new-marketplace-order-shipping.ts +44 -0
- package/server/graphql/types/marketplace-order-shipping-item/index.ts +32 -0
- package/server/graphql/types/marketplace-order-shipping-item/marketplace-order-shipping-item-list.ts +8 -0
- package/server/graphql/types/marketplace-order-shipping-item/marketplace-order-shipping-item-patch.ts +13 -0
- package/server/graphql/types/marketplace-order-shipping-item/marketplace-order-shipping-item.ts +16 -0
- package/server/graphql/types/marketplace-order-shipping-item/new-marketplace-order-shipping-item.ts +12 -0
- package/server/graphql/types/marketplace-product/index.ts +28 -0
- package/server/graphql/types/marketplace-product/marketplace-product-list.ts +8 -0
- package/server/graphql/types/marketplace-product/marketplace-product-patch.ts +24 -0
- package/server/graphql/types/marketplace-product/marketplace-product.ts +30 -0
- package/server/graphql/types/marketplace-product/new-marketplace-product.ts +24 -0
- package/server/graphql/types/marketplace-product-attribute/index.ts +35 -0
- package/server/graphql/types/marketplace-product-attribute/marketplace-product-attribute-list.ts +8 -0
- package/server/graphql/types/marketplace-product-attribute/marketplace-product-attribute-patch.ts +10 -0
- package/server/graphql/types/marketplace-product-attribute/marketplace-product-attribute.ts +20 -0
- package/server/graphql/types/marketplace-product-attribute/new-marketplace-product-attribute.ts +13 -0
- package/server/graphql/types/marketplace-product-category/index.ts +28 -0
- package/server/graphql/types/marketplace-product-category/marketplace-product-category-list.ts +8 -0
- package/server/graphql/types/marketplace-product-category/marketplace-product-category-patch.ts +10 -0
- package/server/graphql/types/marketplace-product-category/marketplace-product-category.ts +17 -0
- package/server/graphql/types/marketplace-product-category/new-marketplace-product-category.ts +10 -0
- package/server/graphql/types/marketplace-product-variation/index.ts +47 -0
- package/server/graphql/types/marketplace-product-variation/marketplace-product-variation-list.ts +8 -0
- package/server/graphql/types/marketplace-product-variation/marketplace-product-variation-patch.ts +32 -0
- package/server/graphql/types/marketplace-product-variation/marketplace-product-variation.ts +35 -0
- package/server/graphql/types/marketplace-product-variation/new-marketplace-product-variation.ts +26 -0
- package/server/graphql/types/marketplace-product-variation/warehouse-product.ts +9 -0
- package/server/graphql/types/marketplace-product-variation-price/index.ts +21 -0
- package/server/graphql/types/marketplace-product-variation-price/marketplace-product-variation-price-list.ts +8 -0
- package/server/graphql/types/marketplace-product-variation-price/marketplace-product-variation-price-patch.ts +17 -0
- package/server/graphql/types/marketplace-product-variation-price/marketplace-product-variation-price.ts +21 -0
- package/server/graphql/types/marketplace-product-variation-price/new-marketplace-product-variation-price.ts +14 -0
- package/server/graphql/types/marketplace-refund-order/index.ts +16 -0
- package/server/graphql/types/marketplace-refund-order/marketplace-refund-order-list.ts +8 -0
- package/server/graphql/types/marketplace-refund-order/marketplace-refund-order.ts +17 -0
- package/server/graphql/types/marketplace-report/index.ts +10 -0
- package/server/graphql/types/marketplace-report/marketplace-sales-report-list.ts +8 -0
- package/server/graphql/types/marketplace-report/marketplace-sales-report.ts +67 -0
- package/server/graphql/types/store-replenishment/index.ts +21 -0
- package/server/graphql/types/store-replenishment/new-store-replenishment.ts +8 -0
- package/server/graphql/types/store-replenishment/store-replenishment-list.ts +8 -0
- package/server/graphql/types/store-replenishment/store-replenishment-patch.ts +10 -0
- package/server/graphql/types/store-replenishment/store-replenishment.ts +24 -0
- package/server/graphql/types/store-replenishment-item/index.ts +21 -0
- package/server/graphql/types/store-replenishment-item/new-store-replenishment-item.ts +8 -0
- package/server/graphql/types/store-replenishment-item/store-replenishment-item-list.ts +8 -0
- package/server/graphql/types/store-replenishment-item/store-replenishment-item-patch.ts +10 -0
- package/server/graphql/types/store-replenishment-item/store-replenishment-item.ts +15 -0
- package/server/index.ts +6 -0
- package/server/middlewares/index.ts +3 -0
- package/server/migrations/index.ts +9 -0
- package/server/routes.ts +26 -0
- package/server/utils/index.ts +1 -0
- package/server/utils/no-generator.ts +25 -0
- package/tsconfig.json +9 -0
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { User } from '@things-factory/auth-base'
|
|
2
|
+
import { Domain } from '@things-factory/shell'
|
|
3
|
+
import { Column, CreateDateColumn, Entity, Index, ManyToOne, PrimaryGeneratedColumn, UpdateDateColumn } from 'typeorm'
|
|
4
|
+
import { StoreReplenishment } from '../entities'
|
|
5
|
+
|
|
6
|
+
@Entity()
|
|
7
|
+
@Index(
|
|
8
|
+
'ix_store_replenishment_item_0',
|
|
9
|
+
(storeReplenishmentItem: StoreReplenishmentItem) => [storeReplenishmentItem.domain, storeReplenishmentItem.name],
|
|
10
|
+
{ unique: true }
|
|
11
|
+
)
|
|
12
|
+
export class StoreReplenishmentItem {
|
|
13
|
+
@PrimaryGeneratedColumn('uuid')
|
|
14
|
+
id: string
|
|
15
|
+
|
|
16
|
+
@ManyToOne(type => Domain)
|
|
17
|
+
domain: Domain
|
|
18
|
+
|
|
19
|
+
@Column()
|
|
20
|
+
name: string
|
|
21
|
+
|
|
22
|
+
@Column({
|
|
23
|
+
nullable: true
|
|
24
|
+
})
|
|
25
|
+
description: string
|
|
26
|
+
|
|
27
|
+
@ManyToOne(type => StoreReplenishment)
|
|
28
|
+
storeReplenishment: StoreReplenishment
|
|
29
|
+
|
|
30
|
+
@Column({ nullable: true })
|
|
31
|
+
type: string
|
|
32
|
+
|
|
33
|
+
@CreateDateColumn()
|
|
34
|
+
createdAt: Date
|
|
35
|
+
|
|
36
|
+
@UpdateDateColumn()
|
|
37
|
+
updatedAt: Date
|
|
38
|
+
|
|
39
|
+
@ManyToOne(type => User, {
|
|
40
|
+
nullable: true
|
|
41
|
+
})
|
|
42
|
+
creator: User
|
|
43
|
+
|
|
44
|
+
@ManyToOne(type => User, {
|
|
45
|
+
nullable: true
|
|
46
|
+
})
|
|
47
|
+
updater: User
|
|
48
|
+
}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import { User } from '@things-factory/auth-base'
|
|
2
|
+
import { Domain } from '@things-factory/shell'
|
|
3
|
+
import {
|
|
4
|
+
Column,
|
|
5
|
+
CreateDateColumn,
|
|
6
|
+
Entity,
|
|
7
|
+
Index,
|
|
8
|
+
ManyToOne,
|
|
9
|
+
OneToMany,
|
|
10
|
+
PrimaryGeneratedColumn,
|
|
11
|
+
UpdateDateColumn
|
|
12
|
+
} from 'typeorm'
|
|
13
|
+
import { StoreReplenishmentItem } from '../entities'
|
|
14
|
+
|
|
15
|
+
@Entity()
|
|
16
|
+
@Index(
|
|
17
|
+
'ix_store_replenishment_0',
|
|
18
|
+
(storeReplenishment: StoreReplenishment) => [storeReplenishment.domain, storeReplenishment.name],
|
|
19
|
+
{ unique: true }
|
|
20
|
+
)
|
|
21
|
+
export class StoreReplenishment {
|
|
22
|
+
@PrimaryGeneratedColumn('uuid')
|
|
23
|
+
id: string
|
|
24
|
+
|
|
25
|
+
@ManyToOne(type => Domain)
|
|
26
|
+
domain: Domain
|
|
27
|
+
|
|
28
|
+
@Column()
|
|
29
|
+
name: string
|
|
30
|
+
|
|
31
|
+
@Column({ nullable: true })
|
|
32
|
+
refNo: string
|
|
33
|
+
|
|
34
|
+
@Column()
|
|
35
|
+
etaDate: string
|
|
36
|
+
|
|
37
|
+
@Column({ nullable: true })
|
|
38
|
+
containerNo: string
|
|
39
|
+
|
|
40
|
+
@Column({ nullable: true })
|
|
41
|
+
truckNo: string
|
|
42
|
+
|
|
43
|
+
@Column({ nullable: true })
|
|
44
|
+
deliverOrderNo: string
|
|
45
|
+
|
|
46
|
+
@Column({ default: false })
|
|
47
|
+
importCargo: boolean
|
|
48
|
+
|
|
49
|
+
@Column({ default: false })
|
|
50
|
+
ownTransport: boolean
|
|
51
|
+
|
|
52
|
+
@Column({ nullable: true })
|
|
53
|
+
description: string
|
|
54
|
+
|
|
55
|
+
@Column({ nullable: true })
|
|
56
|
+
arrivalNoticeId: string
|
|
57
|
+
|
|
58
|
+
@OneToMany(type => StoreReplenishmentItem, storeReplenishmentItem => storeReplenishmentItem.storeReplenishment)
|
|
59
|
+
storeReplenishmentItems: StoreReplenishmentItem[]
|
|
60
|
+
|
|
61
|
+
@Column()
|
|
62
|
+
status: string
|
|
63
|
+
|
|
64
|
+
@CreateDateColumn()
|
|
65
|
+
createdAt: Date
|
|
66
|
+
|
|
67
|
+
@UpdateDateColumn()
|
|
68
|
+
updatedAt: Date
|
|
69
|
+
|
|
70
|
+
@ManyToOne(type => User, {
|
|
71
|
+
nullable: true
|
|
72
|
+
})
|
|
73
|
+
creator: User
|
|
74
|
+
|
|
75
|
+
@ManyToOne(type => User, {
|
|
76
|
+
nullable: true
|
|
77
|
+
})
|
|
78
|
+
updater: User
|
|
79
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export * from './marketplace-order'
|
|
2
|
+
export * from './marketplace-order-item'
|
|
3
|
+
export * from './marketplace-order-shipping'
|
|
4
|
+
export * from './marketplace-order-shipping-item'
|
|
5
|
+
export * from './marketplace-product'
|
|
6
|
+
export * from './marketplace-product-attribute'
|
|
7
|
+
export * from './marketplace-product-category'
|
|
8
|
+
export * from './marketplace-product-variation'
|
|
9
|
+
export * from './store-replenishment'
|
|
10
|
+
export * from './store-replenishment-item'
|
|
11
|
+
export * from './marketplace-refund-order'
|
|
12
|
+
export * from './marketplace-report'
|
|
13
|
+
|
|
14
|
+
export * from './marketplace-product-variation-price'
|
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
import { IsNull, Not } from 'typeorm'
|
|
2
|
+
|
|
3
|
+
import { config } from '@things-factory/env'
|
|
4
|
+
import { MarketplaceStore, StoreAPI } from '@things-factory/integration-marketplace'
|
|
5
|
+
import { Domain, getRepository } from '@things-factory/shell'
|
|
6
|
+
|
|
7
|
+
import { MARKETPLACE_PLATFORM, ORDER_STATUS } from '../../../constants'
|
|
8
|
+
import { MarketplaceOrder, MarketplaceOrderItem } from '../../../entities'
|
|
9
|
+
import { getLogisticsParam } from '../marketplace-order/get-logistics-param'
|
|
10
|
+
|
|
11
|
+
const shopeeConfig = config.get('marketplaceIntegrationShopee', {})
|
|
12
|
+
const { v2 } = shopeeConfig
|
|
13
|
+
|
|
14
|
+
export const autoInitialiseLogisticsByBatch = {
|
|
15
|
+
async autoInitialiseLogisticsByBatch(_: any, { companyDomainId }, context: ResolverContext) {
|
|
16
|
+
const { user } = context.state
|
|
17
|
+
|
|
18
|
+
const companyDomain: Domain = await getRepository(Domain).findOneBy({ id: companyDomainId })
|
|
19
|
+
|
|
20
|
+
// Step 1: get all available marketplace-store
|
|
21
|
+
const marketplaceStores: MarketplaceStore[] = await StoreAPI.getMarketplaceStores(companyDomain)
|
|
22
|
+
|
|
23
|
+
for (var i = 0; i < marketplaceStores?.length; i++) {
|
|
24
|
+
const marketplaceStore: MarketplaceStore = marketplaceStores[i]
|
|
25
|
+
|
|
26
|
+
let marketplaceOrders: MarketplaceOrder[] = []
|
|
27
|
+
if (marketplaceStore.platform == MARKETPLACE_PLATFORM.LAZADA) {
|
|
28
|
+
marketplaceOrders = await getRepository(MarketplaceOrder).find({
|
|
29
|
+
where: {
|
|
30
|
+
marketplaceStore: { id: marketplaceStore.id },
|
|
31
|
+
status: ORDER_STATUS.PENDING
|
|
32
|
+
},
|
|
33
|
+
relations: [
|
|
34
|
+
'marketplaceOrderItems',
|
|
35
|
+
'marketplaceOrderItems.marketplaceOrderShippingItems',
|
|
36
|
+
'marketplaceOrderItems.marketplaceOrderShippingItems.marketplaceOrderShipping',
|
|
37
|
+
'marketplaceOrderItems.marketplaceProductVariation'
|
|
38
|
+
]
|
|
39
|
+
})
|
|
40
|
+
} else {
|
|
41
|
+
if (marketplaceStore.isOwnTransport) {
|
|
42
|
+
marketplaceOrders = await getRepository(MarketplaceOrder).find({
|
|
43
|
+
where: {
|
|
44
|
+
marketplaceStore: { id: marketplaceStore.id },
|
|
45
|
+
trackingNo: IsNull(),
|
|
46
|
+
ownTrackingNo: Not(IsNull()),
|
|
47
|
+
status: ORDER_STATUS.READY_TO_SHIP
|
|
48
|
+
},
|
|
49
|
+
relations: [
|
|
50
|
+
'marketplaceOrderItems',
|
|
51
|
+
'marketplaceOrderItems.marketplaceOrderShippingItems',
|
|
52
|
+
'marketplaceOrderItems.marketplaceOrderShippingItems.marketplaceOrderShipping',
|
|
53
|
+
'marketplaceOrderItems.marketplaceProductVariation'
|
|
54
|
+
]
|
|
55
|
+
})
|
|
56
|
+
} else {
|
|
57
|
+
marketplaceOrders = await getRepository(MarketplaceOrder).find({
|
|
58
|
+
where: {
|
|
59
|
+
marketplaceStore: { id: marketplaceStore.id },
|
|
60
|
+
trackingNo: IsNull(),
|
|
61
|
+
status: ORDER_STATUS.READY_TO_SHIP
|
|
62
|
+
},
|
|
63
|
+
relations: [
|
|
64
|
+
'marketplaceOrderItems',
|
|
65
|
+
'marketplaceOrderItems.marketplaceOrderShippingItems',
|
|
66
|
+
'marketplaceOrderItems.marketplaceOrderShippingItems.marketplaceOrderShipping',
|
|
67
|
+
'marketplaceOrderItems.marketplaceProductVariation'
|
|
68
|
+
]
|
|
69
|
+
})
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
for (var j = 0; j < marketplaceOrders?.length; j++) {
|
|
74
|
+
const marketplaceOrder: MarketplaceOrder = marketplaceOrders[j]
|
|
75
|
+
if (marketplaceStore.platform == MARKETPLACE_PLATFORM.SHOPEE) {
|
|
76
|
+
let fullLogisticsDetail = await getLogisticsParam.getLogisticsParam(
|
|
77
|
+
_,
|
|
78
|
+
{ storeId: marketplaceStore.id, orderNo: marketplaceOrder.orderNo },
|
|
79
|
+
context
|
|
80
|
+
)
|
|
81
|
+
|
|
82
|
+
let deliveryType = {}
|
|
83
|
+
if (fullLogisticsDetail.non_integrated) {
|
|
84
|
+
deliveryType = {
|
|
85
|
+
non_integrated: {
|
|
86
|
+
trackingNo: marketplaceOrder.ownTrackingNo
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
} else if (fullLogisticsDetail.dropoff) {
|
|
90
|
+
const dropoff = fullLogisticsDetail.logisticsDetail.dropoff
|
|
91
|
+
deliveryType = {
|
|
92
|
+
dropoff: {}
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
if (dropoff.branchId) deliveryType['dropoff'] = { ...deliveryType['dropoff'], branchId: dropoff.branchId }
|
|
96
|
+
if (dropoff.senderRealName)
|
|
97
|
+
deliveryType['dropoff'] = {
|
|
98
|
+
...deliveryType['dropoff'],
|
|
99
|
+
senderRealName: dropoff.senderRealName
|
|
100
|
+
}
|
|
101
|
+
if (dropoff.trackingNo)
|
|
102
|
+
deliveryType['dropoff'] = { ...deliveryType['dropoff'], trackingNo: dropoff.trackingNo }
|
|
103
|
+
} else {
|
|
104
|
+
return false
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
await StoreAPI.initLogistics(marketplaceStore, { deliveryType, orderNo: marketplaceOrder.orderNo })
|
|
108
|
+
if (marketplaceStore.platform == MARKETPLACE_PLATFORM.SHOPEE && v2) {
|
|
109
|
+
await StoreAPI.createShippingDocument(marketplaceStore, { orderNo: marketplaceOrder.orderNo })
|
|
110
|
+
}
|
|
111
|
+
} else if (marketplaceStore.platform == MARKETPLACE_PLATFORM.LAZADA) {
|
|
112
|
+
const shippingProviders: any[] = await StoreAPI.getStoreLogistics(marketplaceStore, {})
|
|
113
|
+
const shippingProvider: string = shippingProviders[0].name
|
|
114
|
+
const deliveryType: string = 'dropship'
|
|
115
|
+
const storeOrder = await StoreAPI.getStoreOrder(marketplaceStore, { orderId: marketplaceOrder.orderNo })
|
|
116
|
+
|
|
117
|
+
const arrItemIds = storeOrder.orderItems.reduce((newItemID, item) => {
|
|
118
|
+
return [...newItemID, ...item.name.split(',')]
|
|
119
|
+
}, [])
|
|
120
|
+
|
|
121
|
+
if (storeOrder?.status == 'pending' && deliveryType && arrItemIds.length > 0 && shippingProvider) {
|
|
122
|
+
const storeOrderItemsPBM = await StoreAPI.setStoreOrderStatusPackedByMarketplace(marketplaceStore, {
|
|
123
|
+
deliveryType,
|
|
124
|
+
orderItemId: arrItemIds,
|
|
125
|
+
shippingProvider
|
|
126
|
+
})
|
|
127
|
+
|
|
128
|
+
marketplaceOrder.trackingNo = storeOrderItemsPBM.trackingNumber[0] || '[]'
|
|
129
|
+
marketplaceOrder.otherInfoJSON = JSON.stringify({
|
|
130
|
+
deliveryType: deliveryType,
|
|
131
|
+
shippingProvider: shippingProvider
|
|
132
|
+
})
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
let updatedOrder = await StoreAPI.getStoreOrder(marketplaceStore, { orderId: marketplaceOrder.name })
|
|
136
|
+
|
|
137
|
+
await getRepository(MarketplaceOrder).save({
|
|
138
|
+
...marketplaceOrder,
|
|
139
|
+
status: updatedOrder.status,
|
|
140
|
+
orderUpdatedAt: storeOrder.orderUpdatedAt
|
|
141
|
+
})
|
|
142
|
+
|
|
143
|
+
for (let idx = 0; idx < marketplaceOrder.marketplaceOrderItems.length; idx++) {
|
|
144
|
+
let matchItem = updatedOrder.orderItems.find(
|
|
145
|
+
i => i.variationId == marketplaceOrder.marketplaceOrderItems[idx].marketplaceProductVariation.variationId
|
|
146
|
+
)
|
|
147
|
+
|
|
148
|
+
if (matchItem) {
|
|
149
|
+
let targetMarketplaceOrderItem = {
|
|
150
|
+
...marketplaceOrder.marketplaceOrderItems[idx],
|
|
151
|
+
shippingProvider: matchItem.shippingProvider,
|
|
152
|
+
trackingCode: matchItem.trackingNo,
|
|
153
|
+
status: matchItem.status
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
await getRepository(MarketplaceOrderItem).save(targetMarketplaceOrderItem)
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
return true
|
|
163
|
+
}
|
|
164
|
+
}
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
import { IsNull, Not } from 'typeorm'
|
|
2
|
+
|
|
3
|
+
import { MarketplaceStore, StoreAPI } from '@things-factory/integration-marketplace'
|
|
4
|
+
import { Domain, getRepository } from '@things-factory/shell'
|
|
5
|
+
|
|
6
|
+
import { MARKETPLACE_PLATFORM, ORDER_STATUS } from '../../../constants'
|
|
7
|
+
import {
|
|
8
|
+
MarketplaceOrder,
|
|
9
|
+
MarketplaceOrderItem,
|
|
10
|
+
MarketplaceOrderShipping,
|
|
11
|
+
MarketplaceOrderShippingItem
|
|
12
|
+
} from '../../../entities'
|
|
13
|
+
|
|
14
|
+
export const autoUpdateOrderReadyToShip = {
|
|
15
|
+
async autoUpdateOrderReadyToShip(_: any, { companyDomainId }, context: ResolverContext) {
|
|
16
|
+
const companyDomain: Domain = await getRepository(Domain).findOne(companyDomainId)
|
|
17
|
+
|
|
18
|
+
// Step 1: get all available marketplace-store
|
|
19
|
+
const marketplaceStores: MarketplaceStore[] = await StoreAPI.getMarketplaceStores(companyDomain)
|
|
20
|
+
const lazadaStores: MarketplaceStore[] = marketplaceStores.filter(
|
|
21
|
+
marketplaceStore => marketplaceStore.platform === MARKETPLACE_PLATFORM.LAZADA
|
|
22
|
+
)
|
|
23
|
+
|
|
24
|
+
for (var i = 0; i < lazadaStores?.length; i++) {
|
|
25
|
+
const marketplaceStore: MarketplaceStore = lazadaStores[i]
|
|
26
|
+
|
|
27
|
+
let marketplaceOrders: MarketplaceOrder[] = await getRepository(MarketplaceOrder).find({
|
|
28
|
+
where: {
|
|
29
|
+
marketplaceStore: { id: marketplaceStore.id },
|
|
30
|
+
trackingNo: Not(IsNull()),
|
|
31
|
+
status: ORDER_STATUS.PACKED
|
|
32
|
+
},
|
|
33
|
+
relations: [
|
|
34
|
+
'marketplaceOrderItems',
|
|
35
|
+
'marketplaceOrderItems.marketplaceOrderShippingItems',
|
|
36
|
+
'marketplaceOrderItems.marketplaceOrderShippingItems.marketplaceOrderShipping',
|
|
37
|
+
'marketplaceOrderItems.marketplaceProductVariation'
|
|
38
|
+
]
|
|
39
|
+
})
|
|
40
|
+
|
|
41
|
+
for (var j = 0; j < marketplaceOrders?.length; j++) {
|
|
42
|
+
const marketplaceOrder: MarketplaceOrder = marketplaceOrders[j]
|
|
43
|
+
|
|
44
|
+
const otherInfo = JSON.parse(marketplaceOrder.otherInfoJSON)
|
|
45
|
+
const shippingProvider: string = otherInfo.shippingProvider
|
|
46
|
+
const deliveryType: string = otherInfo.deliveryType
|
|
47
|
+
|
|
48
|
+
let trackingInfoArr: any[] = []
|
|
49
|
+
let marketplaceOrderShippings: MarketplaceOrderShipping[] = []
|
|
50
|
+
|
|
51
|
+
marketplaceOrder.marketplaceOrderItems.map(item => {
|
|
52
|
+
const marketplaceOrderShippingItems: MarketplaceOrderShippingItem[] = item.marketplaceOrderShippingItems
|
|
53
|
+
marketplaceOrderShippingItems.map(itm => {
|
|
54
|
+
if (itm?.marketplaceOrderShipping) {
|
|
55
|
+
marketplaceOrderShippings.push(itm.marketplaceOrderShipping)
|
|
56
|
+
}
|
|
57
|
+
})
|
|
58
|
+
})
|
|
59
|
+
|
|
60
|
+
const uniqueMarketplaceOrderShippings = Array.from(new Set(marketplaceOrderShippings.map(a => a.id))).map(
|
|
61
|
+
id => {
|
|
62
|
+
return marketplaceOrderShippings.find(a => a.id === id)
|
|
63
|
+
}
|
|
64
|
+
)
|
|
65
|
+
|
|
66
|
+
if (
|
|
67
|
+
uniqueMarketplaceOrderShippings.some(marketplaceOrderShipping => marketplaceOrderShipping.trackingNo != null)
|
|
68
|
+
) {
|
|
69
|
+
uniqueMarketplaceOrderShippings.map((orderShipping: MarketplaceOrderShipping) => {
|
|
70
|
+
if (orderShipping?.trackingNo) {
|
|
71
|
+
const trackingNoInfo: any[] = JSON.parse(orderShipping.trackingNo)
|
|
72
|
+
const orderTrackingNos: string[] = trackingNoInfo.map(item => item.tracking_code)
|
|
73
|
+
const uniqueTrackingNos = [...new Set(orderTrackingNos)]
|
|
74
|
+
|
|
75
|
+
let orderItemIds: string[] = []
|
|
76
|
+
|
|
77
|
+
if (uniqueTrackingNos?.length == 1) {
|
|
78
|
+
orderItemIds = trackingNoInfo.map(item => item.order_item_id)
|
|
79
|
+
trackingInfoArr.push({ orderItemIds, trackingNo: uniqueTrackingNos[0] })
|
|
80
|
+
} else {
|
|
81
|
+
uniqueTrackingNos.map(trackingNo => {
|
|
82
|
+
orderItemIds = trackingNoInfo
|
|
83
|
+
.filter(info => info.tracking_code === trackingNo)
|
|
84
|
+
.map(filteredInfo => filteredInfo.order_item_id)
|
|
85
|
+
|
|
86
|
+
trackingInfoArr.push({ orderItemIds, trackingNo })
|
|
87
|
+
})
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
})
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
for (var i = 0; i < trackingInfoArr?.length; i++) {
|
|
94
|
+
const trackingInfo = trackingInfoArr[i]
|
|
95
|
+
const trackingNo = trackingInfo.trackingNo
|
|
96
|
+
const orderItemId = trackingInfo.orderItemIds
|
|
97
|
+
|
|
98
|
+
await StoreAPI.setStoreOrderStatusReadyToShip(marketplaceStore, {
|
|
99
|
+
shipmentProvider: shippingProvider,
|
|
100
|
+
deliveryType,
|
|
101
|
+
orderItemId,
|
|
102
|
+
trackingNo,
|
|
103
|
+
orderId: marketplaceOrder.name
|
|
104
|
+
})
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
const updatedOrder = await StoreAPI.getStoreOrder(marketplaceStore, { orderId: marketplaceOrder.name })
|
|
108
|
+
|
|
109
|
+
marketplaceOrder.status = updatedOrder.status
|
|
110
|
+
marketplaceOrder.orderUpdatedAt = updatedOrder.orderUpdatedAt
|
|
111
|
+
marketplaceOrder.trackingNo = updatedOrder.trackingNo
|
|
112
|
+
marketplaceOrder.shippingProvider = updatedOrder.shippingProvider
|
|
113
|
+
await getRepository(MarketplaceOrder).save(marketplaceOrder)
|
|
114
|
+
|
|
115
|
+
for (let idx = 0; idx < marketplaceOrder.marketplaceOrderItems.length; idx++) {
|
|
116
|
+
let matchItem = updatedOrder.orderItems.find(
|
|
117
|
+
i => i.variationId == marketplaceOrder.marketplaceOrderItems[idx].marketplaceProductVariation.variationId
|
|
118
|
+
)
|
|
119
|
+
|
|
120
|
+
if (matchItem) {
|
|
121
|
+
let targetMarketplaceOrderItem = {
|
|
122
|
+
...marketplaceOrder.marketplaceOrderItems[idx],
|
|
123
|
+
shippingProvider: matchItem.shippingProvider,
|
|
124
|
+
trackingCode: matchItem.trackingNo,
|
|
125
|
+
status: matchItem.status
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
await getRepository(MarketplaceOrderItem).save(targetMarketplaceOrderItem)
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
return true
|
|
135
|
+
}
|
|
136
|
+
}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { Bizplace, getCustomerBizplaces } from '@things-factory/biz-base'
|
|
2
|
+
import { FulfillmentAPI, FulfillmentCenter } from '@things-factory/integration-fulfillment'
|
|
3
|
+
import { Domain } from '@things-factory/shell'
|
|
4
|
+
|
|
5
|
+
import { MarketplaceOrder, MarketplaceOrderItem } from '../../../entities'
|
|
6
|
+
|
|
7
|
+
export const cancelMarketplaceOrderResolver = {
|
|
8
|
+
async cancelMarketplaceOrder(_: any, { orderNo, patch }, context: ResolverContext) {
|
|
9
|
+
const { tx, domain, user } = context.state
|
|
10
|
+
let marketplaceOrder: MarketplaceOrder = await tx.getRepository(MarketplaceOrder).findOne({
|
|
11
|
+
where: { domain: { id: domain.id }, orderNo },
|
|
12
|
+
relations: ['fulfillmentCenter', 'marketplaceStore', 'marketplaceOrderItems']
|
|
13
|
+
})
|
|
14
|
+
if (!marketplaceOrder) throw new Error('No order is found')
|
|
15
|
+
|
|
16
|
+
let marketplaceOrderItems: MarketplaceOrderItem[] = marketplaceOrder.marketplaceOrderItems.map(orderItem => {
|
|
17
|
+
let marketplaceOrderItem: MarketplaceOrderItem = Object.assign({}, orderItem)
|
|
18
|
+
marketplaceOrderItem.reason = patch.remark
|
|
19
|
+
marketplaceOrderItem.status = 'cancelled'
|
|
20
|
+
marketplaceOrderItem.updater = user
|
|
21
|
+
|
|
22
|
+
return marketplaceOrderItem
|
|
23
|
+
})
|
|
24
|
+
await tx.getRepository(MarketplaceOrderItem).save(marketplaceOrderItems)
|
|
25
|
+
|
|
26
|
+
marketplaceOrder.status = 'cancelled'
|
|
27
|
+
marketplaceOrder.remark = patch.remark
|
|
28
|
+
marketplaceOrder.updater = user
|
|
29
|
+
marketplaceOrder = await tx.getRepository(MarketplaceOrder).save(marketplaceOrder)
|
|
30
|
+
|
|
31
|
+
const cancelStatuses: string[] = ['cancelled', 'canceled']
|
|
32
|
+
if (cancelStatuses.includes(marketplaceOrder.status) && marketplaceOrder?.releaseOrderId) {
|
|
33
|
+
if (marketplaceOrder.isSplitted) {
|
|
34
|
+
const fulfillmentCenter: FulfillmentCenter = marketplaceOrder.fulfillmentCenter
|
|
35
|
+
const centerId: string = fulfillmentCenter.centerId
|
|
36
|
+
const warehouseDomain: Domain = await tx.getRepository(Domain).findOne({ where: { subdomain: centerId } })
|
|
37
|
+
const customerBizplaces: Bizplace[] = await getCustomerBizplaces(warehouseDomain)
|
|
38
|
+
const customerBizplaceId: string = customerBizplaces[0].id
|
|
39
|
+
|
|
40
|
+
const { items: releaseOrders }: any = await FulfillmentAPI.getOutboundOrders(fulfillmentCenter, {
|
|
41
|
+
customerBizplaceId,
|
|
42
|
+
refNo: marketplaceOrder.orderNo
|
|
43
|
+
})
|
|
44
|
+
if (releaseOrders?.length) {
|
|
45
|
+
for (var a = 0; a < releaseOrders.length; a++) {
|
|
46
|
+
const releaseOrderId: string = releaseOrders[a].id
|
|
47
|
+
await FulfillmentAPI.cancelReleaseOrder(fulfillmentCenter, { customerBizplaceId, releaseOrderId })
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
} else {
|
|
51
|
+
const releaseOrderId: string = marketplaceOrder.releaseOrderId
|
|
52
|
+
const fulfillmentCenter: FulfillmentCenter = marketplaceOrder.fulfillmentCenter
|
|
53
|
+
const centerId: string = fulfillmentCenter.centerId
|
|
54
|
+
|
|
55
|
+
const warehouseDomain: Domain = await tx.getRepository(Domain).findOne({ where: { subdomain: centerId } })
|
|
56
|
+
const customerBizplaces: Bizplace[] = await getCustomerBizplaces(warehouseDomain)
|
|
57
|
+
const customerBizplaceId: string = customerBizplaces[0].id
|
|
58
|
+
await FulfillmentAPI.cancelReleaseOrder(fulfillmentCenter, { customerBizplaceId, releaseOrderId })
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
return marketplaceOrder
|
|
63
|
+
}
|
|
64
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { MarketplaceStore, StoreAPI } from '@things-factory/integration-marketplace'
|
|
2
|
+
|
|
3
|
+
import { MarketplaceOrder } from '../../../entities'
|
|
4
|
+
|
|
5
|
+
export const createMarketplaceOrderNote = {
|
|
6
|
+
async createMarketplaceOrderNote(_: any, { note, orderNo }, context: ResolverContext) {
|
|
7
|
+
const { tx } = context.state
|
|
8
|
+
let foundMarketplaceOrder: MarketplaceOrder = await tx.getRepository(MarketplaceOrder).findOne({
|
|
9
|
+
where: { name: orderNo },
|
|
10
|
+
relations: ['marketplaceStore']
|
|
11
|
+
})
|
|
12
|
+
if (!foundMarketplaceOrder) throw new Error('No order is found')
|
|
13
|
+
|
|
14
|
+
const storeId = foundMarketplaceOrder.marketplaceStore.id
|
|
15
|
+
const marketplaceStore: MarketplaceStore = await StoreAPI.getMarketplaceStore(storeId)
|
|
16
|
+
|
|
17
|
+
const orderNote = await StoreAPI.createOrderNote(marketplaceStore, { orderId: orderNo, note })
|
|
18
|
+
|
|
19
|
+
return true
|
|
20
|
+
}
|
|
21
|
+
}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import { getRepository } from '@things-factory/shell'
|
|
2
|
+
|
|
3
|
+
import { ORDER_STATUS } from '../../../constants'
|
|
4
|
+
import { MarketplaceOrder } from '../../../entities'
|
|
5
|
+
|
|
6
|
+
export const dashboardMarketplaceOrdersResolver = {
|
|
7
|
+
async dashboardMarketplaceOrders(_: any, { dayCount, endDate }, context: ResolverContext) {
|
|
8
|
+
const domain = context.state.domain
|
|
9
|
+
|
|
10
|
+
if (!dayCount) dayCount = 7
|
|
11
|
+
|
|
12
|
+
// 1. initialize time interval
|
|
13
|
+
if (endDate && endDate !== '') {
|
|
14
|
+
endDate = new Date(`${endDate.split(' ').join('')}`)
|
|
15
|
+
|
|
16
|
+
if (endDate instanceof Date && !isNaN(endDate.getDate())) var timeNow = '23:59:59'
|
|
17
|
+
else throw new Error('endDate is invalid')
|
|
18
|
+
} else {
|
|
19
|
+
endDate = new Date()
|
|
20
|
+
var hh = `${String(endDate.getHours()).padStart(2, '0')}`
|
|
21
|
+
var mm = `${String(endDate.getMinutes()).padStart(2, '0')}`
|
|
22
|
+
var ss = `${String(endDate.getSeconds()).padStart(2, '0')}`
|
|
23
|
+
var timeNow = `${hh}:${mm}:${ss}`
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
// 2. set startDate & compare equal 7 days or dayCount before endDate
|
|
27
|
+
let startDate = new Date(endDate)
|
|
28
|
+
startDate.setDate(startDate.getDate() - dayCount)
|
|
29
|
+
startDate.setHours(0)
|
|
30
|
+
startDate.setMinutes(0)
|
|
31
|
+
startDate.setSeconds(0)
|
|
32
|
+
|
|
33
|
+
let compareDate = new Date(endDate)
|
|
34
|
+
compareDate.setDate(compareDate.getDate() - dayCount)
|
|
35
|
+
compareDate.setHours(0)
|
|
36
|
+
compareDate.setMinutes(0)
|
|
37
|
+
compareDate.setSeconds(0)
|
|
38
|
+
|
|
39
|
+
// 3. get orders data
|
|
40
|
+
const marketplaceOrders = await getRepository(MarketplaceOrder).query(`
|
|
41
|
+
select order_date, sum(cancelledCount) as cancelledCount, sum(nonCancelledCount) as nonCancelledCount from (
|
|
42
|
+
select date(mo.order_created_at) order_date,
|
|
43
|
+
case when mo.status = '${ORDER_STATUS.CANCELLED}' then 1 else 0 end as cancelledCount,
|
|
44
|
+
case when mo.status != '${ORDER_STATUS.CANCELLED}' then 1 else 0 end as nonCancelledCount
|
|
45
|
+
from marketplace_orders mo
|
|
46
|
+
where mo.order_created_at between '${startDate.toLocaleDateString()} 00:00:00' and '${endDate.toLocaleDateString()} ${timeNow}'
|
|
47
|
+
and mo.domain_id = '${domain.id}'
|
|
48
|
+
) as foo
|
|
49
|
+
group by order_date
|
|
50
|
+
order by order_date asc
|
|
51
|
+
`)
|
|
52
|
+
|
|
53
|
+
// 4. initialize item array
|
|
54
|
+
let items = []
|
|
55
|
+
for (let i = 0; i < dayCount; i++) {
|
|
56
|
+
const month = startDate.toLocaleString('default', { month: 'short' })
|
|
57
|
+
const day = startDate.getDate()
|
|
58
|
+
|
|
59
|
+
items.push({
|
|
60
|
+
date: `${month} ${String(day).padStart(2, '0')}`,
|
|
61
|
+
cancelledCount: 0,
|
|
62
|
+
nonCancelledCount: 0
|
|
63
|
+
})
|
|
64
|
+
startDate.setDate(startDate.getDate() + 1)
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
// 5. assign sales data according to date
|
|
68
|
+
items = items.map(item => {
|
|
69
|
+
marketplaceOrders.forEach(order => {
|
|
70
|
+
if (order.order_date.toLocaleDateString() === compareDate.toLocaleDateString()) {
|
|
71
|
+
item.cancelledCount = order.cancelledcount
|
|
72
|
+
item.nonCancelledCount = order.noncancelledcount
|
|
73
|
+
}
|
|
74
|
+
})
|
|
75
|
+
|
|
76
|
+
compareDate.setDate(compareDate.getDate() + 1)
|
|
77
|
+
return item
|
|
78
|
+
})
|
|
79
|
+
|
|
80
|
+
return items
|
|
81
|
+
}
|
|
82
|
+
}
|