I am attempting to create a calculation on deal records that will sum the net amounts on all line items of a specific Product Type. Steps I've taken:
Created a private app to view line items, products, deals and edit deals
Created a property <def_amount> that is a currency property
Defined def_amount
Added def_amount as a data output
I'm not a dev so excuse the likely **bleep** code, but the code is below. When I test the action, I keep getting the error that def_amount is not defined in the code. What is going on?
// Net total preference order const NET_PRIMARY = 'amount'; // HubSpot line-item net total const NET_FALLBACK = 'hs_total_amount'; // fallback if present
let sum = 0; for (const row of (batch?.results || [])) { const p = row?.properties || {}; if (normalize(p[PRODUCT_TYPE_PROP]) !== MATCH_VALUE) continue;
let net = toNumber(p[NET_PRIMARY]); if (!(net > 0)) net = toNumber(p[NET_FALLBACK]);
if (!(net > 0)) { const qty = toNumber(p[QTY_PROP]) || 1; const unit = PRICE_PROPS.reduce((acc, k) => (acc > 0 ? acc : toNumber(p[k])), 0) || 0; const pre = unit * qty; const discAmt = toNumber(p[DISC_AMT_PROP]); const discPct = toNumber(p[DISC_PCT_PROP]); const totalDisc = discAmt > 0 ? discAmt * qty : (discPct > 0 ? pre * (discPct / 100) : 0); net = Math.max(0, pre - totalDisc); }
I'm not a developer myself, I wish I could help with the code 😄
But, have you tried a rollup field instead of a code? That seems to be a much easier solution. Should look like this on the deal level.
While you can't add line item name as a condition (which I find weird), perhaps if you scroll through the options available, you'll find a fit identifier or even create a custom identifier.
Did my post help answer your query? Help the community by marking it as a solution.
I'm not a developer myself, I wish I could help with the code 😄
But, have you tried a rollup field instead of a code? That seems to be a much easier solution. Should look like this on the deal level.
While you can't add line item name as a condition (which I find weird), perhaps if you scroll through the options available, you'll find a fit identifier or even create a custom identifier.
Did my post help answer your query? Help the community by marking it as a solution.