From 4fe9319d7a732b15a6218bf0edaa1c18071d8c33 Mon Sep 17 00:00:00 2001 From: Alexandre Brandizzi Date: Tue, 28 Jul 2026 17:20:07 -0300 Subject: [PATCH] fix(vendors): support sparse updates on current target --- src/domain/vendors/mappers/vendor-mapper.ts | 19 ++++++++++++++----- src/domain/vendors/schemas/vendor-schema.ts | 9 ++++++--- 2 files changed, 20 insertions(+), 8 deletions(-) diff --git a/src/domain/vendors/mappers/vendor-mapper.ts b/src/domain/vendors/mappers/vendor-mapper.ts index 363d9595..1b9d664e 100644 --- a/src/domain/vendors/mappers/vendor-mapper.ts +++ b/src/domain/vendors/mappers/vendor-mapper.ts @@ -191,16 +191,25 @@ export function mapVendorUpdateToBackend(vendor: unknown): Record { - if (Object.hasOwn(item, target)) payload[target] = item[target]; - if (Object.hasOwn(item, source)) payload[target] = item[source]; + if (Object.prototype.hasOwnProperty.call(item, target)) payload[target] = item[target]; + if (Object.prototype.hasOwnProperty.call(item, source)) payload[target] = item[source]; }); - if (Object.hasOwn(item, "companyId") || Object.hasOwn(item, "CompanyId")) { + if ( + Object.prototype.hasOwnProperty.call(item, "companyId") || + Object.prototype.hasOwnProperty.call(item, "CompanyId") + ) { payload.companyId = readNumericCompanyId(item); } - if (Object.hasOwn(item, "phone") || Object.hasOwn(item, "Phone")) { + if ( + Object.prototype.hasOwnProperty.call(item, "phone") || + Object.prototype.hasOwnProperty.call(item, "Phone") + ) { payload.phone = toCanonicalPhone(item.phone ?? item.Phone); } - if (Object.hasOwn(item, "companyPhone") || Object.hasOwn(item, "CompanyPhone")) { + if ( + Object.prototype.hasOwnProperty.call(item, "companyPhone") || + Object.prototype.hasOwnProperty.call(item, "CompanyPhone") + ) { payload.companyPhone = toCanonicalPhone(item.companyPhone ?? item.CompanyPhone); } return payload; diff --git a/src/domain/vendors/schemas/vendor-schema.ts b/src/domain/vendors/schemas/vendor-schema.ts index 72216e06..c9bb5180 100644 --- a/src/domain/vendors/schemas/vendor-schema.ts +++ b/src/domain/vendors/schemas/vendor-schema.ts @@ -64,14 +64,17 @@ const VENDOR_UPDATE_FIELDS = [ ] as const satisfies readonly (keyof VendorFormValues)[]; export function getChangedVendorValues( - values: VendorFormValues, + values: Partial, original: VendorFormValues | null, ): VendorUpdateValues { if (!original) return {}; return VENDOR_UPDATE_FIELDS.reduce((changed, field) => { - if (!Object.is(values[field], original[field])) { - changed[field] = values[field]; + if ( + Object.prototype.hasOwnProperty.call(values, field) && + !Object.is(values[field], original[field]) + ) { + Object.assign(changed, { [field]: values[field] }); } return changed; }, {});