diff --git a/src/CONST.js b/src/CONST.js index c60a5d15b06e..10ef79563be5 100755 --- a/src/CONST.js +++ b/src/CONST.js @@ -86,7 +86,6 @@ const CONST = { PENDING: 'PENDING', }, MAX_LENGTH: { - TAX_ID_NUMBER: 9, SSN: 4, ZIP_CODE: 5, }, @@ -640,6 +639,8 @@ const CONST = { // eslint-disable-next-line max-len, no-misleading-character-class EMOJIS: /(?:\uD83D(?:\uDC41\u200D\uD83D\uDDE8|\uDC68\u200D\uD83D[\uDC68\uDC69]\u200D\uD83D(?:\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?)|\uDC69\u200D\uD83D\uDC69\u200D\uD83D(?:\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?))|[\u2700-\u27bf]|(?:\ud83c[\udde6-\uddff]){2}|[\ud800-\udbff][\udc00-\udfff]|[\u0023-\u0039]\ufe0f?\u20e3|\u3299|\u3297|\u303d|\u3030|\u24c2|\ud83c[\udd70-\udd71]|\ud83c[\udd7e-\udd7f]|\ud83c\udd8e|\ud83c[\udd91-\udd9a]|\ud83c[\udde6-\uddff]|[\ud83c\ude01-\ude02]|\ud83c\ude1a|\ud83c\ude2f|[\ud83c\ude32-\ude3a]|[\ud83c\ude50-\ude51]|\u203c|\u2049|[\u25aa-\u25ab]|\u25b6|\u25c0|[\u25fb-\u25fe]|\u00a9|\u00ae|\u2122|\u2139|\ud83c\udc04|[\u2600-\u26FF]|\u2b05|\u2b06|\u2b07|\u2b1b|\u2b1c|\u2b50|\u2b55|\u231a|\u231b|\u2328|\u23cf|[\u23e9-\u23f3]|[\u23f8-\u23fa]|\ud83c\udccf|\u2934|\u2935|[\u2190-\u21ff])/g, + TAX_ID: /^\d{9}$/, + NON_NUMERIC: /\D/g, }, PRONOUNS: { diff --git a/src/languages/en.js b/src/languages/en.js index 0c9f6e74a8d8..0c655c30a591 100755 --- a/src/languages/en.js +++ b/src/languages/en.js @@ -687,7 +687,7 @@ export default { legalBusinessName: 'Legal business name', companyWebsite: 'Company website', taxIDNumber: 'Tax ID number', - taxIDNumberPlaceholder: '9 digits, no hyphens', + taxIDNumberPlaceholder: '9 digits', companyType: 'Company type', incorporationDate: 'Incorporation date', incorporationState: 'Incorporation state', diff --git a/src/languages/es.js b/src/languages/es.js index 3a2729b04f1e..1ecec657163d 100644 --- a/src/languages/es.js +++ b/src/languages/es.js @@ -689,7 +689,7 @@ export default { legalBusinessName: 'Nombre comercial legal', companyWebsite: 'Página web de la empresa', taxIDNumber: 'Número de identificación fiscal', - taxIDNumberPlaceholder: '9 dígitos, sin guiones', + taxIDNumberPlaceholder: '9 dígitos', companyType: 'Tipo de empresa', incorporationDate: 'Fecha de incorporación', incorporationState: 'Estado de incorporación', diff --git a/src/libs/ValidationUtils.js b/src/libs/ValidationUtils.js index 83ce6b2c816f..5138541a8bac 100644 --- a/src/libs/ValidationUtils.js +++ b/src/libs/ValidationUtils.js @@ -355,6 +355,16 @@ function isExistingRoomName(roomName, reports, policyID) { ); } +/** + * Checks if tax ID consists of 9 digits + * + * @param {String} taxID + * @returns {Boolean} + */ +function isValidTaxID(taxID) { + return CONST.REGEX.TAX_ID.test(taxID.replace(CONST.REGEX.NON_NUMERIC, '')); +} + export { meetsAgeRequirements, isValidAddress, @@ -381,4 +391,5 @@ export { doesFailCharacterLimit, isReservedRoomName, isExistingRoomName, + isValidTaxID, }; diff --git a/src/pages/ReimbursementAccount/CompanyStep.js b/src/pages/ReimbursementAccount/CompanyStep.js index 384a7bfeba05..832dac6e63f0 100644 --- a/src/pages/ReimbursementAccount/CompanyStep.js +++ b/src/pages/ReimbursementAccount/CompanyStep.js @@ -142,7 +142,7 @@ class CompanyStep extends React.Component { errors.website = true; } - if (!/[0-9]{9}/.test(this.state.companyTaxID)) { + if (!ValidationUtils.isValidTaxID(this.state.companyTaxID)) { errors.companyTaxID = true; } @@ -176,7 +176,7 @@ class CompanyStep extends React.Component { } const incorporationDate = moment(this.state.incorporationDate).format(CONST.DATE.MOMENT_FORMAT_STRING); - BankAccounts.setupWithdrawalAccount({...this.state, incorporationDate}); + BankAccounts.setupWithdrawalAccount({...this.state, incorporationDate, companyTaxID: this.state.companyTaxID.replace(CONST.REGEX.NON_NUMERIC, '')}); } render() { @@ -262,7 +262,6 @@ class CompanyStep extends React.Component { disabled={shouldDisableCompanyTaxID} placeholder={this.props.translate('companyStep.taxIDNumberPlaceholder')} errorText={this.getErrorText('companyTaxID')} - maxLength={CONST.BANK_ACCOUNT.MAX_LENGTH.TAX_ID_NUMBER} />