From a3c71fdfc0bc3268073a3fe696eff777910564e1 Mon Sep 17 00:00:00 2001 From: Allan Carr Date: Wed, 3 Dec 2025 10:28:20 -0800 Subject: [PATCH 1/3] IO-3262 Add email address to Usage Report Signed-off-by: Allan Carr --- server/data/usageReport.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/server/data/usageReport.js b/server/data/usageReport.js index cd03bbda2..ff51c3e5a 100644 --- a/server/data/usageReport.js +++ b/server/data/usageReport.js @@ -55,7 +55,9 @@ exports.default = async (req, res) => { "patrick.fic@convenient-brands.com", "bradley.rhoades@convenient-brands.com", "jrome@rometech.com", - "ivana@imexsystems.ca" + "ivana@imexsystems.ca", + "support@imexsystems.ca", + "sarah@rometech.com" ], subject: `RO Usage Report - ${moment().format("MM/DD/YYYY")}`, text: ` From b510eec9aa5e2b2465ae511fc8504b897b95ba56 Mon Sep 17 00:00:00 2001 From: Dave Date: Thu, 4 Dec 2025 14:20:58 -0500 Subject: [PATCH 2/3] feature/IO-3456-Broken-Image - Fix issue --- .../endpoints/partsManagementProvisioning.js | 42 ++++++++++++++++--- 1 file changed, 36 insertions(+), 6 deletions(-) diff --git a/server/integrations/partsManagement/endpoints/partsManagementProvisioning.js b/server/integrations/partsManagement/endpoints/partsManagementProvisioning.js index 66ef19b59..5f626e3d9 100644 --- a/server/integrations/partsManagement/endpoints/partsManagementProvisioning.js +++ b/server/integrations/partsManagement/endpoints/partsManagementProvisioning.js @@ -134,13 +134,16 @@ const insertUserAssociation = async (uid, email, shopId) => { /** * PATCH handler for updating bodyshop fields. - * Allows patching: shopname, address1, address2, city, state, zip_post, country, email, timezone, phone, logo_img_path + * Allows patching: shopname, address1, address2, city, state, zip_post, country, email, timezone, phone + * Also allows updating logo_img_path via a simple logoUrl string, which is expanded to the full object. * @param req * @param res * @returns {Promise} */ const patchPartsManagementProvisioning = async (req, res) => { const { id } = req.params; + + // Fields that can be directly patched 1:1 const allowedFields = [ "shopname", "address1", @@ -151,31 +154,58 @@ const patchPartsManagementProvisioning = async (req, res) => { "country", "email", "timezone", - "phone", - "logo_img_path" + "phone" + // NOTE: logo_img_path is handled separately via logoUrl ]; + const updateFields = {}; + + // Copy over simple scalar fields if present for (const field of allowedFields) { if (req.body[field] !== undefined) { updateFields[field] = req.body[field]; } } + + // Handle logo update via a simple href string, same behavior as provision route + if (typeof req.body.logo_img_path === "string") { + const trimmed = req.body.logo_img_path.trim(); + if (trimmed) { + updateFields.logo_img_path = { + src: trimmed, + width: "", + height: "", + headerMargin: DefaultNewShop.logo_img_path.headerMargin + }; + } + } + if (Object.keys(updateFields).length === 0) { return res.status(400).json({ error: "No valid fields provided for update." }); } + // Check that the bodyshop has an external_shop_id before allowing patch try { - // Fetch the bodyshop by id const shopResp = await client.request( - `query GetBodyshop($id: uuid!) { bodyshops_by_pk(id: $id) { id external_shop_id } }`, + `query GetBodyshop($id: uuid!) { + bodyshops_by_pk(id: $id) { + id + external_shop_id + } + }`, { id } ); + if (!shopResp.bodyshops_by_pk?.external_shop_id) { return res.status(400).json({ error: "Cannot patch: bodyshop does not have an external_shop_id." }); } } catch (err) { - return res.status(500).json({ error: "Failed to validate bodyshop external_shop_id.", detail: err }); + return res.status(500).json({ + error: "Failed to validate bodyshop external_shop_id.", + detail: err + }); } + try { const resp = await client.request(UPDATE_BODYSHOP_BY_ID, { id, fields: updateFields }); if (!resp.update_bodyshops_by_pk) { From 0ef68afa0c9bda898aa9bdf2d95a34bd4f77a5d7 Mon Sep 17 00:00:00 2001 From: Dave Date: Thu, 4 Dec 2025 14:30:42 -0500 Subject: [PATCH 3/3] feature/IO-3456-Broken-Image - Fix issue --- .../partsManagement/PATCH_parts-management-provision.md | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/_reference/partsManagement/PATCH_parts-management-provision.md b/_reference/partsManagement/PATCH_parts-management-provision.md index 50c90b7e5..59d932e28 100644 --- a/_reference/partsManagement/PATCH_parts-management-provision.md +++ b/_reference/partsManagement/PATCH_parts-management-provision.md @@ -30,7 +30,7 @@ Send a JSON object with one or more of the following fields to update: - `email` (string, shop's email, not user email) - `timezone` (string) - `phone` (string) -- `logo_img_path` (object, e.g. `{ src, width, height, headerMargin }`) +- `logo_img_path` (string) Any fields not included in the request body will remain unchanged. @@ -50,12 +50,7 @@ Content-Type: application/json "email": "shop@example.com", "timezone": "America/Chicago", "phone": "555-123-4567", - "logo_img_path": { - "src": "https://example.com/logo.png", - "width": "200", - "height": "100", - "headerMargin": 10 - } + "logo_img_path": "https://example.com/logo.png" } ```