Best Lease Car Deals Available? (Vol 4)
Discussion
ilikejam said:
markhaines said:
Hello, I've updated the contracthireandleasing.com greasemonkey script by Rory McCrossan that automatically sorts & displays results by total cost and shows monthly amortised cost.
I'm looking for a new lease at the moment and it's been invaluable. I can't take any credit for it other than adding the url match & slightly updated code that other users noted a while ago in this thread. All merged into one handy update here:
// ==UserScript==
// @name Contract Hire and Leasing Calculator
// @namespace http://rorymccrossan.co.uk
// @version 1.1
// @description Adds helpful information to each deal
// @author Rory McCrossan
// @match https://www.contracthireandleasing.com/personal/ca...
// @match https://www.contracthireandleasing.com/business/ca...
// @grant none
// ==/UserScript==
$('<style />', {
text: '.overall-cost { text-align: right; padding: 0; position: absolute; top: 0; left: 0; right: 0; background-color: #DDD; }' +
'.deal .title-wrap { padding: 0 0 0 10px; }' +
'.all-price-wrap { padding: 0 10px 10px 0 }' +
'ul.amortised li { list-style: inherit; display: inline-block; position: relative; padding-left: 15px; text-align: left; margin: 0 5px 0 15px; }' +
'ul.amortised li:before { position: absolute; left: 0; content: "\u25b6"; }' +
'.manufacturer-banner, #ootwWindow, .right-panel, .leaderboard-wrap, .deal-panel h2, .crosslinks, .inline-srb-wrap, footer { display: none; }' +
'.content { margin-top: 0; padding: 5px 3%; }' +
'#btnClose { top: 33px; right: 0; border-left: 5px solid #FFF }' +
'.deal-panel .listing-text { width: 50%; float: left; padding: 7px 0; }' +
'.pagination.posts { width: 50%; clear: none; padding: 0 0 10px; margin: 0;}' +
'.search-button-wrap { width: 25%; float: right; position: relative; padding: 0 }' +
'.keywords-wrap { width: 75%; float: left; margin: 0 }' +
'.adv-options { padding: 0 }' +
'#alldeals .deal { color: #333; background-color: transparent; border: 1px solid #DDD; padding-top: 30px; }' +
'#alldeals .deal:first-child { color: #080; background-color: #ecffef; border-color: #88E886; }' +
'#alldeals .deal:first-child .deal-table { background-color: transparent }' +
'#alldeals .deal:first-child ul.amortised li { font-weight: bold; }' +
'#alldeals .deal:first-child .overall-cost { background-color: #88E886; }'
}).appendTo('head');
$('.pagination.posts').clone(true).insertAfter('.listing-text');
$('.search-button-wrap').appendTo('.adv-hold');
$('<div class="deal-container"></div>').appendTo('#alldeals');
$('#alldeals .deal').each(function(i) {
var $deal = $(this);
// price calc
var monthlyPrice = $deal.find('.deal-price').text().replace('£', '').replace(',', '');
var initialPayment = parseFloat($deal.find('.deal-user').text().replace('£', '').replace(',', ''));
var profileText = $deal.find('.personal-deal-profile').text();
var monthRegex = /(\d+)\+(\d+)/gi;
var monthMatches = monthRegex.exec(profileText);
if (isNaN(initialPayment)) {
initialPayment = monthMatches[1] * monthlyPrice;
}
var months = parseInt(monthMatches[2]);
var years = (months + 1) / 12;
var totalCost = ((monthlyPrice * months) + initialPayment).toFixed(2);
var yearlyCost = (totalCost / years).toFixed(2);
var $costDiv = $('<div class="overall-cost" />');
var $amortisedData = $('<ul class="amortised" />').appendTo($costDiv);
$('<li />', {
text: '£' + groupNumber((yearlyCost / 12).toFixed(2)) + ' / mo',
class: 'monthly'
}).prependTo($amortisedData);
$('<li />', {
text: '£' + groupNumber(yearlyCost) + ' / yr',
class: 'yearly'
}).prependTo($amortisedData);
$('<li />', {
text: '£' + groupNumber(totalCost) + ' total',
class: 'total'
}).prependTo($amortisedData);
$deal.data('yearly-cost', yearlyCost).prepend($costDiv);
}).sort(function(a, b) {
return $(a).data('yearly-cost') - $(b).data('yearly-cost');
}).appendTo('.deal-container');
function toFloat(input) {
return parseFloat(input.replace(/[^0-9\.]+/g,""));
}
function groupNumber(x) {
return x.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",");
}
Just install Greasemonkey (called TamperMonkey if using Chrome) paste the above into a new filter and you're all set. Should display useful extra info like this:
Is this script still working for you? Giving me errors...I'm looking for a new lease at the moment and it's been invaluable. I can't take any credit for it other than adding the url match & slightly updated code that other users noted a while ago in this thread. All merged into one handy update here:
// ==UserScript==
// @name Contract Hire and Leasing Calculator
// @namespace http://rorymccrossan.co.uk
// @version 1.1
// @description Adds helpful information to each deal
// @author Rory McCrossan
// @match https://www.contracthireandleasing.com/personal/ca...
// @match https://www.contracthireandleasing.com/business/ca...
// @grant none
// ==/UserScript==
$('<style />', {
text: '.overall-cost { text-align: right; padding: 0; position: absolute; top: 0; left: 0; right: 0; background-color: #DDD; }' +
'.deal .title-wrap { padding: 0 0 0 10px; }' +
'.all-price-wrap { padding: 0 10px 10px 0 }' +
'ul.amortised li { list-style: inherit; display: inline-block; position: relative; padding-left: 15px; text-align: left; margin: 0 5px 0 15px; }' +
'ul.amortised li:before { position: absolute; left: 0; content: "\u25b6"; }' +
'.manufacturer-banner, #ootwWindow, .right-panel, .leaderboard-wrap, .deal-panel h2, .crosslinks, .inline-srb-wrap, footer { display: none; }' +
'.content { margin-top: 0; padding: 5px 3%; }' +
'#btnClose { top: 33px; right: 0; border-left: 5px solid #FFF }' +
'.deal-panel .listing-text { width: 50%; float: left; padding: 7px 0; }' +
'.pagination.posts { width: 50%; clear: none; padding: 0 0 10px; margin: 0;}' +
'.search-button-wrap { width: 25%; float: right; position: relative; padding: 0 }' +
'.keywords-wrap { width: 75%; float: left; margin: 0 }' +
'.adv-options { padding: 0 }' +
'#alldeals .deal { color: #333; background-color: transparent; border: 1px solid #DDD; padding-top: 30px; }' +
'#alldeals .deal:first-child { color: #080; background-color: #ecffef; border-color: #88E886; }' +
'#alldeals .deal:first-child .deal-table { background-color: transparent }' +
'#alldeals .deal:first-child ul.amortised li { font-weight: bold; }' +
'#alldeals .deal:first-child .overall-cost { background-color: #88E886; }'
}).appendTo('head');
$('.pagination.posts').clone(true).insertAfter('.listing-text');
$('.search-button-wrap').appendTo('.adv-hold');
$('<div class="deal-container"></div>').appendTo('#alldeals');
$('#alldeals .deal').each(function(i) {
var $deal = $(this);
// price calc
var monthlyPrice = $deal.find('.deal-price').text().replace('£', '').replace(',', '');
var initialPayment = parseFloat($deal.find('.deal-user').text().replace('£', '').replace(',', ''));
var profileText = $deal.find('.personal-deal-profile').text();
var monthRegex = /(\d+)\+(\d+)/gi;
var monthMatches = monthRegex.exec(profileText);
if (isNaN(initialPayment)) {
initialPayment = monthMatches[1] * monthlyPrice;
}
var months = parseInt(monthMatches[2]);
var years = (months + 1) / 12;
var totalCost = ((monthlyPrice * months) + initialPayment).toFixed(2);
var yearlyCost = (totalCost / years).toFixed(2);
var $costDiv = $('<div class="overall-cost" />');
var $amortisedData = $('<ul class="amortised" />').appendTo($costDiv);
$('<li />', {
text: '£' + groupNumber((yearlyCost / 12).toFixed(2)) + ' / mo',
class: 'monthly'
}).prependTo($amortisedData);
$('<li />', {
text: '£' + groupNumber(yearlyCost) + ' / yr',
class: 'yearly'
}).prependTo($amortisedData);
$('<li />', {
text: '£' + groupNumber(totalCost) + ' total',
class: 'total'
}).prependTo($amortisedData);
$deal.data('yearly-cost', yearlyCost).prepend($costDiv);
}).sort(function(a, b) {
return $(a).data('yearly-cost') - $(b).data('yearly-cost');
}).appendTo('.deal-container');
function toFloat(input) {
return parseFloat(input.replace(/[^0-9\.]+/g,""));
}
function groupNumber(x) {
return x.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",");
}
Just install Greasemonkey (called TamperMonkey if using Chrome) paste the above into a new filter and you're all set. Should display useful extra info like this:
chris4555 said:
stevoknevo said:
I've been keeping an eye on the Leon prices and not seen any diesel near that price. Best deal I've seen was an in stock 1.4tfsi FR edition for 3 x 23 10k £192 & £180 fees, but it was in stock. Have seen the 1.2tsfi up for as low as 3 x 23 10k for £152pm
thanks for this. I have ordered the 1.6DSG leon, coming from the factory 12 week waitilikejam said:
Same here - fixed what I thought was the error but it just shifts the error to the next block of code
Zoon said:
Errors Lines 33-36 for me.
Try removing all the code you have and using the one below; there was a fix posted a while ago by someone in this thread which is in the code somewhere but i can't recall specifically where. But it works for me. // ==UserScript==
// @name Contract Hire and Leasing Calculator
// @namespace http://rorymccrossan.co.uk
// @version 1.0
// @description Adds helpful information to each deal
// @author Rory McCrossan
// @match *://www.contracthireandleasing.com/personal/*
// @match *://www.contracthireandleasing.com/business/*
// @grant none
// ==/UserScript==
$('<style />', {
text: '.overall-cost { text-align: right; padding: 0; position: absolute; top: 0; left: 0; right: 0; background-color: #DDD; }' +
'.deal .title-wrap { padding: 0 0 0 10px; }' +
'.all-price-wrap { padding: 0 10px 10px 0 }' +
'ul.amortised li { list-style: inherit; display: inline-block; position: relative; padding-left: 15px; text-align: left; margin: 0 5px 0 15px; }' +
'ul.amortised li:before { position: absolute; left: 0; content: "\u25b6"; }' +
'.manufacturer-banner, #ootwWindow, .right-panel, .leaderboard-wrap, .deal-panel h2, .crosslinks, .inline-srb-wrap, footer { display: none; }' +
'.content { margin-top: 0; padding: 5px 3%; }' +
'#btnClose { top: 33px; right: 0; border-left: 5px solid #FFF }' +
'.deal-panel .listing-text { width: 50%; float: left; padding: 7px 0; }' +
'.pagination.posts { width: 50%; clear: none; padding: 0 0 10px; margin: 0;}' +
'.search-button-wrap { width: 25%; float: right; position: relative; padding: 0 }' +
'.keywords-wrap { width: 75%; float: left; margin: 0 }' +
'.adv-options { padding: 0 }' +
'#alldeals .deal { color: #333; background-color: transparent; border: 1px solid #DDD; padding-top: 30px; }' +
'#alldeals .deal:first-child { color: #080; background-color: #ecffef; border-color: #88E886; }' +
'#alldeals .deal:first-child .deal-table { background-color: transparent }' +
'#alldeals .deal:first-child ul.amortised li { font-weight: bold; }' +
'#alldeals .deal:first-child .overall-cost { background-color: #88E886; }'
}).appendTo('head');
$('.pagination.posts').clone(true).insertAfter('.listing-text');
$('.search-button-wrap').appendTo('.adv-hold');
$('<div class="deal-container"></div>').appendTo('#alldeals');
$('#alldeals .deal').each(function(i) {
var $deal = $(this);
// price calc
var monthlyPrice = $deal.find('.deal-price').text().replace('£', '').replace(',', '');
var initialPayment = parseFloat($deal.find('.deal-user').text().replace('£', '').replace(',', ''));
var profileText = $deal.find('.personal-deal-profile, .business-deal-profile').text();
var monthRegex = /(\d+)\+(\d+)/gi;
var monthMatches = monthRegex.exec(profileText);
if (isNaN(initialPayment)) {
initialPayment = monthMatches[1] * monthlyPrice;
}
var months = parseInt(monthMatches[2]);
var years = (months + 1) / 12;
var totalCost = ((monthlyPrice * months) + initialPayment).toFixed(2);
var yearlyCost = (totalCost / years).toFixed(2);
var $costDiv = $('<div class="overall-cost" />');
var $amortisedData = $('<ul class="amortised" />').appendTo($costDiv);
$('<li />', {
text: '£' + groupNumber((yearlyCost / 12).toFixed(2)) + ' / mo',
class: 'monthly'
}).prependTo($amortisedData);
$('<li />', {
text: '£' + groupNumber(yearlyCost) + ' / yr',
class: 'yearly'
}).prependTo($amortisedData);
$('<li />', {
text: '£' + groupNumber(totalCost) + ' total',
class: 'total'
}).prependTo($amortisedData);
$deal.data('yearly-cost', yearlyCost).prepend($costDiv);
}).sort(function(a, b) {
return $(a).data('yearly-cost') - $(b).data('yearly-cost');
}).appendTo('.deal-container');
function toFloat(input) {
return parseFloat(input.replace(/[^0-9\.]+/g,""));
}
function groupNumber(x) {
return x.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",");
}
muffinmenace said:
Try removing all the code you have and using the one below; there was a fix posted a while ago by someone in this thread which is in the code somewhere but i can't recall specifically where. But it works for me.
// ==UserScript==
// @name Contract Hire and Leasing Calculator
// @namespace http://rorymccrossan.co.uk
// @version 1.0
// @description Adds helpful information to each deal
// @author Rory McCrossan
// @match *://www.contracthireandleasing.com/personal/*
// @match *://www.contracthireandleasing.com/business/*
// @grant none
// ==/UserScript==
$('<style />', {
text: '.overall-cost { text-align: right; padding: 0; position: absolute; top: 0; left: 0; right: 0; background-color: #DDD; }' +
'.deal .title-wrap { padding: 0 0 0 10px; }' +
'.all-price-wrap { padding: 0 10px 10px 0 }' +
'ul.amortised li { list-style: inherit; display: inline-block; position: relative; padding-left: 15px; text-align: left; margin: 0 5px 0 15px; }' +
'ul.amortised li:before { position: absolute; left: 0; content: "\u25b6"; }' +
'.manufacturer-banner, #ootwWindow, .right-panel, .leaderboard-wrap, .deal-panel h2, .crosslinks, .inline-srb-wrap, footer { display: none; }' +
'.content { margin-top: 0; padding: 5px 3%; }' +
'#btnClose { top: 33px; right: 0; border-left: 5px solid #FFF }' +
'.deal-panel .listing-text { width: 50%; float: left; padding: 7px 0; }' +
'.pagination.posts { width: 50%; clear: none; padding: 0 0 10px; margin: 0;}' +
'.search-button-wrap { width: 25%; float: right; position: relative; padding: 0 }' +
'.keywords-wrap { width: 75%; float: left; margin: 0 }' +
'.adv-options { padding: 0 }' +
'#alldeals .deal { color: #333; background-color: transparent; border: 1px solid #DDD; padding-top: 30px; }' +
'#alldeals .deal:first-child { color: #080; background-color: #ecffef; border-color: #88E886; }' +
'#alldeals .deal:first-child .deal-table { background-color: transparent }' +
'#alldeals .deal:first-child ul.amortised li { font-weight: bold; }' +
'#alldeals .deal:first-child .overall-cost { background-color: #88E886; }'
}).appendTo('head');
$('.pagination.posts').clone(true).insertAfter('.listing-text');
$('.search-button-wrap').appendTo('.adv-hold');
$('<div class="deal-container"></div>').appendTo('#alldeals');
$('#alldeals .deal').each(function(i) {
var $deal = $(this);
// price calc
var monthlyPrice = $deal.find('.deal-price').text().replace('£', '').replace(',', '');
var initialPayment = parseFloat($deal.find('.deal-user').text().replace('£', '').replace(',', ''));
var profileText = $deal.find('.personal-deal-profile, .business-deal-profile').text();
var monthRegex = /(\d+)\+(\d+)/gi;
var monthMatches = monthRegex.exec(profileText);
if (isNaN(initialPayment)) {
initialPayment = monthMatches[1] * monthlyPrice;
}
var months = parseInt(monthMatches[2]);
var years = (months + 1) / 12;
var totalCost = ((monthlyPrice * months) + initialPayment).toFixed(2);
var yearlyCost = (totalCost / years).toFixed(2);
var $costDiv = $('<div class="overall-cost" />');
var $amortisedData = $('<ul class="amortised" />').appendTo($costDiv);
$('<li />', {
text: '£' + groupNumber((yearlyCost / 12).toFixed(2)) + ' / mo',
class: 'monthly'
}).prependTo($amortisedData);
$('<li />', {
text: '£' + groupNumber(yearlyCost) + ' / yr',
class: 'yearly'
}).prependTo($amortisedData);
$('<li />', {
text: '£' + groupNumber(totalCost) + ' total',
class: 'total'
}).prependTo($amortisedData);
$deal.data('yearly-cost', yearlyCost).prepend($costDiv);
}).sort(function(a, b) {
return $(a).data('yearly-cost') - $(b).data('yearly-cost');
}).appendTo('.deal-container');
function toFloat(input) {
return parseFloat(input.replace(/[^0-9\.]+/g,""));
}
function groupNumber(x) {
return x.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",");
}
That looks like the one I was trying to use but was giving me an error// ==UserScript==
// @name Contract Hire and Leasing Calculator
// @namespace http://rorymccrossan.co.uk
// @version 1.0
// @description Adds helpful information to each deal
// @author Rory McCrossan
// @match *://www.contracthireandleasing.com/personal/*
// @match *://www.contracthireandleasing.com/business/*
// @grant none
// ==/UserScript==
$('<style />', {
text: '.overall-cost { text-align: right; padding: 0; position: absolute; top: 0; left: 0; right: 0; background-color: #DDD; }' +
'.deal .title-wrap { padding: 0 0 0 10px; }' +
'.all-price-wrap { padding: 0 10px 10px 0 }' +
'ul.amortised li { list-style: inherit; display: inline-block; position: relative; padding-left: 15px; text-align: left; margin: 0 5px 0 15px; }' +
'ul.amortised li:before { position: absolute; left: 0; content: "\u25b6"; }' +
'.manufacturer-banner, #ootwWindow, .right-panel, .leaderboard-wrap, .deal-panel h2, .crosslinks, .inline-srb-wrap, footer { display: none; }' +
'.content { margin-top: 0; padding: 5px 3%; }' +
'#btnClose { top: 33px; right: 0; border-left: 5px solid #FFF }' +
'.deal-panel .listing-text { width: 50%; float: left; padding: 7px 0; }' +
'.pagination.posts { width: 50%; clear: none; padding: 0 0 10px; margin: 0;}' +
'.search-button-wrap { width: 25%; float: right; position: relative; padding: 0 }' +
'.keywords-wrap { width: 75%; float: left; margin: 0 }' +
'.adv-options { padding: 0 }' +
'#alldeals .deal { color: #333; background-color: transparent; border: 1px solid #DDD; padding-top: 30px; }' +
'#alldeals .deal:first-child { color: #080; background-color: #ecffef; border-color: #88E886; }' +
'#alldeals .deal:first-child .deal-table { background-color: transparent }' +
'#alldeals .deal:first-child ul.amortised li { font-weight: bold; }' +
'#alldeals .deal:first-child .overall-cost { background-color: #88E886; }'
}).appendTo('head');
$('.pagination.posts').clone(true).insertAfter('.listing-text');
$('.search-button-wrap').appendTo('.adv-hold');
$('<div class="deal-container"></div>').appendTo('#alldeals');
$('#alldeals .deal').each(function(i) {
var $deal = $(this);
// price calc
var monthlyPrice = $deal.find('.deal-price').text().replace('£', '').replace(',', '');
var initialPayment = parseFloat($deal.find('.deal-user').text().replace('£', '').replace(',', ''));
var profileText = $deal.find('.personal-deal-profile, .business-deal-profile').text();
var monthRegex = /(\d+)\+(\d+)/gi;
var monthMatches = monthRegex.exec(profileText);
if (isNaN(initialPayment)) {
initialPayment = monthMatches[1] * monthlyPrice;
}
var months = parseInt(monthMatches[2]);
var years = (months + 1) / 12;
var totalCost = ((monthlyPrice * months) + initialPayment).toFixed(2);
var yearlyCost = (totalCost / years).toFixed(2);
var $costDiv = $('<div class="overall-cost" />');
var $amortisedData = $('<ul class="amortised" />').appendTo($costDiv);
$('<li />', {
text: '£' + groupNumber((yearlyCost / 12).toFixed(2)) + ' / mo',
class: 'monthly'
}).prependTo($amortisedData);
$('<li />', {
text: '£' + groupNumber(yearlyCost) + ' / yr',
class: 'yearly'
}).prependTo($amortisedData);
$('<li />', {
text: '£' + groupNumber(totalCost) + ' total',
class: 'total'
}).prependTo($amortisedData);
$deal.data('yearly-cost', yearlyCost).prepend($costDiv);
}).sort(function(a, b) {
return $(a).data('yearly-cost') - $(b).data('yearly-cost');
}).appendTo('.deal-container');
function toFloat(input) {
return parseFloat(input.replace(/[^0-9\.]+/g,""));
}
function groupNumber(x) {
return x.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",");
}
There seems to be a missing bracket/semi-colon at the end of this line:
$('.pagination.posts').clone(true).insertAfter('.listing-text
Adding them in just shifted the error further down the code
Regarding script, working one is mentioned on page 229, post by Silentbrown at the bottom.
http://linshoppppppp.biz/gassing/topic.asp?h=0&...
There's a link to github to download script - https://gist.github.com/ianhampton/3a1760df294bec2...
http://linshoppppppp.biz/gassing/topic.asp?h=0&...
There's a link to github to download script - https://gist.github.com/ianhampton/3a1760df294bec2...
ilikejam said:
Same here - fixed what I thought was the error but it just shifts the error to the next block of code
Someone put a copy of it up on github or pastebin a few pages back which works better - I think the formatting can get messed up when put into the forum.But yes, the script itself still works.
EDIT: Ah, see someone beat me to it above!
JQ said:
lada-di-da said:
Where are they from? The E220 Estate AMG Line Auto at £230pcm (9+23) for 10,000 miles looks pretty good value.Mercedes C Class Saloon
https://www.contracthireandleasing.com/independent...
Mercedes C Class Estate
https://www.contracthireandleasing.com/independent...
https://www.contracthireandleasing.com/independent...
Mercedes C Class Estate
https://www.contracthireandleasing.com/independent...
muffinmenace said:
https://www.contracthireandleasing.com/independent...
https://www.contracthireandleasing.com/independent...
https://www.contracthireandleasing.com/independent...
That estate seems cheap...
Octavia Estate 1.4TSi SE Technology (150bhp)https://www.contracthireandleasing.com/independent...
https://www.contracthireandleasing.com/independent...
That estate seems cheap...
£148.54 Per Month, INC VAT
Rental Profile 3+23
Annual Mileage 8k Miles p/a
Initial Rental £445.62
Additional Fees £298.80
Total £4160.84
£173.37/month amortised
Octavia Hatchback 1.0 TSI SE Technology 5dr (115bhp)
£139.20 Per Month, INC VAT
Rental Profile 3+23
Annual Mileage 8k Miles p/a
Initial Rental £417.60
Additional Fees £298.80
Total £3918.00
£163.25/month amortised
Goes up only a bit for more miles:
Octavia Estate 1.4TSi SE Technology (150bhp)
£167.22 Per Month, INC VAT
Rental Profile 3+23
Annual Mileage 10k Miles p/a
Initial Rental £501.66
Additional Fees £298.80
Total £4646.52
£193.61/month amortised
Octavia Hatchback 1.0 TSI SE Technology 5dr (115bhp)
£143.64 Per Month, INC VAT
Rental Profile 3+23
Annual Mileage 10k Miles p/a
Initial Rental £430.92
Additional Fees £298.80
Total £4033.44
£168.06/month amortised
but somewhat more for a shorter period!
Octavia Estate 1.4TSi SE Technology (150bhp)
£443.02 Per Month, INC VAT
Rental Profile 3+17
Annual Mileage 10k Miles p/a
Initial Rental £1,329.06
Additional Fees £298.80
Total £9159.20
£508.85/month amortised (!!)
Edited by RSTurboPaul on Wednesday 20th September 15:21
Gassing Station | Car Buying | Top of Page | What's New | My Stuff