Skip to content

Commit

Permalink
Improved: label voiding logic based on backend compatibility (#769)
Browse files Browse the repository at this point in the history
  • Loading branch information
amansinghbais committed Sep 23, 2024
1 parent 7c80681 commit 9e2d05d
Show file tree
Hide file tree
Showing 5 changed files with 45 additions and 49 deletions.
29 changes: 6 additions & 23 deletions src/components/OrderLookupLabelActionsPopover.vue
Original file line number Diff line number Diff line change
Expand Up @@ -62,33 +62,16 @@ export default defineComponent({

try {
for(const shipmentPackage of this.currentOrder.shipmentPackages[shipGroupSeqId]) {
resp = await OrderService.updateShipmentPackageRouteSeg({
resp = await OrderService.voidShipmentLabel({
"shipmentId": shipmentPackage.shipmentId,
"shipmentRouteSegmentId": shipmentPackage.shipmentRouteSegmentId,
"shipmentPackageSeqId": shipmentPackage.shipmentPackageSeqId,
"trackingCode": "",
"labelImage": "",
"labelIntlSignImage": "",
"labelHtml": "",
"labelImageUrl": "",
"internationalInvoiceUrl": ""
});
if(!hasError(resp)) {
resp = await OrderService.updateShipmentRouteSegment({
"shipmentId": shipmentPackage.shipmentId,
"shipmentRouteSegmentId": shipmentPackage.shipmentRouteSegmentId,
"carrierServiceStatusId": "SHRSCS_VOIDED",
"trackingIdNumber": ""
}) as any;
if(!hasError(resp)) {
showToast(translate("Shipping label voided successfully."))
} else {
throw resp.data;
}
} else {
"shipmentRouteSegmentId": shipmentPackage.shipmentRouteSegmentId
})

if(hasError(resp)) {
throw resp.data;
}
}
showToast(translate("Shipping label voided successfully."))
} catch (err) {
logger.error("Failed to void shipping label", err);
showToast(translate("Failed to void shipping label"));
Expand Down
27 changes: 6 additions & 21 deletions src/components/ShippingLabelActionPopover.vue
Original file line number Diff line number Diff line change
Expand Up @@ -64,31 +64,16 @@
let resp = {} as any;
try {
for (const shipmentPackage of order.shipmentPackages) {
resp = await OrderService.updateShipmentPackageRouteSeg({
resp = await OrderService.voidShipmentLabel({
"shipmentId": shipmentPackage.shipmentId,
"shipmentRouteSegmentId": shipmentPackage.shipmentRouteSegmentId,
"shipmentPackageSeqId": shipmentPackage.shipmentPackageSeqId,
"trackingCode": "",
"labelImage": "",
"labelIntlSignImage": "",
"labelHtml": "",
"labelImageUrl": "",
"internationalInvoiceUrl": ""
});
if (!hasError(resp)) {
resp = await OrderService.updateShipmentRouteSegment({
"shipmentId": shipmentPackage.shipmentId,
"shipmentRouteSegmentId": shipmentPackage.shipmentRouteSegmentId,
"carrierServiceStatusId": "SHRSCS_VOIDED",
"trackingIdNumber": ""
}) as any;
if (hasError(resp)) {
throw resp.data;
}
} else {
"shipmentRouteSegmentId": shipmentPackage.shipmentRouteSegmentId
})

if(hasError(resp)) {
throw resp.data;
}
}
showToast(translate("Shipping label voided successfully."))
//fetching updated shipment packages
await this.store.dispatch('order/updateShipmentPackageDetail', order)
} catch (err) {
Expand Down
28 changes: 25 additions & 3 deletions src/services/OrderService.ts
Original file line number Diff line number Diff line change
Expand Up @@ -163,6 +163,15 @@ const updateShipmentPackageRouteSeg = async (payload: any): Promise<any> => {
data: payload
})
}

const voidShipmentLabel = async (payload: any): Promise<any> => {
return api({
url: "service/voidShipmentLabel",
method: "POST",
data: payload
})
}

const updateOrderItemShipGroup = async (payload: any): Promise<any> => {
return api({
url: "service/updateOrderItemShipGroup",
Expand All @@ -177,7 +186,12 @@ const addTrackingCode = async (payload: any): Promise<any> => {
"shipmentId": payload.shipmentId,
"shipmentRouteSegmentId": payload.shipmentRouteSegmentId,
"shipmentPackageSeqId": payload.shipmentPackageSeqId,
"trackingCode": payload.trackingCode
"trackingCode": payload.trackingCode,
"labelImage": "",
"labelIntlSignImage": "",
"labelHtml": "",
"labelImageUrl": "",
"internationalInvoiceUrl": ""
});
if (!hasError(resp)) {
resp = await updateShipmentRouteSegment({
Expand Down Expand Up @@ -373,7 +387,7 @@ const fetchShipmentPackages = async (shipmentIds: Array<string>, isTrackingRequi
"shipmentItemSeqId_op": "not-empty",
...trackingCodeFilters
},
"fieldList": ["shipmentId", "shipmentRouteSegmentId", "shipmentPackageSeqId", "shipmentBoxTypeId", "packageName", "primaryOrderId", "carrierPartyId", "isTrackingRequired", "primaryShipGroupSeqId", "labelImageUrl"],
"fieldList": ["shipmentId", "shipmentRouteSegmentId", "shipmentPackageSeqId", "shipmentBoxTypeId", "packageName", "primaryOrderId", "carrierPartyId", "isTrackingRequired", "primaryShipGroupSeqId", "labelImageUrl", "carrierServiceStatusId"],
"viewSize": 250, // maximum records we could have
"distinct": "Y"
}
Expand All @@ -387,6 +401,13 @@ const fetchShipmentPackages = async (shipmentIds: Array<string>, isTrackingRequi

if (!hasError(resp)) {
shipmentPackages = resp?.data.docs;
shipmentPackages.map((shipmentPackage: any) => {
if(shipmentPackage.carrierServiceStatusId === "SHRSCS_VOIDED") {
shipmentPackage.trackingCode = ""
shipmentPackage.labelImageUrl = ""
shipmentPackage.internationalInvoiceUrl = ""
}
})
} else if (!resp?.data.error || (resp.data.error && resp.data.error !== "No record found")) {
return Promise.reject(resp?.data.error);
}
Expand Down Expand Up @@ -906,5 +927,6 @@ export const OrderService = {
fetchOrderItemShipGroup,
fetchShippingAddress,
fetchOrderPaymentPreferences,
getShippingPhoneNumber
getShippingPhoneNumber,
voidShipmentLabel
}
9 changes: 7 additions & 2 deletions src/services/UtilService.ts
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,7 @@ const findShipmentPackages = async(shipmentIds: Array<string>): Promise<any> =>
"shipmentId": shipmentIds,
"shipmentId_op": "in"
},
"fieldList": ["shipmentId", "shipmentPackageSeqId", "shipmentRouteSegmentId", "shipmentMethodTypeId", "shipmentBoxTypeId", "packageName", "primaryOrderId", "carrierPartyId", "picklistBinId", "isTrackingRequired", "trackingCode", "internationalInvoiceUrl", "labelImageUrl"],
"fieldList": ["shipmentId", "shipmentPackageSeqId", "shipmentRouteSegmentId", "shipmentMethodTypeId", "shipmentBoxTypeId", "packageName", "primaryOrderId", "carrierPartyId", "picklistBinId", "isTrackingRequired", "trackingCode", "internationalInvoiceUrl", "labelImageUrl", "carrierServiceStatusId"],
"viewSize": shipmentIds.length,
"distinct": "Y"
}
Expand All @@ -101,6 +101,11 @@ const findShipmentPackages = async(shipmentIds: Array<string>): Promise<any> =>
shipmentPackages = resp.data.docs.reduce((shipmentForOrders: any, shipmentPackage: any) => {
// creating key in this pattern as the same order can have multiple picklist bin and in that we need to find to which picklist bin shipment is associated
const key = `${shipmentPackage.primaryOrderId}_${shipmentPackage.picklistBinId}`
if(shipmentPackage.carrierServiceStatusId === "SHRSCS_VOIDED") {
shipmentPackage.trackingCode = ""
shipmentPackage.labelImageUrl = ""
shipmentPackage.internationalInvoiceUrl = ""
}
if (shipmentPackage.labelImageUrl && isPdf(shipmentPackage.labelImageUrl)) {
shipmentPackage.labelPdfUrl = shipmentPackage.labelImageUrl;
}
Expand All @@ -117,7 +122,7 @@ const findShipmentPackages = async(shipmentIds: Array<string>): Promise<any> =>
} catch(err) {
logger.error('Failed to fetch shipment packages information', err)
}

return shipmentPackages;
}

Expand Down
1 change: 1 addition & 0 deletions src/store/modules/order/actions.ts
Original file line number Diff line number Diff line change
Expand Up @@ -118,6 +118,7 @@ const actions: ActionTree<OrderState, RootState> = {
}, []);

// When the shipment method for product store is configured then only check for shipmentPackages otherwise we won't show missing label error button

const missingLabelImage = this.state.util.productStoreShipmentMethCount > 0 ? currentShipmentPackages.length > 0 : false;

return {
Expand Down

0 comments on commit 9e2d05d

Please sign in to comment.