@things-factory/worksheet-base 5.0.13 → 5.0.14

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.
@@ -0,0 +1,169 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.fetchDeliveryOrderROResolver = void 0;
4
+ const typeorm_1 = require("typeorm");
5
+ const biz_base_1 = require("@things-factory/biz-base");
6
+ const sales_base_1 = require("@things-factory/sales-base");
7
+ const shell_1 = require("@things-factory/shell");
8
+ const constants_1 = require("../../../constants");
9
+ const entities_1 = require("../../../entities");
10
+ const utils_1 = require("../../../utils");
11
+ exports.fetchDeliveryOrderROResolver = {
12
+ async fetchDeliveryOrderRO(_, { name }, context) {
13
+ const domain = await (0, typeorm_1.getRepository)(shell_1.Domain).findOne({
14
+ where: { id: context.state.domain.id }
15
+ });
16
+ const foundDO = await (0, typeorm_1.getRepository)(sales_base_1.DeliveryOrder).findOne({
17
+ where: { domain, name },
18
+ relations: [
19
+ 'domain',
20
+ 'bizplace',
21
+ 'bizplace.company',
22
+ 'bizplace.domain',
23
+ 'transportDriver',
24
+ 'transportVehicle',
25
+ 'releaseGood',
26
+ 'creator',
27
+ 'updater'
28
+ ]
29
+ });
30
+ const ownTransportFlag = foundDO.ownCollection;
31
+ let foundCP = null;
32
+ if (foundDO === null || foundDO === void 0 ? void 0 : foundDO.contactPointRefId) {
33
+ foundCP = await (0, typeorm_1.getRepository)(biz_base_1.ContactPoint).findOne({
34
+ where: { domain, id: foundDO.contactPointRefId }
35
+ });
36
+ }
37
+ const foundRO = foundDO.releaseGood;
38
+ const partnerBiz = foundDO.bizplace; //customer bizplace
39
+ const ownRefNo = foundRO.refNo;
40
+ //find list of loaded inventory
41
+ const targetInventories = await (0, typeorm_1.getRepository)(sales_base_1.OrderInventory).find({
42
+ where: { domain, deliveryOrder: foundDO },
43
+ relations: ['inventory']
44
+ });
45
+ const orderInvIds = targetInventories.map((oi) => oi.id);
46
+ const foundWSD = await (0, typeorm_1.getRepository)(entities_1.WorksheetDetail).find({
47
+ where: {
48
+ domain,
49
+ targetInventory: (0, typeorm_1.In)(orderInvIds),
50
+ type: constants_1.WORKSHEET_TYPE.LOADING,
51
+ status: (0, typeorm_1.Equal)(constants_1.WORKSHEET_STATUS.DONE)
52
+ },
53
+ relations: [
54
+ 'targetInventory',
55
+ 'targetInventory.inventory',
56
+ 'targetInventory.inventory.location',
57
+ 'targetInventory.inventory.product',
58
+ 'targetInventory.inventory.product.productDetails',
59
+ 'targetInventory.inventory.reusablePallet',
60
+ 'updater'
61
+ ]
62
+ });
63
+ let foundDriver = null;
64
+ if (foundDO.status !== sales_base_1.ORDER_STATUS.READY_TO_DISPATCH) {
65
+ if ((foundDO === null || foundDO === void 0 ? void 0 : foundDO.ownCollection) && (foundDO === null || foundDO === void 0 ? void 0 : foundDO.otherDriver)) {
66
+ foundDriver = foundDO.otherDriver;
67
+ }
68
+ else {
69
+ foundDriver = foundDO.transportDriver.name;
70
+ }
71
+ }
72
+ let productList = [];
73
+ productList = foundWSD
74
+ .map((wsd) => {
75
+ var _a, _b;
76
+ const targetInventory = wsd.targetInventory;
77
+ const inventory = targetInventory.inventory;
78
+ const productDetails = inventory.product.productDetails;
79
+ const matchedProductDetail = productDetails.find(productDetail => productDetail.packingType === inventory.packingType);
80
+ return {
81
+ product_name: `${inventory.product.name} (${inventory.product.description})`,
82
+ product_desc: `${((_a = inventory.product) === null || _a === void 0 ? void 0 : _a.description) || ''}`,
83
+ product_nameOnly: `${inventory.product.name}`,
84
+ product_sku: `${inventory.product.sku}`,
85
+ product_type: inventory.packingType,
86
+ product_size: matchedProductDetail ? matchedProductDetail.packingSize : inventory.packingSize,
87
+ product_batch: inventory.batchId,
88
+ product_batch_ref: inventory.batchIdRef,
89
+ product_qty: targetInventory.releaseQty,
90
+ product_weight: targetInventory.releaseWeight,
91
+ product_gross_weight: inventory.product.grossWeight,
92
+ product_uom_value: targetInventory.releaseUomValue,
93
+ product_uom: inventory.uom,
94
+ remark: targetInventory.remark,
95
+ inventory_remark: inventory.remark,
96
+ cross_docking: targetInventory.crossDocking,
97
+ pallet: (inventory === null || inventory === void 0 ? void 0 : inventory.reusablePallet) && ((_b = inventory === null || inventory === void 0 ? void 0 : inventory.reusablePallet) === null || _b === void 0 ? void 0 : _b.name) ? inventory.reusablePallet.name : ''
98
+ };
99
+ })
100
+ .reduce((newItem, item) => {
101
+ var foundItem = newItem.find(newItem => newItem.product_name === item.product_name &&
102
+ newItem.product_batch === item.product_batch &&
103
+ newItem.product_batch_ref === item.product_batch_ref &&
104
+ newItem.cross_docking === item.cross_docking &&
105
+ newItem.pallet === item.pallet);
106
+ if (!foundItem) {
107
+ foundItem = {
108
+ product_sku: item.product_sku,
109
+ product_name: item.product_name,
110
+ product_type: item.product_type,
111
+ product_size: item.product_size,
112
+ product_batch: item.product_batch,
113
+ product_batch_ref: item.product_batch_ref,
114
+ product_qty: item.product_qty,
115
+ product_weight: item.product_weight,
116
+ product_gross_weight: item.product_gross_weight,
117
+ product_uom_value: item.product_uom_value,
118
+ product_uom: item.product_uom,
119
+ product_desc: item.product_desc,
120
+ product_nameOnly: item.product_nameOnly,
121
+ remark: item.remark,
122
+ inventory_remark: item.inventory_remark,
123
+ palletQty: 1,
124
+ cross_docking: item.cross_docking,
125
+ pallet: item.pallet
126
+ };
127
+ newItem.push(foundItem);
128
+ return newItem;
129
+ }
130
+ else {
131
+ return newItem.map(ni => {
132
+ if (ni.product_name === item.product_name &&
133
+ ni.product_batch === item.product_batch &&
134
+ ni.product_batch_ref === item.product_batch_ref &&
135
+ ni.cross_docking === item.cross_docking &&
136
+ ni.pallet === item.pallet) {
137
+ return Object.assign(Object.assign({}, ni), { palletQty: ni.palletQty + 1, product_qty: ni.product_qty + item.product_qty, product_weight: ni.product_weight + item.product_weight, product_uom_value: ni.product_uom_value + item.product_uom_value });
138
+ }
139
+ else {
140
+ return ni;
141
+ }
142
+ });
143
+ }
144
+ }, []);
145
+ const data = {
146
+ roNo: foundRO.name,
147
+ doNo: foundDO.name,
148
+ roRef: foundRO.refNo,
149
+ roRef2: foundRO.refNo2,
150
+ roRef3: foundRO.refNo3,
151
+ companyDomain: foundDO.bizplace.name,
152
+ recipientBiz: foundRO.attentionTo || '',
153
+ doDate: utils_1.DateTimeConverter.date(foundDO.createdAt),
154
+ productList: productList.map((prod, idx) => {
155
+ return {
156
+ batchNo: prod.product_batch,
157
+ sku: prod.product_sku,
158
+ name: prod.product_name,
159
+ type: prod.product_type,
160
+ loadedQty: prod.product_qty,
161
+ uom: prod.product_uom,
162
+ uomValue: `${Math.round(prod.product_uom_value * 100) / 100}`
163
+ };
164
+ })
165
+ };
166
+ return data;
167
+ }
168
+ };
169
+ //# sourceMappingURL=fetch-delivery-order-ro.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fetch-delivery-order-ro.js","sourceRoot":"","sources":["../../../../server/graphql/resolvers/worksheet/fetch-delivery-order-ro.ts"],"names":[],"mappings":"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","sourcesContent":["import _ from 'lodash'\nimport FormData from 'form-data'\nimport fetch from 'node-fetch'\nimport { Equal, getRepository, In } from 'typeorm'\n\nimport { Partner } from '@things-factory/auth-base'\nimport { Bizplace, ContactPoint } from '@things-factory/biz-base'\nimport { DeliveryOrder, ORDER_STATUS, OrderInventory, ReleaseGood } from '@things-factory/sales-base'\nimport { Domain } from '@things-factory/shell'\nimport { Inventory, Pallet } from '@things-factory/warehouse-base'\nimport { InventoryItem } from '@things-factory/warehouse-base'\nimport { TEMPLATE_TYPE, WORKSHEET_STATUS, WORKSHEET_TYPE } from '../../../constants'\nimport { Worksheet, WorksheetDetail } from '../../../entities'\nimport { DateTimeConverter } from '../../../utils'\n\nexport const fetchDeliveryOrderROResolver = {\n async fetchDeliveryOrderRO(_: any, { name }, context: any) {\n const domain: Domain = await getRepository(Domain).findOne({\n where: { id: context.state.domain.id }\n })\n\n const foundDO: DeliveryOrder = await getRepository(DeliveryOrder).findOne({\n where: { domain, name },\n relations: [\n 'domain',\n 'bizplace',\n 'bizplace.company',\n 'bizplace.domain',\n 'transportDriver',\n 'transportVehicle',\n 'releaseGood',\n 'creator',\n 'updater'\n ]\n })\n\n const ownTransportFlag: Boolean = foundDO.ownCollection\n\n let foundCP: ContactPoint = null\n if (foundDO?.contactPointRefId) {\n foundCP = await getRepository(ContactPoint).findOne({\n where: { domain, id: foundDO.contactPointRefId }\n })\n }\n\n const foundRO: ReleaseGood = foundDO.releaseGood\n const partnerBiz: Bizplace = foundDO.bizplace //customer bizplace\n const ownRefNo = foundRO.refNo\n\n //find list of loaded inventory\n const targetInventories: OrderInventory[] = await getRepository(OrderInventory).find({\n where: { domain, deliveryOrder: foundDO },\n relations: ['inventory']\n })\n const orderInvIds: string[] = targetInventories.map((oi: any) => oi.id)\n\n const foundWSD: WorksheetDetail[] = await getRepository(WorksheetDetail).find({\n where: {\n domain,\n targetInventory: In(orderInvIds),\n type: WORKSHEET_TYPE.LOADING,\n status: Equal(WORKSHEET_STATUS.DONE)\n },\n relations: [\n 'targetInventory',\n 'targetInventory.inventory',\n 'targetInventory.inventory.location',\n 'targetInventory.inventory.product',\n 'targetInventory.inventory.product.productDetails',\n 'targetInventory.inventory.reusablePallet',\n 'updater'\n ]\n })\n\n let foundDriver: any = null\n if (foundDO.status !== ORDER_STATUS.READY_TO_DISPATCH) {\n if (foundDO?.ownCollection && foundDO?.otherDriver) {\n foundDriver = foundDO.otherDriver\n } else {\n foundDriver = foundDO.transportDriver.name\n }\n }\n\n let productList: any[] = []\n productList = foundWSD\n .map((wsd: WorksheetDetail) => {\n const targetInventory: OrderInventory = wsd.targetInventory\n const inventory: Inventory = targetInventory.inventory\n const productDetails: any[] = inventory.product.productDetails\n const matchedProductDetail: any = productDetails.find(\n productDetail => productDetail.packingType === inventory.packingType\n )\n return {\n product_name: `${inventory.product.name} (${inventory.product.description})`,\n product_desc: `${inventory.product?.description || ''}`,\n product_nameOnly: `${inventory.product.name}`,\n product_sku: `${inventory.product.sku}`,\n product_type: inventory.packingType,\n product_size: matchedProductDetail ? matchedProductDetail.packingSize : inventory.packingSize,\n product_batch: inventory.batchId,\n product_batch_ref: inventory.batchIdRef,\n product_qty: targetInventory.releaseQty,\n product_weight: targetInventory.releaseWeight,\n product_gross_weight: inventory.product.grossWeight,\n product_uom_value: targetInventory.releaseUomValue,\n product_uom: inventory.uom,\n remark: targetInventory.remark,\n inventory_remark: inventory.remark,\n cross_docking: targetInventory.crossDocking,\n pallet: inventory?.reusablePallet && inventory?.reusablePallet?.name ? inventory.reusablePallet.name : ''\n }\n })\n .reduce((newItem, item) => {\n var foundItem = newItem.find(\n newItem =>\n newItem.product_name === item.product_name &&\n newItem.product_batch === item.product_batch &&\n newItem.product_batch_ref === item.product_batch_ref &&\n newItem.cross_docking === item.cross_docking &&\n newItem.pallet === item.pallet\n )\n if (!foundItem) {\n foundItem = {\n product_sku: item.product_sku,\n product_name: item.product_name,\n product_type: item.product_type,\n product_size: item.product_size,\n product_batch: item.product_batch,\n product_batch_ref: item.product_batch_ref,\n product_qty: item.product_qty,\n product_weight: item.product_weight,\n product_gross_weight: item.product_gross_weight,\n product_uom_value: item.product_uom_value,\n product_uom: item.product_uom,\n product_desc: item.product_desc,\n product_nameOnly: item.product_nameOnly,\n remark: item.remark,\n inventory_remark: item.inventory_remark,\n palletQty: 1,\n cross_docking: item.cross_docking,\n pallet: item.pallet\n }\n\n newItem.push(foundItem)\n return newItem\n } else {\n return newItem.map(ni => {\n if (\n ni.product_name === item.product_name &&\n ni.product_batch === item.product_batch &&\n ni.product_batch_ref === item.product_batch_ref &&\n ni.cross_docking === item.cross_docking &&\n ni.pallet === item.pallet\n ) {\n return {\n ...ni,\n palletQty: ni.palletQty + 1,\n product_qty: ni.product_qty + item.product_qty,\n product_weight: ni.product_weight + item.product_weight,\n product_uom_value: ni.product_uom_value + item.product_uom_value\n }\n } else {\n return ni\n }\n })\n }\n }, [])\n\n const data = {\n roNo: foundRO.name,\n doNo: foundDO.name,\n roRef: foundRO.refNo,\n roRef2: foundRO.refNo2,\n roRef3: foundRO.refNo3,\n companyDomain: foundDO.bizplace.name,\n recipientBiz: foundRO.attentionTo || '',\n doDate: DateTimeConverter.date(foundDO.createdAt),\n productList: productList.map((prod: any, idx) => {\n return {\n batchNo: prod.product_batch,\n sku: prod.product_sku,\n name: prod.product_name,\n type: prod.product_type,\n loadedQty: prod.product_qty,\n uom: prod.product_uom,\n uomValue: `${Math.round(prod.product_uom_value * 100) / 100}`\n }\n })\n }\n\n return data\n }\n}\n"]}
@@ -0,0 +1,57 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.fetchSellercraftDocumentResolver = void 0;
4
+ const typeorm_1 = require("typeorm");
5
+ const integration_sellercraft_1 = require("@things-factory/integration-sellercraft");
6
+ const sales_base_1 = require("@things-factory/sales-base");
7
+ const env_1 = require("@things-factory/env");
8
+ const controllers_1 = require("../../../controllers");
9
+ exports.fetchSellercraftDocumentResolver = {
10
+ async fetchSellercraftDocument(_, { releaseGoodId }, context) {
11
+ const { tx, domain, user } = context.state;
12
+ //find release goods base on id
13
+ let releaseGood = await (0, typeorm_1.getRepository)(sales_base_1.ReleaseGood).findOne({ where: { domain, id: releaseGoodId }, relations: ['bizplace', 'bizplace.domain'] });
14
+ //find user sellercraft data
15
+ const sellercraft = await (0, typeorm_1.getRepository)(integration_sellercraft_1.Sellercraft).findOne({
16
+ domain: releaseGood.bizplace.domain,
17
+ status: integration_sellercraft_1.SellercraftStatus.ACTIVE
18
+ });
19
+ // instantiate sellercraft controller
20
+ const sellercraftCtrl = new controllers_1.SellercraftController(tx, domain, user);
21
+ try {
22
+ // fetch document if not found
23
+ if (sellercraft && !(releaseGood === null || releaseGood === void 0 ? void 0 : releaseGood.airwayBill)) {
24
+ try {
25
+ // try fetch order document / AWB
26
+ releaseGood = await sellercraftCtrl.fetchOrderDocument(sellercraft, releaseGood);
27
+ }
28
+ catch (error) {
29
+ try {
30
+ // retry initiate order document
31
+ await sellercraftCtrl.initiateOrderDocument(sellercraft, releaseGood);
32
+ }
33
+ catch (error) {
34
+ try {
35
+ // retry initiate order shipment / RTS
36
+ await sellercraftCtrl.initiateOrderShipment(sellercraft, releaseGood);
37
+ }
38
+ catch (error) {
39
+ throw new Error(`initiateOrderShipment: ${error}`);
40
+ }
41
+ throw new Error(`initiateOrderDocument: ${error}`);
42
+ }
43
+ throw new Error(`fetchOrderDocument: ${error}`);
44
+ }
45
+ }
46
+ const airwayBill = releaseGood === null || releaseGood === void 0 ? void 0 : releaseGood.airwayBill;
47
+ const invoice = releaseGood === null || releaseGood === void 0 ? void 0 : releaseGood.invoice;
48
+ return { airwayBill, invoice };
49
+ }
50
+ catch (error) {
51
+ // await sellercraftCtrl.initiateOrderShipment(sellercraft, releaseGood)
52
+ env_1.logger.error(`packing-worksheet[getSellercraftDocument]:(data:${JSON.stringify({ sellercraft, releaseGood, domain, user })}) ${error} `);
53
+ throw new Error('Waiting for AWB from marketplace. Please retry in awhile');
54
+ }
55
+ }
56
+ };
57
+ //# sourceMappingURL=fetch-sellercraft-document.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fetch-sellercraft-document.js","sourceRoot":"","sources":["../../../../server/graphql/resolvers/worksheet/fetch-sellercraft-document.ts"],"names":[],"mappings":";;;AAAA,qCAAsD;AAGtD,qFAAwF;AACxF,2DAAwD;AAExD,6CAA4C;AAE5C,sDAA4D;AAE/C,QAAA,gCAAgC,GAAG;IAC9C,KAAK,CAAC,wBAAwB,CAAC,CAAM,EAAE,EAAE,aAAa,EAAE,EAAE,OAAY;QACpE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,GAAsD,OAAO,CAAC,KAAK,CAAA;QAE7F,+BAA+B;QAC/B,IAAI,WAAW,GAAgB,MAAM,IAAA,uBAAa,EAAC,wBAAW,CAAC,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,aAAa,EAAE,EAAE,SAAS,EAAE,CAAC,UAAU,EAAE,iBAAiB,CAAC,EAAE,CAAC,CAAA;QAE7J,6BAA6B;QAC7B,MAAM,WAAW,GAAgB,MAAM,IAAA,uBAAa,EAAC,qCAAW,CAAC,CAAC,OAAO,CAAC;YACxE,MAAM,EAAE,WAAW,CAAC,QAAQ,CAAC,MAAM;YACnC,MAAM,EAAE,2CAAiB,CAAC,MAAM;SACjC,CAAC,CAAA;QAEF,qCAAqC;QACrC,MAAM,eAAe,GAA0B,IAAI,mCAAqB,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,CAAA;QAE1F,IAAI;YACF,8BAA8B;YAC9B,IAAI,WAAW,IAAI,CAAC,CAAA,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,UAAU,CAAA,EAAE;gBAC3C,IAAI;oBACF,iCAAiC;oBACjC,WAAW,GAAG,MAAM,eAAe,CAAC,kBAAkB,CAAC,WAAW,EAAE,WAAW,CAAC,CAAA;iBACjF;gBAAC,OAAO,KAAK,EAAE;oBACd,IAAI;wBACF,gCAAgC;wBAChC,MAAM,eAAe,CAAC,qBAAqB,CAAC,WAAW,EAAE,WAAW,CAAC,CAAA;qBACtE;oBAAC,OAAO,KAAK,EAAE;wBACd,IAAI;4BACF,sCAAsC;4BACtC,MAAM,eAAe,CAAC,qBAAqB,CAAC,WAAW,EAAE,WAAW,CAAC,CAAA;yBACtE;wBAAC,OAAO,KAAK,EAAE;4BACd,MAAM,IAAI,KAAK,CAAC,0BAA0B,KAAK,EAAE,CAAC,CAAA;yBACnD;wBACD,MAAM,IAAI,KAAK,CAAC,0BAA0B,KAAK,EAAE,CAAC,CAAA;qBACnD;oBACD,MAAM,IAAI,KAAK,CAAC,uBAAuB,KAAK,EAAE,CAAC,CAAA;iBAChD;aACF;YAED,MAAM,UAAU,GAAW,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,UAAU,CAAA;YAClD,MAAM,OAAO,GAAW,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,OAAO,CAAA;YAC5C,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,CAAA;SAE/B;QAAC,OAAO,KAAK,EAAE;YACd,wEAAwE;YACxE,YAAM,CAAC,KAAK,CAAC,mDAAmD,IAAI,CAAC,SAAS,CAAC,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,KAAK,KAAK,GAAG,CAAC,CAAA;YAExI,MAAM,IAAI,KAAK,CAAC,0DAA0D,CAAC,CAAA;SAC5E;IAEH,CAAC;CACF,CAAA","sourcesContent":["import { EntityManager, getRepository } from 'typeorm'\n\nimport { User } from '@things-factory/auth-base'\nimport { Sellercraft, SellercraftStatus } from '@things-factory/integration-sellercraft'\nimport { ReleaseGood } from '@things-factory/sales-base'\nimport { Domain } from '@things-factory/shell'\nimport { logger } from '@things-factory/env'\n\nimport { SellercraftController } from '../../../controllers'\n\nexport const fetchSellercraftDocumentResolver = {\n async fetchSellercraftDocument(_: any, { releaseGoodId }, context: any) {\n const { tx, domain, user }: { tx: EntityManager; domain: Domain; user: User } = context.state\n\n //find release goods base on id\n let releaseGood: ReleaseGood = await getRepository(ReleaseGood).findOne({ where: { domain, id: releaseGoodId }, relations: ['bizplace', 'bizplace.domain'] })\n\n //find user sellercraft data \n const sellercraft: Sellercraft = await getRepository(Sellercraft).findOne({\n domain: releaseGood.bizplace.domain,\n status: SellercraftStatus.ACTIVE\n })\n\n // instantiate sellercraft controller\n const sellercraftCtrl: SellercraftController = new SellercraftController(tx, domain, user)\n\n try {\n // fetch document if not found\n if (sellercraft && !releaseGood?.airwayBill) {\n try {\n // try fetch order document / AWB\n releaseGood = await sellercraftCtrl.fetchOrderDocument(sellercraft, releaseGood)\n } catch (error) {\n try {\n // retry initiate order document\n await sellercraftCtrl.initiateOrderDocument(sellercraft, releaseGood)\n } catch (error) {\n try {\n // retry initiate order shipment / RTS\n await sellercraftCtrl.initiateOrderShipment(sellercraft, releaseGood)\n } catch (error) {\n throw new Error(`initiateOrderShipment: ${error}`)\n }\n throw new Error(`initiateOrderDocument: ${error}`)\n }\n throw new Error(`fetchOrderDocument: ${error}`)\n }\n }\n\n const airwayBill: string = releaseGood?.airwayBill\n const invoice: string = releaseGood?.invoice\n return { airwayBill, invoice }\n\n } catch (error) {\n // await sellercraftCtrl.initiateOrderShipment(sellercraft, releaseGood)\n logger.error(`packing-worksheet[getSellercraftDocument]:(data:${JSON.stringify({ sellercraft, releaseGood, domain, user })}) ${error} `)\n\n throw new Error('Waiting for AWB from marketplace. Please retry in awhile')\n }\n\n }\n}\n"]}
@@ -0,0 +1,70 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.findSortingReleaseOrdersByTaskNoResolver = void 0;
4
+ const sales_base_1 = require("@things-factory/sales-base");
5
+ const shell_1 = require("@things-factory/shell");
6
+ const warehouse_base_1 = require("@things-factory/warehouse-base");
7
+ const constants_1 = require("../../../constants");
8
+ const entities_1 = require("../../../entities");
9
+ exports.findSortingReleaseOrdersByTaskNoResolver = {
10
+ async findSortingReleaseOrdersByTaskNo(_, { taskNo }, context) {
11
+ const { domain, tx } = context.state;
12
+ let task = await tx.getRepository(entities_1.Worksheet).findOne({
13
+ where: { taskNo, status: constants_1.WORKSHEET_STATUS.EXECUTING, type: constants_1.WORKSHEET_TYPE.SORTING }
14
+ });
15
+ // Find Task based on Bin
16
+ if (!task) {
17
+ const binLocation = await tx.getRepository(warehouse_base_1.Location).findOne({
18
+ where: { domain, name: taskNo }
19
+ });
20
+ const qb = tx
21
+ .getRepository(sales_base_1.OrderInventory)
22
+ .createQueryBuilder('orderInventory');
23
+ qb.innerJoinAndSelect('orderInventory.releaseGood', 'releaseGood')
24
+ .innerJoinAndSelect('worksheets', 'ws', `orderInventory.ref_worksheet_id = ws.id AND ws.type = 'BATCH_PICKING'`)
25
+ .innerJoinAndSelect('worksheets', 'ws2', `ws2.task_no = ws.task_no AND ws2.type = 'SORTING'`)
26
+ .innerJoinAndSelect('releaseGood.bizplace', 'bizplace')
27
+ .innerJoinAndSelect('bizplace.domain', 'domain')
28
+ .where('orderInventory.domain_id = :domainId', { domainId: domain.id })
29
+ .andWhere('orderInventory.status IN (:...orderInventoryStatus)', {
30
+ orderInventoryStatus: [sales_base_1.ORDER_INVENTORY_STATUS.SORTING]
31
+ })
32
+ .andWhere('orderInventory.bin_location_id = :locationId', { locationId: binLocation.id })
33
+ .andWhere('releaseGood.status = :status', { status: sales_base_1.ORDER_STATUS.SORTING });
34
+ const orderInventoryByBin = await qb.getRawOne();
35
+ if (orderInventoryByBin === null || orderInventoryByBin === void 0 ? void 0 : orderInventoryByBin.releaseGood_id) {
36
+ taskNo = orderInventoryByBin.ws_task_no;
37
+ task = await tx.getRepository(entities_1.Worksheet).findOne({
38
+ where: { taskNo, status: constants_1.WORKSHEET_STATUS.EXECUTING, type: constants_1.WORKSHEET_TYPE.SORTING }
39
+ });
40
+ }
41
+ else {
42
+ throw new Error(`Bin do not have any batch picking order.`);
43
+ }
44
+ }
45
+ if (!task)
46
+ throw new Error('Unable to find task no.');
47
+ const qb = tx
48
+ .getRepository(entities_1.Worksheet)
49
+ .createQueryBuilder('ws')
50
+ .select('rg.id as id')
51
+ .addSelect('rg.name as name')
52
+ .addSelect('rg.status as status')
53
+ .innerJoin(shell_1.Domain, 'domain', 'ws.domain_id = domain.id')
54
+ .innerJoin(entities_1.WorksheetDetail, 'wsd', 'ws.id = wsd.worksheet_id')
55
+ .innerJoin(sales_base_1.OrderInventory, 'oi', 'oi.id = wsd.target_inventory_id')
56
+ .innerJoin(sales_base_1.ReleaseGood, 'rg', 'rg.id = oi.release_good_id')
57
+ .where('domain.id = :domainId', { domainId: domain.id })
58
+ .andWhere('ws.taskNo = :taskNo', { taskNo: taskNo })
59
+ .andWhere('ws.type = :worksheetType', { worksheetType: constants_1.WORKSHEET_TYPE.SORTING })
60
+ .andWhere('ws.status = :worksheetStatus', { worksheetStatus: constants_1.WORKSHEET_STATUS.EXECUTING })
61
+ .andWhere('rg.status = :roStatus', { roStatus: sales_base_1.ORDER_STATUS.SORTING })
62
+ .groupBy('rg.id')
63
+ .addGroupBy('rg.name')
64
+ .addGroupBy('rg.status')
65
+ .orderBy('rg.createdAt', 'ASC');
66
+ const releaseGoods = await qb.getRawMany();
67
+ return { releaseGoods, taskNo };
68
+ }
69
+ };
70
+ //# sourceMappingURL=find-sorting-release-orders-by-task-no.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"find-sorting-release-orders-by-task-no.js","sourceRoot":"","sources":["../../../../server/graphql/resolvers/worksheet/find-sorting-release-orders-by-task-no.ts"],"names":[],"mappings":"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","sourcesContent":["import { EntityManager, SelectQueryBuilder } from 'typeorm'\n\nimport {\n ORDER_INVENTORY_STATUS,\n ORDER_STATUS,\n OrderInventory as OrderInventoryEntity,\n ReleaseGood as ReleaseGoodEntity\n} from '@things-factory/sales-base'\nimport { Domain } from '@things-factory/shell'\nimport { Location } from '@things-factory/warehouse-base'\n\nimport { WORKSHEET_STATUS, WORKSHEET_TYPE } from '../../../constants'\nimport { Worksheet as WorksheetEntity, WorksheetDetail as WorksheetDetailEntity } from '../../../entities'\n\nexport const findSortingReleaseOrdersByTaskNoResolver = {\n async findSortingReleaseOrdersByTaskNo(_: any, { taskNo }, context: any) {\n const { domain, tx }: { domain: Domain; tx: EntityManager } = context.state\n let task = await tx.getRepository(WorksheetEntity).findOne({\n where: { taskNo, status: WORKSHEET_STATUS.EXECUTING, type: WORKSHEET_TYPE.SORTING }\n })\n\n // Find Task based on Bin\n if (!task) {\n const binLocation: Location = await tx.getRepository(Location).findOne({\n where: { domain, name: taskNo }\n })\n\n const qb: SelectQueryBuilder<OrderInventoryEntity> = tx\n .getRepository(OrderInventoryEntity)\n .createQueryBuilder('orderInventory')\n\n qb.innerJoinAndSelect('orderInventory.releaseGood', 'releaseGood')\n .innerJoinAndSelect('worksheets', 'ws', `orderInventory.ref_worksheet_id = ws.id AND ws.type = 'BATCH_PICKING'`)\n .innerJoinAndSelect('worksheets', 'ws2', `ws2.task_no = ws.task_no AND ws2.type = 'SORTING'`)\n .innerJoinAndSelect('releaseGood.bizplace', 'bizplace')\n .innerJoinAndSelect('bizplace.domain', 'domain')\n .where('orderInventory.domain_id = :domainId', { domainId: domain.id })\n .andWhere('orderInventory.status IN (:...orderInventoryStatus)', {\n orderInventoryStatus: [ORDER_INVENTORY_STATUS.SORTING]\n })\n .andWhere('orderInventory.bin_location_id = :locationId', { locationId: binLocation.id })\n .andWhere('releaseGood.status = :status', { status: ORDER_STATUS.SORTING })\n\n const orderInventoryByBin = await qb.getRawOne()\n if (orderInventoryByBin?.releaseGood_id) {\n taskNo = orderInventoryByBin.ws_task_no\n task = await tx.getRepository(WorksheetEntity).findOne({\n where: { taskNo, status: WORKSHEET_STATUS.EXECUTING, type: WORKSHEET_TYPE.SORTING }\n })\n } else {\n throw new Error(`Bin do not have any batch picking order.`)\n }\n }\n\n if (!task) throw new Error('Unable to find task no.')\n\n const qb: SelectQueryBuilder<WorksheetEntity> = tx\n .getRepository(WorksheetEntity)\n .createQueryBuilder('ws')\n .select('rg.id as id')\n .addSelect('rg.name as name')\n .addSelect('rg.status as status')\n .innerJoin(Domain, 'domain', 'ws.domain_id = domain.id')\n .innerJoin(WorksheetDetailEntity, 'wsd', 'ws.id = wsd.worksheet_id')\n .innerJoin(OrderInventoryEntity, 'oi', 'oi.id = wsd.target_inventory_id')\n .innerJoin(ReleaseGoodEntity, 'rg', 'rg.id = oi.release_good_id')\n .where('domain.id = :domainId', { domainId: domain.id })\n .andWhere('ws.taskNo = :taskNo', { taskNo: taskNo })\n .andWhere('ws.type = :worksheetType', { worksheetType: WORKSHEET_TYPE.SORTING })\n .andWhere('ws.status = :worksheetStatus', { worksheetStatus: WORKSHEET_STATUS.EXECUTING })\n .andWhere('rg.status = :roStatus', { roStatus: ORDER_STATUS.SORTING })\n .groupBy('rg.id')\n .addGroupBy('rg.name')\n .addGroupBy('rg.status')\n .orderBy('rg.createdAt', 'ASC')\n\n const releaseGoods: ReleaseGoodEntity[] = await qb.getRawMany()\n return { releaseGoods, taskNo }\n }\n}"]}
@@ -0,0 +1,81 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.regenerateReleaseGoodWorksheetDetails = exports.regenerateReleaseGoodWorksheetDetailsResolver = void 0;
4
+ const product_base_1 = require("@things-factory/product-base");
5
+ const sales_base_1 = require("@things-factory/sales-base");
6
+ const warehouse_base_1 = require("@things-factory/warehouse-base");
7
+ const constants_1 = require("../../../constants");
8
+ const entities_1 = require("../../../entities");
9
+ const utils_1 = require("../../../utils");
10
+ exports.regenerateReleaseGoodWorksheetDetailsResolver = {
11
+ async regenerateReleaseGoodWorksheetDetails(_, { worksheetNo, batchId, productId, packingType, packingSize, orderProductId, worksheetDetails }, context) {
12
+ const { tx, domain, user } = context.state;
13
+ return await regenerateReleaseGoodWorksheetDetails(tx, domain, user, worksheetNo, batchId, productId, packingType, packingSize, orderProductId, worksheetDetails);
14
+ }
15
+ };
16
+ async function regenerateReleaseGoodWorksheetDetails(tx, domain, user, worksheetNo, batchId, productId, packingType, packingSize, orderProductId, worksheetDetails) {
17
+ // 1. Remove prev worksheet details if it's exists
18
+ const worksheet = await tx.getRepository(entities_1.Worksheet).findOne({
19
+ where: { name: worksheetNo, domain },
20
+ relations: [
21
+ 'bizplace',
22
+ 'releaseGood',
23
+ 'worksheetDetails',
24
+ 'worksheetDetails.targetInventory',
25
+ 'worksheetDetails.targetInventory.inventory',
26
+ 'worksheetDetails.targetInventory.product',
27
+ 'worksheetDetails.targetInventory.releaseGood',
28
+ 'worksheetDetails.targetInventory.orderProduct',
29
+ 'worksheetDetails.targetInventory.bizplace'
30
+ ]
31
+ });
32
+ const prevWSDs = worksheet.worksheetDetails.filter((wsd) => {
33
+ const targetInv = wsd.targetInventory;
34
+ if (targetInv.orderProductId === orderProductId)
35
+ return wsd.id;
36
+ });
37
+ // TODO: Update prev inventory locked qty and delete order inventories
38
+ if (prevWSDs === null || prevWSDs === void 0 ? void 0 : prevWSDs.length) {
39
+ const wsdIds = prevWSDs.map((wsd) => wsd.id);
40
+ const prevOrderInvIds = prevWSDs.map((wsd) => wsd.targetInventory.id);
41
+ const prevOrderInventories = prevWSDs.map((wsd) => wsd.targetInventory);
42
+ await Promise.all(prevOrderInventories.map(async (prevOI) => {
43
+ if (prevOI === null || prevOI === void 0 ? void 0 : prevOI.inventory) {
44
+ await tx.getRepository(warehouse_base_1.Inventory).update({ id: prevOI.inventory.id }, {
45
+ lockedQty: prevOI.inventory.lockedQty - prevOI.releaseQty,
46
+ lockedUomValue: prevOI.inventory.lockedUomValue - prevOI.releaseUomValue
47
+ });
48
+ }
49
+ }));
50
+ await tx.getRepository(entities_1.WorksheetDetail).delete(wsdIds);
51
+ await tx.getRepository(sales_base_1.OrderInventory).delete(prevOrderInvIds);
52
+ }
53
+ await Promise.all(worksheetDetails.map(async (wsd) => {
54
+ // 2. Create order inventory
55
+ let targetInventory = wsd.targetInventory;
56
+ const inventory = await tx.getRepository(warehouse_base_1.Inventory).findOne(targetInventory.inventory.id);
57
+ let targetProduct = await tx
58
+ .getRepository(sales_base_1.OrderProduct)
59
+ .findOne({ where: { id: wsd.targetProduct.id }, relations: ['releaseGood'] });
60
+ targetInventory = await tx.getRepository(sales_base_1.OrderInventory).save(Object.assign(Object.assign({}, targetInventory), { domain, bizplace: worksheet.bizplace, name: sales_base_1.OrderNoGenerator.orderInventory(), releaseGood: worksheet.type == constants_1.WORKSHEET_TYPE.BATCH_PICKING ? targetProduct.releaseGood : worksheet.releaseGood, inventory, batchId: inventory.batchId, batchIdRef: inventory.batchIdRef, status: sales_base_1.ORDER_INVENTORY_STATUS.READY_TO_PICK, product: await tx.getRepository(product_base_1.Product).findOne(productId), packingType,
61
+ packingSize, orderProduct: targetProduct, refWorksheetId: worksheet.type == constants_1.WORKSHEET_TYPE.BATCH_PICKING ? worksheet.id : null, creator: user, updater: user }));
62
+ const currentLockedQty = inventory.lockedQty;
63
+ const currentLockedUomValue = inventory.lockedUomValue;
64
+ await tx.getRepository(warehouse_base_1.Inventory).save(Object.assign(Object.assign({}, targetInventory.inventory), { lockedQty: Boolean(currentLockedQty)
65
+ ? targetInventory.releaseQty + currentLockedQty
66
+ : targetInventory.releaseQty, lockedUomValue: Boolean(currentLockedUomValue)
67
+ ? targetInventory.releaseUomValue + currentLockedUomValue
68
+ : targetInventory.releaseUomValue, updater: user }));
69
+ // update order product status to ASSIGNED
70
+ await tx
71
+ .getRepository(sales_base_1.OrderProduct)
72
+ .update({ id: targetProduct.id }, { status: sales_base_1.ORDER_PRODUCT_STATUS.ASSIGNED, updater: user });
73
+ // 3. Create worksheet details
74
+ await tx.getRepository(entities_1.WorksheetDetail).save(Object.assign(Object.assign({}, wsd), { domain, bizplace: worksheet.bizplace, worksheet, name: worksheet.type == constants_1.WORKSHEET_TYPE.BATCH_PICKING
75
+ ? utils_1.WorksheetNoGenerator.batchPickingDetail()
76
+ : utils_1.WorksheetNoGenerator.pickingDetail(), targetProduct,
77
+ targetInventory, type: worksheet.type == constants_1.WORKSHEET_TYPE.BATCH_PICKING ? constants_1.WORKSHEET_TYPE.BATCH_PICKING : constants_1.WORKSHEET_TYPE.PICKING, status: constants_1.WORKSHEET_STATUS.DEACTIVATED, creator: user, updater: user }));
78
+ }));
79
+ }
80
+ exports.regenerateReleaseGoodWorksheetDetails = regenerateReleaseGoodWorksheetDetails;
81
+ //# sourceMappingURL=regenerate-release-good-worksheet-details.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"regenerate-release-good-worksheet-details.js","sourceRoot":"","sources":["../../../../server/graphql/resolvers/worksheet-detail/regenerate-release-good-worksheet-details.ts"],"names":[],"mappings":";;;AAGA,+DAAsD;AACtD,2DAMmC;AAEnC,mEAA0D;AAE1D,kDAAqE;AACrE,gDAA8D;AAC9D,0CAAqD;AAExC,QAAA,6CAA6C,GAAG;IAC3D,KAAK,CAAC,qCAAqC,CACzC,CAAM,EACN,EAAE,WAAW,EAAE,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,WAAW,EAAE,cAAc,EAAE,gBAAgB,EAAE,EAC/F,OAAY;QAEZ,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,GAAsD,OAAO,CAAC,KAAK,CAAA;QAC7F,OAAO,MAAM,qCAAqC,CAChD,EAAE,EACF,MAAM,EACN,IAAI,EACJ,WAAW,EACX,OAAO,EACP,SAAS,EACT,WAAW,EACX,WAAW,EACX,cAAc,EACd,gBAAgB,CACjB,CAAA;IACH,CAAC;CACF,CAAA;AAEM,KAAK,UAAU,qCAAqC,CACzD,EAAiB,EACjB,MAAc,EACd,IAAU,EACV,WAAmB,EACnB,OAAe,EACf,SAAiB,EACjB,WAAmB,EACnB,WAAmB,EACnB,cAAsB,EACtB,gBAA4C;IAE5C,kDAAkD;IAClD,MAAM,SAAS,GAAc,MAAM,EAAE,CAAC,aAAa,CAAC,oBAAS,CAAC,CAAC,OAAO,CAAC;QACrE,KAAK,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE;QACpC,SAAS,EAAE;YACT,UAAU;YACV,aAAa;YACb,kBAAkB;YAClB,kCAAkC;YAClC,4CAA4C;YAC5C,0CAA0C;YAC1C,8CAA8C;YAC9C,+CAA+C;YAC/C,2CAA2C;SAC5C;KACF,CAAC,CAAA;IAEF,MAAM,QAAQ,GAAsB,SAAS,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,GAAoB,EAAE,EAAE;QAC7F,MAAM,SAAS,GAAmB,GAAG,CAAC,eAAe,CAAA;QACrD,IAAI,SAAS,CAAC,cAAc,KAAK,cAAc;YAAE,OAAO,GAAG,CAAC,EAAE,CAAA;IAChE,CAAC,CAAC,CAAA;IAEF,sEAAsE;IACtE,IAAI,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,MAAM,EAAE;QACpB,MAAM,MAAM,GAAa,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAoB,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;QACvE,MAAM,eAAe,GAAa,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAoB,EAAE,EAAE,CAAC,GAAG,CAAC,eAAe,CAAC,EAAE,CAAC,CAAA;QAChG,MAAM,oBAAoB,GAAqB,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAoB,EAAE,EAAE,CAAC,GAAG,CAAC,eAAe,CAAC,CAAA;QAC1G,MAAM,OAAO,CAAC,GAAG,CACf,oBAAoB,CAAC,GAAG,CAAC,KAAK,EAAC,MAAM,EAAC,EAAE;YACtC,IAAI,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,SAAS,EAAE;gBACrB,MAAM,EAAE,CAAC,aAAa,CAAC,0BAAS,CAAC,CAAC,MAAM,CACtC,EAAE,EAAE,EAAE,MAAM,CAAC,SAAS,CAAC,EAAE,EAAE,EAC3B;oBACE,SAAS,EAAE,MAAM,CAAC,SAAS,CAAC,SAAS,GAAG,MAAM,CAAC,UAAU;oBACzD,cAAc,EAAE,MAAM,CAAC,SAAS,CAAC,cAAc,GAAG,MAAM,CAAC,eAAe;iBACzE,CACF,CAAA;aACF;QACH,CAAC,CAAC,CACH,CAAA;QAED,MAAM,EAAE,CAAC,aAAa,CAAC,0BAAe,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;QACtD,MAAM,EAAE,CAAC,aAAa,CAAC,2BAAc,CAAC,CAAC,MAAM,CAAC,eAAe,CAAC,CAAA;KAC/D;IAED,MAAM,OAAO,CAAC,GAAG,CACf,gBAAgB,CAAC,GAAG,CAAC,KAAK,EAAE,GAAoB,EAAE,EAAE;QAClD,4BAA4B;QAC5B,IAAI,eAAe,GAAmB,GAAG,CAAC,eAAe,CAAA;QACzD,MAAM,SAAS,GAAc,MAAM,EAAE,CAAC,aAAa,CAAC,0BAAS,CAAC,CAAC,OAAO,CAAC,eAAe,CAAC,SAAS,CAAC,EAAE,CAAC,CAAA;QAEpG,IAAI,aAAa,GAAiB,MAAM,EAAE;aACvC,aAAa,CAAC,yBAAY,CAAC;aAC3B,OAAO,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,aAAa,CAAC,EAAE,EAAE,EAAE,SAAS,EAAE,CAAC,aAAa,CAAC,EAAE,CAAC,CAAA;QAE/E,eAAe,GAAG,MAAM,EAAE,CAAC,aAAa,CAAC,2BAAc,CAAC,CAAC,IAAI,iCACxD,eAAe,KAClB,MAAM,EACN,QAAQ,EAAE,SAAS,CAAC,QAAQ,EAC5B,IAAI,EAAE,6BAAgB,CAAC,cAAc,EAAE,EACvC,WAAW,EAAE,SAAS,CAAC,IAAI,IAAI,0BAAc,CAAC,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,WAAW,EAC/G,SAAS,EACT,OAAO,EAAE,SAAS,CAAC,OAAO,EAC1B,UAAU,EAAE,SAAS,CAAC,UAAU,EAChC,MAAM,EAAE,mCAAsB,CAAC,aAAa,EAC5C,OAAO,EAAE,MAAM,EAAE,CAAC,aAAa,CAAC,sBAAO,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,EAC3D,WAAW;YACX,WAAW,EACX,YAAY,EAAE,aAAa,EAC3B,cAAc,EAAE,SAAS,CAAC,IAAI,IAAI,0BAAc,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EACpF,OAAO,EAAE,IAAI,EACb,OAAO,EAAE,IAAI,IACb,CAAA;QAEF,MAAM,gBAAgB,GAAQ,SAAS,CAAC,SAAS,CAAA;QACjD,MAAM,qBAAqB,GAAQ,SAAS,CAAC,cAAc,CAAA;QAE3D,MAAM,EAAE,CAAC,aAAa,CAAC,0BAAS,CAAC,CAAC,IAAI,iCACjC,eAAe,CAAC,SAAS,KAC5B,SAAS,EAAE,OAAO,CAAC,gBAAgB,CAAC;gBAClC,CAAC,CAAC,eAAe,CAAC,UAAU,GAAG,gBAAgB;gBAC/C,CAAC,CAAC,eAAe,CAAC,UAAU,EAC9B,cAAc,EAAE,OAAO,CAAC,qBAAqB,CAAC;gBAC5C,CAAC,CAAC,eAAe,CAAC,eAAe,GAAG,qBAAqB;gBACzD,CAAC,CAAC,eAAe,CAAC,eAAe,EACnC,OAAO,EAAE,IAAI,IACb,CAAA;QAEF,0CAA0C;QAC1C,MAAM,EAAE;aACL,aAAa,CAAC,yBAAY,CAAC;aAC3B,MAAM,CAAC,EAAE,EAAE,EAAE,aAAa,CAAC,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,iCAAoB,CAAC,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAA;QAE7F,8BAA8B;QAC9B,MAAM,EAAE,CAAC,aAAa,CAAC,0BAAe,CAAC,CAAC,IAAI,iCACvC,GAAG,KACN,MAAM,EACN,QAAQ,EAAE,SAAS,CAAC,QAAQ,EAC5B,SAAS,EACT,IAAI,EACF,SAAS,CAAC,IAAI,IAAI,0BAAc,CAAC,aAAa;gBAC5C,CAAC,CAAC,4BAAoB,CAAC,kBAAkB,EAAE;gBAC3C,CAAC,CAAC,4BAAoB,CAAC,aAAa,EAAE,EAC1C,aAAa;YACb,eAAe,EACf,IAAI,EAAE,SAAS,CAAC,IAAI,IAAI,0BAAc,CAAC,aAAa,CAAC,CAAC,CAAC,0BAAc,CAAC,aAAa,CAAC,CAAC,CAAC,0BAAc,CAAC,OAAO,EAC5G,MAAM,EAAE,4BAAgB,CAAC,WAAW,EACpC,OAAO,EAAE,IAAI,EACb,OAAO,EAAE,IAAI,IACb,CAAA;IACJ,CAAC,CAAC,CACH,CAAA;AACH,CAAC;AA3HD,sFA2HC","sourcesContent":["import { EntityManager } from 'typeorm'\n\nimport { User } from '@things-factory/auth-base'\nimport { Product } from '@things-factory/product-base'\nimport {\n ORDER_INVENTORY_STATUS,\n ORDER_PRODUCT_STATUS,\n OrderInventory,\n OrderNoGenerator,\n OrderProduct\n} from '@things-factory/sales-base'\nimport { Domain } from '@things-factory/shell'\nimport { Inventory } from '@things-factory/warehouse-base'\n\nimport { WORKSHEET_STATUS, WORKSHEET_TYPE } from '../../../constants'\nimport { Worksheet, WorksheetDetail } from '../../../entities'\nimport { WorksheetNoGenerator } from '../../../utils'\n\nexport const regenerateReleaseGoodWorksheetDetailsResolver = {\n async regenerateReleaseGoodWorksheetDetails(\n _: any,\n { worksheetNo, batchId, productId, packingType, packingSize, orderProductId, worksheetDetails },\n context: any\n ): Promise<void> {\n const { tx, domain, user }: { tx: EntityManager; domain: Domain; user: User } = context.state\n return await regenerateReleaseGoodWorksheetDetails(\n tx,\n domain,\n user,\n worksheetNo,\n batchId,\n productId,\n packingType,\n packingSize,\n orderProductId,\n worksheetDetails\n )\n }\n}\n\nexport async function regenerateReleaseGoodWorksheetDetails(\n tx: EntityManager,\n domain: Domain,\n user: User,\n worksheetNo: string,\n batchId: string,\n productId: string,\n packingType: string,\n packingSize: number,\n orderProductId: string,\n worksheetDetails: Partial<WorksheetDetail>[]\n): Promise<void> {\n // 1. Remove prev worksheet details if it's exists\n const worksheet: Worksheet = await tx.getRepository(Worksheet).findOne({\n where: { name: worksheetNo, domain },\n relations: [\n 'bizplace',\n 'releaseGood',\n 'worksheetDetails',\n 'worksheetDetails.targetInventory',\n 'worksheetDetails.targetInventory.inventory',\n 'worksheetDetails.targetInventory.product',\n 'worksheetDetails.targetInventory.releaseGood',\n 'worksheetDetails.targetInventory.orderProduct',\n 'worksheetDetails.targetInventory.bizplace'\n ]\n })\n\n const prevWSDs: WorksheetDetail[] = worksheet.worksheetDetails.filter((wsd: WorksheetDetail) => {\n const targetInv: OrderInventory = wsd.targetInventory\n if (targetInv.orderProductId === orderProductId) return wsd.id\n })\n\n // TODO: Update prev inventory locked qty and delete order inventories\n if (prevWSDs?.length) {\n const wsdIds: string[] = prevWSDs.map((wsd: WorksheetDetail) => wsd.id)\n const prevOrderInvIds: string[] = prevWSDs.map((wsd: WorksheetDetail) => wsd.targetInventory.id)\n const prevOrderInventories: OrderInventory[] = prevWSDs.map((wsd: WorksheetDetail) => wsd.targetInventory)\n await Promise.all(\n prevOrderInventories.map(async prevOI => {\n if (prevOI?.inventory) {\n await tx.getRepository(Inventory).update(\n { id: prevOI.inventory.id },\n {\n lockedQty: prevOI.inventory.lockedQty - prevOI.releaseQty,\n lockedUomValue: prevOI.inventory.lockedUomValue - prevOI.releaseUomValue\n }\n )\n }\n })\n )\n\n await tx.getRepository(WorksheetDetail).delete(wsdIds)\n await tx.getRepository(OrderInventory).delete(prevOrderInvIds)\n }\n\n await Promise.all(\n worksheetDetails.map(async (wsd: WorksheetDetail) => {\n // 2. Create order inventory\n let targetInventory: OrderInventory = wsd.targetInventory\n const inventory: Inventory = await tx.getRepository(Inventory).findOne(targetInventory.inventory.id)\n\n let targetProduct: OrderProduct = await tx\n .getRepository(OrderProduct)\n .findOne({ where: { id: wsd.targetProduct.id }, relations: ['releaseGood'] })\n\n targetInventory = await tx.getRepository(OrderInventory).save({\n ...targetInventory,\n domain,\n bizplace: worksheet.bizplace,\n name: OrderNoGenerator.orderInventory(),\n releaseGood: worksheet.type == WORKSHEET_TYPE.BATCH_PICKING ? targetProduct.releaseGood : worksheet.releaseGood,\n inventory,\n batchId: inventory.batchId,\n batchIdRef: inventory.batchIdRef,\n status: ORDER_INVENTORY_STATUS.READY_TO_PICK,\n product: await tx.getRepository(Product).findOne(productId),\n packingType,\n packingSize,\n orderProduct: targetProduct,\n refWorksheetId: worksheet.type == WORKSHEET_TYPE.BATCH_PICKING ? worksheet.id : null,\n creator: user,\n updater: user\n })\n\n const currentLockedQty: any = inventory.lockedQty\n const currentLockedUomValue: any = inventory.lockedUomValue\n\n await tx.getRepository(Inventory).save({\n ...targetInventory.inventory,\n lockedQty: Boolean(currentLockedQty)\n ? targetInventory.releaseQty + currentLockedQty\n : targetInventory.releaseQty,\n lockedUomValue: Boolean(currentLockedUomValue)\n ? targetInventory.releaseUomValue + currentLockedUomValue\n : targetInventory.releaseUomValue,\n updater: user\n })\n\n // update order product status to ASSIGNED\n await tx\n .getRepository(OrderProduct)\n .update({ id: targetProduct.id }, { status: ORDER_PRODUCT_STATUS.ASSIGNED, updater: user })\n\n // 3. Create worksheet details\n await tx.getRepository(WorksheetDetail).save({\n ...wsd,\n domain,\n bizplace: worksheet.bizplace,\n worksheet,\n name:\n worksheet.type == WORKSHEET_TYPE.BATCH_PICKING\n ? WorksheetNoGenerator.batchPickingDetail()\n : WorksheetNoGenerator.pickingDetail(),\n targetProduct,\n targetInventory,\n type: worksheet.type == WORKSHEET_TYPE.BATCH_PICKING ? WORKSHEET_TYPE.BATCH_PICKING : WORKSHEET_TYPE.PICKING,\n status: WORKSHEET_STATUS.DEACTIVATED,\n creator: user,\n updater: user\n })\n })\n )\n}\n"]}
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GenerateBatchPickInfo = void 0;
4
+ const apollo_server_koa_1 = require("apollo-server-koa");
5
+ exports.GenerateBatchPickInfo = (0, apollo_server_koa_1.gql) `
6
+ input GenerateBatchPickInfo {
7
+ releaseGoodNo: String
8
+ bizplaceId: String
9
+ bizplaceName: String
10
+ }
11
+ `;
12
+ //# sourceMappingURL=batch-pick-worksheet-info.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"batch-pick-worksheet-info.js","sourceRoot":"","sources":["../../../../server/graphql/types/worksheet/batch-pick-worksheet-info.ts"],"names":[],"mappings":";;;AAAA,yDAAuC;AAE1B,QAAA,qBAAqB,GAAG,IAAA,uBAAG,EAAA;;;;;;CAMvC,CAAA","sourcesContent":["import { gql } from 'apollo-server-koa'\n\nexport const GenerateBatchPickInfo = gql`\n input GenerateBatchPickInfo {\n releaseGoodNo: String\n bizplaceId: String\n bizplaceName: String\n }\n`"]}
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DeliveryOrderRO = void 0;
4
+ const apollo_server_koa_1 = require("apollo-server-koa");
5
+ exports.DeliveryOrderRO = (0, apollo_server_koa_1.gql) `
6
+ type DeliveryOrderRO {
7
+ roNo: String
8
+ doNo: String
9
+ roRef: String
10
+ roRef2: String
11
+ roRef3: String
12
+ companyDomain: String
13
+ recipientBiz: String
14
+ doDate: String
15
+ productList:[Product]
16
+ }
17
+ `;
18
+ //# sourceMappingURL=delivery-order-ro.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delivery-order-ro.js","sourceRoot":"","sources":["../../../../server/graphql/types/worksheet/delivery-order-ro.ts"],"names":[],"mappings":";;;AAAA,yDAAuC;AAE1B,QAAA,eAAe,GAAG,IAAA,uBAAG,EAAA;;;;;;;;;;;;CAYjC,CAAA","sourcesContent":["import { gql } from 'apollo-server-koa'\n\nexport const DeliveryOrderRO = gql`\n type DeliveryOrderRO {\n roNo: String\n doNo: String\n roRef: String\n roRef2: String\n roRef3: String\n companyDomain: String\n recipientBiz: String\n doDate: String\n productList:[Product]\n }\n`\n"]}
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SellercraftDocument = void 0;
4
+ const apollo_server_koa_1 = require("apollo-server-koa");
5
+ exports.SellercraftDocument = (0, apollo_server_koa_1.gql) `
6
+ type SellercraftDocument {
7
+ airwayBill: String,
8
+ invoice: String
9
+ }
10
+ `;
11
+ //# sourceMappingURL=sellercraft-document.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sellercraft-document.js","sourceRoot":"","sources":["../../../../server/graphql/types/worksheet/sellercraft-document.ts"],"names":[],"mappings":";;;AAAA,yDAAuC;AAE1B,QAAA,mBAAmB,GAAG,IAAA,uBAAG,EAAA;;;;;CAKrC,CAAA","sourcesContent":["import { gql } from 'apollo-server-koa'\n\nexport const SellercraftDocument = gql`\n type SellercraftDocument {\n airwayBill: String,\n invoice: String\n }\n`\n"]}