Quote Calculation Functions¶
Functions for calculating premiums, processing policy changes, and handling cancellations.
Premium Calculation¶
$CalculatePremiumAdditive¶
Calculates the final premium by applying all pricing matrix components additively. This is the core function that processes items, factors, discounts, and produces ledger entries.
Signature
Parameters
quoteType(string) - Type of quote: "NewBusiness", "Renewal", "Regular", "MTA"
Returns
- Ledger object with all calculation entries
Environment Variables Used
PricingMatrix- Input pricing structureLedger- Output transaction ledger (cleared and rebuilt)Output- Updated with final premium and monthly paymentsProductDetails- Product configurationHasActiveFinanceAgreement- Finance status
Example
// Setup pricing matrix
$SetCurrencyToPricingMatrix("GBP");
$SetCommissionRateToPricingMatrix(0.15);
$SetIptRateToPricingMatrix(0.12);
$AddItemToPricingMatrix("Base Premium", 500.00, 1.0);
$AddFactorToPricingMatrix("Age Factor", 1.20, true, 0);
// Calculate final premium
$CalculatePremiumAdditive("NewBusiness");
// Access results
let finalPremium = PricingMatrix.Premium;
let monthlyPayment = Output.Monthly.MonthlyPayment;
$AddTaxDuty¶
Adds tax and duty charges to the quote calculation.
Signature
Parameters
taxDutyConfig(object) - Tax/duty configuration
Returns
- Updated pricing matrix
Example
$CheckQuote¶
Validates and checks quote calculations for errors or warnings.
Signature
Parameters
- None
Returns
- Validation result object
Example
Midterm Adjustments (MTA)¶
$CalculateMTAPremium¶
Calculates premium changes for mid-term adjustments. Handles pro-rata calculations, cooling-off periods, and adjustment differences.
Signature
Parameters
mtaFee(number) - Admin fee for the MTA
Environment Variables Used
PricingMatrix- New pricing structurePreviousMatricies- Array of previous pricing matricesAdjustmentDifferencePricingMatrix- Output adjustment differenceLedger- Output ledger entriesMTADate- Date of adjustmentPolicy- Policy object with inception/expiry datesMTAWaivePremium(optional) - If true, waives premium change
Returns
- Ledger object with MTA calculations
Example
// Set MTA context
let MTADate = $ToDate("2024-06-15");
let MTAWaivePremium = false;
// Update pricing matrix with new values
$AddItemToPricingMatrix("Base Premium", 550.00, 1.0); // Increased coverage
// Calculate MTA premium
$CalculateMTAPremium(25.00); // £25 MTA fee
// Access adjustment premium
let additionalPremium = AdditionalPremium; // Set by function
let adjustmentDifference = AdjustmentDifferencePricingMatrix.Premium;
$ValidateMTAChanges¶
Validates that MTA changes are allowed and within business rules.
Signature
Parameters
- None
Returns
- Validation result object
Example
$ValidateCameraMTA¶
Validates camera-specific MTA changes (domain-specific validation).
Signature
Parameters
- None
Returns
- Validation result
Example
$ValidateC4RMTA¶
Validates Cover4Rentals-specific MTA changes (domain-specific validation).
Signature
Parameters
- None
Returns
- Validation result
Example
Cancellation Functions¶
$CalculateFullCancellation¶
Calculates a full refund cancellation (typically within cooling-off period).
Signature
Parameters
cancellationFee(number) - Cancellation fee amountrefundAdministrationFee(boolean, optional) - If true, refunds admin fees (default: true)
Environment Variables Used
Ledger- Output cancellation ledger (cleared and rebuilt)MTALedgerHistory- Historical ledger entriesCancellation- Cancellation object (updated with refund details)FinanceDetails- Finance agreement detailsCancellationReason- Reason for cancellation
Returns
- Ledger object with cancellation entries
Example
// Full refund within cooling-off period
let CancellationReason = "Cooling Off Period";
$CalculateFullCancellation(0.00, true); // No fee, refund admin fee
// Access refund
let refundAmount = Cancellation.RefundAmount;
let refundMessage = Cancellation.RefundMessage;
$CalculateProRataCancellation¶
Calculates a pro-rata refund based on time remaining on policy.
Signature
Parameters
cancellationFee(number) - Cancellation fee amountrefundAdministrationFee(boolean, optional) - If true, refunds admin fees (default: true)
Environment Variables Used
- Same as
$CalculateFullCancellation Policy- Policy dates for pro-rata calculationCancellationDate- Date of cancellation
Returns
- Ledger object with pro-rata cancellation entries
Example
// Pro-rata cancellation mid-policy
let CancellationDate = $ToDate("2024-09-01");
let CancellationReason = "Customer Request";
$CalculateProRataCancellation(25.00, false); // £25 fee, no admin refund
// Refund is proportional to time remaining
let proRataRefund = Cancellation.RefundAmount;
$CalculateNoRefundCancellation¶
Processes a cancellation with no refund.
Signature
Parameters
cancellationFee(number) - Cancellation fee amount (typically 0)
Environment Variables Used
Ledger- Output cancellation ledgerCancellation- Updated with zero refund detailsCancellationReason- Reason for cancellation
Returns
- Ledger object
Example
// No refund scenario (e.g., after policy end)
let CancellationReason = "Policy Expired";
$CalculateNoRefundCancellation(0.00);
// Cancellation.RefundAmount will be 0
Helper Functions¶
$CalculateAge¶
Calculates age based on date of birth and reference date.
Signature
Parameters
referenceDate(date) - Date to calculate age at (typically today or inception date)birthdate(date) - Date of birthtimezone(string, optional) - Timezone ID (e.g., "GMT Standard Time")
Returns
- Age as number
Example
let inceptionDate = $ToDate("2024-03-15");
let dateOfBirth = $ToDate("1985-06-20");
let ageAtInception = $CalculateAge(inceptionDate, dateOfBirth);
// Returns: 38
// With timezone
let ageWithTz = $CalculateAge($Now(), dateOfBirth, "GMT Standard Time");
$CalculatePolicyDates¶
Calculates policy start and end dates based on business rules.
Signature
Parameters
- Various parameters based on policy date calculation rules
Returns
- Policy dates object with InceptionDate and ExpiryDate
Example
let policyDates = $CalculatePolicyDates(requestedStartDate, policyTerm);
let Policy = {
InceptionDate: policyDates.InceptionDate,
ExpiryDate: policyDates.ExpiryDate
};
Complete Workflow Examples¶
New Business Quote¶
// Initialize
$SetCurrencyToPricingMatrix("GBP");
$SetCommissionRateToPricingMatrix(0.15);
$SetIptRateToPricingMatrix(0.12);
// Calculate age-based premium
let age = $CalculateAge($Now(), customerDOB);
let basePremium = 400.00;
if (age < 25) {
basePremium = 600.00;
} else if (age > 65) {
basePremium = 550.00;
}
$AddItemToPricingMatrix("Base Premium", basePremium, 1.0);
// Apply no claims discount
if (yearsNoClaims >= 5) {
$AddFactorToPricingMatrix("No Claims Discount", 0.80, true, 0);
}
// Calculate
$CalculatePremiumAdditive("NewBusiness");
let totalPremium = PricingMatrix.Premium;
Mid-Term Adjustment¶
// Customer adds coverage mid-policy
let MTADate = $Today();
// Update pricing matrix with new item
$AddItemToPricingMatrix("Additional Camera", 150.00, 1.0);
// Validate changes
let validation = $ValidateMTAChanges();
if (!validation.IsValid) {
$Referral(validation.Message);
}
// Calculate adjustment premium
$CalculateMTAPremium(15.00); // £15 MTA fee
let additionalCharge = AdditionalPremium;
Cancellation Within Cooling-Off¶
// Customer cancels within 14 days
let CancellationReason = "Cooling Off Period";
let CancellationDate = $ToDate("2024-03-20");
// Full refund
$CalculateFullCancellation(0.00, true);
let refund = Cancellation.RefundAmount;
let message = Cancellation.RefundMessage;
// Message: "A refund is due as the policy lies within the 14 day cooling off period."
Pro-Rata Cancellation¶
// Customer cancels mid-term
let CancellationDate = $ToDate("2024-09-15");
let CancellationReason = "Customer Request - No Longer Needed";
// Pro-rata refund with £25 cancellation fee
$CalculateProRataCancellation(25.00, false);
let proRataRefund = Cancellation.RefundAmount;
// Refund calculated based on days remaining / total days
Next Steps¶
- Ledger Functions - Transaction tracking
- Underwriter Functions - Decision-making
- Examples - Complete MTA workflow