{"version":3,"file":"invoicePaymentPage.js","mappings":"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","sources":["webpack://leddb-customer-access-portal/./Scripts/invoicePaymentPage.ts"],"sourcesContent":["export class InvoicePaymentPage {\r\n\r\n static Instance: InvoicePaymentPage;\r\n form: HTMLFormElement;\r\n\r\n get invoiceNumberInput() { return this.form.querySelector('input[name=\"invoice-number\"]'); }\r\n get invoiceNumber() { return this.invoiceNumberInput.value; }\r\n set invoiceNumber(to: string) { this.invoiceNumberInput.value = to; }\r\n\r\n get emailAddressInput() { return this.form.querySelector('input[name=\"invoice-email\"]'); }\r\n get emailAddress() { return this.emailAddressInput.value; }\r\n set emailAddress(to: string) { this.emailAddressInput.value = to; }\r\n\r\n get invoiceAmountInput() { return this.form.querySelector('input[name=\"invoice-amount\"]'); }\r\n get invoiceAmount() {\r\n let nominal = parseFloat(this.invoiceAmountInput.value || '0');\r\n if (isNaN(nominal)) nominal = 0;\r\n return Math.round(nominal * 100) / 100;\r\n }\r\n set invoiceAmount(to: number) {\r\n if (isNaN(to) || to < 0) to = 0;\r\n\r\n to = Math.round(to * 100) / 100;\r\n\r\n let asStr = `${to}`;\r\n /* if (asStr.indexOf('.') !== -1) {\r\n let ltok = asStr.split('.')[0] || '';\r\n let rtok = asStr.split('.')[1] || '';\r\n if (rtok.length < 2) {\r\n asStr = `${ltok}.${rtok}0`;\r\n }\r\n } else {\r\n asStr += '.00';\r\n } */\r\n this.invoiceAmountInput.value = asStr;\r\n\r\n this.updateSurchargeLabels();\r\n }\r\n\r\n updateSurchargeLabels() {\r\n document.querySelectorAll('[data-surcharge-factor]').forEach((el: HTMLElement) => {\r\n el.innerText = (this.invoiceAmount * (parseFloat(el.dataset.surchargeFactor) * 0.01)).toLocaleString('en-AU', { style: 'currency', currency: 'AUD' });\r\n });\r\n }\r\n\r\n get creditCardSurchargeRows() { return this.form.querySelectorAll('.credit-card-surcharge-row'); }\r\n\r\n get creditCardSurchargeSelect() { return this.form.querySelector('select[name=\"credit-surcharge\"]'); }\r\n get creditCardSurchageIncluded() {\r\n return this.creditCardSurchargeSelect.value == 'true' && this.invoiceAmount >= 1000;\r\n }\r\n\r\n get creditCardSurchargeAgreedCheckbox() { return this.form.querySelector('[name=\"credit-surcharge-agreed\"]'); }\r\n get creditCardSurchargeAgreed() { return this.creditCardSurchageIncluded && this.creditCardSurchargeAgreedCheckbox.checked; }\r\n\r\n get inputs() {\r\n return [\r\n this.invoiceNumberInput,\r\n this.emailAddressInput,\r\n this.invoiceAmountInput,\r\n this.creditCardSurchargeSelect,\r\n this.creditCardSurchargeAgreedCheckbox,\r\n ];\r\n }\r\n\r\n constructor(form: HTMLFormElement) {\r\n this.form = form;\r\n //console.log(`Invoice payment page`, this);\r\n InvoicePaymentPage.Instance = this;\r\n\r\n this.inputs.forEach(el => {\r\n if (!el) return;\r\n\r\n ['input', 'focus', 'blur', 'keypress', 'keydown', 'change', 'paste'].forEach(cb => {\r\n el.addEventListener(cb, ev => this.validate(el, ev))\r\n });\r\n });\r\n\r\n\r\n globalThis['PAYWAY'] = globalThis['payway'].createCreditCardFrame({\r\n publishableApiKey: this.form.dataset.paymentProcessor,\r\n tokenMode: 'callback',\r\n onValid() {\r\n //InvoicePaymentPage.Instance.submitButton.disabled = false;\r\n },\r\n onInvalid() {\r\n //InvoicePaymentPage.Instance.submitButton.disabled = true;\r\n }\r\n }, this.paywayInitialised);\r\n\r\n this.validate(null, null);\r\n }\r\n\r\n get submitButton() { return document.getElementById('payway-cc-submit'); }\r\n\r\n paywayInitialised(err, frame) {\r\n //console.log('payway initialised', err, frame);\r\n //console.dir(frame);\r\n //console.log('this', this);\r\n InvoicePaymentPage.Instance.validate(null, null);\r\n\r\n InvoicePaymentPage.Instance.submitButton.addEventListener('click', ev => {\r\n document.querySelectorAll('.field-feedback').forEach((el: HTMLElement) => {\r\n el.innerText = '';\r\n el.parentElement.querySelectorAll('input').forEach((i: HTMLInputElement) => {\r\n i.classList.remove('is-invalid');\r\n });\r\n });\r\n\r\n InvoicePaymentPage.Instance.form.style.pointerEvents = 'none';\r\n InvoicePaymentPage.Instance.form.style.opacity = '0.5';\r\n\r\n InvoicePaymentPage.Instance.submitButton.disabled = true;\r\n let errMesg = (document.querySelector('.invalid-cc-message'));\r\n errMesg.classList.add('d-none');\r\n\r\n frame.getToken((err, data) => {\r\n if (err) {\r\n InvoicePaymentPage.Instance.submitButton.disabled = false;\r\n errMesg.classList.remove('d-none');\r\n InvoicePaymentPage.Instance.form.style.pointerEvents = 'all';\r\n InvoicePaymentPage.Instance.form.style.opacity = '1';\r\n\r\n return;\r\n }\r\n //console.log(`single use token id: ${data.singleUseTokenId}`, data);\r\n //let amount = InvoicePaymentPage.Instance.invoiceAmount;\r\n let formData = new FormData(InvoicePaymentPage.Instance.form);\r\n formData.append('singleUseTokenId', data.singleUseTokenId);\r\n formData.append('cardType', data.creditCard.cardScheme);\r\n fetch(InvoicePaymentPage.Instance.form.action, {\r\n body: formData,\r\n method: 'post',\r\n }).then(resp => {\r\n if (resp.ok) {\r\n resp.json().then(json => {\r\n //console.log(`response passed from payway`, json);\r\n if (json.invalidField) {\r\n try {\r\n let el = document.querySelector(json.invalidField);\r\n el.scrollIntoView({\r\n block: 'center',\r\n behavior: 'smooth',\r\n });\r\n el.classList.add('is-invalid');\r\n let feedback = el.parentElement.querySelector('.field-feedback');\r\n if (feedback) {\r\n feedback.innerText = json.invalidFeedback;\r\n }\r\n } catch (err) {\r\n console.log(err);\r\n }\r\n InvoicePaymentPage.Instance.form.style.pointerEvents = 'all';\r\n InvoicePaymentPage.Instance.form.style.opacity = '1';\r\n }\r\n else if (json.failMessage) {\r\n //InvoicePaymentPage.Instance.form.remove();\r\n document.querySelector('.payment-is-unsuccessful').classList.remove('d-none');\r\n (document.querySelector('.payment-is-unsuccessful .error-info')).innerText = json.invalidField;\r\n (document.querySelector('.payment-is-unsuccessful')).scrollIntoView({\r\n block: 'start',\r\n });\r\n InvoicePaymentPage.Instance.form.style.pointerEvents = 'all';\r\n InvoicePaymentPage.Instance.form.style.opacity = '1';\r\n }\r\n else if (json.failed) {\r\n InvoicePaymentPage.Instance.form.remove();\r\n document.querySelector('.payment-is-unsuccessful').classList.remove('d-none');\r\n (document.querySelector('.payment-is-unsuccessful .error-info')).innerText = json.failed;\r\n\r\n (document.querySelector('.payment-is-unsuccessful')).scrollIntoView({\r\n block: 'start',\r\n });\r\n } else {\r\n //console.log(json);\r\n InvoicePaymentPage.Instance.form.remove();\r\n document.querySelector('.payment-is-successful').classList.remove('d-none');\r\n\r\n (document.querySelector('.payment-is-successful .payment-amount')).innerText = json.paymentAmount;\r\n (document.querySelector('.payment-is-successful .payment-order')).innerText = json.orderNumber;\r\n (document.querySelector('.payment-is-successful .payment-date')).innerText = json.transactionDateTime;\r\n (document.querySelector('.payment-is-successful .payment-receipt')).innerText = json.receiptNumber;\r\n\r\n (document.querySelector('.payment-is-successful')).scrollIntoView({\r\n block: 'start',\r\n });\r\n }\r\n\r\n /*if (json.isSuccessStatusCode === true) {\r\n InvoicePaymentPage.Instance.form.remove();\r\n document.querySelector('.payment-is-successful').classList.remove('d-none');\r\n } else {\r\n InvoicePaymentPage.Instance.form.remove();\r\n document.querySelector('.payment-is-unsuccessful').classList.remove('d-none');\r\n }*/\r\n });\r\n } else {\r\n InvoicePaymentPage.Instance.form.style.pointerEvents = 'all';\r\n InvoicePaymentPage.Instance.form.style.opacity = '1';\r\n }\r\n }).catch(err => {\r\n InvoicePaymentPage.Instance.form.style.pointerEvents = 'all';\r\n InvoicePaymentPage.Instance.form.style.opacity = '1';\r\n });\r\n });\r\n });\r\n\r\n /* frame.getToken((err, data) => {\r\n if (err) {\r\n console.error(`Error getting token ${err.message}`);\r\n return;\r\n }\r\n console.log(`single use token id: ${data.singleUseTokenId}`);\r\n }); */\r\n }\r\n\r\n validate(el: HTMLInputElement | HTMLSelectElement, ev: Event) {\r\n let invoiceNumber = '';\r\n //console.log(`validate()`, el, ev);\r\n\r\n for (let i = 0; i < this.invoiceNumber.length && i < 7; i++) {\r\n if (this.invoiceNumber.charCodeAt(i) >= 0x30 && this.invoiceNumber.charCodeAt(i) <= 0x39) {\r\n invoiceNumber += this.invoiceNumber[i];\r\n }\r\n }\r\n if (this.invoiceNumber != invoiceNumber) {\r\n this.invoiceNumber = invoiceNumber;\r\n this.invoiceNumberInput.focus();\r\n }\r\n\r\n if (invoiceNumber.length == 7) {\r\n this.invoiceNumberInput.classList.add('is-valid');\r\n this.invoiceNumberInput.classList.remove('is-invalid');\r\n } else {\r\n this.invoiceNumberInput.classList.remove('is-valid');\r\n if (el === this.invoiceNumberInput || (el !== null && el.matches(':focus'))) {\r\n this.invoiceNumberInput.classList.add('is-invalid');\r\n //el.focus();\r\n }\r\n }\r\n\r\n let emailValidation = new RegExp(/^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/);\r\n if (this.emailAddress.length) {\r\n if (!this.emailAddress.match(emailValidation)) {\r\n this.emailAddressInput.classList.add('is-invalid');\r\n this.emailAddressInput.classList.remove('is-valid');\r\n } else {\r\n this.emailAddressInput.classList.add('is-valid');\r\n this.emailAddressInput.classList.remove('is-invalid');\r\n }\r\n } else {\r\n }\r\n\r\n let invoiceAmount = '';\r\n for (let i = 0; i < this.invoiceAmountInput.value.length; i++) {\r\n let c = this.invoiceAmountInput.value.charCodeAt(i);\r\n if ((c >= 0x30 && c <= 0x39) || c == 0x2E || c == 0x2D) {\r\n invoiceAmount += this.invoiceAmountInput.value[i];\r\n }\r\n }\r\n while (invoiceAmount.length > 0 && invoiceAmount[0] == '0') {\r\n if (invoiceAmount.length > 1 && invoiceAmount[1] == '.') {\r\n break;\r\n }\r\n invoiceAmount = invoiceAmount.substring(1);\r\n }\r\n\r\n let appendDecimal = invoiceAmount.endsWith('.');\r\n //let appendDecimalZero = invoiceAmount.endsWith('.0');\r\n if (appendDecimal) invoiceAmount = invoiceAmount.replace('.', '');\r\n if ((parseFloat(invoiceAmount) != this.invoiceAmount) || this.invoiceAmountInput.value != invoiceAmount) {\r\n this.invoiceAmount = parseFloat(invoiceAmount);\r\n //this.invoiceAmountInput.value = (invoiceAmount);\r\n }\r\n //this.invoiceAmount = this.invoiceAmount;\r\n if (appendDecimal) this.invoiceAmountInput.value += '.';\r\n //else if (appendDecimalZero) this.invoiceAmountInput.value += '.0';\r\n\r\n this.updateSurchargeLabels();\r\n\r\n if (this.invoiceAmount >= 1000) {\r\n this.creditCardSurchargeRows.forEach(c => c.classList.remove('d-none'));\r\n } else {\r\n this.creditCardSurchargeRows.forEach(c => c.classList.add('d-none'));\r\n }\r\n\r\n if (this.creditCardSurchageIncluded) {\r\n this.form.querySelectorAll('.credit-surcharge-included').forEach(e => e.classList.remove('d-none'));\r\n this.form.querySelectorAll('.credit-surcharge-not-included').forEach(e => e.classList.add('d-none'));\r\n } else {\r\n this.form.querySelectorAll('.credit-surcharge-included').forEach(e => e.classList.add('d-none'));\r\n this.form.querySelectorAll('.credit-surcharge-not-included').forEach(e => e.classList.remove('d-none'));\r\n }\r\n\r\n let preventSubmit = true;\r\n if (this.invoiceNumberInput.classList.contains('is-valid')) {\r\n if (this.emailAddressInput.classList.contains('is-valid')) {\r\n if (this.invoiceAmount > 0) {\r\n if (this.invoiceAmount >= 1000) {\r\n if (this.creditCardSurchageIncluded) {\r\n if (this.creditCardSurchargeAgreed) {\r\n preventSubmit = false;\r\n }\r\n } else {\r\n preventSubmit = false;\r\n }\r\n } else {\r\n preventSubmit = false;\r\n }\r\n }\r\n }\r\n }\r\n\r\n if (this.invoiceNumber.length != 7) preventSubmit = true;\r\n\r\n (document.querySelector('a.redo-form-button')).href = location.pathname + `?invoice=${this.invoiceNumber}&email=${encodeURIComponent(this.emailAddress)}&amount=${encodeURIComponent(this.invoiceAmount)}&sci=${this.creditCardSurchageIncluded}`;\r\n\r\n let paymentButtonLabel = (this.submitButton.querySelector('.label'));\r\n if (paymentButtonLabel) {\r\n if (preventSubmit) {\r\n paymentButtonLabel.innerText = `Submit`;\r\n (document.querySelector('.cc-payment-disclaimer')).innerText = '';\r\n } else {\r\n paymentButtonLabel.innerText = `DEBIT ${this.invoiceAmount.toLocaleString('en-AU', { style: 'currency', currency: 'AUD' })} (AUD)${this.invoiceAmount >= 1000 ? ' *' : ''}`;\r\n if (this.invoiceAmount >= 1000) {\r\n (document.querySelector('.cc-payment-disclaimer')).innerText = '* excluding relevant credit surcharge';\r\n }\r\n }\r\n }\r\n\r\n this.submitButton.disabled = preventSubmit;\r\n }\r\n}\r\n\r\nif (document.readyState === 'complete') {\r\n if (!globalThis['PAYMENTPROCESSOR']) {\r\n document.querySelectorAll(`form[data-payment-processor]`).forEach(el => {\r\n globalThis['PAYMENTPROCESSOR'] = new InvoicePaymentPage(el);\r\n });\r\n }\r\n}\r\nelse {\r\n document.addEventListener('readystatechange', ev => {\r\n if (document.readyState == 'interactive') {\r\n }\r\n\r\n if (document.readyState === 'complete') {\r\n if (globalThis['PAYMENTPROCESSOR']) return;\r\n document.querySelectorAll(`form[data-payment-processor]`).forEach(el => {\r\n globalThis['PAYMENTPROCESSOR'] = new InvoicePaymentPage(el);\r\n });\r\n }\r\n });\r\n}"],"names":["InvoicePaymentPage","invoiceNumberInput","this","form","querySelector","invoiceNumber","value","to","emailAddressInput","emailAddress","invoiceAmountInput","invoiceAmount","nominal","parseFloat","isNaN","Math","round","asStr","updateSurchargeLabels","document","querySelectorAll","forEach","el","innerText","dataset","surchargeFactor","toLocaleString","style","currency","creditCardSurchargeRows","creditCardSurchargeSelect","creditCardSurchageIncluded","creditCardSurchargeAgreedCheckbox","creditCardSurchargeAgreed","checked","inputs","constructor","Instance","cb","addEventListener","ev","validate","globalThis","createCreditCardFrame","publishableApiKey","paymentProcessor","tokenMode","onValid","onInvalid","paywayInitialised","submitButton","getElementById","err","frame","parentElement","i","classList","remove","pointerEvents","opacity","disabled","errMesg","add","getToken","data","formData","FormData","append","singleUseTokenId","creditCard","cardScheme","fetch","action","body","method","then","resp","ok","json","invalidField","scrollIntoView","block","behavior","feedback","invalidFeedback","console","log","failMessage","failed","paymentAmount","orderNumber","transactionDateTime","receiptNumber","catch","length","charCodeAt","focus","matches","emailValidation","RegExp","match","c","substring","appendDecimal","endsWith","replace","e","preventSubmit","contains","href","location","pathname","encodeURIComponent","paymentButtonLabel","readyState"],"sourceRoot":""}