@things-factory/sales-base 4.3.0-alpha.1 → 4.3.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/constants/attachment-type.js +2 -1
- package/dist-server/constants/attachment-type.js.map +1 -1
- package/dist-server/constants/index.js +2 -5
- package/dist-server/constants/index.js.map +1 -1
- package/dist-server/constants/order.js +12 -3
- package/dist-server/constants/order.js.map +1 -1
- package/dist-server/constants/release-good.js +9 -0
- package/dist-server/constants/release-good.js.map +1 -0
- package/dist-server/controllers/ecommerce/index.js +1 -5
- package/dist-server/controllers/ecommerce/index.js.map +1 -1
- package/dist-server/controllers/index.js +1 -5
- package/dist-server/controllers/index.js.map +1 -1
- package/dist-server/errors/index.js +1 -5
- package/dist-server/errors/index.js.map +1 -1
- package/dist-server/errors/validation-error.js +1 -5
- package/dist-server/errors/validation-error.js.map +1 -1
- package/dist-server/index.js +1 -5
- package/dist-server/index.js.map +1 -1
- package/dist-server/service/arrival-notice/index.js +1 -5
- package/dist-server/service/arrival-notice/index.js.map +1 -1
- package/dist-server/service/claim/index.js +1 -5
- package/dist-server/service/claim/index.js.map +1 -1
- package/dist-server/service/claim-detail/index.js +1 -5
- package/dist-server/service/claim-detail/index.js.map +1 -1
- package/dist-server/service/claim-order/index.js +1 -5
- package/dist-server/service/claim-order/index.js.map +1 -1
- package/dist-server/service/collection-order/index.js +1 -5
- package/dist-server/service/collection-order/index.js.map +1 -1
- package/dist-server/service/delivery-order/index.js +1 -5
- package/dist-server/service/delivery-order/index.js.map +1 -1
- package/dist-server/service/draft-release-good/draft-release-good-mutation.js +501 -0
- package/dist-server/service/draft-release-good/draft-release-good-mutation.js.map +1 -0
- package/dist-server/service/draft-release-good/draft-release-good-query.js +289 -0
- package/dist-server/service/draft-release-good/draft-release-good-query.js.map +1 -0
- package/dist-server/service/draft-release-good/draft-release-good-type.js +364 -0
- package/dist-server/service/draft-release-good/draft-release-good-type.js.map +1 -0
- package/dist-server/service/draft-release-good/draft-release-good.js +321 -0
- package/dist-server/service/draft-release-good/draft-release-good.js.map +1 -0
- package/dist-server/service/draft-release-good/index.js +21 -0
- package/dist-server/service/draft-release-good/index.js.map +1 -0
- package/dist-server/service/goods-receival-note/index.js +1 -5
- package/dist-server/service/goods-receival-note/index.js.map +1 -1
- package/dist-server/service/index.js +48 -24
- package/dist-server/service/index.js.map +1 -1
- package/dist-server/service/inventory-check/index.js +1 -5
- package/dist-server/service/inventory-check/index.js.map +1 -1
- package/dist-server/service/invoice/index.js +1 -5
- package/dist-server/service/invoice/index.js.map +1 -1
- package/dist-server/service/invoice-product/index.js +1 -5
- package/dist-server/service/invoice-product/index.js.map +1 -1
- package/dist-server/service/job-sheet/index.js +1 -5
- package/dist-server/service/job-sheet/index.js.map +1 -1
- package/dist-server/service/order-inventory/index.js +1 -5
- package/dist-server/service/order-inventory/index.js.map +1 -1
- package/dist-server/service/order-inventory/order-inventory-query.js +38 -1
- package/dist-server/service/order-inventory/order-inventory-query.js.map +1 -1
- package/dist-server/service/order-inventory/order-inventory-types.js +9 -1
- package/dist-server/service/order-inventory/order-inventory-types.js.map +1 -1
- package/dist-server/service/order-inventory/order-inventory.js +5 -1
- package/dist-server/service/order-inventory/order-inventory.js.map +1 -1
- package/dist-server/service/order-product/index.js +1 -5
- package/dist-server/service/order-product/index.js.map +1 -1
- package/dist-server/service/order-product/order-product-types.js +13 -13
- package/dist-server/service/order-product/order-product-types.js.map +1 -1
- package/dist-server/service/order-product/order-product.js +39 -4
- package/dist-server/service/order-product/order-product.js.map +1 -1
- package/dist-server/service/order-tote/index.js +21 -0
- package/dist-server/service/order-tote/index.js.map +1 -0
- package/dist-server/service/order-tote/order-tote-mutation.js +56 -0
- package/dist-server/service/order-tote/order-tote-mutation.js.map +1 -0
- package/dist-server/service/order-tote/order-tote-query.js +123 -0
- package/dist-server/service/order-tote/order-tote-query.js.map +1 -0
- package/dist-server/service/order-tote/order-tote-types.js +79 -0
- package/dist-server/service/order-tote/order-tote-types.js.map +1 -0
- package/dist-server/service/order-tote/order-tote.js +91 -0
- package/dist-server/service/order-tote/order-tote.js.map +1 -0
- package/dist-server/service/order-tote-item/index.js +21 -0
- package/dist-server/service/order-tote-item/index.js.map +1 -0
- package/dist-server/service/order-tote-item/order-tote-item-mutation.js +56 -0
- package/dist-server/service/order-tote-item/order-tote-item-mutation.js.map +1 -0
- package/dist-server/service/order-tote-item/order-tote-item-query.js +100 -0
- package/dist-server/service/order-tote-item/order-tote-item-query.js.map +1 -0
- package/dist-server/service/order-tote-item/order-tote-item-types.js +91 -0
- package/dist-server/service/order-tote-item/order-tote-item-types.js.map +1 -0
- package/dist-server/service/order-tote-item/order-tote-item.js +104 -0
- package/dist-server/service/order-tote-item/order-tote-item.js.map +1 -0
- package/dist-server/service/order-tote-seal/index.js +21 -0
- package/dist-server/service/order-tote-seal/index.js.map +1 -0
- package/dist-server/service/order-tote-seal/order-tote-seal-mutation.js +56 -0
- package/dist-server/service/order-tote-seal/order-tote-seal-mutation.js.map +1 -0
- package/dist-server/service/order-tote-seal/order-tote-seal-query.js +97 -0
- package/dist-server/service/order-tote-seal/order-tote-seal-query.js.map +1 -0
- package/dist-server/service/order-tote-seal/order-tote-seal-types.js +71 -0
- package/dist-server/service/order-tote-seal/order-tote-seal-types.js.map +1 -0
- package/dist-server/service/order-tote-seal/order-tote-seal.js +71 -0
- package/dist-server/service/order-tote-seal/order-tote-seal.js.map +1 -0
- package/dist-server/service/order-vas/index.js +1 -5
- package/dist-server/service/order-vas/index.js.map +1 -1
- package/dist-server/service/others/index.js +1 -5
- package/dist-server/service/others/index.js.map +1 -1
- package/dist-server/service/others/other-query.js +37 -2
- package/dist-server/service/others/other-query.js.map +1 -1
- package/dist-server/service/purchase-order/index.js +1 -5
- package/dist-server/service/purchase-order/index.js.map +1 -1
- package/dist-server/service/purchase-order-other-charge/index.js +1 -5
- package/dist-server/service/purchase-order-other-charge/index.js.map +1 -1
- package/dist-server/service/release-good/index.js +1 -5
- package/dist-server/service/release-good/index.js.map +1 -1
- package/dist-server/service/release-good/release-good-mutation.js +23 -1
- package/dist-server/service/release-good/release-good-mutation.js.map +1 -1
- package/dist-server/service/release-good/release-good-query.js +28 -2
- package/dist-server/service/release-good/release-good-query.js.map +1 -1
- package/dist-server/service/release-good/release-good.js +32 -12
- package/dist-server/service/release-good/release-good.js.map +1 -1
- package/dist-server/service/retail-replenishment-order/index.js +1 -5
- package/dist-server/service/retail-replenishment-order/index.js.map +1 -1
- package/dist-server/service/return-order/index.js +1 -5
- package/dist-server/service/return-order/index.js.map +1 -1
- package/dist-server/service/reverse-kitting-order/index.js +1 -5
- package/dist-server/service/reverse-kitting-order/index.js.map +1 -1
- package/dist-server/service/reverse-kitting-order-inventory/index.js +1 -5
- package/dist-server/service/reverse-kitting-order-inventory/index.js.map +1 -1
- package/dist-server/service/shipping-order/index.js +1 -5
- package/dist-server/service/shipping-order/index.js.map +1 -1
- package/dist-server/service/transfer-order/index.js +1 -5
- package/dist-server/service/transfer-order/index.js.map +1 -1
- package/dist-server/service/vas/index.js +1 -5
- package/dist-server/service/vas/index.js.map +1 -1
- package/dist-server/service/vas-order/index.js +1 -5
- package/dist-server/service/vas-order/index.js.map +1 -1
- package/dist-server/utils/index.js +1 -5
- package/dist-server/utils/index.js.map +1 -1
- package/dist-server/utils/inventory-util.js +258 -99
- package/dist-server/utils/inventory-util.js.map +1 -1
- package/dist-server/utils/order-no-generator.js +7 -0
- package/dist-server/utils/order-no-generator.js.map +1 -1
- package/package.json +13 -13
- package/server/constants/attachment-type.ts +2 -1
- package/server/constants/index.ts +1 -0
- package/server/constants/order.ts +12 -2
- package/server/constants/release-good.ts +6 -0
- package/server/service/draft-release-good/draft-release-good-mutation.ts +671 -0
- package/server/service/draft-release-good/draft-release-good-query.ts +314 -0
- package/server/service/draft-release-good/draft-release-good-type.ts +261 -0
- package/server/service/draft-release-good/draft-release-good.ts +270 -0
- package/server/service/draft-release-good/index.ts +9 -0
- package/server/service/index.ts +51 -21
- package/server/service/order-inventory/order-inventory-query.ts +40 -2
- package/server/service/order-inventory/order-inventory-types.ts +6 -0
- package/server/service/order-inventory/order-inventory.ts +5 -5
- package/server/service/order-product/order-product-types.ts +5 -3
- package/server/service/order-product/order-product.ts +30 -3
- package/server/service/order-tote/index.ts +9 -0
- package/server/service/order-tote/order-tote-mutation.ts +30 -0
- package/server/service/order-tote/order-tote-query.ts +114 -0
- package/server/service/order-tote/order-tote-types.ts +47 -0
- package/server/service/order-tote/order-tote.ts +62 -0
- package/server/service/order-tote-item/index.ts +9 -0
- package/server/service/order-tote-item/order-tote-item-mutation.ts +30 -0
- package/server/service/order-tote-item/order-tote-item-query.ts +88 -0
- package/server/service/order-tote-item/order-tote-item-types.ts +56 -0
- package/server/service/order-tote-item/order-tote-item.ts +72 -0
- package/server/service/order-tote-seal/index.ts +9 -0
- package/server/service/order-tote-seal/order-tote-seal-mutation.ts +30 -0
- package/server/service/order-tote-seal/order-tote-seal-query.ts +60 -0
- package/server/service/order-tote-seal/order-tote-seal-types.ts +41 -0
- package/server/service/order-tote-seal/order-tote-seal.ts +46 -0
- package/server/service/others/other-query.ts +43 -8
- package/server/service/release-good/release-good-mutation.ts +24 -2
- package/server/service/release-good/release-good-query.ts +57 -30
- package/server/service/release-good/release-good.ts +28 -9
- package/server/utils/inventory-util.ts +287 -106
- package/server/utils/order-no-generator.ts +42 -48
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { Field, ObjectType } from 'type-graphql'
|
|
2
|
+
import { Column, Entity, Index, ManyToOne, PrimaryGeneratedColumn, RelationId, UpdateDateColumn } from 'typeorm'
|
|
3
|
+
|
|
4
|
+
import { User } from '@things-factory/auth-base'
|
|
5
|
+
import { Domain } from '@things-factory/shell'
|
|
6
|
+
import { OrderTote } from '../order-tote/order-tote'
|
|
7
|
+
|
|
8
|
+
@Entity()
|
|
9
|
+
@Index('ix_order_tote_seal_0', (orderToteSeal: OrderToteSeal) => [orderToteSeal.name], { unique: true })
|
|
10
|
+
@ObjectType()
|
|
11
|
+
export class OrderToteSeal {
|
|
12
|
+
@PrimaryGeneratedColumn('uuid')
|
|
13
|
+
@Field()
|
|
14
|
+
id: string
|
|
15
|
+
|
|
16
|
+
@ManyToOne(type => Domain)
|
|
17
|
+
@Field()
|
|
18
|
+
domain: Domain
|
|
19
|
+
|
|
20
|
+
@RelationId((orderToteSeal: OrderToteSeal) => orderToteSeal.domain)
|
|
21
|
+
domainId: string
|
|
22
|
+
|
|
23
|
+
@Column()
|
|
24
|
+
@Field()
|
|
25
|
+
name: string
|
|
26
|
+
|
|
27
|
+
@ManyToOne(type => OrderTote)
|
|
28
|
+
@Field(type => OrderTote, { nullable: true })
|
|
29
|
+
orderTote?: OrderTote
|
|
30
|
+
|
|
31
|
+
@RelationId((orderToteSeal: OrderToteSeal) => orderToteSeal.orderTote)
|
|
32
|
+
orderToteId: string
|
|
33
|
+
|
|
34
|
+
@UpdateDateColumn()
|
|
35
|
+
@Field({ nullable: true })
|
|
36
|
+
updatedAt: Date
|
|
37
|
+
|
|
38
|
+
@ManyToOne(type => User, {
|
|
39
|
+
nullable: true
|
|
40
|
+
})
|
|
41
|
+
@Field({ nullable: true })
|
|
42
|
+
updater: User
|
|
43
|
+
|
|
44
|
+
@RelationId((orderToteSeal: OrderToteSeal) => orderToteSeal.updater)
|
|
45
|
+
updaterId: string
|
|
46
|
+
}
|
|
@@ -20,6 +20,41 @@ import { InventoryUtil } from '../../utils'
|
|
|
20
20
|
|
|
21
21
|
@Resolver()
|
|
22
22
|
export class OtherQuery {
|
|
23
|
+
@Directive('@privilege(category: "inventory", privilege: "query")')
|
|
24
|
+
@Directive('@transaction')
|
|
25
|
+
@Query(returns => InventoryProductGroupList)
|
|
26
|
+
async allBizplaceProductInventory(@Ctx() context: any, @Args() params: ListParam): Promise<InventoryProductGroupList> {
|
|
27
|
+
const { domain, user, tx, bizplace }: { domain: Domain; user: User; tx: EntityManager; bizplace: Bizplace } =
|
|
28
|
+
context.state
|
|
29
|
+
|
|
30
|
+
let permittedBizplaces: Bizplace[] = await getPermittedBizplaces(domain, user)
|
|
31
|
+
|
|
32
|
+
let bizplaceId: any = params.filters.find(filter => filter.name === 'bizplace_id').value
|
|
33
|
+
let foundPermittedBizplace: Bizplace
|
|
34
|
+
let companyBizplace: Bizplace
|
|
35
|
+
|
|
36
|
+
if (bizplaceId) {
|
|
37
|
+
foundPermittedBizplace = permittedBizplaces.find(biz => biz.id == bizplaceId)
|
|
38
|
+
|
|
39
|
+
if (foundPermittedBizplace) {
|
|
40
|
+
if (!foundPermittedBizplace.company?.id) {
|
|
41
|
+
foundPermittedBizplace = await tx.getRepository(Bizplace).findOne(foundPermittedBizplace.id, {
|
|
42
|
+
relations: ['company', 'company.domain']
|
|
43
|
+
})
|
|
44
|
+
}
|
|
45
|
+
const companyDomain: Domain = foundPermittedBizplace.company.domain
|
|
46
|
+
companyBizplace = await tx.getRepository(Bizplace).findOne({ where: { domain: companyDomain } })
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
const bizplaces: Bizplace[] = [foundPermittedBizplace, companyBizplace]
|
|
51
|
+
if (bizplace) bizplaces.push(bizplace)
|
|
52
|
+
|
|
53
|
+
const { items, total } = await InventoryUtil.bizplaceProductInventory(bizplaces, params, context, tx)
|
|
54
|
+
|
|
55
|
+
return { items, total }
|
|
56
|
+
}
|
|
57
|
+
|
|
23
58
|
@Directive('@privilege(category: "inventory", privilege: "query")')
|
|
24
59
|
@Directive('@transaction')
|
|
25
60
|
@Query(returns => InventoryProductGroupList)
|
|
@@ -165,11 +200,11 @@ export class OtherQuery {
|
|
|
165
200
|
inventory:
|
|
166
201
|
total > 0
|
|
167
202
|
? {
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
203
|
+
...items[0],
|
|
204
|
+
remainQty: total > 0 ? items[0].remainQty : null,
|
|
205
|
+
remainUomValue: total > 0 ? items[0].remainUomValue : null,
|
|
206
|
+
remainUomValueWithUom: total > 0 ? items[0].remainUomValueWithUom : ''
|
|
207
|
+
}
|
|
173
208
|
: null,
|
|
174
209
|
productId: total > 0 ? items[0].productId : null,
|
|
175
210
|
productSKU: total > 0 ? items[0].productSKU : orderInventory.productSKU,
|
|
@@ -304,7 +339,7 @@ export class OtherQuery {
|
|
|
304
339
|
let productDetail: ProductDetail
|
|
305
340
|
const hasConditions: boolean = Boolean(
|
|
306
341
|
(orderProduct?.packingType && orderProduct?.packingType.trim() != '') ||
|
|
307
|
-
|
|
342
|
+
(orderProduct?.uom && orderProduct?.uom.trim() != '')
|
|
308
343
|
)
|
|
309
344
|
let productDetailCondition: any = { product: foundProduct }
|
|
310
345
|
|
|
@@ -327,8 +362,8 @@ export class OtherQuery {
|
|
|
327
362
|
? productDetail.uomValue
|
|
328
363
|
: null
|
|
329
364
|
: orderProduct?.uomValue
|
|
330
|
-
|
|
331
|
-
|
|
365
|
+
? orderProduct.uomValue
|
|
366
|
+
: productDetail.uomValue
|
|
332
367
|
|
|
333
368
|
newOrderProduct = {
|
|
334
369
|
...orderProduct,
|
|
@@ -134,7 +134,7 @@ export class ReleaseGoodMutation {
|
|
|
134
134
|
context,
|
|
135
135
|
tx
|
|
136
136
|
)
|
|
137
|
-
} catch (error) {}
|
|
137
|
+
} catch (error) { }
|
|
138
138
|
|
|
139
139
|
if (errorsCaught.length)
|
|
140
140
|
throw new ValidationError({
|
|
@@ -226,7 +226,8 @@ export class ReleaseGoodMutation {
|
|
|
226
226
|
|
|
227
227
|
foundReleaseGood = await tx.getRepository(ReleaseGood).save({
|
|
228
228
|
...foundReleaseGood,
|
|
229
|
-
...releaseGood
|
|
229
|
+
...releaseGood,
|
|
230
|
+
remark: releaseGood?.remark ? releaseGood.remark : null
|
|
230
231
|
})
|
|
231
232
|
|
|
232
233
|
return foundReleaseGood
|
|
@@ -300,6 +301,27 @@ export class ReleaseGoodMutation {
|
|
|
300
301
|
|
|
301
302
|
return receivedRO
|
|
302
303
|
}
|
|
304
|
+
|
|
305
|
+
@Directive('@privilege(category: "order_customer", privilege: "mutation")')
|
|
306
|
+
@Directive('@transaction')
|
|
307
|
+
@Mutation(returns => Boolean)
|
|
308
|
+
async executeOrderRemark(@Arg('releaseGoodNo') releaseGoodNo: string, @Ctx() context: any): Promise<boolean> {
|
|
309
|
+
const { domain, tx, user } = context.state
|
|
310
|
+
|
|
311
|
+
await tx.getRepository(ReleaseGood).update(
|
|
312
|
+
{
|
|
313
|
+
domain,
|
|
314
|
+
name: releaseGoodNo
|
|
315
|
+
},
|
|
316
|
+
{
|
|
317
|
+
checkedRemarkAt: new Date(),
|
|
318
|
+
checkedRemarkUser: user,
|
|
319
|
+
checkedRemarkBy: user.name
|
|
320
|
+
}
|
|
321
|
+
)
|
|
322
|
+
|
|
323
|
+
return true
|
|
324
|
+
}
|
|
303
325
|
}
|
|
304
326
|
|
|
305
327
|
export async function deleteReleaseGood(tx: EntityManager, name: string, user: User, domain: Domain): Promise<boolean> {
|
|
@@ -264,6 +264,7 @@ export class ReleaseGoodQuery {
|
|
|
264
264
|
const noOfItemsFilter = params.filters.find(param => param.name === 'noOfItems')
|
|
265
265
|
const skuFilter = params.filters.find(param => param.name === 'sku')
|
|
266
266
|
const routeId = params.filters.find(param => param.name === 'routeId')
|
|
267
|
+
const orderRemarkFilter = params.filters.find(param => param.name === 'orderRemark')
|
|
267
268
|
|
|
268
269
|
if (await checkUserBelongsDomain(domain, user)) {
|
|
269
270
|
if (!statusFilter && !params.filters.some(e => e.name === 'name')) {
|
|
@@ -298,6 +299,27 @@ export class ReleaseGoodQuery {
|
|
|
298
299
|
}
|
|
299
300
|
}
|
|
300
301
|
|
|
302
|
+
if (orderRemarkFilter) {
|
|
303
|
+
const orderRemarkIdx = params.filters.findIndex(param => param.name === 'orderRemark')
|
|
304
|
+
if (orderRemarkFilter.value == true) {
|
|
305
|
+
params.filters.splice(orderRemarkIdx, 1)
|
|
306
|
+
params.filters.push({
|
|
307
|
+
name: 'remark',
|
|
308
|
+
operator: 'is_not_null',
|
|
309
|
+
value: null,
|
|
310
|
+
relation: false
|
|
311
|
+
})
|
|
312
|
+
} else {
|
|
313
|
+
params.filters.splice(orderRemarkIdx, 1)
|
|
314
|
+
params.filters.push({
|
|
315
|
+
name: 'remark',
|
|
316
|
+
operator: 'is_null',
|
|
317
|
+
value: null,
|
|
318
|
+
relation: false
|
|
319
|
+
})
|
|
320
|
+
}
|
|
321
|
+
}
|
|
322
|
+
|
|
301
323
|
const fromDateParamIdx = params.filters.findIndex(param => param.name === 'fromDate')
|
|
302
324
|
if (fromDateParamIdx >= 0) {
|
|
303
325
|
let fromDateVal = new Date(params.filters[fromDateParamIdx].value)
|
|
@@ -378,7 +400,14 @@ export class ReleaseGoodQuery {
|
|
|
378
400
|
|
|
379
401
|
qb.orderBy(sort)
|
|
380
402
|
|
|
381
|
-
|
|
403
|
+
let [items, total] = await qb.getManyAndCount()
|
|
404
|
+
|
|
405
|
+
items = items.map(item => {
|
|
406
|
+
return {
|
|
407
|
+
...item,
|
|
408
|
+
orderRemark: item?.remark ? true : false
|
|
409
|
+
}
|
|
410
|
+
})
|
|
382
411
|
|
|
383
412
|
return { items, total }
|
|
384
413
|
} catch (error) {
|
|
@@ -438,27 +467,24 @@ export class ReleaseGoodQuery {
|
|
|
438
467
|
${batchId ? `AND LOWER(${INV_ALIAS}.batch_id) LIKE '%${batchId.toLowerCase()}%'` : ''}
|
|
439
468
|
${packingType ? `AND LOWER(${INV_ALIAS}.packing_type) LIKE '%${packingType.toLowerCase()}%'` : ''}
|
|
440
469
|
${containerNo ? `AND LOWER(${GAN_ALIAS}.container_no) LIKE '%${containerNo.toLowerCase()}%'` : ''}
|
|
441
|
-
${
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
filters.find((filter: { name: string; operator: string; value: any }) => filter.name === 'inventory')
|
|
453
|
-
.operator
|
|
454
|
-
} (
|
|
470
|
+
${product?.length > 0 && product[0]
|
|
471
|
+
? `AND ${PROD_ALIAS}.id IN (${product.map((id: string) => `'${id}'`).join(', ')})`
|
|
472
|
+
: product[0] === null
|
|
473
|
+
? `AND ${PROD_ALIAS}.id isnull`
|
|
474
|
+
: ''
|
|
475
|
+
}
|
|
476
|
+
${inventory?.length > 0
|
|
477
|
+
? `
|
|
478
|
+
AND (${INV_ALIAS}.batch_id, ${PROD_ALIAS}.id) ${filters.find((filter: { name: string; operator: string; value: any }) => filter.name === 'inventory')
|
|
479
|
+
.operator
|
|
480
|
+
} (
|
|
455
481
|
${inventory
|
|
456
|
-
|
|
457
|
-
|
|
482
|
+
.map((inv: { batchId: string; productId: string }) => `('${inv.batchId}', '${inv.productId}')`)
|
|
483
|
+
.join(', ')}
|
|
458
484
|
)
|
|
459
485
|
`
|
|
460
|
-
|
|
461
|
-
|
|
486
|
+
: ''
|
|
487
|
+
}
|
|
462
488
|
`
|
|
463
489
|
|
|
464
490
|
// ${product?.length > 0 ? `AND ${PROD_ALIAS}.id IN (${product.map((id: string) => id ? `'${id}'` : null).join(', ')})` : ''}
|
|
@@ -632,7 +658,8 @@ export async function bulkReleaseGoodsAvailableItemsFunction(
|
|
|
632
658
|
packing_type: raw.packingType,
|
|
633
659
|
packing_size: raw.packingSize,
|
|
634
660
|
uom: raw.uom,
|
|
635
|
-
|
|
661
|
+
releaseQty: raw.releaseQty,
|
|
662
|
+
release_qty: raw.releaseQty,
|
|
636
663
|
}
|
|
637
664
|
})
|
|
638
665
|
)
|
|
@@ -812,16 +839,16 @@ function _extractData(rawData, validatedData) {
|
|
|
812
839
|
!raw.productId || !raw.productDetailId
|
|
813
840
|
? 'inventory or product not found'
|
|
814
841
|
: raw.releaseQty <= 0
|
|
815
|
-
|
|
816
|
-
|
|
817
|
-
|
|
818
|
-
|
|
819
|
-
|
|
820
|
-
|
|
821
|
-
|
|
822
|
-
|
|
823
|
-
|
|
824
|
-
|
|
842
|
+
? 'invalid release qty'
|
|
843
|
+
: raw.assignedQty < raw.releaseQty
|
|
844
|
+
? 'insufficient stock'
|
|
845
|
+
: raw.releaseDate == ''
|
|
846
|
+
? 'release date is empty'
|
|
847
|
+
: releaseDate < _getStdDateStr(new Date())
|
|
848
|
+
? 'backdate is not allowed'
|
|
849
|
+
: !raw.refNo
|
|
850
|
+
? 'ref no is empty'
|
|
851
|
+
: ''
|
|
825
852
|
}
|
|
826
853
|
})
|
|
827
854
|
}
|
|
@@ -28,25 +28,29 @@ import {
|
|
|
28
28
|
OrderProduct,
|
|
29
29
|
OrderVas,
|
|
30
30
|
ShippingOrder,
|
|
31
|
-
ShippingOrderInfo
|
|
31
|
+
ShippingOrderInfo,
|
|
32
32
|
} from '../'
|
|
33
33
|
|
|
34
|
+
import { ReleaseOrderType } from '../../constants'
|
|
35
|
+
|
|
34
36
|
const ORMCONFIG = config.get('ormconfig', {})
|
|
35
37
|
const DATABASE_TYPE = ORMCONFIG.type
|
|
36
38
|
|
|
37
|
-
export enum ReleaseOrderType {
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
}
|
|
39
|
+
// export enum ReleaseOrderType {
|
|
40
|
+
// B2B = 'b2b',
|
|
41
|
+
// B2C = 'b2c'
|
|
42
|
+
// }
|
|
41
43
|
|
|
42
44
|
export enum DispatchmentStatus {
|
|
43
45
|
READY_TO_DISPATCH = 'READY_TO_DISPATCH',
|
|
44
46
|
DISPATCHED = 'DISPATCHED'
|
|
45
47
|
}
|
|
48
|
+
|
|
46
49
|
@Entity()
|
|
47
50
|
@Index('ix_release-good_0', (releaseGood: ReleaseGood) => [releaseGood.domain, releaseGood.name], { unique: true })
|
|
48
51
|
@Index('ix_release-good_1', (releaseGood: ReleaseGood) => [releaseGood.domain, releaseGood.refNo])
|
|
49
52
|
@Index('ix_release-good_2', (releaseGood: ReleaseGood) => [releaseGood.domain, releaseGood.refNo2])
|
|
53
|
+
@Index('ix_release-good_3', (releaseGood: ReleaseGood) => [releaseGood.domain, releaseGood.remark])
|
|
50
54
|
@ObjectType()
|
|
51
55
|
export class ReleaseGood {
|
|
52
56
|
@PrimaryGeneratedColumn('uuid')
|
|
@@ -92,8 +96,8 @@ export class ReleaseGood {
|
|
|
92
96
|
DATABASE_TYPE == 'postgres' || DATABASE_TYPE == 'mysql' || DATABASE_TYPE == 'mariadb'
|
|
93
97
|
? 'enum'
|
|
94
98
|
: DATABASE_TYPE == 'oracle'
|
|
95
|
-
|
|
96
|
-
|
|
99
|
+
? 'varchar2'
|
|
100
|
+
: 'smallint',
|
|
97
101
|
enum: ReleaseOrderType,
|
|
98
102
|
default: ReleaseOrderType.B2B
|
|
99
103
|
})
|
|
@@ -160,8 +164,8 @@ export class ReleaseGood {
|
|
|
160
164
|
DATABASE_TYPE == 'postgres' || DATABASE_TYPE == 'mysql' || DATABASE_TYPE == 'mariadb'
|
|
161
165
|
? 'enum'
|
|
162
166
|
: DATABASE_TYPE == 'oracle'
|
|
163
|
-
|
|
164
|
-
|
|
167
|
+
? 'varchar2'
|
|
168
|
+
: 'smallint',
|
|
165
169
|
enum: DispatchmentStatus,
|
|
166
170
|
default: DispatchmentStatus.READY_TO_DISPATCH
|
|
167
171
|
})
|
|
@@ -306,6 +310,18 @@ export class ReleaseGood {
|
|
|
306
310
|
@Field()
|
|
307
311
|
updatedAt: Date
|
|
308
312
|
|
|
313
|
+
@ManyToOne(type => User)
|
|
314
|
+
@Field(type => User, { nullable: true })
|
|
315
|
+
checkedRemarkUser: User
|
|
316
|
+
|
|
317
|
+
@Column({ nullable: true })
|
|
318
|
+
@Field({ nullable: true })
|
|
319
|
+
checkedRemarkBy: string
|
|
320
|
+
|
|
321
|
+
@Column({ nullable: true })
|
|
322
|
+
@Field({ nullable: true })
|
|
323
|
+
checkedRemarkAt: Date
|
|
324
|
+
|
|
309
325
|
@ManyToOne(type => User)
|
|
310
326
|
@Field(type => User, { nullable: true })
|
|
311
327
|
acceptedBy: User
|
|
@@ -405,4 +421,7 @@ export class ReleaseGood {
|
|
|
405
421
|
@Column({ nullable: true })
|
|
406
422
|
@Field({ nullable: true })
|
|
407
423
|
stopId: string
|
|
424
|
+
|
|
425
|
+
@Field({ nullable: true })
|
|
426
|
+
orderRemark: Boolean
|
|
408
427
|
}
|