@things-factory/sales-base 4.3.71 → 4.3.75
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/index.js +5 -1
- package/dist-server/constants/index.js.map +1 -1
- package/dist-server/controllers/ecommerce/index.js +5 -1
- package/dist-server/controllers/ecommerce/index.js.map +1 -1
- package/dist-server/controllers/index.js +5 -1
- package/dist-server/controllers/index.js.map +1 -1
- package/dist-server/errors/index.js +5 -1
- package/dist-server/errors/index.js.map +1 -1
- package/dist-server/errors/validation-error.js +5 -1
- package/dist-server/errors/validation-error.js.map +1 -1
- package/dist-server/index.js +5 -1
- package/dist-server/index.js.map +1 -1
- package/dist-server/service/arrival-notice/arrival-notice-query.js +1 -1
- package/dist-server/service/arrival-notice/index.js +5 -1
- package/dist-server/service/arrival-notice/index.js.map +1 -1
- package/dist-server/service/claim/index.js +5 -1
- package/dist-server/service/claim/index.js.map +1 -1
- package/dist-server/service/claim-detail/index.js +5 -1
- package/dist-server/service/claim-detail/index.js.map +1 -1
- package/dist-server/service/claim-order/index.js +5 -1
- package/dist-server/service/claim-order/index.js.map +1 -1
- package/dist-server/service/collection-order/index.js +5 -1
- package/dist-server/service/collection-order/index.js.map +1 -1
- package/dist-server/service/delivery-order/index.js +5 -1
- package/dist-server/service/delivery-order/index.js.map +1 -1
- package/dist-server/service/draft-release-good/draft-release-good-query.js +8 -10
- package/dist-server/service/draft-release-good/draft-release-good-query.js.map +1 -1
- package/dist-server/service/draft-release-good/index.js +5 -1
- package/dist-server/service/draft-release-good/index.js.map +1 -1
- package/dist-server/service/goods-receival-note/index.js +5 -1
- package/dist-server/service/goods-receival-note/index.js.map +1 -1
- package/dist-server/service/index.js +5 -1
- package/dist-server/service/index.js.map +1 -1
- package/dist-server/service/inventory-check/index.js +5 -1
- package/dist-server/service/inventory-check/index.js.map +1 -1
- package/dist-server/service/invoice/index.js +5 -1
- package/dist-server/service/invoice/index.js.map +1 -1
- package/dist-server/service/invoice-product/index.js +5 -1
- package/dist-server/service/invoice-product/index.js.map +1 -1
- package/dist-server/service/job-sheet/index.js +5 -1
- package/dist-server/service/job-sheet/index.js.map +1 -1
- package/dist-server/service/order-inventory/index.js +5 -1
- package/dist-server/service/order-inventory/index.js.map +1 -1
- package/dist-server/service/order-product/index.js +5 -1
- package/dist-server/service/order-product/index.js.map +1 -1
- package/dist-server/service/order-product/order-product.js +3 -0
- package/dist-server/service/order-product/order-product.js.map +1 -1
- package/dist-server/service/order-tote/index.js +5 -1
- package/dist-server/service/order-tote/index.js.map +1 -1
- package/dist-server/service/order-tote-item/index.js +5 -1
- package/dist-server/service/order-tote-item/index.js.map +1 -1
- package/dist-server/service/order-tote-seal/index.js +5 -1
- package/dist-server/service/order-tote-seal/index.js.map +1 -1
- package/dist-server/service/order-vas/index.js +5 -1
- package/dist-server/service/order-vas/index.js.map +1 -1
- package/dist-server/service/others/index.js +5 -1
- package/dist-server/service/others/index.js.map +1 -1
- package/dist-server/service/purchase-order/index.js +5 -1
- package/dist-server/service/purchase-order/index.js.map +1 -1
- package/dist-server/service/purchase-order-other-charge/index.js +5 -1
- package/dist-server/service/purchase-order-other-charge/index.js.map +1 -1
- package/dist-server/service/release-good/index.js +5 -1
- package/dist-server/service/release-good/index.js.map +1 -1
- package/dist-server/service/release-good/release-good-mutation.js +3 -1
- package/dist-server/service/release-good/release-good-mutation.js.map +1 -1
- package/dist-server/service/release-good/release-good-query.js +109 -112
- package/dist-server/service/release-good/release-good-query.js.map +1 -1
- package/dist-server/service/retail-replenishment-order/index.js +5 -1
- package/dist-server/service/retail-replenishment-order/index.js.map +1 -1
- package/dist-server/service/return-order/index.js +5 -1
- package/dist-server/service/return-order/index.js.map +1 -1
- package/dist-server/service/reverse-kitting-order/index.js +5 -1
- package/dist-server/service/reverse-kitting-order/index.js.map +1 -1
- package/dist-server/service/reverse-kitting-order-inventory/index.js +5 -1
- package/dist-server/service/reverse-kitting-order-inventory/index.js.map +1 -1
- package/dist-server/service/shipping-order/index.js +5 -1
- package/dist-server/service/shipping-order/index.js.map +1 -1
- package/dist-server/service/transfer-order/index.js +5 -1
- package/dist-server/service/transfer-order/index.js.map +1 -1
- package/dist-server/service/vas/index.js +5 -1
- package/dist-server/service/vas/index.js.map +1 -1
- package/dist-server/service/vas-order/index.js +5 -1
- package/dist-server/service/vas-order/index.js.map +1 -1
- package/dist-server/utils/index.js +5 -1
- package/dist-server/utils/index.js.map +1 -1
- package/package.json +13 -13
- package/server/service/arrival-notice/arrival-notice-query.ts +1 -1
- package/server/service/draft-release-good/draft-release-good-query.ts +8 -10
- package/server/service/order-product/order-product.ts +7 -0
- package/server/service/release-good/release-good-mutation.ts +3 -2
- package/server/service/release-good/release-good-query.ts +94 -109
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@things-factory/sales-base",
|
|
3
|
-
"version": "4.3.
|
|
3
|
+
"version": "4.3.75",
|
|
4
4
|
"main": "dist-server/index.js",
|
|
5
5
|
"browser": "client/index.js",
|
|
6
6
|
"things-factory": true,
|
|
@@ -24,17 +24,17 @@
|
|
|
24
24
|
"migration:create": "node ../../node_modules/typeorm/cli.js migration:create -d ./server/migrations"
|
|
25
25
|
},
|
|
26
26
|
"dependencies": {
|
|
27
|
-
"@things-factory/attachment-base": "^4.3.
|
|
28
|
-
"@things-factory/auth-base": "^4.3.
|
|
29
|
-
"@things-factory/biz-base": "^4.3.
|
|
30
|
-
"@things-factory/code-base": "^4.3.
|
|
31
|
-
"@things-factory/integration-sftp": "^4.3.
|
|
32
|
-
"@things-factory/notification": "^4.3.
|
|
33
|
-
"@things-factory/product-base": "^4.3.
|
|
34
|
-
"@things-factory/setting-base": "^4.3.
|
|
35
|
-
"@things-factory/shell": "^4.3.
|
|
36
|
-
"@things-factory/transport-base": "^4.3.
|
|
37
|
-
"@things-factory/warehouse-base": "^4.3.
|
|
27
|
+
"@things-factory/attachment-base": "^4.3.74",
|
|
28
|
+
"@things-factory/auth-base": "^4.3.74",
|
|
29
|
+
"@things-factory/biz-base": "^4.3.74",
|
|
30
|
+
"@things-factory/code-base": "^4.3.74",
|
|
31
|
+
"@things-factory/integration-sftp": "^4.3.74",
|
|
32
|
+
"@things-factory/notification": "^4.3.74",
|
|
33
|
+
"@things-factory/product-base": "^4.3.75",
|
|
34
|
+
"@things-factory/setting-base": "^4.3.74",
|
|
35
|
+
"@things-factory/shell": "^4.3.74",
|
|
36
|
+
"@things-factory/transport-base": "^4.3.74",
|
|
37
|
+
"@things-factory/warehouse-base": "^4.3.75"
|
|
38
38
|
},
|
|
39
|
-
"gitHead": "
|
|
39
|
+
"gitHead": "3076ac1b79bc1f56d033b4d13c1dd9baac545e27"
|
|
40
40
|
}
|
|
@@ -478,7 +478,6 @@ export async function validateBulkArrivalNoticesFunction(
|
|
|
478
478
|
AND raw.import_cargo = an.import_cargo
|
|
479
479
|
LEFT JOIN products pr ON LOWER(pr.sku) = LOWER(raw.sku)
|
|
480
480
|
LEFT JOIN product_details pd ON pr.id = pd.product_id
|
|
481
|
-
AND pr.bizplace_id = $1
|
|
482
481
|
AND CASE WHEN raw.packing_type NOTNULL AND raw.packing_size NOTNULL AND raw.uom NOTNULL
|
|
483
482
|
THEN pd.packing_type = raw.packing_type AND pd.packing_size = raw.packing_size AND pd.uom = raw.uom
|
|
484
483
|
WHEN raw.packing_type NOTNULL AND raw.packing_size NOTNULL AND raw.uom ISNULL
|
|
@@ -486,6 +485,7 @@ export async function validateBulkArrivalNoticesFunction(
|
|
|
486
485
|
WHEN raw.packing_type ISNULL AND raw.packing_size ISNULL AND raw.uom NOTNULL
|
|
487
486
|
THEN pd.uom = raw.uom AND pd.is_default IS TRUE ELSE pd.is_default IS TRUE
|
|
488
487
|
END
|
|
488
|
+
WHERE pr.bizplace_id = $1
|
|
489
489
|
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,
|
|
490
490
|
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
|
|
491
491
|
) SELECT foo.*,
|
|
@@ -109,18 +109,16 @@ export class DraftReleaseGoodQuery {
|
|
|
109
109
|
tx.query(
|
|
110
110
|
`
|
|
111
111
|
create temp table temp_op_calculation on commit drop as (
|
|
112
|
-
|
|
113
|
-
from draft_release_goods drg1
|
|
112
|
+
SELECT drg1.id from draft_release_goods drg1
|
|
114
113
|
left join order_products op on drg1.id = op.draft_release_good_id
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
and wboi.uom = op.uom
|
|
114
|
+
where drg1.status ='DRAFT' AND drg1.domain_id = $1
|
|
115
|
+
AND NOT EXISTS (
|
|
116
|
+
SELECT * FROM warehouse_bizplace_onhand_inventories wboi
|
|
117
|
+
where (wboi."productId" = op.product_id or wboi."productBundleId" = op.product_id)
|
|
120
118
|
and wboi."domainId" = op.domain_id
|
|
121
119
|
and wboi."bizplaceId" = op.bizplace_id
|
|
122
|
-
|
|
123
|
-
|
|
120
|
+
AND wboi."remainQty" >= op.release_qty
|
|
121
|
+
) GROUP BY drg1.id
|
|
124
122
|
)
|
|
125
123
|
`,
|
|
126
124
|
[domain.id]
|
|
@@ -130,7 +128,7 @@ export class DraftReleaseGoodQuery {
|
|
|
130
128
|
buildQuery(qb, params, context)
|
|
131
129
|
qb.addSelect('COALESCE("cc".rank, 99999)', 'rank')
|
|
132
130
|
qb.addSelect(
|
|
133
|
-
`CASE WHEN "drg".status = 'DRAFT' and
|
|
131
|
+
`CASE WHEN "drg".status = 'DRAFT' and tmp_calc.id IS NOT null then 'INSUFFICIENT' else "drg".status END`,
|
|
134
132
|
'computed_status'
|
|
135
133
|
)
|
|
136
134
|
qb.leftJoin(`temp_op_calculation`, 'tmp_calc', 'tmp_calc.id = drg.id')
|
|
@@ -59,6 +59,13 @@ import { OrderInventory } from '../order-inventory/order-inventory'
|
|
|
59
59
|
],
|
|
60
60
|
{ unique: true }
|
|
61
61
|
)
|
|
62
|
+
@Index(
|
|
63
|
+
'ix_order-product_4',
|
|
64
|
+
(orderProduct: OrderProduct) => [
|
|
65
|
+
orderProduct.draftReleaseGood
|
|
66
|
+
],
|
|
67
|
+
{ unique: false }
|
|
68
|
+
)
|
|
62
69
|
@ObjectType()
|
|
63
70
|
export class OrderProduct {
|
|
64
71
|
@PrimaryGeneratedColumn('uuid')
|
|
@@ -16,12 +16,13 @@ import { MarketplaceStore } from '@things-factory/integration-marketplace'
|
|
|
16
16
|
import { Sellercraft, SellercraftStatus } from '@things-factory/integration-sellercraft'
|
|
17
17
|
import { Sftp } from '@things-factory/integration-sftp'
|
|
18
18
|
import { MarketplaceOrder, MarketplaceProductVariation } from '@things-factory/marketplace-base'
|
|
19
|
-
import { sendNotification } from '@things-factory/notification'
|
|
19
|
+
// import { sendNotification } from '@things-factory/notification'
|
|
20
20
|
import { Product, ProductBundleSetting } from '@things-factory/product-base'
|
|
21
21
|
import { PartnerSetting, Setting } from '@things-factory/setting-base'
|
|
22
22
|
import { Domain } from '@things-factory/shell'
|
|
23
23
|
import { Inventory } from '@things-factory/warehouse-base'
|
|
24
24
|
|
|
25
|
+
// import { NewOrderProduct } from '../order-product/order-product-types'
|
|
25
26
|
import {
|
|
26
27
|
ATTACHMENT_TYPE,
|
|
27
28
|
ORDER_INVENTORY_STATUS,
|
|
@@ -48,7 +49,6 @@ import { ShippingOrderPatch } from '../shipping-order/shipping-order-types'
|
|
|
48
49
|
import { Vas } from '../vas/vas'
|
|
49
50
|
import { ReleaseGood } from './release-good'
|
|
50
51
|
import { bulkReleaseGoodsAvailableItemsFunction } from './release-good-query'
|
|
51
|
-
import { NewOrderProduct } from '../order-product/order-product-types'
|
|
52
52
|
|
|
53
53
|
@Resolver(ReleaseGood)
|
|
54
54
|
export class ReleaseGoodMutation {
|
|
@@ -1294,6 +1294,7 @@ export async function bulkGenerateReleaseGood(
|
|
|
1294
1294
|
refNo3: releaseGood.refNo3,
|
|
1295
1295
|
releaseDate: releaseGood.releaseDate,
|
|
1296
1296
|
ownTransport: releaseGood?.ownTransport || false,
|
|
1297
|
+
orderMethod: ORDER_METHOD.SELECT_BY_PRODUCT,
|
|
1297
1298
|
status: ORDER_STATUS.PENDING,
|
|
1298
1299
|
creator: user,
|
|
1299
1300
|
updater: user
|
|
@@ -1,11 +1,10 @@
|
|
|
1
|
-
import orderBy from 'lodash/orderBy'
|
|
2
1
|
import { Arg, Args, Ctx, Directive, FieldResolver, Query, Resolver, Root } from 'type-graphql'
|
|
3
2
|
import { EntityManager, getRepository, In, Repository, SelectQueryBuilder } from 'typeorm'
|
|
4
3
|
|
|
5
4
|
import { Attachment } from '@things-factory/attachment-base'
|
|
6
5
|
import { checkUserBelongsDomain, User } from '@things-factory/auth-base'
|
|
7
6
|
import { Bizplace, getCompanyBizplace, getMyBizplace, getPermittedBizplaceIds } from '@things-factory/biz-base'
|
|
8
|
-
import {
|
|
7
|
+
import { logger } from '@things-factory/env'
|
|
9
8
|
import { buildQuery, Domain, Filter, ListParam, Pagination, Sorting } from '@things-factory/shell'
|
|
10
9
|
import { Inventory, LOCATION_TYPE } from '@things-factory/warehouse-base'
|
|
11
10
|
|
|
@@ -13,7 +12,7 @@ import { ATTACHMENT_TYPE, ORDER_INVENTORY_STATUS, ORDER_STATUS } from '../../con
|
|
|
13
12
|
import { OrderInventory } from '../order-inventory/order-inventory'
|
|
14
13
|
import { ShippingOrder } from '../shipping-order/shipping-order'
|
|
15
14
|
import { ReleaseGood } from './release-good'
|
|
16
|
-
import {
|
|
15
|
+
import { NewReleaseGood, ReleasableInventoryList, ReleaseGoodList } from './release-good-types'
|
|
17
16
|
|
|
18
17
|
@Resolver(ReleaseGood)
|
|
19
18
|
export class ReleaseGoodQuery {
|
|
@@ -166,56 +165,58 @@ export class ReleaseGoodQuery {
|
|
|
166
165
|
@Arg('refNo', { nullable: true }) refNo?: string,
|
|
167
166
|
@Arg('name', { nullable: true }) name?: string
|
|
168
167
|
): Promise<ReleaseGood> {
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
if (name) param = { domain, name }
|
|
173
|
-
else param = { domain, refNo }
|
|
174
|
-
|
|
175
|
-
const releaseGood: ReleaseGood = await tx.getRepository(ReleaseGood).findOne({
|
|
176
|
-
where: { ...param },
|
|
177
|
-
relations: [
|
|
178
|
-
'domain',
|
|
179
|
-
'bizplace',
|
|
180
|
-
'shippingOrder',
|
|
181
|
-
'arrivalNotice',
|
|
182
|
-
'orderProducts',
|
|
183
|
-
'orderProducts.product',
|
|
184
|
-
'orderInventories',
|
|
185
|
-
'orderInventories.inventory',
|
|
186
|
-
'orderInventories.product',
|
|
187
|
-
'orderInventories.inventory.product',
|
|
188
|
-
'orderInventories.inventory.location',
|
|
189
|
-
'orderVass',
|
|
190
|
-
'orderVass.vas',
|
|
191
|
-
'orderVass.targetProduct',
|
|
192
|
-
'orderVass.inventory',
|
|
193
|
-
'creator',
|
|
194
|
-
'updater',
|
|
195
|
-
'deliverTo'
|
|
196
|
-
]
|
|
197
|
-
})
|
|
168
|
+
try {
|
|
169
|
+
const { domain, tx }: { domain: Domain; tx: EntityManager } = context.state
|
|
170
|
+
let param: any
|
|
198
171
|
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
const
|
|
203
|
-
where: {
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
172
|
+
if (name) param = { domain, name }
|
|
173
|
+
else param = { domain, refNo }
|
|
174
|
+
|
|
175
|
+
const releaseGood: ReleaseGood = await tx.getRepository(ReleaseGood).findOne({
|
|
176
|
+
where: { ...param },
|
|
177
|
+
relations: [
|
|
178
|
+
'domain',
|
|
179
|
+
'bizplace',
|
|
180
|
+
'shippingOrder',
|
|
181
|
+
'arrivalNotice',
|
|
182
|
+
'orderProducts',
|
|
183
|
+
'orderProducts.product',
|
|
184
|
+
'orderVass',
|
|
185
|
+
'orderVass.vas',
|
|
186
|
+
'orderVass.targetProduct',
|
|
187
|
+
'orderVass.inventory',
|
|
188
|
+
'creator',
|
|
189
|
+
'updater'
|
|
190
|
+
]
|
|
208
191
|
})
|
|
209
192
|
|
|
210
|
-
|
|
193
|
+
if (releaseGood) {
|
|
194
|
+
let oiQb: SelectQueryBuilder<OrderInventory> = tx
|
|
195
|
+
.getRepository(OrderInventory)
|
|
196
|
+
.createQueryBuilder('oi')
|
|
197
|
+
.leftJoinAndSelect('oi.inventory', 'inventory')
|
|
198
|
+
.leftJoinAndSelect('oi.product', 'product')
|
|
199
|
+
.leftJoinAndSelect('inventory.location', 'location')
|
|
200
|
+
.where('oi.domain_id = :domainId', { domainId: domain.id })
|
|
201
|
+
.andWhere('oi.release_good_id = :releaseGoodId', { releaseGoodId: releaseGood.id })
|
|
202
|
+
.andWhere('oi.status NOT IN (:...orderInventoryStatus)', {
|
|
203
|
+
orderInventoryStatus: [ORDER_INVENTORY_STATUS.COMPLETE_SPLIT, ORDER_INVENTORY_STATUS.REPLACED]
|
|
204
|
+
})
|
|
205
|
+
.orderBy('product.sku', 'ASC')
|
|
206
|
+
|
|
207
|
+
let orderInventories: OrderInventory[] = await oiQb.getMany()
|
|
208
|
+
|
|
209
|
+
const shippingOrder: ShippingOrder = releaseGood.shippingOrder
|
|
210
|
+
const foundAttachments: Attachment[] = await tx.getRepository(Attachment).find({
|
|
211
|
+
where: {
|
|
212
|
+
domain,
|
|
213
|
+
refBy: releaseGood.id,
|
|
214
|
+
category: ATTACHMENT_TYPE.DELIVERY_ORDER
|
|
215
|
+
}
|
|
216
|
+
})
|
|
211
217
|
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
.filter(
|
|
215
|
-
itm =>
|
|
216
|
-
itm.status !== ORDER_INVENTORY_STATUS.COMPLETE_SPLIT && itm.status !== ORDER_INVENTORY_STATUS.REPLACED
|
|
217
|
-
)
|
|
218
|
-
.map(async (orderInv: OrderInventory) => {
|
|
218
|
+
let invInfos = await Promise.all(
|
|
219
|
+
orderInventories.map(async (orderInv: OrderInventory) => {
|
|
219
220
|
if (orderInv?.inventory?.id) {
|
|
220
221
|
const inventory: Inventory = orderInv.inventory
|
|
221
222
|
return {
|
|
@@ -224,11 +225,11 @@ export class ReleaseGoodQuery {
|
|
|
224
225
|
batchId: inventory.batchId,
|
|
225
226
|
batchIdRef: inventory.batchIdRef,
|
|
226
227
|
palletId: inventory.palletId,
|
|
227
|
-
product:
|
|
228
|
-
productIdRef:
|
|
229
|
-
productName: `${
|
|
230
|
-
packingType:
|
|
231
|
-
packingSize:
|
|
228
|
+
product: orderInv.product,
|
|
229
|
+
productIdRef: orderInv.product.id,
|
|
230
|
+
productName: `${orderInv.product.name} (${orderInv.product.description})`,
|
|
231
|
+
packingType: orderInv.packingType,
|
|
232
|
+
packingSize: orderInv.packingSize,
|
|
232
233
|
location: inventory.location,
|
|
233
234
|
qty: inventory.qty,
|
|
234
235
|
lockedQty: inventory.lockedQty,
|
|
@@ -241,58 +242,31 @@ export class ReleaseGoodQuery {
|
|
|
241
242
|
status: orderInv.status,
|
|
242
243
|
refWorksheetId: orderInv.refWorksheetId
|
|
243
244
|
}
|
|
244
|
-
} else {
|
|
245
|
-
const {
|
|
246
|
-
batchId,
|
|
247
|
-
batchIdRef,
|
|
248
|
-
product,
|
|
249
|
-
packingType,
|
|
250
|
-
packingSize,
|
|
251
|
-
releaseQty,
|
|
252
|
-
releaseUomValue,
|
|
253
|
-
refWorksheetId
|
|
254
|
-
} = orderInv
|
|
255
|
-
const { id: productIdRef, name: productName }: Product = product
|
|
256
|
-
const { qty, uomValue, uom } = await getAvailableAmount(roBizId, productIdRef, batchId, packingType, tx)
|
|
257
|
-
|
|
258
|
-
return {
|
|
259
|
-
batchId,
|
|
260
|
-
batchIdRef,
|
|
261
|
-
productIdRef,
|
|
262
|
-
product,
|
|
263
|
-
productName,
|
|
264
|
-
packingType,
|
|
265
|
-
packingSize,
|
|
266
|
-
qty,
|
|
267
|
-
uom,
|
|
268
|
-
uomValue,
|
|
269
|
-
releaseQty,
|
|
270
|
-
releaseUomValue,
|
|
271
|
-
refWorksheetId
|
|
272
|
-
}
|
|
273
245
|
}
|
|
274
246
|
})
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
const result = {
|
|
278
|
-
...releaseGood,
|
|
279
|
-
attachment: foundAttachments,
|
|
280
|
-
shippingOrderInfo: {
|
|
281
|
-
containerNo: shippingOrder?.containerNo || '',
|
|
282
|
-
containerSize: shippingOrder?.containerSize || '',
|
|
283
|
-
containerLeavingDate: shippingOrder?.containerLeavingDate || '',
|
|
284
|
-
containerArrivalDate: shippingOrder?.containerArrivalDate || '',
|
|
285
|
-
containerClosureDate: shippingOrder?.containerClosureDate || '',
|
|
286
|
-
shipName: shippingOrder?.shipName || '',
|
|
287
|
-
remark: shippingOrder?.remark || '',
|
|
288
|
-
remindContainerDeparture: shippingOrder?.remindContainerDeparture || null
|
|
289
|
-
},
|
|
290
|
-
inventoryInfos: orderBy<InventoryInfos>(invInfos, ['product.sku'], ['asc'])
|
|
291
|
-
}
|
|
247
|
+
)
|
|
292
248
|
|
|
293
|
-
|
|
249
|
+
const result = {
|
|
250
|
+
...releaseGood,
|
|
251
|
+
attachment: foundAttachments,
|
|
252
|
+
shippingOrderInfo: {
|
|
253
|
+
containerNo: shippingOrder?.containerNo || '',
|
|
254
|
+
containerSize: shippingOrder?.containerSize || '',
|
|
255
|
+
containerLeavingDate: shippingOrder?.containerLeavingDate || '',
|
|
256
|
+
containerArrivalDate: shippingOrder?.containerArrivalDate || '',
|
|
257
|
+
containerClosureDate: shippingOrder?.containerClosureDate || '',
|
|
258
|
+
shipName: shippingOrder?.shipName || '',
|
|
259
|
+
remark: shippingOrder?.remark || '',
|
|
260
|
+
remindContainerDeparture: shippingOrder?.remindContainerDeparture || null
|
|
261
|
+
},
|
|
262
|
+
inventoryInfos: invInfos
|
|
263
|
+
}
|
|
294
264
|
|
|
295
|
-
|
|
265
|
+
return result
|
|
266
|
+
}
|
|
267
|
+
} catch (error) {
|
|
268
|
+
logger.error(`release-good-query[releaseGoodDetail]: ${error}`)
|
|
269
|
+
throw new Error(error)
|
|
296
270
|
}
|
|
297
271
|
}
|
|
298
272
|
|
|
@@ -300,6 +274,7 @@ export class ReleaseGoodQuery {
|
|
|
300
274
|
@Query(returns => ReleaseGoodList)
|
|
301
275
|
async releaseGoodRequests(@Ctx() context: any, @Args() params: ListParam): Promise<ReleaseGoodList> {
|
|
302
276
|
try {
|
|
277
|
+
console.time('t1')
|
|
303
278
|
const { domain, user }: { domain: Domain; user: User } = context.state
|
|
304
279
|
|
|
305
280
|
const statusFilter = params.filters.some(e => e.name === 'status')
|
|
@@ -310,6 +285,7 @@ export class ReleaseGoodQuery {
|
|
|
310
285
|
const orderRemarkFilter = params.filters.find(param => param.name === 'orderRemark')
|
|
311
286
|
const manifestedFilter = params.filters.find(param => param.name === 'manifested')
|
|
312
287
|
const orderInfoFilter = params.filters.find(param => param.name === 'name')
|
|
288
|
+
const typeFilter = params.filters.find(param => param.name === 'type')?.value
|
|
313
289
|
|
|
314
290
|
if (await checkUserBelongsDomain(domain, user)) {
|
|
315
291
|
if (!statusFilter && !params.filters.some(e => e.name === 'name')) {
|
|
@@ -393,12 +369,16 @@ export class ReleaseGoodQuery {
|
|
|
393
369
|
const fromDateParamIdx = params.filters.findIndex(param => param.name === 'fromDate')
|
|
394
370
|
if (fromDateParamIdx >= 0) {
|
|
395
371
|
let fromDateVal = new Date(params.filters[fromDateParamIdx].value)
|
|
372
|
+
let releaseDateFrom = params.filters.find(param => param.name === 'fromDate')?.value
|
|
396
373
|
params.filters.splice(fromDateParamIdx, 1)
|
|
397
374
|
|
|
398
375
|
params.filters.push({
|
|
399
|
-
name: 'createdAt',
|
|
376
|
+
name: typeFilter == 'b2c' ? 'releaseDate' : 'createdAt',
|
|
400
377
|
operator: 'gte',
|
|
401
|
-
value:
|
|
378
|
+
value:
|
|
379
|
+
typeFilter == 'b2c'
|
|
380
|
+
? releaseDateFrom
|
|
381
|
+
: fromDateVal.toISOString(),
|
|
402
382
|
relation: false
|
|
403
383
|
})
|
|
404
384
|
}
|
|
@@ -406,12 +386,16 @@ export class ReleaseGoodQuery {
|
|
|
406
386
|
const toDateParamIdx = params.filters.findIndex(param => param.name === 'toDate')
|
|
407
387
|
if (toDateParamIdx >= 0) {
|
|
408
388
|
let toDateVal = new Date(params.filters[toDateParamIdx].value)
|
|
389
|
+
let releaseDateTo = params.filters.find(param => param.name === 'toDate')?.value
|
|
409
390
|
params.filters.splice(toDateParamIdx, 1)
|
|
410
391
|
|
|
411
392
|
params.filters.push({
|
|
412
|
-
name: 'createdAt',
|
|
413
|
-
operator: 'lt',
|
|
414
|
-
value:
|
|
393
|
+
name: typeFilter == 'b2c' ? 'releaseDate' : 'createdAt',
|
|
394
|
+
operator: typeFilter == 'b2c' ? 'lte' : 'lt',
|
|
395
|
+
value:
|
|
396
|
+
typeFilter == 'b2c'
|
|
397
|
+
? releaseDateTo
|
|
398
|
+
: new Date(toDateVal.setDate(toDateVal.getDate() + 1)).toISOString(),
|
|
415
399
|
relation: false
|
|
416
400
|
})
|
|
417
401
|
}
|
|
@@ -520,9 +504,10 @@ export class ReleaseGoodQuery {
|
|
|
520
504
|
orderRemark: item?.remark ? true : false
|
|
521
505
|
}
|
|
522
506
|
})
|
|
523
|
-
|
|
507
|
+
console.timeEnd('t1')
|
|
524
508
|
return { items, total }
|
|
525
509
|
} catch (error) {
|
|
510
|
+
logger.error(`release-good-query[releaseGoodRequests]: ${error}`)
|
|
526
511
|
throw error
|
|
527
512
|
}
|
|
528
513
|
}
|
|
@@ -679,7 +664,7 @@ export class ReleaseGoodQuery {
|
|
|
679
664
|
async function prepOITempTable(domain: Domain, tx: EntityManager) {
|
|
680
665
|
await tx.query(
|
|
681
666
|
`
|
|
682
|
-
CREATE TEMP TABLE oi AS (
|
|
667
|
+
CREATE TEMP TABLE oi ON COMMIT DROP AS (
|
|
683
668
|
SELECT
|
|
684
669
|
SUM(oi.release_qty) as release_qty,
|
|
685
670
|
SUM(oi.release_uom_value) as release_uom_value,
|