From 7a2b5e184c25a88c8d2624c927c4e67fcb619cc1 Mon Sep 17 00:00:00 2001 From: saif Date: Wed, 19 Feb 2025 10:03:11 +0500 Subject: [PATCH] filter ship orders by shipping date desc --- download-shipping-labels.js | 78 ++++++++++++++++++++++--------------- 1 file changed, 46 insertions(+), 32 deletions(-) diff --git a/download-shipping-labels.js b/download-shipping-labels.js index ab67c03..8e08f90 100644 --- a/download-shipping-labels.js +++ b/download-shipping-labels.js @@ -133,41 +133,56 @@ const emailUtils = require("./email-utils"); `processed/` ); - /** - * Capture response - */ - const checkShippingLabelResponse = async (page, timer) => { - return new Promise((resolve, reject) => { - // Timeout mechanism to resolve with an empty list after 5 seconds - const timeout = setTimeout(() => { - page.off("response", handleResponse); // Remove listener on timeout - resolve([]); // Resolve with an empty list - }, timer); - - const handleResponse = async (res) => { - try { - const req = res.request(); - if (req.url().includes("/batch_print_shipping_label")) { - const resJson = await res.json(); - // Remove listener and clear timeout once response is captured - clearTimeout(timeout); - page.off("response", handleResponse); - resolve(resJson || []); - } - } catch (ex) { - // Remove listener and clear timeout on error - clearTimeout(timeout); - page.off("response", handleResponse); - reject(ex); - } - }; - - page.on("response", handleResponse); - }); + /** + * Capture response + */ + const checkShippingLabelResponse = async (page, timer) => { + return new Promise((resolve, reject) => { + // Timeout mechanism to resolve with an empty list after 5 seconds + const timeout = setTimeout(() => { + page.off("response", handleResponse); // Remove listener on timeout + resolve([]); // Resolve with an empty list + }, timer); + + const handleResponse = async (res) => { + try { + const req = res.request(); + if (req.url().includes("/batch_print_shipping_label")) { + const resJson = await res.json(); + // Remove listener and clear timeout once response is captured + clearTimeout(timeout); + page.off("response", handleResponse); + resolve(resJson || []); + } + } catch (ex) { + // Remove listener and clear timeout on error + clearTimeout(timeout); + page.off("response", handleResponse); + reject(ex); + } }; + page.on("response", handleResponse); + }); + }; + try { await new Promise((resolve) => setTimeout(resolve, 2_000)); + // filter by ship date desc + const shipByDateFilterSelector = + "#orders-tab-list > div.y0DVv7GO > div > div._2iyGKl7j > div._3oBKKUKo > div._3eA-bRh2 > div.ST_outerWrapper_123.ST_medium_123"; + await page.waitForSelector(shipByDateFilterSelector); + await page.click(shipByDateFilterSelector); + await new Promise((resolve) => setTimeout(resolve, 2_000)); + + // set ship by date desc option + const orderByShipDescOptionSelector = + "body > div.PT_outerWrapper_123.PP_outerWrapper_123.ST_dropdown_123.ST_mediumDropdown_123.ST_customItem_123.PT_dropdown_123.PT_portalBottomLeft_123.PT_inCustom_123.PP_dropdown_123 > div > div > div > div > ul > li:nth-child(4)" + await page.waitForSelector(orderByShipDescOptionSelector); + await page.click(orderByShipDescOptionSelector); + console.log("Clicking on Order by Shipment Date Select"); + await new Promise((resolve) => setTimeout(resolve, 2_000)); + // set the pagination to 100 / page const pageinationSeletor = "#orders-tab-list > div.y0DVv7GO > div > div._38NAUUfN > div._15QWqbZs > ul > li.PGT_sizeChanger_123 > div > div > div > div > div"; @@ -182,7 +197,6 @@ const emailUtils = require("./email-utils"); await page.waitForSelector(pagesPerPageSelector); await page.click(pagesPerPageSelector); await new Promise((resolve) => setTimeout(resolve, 1_000)); - } catch (e) { emailUtils.notify(`Download Order Shipping Labels`, e.message); }