Quote Finance & Fees: Other

Finance calculations, rates, commissions, and fee configuration

Refresh Base Rate

When the Refresh Base Rate button is clicked, the system will compare the Financier Rates table for latest corresponding Base Rate for the Supplier (Financier) / Term / Lower Limit / Upper Limit combination against the equivalent quote fields.

The System Date is used to compare to (not Quote Date or Quote Effective Date).

If the setting is the same as the Quote "Base Rate", a message will be displayed advising: "Nothing to update!" No further action is required.

If the differs from:

If the Quote or Contract cannot be locked, or Billing is in progress, no changes will be made to the Quote or linked Contract and a message will be displayed: "Locked by: {user_login}"

If the Quote or Contract can be locked, and Billing is not in progress, the following fields will be updated and recalculated using the new "Financier Rate" (refreshed "Base Rate" plus "Client Margin"):

Updated Fields

Quote Fields

  • Base Rate

  • Financier Rate

  • Lessee Rate

  • Finance Exc GST

  • GST

  • Budget Net

  • Budget GST

  • FBT Value (if Quote "FBT Type" = 'operating')

Conditional Updates

Depending on Global Control settings the following values may also update:

  • Commission Rate

  • Commission Fee

  • Luxury Car Charge

  • Redundancy Insurance

Contract Fields

  • Initial Payment

  • Regular Payment

  • Deferred Interest

  • Amount Financed

  • Interest Rate

  • Finance Rate

  • Total Brokerage

Contract Payment Structure/Schedule Fields (if created)

  • Total Payments

  • Payment Schedule Finance

  • Payment Schedule GST

Contract Budget Fields (for Posting Class Code 'FIN')

  • Finance (Next) Net

  • Finance (Next) GST

The Quote/Contract Lock will be released once all updates are complete and a message will be displayed advising: "Base Rate updated."

Note: this differs from the Settle process because that process updates numerous other fields where this process targets the Finance Rental component.

Audit History

Audit History of changes will be recorded. A "Reference" comment of "Refresh Base Rate" will be added to the fields updated.

Validation Rules

The Refresh Base Rate calculations will work only when:

  • Rule 1: Contract Type / Accruals is linked to Posting Class Code 'FIN', AND

  • Rule 2: Quote is linked to a Contract, AND

  • Rule 3: a) Contract Start date is blank, OR b) Contract Status = yes AND

  • Rule 4: There are no Contracts / Lease records at 'posted' status, AND

  • Rule 5: There are no Contracts / Payments 'Finance' or 'Finance - Principal and Interest' records at 'posted' status.

Validation Messages

The following validation messages are displayed when their corresponding rules fail:

  • Rule 1: Contract Type / Accruals is not linked to Posting Class Code 'FIN'

  • Rule 2: Quote is not linked to Contract

  • Rule 3: Base rate refresh disabled for Contract #{contract_id}

  • Rule 4: Linked Contract #{contract_id} has started

  • Rule 5: Contract #{contract_id} has posted budgets or payments

Other Notes

Editing a Quote after "Refresh Base Rate" clicked:

If a quote is edited after "Refresh Base Rate" has been executed, users should note that updating the Effective Date, Contract Type, Term, Financier or Client will trigger the system to re-load the applicable Contract Type / Financier defaults (Setup / Reference Data -> table name qtfinancierpostingmapdefaults) which may update the Base Rate. This update will not automatically update the contract. User should click Settle button to update contract fields.


RefreshQuoteBaseRate API

This API replicates the action of the Quotes / Finance [Refresh Base Rate] button. This refreshes the Quotes / Finance "Base Rate" of a quote and its corresponding contract. Visit Refresh Base Rate to see the full details.

Permissions

To run this API, the nominated 'web-services' role needs to be given permission.

If you are not actively using the API, leave the permission off for better security.

Go to Roles / Apis and check on Quotes:RefreshBaseRate.

Authentication

Authenticate with the API before running this API.

HTTP Method

Use the HTTP Method 'POST' for consuming this web service.

URL Examples

https://api.catch-e.com/qt/quotes/{quote_id}/refresh-base-rate 

Path Variables

Key

Format

Notes

Mandatory

quote_id

string

Quote to accept.

Required

Headers

Key

Format

Notes

Mandatory

Audit-User-Id

string

User Id to use for audit purposes. This header requires the Audit:UserIdOverride permission to be associated with your role.

Optional

Delegated-Locking-Session-Id

string

(Optional) Locking responsibility will be delegated to the specified Session Id. This header enables the client to instruct the API to merely verify the presence of locks with the specified session id, but not attempt to obtain them itself. It requires the DelegatedLocking permission to be associated with your role.

Optional

Response Details

Response Validation

Messages

Comments

204 No Content

Base rate refreshed

The request was successful.

304 No Content

Nothing to update

The request was successful.

401 - Unauthorized

{ "type": "http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html", "title": "Unauthorized", "status": 401, "detail": "Unauthorized"}

You have not authenticated before running this API or The token_timeout of the current session has passed. You need to authenticate again.

403 - Forbidden

{ "type": "http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html", "title": "Forbidden", "status": 403, "detail": "Forbidden"}

You do not have permissions for this request. Go to System Roles and enter 'web_services'. Navigate to the Roles / APIs tab to make sure the permission you need to run this API is checked.

422 - Unprocessable Entity

"quote_id": { "invalidContractType": "Contract Type / Accruals is not linked to Posting Class Code 'FIN'" }

Contract Type / Accruals is not linked to Posting Class Code 'FIN'

422 - Unprocessable Entity

"quote_id": { "contractNotFound": "Quote is not linked to Contract" }

Quote is not linked to Contract

422 - Unprocessable Entity

"quote_id": { "baseRateRefreshDisabled": "Base rate refresh disabled for Contract #100000" }

Contract Status = no

422 - Unprocessable Entity

"quote_id": { "contractStarted": "Linked Contract #100000 has started" }

Billing has commenced for this Contract.

422 - Unprocessable Entity

"quote_id": { "contractHasPostedBudgetsOrPayments": "Contract #102890 has posted budgets or payments" }

Contract #100000 has posted Payments.

500 - Unexpected error

{ "status": 500, "title": "Unexpected error", "describedBy": "http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html", "detail": "JSON encoding error occurred: Malformed UTF-8 characters, possibly incorrectly encoded",}

If a query has encrypted fields which are not decrypted using aes_decrypt in JSON response, below error is thrown. Please decrypt the fields in query before adding the query in table.


Commission

The system can be set-up to return calculated values for the commission rate and fee. These are triggered when Include Commission flag is checked.

Changing any of the following fields will trigger a recalculation of the commission rate and fee: Effective Date, Contract Type, Term (Months), Client Code or Financier.

Open the commission model to see how the commission calculates using different settings.

Order of Rules

The following describes the order that rules are applied in to calculate the commission rate and fee of a quote:

Rule 1: Setup / Reference Data → qtfinancierpostingmapdefaults → Detail "Include Commission"

  • If unchecked, the Quotes / Finance "Commission Rate / Fee" fields are set to 0.00 and the fields are disabled.

  • If checked, continue to next step

Rule 2: If Clients / Quote Defaults "Agreed Lessee Rate"

  • If populated, then Quotes / Finance "Commission Rate / Fee" are updated to achieve the "Agreed Lessee Rate".

  • If not populated, continue to next step

Rule 3: If Setup / Reference Data → qtfinancierpostingmapdefaults → Detail "Commission %"

  • If populated, this will be calculated and applied to the quote (the Commission rate (%) selected will use the record where the term is equal to, or lower than the term entered in the quote)

  • If not populated, continue to next step

Rule 4: If Clients / Quote Defaults "Commission Rate"

  • If populated, this will be calculated and applied to the quote

  • If not populated, continue to next step

Rule 5: If Setup / Reference Data → gbcontrols "novatedcommission_rate"

  • If populated, this will be calculated and applied to the quote

  • If not populated, then Quotes / Finance "Commission Rate / Fee" will be set to 0.00.

Rule 6: If Setup / Reference Data → qtfinancierpostingmapdefaults → Detail "Commission Max" and/or "Commission Max %" are populated and the calculated commission is lower than the stored commission in the quote, then the lower, calculated commission will be applied to the quote.

The value nominated in the Setup / Reference Data → gbcontrols "commissionrate_basis" field is used as the base rate for this calculation (i.e. 'Depreciable Amount', 'Amount Financed' or 'On Road Price').

"Commission Max %" is calculated using the Setup / Reference Data → qtfinancierpostingmapdefaults → Detail "Commission Max Basis" setting. This basis is separate from the Global Control "commissionratebasis" because this calculation is typically dictated by the Financier.

Note: When Setup / Reference Data → gbcontrols "redundancyinsurance_basis" is also set to 'Amount Financed', the Quotes / Finance "Commission Fee" is calculated after "Redundancy Insurance".

When the Rules are Triggered

The calculation in the commission model and the rules above are triggered in a quote in the following scenarios:

  • When a quote is created by a user in the system or by running the CreateQuotes api.

  • When the "Effective Date" or the "Client Code" is changed

  • When the "Type Code", "Term (Months)" or "Financier" is changed AND Setup / Reference Data → qtfinancierpostingmapdefaults "Novated Commission %" is populated.

  • When the "Type Code", "Term (Months)" or "Financier" is changed AND Setup / Reference Data → qtfinancierpostingmapdefaults "Novated Commission Max" is populated and existing "Commission Rate" is higher than the "Novated Commission Max".

  • When any field that triggers a recalculation of the finance rate is changed AND Setup / Reference Data → qtfinancierpostingmapdefaults "Novated Commission %" is populated.

  • When any field that triggers a recalculation of the finance rate is changed AND Setup / Reference Data → qtfinancierpostingmapdefaults "Novated Commission Max" and/or "Novated Commission Max %" is populated and existing "Commission Rate" is higher than the "Novated Commission Max" and/or "Novated Commission Max %".

When Rules are Not Triggered

The calculation rules below are not triggered in a quote in the following scenarios:

  • When the "Type Code", "Term (Months)" or "Financier" is changed AND Setup / Reference Data → qtfinancierpostingmapdefaults has not been populated.

  • When the "Type Code", "Term (Months)" or "Financier" is changed AND a Setup / Reference Data → qtfinancierpostingmapdefaults record exists but "Novated Commission %" is not populated and "Novated Commission Max" and/or "Novated Commission Max %" is not populated or is higher than the stored commission.

  • When any field that triggers a recalculation of the finance rate is changed AND Setup / Reference Data → qtfinancierpostingmapdefaults has not been populated.

  • When any field that triggers a recalculation of the finance rate is changed AND a Setup / Reference Data → qtfinancierpostingmapdefaults record exists but "Novated Commission %" is not populated and "Novated Commission Max" and/or "Novated Commission Max %" is not populated or is higher than the stored commission.

The Quotes / Finance "Commission Rate/Fee" field will be set as 'display-only' if the client has a stored "Agreed Lessee Rate", as this will change the commission rate and fee as they are forced to change in the calculation so that the "Agreed Lessee Rate" is matched.

Visit Role Restrictions → Quotes / Finance to check the set-up details.

Useful Queries

SET time_zone = 'Australia/Melbourne'; SET @quote_id := 100000; SET @term := '24'; SELECT gbc2.value AS 'GBC_commission_rate_basis', q.financed_amount AS 'Amount Financed', q.on_road_price_net + q.on_road_price_gst AS 'On Road Price', q.depreciable_amount, q.lessee_rate * 100 AS 'lessee_rate', q.commission_rate * 100 AS 'commission_rate', q.commission AS 'commission_fee', IFNULL(pmd.include_commission_flag, 'Yes') AS '1) include_commission_flag', c.agreed_lessee_rate AS '2) Agreed Lessee Rate', pmd.novated_commission_rate AS '3) PMD_novated_commission_rate', cd.novated_commission_rate AS '4) CLI_def_novated_commission_rate', gbc1.value AS '5) GBC_novated_commission_rate', pmd.novated_commission_maximum_amount, pmd.novated_commission_maximum_rate, pmd.novated_commission_maximum_basis FROM qt_quotes q INNER JOIN fm_clients c ON c.client_id = q.client_id LEFT JOIN qt_client_defaults cd ON cd.client_id = c.client_id LEFT JOIN ( SELECT * FROM qt_financier_posting_map_defaults WHERE supplier_id = (SELECT supplier_id FROM fm_suppliers WHERE supplier_code = 'MATTFIN') AND posting_map_id = (SELECT posting_map_id FROM gl_posting_maps WHERE posting_map_code = 'NOFB') AND term <= 24 ORDER BY term DESC LIMIT 1 ) pmd ON pmd.supplier_id = q.supplier_id_financier JOIN ( SELECT value, effective_from FROM gb_controls WHERE name = 'novated_commission_rate' ORDER BY name, effective_from DESC LIMIT 1 ) gbc1 JOIN ( SELECT value, effective_from FROM gb_controls WHERE name = 'commission_rate_basis' ORDER BY name, effective_from DESC LIMIT 1 ) gbc2 WHERE q.quote_id = @quote_id GROUP BY q.quote_id; 

Establishment Fee

Calculating the "Establishment / Admin Fee" is affected by a number of settings in the system. See below for a description of each setting that is used and some examples of the value that would be calculated in various scenarios.

Use the calculation spreadsheet to model the results you want to see: Establishment Fee.

Fields Affecting Establishment/Admin Fee

Field

Source

Description

novatedestablishment_fee

Setup / Reference Data → gbcontrols

This value is only invoked when: 1. Contract Types / Details "Group" = 'Novated'. 2. Contract Types / Details "Include Client Establishment Fee" is checked off. 3. Setup / Reference Data → qt financier posting map defaults Financier / Contract Type combination does not exist.

Group

Contract Types / Details

This can be 'Lease', 'Fleet Managed', 'Novated', 'Insurance' or 'Non Billing'.

Include Client Establishment Fee

Contract Types / Details

If this checkbox is selected, any value stored in the Clients / Quote Defaults "Establishment Fee" will be added to the Quote's "Establishment / Admin Fee".

Establishment Fee

Clients / Quote Defaults

If "Include Client Establishment Fee" is selected for the quote, this value will be added to the quote's "Establishment / Admin Fee", otherwise it is ignored.

Establishment Fee

Setup / Reference Data → qt financier posting map defaults

If a Financier/Contract Type combination matches the quote this value will always be added to the quote's "Establishment / Admin Fee".

Scenarios for Establishment/Admin Fee

novatedestablishmentfee Contract Types

Group Contract Types

Include Client Establishment Fee

Clients / Quote Defaults Establishment Fee

qt financier posting map defaults Establishment Fee

Quotes / Finance Establishment / Admin Fee

0.00

Other

Yes

300.00

0.00

300.00

0.00

Other

Yes

300.00

n/a

300.00

0.00

Other

Yes

0.00

400.00

400.00

0.00

Other

Yes

300.00

400.00

700.00

0.00

Other

No

300.00

400.00

400.00

0.00

Other

No

300.00

n/a

0.00

200.00

Novated

Yes

300.00

400.00

700.00

200.00

Novated

Yes

300.00

n/a

300.00

200.00

Novated

Yes

0.00

n/a

0.00

200.00

Novated

No

300.00

400.00

400.00

200.00

Novated

No

300.00

n/a

200.00

0.00

Novated

No

300.00

n/a

0.00