diff --git a/src/database/models/Part.js b/src/database/models/Part.js index bed34e5..8925de4 100644 --- a/src/database/models/Part.js +++ b/src/database/models/Part.js @@ -224,11 +224,23 @@ export const Part = { label: 'Margin', required: true, type: 'number', - disabled: (objectData) => objectData?.priceMode == 'amount', + readOnly: (objectData) => objectData?.priceMode == 'amount', suffix: '%', min: 0, max: 100, step: 0.01, + value: (objectData) => { + const priceMode = objectData?.priceMode + const cost = objectData?.cost + if (priceMode == 'amount') { + const price = objectData?.price + if (price != null && cost != null) { + return Number(((price / cost - 1) * 100).toFixed(2)) || undefined + } + return undefined + } + return objectData?.margin + }, columnWidth: 85 }, { diff --git a/src/database/models/Product.js b/src/database/models/Product.js index cc585d7..0971e58 100644 --- a/src/database/models/Product.js +++ b/src/database/models/Product.js @@ -254,11 +254,23 @@ export const Product = { label: 'Margin', required: true, type: 'number', - disabled: (objectData) => objectData?.priceMode == 'amount', + readOnly: (objectData) => objectData?.priceMode == 'amount', suffix: '%', min: 0, max: 100, step: 0.01, + value: (objectData) => { + const priceMode = objectData?.priceMode + const cost = objectData?.cost + if (priceMode == 'amount') { + const price = objectData?.price + if (price != null && cost != null) { + return Number(((price / cost - 1) * 100).toFixed(2)) || undefined + } + return undefined + } + return objectData?.margin + }, columnWidth: 85 }, {