@things-factory/worksheet-base 6.0.49 → 6.0.52
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/controllers/inbound/putaway-returning-worksheet-controller.js +1 -3
- package/dist-server/controllers/inbound/putaway-returning-worksheet-controller.js.map +1 -1
- package/dist-server/controllers/inbound/unloading-returning-worksheet-controller.js +5 -1
- package/dist-server/controllers/inbound/unloading-returning-worksheet-controller.js.map +1 -1
- package/dist-server/controllers/inspect/cycle-count-worksheet-controller.js +1 -1
- package/dist-server/controllers/inspect/cycle-count-worksheet-controller.js.map +1 -1
- package/dist-server/controllers/outbound/loading-worksheet-controller.js +3 -3
- package/dist-server/controllers/outbound/loading-worksheet-controller.js.map +1 -1
- package/dist-server/controllers/outbound/returning-worksheet-controller.js +1 -1
- package/dist-server/controllers/outbound/returning-worksheet-controller.js.map +1 -1
- package/dist-server/graphql/resolvers/worksheet/packing-worksheet.js +1 -1
- package/dist-server/graphql/resolvers/worksheet/packing-worksheet.js.map +1 -1
- package/dist-server/tsconfig.tsbuildinfo +1 -1
- package/package.json +2 -2
- package/server/controllers/inbound/putaway-returning-worksheet-controller.ts +5 -3
- package/server/controllers/inbound/unloading-returning-worksheet-controller.ts +5 -1
- package/server/controllers/inspect/cycle-count-worksheet-controller.ts +1 -1
- package/server/controllers/outbound/loading-worksheet-controller.ts +3 -3
- package/server/controllers/outbound/returning-worksheet-controller.ts +1 -1
- package/server/graphql/resolvers/worksheet/packing-worksheet.ts +2 -2
|
@@ -10,9 +10,7 @@ const utils_1 = require("../../utils");
|
|
|
10
10
|
const vas_worksheet_controller_1 = require("../vas/vas-worksheet-controller");
|
|
11
11
|
class PutawayReturningWorksheetController extends vas_worksheet_controller_1.VasWorksheetController {
|
|
12
12
|
async generatePutawayReturnWorksheet(returnOrderNo, inventories) {
|
|
13
|
-
let returnOrder = await this.findRefOrder(sales_base_1.ReturnOrder, { domain: this.domain, name: returnOrderNo }, [
|
|
14
|
-
'bizplace'
|
|
15
|
-
]);
|
|
13
|
+
let returnOrder = await this.findRefOrder(sales_base_1.ReturnOrder, { domain: { id: this.domain.id }, name: returnOrderNo }, ['bizplace']);
|
|
16
14
|
const bizplace = returnOrder.bizplace;
|
|
17
15
|
const unloadingWorksheet = await this.findWorksheetByRefOrder(returnOrder, constants_1.WORKSHEET_TYPE.UNLOADING_RETURN, ['bufferLocation']);
|
|
18
16
|
const bufferLocation = unloadingWorksheet.bufferLocation;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"putaway-returning-worksheet-controller.js","sourceRoot":"","sources":["../../../server/controllers/inbound/putaway-returning-worksheet-controller.ts"],"names":[],"mappings":"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","sourcesContent":["import { Equal, In, Not } from 'typeorm'\n\nimport { Bizplace } from '@things-factory/biz-base'\nimport {\n ORDER_INVENTORY_STATUS,\n ORDER_PRODUCT_STATUS,\n ORDER_STATUS,\n ORDER_TYPES,\n OrderInventory,\n OrderNoGenerator,\n ReturnOrder\n} from '@things-factory/sales-base'\nimport {\n Inventory,\n INVENTORY_STATUS,\n INVENTORY_TRANSACTION_TYPE,\n Location,\n LOCATION_TYPE,\n Pallet,\n Warehouse\n} from '@things-factory/warehouse-base'\n\nimport { WORKSHEET_STATUS, WORKSHEET_TYPE } from '../../constants'\nimport { Worksheet, WorksheetDetail } from '../../entities'\nimport { switchLocationStatus } from '../../utils'\nimport { VasWorksheetController } from '../vas/vas-worksheet-controller'\n\nexport class PutawayReturningWorksheetController extends VasWorksheetController {\n async generatePutawayReturnWorksheet(returnOrderNo: string, inventories: Inventory[]): Promise<Worksheet> {\n let returnOrder: ReturnOrder = await this.findRefOrder(ReturnOrder, { domain: this.domain, name: returnOrderNo }, [\n 'bizplace'\n ])\n\n const bizplace: Bizplace = returnOrder.bizplace\n const unloadingWorksheet: Worksheet = await this.findWorksheetByRefOrder(\n returnOrder,\n WORKSHEET_TYPE.UNLOADING_RETURN,\n ['bufferLocation']\n )\n const bufferLocation: Location = unloadingWorksheet.bufferLocation\n\n // Check whether putaway worksheet is exists or not\n let worksheet: Worksheet\n try {\n worksheet = await this.findWorksheetByRefOrder(returnOrder, WORKSHEET_TYPE.PUTAWAY_RETURN)\n } catch (e) {}\n\n let oiStatus: string = ORDER_PRODUCT_STATUS.UNLOADED // Default status of order inventories is UNLOADED\n let wsdStatus: string = WORKSHEET_STATUS.DEACTIVATED // Default status of worksheet is DEACTIVATED\n if (!worksheet) {\n // If it's not exists create new putaway worksheet\n worksheet = await this.createWorksheet(returnOrder, WORKSHEET_TYPE.PUTAWAY_RETURN, { bufferLocation })\n } else {\n // If there is putaway worksheet. It means unloading is completed partially.\n // So status of newly created worksheet details and order inventories should be changed to\n // Executing situation.\n oiStatus = ORDER_PRODUCT_STATUS.PUTTING_AWAY // Default status = PUTTING_AWAY\n wsdStatus = WORKSHEET_STATUS.EXECUTING // Default status = EXECUTING\n }\n\n if (inventories.some((inv: Inventory) => !(inv instanceof Inventory))) {\n inventories = await this.trxMgr.getRepository(Inventory).findByIds(inventories.map((inv: Inventory) => inv.id))\n }\n\n for (let inventory of inventories) {\n inventory.status = INVENTORY_STATUS.PUTTING_AWAY\n inventory.updater = this.user\n inventory = await this.trxMgr.getRepository(Inventory).save(inventory)\n\n let targetInventory: OrderInventory = new OrderInventory()\n targetInventory.domain = this.domain\n targetInventory.bizplace = bizplace\n targetInventory.name = OrderNoGenerator.orderInventory()\n targetInventory.status = oiStatus\n targetInventory.type = ORDER_TYPES.RETURN_ORDER\n targetInventory.returnOrder = returnOrder\n targetInventory.inventory = inventory\n targetInventory.creator = this.user\n targetInventory.updater = this.user\n targetInventory = await this.trxMgr.getRepository(OrderInventory).save(targetInventory)\n\n worksheet.worksheetDetails = await this.createWorksheetDetails(\n worksheet,\n WORKSHEET_TYPE.PUTAWAY_RETURN,\n [targetInventory],\n { status: wsdStatus, fromLocation: bufferLocation }\n )\n }\n\n return worksheet\n }\n\n async activatePutawayReturning(\n worksheetNo: string,\n putawayWorksheetDetails: Partial<WorksheetDetail>[]\n ): Promise<Worksheet> {\n let worksheet: Worksheet = await this.findActivatableWorksheet(worksheetNo, WORKSHEET_TYPE.PUTAWAY_RETURN, [\n 'returnOrder',\n 'worksheetDetails',\n 'worksheetDetails.targetInventory'\n ])\n\n let returnOrder: ReturnOrder = worksheet.returnOrder\n const nonFinishedVasCnt: number = await this.trxMgr.getRepository(Worksheet).count({\n where: {\n domain: { id: this.domain.id },\n returnOrder: { id: returnOrder.id },\n type: WORKSHEET_TYPE.VAS,\n status: Not(Equal(WORKSHEET_STATUS.DONE))\n }\n })\n if (nonFinishedVasCnt) return\n\n const worksheetDetails: WorksheetDetail[] = worksheet.worksheetDetails\n const targetInventories: OrderInventory[] = worksheetDetails.map((wsd: WorksheetDetail) => {\n let targetInventory: OrderInventory = wsd.targetInventory\n targetInventory.status = ORDER_PRODUCT_STATUS.PUTTING_AWAY\n targetInventory.updater = this.user\n return targetInventory\n })\n await this.updateOrderTargets(targetInventories)\n\n returnOrder.status = ORDER_STATUS.PUTTING_AWAY\n returnOrder.updater = this.user\n await this.updateRefOrder(returnOrder)\n return this.activateWorksheet(worksheet, worksheetDetails, putawayWorksheetDetails)\n }\n\n async completePutawayReturn(returnOrderNo: string): Promise<Worksheet> {\n // Because of partial unloading current status of arrivalNotice can be PUTTING_AWAY or PROCESSING\n // PUTTING_AWAY means unloading is completely finished.\n // PROCESSING means some products are still being unloaded.\n let returnOrder: ReturnOrder = await this.findRefOrder(ReturnOrder, {\n name: returnOrderNo,\n status: In([ORDER_STATUS.PUTTING_AWAY, ORDER_STATUS.PROCESSING])\n })\n\n // Check whether unloading is done or not.\n const unloadingWorksheetCnt: number = await this.trxMgr.getRepository(Worksheet).count({\n where: {\n domain: { id: this.domain.id },\n returnOrder: { id: returnOrder.id },\n type: WORKSHEET_TYPE.UNLOADING_RETURN,\n status: WORKSHEET_STATUS.EXECUTING\n }\n })\n if (unloadingWorksheetCnt) throw new Error(`Unloading is not completed yet`)\n\n const putawayWorksheet: Worksheet = await this.findWorksheetByRefOrder(returnOrder, WORKSHEET_TYPE.PUTAWAY_RETURN, [\n 'bufferLocation'\n ])\n await switchLocationStatus(this.domain, putawayWorksheet.bufferLocation, this.user, this.trxMgr)\n return await this.completeWorksheet(putawayWorksheet, ORDER_STATUS.DONE)\n }\n\n async putawayReturn(\n worksheetDetailName: [string],\n palletId: string,\n cartonId: string,\n locationName: string\n ): Promise<void> {\n const reusablePallet: Pallet = await this.trxMgr.getRepository(Pallet).findOne({\n where: { domain: { id: this.domain.id }, name: palletId }\n })\n\n if (reusablePallet) {\n await this.putawayPallets(worksheetDetailName[0], reusablePallet, locationName)\n } else if (cartonId) {\n await this.putawayCarton(worksheetDetailName, cartonId, locationName)\n } else {\n await this.putawayPallet(worksheetDetailName[0], palletId, locationName)\n }\n }\n\n async putawayPallets(worksheetDetailName: string, reusablePallet: Pallet, locationName: string): Promise<void> {\n const worksheetDetail: WorksheetDetail = await this.findExecutableWorksheetDetailByName(\n worksheetDetailName,\n WORKSHEET_TYPE.PUTAWAY_RETURN,\n [\n 'worksheet',\n 'worksheet.returnOrder',\n 'worksheet.worksheetDetails',\n 'worksheet.worksheetDetails.targetInventory',\n 'worksheet.worksheetDetails.targetInventory.inventory'\n ]\n )\n\n const worksheet: Worksheet = worksheetDetail.worksheet\n const returnOrder: ReturnOrder = worksheet.returnOrder\n const worksheetDetails: WorksheetDetail[] = worksheet.worksheetDetails\n const inventories: Inventory[] = await this.trxMgr.getRepository(Inventory).find({\n where: {\n domain: { id: this.domain.id },\n reusablePallet: { id: reusablePallet.id },\n refOrderId: returnOrder.id,\n status: In([INVENTORY_STATUS.PUTTING_AWAY, INVENTORY_STATUS.UNLOADED])\n }\n })\n\n for (let inventory of inventories) {\n const worksheetDetail: WorksheetDetail = worksheetDetails.find(\n (wsd: WorksheetDetail) => wsd.targetInventory.inventory.name === inventory.name\n )\n\n let targetInventory: OrderInventory = worksheetDetail.targetInventory\n inventory = targetInventory.inventory\n\n let location: Location = await this.trxMgr.getRepository(Location).findOne({\n where: {\n domain: { id: this.domain.id },\n name: locationName,\n type: In([\n LOCATION_TYPE.SHELF,\n LOCATION_TYPE.BUFFER,\n LOCATION_TYPE.FLOOR,\n LOCATION_TYPE.QUARANTINE,\n LOCATION_TYPE.RESERVED\n ])\n },\n relations: ['warehouse']\n })\n if (!location) throw new Error(this.ERROR_MSG.FIND.NO_RESULT(locationName))\n const warehouse: Warehouse = location.warehouse\n const zone: string = location.zone\n\n inventory.location = location\n inventory.status = INVENTORY_STATUS.STORED\n inventory.warehouse = warehouse\n inventory.zone = zone\n await this.transactionInventory(inventory, returnOrder, 0, 0, INVENTORY_TRANSACTION_TYPE.PUTAWAY)\n\n targetInventory.status = ORDER_INVENTORY_STATUS.TERMINATED\n targetInventory.updater = this.user\n await this.updateOrderTargets([targetInventory])\n\n worksheetDetail.status = WORKSHEET_STATUS.DONE\n worksheetDetail.updater = this.user\n await this.trxMgr.getRepository(WorksheetDetail).save(worksheetDetail)\n }\n }\n\n async putawayCarton(worksheetDetailName: [string], cartonId: string, locationName: string): Promise<void> {\n const worksheetDetails: WorksheetDetail[] = await this.findExecutableWorksheetDetailByNames(\n worksheetDetailName,\n WORKSHEET_TYPE.PUTAWAY_RETURN,\n ['worksheet', 'worksheet.returnOrder', 'targetInventory', 'targetInventory.inventory']\n )\n\n for (var i = 0; i < worksheetDetails.length; i++) {\n const worksheetDetail = worksheetDetails[i]\n const worksheet: Worksheet = worksheetDetail.worksheet\n const returnOrder: ReturnOrder = worksheet.returnOrder\n let targetInventory: OrderInventory = worksheetDetail.targetInventory\n let inventory: Inventory = targetInventory.inventory\n\n if (inventory.cartonId !== cartonId) {\n throw new Error(this.ERROR_MSG.VALIDITY.UNEXPECTED_FIELD_VALUE('cartonId', cartonId, inventory.cartonId))\n }\n\n const location: Location = await this.trxMgr.getRepository(Location).findOne({\n where: {\n domain: { id: this.domain.id },\n name: locationName,\n type: In([\n LOCATION_TYPE.SHELF,\n LOCATION_TYPE.BUFFER,\n LOCATION_TYPE.FLOOR,\n LOCATION_TYPE.BIN,\n LOCATION_TYPE.QUARANTINE,\n LOCATION_TYPE.RESERVED\n ])\n },\n relations: ['warehouse']\n })\n\n if (!location) throw new Error(this.ERROR_MSG.FIND.NO_RESULT(locationName))\n const warehouse: Warehouse = location.warehouse\n const zone: string = warehouse.zone\n\n inventory.location = location\n inventory.status = INVENTORY_STATUS.STORED\n inventory.warehouse = warehouse\n inventory.zone = zone\n await this.transactionInventory(inventory, returnOrder, 0, 0, INVENTORY_TRANSACTION_TYPE.PUTAWAY)\n\n targetInventory.status = ORDER_INVENTORY_STATUS.TERMINATED\n targetInventory.updater = this.user\n await this.updateOrderTargets([targetInventory])\n\n worksheetDetail.status = WORKSHEET_STATUS.DONE\n worksheetDetail.updater = this.user\n await this.trxMgr.getRepository(WorksheetDetail).save(worksheetDetail)\n }\n }\n\n async putawayPallet(worksheetDetailName: string, palletId: string, locationName: string): Promise<void> {\n const worksheetDetail: WorksheetDetail = await this.findExecutableWorksheetDetailByName(\n worksheetDetailName,\n WORKSHEET_TYPE.PUTAWAY_RETURN,\n ['worksheet', 'worksheet.returnOrder', 'targetInventory', 'targetInventory.inventory']\n )\n\n const worksheet: Worksheet = worksheetDetail.worksheet\n const returnOrder: ReturnOrder = worksheet.returnOrder\n let targetInventory: OrderInventory = worksheetDetail.targetInventory\n let inventory: Inventory = targetInventory.inventory\n\n if (inventory.palletId !== palletId) {\n throw new Error(this.ERROR_MSG.VALIDITY.UNEXPECTED_FIELD_VALUE('palletId', palletId, inventory.palletId))\n }\n\n const location: Location = await this.trxMgr.getRepository(Location).findOne({\n where: {\n domain: { id: this.domain.id },\n name: locationName,\n type: In([\n LOCATION_TYPE.SHELF,\n LOCATION_TYPE.FLOOR,\n LOCATION_TYPE.BIN,\n LOCATION_TYPE.BUFFER,\n LOCATION_TYPE.QUARANTINE,\n LOCATION_TYPE.RESERVED\n ])\n },\n relations: ['warehouse']\n })\n if (!location) throw new Error(this.ERROR_MSG.FIND.NO_RESULT(locationName))\n const warehouse: Warehouse = location.warehouse\n const zone: string = warehouse.zone\n\n inventory.location = location\n inventory.status = INVENTORY_STATUS.STORED\n inventory.warehouse = warehouse\n inventory.zone = zone\n await this.transactionInventory(inventory, returnOrder, 0, 0, INVENTORY_TRANSACTION_TYPE.PUTAWAY)\n\n targetInventory.status = ORDER_INVENTORY_STATUS.TERMINATED\n targetInventory.updater = this.user\n await this.updateOrderTargets([targetInventory])\n\n worksheetDetail.status = WORKSHEET_STATUS.DONE\n worksheetDetail.updater = this.user\n await this.trxMgr.getRepository(WorksheetDetail).save(worksheetDetail)\n }\n\n async undoPutawayReturn(worksheetDetailName: [string], palletId: string, cartonId: string): Promise<void> {\n if (cartonId) {\n await this.undoPutawayReturnCarton(worksheetDetailName, cartonId)\n } else {\n await this.undoPutawayReturnPallet(worksheetDetailName[0], palletId)\n }\n }\n\n async undoPutawayReturnCarton(worksheetDetailName: [string], cartonId: string): Promise<void> {\n let worksheetDetails: WorksheetDetail[] = await this.findWorksheetDetailByNames(worksheetDetailName, [\n 'worksheet',\n 'worksheet.returnOrder',\n 'targetInventory',\n 'targetInventory.inventory',\n 'fromLocation'\n ])\n\n for (var i = 0; i < worksheetDetails?.length; i++) {\n const worksheetDetail = worksheetDetails[i]\n this.checkRecordValidity(worksheetDetail, { status: WORKSHEET_STATUS.DONE })\n const worksheet: Worksheet = worksheetDetail.worksheet\n const returnOrder: ReturnOrder = worksheet.returnOrder\n const targetInventory: OrderInventory = worksheetDetail.targetInventory\n let inventory: Inventory = await this.trxMgr.getRepository(Inventory).findOne({\n where: { domain: { id: this.domain.id }, cartonId, palletId: targetInventory.inventory.palletId }\n })\n await this.checkReleaseTarget(inventory)\n\n const bufferLocation: Location = await this.trxMgr.getRepository(Location).findOne({\n where: { domain: { id: this.domain.id }, name: worksheetDetail.fromLocation.name }\n })\n inventory.location = bufferLocation\n inventory.status = INVENTORY_STATUS.UNLOADED\n await this.transactionInventory(inventory, returnOrder, 0, 0, INVENTORY_TRANSACTION_TYPE.UNDO_PUTAWAY)\n\n targetInventory.status = ORDER_PRODUCT_STATUS.PUTTING_AWAY\n targetInventory.updater = this.user\n await this.updateOrderTargets([targetInventory])\n\n worksheetDetail.status = WORKSHEET_STATUS.EXECUTING\n worksheetDetail.updater = this.user\n await this.trxMgr.getRepository(WorksheetDetail).save(worksheetDetail)\n }\n }\n\n async undoPutawayReturnPallet(worksheetDetailName: string, palletId: string): Promise<void> {\n let worksheetDetail: WorksheetDetail = await this.findWorksheetDetailByName(worksheetDetailName, [\n 'worksheet',\n 'worksheet.returnOrder',\n 'targetInventory',\n 'targetInventory.inventory',\n 'fromLocation'\n ])\n this.checkRecordValidity(worksheetDetail, { status: WORKSHEET_STATUS.DONE })\n\n const worksheet: Worksheet = worksheetDetail.worksheet\n const returnOrder: ReturnOrder = worksheet.returnOrder\n const targetInventory: OrderInventory = worksheetDetail.targetInventory\n let inventory: Inventory = await this.trxMgr.getRepository(Inventory).findOne({\n where: { domain: { id: this.domain.id }, palletId }\n })\n await this.checkReleaseTarget(inventory)\n\n const bufferLocation: Location = await this.trxMgr.getRepository(Location).findOne({\n where: { domain: { id: this.domain.id }, name: worksheetDetail.fromLocation.name }\n })\n inventory.location = bufferLocation\n inventory.status = INVENTORY_STATUS.UNLOADED\n await this.transactionInventory(inventory, returnOrder, 0, 0, INVENTORY_TRANSACTION_TYPE.UNDO_PUTAWAY)\n\n targetInventory.status = ORDER_PRODUCT_STATUS.PUTTING_AWAY\n targetInventory.updater = this.user\n await this.updateOrderTargets([targetInventory])\n\n worksheetDetail.status = WORKSHEET_STATUS.EXECUTING\n worksheetDetail.updater = this.user\n await this.trxMgr.getRepository(WorksheetDetail).save(worksheetDetail)\n }\n\n private async checkReleaseTarget(inventory: Inventory): Promise<void> {\n const releaseTargetInventory: OrderInventory = await this.trxMgr.getRepository(OrderInventory).findOne({\n where: {\n domain: { id: this.domain.id },\n type: ORDER_TYPES.RELEASE_OF_GOODS,\n inventory: { id: inventory.id }\n }\n })\n\n if (releaseTargetInventory)\n throw new Error(\n this.ERROR_MSG.VALIDITY.CANT_PROCEED_STEP_BY('undo putaway', 'this pallet ID has been selected for releasing')\n )\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"putaway-returning-worksheet-controller.js","sourceRoot":"","sources":["../../../server/controllers/inbound/putaway-returning-worksheet-controller.ts"],"names":[],"mappings":"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","sourcesContent":["import { Equal, In, Not } from 'typeorm'\n\nimport { Bizplace } from '@things-factory/biz-base'\nimport {\n ORDER_INVENTORY_STATUS,\n ORDER_PRODUCT_STATUS,\n ORDER_STATUS,\n ORDER_TYPES,\n OrderInventory,\n OrderNoGenerator,\n ReturnOrder\n} from '@things-factory/sales-base'\nimport {\n Inventory,\n INVENTORY_STATUS,\n INVENTORY_TRANSACTION_TYPE,\n Location,\n LOCATION_TYPE,\n Pallet,\n Warehouse\n} from '@things-factory/warehouse-base'\n\nimport { WORKSHEET_STATUS, WORKSHEET_TYPE } from '../../constants'\nimport { Worksheet, WorksheetDetail } from '../../entities'\nimport { switchLocationStatus } from '../../utils'\nimport { VasWorksheetController } from '../vas/vas-worksheet-controller'\n\nexport class PutawayReturningWorksheetController extends VasWorksheetController {\n async generatePutawayReturnWorksheet(returnOrderNo: string, inventories: Inventory[]): Promise<Worksheet> {\n let returnOrder: ReturnOrder = await this.findRefOrder(\n ReturnOrder,\n { domain: { id: this.domain.id }, name: returnOrderNo },\n ['bizplace']\n )\n\n const bizplace: Bizplace = returnOrder.bizplace\n const unloadingWorksheet: Worksheet = await this.findWorksheetByRefOrder(\n returnOrder,\n WORKSHEET_TYPE.UNLOADING_RETURN,\n ['bufferLocation']\n )\n const bufferLocation: Location = unloadingWorksheet.bufferLocation\n\n // Check whether putaway worksheet is exists or not\n let worksheet: Worksheet\n try {\n worksheet = await this.findWorksheetByRefOrder(returnOrder, WORKSHEET_TYPE.PUTAWAY_RETURN)\n } catch (e) {}\n\n let oiStatus: string = ORDER_PRODUCT_STATUS.UNLOADED // Default status of order inventories is UNLOADED\n let wsdStatus: string = WORKSHEET_STATUS.DEACTIVATED // Default status of worksheet is DEACTIVATED\n if (!worksheet) {\n // If it's not exists create new putaway worksheet\n worksheet = await this.createWorksheet(returnOrder, WORKSHEET_TYPE.PUTAWAY_RETURN, { bufferLocation })\n } else {\n // If there is putaway worksheet. It means unloading is completed partially.\n // So status of newly created worksheet details and order inventories should be changed to\n // Executing situation.\n oiStatus = ORDER_PRODUCT_STATUS.PUTTING_AWAY // Default status = PUTTING_AWAY\n wsdStatus = WORKSHEET_STATUS.EXECUTING // Default status = EXECUTING\n }\n\n if (inventories.some((inv: Inventory) => !(inv instanceof Inventory))) {\n inventories = await this.trxMgr.getRepository(Inventory).findByIds(inventories.map((inv: Inventory) => inv.id))\n }\n\n for (let inventory of inventories) {\n inventory.status = INVENTORY_STATUS.PUTTING_AWAY\n inventory.updater = this.user\n inventory = await this.trxMgr.getRepository(Inventory).save(inventory)\n\n let targetInventory: OrderInventory = new OrderInventory()\n targetInventory.domain = this.domain\n targetInventory.bizplace = bizplace\n targetInventory.name = OrderNoGenerator.orderInventory()\n targetInventory.status = oiStatus\n targetInventory.type = ORDER_TYPES.RETURN_ORDER\n targetInventory.returnOrder = returnOrder\n targetInventory.inventory = inventory\n targetInventory.creator = this.user\n targetInventory.updater = this.user\n targetInventory = await this.trxMgr.getRepository(OrderInventory).save(targetInventory)\n\n worksheet.worksheetDetails = await this.createWorksheetDetails(\n worksheet,\n WORKSHEET_TYPE.PUTAWAY_RETURN,\n [targetInventory],\n { status: wsdStatus, fromLocation: bufferLocation }\n )\n }\n\n return worksheet\n }\n\n async activatePutawayReturning(\n worksheetNo: string,\n putawayWorksheetDetails: Partial<WorksheetDetail>[]\n ): Promise<Worksheet> {\n let worksheet: Worksheet = await this.findActivatableWorksheet(worksheetNo, WORKSHEET_TYPE.PUTAWAY_RETURN, [\n 'returnOrder',\n 'worksheetDetails',\n 'worksheetDetails.targetInventory'\n ])\n\n let returnOrder: ReturnOrder = worksheet.returnOrder\n const nonFinishedVasCnt: number = await this.trxMgr.getRepository(Worksheet).count({\n where: {\n domain: { id: this.domain.id },\n returnOrder: { id: returnOrder.id },\n type: WORKSHEET_TYPE.VAS,\n status: Not(Equal(WORKSHEET_STATUS.DONE))\n }\n })\n if (nonFinishedVasCnt) return\n\n const worksheetDetails: WorksheetDetail[] = worksheet.worksheetDetails\n const targetInventories: OrderInventory[] = worksheetDetails.map((wsd: WorksheetDetail) => {\n let targetInventory: OrderInventory = wsd.targetInventory\n targetInventory.status = ORDER_PRODUCT_STATUS.PUTTING_AWAY\n targetInventory.updater = this.user\n return targetInventory\n })\n await this.updateOrderTargets(targetInventories)\n\n returnOrder.status = ORDER_STATUS.PUTTING_AWAY\n returnOrder.updater = this.user\n await this.updateRefOrder(returnOrder)\n return this.activateWorksheet(worksheet, worksheetDetails, putawayWorksheetDetails)\n }\n\n async completePutawayReturn(returnOrderNo: string): Promise<Worksheet> {\n // Because of partial unloading current status of arrivalNotice can be PUTTING_AWAY or PROCESSING\n // PUTTING_AWAY means unloading is completely finished.\n // PROCESSING means some products are still being unloaded.\n let returnOrder: ReturnOrder = await this.findRefOrder(ReturnOrder, {\n name: returnOrderNo,\n status: In([ORDER_STATUS.PUTTING_AWAY, ORDER_STATUS.PROCESSING])\n })\n\n // Check whether unloading is done or not.\n const unloadingWorksheetCnt: number = await this.trxMgr.getRepository(Worksheet).count({\n where: {\n domain: { id: this.domain.id },\n returnOrder: { id: returnOrder.id },\n type: WORKSHEET_TYPE.UNLOADING_RETURN,\n status: WORKSHEET_STATUS.EXECUTING\n }\n })\n if (unloadingWorksheetCnt) throw new Error(`Unloading is not completed yet`)\n\n const putawayWorksheet: Worksheet = await this.findWorksheetByRefOrder(returnOrder, WORKSHEET_TYPE.PUTAWAY_RETURN, [\n 'bufferLocation'\n ])\n await switchLocationStatus(this.domain, putawayWorksheet.bufferLocation, this.user, this.trxMgr)\n return await this.completeWorksheet(putawayWorksheet, ORDER_STATUS.DONE)\n }\n\n async putawayReturn(\n worksheetDetailName: [string],\n palletId: string,\n cartonId: string,\n locationName: string\n ): Promise<void> {\n const reusablePallet: Pallet = await this.trxMgr.getRepository(Pallet).findOne({\n where: { domain: { id: this.domain.id }, name: palletId }\n })\n\n if (reusablePallet) {\n await this.putawayPallets(worksheetDetailName[0], reusablePallet, locationName)\n } else if (cartonId) {\n await this.putawayCarton(worksheetDetailName, cartonId, locationName)\n } else {\n await this.putawayPallet(worksheetDetailName[0], palletId, locationName)\n }\n }\n\n async putawayPallets(worksheetDetailName: string, reusablePallet: Pallet, locationName: string): Promise<void> {\n const worksheetDetail: WorksheetDetail = await this.findExecutableWorksheetDetailByName(\n worksheetDetailName,\n WORKSHEET_TYPE.PUTAWAY_RETURN,\n [\n 'worksheet',\n 'worksheet.returnOrder',\n 'worksheet.worksheetDetails',\n 'worksheet.worksheetDetails.targetInventory',\n 'worksheet.worksheetDetails.targetInventory.inventory'\n ]\n )\n\n const worksheet: Worksheet = worksheetDetail.worksheet\n const returnOrder: ReturnOrder = worksheet.returnOrder\n const worksheetDetails: WorksheetDetail[] = worksheet.worksheetDetails\n const inventories: Inventory[] = await this.trxMgr.getRepository(Inventory).find({\n where: {\n domain: { id: this.domain.id },\n reusablePallet: { id: reusablePallet.id },\n refOrderId: returnOrder.id,\n status: In([INVENTORY_STATUS.PUTTING_AWAY, INVENTORY_STATUS.UNLOADED])\n }\n })\n\n for (let inventory of inventories) {\n const worksheetDetail: WorksheetDetail = worksheetDetails.find(\n (wsd: WorksheetDetail) => wsd.targetInventory.inventory.name === inventory.name\n )\n\n let targetInventory: OrderInventory = worksheetDetail.targetInventory\n inventory = targetInventory.inventory\n\n let location: Location = await this.trxMgr.getRepository(Location).findOne({\n where: {\n domain: { id: this.domain.id },\n name: locationName,\n type: In([\n LOCATION_TYPE.SHELF,\n LOCATION_TYPE.BUFFER,\n LOCATION_TYPE.FLOOR,\n LOCATION_TYPE.QUARANTINE,\n LOCATION_TYPE.RESERVED\n ])\n },\n relations: ['warehouse']\n })\n if (!location) throw new Error(this.ERROR_MSG.FIND.NO_RESULT(locationName))\n const warehouse: Warehouse = location.warehouse\n const zone: string = location.zone\n\n inventory.location = location\n inventory.status = INVENTORY_STATUS.STORED\n inventory.warehouse = warehouse\n inventory.zone = zone\n await this.transactionInventory(inventory, returnOrder, 0, 0, INVENTORY_TRANSACTION_TYPE.PUTAWAY)\n\n targetInventory.status = ORDER_INVENTORY_STATUS.TERMINATED\n targetInventory.updater = this.user\n await this.updateOrderTargets([targetInventory])\n\n worksheetDetail.status = WORKSHEET_STATUS.DONE\n worksheetDetail.updater = this.user\n await this.trxMgr.getRepository(WorksheetDetail).save(worksheetDetail)\n }\n }\n\n async putawayCarton(worksheetDetailName: [string], cartonId: string, locationName: string): Promise<void> {\n const worksheetDetails: WorksheetDetail[] = await this.findExecutableWorksheetDetailByNames(\n worksheetDetailName,\n WORKSHEET_TYPE.PUTAWAY_RETURN,\n ['worksheet', 'worksheet.returnOrder', 'targetInventory', 'targetInventory.inventory']\n )\n\n for (var i = 0; i < worksheetDetails.length; i++) {\n const worksheetDetail = worksheetDetails[i]\n const worksheet: Worksheet = worksheetDetail.worksheet\n const returnOrder: ReturnOrder = worksheet.returnOrder\n let targetInventory: OrderInventory = worksheetDetail.targetInventory\n let inventory: Inventory = targetInventory.inventory\n\n if (inventory.cartonId !== cartonId) {\n throw new Error(this.ERROR_MSG.VALIDITY.UNEXPECTED_FIELD_VALUE('cartonId', cartonId, inventory.cartonId))\n }\n\n const location: Location = await this.trxMgr.getRepository(Location).findOne({\n where: {\n domain: { id: this.domain.id },\n name: locationName,\n type: In([\n LOCATION_TYPE.SHELF,\n LOCATION_TYPE.BUFFER,\n LOCATION_TYPE.FLOOR,\n LOCATION_TYPE.BIN,\n LOCATION_TYPE.QUARANTINE,\n LOCATION_TYPE.RESERVED\n ])\n },\n relations: ['warehouse']\n })\n\n if (!location) throw new Error(this.ERROR_MSG.FIND.NO_RESULT(locationName))\n const warehouse: Warehouse = location.warehouse\n const zone: string = warehouse.zone\n\n inventory.location = location\n inventory.status = INVENTORY_STATUS.STORED\n inventory.warehouse = warehouse\n inventory.zone = zone\n await this.transactionInventory(inventory, returnOrder, 0, 0, INVENTORY_TRANSACTION_TYPE.PUTAWAY)\n\n targetInventory.status = ORDER_INVENTORY_STATUS.TERMINATED\n targetInventory.updater = this.user\n await this.updateOrderTargets([targetInventory])\n\n worksheetDetail.status = WORKSHEET_STATUS.DONE\n worksheetDetail.updater = this.user\n await this.trxMgr.getRepository(WorksheetDetail).save(worksheetDetail)\n }\n }\n\n async putawayPallet(worksheetDetailName: string, palletId: string, locationName: string): Promise<void> {\n const worksheetDetail: WorksheetDetail = await this.findExecutableWorksheetDetailByName(\n worksheetDetailName,\n WORKSHEET_TYPE.PUTAWAY_RETURN,\n ['worksheet', 'worksheet.returnOrder', 'targetInventory', 'targetInventory.inventory']\n )\n\n const worksheet: Worksheet = worksheetDetail.worksheet\n const returnOrder: ReturnOrder = worksheet.returnOrder\n let targetInventory: OrderInventory = worksheetDetail.targetInventory\n let inventory: Inventory = targetInventory.inventory\n\n if (inventory.palletId !== palletId) {\n throw new Error(this.ERROR_MSG.VALIDITY.UNEXPECTED_FIELD_VALUE('palletId', palletId, inventory.palletId))\n }\n\n const location: Location = await this.trxMgr.getRepository(Location).findOne({\n where: {\n domain: { id: this.domain.id },\n name: locationName,\n type: In([\n LOCATION_TYPE.SHELF,\n LOCATION_TYPE.FLOOR,\n LOCATION_TYPE.BIN,\n LOCATION_TYPE.BUFFER,\n LOCATION_TYPE.QUARANTINE,\n LOCATION_TYPE.RESERVED\n ])\n },\n relations: ['warehouse']\n })\n if (!location) throw new Error(this.ERROR_MSG.FIND.NO_RESULT(locationName))\n const warehouse: Warehouse = location.warehouse\n const zone: string = warehouse.zone\n\n inventory.location = location\n inventory.status = INVENTORY_STATUS.STORED\n inventory.warehouse = warehouse\n inventory.zone = zone\n await this.transactionInventory(inventory, returnOrder, 0, 0, INVENTORY_TRANSACTION_TYPE.PUTAWAY)\n\n targetInventory.status = ORDER_INVENTORY_STATUS.TERMINATED\n targetInventory.updater = this.user\n await this.updateOrderTargets([targetInventory])\n\n worksheetDetail.status = WORKSHEET_STATUS.DONE\n worksheetDetail.updater = this.user\n await this.trxMgr.getRepository(WorksheetDetail).save(worksheetDetail)\n }\n\n async undoPutawayReturn(worksheetDetailName: [string], palletId: string, cartonId: string): Promise<void> {\n if (cartonId) {\n await this.undoPutawayReturnCarton(worksheetDetailName, cartonId)\n } else {\n await this.undoPutawayReturnPallet(worksheetDetailName[0], palletId)\n }\n }\n\n async undoPutawayReturnCarton(worksheetDetailName: [string], cartonId: string): Promise<void> {\n let worksheetDetails: WorksheetDetail[] = await this.findWorksheetDetailByNames(worksheetDetailName, [\n 'worksheet',\n 'worksheet.returnOrder',\n 'targetInventory',\n 'targetInventory.inventory',\n 'fromLocation'\n ])\n\n for (var i = 0; i < worksheetDetails?.length; i++) {\n const worksheetDetail = worksheetDetails[i]\n this.checkRecordValidity(worksheetDetail, { status: WORKSHEET_STATUS.DONE })\n const worksheet: Worksheet = worksheetDetail.worksheet\n const returnOrder: ReturnOrder = worksheet.returnOrder\n const targetInventory: OrderInventory = worksheetDetail.targetInventory\n let inventory: Inventory = await this.trxMgr.getRepository(Inventory).findOne({\n where: { domain: { id: this.domain.id }, cartonId, palletId: targetInventory.inventory.palletId }\n })\n await this.checkReleaseTarget(inventory)\n\n const bufferLocation: Location = await this.trxMgr.getRepository(Location).findOne({\n where: { domain: { id: this.domain.id }, name: worksheetDetail.fromLocation.name }\n })\n inventory.location = bufferLocation\n inventory.status = INVENTORY_STATUS.UNLOADED\n await this.transactionInventory(inventory, returnOrder, 0, 0, INVENTORY_TRANSACTION_TYPE.UNDO_PUTAWAY)\n\n targetInventory.status = ORDER_PRODUCT_STATUS.PUTTING_AWAY\n targetInventory.updater = this.user\n await this.updateOrderTargets([targetInventory])\n\n worksheetDetail.status = WORKSHEET_STATUS.EXECUTING\n worksheetDetail.updater = this.user\n await this.trxMgr.getRepository(WorksheetDetail).save(worksheetDetail)\n }\n }\n\n async undoPutawayReturnPallet(worksheetDetailName: string, palletId: string): Promise<void> {\n let worksheetDetail: WorksheetDetail = await this.findWorksheetDetailByName(worksheetDetailName, [\n 'worksheet',\n 'worksheet.returnOrder',\n 'targetInventory',\n 'targetInventory.inventory',\n 'fromLocation'\n ])\n this.checkRecordValidity(worksheetDetail, { status: WORKSHEET_STATUS.DONE })\n\n const worksheet: Worksheet = worksheetDetail.worksheet\n const returnOrder: ReturnOrder = worksheet.returnOrder\n const targetInventory: OrderInventory = worksheetDetail.targetInventory\n let inventory: Inventory = await this.trxMgr.getRepository(Inventory).findOne({\n where: { domain: { id: this.domain.id }, palletId }\n })\n await this.checkReleaseTarget(inventory)\n\n const bufferLocation: Location = await this.trxMgr.getRepository(Location).findOne({\n where: { domain: { id: this.domain.id }, name: worksheetDetail.fromLocation.name }\n })\n inventory.location = bufferLocation\n inventory.status = INVENTORY_STATUS.UNLOADED\n await this.transactionInventory(inventory, returnOrder, 0, 0, INVENTORY_TRANSACTION_TYPE.UNDO_PUTAWAY)\n\n targetInventory.status = ORDER_PRODUCT_STATUS.PUTTING_AWAY\n targetInventory.updater = this.user\n await this.updateOrderTargets([targetInventory])\n\n worksheetDetail.status = WORKSHEET_STATUS.EXECUTING\n worksheetDetail.updater = this.user\n await this.trxMgr.getRepository(WorksheetDetail).save(worksheetDetail)\n }\n\n private async checkReleaseTarget(inventory: Inventory): Promise<void> {\n const releaseTargetInventory: OrderInventory = await this.trxMgr.getRepository(OrderInventory).findOne({\n where: {\n domain: { id: this.domain.id },\n type: ORDER_TYPES.RELEASE_OF_GOODS,\n inventory: { id: inventory.id }\n }\n })\n\n if (releaseTargetInventory)\n throw new Error(\n this.ERROR_MSG.VALIDITY.CANT_PROCEED_STEP_BY('undo putaway', 'this pallet ID has been selected for releasing')\n )\n }\n}\n"]}
|
|
@@ -57,7 +57,11 @@ class UnloadingReturningWorksheetController extends vas_worksheet_controller_1.V
|
|
|
57
57
|
return worksheet;
|
|
58
58
|
}
|
|
59
59
|
async completeUnloadReturning(returnOrderNo, unloadingReturnWorksheetDetails) {
|
|
60
|
-
let returnOrder = await this.findRefOrder(sales_base_1.ReturnOrder, {
|
|
60
|
+
let returnOrder = await this.findRefOrder(sales_base_1.ReturnOrder, {
|
|
61
|
+
domain: { id: this.domain.id },
|
|
62
|
+
name: returnOrderNo,
|
|
63
|
+
status: (0, typeorm_1.In)([sales_base_1.ORDER_STATUS.PROCESSING, sales_base_1.ORDER_STATUS.PUTTING_AWAY])
|
|
64
|
+
}, ['orderInventories']);
|
|
61
65
|
// if (returnOrder.crossDocking) {
|
|
62
66
|
// // Picking worksheet for cross docking should be completed before complete it
|
|
63
67
|
// // Find picking worksheet
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"unloading-returning-worksheet-controller.js","sourceRoot":"","sources":["../../../server/controllers/inbound/unloading-returning-worksheet-controller.ts"],"names":[],"mappings":"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","sourcesContent":["import { In } from 'typeorm'\n\nimport { Bizplace } from '@things-factory/biz-base'\nimport {\n ORDER_PRODUCT_STATUS,\n ORDER_STATUS,\n ORDER_TYPES,\n ORDER_VAS_STATUS,\n OrderInventory,\n OrderNoGenerator,\n OrderProduct,\n OrderVas,\n ReturnOrder,\n Vas,\n VAS_TARGET_TYPES\n} from '@things-factory/sales-base'\nimport { Inventory, INVENTORY_STATUS, Location } from '@things-factory/warehouse-base'\n\nimport { WORKSHEET_STATUS, WORKSHEET_TYPE } from '../../constants'\nimport { Worksheet, WorksheetDetail } from '../../entities'\nimport { VasWorksheetController } from '../vas/vas-worksheet-controller'\n\nexport type UnloadingReturningWorksheetDetail = Partial<WorksheetDetail> & {\n palletizingVasId: string\n palletQty: number\n palletizingDescription: string\n}\n\nexport class UnloadingReturningWorksheetController extends VasWorksheetController {\n async generateUnloadingReturnWorksheet(returnOrderNo: string, bufferLocationId: string): Promise<Worksheet> {\n let returnOrder: ReturnOrder = await this.findRefOrder(\n ReturnOrder,\n {\n domain: this.domain,\n name: returnOrderNo,\n status: ORDER_STATUS.ARRIVED\n },\n ['bizplace', 'orderInventories', 'orderVass']\n )\n const orderInventories: OrderInventory[] = returnOrder.orderInventories\n const orderVASs: OrderVas[] = returnOrder.orderVass\n const bufferLocation: Location = await this.trxMgr.getRepository(Location).findOneBy({ id: bufferLocationId })\n\n const worksheet: Worksheet = await this.generateWorksheet(\n WORKSHEET_TYPE.UNLOADING_RETURN,\n returnOrder,\n orderInventories,\n ORDER_STATUS.READY_TO_UNLOAD,\n ORDER_PRODUCT_STATUS.READY_TO_UNLOAD,\n { bufferLocation }\n )\n\n if (orderVASs?.length > 0) {\n await this.generateVasWorksheet(returnOrder)\n }\n\n return worksheet\n }\n\n async activateUnloadingReturn(\n worksheetNo: string,\n unloadingReturnWorksheetDetails: UnloadingReturningWorksheetDetail[]\n ): Promise<Worksheet> {\n let worksheet: Worksheet = await this.findActivatableWorksheet(worksheetNo, WORKSHEET_TYPE.UNLOADING_RETURN, [\n 'bizplace',\n 'returnOrder',\n 'worksheetDetails',\n 'worksheetDetails.targetInventory',\n 'worksheetDetails.targetInventory.product'\n ])\n\n const bizplace: Bizplace = worksheet.bizplace\n let worksheetDetails: WorksheetDetail[] = worksheet.worksheetDetails\n\n const targetInventories: OrderInventory[] = worksheetDetails.map((wsd: WorksheetDetail) => {\n let targetInventory: OrderInventory = wsd.targetInventory\n targetInventory.status = ORDER_PRODUCT_STATUS.UNLOADING\n targetInventory.updater = this.user\n return targetInventory\n })\n await this.updateOrderTargets(targetInventories)\n\n let returnOrder: ReturnOrder = worksheet.returnOrder\n returnOrder.status = ORDER_STATUS.PROCESSING\n returnOrder.updater = this.user\n this.updateRefOrder(returnOrder)\n\n worksheet = await this.activateWorksheet(worksheet, worksheetDetails, unloadingReturnWorksheetDetails)\n\n try {\n const vasWorksheet: Worksheet = await this.findWorksheetByRefOrder(returnOrder, WORKSHEET_TYPE.VAS)\n if (vasWorksheet) {\n await this.activateVAS(vasWorksheet.name, vasWorksheet.worksheetDetails)\n }\n } catch (e) {\n // Do nothing\n }\n\n return worksheet\n }\n\n async completeUnloadReturning(\n returnOrderNo: string,\n unloadingReturnWorksheetDetails: Partial<WorksheetDetail>[]\n ): Promise<void> {\n let returnOrder: ReturnOrder = await this.findRefOrder(\n ReturnOrder,\n { domain: this.domain, name: returnOrderNo, status: In([ORDER_STATUS.PROCESSING, ORDER_STATUS.PUTTING_AWAY]) },\n ['orderInventories']\n )\n\n // if (returnOrder.crossDocking) {\n // // Picking worksheet for cross docking should be completed before complete it\n // // Find picking worksheet\n // const releaseGood: ReleaseGood = arrivalNotice.releaseGood\n // const executingPickingWS: Worksheet = await this.trxMgr.getRepository(Worksheet).findOne({\n // where: {\n // domain: { id: this.domain.id },\n // releaseGood: { id: releaseGood.id },\n // type: WORKSHEET_TYPE.PICKING,\n // status: Not(Equal(WORKSHEET_STATUS.DONE))\n // }\n // })\n\n // if (executingPickingWS)\n // throw new Error(`Picking should be completed before complete unloading for cross docking.`)\n // }\n\n if (\n returnOrder.orderInventories.some((oi: OrderInventory) => oi.status === ORDER_PRODUCT_STATUS.READY_TO_APPROVED)\n ) {\n throw new Error(`There's non-approved order products`)\n }\n\n let worksheet: Worksheet = await this.findWorksheetByRefOrder(returnOrder, WORKSHEET_TYPE.UNLOADING_RETURN, [\n 'worksheetDetails',\n 'worksheetDetails.targetInventory'\n ])\n this.checkRecordValidity(worksheet, { status: WORKSHEET_STATUS.EXECUTING })\n\n const partiallyUnloadedCnt: number = await this.trxMgr.getRepository(Inventory).count({\n where: { domain: { id: this.domain.id }, refOrderId: returnOrder.id, status: INVENTORY_STATUS.PARTIALLY_UNLOADED }\n })\n if (partiallyUnloadedCnt) {\n throw new Error('There is partially unloaded pallet, generate putaway worksheet before complete unloading.')\n }\n\n if (unloadingReturnWorksheetDetails.some((wsd: Partial<WorksheetDetail>) => wsd.issue)) {\n const worksheetDetails: WorksheetDetail[] = worksheet.worksheetDetails\n unloadingReturnWorksheetDetails = this.renewWorksheetDetails(\n worksheetDetails,\n unloadingReturnWorksheetDetails,\n 'name',\n {\n updater: this.user\n }\n )\n const worksheetDetailsWithIssue: WorksheetDetail[] = unloadingReturnWorksheetDetails.filter(\n (wsd: WorksheetDetail) => wsd.issue\n ) as WorksheetDetail[]\n if (worksheetDetailsWithIssue.length) {\n await this.trxMgr.getRepository(WorksheetDetail).save(worksheetDetailsWithIssue)\n }\n\n const targetInventoriesWithIssue: OrderProduct[] = worksheetDetailsWithIssue.map((wsd: WorksheetDetail) => {\n let targetInventory: OrderProduct = wsd.targetInventory\n targetInventory.remark = wsd.issue\n return targetInventory\n })\n await this.updateOrderTargets(targetInventoriesWithIssue)\n }\n\n if (returnOrder.status !== ORDER_STATUS.PUTTING_AWAY) {\n await this.completeWorksheet(worksheet, ORDER_STATUS.READY_TO_PUTAWAY)\n } else {\n await this.completeWorksheet(worksheet)\n }\n }\n\n async completeUnloadReturnPartially(\n returnOrderNo: string,\n unloadingReturnWorksheetDetails: Partial<WorksheetDetail>[]\n ): Promise<Worksheet> {\n const returnOrder: ReturnOrder = await this.findRefOrder(ReturnOrder, {\n name: returnOrderNo,\n status: ORDER_STATUS.PROCESSING\n })\n\n const worksheet: Worksheet = await this.findWorksheetByRefOrder(returnOrder, WORKSHEET_TYPE.UNLOADING_RETURN, [\n 'worksheetDetails',\n 'worksheetDetails.targetInventory'\n ])\n this.checkRecordValidity(worksheet, { status: WORKSHEET_STATUS.EXECUTING })\n\n let worksheetDetails = worksheet.worksheetDetails.filter(({ name: itm1 }) =>\n unloadingReturnWorksheetDetails.some(({ name: itm2 }) => itm2 === itm1)\n )\n\n worksheetDetails.forEach((wsds: WorksheetDetail) => {\n wsds.status = WORKSHEET_STATUS.PARTIALLY_UNLOADED\n wsds.updater = this.user\n })\n\n worksheetDetails = await this.trxMgr.getRepository(WorksheetDetail).save(worksheetDetails)\n\n for (let i = 0; i < worksheetDetails.length; i++) {\n worksheetDetails[i].targetInventory.status = ORDER_PRODUCT_STATUS.PARTIALLY_UNLOADED\n worksheetDetails[i].targetInventory.remark =\n worksheetDetails[i].issue || worksheetDetails[i].targetInventory.remark\n await this.updateOrderTargets([worksheetDetails[i].targetInventory])\n }\n\n let inventories: Inventory[] = await this.trxMgr.getRepository(Inventory).find({\n where: {\n domain: { id: this.domain.id },\n refOrderId: returnOrder.id,\n status: In([INVENTORY_STATUS.UNLOADED, INVENTORY_STATUS.CHECKED])\n }\n })\n\n inventories.forEach((inventory: Inventory) => {\n inventory.status = INVENTORY_STATUS.PARTIALLY_UNLOADED\n inventory.updater = this.user\n })\n await this.trxMgr.getRepository(Inventory).save(inventories)\n\n return worksheet\n }\n\n async createPalletizingWSDs(\n bizplace: Bizplace,\n returnOrder: ReturnOrder,\n worksheetDetails: WorksheetDetail[],\n palletizingWSDs: UnloadingReturningWorksheetDetail[]\n ): Promise<void> {\n let palletizingOrderVASs: Partial<OrderVas>[] = []\n\n for (let palletizingWSD of palletizingWSDs) {\n const palletizingVAS: Vas = await this.trxMgr.getRepository(Vas).findOne({\n where: { domain: { id: this.domain.id }, id: palletizingWSD.palletizingVasId }\n })\n\n const targetInventory: OrderInventory = worksheetDetails.find(\n (wsd: WorksheetDetail) => wsd.name === palletizingWSD.name\n )\n\n palletizingOrderVASs.push({\n domain: this.domain,\n bizplace,\n name: OrderNoGenerator.orderVas(),\n returnOrder,\n vas: palletizingVAS,\n targetType: VAS_TARGET_TYPES.BATCH_AND_PRODUCT_TYPE,\n targetBatchId: targetInventory.batchId,\n targetProduct: targetInventory.product,\n packingType: targetInventory.packingType,\n description: palletizingWSD.palletizingDescription,\n type: ORDER_TYPES.RETURN_ORDER,\n status: ORDER_VAS_STATUS.COMPLETED,\n creator: this.user,\n updater: this.user\n })\n }\n\n this.trxMgr.getRepository(OrderVas).save(palletizingOrderVASs)\n\n let vasWorksheet: Worksheet = await this.findWorksheetByRefOrder(returnOrder, WORKSHEET_TYPE.VAS)\n if (!vasWorksheet) {\n this.generateVasWorksheet(returnOrder)\n } else {\n await this.createWorksheetDetails(vasWorksheet, WORKSHEET_TYPE.VAS, palletizingOrderVASs)\n }\n }\n\n filterPalletizingWSDs(unloadingWSDs: UnloadingReturningWorksheetDetail[]): UnloadingReturningWorksheetDetail[] {\n return unloadingWSDs.filter((wsd: UnloadingReturningWorksheetDetail) => wsd.palletQty && wsd.palletizingDescription)\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"unloading-returning-worksheet-controller.js","sourceRoot":"","sources":["../../../server/controllers/inbound/unloading-returning-worksheet-controller.ts"],"names":[],"mappings":"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","sourcesContent":["import { In } from 'typeorm'\n\nimport { Bizplace } from '@things-factory/biz-base'\nimport {\n ORDER_PRODUCT_STATUS,\n ORDER_STATUS,\n ORDER_TYPES,\n ORDER_VAS_STATUS,\n OrderInventory,\n OrderNoGenerator,\n OrderProduct,\n OrderVas,\n ReturnOrder,\n Vas,\n VAS_TARGET_TYPES\n} from '@things-factory/sales-base'\nimport { Inventory, INVENTORY_STATUS, Location } from '@things-factory/warehouse-base'\n\nimport { WORKSHEET_STATUS, WORKSHEET_TYPE } from '../../constants'\nimport { Worksheet, WorksheetDetail } from '../../entities'\nimport { VasWorksheetController } from '../vas/vas-worksheet-controller'\n\nexport type UnloadingReturningWorksheetDetail = Partial<WorksheetDetail> & {\n palletizingVasId: string\n palletQty: number\n palletizingDescription: string\n}\n\nexport class UnloadingReturningWorksheetController extends VasWorksheetController {\n async generateUnloadingReturnWorksheet(returnOrderNo: string, bufferLocationId: string): Promise<Worksheet> {\n let returnOrder: ReturnOrder = await this.findRefOrder(\n ReturnOrder,\n {\n domain: this.domain,\n name: returnOrderNo,\n status: ORDER_STATUS.ARRIVED\n },\n ['bizplace', 'orderInventories', 'orderVass']\n )\n const orderInventories: OrderInventory[] = returnOrder.orderInventories\n const orderVASs: OrderVas[] = returnOrder.orderVass\n const bufferLocation: Location = await this.trxMgr.getRepository(Location).findOneBy({ id: bufferLocationId })\n\n const worksheet: Worksheet = await this.generateWorksheet(\n WORKSHEET_TYPE.UNLOADING_RETURN,\n returnOrder,\n orderInventories,\n ORDER_STATUS.READY_TO_UNLOAD,\n ORDER_PRODUCT_STATUS.READY_TO_UNLOAD,\n { bufferLocation }\n )\n\n if (orderVASs?.length > 0) {\n await this.generateVasWorksheet(returnOrder)\n }\n\n return worksheet\n }\n\n async activateUnloadingReturn(\n worksheetNo: string,\n unloadingReturnWorksheetDetails: UnloadingReturningWorksheetDetail[]\n ): Promise<Worksheet> {\n let worksheet: Worksheet = await this.findActivatableWorksheet(worksheetNo, WORKSHEET_TYPE.UNLOADING_RETURN, [\n 'bizplace',\n 'returnOrder',\n 'worksheetDetails',\n 'worksheetDetails.targetInventory',\n 'worksheetDetails.targetInventory.product'\n ])\n\n const bizplace: Bizplace = worksheet.bizplace\n let worksheetDetails: WorksheetDetail[] = worksheet.worksheetDetails\n\n const targetInventories: OrderInventory[] = worksheetDetails.map((wsd: WorksheetDetail) => {\n let targetInventory: OrderInventory = wsd.targetInventory\n targetInventory.status = ORDER_PRODUCT_STATUS.UNLOADING\n targetInventory.updater = this.user\n return targetInventory\n })\n await this.updateOrderTargets(targetInventories)\n\n let returnOrder: ReturnOrder = worksheet.returnOrder\n returnOrder.status = ORDER_STATUS.PROCESSING\n returnOrder.updater = this.user\n this.updateRefOrder(returnOrder)\n\n worksheet = await this.activateWorksheet(worksheet, worksheetDetails, unloadingReturnWorksheetDetails)\n\n try {\n const vasWorksheet: Worksheet = await this.findWorksheetByRefOrder(returnOrder, WORKSHEET_TYPE.VAS)\n if (vasWorksheet) {\n await this.activateVAS(vasWorksheet.name, vasWorksheet.worksheetDetails)\n }\n } catch (e) {\n // Do nothing\n }\n\n return worksheet\n }\n\n async completeUnloadReturning(\n returnOrderNo: string,\n unloadingReturnWorksheetDetails: Partial<WorksheetDetail>[]\n ): Promise<void> {\n let returnOrder: ReturnOrder = await this.findRefOrder(\n ReturnOrder,\n {\n domain: { id: this.domain.id },\n name: returnOrderNo,\n status: In([ORDER_STATUS.PROCESSING, ORDER_STATUS.PUTTING_AWAY])\n },\n ['orderInventories']\n )\n\n // if (returnOrder.crossDocking) {\n // // Picking worksheet for cross docking should be completed before complete it\n // // Find picking worksheet\n // const releaseGood: ReleaseGood = arrivalNotice.releaseGood\n // const executingPickingWS: Worksheet = await this.trxMgr.getRepository(Worksheet).findOne({\n // where: {\n // domain: { id: this.domain.id },\n // releaseGood: { id: releaseGood.id },\n // type: WORKSHEET_TYPE.PICKING,\n // status: Not(Equal(WORKSHEET_STATUS.DONE))\n // }\n // })\n\n // if (executingPickingWS)\n // throw new Error(`Picking should be completed before complete unloading for cross docking.`)\n // }\n\n if (\n returnOrder.orderInventories.some((oi: OrderInventory) => oi.status === ORDER_PRODUCT_STATUS.READY_TO_APPROVED)\n ) {\n throw new Error(`There's non-approved order products`)\n }\n\n let worksheet: Worksheet = await this.findWorksheetByRefOrder(returnOrder, WORKSHEET_TYPE.UNLOADING_RETURN, [\n 'worksheetDetails',\n 'worksheetDetails.targetInventory'\n ])\n this.checkRecordValidity(worksheet, { status: WORKSHEET_STATUS.EXECUTING })\n\n const partiallyUnloadedCnt: number = await this.trxMgr.getRepository(Inventory).count({\n where: { domain: { id: this.domain.id }, refOrderId: returnOrder.id, status: INVENTORY_STATUS.PARTIALLY_UNLOADED }\n })\n if (partiallyUnloadedCnt) {\n throw new Error('There is partially unloaded pallet, generate putaway worksheet before complete unloading.')\n }\n\n if (unloadingReturnWorksheetDetails.some((wsd: Partial<WorksheetDetail>) => wsd.issue)) {\n const worksheetDetails: WorksheetDetail[] = worksheet.worksheetDetails\n unloadingReturnWorksheetDetails = this.renewWorksheetDetails(\n worksheetDetails,\n unloadingReturnWorksheetDetails,\n 'name',\n {\n updater: this.user\n }\n )\n const worksheetDetailsWithIssue: WorksheetDetail[] = unloadingReturnWorksheetDetails.filter(\n (wsd: WorksheetDetail) => wsd.issue\n ) as WorksheetDetail[]\n if (worksheetDetailsWithIssue.length) {\n await this.trxMgr.getRepository(WorksheetDetail).save(worksheetDetailsWithIssue)\n }\n\n const targetInventoriesWithIssue: OrderProduct[] = worksheetDetailsWithIssue.map((wsd: WorksheetDetail) => {\n let targetInventory: OrderProduct = wsd.targetInventory\n targetInventory.remark = wsd.issue\n return targetInventory\n })\n await this.updateOrderTargets(targetInventoriesWithIssue)\n }\n\n if (returnOrder.status !== ORDER_STATUS.PUTTING_AWAY) {\n await this.completeWorksheet(worksheet, ORDER_STATUS.READY_TO_PUTAWAY)\n } else {\n await this.completeWorksheet(worksheet)\n }\n }\n\n async completeUnloadReturnPartially(\n returnOrderNo: string,\n unloadingReturnWorksheetDetails: Partial<WorksheetDetail>[]\n ): Promise<Worksheet> {\n const returnOrder: ReturnOrder = await this.findRefOrder(ReturnOrder, {\n name: returnOrderNo,\n status: ORDER_STATUS.PROCESSING\n })\n\n const worksheet: Worksheet = await this.findWorksheetByRefOrder(returnOrder, WORKSHEET_TYPE.UNLOADING_RETURN, [\n 'worksheetDetails',\n 'worksheetDetails.targetInventory'\n ])\n this.checkRecordValidity(worksheet, { status: WORKSHEET_STATUS.EXECUTING })\n\n let worksheetDetails = worksheet.worksheetDetails.filter(({ name: itm1 }) =>\n unloadingReturnWorksheetDetails.some(({ name: itm2 }) => itm2 === itm1)\n )\n\n worksheetDetails.forEach((wsds: WorksheetDetail) => {\n wsds.status = WORKSHEET_STATUS.PARTIALLY_UNLOADED\n wsds.updater = this.user\n })\n\n worksheetDetails = await this.trxMgr.getRepository(WorksheetDetail).save(worksheetDetails)\n\n for (let i = 0; i < worksheetDetails.length; i++) {\n worksheetDetails[i].targetInventory.status = ORDER_PRODUCT_STATUS.PARTIALLY_UNLOADED\n worksheetDetails[i].targetInventory.remark =\n worksheetDetails[i].issue || worksheetDetails[i].targetInventory.remark\n await this.updateOrderTargets([worksheetDetails[i].targetInventory])\n }\n\n let inventories: Inventory[] = await this.trxMgr.getRepository(Inventory).find({\n where: {\n domain: { id: this.domain.id },\n refOrderId: returnOrder.id,\n status: In([INVENTORY_STATUS.UNLOADED, INVENTORY_STATUS.CHECKED])\n }\n })\n\n inventories.forEach((inventory: Inventory) => {\n inventory.status = INVENTORY_STATUS.PARTIALLY_UNLOADED\n inventory.updater = this.user\n })\n await this.trxMgr.getRepository(Inventory).save(inventories)\n\n return worksheet\n }\n\n async createPalletizingWSDs(\n bizplace: Bizplace,\n returnOrder: ReturnOrder,\n worksheetDetails: WorksheetDetail[],\n palletizingWSDs: UnloadingReturningWorksheetDetail[]\n ): Promise<void> {\n let palletizingOrderVASs: Partial<OrderVas>[] = []\n\n for (let palletizingWSD of palletizingWSDs) {\n const palletizingVAS: Vas = await this.trxMgr.getRepository(Vas).findOne({\n where: { domain: { id: this.domain.id }, id: palletizingWSD.palletizingVasId }\n })\n\n const targetInventory: OrderInventory = worksheetDetails.find(\n (wsd: WorksheetDetail) => wsd.name === palletizingWSD.name\n )\n\n palletizingOrderVASs.push({\n domain: this.domain,\n bizplace,\n name: OrderNoGenerator.orderVas(),\n returnOrder,\n vas: palletizingVAS,\n targetType: VAS_TARGET_TYPES.BATCH_AND_PRODUCT_TYPE,\n targetBatchId: targetInventory.batchId,\n targetProduct: targetInventory.product,\n packingType: targetInventory.packingType,\n description: palletizingWSD.palletizingDescription,\n type: ORDER_TYPES.RETURN_ORDER,\n status: ORDER_VAS_STATUS.COMPLETED,\n creator: this.user,\n updater: this.user\n })\n }\n\n this.trxMgr.getRepository(OrderVas).save(palletizingOrderVASs)\n\n let vasWorksheet: Worksheet = await this.findWorksheetByRefOrder(returnOrder, WORKSHEET_TYPE.VAS)\n if (!vasWorksheet) {\n this.generateVasWorksheet(returnOrder)\n } else {\n await this.createWorksheetDetails(vasWorksheet, WORKSHEET_TYPE.VAS, palletizingOrderVASs)\n }\n }\n\n filterPalletizingWSDs(unloadingWSDs: UnloadingReturningWorksheetDetail[]): UnloadingReturningWorksheetDetail[] {\n return unloadingWSDs.filter((wsd: UnloadingReturningWorksheetDetail) => wsd.palletQty && wsd.palletizingDescription)\n }\n}\n"]}
|
|
@@ -223,7 +223,7 @@ class CycleCountWorksheetController extends worksheet_controller_1.WorksheetCont
|
|
|
223
223
|
}
|
|
224
224
|
}
|
|
225
225
|
async undoInspection(worksheetDetailName) {
|
|
226
|
-
let worksheetDetail = await this.findWorksheetDetail({ domain: this.domain, name: worksheetDetailName, status: (0, typeorm_1.Not)((0, typeorm_1.Equal)(constants_1.WORKSHEET_STATUS.EXECUTING)) }, ['targetInventory', 'targetInventory.inventory']);
|
|
226
|
+
let worksheetDetail = await this.findWorksheetDetail({ domain: { id: this.domain.id }, name: worksheetDetailName, status: (0, typeorm_1.Not)((0, typeorm_1.Equal)(constants_1.WORKSHEET_STATUS.EXECUTING)) }, ['targetInventory', 'targetInventory.inventory']);
|
|
227
227
|
let targetInventory = worksheetDetail.targetInventory;
|
|
228
228
|
targetInventory.inspectedBatchNo = null;
|
|
229
229
|
targetInventory.inspectedQty = null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cycle-count-worksheet-controller.js","sourceRoot":"","sources":["../../../server/controllers/inspect/cycle-count-worksheet-controller.ts"],"names":[],"mappings":"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","sourcesContent":["import { Brackets, Equal, In, Not, SelectQueryBuilder } from 'typeorm'\n\nimport { Bizplace } from '@things-factory/biz-base'\nimport {\n generateCycleCount,\n InventoryCheck,\n ORDER_INVENTORY_STATUS,\n ORDER_STATUS,\n OrderInventory,\n OrderNoGenerator\n} from '@things-factory/sales-base'\nimport { Inventory, INVENTORY_STATUS, Location } from '@things-factory/warehouse-base'\n\nimport { WORKSHEET_STATUS, WORKSHEET_TYPE } from '../../constants'\nimport { Worksheet, WorksheetDetail } from '../../entities'\nimport { WorksheetNoGenerator } from '../../utils'\nimport { WorksheetController } from '../worksheet-controller'\n\nexport class CycleCountWorksheetController extends WorksheetController {\n async generateCycleCountWorksheet(\n executionDate: string,\n customerId: string,\n orderInventoryIds: string[] = [],\n orderInventory: OrderInventory[],\n limit: number\n ): Promise<Worksheet> {\n // Find out warehouse and customer bizplace\n const customerBizplace: Bizplace = await this.trxMgr.getRepository(Bizplace).findOneBy({ id: customerId })\n let foundCycleCountWorksheet: Worksheet = await this.trxMgr.getRepository(Worksheet).findOne({\n where: {\n domain: { id: this.domain.id },\n bizplace: { id: customerBizplace.id },\n type: In([WORKSHEET_TYPE.CYCLE_COUNT, WORKSHEET_TYPE.CYCLE_COUNT_RECHECK]),\n status: Not(WORKSHEET_STATUS.DONE)\n },\n relations: ['worksheetDetails', 'worksheetDetails.targetInventory', 'inventoryCheck']\n })\n\n // Create second round of cycle count with specified order inventories\n if (orderInventoryIds.length) {\n // Update status of target inventories (NOT_TALLY => INSPECTING)\n let targetInventories: OrderInventory[] = await this.trxMgr\n .getRepository(OrderInventory)\n .findByIds(orderInventoryIds)\n targetInventories.forEach((targetInventory: OrderInventory) => {\n targetInventory.status = ORDER_INVENTORY_STATUS.INSPECTING\n targetInventory.updater = this.user\n })\n await this.trxMgr.getRepository(OrderInventory).save(targetInventories)\n\n // Update status of worksheet (NOT_TALLY => EXECUTING)\n foundCycleCountWorksheet.type = WORKSHEET_TYPE.CYCLE_COUNT_RECHECK\n foundCycleCountWorksheet.status = WORKSHEET_STATUS.EXECUTING\n foundCycleCountWorksheet.endedAt = null\n foundCycleCountWorksheet.updater = this.user\n await this.trxMgr.getRepository(Worksheet).save(foundCycleCountWorksheet)\n\n // Update status of worksheet details (NOT_TALLY => EXECUTING)\n let worksheetDetails = foundCycleCountWorksheet.worksheetDetails.filter(\n (wsd: WorksheetDetail) => orderInventoryIds.indexOf(wsd.targetInventory.id) >= 0\n )\n worksheetDetails.forEach((wsd: WorksheetDetail) => {\n wsd.status = WORKSHEET_STATUS.EXECUTING\n wsd.updater = this.user\n })\n await this.trxMgr.getRepository(WorksheetDetail).save(worksheetDetails)\n\n // Update status of cycle count\n const cycleCount: InventoryCheck = foundCycleCountWorksheet.inventoryCheck\n cycleCount.status = ORDER_STATUS.INSPECTING\n cycleCount.updater = this.user\n await this.trxMgr.getRepository(InventoryCheck).save(cycleCount)\n\n return foundCycleCountWorksheet\n } else {\n // Create first round of cycle count with whole pallets\n if (foundCycleCountWorksheet) {\n throw new Error(`Unfinished cycle count worksheet exists.`)\n }\n\n const cycleCount: InventoryCheck = await generateCycleCount(\n this.trxMgr,\n this.domain,\n this.user,\n executionDate,\n customerId\n )\n\n // Find out inventories which is target for cycle counting\n const qb: SelectQueryBuilder<Inventory> = this.trxMgr.getRepository(Inventory).createQueryBuilder('INV')\n qb.leftJoinAndSelect('INV.location', 'LOC')\n .where('INV.domain_id = :domainId', { domainId: this.domain.id })\n .andWhere('INV.bizplace_id = :bizplaceId', { bizplaceId: customerBizplace.id })\n .andWhere('INV.status = :status', { status: INVENTORY_STATUS.STORED })\n .andWhere(\n new Brackets(qb => {\n qb.where('\"INV\".\"locked_qty\" ISNULL')\n qb.orWhere('\"INV\".\"locked_qty\" = 0')\n })\n )\n\n if (orderInventory && orderInventory.length > 0) {\n let keyval = {\n batchId: 'batch_id',\n batchIdRef: 'batch_id_ref',\n packingType: 'packing_type',\n packingSize: 'packing_size',\n productId: 'product_id'\n }\n\n qb.andWhere(\n new Brackets(qb => {\n orderInventory.forEach((itm, idx) => {\n // sample itm value\n // batchId: 'WO00019730', batchIdRef: null, packingType: 'CARBOY', packingSize: 1, productId: '1d679587-c713-42d6-bd0a-74e587e39cc7'\n qb.orWhere(\n new Brackets(qb2 => {\n let first = true\n for (var prop in itm) {\n if (first) {\n first = false\n qb2.where(`INV.${keyval[prop]} ${itm[prop] == null ? 'is null' : \" = '\" + itm[prop] + \"'\"}`)\n } else {\n qb2.andWhere(`INV.${keyval[prop]} ${itm[prop] == null ? 'is null' : \" = '\" + itm[prop] + \"'\"}`)\n }\n }\n })\n )\n })\n })\n )\n } else {\n if (limit > 0) {\n qb.orderBy('RANDOM()').limit(limit)\n }\n }\n\n let inventories: Inventory[] = await qb.getMany()\n\n if (!inventories.length) {\n throw new Error(`Failed to find inventories`)\n }\n\n let cycleCountWorksheet: Worksheet = new Worksheet()\n cycleCountWorksheet.domain = this.domain\n cycleCountWorksheet.bizplace = customerBizplace\n cycleCountWorksheet.name = WorksheetNoGenerator.cycleCount()\n cycleCountWorksheet.inventoryCheck = cycleCount\n cycleCountWorksheet.type = WORKSHEET_TYPE.CYCLE_COUNT\n cycleCountWorksheet.status = WORKSHEET_STATUS.DEACTIVATED\n cycleCountWorksheet.creator = this.user\n cycleCountWorksheet.updater = this.user\n cycleCountWorksheet = await this.trxMgr.getRepository(Worksheet).save(cycleCountWorksheet)\n\n // generate order inventory mapping with inventory ID\n let targetInventories: OrderInventory[] = []\n for (let i: number = 0; i < inventories.length; i++) {\n const inventory: Inventory = inventories[i]\n\n let targetInventory: OrderInventory = new OrderInventory()\n targetInventory.domain = this.domain\n targetInventory.bizplace = customerBizplace\n targetInventory.status = ORDER_INVENTORY_STATUS.PENDING\n targetInventory.name = OrderNoGenerator.orderInventory()\n targetInventory.inventoryCheck = cycleCount\n targetInventory.originQty = inventory.qty\n targetInventory.originWeight = 0\n targetInventory.originUomValue = inventory.uomValue\n targetInventory.originBatchNo = inventory.batchId\n targetInventory.originLocation = inventory.location\n targetInventory.releaseQty = 0\n targetInventory.releaseWeight = 0\n targetInventory.releaseUomValue = 0\n targetInventory.inventory = inventory\n targetInventory.creator = this.user\n targetInventory.updater = this.user\n targetInventories.push(targetInventory)\n\n inventory.lockedQty = inventory.qty\n inventory.lockedWeight = 0\n inventory.lockedUomValue = inventory.uomValue\n inventory.updater = this.user\n }\n\n targetInventories = await this.trxMgr.getRepository(OrderInventory).save(targetInventories, { chunk: 500 })\n\n inventories = await this.trxMgr.getRepository(Inventory).save(inventories, { chunk: 500 })\n\n let cycleCountWorksheetDetails: WorksheetDetail[] = []\n for (let i: number = 0; i < targetInventories.length; i++) {\n let targetInventory: OrderInventory = targetInventories[i]\n\n let cycleCountWorksheetDetail: WorksheetDetail = new WorksheetDetail()\n cycleCountWorksheetDetail.domain = this.domain\n cycleCountWorksheetDetail.bizplace = customerBizplace\n cycleCountWorksheetDetail.worksheet = cycleCountWorksheet\n cycleCountWorksheetDetail.name = WorksheetNoGenerator.cycleCountDetail()\n cycleCountWorksheetDetail.targetInventory = targetInventory\n cycleCountWorksheetDetail.type = WORKSHEET_TYPE.CYCLE_COUNT\n cycleCountWorksheetDetail.status = WORKSHEET_STATUS.DEACTIVATED\n cycleCountWorksheetDetail.creator = this.user\n cycleCountWorksheetDetail.updater = this.user\n\n cycleCountWorksheetDetails.push(cycleCountWorksheetDetail)\n }\n\n await this.trxMgr.getRepository(WorksheetDetail).save(cycleCountWorksheetDetails, { chunk: 500 })\n\n return cycleCountWorksheet\n }\n }\n\n async activateCycleCount(worksheetNo: string): Promise<Worksheet> {\n let worksheet: Worksheet = await this.findActivatableWorksheet(worksheetNo, WORKSHEET_TYPE.CYCLE_COUNT, [\n 'inventoryCheck',\n 'worksheetDetails',\n 'worksheetDetails.targetInventory'\n ])\n\n let worksheetDetails: WorksheetDetail[] = worksheet.worksheetDetails\n let targetInventories: OrderInventory[] = worksheetDetails.map((wsd: WorksheetDetail) => wsd.targetInventory)\n\n for (let i: number = 0; i < targetInventories.length; i++) {\n let targetInventory: OrderInventory = targetInventories[i]\n targetInventory.status = ORDER_INVENTORY_STATUS.INSPECTING\n targetInventory.updater = this.user\n }\n await this.trxMgr.getRepository(OrderInventory).save(targetInventories, { chunk: 500 })\n\n for (let i: number = 0; i < worksheetDetails.length; i++) {\n let foundWSD: WorksheetDetail = worksheetDetails[i]\n foundWSD.status = WORKSHEET_STATUS.EXECUTING\n foundWSD.updater = this.user\n }\n await this.trxMgr.getRepository(WorksheetDetail).save(worksheetDetails, { chunk: 500 })\n\n worksheet.status = WORKSHEET_STATUS.EXECUTING\n worksheet.startedAt = new Date()\n worksheet.updater = this.user\n worksheet = await this.trxMgr.getRepository(Worksheet).save(worksheet)\n\n let cycleCount: InventoryCheck = worksheet.inventoryCheck\n cycleCount.status = ORDER_STATUS.INSPECTING\n cycleCount.updater = this.user\n await this.updateRefOrder(cycleCount)\n return worksheet\n }\n\n async inspecting(\n worksheetDetailName: string,\n inspectedBatchNo: string,\n inspectedQty: number,\n inspectedUomValue: number\n ): Promise<void> {\n let worksheetDetail: WorksheetDetail = await this.findExecutableWorksheetDetailByName(\n worksheetDetailName,\n WORKSHEET_TYPE.CYCLE_COUNT,\n ['targetInventory', 'targetInventory.inventory', 'targetInventory.inventory.location']\n )\n\n let targetInventory: OrderInventory = worksheetDetail.targetInventory\n const inventory: Inventory = targetInventory.inventory\n const { batchId, qty, uomValue }: { batchId: string; qty: number; uomValue: number } = inventory\n\n const isChanged: boolean = batchId !== inspectedBatchNo || qty !== inspectedQty || uomValue !== inspectedUomValue\n const worksheetDetailStatus: string = isChanged ? WORKSHEET_STATUS.NOT_TALLY : WORKSHEET_STATUS.DONE\n const targetInventoryStatus: string = isChanged\n ? ORDER_INVENTORY_STATUS.NOT_TALLY\n : ORDER_INVENTORY_STATUS.INSPECTED\n\n worksheetDetail.status = worksheetDetailStatus\n worksheetDetail.updater = this.user\n await this.trxMgr.getRepository(WorksheetDetail).save(worksheetDetail)\n\n targetInventory.inspectedBatchNo = inspectedBatchNo\n targetInventory.inspectedQty = inspectedQty\n targetInventory.inspectedUomValue = inspectedUomValue\n targetInventory.inspectedLocation = targetInventory.inventory.location\n targetInventory.status = targetInventoryStatus\n targetInventory.updater = this.user\n await this.updateOrderTargets([targetInventory])\n\n //If all tally, remove lockedQty, lockedWeight, lockedUomValue\n if (!isChanged) {\n inventory.lockedQty = 0\n inventory.lockedWeight = 0\n inventory.lockedUomValue = 0\n inventory.updater = this.user\n await this.trxMgr.getRepository(Inventory).save(inventory, { chunk: 500 })\n }\n }\n\n async undoInspection(worksheetDetailName: string): Promise<void> {\n let worksheetDetail: WorksheetDetail = await this.findWorksheetDetail(\n { domain: this.domain, name: worksheetDetailName, status: Not(Equal(WORKSHEET_STATUS.EXECUTING)) },\n ['targetInventory', 'targetInventory.inventory']\n )\n\n let targetInventory: OrderInventory = worksheetDetail.targetInventory\n targetInventory.inspectedBatchNo = null\n targetInventory.inspectedQty = null\n targetInventory.inspectedWeight = null\n targetInventory.inspectedUomValue = null\n targetInventory.inspectedLocation = null\n targetInventory.status =\n targetInventory.status === ORDER_INVENTORY_STATUS.RELOCATED\n ? ORDER_INVENTORY_STATUS.MISSING\n : ORDER_INVENTORY_STATUS.INSPECTING\n targetInventory.updater = this.user\n await this.updateOrderTargets([targetInventory])\n\n worksheetDetail.status = WORKSHEET_STATUS.EXECUTING\n worksheetDetail.updater = this.user\n await this.trxMgr.getRepository(WorksheetDetail).save(worksheetDetail)\n\n const inventory: Inventory = targetInventory.inventory\n inventory.lockedQty = inventory.qty\n inventory.lockedWeight = inventory.weight\n inventory.lockedUomValue = inventory.uomValue\n inventory.updater = this.user\n await this.trxMgr.getRepository(Inventory).save(inventory, { chunk: 500 })\n }\n\n async checkMissingPallet(worksheetDetailName: string): Promise<void> {\n let worksheetDetail: WorksheetDetail = await this.findExecutableWorksheetDetailByName(\n worksheetDetailName,\n WORKSHEET_TYPE.CYCLE_COUNT,\n ['targetInventory']\n )\n\n let targetInventory: OrderInventory = worksheetDetail.targetInventory\n worksheetDetail.status = WORKSHEET_STATUS.NOT_TALLY\n worksheetDetail.updater = this.user\n await this.trxMgr.getRepository(WorksheetDetail).save(worksheetDetail)\n\n targetInventory.status = ORDER_INVENTORY_STATUS.MISSING\n targetInventory.updater = this.user\n await this.updateOrderTargets([targetInventory])\n }\n\n async addExtraPallet(\n cycleCountNo: string,\n palletId: string,\n inspectedBatchNo: string,\n inspectedQty: number,\n inspectedUomValue: number,\n locationName: string\n ): Promise<void> {\n const inventoryCheck: InventoryCheck = await this.findRefOrder(\n InventoryCheck,\n {\n name: cycleCountNo,\n status: ORDER_STATUS.INSPECTING\n },\n ['bizplace']\n )\n\n const bizplace: Bizplace = inventoryCheck.bizplace\n const qb: SelectQueryBuilder<Inventory> = this.trxMgr.getRepository(Inventory).createQueryBuilder('INV')\n let inventory: Inventory = await qb\n .where('INV.domain = :domainId', { domainId: this.domain.id })\n .andWhere('INV.bizplace = :bizplaceId', { bizplaceId: bizplace.id })\n .andWhere('INV.palletId = :palletId', { palletId })\n .andWhere('INV.status = :status', { status: INVENTORY_STATUS.STORED })\n .andWhere(\n new Brackets(qb => {\n qb.where('INV.lockedQty ISNULL')\n qb.orWhere('INV.lockedQty = 0')\n })\n )\n .getOne()\n if (!inventory) throw new Error('Failed to find inventory')\n\n const worksheet: Worksheet = await this.trxMgr.getRepository(Worksheet).findOne({\n where: {\n domain: { id: this.domain.id },\n type: WORKSHEET_TYPE.CYCLE_COUNT,\n status: WORKSHEET_STATUS.EXECUTING,\n inventoryCheck: { id: inventoryCheck.id }\n }\n })\n const location: Location = await this.trxMgr.getRepository(Location).findOne({\n where: { domain: { id: this.domain.id }, name: locationName }\n })\n\n let targetInventory: OrderInventory = new OrderInventory()\n targetInventory.domain = this.domain\n targetInventory.bizplace = bizplace\n targetInventory.status = ORDER_INVENTORY_STATUS.ADDED\n targetInventory.name = OrderNoGenerator.orderInventory()\n targetInventory.inventoryCheck = inventoryCheck\n targetInventory.inventory = inventory\n targetInventory.inspectedBatchNo = inspectedBatchNo\n targetInventory.inspectedQty = inspectedQty\n targetInventory.inspectedWeight = 0\n targetInventory.inspectedUomValue = inspectedUomValue\n targetInventory.inspectedLocation = location\n targetInventory.creator = this.user\n targetInventory.updater = this.user\n await this.updateOrderTargets([targetInventory])\n\n let worksheetDetail: WorksheetDetail = new WorksheetDetail()\n worksheetDetail.domain = this.domain\n worksheetDetail.bizplace = bizplace\n worksheetDetail.worksheet = worksheet\n worksheetDetail.name = WorksheetNoGenerator.cycleCountDetail()\n worksheetDetail.targetInventory = targetInventory\n worksheetDetail.type = WORKSHEET_TYPE.CYCLE_COUNT\n worksheetDetail.status = WORKSHEET_STATUS.NOT_TALLY\n worksheetDetail.creator = this.user\n worksheetDetail.updater = this.user\n await this.trxMgr.getRepository(WorksheetDetail).save(worksheetDetail)\n }\n\n async relocatePallet(\n worksheetDetailName: string,\n inspectedBatchNo: string,\n inspectedQty: number,\n inspectedUomValue: number,\n inspectedLocationName: string\n ): Promise<void> {\n let worksheetDetail: WorksheetDetail = await this.trxMgr.getRepository(WorksheetDetail).findOne({\n where: { domain: { id: this.domain.id }, name: worksheetDetailName, type: WORKSHEET_TYPE.CYCLE_COUNT },\n relations: ['targetInventory', 'targetInventory.inventory', 'targetInventory.inventory.location']\n })\n\n if (!worksheetDetail) throw new Error('Failed to find worksheet detail')\n\n let targetInventory: OrderInventory = worksheetDetail.targetInventory\n const location: Location = targetInventory?.inventory?.location\n if (location.name === inspectedLocationName) throw new Error(`You can't relocate at same location`)\n\n const inspectedLocation: Location = await this.trxMgr.getRepository(Location).findOne({\n where: { name: inspectedLocationName, domain: { id: this.domain.id } }\n })\n\n worksheetDetail.status = WORKSHEET_STATUS.NOT_TALLY\n worksheetDetail.updater = this.user\n await this.trxMgr.getRepository(WorksheetDetail).save(worksheetDetail)\n\n targetInventory.inspectedLocation = inspectedLocation\n targetInventory.inspectedBatchNo = inspectedBatchNo\n targetInventory.inspectedQty = inspectedQty\n targetInventory.inspectedWeight = 0\n targetInventory.inspectedUomValue = inspectedUomValue\n targetInventory.status = ORDER_INVENTORY_STATUS.RELOCATED\n targetInventory.updater = this.user\n await this.updateOrderTargets([targetInventory])\n }\n\n async completeCycleCount(inventoryCheckNo: string): Promise<Worksheet> {\n const inventoryCheck: InventoryCheck = await this.findRefOrder(InventoryCheck, {\n name: inventoryCheckNo,\n status: ORDER_STATUS.INSPECTING\n })\n\n let worksheet: Worksheet = await this.trxMgr.getRepository(Worksheet).findOne({\n where: {\n domain: { id: this.domain.id },\n status: WORKSHEET_STATUS.EXECUTING,\n type: In([WORKSHEET_TYPE.CYCLE_COUNT, WORKSHEET_TYPE.CYCLE_COUNT_RECHECK]),\n inventoryCheck: { id: inventoryCheck.id }\n },\n relations: ['worksheetDetails', 'worksheetDetails.targetInventory', 'worksheetDetails.targetInventory.inventory']\n })\n this.checkRecordValidity(worksheet, { status: WORKSHEET_STATUS.EXECUTING })\n\n const worksheetDetails: WorksheetDetail[] = worksheet.worksheetDetails\n const targetInventories: OrderInventory[] = worksheetDetails.map((wsd: WorksheetDetail) => wsd.targetInventory)\n\n const {\n tallyTargetInventories,\n notTallyTargetInventories\n }: {\n tallyTargetInventories: OrderInventory[]\n notTallyTargetInventories: OrderInventory[]\n } = targetInventories.reduce(\n (result, targetInventory: OrderInventory) => {\n if (targetInventory.status !== ORDER_INVENTORY_STATUS.INSPECTED) {\n result.notTallyTargetInventories.push(targetInventory)\n } else {\n result.tallyTargetInventories.push(targetInventory)\n }\n\n return result\n },\n {\n tallyTargetInventories: [],\n notTallyTargetInventories: []\n }\n )\n\n const tallyInventories: Inventory[] = tallyTargetInventories.map(targetInventory => targetInventory.inventory)\n tallyTargetInventories.forEach((targetInventory: OrderInventory) => {\n targetInventory.status = ORDER_INVENTORY_STATUS.TERMINATED\n targetInventory.updater = this.user\n })\n await this.trxMgr.getRepository(OrderInventory).save(tallyTargetInventories, { chunk: 500 })\n\n tallyInventories.forEach((inventory: Inventory) => {\n inventory.lockedQty = 0\n inventory.lockedWeight = 0\n inventory.lockedUomValue = 0\n inventory.updater = this.user\n })\n await this.trxMgr.getRepository(Inventory).save(tallyInventories, { chunk: 500 })\n\n if (notTallyTargetInventories.length) {\n worksheet.status = WORKSHEET_STATUS.NOT_TALLY\n inventoryCheck.status = ORDER_STATUS.PENDING_REVIEW\n } else {\n worksheet.status = WORKSHEET_STATUS.DONE\n inventoryCheck.status = ORDER_STATUS.DONE\n }\n\n worksheet.endedAt = new Date()\n worksheet.updater = this.user\n await this.trxMgr.getRepository(Worksheet).save(worksheet)\n\n inventoryCheck.updater = this.user\n await this.trxMgr.getRepository(InventoryCheck).save(inventoryCheck)\n\n return worksheet\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"cycle-count-worksheet-controller.js","sourceRoot":"","sources":["../../../server/controllers/inspect/cycle-count-worksheet-controller.ts"],"names":[],"mappings":"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","sourcesContent":["import { Brackets, Equal, In, Not, SelectQueryBuilder } from 'typeorm'\n\nimport { Bizplace } from '@things-factory/biz-base'\nimport {\n generateCycleCount,\n InventoryCheck,\n ORDER_INVENTORY_STATUS,\n ORDER_STATUS,\n OrderInventory,\n OrderNoGenerator\n} from '@things-factory/sales-base'\nimport { Inventory, INVENTORY_STATUS, Location } from '@things-factory/warehouse-base'\n\nimport { WORKSHEET_STATUS, WORKSHEET_TYPE } from '../../constants'\nimport { Worksheet, WorksheetDetail } from '../../entities'\nimport { WorksheetNoGenerator } from '../../utils'\nimport { WorksheetController } from '../worksheet-controller'\n\nexport class CycleCountWorksheetController extends WorksheetController {\n async generateCycleCountWorksheet(\n executionDate: string,\n customerId: string,\n orderInventoryIds: string[] = [],\n orderInventory: OrderInventory[],\n limit: number\n ): Promise<Worksheet> {\n // Find out warehouse and customer bizplace\n const customerBizplace: Bizplace = await this.trxMgr.getRepository(Bizplace).findOneBy({ id: customerId })\n let foundCycleCountWorksheet: Worksheet = await this.trxMgr.getRepository(Worksheet).findOne({\n where: {\n domain: { id: this.domain.id },\n bizplace: { id: customerBizplace.id },\n type: In([WORKSHEET_TYPE.CYCLE_COUNT, WORKSHEET_TYPE.CYCLE_COUNT_RECHECK]),\n status: Not(WORKSHEET_STATUS.DONE)\n },\n relations: ['worksheetDetails', 'worksheetDetails.targetInventory', 'inventoryCheck']\n })\n\n // Create second round of cycle count with specified order inventories\n if (orderInventoryIds.length) {\n // Update status of target inventories (NOT_TALLY => INSPECTING)\n let targetInventories: OrderInventory[] = await this.trxMgr\n .getRepository(OrderInventory)\n .findByIds(orderInventoryIds)\n targetInventories.forEach((targetInventory: OrderInventory) => {\n targetInventory.status = ORDER_INVENTORY_STATUS.INSPECTING\n targetInventory.updater = this.user\n })\n await this.trxMgr.getRepository(OrderInventory).save(targetInventories)\n\n // Update status of worksheet (NOT_TALLY => EXECUTING)\n foundCycleCountWorksheet.type = WORKSHEET_TYPE.CYCLE_COUNT_RECHECK\n foundCycleCountWorksheet.status = WORKSHEET_STATUS.EXECUTING\n foundCycleCountWorksheet.endedAt = null\n foundCycleCountWorksheet.updater = this.user\n await this.trxMgr.getRepository(Worksheet).save(foundCycleCountWorksheet)\n\n // Update status of worksheet details (NOT_TALLY => EXECUTING)\n let worksheetDetails = foundCycleCountWorksheet.worksheetDetails.filter(\n (wsd: WorksheetDetail) => orderInventoryIds.indexOf(wsd.targetInventory.id) >= 0\n )\n worksheetDetails.forEach((wsd: WorksheetDetail) => {\n wsd.status = WORKSHEET_STATUS.EXECUTING\n wsd.updater = this.user\n })\n await this.trxMgr.getRepository(WorksheetDetail).save(worksheetDetails)\n\n // Update status of cycle count\n const cycleCount: InventoryCheck = foundCycleCountWorksheet.inventoryCheck\n cycleCount.status = ORDER_STATUS.INSPECTING\n cycleCount.updater = this.user\n await this.trxMgr.getRepository(InventoryCheck).save(cycleCount)\n\n return foundCycleCountWorksheet\n } else {\n // Create first round of cycle count with whole pallets\n if (foundCycleCountWorksheet) {\n throw new Error(`Unfinished cycle count worksheet exists.`)\n }\n\n const cycleCount: InventoryCheck = await generateCycleCount(\n this.trxMgr,\n this.domain,\n this.user,\n executionDate,\n customerId\n )\n\n // Find out inventories which is target for cycle counting\n const qb: SelectQueryBuilder<Inventory> = this.trxMgr.getRepository(Inventory).createQueryBuilder('INV')\n qb.leftJoinAndSelect('INV.location', 'LOC')\n .where('INV.domain_id = :domainId', { domainId: this.domain.id })\n .andWhere('INV.bizplace_id = :bizplaceId', { bizplaceId: customerBizplace.id })\n .andWhere('INV.status = :status', { status: INVENTORY_STATUS.STORED })\n .andWhere(\n new Brackets(qb => {\n qb.where('\"INV\".\"locked_qty\" ISNULL')\n qb.orWhere('\"INV\".\"locked_qty\" = 0')\n })\n )\n\n if (orderInventory && orderInventory.length > 0) {\n let keyval = {\n batchId: 'batch_id',\n batchIdRef: 'batch_id_ref',\n packingType: 'packing_type',\n packingSize: 'packing_size',\n productId: 'product_id'\n }\n\n qb.andWhere(\n new Brackets(qb => {\n orderInventory.forEach((itm, idx) => {\n // sample itm value\n // batchId: 'WO00019730', batchIdRef: null, packingType: 'CARBOY', packingSize: 1, productId: '1d679587-c713-42d6-bd0a-74e587e39cc7'\n qb.orWhere(\n new Brackets(qb2 => {\n let first = true\n for (var prop in itm) {\n if (first) {\n first = false\n qb2.where(`INV.${keyval[prop]} ${itm[prop] == null ? 'is null' : \" = '\" + itm[prop] + \"'\"}`)\n } else {\n qb2.andWhere(`INV.${keyval[prop]} ${itm[prop] == null ? 'is null' : \" = '\" + itm[prop] + \"'\"}`)\n }\n }\n })\n )\n })\n })\n )\n } else {\n if (limit > 0) {\n qb.orderBy('RANDOM()').limit(limit)\n }\n }\n\n let inventories: Inventory[] = await qb.getMany()\n\n if (!inventories.length) {\n throw new Error(`Failed to find inventories`)\n }\n\n let cycleCountWorksheet: Worksheet = new Worksheet()\n cycleCountWorksheet.domain = this.domain\n cycleCountWorksheet.bizplace = customerBizplace\n cycleCountWorksheet.name = WorksheetNoGenerator.cycleCount()\n cycleCountWorksheet.inventoryCheck = cycleCount\n cycleCountWorksheet.type = WORKSHEET_TYPE.CYCLE_COUNT\n cycleCountWorksheet.status = WORKSHEET_STATUS.DEACTIVATED\n cycleCountWorksheet.creator = this.user\n cycleCountWorksheet.updater = this.user\n cycleCountWorksheet = await this.trxMgr.getRepository(Worksheet).save(cycleCountWorksheet)\n\n // generate order inventory mapping with inventory ID\n let targetInventories: OrderInventory[] = []\n for (let i: number = 0; i < inventories.length; i++) {\n const inventory: Inventory = inventories[i]\n\n let targetInventory: OrderInventory = new OrderInventory()\n targetInventory.domain = this.domain\n targetInventory.bizplace = customerBizplace\n targetInventory.status = ORDER_INVENTORY_STATUS.PENDING\n targetInventory.name = OrderNoGenerator.orderInventory()\n targetInventory.inventoryCheck = cycleCount\n targetInventory.originQty = inventory.qty\n targetInventory.originWeight = 0\n targetInventory.originUomValue = inventory.uomValue\n targetInventory.originBatchNo = inventory.batchId\n targetInventory.originLocation = inventory.location\n targetInventory.releaseQty = 0\n targetInventory.releaseWeight = 0\n targetInventory.releaseUomValue = 0\n targetInventory.inventory = inventory\n targetInventory.creator = this.user\n targetInventory.updater = this.user\n targetInventories.push(targetInventory)\n\n inventory.lockedQty = inventory.qty\n inventory.lockedWeight = 0\n inventory.lockedUomValue = inventory.uomValue\n inventory.updater = this.user\n }\n\n targetInventories = await this.trxMgr.getRepository(OrderInventory).save(targetInventories, { chunk: 500 })\n\n inventories = await this.trxMgr.getRepository(Inventory).save(inventories, { chunk: 500 })\n\n let cycleCountWorksheetDetails: WorksheetDetail[] = []\n for (let i: number = 0; i < targetInventories.length; i++) {\n let targetInventory: OrderInventory = targetInventories[i]\n\n let cycleCountWorksheetDetail: WorksheetDetail = new WorksheetDetail()\n cycleCountWorksheetDetail.domain = this.domain\n cycleCountWorksheetDetail.bizplace = customerBizplace\n cycleCountWorksheetDetail.worksheet = cycleCountWorksheet\n cycleCountWorksheetDetail.name = WorksheetNoGenerator.cycleCountDetail()\n cycleCountWorksheetDetail.targetInventory = targetInventory\n cycleCountWorksheetDetail.type = WORKSHEET_TYPE.CYCLE_COUNT\n cycleCountWorksheetDetail.status = WORKSHEET_STATUS.DEACTIVATED\n cycleCountWorksheetDetail.creator = this.user\n cycleCountWorksheetDetail.updater = this.user\n\n cycleCountWorksheetDetails.push(cycleCountWorksheetDetail)\n }\n\n await this.trxMgr.getRepository(WorksheetDetail).save(cycleCountWorksheetDetails, { chunk: 500 })\n\n return cycleCountWorksheet\n }\n }\n\n async activateCycleCount(worksheetNo: string): Promise<Worksheet> {\n let worksheet: Worksheet = await this.findActivatableWorksheet(worksheetNo, WORKSHEET_TYPE.CYCLE_COUNT, [\n 'inventoryCheck',\n 'worksheetDetails',\n 'worksheetDetails.targetInventory'\n ])\n\n let worksheetDetails: WorksheetDetail[] = worksheet.worksheetDetails\n let targetInventories: OrderInventory[] = worksheetDetails.map((wsd: WorksheetDetail) => wsd.targetInventory)\n\n for (let i: number = 0; i < targetInventories.length; i++) {\n let targetInventory: OrderInventory = targetInventories[i]\n targetInventory.status = ORDER_INVENTORY_STATUS.INSPECTING\n targetInventory.updater = this.user\n }\n await this.trxMgr.getRepository(OrderInventory).save(targetInventories, { chunk: 500 })\n\n for (let i: number = 0; i < worksheetDetails.length; i++) {\n let foundWSD: WorksheetDetail = worksheetDetails[i]\n foundWSD.status = WORKSHEET_STATUS.EXECUTING\n foundWSD.updater = this.user\n }\n await this.trxMgr.getRepository(WorksheetDetail).save(worksheetDetails, { chunk: 500 })\n\n worksheet.status = WORKSHEET_STATUS.EXECUTING\n worksheet.startedAt = new Date()\n worksheet.updater = this.user\n worksheet = await this.trxMgr.getRepository(Worksheet).save(worksheet)\n\n let cycleCount: InventoryCheck = worksheet.inventoryCheck\n cycleCount.status = ORDER_STATUS.INSPECTING\n cycleCount.updater = this.user\n await this.updateRefOrder(cycleCount)\n return worksheet\n }\n\n async inspecting(\n worksheetDetailName: string,\n inspectedBatchNo: string,\n inspectedQty: number,\n inspectedUomValue: number\n ): Promise<void> {\n let worksheetDetail: WorksheetDetail = await this.findExecutableWorksheetDetailByName(\n worksheetDetailName,\n WORKSHEET_TYPE.CYCLE_COUNT,\n ['targetInventory', 'targetInventory.inventory', 'targetInventory.inventory.location']\n )\n\n let targetInventory: OrderInventory = worksheetDetail.targetInventory\n const inventory: Inventory = targetInventory.inventory\n const { batchId, qty, uomValue }: { batchId: string; qty: number; uomValue: number } = inventory\n\n const isChanged: boolean = batchId !== inspectedBatchNo || qty !== inspectedQty || uomValue !== inspectedUomValue\n const worksheetDetailStatus: string = isChanged ? WORKSHEET_STATUS.NOT_TALLY : WORKSHEET_STATUS.DONE\n const targetInventoryStatus: string = isChanged\n ? ORDER_INVENTORY_STATUS.NOT_TALLY\n : ORDER_INVENTORY_STATUS.INSPECTED\n\n worksheetDetail.status = worksheetDetailStatus\n worksheetDetail.updater = this.user\n await this.trxMgr.getRepository(WorksheetDetail).save(worksheetDetail)\n\n targetInventory.inspectedBatchNo = inspectedBatchNo\n targetInventory.inspectedQty = inspectedQty\n targetInventory.inspectedUomValue = inspectedUomValue\n targetInventory.inspectedLocation = targetInventory.inventory.location\n targetInventory.status = targetInventoryStatus\n targetInventory.updater = this.user\n await this.updateOrderTargets([targetInventory])\n\n //If all tally, remove lockedQty, lockedWeight, lockedUomValue\n if (!isChanged) {\n inventory.lockedQty = 0\n inventory.lockedWeight = 0\n inventory.lockedUomValue = 0\n inventory.updater = this.user\n await this.trxMgr.getRepository(Inventory).save(inventory, { chunk: 500 })\n }\n }\n\n async undoInspection(worksheetDetailName: string): Promise<void> {\n let worksheetDetail: WorksheetDetail = await this.findWorksheetDetail(\n { domain: { id: this.domain.id }, name: worksheetDetailName, status: Not(Equal(WORKSHEET_STATUS.EXECUTING)) },\n ['targetInventory', 'targetInventory.inventory']\n )\n\n let targetInventory: OrderInventory = worksheetDetail.targetInventory\n targetInventory.inspectedBatchNo = null\n targetInventory.inspectedQty = null\n targetInventory.inspectedWeight = null\n targetInventory.inspectedUomValue = null\n targetInventory.inspectedLocation = null\n targetInventory.status =\n targetInventory.status === ORDER_INVENTORY_STATUS.RELOCATED\n ? ORDER_INVENTORY_STATUS.MISSING\n : ORDER_INVENTORY_STATUS.INSPECTING\n targetInventory.updater = this.user\n await this.updateOrderTargets([targetInventory])\n\n worksheetDetail.status = WORKSHEET_STATUS.EXECUTING\n worksheetDetail.updater = this.user\n await this.trxMgr.getRepository(WorksheetDetail).save(worksheetDetail)\n\n const inventory: Inventory = targetInventory.inventory\n inventory.lockedQty = inventory.qty\n inventory.lockedWeight = inventory.weight\n inventory.lockedUomValue = inventory.uomValue\n inventory.updater = this.user\n await this.trxMgr.getRepository(Inventory).save(inventory, { chunk: 500 })\n }\n\n async checkMissingPallet(worksheetDetailName: string): Promise<void> {\n let worksheetDetail: WorksheetDetail = await this.findExecutableWorksheetDetailByName(\n worksheetDetailName,\n WORKSHEET_TYPE.CYCLE_COUNT,\n ['targetInventory']\n )\n\n let targetInventory: OrderInventory = worksheetDetail.targetInventory\n worksheetDetail.status = WORKSHEET_STATUS.NOT_TALLY\n worksheetDetail.updater = this.user\n await this.trxMgr.getRepository(WorksheetDetail).save(worksheetDetail)\n\n targetInventory.status = ORDER_INVENTORY_STATUS.MISSING\n targetInventory.updater = this.user\n await this.updateOrderTargets([targetInventory])\n }\n\n async addExtraPallet(\n cycleCountNo: string,\n palletId: string,\n inspectedBatchNo: string,\n inspectedQty: number,\n inspectedUomValue: number,\n locationName: string\n ): Promise<void> {\n const inventoryCheck: InventoryCheck = await this.findRefOrder(\n InventoryCheck,\n {\n name: cycleCountNo,\n status: ORDER_STATUS.INSPECTING\n },\n ['bizplace']\n )\n\n const bizplace: Bizplace = inventoryCheck.bizplace\n const qb: SelectQueryBuilder<Inventory> = this.trxMgr.getRepository(Inventory).createQueryBuilder('INV')\n let inventory: Inventory = await qb\n .where('INV.domain = :domainId', { domainId: this.domain.id })\n .andWhere('INV.bizplace = :bizplaceId', { bizplaceId: bizplace.id })\n .andWhere('INV.palletId = :palletId', { palletId })\n .andWhere('INV.status = :status', { status: INVENTORY_STATUS.STORED })\n .andWhere(\n new Brackets(qb => {\n qb.where('INV.lockedQty ISNULL')\n qb.orWhere('INV.lockedQty = 0')\n })\n )\n .getOne()\n if (!inventory) throw new Error('Failed to find inventory')\n\n const worksheet: Worksheet = await this.trxMgr.getRepository(Worksheet).findOne({\n where: {\n domain: { id: this.domain.id },\n type: WORKSHEET_TYPE.CYCLE_COUNT,\n status: WORKSHEET_STATUS.EXECUTING,\n inventoryCheck: { id: inventoryCheck.id }\n }\n })\n const location: Location = await this.trxMgr.getRepository(Location).findOne({\n where: { domain: { id: this.domain.id }, name: locationName }\n })\n\n let targetInventory: OrderInventory = new OrderInventory()\n targetInventory.domain = this.domain\n targetInventory.bizplace = bizplace\n targetInventory.status = ORDER_INVENTORY_STATUS.ADDED\n targetInventory.name = OrderNoGenerator.orderInventory()\n targetInventory.inventoryCheck = inventoryCheck\n targetInventory.inventory = inventory\n targetInventory.inspectedBatchNo = inspectedBatchNo\n targetInventory.inspectedQty = inspectedQty\n targetInventory.inspectedWeight = 0\n targetInventory.inspectedUomValue = inspectedUomValue\n targetInventory.inspectedLocation = location\n targetInventory.creator = this.user\n targetInventory.updater = this.user\n await this.updateOrderTargets([targetInventory])\n\n let worksheetDetail: WorksheetDetail = new WorksheetDetail()\n worksheetDetail.domain = this.domain\n worksheetDetail.bizplace = bizplace\n worksheetDetail.worksheet = worksheet\n worksheetDetail.name = WorksheetNoGenerator.cycleCountDetail()\n worksheetDetail.targetInventory = targetInventory\n worksheetDetail.type = WORKSHEET_TYPE.CYCLE_COUNT\n worksheetDetail.status = WORKSHEET_STATUS.NOT_TALLY\n worksheetDetail.creator = this.user\n worksheetDetail.updater = this.user\n await this.trxMgr.getRepository(WorksheetDetail).save(worksheetDetail)\n }\n\n async relocatePallet(\n worksheetDetailName: string,\n inspectedBatchNo: string,\n inspectedQty: number,\n inspectedUomValue: number,\n inspectedLocationName: string\n ): Promise<void> {\n let worksheetDetail: WorksheetDetail = await this.trxMgr.getRepository(WorksheetDetail).findOne({\n where: { domain: { id: this.domain.id }, name: worksheetDetailName, type: WORKSHEET_TYPE.CYCLE_COUNT },\n relations: ['targetInventory', 'targetInventory.inventory', 'targetInventory.inventory.location']\n })\n\n if (!worksheetDetail) throw new Error('Failed to find worksheet detail')\n\n let targetInventory: OrderInventory = worksheetDetail.targetInventory\n const location: Location = targetInventory?.inventory?.location\n if (location.name === inspectedLocationName) throw new Error(`You can't relocate at same location`)\n\n const inspectedLocation: Location = await this.trxMgr.getRepository(Location).findOne({\n where: { name: inspectedLocationName, domain: { id: this.domain.id } }\n })\n\n worksheetDetail.status = WORKSHEET_STATUS.NOT_TALLY\n worksheetDetail.updater = this.user\n await this.trxMgr.getRepository(WorksheetDetail).save(worksheetDetail)\n\n targetInventory.inspectedLocation = inspectedLocation\n targetInventory.inspectedBatchNo = inspectedBatchNo\n targetInventory.inspectedQty = inspectedQty\n targetInventory.inspectedWeight = 0\n targetInventory.inspectedUomValue = inspectedUomValue\n targetInventory.status = ORDER_INVENTORY_STATUS.RELOCATED\n targetInventory.updater = this.user\n await this.updateOrderTargets([targetInventory])\n }\n\n async completeCycleCount(inventoryCheckNo: string): Promise<Worksheet> {\n const inventoryCheck: InventoryCheck = await this.findRefOrder(InventoryCheck, {\n name: inventoryCheckNo,\n status: ORDER_STATUS.INSPECTING\n })\n\n let worksheet: Worksheet = await this.trxMgr.getRepository(Worksheet).findOne({\n where: {\n domain: { id: this.domain.id },\n status: WORKSHEET_STATUS.EXECUTING,\n type: In([WORKSHEET_TYPE.CYCLE_COUNT, WORKSHEET_TYPE.CYCLE_COUNT_RECHECK]),\n inventoryCheck: { id: inventoryCheck.id }\n },\n relations: ['worksheetDetails', 'worksheetDetails.targetInventory', 'worksheetDetails.targetInventory.inventory']\n })\n this.checkRecordValidity(worksheet, { status: WORKSHEET_STATUS.EXECUTING })\n\n const worksheetDetails: WorksheetDetail[] = worksheet.worksheetDetails\n const targetInventories: OrderInventory[] = worksheetDetails.map((wsd: WorksheetDetail) => wsd.targetInventory)\n\n const {\n tallyTargetInventories,\n notTallyTargetInventories\n }: {\n tallyTargetInventories: OrderInventory[]\n notTallyTargetInventories: OrderInventory[]\n } = targetInventories.reduce(\n (result, targetInventory: OrderInventory) => {\n if (targetInventory.status !== ORDER_INVENTORY_STATUS.INSPECTED) {\n result.notTallyTargetInventories.push(targetInventory)\n } else {\n result.tallyTargetInventories.push(targetInventory)\n }\n\n return result\n },\n {\n tallyTargetInventories: [],\n notTallyTargetInventories: []\n }\n )\n\n const tallyInventories: Inventory[] = tallyTargetInventories.map(targetInventory => targetInventory.inventory)\n tallyTargetInventories.forEach((targetInventory: OrderInventory) => {\n targetInventory.status = ORDER_INVENTORY_STATUS.TERMINATED\n targetInventory.updater = this.user\n })\n await this.trxMgr.getRepository(OrderInventory).save(tallyTargetInventories, { chunk: 500 })\n\n tallyInventories.forEach((inventory: Inventory) => {\n inventory.lockedQty = 0\n inventory.lockedWeight = 0\n inventory.lockedUomValue = 0\n inventory.updater = this.user\n })\n await this.trxMgr.getRepository(Inventory).save(tallyInventories, { chunk: 500 })\n\n if (notTallyTargetInventories.length) {\n worksheet.status = WORKSHEET_STATUS.NOT_TALLY\n inventoryCheck.status = ORDER_STATUS.PENDING_REVIEW\n } else {\n worksheet.status = WORKSHEET_STATUS.DONE\n inventoryCheck.status = ORDER_STATUS.DONE\n }\n\n worksheet.endedAt = new Date()\n worksheet.updater = this.user\n await this.trxMgr.getRepository(Worksheet).save(worksheet)\n\n inventoryCheck.updater = this.user\n await this.trxMgr.getRepository(InventoryCheck).save(inventoryCheck)\n\n return worksheet\n }\n}\n"]}
|
|
@@ -10,11 +10,11 @@ const utils_1 = require("../../utils");
|
|
|
10
10
|
const vas_worksheet_controller_1 = require("../vas/vas-worksheet-controller");
|
|
11
11
|
class LoadingWorksheetController extends vas_worksheet_controller_1.VasWorksheetController {
|
|
12
12
|
async generateLoadingWorksheet(releaseGoodNo, targetInventories) {
|
|
13
|
-
const releaseGood = await this.findRefOrder(sales_base_1.ReleaseGood, { domain: this.domain, name: releaseGoodNo }, ['bizplace']);
|
|
13
|
+
const releaseGood = await this.findRefOrder(sales_base_1.ReleaseGood, { domain: { id: this.domain.id }, name: releaseGoodNo }, ['bizplace']);
|
|
14
14
|
return await this.generateWorksheet(constants_1.WORKSHEET_TYPE.LOADING, releaseGood, targetInventories, sales_base_1.ORDER_STATUS.LOADING, sales_base_1.ORDER_INVENTORY_STATUS.LOADING);
|
|
15
15
|
}
|
|
16
16
|
async updateLoadingWorksheet(releaseGoodNo, targetInventories, worksheet) {
|
|
17
|
-
const releaseGood = await this.findRefOrder(sales_base_1.ReleaseGood, { domain: this.domain, name: releaseGoodNo }, ['bizplace']);
|
|
17
|
+
const releaseGood = await this.findRefOrder(sales_base_1.ReleaseGood, { domain: { id: this.domain.id }, name: releaseGoodNo }, ['bizplace']);
|
|
18
18
|
return await this.updateWorksheet(constants_1.WORKSHEET_TYPE.LOADING, releaseGood, worksheet, targetInventories, sales_base_1.ORDER_STATUS.LOADING, sales_base_1.ORDER_INVENTORY_STATUS.LOADING);
|
|
19
19
|
}
|
|
20
20
|
async activateLoading(worksheetNo, loadingWorksheetDetails) {
|
|
@@ -51,7 +51,7 @@ class LoadingWorksheetController extends vas_worksheet_controller_1.VasWorksheet
|
|
|
51
51
|
return await this.activateWorksheet(worksheet, worksheetDetails, loadingWorksheetDetails);
|
|
52
52
|
}
|
|
53
53
|
async loading(releaseGoodNo, worksheetDetails) {
|
|
54
|
-
const releaseGood = await this.findRefOrder(sales_base_1.ReleaseGood, { domain: this.domain, name: releaseGoodNo }, ['bizplace']);
|
|
54
|
+
const releaseGood = await this.findRefOrder(sales_base_1.ReleaseGood, { domain: { id: this.domain.id }, name: releaseGoodNo }, ['bizplace']);
|
|
55
55
|
const bizplace = releaseGood.bizplace;
|
|
56
56
|
for (let i = 0; i < worksheetDetails.length; i++) {
|
|
57
57
|
const loadedQty = worksheetDetails[i].loadedQty;
|