{"version":3,"sources":["./src/app/vehicle-finance-calculator/services/email.service.ts","./src/app/vehicle-finance-calculator/vehicle-finance-calculator.component.ts","./src/app/vehicle-finance-calculator/vehicle-finance-calculator.component.html","./src/environments/environment.ts","./src/app/app.component.ts","./src/app/app.component.html","./src/app/vehicle-finance-calculator/services/http-request.service.ts","./src/app/app.module.ts","./src/assets/smtp.js","./src/app/app-routing.module.ts","./src/main.ts","./$_lazy_route_resource lazy namespace object"],"names":[],"mappings":"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","file":"main.js","sourcesContent":["import { Injectable } from '@angular/core';\r\nimport { environment } from 'src/environments/environment';\r\nimport { EmailerRqDto, EmailerRsDto } from 'src/app/Models/Email/Email.js';\r\nimport { HttpRequestService } from 'src/app/vehicle-finance-calculator/services/http-request.service';\r\nimport '../../../assets/smtp.js';\r\n\r\ndeclare let Email: any;\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class EmailService {\r\n private controllerUrl = `${environment.baseUrl}/GenericEmail`;\r\n\r\n constructor(private http: HttpRequestService) { }\r\n\r\n public async sendMail(request: EmailerRqDto): Promise {\r\n return new Promise(async (resolve, reject) => {\r\n let serviceResponse: EmailerRsDto = {\r\n isSuccessful: false\r\n };\r\n\r\n await this.http\r\n .request(`${this.controllerUrl}/SendPostEmail`, request, 'POST')\r\n .then((response) => {\r\n if (response) {\r\n serviceResponse.isSuccessful = true;\r\n } else {\r\n return reject(response);\r\n }\r\n resolve(serviceResponse);\r\n })\r\n .catch((error) => {\r\n reject(error);\r\n });\r\n });\r\n }\r\n}\r\n","import { environment } from './../../environments/environment';\r\nimport { Component, OnInit } from '@angular/core';\r\nimport { FormControl, FormGroup, Validators } from '@angular/forms';\r\nimport { MatSnackBar, MatSnackBarConfig } from '@angular/material/snack-bar';\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport { EmailService } from './services/email.service';\r\nimport { GoogleAnalyticsService } from 'ngx-google-analytics';\r\nimport { MatTabChangeEvent } from '@angular/material/tabs';\r\nimport { EmailerRqDto } from '../Models/Email/Email';\r\n\r\n@Component({\r\n selector: 'app-vehicle-finance-calculator',\r\n templateUrl: './vehicle-finance-calculator.component.html',\r\n styleUrls: ['./vehicle-finance-calculator.component.scss'],\r\n})\r\nexport class VehicleFinanceCalculatorComponent implements OnInit {\r\n public EmailForm = new FormGroup({\r\n email: new FormControl('', [Validators.required, Validators.email]),\r\n });\r\n\r\n private guid: string = '';\r\n private configName: string = '';\r\n\r\n public staticConfig: {\r\n currency: string;\r\n minFinancingAmount: number;\r\n maxFinancingAmount: number;\r\n minMonthlyInstalment: number;\r\n maxMonthlyInstalment: number;\r\n paymentTerms: Array;\r\n minTerm: number;\r\n maxTerm: number;\r\n termIncrement: number;\r\n minInterestRate: number;\r\n maxInterestRate: number;\r\n minDeposit: number;\r\n maxDeposit: number;\r\n minBalloonRate: number;\r\n maxBalloonRate: number;\r\n minBalloonAmount: number;\r\n maxBalloonAmount: number;\r\n showMontlyInstalment: boolean;\r\n showPurchasePrice: boolean;\r\n showBalloonPayment: boolean;\r\n disableBalloonPayment?: boolean;\r\n balloonPaymentLimits?: {\r\n minTerm: number;\r\n maxTerm: number;\r\n } | null;\r\n interestRateLabel?: string;\r\n canEmail?: boolean;\r\n } = {\r\n currency: '',\r\n minFinancingAmount: 0,\r\n maxFinancingAmount: 0,\r\n minMonthlyInstalment: 0,\r\n maxMonthlyInstalment: 0,\r\n paymentTerms: [],\r\n minTerm: 0,\r\n maxTerm: 0,\r\n termIncrement: 0,\r\n minInterestRate: 0,\r\n maxInterestRate: 1,\r\n minDeposit: 0,\r\n maxDeposit: 1,\r\n minBalloonRate: 0,\r\n maxBalloonRate: 1,\r\n minBalloonAmount: 0,\r\n maxBalloonAmount: 1,\r\n showMontlyInstalment: false,\r\n showPurchasePrice: false,\r\n showBalloonPayment: true,\r\n disableBalloonPayment: true,\r\n balloonPaymentLimits: null,\r\n canEmail: false,\r\n };\r\n\r\n public inputs: {\r\n purchasePrice: number;\r\n purchasePriceDisplay: string;\r\n depositMonthlyInstalment: number;\r\n depositMonthlyInstalmentDisplay: string;\r\n depositPurchasePrice: number;\r\n depositPurchasePriceDisplay: string;\r\n balloonPaymentPercentage: number;\r\n balloonPaymentAmount: number;\r\n balloonPaymentAmountDisplay: string;\r\n interestRate: number;\r\n paymentTerm: number;\r\n monthlyInstalmentDisplay: string;\r\n monthlyInstalment: number;\r\n emailAddress: string;\r\n } = {\r\n purchasePrice: 0,\r\n purchasePriceDisplay: '0',\r\n depositMonthlyInstalment: 0,\r\n depositMonthlyInstalmentDisplay: '0',\r\n depositPurchasePrice: 0,\r\n depositPurchasePriceDisplay: '0',\r\n balloonPaymentPercentage: 0,\r\n balloonPaymentAmount: 0,\r\n balloonPaymentAmountDisplay: '0',\r\n interestRate: 8,\r\n paymentTerm: 48,\r\n monthlyInstalment: 0,\r\n monthlyInstalmentDisplay: '0',\r\n emailAddress: '',\r\n };\r\n\r\n public outputsMonthlyInstalment: {\r\n financeTotal: number;\r\n interestTotal: number;\r\n balloonTotal: number;\r\n totalCost: number;\r\n monthlyInstalment: number;\r\n purchasePrice: number;\r\n inverseInterestRatio: number;\r\n } = {\r\n financeTotal: 0,\r\n interestTotal: 0,\r\n balloonTotal: 0,\r\n totalCost: 0,\r\n monthlyInstalment: 0,\r\n purchasePrice: 0,\r\n inverseInterestRatio: 100,\r\n };\r\n\r\n public outputsPurchasePrice: {\r\n financeTotal: number;\r\n interestTotal: number;\r\n balloonTotal: number;\r\n totalCost: number;\r\n monthlyInstalment: number;\r\n purchasePrice: number;\r\n inverseInterestRatio: number;\r\n } = {\r\n financeTotal: 0,\r\n interestTotal: 0,\r\n balloonTotal: 0,\r\n totalCost: 0,\r\n monthlyInstalment: 0,\r\n purchasePrice: 0,\r\n inverseInterestRatio: 100,\r\n };\r\n\r\n public isSendInProgress = false;\r\n\r\n public MonthlyInstalmentForm = new FormGroup({\r\n purchasePrice: new FormControl(this.inputs.purchasePrice, [\r\n Validators.min(this.staticConfig.minFinancingAmount),\r\n Validators.max(this.staticConfig.maxFinancingAmount),\r\n ]),\r\n });\r\n\r\n constructor(\r\n private route: ActivatedRoute,\r\n private emailService: EmailService,\r\n private snack: MatSnackBar,\r\n protected $gaService: GoogleAnalyticsService\r\n ) { }\r\n\r\n ngOnInit(): void {\r\n this.route.paramMap.subscribe((params) => {\r\n let guid = params.get('guid');\r\n\r\n if (guid) {\r\n this.guid = guid;\r\n this.loadConfig();\r\n } else {\r\n this.$gaService.pageView('', 'No config');\r\n }\r\n });\r\n }\r\n\r\n private loadConfig(): void {\r\n let config = environment.configs[this.guid];\r\n\r\n this.configName = config.name;\r\n this.$gaService.pageView('', this.configName);\r\n\r\n this.staticConfig = config;\r\n\r\n this.staticConfig.canEmail = !!config.smtp;\r\n\r\n document.documentElement.style.setProperty(\r\n '--active-colour',\r\n `${config.colour}`\r\n );\r\n\r\n this.inputs.interestRate = config.defaultInterestRate;\r\n this.inputs.paymentTerm = config.defaultPaymentTerm;\r\n this.inputs.depositMonthlyInstalment = config.defaultDeposit;\r\n this.inputs.balloonPaymentPercentage = config.defaultBalloonPercentage;\r\n\r\n this.staticConfig.minTerm = Math.min(...this.staticConfig.paymentTerms);\r\n this.staticConfig.maxTerm = Math.max(...this.staticConfig.paymentTerms);\r\n\r\n this.MonthlyInstalmentForm = new FormGroup({\r\n purchasePrice: new FormControl(this.inputs.purchasePrice, [\r\n Validators.min(this.staticConfig.minFinancingAmount),\r\n Validators.max(this.staticConfig.maxFinancingAmount),\r\n ]),\r\n });\r\n\r\n this.checkBalloonPaymentLimits();\r\n }\r\n\r\n /**\r\n * Function to calculate the outputs\r\n */\r\n public calculateMonthlyInstalment(): void {\r\n /* Ensure the form is valid before calculating */\r\n if (!this.isMonthlyInstalmentFormValid()) {\r\n this.resetOutput();\r\n return;\r\n }\r\n\r\n let interestRatePercPM = this.inputs.interestRate / 100;\r\n interestRatePercPM /= 12;\r\n\r\n let cumInterest = 1;\r\n\r\n for (\r\n let repayCount = 0;\r\n repayCount < this.inputs.paymentTerm;\r\n repayCount++\r\n ) {\r\n cumInterest *= 1 + interestRatePercPM;\r\n }\r\n\r\n let financingAmount =\r\n this.inputs.purchasePrice /* + this.INITIATION_FEE */ -\r\n this.inputs.depositMonthlyInstalment;\r\n\r\n let balloonAmount =\r\n (financingAmount * this.inputs.balloonPaymentPercentage) / 100;\r\n\r\n /* If the selected payment terms is outside of the balloon payment limits, do not take the balloon payment into account */\r\n if (\r\n this.staticConfig.balloonPaymentLimits != null &&\r\n (this.inputs.paymentTerm >\r\n this.staticConfig.balloonPaymentLimits.maxTerm ||\r\n this.inputs.paymentTerm <\r\n this.staticConfig.balloonPaymentLimits.minTerm)\r\n ) {\r\n balloonAmount = 0;\r\n }\r\n\r\n let monthlyValue =\r\n ((financingAmount - balloonAmount / cumInterest) *\r\n cumInterest *\r\n interestRatePercPM) /\r\n (cumInterest - 1);\r\n\r\n // let montlyValue = r/* + this.ADMIN_FEE */;\r\n\r\n let totalAmount = monthlyValue * this.inputs.paymentTerm + balloonAmount;\r\n\r\n let interestAmount =\r\n monthlyValue * this.inputs.paymentTerm + balloonAmount - financingAmount;\r\n\r\n this.outputsMonthlyInstalment = {\r\n monthlyInstalment: this.parseTwoDecimal(monthlyValue),\r\n financeTotal: this.parseTwoDecimal(\r\n this.inputs.purchasePrice - this.inputs.depositMonthlyInstalment\r\n ),\r\n interestTotal: this.parseTwoDecimal(interestAmount),\r\n balloonTotal: this.parseTwoDecimal(balloonAmount),\r\n totalCost: this.parseTwoDecimal(totalAmount),\r\n inverseInterestRatio: this.parseTwoDecimal(\r\n ((totalAmount - interestAmount) / totalAmount) * 100\r\n ),\r\n purchasePrice: 0,\r\n };\r\n }\r\n\r\n /**\r\n * Function to handle the input from the purchase price field\r\n * @param event\r\n */\r\n public purchasePriceInput(event: any): void {\r\n this.inputs.purchasePrice = event.target.value || 0;\r\n\r\n if (\r\n this.inputs.purchasePrice >= this.staticConfig.minFinancingAmount &&\r\n this.inputs.purchasePrice <= this.staticConfig.maxFinancingAmount\r\n ) {\r\n this.staticConfig.maxDeposit = this.parseTwoDecimal(\r\n this.inputs.purchasePrice - this.staticConfig.minFinancingAmount\r\n );\r\n\r\n if (this.inputs.depositMonthlyInstalment > this.staticConfig.maxDeposit) {\r\n if (this.staticConfig.maxDeposit == 0) {\r\n this.staticConfig.maxDeposit = 1;\r\n }\r\n\r\n this.inputs.depositMonthlyInstalment =\r\n this.staticConfig.maxDeposit == 1 ? 0 : this.staticConfig.maxDeposit;\r\n }\r\n\r\n this.calculateMonthlyInstalment();\r\n } else {\r\n this.staticConfig.maxDeposit = 1;\r\n this.resetOutput();\r\n }\r\n }\r\n\r\n /**\r\n * Function to handle the input from the monthly instalment input\r\n * @param event\r\n */\r\n public monthlyInstalmentInput(event: any): void {\r\n this.inputs.monthlyInstalment = event.target.value || 0;\r\n\r\n if (\r\n this.inputs.monthlyInstalment >= this.staticConfig.minMonthlyInstalment &&\r\n this.inputs.monthlyInstalment <= this.staticConfig.maxMonthlyInstalment\r\n ) {\r\n let tempMax = this.parseTwoDecimal(\r\n this.outputsPurchasePrice.purchasePrice -\r\n this.staticConfig.minFinancingAmount\r\n );\r\n\r\n this.staticConfig.maxDeposit = tempMax >= 0 ? tempMax : 0;\r\n\r\n /* REMOVED FOR NOW */\r\n // if (this.inputs.depositPurchasePrice > this.staticConfig.maxDeposit) {\r\n // if (this.staticConfig.maxDeposit == 0) {\r\n // this.staticConfig.maxDeposit = 1;\r\n // }\r\n\r\n // this.inputs.depositPurchasePrice =\r\n // this.staticConfig.maxDeposit == 1 ? 0 : this.staticConfig.maxDeposit;\r\n // }\r\n // let lFlatMaxValue = this.parseFloat(\r\n // this.outputsPurchasePrice.purchasePrice - 30000\r\n // );\r\n\r\n // this.staticConfig.maxDeposit = lFlatMaxValue > 0 ? lFlatMaxValue : 0;\r\n\r\n // if (this.inputs.depositPurchasePrice >= this.staticConfig.maxDeposit) {\r\n // this.inputs.depositPurchasePrice =\r\n // this.staticConfig.maxDeposit == 1 ? 0 : this.staticConfig.maxDeposit;\r\n // }\r\n } else {\r\n this.staticConfig.maxDeposit = 1;\r\n this.inputs.depositMonthlyInstalment = 0;\r\n this.resetOutput();\r\n }\r\n }\r\n\r\n /**\r\n * Function to handle inputs from the other inputs to ensure limits are kept\r\n * @param event\r\n * @param inputName The name of the input\r\n * @param calculationType Whether it is a monthly instalment or purchase price calculation\r\n */\r\n public basicInput(\r\n event: any,\r\n inputName: string,\r\n calculationType: 'MONTHLY' | 'PURCHASEPRICE'\r\n ) {\r\n let value: number = parseFloat(event.target.value) || 0;\r\n\r\n let violatesLimit = false;\r\n\r\n switch (inputName) {\r\n case 'purchasePrice':\r\n if (value > this.staticConfig.maxFinancingAmount) {\r\n violatesLimit = true;\r\n }\r\n\r\n if (\r\n this.inputs.monthlyInstalment >=\r\n this.staticConfig.minMonthlyInstalment &&\r\n this.inputs.monthlyInstalment <=\r\n this.staticConfig.maxMonthlyInstalment\r\n ) {\r\n this.staticConfig.maxDeposit = this.parseTwoDecimal(\r\n this.outputsPurchasePrice.purchasePrice -\r\n this.staticConfig.minFinancingAmount\r\n );\r\n\r\n if (\r\n this.inputs.depositMonthlyInstalment > this.staticConfig.maxDeposit\r\n ) {\r\n this.inputs.depositMonthlyInstalment =\r\n this.staticConfig.maxDeposit == 1\r\n ? 0\r\n : this.staticConfig.maxDeposit;\r\n }\r\n } else {\r\n this.staticConfig.maxDeposit = 1;\r\n this.resetOutput();\r\n }\r\n\r\n break;\r\n\r\n case 'deposit':\r\n switch (calculationType) {\r\n case 'MONTHLY':\r\n if (value > this.staticConfig.maxDeposit) {\r\n violatesLimit = true;\r\n }\r\n this.inputs.depositMonthlyInstalment = value || 0;\r\n break;\r\n\r\n case 'PURCHASEPRICE':\r\n this.inputs.depositPurchasePrice = value || 0;\r\n break;\r\n }\r\n\r\n break;\r\n\r\n case 'balloonPaymentPercentage':\r\n if (value > this.staticConfig.maxBalloonRate) {\r\n violatesLimit = true;\r\n }\r\n\r\n break;\r\n\r\n case 'balloonPaymentAmount':\r\n if (value > this.staticConfig.maxBalloonAmount) {\r\n violatesLimit = true;\r\n }\r\n\r\n this.inputs.balloonPaymentAmount = value;\r\n\r\n break;\r\n\r\n case 'interestRate':\r\n if (value > this.staticConfig.maxInterestRate) {\r\n violatesLimit = true;\r\n }\r\n\r\n break;\r\n\r\n case 'monthlyInstalment':\r\n if (value > this.staticConfig.maxMonthlyInstalment) {\r\n violatesLimit = true;\r\n }\r\n\r\n this.inputs.monthlyInstalment = value;\r\n\r\n if (\r\n this.inputs.monthlyInstalment >=\r\n this.staticConfig.minMonthlyInstalment &&\r\n this.inputs.monthlyInstalment <=\r\n this.staticConfig.maxMonthlyInstalment\r\n ) {\r\n /* REMOVED FOR NOW */\r\n // let tempMax = this.parseFloat(\r\n // this.outputsPurchasePrice.purchasePrice - 30000\r\n // );\r\n // this.staticConfig.maxDeposit = tempMax >= 0 ? tempMax : 0;\r\n // if (this.inputs.depositPurchasePrice > this.staticConfig.maxDeposit) {\r\n // if (this.staticConfig.maxDeposit == 0) {\r\n // this.staticConfig.maxDeposit = 1;\r\n // }\r\n // this.inputs.depositPurchasePrice =\r\n // this.staticConfig.maxDeposit == 1\r\n // ? 0\r\n // : this.staticConfig.maxDeposit;\r\n // }\r\n // this.staticConfig.maxDeposit = this.parseFloat(\r\n // this.outputsPurchasePrice.purchasePrice - 30000\r\n // );\r\n // if (this.inputs.depositPurchasePrice > this.staticConfig.maxDeposit) {\r\n // this.inputs.depositPurchasePrice =\r\n // this.staticConfig.maxDeposit == 1\r\n // ? 0\r\n // : this.staticConfig.maxDeposit;\r\n // }\r\n } else {\r\n this.staticConfig.maxDeposit = 1;\r\n this.resetOutput();\r\n }\r\n\r\n break;\r\n }\r\n\r\n if (!violatesLimit) {\r\n switch (calculationType) {\r\n case 'MONTHLY':\r\n this.calculateMonthlyInstalment();\r\n break;\r\n\r\n case 'PURCHASEPRICE':\r\n this.calculatePurchasePrice();\r\n break;\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Function to handle the blur of basic inputs\r\n * @param event\r\n * @param inputName The name of the input\r\n * @param calculationType Whether it is a monthly instalment or purchase price calculation\r\n */\r\n public basicInputBlur(\r\n event: any,\r\n inputName: string,\r\n calculationType: 'MONTHLY' | 'PURCHASEPRICE'\r\n ): void {\r\n let value: number = parseFloat(event.target.value) || 0;\r\n\r\n switch (inputName) {\r\n case 'purchasePrice':\r\n if (value > this.staticConfig.maxFinancingAmount) {\r\n this.inputs.purchasePrice = this.staticConfig.maxFinancingAmount;\r\n } else if (value < 0) {\r\n this.inputs.purchasePrice = 0;\r\n } else {\r\n this.inputs.purchasePrice = value;\r\n }\r\n\r\n this.inputs.purchasePriceDisplay = this.formatText(\r\n this.inputs.purchasePrice || 0\r\n );\r\n\r\n break;\r\n\r\n case 'deposit':\r\n switch (calculationType) {\r\n case 'MONTHLY':\r\n if (value > this.staticConfig.maxDeposit) {\r\n this.inputs.depositMonthlyInstalment =\r\n this.staticConfig.maxDeposit;\r\n } else if (value < 0) {\r\n this.inputs.depositMonthlyInstalment = 0;\r\n } else {\r\n this.inputs.depositMonthlyInstalment = value;\r\n }\r\n\r\n this.inputs.depositMonthlyInstalmentDisplay = this.formatText(\r\n this.inputs.depositMonthlyInstalment || 0\r\n );\r\n\r\n break;\r\n case 'PURCHASEPRICE':\r\n this.inputs.depositPurchasePrice = value;\r\n\r\n if (this.inputs.depositPurchasePrice < 0) {\r\n this.inputs.depositPurchasePrice = 0;\r\n }\r\n\r\n this.inputs.depositPurchasePriceDisplay = this.formatText(\r\n this.inputs.depositPurchasePrice || 0\r\n );\r\n break;\r\n }\r\n\r\n break;\r\n\r\n case 'balloonPaymentPercentage':\r\n if (value > this.staticConfig.maxBalloonRate) {\r\n this.inputs.balloonPaymentPercentage =\r\n this.staticConfig.maxBalloonRate;\r\n }\r\n\r\n if (value < this.staticConfig.minBalloonRate) {\r\n this.inputs.balloonPaymentPercentage =\r\n this.staticConfig.minBalloonRate;\r\n }\r\n\r\n break;\r\n\r\n case 'balloonPaymentAmount':\r\n if (value > this.staticConfig.maxBalloonAmount) {\r\n this.inputs.balloonPaymentAmount = this.staticConfig.maxBalloonAmount;\r\n } else if (value < 0) {\r\n this.inputs.balloonPaymentAmount = 0;\r\n } else {\r\n this.inputs.balloonPaymentAmount = value;\r\n }\r\n\r\n this.inputs.balloonPaymentAmountDisplay = this.formatText(\r\n this.inputs.balloonPaymentAmount || 0\r\n );\r\n\r\n break;\r\n\r\n case 'interestRate':\r\n if (value > this.staticConfig.maxInterestRate) {\r\n this.inputs.interestRate = this.staticConfig.maxInterestRate;\r\n }\r\n\r\n if (value < this.staticConfig.minInterestRate) {\r\n this.inputs.interestRate = this.staticConfig.minInterestRate;\r\n }\r\n\r\n break;\r\n\r\n case 'monthlyInstalment':\r\n if (value > this.staticConfig.maxMonthlyInstalment) {\r\n this.inputs.monthlyInstalment =\r\n this.staticConfig.maxMonthlyInstalment;\r\n } else if (value < 0) {\r\n this.inputs.monthlyInstalment = 0;\r\n } else {\r\n this.inputs.monthlyInstalment = value;\r\n }\r\n\r\n this.inputs.monthlyInstalmentDisplay = this.formatText(\r\n this.inputs.monthlyInstalment || 0\r\n );\r\n\r\n break;\r\n }\r\n\r\n switch (calculationType) {\r\n case 'MONTHLY':\r\n this.calculateMonthlyInstalment();\r\n break;\r\n\r\n case 'PURCHASEPRICE':\r\n this.calculatePurchasePrice();\r\n break;\r\n }\r\n }\r\n\r\n /**\r\n * Function to update the display value after the slider adjusts\r\n * @param inputName The input's identifier\r\n */\r\n public updateSliderDisplay(inputName: string) {\r\n switch (inputName) {\r\n case 'depositMonthly':\r\n this.inputs.depositMonthlyInstalmentDisplay = this.formatText(\r\n this.inputs.depositMonthlyInstalment\r\n );\r\n break;\r\n\r\n case 'balloonAmount':\r\n this.inputs.balloonPaymentAmountDisplay = this.formatText(\r\n this.inputs.balloonPaymentAmount\r\n );\r\n break;\r\n\r\n default:\r\n break;\r\n }\r\n }\r\n\r\n /**\r\n * Function to format the text using a thousands separator\r\n * @param text The text to format\r\n * @returns The formatted text\r\n */\r\n public formatText(text: any): string {\r\n return parseFloat(text.toString()).toLocaleString();\r\n }\r\n\r\n /**\r\n * Function to remove accounting formatting\r\n * @param event The event that triggered this function\r\n * @param inputName The input's identifier\r\n * @param calculationType The type of calculation\r\n */\r\n public unformatText(\r\n event: any,\r\n inputName: string,\r\n calculationType: 'MONTHLY' | 'PURCHASEPRICE'\r\n ) {\r\n let value: number = parseFloat(event.target.value) || 0;\r\n\r\n switch (inputName) {\r\n case 'purchasePrice':\r\n this.inputs.purchasePriceDisplay = this.localeToNumber(\r\n this.inputs.purchasePriceDisplay\r\n ).toString();\r\n\r\n break;\r\n\r\n case 'deposit':\r\n switch (calculationType) {\r\n case 'MONTHLY':\r\n if (value > this.staticConfig.maxDeposit) {\r\n this.inputs.depositMonthlyInstalment =\r\n this.staticConfig.maxDeposit;\r\n }\r\n this.inputs.depositMonthlyInstalmentDisplay = this.localeToNumber(\r\n this.inputs.depositMonthlyInstalmentDisplay\r\n ).toString();\r\n\r\n break;\r\n case 'PURCHASEPRICE':\r\n this.inputs.depositPurchasePriceDisplay = this.localeToNumber(\r\n this.inputs.depositPurchasePriceDisplay\r\n ).toString();\r\n\r\n break;\r\n }\r\n\r\n break;\r\n\r\n case 'monthlyInstalment':\r\n this.inputs.monthlyInstalmentDisplay = this.localeToNumber(\r\n this.inputs.monthlyInstalmentDisplay\r\n ).toString();\r\n break;\r\n\r\n case 'balloonAmount':\r\n this.inputs.balloonPaymentAmountDisplay = this.localeToNumber(\r\n this.inputs.balloonPaymentAmountDisplay\r\n ).toString();\r\n break;\r\n }\r\n }\r\n\r\n /**\r\n * Function to convert a locale formatted string to a number\r\n * @param localeString The locale formatted string\r\n * @returns A number from the locale string\r\n */\r\n public localeToNumber(localeString: string): number {\r\n if (localeString) {\r\n return parseFloat(localeString.replace(/[^\\d.-]/g, ''));\r\n } else {\r\n return 0;\r\n }\r\n }\r\n\r\n /**\r\n * Function to reset the outputs of the calculator\r\n */\r\n private resetOutput(): void {\r\n this.outputsMonthlyInstalment = {\r\n monthlyInstalment: 0,\r\n financeTotal: 0,\r\n interestTotal: 0,\r\n balloonTotal: 0,\r\n totalCost: 0,\r\n inverseInterestRatio: 100,\r\n purchasePrice: 0,\r\n };\r\n\r\n this.outputsPurchasePrice = {\r\n monthlyInstalment: 0,\r\n financeTotal: 0,\r\n interestTotal: 0,\r\n balloonTotal: 0,\r\n totalCost: 0,\r\n inverseInterestRatio: 100,\r\n purchasePrice: 0,\r\n };\r\n }\r\n\r\n /**\r\n * Function to reset the inputs of the calculator\r\n */\r\n private resetInput(): void {\r\n let config = environment.configs[this.guid];\r\n\r\n this.inputs = {\r\n purchasePrice: 0,\r\n purchasePriceDisplay: '0',\r\n depositMonthlyInstalment: 0,\r\n depositMonthlyInstalmentDisplay: '0',\r\n depositPurchasePrice: 0,\r\n depositPurchasePriceDisplay: '0',\r\n balloonPaymentPercentage: config.defaultBalloonPercentage,\r\n balloonPaymentAmount: 0,\r\n balloonPaymentAmountDisplay: '0',\r\n interestRate: config.defaultInterestRate,\r\n paymentTerm: config.defaultPaymentTerm,\r\n monthlyInstalment: 0,\r\n monthlyInstalmentDisplay: '0',\r\n emailAddress: '',\r\n };\r\n\r\n this.staticConfig.maxDeposit = 1;\r\n }\r\n\r\n /**\r\n * Function to reset the calculator to the default state\r\n */\r\n public resetToDefault(): void {\r\n this.resetInput();\r\n this.resetOutput();\r\n }\r\n\r\n /**\r\n * Function to calculate the maximum purchase price given the inputs\r\n */\r\n public calculatePurchasePrice(): void {\r\n /* Ensure the form is valid before calculating */\r\n if (!this.isPurchasePriceFormValid()) {\r\n this.resetOutput();\r\n return;\r\n }\r\n\r\n let interestRatePercPM = this.inputs.interestRate / 100;\r\n interestRatePercPM /= 12;\r\n\r\n let cumInterest = 1;\r\n\r\n for (\r\n let repayCount = 0;\r\n repayCount < this.inputs.paymentTerm;\r\n repayCount++\r\n ) {\r\n cumInterest *= 1 + interestRatePercPM;\r\n }\r\n\r\n let financeTotal =\r\n (this.inputs.balloonPaymentAmount * interestRatePercPM +\r\n (cumInterest - 1) * this.inputs.monthlyInstalment) /\r\n (cumInterest * interestRatePercPM);\r\n\r\n let monthlyValue =\r\n ((financeTotal - this.inputs.balloonPaymentAmount / cumInterest) *\r\n cumInterest *\r\n interestRatePercPM) /\r\n (cumInterest - 1);\r\n\r\n let totalCostOfCredit =\r\n this.inputs.monthlyInstalment * this.inputs.paymentTerm +\r\n this.inputs.balloonPaymentAmount;\r\n\r\n let balloonAmount =\r\n (financeTotal * (this.inputs.balloonPaymentAmount / financeTotal)) / 100;\r\n\r\n /* If the balloon payment is outside of the limits, reset it to not influence the numbers */\r\n if (\r\n this.staticConfig.balloonPaymentLimits != null &&\r\n (this.inputs.paymentTerm >\r\n this.staticConfig.balloonPaymentLimits.maxTerm ||\r\n this.inputs.paymentTerm <\r\n this.staticConfig.balloonPaymentLimits.minTerm)\r\n ) {\r\n balloonAmount = 0;\r\n }\r\n\r\n let interestTotal = totalCostOfCredit - financeTotal;\r\n\r\n this.outputsPurchasePrice = {\r\n monthlyInstalment: this.parseTwoDecimal(monthlyValue),\r\n financeTotal: this.parseTwoDecimal(financeTotal),\r\n interestTotal: this.parseTwoDecimal(interestTotal),\r\n balloonTotal: this.parseTwoDecimal(this.inputs.balloonPaymentAmount),\r\n totalCost: this.parseTwoDecimal(totalCostOfCredit),\r\n inverseInterestRatio: this.parseTwoDecimal(\r\n ((totalCostOfCredit - interestTotal) / totalCostOfCredit) * 100\r\n ),\r\n purchasePrice: this.parseTwoDecimal(\r\n financeTotal + this.inputs.depositPurchasePrice\r\n ),\r\n };\r\n\r\n this.staticConfig.maxBalloonAmount = this.parseTwoDecimal(\r\n (this.staticConfig.maxBalloonRate / 100) *\r\n (this.outputsPurchasePrice.financeTotal -\r\n this.outputsPurchasePrice.interestTotal)\r\n );\r\n }\r\n\r\n /**\r\n * Function to validate the form\r\n * @returns Whether or not the form is valid\r\n */\r\n public isPurchasePriceFormValid(): boolean {\r\n if (\r\n this.inputs.monthlyInstalment < this.staticConfig.minMonthlyInstalment ||\r\n this.inputs.monthlyInstalment > this.staticConfig.maxMonthlyInstalment\r\n ) {\r\n return false;\r\n }\r\n\r\n if (this.inputs.depositPurchasePrice < this.staticConfig.minDeposit) {\r\n return false;\r\n }\r\n\r\n if (this.inputs.balloonPaymentAmount < this.staticConfig.minBalloonAmount) {\r\n return false;\r\n }\r\n\r\n if (\r\n this.inputs.interestRate < this.staticConfig.minInterestRate ||\r\n this.inputs.interestRate > this.staticConfig.maxInterestRate\r\n ) {\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n /**\r\n * Function to validate the form\r\n * @returns Whether or not the form is valid\r\n */\r\n public isMonthlyInstalmentFormValid(): boolean {\r\n if (this.inputs.purchasePrice < this.staticConfig.minFinancingAmount) {\r\n return false;\r\n }\r\n\r\n if (\r\n this.inputs.depositMonthlyInstalment < this.staticConfig.minDeposit ||\r\n this.inputs.depositMonthlyInstalment > this.staticConfig.maxDeposit\r\n ) {\r\n return false;\r\n }\r\n\r\n if (\r\n this.inputs.balloonPaymentPercentage < this.staticConfig.minBalloonRate ||\r\n this.inputs.balloonPaymentPercentage > this.staticConfig.maxBalloonRate\r\n ) {\r\n return false;\r\n }\r\n\r\n if (\r\n this.inputs.interestRate < this.staticConfig.minInterestRate ||\r\n this.inputs.interestRate > this.staticConfig.maxInterestRate\r\n ) {\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n /**\r\n * Function to parse a float number to a 2 decimal value\r\n * @param n The number to parse\r\n * @returns The number delimited to 2 decimals\r\n */\r\n private parseTwoDecimal(n: number) {\r\n if (n !== n) {\r\n return 0.0;\r\n }\r\n\r\n return Number.parseFloat(n.toFixed(2));\r\n }\r\n\r\n /**\r\n * Function to send an email using the input email address\r\n * @param calculationType The type of calculation\r\n */\r\n public async sendEmail(calculationType: 'MONTHLY' | 'PURCHASEPRICE'): Promise {\r\n this.isSendInProgress = true;\r\n let lMessage = '';\r\n let lSnackBarConfig: MatSnackBarConfig = {\r\n panelClass: '',\r\n duration: 3000,\r\n };\r\n let request: EmailerRqDto = {\r\n Recipient: this.inputs.emailAddress,\r\n ClientGuid: this.guid,\r\n MessageBody: '',\r\n };\r\n\r\n try {\r\n request.MessageBody = this.formatEmailBody(calculationType);\r\n\r\n let response = await this.emailService.sendMail(request);\r\n\r\n if (response.isSuccessful) {\r\n lMessage = 'Email sent';\r\n lSnackBarConfig.panelClass = 'snack-bar-success';\r\n } else {\r\n lMessage = 'Failed to send email';\r\n lSnackBarConfig.panelClass = 'snack-bar-failure';\r\n }\r\n\r\n this.isSendInProgress = false;\r\n\r\n this.snack.open(lMessage, '', lSnackBarConfig);\r\n\r\n this.$gaService.event(this.configName + '_Email', 'Communication');\r\n\r\n } catch (error) {\r\n lMessage = 'Email could not be sent at this time';\r\n lSnackBarConfig.panelClass = 'snack-bar-failure';\r\n\r\n this.snack.open(lMessage, '', lSnackBarConfig);\r\n\r\n this.isSendInProgress = false;\r\n }\r\n }\r\n\r\n /**\r\n * Function to format the body of the email\r\n * @param calculationType\r\n * @returns The body of the email\r\n */\r\n private formatEmailBody(\r\n calculationType: 'MONTHLY' | 'PURCHASEPRICE'\r\n ): string {\r\n let lBody = '';\r\n let config = environment.configs[this.guid];\r\n\r\n try {\r\n switch (calculationType) {\r\n case 'MONTHLY':\r\n // if (this.inputs.balloonPaymentPercentage) {\r\n // lBalloonSection = ` and a balloon payment of ${this.inputs.balloonPaymentPercentage}%`;\r\n // }\r\n\r\n lBody = config.smtp!.MonthlyInstalmentBody as string;\r\n\r\n lBody = lBody.replace(\r\n /{PurchasePrice}/g,\r\n `${this.staticConfig.currency}${this.inputs.purchasePriceDisplay}`\r\n );\r\n lBody = lBody.replace(\r\n /{Deposit}/g,\r\n `${this.staticConfig.currency}${this.inputs.depositMonthlyInstalmentDisplay}`\r\n );\r\n lBody = lBody.replace(\r\n /{InterestRate}/g,\r\n `${this.inputs.interestRate.toString()}%`\r\n );\r\n lBody = lBody.replace(\r\n /{MonthlyInstalment}/g,\r\n `${this.staticConfig.currency}${this.formatText(\r\n this.outputsMonthlyInstalment.monthlyInstalment\r\n )}`\r\n );\r\n lBody = lBody.replace(\r\n /{BalloonPaymentRate}/g,\r\n `${this.staticConfig.disableBalloonPayment ? '0' : this.inputs.balloonPaymentAmount}%`\r\n );\r\n lBody = lBody.replace(\r\n /{FinanceTotal}/g,\r\n `${this.staticConfig.currency}${this.formatText(\r\n this.outputsMonthlyInstalment.financeTotal\r\n )}`\r\n );\r\n lBody = lBody.replace(\r\n /{InterestTotal}/g,\r\n `${this.staticConfig.currency}${this.formatText(\r\n this.outputsMonthlyInstalment.interestTotal\r\n )}`\r\n );\r\n lBody = lBody.replace(\r\n /{TotalCostOfCredit}/g,\r\n `${this.staticConfig.currency}${this.formatText(\r\n this.outputsMonthlyInstalment.totalCost\r\n )}`\r\n );\r\n\r\n lBody = lBody.replace(\r\n /{Deposit}/g,\r\n `${this.staticConfig.currency}${this.inputs.depositMonthlyInstalmentDisplay}`\r\n );\r\n\r\n lBody = lBody.replace(\r\n /{InterestRate}/g,\r\n `${this.inputs.interestRate.toString()}%`\r\n );\r\n\r\n lBody = lBody.replace(\r\n /{MonthlyInstalment}/g,\r\n `${this.staticConfig.currency}${this.formatText(\r\n this.outputsMonthlyInstalment.monthlyInstalment\r\n )}`\r\n );\r\n\r\n lBody = lBody.replace(\r\n /{BalloonPaymentRate}/g,\r\n `${this.inputs.balloonPaymentPercentage}%`\r\n );\r\n\r\n lBody = lBody.replace(\r\n /{MonthlyInstalment}/g,\r\n `${this.staticConfig.currency}${this.inputs.monthlyInstalmentDisplay}`\r\n );\r\n lBody = lBody.replace(\r\n /{PaymentTerm}/g,\r\n `${this.inputs.paymentTerm.toString()}`\r\n );\r\n lBody = lBody.replace(\r\n /{Deposit}/g,\r\n `${this.staticConfig.currency}${this.inputs.depositPurchasePriceDisplay}`\r\n );\r\n lBody = lBody.replace(\r\n /{InterestRate}/g,\r\n `${this.inputs.interestRate.toString()}%`\r\n );\r\n lBody = lBody.replace(\r\n /{BalloonPayment}/g,\r\n `${this.staticConfig.currency}${this.staticConfig.disableBalloonPayment ? '0' : this.inputs.balloonPaymentAmountDisplay}`\r\n );\r\n lBody = lBody.replace(\r\n /{PurchasePrice}/g,\r\n `${this.staticConfig.currency}${this.formatText(\r\n this.outputsPurchasePrice.purchasePrice\r\n )}`\r\n );\r\n\r\n lBody = lBody.replace(\r\n /{InterestTotal}/g,\r\n `${this.staticConfig.currency}${this.formatText(\r\n this.outputsMonthlyInstalment.interestTotal\r\n )}`\r\n );\r\n\r\n lBody = lBody.replace(\r\n /{TotalCostOfCredit}/g,\r\n `${this.staticConfig.currency}${this.formatText(\r\n this.outputsMonthlyInstalment.totalCost\r\n )}`\r\n );\r\n\r\n // lBody = `

Finance Calculator result


For a vehicle costing a total of ${\r\n // this.staticConfig.currency\r\n // } ${\r\n // this.inputs.purchasePriceDisplay\r\n // }, and placing a deposit of ${this.staticConfig.currency} ${\r\n // this.inputs.depositMonthlyInstalmentDisplay\r\n // } with an interest rate of ${\r\n // this.inputs.interestRate\r\n // }%${lBalloonSection}, the following will be applicable:

Monthly instalments: ${\r\n // this.staticConfig.currency\r\n // } ${this.formatText(\r\n // this.outputsMonthlyInstalment.monthlyInstalment\r\n // )}
Financing amount: ${this.staticConfig.currency} ${this.formatText(\r\n // this.outputsMonthlyInstalment.financeTotal\r\n // )}
Interest amount: ${this.staticConfig.currency} ${this.formatText(\r\n // this.outputsMonthlyInstalment.interestTotal\r\n // )}
Total cost of credit: ${\r\n // this.staticConfig.currency\r\n // } ${this.formatText(this.outputsMonthlyInstalment.totalCost)}
`;\r\n\r\n break;\r\n\r\n case 'PURCHASEPRICE':\r\n // if (this.inputs.balloonPaymentAmount) {\r\n // lBalloonSection = ` and a balloon payment of ${this.staticConfig.currency} ${this.inputs.balloonPaymentAmountDisplay}`;\r\n // }\r\n\r\n lBody = config.smtp!.PurchasePriceBody as string;\r\n\r\n lBody = lBody.replace(\r\n /{MonthlyInstalment}/g,\r\n `${this.staticConfig.currency}${this.inputs.monthlyInstalmentDisplay}`\r\n );\r\n\r\n lBody = lBody.replace(\r\n /{PaymentTerm}/g,\r\n `${this.inputs.paymentTerm.toString()}`\r\n );\r\n\r\n lBody = lBody.replace(\r\n /{Deposit}/g,\r\n `${this.staticConfig.currency}${this.inputs.depositPurchasePriceDisplay}`\r\n );\r\n\r\n lBody = lBody.replace(\r\n /{InterestRate}/g,\r\n `${this.inputs.interestRate.toString()}%`\r\n );\r\n\r\n lBody = lBody.replace(\r\n /{BalloonPayment}/g,\r\n `${this.staticConfig.currency}${this.inputs.balloonPaymentAmountDisplay}`\r\n );\r\n\r\n lBody = lBody.replace(\r\n /{PurchasePrice}/g,\r\n `${this.staticConfig.currency}${this.formatText(\r\n this.outputsPurchasePrice.purchasePrice\r\n )}`\r\n );\r\n\r\n lBody = lBody.replace(\r\n /{FinanceTotal}/g,\r\n `${this.staticConfig.currency}${this.formatText(\r\n this.outputsPurchasePrice.financeTotal\r\n )}`\r\n );\r\n\r\n lBody = lBody.replace(\r\n /{InterestTotal}/g,\r\n `${this.staticConfig.currency}${this.formatText(\r\n this.outputsPurchasePrice.interestTotal\r\n )}`\r\n );\r\n\r\n lBody = lBody.replace(\r\n /{TotalCostOfCredit}/g,\r\n `${this.staticConfig.currency}${this.formatText(\r\n this.outputsPurchasePrice.totalCost\r\n )}`\r\n );\r\n\r\n // lBody = `

Finance Calculator result


By spending ${\r\n // this.staticConfig.currency\r\n // } ${this.inputs.monthlyInstalmentDisplay} per month for ${\r\n // this.inputs.paymentTerm\r\n // } months, and placing a deposit of ${this.staticConfig.currency} ${\r\n // this.inputs.depositPurchasePriceDisplay\r\n // } with an interest rate of ${\r\n // this.inputs.interestRate\r\n // }%${lBalloonSection}, you can afford the following:

Purchase price: ${\r\n // this.staticConfig.currency\r\n // } ${this.formatText(\r\n // this.outputsPurchasePrice.purchasePrice\r\n // )}
Financing amount: ${this.staticConfig.currency} ${this.formatText(\r\n // this.outputsPurchasePrice.financeTotal\r\n // )}
Interest amount: ${this.staticConfig.currency} ${this.formatText(\r\n // this.outputsPurchasePrice.interestTotal\r\n // )}
Total cost of credit: ${\r\n // this.staticConfig.currency\r\n // } ${this.formatText(this.outputsPurchasePrice.totalCost)}
`;\r\n break;\r\n }\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n\r\n return lBody;\r\n }\r\n\r\n public tabChanged(event: MatTabChangeEvent): void {\r\n this.$gaService.event(\r\n `${this.configName}_${event.tab.textLabel}`,\r\n 'Navigation'\r\n );\r\n }\r\n\r\n public checkBalloonPaymentLimits(): void {\r\n if (this.staticConfig.balloonPaymentLimits != null) {\r\n if (\r\n this.inputs.paymentTerm >\r\n this.staticConfig.balloonPaymentLimits.maxTerm ||\r\n this.inputs.paymentTerm < this.staticConfig.balloonPaymentLimits.minTerm\r\n ) {\r\n this.staticConfig.disableBalloonPayment = true;\r\n\r\n return;\r\n }\r\n }\r\n\r\n this.staticConfig.disableBalloonPayment = false;\r\n }\r\n}\r\n","
\r\n
\r\n
\r\n Vehicle Finance Calculator\r\n
\r\n \r\n \r\n
Calculate how much your monthly car instalment will be.
\r\n
\r\n \r\n
\r\n
\r\n Purchase price\r\n \r\n {{staticConfig.currency}}  \r\n \r\n \r\n \r\n Minimum purchase price is {{staticConfig.currency}} {{staticConfig.minFinancingAmount | number: '1.2-2'}}\r\n staticConfig.maxFinancingAmount\">Maximum purchase price is {{staticConfig.currency}} {{staticConfig.maxFinancingAmount | number: '1.2-2'}}\r\n \r\n
\r\n
\r\n
\r\n Deposit\r\n \r\n {{staticConfig.currency}}  \r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n Balloon payment\r\n \r\n \r\n %\r\n \r\n
\r\n \r\n \r\n Not available below {{staticConfig.balloonPaymentLimits?.minTerm}} months\r\n staticConfig.balloonPaymentLimits!.maxTerm\">Not available over {{staticConfig.balloonPaymentLimits?.maxTerm}} months\r\n \r\n
\r\n
\r\n
\r\n {{staticConfig.interestRateLabel || \"Interest rate\"}}\r\n \r\n \r\n %\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n Payment term\r\n \r\n \r\n {{term}}\r\n \r\n   months\r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n Your estimated monthly instalment will be:\r\n \r\n \r\n \r\n
{{staticConfig.currency}} {{outputsMonthlyInstalment.monthlyInstalment | number: '1.2-2'}}
\r\n
\r\n Amount to finance:\r\n {{staticConfig.currency}} {{outputsMonthlyInstalment.financeTotal | number: '1.2-2'}}\r\n
\r\n
\r\n Interest amount:\r\n {{staticConfig.currency}} {{outputsMonthlyInstalment.interestTotal | number: '1.2-2'}}\r\n
\r\n
\r\n Total cost of credit:\r\n {{staticConfig.currency}} {{outputsMonthlyInstalment.totalCost | number: '1.2-2'}}\r\n
\r\n
\r\n
\r\n
\r\n \r\n Email address\r\n \r\n send\r\n \r\n Invalid email\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
Calculate the amount you can buy for.
\r\n
\r\n
\r\n
\r\n Monthly instalment\r\n \r\n {{staticConfig.currency}}  \r\n \r\n \r\n
\r\n
\r\n
\r\n Deposit\r\n \r\n {{staticConfig.currency}}  \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n Balloon payment\r\n \r\n {{staticConfig.currency}}  \r\n \r\n \r\n
\r\n \r\n \r\n Not available below {{staticConfig.balloonPaymentLimits?.minTerm}} months\r\n staticConfig.balloonPaymentLimits!.maxTerm\">Not available over {{staticConfig.balloonPaymentLimits?.maxTerm}} months\r\n \r\n
\r\n
\r\n
\r\n {{staticConfig.interestRateLabel || \"Interest rate\"}}\r\n \r\n \r\n %\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n Payment term\r\n \r\n \r\n {{term}}\r\n \r\n   months\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n Amount I can spend:\r\n \r\n \r\n \r\n
{{staticConfig.currency}} {{outputsPurchasePrice.purchasePrice | number: '1.2-2'}}
\r\n
\r\n Amount to finance:\r\n {{staticConfig.currency}} {{outputsPurchasePrice.financeTotal | number: '1.2-2'}}\r\n
\r\n
\r\n Interest amount:\r\n {{staticConfig.currency}} {{outputsPurchasePrice.interestTotal | number: '1.2-2'}}\r\n
\r\n
\r\n Total cost of credit:\r\n {{staticConfig.currency}} {{outputsPurchasePrice.totalCost | number: '1.2-2'}}\r\n
\r\n
\r\n
\r\n
\r\n \r\n Email address\r\n \r\n send\r\n \r\n Invalid email\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
","// This file can be replaced during build by using the `fileReplacements` array.\r\n// `ng build --prod` replaces `environment.ts` with `environment.prod.ts`.\r\n// The list of file replacements can be found in `angular.json`.\r\n\r\nimport { CalculatorConfig } from 'src/app/types';\r\n\r\nexport const environment: {\r\n production: boolean;\r\n baseUrl: string;\r\n googleAnalyticsToken: string;\r\n configs: CalculatorConfig;\r\n} = {\r\n production: false,\r\n baseUrl: 'https://dev-icon.cloud:9100',\r\n googleAnalyticsToken: '',\r\n configs: {\r\n 'd7f48dcc-b71b-4be9-bfc1-954d341bf979': {\r\n name: 'Pupkewitz_Main',\r\n defaultBalloonPercentage: 0,\r\n minBalloonRate: 0,\r\n maxBalloonRate: 30,\r\n defaultInterestRate: 8,\r\n minInterestRate: 5,\r\n maxInterestRate: 20,\r\n minFinancingAmount: 30000,\r\n defaultPaymentTerm: 48,\r\n paymentTerms: [12, 24, 36, 48, 54, 60, 72],\r\n termIncrement: 12,\r\n currency: 'N$ ',\r\n maxFinancingAmount: 10000000,\r\n minMonthlyInstalment: 303.36,\r\n maxMonthlyInstalment: 926345.06,\r\n minTerm: 0,\r\n maxTerm: 0,\r\n minDeposit: 0,\r\n maxDeposit: 1,\r\n defaultDeposit: 0,\r\n minBalloonAmount: 0,\r\n maxBalloonAmount: 1,\r\n showMontlyInstalment: true,\r\n showPurchasePrice: true,\r\n showBalloonPayment: true,\r\n balloonPaymentLimits: {\r\n minTerm: 0,\r\n maxTerm: 72,\r\n },\r\n colour: '#05255C',\r\n smtp: {\r\n SecureToken: '9b49dcd6-dc4d-4823-9b46-31d4f414e95c',\r\n From: 'noreply@pupkewitz.com',\r\n Subject: 'Results of the Finance calculator',\r\n Bcc: ['motorsmarketing@pupkewitz.com'],\r\n MonthlyInstalmentBody: `Thank you for making use of the online finance calculator on the Pupkewitz Motor Division website.\r\n
\r\n
\r\n
\r\n For a vehicle costing a total of {PurchasePrice}, and placing a deposit of {Deposit} with an interest rate of {InterestRate} and a balloon payment of {BalloonPaymentRate}, the following will be applicable:\r\n
\r\n
\r\n
\r\n Monthly instalments: {MonthlyInstalment}\r\n
\r\n Financing amount: {FinanceTotal}\r\n
\r\n Interest amount: {InterestTotal}\r\n
\r\n Total cost of credit: {TotalCostOfCredit}\r\n
\r\n
\r\n
\r\n Kindly note that all calculations made on this calculator are to be used as guidelines only. It is based on the information you have provided and does not take into account monthly expenses and other factors that need consideration when purchasing a vehicle. Amounts displayed here should not be relied upon solely in making your purchase. For further information, please contact the branch of your choice and discuss final figures with the available in-house F&I.`,\r\n PurchasePriceBody: `Thank you for making use of the online finance calculator on the Pupkewitz Motor Division website.\r\n
\r\n
\r\n
\r\n For a monthly instalment of {MonthlyInstalment}, and placing a deposit of {Deposit} with an interest rate of {InterestRate} and a balloon payment of {BalloonPayment}, the following will be applicable:\r\n
\r\n
\r\n
\r\n Amount I can spend: {PurchasePrice}\r\n Amount to finance:{FinanceTotal}\r\n Interest amount:{InterestTotal}\r\n Total cost of credit:{TotalCostOfCredit}\r\n
\r\n
\r\n Kindly note that all calculations made on this calculator are to be used as guidelines only. It is based on the information you have provided and does not take into account monthly expenses and other factors that need consideration when purchasing a vehicle. Amounts displayed here should not be relied upon solely in making your purchase. For further information, please contact the branch of your choice and discuss final figures with the available in-house F&I.`,\r\n },\r\n },\r\n '0df2ba66-1e98-4758-bf68-0b407805f7b2': {\r\n name: 'Pupkewitz_Toyota',\r\n defaultBalloonPercentage: 0,\r\n minBalloonRate: 0,\r\n maxBalloonRate: 30,\r\n defaultInterestRate: 8,\r\n minInterestRate: 5,\r\n maxInterestRate: 20,\r\n minFinancingAmount: 30000,\r\n defaultPaymentTerm: 48,\r\n paymentTerms: [12, 24, 36, 48, 54, 60, 72],\r\n termIncrement: 12,\r\n currency: 'N$ ',\r\n maxFinancingAmount: 10000000,\r\n minMonthlyInstalment: 303.36,\r\n maxMonthlyInstalment: 926345.06,\r\n minTerm: 0,\r\n maxTerm: 0,\r\n minDeposit: 0,\r\n maxDeposit: 1,\r\n defaultDeposit: 0,\r\n minBalloonAmount: 0,\r\n maxBalloonAmount: 1,\r\n showMontlyInstalment: true,\r\n showPurchasePrice: true,\r\n showBalloonPayment: true,\r\n balloonPaymentLimits: {\r\n minTerm: 0,\r\n maxTerm: 72,\r\n },\r\n colour: '#E50000',\r\n smtp: {\r\n SecureToken: '9b49dcd6-dc4d-4823-9b46-31d4f414e95c',\r\n From: 'noreply@pupkewitz.com',\r\n Subject: 'Results of the Finance calculator',\r\n Bcc: ['motorsmarketing@pupkewitz.com'],\r\n MonthlyInstalmentBody: `Thank you for making use of the online finance calculator on the Pupkewitz Motor Division website.\r\n
\r\n
\r\n
\r\n For a vehicle costing a total of {PurchasePrice}, and placing a deposit of {Deposit} with an interest rate of {InterestRate} and a balloon payment of {BalloonPaymentRate}, the following will be applicable:\r\n
\r\n
\r\n
\r\n Monthly instalments: {MonthlyInstalment}\r\n
\r\n Financing amount: {FinanceTotal}\r\n
\r\n Interest amount: {InterestTotal}\r\n
\r\n Total cost of credit: {TotalCostOfCredit}\r\n
\r\n
\r\n
\r\n Kindly note that all calculations made on this calculator are to be used as guidelines only. It is based on the information you have provided and does not take into account monthly expenses and other factors that need consideration when purchasing a vehicle. Amounts displayed here should not be relied upon solely in making your purchase. For further information, please contact the branch of your choice and discuss final figures with the available in-house F&I.`,\r\n PurchasePriceBody: `Thank you for making use of the online finance calculator on the Pupkewitz Motor Division website.\r\n
\r\n
\r\n
\r\n For a monthly instalment of {MonthlyInstalment}, and placing a deposit of {Deposit} with an interest rate of {InterestRate} and a balloon payment of {BalloonPayment}, the following will be applicable:\r\n
\r\n
\r\n
\r\n Amount I can spend: {PurchasePrice}\r\n Amount to finance:{FinanceTotal}\r\n Interest amount:{InterestTotal}\r\n Total cost of credit:{TotalCostOfCredit}\r\n
\r\n
\r\n Kindly note that all calculations made on this calculator are to be used as guidelines only. It is based on the information you have provided and does not take into account monthly expenses and other factors that need consideration when purchasing a vehicle. Amounts displayed here should not be relied upon solely in making your purchase. For further information, please contact the branch of your choice and discuss final figures with the available in-house F&I.`,\r\n },\r\n },\r\n 'a976e0c8-639d-424c-b72b-d967460b7397': {\r\n name: 'Pupkewitz_Lexus',\r\n defaultBalloonPercentage: 0,\r\n minBalloonRate: 0,\r\n maxBalloonRate: 30,\r\n defaultInterestRate: 8,\r\n minInterestRate: 5,\r\n maxInterestRate: 20,\r\n minFinancingAmount: 30000,\r\n defaultPaymentTerm: 48,\r\n paymentTerms: [12, 24, 36, 48, 54, 60, 72],\r\n termIncrement: 12,\r\n currency: 'N$ ',\r\n maxFinancingAmount: 10000000,\r\n minMonthlyInstalment: 303.36,\r\n maxMonthlyInstalment: 926345.06,\r\n minTerm: 0,\r\n maxTerm: 0,\r\n minDeposit: 0,\r\n maxDeposit: 1,\r\n defaultDeposit: 0,\r\n minBalloonAmount: 0,\r\n maxBalloonAmount: 1,\r\n showMontlyInstalment: true,\r\n showPurchasePrice: true,\r\n showBalloonPayment: true,\r\n balloonPaymentLimits: {\r\n minTerm: 0,\r\n maxTerm: 72,\r\n },\r\n colour: '#292929',\r\n smtp: {\r\n SecureToken: '9b49dcd6-dc4d-4823-9b46-31d4f414e95c',\r\n From: 'noreply@pupkewitz.com',\r\n Subject: 'Results of the Finance calculator',\r\n Bcc: ['motorsmarketing@pupkewitz.com'],\r\n MonthlyInstalmentBody: `Thank you for making use of the online finance calculator on the Pupkewitz Motor Division website.\r\n
\r\n
\r\n
\r\n For a vehicle costing a total of {PurchasePrice}, and placing a deposit of {Deposit} with an interest rate of {InterestRate} and a balloon payment of {BalloonPaymentRate}, the following will be applicable:\r\n
\r\n
\r\n
\r\n Monthly instalments: {MonthlyInstalment}\r\n
\r\n Financing amount: {FinanceTotal}\r\n
\r\n Interest amount: {InterestTotal}\r\n
\r\n Total cost of credit: {TotalCostOfCredit}\r\n
\r\n
\r\n
\r\n Kindly note that all calculations made on this calculator are to be used as guidelines only. It is based on the information you have provided and does not take into account monthly expenses and other factors that need consideration when purchasing a vehicle. Amounts displayed here should not be relied upon solely in making your purchase. For further information, please contact the branch of your choice and discuss final figures with the available in-house F&I.`,\r\n PurchasePriceBody: `Thank you for making use of the online finance calculator on the Pupkewitz Motor Division website.\r\n
\r\n
\r\n
\r\n For a monthly instalment of {MonthlyInstalment}, and placing a deposit of {Deposit} with an interest rate of {InterestRate} and a balloon payment of {BalloonPayment}, the following will be applicable:\r\n
\r\n
\r\n
\r\n Amount I can spend: {PurchasePrice}\r\n Amount to finance:{FinanceTotal}\r\n Interest amount:{InterestTotal}\r\n Total cost of credit:{TotalCostOfCredit}\r\n
\r\n
\r\n Kindly note that all calculations made on this calculator are to be used as guidelines only. It is based on the information you have provided and does not take into account monthly expenses and other factors that need consideration when purchasing a vehicle. Amounts displayed here should not be relied upon solely in making your purchase. For further information, please contact the branch of your choice and discuss final figures with the available in-house F&I.`,\r\n },\r\n },\r\n 'c0dd3f48-7d60-4bfb-9c86-b12bd89bc4f0': {\r\n name: 'Pupkewitz_Honda',\r\n defaultBalloonPercentage: 0,\r\n minBalloonRate: 0,\r\n maxBalloonRate: 30,\r\n defaultInterestRate: 8,\r\n minInterestRate: 5,\r\n maxInterestRate: 20,\r\n minFinancingAmount: 30000,\r\n defaultPaymentTerm: 48,\r\n paymentTerms: [12, 24, 36, 48, 54, 60, 72],\r\n termIncrement: 12,\r\n currency: 'N$ ',\r\n maxFinancingAmount: 10000000,\r\n minMonthlyInstalment: 303.36,\r\n maxMonthlyInstalment: 926345.06,\r\n minTerm: 0,\r\n maxTerm: 0,\r\n minDeposit: 0,\r\n maxDeposit: 1,\r\n defaultDeposit: 0,\r\n minBalloonAmount: 0,\r\n maxBalloonAmount: 1,\r\n showMontlyInstalment: true,\r\n showPurchasePrice: true,\r\n showBalloonPayment: true,\r\n balloonPaymentLimits: {\r\n minTerm: 0,\r\n maxTerm: 72,\r\n },\r\n colour: '#DC182D',\r\n smtp: {\r\n SecureToken: '9b49dcd6-dc4d-4823-9b46-31d4f414e95c',\r\n From: 'noreply@pupkewitz.com',\r\n Subject: 'Results of the Finance calculator',\r\n Bcc: ['motorsmarketing@pupkewitz.com'],\r\n MonthlyInstalmentBody: `Thank you for making use of the online finance calculator on the Pupkewitz Motor Division website.\r\n
\r\n
\r\n
\r\n For a vehicle costing a total of {PurchasePrice}, and placing a deposit of {Deposit} with an interest rate of {InterestRate} and a balloon payment of {BalloonPaymentRate}, the following will be applicable:\r\n
\r\n
\r\n
\r\n Monthly instalments: {MonthlyInstalment}\r\n
\r\n Financing amount: {FinanceTotal}\r\n
\r\n Interest amount: {InterestTotal}\r\n
\r\n Total cost of credit: {TotalCostOfCredit}\r\n
\r\n
\r\n
\r\n Kindly note that all calculations made on this calculator are to be used as guidelines only. It is based on the information you have provided and does not take into account monthly expenses and other factors that need consideration when purchasing a vehicle. Amounts displayed here should not be relied upon solely in making your purchase. For further information, please contact the branch of your choice and discuss final figures with the available in-house F&I.`,\r\n PurchasePriceBody: `Thank you for making use of the online finance calculator on the Pupkewitz Motor Division website.\r\n
\r\n
\r\n
\r\n For a monthly instalment of {MonthlyInstalment}, and placing a deposit of {Deposit} with an interest rate of {InterestRate} and a balloon payment of {BalloonPayment}, the following will be applicable:\r\n
\r\n
\r\n
\r\n Amount I can spend: {PurchasePrice}\r\n Amount to finance:{FinanceTotal}\r\n Interest amount:{InterestTotal}\r\n Total cost of credit:{TotalCostOfCredit}\r\n
\r\n
\r\n Kindly note that all calculations made on this calculator are to be used as guidelines only. It is based on the information you have provided and does not take into account monthly expenses and other factors that need consideration when purchasing a vehicle. Amounts displayed here should not be relied upon solely in making your purchase. For further information, please contact the branch of your choice and discuss final figures with the available in-house F&I.`,\r\n },\r\n },\r\n '483e5d0b-57f8-4896-adbb-1d9b485d1ae9': {\r\n name: 'Pupkewitz_Nissan',\r\n defaultBalloonPercentage: 0,\r\n minBalloonRate: 0,\r\n maxBalloonRate: 30,\r\n defaultInterestRate: 8,\r\n minInterestRate: 5,\r\n maxInterestRate: 20,\r\n minFinancingAmount: 30000,\r\n defaultPaymentTerm: 48,\r\n paymentTerms: [12, 24, 36, 48, 54, 60, 72],\r\n termIncrement: 12,\r\n currency: 'N$ ',\r\n maxFinancingAmount: 10000000,\r\n minMonthlyInstalment: 303.36,\r\n maxMonthlyInstalment: 926345.06,\r\n minTerm: 0,\r\n maxTerm: 0,\r\n minDeposit: 0,\r\n maxDeposit: 1,\r\n defaultDeposit: 0,\r\n minBalloonAmount: 0,\r\n maxBalloonAmount: 1,\r\n showMontlyInstalment: true,\r\n showPurchasePrice: true,\r\n showBalloonPayment: true,\r\n balloonPaymentLimits: {\r\n minTerm: 0,\r\n maxTerm: 72,\r\n },\r\n colour: '#C3002E',\r\n smtp: {\r\n SecureToken: '9b49dcd6-dc4d-4823-9b46-31d4f414e95c',\r\n From: 'noreply@pupkewitz.com',\r\n Subject: 'Results of the Finance calculator',\r\n Bcc: ['motorsmarketing@pupkewitz.com'],\r\n MonthlyInstalmentBody: `Thank you for making use of the online finance calculator on the Pupkewitz Motor Division website.\r\n
\r\n
\r\n
\r\n For a vehicle costing a total of {PurchasePrice}, and placing a deposit of {Deposit} with an interest rate of {InterestRate} and a balloon payment of {BalloonPaymentRate}, the following will be applicable:\r\n
\r\n
\r\n
\r\n Monthly instalments: {MonthlyInstalment}\r\n
\r\n Financing amount: {FinanceTotal}\r\n
\r\n Interest amount: {InterestTotal}\r\n
\r\n Total cost of credit: {TotalCostOfCredit}\r\n
\r\n
\r\n
\r\n Kindly note that all calculations made on this calculator are to be used as guidelines only. It is based on the information you have provided and does not take into account monthly expenses and other factors that need consideration when purchasing a vehicle. Amounts displayed here should not be relied upon solely in making your purchase. For further information, please contact the branch of your choice and discuss final figures with the available in-house F&I.`,\r\n PurchasePriceBody: `Thank you for making use of the online finance calculator on the Pupkewitz Motor Division website.\r\n
\r\n
\r\n
\r\n For a monthly instalment of {MonthlyInstalment}, and placing a deposit of {Deposit} with an interest rate of {InterestRate} and a balloon payment of {BalloonPayment}, the following will be applicable:\r\n
\r\n
\r\n
\r\n Amount I can spend: {PurchasePrice}\r\n Amount to finance:{FinanceTotal}\r\n Interest amount:{InterestTotal}\r\n Total cost of credit:{TotalCostOfCredit}\r\n
\r\n
\r\n Kindly note that all calculations made on this calculator are to be used as guidelines only. It is based on the information you have provided and does not take into account monthly expenses and other factors that need consideration when purchasing a vehicle. Amounts displayed here should not be relied upon solely in making your purchase. For further information, please contact the branch of your choice and discuss final figures with the available in-house F&I.`,\r\n },\r\n },\r\n 'c8bf397c-b525-4064-af60-651948ae964f': {\r\n name: 'Pupkewitz_Mini',\r\n defaultBalloonPercentage: 0,\r\n minBalloonRate: 0,\r\n maxBalloonRate: 30,\r\n defaultInterestRate: 8,\r\n minInterestRate: 5,\r\n maxInterestRate: 20,\r\n minFinancingAmount: 30000,\r\n defaultPaymentTerm: 48,\r\n paymentTerms: [12, 24, 36, 48, 54, 60, 72],\r\n termIncrement: 12,\r\n currency: 'N$ ',\r\n maxFinancingAmount: 10000000,\r\n minMonthlyInstalment: 303.36,\r\n maxMonthlyInstalment: 926345.06,\r\n minTerm: 0,\r\n maxTerm: 0,\r\n minDeposit: 0,\r\n maxDeposit: 1,\r\n defaultDeposit: 0,\r\n minBalloonAmount: 0,\r\n maxBalloonAmount: 1,\r\n showMontlyInstalment: true,\r\n showPurchasePrice: true,\r\n showBalloonPayment: true,\r\n balloonPaymentLimits: {\r\n minTerm: 0,\r\n maxTerm: 72,\r\n },\r\n colour: '#000000',\r\n smtp: {\r\n SecureToken: '9b49dcd6-dc4d-4823-9b46-31d4f414e95c',\r\n From: 'noreply@pupkewitz.com',\r\n Subject: 'Results of the Finance calculator',\r\n Bcc: ['motorsmarketing@pupkewitz.com'],\r\n MonthlyInstalmentBody: `Thank you for making use of the online finance calculator on the Pupkewitz Motor Division website.\r\n
\r\n
\r\n
\r\n For a vehicle costing a total of {PurchasePrice}, and placing a deposit of {Deposit} with an interest rate of {InterestRate} and a balloon payment of {BalloonPaymentRate}, the following will be applicable:\r\n
\r\n
\r\n
\r\n Monthly instalments: {MonthlyInstalment}\r\n
\r\n Financing amount: {FinanceTotal}\r\n
\r\n Interest amount: {InterestTotal}\r\n
\r\n Total cost of credit: {TotalCostOfCredit}\r\n
\r\n
\r\n
\r\n Kindly note that all calculations made on this calculator are to be used as guidelines only. It is based on the information you have provided and does not take into account monthly expenses and other factors that need consideration when purchasing a vehicle. Amounts displayed here should not be relied upon solely in making your purchase. For further information, please contact the branch of your choice and discuss final figures with the available in-house F&I.`,\r\n PurchasePriceBody: `Thank you for making use of the online finance calculator on the Pupkewitz Motor Division website.\r\n
\r\n
\r\n
\r\n For a monthly instalment of {MonthlyInstalment}, and placing a deposit of {Deposit} with an interest rate of {InterestRate} and a balloon payment of {BalloonPayment}, the following will be applicable:\r\n
\r\n
\r\n
\r\n Amount I can spend: {PurchasePrice}\r\n Amount to finance:{FinanceTotal}\r\n Interest amount:{InterestTotal}\r\n Total cost of credit:{TotalCostOfCredit}\r\n
\r\n
\r\n Kindly note that all calculations made on this calculator are to be used as guidelines only. It is based on the information you have provided and does not take into account monthly expenses and other factors that need consideration when purchasing a vehicle. Amounts displayed here should not be relied upon solely in making your purchase. For further information, please contact the branch of your choice and discuss final figures with the available in-house F&I.`,\r\n },\r\n },\r\n 'c224bcb8-3f83-4c2a-b26b-13b9ae0d79cc': {\r\n name: 'Pupkewitz_BMW',\r\n defaultBalloonPercentage: 0,\r\n minBalloonRate: 0,\r\n maxBalloonRate: 30,\r\n defaultInterestRate: 8,\r\n minInterestRate: 5,\r\n maxInterestRate: 20,\r\n minFinancingAmount: 30000,\r\n defaultPaymentTerm: 48,\r\n paymentTerms: [12, 24, 36, 48, 54, 60, 72],\r\n termIncrement: 12,\r\n currency: 'N$ ',\r\n maxFinancingAmount: 10000000,\r\n minMonthlyInstalment: 303.36,\r\n maxMonthlyInstalment: 926345.06,\r\n minTerm: 0,\r\n maxTerm: 0,\r\n minDeposit: 0,\r\n maxDeposit: 1,\r\n defaultDeposit: 0,\r\n minBalloonAmount: 0,\r\n maxBalloonAmount: 1,\r\n showMontlyInstalment: true,\r\n showPurchasePrice: true,\r\n showBalloonPayment: true,\r\n balloonPaymentLimits: {\r\n minTerm: 0,\r\n maxTerm: 72,\r\n },\r\n colour: '#1C69D4',\r\n smtp: {\r\n SecureToken: '9b49dcd6-dc4d-4823-9b46-31d4f414e95c',\r\n From: 'noreply@pupkewitz.com',\r\n Subject: 'Results of the Finance calculator',\r\n Bcc: ['motorsmarketing@pupkewitz.com'],\r\n MonthlyInstalmentBody: `Thank you for making use of the online finance calculator on the Pupkewitz Motor Division website.\r\n
\r\n
\r\n
\r\n For a vehicle costing a total of {PurchasePrice}, and placing a deposit of {Deposit} with an interest rate of {InterestRate} and a balloon payment of {BalloonPaymentRate}, the following will be applicable:\r\n
\r\n
\r\n
\r\n Monthly instalments: {MonthlyInstalment}\r\n
\r\n Financing amount: {FinanceTotal}\r\n
\r\n Interest amount: {InterestTotal}\r\n
\r\n Total cost of credit: {TotalCostOfCredit}\r\n
\r\n
\r\n
\r\n Kindly note that all calculations made on this calculator are to be used as guidelines only. It is based on the information you have provided and does not take into account monthly expenses and other factors that need consideration when purchasing a vehicle. Amounts displayed here should not be relied upon solely in making your purchase. For further information, please contact the branch of your choice and discuss final figures with the available in-house F&I.`,\r\n PurchasePriceBody: `Thank you for making use of the online finance calculator on the Pupkewitz Motor Division website.\r\n
\r\n
\r\n
\r\n For a monthly instalment of {MonthlyInstalment}, and placing a deposit of {Deposit} with an interest rate of {InterestRate} and a balloon payment of {BalloonPayment}, the following will be applicable:\r\n
\r\n
\r\n
\r\n Amount I can spend: {PurchasePrice}\r\n Amount to finance:{FinanceTotal}\r\n Interest amount:{InterestTotal}\r\n Total cost of credit:{TotalCostOfCredit}\r\n
\r\n
\r\n Kindly note that all calculations made on this calculator are to be used as guidelines only. It is based on the information you have provided and does not take into account monthly expenses and other factors that need consideration when purchasing a vehicle. Amounts displayed here should not be relied upon solely in making your purchase. For further information, please contact the branch of your choice and discuss final figures with the available in-house F&I.`,\r\n },\r\n },\r\n '50f4b09c-a4d0-4e29-9fa8-9f6b20b0b946': {\r\n name: 'Pupkewitz_GWM',\r\n defaultBalloonPercentage: 0,\r\n minBalloonRate: 0,\r\n maxBalloonRate: 30,\r\n defaultInterestRate: 8,\r\n minInterestRate: 5,\r\n maxInterestRate: 20,\r\n minFinancingAmount: 30000,\r\n defaultPaymentTerm: 48,\r\n paymentTerms: [12, 24, 36, 48, 54, 60, 72],\r\n termIncrement: 12,\r\n currency: 'N$ ',\r\n maxFinancingAmount: 10000000,\r\n minMonthlyInstalment: 303.36,\r\n maxMonthlyInstalment: 926345.06,\r\n minTerm: 0,\r\n maxTerm: 0,\r\n minDeposit: 0,\r\n maxDeposit: 1,\r\n defaultDeposit: 0,\r\n minBalloonAmount: 0,\r\n maxBalloonAmount: 1,\r\n showMontlyInstalment: true,\r\n showPurchasePrice: true,\r\n showBalloonPayment: true,\r\n balloonPaymentLimits: {\r\n minTerm: 0,\r\n maxTerm: 72,\r\n },\r\n colour: '#D71921',\r\n smtp: {\r\n SecureToken: '9b49dcd6-dc4d-4823-9b46-31d4f414e95c',\r\n From: 'noreply@pupkewitz.com',\r\n Subject: 'Results of the Finance calculator',\r\n Bcc: ['motorsmarketing@pupkewitz.com'],\r\n MonthlyInstalmentBody: `Thank you for making use of the online finance calculator on the Pupkewitz Motor Division website.\r\n
\r\n
\r\n
\r\n For a vehicle costing a total of {PurchasePrice}, and placing a deposit of {Deposit} with an interest rate of {InterestRate} and a balloon payment of {BalloonPaymentRate}, the following will be applicable:\r\n
\r\n
\r\n
\r\n Monthly instalments: {MonthlyInstalment}\r\n
\r\n Financing amount: {FinanceTotal}\r\n
\r\n Interest amount: {InterestTotal}\r\n
\r\n Total cost of credit: {TotalCostOfCredit}\r\n
\r\n
\r\n
\r\n Kindly note that all calculations made on this calculator are to be used as guidelines only. It is based on the information you have provided and does not take into account monthly expenses and other factors that need consideration when purchasing a vehicle. Amounts displayed here should not be relied upon solely in making your purchase. For further information, please contact the branch of your choice and discuss final figures with the available in-house F&I.`,\r\n PurchasePriceBody: `Thank you for making use of the online finance calculator on the Pupkewitz Motor Division website.\r\n
\r\n
\r\n
\r\n For a monthly instalment of {MonthlyInstalment}, and placing a deposit of {Deposit} with an interest rate of {InterestRate} and a balloon payment of {BalloonPayment}, the following will be applicable:\r\n
\r\n
\r\n
\r\n Amount I can spend: {PurchasePrice}\r\n Amount to finance:{FinanceTotal}\r\n Interest amount:{InterestTotal}\r\n Total cost of credit:{TotalCostOfCredit}\r\n
\r\n
\r\n Kindly note that all calculations made on this calculator are to be used as guidelines only. It is based on the information you have provided and does not take into account monthly expenses and other factors that need consideration when purchasing a vehicle. Amounts displayed here should not be relied upon solely in making your purchase. For further information, please contact the branch of your choice and discuss final figures with the available in-house F&I.`,\r\n },\r\n },\r\n 'dba8969c-2979-4b5c-b33a-707acfb2cf00': {\r\n name: 'Pupkewitz_Hino',\r\n defaultBalloonPercentage: 0,\r\n minBalloonRate: 0,\r\n maxBalloonRate: 30,\r\n defaultInterestRate: 8,\r\n minInterestRate: 5,\r\n maxInterestRate: 20,\r\n minFinancingAmount: 30000,\r\n defaultPaymentTerm: 48,\r\n paymentTerms: [12, 24, 36, 48, 54, 60, 72],\r\n termIncrement: 12,\r\n currency: 'N$ ',\r\n maxFinancingAmount: 10000000,\r\n minMonthlyInstalment: 303.36,\r\n maxMonthlyInstalment: 926345.06,\r\n minTerm: 0,\r\n maxTerm: 0,\r\n minDeposit: 0,\r\n maxDeposit: 1,\r\n defaultDeposit: 0,\r\n minBalloonAmount: 0,\r\n maxBalloonAmount: 1,\r\n showMontlyInstalment: true,\r\n showPurchasePrice: true,\r\n showBalloonPayment: true,\r\n balloonPaymentLimits: {\r\n minTerm: 0,\r\n maxTerm: 72,\r\n },\r\n colour: '#353535',\r\n smtp: {\r\n SecureToken: '9b49dcd6-dc4d-4823-9b46-31d4f414e95c',\r\n From: 'noreply@pupkewitz.com',\r\n Subject: 'Results of the Finance calculator',\r\n Bcc: ['motorsmarketing@pupkewitz.com'],\r\n MonthlyInstalmentBody: `Thank you for making use of the online finance calculator on the Pupkewitz Motor Division website.\r\n
\r\n
\r\n
\r\n For a vehicle costing a total of {PurchasePrice}, and placing a deposit of {Deposit} with an interest rate of {InterestRate} and a balloon payment of {BalloonPaymentRate}, the following will be applicable:\r\n
\r\n
\r\n
\r\n Monthly instalments: {MonthlyInstalment}\r\n
\r\n Financing amount: {FinanceTotal}\r\n
\r\n Interest amount: {InterestTotal}\r\n
\r\n Total cost of credit: {TotalCostOfCredit}\r\n
\r\n
\r\n
\r\n Kindly note that all calculations made on this calculator are to be used as guidelines only. It is based on the information you have provided and does not take into account monthly expenses and other factors that need consideration when purchasing a vehicle. Amounts displayed here should not be relied upon solely in making your purchase. For further information, please contact the branch of your choice and discuss final figures with the available in-house F&I.`,\r\n PurchasePriceBody: `Thank you for making use of the online finance calculator on the Pupkewitz Motor Division website.\r\n
\r\n
\r\n
\r\n For a monthly instalment of {MonthlyInstalment}, and placing a deposit of {Deposit} with an interest rate of {InterestRate} and a balloon payment of {BalloonPayment}, the following will be applicable:\r\n
\r\n
\r\n
\r\n Amount I can spend: {PurchasePrice}\r\n Amount to finance:{FinanceTotal}\r\n Interest amount:{InterestTotal}\r\n Total cost of credit:{TotalCostOfCredit}\r\n
\r\n
\r\n Kindly note that all calculations made on this calculator are to be used as guidelines only. It is based on the information you have provided and does not take into account monthly expenses and other factors that need consideration when purchasing a vehicle. Amounts displayed here should not be relied upon solely in making your purchase. For further information, please contact the branch of your choice and discuss final figures with the available in-house F&I.`,\r\n },\r\n },\r\n 'b7329717-1530-4de6-9d01-856b048c3ece': {\r\n name: 'Pupkewitz_Haval',\r\n defaultBalloonPercentage: 0,\r\n minBalloonRate: 0,\r\n maxBalloonRate: 30,\r\n defaultInterestRate: 8,\r\n minInterestRate: 5,\r\n maxInterestRate: 20,\r\n minFinancingAmount: 30000,\r\n defaultPaymentTerm: 48,\r\n paymentTerms: [12, 24, 36, 48, 54, 60, 72],\r\n termIncrement: 12,\r\n currency: 'N$ ',\r\n maxFinancingAmount: 10000000,\r\n minMonthlyInstalment: 303.36,\r\n maxMonthlyInstalment: 926345.06,\r\n minTerm: 0,\r\n maxTerm: 0,\r\n minDeposit: 0,\r\n maxDeposit: 1,\r\n defaultDeposit: 0,\r\n minBalloonAmount: 0,\r\n maxBalloonAmount: 1,\r\n showMontlyInstalment: true,\r\n showPurchasePrice: true,\r\n showBalloonPayment: true,\r\n balloonPaymentLimits: {\r\n minTerm: 0,\r\n maxTerm: 72,\r\n },\r\n colour: '#D21627',\r\n smtp: {\r\n SecureToken: '9b49dcd6-dc4d-4823-9b46-31d4f414e95c',\r\n From: 'noreply@pupkewitz.com',\r\n Subject: 'Results of the Finance calculator',\r\n Bcc: ['motorsmarketing@pupkewitz.com'],\r\n MonthlyInstalmentBody: `Thank you for making use of the online finance calculator on the Pupkewitz Motor Division website.\r\n
\r\n
\r\n
\r\n For a vehicle costing a total of {PurchasePrice}, and placing a deposit of {Deposit} with an interest rate of {InterestRate} and a balloon payment of {BalloonPaymentRate}, the following will be applicable:\r\n
\r\n
\r\n
\r\n Monthly instalments: {MonthlyInstalment}\r\n
\r\n Financing amount: {FinanceTotal}\r\n
\r\n Interest amount: {InterestTotal}\r\n
\r\n Total cost of credit: {TotalCostOfCredit}\r\n
\r\n
\r\n
\r\n Kindly note that all calculations made on this calculator are to be used as guidelines only. It is based on the information you have provided and does not take into account monthly expenses and other factors that need consideration when purchasing a vehicle. Amounts displayed here should not be relied upon solely in making your purchase. For further information, please contact the branch of your choice and discuss final figures with the available in-house F&I.`,\r\n PurchasePriceBody: `Thank you for making use of the online finance calculator on the Pupkewitz Motor Division website.\r\n
\r\n
\r\n
\r\n For a monthly instalment of {MonthlyInstalment}, and placing a deposit of {Deposit} with an interest rate of {InterestRate} and a balloon payment of {BalloonPayment}, the following will be applicable:\r\n
\r\n
\r\n
\r\n Amount I can spend: {PurchasePrice}\r\n Amount to finance:{FinanceTotal}\r\n Interest amount:{InterestTotal}\r\n Total cost of credit:{TotalCostOfCredit}\r\n
\r\n
\r\n Kindly note that all calculations made on this calculator are to be used as guidelines only. It is based on the information you have provided and does not take into account monthly expenses and other factors that need consideration when purchasing a vehicle. Amounts displayed here should not be relied upon solely in making your purchase. For further information, please contact the branch of your choice and discuss final figures with the available in-house F&I.`,\r\n },\r\n },\r\n '475aafbf-26d3-4b6c-b72b-94b636d92221': {\r\n name: 'Pupkewitz_Datsun',\r\n defaultBalloonPercentage: 0,\r\n minBalloonRate: 0,\r\n maxBalloonRate: 30,\r\n defaultInterestRate: 8,\r\n minInterestRate: 5,\r\n maxInterestRate: 20,\r\n minFinancingAmount: 30000,\r\n defaultPaymentTerm: 48,\r\n paymentTerms: [12, 24, 36, 48, 54, 60, 72],\r\n termIncrement: 12,\r\n currency: 'N$ ',\r\n maxFinancingAmount: 10000000,\r\n minMonthlyInstalment: 303.36,\r\n maxMonthlyInstalment: 926345.06,\r\n minTerm: 0,\r\n maxTerm: 0,\r\n minDeposit: 0,\r\n maxDeposit: 1,\r\n defaultDeposit: 0,\r\n minBalloonAmount: 0,\r\n maxBalloonAmount: 1,\r\n showMontlyInstalment: true,\r\n showPurchasePrice: true,\r\n showBalloonPayment: true,\r\n balloonPaymentLimits: {\r\n minTerm: 0,\r\n maxTerm: 72,\r\n },\r\n colour: '#CC092F',\r\n smtp: {\r\n SecureToken: '9b49dcd6-dc4d-4823-9b46-31d4f414e95c',\r\n From: 'noreply@pupkewitz.com',\r\n Subject: 'Results of the Finance calculator',\r\n Bcc: ['motorsmarketing@pupkewitz.com'],\r\n MonthlyInstalmentBody: `Thank you for making use of the online finance calculator on the Pupkewitz Motor Division website.\r\n
\r\n
\r\n
\r\n For a vehicle costing a total of {PurchasePrice}, and placing a deposit of {Deposit} with an interest rate of {InterestRate} and a balloon payment of {BalloonPaymentRate}, the following will be applicable:\r\n
\r\n
\r\n
\r\n Monthly instalments: {MonthlyInstalment}\r\n
\r\n Financing amount: {FinanceTotal}\r\n
\r\n Interest amount: {InterestTotal}\r\n
\r\n Total cost of credit: {TotalCostOfCredit}\r\n
\r\n
\r\n
\r\n Kindly note that all calculations made on this calculator are to be used as guidelines only. It is based on the information you have provided and does not take into account monthly expenses and other factors that need consideration when purchasing a vehicle. Amounts displayed here should not be relied upon solely in making your purchase. For further information, please contact the branch of your choice and discuss final figures with the available in-house F&I.`,\r\n PurchasePriceBody: `Thank you for making use of the online finance calculator on the Pupkewitz Motor Division website.\r\n
\r\n
\r\n
\r\n For a monthly instalment of {MonthlyInstalment}, and placing a deposit of {Deposit} with an interest rate of {InterestRate} and a balloon payment of {BalloonPayment}, the following will be applicable:\r\n
\r\n
\r\n
\r\n Amount I can spend: {PurchasePrice}\r\n Amount to finance:{FinanceTotal}\r\n Interest amount:{InterestTotal}\r\n Total cost of credit:{TotalCostOfCredit}\r\n
\r\n
\r\n Kindly note that all calculations made on this calculator are to be used as guidelines only. It is based on the information you have provided and does not take into account monthly expenses and other factors that need consideration when purchasing a vehicle. Amounts displayed here should not be relied upon solely in making your purchase. For further information, please contact the branch of your choice and discuss final figures with the available in-house F&I.`,\r\n },\r\n },\r\n 'a05ced0f-a9f9-4f96-8c0c-eaf8b9c927aa': {\r\n name: 'Pupkewitz_Volkswagen',\r\n defaultBalloonPercentage: 0,\r\n minBalloonRate: 0,\r\n maxBalloonRate: 30,\r\n defaultInterestRate: 8,\r\n minInterestRate: 5,\r\n maxInterestRate: 20,\r\n minFinancingAmount: 30000,\r\n defaultPaymentTerm: 48,\r\n paymentTerms: [12, 24, 36, 48, 54, 60, 72],\r\n termIncrement: 12,\r\n currency: 'N$ ',\r\n maxFinancingAmount: 10000000,\r\n minMonthlyInstalment: 303.36,\r\n maxMonthlyInstalment: 926345.06,\r\n minTerm: 0,\r\n maxTerm: 0,\r\n minDeposit: 0,\r\n maxDeposit: 1,\r\n defaultDeposit: 0,\r\n minBalloonAmount: 0,\r\n maxBalloonAmount: 1,\r\n showMontlyInstalment: true,\r\n showPurchasePrice: true,\r\n showBalloonPayment: true,\r\n balloonPaymentLimits: {\r\n minTerm: 0,\r\n maxTerm: 72,\r\n },\r\n colour: '#001E50',\r\n smtp: {\r\n SecureToken: '9b49dcd6-dc4d-4823-9b46-31d4f414e95c',\r\n From: 'noreply@pupkewitz.com',\r\n Subject: 'Results of the Finance calculator',\r\n Bcc: ['motorsmarketing@pupkewitz.com'],\r\n MonthlyInstalmentBody: `Thank you for making use of the online finance calculator on the Pupkewitz Motor Division website.\r\n
\r\n
\r\n
\r\n For a vehicle costing a total of {PurchasePrice}, and placing a deposit of {Deposit} with an interest rate of {InterestRate} and a balloon payment of {BalloonPaymentRate}, the following will be applicable:\r\n
\r\n
\r\n
\r\n Monthly instalments: {MonthlyInstalment}\r\n
\r\n Financing amount: {FinanceTotal}\r\n
\r\n Interest amount: {InterestTotal}\r\n
\r\n Total cost of credit: {TotalCostOfCredit}\r\n
\r\n
\r\n
\r\n Kindly note that all calculations made on this calculator are to be used as guidelines only. It is based on the information you have provided and does not take into account monthly expenses and other factors that need consideration when purchasing a vehicle. Amounts displayed here should not be relied upon solely in making your purchase. For further information, please contact the branch of your choice and discuss final figures with the available in-house F&I.`,\r\n PurchasePriceBody: `Thank you for making use of the online finance calculator on the Pupkewitz Motor Division website.\r\n
\r\n
\r\n
\r\n For a monthly instalment of {MonthlyInstalment}, and placing a deposit of {Deposit} with an interest rate of {InterestRate} and a balloon payment of {BalloonPayment}, the following will be applicable:\r\n
\r\n
\r\n
\r\n Amount I can spend: {PurchasePrice}\r\n Amount to finance:{FinanceTotal}\r\n Interest amount:{InterestTotal}\r\n Total cost of credit:{TotalCostOfCredit}\r\n
\r\n
\r\n Kindly note that all calculations made on this calculator are to be used as guidelines only. It is based on the information you have provided and does not take into account monthly expenses and other factors that need consideration when purchasing a vehicle. Amounts displayed here should not be relied upon solely in making your purchase. For further information, please contact the branch of your choice and discuss final figures with the available in-house F&I.`,\r\n },\r\n },\r\n '0c1557ef-adb1-4905-9936-738689f3bf16': {\r\n name: 'NamAuto_Main',\r\n defaultBalloonPercentage: 0,\r\n minBalloonRate: 0,\r\n maxBalloonRate: 30,\r\n defaultInterestRate: 8,\r\n minInterestRate: 5,\r\n maxInterestRate: 20,\r\n minFinancingAmount: 30000,\r\n defaultPaymentTerm: 48,\r\n paymentTerms: [12, 24, 36, 48, 54, 60, 72],\r\n termIncrement: 12,\r\n currency: 'N$ ',\r\n maxFinancingAmount: 10000000,\r\n minMonthlyInstalment: 303.36,\r\n maxMonthlyInstalment: 926345.06,\r\n minTerm: 0,\r\n maxTerm: 0,\r\n minDeposit: 0,\r\n maxDeposit: 1,\r\n defaultDeposit: 0,\r\n minBalloonAmount: 0,\r\n maxBalloonAmount: 1,\r\n showMontlyInstalment: true,\r\n showPurchasePrice: true,\r\n showBalloonPayment: true,\r\n balloonPaymentLimits: {\r\n minTerm: 0,\r\n maxTerm: 72,\r\n },\r\n colour: '#D51F36',\r\n smtp: {\r\n SecureToken: '998029e6-9a69-489c-b103-9d783290c484',\r\n From: 'noreply@namauto.com',\r\n Subject: 'Results of the Finance calculator',\r\n Bcc: ['motorsmarketing@pupkewitz.com'],\r\n MonthlyInstalmentBody: `Thank you for making use of the online finance calculator on the NamAuto website.\r\n
\r\n
\r\n
\r\n For a vehicle costing a total of {PurchasePrice}, and placing a deposit of {Deposit} with an interest rate of {InterestRate} and a balloon payment of {BalloonPaymentRate}, the following will be applicable:\r\n
\r\n
\r\n
\r\n Monthly instalments: {MonthlyInstalment}\r\n
\r\n Financing amount: {FinanceTotal}\r\n
\r\n Interest amount: {InterestTotal}\r\n
\r\n Total cost of credit: {TotalCostOfCredit}\r\n
\r\n
\r\n
\r\n Kindly note that all calculations made on this calculator are to be used as guidelines only. It is based on the information you have provided and does not take into account monthly expenses and other factors that need consideration when purchasing a vehicle. Amounts displayed here should not be relied upon solely in making your purchase. For further information, please contact the branch of your choice and discuss final figures with the available in-house F&I.`,\r\n PurchasePriceBody: `Thank you for making use of the online finance calculator on the NamAuto website.\r\n
\r\n
\r\n
\r\n For a monthly instalment of {MonthlyInstalment}, and placing a deposit of {Deposit} with an interest rate of {InterestRate} and a balloon payment of {BalloonPayment}, the following will be applicable:\r\n
\r\n
\r\n
\r\n Amount I can spend: {PurchasePrice}\r\n Amount to finance: {FinanceTotal}\r\n Interest amount: {InterestTotal}\r\n Total cost of credit: {TotalCostOfCredit}\r\n
\r\n
\r\n Kindly note that all calculations made on this calculator are to be used as guidelines only. It is based on the information you have provided and does not take into account monthly expenses and other factors that need consideration when purchasing a vehicle. Amounts displayed here should not be relied upon solely in making your purchase. For further information, please contact the branch of your choice and discuss final figures with the available in-house F&I.`,\r\n },\r\n },\r\n 'bbe54b9d-4484-4cf3-8b59-6987a33dff95': {\r\n name: 'Suzuki_Axess_Suzuki',\r\n defaultBalloonPercentage: 0,\r\n minBalloonRate: 0,\r\n maxBalloonRate: 30,\r\n defaultInterestRate: 8,\r\n minInterestRate: 8,\r\n maxInterestRate: 8,\r\n minFinancingAmount: 0,\r\n defaultPaymentTerm: 48,\r\n paymentTerms: [12, 24, 36, 48, 60, 72, 84],\r\n termIncrement: 12,\r\n currency: 'Rs ',\r\n maxFinancingAmount: 10000000,\r\n minMonthlyInstalment: 303.36,\r\n maxMonthlyInstalment: 926345.06,\r\n minTerm: 0,\r\n maxTerm: 0,\r\n minDeposit: 0,\r\n maxDeposit: 1,\r\n defaultDeposit: 0,\r\n minBalloonAmount: 0,\r\n maxBalloonAmount: 1,\r\n showMontlyInstalment: true,\r\n showPurchasePrice: true,\r\n showBalloonPayment: false,\r\n balloonPaymentLimits: {\r\n minTerm: 0,\r\n maxTerm: 72,\r\n },\r\n interestRateLabel: 'Indicative interest rate',\r\n colour: '#00A599',\r\n smtp: {\r\n SecureToken: 'a1d853e5-6d71-4a3f-b1b1-422ce49664aa',\r\n From: 'suzuki.sales@axess.mu',\r\n Subject: 'Your request - Finance Calculator',\r\n Bcc: ['digital@axess.mu', 'suzuki.sales@axess.mu'],\r\n MonthlyInstalmentBody: `Dear customer,

Thank you for making use of the online finance calculator on the Suzuki Axess website.

For a vehicle costing a total of {PurchasePrice}, and placing a deposit of {Deposit} with an interest rate of {InterestRate}, the following will be applicable:

Monthly instalments: {MonthlyInstalment}
Financing amount: {FinanceTotal}
Interest amount: {InterestTotal}

Total cost of credit: {TotalCostOfCredit}

Kindly note that all calculations made on this calculator are to be used as guidelines only. It is based on the information you have provided and does not take into account monthly expenses and other factors that need consideration when purchasing a vehicle. Amounts displayed here should not be relied upon solely in making your purchase. For further information, please contact the branch of your choice and discuss final figures with the available in-house F&I.`,\r\n PurchasePriceBody: `Dear customer,

Thank you for making use of the online finance calculator on the Suzuki Axess website.

For a monthly instalment of {MonthlyInstalment}, and placing a deposit of {Deposit} with an interest rate of {InterestRate}, the following will be applicable:

Amount I can spend: {PurchasePrice}
Amount to finance: {FinanceTotal}
Interest amount: {InterestTotal}
Total cost of credit: {TotalCostOfCredit}

Kindly note that all calculations made on this calculator are to be used as guidelines only. It is based on the information you have provided and does not take into account monthly expenses and other factors that need consideration when purchasing a vehicle. Amounts displayed here should not be relied upon solely in making your purchase. For further information, please contact the branch of your choice and discuss final figures with the available in-house F&I.`,\r\n },\r\n },\r\n /* Team Vaal */\r\n '8bc4cdd8-c01a-424f-b9b5-82dfcfeff5ea': {\r\n name: 'Team_Vaal_Group',\r\n defaultBalloonPercentage: 30,\r\n minBalloonRate: 0,\r\n maxBalloonRate: 30,\r\n defaultInterestRate: 14,\r\n minInterestRate: 5,\r\n maxInterestRate: 20,\r\n minFinancingAmount: 30000,\r\n defaultPaymentTerm: 48,\r\n paymentTerms: [12, 24, 36, 48, 60, 72],\r\n termIncrement: 12,\r\n currency: 'R ',\r\n maxFinancingAmount: 10000000,\r\n minMonthlyInstalment: 303.36,\r\n maxMonthlyInstalment: 926345.06,\r\n minTerm: 0,\r\n maxTerm: 0,\r\n minDeposit: 0,\r\n maxDeposit: 1,\r\n defaultDeposit: 0,\r\n minBalloonAmount: 0,\r\n maxBalloonAmount: 1,\r\n showMontlyInstalment: true,\r\n showPurchasePrice: true,\r\n showBalloonPayment: true,\r\n balloonPaymentLimits: {\r\n minTerm: 0,\r\n maxTerm: 72,\r\n },\r\n interestRateLabel: 'Interest rate',\r\n colour: '#000000',\r\n smtp: {\r\n SecureToken: '3b0675f1-f50d-4bd8-a80c-8f9441ef9411',\r\n From: 'smd@teamvaal.co.za',\r\n Subject: 'Finance Enquiry with Team Vaal',\r\n Bcc: ['smd@teamvaal.co.za'],\r\n MonthlyInstalmentBody: `Dear valued customer,

Thank you for the finance enquiry. A member of our team will contact you soonest.

Regards
Team Vaal`,\r\n PurchasePriceBody: `Dear valued customer,

Thank you for the finance enquiry. A member of our team will contact you soonest.

Regards
Team Vaal`,\r\n },\r\n },\r\n 'b0309ecd-77f4-435a-acfc-4806a465e29d': {\r\n name: 'Team_Vaal_Volkswagen',\r\n defaultBalloonPercentage: 30,\r\n minBalloonRate: 0,\r\n maxBalloonRate: 30,\r\n defaultInterestRate: 10,\r\n minInterestRate: 5,\r\n maxInterestRate: 20,\r\n minFinancingAmount: 30000,\r\n defaultPaymentTerm: 48,\r\n paymentTerms: [12, 24, 36, 48, 60, 72],\r\n termIncrement: 12,\r\n currency: 'R ',\r\n maxFinancingAmount: 10000000,\r\n minMonthlyInstalment: 303.36,\r\n maxMonthlyInstalment: 926345.06,\r\n minTerm: 0,\r\n maxTerm: 0,\r\n minDeposit: 0,\r\n maxDeposit: 1,\r\n defaultDeposit: 0,\r\n minBalloonAmount: 0,\r\n maxBalloonAmount: 1,\r\n showMontlyInstalment: true,\r\n showPurchasePrice: true,\r\n showBalloonPayment: true,\r\n balloonPaymentLimits: {\r\n minTerm: 0,\r\n maxTerm: 72,\r\n },\r\n interestRateLabel: 'Interest rate',\r\n colour: '#0000ee',\r\n smtp: {\r\n SecureToken: '3b0675f1-f50d-4bd8-a80c-8f9441ef9411',\r\n From: 'smd@teamvaal.co.za',\r\n Subject: 'Finance Enquiry with Team Vaal',\r\n Bcc: ['smd@teamvaal.co.za'],\r\n MonthlyInstalmentBody: `Dear valued customer,

Thank you for the finance enquiry. A member of our team will contact you soonest.

Regards
Team Vaal`,\r\n PurchasePriceBody: `Dear valued customer,

Thank you for the finance enquiry. A member of our team will contact you soonest.

Regards
Team Vaal`,\r\n },\r\n },\r\n 'd9c48a60-07fe-415d-8aee-716a0a9a2a93': {\r\n name: 'Team_Vaal_Mazda',\r\n defaultBalloonPercentage: 30,\r\n minBalloonRate: 0,\r\n maxBalloonRate: 30,\r\n defaultInterestRate: 10,\r\n minInterestRate: 5,\r\n maxInterestRate: 20,\r\n minFinancingAmount: 30000,\r\n defaultPaymentTerm: 48,\r\n paymentTerms: [12, 24, 36, 48, 60, 72],\r\n termIncrement: 12,\r\n currency: 'R ',\r\n maxFinancingAmount: 10000000,\r\n minMonthlyInstalment: 303.36,\r\n maxMonthlyInstalment: 926345.06,\r\n minTerm: 0,\r\n maxTerm: 0,\r\n minDeposit: 0,\r\n maxDeposit: 1,\r\n defaultDeposit: 0,\r\n minBalloonAmount: 0,\r\n maxBalloonAmount: 1,\r\n showMontlyInstalment: true,\r\n showPurchasePrice: true,\r\n showBalloonPayment: true,\r\n balloonPaymentLimits: {\r\n minTerm: 0,\r\n maxTerm: 72,\r\n },\r\n interestRateLabel: 'Interest rate',\r\n colour: '#101010',\r\n smtp: {\r\n SecureToken: '3b0675f1-f50d-4bd8-a80c-8f9441ef9411',\r\n From: 'smd@teamvaal.co.za',\r\n Subject: 'Finance Enquiry with Team Vaal',\r\n Bcc: ['smd@teamvaal.co.za'],\r\n MonthlyInstalmentBody: `Dear valued customer,

Thank you for the finance enquiry. A member of our team will contact you soonest.

Regards
Team Vaal`,\r\n PurchasePriceBody: `Dear valued customer,

Thank you for the finance enquiry. A member of our team will contact you soonest.

Regards
Team Vaal`,\r\n },\r\n },\r\n '00000000-0000-0000-0000-000000000000': {\r\n name: 'TEST_Team_Vaal_Mazda_TEST',\r\n defaultBalloonPercentage: 30,\r\n minBalloonRate: 0,\r\n maxBalloonRate: 30,\r\n defaultInterestRate: 10,\r\n minInterestRate: 5,\r\n maxInterestRate: 20,\r\n minFinancingAmount: 30000,\r\n defaultPaymentTerm: 48,\r\n paymentTerms: [12, 24, 36, 48, 60, 72],\r\n termIncrement: 12,\r\n currency: 'R ',\r\n maxFinancingAmount: 10000000,\r\n minMonthlyInstalment: 303.36,\r\n maxMonthlyInstalment: 926345.06,\r\n minTerm: 0,\r\n maxTerm: 0,\r\n minDeposit: 0,\r\n maxDeposit: 1,\r\n defaultDeposit: 0,\r\n minBalloonAmount: 0,\r\n maxBalloonAmount: 1,\r\n showMontlyInstalment: true,\r\n showPurchasePrice: true,\r\n showBalloonPayment: true,\r\n balloonPaymentLimits: {\r\n minTerm: 0,\r\n maxTerm: 72,\r\n },\r\n interestRateLabel: 'Interest rate',\r\n colour: '#101010',\r\n smtp: {\r\n SecureToken: 'a1d853e5-6d71-4a3f-b1b1-422ce49664aa',\r\n From: 'suzuki.sales@axess.mu',\r\n Subject: 'Your request - Finance Calculator',\r\n Bcc: [],\r\n MonthlyInstalmentBody: `TEST
Dear customer,

Thank you for making use of the online finance calculator on the Suzuki Axess website.

For a vehicle costing a total of {PurchasePrice}, and placing a deposit of {Deposit} with an interest rate of {InterestRate}, the following will be applicable:

Monthly instalments: {MonthlyInstalment}
Financing amount: {FinanceTotal}
Interest amount: {InterestTotal}

Total cost of credit: {TotalCostOfCredit}

Kindly note that all calculations made on this calculator are to be used as guidelines only. It is based on the information you have provided and does not take into account monthly expenses and other factors that need consideration when purchasing a vehicle. Amounts displayed here should not be relied upon solely in making your purchase. For further information, please contact the branch of your choice and discuss final figures with the available in-house F&I.
TEST`,\r\n PurchasePriceBody: `TEST
Dear customer,

Thank you for making use of the online finance calculator on the Suzuki Axess website.

For a monthly instalment of {MonthlyInstalment}, and placing a deposit of {Deposit} with an interest rate of {InterestRate}, the following will be applicable:

Amount I can spend: {PurchasePrice}
Amount to finance: {FinanceTotal}
Interest amount: {InterestTotal}
Total cost of credit: {TotalCostOfCredit}

Kindly note that all calculations made on this calculator are to be used as guidelines only. It is based on the information you have provided and does not take into account monthly expenses and other factors that need consideration when purchasing a vehicle. Amounts displayed here should not be relied upon solely in making your purchase. For further information, please contact the branch of your choice and discuss final figures with the available in-house F&I.
TEST`,\r\n },\r\n },\r\n '0f91963e-2c1b-4dfb-9f24-04810971a26b': {\r\n name: 'Thekwini_Group_Hino',\r\n defaultBalloonPercentage: 0,\r\n minBalloonRate: 0,\r\n maxBalloonRate: 35,\r\n defaultInterestRate: 12,\r\n minInterestRate: 10,\r\n maxInterestRate: 20,\r\n minFinancingAmount: 0,\r\n defaultPaymentTerm: 48,\r\n paymentTerms: [12, 24, 36, 48, 54, 60, 72],\r\n termIncrement: 12,\r\n currency: 'R ',\r\n maxFinancingAmount: 10000000,\r\n minMonthlyInstalment: 303.36,\r\n maxMonthlyInstalment: 926345.06,\r\n minTerm: 0,\r\n maxTerm: 0,\r\n minDeposit: 0,\r\n maxDeposit: 1,\r\n defaultDeposit: 0,\r\n minBalloonAmount: 0,\r\n maxBalloonAmount: 1,\r\n showMontlyInstalment: true,\r\n showPurchasePrice: true,\r\n showBalloonPayment: true,\r\n balloonPaymentLimits: {\r\n minTerm: 0,\r\n maxTerm: 72\r\n },\r\n interestRateLabel: 'Interest rate',\r\n colour: '#E50000',\r\n smtp: {\r\n SecureToken: '0f91963e-2c1b-4dfb-9f24-04810971a26b',\r\n From: 'hello@thekwinimotorgroup.co.za',\r\n Subject: 'Thank You for Applying for Finance with TMG!',\r\n Bcc: ['cheron@thekwinimotorgroup.co.za'],\r\n MonthlyInstalmentBody: `Dear [Applicant],

Thank you for applying for finance! Should you require a friendly sales representative to contact you, please respond with the following information:

Name:
Surname:
Vehicle Interested In:
Contact Number:
Email Address:
Finance: Yes/No

Best regards,
[Your Name]`,\r\n },\r\n },\r\n '7e01d7bf-7000-4ddf-a87e-2a2d2fb3a068': {\r\n name: 'Thekwini_Group_Toyota',\r\n defaultBalloonPercentage: 0,\r\n minBalloonRate: 0,\r\n maxBalloonRate: 35,\r\n defaultInterestRate: 12,\r\n minInterestRate: 10,\r\n maxInterestRate: 20,\r\n minFinancingAmount: 0,\r\n defaultPaymentTerm: 48,\r\n paymentTerms: [12, 24, 36, 48, 54, 60, 72],\r\n termIncrement: 12,\r\n currency: 'R ',\r\n maxFinancingAmount: 10000000,\r\n minMonthlyInstalment: 303.36,\r\n maxMonthlyInstalment: 926345.06,\r\n minTerm: 0,\r\n maxTerm: 0,\r\n minDeposit: 0,\r\n maxDeposit: 1,\r\n defaultDeposit: 0,\r\n minBalloonAmount: 0,\r\n maxBalloonAmount: 1,\r\n showMontlyInstalment: true,\r\n showPurchasePrice: true,\r\n showBalloonPayment: true,\r\n balloonPaymentLimits: {\r\n minTerm: 0,\r\n maxTerm: 72\r\n },\r\n interestRateLabel: 'Interest rate',\r\n colour: '#E50000',\r\n smtp: {\r\n SecureToken: '7e01d7bf-7000-4ddf-a87e-2a2d2fb3a068',\r\n From: 'hello@thekwinimotorgroup.co.za',\r\n Subject: 'Thank You for Applying for Finance with TMG!',\r\n Bcc: ['cheron@thekwinimotorgroup.co.za'],\r\n MonthlyInstalmentBody: `Dear [Applicant],

Thank you for applying for finance! Should you require a friendly sales representative to contact you, please respond with the following information:

Name:
Surname:
Vehicle Interested In:
Contact Number:
Email Address:
Finance: Yes/No

Best regards,
[Your Name]`,\r\n },\r\n },'7a1c2c59-e041-46ab-bd3f-e931989a3736': {\r\n name: 'Allen_Joss_Mazda',\r\n defaultBalloonPercentage: 0,\r\n minBalloonRate: 0,\r\n maxBalloonRate: 35,\r\n defaultInterestRate: 12,\r\n minInterestRate: 8,\r\n maxInterestRate: 20,\r\n minFinancingAmount: 0,\r\n defaultPaymentTerm: 48,\r\n paymentTerms: [12, 24, 36, 48, 54, 60, 72],\r\n termIncrement: 12,\r\n currency: 'R ',\r\n maxFinancingAmount: 10000000,\r\n minMonthlyInstalment: 303.36,\r\n maxMonthlyInstalment: 926345.06,\r\n minTerm: 0,\r\n maxTerm: 0,\r\n minDeposit: 0,\r\n maxDeposit: 1,\r\n defaultDeposit: 0,\r\n minBalloonAmount: 0,\r\n maxBalloonAmount: 1,\r\n showMontlyInstalment: true,\r\n showPurchasePrice: true,\r\n showBalloonPayment: true,\r\n balloonPaymentLimits: {\r\n minTerm: 0,\r\n maxTerm: 72\r\n },\r\n interestRateLabel: 'Interest rate',\r\n colour: '#21130d',\r\n },\r\n },\r\n};\r\n\r\n/*\r\n * For easier debugging in development mode, you can import the following file\r\n * to ignore zone related error stack frames such as `zone.run`, `zoneDelegate.invokeTask`.\r\n *\r\n * This import should be commented out in production mode because it will have a negative impact\r\n * on performance if an error is thrown.\r\n */\r\n// import 'zone.js/dist/zone-error'; // Included with Angular CLI.\r\n","import { Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'app-root',\r\n templateUrl: './app.component.html',\r\n styleUrls: ['./app.component.scss']\r\n})\r\nexport class AppComponent {\r\n title = 'vehicle-finance-calculator';\r\n}\r\n","","import { Observable, of } from 'rxjs';\r\nimport { catchError, timeout } from 'rxjs/operators';\r\nimport { HttpClient, HttpHeaders, HttpParams } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { ResponseModel } from 'src/app/Models/ResponseModel';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class HttpRequestService {\r\n private timeout = 12000;\r\n\r\n private headers = new HttpHeaders({\r\n 'Content-Type': 'application/json;charset=UTF-8',\r\n });\r\n\r\n constructor(private http: HttpClient) { }\r\n\r\n public request(\r\n requestUri: string,\r\n requestData: object,\r\n type: 'GET' | 'POST' | 'PUT' | 'DELETE'\r\n ): Promise> {\r\n let result: Observable>;\r\n\r\n let params = [] as any;\r\n\r\n Object.entries(requestData).forEach(([key, value]) =>\r\n params.push(`${key}=${value}`)\r\n );\r\n\r\n let paramsString = params.join('&');\r\n\r\n if (paramsString.length != 0) {\r\n paramsString = '?' + paramsString;\r\n }\r\n\r\n //we check to see what kind of request we are running and run the request using correct verb\r\n switch (type) {\r\n case 'GET':\r\n //we serialize any data we might need for the get request into a string and pass that in the request uri\r\n console.log('GET REQUEST', `${requestUri}${paramsString}`);\r\n result = this.http\r\n .get>(`${requestUri}${paramsString}`, {\r\n headers: this.headers,\r\n observe: 'response',\r\n })\r\n .pipe(\r\n timeout(this.timeout),\r\n catchError(\r\n this.handleError(\r\n requestUri.split('/')[requestUri.split('/').length - 1],\r\n requestData as any\r\n )\r\n )\r\n );\r\n\r\n break;\r\n\r\n case 'POST':\r\n console.log('POST REQUEST', requestUri, requestData);\r\n result = this.http\r\n .post>(requestUri, requestData)\r\n .pipe(\r\n timeout(this.timeout),\r\n catchError(\r\n this.handleError(\r\n requestUri.split('/')[requestUri.split('/').length - 1],\r\n requestData as any\r\n )\r\n )\r\n );\r\n\r\n break;\r\n\r\n case 'PUT':\r\n console.log('PUT REQUEST', requestUri, requestData);\r\n result = this.http\r\n .put>(requestUri, requestData, requestData)\r\n .pipe(\r\n timeout(this.timeout),\r\n catchError(\r\n this.handleError(\r\n requestUri.split('/')[requestUri.split('/').length - 1],\r\n requestData as any\r\n )\r\n )\r\n );\r\n break;\r\n\r\n case 'DELETE':\r\n console.log('DELETE REQUEST', `${requestUri}${paramsString}`);\r\n result = this.http\r\n .delete>(`${requestUri}${paramsString}`, {\r\n headers: this.headers,\r\n observe: 'response',\r\n })\r\n .pipe(\r\n timeout(this.timeout),\r\n catchError(\r\n this.handleError(\r\n requestUri.split('/')[requestUri.split('/').length - 1],\r\n requestData as any\r\n )\r\n )\r\n );\r\n\r\n break;\r\n }\r\n\r\n return result.toPromise();\r\n }\r\n\r\n private handleError(operation = 'operation', result?: T) {\r\n return (error: any): Observable => {\r\n // TODO: send the error to remote logging infrastructure\r\n console.error(error); // log to console instead\r\n\r\n // TODO: better job of transforming error for user consumption\r\n console.log(`${operation} failed: ${error.message}`);\r\n\r\n // Let the app keep running by returning an empty result.\r\n return of(error);\r\n };\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\n\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatCardModule } from '@angular/material/card';\r\nimport { MatGridListModule } from '@angular/material/grid-list';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\r\nimport { MatSelectModule } from '@angular/material/select';\r\nimport { MatSliderModule } from '@angular/material/slider';\r\nimport { MatSnackBarModule } from '@angular/material/snack-bar';\r\nimport { MatTabsModule } from '@angular/material/tabs';\r\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\r\n\r\nimport {\r\n NgxGoogleAnalyticsModule,\r\n NgxGoogleAnalyticsRouterModule,\r\n} from 'ngx-google-analytics';\r\n\r\nimport { BrowserModule } from '@angular/platform-browser';\r\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations';\r\n\r\nimport { AppRoutingModule } from './app-routing.module';\r\nimport { AppComponent } from './app.component';\r\n\r\nimport { VehicleFinanceCalculatorComponent } from './vehicle-finance-calculator/vehicle-finance-calculator.component';\r\nimport { environment } from 'src/environments/environment';\r\nimport { HttpClientModule } from '@angular/common/http';\r\n\r\n@NgModule({\r\n declarations: [AppComponent, VehicleFinanceCalculatorComponent],\r\n imports: [\r\n BrowserModule,\r\n NgxGoogleAnalyticsModule.forRoot(environment.googleAnalyticsToken),\r\n NgxGoogleAnalyticsRouterModule,\r\n AppRoutingModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n MatSliderModule,\r\n MatTabsModule,\r\n MatInputModule,\r\n MatCardModule,\r\n MatProgressBarModule,\r\n MatSelectModule,\r\n MatGridListModule,\r\n MatButtonModule,\r\n MatSnackBarModule,\r\n MatIconModule,\r\n MatProgressSpinnerModule,\r\n BrowserAnimationsModule,\r\n HttpClientModule,\r\n ],\r\n providers: [],\r\n bootstrap: [AppComponent],\r\n})\r\nexport class AppModule {\r\n constructor() {\r\n console.assert(environment.production, 'Running in DEV mode');\r\n }\r\n}\r\n","/* SmtpJS.com - v3.0.0 */\r\nvar Email = { send: function (a) { return new Promise(function (n, e) { a.nocache = Math.floor(1e6 * Math.random() + 1), a.Action = \"Send\"; var t = JSON.stringify(a); Email.ajaxPost(\"https://smtpjs.com/v3/smtpjs.aspx?\", t, function (e) { n(e) }) }) }, ajaxPost: function (e, n, t) { var a = Email.createCORSRequest(\"POST\", e); a.setRequestHeader(\"Content-type\", \"application/x-www-form-urlencoded\"), a.onload = function () { var e = a.responseText; null != t && t(e) }, a.send(n) }, ajax: function (e, n) { var t = Email.createCORSRequest(\"GET\", e); t.onload = function () { var e = t.responseText; null != n && n(e) }, t.send() }, createCORSRequest: function (e, n) { var t = new XMLHttpRequest; return \"withCredentials\" in t ? t.open(e, n, !0) : \"undefined\" != typeof XDomainRequest ? (t = new XDomainRequest).open(e, n) : t = null, t } };","import { NgModule } from '@angular/core';\r\nimport { RouterModule, Routes } from '@angular/router';\r\nimport { VehicleFinanceCalculatorComponent } from './vehicle-finance-calculator/vehicle-finance-calculator.component';\r\n\r\nconst routes: Routes = [\r\n { path: 'calculator/:guid', component: VehicleFinanceCalculatorComponent },\r\n { path: '', redirectTo: '/calculator', pathMatch: 'full' },\r\n { path: 'calculator', component: VehicleFinanceCalculatorComponent },\r\n];\r\n\r\n@NgModule({\r\n imports: [RouterModule.forRoot(routes)],\r\n exports: [RouterModule],\r\n})\r\nexport class AppRoutingModule {}\r\n","import { enableProdMode } from '@angular/core';\r\nimport { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\r\n\r\nimport { AppModule } from './app/app.module';\r\nimport { environment } from './environments/environment';\r\n\r\nif (environment.production) {\r\n enableProdMode();\r\n}\r\n\r\nplatformBrowserDynamic()\r\n .bootstrapModule(AppModule)\r\n .catch((err) => console.error(err));\r\n","function webpackEmptyAsyncContext(req) {\n\t// Here Promise.resolve().then() is used instead of new Promise() to prevent\n\t// uncaught exception popping up in devtools\n\treturn Promise.resolve().then(function() {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t});\n}\nwebpackEmptyAsyncContext.keys = function() { return []; };\nwebpackEmptyAsyncContext.resolve = webpackEmptyAsyncContext;\nmodule.exports = webpackEmptyAsyncContext;\nwebpackEmptyAsyncContext.id = \"zn8P\";"],"sourceRoot":"webpack:///"}