{"version":3,"file":"static/js/application.initial~a79a3f18.6f238fba.js","mappings":"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","sources":["../webpack/bootstrap","../../../../../../../../external/underscore","../webpack-src:/address/index.js","../webpack-src:/address/src/address-metadata.js","../webpack-src:/address/src/address-utils.js","../webpack-src:/address/src/constants/abl.js","../webpack-src:/address/src/constants/index.js","../webpack-src:/common-utils/index.js","../webpack-src:/common-utils/src/constants/index.js","../webpack-src:/common-utils/src/constants/date.js","../webpack-src:/common-utils/src/constants/grid.js","../webpack-src:/common-utils/src/date-utils.js","../../../../../../../../external/@bingads-webui-universal/temporal-utitlities","../webpack-src:/common-utils/src/file-utils.js","../webpack-src:/common-utils/src/form-utils.js","../webpack-src:/common-utils/src/number-utils.js","../webpack-src:/common-utils/src/string-utils.js","../webpack-src:/common-utils/src/log-utils.js","../webpack-src:/entity-utils-legacy-strings/index.js","../webpack-src:/entity-utils-legacy-strings/src/legacy-strings-for-new-i18n.js","../webpack-src:/entity-utils/index.js","../webpack-src:/entity-utils/src/constants/index.js","../webpack-src:/entity-utils/src/constants/account-identity-verification.js","../webpack-src:/entity-utils/src/constants/account.js","../webpack-src:/entity-utils/src/constants/account-verifications.js","../webpack-src:/entity-utils/src/constants/adjustments.js","../webpack-src:/entity-utils/src/constants/billing.js","../webpack-src:/entity-utils/src/constants/budget-center.js","../webpack-src:/entity-utils/src/constants/campaign.js","../webpack-src:/entity-utils/src/constants/common.js","../webpack-src:/entity-utils/src/constants/consolidated-billing.js","../webpack-src:/entity-utils/src/constants/tax.js","../webpack-src:/entity-utils/src/constants/country.js","../webpack-src:/entity-utils/src/constants/coupon.js","../webpack-src:/entity-utils/src/constants/currency.js","../webpack-src:/entity-utils/src/constants/customer.js","../webpack-src:/entity-utils/src/constants/insertion-order.js","../webpack-src:/entity-utils/src/constants/language.js","../webpack-src:/entity-utils/src/constants/linking.js","../webpack-src:/entity-utils/src/constants/notification.js","../webpack-src:/entity-utils/src/constants/payment.js","../webpack-src:/entity-utils/src/constants/permission.js","../webpack-src:/entity-utils/src/constants/recommendation.js","../webpack-src:/entity-utils/src/constants/regular-expression.js","../webpack-src:/entity-utils/src/constants/uk-fca-verification.js","../webpack-src:/entity-utils/src/constants/trade-screening-transformation.js","../webpack-src:/entity-utils/src/constants/dsa-enforcement.js","../webpack-src:/entity-utils/src/constants/error-code.js","../webpack-src:/entity-utils/src/constants/settings.js","../webpack-src:/entity-utils/src/abl-utils.js","../../../../../../../../external/@bingads-webui-clientcenter/address","../webpack-src:/entity-utils/src/account-identity-verification-utils.js","../webpack-src:/entity-utils/src/account-utils.js","../webpack-src:/entity-utils/src/country-utils.js","../webpack-src:/entity-utils/src/currency-utils.js","../webpack-src:/entity-utils/src/common.js","../webpack-src:/entity-utils/src/adjustments-utils.js","../webpack-src:/entity-utils/src/billing-utils.js","../webpack-src:/entity-utils/src/consolidated-billing-utils.js","../webpack-src:/entity-utils/src/coupon-utils.js","../webpack-src:/entity-utils/src/tax-utils.js","../webpack-src:/entity-utils/src/customer-utils.js","../webpack-src:/entity-utils/src/fraud-appeal-utils.js","../webpack-src:/entity-utils/src/insertion-order-utils.js","../webpack-src:/entity-utils/src/language-utils.js","../webpack-src:/entity-utils/src/payment-utils.js","../webpack-src:/entity-utils/src/permission-utils.js","../webpack-src:/entity-utils/src/uk-fca-verification-utils.js","../webpack-src:/entity-utils/src/user-role-utils.js","../webpack-src:/entity-utils/src/user-utils.js","../webpack-src:/js-data-cc-rest-base/index.js","../webpack-src:/js-data-cc-rest-base/src/index.js","../../../../../../../../external/@bingads-webui/js-data-rest","../webpack-src:/js-data-cc-rest-base/src/static-resource.js","../webpack-src:/js-data-cc-rest-base/src/utils.js","../../../../../../../../external/urijs","../webpack-src:/repository-utils/index.js","../webpack-src:/repository-utils/src/adjustment-reason-utils.js","../webpack-src:/repository-utils/src/country-utils.js","../webpack-src:/repository-utils/src/currency-utils.js","../webpack-src:/repository-utils/src/customer-utils.js","../webpack-src:/repository-utils/src/permission-utils.js","../webpack-src:/repository-utils/src/user-preference-utils.js","../webpack-src:/repository-utils/src/payment-utils.js","../webpack-src:/repository-utils/src/account-feature-utils.js","../../../../../../../../external/@bingads-webui-clientcenter/common-utils","../webpack-src:/restful-service/src/index.es","../webpack-src:/restful-service/src/http.es","../../../../../../../../external/@bingads-webui/http-util","../webpack-src:/restful-service/src/ajax-helper.es","../webpack-src:/url-builder-base/src/index.js","../webpack-src:/url-builder-base/src/url-builder.js","../webpack-src:/url-builder-base/src/url-helper.js","../webpack-others:/d:/dbs/el/actc/private/components/packages/window-interface/index.js"],"sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 26);\n","module.exports = __WEBPACK_EXTERNAL_MODULE__15__;","import { Metadata, AddressFields } from './src/address-metadata';\r\nimport * as AddressUtils from './src/address-utils';\r\nimport * as Constants from './src/constants/index';\r\n\r\nexport { Metadata, AddressFields };\r\nexport { AddressUtils };\r\nexport { Constants };\r\n","/* eslint-disable no-useless-escape */\r\nexport const RuleName = {\r\n maxLength: 'maxLength',\r\n minLength: 'minLength',\r\n required: 'required',\r\n match: 'match',\r\n};\r\nexport const AddressFields = {\r\n Line1: 'Line1',\r\n Line2: 'Line2',\r\n Line3: 'Line3',\r\n Line4: 'Line4',\r\n City: 'City',\r\n StateOrProvinceName: 'StateOrProvinceName',\r\n PostalCode: 'PostalCode',\r\n CountryName: 'CountryName',\r\n};\r\n\r\nconst defaultLine1 = {\r\n [RuleName.maxLength]: 512,\r\n [RuleName.required]: true,\r\n label: _TL_('Address line 1'),\r\n visible: true,\r\n order: 0,\r\n};\r\nconst defaultLine2 = {\r\n [RuleName.maxLength]: 512,\r\n label: _TL_('Address line 2'),\r\n visible: true,\r\n order: 1,\r\n};\r\nconst defaultLine3 = {\r\n [RuleName.maxLength]: 512,\r\n label: _TL_('Address line 3'),\r\n visible: true,\r\n order: 2,\r\n};\r\nconst defaultLine4 = {\r\n [RuleName.maxLength]: 512,\r\n label: _TL_('Address line 4'),\r\n visible: true,\r\n order: 3,\r\n};\r\nconst defaultCity = {\r\n [RuleName.maxLength]: 35,\r\n [RuleName.required]: true,\r\n label: _TL_('City'),\r\n visible: true,\r\n order: 4,\r\n};\r\nconst defaultStateOrProvince = {\r\n [RuleName.maxLength]: 50,\r\n label: _TL_('State or province'),\r\n visible: true,\r\n order: 5,\r\n};\r\nconst defaultBlockDisplayFormat = [\r\n [AddressFields.Line1],\r\n [AddressFields.Line2],\r\n [AddressFields.Line3],\r\n [AddressFields.Line4],\r\n [AddressFields.City],\r\n [AddressFields.StateOrProvinceName],\r\n [AddressFields.PostalCode],\r\n [AddressFields.CountryName],\r\n];\r\n\r\nconst optionalStateOrProvinceCountries = ['AG', 'AI', 'AS', 'AW', 'CC', 'CD', 'CK', 'CX', 'BB', 'FK', 'GF', 'GI', 'GL', 'GP', 'GU', 'KN', 'LC', 'MO', 'MP', 'MS', 'MT', 'NC', 'NF', 'NR', 'NU', 'PF', 'PM', 'PN', 'PS', 'PW', 'RE', 'RS', 'SM', 'TK', 'TL', 'TO', 'VA', 'VG', 'VI', 'WF'];\r\nconst defaultAddressForOptionalStateOrProvinceCountries = {\r\n Line1: defaultLine1,\r\n Line2: defaultLine2,\r\n Line3: defaultLine3,\r\n Line4: defaultLine4,\r\n City: defaultCity,\r\n PostalCode: {\r\n [RuleName.maxLength]: 10,\r\n [RuleName.required]: true,\r\n label: _TL_('Postal code'),\r\n visible: true,\r\n order: 5,\r\n },\r\n StateOrProvince: {\r\n [RuleName.maxLength]: 50,\r\n label: _TL_('Province'),\r\n visible: true,\r\n order: 6,\r\n },\r\n BlockDisplayFormat: [\r\n [AddressFields.Line1],\r\n [AddressFields.Line2],\r\n [AddressFields.Line3],\r\n [AddressFields.Line4],\r\n [AddressFields.City, AddressFields.PostalCode],\r\n [AddressFields.CountryName],\r\n ],\r\n};\r\n\r\nconst optionalProvinceAndPostalCodeCountries = ['AN'];\r\nconst defaultAddressForOptionalProvinceAndPostalCodeCountries = {\r\n Line1: defaultLine1,\r\n Line2: defaultLine2,\r\n Line3: defaultLine3,\r\n Line4: defaultLine4,\r\n City: defaultCity,\r\n PostalCode: {\r\n [RuleName.maxLength]: 10,\r\n label: _TL_('Postal code'),\r\n visible: true,\r\n order: 5,\r\n },\r\n StateOrProvince: {\r\n [RuleName.maxLength]: 50,\r\n label: _TL_('Province'),\r\n visible: true,\r\n order: 6,\r\n },\r\n BlockDisplayFormat: [\r\n [AddressFields.Line1],\r\n [AddressFields.Line2],\r\n [AddressFields.Line3],\r\n [AddressFields.Line4],\r\n [AddressFields.City, AddressFields.PostalCode],\r\n [AddressFields.CountryName],\r\n ],\r\n};\r\n\r\nconst optionalStateOrProvinceCountriesMetadata = optionalStateOrProvinceCountries.reduce((prev, curr) => ({ ...prev, [curr]: defaultAddressForOptionalStateOrProvinceCountries }), {});\r\nconst optionalProvinceAndPostalCodeCountriesMetadata = optionalProvinceAndPostalCodeCountries.reduce((prev, curr) => ({ ...prev, [curr]: defaultAddressForOptionalProvinceAndPostalCodeCountries }), {});\r\n\r\nexport const Metadata = {\r\n US: {\r\n Line1: defaultLine1,\r\n Line2: defaultLine2,\r\n Line3: defaultLine3,\r\n Line4: defaultLine4,\r\n City: defaultCity,\r\n StateOrProvince: {\r\n [RuleName.maxLength]: 50,\r\n [RuleName.required]: true,\r\n label: _TL_('State'),\r\n visible: true,\r\n order: 5,\r\n },\r\n PostalCode: {\r\n [RuleName.maxLength]: 10,\r\n [RuleName.required]: true,\r\n [RuleName.match]: '^$|^[0-9]{5}(\\-[0-9]{4})?$',\r\n label: _TL_('ZIP code'),\r\n visible: true,\r\n order: 6,\r\n },\r\n BlockDisplayFormat: [\r\n [AddressFields.Line1],\r\n [AddressFields.Line2],\r\n [AddressFields.Line3],\r\n [AddressFields.Line4],\r\n [AddressFields.City, ',', AddressFields.StateOrProvinceName, AddressFields.PostalCode],\r\n [AddressFields.CountryName],\r\n ],\r\n },\r\n CA: {\r\n Line1: defaultLine1,\r\n Line2: defaultLine2,\r\n Line3: defaultLine3,\r\n Line4: defaultLine4,\r\n City: defaultCity,\r\n StateOrProvince: {\r\n [RuleName.maxLength]: 50,\r\n [RuleName.required]: true,\r\n label: _TL_('Province'),\r\n visible: true,\r\n order: 5,\r\n },\r\n PostalCode: {\r\n [RuleName.maxLength]: 10,\r\n [RuleName.required]: true,\r\n [RuleName.match]: '^$|^[a-zA-Z][0-9][a-zA-Z][ ]?[0-9][a-zA-Z][0-9]$',\r\n label: _TL_('Postal code'),\r\n visible: true,\r\n order: 6,\r\n },\r\n BlockDisplayFormat: [\r\n [AddressFields.Line1],\r\n [AddressFields.Line2],\r\n [AddressFields.Line3],\r\n [AddressFields.Line4],\r\n [AddressFields.City, AddressFields.StateOrProvinceName, AddressFields.PostalCode],\r\n [AddressFields.CountryName],\r\n ],\r\n },\r\n IT: {\r\n Line1: defaultLine1,\r\n Line2: defaultLine2,\r\n Line3: defaultLine3,\r\n Line4: defaultLine4,\r\n City: defaultCity,\r\n StateOrProvince: {\r\n [RuleName.maxLength]: 50,\r\n [RuleName.required]: true,\r\n label: _TL_('Province or region'),\r\n visible: true,\r\n order: 5,\r\n },\r\n PostalCode: {\r\n [RuleName.maxLength]: 10,\r\n [RuleName.required]: true,\r\n [RuleName.match]: '^$|^[0-9]{5,5}$',\r\n label: _TL_('ZIP code'),\r\n visible: true,\r\n order: 6,\r\n },\r\n BlockDisplayFormat: defaultBlockDisplayFormat,\r\n },\r\n ES: {\r\n Line1: defaultLine1,\r\n Line2: defaultLine2,\r\n Line3: defaultLine3,\r\n Line4: defaultLine4,\r\n City: defaultCity,\r\n StateOrProvince: {\r\n [RuleName.maxLength]: 50,\r\n [RuleName.required]: true,\r\n label: _TL_('State or province'),\r\n visible: true,\r\n order: 5,\r\n },\r\n PostalCode: {\r\n [RuleName.maxLength]: 10,\r\n [RuleName.required]: true,\r\n [RuleName.match]: '^$|^[0-9]{5,5}$',\r\n label: _TL_('ZIP code'),\r\n visible: true,\r\n order: 6,\r\n },\r\n BlockDisplayFormat: defaultBlockDisplayFormat,\r\n },\r\n BR: {\r\n Line1: defaultLine1,\r\n Line2: defaultLine2,\r\n Line3: defaultLine3,\r\n Line4: defaultLine4,\r\n City: defaultCity,\r\n StateOrProvince: {\r\n [RuleName.maxLength]: 50,\r\n [RuleName.required]: true,\r\n label: _TL_('State or province'),\r\n visible: true,\r\n order: 5,\r\n },\r\n PostalCode: {\r\n [RuleName.maxLength]: 10,\r\n [RuleName.required]: true,\r\n [RuleName.match]: '^$|^[0-9]{5,5}[-][0-9]{3,3}$',\r\n label: _TL_('ZIP code'),\r\n visible: true,\r\n order: 6,\r\n },\r\n BlockDisplayFormat: defaultBlockDisplayFormat,\r\n },\r\n IN: {\r\n Line1: defaultLine1,\r\n Line2: defaultLine2,\r\n Line3: defaultLine3,\r\n Line4: defaultLine4,\r\n City: defaultCity,\r\n StateOrProvince: {\r\n [RuleName.maxLength]: 50,\r\n [RuleName.required]: true,\r\n label: _TL_('State or province'),\r\n visible: true,\r\n order: 5,\r\n },\r\n PostalCode: {\r\n [RuleName.maxLength]: 10,\r\n [RuleName.required]: true,\r\n [RuleName.match]: '^$|^[0-9]{6,6}$',\r\n label: _TL_('Postal code'),\r\n visible: true,\r\n order: 6,\r\n },\r\n BlockDisplayFormat: defaultBlockDisplayFormat,\r\n },\r\n AU: {\r\n Line1: defaultLine1,\r\n Line2: defaultLine2,\r\n Line3: defaultLine3,\r\n Line4: defaultLine4,\r\n City: defaultCity,\r\n StateOrProvince: {\r\n [RuleName.maxLength]: 50,\r\n [RuleName.required]: true,\r\n label: _TL_('State or province'),\r\n visible: true,\r\n order: 5,\r\n },\r\n PostalCode: {\r\n [RuleName.maxLength]: 10,\r\n [RuleName.required]: true,\r\n [RuleName.match]: '^$|^[0-9]{4,4}$',\r\n label: _TL_('ZIP or Postal code'),\r\n visible: true,\r\n order: 6,\r\n },\r\n BlockDisplayFormat: defaultBlockDisplayFormat,\r\n },\r\n CN: {\r\n Line1: defaultLine1,\r\n Line2: defaultLine2,\r\n Line3: defaultLine3,\r\n Line4: defaultLine4,\r\n City: defaultCity,\r\n StateOrProvince: {\r\n [RuleName.maxLength]: 50,\r\n [RuleName.required]: true,\r\n label: _TL_('State or province'),\r\n visible: true,\r\n order: 5,\r\n },\r\n PostalCode: {\r\n [RuleName.maxLength]: 10,\r\n [RuleName.required]: true,\r\n [RuleName.match]: '^$|^[0-9]{6,6}$',\r\n label: _TL_('ZIP code'),\r\n visible: true,\r\n order: 6,\r\n },\r\n BlockDisplayFormat: defaultBlockDisplayFormat,\r\n },\r\n GB: {\r\n Line1: defaultLine1,\r\n Line2: defaultLine2,\r\n Line3: defaultLine3,\r\n Line4: defaultLine4,\r\n City: defaultCity,\r\n PostalCode: {\r\n [RuleName.maxLength]: 10,\r\n [RuleName.required]: true,\r\n [RuleName.match]: '^$|^([gG][iI][rR][ ]?0[aA]{2,2}|[a-zA-Z]([0-9][0-9a-zA-Z]?|[a-zA-Z][0-9][0-9a-zA-Z]?)[ ]?[0-9][a-zA-Z]{2,2})$',\r\n label: _TL_('Postal code'),\r\n visible: true,\r\n order: 5,\r\n },\r\n StateOrProvince: {\r\n [RuleName.maxLength]: 50,\r\n label: _TL_('Province'),\r\n visible: true,\r\n order: 6,\r\n },\r\n BlockDisplayFormat: defaultBlockDisplayFormat,\r\n },\r\n SG: {\r\n Line1: defaultLine1,\r\n Line2: defaultLine2,\r\n Line3: defaultLine3,\r\n Line4: defaultLine4,\r\n City: defaultCity,\r\n PostalCode: {\r\n [RuleName.maxLength]: 10,\r\n [RuleName.required]: true,\r\n [RuleName.match]: '^$|^[0-9]{6,6}$',\r\n label: _TL_('Postal code'),\r\n visible: true,\r\n order: 5,\r\n },\r\n StateOrProvince: {\r\n [RuleName.maxLength]: 50,\r\n label: _TL_('Province'),\r\n visible: true,\r\n order: 6,\r\n },\r\n BlockDisplayFormat: [\r\n [AddressFields.Line1],\r\n [AddressFields.Line2],\r\n [AddressFields.Line3],\r\n [AddressFields.Line4],\r\n [AddressFields.City, AddressFields.PostalCode],\r\n [AddressFields.CountryName],\r\n ],\r\n },\r\n FR: {\r\n Line1: defaultLine1,\r\n Line2: defaultLine2,\r\n Line3: defaultLine3,\r\n Line4: defaultLine4,\r\n PostalCode: {\r\n [RuleName.maxLength]: 10,\r\n [RuleName.required]: true,\r\n [RuleName.match]: '^$|^[0-9]{5,5}$',\r\n label: _TL_('Postal code'),\r\n visible: true,\r\n order: 4,\r\n },\r\n City: {\r\n [RuleName.maxLength]: 35,\r\n [RuleName.required]: true,\r\n label: _TL_('City'),\r\n visible: true,\r\n order: 5,\r\n },\r\n StateOrProvince: {\r\n [RuleName.maxLength]: 50,\r\n label: _TL_('Province'),\r\n visible: true,\r\n order: 6,\r\n },\r\n BlockDisplayFormat: [\r\n [AddressFields.Line1],\r\n [AddressFields.Line2],\r\n [AddressFields.Line3],\r\n [AddressFields.Line4],\r\n [AddressFields.PostalCode, AddressFields.City],\r\n [AddressFields.CountryName],\r\n ],\r\n },\r\n SA: {\r\n Line1: defaultLine1,\r\n Line2: defaultLine2,\r\n Line3: defaultLine3,\r\n Line4: defaultLine4,\r\n City: defaultCity,\r\n StateOrProvince: defaultStateOrProvince,\r\n PostalCode: {\r\n [RuleName.maxLength]: 10,\r\n [RuleName.required]: true,\r\n [RuleName.match]: '^$|^[0-9]{5,5}$',\r\n label: _TL_('ZIP code'),\r\n visible: true,\r\n order: 6,\r\n },\r\n BlockDisplayFormat: defaultBlockDisplayFormat,\r\n },\r\n DK: {\r\n Line1: defaultLine1,\r\n Line2: defaultLine2,\r\n Line3: defaultLine3,\r\n Line4: defaultLine4,\r\n City: defaultCity,\r\n StateOrProvince: defaultStateOrProvince,\r\n PostalCode: {\r\n [RuleName.maxLength]: 10,\r\n [RuleName.required]: true,\r\n [RuleName.match]: '^$|^[0-9]{4,4}$',\r\n label: _TL_('ZIP code'),\r\n visible: true,\r\n order: 6,\r\n },\r\n BlockDisplayFormat: defaultBlockDisplayFormat,\r\n },\r\n DE: {\r\n Line1: defaultLine1,\r\n Line2: defaultLine2,\r\n Line3: defaultLine3,\r\n Line4: defaultLine4,\r\n City: defaultCity,\r\n StateOrProvince: defaultStateOrProvince,\r\n PostalCode: {\r\n [RuleName.maxLength]: 10,\r\n [RuleName.required]: true,\r\n [RuleName.match]: '^$|^[0-9]{5,5}$',\r\n label: _TL_('ZIP code'),\r\n visible: true,\r\n order: 6,\r\n },\r\n BlockDisplayFormat: defaultBlockDisplayFormat,\r\n },\r\n AT: {\r\n Line1: defaultLine1,\r\n Line2: defaultLine2,\r\n Line3: defaultLine3,\r\n Line4: defaultLine4,\r\n City: defaultCity,\r\n StateOrProvince: defaultStateOrProvince,\r\n PostalCode: {\r\n [RuleName.maxLength]: 10,\r\n [RuleName.required]: true,\r\n [RuleName.match]: '^$|^[1-9][0-9]{3,3}$',\r\n label: _TL_('ZIP code'),\r\n visible: true,\r\n order: 6,\r\n },\r\n BlockDisplayFormat: defaultBlockDisplayFormat,\r\n },\r\n CH: {\r\n Line1: defaultLine1,\r\n Line2: defaultLine2,\r\n Line3: defaultLine3,\r\n Line4: defaultLine4,\r\n City: defaultCity,\r\n StateOrProvince: defaultStateOrProvince,\r\n PostalCode: {\r\n [RuleName.maxLength]: 10,\r\n [RuleName.required]: true,\r\n [RuleName.match]: '^$|^[1-9][0-9]{3,3}$',\r\n label: _TL_('ZIP code'),\r\n visible: true,\r\n order: 6,\r\n },\r\n BlockDisplayFormat: defaultBlockDisplayFormat,\r\n },\r\n FI: {\r\n Line1: defaultLine1,\r\n Line2: defaultLine2,\r\n Line3: defaultLine3,\r\n Line4: defaultLine4,\r\n City: defaultCity,\r\n StateOrProvince: defaultStateOrProvince,\r\n PostalCode: {\r\n [RuleName.maxLength]: 10,\r\n [RuleName.required]: true,\r\n [RuleName.match]: '^$|^[0-9]{5,5}$',\r\n label: _TL_('ZIP code'),\r\n visible: true,\r\n order: 6,\r\n },\r\n BlockDisplayFormat: defaultBlockDisplayFormat,\r\n },\r\n IL: {\r\n Line1: defaultLine1,\r\n Line2: defaultLine2,\r\n Line3: defaultLine3,\r\n Line4: defaultLine4,\r\n City: defaultCity,\r\n StateOrProvince: defaultStateOrProvince,\r\n PostalCode: {\r\n [RuleName.maxLength]: 10,\r\n [RuleName.required]: true,\r\n [RuleName.match]: '^$|^([0-9]{5,5}|[0-9]{7,7})$',\r\n label: _TL_('ZIP code'),\r\n visible: true,\r\n order: 6,\r\n },\r\n BlockDisplayFormat: defaultBlockDisplayFormat,\r\n },\r\n KR: {\r\n Line1: defaultLine1,\r\n Line2: defaultLine2,\r\n Line3: defaultLine3,\r\n Line4: defaultLine4,\r\n City: defaultCity,\r\n StateOrProvince: defaultStateOrProvince,\r\n PostalCode: {\r\n [RuleName.maxLength]: 10,\r\n [RuleName.required]: true,\r\n [RuleName.match]: '^$|^[0-9]{3,3}[-]?([0-9]{3,3}|[0-9]{2,2})$',\r\n label: _TL_('ZIP code'),\r\n visible: true,\r\n order: 6,\r\n },\r\n BlockDisplayFormat: defaultBlockDisplayFormat,\r\n },\r\n NL: {\r\n Line1: defaultLine1,\r\n Line2: defaultLine2,\r\n Line3: defaultLine3,\r\n Line4: defaultLine4,\r\n City: defaultCity,\r\n StateOrProvince: defaultStateOrProvince,\r\n PostalCode: {\r\n [RuleName.maxLength]: 10,\r\n [RuleName.required]: true,\r\n [RuleName.match]: '^$|^[1-9][0-9]{3,3}[ ]?[a-zA-Z]{2,2}$',\r\n label: _TL_('ZIP code'),\r\n visible: true,\r\n order: 6,\r\n },\r\n BlockDisplayFormat: defaultBlockDisplayFormat,\r\n },\r\n NO: {\r\n Line1: defaultLine1,\r\n Line2: defaultLine2,\r\n Line3: defaultLine3,\r\n Line4: defaultLine4,\r\n City: defaultCity,\r\n StateOrProvince: defaultStateOrProvince,\r\n PostalCode: {\r\n [RuleName.maxLength]: 10,\r\n [RuleName.required]: true,\r\n [RuleName.match]: '^$|^[0-9]{4,4}$',\r\n label: _TL_('ZIP code'),\r\n visible: true,\r\n order: 6,\r\n },\r\n BlockDisplayFormat: defaultBlockDisplayFormat,\r\n },\r\n RU: {\r\n Line1: defaultLine1,\r\n Line2: defaultLine2,\r\n Line3: defaultLine3,\r\n Line4: defaultLine4,\r\n City: defaultCity,\r\n StateOrProvince: defaultStateOrProvince,\r\n PostalCode: {\r\n [RuleName.maxLength]: 10,\r\n [RuleName.required]: true,\r\n [RuleName.match]: '^$|^[0-9]{6,6}$',\r\n label: _TL_('ZIP code'),\r\n visible: true,\r\n order: 6,\r\n },\r\n BlockDisplayFormat: defaultBlockDisplayFormat,\r\n },\r\n SE: {\r\n Line1: defaultLine1,\r\n Line2: defaultLine2,\r\n Line3: defaultLine3,\r\n Line4: defaultLine4,\r\n City: defaultCity,\r\n StateOrProvince: defaultStateOrProvince,\r\n PostalCode: {\r\n [RuleName.maxLength]: 10,\r\n [RuleName.required]: true,\r\n [RuleName.match]: '^$|^(3[013-9]|4[0-7]|9[0-8]|[125-8][0-9])[0-9][ ]{1,1}[0-9]{2,2}$',\r\n label: _TL_('ZIP code'),\r\n visible: true,\r\n order: 6,\r\n },\r\n BlockDisplayFormat: defaultBlockDisplayFormat,\r\n },\r\n TW: {\r\n Line1: defaultLine1,\r\n Line2: defaultLine2,\r\n Line3: defaultLine3,\r\n Line4: defaultLine4,\r\n City: defaultCity,\r\n StateOrProvince: defaultStateOrProvince,\r\n PostalCode: {\r\n [RuleName.maxLength]: 10,\r\n [RuleName.required]: true,\r\n [RuleName.match]: '^$|^[0-9]{3,3}|[0-9]{5,5}$',\r\n label: _TL_('ZIP code'),\r\n visible: true,\r\n order: 6,\r\n },\r\n BlockDisplayFormat: defaultBlockDisplayFormat,\r\n },\r\n ...optionalStateOrProvinceCountriesMetadata,\r\n ...optionalProvinceAndPostalCodeCountriesMetadata,\r\n default: {\r\n Line1: defaultLine1,\r\n Line2: defaultLine2,\r\n Line3: defaultLine3,\r\n Line4: defaultLine4,\r\n City: defaultCity,\r\n StateOrProvince: {\r\n [RuleName.maxLength]: 50,\r\n [RuleName.required]: true,\r\n label: _TL_('State or province'),\r\n visible: true,\r\n order: 5,\r\n },\r\n PostalCode: {\r\n [RuleName.maxLength]: 10,\r\n [RuleName.required]: true,\r\n label: _TL_('ZIP or Postal code'),\r\n visible: true,\r\n order: 6,\r\n },\r\n BlockDisplayFormat: defaultBlockDisplayFormat,\r\n },\r\n};\r\n","import _ from 'underscore';\r\nimport { Metadata, AddressFields, RuleName } from './address-metadata';\r\nimport { BusinessNameMaxLength } from './constants/abl';\r\n\r\nconst AddressTwoLinesSeparator = ', ';\r\nconst AddressBlockLinesSeparator = ' ';\r\nconst AddressInlineSeparator = ' ';\r\nconst AddressProperties = [..._.toArray(AddressFields), 'Id', 'Country', 'StateOrProvince'];\r\nconst {\r\n maxLength,\r\n minLength,\r\n required,\r\n match,\r\n} = RuleName;\r\n\r\nconst getMetadata = countryCode => Metadata[countryCode] || Metadata.default;\r\nconst inlineFormatOfProperties = (address, properties, _separator) => _.reduce(properties, (memo, field) => {\r\n const addressField = _.isString(address[field]) ? address[field].trim() : address[field];\r\n const separator = _.isEmpty(memo) ? '' : _separator;\r\n return _.isEmpty(addressField) ? memo : `${memo}${separator}${addressField}`;\r\n}, '');\r\n\r\n/**\r\n * Find the latest(max TimeStamp) validated address(if there is) from a given nonempty address list, the logic is to keep the same result with backend(improved with O(n) solution):\r\n * https://msasg.visualstudio.com/Bing_Ads/_git/AnB?path=%2Fprivate%2FClientCenter%2FMT%2FSource%2FClientCenter%2FEO%2FAddress%2FCustomerAddressLoadEO.cs&version=GBmaster&line=152&lineEnd=154&lineStartColumn=38&lineEndColumn=47&lineStyle=plain&_a=contents\r\n * The TimeStamp got from backend is byte[8], it doesn't represent any real date, instead it means the upsert order of each record: https://docs.microsoft.com/en-us/sql/t-sql/data-types/rowversion-transact-sql?redirectedfrom=MSDN&view=sql-server-ver15\r\n * The algorithm used here is to construct the HEX string version of TimeStamp leading with the validated identifier(validated: 1, not: 0). So that the max string is the candidate.\r\n * @param {Array.
} addressList The given nonempty address list\r\n * @returns {address} Retruns the found address\r\n */\r\nexport const findLatestValidatedAddress = addressList => _.max(\r\n addressList,\r\n ({ IsValid, ValidationVersionId, TimeStamp }) =>\r\n (_.isBoolean(IsValid) || _.isNumber(ValidationVersionId) ? '1' : '0')\r\n + (_.isArray(TimeStamp) ? TimeStamp.map(byte => byte.toString(16)).join('') : '0000000000000000') // safe guard for no-TimeStamp address\r\n);\r\n\r\n/**\r\n * @param {object} address The address object.\r\n * @returns {boolean} Returns if given address object is not empty and it's country property is not empty.\r\n */\r\nexport const exists = address => _.isObject(address) && !_.isEmpty(address.Country);\r\n\r\n/**\r\n * Whether the given address object is considered as not empty\r\n * The original code is from: https://msasg.visualstudio.com/DefaultCollection/Bing_Ads/_git/AdsAppUI?path=%2Fprivate%2FUI%2FCommon%2FMicrosoft.Advertising.Web.Mvc%2FControllers%2FBusinessAddressController.cs&version=GBmaster&line=130&lineEnd=142&lineStartColumn=9&lineEndColumn=10&lineStyle=plain&_a=contents\r\n * @param {object} address - The address object\r\n * @returns {boolean} - Returns true is the given address exists and it contains either StateOrProvince, PostalCode or City is not empty\r\n */\r\nexport const isNotEmpty = address => exists(address) && _.any(['StateOrProvince', 'PostalCode', 'City'], property => !_.isEmpty(address[property]));\r\n\r\n/**\r\n * @param {object} address The address object.\r\n * @returns {array} Returns array of string to display given address object with metadata display rules.\r\n */\r\n// TODO: will refactor with React after\r\nexport const blockLinesFormat = (address) => {\r\n if (!exists(address)) {\r\n return [];\r\n }\r\n const metadata = getMetadata(address.Country);\r\n const mapLine = line => _.reduce(line, (memo, field) => {\r\n if (_.contains(AddressFields, field)) {\r\n const addressField = _.isString(address[field]) ? address[field].trim() : address[field];\r\n const separator = _.isEmpty(memo) ? '' : AddressBlockLinesSeparator;\r\n return _.isEmpty(addressField) ? memo : `${memo}${separator}${addressField}`;\r\n }\r\n return `${memo}${_.isEmpty(memo) ? '' : field}`;\r\n }, '');\r\n\r\n return _.compact(_.map(metadata.BlockDisplayFormat, mapLine));\r\n};\r\n\r\n/**\r\n * @param {object} address The address object.\r\n * @returns {string} Returns display string of given address object with metadata properties.\r\n */\r\nexport const inlineFormat = (address) => {\r\n if (!exists(address)) {\r\n return '';\r\n }\r\n\r\n return blockLinesFormat(address).join(AddressInlineSeparator);\r\n};\r\n\r\n/** A method to get the address as a string, in a standard address format.\r\n * @param {object} address The address object.\r\n * @returns {string} Returns string of given address object, formatted like a typical address in a form. (e.g. 'line1 line2 line3 line4 city, state postalcode country')\r\n */\r\nexport const inlineFormatWithBusinessName = (address) => {\r\n if (!exists(address)) {\r\n return '';\r\n }\r\n\r\n return `${address.BusinessName ? address.BusinessName + AddressTwoLinesSeparator : ''}${inlineFormat(address)}`;\r\n};\r\n\r\n/**\r\n * Keep exporting this dropdownFormat to avoid breaking account-creation customer-address-selector\r\n * TODO: remove this util after replacing dropdownFormat with inlineFormatWithBusinessName\r\n */\r\nexport const dropdownFormat = inlineFormatWithBusinessName;\r\n\r\n/**\r\n * @param {object} address The address object.\r\n * @returns {array} Returns array of string to display given address object in two lines.\r\n */\r\nexport const twoLinesFormat = (address) => {\r\n if (!exists(address)) {\r\n return [];\r\n }\r\n const line1 = inlineFormatOfProperties(address, [AddressFields.Line1, AddressFields.Line2, AddressFields.Line3, AddressFields.Line4], AddressTwoLinesSeparator);\r\n const line2 = inlineFormatOfProperties(address, [AddressFields.City, AddressFields.StateOrProvinceName, AddressFields.PostalCode, AddressFields.CountryName], AddressTwoLinesSeparator);\r\n\r\n return _.compact([line1, line2]);\r\n};\r\n\r\n/**\r\n * Returns error object for given address\r\n * @param {object} address The address object to be validate.\r\n * @param {object} options The options.\r\n * @param {boolean} options.isOptional Whether address fields are required.\r\n * @returns {object} An object {[field]: array} that shows all errors for invalid fields, array is with object {ruleName, ruleValue}.\r\n */\r\nexport const validateAndReturnError = (address, { isOptional = false } = {}) => {\r\n const error = {};\r\n\r\n if (!exists(address)) {\r\n if (isOptional) {\r\n return {};\r\n }\r\n return { Country: [{ ruleName: required }] };\r\n }\r\n\r\n const metadata = getMetadata(address.Country);\r\n\r\n _.each(metadata, (field, addressProperty) => {\r\n const ruleValueRequired = isOptional ? false : field[required];\r\n const ruleValueMaxlength = field[maxLength];\r\n const ruleValueMinLength = field[minLength];\r\n const ruleValueMatch = field[match];\r\n const errorList = [];\r\n const value = (_.isString(address[addressProperty]) && address[addressProperty].trim()) || null;\r\n\r\n if (ruleValueRequired && _.isEmpty(value)) {\r\n errorList.push({ ruleName: required });\r\n }\r\n if (ruleValueMaxlength && !_.isEmpty(value) && value.length > ruleValueMaxlength) {\r\n errorList.push({ ruleName: maxLength, ruleValue: ruleValueMaxlength });\r\n }\r\n if (ruleValueMinLength && !_.isEmpty(value) && value.length < ruleValueMinLength) {\r\n errorList.push({ ruleName: minLength, ruleValue: ruleValueMinLength });\r\n }\r\n if (ruleValueMatch && !_.isEmpty(value) && _.isEmpty(value.match(ruleValueMatch))) {\r\n errorList.push({ ruleName: match, ruleValue: ruleValueMatch });\r\n }\r\n\r\n if (!_.isEmpty(errorList)) {\r\n error[addressProperty] = errorList;\r\n }\r\n });\r\n\r\n return error;\r\n};\r\n\r\n/**\r\n * Returns error object for given address that only validate MT contraint\r\n * For now we only validate maxlength for each property of billing address\r\n * @param {object} address The address object to be validate.\r\n * @returns {object} An object {[field]: array} that shows all errors for invalid fields, array is with object {ruleName, ruleValue}.\r\n */\r\nexport const validateMTConstraintOnly = address => _.chain(getMetadata(address && address.Country))\r\n .mapObject((field, addressProperty) => {\r\n const ruleValueMaxlength = field[maxLength];\r\n const value = _.isString(address[addressProperty]) && address[addressProperty].trim();\r\n\r\n if (ruleValueMaxlength && !_.isEmpty(value) && value.length > ruleValueMaxlength) {\r\n return [{ ruleName: maxLength, ruleValue: ruleValueMaxlength }];\r\n }\r\n return undefined;\r\n })\r\n .pick(_.identity)\r\n .value();\r\n\r\n/**\r\n * @param {object} address The address object.\r\n * @param {object} options The options.\r\n * @param {boolean} options.isOptional Whether address fields are required.\r\n * @returns {boolean} Returns if every property of given address object is valid according to metadata rules.\r\n */\r\nexport const isValid = (address, options) => _.isEmpty(validateAndReturnError(address, options));\r\n\r\n/**\r\n * @param {string} businessName The name of the business to check for validity.\r\n * @param {object} options The options.\r\n * @param {boolean} options.isOptional Whether business name is required.\r\n * @returns {boolean} Returns whether the business name is valid\r\n */\r\nexport const businessNameIsValid = (businessName, { isOptional = false } = {}) =>\r\n (!_.isEmpty(businessName) ? businessName.length < BusinessNameMaxLength : isOptional);\r\n\r\n/**\r\n * @param {object} accountBusinessAddress The account business address object.\r\n * @param {object} options The options.\r\n * @param {boolean} options.isOptional Whether business name is required.\r\n * @returns {boolean} Returns true if given account business name object is valid.\r\n */\r\nexport const isValidBusinessName = (accountBusinessAddress, { isOptional = false } = {}) =>\r\n (_.isObject(accountBusinessAddress) ? businessNameIsValid(accountBusinessAddress.BusinessName, { isOptional }) : isOptional);\r\n\r\n/**\r\n * Returns an address object with normal properties and string values trimmed\r\n * @param {object} address The address object to be normalized.\r\n * @returns {object} An address object with normal properties.\r\n */\r\nexport const normalizeAddress = address => _.chain(address)\r\n .pick(AddressProperties)\r\n .mapObject((field) => {\r\n const fieldValue = _.has(field, 'value') ? field.value : field;\r\n return _.isString(fieldValue) ? fieldValue.trim() : fieldValue;\r\n })\r\n .value();\r\n\r\n/**\r\n * Returns true if the 2 addresses exist and have their field matching exactly.\r\n * Only the fields of the normalizedAddress are compared if forceNormalized is set to true, and falsy values (undefined, null, '') are all treated like a not existing field.\r\n * @param {object} address1 The first address object.\r\n * @param {object} address2 The second address object.\r\n * @param {bool} options.forceNormalized true to force addresses in param to get normalized, false otherwise.\r\n * @param {Array.} options.propertiesToCompare properties to compare.\r\n * @returns {boolean} true if all field matches, false otherwise.\r\n */\r\nexport const areEqual = (address1, address2, { forceNormalized = false, propertiesToCompare = AddressProperties } = {}) => {\r\n if (!exists(address1) || !exists(address2)) {\r\n return false;\r\n }\r\n const addressToCompare1 = forceNormalized ? normalizeAddress(address1) : address1;\r\n const addressToCompare2 = forceNormalized ? normalizeAddress(address2) : address2;\r\n\r\n const fieldsMatch = (field1, field2) => field1 === field2 || (Boolean(field1) === false && Boolean(field2) === false);\r\n return _.all(propertiesToCompare, field => fieldsMatch(addressToCompare1[field], addressToCompare2[field]));\r\n};\r\n\r\n/**\r\n * Address type definition\r\n * @typedef {object} address\r\n * @property {string} Id The id of address object.\r\n * @property {string} Country The country of address object.\r\n * @property {string} Line1 The line1 of address object.\r\n * @property {string} Line2 The line2 of address object.\r\n * @property {string} Line3 The line3 of address object.\r\n * @property {string} Line4 The line4 of address object.\r\n * @property {string} City The city of address object.\r\n * @property {string} StateOrProvince The state of address object.\r\n * @property {string} PostalCode The postal code of address object.\r\n * @property {string} CountryName The localiazed country name of address object.\r\n * @property {string} StateOrProvinceName The localiazed state name of address object.\r\n */\r\n\r\n/**\r\n * Returns a copy of the given address object with additional utility methods.\r\n * @param {object} _address The address object to be extended with additional utility methods.\r\n * @returns {object} A copy of the extended address object.\r\n */\r\nexport const extendAddress = (_address) => {\r\n const address = normalizeAddress(_address);\r\n\r\n return _.defaults(address, {\r\n inlineFormat: () => inlineFormat(address),\r\n twoLinesFormat: () => twoLinesFormat(address),\r\n blockLinesFormat: () => blockLinesFormat(address),\r\n exists: () => exists(address),\r\n isValid: () => isValid(address),\r\n isValidBusinessName: () => isValidBusinessName(address),\r\n });\r\n};\r\n\r\n/**\r\n * Remove duplicate addresses based on addressFormatter from the given addressList\r\n * @param {Array.
} addressList - the given addressList\r\n * @param {object} options - extra options\r\n * @param {Array.} options.includedAddressIds - the address Ids to be included in the result list\r\n * @param {function} options.addressFormatter - the address formatter function\r\n * @param {function} options.addressValidator - the address validator function that filters expected addresses\r\n * @returns {Array.
} - the deduplicate address list, with an extra 'formatted' property in each address\r\n */\r\nexport const removeDuplicateAddresses = (addressList, {\r\n includedAddressIds = [],\r\n addressFormatter = inlineFormatWithBusinessName,\r\n addressValidator = isNotEmpty,\r\n} = {}) => {\r\n const validAddressList = _.isFunction(addressValidator) ? _.filter(addressList, addressValidator) : addressList;\r\n const includedAddresses = _.filter(validAddressList, address => includedAddressIds.includes(address.Id));\r\n const formattedIncludedAddresses = includedAddresses.map(address => addressFormatter(address));\r\n\r\n return _.chain(validAddressList)\r\n .map(address => ({ ...address, formatted: addressFormatter(address) }))\r\n .reject(({ Id, formatted }) => formattedIncludedAddresses.includes(formatted) && !includedAddressIds.includes(Id))\r\n .groupBy(address => address.formatted)\r\n .map(findLatestValidatedAddress)\r\n .value();\r\n};\r\n\r\n/**\r\n * Finds duplicate addresses in the given address list.\r\n *\r\n * @param {Array} addressList - The list of addresses to search for duplicates.\r\n * @param {Object} options - The options object.\r\n * @param {string} options.targetAddressId - The ID of the address to exclude from the search.\r\n * @param {Function} [options.addressFormatter=inlineFormatWithBusinessName] - The function to format the addresses for comparison.\r\n * @param {Function} [options.addressValidator=isNotEmpty] - The function to validate the addresses before searching for duplicates.\r\n * @returns {Array} - The list of duplicate addresses.\r\n */\r\nexport const findDuplicateAddresses = (addressList, {\r\n targetAddressId,\r\n addressFormatter = inlineFormatWithBusinessName,\r\n addressValidator = isNotEmpty,\r\n} = {}) => {\r\n const validAddressList = _.isFunction(addressValidator) ? _.filter(addressList, addressValidator) : addressList;\r\n const targetAddress = _.findWhere(validAddressList, { Id: targetAddressId });\r\n const formattedTargetAddress = addressFormatter(targetAddress);\r\n\r\n return _.chain(validAddressList)\r\n .reject(({ Id }) => Id === targetAddressId)\r\n .filter(address => addressFormatter(address) === formattedTargetAddress)\r\n .value();\r\n};\r\n\r\n/**\r\n * @typedef {object} ValidatedField\r\n * @property {string} value The field value\r\n * @property {bool} isValid The validation result of the field value\r\n *\r\n * @typedef {object} ValidatedAddress\r\n * @property {ValidatedField} Country\r\n * @property {ValidatedField} Line1\r\n * @property {ValidatedField} Line2\r\n * @property {ValidatedField} Line3\r\n * @property {ValidatedField} Line4\r\n * @property {ValidatedField} City\r\n * @property {ValidatedField} StateOrProvince\r\n * @property {ValidatedField} PostalCode\r\n */\r\n\r\n/**\r\n * TODO: Let AddressForm callback this AddressObject\r\n * Returns an plain address object from AddressForm callbacked validated address\r\n * @param {ValidatedAddress} validatedAddress - The validated address callbacked from AddressForm\r\n * @returns {address} - An plain address object.\r\n */\r\nexport const getAddressObject = validatedAddress =>\r\n _.chain(validatedAddress)\r\n .omit('isValid')\r\n .mapObject(({ value }) => value)\r\n .value();\r\n\r\n/**\r\n * Returns the city, state, country string from the given address object\r\n * Used only in CBV2 project\r\n * @param {address} address - The address object\r\n * @param {object} i18n - The i18n object\r\n * @returns {string} - The city, state, country string\r\n */\r\nexport const getCityStateCountryString = (address = {}, i18n) => {\r\n const { City, Country, CountryName } = address;\r\n const StateOrProvinceName = !_.isEmpty(address.StateOrProvinceName) ? address.StateOrProvinceName : i18n.getString(_TL_('No state/province'));\r\n if (Country === 'US' && City && CountryName) {\r\n return `${City}, ${StateOrProvinceName}, ${CountryName}`;\r\n }\r\n return CountryName ? `${StateOrProvinceName}, ${CountryName}` : '';\r\n};\r\n\r\n/**\r\n * Returns true if the two addresses have the same city, state, country\r\n * @param {address} address1 address object 1\r\n * @param {address} address2 address object 2\r\n * @param {object} i18n - The i18n object\r\n * @returns {boolean} true if city, state, country match, false otherwise\r\n */\r\nexport const isCityStateCountryMatch = (address1, address2, i18n) => {\r\n const cityStateCountry1 = getCityStateCountryString(address1, i18n);\r\n const cityStateCountry2 = getCityStateCountryString(address2, i18n);\r\n return cityStateCountry1 === cityStateCountry2;\r\n};\r\n","export const BusinessNameMaxLength = 90;\r\n","export * from './abl';\r\n","import * as Constants from './src/constants/index';\r\nimport * as DateUtils from './src/date-utils';\r\nimport * as FileUtils from './src/file-utils';\r\nimport * as FormUtils from './src/form-utils';\r\nimport * as NumberUtils from './src/number-utils';\r\nimport * as StringUtils from './src/string-utils';\r\nimport * as LogUtils from './src/log-utils';\r\n\r\nexport { Constants };\r\n\r\nexport {\r\n DateUtils,\r\n FileUtils,\r\n FormUtils,\r\n NumberUtils,\r\n StringUtils,\r\n LogUtils,\r\n};\r\n","export * from './date';\r\nexport * from './grid';\r\n","export const StandardDateFormat = 'M/d/yyyy';\r\n\r\nexport const MillisecondsPerDay = 86400000;\r\n\r\nexport const FrequencyMonthCountMap = Object.freeze({\r\n Monthly: 1,\r\n BIMonthly: 2,\r\n Quarterly: 3,\r\n Yearly: 12,\r\n});\r\n\r\nexport const FrequencyDayCountMap = Object.freeze({\r\n Monthly: 31,\r\n BIMonthly: 62,\r\n Quarterly: 92,\r\n Yearly: 366,\r\n});\r\n\r\nexport const FrequencyMonthI18nKeyMap = Object.freeze({\r\n Monthly: _TL_('Monthly'),\r\n BIMonthly: _TL_('Every 2 months'),\r\n Quarterly: _TL_('Quarterly'),\r\n Yearly: _TL_('Yearly'),\r\n});\r\n","export const GridStringNoValue = '-';\r\n","import _ from 'underscore';\r\nimport 'jquery';\r\nimport { parseCivilDate, formatCivilDate } from '@bingads-webui-universal/temporal-utitlities';\r\nimport { withoutTime } from '@bingads-webui-universal/primitive-utilities';\r\nimport IWindow from '@bingads-webui-clientcenter/window-interface';\r\n\r\nimport { MillisecondsPerDay, StandardDateFormat, FrequencyMonthCountMap } from './constants/date';\r\n\r\n/**\r\n * ATTENTION: You can directly using the i18n.getToday({ timeZone: 'America/Los_Angeles' }) method.\r\n * This is just a reminder in case you don't know or forget that i18n.getToday.\r\n * Returns the current date (without time) now of PST timezone.\r\n * @function\r\n * @returns {date} the current PST date now. Failed will return null.\r\n */\r\nexport const getPSTDateNow = ({ i18n }) => {\r\n if (_.isFunction(i18n.getToday)) {\r\n const todayObj = i18n.getToday({ timeZone: 'America/Los_Angeles' });\r\n return new Date(todayObj.year, todayObj.month - 1, todayObj.day);\r\n }\r\n /* istanbul ignore next */\r\n return null;\r\n};\r\n\r\n/**\r\n * Returns the numbers of different days from the fromDate minus the endDate\r\n * Result possitive means fromDate is later then toDate, negative means fromDate is eariler than toDate\r\n * @function\r\n * @param {date} fromDate the date of from\r\n * @param {date} toDate the date of to\r\n * @returns {number} number of days, if input is invalid will return null.\r\n */\r\nexport const getDateDiffInDays = ({ fromDate, toDate }) =>\r\n (_.isDate(fromDate) && _.isDate(toDate) ? Math.ceil((fromDate - toDate) / MillisecondsPerDay) : null);\r\n\r\n/**\r\n * Returns the date after a certain days from provided fromDate\r\n * @function\r\n * @param {date} fromDate the date of from\r\n * @param {number} offset the offset days, if offsetis larger than 0, it means getting date after, vice versa\r\n * @returns {date} the result date after setting offset, if input is invalid will return null.\r\n */\r\nexport const addDays = ({ fromDate, offset }) =>\r\n (_.isDate(fromDate) && _.isNumber(offset) ? new Date(fromDate.getTime() + (offset * MillisecondsPerDay)) : /* istanbul ignore next */ null);\r\n\r\n/**\r\n * @typedef {object} NormalizedDateRange - Normalized date range\r\n * @property {string} start - start date string\r\n * @property {string} end - end date string\r\n * @property {number} rangeId - date range Id\r\n */\r\n\r\n/**\r\n * @typedef {object} ParsedDateRange - Parsed date range\r\n * @property {object} range - date range\r\n * @property {CivilDate} range.start - start dat\r\n * @property {CivilDate} range.end - end date\r\n * @property {number} rangeId - date range Id\r\n */\r\n\r\n/**\r\n * Normalize date range\r\n * @function\r\n * @param {object} dateRangeObject - parsed date range object with i18n and date format pattern\r\n * @param {object} dateRangeObject.i18n - i18n model\r\n * @param {object} dateRangeObject.range - date range object\r\n * @param {CivilDate} dateRangeObject.range.start - start date\r\n * @param {CivilDate} dateRangeObject.range.end - end date\r\n * @param {number} dateRangeObject.rangeId - range Id\r\n * @returns {NormalizedDateRange} - normalized date range\r\n */\r\nexport const normalizeDateRange = ({\r\n i18n,\r\n range: {\r\n start, end,\r\n },\r\n rangeId,\r\n dateFormat = StandardDateFormat,\r\n}) => ({\r\n start: formatCivilDate({ i18n, date: start, dateFormat }),\r\n end: formatCivilDate({ i18n, date: end, dateFormat }),\r\n rangeId,\r\n});\r\n\r\n/**\r\n * Parse normalized date range.\r\n * @function\r\n * @param {object} dateRangeObject - date range object with i18n and date format pattern\r\n * @param {object} dateRangeObject.i18n - i18n model\r\n * @param {string} dateRangeObject.start - start date\r\n * @param {string} dateRangeObject.end - end date\r\n * @param {number} dateRangeObject.rangeId - range Id\r\n * @param {string} dateRangeObject.dateFormat - date format pattern\r\n * @returns {ParsedDateRange} - parsed date range object\r\n */\r\nexport const parseNormalizedDateRange = ({\r\n i18n,\r\n start,\r\n end,\r\n rangeId,\r\n dateFormat = StandardDateFormat,\r\n}) => {\r\n const startCivilDate = parseCivilDate({ i18n, dateString: start, dateFormat });\r\n const endCivilDate = parseCivilDate({ i18n, dateString: end, dateFormat });\r\n\r\n return (startCivilDate && endCivilDate ? ({\r\n range: {\r\n start: startCivilDate,\r\n end: endCivilDate,\r\n },\r\n rangeId,\r\n }) : null);\r\n};\r\n\r\n/**\r\n * Get end date by start date & frequency & occurences.\r\n * @function\r\n * @param {date} startDate - start date\r\n * @param {string} frequency - frequency\r\n * @param {number} occurrences - occurrences\r\n * @returns {date} - end date\r\n */\r\nexport const getNFrequencyEndDate = (\r\n startDate,\r\n frequency,\r\n occurrences\r\n) => {\r\n if (!_.isDate(startDate) || !FrequencyMonthCountMap[frequency] || !_.isNumber(occurrences)) return null;\r\n\r\n const calculateOccurrences = parseInt(occurrences, 10) > 0 ? parseInt(occurrences, 10) : 1;\r\n\r\n const startYear = startDate.getFullYear();\r\n const startMonth = startDate.getMonth();\r\n const startDay = startDate.getDate();\r\n\r\n const endRawMonth = (calculateOccurrences * FrequencyMonthCountMap[frequency]) + startMonth;\r\n\r\n const endYear = startYear + (endRawMonth / 12);\r\n const endMonth = endRawMonth % 12;\r\n const monthDayCount = new Date(endYear, endMonth + 1, 0/* the 0th day means last day in last month */).getDate();\r\n\r\n // The logic in MT\r\n // https://msasg.visualstudio.com/DefaultCollection/Bing_Ads/_git/AnB?path=/private/ClientCenter/MT/Source/ClientCenter/EO/BillingMT/InsertionOrder/RecurringInsertionOrderAddEO.cs&version=GBmaster&line=82&lineEnd=93&lineStartColumn=17&lineEndColumn=43&lineStyle=plain&_a=contents\r\n // There are some by design but strange logic:\r\n // Start Date: 08/30/2022 -> End Date: 09/29/2022\r\n // Start Date: 08/31/2022 -> End Date: 09/29/2022\r\n // Start Date: 01/31/2022 -> End Date: 02/27/2022\r\n // Start Date: 01/31/2020 -> End Date: 02/28/2020\r\n // So the `monthDayCount` should minus 1\r\n const endDay = Math.min(startDay - 1, monthDayCount - 1);\r\n\r\n const endDate = new Date(endYear, endMonth, endDay);\r\n\r\n return _.isNaN(Date.parse(endDate)) ? null : endDate;\r\n};\r\n\r\n/**\r\n * Performs an optimized deep comparison between the two dates, to determine if they should be considered equal.\r\n * @function\r\n * @param {date} date1 - date\r\n * @param {date} date2 - date\r\n * @returns {bool} - is equal or not\r\n */\r\nexport const isDateWithoutTimeEqual = (date1, date2) => _.isDate(date1) && _.isDate(date2) &&\r\n (_.isEqual(withoutTime(date1), withoutTime(date2)) || (_.isNaN(date1.getTime()) && _.isNaN(date2.getTime())));\r\n\r\n/**\r\n * Get current timestamp.\r\n * @function\r\n * @returns {number} - timestamp\r\n */\r\nexport const getTimestampMillis = () => {\r\n /* istanbul ignore next */\r\n if (typeof IWindow.performance !== 'undefined' && IWindow.performance.now) {\r\n return IWindow.performance.now();\r\n }\r\n /* istanbul ignore next */\r\n return Date.now();\r\n};\r\n","module.exports = __WEBPACK_EXTERNAL_MODULE__125__;","import Promise from 'bluebird';\r\nimport _ from 'underscore';\r\n\r\n/**\r\n * Use FileReader to read file as byte array. For FileReader, @see {@link https://developer.mozilla.org/en-US/docs/Web/API/FileReader}\r\n * Browser compatibility: IE 10/Chrome 7/Firefox 3.6/Edge 12\r\n * @function\r\n * @param {object} obj Parameter object\r\n * @property {File} obj.file The file needs to be converted\r\n * @returns {Promise>} Promise, will resolve a byte array\r\n */\r\nexport const readFileAsByteAray = ({ file }) => new Promise((resolve) => {\r\n const reader = new FileReader();\r\n\r\n reader.onload = ({ target: { result } }) => {\r\n resolve(_.toArray(new Uint8Array(result)));\r\n };\r\n\r\n reader.readAsArrayBuffer(file);\r\n});\r\n\r\n/**\r\n * Append extra data to FormData object before sent to server, modified the solution https://stackoverflow.com/questions/22783108/convert-js-object-to-form-data/42483509#42483509,\r\n * and adapted it to ASP.NET MVC: Object property will be chained by '.', Array index will be wrapped with '[]'.\r\n * This function is mainly created for sending data and files together.\r\n * Example:\r\n * Passed-in arguments\r\n * formData: { FormKey1: '1', FormKey2: 2 }\r\n * data: {\r\n * JsonKey1: {\r\n * JsonKey2: 3\r\n * },\r\n * JsonKey3: [\r\n * { JsonKey4: '4' }\r\n * ],\r\n * JsonKey5: fileObj,\r\n * JsonKey6: null,\r\n * JsonKey7: () => {}\r\n * }\r\n * parentKey: 'ParentKey'\r\n * Returned value:\r\n * formData: {\r\n * FormKey1: '1',\r\n * FormKey2: '2',\r\n * ParentKey.JsonKey1.JsonKey2: '3',\r\n * ParentKey.JsonKey3[0].JsonKey4: '4',\r\n * ParentKey.JsonKey5: fileObj,\r\n * ParentKey.JsonKey6: ''\r\n * }\r\n * @param {FormData} formData - the original FormData object reference, it can be empty FormData or FormData with some values\r\n * @param {*} data - the data to append, can be any type\r\n * @param {string} parentKey - the parentKey to data, will be the prefix of data's property names\r\n * @returns {FormData} the appended FormData object\r\n */\r\nexport const buildFormData = (formData, data, parentKey) => {\r\n if (data && typeof data === 'object' && !(data instanceof Date) && !(data instanceof Blob)) {\r\n const subKeyFormatter = Array.isArray(data) ? key => `[${key}]` : key => `.${key}`;\r\n\r\n Object.keys(data).forEach((key) => {\r\n buildFormData(formData, data[key], parentKey ? `${parentKey}${subKeyFormatter(key)}` : key);\r\n });\r\n } else if (parentKey && typeof data !== 'function') {\r\n const value = data === null || data === undefined || Number.isNaN(data) ? '' : data;\r\n\r\n formData.append(parentKey, value);\r\n }\r\n\r\n return formData;\r\n};\r\n\r\n/**\r\n * Recursively detect if the data contains file.\r\n * Return true if the data is an instance of Blob, or the data is an object containing Blob,\r\n * otherwise return false.\r\n * @param {*} data - the data to check, can be any type\r\n * @returns {bool} the bool result\r\n */\r\nexport const containsFile = (data) => {\r\n if (data instanceof Blob) {\r\n return true;\r\n }\r\n\r\n if (data && typeof data === 'object') {\r\n return Object.values(data).some(containsFile);\r\n }\r\n\r\n return false;\r\n};\r\n","import _ from 'underscore';\r\n\r\nfunction addInputToForm({ form, name, value }) {\r\n const hiddenField = document.createElement('input');\r\n\r\n hiddenField.setAttribute('type', 'hidden');\r\n hiddenField.setAttribute('name', name);\r\n hiddenField.setAttribute('value', value);\r\n\r\n form.appendChild(hiddenField);\r\n}\r\n\r\n/**\r\n * POSTS a form with a full page redirect\r\n * @param {url} url to POST to\r\n * @param {fields} fields which can be used for POSTing parameters\r\n * @returns {void} Nothing\r\n*/\r\nexport const postRedirect = ({ url, fields }) => {\r\n const form = document.createElement('form');\r\n\r\n form.setAttribute('method', 'post');\r\n form.setAttribute('action', url);\r\n\r\n _.each(fields, (field) => {\r\n addInputToForm({ form, name: field.name, value: field.value });\r\n });\r\n\r\n document.body.appendChild(form);\r\n form.submit();\r\n};\r\n","import $ from 'jquery';\r\nimport _ from 'underscore';\r\n\r\nconst defaultOptions = {\r\n precision: 2,\r\n needPercentageSymbol: true,\r\n needSpace: false,\r\n};\r\n\r\n/**\r\n * Return true if the string in parameter is a valid integer greater or equal to Zero\r\n * @param {string|Number} numberValue The number value to test, can be a string or a number type.\r\n * @returns {boolean} True if the string in parameter is a string greater or equal to 0\r\n */\r\nexport const isValidWholeNumber = (numberValue) => {\r\n const number = Math.floor(Number(numberValue));\r\n\r\n return String(number) === String(numberValue) && number >= 0;\r\n};\r\n\r\n/**\r\n * Return input source in percentage format\r\n * @param {number} source The input source. Need to be number, otherwise will return undefined.\r\n * @param {object} [options] Options.\r\n * @param {int} [options.precision] How many digits of decimals want to keep. Default is 2.\r\n * @param {bool} [options.needPercentageSymbol] Whether need a percentage symbol '%'. Default is true.\r\n * @param {bool} [options.needSpace] Wehther need a spance between the value and percentage symbol. Defualt is false.\r\n * @returns {string} Result.\r\n */\r\nexport const getPercentage = (source, options) => {\r\n const { precision, needPercentageSymbol, needSpace } = _.extend({}, defaultOptions, options);\r\n\r\n if (!$.isNumeric(source)) {\r\n return null;\r\n }\r\n\r\n return `${Number(source * 100).toFixed(precision)}${needSpace ? ' ' : ''}${needPercentageSymbol ? '%' : ''}`;\r\n};\r\n\r\n/**\r\n * Return the devided result by handling the divisor or dividend is 0 case.\r\n * @param {number} divisor The divisor.\r\n * @param {number} dividend The dividend.\r\n * @returns {number} Divided result.\r\n */\r\nexport const dividePossibleZero = (divisor, dividend) => (dividend === 0 ? 0 : divisor / dividend);\r\n\r\n/**\r\n * Determines whether one or more bit fields are set in the current instance.\r\n * Need to disable eslint for bitwise operation, that is considered as too rarely used to be expected in js code: https://eslint.org/docs/rules/no-bitwise\r\n * @param {number} number The current instance value number. Need to be a numeric value instance of number or string\r\n * @param {number} flag A value representing the bit field that should be present in the number\r\n * @returns {bool} true if the bit field or bit fields that are set in flag are also set in the current instance; otherwise, false\r\n */\r\nexport const hasFlag = (number, flag) => isValidWholeNumber(number) && (Number(number) & flag) === flag; // eslint-disable-line no-bitwise\r\n\r\n/**\r\n * Returns a new number with one bit fields added.\r\n * @param {number} number The current instance value number. Need to be a numeric value instance of number or string\r\n * @param {number} flag A value representing the bit field that should be added from the number\r\n * @returns {number} a new number with one bit fields added.\r\n */\r\nexport const addFlag = (number, flag) => {\r\n const num = isValidWholeNumber(number) ? Number(number) : 0;\r\n return (num | flag); // eslint-disable-line no-bitwise\r\n};\r\n\r\n/**\r\n * Returns a new number with one bit fields removed if exists, or the same number if flag is not present. Returns null if last flag is removed.\r\n * @param {number} number The current instance value number. Need to be a numeric value instance of number or string\r\n * @param {number} flag A value representing the bit field that should be removed from the number\r\n * @returns {number} a new number with one bit fields removed if exists, or the same number if flag is not present. Returns null if last flag is removed.\r\n */\r\nexport const removeFlag = (number, flag) => {\r\n // If the number doesn't have the flag we should not try to XOR otherwise result will be 0 instead of the value without flag\r\n if (hasFlag(number, flag)) {\r\n return Number(number) ^ flag || null; // eslint-disable-line no-bitwise\r\n }\r\n return number;\r\n};\r\n","import $ from 'jquery';\r\nimport _ from 'underscore';\r\n\r\n/**\r\n * This function is the same of the one in number-utils\r\n * We also export it in string-util because it can be applied with both string or number passed in parameter\r\n */\r\nexport { isValidWholeNumber } from './number-utils';\r\n\r\n/**\r\n * Return true if the string in parameter is a string not empty after trim\r\n * @param {string} str The string to validate.\r\n * @returns {boolean} True if the string in parameter is a string not empty after trim\r\n */\r\nexport const isStringNotBlank = str => _.isString(str) && !_.isEmpty(str.trim());\r\n\r\n/**\r\n * Replaces Values of the form {#} with the corresponding argument passed in after format.\r\n * If # arguments weren't passed in, then {#} is left in the formatted string\r\n * @param {string} str The string to format.\r\n * @returns {string} Formats the string with the given arguments\r\n */\r\nexport const format = (str, ...args) => str.replace(/{(\\d+)}/g, (match, number) => (typeof args[number] === 'undefined' ? match : args[number]));\r\n\r\n/**\r\n * Encodes an text into an HTML string\r\n * @param {string} str The string to encode.\r\n * @returns {string} An HTML-encoded version of str\r\n */\r\nexport const encode = str => $('

').text(str).html();\r\n\r\n/**\r\n * Decodes an HTML string into text\r\n * @param {string} str The string to decode.\r\n * @returns {string} A plaintext version of the HTML-encoded str\r\n */\r\nexport const decode = str => $('

').html(str).text();\r\n\r\n/**\r\n * Parse a string to bool\r\n * @param {string|bool} str The string to parse.\r\n * @returns {bool} The bool value of string\r\n */\r\nexport const parseStringToBool = (str) => {\r\n if (_.isString(str)) {\r\n return str.toLowerCase() === 'true';\r\n }\r\n if (_.isBoolean(str)) {\r\n return str;\r\n }\r\n return false;\r\n};\r\n\r\n/**\r\n * Parse a base64 array to string\r\n * @param {array} arr The array of base64 bytes.\r\n * @returns {string} The string translate from base64\r\n */\r\nexport const parseBase64ToString = (arr) => {\r\n if (arr && arr.length) {\r\n const bytes = new Uint8Array(arr);\r\n return btoa(_.map(bytes, byte => String.fromCharCode(byte)).join(''));\r\n }\r\n\r\n return null;\r\n};\r\n\r\n/**\r\n * Test a string using a given regexString\r\n * @param {string} regexStr The given regexString\r\n * @param {string} str The string to test\r\n * @returns {bool} Indicate whether the string fulfils the regexString\r\n */\r\nexport const regexTest = (regexStr, str) => {\r\n const reg = new RegExp(regexStr);\r\n return reg.test(str);\r\n};\r\n","/* istanbul ignore file */\r\nimport _ from 'underscore';\r\nimport 'jquery';\r\nimport IWindow from '@bingads-webui-clientcenter/window-interface';\r\n\r\nimport { getTimestampMillis } from './date-utils';\r\n\r\nexport const ScenarioNames = {\r\n agencyRequestsPage: 'AgencyRequestsPage',\r\n settingsPage: {\r\n content: 'SettingsContent',\r\n userInfo: 'SettingsUserInfoContent',\r\n emailNotification: 'SettingsEmailNotificationContent',\r\n billing: 'SettingsBillingContent',\r\n emailNotificationCategory: 'SettingsEmailNotificationCategoryContent',\r\n emailNotificationCategorySave: 'SettingsEmailNotificationCategorySave',\r\n emailNotificationCategoryAccountFetch: 'emailNotificationCategoryAccountFetch',\r\n emailNotificationCategoryAccountSelectorRender: 'emailNotificationCategoryAccountSelectorRender',\r\n emailNotificationCategoryAccountSelectAll: 'emailNotificationCategoryAccountSelectAll',\r\n emailNotificationCategoryAccountFilter: 'emailNotificationCategoryAccountFilter',\r\n emailNotificationUserSelectorRender: 'SettingsEmailNotificationUserSelectorRender',\r\n },\r\n};\r\n\r\n/**\r\n * Mark the page load time when page is loaded.\r\n * Log the page duration when page is navigated\r\n * @function\r\n * @param {logging} logging to log\r\n * @param {pageReadyMark} pageReadyMark which can be used for performance mark\r\n * @returns {void} Nothing\r\n */\r\nexport const logPageLoadAndNavigationDuration = ({ logging, pageReadyMark }) => {\r\n if (IWindow.pageLoadDurationRecorded && IWindow.pageNavigationStartTime && IWindow.pageNavigationRecorded && logging && logging.pageRoutePageLoadDuration) {\r\n logging.pageRoutePageLoadDuration(IWindow.location.pathname, getTimestampMillis() - IWindow.pageNavigationStartTime, IWindow.pageNavigationRecorded[pageReadyMark]);\r\n IWindow.pageNavigationRecorded[pageReadyMark] = true;\r\n }\r\n\r\n if (!IWindow.pageLoadDurationRecorded && IWindow.location.pathname === IWindow.pageLandingPath) {\r\n IWindow.performance.mark(`${pageReadyMark}LandingPageReady`);\r\n IWindow.pageLoadDurationRecorded = true;\r\n IWindow.pageNavigationRecorded = _.extend(IWindow.pageNavigationRecorded, { [pageReadyMark]: true });\r\n }\r\n};\r\n","export { legacyStrings as default } from './src/legacy-strings-for-new-i18n';\r\n","export const legacyStrings = {\r\n // Below are used to build legacy i18n object in Campaign repo. CC repo already passes in new i18n object.\r\n // customer-utils.js\r\n '{{name}} ({{number}})': _TL_('{{name}} ({{number}})'),\r\n // insertion-order-utils.js\r\n 'No End Date': _TL_('No End Date'),\r\n Unlimited: _TL_('Unlimited'),\r\n // payment-utils.js\r\n 'Prepaid ': _TL_('Prepaid '),\r\n Visa: _TL_('Visa'),\r\n MasterCard: _TL_('MasterCard'),\r\n 'American Express': _TL_('American Express'),\r\n Discover: _TL_('Discover'),\r\n 'Diners Club': _TL_('Diners Club'),\r\n JCB: _TL_('JCB'),\r\n 'Carte Blanche': _TL_('Carte Blanche'),\r\n JAL: _TL_('JAL'),\r\n 'Invoice (SAP)': _TL_('Invoice (SAP)'),\r\n PayPal: _TL_('PayPal'),\r\n 'Bank transfer': _TL_('Bank transfer'),\r\n 'Boleto Bancário: {{friendlyName}}': _TL_('Boleto Bancário: {{friendlyName}}'),\r\n 'Check: {{friendlyName}}': _TL_('Check: {{friendlyName}}'),\r\n '{{cardType}} {{cardCategory}}****{{last4}} ({{country}})': _TL_('{{cardType}} {{cardCategory}}****{{last4}} ({{country}})'),\r\n 'Expired {{date}}': _TL_('Expired {{date}}'),\r\n 'Expires {{date}}': _TL_('Expires {{date}}'),\r\n '{{cardType}} {{cardCategory}}****{{last4}}': _TL_('{{cardType}} {{cardCategory}}****{{last4}}'),\r\n 'On hold {{date}}': _TL_('On hold {{date}}'),\r\n 'Payment method: {{id}}': _TL_('Payment method: {{id}}'),\r\n 'Electronic funds transfer: {{friendlyName}}': _TL_('Electronic funds transfer: {{friendlyName}}'),\r\n 'Bank transfer ({{country}})': _TL_('Bank transfer ({{country}})'),\r\n 'PayPal: {{email}}': _TL_('PayPal: {{email}}'),\r\n 'SAP: {{customerName}} ({{invoiceId}})': _TL_('SAP: {{customerName}} ({{invoiceId}})'),\r\n 'SAP: {{invoiceId}}': _TL_('SAP: {{invoiceId}}'),\r\n 'SEPA direct debit: {{friendlyName}}': _TL_('SEPA direct debit: {{friendlyName}}'),\r\n 'Virtual Bank Account: {{friendlyName}}': _TL_('Virtual Bank Account: {{friendlyName}}'),\r\n 'N/A': _TL_('N/A'),\r\n // tax-utils.js\r\n CPF: _TL_('CPF'),\r\n CNPJ: _TL_('CNPJ'),\r\n 'GST IN': _TL_('GST IN'),\r\n PAN: _TL_('PAN'),\r\n VAT: _TL_('VAT'),\r\n 'Australian Business Number': _TL_('Australian Business Number'),\r\n 'NZ GST registration number': _TL_('NZ GST registration number'),\r\n 'C.C.M.': _TL_('C.C.M.'),\r\n IE: _TL_('IE'),\r\n 'GST/HST registration number or Business Number': _TL_('GST/HST registration number or Business Number'),\r\n 'PST registration number': _TL_('PST registration number'),\r\n 'QST registration number': _TL_('QST registration number'),\r\n 'Legal Identifier Number': _TL_('Legal Identifier Number'),\r\n 'NIT/Tax ID': _TL_('NIT/Tax ID'),\r\n 'RUT Number': _TL_('RUT Number'),\r\n 'TRN or VAT ID': _TL_('TRN or VAT ID'),\r\n 'VAT ID': _TL_('VAT ID'),\r\n TIN: _TL_('TIN'),\r\n VKN: _TL_('VKN'),\r\n BIN: _TL_('BIN'),\r\n NPWP: _TL_('NPWP'),\r\n 'VAT-TIN': _TL_('VAT-TIN'),\r\n 'TIN or VAT ID': _TL_('TIN or VAT ID'),\r\n NIT: _TL_('NIT'),\r\n AAH: _TL_('AAH'),\r\n 'NDS/KKS': _TL_('NDS/KKS'),\r\n RFC: _TL_('RFC'),\r\n 'Tax identification number (PIB)': _TL_('Tax identification number (PIB)'),\r\n 'Legal number': _TL_('Legal number'),\r\n CUIT: _TL_('CUIT'),\r\n VÖEN: _TL_('VÖEN'),\r\n IFU: _TL_('IFU'),\r\n 'Tax ID': _TL_('Tax ID'),\r\n 'n° TVA': _TL_('n° TVA'),\r\n JCT: _TL_('JCT'),\r\n SST: _TL_('SST'),\r\n TBC: _TL_('TBC'),\r\n FIN: _TL_('FIN'),\r\n 'VAT Reg. No.': _TL_('VAT Reg. No.'),\r\n RIF: _TL_('RIF'),\r\n TPIN: _TL_('TPIN'),\r\n TRN: _TL_('TRN'),\r\n UIN: _TL_('UIN'),\r\n BRN: _TL_('BRN'),\r\n RUC: _TL_('RUC'),\r\n RUT: _TL_('RUT'),\r\n STRN: _TL_('STRN'),\r\n '(optional)': _TL_('(optional)'),\r\n '(State Tax ID, optional)': _TL_('(State Tax ID, optional)'),\r\n '(required)': _TL_('(required)'),\r\n '(required for all the entities)': _TL_('(required for all the entities)'),\r\n '(required for business customers)': _TL_('(required for business customers)'),\r\n '(required for VAT registered business customers)': _TL_('(required for VAT registered business customers)'),\r\n '(required for Value Added Tax/IVA registered customers)': _TL_('(required for Value Added Tax/IVA registered customers)'),\r\n '(required for IVA/VAT tax-payers)': _TL_('(required for IVA/VAT tax-payers)'),\r\n};\r\n","import * as Constants from './src/constants/index';\r\n\r\nimport * as ABLUtils from './src/abl-utils';\r\nimport * as AccountIdentityVerificationUtils from './src/account-identity-verification-utils';\r\nimport * as AccountUtils from './src/account-utils';\r\nimport * as AdjustmentsUtils from './src/adjustments-utils';\r\nimport * as BillingUtils from './src/billing-utils';\r\nimport * as ConsolidatedBillingUtils from './src/consolidated-billing-utils';\r\nimport * as CountryUtils from './src/country-utils';\r\nimport * as CouponUtils from './src/coupon-utils';\r\nimport * as CurrencyUtils from './src/currency-utils';\r\nimport * as CustomerUtils from './src/customer-utils';\r\nimport * as FraudAppealUtils from './src/fraud-appeal-utils';\r\nimport * as InsertionOrderUtils from './src/insertion-order-utils';\r\nimport * as LanguageUtils from './src/language-utils';\r\nimport * as PaymentUtils from './src/payment-utils';\r\nimport * as PermissionUtils from './src/permission-utils';\r\nimport * as TaxUtils from './src/tax-utils';\r\nimport * as UKFCAVerificationUtils from './src/uk-fca-verification-utils';\r\nimport * as UserRoleUtils from './src/user-role-utils';\r\nimport * as UserUtils from './src/user-utils';\r\n\r\nexport { Constants };\r\n\r\nexport {\r\n ABLUtils,\r\n AccountIdentityVerificationUtils,\r\n AccountUtils,\r\n AdjustmentsUtils,\r\n BillingUtils,\r\n ConsolidatedBillingUtils,\r\n CountryUtils,\r\n CouponUtils,\r\n CurrencyUtils,\r\n CustomerUtils,\r\n FraudAppealUtils,\r\n InsertionOrderUtils,\r\n LanguageUtils,\r\n PaymentUtils,\r\n PermissionUtils,\r\n TaxUtils,\r\n UKFCAVerificationUtils,\r\n UserRoleUtils,\r\n UserUtils,\r\n};\r\n","export * from './account-identity-verification';\r\nexport * from './account';\r\nexport * from './account-verifications';\r\nexport * from './adjustments';\r\nexport * from './billing';\r\nexport * from './budget-center';\r\nexport * from './campaign';\r\nexport * from './common';\r\nexport * from './consolidated-billing';\r\nexport * from './country';\r\nexport * from './coupon';\r\nexport * from './currency';\r\nexport * from './customer';\r\nexport * from './insertion-order';\r\nexport * from './language';\r\nexport * from './linking';\r\nexport * from './notification';\r\nexport * from './payment';\r\nexport * from './permission';\r\nexport * from './recommendation';\r\nexport * from './regular-expression';\r\nexport * from './tax';\r\nexport * from './uk-fca-verification';\r\nexport * from './trade-screening-transformation';\r\nexport * from './dsa-enforcement';\r\nexport * from './error-code';\r\nexport * from './settings';\r\n","export const ABLVerificationStatus = Object.freeze({\r\n Failed: 1,\r\n OverrideFailed: 2,\r\n ActionRequired: 3,\r\n NotVerified: 4,\r\n InPending: 5,\r\n Verified: 6,\r\n OverrideVerified: 7,\r\n VerifiedLimited: 9,\r\n Failed_CN: 61,\r\n ActionRequired_CN: 62,\r\n NotVerified_CN: 63,\r\n InPending_CN: 64,\r\n Verified_CN: 65,\r\n LicenseExpired_CN: 66,\r\n});\r\n\r\nexport const CNCompositeVerificationStatus = Object.freeze({\r\n Failed: 1,\r\n Verified: 2,\r\n});\r\n\r\nexport const ABLVerificationFailedStatusList = [ABLVerificationStatus.Failed, ABLVerificationStatus.OverrideFailed];\r\n\r\nexport const ABLVerificationVerifiedStatusList = [ABLVerificationStatus.Verified, ABLVerificationStatus.OverrideVerified, ABLVerificationStatus.VerifiedLimited];\r\n\r\nexport const ABLVerificationStatusTextMapping = {\r\n [ABLVerificationStatus.Failed]: _TL_('Failed'),\r\n [ABLVerificationStatus.OverrideFailed]: _TL_('Failed'),\r\n [ABLVerificationStatus.ActionRequired]: _TL_('Action required'),\r\n [ABLVerificationStatus.NotVerified]: _TL_('Not verified'),\r\n [ABLVerificationStatus.InPending]: _TL_('Pending'),\r\n [ABLVerificationStatus.Verified]: _TL_('Verified'),\r\n [ABLVerificationStatus.OverrideVerified]: _TL_('Verified'),\r\n [ABLVerificationStatus.VerifiedLimited]: _TL_('Verified limited'),\r\n [ABLVerificationStatus.Failed_CN]: _TL_('Failed'),\r\n [ABLVerificationStatus.ActionRequired_CN]: _TL_('Extension needed'),\r\n [ABLVerificationStatus.NotVerified_CN]: _TL_('Not verified'),\r\n [ABLVerificationStatus.InPending_CN]: _TL_('Pending'),\r\n [ABLVerificationStatus.Verified_CN]: _TL_('Verified'),\r\n [ABLVerificationStatus.LicenseExpired_CN]: _TL_('Expired'),\r\n};\r\n\r\nexport const CNCompositeVerificationStatusTextMapping = {\r\n [CNCompositeVerificationStatus.Failed]: _TL_('on hold'),\r\n [CNCompositeVerificationStatus.Verified]: _TL_('active'),\r\n};\r\n\r\nexport const AccountVerificationStatus = Object.freeze({\r\n Failed: 1,\r\n OverrideFailed: 2,\r\n ActionRequired: 3,\r\n NeedVerified: 4,\r\n InPending: 5,\r\n Verified: 6,\r\n OverrideVerified: 7,\r\n NoNeedVerified: 8,\r\n VerifiedLimited: 9,\r\n});\r\n\r\nexport const ChinaAccountVerificationStatus = Object.freeze({\r\n Failed: 61,\r\n ActionRequired: 62,\r\n NeedVerified: 63,\r\n InPending: 64,\r\n Verified: 65,\r\n LicenseExpired: 66,\r\n});\r\n\r\nexport const ChinaAIVStatusToGlobalAIVStatusMapping = {\r\n [ChinaAccountVerificationStatus.Failed]: AccountVerificationStatus.Failed,\r\n [ChinaAccountVerificationStatus.ActionRequired]: AccountVerificationStatus.ActionRequired,\r\n [ChinaAccountVerificationStatus.NeedVerified]: AccountVerificationStatus.NeedVerified,\r\n [ChinaAccountVerificationStatus.InPending]: AccountVerificationStatus.InPending,\r\n [ChinaAccountVerificationStatus.Verified]: AccountVerificationStatus.Verified,\r\n [ChinaAccountVerificationStatus.LicenseExpired]: AccountVerificationStatus.Failed,\r\n};\r\n\r\nexport const AccountVerificationFailedStatusList = [AccountVerificationStatus.Failed, AccountVerificationStatus.OverrideFailed];\r\n\r\nexport const AccountVerificationVerifiedStatusList = [AccountVerificationStatus.Verified, AccountVerificationStatus.OverrideVerified, AccountVerificationStatus.VerifiedLimited];\r\n\r\nexport const AccountToAblVerificationStatusRelation = {\r\n [AccountVerificationStatus.Failed]: ABLVerificationFailedStatusList,\r\n [AccountVerificationStatus.OverrideFailed]: ABLVerificationFailedStatusList,\r\n [AccountVerificationStatus.ActionRequired]: [ABLVerificationStatus.ActionRequired],\r\n [AccountVerificationStatus.NeedVerified]: [ABLVerificationStatus.NotVerified],\r\n [AccountVerificationStatus.InPending]: [ABLVerificationStatus.InPending],\r\n [AccountVerificationStatus.Verified]: ABLVerificationVerifiedStatusList,\r\n [AccountVerificationStatus.OverrideVerified]: ABLVerificationVerifiedStatusList,\r\n [AccountVerificationStatus.NoNeedVerified]: null, // This value indicates that any ABLVerificationStatus is OK. Choosing nul arbitrary, can be changed later per need.\r\n [AccountVerificationStatus.VerifiedLimited]: ABLVerificationVerifiedStatusList,\r\n};\r\n\r\nexport const AIVStatusLabelPropertyMapping = {\r\n [AccountVerificationStatus.Failed]: {\r\n glyph: 'ba-Error',\r\n iconStyle: 'error',\r\n textStyle: 'error',\r\n labelKey: _TL_('Failed'),\r\n labelKeyInternal: _TL_('Failed'),\r\n },\r\n [AccountVerificationStatus.OverrideFailed]: {\r\n glyph: 'ba-Error',\r\n iconStyle: 'error',\r\n textStyle: 'error',\r\n labelKey: _TL_('Failed'),\r\n labelKeyInternal: _TL_('Appealed Failed'),\r\n },\r\n [AccountVerificationStatus.ActionRequired]: {\r\n glyph: 'ba-Warning',\r\n iconStyle: 'error',\r\n textStyle: 'error',\r\n labelKey: _TL_('Action required'),\r\n labelKeyInternal: _TL_('Action required'),\r\n },\r\n [AccountVerificationStatus.NeedVerified]: {\r\n glyph: 'ba-Warning',\r\n iconStyle: 'warning',\r\n textStyle: 'warning',\r\n labelKey: _TL_('Not verified'),\r\n labelKeyInternal: _TL_('Not verified'),\r\n },\r\n [AccountVerificationStatus.InPending]: {\r\n glyph: 'ba-HourGlass',\r\n iconStyle: 'default',\r\n textStyle: 'default',\r\n labelKey: _TL_('Pending'),\r\n labelKeyInternal: _TL_('Pending'),\r\n },\r\n [AccountVerificationStatus.Verified]: {\r\n glyph: 'ba-VerifiedBrandSolid',\r\n iconStyle: 'primary',\r\n labelKey: _TL_('Verified advertiser'),\r\n labelKeyInternal: _TL_('Verified advertiser'),\r\n },\r\n [AccountVerificationStatus.OverrideVerified]: {\r\n glyph: 'ba-VerifiedBrandSolid',\r\n iconStyle: 'primary',\r\n labelKey: _TL_('Verified advertiser'),\r\n labelKeyInternal: _TL_('Appealed verified advertiser'),\r\n },\r\n [AccountVerificationStatus.NoNeedVerified]: {\r\n glyph: 'ba-Info',\r\n iconStyle: 'default',\r\n textStyle: 'default',\r\n labelKey: _TL_('Verification not needed'),\r\n labelKeyInternal: _TL_('Verification not needed'),\r\n },\r\n [AccountVerificationStatus.VerifiedLimited]: {\r\n glyph: 'ba-VerifiedBrandSolid',\r\n iconStyle: 'primary',\r\n labelKey: _TL_('Verified limited'),\r\n labelKeyInternal: _TL_('Verified limited'),\r\n },\r\n // Note: China AIV status label mapping, the information will not display in internal tool so no labelKeyInternal added.\r\n [ChinaAccountVerificationStatus.Failed]: {\r\n glyph: 'ba-Error',\r\n iconStyle: 'error',\r\n textStyle: 'error',\r\n labelKey: _TL_('Failed'),\r\n },\r\n [ChinaAccountVerificationStatus.ActionRequired]: {\r\n glyph: 'ba-Warning',\r\n iconStyle: 'warning',\r\n textStyle: 'error',\r\n labelKey: _TL_('Extension needed'),\r\n },\r\n [ChinaAccountVerificationStatus.NeedVerified]: {\r\n glyph: 'ba-Warning',\r\n iconStyle: 'warning',\r\n textStyle: 'warning',\r\n labelKey: _TL_('Not verified'),\r\n },\r\n [ChinaAccountVerificationStatus.InPending]: {\r\n glyph: 'ba-HourGlass',\r\n iconStyle: 'default',\r\n textStyle: 'default',\r\n labelKey: _TL_('Pending'),\r\n },\r\n [ChinaAccountVerificationStatus.Verified]: {\r\n glyph: 'ba-VerifiedBrandSolid',\r\n iconStyle: 'primary',\r\n labelKey: _TL_('Verified advertiser'),\r\n },\r\n [ChinaAccountVerificationStatus.LicenseExpired]: {\r\n glyph: 'ba-Blocked2',\r\n iconStyle: 'error',\r\n labelKey: _TL_('Verification expired'),\r\n },\r\n};\r\n\r\nexport const VerificationType = {\r\n Individual: '1',\r\n Business: '2',\r\n};\r\n\r\nexport const DocumentVerifiedStatus =\r\n{\r\n NotVerified: 1,\r\n Verified: 2,\r\n Failed: 3,\r\n};\r\n\r\nexport const UnableTriggerAivReason =\r\n{\r\n InternalUser: 1,\r\n NoRemainingRetryCount: 2,\r\n UserRoleMismatch: 3,\r\n NotAccountOwner: 4,\r\n InitializeInProgress: 5,\r\n OverrideFailed: 6,\r\n};\r\n\r\n\r\nexport const OrderedUnableTriggerAivReasons =\r\n [\r\n UnableTriggerAivReason.InternalUser,\r\n UnableTriggerAivReason.NotAccountOwner,\r\n UnableTriggerAivReason.UserRoleMismatch,\r\n UnableTriggerAivReason.OverrideFailed,\r\n UnableTriggerAivReason.NoRemainingRetryCount,\r\n UnableTriggerAivReason.InitializeInProgress,\r\n ];\r\n\r\nexport const AivFailureReasons = {\r\n Onfido_Rejected_ImageIntegrity_ImageQuality: 101,\r\n Onfido_Rejected_ImageIntegrity_SupportedDocument: 102,\r\n Onfido_Rejected_ImageIntegrity_ColourPicture: 103,\r\n Onfido_Caution_DataConsistency_MultipleDataSourcesPresent: 104,\r\n Onfido_Caution_VisualAuthenticity_OriginalDocumentPresent: 105,\r\n Onfido_Caution_FaceComparison_FaceMatch: 106,\r\n Onfido_Caution_DataValidation_DocumentExpiration: 107,\r\n Onfido_Caution_DataComparison_FirstName: 108,\r\n Onfido_Caution_DataComparison_LastName: 109,\r\n Onfido_Caution_ImageIntegrity_ConclusiveDocumentQuality: 110,\r\n Onfido_Caution_ImageIntegrity_ColorPicture: 111,\r\n Onfido_Caution_ImageIntegrity_PictureUnavailableInDocument: 112,\r\n OneVet_Email_Verification_Failure: 201,\r\n OneVet_Business_Verification_Failure: 202,\r\n OneVet_Domain_Verification_Failure: 203,\r\n\r\n // China Aiv Reject Reason, from 1000000 -> 1000032\r\n SUBJECT_QUALIFICATION_THE_QUALIFICATION_PICTURE_IS_NOT_CLEAR: 1000000,\r\n SUBJECT_QUALIFICATION_QUALIFICATION_EXPIRED: 1000001,\r\n SUBJECT_QUALIFICATION_DISCREPANCY_IN_BUSINESS_SCOPE: 1000002,\r\n SUBJECT_QUALIFICATION_THE_ACCOUNT_OPENING_ENTITY_IS_OPERATING_ABNORMALLY: 1000003,\r\n SUBJECT_QUALIFICATION_THE_UNIFIED_SOCIAL_CREDIT_CODE_WAS_FILLED_IN_INCORRECTLY: 1000004,\r\n SUBJECT_QUALIFICATION_FALSE_QUALIFICATION: 1000005,\r\n SUBJECT_QUALIFICATION_QUALIFICATION_PICTURE_UPLOAD_ERROR: 1000006,\r\n SUBJECT_QUALIFICATION_THE_QUALIFICATION_FILE_HAS_A_RESTRICTED_WATERMARK: 1000007,\r\n SUBJECT_QUALIFICATION_THE_COMPANY_NAME_IS_INCORRECT: 1000008,\r\n SUBJECT_QUALIFICATION_THE_QUALIFICATION_DOCUMENTS_ARE_INCOMPLETE: 1000009,\r\n SUBJECT_QUALIFICATION_PLEASE_CONTACT_YOUR_SALES_AGENT_FOR_ADVICE: 1000010,\r\n INDUSTRY_QUALIFICATION_THE_QUALIFICATION_PICTURE_IS_NOT_CLEAR: 1000011,\r\n INDUSTRY_QUALIFICATION_QUALIFICATION_EXPIRED: 1000012,\r\n INDUSTRY_QUALIFICATION_DISCREPANCY_IN_BUSINESS_SCOPE: 1000013,\r\n INDUSTRY_QUALIFICATION_THE_ACCOUNT_OPENING_ENTITY_IS_OPERATING_ABNORMALLY: 1000014,\r\n INDUSTRY_QUALIFICATION_THE_UNIFIED_SOCIAL_CREDIT_CODE_WAS_FILLED_IN_INCORRECTLY: 1000015,\r\n INDUSTRY_QUALIFICATION_FALSE_QUALIFICATION: 1000016,\r\n INDUSTRY_QUALIFICATION_QUALIFICATION_PICTURE_UPLOAD_ERROR: 1000017,\r\n INDUSTRY_QUALIFICATION_THE_QUALIFICATION_FILE_HAS_A_RESTRICTED_WATERMARK: 1000018,\r\n INDUSTRY_QUALIFICATION_THE_COMPANY_NAME_IS_INCORRECT: 1000019,\r\n INDUSTRY_QUALIFICATION_THE_QUALIFICATION_DOCUMENTS_ARE_INCOMPLETE: 1000020,\r\n INDUSTRY_QUALIFICATION_PLEASE_CONTACT_YOUR_SALES_AGENT_FOR_ADVICE: 1000021,\r\n OTHERS_THE_QUALIFICATION_PICTURE_IS_NOT_CLEAR: 1000022,\r\n OTHERS_QUALIFICATION_EXPIRED: 1000023,\r\n OTHERS_DISCREPANCY_IN_BUSINESS_SCOPE: 1000024,\r\n OTHERS_THE_ACCOUNT_OPENING_ENTITY_IS_OPERATING_ABNORMALLY: 1000025,\r\n OTHERS_THE_UNIFIED_SOCIAL_CREDIT_CODE_WAS_FILLED_IN_INCORRECTLY: 1000026,\r\n OTHERS_FALSE_QUALIFICATION: 1000027,\r\n OTHERS_QUALIFICATION_PICTURE_UPLOAD_ERROR: 1000028,\r\n OTHERS_THE_QUALIFICATION_FILE_HAS_A_RESTRICTED_WATERMARK: 1000029,\r\n OTHERS_THE_COMPANY_NAME_IS_INCORRECT: 1000030,\r\n OTHERS_THE_QUALIFICATION_DOCUMENTS_ARE_INCOMPLETE: 1000031,\r\n OTHERS_PLEASE_CONTACT_YOUR_SALES_AGENT_FOR_ADVICE: 1000032,\r\n};\r\n\r\nexport const AivAblValidationRuleName = 'AccountIdentityVerification';\r\n\r\nexport const AivAppealStatus = Object.freeze({\r\n Allowed: 'Allowed',\r\n Submitted: 'Submitted',\r\n Failed: 'Failed',\r\n InValid: 'InValid',\r\n});\r\n\r\nexport const ValidAivAppealStatusList = [AivAppealStatus.Allowed, AivAppealStatus.Submitted, AivAppealStatus.Failed];\r\n","import _ from 'underscore';\r\n\r\nexport const AccountFinancialStatus = Object.freeze({\r\n Active: 31,\r\n Inactive: 32,\r\n Proposed: 34,\r\n PendingCreditCheck: 35,\r\n NoHold: 36,\r\n SoldToOnly: 37,\r\n CreditWarning: 38,\r\n Hold: 39,\r\n WriteOff: 223,\r\n TaxOnHold: 253,\r\n UserHold: 254,\r\n});\r\n\r\nexport const AccountAssociationType = Object.freeze({\r\n Primary: 1,\r\n Backup: 2,\r\n None: 3,\r\n});\r\n\r\nexport const AccountFinancialStatusBit = Object.freeze({\r\n CreditHold: 1,\r\n CLEHold: 2,\r\n PIHold: 4,\r\n ManualHold: 8,\r\n});\r\n\r\nexport const AccountLifecycleStatus = Object.freeze({\r\n Blocked: 28,\r\n Pending: 29,\r\n Draft: 30,\r\n Active: 31,\r\n Inactive: 32,\r\n Deleted: 33, // deprecated\r\n Pause: 42,\r\n Suspended: 43,\r\n});\r\n\r\nexport const AccountInactiveReasonCode = Object.freeze({\r\n NotSet: 0,\r\n PausedDueToSystemIssue: 1,\r\n PausedZeroBalance: 2,\r\n PausedNoValidIO: 3,\r\n Processing: 4,\r\n PendingPaymentMethod: 5,\r\n PendingNewCustomer: 6,\r\n Inactive: 7,\r\n Hold: 8,\r\n Deleted: 9,\r\n});\r\n\r\nexport const AccountInactiveReasonValue = _.mapObject(AccountInactiveReasonCode, (value, key) => key);\r\n\r\nexport const AccountInactiveCauseCode = Object.freeze({\r\n NotSet: 0,\r\n PausedDueToSystemIssue: 1,\r\n PausedZeroBalance: 2,\r\n PausedNoValidIO: 3,\r\n Processing: 4,\r\n PendingPaymentMethod: 5,\r\n PendingNewCustomer: 6,\r\n Inactive: 7,\r\n Hold: 8,\r\n AccountLifecycleStatusSuspended: 9,\r\n AccountLifecycleStatusDraft: 10,\r\n AccountLifecycleStatusDeleted: 11,\r\n AccountLifecycleStatusUserPause: 12,\r\n AccountFinancialStatusProposed: 13,\r\n AccountFinancialStatusWriteOff: 14,\r\n AccountFinancialStatusTaxOnHold: 15,\r\n AccountFinancialStatusUserHold: 16,\r\n AccountFinancialStatusPendingCreditCheck: 17,\r\n AccountFinancialStatusSoldToOnly: 18,\r\n AdvertiserCustomerLifecycleStatusDraft: 19,\r\n AdvertiserCustomerLifecycleStatusInactive: 20,\r\n AdvertiserCustomerLifecycleStatusDeleted: 21,\r\n AdvertiserCustomerFraudStatusFraud: 22,\r\n BillToCustomerLifecycleStatusDraft: 23,\r\n BillToCustomerLifecycleStatusInactive: 24,\r\n BillToCustomerLifecycleStatusDeleted: 25,\r\n BillToCustomerFinancialStatusProposalsOnly: 26,\r\n BillToCustomerFinancialStatusSoldToOnly: 27,\r\n BillToCustomerFraudStatusFraud: 28,\r\n AccountLifecycleStatusNotSet: 29,\r\n AccountFinancialStatusNotSet: 30,\r\n AdvertiserCustomerLifecycleStatusNotSet: 31,\r\n AdvertiserCustomerFraudStatusNotSet: 32,\r\n BillToCustomerLifecycleStatusNotSet: 33,\r\n BillToCustomerFinancialStatusNotSet: 34,\r\n BillToCustomerFraudStatusNotSet: 35,\r\n UserDeleted: 36,\r\n SystemNoSpendDeactivated: 37,\r\n AccountVerificationHold: 39,\r\n});\r\n\r\nexport const AccountInactiveCauseValue = _.mapObject(AccountInactiveCauseCode, (value, key) => key);\r\n\r\nexport const AccountActivityStatus = Object.freeze({\r\n Enabled: 'Enabled',\r\n Deleted: 'Deleted',\r\n Errors: 'Errors',\r\n});\r\n\r\nexport const AccountMode = Object.freeze({\r\n Legacy: null,\r\n Expert: 0,\r\n Smart: 1,\r\n UnifiedSmart: 2,\r\n UnifiedExpert: 3,\r\n});\r\n\r\nexport const AccountEditMode = Object.freeze({\r\n FixIndiaTax: 1,\r\n});\r\n\r\nexport const AccountCustomerRelationLifecycleStatus = Object.freeze({\r\n Pending: 160,\r\n Active: 168,\r\n Deleted: 169,\r\n});\r\n\r\nexport const AccountAutoTaggingType = Object.freeze({\r\n Off: 'Off',\r\n CustomerOverride: 'CustomerOverride',\r\n BingAdsOverride: 'BingAdsOverride',\r\n});\r\n\r\nexport const AccountAutoTaggingTypeId = Object.freeze({\r\n Off: 0,\r\n CustomerOverride: 1,\r\n BingAdsOverride: 2,\r\n});\r\n\r\nexport const AccountFeaturePilots = Object.freeze({\r\n SingleAccountIdentityVerification: 888,\r\n});\r\n\r\nexport const AccountCommentsMaxLength = 1000;\r\n","export const TokenVerificationScenario = Object.freeze({\r\n AIV: 1,\r\n FCA: 2,\r\n CN: 3,\r\n});\r\n\r\n// China qualification type\r\nexport const CNQualificationType = Object.freeze({\r\n Industry: 0,\r\n Supplementary: 1,\r\n});\r\n\r\n// China qualification verification status\r\nexport const CNQualificationStatus = Object.freeze({\r\n Failed: 71,\r\n ActionRequired: 72,\r\n NotVerified: 73,\r\n Pending: 74,\r\n Verified: 75,\r\n LicenseExpired: 76,\r\n});\r\n\r\nexport const CNQualificationUnableCreateReason = Object.freeze({\r\n InternalUser: 1,\r\n UserRoleMismatch: 3,\r\n InitializeInProgress: 5,\r\n});\r\n\r\nexport const OrderedCNQualificationUnableCreateReason = [\r\n CNQualificationUnableCreateReason.InitializeInProgress,\r\n CNQualificationUnableCreateReason.InternalUser,\r\n CNQualificationUnableCreateReason.UserRoleMismatch,\r\n];\r\n","import _ from 'underscore';\r\n\r\nexport const AdjustmentReason = {\r\n None: 0,\r\n CustomerRetention: 41,\r\n CreditAndRebill: 42,\r\n CreditAndRebillTaxIssue: 43,\r\n Fraud: 44,\r\n SystemIssues: 45,\r\n InternalUserError: 46,\r\n VolatileTrafficComplaint: 47,\r\n Broadmatch: 48,\r\n PrepayBalanceRefund: 50,\r\n AccountCompromised: 52,\r\n TravelSpecialProgram: 53,\r\n GAAPCompliance: 57,\r\n AnnualPenalty: 58,\r\n};\r\n\r\nexport const AvailableCreditAndRebillReasonIds = [\r\n AdjustmentReason.None,\r\n AdjustmentReason.CustomerRetention,\r\n];\r\n\r\nexport const AdjustmentDisabledReason = {\r\n None: 0,\r\n AdjustmentInProgress: 1,\r\n AggregatorAccount: 2,\r\n OfflinePayment: 3,\r\n NonPrepaidAccountOnPrepaidInvoice: 4,\r\n AlreadyRebilled: 5,\r\n EndOfMonthHoldOnAggregatorAndConsolidatedRebills: 6,\r\n PIDeclined: 7,\r\n EndOfDunningCycle: 8,\r\n};\r\n\r\n/**\r\n * Available Action ids for adjustments\r\n */\r\nexport const AdjustmentsAction = Object.freeze({\r\n None: 0,\r\n Debit: 1,\r\n Credit: 2,\r\n SpotDebit: 3,\r\n SpotCredit: 4,\r\n CurrentBalanceDebit: 53,\r\n CurrentBalanceCredit: 54,\r\n SalesHouseDebit: 85,\r\n SalesHouseCredit: 86,\r\n});\r\n\r\nexport const AvailableCreditAndRebillActionIds = [\r\n AdjustmentsAction.None,\r\n AdjustmentsAction.Credit,\r\n];\r\n\r\nexport const AdjustmentStrings = {\r\n SilentErrorMessage: ' ',\r\n};\r\n\r\nexport const AdjustmentsType = {\r\n Debit: 1,\r\n Credit: 2,\r\n SpotDebit: 3,\r\n SpotCredit: 4,\r\n TrueUpDebit: 5,\r\n Payment: 6,\r\n Billing: 7,\r\n Invoice: 8,\r\n CreditMemo: 9,\r\n ChargeBack: 10,\r\n DebitMemo: 11,\r\n BudgetCredit: 12,\r\n BudgetDebit: 13,\r\n TrueUpCredit: 14,\r\n Charge: 15,\r\n SetupFee: 16,\r\n WriteOff: 17,\r\n DealpointCredit: 18,\r\n ManualDebit: 19,\r\n ManualCredit: 20,\r\n PublisherFraudReinvestmentDebit: 21,\r\n PublisherFraudReinvestmentCredit: 22,\r\n PayoutPaymentIssued: 23,\r\n PayoutEarnings: 24,\r\n PayoutLateLogs: 25,\r\n BatchPayoutManualDebit: 26,\r\n BatchPayoutManualCredit: 27,\r\n PayoutPaymentDeclined: 28,\r\n PayoutTrueUpDebit: 29,\r\n PayoutTrueUpCredit: 30,\r\n StandardPayoutManualDebit: 31,\r\n StandardPayoutManualCredit: 32,\r\n YahooAdjustmentCredit: 33,\r\n YahooAdjustmentDebit: 34,\r\n ContractualPayoutDebit: 35,\r\n ContractualPayoutCredit: 36,\r\n ThirdPartyPipelineDebit: 37,\r\n ThirdPartyPipelineCredit: 38,\r\n YahooAgencyDiscountCredit: 39,\r\n YahooAgencyDiscountDebit: 40,\r\n CrossOverDebit: 41,\r\n CrossOverCredit: 42,\r\n PrePaidStatement: 43,\r\n PrePaidPayments: 44,\r\n PrepaidCreditMemo: 45,\r\n PrePaidCredit: 47,\r\n PaymentFraudDebit: 48,\r\n PaymentFraudCredit: 49,\r\n PrepaidPaymentReversal: 50,\r\n PrepaidRefundReversal: 51,\r\n PaymentFraudDeclineCredit: 52,\r\n CurrentBalanceDebit: 53,\r\n CurrentBalanceCredit: 54,\r\n PostPaidStatement: 55,\r\n ExternalCharge: 56,\r\n PublisherFraudDebit: 57,\r\n PublisherFraudCredit: 58,\r\n PublisherFraudPayoutDebit: 59,\r\n PublisherFraudPayoutCredit: 60,\r\n RollForwardDirectCreditRefund: 61,\r\n RollForwardDirectDebitRefund: 62,\r\n SalesHouseDebit: 85,\r\n SalesHouseCredit: 86,\r\n};\r\n\r\nexport const CreditActions = [\r\n AdjustmentsType.Credit,\r\n AdjustmentsType.SpotCredit,\r\n AdjustmentsType.Payment,\r\n AdjustmentsType.CreditMemo,\r\n AdjustmentsType.BudgetCredit,\r\n AdjustmentsType.TrueUpCredit,\r\n AdjustmentsType.WriteOff,\r\n AdjustmentsType.DealpointCredit,\r\n AdjustmentsType.ManualCredit,\r\n AdjustmentsType.PublisherFraudReinvestmentCredit,\r\n AdjustmentsType.BatchPayoutManualDebit,\r\n AdjustmentsType.PayoutTrueUpDebit,\r\n AdjustmentsType.StandardPayoutManualDebit,\r\n AdjustmentsType.YahooAdjustmentCredit,\r\n AdjustmentsType.ContractualPayoutDebit,\r\n AdjustmentsType.ThirdPartyPipelineDebit,\r\n AdjustmentsType.YahooAgencyDiscountCredit,\r\n AdjustmentsType.CrossOverDebit,\r\n AdjustmentsType.PrepaidCreditMemo,\r\n AdjustmentsType.PrePaidCredit,\r\n AdjustmentsType.PaymentFraudCredit,\r\n AdjustmentsType.PrepaidPaymentReversal,\r\n AdjustmentsType.PaymentFraudDeclineCredit,\r\n AdjustmentsType.CurrentBalanceCredit,\r\n AdjustmentsType.PublisherFraudCredit,\r\n AdjustmentsType.PublisherFraudPayoutDebit,\r\n AdjustmentsType.RollForwardDirectCreditRefund,\r\n AdjustmentsType.SalesHouseCredit,\r\n];\r\n\r\nexport const DebitActions = _.difference(_.values(AdjustmentsType), CreditActions);\r\n\r\nexport const AdjustmentsStatus = {\r\n Created: 0,\r\n Queued: 1,\r\n InProgress: 2,\r\n Completed: 3,\r\n Failed: 4,\r\n};\r\n\r\nexport const AdjustmentReasonString = {\r\n [AdjustmentReason.None]: _TL_('- Adjustment reason -'),\r\n [AdjustmentReason.CustomerRetention]: _TL_('Goodwill – Customer Retention'),\r\n [AdjustmentReason.CreditAndRebill]: _TL_('Credit and Rebill'),\r\n [AdjustmentReason.CreditAndRebillTaxIssue]: _TL_('Credit and Rebill - Tax Issue'),\r\n [AdjustmentReason.Fraud]: _TL_('Fraud'),\r\n [AdjustmentReason.SystemIssues]: _TL_('System Issue'),\r\n [AdjustmentReason.InternalUserError]: _TL_('Internal User Error'),\r\n [AdjustmentReason.VolatileTrafficComplaint]: _TL_('Volatile Traffic Complaint'),\r\n [AdjustmentReason.Broadmatch]: _TL_('Broadmatch'),\r\n [AdjustmentReason.PrepayBalanceRefund]: _TL_('Prepay Balance Refund'),\r\n [AdjustmentReason.AccountCompromised]: _TL_('Account Compromised'),\r\n [AdjustmentReason.TravelSpecialProgram]: _TL_('Travel Special Program'),\r\n [AdjustmentReason.GAAPCompliance]: _TL_('GAAP Compliance'),\r\n [AdjustmentReason.AnnualPenalty]: _TL_('Annual Penalty (Sales House)'),\r\n};\r\n","export const DocumentType = Object.freeze({\r\n CurrentActivity: 'CurrentActivity',\r\n PrePaidInvoices: 'PrePaidInvoices',\r\n PrePaidStatement: 'PrePaidStatement',\r\n SelfServeInvoice: 'SelfServeInvoice',\r\n Invoice: 'Invoice',\r\n XandrInvoice: 'XandrInvoice',\r\n Pending: 'pending', // small case from MT, but i18n string still camelCase\r\n Invoices: 'Invoices',\r\n CreditMemoInvoice: 'CreditMemoInvoice',\r\n PostPaidStatement: 'PostPaidStatement',\r\n PrepaidCreditMemoInvoice: 'PrepaidCreditMemoInvoice',\r\n PrepaidChargebackInvoice: 'PrepaidChargebackInvoice',\r\n PrepaidRefundReversalInvoice: 'PrepaidRefundReversalInvoice',\r\n WriteOffCreditMemo: 'WriteOffCreditMemo',\r\n MonthlyStatement: 'MonthlyStatement',\r\n SalesHouseInvoice: 'SalesHouseInvoice',\r\n SalesHouseStatement: 'SalesHouseStatement',\r\n});\r\n\r\nexport const DocumentTypeString = {\r\n [DocumentType.PrePaidInvoices]: _TL_('Payment receipt'),\r\n [DocumentType.PrePaidStatement]: _TL_('Monthly statement'),\r\n [DocumentType.SelfServeInvoice]: _TL_('Statement'),\r\n [DocumentType.Invoice]: _TL_('Invoice'),\r\n [DocumentType.XandrInvoice]: _TL_('Xandr invoice'),\r\n [DocumentType.Pending]: _TL_('Pending'),\r\n [DocumentType.Invoices]: _TL_('Invoice'),\r\n [DocumentType.CreditMemoInvoice]: _TL_('Credit memo'),\r\n [DocumentType.PostPaidStatement]: _TL_('Monthly statement'),\r\n [DocumentType.PrepaidCreditMemoInvoice]: _TL_('Credit memo'),\r\n [DocumentType.PrepaidChargebackInvoice]: _TL_('Credit memo'),\r\n [DocumentType.PrepaidRefundReversalInvoice]: _TL_('Debit memo'),\r\n [DocumentType.WriteOffCreditMemo]: _TL_('Credit memo'),\r\n [DocumentType.MonthlyStatement]: _TL_('Monthly statement'),\r\n [DocumentType.SalesHouseInvoice]: _TL_('Invoice (Sales House)'),\r\n [DocumentType.SalesHouseStatement]: _TL_('Monthly statement'),\r\n};\r\n\r\nexport const CreditMemoDocumentType = [\r\n DocumentType.CreditMemoInvoice,\r\n DocumentType.PrepaidCreditMemoInvoice,\r\n DocumentType.PrepaidChargebackInvoice,\r\n DocumentType.WriteOffCreditMemo,\r\n];\r\n\r\nexport const BillingDocumentRenderingMethod = Object.freeze({\r\n Account: 0,\r\n Billing: 1,\r\n Adjustment: 2,\r\n});\r\n\r\nexport const IndiaEInvoicingStatus = Object.freeze({\r\n NotStarted: 0,\r\n Available: 1,\r\n Failed: 2,\r\n PendingSupport: 3,\r\n PendingIRNGeneration: 4,\r\n PendingCustomerAction: 5,\r\n PendingCreditAndRebill: 7,\r\n});\r\n\r\nexport const ApContactType = Object.freeze({\r\n SAPLevel: 0,\r\n AccountLevel: 1,\r\n});\r\n\r\nexport const APContactStatus = Object.freeze({\r\n PendingUserValidation: 0,\r\n Active: 1,\r\n Deleted: 2,\r\n Inactive: 3,\r\n PendingSystemValidation: 4,\r\n SystemValidationFailure: 5,\r\n Unknown: 6,\r\n});\r\n\r\nexport const APContactMode = Object.freeze({\r\n Static: 'static',\r\n Edit: 'edit',\r\n Create: 'create',\r\n});\r\n\r\nexport const IndiaDualInvoiceType = Object.freeze({\r\n Default: 0,\r\n RecipientCopy: 1,\r\n SupplierCopy: 2,\r\n});\r\n\r\nexport const PaymodErrorCodes = Object.freeze({\r\n AuthorizationExpired: 'authorization_expired',\r\n ProcessorDeclined: 'processor_declined',\r\n ExpiredPaymentInstrument: 'expired_payment_instrument',\r\n ProcessorRiskcheckDeclined: 'processor_riskcheck_declined',\r\n AmountLimitExceeded: 'amount_limit_exceeded',\r\n InvalidPaymentInstrument: 'invalid_payment_instrument',\r\n InsufficientFund: 'insufficient_fund',\r\n MissingFundingSource: 'missing_funding_source',\r\n IncorrectPinOrPasscode: 'incorrect_pin_or_passcode',\r\n TransactionNotAllowed: 'transaction_not_allowed',\r\n MissingSessionData: 'missing_session_data',\r\n InvalidTransactionData: 'invalid_transaction_data',\r\n InvalidTransactionDataPrepay: 'invalid_transaction_data_12',\r\n InvalidTransactionDataThreshold: 'invalid_transaction_data_1',\r\n RiskReject: 'risk_evaluation_declined',\r\n AuthRequired: 'authentication_required',\r\n CVVValueMismatch: 'cvv_value_mismatch',\r\n});\r\n\r\nexport const DefaultMinBillingThreshold = 50;\r\n\r\nexport const AccountBillMeNowStatus = Object.freeze({\r\n None: 0,\r\n ForceBill: 1,\r\n Refund: 2,\r\n});\r\n\r\nexport const IndiaEMandateOfficialUrl = 'https://www.rbi.org.in/Scripts/BS_PressReleaseDisplay.aspx?prid=51353';\r\n\r\n/**\r\n * Billing Document action\r\n */\r\nexport const BillingDocumentAction = Object.freeze({\r\n Credit: 0,\r\n Debit: 1,\r\n Rebill: 2,\r\n});\r\n\r\nexport const CreditAndRebillType = {\r\n None: 0,\r\n ChangeNetAmount: 1,\r\n ChangeBillToCustomer: 2,\r\n ChangeBillToPI: 4,\r\n ChangePostPaidThresholdABL: 16,\r\n ChangePostPaidThresholdTaxId: 32,\r\n SkipCheckingConsolidatedBd: 64,\r\n AggregatorRebill: 128,\r\n AggregateeRebill: 256,\r\n ConsolidatorRebill: 512,\r\n ConsolidateeRebill: 1024,\r\n PIDeclinedRebill: 2048,\r\n};\r\n\r\nexport const DocumentIdAttribute = 'DocumentId';\r\n","export const CbtReportTimePeriod = Object.freeze({\r\n Today: 0,\r\n Yesterday: 1,\r\n});\r\n\r\nexport const CbtReportTimePeriodTLString = Object.freeze({\r\n [CbtReportTimePeriod.Today]: _TL_('Today'),\r\n [CbtReportTimePeriod.Yesterday]: _TL_('Yesterday'),\r\n});\r\n\r\nexport const BudgetRecommendationItemType = Object.freeze({\r\n Suggested: 0,\r\n MaxValue: 1,\r\n Current: 2,\r\n Other: 3,\r\n});\r\n\r\nexport const BudgetEventType = Object.freeze({\r\n // campaign level\r\n CampaignOutOfBudget: 50,\r\n CampaignLimitedByBudget: 1001,\r\n // prepay account level\r\n PrepayAccountBalanceLow: 69,\r\n PrepayAccountBalanceZero: 70,\r\n // monthly invoice account level\r\n InsertionOrderBalanceDepleted: 119,\r\n InsertionOrderExpired: 125,\r\n InsertionOrderExhaustingUrgent: 354,\r\n InsertionOrderExpiringUrgent: 355,\r\n // threshold account level\r\n AccountHold: 7,\r\n});\r\n\r\nexport const BudgetChangeType = Object.freeze({\r\n PrepayBalanceRecharge: 1,\r\n ThresholdPaymentChange: 2,\r\n InsertionOrderChange: 3,\r\n CampaignDailyBudgetChange: 4,\r\n});\r\n","export const DeliveryStatus = Object.freeze({\r\n CampaignBudgetPaused: 50,\r\n BudgetSuggestions: 1001,\r\n});\r\n","export const EntityType = Object.freeze({\r\n Customer: 1,\r\n Account: 2,\r\n User: 6,\r\n PaymentInstrument: 10,\r\n TaxDocument: 160,\r\n Person: 170,\r\n});\r\n","import { AttestationValue } from './tax';\r\n\r\nexport const IncludeCampaignDetailsValueToLabel = {\r\n [AttestationValue.True]: _TL_('Show amount due for each campaign'),\r\n [AttestationValue.False]: _TL_('Don’t show amount due for each campaign'),\r\n};\r\n\r\nexport const CampaignDetailsForUnconsolidatedInvoiceValueToLabel = {\r\n [AttestationValue.True]: _TL_('Show amount due for each campaign on unconsolidated invoice'),\r\n [AttestationValue.False]: _TL_('Don’t show amount due for each campaign on unconsolidated invoice'),\r\n};\r\n\r\nexport const GroupingCriteria = {\r\n BilltoSAPId: 'BilltoSAPId',\r\n BusinessAddress: 'BusinessAddress',\r\n CompanyCode: 'CompanyCode',\r\n CurrencyType: 'CurrencyType',\r\n TaxInformation: 'TaxInformation',\r\n BillingGroupId: 'BillingGroupId',\r\n};\r\n\r\nexport const GroupingPrerequisites = {\r\n PaymentOption: 'PaymentOption',\r\n};\r\n\r\nexport const CompanyCode = Object.freeze({\r\n MIOL: 1062, // Ireland\r\n MOI: 1548, // US\r\n India: 1098,\r\n Brazil: 1639,\r\n Taiwan: 1058,\r\n});\r\n\r\nexport const CompanyCodeCompanyNameMapping = Object.freeze({\r\n [CompanyCode.MIOL]: 'Microsoft Ireland Operations Limited',\r\n [CompanyCode.MOI]: 'Microsoft Online, Inc.',\r\n [CompanyCode.India]: 'Microsoft Corporation (India) Private Limited',\r\n [CompanyCode.Brazil]: 'Microsoft do Brasil Importação e Comércio de Software e Games LTDA',\r\n [CompanyCode.Taiwan]: '台灣微軟股份有限公司',\r\n});\r\n","export const TaxType = Object.freeze({\r\n CPF: 'CPF',\r\n CNPJ: 'CNPJ',\r\n GSTINNumber: 'GSTINNumber',\r\n PANNumber: 'PANNumber',\r\n VatNumber: 'VatNumber',\r\n NZGSTNumber: 'NZGSTNumber',\r\n AUGSTNumber: 'AUGSTNumber',\r\n CCM: 'CCM',\r\n GSTNumber: 'GSTNumber',\r\n PSTNumber: 'PSTNumber',\r\n QSTNumber: 'QSTNumber',\r\n LegalIdentifier: 'LegalIdentifier',\r\n IE: 'IE',\r\n UIN: 'UIN',\r\n});\r\n\r\nexport const TaxInfo = Object.freeze({\r\n IsTaxExemptionCertVerified: 'IsTaxExemptionCertVerified',\r\n SkipVatIdValidation: 'SkipVatIdValidation',\r\n IsIVAOrVATTaxPayer: 'IsIVAOrVATTaxPayer',\r\n IsWithholdingTaxExempted: 'IsWithholdingTaxExempted',\r\n ReverseChargeDocumentAttestation: 'ReverseChargeDocumentAttestation',\r\n});\r\n\r\nexport const TaxOptionType = Object.freeze({\r\n Personal: 'TaxType_Personal',\r\n Business: 'TaxType_Business',\r\n});\r\n\r\nexport const AttestationValue = Object.freeze({\r\n True: 'True',\r\n False: 'False',\r\n NotSet: '',\r\n});\r\n\r\nexport const ChileIVAorVATConfirmValueToLabel = Object.freeze({\r\n [AttestationValue.True]: _TL_('Yes'),\r\n [AttestationValue.False]: _TL_('No'),\r\n});\r\n\r\nexport const ChileWHTConfirmValueToLabel = Object.freeze({\r\n [AttestationValue.True]: _TL_('Yes'),\r\n [AttestationValue.False]: _TL_('No'),\r\n});\r\n\r\nexport const ReverseChargeDocumentAttestationValueToLabel = Object.freeze({\r\n [AttestationValue.True]: _TL_('Yes'),\r\n [AttestationValue.False]: _TL_('No'),\r\n});\r\n\r\n// Microsoft.AdCenter.ClientCenter.MT.Service.TaxType\r\nexport const TaxTypeEnumValue = Object.freeze({\r\n [TaxType.CPF]: 1,\r\n [TaxType.CNPJ]: 2,\r\n [TaxType.GSTINNumber]: 3,\r\n [TaxType.PANNumber]: 4,\r\n [TaxType.VatNumber]: 5,\r\n [TaxType.NZGSTNumber]: 6,\r\n [TaxType.AUGSTNumber]: 8,\r\n [TaxType.CCM]: 9,\r\n [TaxType.GSTNumber]: 10,\r\n [TaxType.QSTNumber]: 15,\r\n [TaxType.PSTNumber]: 16,\r\n [TaxType.IE]: 17,\r\n [TaxType.UIN]: 18,\r\n});\r\n\r\nexport const VatStatusEnum = Object.freeze({\r\n Valid: 174,\r\n Invalid: 175,\r\n Pending: 176,\r\n PastDue: 177,\r\n});\r\n\r\nexport const TaxIdMaxLength = Object.freeze({\r\n [TaxType.CPF]: 11,\r\n [TaxType.CNPJ]: 14,\r\n [TaxType.CCM]: 8,\r\n [TaxType.LegalIdentifier]: 50,\r\n});\r\n\r\nexport const TaxCertificateDeclineReasonType = Object.freeze({\r\n SubmittedDocumentInvalid: 1,\r\n CodigoSectionInvalid: 2,\r\n NITMissingOrIncomplete: 3,\r\n NITMismatch: 4,\r\n});\r\n\r\nexport const TaxExemptionCertVerifiedResult = {\r\n Accept: 'True',\r\n Reject: 'False',\r\n NotSet: null,\r\n};\r\n\r\nexport const TaxLabelFormat = {\r\n Optional: 'Optional',\r\n Required: 'Required',\r\n RequiredForAllTheEntities: 'RequiredForAllTheEntities',\r\n RequiredForBusiness: 'RequiredForBusiness',\r\n RequiredForVATRegisteredBusiness: 'RequiredForVATRegisteredBusiness',\r\n RequiredForValueAddedTaxIVARegistered: 'RequiredForValueAddedTaxIVARegistered',\r\n RequiredForIVAorVATTaxPayer: 'RequiredForIVAorVATTaxPayer',\r\n StateTaxIDOptional: 'StateTaxIDOptional',\r\n Default: 'Default',\r\n};\r\n\r\nexport const TaxCertLabel = {\r\n TaxCertificateOrEquivalentProof: _TL_('Tax Certificate or Equivalent Proof'),\r\n TaxCertificate: _TL_('Tax Certificate'),\r\n};\r\n\r\nexport const AttestationValues = [AttestationValue.True, AttestationValue.False];\r\n","export const CountryCode = Object.freeze({\r\n US: 'US',\r\n UA: 'UA',\r\n AM: 'AM',\r\n AN: 'AN',\r\n AZ: 'AZ',\r\n BR: 'BR',\r\n CN: 'CN',\r\n IN: 'IN',\r\n IQ: 'IQ',\r\n KZ: 'KZ',\r\n KG: 'KG',\r\n MM: 'MM',\r\n MV: 'MV',\r\n FR: 'FR',\r\n HK: 'HK',\r\n TW: 'TW',\r\n HU: 'HU',\r\n PT: 'PT',\r\n PL: 'PL',\r\n CO: 'CO',\r\n CL: 'CL',\r\n AE: 'AE',\r\n IL: 'IL',\r\n VN: 'VN',\r\n VE: 'VE',\r\n NO: 'NO',\r\n TR: 'TR',\r\n FK: 'FK',\r\n VC: 'VC',\r\n GE: 'GE',\r\n TH: 'TH',\r\n TJ: 'TJ',\r\n BD: 'BD',\r\n BT: 'BT',\r\n ID: 'ID',\r\n BY: 'BY',\r\n NG: 'NG',\r\n IS: 'IS',\r\n SS: 'SS',\r\n MD: 'MD',\r\n ZW: 'ZW',\r\n ZA: 'ZA',\r\n BH: 'BH',\r\n KH: 'KH',\r\n KE: 'KE',\r\n SA: 'SA',\r\n OM: 'OM',\r\n GH: 'GH',\r\n CM: 'CM',\r\n UZ: 'UZ',\r\n FJ: 'FJ',\r\n GT: 'GT',\r\n BS: 'BS',\r\n PH: 'PH',\r\n PK: 'PK',\r\n RU: 'RU',\r\n LK: 'LK',\r\n MX: 'MX',\r\n NP: 'NP',\r\n LA: 'LA',\r\n BB: 'BB',\r\n NZ: 'NZ',\r\n RS: 'RS',\r\n SG: 'SG',\r\n KR: 'KR',\r\n AR: 'AR',\r\n BJ: 'BJ',\r\n CI: 'CI',\r\n JP: 'JP',\r\n MY: 'MY',\r\n SR: 'SR',\r\n ZM: 'ZM',\r\n EG: 'EG',\r\n PE: 'PE',\r\n UY: 'UY',\r\n PA: 'PA',\r\n SN: 'SN',\r\n});\r\n\r\nexport const CallingCode = Object.freeze({\r\n US: '1',\r\n});\r\n\r\nexport const CallingCodeBeforePhoneNumberRegExp = '^([0-9]+)-(.*)$';\r\n\r\n// This should be in sync with excluded countries in AdsAppUI/private/UI/Common/Microsoft.ClientCenter.Repository/Dictionaries/CountryMapping.cs GetVatApplicableCountriesMapping\r\nexport const NonEMEAVatCountries = [CountryCode.NZ, CountryCode.RS, CountryCode.SG];\r\n\r\nexport const YahooMarkets = [CountryCode.HK, CountryCode.TW];\r\n\r\nexport const CustomerUnsupportedBusinessLocations = [CountryCode.AN, CountryCode.FK, CountryCode.VC];\r\n\r\nexport const UnsupportedBusinessLocations = [CountryCode.RU, CountryCode.BY];\r\n","export const CouponType = Object.freeze({\r\n Unspecified: 0,\r\n Acquisition: 1,\r\n Retention: 2,\r\n Performance: 3,\r\n});\r\n\r\n/**\r\n * Coupon Status\r\n * AssociatedCoupon - For UI usage only, this performance coupon is associated to the account, but not redeemed\r\n * PendingUpfrontSpending - For UI usage only, this performance coupon is in upfront spending status, and currently there is an active coupon, so this pbc should be in \"Pending UpfrontSpending\"\r\n * UpfrontSpending - For performance coupon only, this coupon is in upfront spending status, will be active afer meet upfront spending threshold\r\n * ActiveCoupon - This coupon is active, and for each account there should be only 1 active coupon at a time.\r\n * Completed - This coupon is completed\r\n * Expired - This coupon is expired\r\n * Pending - This coupon is in pending (paused) status. Pending can be switched to Active and vice versa\r\n */\r\nexport const CouponStatus = Object.freeze({\r\n AssociatedCoupon: 247,\r\n PendingUpfrontSpending: 248,\r\n UpfrontSpending: 249,\r\n ActiveCoupon: 250,\r\n Completed: 251,\r\n Expired: 252,\r\n Pending: 253,\r\n});\r\n\r\n/**\r\n * Feature Adoption Coupon Status\r\n * NotInProgess - Adoption of this feature has not started, but the account is qualified\r\n * Active - Adoption of this feature has started, but has not been completed\r\n * Adopted - Adoption has been completed from UI, but the coupon hasn't been redeemed yet\r\n * PickedUp - Intermediary step of the redemption process. Coupon should be redeemed momentarily\r\n * Redeemed - The coupon has been redeemed\r\n * DismissedBeforeStart - The user dismissed the coupon before they started the adoption process\r\n * DismissedAfterStart - The user dismissed the coupon after they started the adoption process\r\n * AdoptedAfterExpiration - The adoption has been completed from UI, but expiration date expired before it was done\r\n * FailedToRedeem - This status will be set if there are issues during the redemption flow on the CCMT side\r\n * Depleted - There are no longer enough coupons to give out\r\n * FailedAdoption - Feature Crew has deemed the adoption invalid\r\n */\r\nexport const RecommendationAdoptionStatus = Object.freeze({\r\n NotInProgess: 0,\r\n Active: 1,\r\n Adopted: 2,\r\n PickedUp: 3,\r\n Redeemed: 4,\r\n DismissedBeforeStart: 5,\r\n DismissedAfterStart: 6,\r\n AdoptedAfterExpiration: 7,\r\n FailedToRedeem: 8,\r\n Depleted: 9,\r\n FailedAdoption: 10,\r\n});\r\n\r\n/**\r\n * Feature Adoption Coupon Feature Id\r\n * Google Import - 206\r\n * FacebookImport - 207\r\n * ConversionTracking - 208\r\n * CalloutCard - 209\r\n */\r\nexport const FeatureAdoptionCouponFeatureId = Object.freeze({\r\n GoogleImport: 206,\r\n FacebookImport: 207,\r\n ConversionTracking: 208,\r\n CalloutCard: 209,\r\n AutoBidMaxClicks: 212,\r\n AutoBidMaxConversions: 213,\r\n ShoppingCampaign: 214,\r\n PerformanceMax: 215,\r\n MultiAdFormat: 216,\r\n});\r\n\r\nexport const CouponPurposeId = Object.freeze({\r\n Signup: 0,\r\n Ongoing: 1, // Deprecated\r\n Multipurpose: 2,\r\n FeatureAdoption: 3,\r\n BingOnlyCampaign: 4,\r\n SyndicationFiltering: 5,\r\n MultiChannels: 6,\r\n MSANSignUp: 7,\r\n StoreAds: 8,\r\n RetentionStoreAds: 9,\r\n});\r\n","export const CurrencyCode = Object.freeze({\r\n USD: 'USD',\r\n INR: 'INR',\r\n BRL: 'BRL',\r\n EUR: 'EUR',\r\n});\r\n\r\nexport const VByVRequiredCurrencyCodes = Object.freeze([CurrencyCode.INR]);\r\n","export const CustomerProfilePropertyType = Object.freeze({\r\n LastLoginTime: 1,\r\n IpAddress: 2,\r\n AuthType: 3,\r\n ImpersonationEnabled: 4,\r\n IsOptedInForConsolidatedBilling: 5,\r\n IsOptedInForCampaignDetailsInInvoices: 6,\r\n IsCustomerOptedInForPostalMail: 7,\r\n IsCustomerOptedInPaperlessBilling: 8,\r\n IsEligibleForConsolidatedBilling: 9,\r\n NumberOfBillToInvoiceAccountsUnderCustomer: 10,\r\n NumberOfBillToPrepayAccountsUnderCustomer: 11,\r\n NumberOfBillToThresholdAccountsUnderCustomer: 12,\r\n});\r\n\r\nexport const IsOptedIn = Object.freeze({\r\n on: '1',\r\n off: '0',\r\n});\r\n\r\nexport const AppScope = Object.freeze({\r\n None: 0,\r\n Adv: 1,\r\n Pub: 2,\r\n Aca: 4,\r\n MultiChannelAds: 8,\r\n All: 7,\r\n});\r\n\r\nexport const ManagedByType = Object.freeze({\r\n Microsoft: 0,\r\n Yahoo: 1,\r\n ChinaJV: 2,\r\n});\r\n\r\nexport const CustomerFinancialStatus = Object.freeze({\r\n ProposalsOnly: 14,\r\n PendingCreditCheck: 15,\r\n NoHold: 16,\r\n SoldToOnly: 17,\r\n CreditHold: 18,\r\n CreditWarning: 19,\r\n});\r\n\r\nexport const CustomerServiceLevel = Object.freeze({\r\n NA: 0,\r\n SelfServe: 1,\r\n SelfServeTrusted: 2,\r\n Premium: 3,\r\n Internal: 4,\r\n Select: 5,\r\n});\r\n","/**\r\n * Mapping to BillingMT proxy InsertionOrderStatus\r\n */\r\nexport const InsertionOrderStatus = Object.freeze({\r\n PendingSystemReview: 0,\r\n PendingUserReview: 1,\r\n Active: 2,\r\n Declined: 3,\r\n Expired: 4,\r\n Canceled: 5,\r\n Pending: 6,\r\n Exhausted: 7,\r\n PendingBillToPartyChange: 8,\r\n PendingBillToPartyChangeAndUserReview: 9,\r\n Queued: 11,\r\n});\r\n\r\n/**\r\n * Mapping to BillingMT proxy InsertionOrderLabel\r\n */\r\nexport const InsertionOrderLabel = Object.freeze({\r\n None: 0,\r\n Expiring: 1,\r\n Exhausting: 2,\r\n Expired: 4,\r\n NoBudget: 8,\r\n});\r\n\r\n/**\r\n * Max and min value about InsertionOrder fields\r\n * For io creation, max comment length is 100; While editing, comment length can be up to 500\r\n */\r\nexport const IOMaxValues = Object.freeze({\r\n budgetValue: 1000000000,\r\n agencyIdOrPoLength: 50,\r\n nameLength: 100,\r\n commentLength: 100,\r\n editCommentLength: 500,\r\n});\r\n\r\nexport const IOMinValues = Object.freeze({\r\n budgetValue: 0.01,\r\n});\r\n\r\nexport const IOCreationSource = Object.freeze({\r\n UIInsertionOrder: 1,\r\n UIBatchInsertionOrder: 2,\r\n BulkIOImport: 3,\r\n RecurringInsertionOrder: 4,\r\n BillingTakeOver: 5,\r\n AgencyLinking: 6,\r\n Reparenting: 7,\r\n PaymentOptionSwitch: 8,\r\n CCAPIAddInsertionOrder: 9,\r\n IORecommendation: 10,\r\n});\r\n\r\nexport const InsertionOrdersGridFieldNames = Object.freeze({\r\n AccountId: 'AccountId',\r\n AccountName: 'AccountName',\r\n AccountNumber: 'AccountNumber',\r\n Action: 'Action',\r\n AgencyIdOrPo: 'AgencyIdOrPo',\r\n BalanceAmount: 'BalanceAmount',\r\n BillToCustomerName: 'BillToCustomerName',\r\n BillToCustomerNumber: 'BillToCustomerNumber',\r\n BudgetPerOrder: 'BudgetPerOrder',\r\n Comment: 'Comment',\r\n CompanyName: 'CompanyName',\r\n CurrencyType: 'CurrencyType',\r\n DaysToEndDate: 'DaysToEndDate',\r\n DealPointId: 'DealPointId',\r\n DraftEndDateStandardText: 'DraftEndDateStandardText',\r\n DraftEndDateText: 'DraftEndDateText',\r\n DraftStartDateStandardText: 'DraftStartDateStandardText',\r\n DraftStartDateText: 'DraftEndDateText',\r\n EndDate: 'EndDate',\r\n EndDateStandardText: 'EndDateStandardText',\r\n EndDateText: 'EndDateText',\r\n EndOccurrences: 'EndOccurrences',\r\n EstDaysToExhaustion: 'EstDaysToExhaustion',\r\n Frequency: 'Frequency',\r\n FriendlyName: 'FriendlyName',\r\n FromDate: 'FromDate',\r\n InsertionOrderId: 'InsertionOrderId',\r\n InsertionOrderName: 'InsertionOrderName',\r\n InsertionOrderLabel: 'InsertionOrderLabel',\r\n IOCreationSource: 'IOCreationSource',\r\n IsAgencyIdOrPoEditable: 'IsAgencyIdOrPoEditable',\r\n IsCommentEditable: 'IsCommentEditable',\r\n IsDealPointIdEditable: 'IsDealPointIdEditable',\r\n IsEndDateEditable: 'IsEndDateEditable',\r\n IsInSeries: 'IsInSeries',\r\n IsInsertionOrderNameEditable: 'IsInsertionOrderNameEditable',\r\n IsRecordCenterIdEditable: 'IsRecordCenterIdEditable',\r\n IsSpendCapAmountEditable: 'IsSpendCapAmountEditable',\r\n IsStartDateEditable: 'IsStartDateEditable',\r\n LastModifiedDate: 'LastModifiedDate',\r\n LastModifiedStandardDate: 'LastModifiedStandardDate',\r\n ModifiedByUser: 'ModifiedByUser',\r\n Notes: 'Notes',\r\n OrderName: 'OrderName',\r\n OrderType: 'OrderType',\r\n PurchaseOrder: 'PurchaseOrder',\r\n RecommendationId: 'RecommendationId',\r\n RecommendationType: 'RecommendationType',\r\n RecordCenterId: 'RecordCenterId',\r\n RecurringIOId: 'RecurringIOId',\r\n RemainingIOBudgetPercent: 'RemainingIOBudgetPercent',\r\n SeriesEndDate: 'SeriesEndDate',\r\n SeriesEndDateString: 'SeriesEndDateString',\r\n SeriesEndOption: 'SeriesEndOption',\r\n SeriesFrequencyType: 'SeriesFrequencyType',\r\n SeriesName: 'SeriesName',\r\n SeriesStartDate: 'SeriesStartDate',\r\n SeriesStartDateString: 'SeriesStartDateString',\r\n SpendCapAmount: 'SpendCapAmount',\r\n SpentIOBudget: 'SpentIOBudget',\r\n SpentIOBudgetPercent: 'SpentIOBudgetPercent',\r\n StartDate: 'StartDate',\r\n StartDateStandardText: 'StartDateStandardText',\r\n StartDateText: 'StartDateText',\r\n Status: 'Status',\r\n StatusValue: 'StatusValue',\r\n ThruDate: 'ThruDate',\r\n});\r\n\r\nconst MaxLengths = {\r\n FriendlyName: 100,\r\n RecordCenterId: 100,\r\n AgencyIdOrPo: 50,\r\n Comment: 500,\r\n Name: 60,\r\n};\r\n\r\nconst UpperBound = {\r\n SpendCapAmount: 1000000000,\r\n DealPointId: 2147483647, // int.Max\r\n Occurrences: 60,\r\n ExtendDays: 30,\r\n};\r\n\r\nconst LowerBound = {\r\n BackupSpendCapAmount: 0,\r\n ExtendDays: 0,\r\n};\r\n\r\nconst SpendCapAmountLowerBound = 0.01;\r\n\r\nexport const WarningSpendCapAmountIncreaseFactor = 10;\r\n\r\nexport const UnlimitedBudget = 1000000000000;\r\n\r\nexport const EndlessDate = new Date(9999, 0, 1);\r\n\r\nexport const ImmediateDate = new Date(1970, 0, 1);\r\n\r\nexport const IOFormInputSchema = {\r\n properties: {\r\n SpendCapAmount: {\r\n type: 'number',\r\n required: true,\r\n minimum: SpendCapAmountLowerBound,\r\n maximum: UpperBound.SpendCapAmount,\r\n },\r\n ExtendDays: {\r\n type: 'integer',\r\n required: true,\r\n minimum: LowerBound.ExtendDays,\r\n maximum: UpperBound.ExtendDays,\r\n },\r\n BackupSpendCapAmount: {\r\n type: 'number',\r\n required: true,\r\n minimum: LowerBound.BackupSpendCapAmount,\r\n maximum: UpperBound.SpendCapAmount,\r\n },\r\n AgencyIdOrPo: {\r\n type: 'string',\r\n nullable: true,\r\n maxLength: MaxLengths.AgencyIdOrPo,\r\n },\r\n FriendlyName: {\r\n type: 'string',\r\n nullable: true,\r\n maxLength: MaxLengths.FriendlyName,\r\n },\r\n Comment: {\r\n type: 'string',\r\n nullable: true,\r\n maxLength: MaxLengths.Comment,\r\n },\r\n DealPointId: {\r\n type: 'integer',\r\n minimum: 0,\r\n nullable: true,\r\n maximum: UpperBound.DealPointId,\r\n },\r\n RecordCenterId: {\r\n type: 'string',\r\n nullable: true,\r\n maxLength: MaxLengths.RecordCenterId,\r\n },\r\n FromDate: {\r\n type: 'string',\r\n nullable: true,\r\n required: true,\r\n },\r\n ThruDate: {\r\n type: 'string',\r\n nullable: true,\r\n required: true,\r\n },\r\n Occurrences: {\r\n type: 'integer',\r\n minimum: 1,\r\n nullable: true,\r\n maximum: UpperBound.Occurrences,\r\n required: true,\r\n },\r\n Name: {\r\n type: 'string',\r\n nullable: true,\r\n required: true,\r\n maxLength: MaxLengths.Name,\r\n },\r\n },\r\n};\r\n\r\nexport const RIOThruDateOptions = {\r\n EndByDate: 'EndByDate',\r\n NoEndDate: 'NoEndDate',\r\n EndByOccurrences: 'EndByOccurrences',\r\n};\r\n\r\nexport const IOFilter = {\r\n AccountPaused: JSON.stringify([{ Field: 'Status', Operator: '2', Values: '7,4' }]),\r\n Expiring: JSON.stringify([{ Field: 'DaysToEndDate', Operator: '9', Values: '7' }]),\r\n Exhausting: JSON.stringify([{ Field: 'EstDaysToExhaustion', Operator: '9', Values: '7' }]),\r\n};\r\n\r\nexport const IOEntryPointAlias = {\r\n Default: 'default',\r\n RIONotificationQueue: 'rionq',\r\n UcmHealthCheck: 'ucmhc',\r\n ConBNotificationQueue: 'conbnq',\r\n NotificationEmail: 'noemail',\r\n IONotificationsEnhancement: 'IOARE',\r\n BudgetCenter: 'bgtct',\r\n IOReportExpiring: 'iorptexp',\r\n IOReportExpired: 'iorptexd',\r\n IOReportExhausting: 'iorptexh',\r\n IOReportExhausted: 'iorptehd',\r\n};\r\n\r\nexport const IOEntryPointLogMessage = {\r\n [IOEntryPointAlias.Default]: 'defaultPage',\r\n [IOEntryPointAlias.RIONotificationQueue]: 'recurringIONotificationQueue',\r\n [IOEntryPointAlias.UcmHealthCheck]: 'ucmHealthCheck',\r\n [IOEntryPointAlias.ConBNotificationQueue]: 'consolidatedBudgetNotificationQueue',\r\n [IOEntryPointAlias.NotificationEmail]: 'notificationEmail',\r\n [IOEntryPointAlias.IONotificationsEnhancement]: 'IOARE',\r\n [IOEntryPointAlias.BudgetCenter]: 'budgetCenter',\r\n [IOEntryPointAlias.IOReportExpiring]: 'IOReportExpiring',\r\n [IOEntryPointAlias.IOReportExpired]: 'IOReportExpired',\r\n [IOEntryPointAlias.IOReportExhausting]: 'IOReportExhausting',\r\n [IOEntryPointAlias.IOReportExhausted]: 'IOReportExhausted',\r\n};\r\n\r\nexport const IOInputItemNames = {\r\n AccountName: 'AccountName',\r\n AccountId: 'AccountId',\r\n SpendCapAmount: 'SpendCapAmount',\r\n FromDate: 'FromDate',\r\n ThruDate: 'ThruDate',\r\n FriendlyName: 'FriendlyName',\r\n AgencyIdOrPo: 'AgencyIdOrPo',\r\n Comment: 'Comment',\r\n Currency: 'Currency',\r\n CurrencyType: 'CurrencyType',\r\n DealPointId: 'DealPointId',\r\n RecordCenterId: 'RecordCenterId',\r\n Name: 'Name',\r\n FrequencyType: 'FrequencyType',\r\n SeriesEndOption: 'SeriesEndOption',\r\n RepeatCount: 'RepeatCount',\r\n SeriesStartDate: 'SeriesStartDate',\r\n SeriesEndDate: 'SeriesEndDate',\r\n BudgetPerOrder: 'BudgetPerOrder',\r\n BackupIO: 'BackupIO',\r\n AccountBackupIOConfigModel: 'AccountBackupIOConfigModel',\r\n BackupSpendCapAmount: 'BackupSpendCapAmount',\r\n ExtendDays: 'ExtendDays',\r\n RecommendationId: 'RecommendationId',\r\n IOInlineSmartnessInfo: 'IOInlineSmartnessInfo',\r\n StartDateRecommendationItem: 'StartDateRecommendationItem',\r\n BudgetRecommendationItem: 'BudgetRecommendationItem',\r\n GeneralRecommendationItem: 'GeneralRecommendationItem',\r\n};\r\n\r\nexport const IOInlineSmartnessItemNames = {\r\n // Suggested start date fields\r\n SuggestedStartDate: 'SuggestedStartDate',\r\n LastInputStartDate: 'LastInputStartDate',\r\n\r\n // Suggested budget fields\r\n SuggestedBudget: 'SuggestedBudget',\r\n LastInputBudget: 'LastInputBudget',\r\n SuggestedDailySpend: 'SuggestedDailySpend',\r\n\r\n // General recommendation fields\r\n StartDate: 'StartDate',\r\n EndDate: 'EndDate',\r\n SpendCapAmount: 'SpendCapAmount',\r\n FrequencyType: 'FrequencyType',\r\n SeriesName: 'SeriesName',\r\n\r\n // Common fields\r\n IsDisplayed: 'IsDisplayed',\r\n IsApplyButtonClicked: 'IsApplyButtonClicked',\r\n};\r\n\r\nexport const IOPageLastVisitDateUserPerfName = 'IOPageLastVisitDate';\r\n","export const AccountLanguageI18nMap = {\r\n 1: _TL_('(Afan) Oromo'),\r\n 2: _TL_('Abkhazian'),\r\n 3: _TL_('Afar'),\r\n 4: _TL_('Afrikaans'),\r\n 5: _TL_('Albanian'),\r\n 6: _TL_('Amharic'),\r\n 7: _TL_('Arabic'),\r\n 8: _TL_('Armenian'),\r\n 9: _TL_('Assamese'),\r\n 10: _TL_('Aymara'),\r\n 11: _TL_('Azerbaijani'),\r\n 12: _TL_('Bashkir'),\r\n 13: _TL_('Basque'),\r\n 14: _TL_('Bangla'),\r\n 15: _TL_('Bhutani'),\r\n 16: _TL_('Bihari'),\r\n 17: _TL_('Bislama'),\r\n 18: _TL_('Breton'),\r\n 19: _TL_('Bulgarian'),\r\n 20: _TL_('Burmese'),\r\n 21: _TL_('Belarusian'),\r\n 22: _TL_('Cambodian'),\r\n 23: _TL_('Catalan'),\r\n 24: _TL_('Traditional Chinese'),\r\n 25: _TL_('Corsican'),\r\n 26: _TL_('Croatian'),\r\n 27: _TL_('Czech'),\r\n 28: _TL_('Danish'),\r\n 29: _TL_('Dutch'),\r\n 30: _TL_('English'),\r\n 31: _TL_('Esperanto'),\r\n 32: _TL_('Estonian'),\r\n 33: _TL_('Faeroese'),\r\n 34: _TL_('Fiji'),\r\n 35: _TL_('Finnish'),\r\n 36: _TL_('French'),\r\n 37: _TL_('Frisian'),\r\n 38: _TL_('Galician'),\r\n 39: _TL_('Georgian'),\r\n 40: _TL_('German'),\r\n 41: _TL_('Greek'),\r\n 42: _TL_('Greenlandic'),\r\n 43: _TL_('Guarani'),\r\n 44: _TL_('Gujarati'),\r\n 45: _TL_('Hausa'),\r\n 46: _TL_('Hebrew'),\r\n 47: _TL_('Hindi'),\r\n 48: _TL_('Hungarian'),\r\n 49: _TL_('Icelandic'),\r\n 50: _TL_('Indonesian'),\r\n 51: _TL_('Interlingua'),\r\n 52: _TL_('Interlingue'),\r\n 53: _TL_('Inupiak'),\r\n 54: _TL_('Irish'),\r\n 55: _TL_('Italian'),\r\n 56: _TL_('Japanese'),\r\n 57: _TL_('Javanese'),\r\n 58: _TL_('Kannada'),\r\n 60: _TL_('Kazakh'),\r\n 61: _TL_('Kinyarwanda'),\r\n 62: _TL_('Kirghiz'),\r\n 63: _TL_('Kirundi'),\r\n 64: _TL_('Korean'),\r\n 66: _TL_('Laothian'),\r\n 67: _TL_('Latin'),\r\n 68: _TL_('Latvian'),\r\n 69: _TL_('Lingala'),\r\n 70: _TL_('Lithuanian'),\r\n 71: _TL_('Macedonian'),\r\n 72: _TL_('Malagasy'),\r\n 73: _TL_('Maylay'),\r\n 74: _TL_('Maylayalam'),\r\n 75: _TL_('Maltese'),\r\n 76: _TL_('Maori'),\r\n 77: _TL_('Marathi'),\r\n 78: _TL_('Romanian'),\r\n 79: _TL_('Mongolian'),\r\n 80: _TL_('Nauru'),\r\n 81: _TL_('Nepali'),\r\n 82: _TL_('Norwegian'),\r\n 83: _TL_('Occitan'),\r\n 84: _TL_('Odia'),\r\n 85: _TL_('Pashto'),\r\n 86: _TL_('Persian'),\r\n 87: _TL_('Polish'),\r\n 88: _TL_('Portuguese'),\r\n 89: _TL_('Punjabi'),\r\n 90: _TL_('Quechua'),\r\n 91: _TL_('Rhaeto-Romance'),\r\n 92: _TL_('Romainian'),\r\n 93: _TL_('Russian'),\r\n 94: _TL_('Samoan'),\r\n 95: _TL_('Sangro'),\r\n 96: _TL_('Sanskrit'),\r\n 97: _TL_('Scottish Gaelic'),\r\n 98: _TL_('Serbian'),\r\n 99: _TL_('Serbian'),\r\n 100: _TL_('Sesotho'),\r\n 101: _TL_('Setswana'),\r\n 102: _TL_('Shona'),\r\n 103: _TL_('Sindhi'),\r\n 104: _TL_('Singhalese'),\r\n 105: _TL_('Siswati'),\r\n 106: _TL_('Slovak'),\r\n 107: _TL_('Slovenian'),\r\n 108: _TL_('Somali'),\r\n 109: _TL_('Spanish'),\r\n 110: _TL_('Spanish'),\r\n 111: _TL_('Sundanese'),\r\n 112: _TL_('Swedish'),\r\n 113: _TL_('Tagalog'),\r\n 114: _TL_('Tajik'),\r\n 115: _TL_('Tamil'),\r\n 116: _TL_('Tatar'),\r\n 117: _TL_('Telegu'),\r\n 118: _TL_('Thai'),\r\n 119: _TL_('Tibetan'),\r\n 120: _TL_('Tigrinya'),\r\n 121: _TL_('Tonga (Nyasa)'),\r\n 122: _TL_('Tsonga'),\r\n 123: _TL_('Turkish'),\r\n 124: _TL_('Turkmen'),\r\n 125: _TL_('Twi'),\r\n 126: _TL_('Ukrainian'),\r\n 127: _TL_('Urdu'),\r\n 128: _TL_('Uzbek'),\r\n 129: _TL_('Vietnamese'),\r\n 130: _TL_('Volapuk'),\r\n 131: _TL_('Welsh'),\r\n 132: _TL_('Wolof'),\r\n 133: _TL_('Xhosa'),\r\n 134: _TL_('Yiddish'),\r\n 135: _TL_('Yoruba'),\r\n 136: _TL_('Zulu'),\r\n 137: _TL_('Simplified Chinese'),\r\n};\r\n","import _ from 'underscore';\r\n\r\nexport const LinkType = Object.freeze({\r\n AdAccount: 1,\r\n ManagerAccount: 2,\r\n Reparenting: 3,\r\n});\r\n\r\nexport const LinkPermissionType = Object.freeze({\r\n Administrative: 1,\r\n Standard: 2,\r\n});\r\n\r\nexport const LinkRequestType = Object.freeze({\r\n Link: 1,\r\n Unlink: 2,\r\n BillingTakeover: 3,\r\n AccountTransfer: 4,\r\n});\r\n\r\n\r\nexport const HierarchyAccountTypeValue = Object.freeze({\r\n Unknown: 1,\r\n AdAccount: 2,\r\n ManagerAccount: 3,\r\n});\r\n\r\nexport const HierarchyAccountType = Object.freeze(_.invert(HierarchyAccountTypeValue));\r\n","export const NotificationType = Object.freeze({\r\n InsertionOrderBalanceDepletedEvent: 119,\r\n InsertionOrderExpiredEvent: 125,\r\n InsertionOrderExpiringUrgentEvent: 355,\r\n InsertionOrderExhaustingUrgentEvent: 354,\r\n});\r\n","import _ from 'underscore';\r\n\r\nexport const PaymentInstrumentType = Object.freeze({\r\n Unset: 0,\r\n CreditCard: 1,\r\n Invoice: 2,\r\n Check: 3,\r\n ElectronicFundsTransfer: 4,\r\n PayPal: 5,\r\n ELV: 6,\r\n OfflinePaymentMethod: 7,\r\n VBA: 8,\r\n Boleto: 9,\r\n UPI: 10,\r\n});\r\n\r\nexport const PaymentType = Object.freeze({\r\n Prepay: 'PrePay',\r\n Postpay: 'PostPay',\r\n});\r\n\r\nexport const PaymentTypeId = Object.freeze({\r\n Postpay: 0,\r\n Prepay: 1,\r\n Undefined: 2,\r\n});\r\n\r\nexport const PaymentOption = Object.freeze({\r\n Threshold: 'Threshold',\r\n Invoice: 'Monthly Invoice',\r\n Prepay: 'Prepay',\r\n});\r\n\r\nexport const PaymentOptionId = Object.freeze({\r\n Threshold: 1,\r\n Invoice: 2,\r\n Prepay: 12,\r\n});\r\n\r\nexport const OrderedPaymentOptionId = [\r\n PaymentOptionId.Prepay,\r\n PaymentOptionId.Threshold,\r\n PaymentOptionId.Invoice,\r\n];\r\n\r\nexport const OrderedPaymentOptionEnum = _.chain(PaymentOptionId)\r\n .keys()\r\n .sortBy(val => _.indexOf(OrderedPaymentOptionId, PaymentOptionId[val]))\r\n .value();\r\n\r\n/**\r\n * Map of payment settings (i.e. payment type) to payment options that fall under that\r\n * payment setting.\r\n * Note that going forward this should be used less frequently since\r\n * designers want to move toward a consolidate po-dropdown instead of separate inputs\r\n * for payment setting and payment option.\r\n */\r\nexport const PaymentSettingsMap = {\r\n [PaymentType.Prepay]: [PaymentOptionId.Prepay],\r\n [PaymentType.Postpay]: [PaymentOptionId.Threshold, PaymentOptionId.Invoice],\r\n};\r\n\r\nexport const CardCategory = Object.freeze({\r\n Unknown: 0,\r\n Debit: 1,\r\n Credit: 2,\r\n Prepaid: 3,\r\n});\r\n\r\nexport const CreditCardType = Object.freeze({\r\n VISA: 1,\r\n MC: 2,\r\n AMEX: 3,\r\n DISCOVER: 4,\r\n DINER: 5,\r\n JCB: 6,\r\n CB: 7,\r\n JAL: 8,\r\n INV: 9,\r\n});\r\n\r\nexport const PaymentInstrFinancialStatus = Object.freeze({\r\n NoHold: 0,\r\n CreditHold: 1,\r\n ManualHold: 2,\r\n AllHold: 3,\r\n});\r\n\r\nexport const PaymentInstrLifecycleStatus = Object.freeze({\r\n Active: 50,\r\n Inactive: 51,\r\n Deleted: 52,\r\n PendingValidation: 189,\r\n});\r\n\r\nexport const PaymentTransactionStatus = Object.freeze({\r\n Unknown: 0,\r\n Processing: 1,\r\n Declined: 2,\r\n Success: 3,\r\n Chargeback: 4,\r\n RefundReversal: 5,\r\n ChargebackReversal: 6,\r\n});\r\n\r\nexport const SAPApplicationType = Object.freeze({\r\n ApplyNewBilltoSAP: 0,\r\n UpdateSAPDetails: 1,\r\n AddingExistingSAP: 2,\r\n ApplyNewSoldtoSAP: 3,\r\n});\r\n\r\nexport const SAPApplicationStatus = Object.freeze({\r\n UnderReview: 0,\r\n Approved: 1,\r\n Rejected: 2,\r\n ActionRequired: 3,\r\n});\r\n\r\nexport const SAPApplicationQualificationErrors = Object.freeze({\r\n NoBillingDocumentAsBillto: 'NoBillingDocumentAsBillto',\r\n MinSpendBelowThreshold: 'MinSpendBelowThreshold',\r\n});\r\n\r\nexport const AllowedAgencyPITypes = Object.freeze([\r\n PaymentInstrumentType.CreditCard,\r\n PaymentInstrumentType.Invoice,\r\n PaymentInstrumentType.PayPal,\r\n]);\r\n\r\nexport const ESCPrepayUnsupportedPITypes = Object.freeze([\r\n PaymentInstrumentType.ELV,\r\n PaymentInstrumentType.Boleto,\r\n PaymentInstrumentType.OfflinePaymentMethod,\r\n]);\r\n\r\nexport const RiskControlEventTypes = Object.freeze({\r\n AddFunds: 0,\r\n Chargeback: 1,\r\n});\r\n\r\nexport const RiskControlResponseTypes = Object.freeze({\r\n RiskControlPassed: 0,\r\n BoletoAddFundsHighRisk: 1,\r\n SEPAAddFundsHighRisk: 2,\r\n SEPAChargebackHighRisk: 3,\r\n});\r\n\r\nexport const NukedPIStatusTypes = Object.freeze({\r\n ValidNoButton: 0,\r\n ValidShowButton: 1,\r\n Invalid: 2,\r\n AltInvalid: 3,\r\n});\r\n\r\nexport const CreditCardTypeString = Object.freeze({\r\n [CreditCardType.VISA]: _TL_('Visa'),\r\n [CreditCardType.MC]: _TL_('MasterCard'),\r\n [CreditCardType.AMEX]: _TL_('American Express'),\r\n [CreditCardType.DISCOVER]: _TL_('Discover'),\r\n [CreditCardType.DINER]: _TL_('Diners Club'),\r\n [CreditCardType.JCB]: _TL_('JCB'),\r\n [CreditCardType.CB]: _TL_('Carte Blanche'),\r\n [CreditCardType.JAL]: _TL_('JAL'),\r\n [CreditCardType.INV]: _TL_('Invoice (SAP)'),\r\n});\r\n\r\nexport const PaymentOptionString = Object.freeze({\r\n [PaymentOptionId.Threshold]: _TL_('Postpay threshold'),\r\n [PaymentOptionId.Invoice]: _TL_('Monthly invoice'),\r\n [PaymentOptionId.Prepay]: _TL_('Prepay'),\r\n});\r\n","export const SecurityAction = {\r\n AccountAdd: 'AccountAdd',\r\n AccountBillingLoad: 'AccountBillingLoad',\r\n AccountCashBackFetch: 'AccountCashbackFetch',\r\n AccountCashBackUpdate: 'AccountCashbackUpdate',\r\n AccountDelete: 'AccountDelete',\r\n AccountFetch: 'AccountFetch',\r\n AccountLoad: 'AccountLoad',\r\n AccountReactivate: 'AccountReactivate',\r\n AccountSensitiveCategorySet: 'AccountSensitiveCategorySet',\r\n AccountSensitiveCategoryView: 'AccountSensitiveCategoryView',\r\n AccountUpdate: 'AccountUpdate',\r\n AccountUserResponsibilityLoad: 'AccountUserResponsibilityLoad',\r\n ActionLoad: 'ActionLoad',\r\n AgencyAndSalesHouseCommissionPctView: 'AgencyAndSalesHouseCommissionPctView',\r\n AgencyInviteLoad: 'AgencyInviteLoad',\r\n AgencyInvite: 'AgencyInvite',\r\n AgencyLinkJobAdd: 'AgencyLinkJobAdd',\r\n AgencyLinkJobAccept: 'AgencyLinkJobAccept',\r\n AgencyLinkJobDelete: 'AgencyLinkJobDelete',\r\n AgencyLinkJobUpdate: 'AgencyLinkJobUpdate',\r\n AgencyLinkJobLoad: 'AgencyLinkJobLoad',\r\n AgencyLinkJobFetch: 'AgencyLinkJobFetch',\r\n AgencyRelationshipLoad: 'AgencyRelationshipLoad',\r\n ApiCustomerFetch: 'APICustomerFetch',\r\n ApiCustomerUpdate: 'APICustomerUpdate',\r\n ApiTokenStatusUpdate: 'APITokenStatusUpdate',\r\n ApiUserFetch: 'APIUserFetch',\r\n ApiUserUpdate: 'APIUserUpdate',\r\n BalanceLoad: 'BalanceLoad',\r\n BalanceAdjustmentExecute: 'BalanceAdjustmentExecute',\r\n BIReportMetadataLoad: 'BIReportMetadataLoad',\r\n BusinessLocationLoad: 'BusinessLocationLoad',\r\n CampaignManagementFullControl: 'CampaignManagementFullControl',\r\n CampaignManagementLoad: 'CampaignManagementLoad',\r\n CardStatementLoad: 'CardStatementLoad',\r\n CashBackRebateUpdate: 'CashbackRebateUpdate',\r\n CashBackMinMaxRebateUpdate: 'CashbackMinMaxRebateUpdate',\r\n CashBackPropertiesView: 'CashbackPropertiesView',\r\n ConvertCustomerToAgency: 'ConvertCustomerToAgency',\r\n ConvertCustomerToAggregator: 'ConvertCustomerToAggregator',\r\n CsoEmailUpdate: 'CSOEmailUpdate',\r\n CustomerFetch: 'CustomerFetch',\r\n CustomerFinancialStatusUpdate: 'CustomerFinancialStatusUpdate',\r\n CustomerDelete: 'CustomerDelete',\r\n CustomerIdMappingFetch: 'CustomerIdMappingFetch',\r\n CustomerIdMappingUpdate: 'CustomerIdMappingUpdate',\r\n CustomerLoad: 'CustomerLoad',\r\n CustomerRetier: 'CustomerRetier',\r\n CustomerSignup: 'CustomerSignup',\r\n CustomerScrub: 'CustomerScrub',\r\n CustomerUpdate: 'CustomerUpdate',\r\n ForceBilling: 'ForceBilling',\r\n GetCustomerCreditCardMigrationStatus: 'GetCustomerCreditCardMigrationStatus',\r\n InternalUserLoad: 'InternalUserLoad',\r\n InterstitialUrlUpdate: 'InterstitalUrlUpdate',\r\n InsertionOrderAdd: 'InsertionOrderAdd',\r\n InsertionOrderLoad: 'InsertionOrderLoad',\r\n InsertionOrderUpdate: 'InsertionOrderUpdate',\r\n InvoiceAdd: 'InvoiceAdd',\r\n InvoiceDelete: 'InvoiceDelete',\r\n IsInternal: 'http://advertising.microsoft.com/ClientCenter/MT/RoleAttributes/IsInternal',\r\n IsAggregator: 'http://advertising.microsoft.com/ClientCenter/MT/RoleAttributes/IsAggregator',\r\n LoadBatch: 'LoadBatch',\r\n MarketUpdate: 'MarketUpdate',\r\n MySettingsUpdate: 'MySettingsUpdate',\r\n NewAdjustment: 'NewAdjustment',\r\n OrderLoad: 'OrderLoad',\r\n PaymentInstrumentAdd: 'PaymentInstrAdd',\r\n PaymentInstrumentDelete: 'PaymentInstrDelete',\r\n PaymentInstrumentFetch: 'PaymentInstrFetch',\r\n PaymentInstrumentLoad: 'PaymentInstrLoad',\r\n PaymentInstrumentUpdate: 'PaymentInstrUpdate',\r\n PasswordReset: 'PasswordReset',\r\n PilotBatchUpdate: 'PilotBatchUpdate',\r\n PilotFlagUpdate: 'PilotFlagUpdate',\r\n PssAdvertiserLoad: 'PSSAdvertiserLoad',\r\n Rebill: 'Rebill',\r\n RoleActionLoad: 'RoleActionLoad',\r\n SetCustomerConsentForCreditCardMigration: 'SetCustomerConsentForCreditCardMigration',\r\n StatementLoad: 'StatementLoad',\r\n SupportBillingTemplateAdd: 'PSSAdvertiserLoad',\r\n SupportBillingDocumentRenderExecute: 'PSSAdvertiserLoad',\r\n SupportBillingDocumentReRenderExecute: 'PSSAdvertiserLoad',\r\n SystemLimitUpdate: 'SystemLimitUpdate',\r\n TaxExemptionCertStatusGet: 'TaxExemptionCertStatusGet',\r\n TaxExemptionCertStatusSet: 'TaxExemptionCertStatusSet',\r\n TaxInfoUpdate: 'TaxInfoUpdate',\r\n UpdateBatch: 'UpdateBatch',\r\n UserAccountSecurityFetch: 'UserAccountSecurityFetch',\r\n UserAdd: 'UserAdd',\r\n UserCustomerSecurityFetch: 'UserCustomerSecurityFetch',\r\n UserDelete: 'UserDelete',\r\n UserFetch: 'UserFetch',\r\n UserForceDelete: 'ForceDeleteUser',\r\n UserLoad: 'UserLoad',\r\n UserRoleFetch: 'UserRoleFetch',\r\n UserSuspend: 'UserSuspend',\r\n UserUpdate: 'UserUpdate',\r\n ViewAgentWorkspace: 'ViewAgentWorkspace',\r\n};\r\n","export const RecommendationType = Object.freeze({\r\n InsertionOrderCreation: 228,\r\n InsertionOrderUpdate: 229,\r\n AutoRecharge: 258,\r\n RecurringInsertionOrderAdd: 358,\r\n InsertionOrderInlineSmartness: 395,\r\n});\r\n","export const EmailRegExp = '^$|^[a-zA-Z0-9_\\\\.\\\\-\\\\+\\']+\\\\@(?:[\\\\w\\\\-]+\\\\.)+[a-zA-Z0-9]+$';\r\nexport const UKGovEmailRegExp = '^$|[a-zA-Z0-9._%+-]+@(?:[a-zA-Z0-9-.]+\\\\.)?(?:gov\\\\.uk|fca\\\\.org\\\\.uk)$';\r\nexport const PhoneNumberRegExp = '^\\\\+?[\\\\d\\\\-\\\\s\\\\(\\\\)extX\\\\.]*$';\r\nexport const PhoneNumberWithoutPrefixRegExp = '^[\\\\d\\\\-\\\\s\\\\(\\\\)extX\\\\.]*$';\r\nexport const DefaultPostalCodeRegExp = '[0-9]{5}(\\\\-[0-9]{4})?';\r\nexport const WebsiteRegExp = '^$|(?:https?:\\\\/\\\\/)?(?:[a-zA-Z0-9]+(?:-[a-zA-Z0-9]+)*\\\\.)+(?:[a-zA-Z0-9]+)+(?:\\\\/[A-Za-z0-9-\\\\._~:/?#[\\\\]@!$&\\'()*+,;=%]*)*';\r\nexport const RegGeneralInputBoxRegExp = '[^\\x00-\\x1F]*';\r\nexport const TaxSGGSTNumberRegExp = '^\\\\w{2}-?\\\\d{7}-?\\\\w$|^\\\\d{8,9}\\\\w$|^[TS]\\\\d{2}[A-Z]\\\\w\\\\d{4}\\\\w$';\r\nexport const TaxNZGSTNumberRegExp = '^\\\\d{2,3}-?\\\\d{3}-?\\\\d{3}$';\r\nexport const TaxINPANNumberRegExp = '^[A-Za-z0-9]{10}$';\r\nexport const TaxRSPIBNumberRegExp = '^[0-9]{9}$|^[0-9]{13}$';\r\nexport const TaxRSLegalNumberRegExp = '^[0-9]{8}$';\r\nexport const TaxINGSTINRegExp = '^$|^([0-9]{2}[0-9A-Z]{13})$';\r\nexport const TaxCOVatNumberRegExp = '^\\\\d{9}\\\\-\\\\d{1}$';\r\nexport const TaxCOCertificateExecutionDateRegExp = '^\\\\d{4}/\\\\d{2}/\\\\d{2}$';\r\nexport const TaxAEVatNumberRegExp = '^\\\\d{15}$';\r\nexport const TaxILVatNumberRegExp = '^\\\\d{9}$';\r\nexport const TaxVNVatNumberRegExp = '^\\\\d{10}(-\\\\d{3})?$';\r\nexport const TaxNOVatNumberRegExp = '^(NO)?\\\\s?\\\\d{3}\\\\s?\\\\d{3}\\\\s?\\\\d{3}\\\\s?MVA$';\r\nexport const TaxTRVatNumberRegExp = '^\\\\d{10}$|^\\\\d{11}$';\r\nexport const TaxGEVatNumberRegExp = '^\\\\d{9}$';\r\nexport const TaxTHVatNumberRegExp = '^\\\\d{13}$|^\\\\d{1}-\\\\d{4}-\\\\d{5}-\\\\d{2}-\\\\d{1}$';\r\nexport const TaxBDVatNumberRegExp = '^\\\\d{9}-\\\\d{4}$';\r\nexport const TaxIDVatNumberRegExp = '^\\\\d{2}\\\\.\\\\d{3}\\\\.\\\\d{3}\\\\.\\\\d{1}-\\\\d{3}\\\\.\\\\d{3}$|^\\\\d{15}$';\r\nexport const TaxBYVatNumberRegExp = '^\\\\d{9}$';\r\nexport const TaxNGVatNumberRegExp = '^\\\\d{8}\\\\-0001$';\r\nexport const TaxISVatNumberRegExp = '^\\\\d{5}$|^\\\\d{6}$';\r\nexport const TaxMDVatNumberRegExp = '^\\\\d{7}$';\r\nexport const TaxZWVatNumberRegExp = '^\\\\d{8}$';\r\nexport const TaxSAVatNumberRegExp = '^\\\\d{15}$';\r\nexport const TaxBHVatNumberRegExp = '^2\\\\d{14}$';\r\nexport const TaxKHVatNumberRegExp = '^L001-\\\\d{9}$|^B0\\\\d{2}-\\\\d{9}$|^K0\\\\d{2}-\\\\d{9}$|^E0\\\\d{2}-\\\\d{10}$';\r\nexport const TaxKEVatNumberRegExp = '^P\\\\d{9}[A-Za-z]$';\r\nexport const TaxOMVatNumberRegExp = '^OM\\\\d{10}$';\r\nexport const TaxGHVatNumberRegExp = '^[CP]\\\\d{10}$';\r\nexport const TaxCMVatNumberRegExp = '^[A-Za-z]{1}\\\\d{12}[A-Za-z]{1}$';\r\nexport const TaxUZVatNumberRegExp = '^\\\\d{12}$';\r\nexport const TaxFJVatNumberRegExp = '^\\\\d{2}-\\\\d{5}-\\\\d{1}-\\\\d{1}$|^\\\\d{10}$';\r\nexport const TaxGTVatNumberRegExp = '^\\\\d{7}-[0-9]$';\r\nexport const TaxBSVatNumberRegExp = '^\\\\d{9}$';\r\nexport const TaxPHVatNumberRegExp = '^\\\\d{3}(-\\\\d{3}){2,3}$';\r\nexport const TaxTHVATRegExp = '^$|^\\\\d{13}$';\r\nexport const TaxNGVATRegExp = '^$|^\\\\d{8}-0001$';\r\nexport const TaxAUGSTNumberRegExp = '^$|\\\\d{11}$';\r\nexport const TaxCAGSTNumberRegExp = '^$|^\\\\d{9}(\\\\s?RT\\\\d{4})?$';\r\nexport const TaxCABCPSTNumberRegExp = '^$|^PST-\\\\d{4}-\\\\d{4}$';\r\nexport const TaxCAQCQSTNumberRegExp = '^$|^\\\\d{10}TQ\\\\d{4}$';\r\nexport const TaxCAMBPSTNumberRegExp = '^$|^\\\\d{6}\\\\-\\\\d$|^\\\\d{9}MT\\\\d{4}$';\r\nexport const TaxCASKPSTNumberRegExp = '^$|^\\\\d{7}$';\r\nexport const TaxAMVatNumberRegExp = '^\\\\d{8}\\\\/[0,1]$';\r\nexport const TaxBBVatNumberRegExp = '^\\\\d{13}$';\r\nexport const TaxKZVatNumberRegExp = '^\\\\d{12}$';\r\nexport const TaxMXVatNumberRegExp = '^[A-Za-z]{4}\\\\d{6}[A-Za-z0-9]{3}$|^\\\\S{3}\\\\d{6}\\\\S{3}$';\r\nexport const TaxZAVatNumberRegExp = '^\\\\d{10}$';\r\nexport const TaxLAVatNumberRegExp = '^\\\\d{12}$';\r\nexport const TaxNPVatNumberRegExp = '^\\\\d{9}$';\r\nexport const FCARegistrationNumberRegExp = '^$|^[0-9]{6,7}$';\r\nexport const TaxChileVATRegExp = '^$|^\\\\d{8}-(\\\\d{1}|K)$';\r\nexport const UnifiedSocialCreditIdentifierRegExp = '^$|^[0-9A-Z]{18}$';\r\nexport const TaxARVatNumberRegExp = '^30-\\\\d{8}-\\\\d{1}$';\r\nexport const TaxAZVatNumberRegExp = '^AZ\\\\d{10}$';\r\nexport const TaxBJVatNumberRegExp = '^\\\\d{13}$';\r\nexport const TaxCNVatNumberRegExp = '^[\\\\dA-Za-z]{15}($|[\\\\dA-Za-z]{3}$)';\r\nexport const TaxCIVatNumberRegExp = '^\\\\d{7}[A-Za-z]{1}$';\r\nexport const TaxJPVatNumberRegExp = '^\\\\d{13}$';\r\nexport const TaxMYVatNumberRegExp = '^[\\\\dA-Za-z]{1}\\\\d{2}-\\\\d{4}-\\\\d{8}$';\r\nexport const TaxMMVatNumberRegExp = '^\\\\d{9}$';\r\nexport const TaxSRVatNumberRegExp = '^\\\\d{10}$';\r\nexport const TaxTJVatNumberRegExp = '^\\\\d{9}$';\r\nexport const TaxUAVatNumberRegExp = '^[\\\\dA-Za-z]{12}$';\r\nexport const TaxVEVatNumberRegExp = '^[JGVE]-\\\\d{8}-?\\\\d{1}$';\r\nexport const TaxZMVatNumberRegExp = '^100\\\\d{7}$';\r\nexport const TaxEGVatNumberRegExp = '^\\\\d{9}$';\r\nexport const TaxKRVatNumberRegExp = '^KR\\\\d{3}-\\\\d{2}-\\\\d{5}$';\r\nexport const TaxPEVatNumberRegExp = '^\\\\d{11}$';\r\nexport const TaxUYVatNumberRegExp = '^\\\\d{12}$';\r\nexport const TaxPAVatNumberRegExp = '^[1-9]\\\\d{0,2}-\\\\d{1,3}-\\\\d{1,6}\\\\sDV:\\\\s\\\\d{1,2}$|^\\\\d{1,4}-\\\\d{1,4}-\\\\d{1,4}\\\\sDV:\\\\s\\\\d{1,2}$|^\\\\d{1,9}-[23]-\\\\d{4}\\\\sDV:\\\\s\\\\d{1,2}$';\r\nexport const TaxPKVatNumberRegExp = '^PK\\\\d{13}$';\r\nexport const TaxIERegExp = '^[\\\\dA-Za-z]{9,14}$';\r\nexport const TaxTWVatNumberRegExp = '^\\\\d{8}$';\r\nexport const TaxUINRegExp = '^[A-Za-z0-9]{39}$';\r\nexport const TaxSNVatNumberRegExp = '^\\\\d{9}[A-Za-z0-9]{3}$';\r\n","export const FCAVerificationType = {\r\n FS: 1,\r\n Gov: 2,\r\n NonFS: 3,\r\n};\r\n\r\nexport const FCAAccountStatus = {\r\n Pending: 1,\r\n Verified: 2,\r\n VerifiedLimited: 3,\r\n Failed: 4,\r\n NotStarted: 5,\r\n NoNeed: 6,\r\n};\r\n\r\nexport const FCAAccountDomainStatus = {\r\n Create: 1,\r\n NQPPending: 2,\r\n Verified: 3,\r\n Failed: 4,\r\n Deleted: 5,\r\n};\r\n\r\nexport const FCAVerificationTypeString = {\r\n [FCAVerificationType.FS]: _TL_('UK FCA authorized financial services advertiser'),\r\n [FCAVerificationType.Gov]: _TL_('Government entity'),\r\n [FCAVerificationType.NonFS]: _TL_('Non-financial services advertiser'),\r\n};\r\n\r\nexport const FCAVerificationAccountStatusString = {\r\n [FCAAccountStatus.Pending]: _TL_('Pending'),\r\n [FCAAccountStatus.Verified]: _TL_('Verified'),\r\n [FCAAccountStatus.VerifiedLimited]: _TL_('Partially verified'),\r\n [FCAAccountStatus.Failed]: _TL_('Failed'),\r\n [FCAAccountStatus.NotStarted]: _TL_('Not started'),\r\n [FCAAccountStatus.NoNeed]: _TL_('Not in pilot'),\r\n};\r\n\r\nexport const CanTriggerFCAScenario = {\r\n Create: 'CanTriggerFCACreate',\r\n Update: 'CanTriggerFCAUpdate',\r\n};\r\n\r\nexport const UnableTriggerFCAReason = {\r\n UserRoleMismatch: 1,\r\n NotAccountOwner: 2,\r\n FCAStatusMismatch: 3,\r\n Unauthorized: 4,\r\n NotInPilot: 5,\r\n};\r\n","export const TradeScreeningStatus = Object.freeze({\r\n InValid: 0,\r\n HitInReview: 1,\r\n TrueMatch: 2,\r\n NoHit: 3,\r\n SSIF: 4,\r\n SSID: 5,\r\n SSIE: 6,\r\n LicR: 7,\r\n SSIF14: 8,\r\n SSID30: 9,\r\n SSIE60: 10,\r\n LicA: 11,\r\n DataIssue: 12,\r\n IngestionError: 13,\r\n Error: 14,\r\n NotScreened: 15,\r\n DataIssueOrg: 16,\r\n DataIssueName: 17,\r\n DataIssueAddress: 18,\r\n DataIssueLegalId: 19,\r\n});\r\n","export const EnforcementActionType = Object.freeze({\r\n Default: 0,\r\n SuspendAccountCreation: 1,\r\n ReadOnly: 2,\r\n});\r\n\r\nexport const CustomerFraudStatus = Object.freeze({\r\n NonFraud: 6,\r\n FraudPending: 7,\r\n Fraud: 8,\r\n});\r\n","export const ErrorCode = Object.freeze({\r\n GstInNumberAddressNotMatch: 'GstInNumberAddressNotMatch',\r\n});\r\n","export const NotificationCategoryFieldNames = {\r\n NotificationCategorySettings: 'NotificationCategorySettings',\r\n CategoryId: 'CategoryId',\r\n AllAccountsSettingStatus: 'AllAccountsSettingStatus',\r\n AllowContactPreference: 'AllowContactPreference',\r\n ContactPreferenceEmail: 'ContactPreferenceEmail',\r\n ContactPreferencePhone: 'ContactPreferencePhone',\r\n ContactPreferenceMail: 'ContactPreferenceMail',\r\n MarketingPreference: 'MarketingPreference',\r\n EmailFormat: 'EmailFormat',\r\n ChangedAccountList: 'ChangedAccountList',\r\n};\r\n\r\nexport const AllAccountsSettingStatus = {\r\n Off: 0,\r\n On: 1,\r\n Custom: 2,\r\n};\r\n","import _ from 'underscore';\r\nimport { AddressUtils } from '@bingads-webui-clientcenter/address';\r\n\r\nconst { isValid: isValidAddress, isValidBusinessName } = AddressUtils;\r\n\r\n/**\r\n * @param {object} accountBusinessAddress The account business address object.\r\n * @returns {boolean} Returns true if given account business address object is valid.\r\n */\r\nexport const isValidABL = accountBusinessAddress => isValidBusinessName(accountBusinessAddress) && isValidAddress(accountBusinessAddress);\r\n\r\n/**\r\n * Verify if the business name passed in matches with the individual information of the user.\r\n * A match is considered valid independently of the order of firstname and lastname passed in, spaces and upper/lower case entered\r\n * @param {object} businessNameData The UI version of the businessName data, containing the business name (property starting with lowerCase)\r\n * @param {object} individualInfoData An object representing information of an individual user like firstName and lastName\r\n * @returns {boolean} Returns true if the businessName matches the fullName.\r\n */\r\nexport const isBusinessNameMatchFullName = (businessNameData, individualInfoData) => {\r\n const { businessName } = businessNameData || {};\r\n const { firstName, lastName } = individualInfoData || {};\r\n\r\n const trimValue = (value) => {\r\n if (!_.isString(value) || _.isEmpty(value)) {\r\n return null;\r\n }\r\n return value.replace(/\\s/g, '').toLowerCase();\r\n };\r\n\r\n const businessNameTrimmed = trimValue(businessName);\r\n const firstNameTrimmed = trimValue(firstName);\r\n const lastNameTrimmed = trimValue(lastName);\r\n\r\n return _.isEqual(businessNameTrimmed, `${firstNameTrimmed}${lastNameTrimmed}`) || _.isEqual(businessNameTrimmed, `${lastNameTrimmed}${firstNameTrimmed}`);\r\n};\r\n\r\n/**\r\n * Returns a copy of the given account business address object with additional utility methods.\r\n * @param {object} accountBusinessAddress The account business address object to be extended with additional utility methods.\r\n * @returns {object} Return a copy of the extended account business address object.\r\n */\r\nexport const extendABL = (accountBusinessAddress = {}) => _.defaults({}, accountBusinessAddress, {\r\n isValidABL: () => isValidABL(accountBusinessAddress),\r\n isValidBusinessName: () => isValidBusinessName(accountBusinessAddress),\r\n});\r\n\r\n/**\r\n * Returns a normalized copy of the given account business address object.\r\n * @param {object} address The account business address object.\r\n * @returns {object} Return a copy of the extended account business address object.\r\n */\r\nexport const normalizeAddress = (address) => {\r\n const normalizedKeys = ['BusinessName', 'City', 'Country', 'Line1', 'Line2', 'Line3', 'Line4', 'PostalCode', 'StateOrProvince'];\r\n const normalizedAddress = _.pick(address, normalizedKeys);\r\n _.each(normalizedKeys, (key) => {\r\n const value = normalizedAddress[key];\r\n if (_.isEmpty(value)) {\r\n normalizedAddress[key] = null;\r\n } else {\r\n normalizedAddress[key] = value.trim().toLowerCase();\r\n }\r\n });\r\n return normalizedAddress;\r\n};\r\n\r\n/**\r\n * Return if the two addresses are the same. The compare is case insensitive and ignores spaces.\r\n * Logic should align with MT logic. https://msasg.visualstudio.com/Bing_Ads/_git/AnB?path=/private/ClientCenter/MT/Source/ClientCenter/DataContract/Entity/Address.cs\r\n * @param {object} accountBusinessAddress1 The flattened account business address object.\r\n * @param {object} accountBusinessAddress2 The flattened account business address object.\r\n * @returns {boolean} Returns true if the two addresses are the same.\r\n */\r\nexport const isABLMatch = (accountBusinessAddress1, accountBusinessAddress2) => _.isEqual(normalizeAddress(accountBusinessAddress1), normalizeAddress(accountBusinessAddress2));\r\n","module.exports = __WEBPACK_EXTERNAL_MODULE__231__;","import _ from 'underscore';\r\n\r\nimport {\r\n ABLVerificationStatus,\r\n ABLVerificationStatusTextMapping,\r\n AIVStatusLabelPropertyMapping,\r\n AccountInactiveCauseCode,\r\n AccountToAblVerificationStatusRelation,\r\n AccountVerificationStatus as AccountVerificationStatusEnum,\r\n AivAppealStatus,\r\n CNCompositeVerificationStatusTextMapping,\r\n OrderedUnableTriggerAivReasons,\r\n UnableTriggerAivReason,\r\n} from './constants';\r\nimport { normalizeAddress } from './abl-utils';\r\n\r\n/**\r\n * Get AIV status label using new i18n.\r\n * @param {object} i18n i18n object\r\n * @param {number} AIVStatus AIV status value\r\n * @returns {string} AIV status label\r\n */\r\nexport const getAccountAIVStatusForUI = ({ i18n, accountVerificationStatus, isInternal = false }) => {\r\n const AIVLabelProperty = AIVStatusLabelPropertyMapping[accountVerificationStatus];\r\n const labelKey = AIVLabelProperty && (isInternal ? AIVLabelProperty.labelKeyInternal : AIVLabelProperty.labelKey);\r\n const label = labelKey ? i18n.getString(labelKey) : i18n.getString(_TL_('(n/a)'));\r\n return {\r\n ...AIVLabelProperty,\r\n label,\r\n };\r\n};\r\n\r\nexport const getABLVerificationStatusForUI = ({ i18n, ablVerificationStatus }) => {\r\n const statusLabel = ABLVerificationStatusTextMapping[ablVerificationStatus];\r\n const notApplicableText = _TL_('(n/a)');\r\n return {\r\n label: i18n.getString(statusLabel || notApplicableText),\r\n };\r\n};\r\n\r\nexport const getCompositeVerificationStatusForUI = ({ i18n, compositeVerificationStatus }) => {\r\n const statusLabel = CNCompositeVerificationStatusTextMapping[compositeVerificationStatus];\r\n const notApplicableText = _TL_('(n/a)');\r\n return {\r\n label: i18n.getString(statusLabel || notApplicableText),\r\n };\r\n};\r\n\r\nexport const isAccountABLVerificationStatusMismatch = ({ accountVerificationStatus, ablVerificationStatus }) => {\r\n const ablVerificationStatusMatchList = AccountToAblVerificationStatusRelation[accountVerificationStatus];\r\n return _.values(ABLVerificationStatus).includes(ablVerificationStatus) && _.isArray(ablVerificationStatusMatchList) && !ablVerificationStatusMatchList.includes(ablVerificationStatus);\r\n};\r\n\r\nexport const isAccountVerificationStatusExists = accountVerificationStatus => _.contains(_.values(AccountVerificationStatusEnum), accountVerificationStatus);\r\n\r\nexport const isAccountVerificationRequestSubmitted = accountVerificationStatus => isAccountVerificationStatusExists(accountVerificationStatus) && !_.contains([AccountVerificationStatusEnum.NoNeedVerified, AccountVerificationStatusEnum.NeedVerified], accountVerificationStatus);\r\n\r\nexport const isInPilot = ({ AccountVerificationStatus }) => isAccountVerificationStatusExists(AccountVerificationStatus) && AccountVerificationStatus !== AccountVerificationStatusEnum.NoNeedVerified;\r\n\r\nexport const isABLVerificationStatusExists = ablVerificationStatus => _.contains(_.values(ABLVerificationStatus), ablVerificationStatus);\r\n\r\nexport const findABLVerificationStatus = ({\r\n addressList, businessName, countryCode, addressData, checkFullAddress, defaultStatus = ABLVerificationStatus.NotVerified,\r\n}) => {\r\n const targetAddressInfo = checkFullAddress\r\n ? normalizeAddress({\r\n ...addressData.address,\r\n BusinessName: businessName,\r\n })\r\n : { BusinessName: businessName.toLowerCase(), Country: countryCode.toLowerCase() };\r\n const normalizeAddressList = _.map(addressList, address => ({ ...normalizeAddress(address), ABLVerificationStatus: address.ABLVerificationStatus }));\r\n const { ABLVerificationStatus: ablVerificationStatus } = _.findWhere(normalizeAddressList, targetAddressInfo) || {};\r\n return isABLVerificationStatusExists(ablVerificationStatus) ? ablVerificationStatus : defaultStatus;\r\n};\r\n\r\nexport const isAivHold = ({ AccountInactiveReasonsV1 } = {}) =>\r\n !_.isEmpty(AccountInactiveReasonsV1) && _.contains(AccountInactiveReasonsV1.map(item => item.Causes[0]), AccountInactiveCauseCode.AccountVerificationHold);\r\n\r\nexport const isUnableTriggerAivReasonExists = unableTriggerAivReason => _.contains(_.values(UnableTriggerAivReason), unableTriggerAivReason);\r\n\r\nexport const findUnableTriggerAivReason = unableTriggerAivReasons =>\r\n _.find(OrderedUnableTriggerAivReasons, orderedReason => isUnableTriggerAivReasonExists(orderedReason) && _.contains(unableTriggerAivReasons, orderedReason));\r\n\r\nexport const isInitializeInProgress = unableTriggerAivReasons => _.contains(unableTriggerAivReasons, UnableTriggerAivReason.InitializeInProgress);\r\n\r\n/**\r\n * Check if the user is unable to trigger email verification. It should align with MT logic.\r\n * 1. User is internal; 2. User is not super admin; 3. User's parent customer id is not cid in url.\r\n * @param {object} userContext get from userContext(UserContext)\r\n * @param {cid} cid Customer id in Url\r\n * @returns {bool} if the user is unable to retrigger email verification\r\n */\r\nexport const isUnableToRetriggerBusinessVerification = ({ userContext, cid }) => {\r\n const currentUser = _.get(userContext, 'CurrentUser');\r\n return !currentUser || currentUser.IsInternal || currentUser.ParentCustomerId !== cid || !currentUser.IsSuperAdmin;\r\n};\r\n\r\nexport const getFullName = (individualDetailInfo) => {\r\n const { firstName = '', lastName = '' } = individualDetailInfo || {};\r\n const separator = _.isEmpty(firstName) || _.isEmpty(lastName) ? '' : ' ';\r\n return `${firstName}${separator}${lastName}`;\r\n};\r\n\r\nexport const isAivAppealAllowed = ({ accountVerificationStatus, accountVerificationAppealInfo = {} }) => accountVerificationStatus === AccountVerificationStatusEnum.Failed\r\n && (accountVerificationAppealInfo.AppealUCMTicket === null || accountVerificationAppealInfo.RemainingRetryCount === 1);\r\n\r\nexport const isAivAppealSubmitted = ({ accountVerificationStatus, accountVerificationAppealInfo = {} }) => accountVerificationStatus === AccountVerificationStatusEnum.Failed\r\n && accountVerificationAppealInfo.AppealUCMTicket !== null && accountVerificationAppealInfo.RemainingRetryCount === 0;\r\n\r\nexport const isAivAppealFailed = ({ accountVerificationStatus, accountVerificationAppealInfo = {} }) => accountVerificationStatus === AccountVerificationStatusEnum.OverrideFailed\r\n && accountVerificationAppealInfo.AppealUCMTicket !== null;\r\n\r\nexport const getAivAppealStatus = ({ accountVerificationStatus, accountVerificationAppealInfo = {} }) => {\r\n if (isAivAppealAllowed({ accountVerificationStatus, accountVerificationAppealInfo })) {\r\n return AivAppealStatus.Allowed;\r\n }\r\n if (isAivAppealSubmitted({ accountVerificationStatus, accountVerificationAppealInfo })) {\r\n return AivAppealStatus.Submitted;\r\n }\r\n if (isAivAppealFailed({ accountVerificationStatus, accountVerificationAppealInfo })) {\r\n return AivAppealStatus.Failed;\r\n }\r\n return AivAppealStatus.InValid;\r\n};\r\n","import _ from 'underscore';\r\nimport { NumberUtils } from '@bingads-webui-clientcenter/common-utils';\r\nimport {\r\n AccountFinancialStatus,\r\n AccountLifecycleStatus,\r\n AccountInactiveReasonCode,\r\n AccountInactiveReasonValue,\r\n AccountActivityStatus,\r\n AccountFinancialStatusBit,\r\n AccountMode,\r\n AccountCustomerRelationLifecycleStatus,\r\n} from './constants/account';\r\nimport { ManagedByType } from './constants/customer';\r\nimport { PaymentOption } from './constants/payment';\r\nimport { CountryCode } from './constants/country';\r\nimport { HierarchyAccountTypeValue } from './constants/linking';\r\nimport { TradeScreeningStatus } from './constants/trade-screening-transformation';\r\nimport { getAccountCountryCode } from './country-utils';\r\nimport { isStringNullOrWhiteSpace } from './common';\r\n\r\n/**\r\n * Returns the display string of an account in the format AccountName (AccountNumber)\r\n * @param {object} account the account object\r\n * @param {*} i18n the use i18n object\r\n * @returns {string} the display string of an account\r\n */\r\nexport const getDisplayName = (account, i18n) => {\r\n if (!_.isObject(account)) {\r\n return '';\r\n }\r\n const name = account.Name || '';\r\n return account.Number ? i18n.getString(_TL_('{{name}} ({{number}})'), { name, number: account.Number }) : name;\r\n};\r\n\r\n/**\r\n * Returns the hierarchy format of an account\r\n * @param {object} account the account object\r\n * @returns {string} the hierarchy format of an account\r\n */\r\nexport const getHierarchyAccount = (account = {}) => ({\r\n id: account.id,\r\n name: account.Name,\r\n number: account.Number,\r\n type: HierarchyAccountTypeValue.AdAccount,\r\n managers: _.map(account.Managers, (manager = {}) => ({\r\n name: manager.Name,\r\n number: manager.Number,\r\n id: manager.Id,\r\n })),\r\n});\r\n\r\n/**\r\n * Returns true if the target customer is bill-to of the account in parameter, false otherwise.\r\n * @param {object} account the account object.\r\n * @param {number} targetCustomerId the target customer id to decide if the account in param is bill-to of this cid.\r\n * @returns {boolean} true if the target customer is bill-to of the account in parameter, false otherwise\r\n */\r\nexport const isBillToCustomer = (account, targetCustomerId) => parseInt(targetCustomerId, 10) >= 0 && _.isObject(account) && account.BillToCustomerId === targetCustomerId;\r\n\r\n/**\r\n * Returns true if the target account is bill to agency customer, false otherwise.\r\n * @param {object} account the account object.\r\n * @returns {boolean} true if the target account is bill to agency customer, false otherwise.\r\n */\r\nexport const isBillToAgencyCustomer = account => _.isObject(account) && _.isNumber(account.BillToCustomerId) &&\r\n _.isNumber(account.ParentCustomerId) && account.ParentCustomerId !== account.BillToCustomerId;\r\n\r\n/**\r\n * Returns a predicate function that will tell you if a passed in object contains the Reason value \"Deleted\"\r\n * @returns {func} a predicate function that will tell you if a passed in object contains the Reason value \"Deleted\"\r\n */\r\nexport const deletedReasonValueMatcher = _.matcher({ Reason: AccountInactiveReasonValue.Deleted });\r\n\r\n/**\r\n * Returns a predicate function that will tell you if a passed in object contains the Reason Code of Deleted\r\n * @returns {func} a predicate function that will tell you if a passed in object contains the Reason Code of Deleted\r\n */\r\nexport const deletedReasonCodeMatcher = _.matcher({ Reason: AccountInactiveReasonCode.Deleted });\r\n\r\n/**\r\n * Returns whether the account is deleted.\r\n * @param {object} account The account object.\r\n * @returns {bool} Return whether the account is deleted\r\n */\r\nexport const isDeleted = (account = {}) => account.LifecycleStatus === AccountLifecycleStatus.Inactive ||\r\n account.UILifecycleStatusLocId === AccountFinancialStatus.Inactive ||\r\n _.some(account.AccountInactiveReasonsV1, deletedReasonCodeMatcher) ||\r\n _.some(account.AccountInactiveReasons, deletedReasonValueMatcher); // In Campaign account object use the string values instead of the integer codes\r\n\r\n/**\r\n * Returns whether the account is created.\r\n * @param {object} account The account object.\r\n * @returns {bool} Return whether the account is created\r\n */\r\nexport const isCreated = (account = {}) => account && account.LifecycleStatus !== AccountLifecycleStatus.Draft;\r\n\r\n/**\r\n * Returns an AccountActivityStatus indicating if the account is enabled or not.\r\n * In case the account is not enabled, it returns a specific status (like AccountActivityStatus.Deleted)\r\n * In case the account doesn't have a specific AccountActivityStatus, but still\r\n * contains unhandled AccountInactiveReasons, AccountActivityStatus.Errors is returned\r\n * @param {object} account The account object.\r\n * @returns {string} Return an AccountActivityStatus value indicating if the account is enabled, deleted, or has any others errors preventing it to be fully enabled\r\n */\r\nexport const activityStatus = (account = {}) => {\r\n if (isDeleted(account)) {\r\n return AccountActivityStatus.Deleted;\r\n }\r\n\r\n const handledAccountInactiveReasons = [\r\n AccountInactiveReasonCode.NotSet,\r\n AccountInactiveReasonCode.Deleted,\r\n AccountInactiveReasonValue.NotSet,\r\n AccountInactiveReasonValue.Deleted,\r\n ];\r\n const remainingAccountInactiveReasons = _.reject(\r\n _.union(account.AccountInactiveReasonsV1, account.AccountInactiveReasons),\r\n item => _.contains(handledAccountInactiveReasons, item.Reason)\r\n );\r\n\r\n return _.isEmpty(remainingAccountInactiveReasons) ? AccountActivityStatus.Enabled : AccountActivityStatus.Errors;\r\n};\r\n\r\n/**\r\n * Returns true if the account is manual hold, false otherwise.\r\n * @param {object} account The account object.\r\n * @returns {boolean} true if the account is manual hold, false otherwise.\r\n */\r\nexport const isManualHold = (account = {}) => NumberUtils.hasFlag(account.LastFinStatusUpdatedSourceBitMap, AccountFinancialStatusBit.ManualHold);\r\n\r\n/**\r\n * Returns true if the account is smart account, false otherwise.\r\n * @param {object} account The account object.\r\n * @returns {boolean} true if the account is smart account, false otherwise.\r\n */\r\nexport const isSmartAccount = account => account.AccountMode === AccountMode.Smart;\r\n\r\n/**\r\n * Returns true if the account is unified smart account, false otherwise.\r\n * @param {object} account The account object.\r\n * @returns {boolean} true if the account is unified smart account, false otherwise.\r\n */\r\nexport const isUnifiedSmartAccount = account => account.AccountMode === AccountMode.UnifiedSmart;\r\n\r\n/**\r\n * Returns true if the account financial status is write off, false otherwise.\r\n * @param {object} account the account object.\r\n * @returns {boolean} true if the account financial status is write off, false otherwise.\r\n */\r\nexport const isWriteOff = account => account.FinancialStatus === AccountFinancialStatus.WriteOff;\r\n\r\n/**\r\n * Returns true if the given account object has known payment option set.\r\n * @param {object} account The account object.\r\n * @returns {bool} true if the given account object has known payment option set.\r\n */\r\nexport const hasPaymentOption = account => _.isObject(account) && _.contains(_.values(PaymentOption), account.PaymentOption);\r\n\r\n/**\r\n * Returns true if the given account object has one of the payment options passed in paramaters\r\n * @param {object} account The account object\r\n * @param {int[]} paymentOptions The list of payment options to verify.\r\n * @returns {bool} true if the given account object has one of the payment option set passed in paramaters\r\n */\r\nexport const hasOneOfPaymentOptions = (account, paymentOptions) => hasPaymentOption(account) && _.contains(paymentOptions, account.PaymentOption);\r\n\r\n/**\r\n * @typedef {object} AccountManager\r\n * @property {number} Id Account manager id\r\n * @property {string} Name Account manager name\r\n * @property {string} Number Account manager number\r\n */\r\n\r\n/**\r\n * Returns the given account's managers\r\n * @param {object} account The account object\r\n * @returns {Array.} Account managers\r\n */\r\nexport const managers = (account = {}) => _.chain(account.AccountCustomerRelations)\r\n .filter(({ isManagingCustomer, LifecycleStatus }) => isManagingCustomer && LifecycleStatus === AccountCustomerRelationLifecycleStatus.Active)\r\n .map(({ RelatedToCustomerId, RelatedToCustomerName, RelatedToCustomerNumber }) => ({\r\n Id: RelatedToCustomerId,\r\n Name: RelatedToCustomerName,\r\n Number: RelatedToCustomerNumber ? RelatedToCustomerNumber.trim() : null,\r\n }))\r\n .value();\r\n\r\n/**\r\n * Returns true if the given account has manager\r\n * @param {object} account The account object\r\n * @returns {bool} true if the given account has manager\r\n */\r\nexport const hasManager = (account = {}) => managers(account).length > 0;\r\n\r\n/**\r\n * Returns true if the given account object is mandatory for account level ap contact\r\n * @param {object} account The account object\r\n * @returns {bool} true if the given account object is mandatory for account level ap contact\r\n */\r\nexport const isAccountAPContactMandatory = (account) => {\r\n if (!_.isObject(account) || !_.isObject(account.BusinessAddress)) {\r\n return false;\r\n }\r\n const invoiceMandatoryCountries = [CountryCode.US, CountryCode.FR];\r\n const prepayThresholdMandatoryCountries = [CountryCode.FR];\r\n\r\n const isInvoiceMandatory = hasOneOfPaymentOptions(account, [PaymentOption.Invoice]) && isBillToAgencyCustomer(account) &&\r\n _.contains(invoiceMandatoryCountries, account.BusinessAddress.Country);\r\n\r\n const isPrepayThresholdMandatory = hasOneOfPaymentOptions(account, [PaymentOption.Prepay, PaymentOption.Threshold]) &&\r\n _.contains(prepayThresholdMandatoryCountries, account.BusinessAddress.Country);\r\n\r\n return isInvoiceMandatory || isPrepayThresholdMandatory;\r\n};\r\n\r\n/**\r\n * Returns true if the given account object has india emandate failed PI\r\n * @param {object} account The account object\r\n * @param {object} currentPI The PI object\r\n * @returns {bool} true if the given account object has india emandate failed PI\r\n */\r\nexport const isIndiaEmandateFailedPIAccount = ({ account, currentPI }) => _.isObject(currentPI) &&\r\n getAccountCountryCode(account) === CountryCode.IN && currentPI.SupportsRecurringPayment && new Date(currentPI.CreationDate) >= new Date(2021, 3, 1, 0, 0, 0);\r\n\r\n/**\r\n * Returns true if the account's parent customer is managed by Yahoo\r\n * @function\r\n * @param {object} account the account object\r\n * @returns {bool} true if the account's parent customer is managed by Yahoo\r\n */\r\nexport const isManagedByYahoo = account => _.get(account, 'ManagedBy') === ManagedByType.Yahoo;\r\n\r\n/**\r\n * transform account object into ablInfo object, made for loading the shared ABL with initial data\r\n * @param {object} account The account object.\r\n * @returns {object} ablInfo object that can be consumed directly by the ABL component\r\n */\r\nexport const getAblInfoFormat = ({ account }) => {\r\n if (!account) {\r\n return {};\r\n }\r\n return {\r\n countryCode: _.get(account.BusinessAddress, 'Country'),\r\n addressData: { address: account.BusinessAddress },\r\n businessNameData: { businessName: _.get(account.BusinessAddress, 'BusinessName') },\r\n taxData: { data: account.TaxInformation, taxCertification: account.TaxCertification },\r\n prefillAddressId: _.get(account.BusinessAddress, 'Id'),\r\n };\r\n};\r\n\r\n/**\r\n * Check if account is in TST hit-in-review status\r\n * @param {object} account The account object to be extended with additional utility methods.\r\n * @returns {boolean} Result of whether account is in TST hit-in-review status\r\n */\r\nexport const isTSTInReview = account => _.get(account, 'TradeScreeningStatus') === TradeScreeningStatus.HitInReview;\r\n\r\n/**\r\n * Check if account is in TST LicR status\r\n * @param {object} account The account object to be extended with additional utility methods.\r\n * @returns {boolean} Result of whether account is in TST licR status\r\n */\r\nexport const isTSTLicR = account => _.get(account, 'TradeScreeningStatus') === TradeScreeningStatus.LicR;\r\n\r\n/**\r\n * Check if account is in TST true-match status\r\n * @param {object} account The account object to be extended with additional utility methods.\r\n * @returns {boolean} Result of whether account is in TST true-match status\r\n */\r\nexport const isTSTTrueMatch = account => _.get(account, 'TradeScreeningStatus') === TradeScreeningStatus.TrueMatch;\r\n\r\n/**\r\n * Check if account is in TST data issue missing name status\r\n * @param {object} account The account object to be extended with additional utility methods.\r\n * @returns {boolean} Result of whether account is in TST data issue missing name status\r\n */\r\nexport const isTSTDataIssueName = account => (\r\n _.get(account, 'TradeScreeningStatus') === TradeScreeningStatus.DataIssueName ||\r\n _.get(account, 'TradeScreeningStatus') === TradeScreeningStatus.DataIssueOrg\r\n);\r\n\r\n/**\r\n * Check if account is in TST data issue missing address status\r\n * @param {object} account The account object to be extended with additional utility methods.\r\n * @returns {boolean} Result of whether account is in TST data issue missing address status\r\n */\r\nexport const isTSTDataIssueAddress = account => _.get(account, 'TradeScreeningStatus') === TradeScreeningStatus.DataIssueAddress;\r\n\r\n/**\r\n * Check if account is in TST data issue missing legal identifier status\r\n * @param {object} account The account object to be extended with additional utility methods.\r\n * @returns {boolean} Result of whether account is in TST data issue missing legal identifier status\r\n */\r\nexport const isTSTDataIssueLegalId = account => _.get(account, 'TradeScreeningStatus') === TradeScreeningStatus.DataIssueLegalId;\r\n\r\n/**\r\n * Check if account is missing master data\r\n * @param {object} account The account object to be extended with additional utility methods.\r\n * @returns {boolean} Result of whether account is missing data\r\n */\r\nexport const isTSTMissingMasterData = account => (\r\n isStringNullOrWhiteSpace(_.get(account, ['BusinessAddress', 'Country']))\r\n || isStringNullOrWhiteSpace(_.get(account, ['BusinessAddress', 'City']))\r\n || isStringNullOrWhiteSpace(_.get(account, ['BusinessAddress', 'Line1']))\r\n || isStringNullOrWhiteSpace(_.get(account, ['BusinessAddress', 'BusinessName'])));\r\n\r\n/**\r\n * Returns a copy of the given account object with additional utility methods.\r\n * @param {object} account The account object to be extended with additional utility methods.\r\n * @param {*} i18n the i18n object\r\n * @returns {object} A copy of the extended account object.\r\n */\r\nexport const extendAccount = (account = {}, i18n) => _.defaults({}, account, {\r\n activityStatus: () => activityStatus(account),\r\n displayName: () => getDisplayName(account, i18n),\r\n isAccountAPContactMandatory: () => isAccountAPContactMandatory(account),\r\n isBillToCustomer: targetCustomerId => isBillToCustomer(account, targetCustomerId),\r\n isBillToAgencyCustomer: () => isBillToAgencyCustomer(account),\r\n isDeleted: () => isDeleted(account),\r\n isCreated: () => isCreated(account),\r\n isManualHold: () => isManualHold(account),\r\n isWriteOff: () => isWriteOff(account),\r\n hasManager: () => hasManager(account),\r\n hasOneOfPaymentOptions: paymentOptions => hasOneOfPaymentOptions(account, paymentOptions),\r\n hasPaymentOption: () => hasPaymentOption(account),\r\n hierarchyAccount: () => getHierarchyAccount(account),\r\n managers: () => managers(account),\r\n toAblInfoFormat: () => getAblInfoFormat({ account }),\r\n isIndiaEmandateFailedPIAccount: currentPI => isIndiaEmandateFailedPIAccount({ account, currentPI }),\r\n isManagedByYahoo: () => isManagedByYahoo(account),\r\n isTSTDataIssueName: () => isTSTDataIssueName(account),\r\n isTSTDataIssueLegalId: () => isTSTDataIssueLegalId(account),\r\n isTSTDataIssueAddress: () => isTSTDataIssueAddress(account),\r\n isTSTInReview: () => isTSTInReview(account),\r\n isTSTLicR: () => isTSTLicR(account),\r\n isTSTTrueMatch: () => isTSTTrueMatch(account),\r\n isTSTMissingMasterData: () => isTSTMissingMasterData(account),\r\n});\r\n","import _ from 'underscore';\r\nimport { CountryCode, CallingCodeBeforePhoneNumberRegExp, NonEMEAVatCountries, YahooMarkets } from './constants/country';\r\nimport { getControlledCurrency } from './currency-utils';\r\n\r\nexport const isAddressRequired = (country = {}) => country.IsAddressRequired !== false;\r\n\r\nexport const isVatApplicable = (country = {}) => !!country.IsVatApplicable && !_.contains(NonEMEAVatCountries, country.Code.toUpperCase());\r\n\r\nexport const isTaxableCountry = (country = {}) => !!country.IsTaxableCountry;\r\n\r\nexport const isPaperlessBillingAllowed = (country = {}) => !!country.IsPaperlessBillingAllowed;\r\n\r\nexport const isPaperlessBillingEnforcement = (country = {}) => !!country.PaperlessBillingEnforced;\r\n\r\n// TODO: add region property for Country from Domain Data MT Response\r\nexport const getRegion = country => (isVatApplicable(country) ? 'EMEA' : '');\r\n\r\n/**\r\n * Display format for country and calling code\r\n * @param {object} country Country object\r\n * @param {string} Name Country localized name\r\n * @param {string} CountryCallingCode Country calling code\r\n * @returns {string} The display format for given country and calling code\r\n */\r\nexport const getCallingCodeDisplayByCountry = (country = {}) => {\r\n const callingCodeString = _.isEmpty(country.CountryCallingCode) ? '' : ` (+${country.CountryCallingCode})`;\r\n return `${country.Name || ''}${callingCodeString}`;\r\n};\r\n\r\n/**\r\n * Returns a copy of the given country object with additional utility methods.\r\n * @param {object} country The country object to be extended with additional utility methods.\r\n * @returns {object} A copy of the extended country object.\r\n */\r\nexport const extendCountry = (country = {}) => _.defaults({}, country, {\r\n isAddressRequired: () => isAddressRequired(country),\r\n isVatApplicable: () => isVatApplicable(country),\r\n isPaperlessBillingAllowed: () => isPaperlessBillingAllowed(country),\r\n isPaperlessBillingEnforcement: () => isPaperlessBillingEnforcement(country),\r\n getRegion: () => getRegion(country),\r\n callingCodeDisplay: () => getCallingCodeDisplayByCountry(country),\r\n});\r\n\r\n/**\r\n * Looks through the list 'countries' and returns the first country found by code, with or without extension\r\n * if no match is found, undefined will be returned.\r\n * @param {object[]} countries the list of countries\r\n * @param {string} countryCode the country code\r\n * @param {bool} [withExtensions] Specifiy if we should add extensions to the country found\r\n * @returns {object} the first country found from the list 'countries', or undefined otherwise\r\n */\r\nexport const findCountry = ({ countries, countryCode, withExtensions = false } = {}) => {\r\n const country = _.findWhere(countries, { Code: countryCode });\r\n return country && withExtensions ? extendCountry(country) : country;\r\n};\r\n\r\n/**\r\n * Sort countries from MT domainData by localized country name\r\n * @param {object[]} countries List of countries returned by domain data\r\n * @param {string} countries[].Name Country localized name\r\n * @param {string} countries[].Code Country code\r\n * @param {string} countries[].CountryCallingCode Country calling code\r\n * @param {string} countries[].Currency Country currency\r\n * @param {number} countries[].Id Country id\r\n * @param {boolean} countries[].IsAddressRequired It indicates if country's address is required\r\n * @param {boolean} countries[].IsVatApplicable It indicates if country's VAT is applicable\r\n * @param {boolean} countries[].IsPaperlessBillingAllowed It indicates if country allow paperless billing\r\n * @returns {array} The sorted countries\r\n */\r\nexport const sortCountries = (countries) => {\r\n if (!_.isArray(countries)) {\r\n return [];\r\n }\r\n return countries.sort((item1, item2) => item1.Name.localeCompare(item2.Name, 'co', { sensitivity: 'base' }));\r\n};\r\n\r\n/**\r\n * Group countries by calling code because some countries share same calling code,\r\n * we should show one line in dropdown list. Also calling code for AN is not correct.\r\n * @param {object[]} countries List of countries returned by domain data\r\n * @param {string} countries[].Name Country localized name\r\n * @param {string} countries[].Code Country code\r\n * @param {string} countries[].CountryCallingCode Country calling code\r\n * @param {string} countries[].Currency Country currency\r\n * @param {number} countries[].Id Country id\r\n * @param {boolean} countries[].IsAddressRequired It indicates if country's address is required\r\n * @param {boolean} countries[].IsVatApplicable It indicates if country's VAT is applicable\r\n * @param {boolean} countries[].IsPaperlessBillingAllowed It indicates if country allow paperless billing\r\n * @returns {array} The countries grouped by calling code\r\n */\r\n\r\nexport const groupCountriesByCallingCode = (countries) => {\r\n const CountryNameSeperator = ', ';\r\n const moveUsInFront = (countryList) => {\r\n const indexOfUS = _.findIndex(countryList, { Code: CountryCode.US });\r\n if (indexOfUS > 0) {\r\n const arrayWithCountryUS = countryList.splice(indexOfUS, 1);\r\n return arrayWithCountryUS.concat(countryList);\r\n }\r\n return countryList;\r\n };\r\n\r\n return _.chain(countries)\r\n .omit(country => country.Code === CountryCode.AN) // omit calling code 599 since it's not accurate\r\n .groupBy('CountryCallingCode')\r\n .map((_countryList, callingCode) => {\r\n const countryList = moveUsInFront(_countryList);\r\n return {\r\n CountryCallingCode: callingCode,\r\n Name: _.pluck(countryList, 'Name').join(CountryNameSeperator),\r\n };\r\n })\r\n .value();\r\n};\r\n\r\n\r\n/**\r\n * Find country by calling code and get display format\r\n * @param {object[]} countries List of countries returned by domain data\r\n * @param {string} callingCode Calling code string\r\n * @param {string} countries[].Name Country localized name\r\n * @param {string} countries[].CountryCallingCode Country calling code\r\n * @returns {array} The display format of country and calling code for given calling code\r\n */\r\nexport const getCallingCodeDisplayByCallingCode = (countries, callingCode) => {\r\n const country = _.findWhere(countries, { CountryCallingCode: callingCode });\r\n return getCallingCodeDisplayByCountry(country);\r\n};\r\n\r\n/**\r\n * Get calling code and phone number from a phone string\r\n * @param {string} phone Phone string with calling code and phone number\r\n * @returns {object} Calling code and phone number\r\n */\r\nexport const getPhoneNumberMatchResult = (phone) => {\r\n const phoneNumberWithCallingCodeMatchResult = new RegExp(CallingCodeBeforePhoneNumberRegExp).exec(phone);\r\n return {\r\n phoneNumber: _.result(phoneNumberWithCallingCodeMatchResult, 2, phone),\r\n callingCode: _.result(phoneNumberWithCallingCodeMatchResult, 1),\r\n };\r\n};\r\n\r\n/**\r\n * Combine calling code and phone number to a phone string, refer to `CallingCodeBeforePhoneNumberRegExp`\r\n * @param {string} callingCode calling code\r\n * @param {string} phoneNumber phone number\r\n * @returns {string} phone string\r\n */\r\nexport const combineCallingCodeAndPhoneNumber = (callingCode, phoneNumber) => {\r\n const callingCodeString = _.isEmpty(callingCode) ? '' : `${callingCode}-`;\r\n return `${callingCodeString}${phoneNumber}`;\r\n};\r\n\r\n/**\r\n * Get country code of the indicated account\r\n * @param {object} account account to get country code\r\n * @returns {string} country code of the indicated account\r\n */\r\nexport const getAccountCountryCode = account => _.chain(account).result('BusinessAddress').result('Country').value();\r\n\r\n/**\r\n * Remove Yahoo markets from country list\r\n * @function\r\n * @param {object[]} countries List of countries\r\n * @param {string} countries[].Code Country code\r\n * @param {array} options.countryCodeKeepList countryCodeKeepList special country codes that we want to keep, e.g. HK, only remove TW\r\n * @returns {array} The country list excluding Yahoo markets\r\n */\r\nexport const removeYahooMarkets = (countries, { countryCodeKeepList } = {}) => _.reject(countries, ({ Code }) => (!_.contains(countryCodeKeepList, Code) && YahooMarkets.includes(Code)));\r\n\r\n/**\r\n * Get available countries by controlled currency\r\n * @param {object[]} countries List of countries\r\n * @param {object[]} currencies List of currencies\r\n * @param {string} currencyType - The currency type\r\n * @returns {Array} country of the controlled currency, return null if not a controlled currency\r\n */\r\nexport const getAvailableCountriesByControlledCurrency = ({ countries, currencies, currencyType }) => {\r\n const controlledCurrency = getControlledCurrency({ currencies, currencyType });\r\n return controlledCurrency ? countries.filter(country => country.Id === controlledCurrency.ControlledCurrencyCountryId) : null;\r\n};\r\n\r\n/**\r\n * Get available countries by currency countries mapping\r\n * @param {object[]} countries List of countries\r\n * @param {object[]} currencyCountriesMapping List of currency country mapping\r\n * @param {string} currencyType - The currency type\r\n * @returns {Array} country of the controlled currency, return null if not a controlled currency\r\n */\r\nexport const getAvailableCountriesByCurrencyCountriesMapping = ({ countries, currencyCountriesMapping, currencyType }) => {\r\n const availableCountryListByCurrency = _.get(_.find(currencyCountriesMapping, record => record.currency === currencyType), 'countries', []);\r\n return currencyType ? countries.filter(country => _.contains(availableCountryListByCurrency, country.Code)) : countries;\r\n};\r\n\r\n/**\r\n * get available countries from currencyCountriesMapping\r\n * @param {object[]} countries List of countries\r\n * @param {object[]} currencyCountriesMapping - The currency countries mapping, each currency is mapping to a list of country code, optional\r\n * @param {object[]} currencies List of currencies, optional\r\n * @param {string} currencyType - The currency type, optional\r\n * @param {string[]} countryCodeKeepList List of country codes to keep, optional\r\n * @returns {Array.} The available country code list filtered by currencyType, if no currencyType, return all countries\r\n */\r\nexport const getAvailableCountriesByCurrency = ({\r\n countries, currencyCountriesMapping = [], currencies = [], currencyType = '', countryCodeKeepList = [],\r\n}) => {\r\n const controlledCurrencyCountry = getAvailableCountriesByControlledCurrency({ countries, currencies, currencyType });\r\n if (controlledCurrencyCountry) {\r\n return controlledCurrencyCountry;\r\n }\r\n\r\n const filteredCountries = getAvailableCountriesByCurrencyCountriesMapping({ countries, currencyCountriesMapping, currencyType });\r\n\r\n // we want to keep yahoo markets for existing accounts\r\n return removeYahooMarkets(filteredCountries, { countryCodeKeepList });\r\n};\r\n\r\n/**\r\n * Get available countries for the account mode\r\n * @param {object[]} countries List of countries\r\n * @param {int} accountMode - The accountMode of the account\r\n * @param {object} allowedCountriesByAccountModeMapping - the allowed countries by accountMode mapping\r\n * @param {string} [countryCodePropertyKey] - The key to access the country code of the country object. Defaults to 'Code'\r\n * @returns {Array.} The available country code list filtered by accountMode, if no accountMode, or no restrictions, return all countries\r\n */\r\nexport const getAvailableCountriesByAccountMode = ({\r\n countries, accountMode, allowedCountriesByAccountModeMapping, countryCodePropertyKey = 'Code',\r\n}) => {\r\n const allowedcountryList = accountMode && _.isObject(allowedCountriesByAccountModeMapping) && allowedCountriesByAccountModeMapping[accountMode];\r\n if (allowedcountryList) {\r\n return countries.filter(country => _.contains(allowedcountryList, country[countryCodePropertyKey]));\r\n }\r\n\r\n return countries;\r\n};\r\n","import _ from 'underscore';\r\nimport { VByVRequiredCurrencyCodes } from './constants';\r\n\r\n/**\r\n * Get currency code property\r\n * @param {object} currencyValue Value object of currency\r\n * @param {number} currencyValue.Id Id of currency\r\n * @param {string} currencyValue.Code Code of currency\r\n * @returns {object} currency code, and empty string if code is not found\r\n */\r\nexport const getCurrencyCode = currencyValue => _.result(currencyValue, 'Code', '');\r\n\r\n/**\r\n * Get extendCurrency object\r\n * @param {object} currencyValue Value object of currency\r\n * @param {number} currencyValue.Id Id of currency\r\n * @param {string} currencyValue.Code Code of currency\r\n * @returns {object} extendCurrency object\r\n */\r\nexport const extendCurrency = (currencyValue = {}) => _.defaults({}, currencyValue, {\r\n code: getCurrencyCode(currencyValue),\r\n});\r\n\r\n/**\r\n * Get currency value object by id\r\n * @param {number} id Id of currency\r\n * @param {bool} getExtendedObject It indicates if this function will return extended currency value object\r\n * @param {object[]} currencies List of currencies\r\n * @param {number} currencies[].id Id of currency\r\n * @param {object} currencies[].value Value object of currency\r\n * @param {number} currencies[].value.Id Id of currency\r\n * @param {string} currencies[].value.Code Code of currency\r\n * @returns {object} Currency value object, and null or default extendCurrency object if currency code is not found\r\n */\r\nexport const findCurrency = ({ currencies, id, getExtendedObject = false }) => {\r\n const currency = _.findWhere(currencies, { id });\r\n const currencyValue = _.result(currency, 'value', {});\r\n return getExtendedObject ? extendCurrency(currencyValue) : currencyValue;\r\n};\r\n\r\n/**\r\n * Sort currencies from MT domainData by localized currency name\r\n * @param {object[]} currencies List of currencies returned by domain data\r\n * @param {number} currencies[].Id Currency id\r\n * @param {string} currencies[].Code Currency Code\r\n * @param {number} currencies[].ControlledCurrencyCountryId It indicates if the currency is a controlled currency\r\n * @param {boolean} currencies[].DisplayName Currency display name\r\n * @returns {array} The sorted currencies\r\n */\r\nexport const sortCurrencies = (currencies) => {\r\n if (!_.isArray(currencies)) {\r\n return [];\r\n }\r\n return currencies.sort((item1, item2) => item1.DisplayName.localeCompare(item2.DisplayName, 'co', { sensitivity: 'base' }));\r\n};\r\n\r\n/**\r\n * Get controlled currency\r\n * @param {object[]} currencies List of currencies\r\n * @param {string} currencyType Currency type\r\n * @returns {object} return the controlled currency\r\n */\r\nexport const getControlledCurrency = ({ currencies, currencyType }) => _.find(currencies, curr => _.isNumber(curr.ControlledCurrencyCountryId) && curr.Code === currencyType);\r\n\r\n/**\r\n * Get whether the provided currency should be verified by Visa\r\n * @param {string} currencyCode Code of currency\r\n * @returns {bool} indicate whether the provided currency should be verified by Visa\r\n */\r\nexport const isCurrencyRequiresVerifiedByVisa = currencyCode => _.contains(VByVRequiredCurrencyCodes, currencyCode);\r\n\r\n/**\r\n * Get available currencies based on countryCourrenciesMapping\r\n * @param {string} countryCode Code of country\r\n * @param {string} currencies List of currencies\r\n * @param {string} countryCurrenciesMapping List of country currencies mapping\r\n * @returns {array} return sorted currencies based on countryCurrenciesMapping\r\n */\r\nexport const getAvailableCurrenciesByCountryCode = ({ countryCode, currencies, countryCurrenciesMapping }) => {\r\n if (!countryCode || !countryCurrenciesMapping) {\r\n return currencies;\r\n }\r\n const allowedCurrencyCodes = _.findWhere(countryCurrenciesMapping, { country: countryCode });\r\n const allowedCurrencies = _.filter(\r\n currencies,\r\n currency => _.contains(allowedCurrencyCodes ? allowedCurrencyCodes.currencies : [], currency.Code)\r\n );\r\n return sortCurrencies(allowedCurrencies);\r\n};\r\n","/**\r\n * Check if string is null, empty or only contains whitespaces\r\n * @param {string|null} str string to check\r\n * @returns {boolean} Result of whether string is null or whitespace\r\n */\r\nexport function isStringNullOrWhiteSpace(str) {\r\n return str == null || (typeof str === 'string' && str.replace(/\\s/g, '') === '');\r\n}\r\n","import _ from 'underscore';\r\n\r\nimport { AdjustmentReason, AdjustmentReasonString, CreditActions, DebitActions } from './constants/adjustments';\r\n\r\n/**\r\n * Map adjustment reasons to localized name by new adjustment ids\r\n * @param {object[]} reasons List of reasons returned by domain data\r\n * @param {number} reasons[].id Adjustment reason id\r\n * @param {object} reasons[].value Adjustment reason value object\r\n * @param {number} reasons[].value.Id Adjustment reason id\r\n * @param {string} reasons[].value.Name Adjustment reason name\r\n * @param {object} i18n i18n\r\n * @returns {array} The mapped adjustment reason filtered by new adjustment ids\r\n */\r\nexport const mapNewAdjustmentReasons = (reasons, i18n) => {\r\n const unselectedReason = { id: AdjustmentReason.None, value: i18n.getString(AdjustmentReasonString[AdjustmentReason.None]) };\r\n const newAdjustmentReasonsFormatted = _.chain(reasons)\r\n .filter(reason => _.contains(_.values(AdjustmentReason), reason.id))\r\n .map(reason => ({\r\n id: reason.id,\r\n value: i18n.getString(AdjustmentReasonString[reason.id]),\r\n }))\r\n .value();\r\n\r\n return [unselectedReason, ...newAdjustmentReasonsFormatted];\r\n};\r\n\r\nexport const isCreditAction = action => _.contains(CreditActions, parseInt(action, 10));\r\n\r\nexport const isDebitAction = action => _.contains(DebitActions, parseInt(action, 10));\r\n","import _ from 'underscore';\r\nimport { DateUtils, NumberUtils } from '@bingads-webui-clientcenter/common-utils';\r\nimport { DocumentType as BillingDocumentType, CreditMemoDocumentType, PaymodErrorCodes, DocumentIdAttribute, DocumentTypeString } from './constants/billing';\r\nimport { PaymentOptionId } from './constants/payment';\r\n\r\n/**\r\n * Returns true if documentType is CurrentActivity\r\n * @param {string} documentType the documentType string\r\n * @returns {string} true if documentType is CurrentActivity, false otherwise\r\n */\r\nexport const isTypeCurrentActivity = documentType => documentType === BillingDocumentType.CurrentActivity;\r\n\r\n/**\r\n * Returns true if documentType is PrePaidInvoices\r\n * @param {string} documentType the documentType string\r\n * @returns {string} true if documentType is PrePaidInvoices, false otherwise\r\n */\r\nexport const isDocumentTypePrePaidInvoices = documentType => documentType === BillingDocumentType.PrePaidInvoices;\r\n\r\n/**\r\n * Returns true if documentType is PrePaidStatement\r\n * @param {string} documentType the documentType string\r\n * @returns {string} true if documentType is PrePaidStatement, false otherwise\r\n */\r\nexport const isDocumentTypePrePaidStatement = documentType => documentType === BillingDocumentType.PrePaidStatement;\r\n\r\n/**\r\n * Returns true if documentType is PostPaidStatement\r\n * @param {string} documentType the documentType string\r\n * @returns {string} true if documentType is PostPaidStatement, false otherwise\r\n */\r\nexport const isDocumentTypePostPaidStatement = documentType => documentType === BillingDocumentType.PostPaidStatement;\r\n\r\n/**\r\n * Returns true if documentType is credit memo\r\n * @param {string} documentType the documentType string\r\n * @returns {string} true if documentType is credit memo, false otherwise\r\n */\r\nexport const isDocumentTypeCreditMemo = documentType => _.contains(CreditMemoDocumentType, documentType);\r\n\r\n/**\r\n * Returns true if documentType is monthly statement\r\n * @param {string} documentType the documentType string\r\n * @returns {string} true if documentType is monthly statement, false otherwise\r\n */\r\nexport const isDocumentTypeMonthlyStatement = documentType => documentType === BillingDocumentType.MonthlyStatement;\r\n\r\n/**\r\n * Returns the billing document date range\r\n * @param {object} billingDocument the billingDocument object\r\n * @param {object} options Some optional options for date formatting: pass i18n and dateFormat\r\n * @returns {string} the billing document date range in the following format: startDate-endDate if they both exists, or only one of them. Is no date, returns empty string\r\n */\r\nexport const getDocumentDateRangeFormatted = (\r\n { ActivityStartDate, ActivityEndDate, DocumentType },\r\n { i18n, dateFormat } = {}\r\n) => {\r\n const getDateFormatted = date => (date && i18n && dateFormat ? i18n.formatDate(new Date(date), { format: dateFormat }) : date);\r\n const startDate = getDateFormatted(ActivityStartDate);\r\n const endDate = getDateFormatted(ActivityEndDate);\r\n const isCreditMemoSameDate = isDocumentTypeCreditMemo(DocumentType) && startDate === endDate;\r\n\r\n return (isDocumentTypePrePaidInvoices(DocumentType) || isCreditMemoSameDate) ?\r\n `${startDate || ''}` :\r\n `${startDate || ''}${startDate && endDate ? ' - ' : ''}${endDate || ''}`;\r\n};\r\n\r\n/**\r\n * Returns true if billingDocument is consolidated, based on different backend logic\r\n * @param {object} billingDocument the billingDocument object\r\n * @returns {string} true if billingDocument is consolidated, false otherwise\r\n */\r\nexport const isConsolidated = billingDocument => _.isObject(billingDocument) && (billingDocument.IsStatementConsolidated === 'True' || billingDocument.IsStatementConsolidated === true || billingDocument.IsConsolidatedBilling === true);\r\n\r\n/**\r\n * Returns true if billingDocument is consolidated for billing group\r\n * @param {object} billingDocument the billingDocument object\r\n * @param {string} customerId the customerId\r\n * @returns {string} true if billingDocument is consolidated, false otherwise\r\n */\r\nexport const isConsolidatedForBillingGroup = (billingDocument, customerId) => isConsolidated(billingDocument) && billingDocument.BillToCustomerId === customerId && !_.isEmpty(billingDocument.BillingGroupName);\r\n\r\n/**\r\n * Returns the billing document type text, or a noValue string if not a type to display\r\n * @param {object} billingDocument the billingDocument object\r\n * @param {object} options the options for type formatting: pass i18n and optional noValueStr (by default '-')\r\n * @returns {string} the billing document type text, or a noValueStr if not a type to display\r\n */\r\nexport const getDocumentTypeText = ({ DocumentType }, { i18n, noValueStr = '-' }) => {\r\n if (!DocumentType || isTypeCurrentActivity(DocumentType)) {\r\n return noValueStr;\r\n }\r\n return i18n.getString(DocumentTypeString[DocumentType]);\r\n};\r\n\r\n/**\r\n * Returns the past due information based on the input billing information\r\n * @param {number} paymentOptionId account's paymentOptionId\r\n * @param {number} amountBalance account's amount balance\r\n * @param {number} amountPaid account's paid amount\r\n * @param {date} dueDate due date\r\n * @param {boolean} isRebilled is rebilled\r\n * @param {object} i18n i18n\r\n * @returns {object} pastDueStatusText and the cssClass.\r\n */\r\nexport const getPastDueInfo = ({\r\n paymentOptionId,\r\n amountBalance,\r\n amountPaid,\r\n dueDate,\r\n isRebilled,\r\n i18n,\r\n}) => {\r\n let pastDueStatusText;\r\n let cssClass;\r\n const rebilledText = isRebilled && parseInt(paymentOptionId, 10) === PaymentOptionId.Invoice\r\n ? i18n.getString(_TL_('Rebilled'))\r\n : undefined;\r\n\r\n if (parseInt(paymentOptionId, 10) === PaymentOptionId.Invoice && parseFloat(amountBalance) === 0 && amountPaid > 0) {\r\n pastDueStatusText = i18n.getString(_TL_('Paid'));\r\n cssClass = 'paid';\r\n } else if (_.isDate(dueDate) && amountBalance > 0) {\r\n const pstNowDate = DateUtils.getPSTDateNow({ i18n });\r\n const pastDueDay = DateUtils.getDateDiffInDays({ fromDate: pstNowDate, toDate: dueDate });\r\n if (pastDueDay > 0) {\r\n pastDueStatusText = i18n.getString(_TL_('Overdue by {0} Days')).replace('{0}', pastDueDay);\r\n cssClass = 'pastdue';\r\n } else {\r\n pastDueStatusText = i18n.getString(_TL_('Open'));\r\n }\r\n }\r\n\r\n return { pastDueStatusText, cssClass, rebilledText };\r\n};\r\n\r\n\r\n/**\r\n * @param {Uri} billingUrlBuilder the base billing Url Builder\r\n * @param {number} billingDocumentId the billing document Id to be rendered. If not valid will return null.\r\n * @param {number} advertiserCustomerId the advertisercustomerId of the target bd.\r\n * @param {number} accountId the accountId of the target bd.\r\n * @param {BillingDocumentRenderingMethod} methodId the method Id calling the BD rendering.\r\n * @param {string} documentType the type of the bd\r\n * @param {number} dualInvoiceType indicate whether get the dual invoice for IN\r\n * @param {bool} requireINTaxInvoice indicate whether require India tax invoice documemnt (with QRCode and IRN)\r\n * @returns {string} Gets the URL for rendering a billing document.\r\n */\r\nexport const getBillingDocumentUrl = ({\r\n billingUrlBuilder,\r\n billingDocumentId,\r\n advertiserCustomerId,\r\n billtoCustomerId,\r\n accountId,\r\n accountNumber,\r\n methodId,\r\n documentType,\r\n dualInvoiceType,\r\n requireINTaxInvoice,\r\n}) => (NumberUtils.isValidWholeNumber(billingDocumentId) ? billingUrlBuilder.action('RenderBillingDocument').params({\r\n id: billingDocumentId,\r\n advertiserCustomerId,\r\n billtoCustomerId,\r\n accountId,\r\n accountNumber,\r\n systemId: 1,\r\n methodId,\r\n documentType,\r\n dualInvoiceType,\r\n requireINTaxInvoice,\r\n}).withoutAid().absoluteUrl : null);\r\n\r\n/**\r\n * Returns a copy of the given billing document object with additional utility methods.\r\n * @param {object} billingDocument The billingDocument object to be extended with additional utility methods.\r\n * @param {object} options the i18n object\r\n * @returns {object} A copy of the extended account object.\r\n */\r\nexport const extendBillingDocument = (billingDocument = {}, options = {}) => _.defaults({}, billingDocument, {\r\n dateRangeFormatted: () => getDocumentDateRangeFormatted(billingDocument, options),\r\n isConsolidated: () => isConsolidated(billingDocument),\r\n documentTypeText: () => getDocumentTypeText(billingDocument, options),\r\n});\r\n\r\n/**\r\n * @typedef {object} PaymodErrorAlertModel\r\n * @property {string} heading The heading text\r\n * @property {string} description The description text\r\n * @property {Array} actions The actions\r\n * @property {object} helpAction The help action\r\n * @property {string} helpAction.text The help action text\r\n * @property {string} helpAction.helpQuery The help action helpQuery\r\n */\r\n\r\n/**\r\n * Get paymod error alert model\r\n * @function\r\n * @param {object} arg function argument\r\n * @param {object} arg.i18n i18n model\r\n * @param {object} arg.urls urls from react-router\r\n * @param {string} arg.paymodErrorCode paymod error code\r\n * @param {number} arg.accountId account id\r\n * @returns {PaymodErrorAlertModel} paymod error alert model\r\n */\r\nexport const getPaymodErrorAlertModel = ({\r\n i18n,\r\n urls,\r\n paymodErrorCode,\r\n accountId,\r\n}) => {\r\n let heading = '';\r\n let description = '';\r\n const helpAction = { helpQuery: '50826', text: i18n.getString(_TL_('Learn more')) };\r\n const actions = [];\r\n\r\n const paymentMethodUrl = urls.paymentMethods({ aid: accountId });\r\n const payNowUrl = urls.payNow({ aid: accountId });\r\n const prepayUrl = urls.addFunds({ aid: accountId });\r\n\r\n const managePaymentMethodAction = { text: i18n.getString(_TL_('Manage payment methods')), url: paymentMethodUrl };\r\n const changePaymentMethodsAction = { text: i18n.getString(_TL_('Change payment methods')), url: paymentMethodUrl };\r\n const makeManualPaymentAction = { text: i18n.getString(_TL_('Make a manual payment')), url: payNowUrl };\r\n const makeManualPaymentPrepayAction = { text: i18n.getString(_TL_('Make a manual payment')), url: prepayUrl };\r\n\r\n switch (paymodErrorCode) {\r\n case PaymodErrorCodes.ProcessorDeclined:\r\n case PaymodErrorCodes.ProcessorRiskcheckDeclined:\r\n case PaymodErrorCodes.TransactionNotAllowed:\r\n case PaymodErrorCodes.RiskReject:\r\n heading = i18n.getString(_TL_('Bank Decline'));\r\n description = i18n.getString(_TL_('Your bank has declined this charge. Please contact your bank for more information.'));\r\n break;\r\n case PaymodErrorCodes.ExpiredPaymentInstrument:\r\n heading = i18n.getString(_TL_('Expired card'));\r\n description = i18n.getString(_TL_('Please update your card, or use a new payment method.'));\r\n actions.unshift(managePaymentMethodAction);\r\n break;\r\n case PaymodErrorCodes.AmountLimitExceeded:\r\n heading = i18n.getString(_TL_('Exceeds single transaction limits'));\r\n description = i18n.getString(_TL_('Your bank declined a payment because it exceeds the limit allowed for a single transaction. Please contact your bank to increase the limit, or retry using a different payment method.'));\r\n actions.unshift(managePaymentMethodAction);\r\n break;\r\n case PaymodErrorCodes.InvalidPaymentInstrument:\r\n heading = i18n.getString(_TL_('Invalid payment method'));\r\n description = i18n.getString(_TL_('Your payment is declined. Please replace or update your payment method and try again.'));\r\n actions.unshift(managePaymentMethodAction);\r\n break;\r\n case PaymodErrorCodes.CVVValueMismatch:\r\n heading = i18n.getString(_TL_('CVV Code Invalid'));\r\n description = i18n.getString(_TL_('Security code invalid. Please use another card and try again.'));\r\n actions.unshift(managePaymentMethodAction);\r\n break;\r\n case PaymodErrorCodes.InsufficientFund:\r\n heading = i18n.getString(_TL_('Insufficient funds'));\r\n description = i18n.getString(_TL_('Your payment is declined. Please try again using a different payment method.'));\r\n actions.unshift(changePaymentMethodsAction);\r\n break;\r\n case PaymodErrorCodes.MissingFundingSource:\r\n heading = i18n.getString(_TL_('Payment declined'));\r\n description = i18n.getString(_TL_(\"Your funding source (a card, a bank account, or an online payment system) wasn't available when we tried to process your payment. You can try again later or change payment methods.\"));\r\n actions.unshift(changePaymentMethodsAction);\r\n break;\r\n case PaymodErrorCodes.AuthRequired:\r\n heading = i18n.getString(_TL_('Payment declined'));\r\n description = i18n.getString(_TL_('Your charge was declined because you need to authenticate your payment method.'));\r\n actions.unshift(makeManualPaymentAction);\r\n break;\r\n case PaymodErrorCodes.InvalidTransactionDataPrepay:\r\n heading = i18n.getString(_TL_('System issue'));\r\n description = i18n.getString(_TL_('Due to recent changes in bank regulations for credit card transactions from India E-Mandate, you will need to manually add funds to prepaid balance.'));\r\n actions.unshift(makeManualPaymentPrepayAction);\r\n break;\r\n case PaymodErrorCodes.InvalidTransactionDataThreshold:\r\n heading = i18n.getString(_TL_('System issue'));\r\n description = i18n.getString(_TL_('Due to recent changes in bank regulations for credit card transactions from India E-Mandate, you will need to manually settle account balance.'));\r\n actions.unshift(makeManualPaymentAction);\r\n break;\r\n case PaymodErrorCodes.AuthorizationExpired:\r\n case PaymodErrorCodes.IncorrectPinOrPasscode:\r\n case PaymodErrorCodes.MissingSessionData:\r\n case PaymodErrorCodes.InvalidTransactionData:\r\n default:\r\n heading = i18n.getString(_TL_('System issue'));\r\n description = i18n.getString(_TL_('We encountered a system issue while processing this payment. Please try again later or contact support for assistance.'));\r\n break;\r\n }\r\n\r\n return {\r\n heading,\r\n description,\r\n actions,\r\n helpAction,\r\n };\r\n};\r\n\r\n/**\r\n * @typedef {object} BillingSummary\r\n * @property {number} PaymentOptionId The paymentOptionId of the billingSummary\r\n */\r\n\r\n/**\r\n * Is designated billing summary\r\n * @function\r\n * @param {BillingSummary} billingSummary - The billingSummary object\r\n * @param {number} paymentOptionId - The payment option id\r\n * @returns {bool} Whether the billingSummary is designated billing summary\r\n */\r\nexport const isDesignatedBillingSummary = (billingSummary, paymentOptionId) =>\r\n _.result(billingSummary, 'PaymentOptionId') === paymentOptionId;\r\n\r\n/**\r\n * Is prepay billing summary\r\n * @function\r\n * @param {BillingSummary} billingSummary - The billingSummary object\r\n * @returns {bool} Whether the billingSummary is prepay or not\r\n */\r\nexport const isPrepayBillingSummary = billingSummary => isDesignatedBillingSummary(billingSummary, PaymentOptionId.Prepay);\r\n\r\n/**\r\n * Is threshold billing summary\r\n * @function\r\n * @param {BillingSummary} billingSummary - The billingSummary object\r\n * @returns {bool} Whether the billingSummary is threshold or not\r\n */\r\nexport const isThresholdBillingSummary = billingSummary => isDesignatedBillingSummary(billingSummary, PaymentOptionId.Threshold);\r\n\r\n/**\r\n * Is invoice billing summary\r\n * @function\r\n * @param {BillingSummary} billingSummary - The billingSummary object\r\n * @returns {bool} Whether the billingSummary is invoice or not\r\n */\r\nexport const isInvoiceBillingSummary = billingSummary => isDesignatedBillingSummary(billingSummary, PaymentOptionId.Invoice);\r\n\r\n/**\r\n * Is coupon billing summary\r\n * @function\r\n * @param {BillingSummary} billingSummary - The billingSummary object\r\n * @returns {bool} Whether the billingSummary is coupon or not\r\n */\r\nexport const isCouponBillingSummary = billingSummary => !_.result(billingSummary, 'PaymentOptionId');\r\n\r\n/**\r\n * The getBillingSummary factory\r\n * @function\r\n * @param {Array.} [billingSummaries=[]] - The array of BillingSummaries\r\n * @param {function(BillingSummary):bool} filter - The designated billingSummary filter\r\n * @returns {function():BillingSummary} The function to find the billingSummary satisfying the filter\r\n */\r\nexport const getDesignatedBillingSummaryFactory = (billingSummaries = [], filter) =>\r\n () => _.find(billingSummaries, filter);\r\n\r\n/**\r\n * Get designated billing summary\r\n * @function\r\n * @param {Array.} billingSummaries - The array of BillingSummaries\r\n * @param {number} paymentOptionId - The payment option id\r\n * @returns {BillingSummary} The designated BillingSummary found\r\n */\r\nexport const getDesignatedBillingSummary = (billingSummaries, paymentOptionId) =>\r\n getDesignatedBillingSummaryFactory(billingSummaries, billingSummary => isDesignatedBillingSummary(billingSummary, paymentOptionId))();\r\n\r\n/**\r\n * Get prepay billing summary\r\n * @function\r\n * @param {Array.} billingSummaries - The array of BillingSummaries\r\n * @returns {BillingSummary} The prepay BillingSummary found\r\n */\r\nexport const getPrepayBillingSummary = billingSummaries => getDesignatedBillingSummary(billingSummaries, PaymentOptionId.Prepay);\r\n\r\n/**\r\n * Get threshold billing summary\r\n * @function\r\n * @param {Array.} billingSummaries - The array of BillingSummaries\r\n * @returns {BillingSummary} The threshold BillingSummary found\r\n */\r\nexport const getThresholdBillingSummary = billingSummaries => getDesignatedBillingSummary(billingSummaries, PaymentOptionId.Threshold);\r\n\r\n/**\r\n * Get invoice billing summary\r\n * @function\r\n * @param {Array.} billingSummaries - The array of BillingSummaries\r\n * @returns {BillingSummary} The invoice BillingSummary found\r\n */\r\nexport const getInvoiceBillingSummary = billingSummaries => getDesignatedBillingSummary(billingSummaries, PaymentOptionId.Invoice);\r\n\r\n/**\r\n * Get coupon billing summary\r\n * @function\r\n * @param {Array.} billingSummaries - The array of BillingSummaries\r\n * @returns {BillingSummary} The coupon BillingSummary found\r\n */\r\nexport const getCouponBillingSummary = billingSummaries =>\r\n getDesignatedBillingSummaryFactory(billingSummaries, isCouponBillingSummary)();\r\n\r\n/**\r\n * Extend billingSummary with some useful functions\r\n * @function\r\n * @param {BillingSummary} billingSummary - The billingSummary to extend\r\n * @returns {BillingSummary} The extended billingSummary\r\n */\r\nexport const extendBillingSummary = billingSummary => _.defaults({}, billingSummary, {\r\n isPrepayBillingSummary: () => isPrepayBillingSummary(billingSummary),\r\n isThresholdBillingSummary: () => isThresholdBillingSummary(billingSummary),\r\n isInvoiceBillingSummary: () => isInvoiceBillingSummary(billingSummary),\r\n isCouponBillingSummary: () => isCouponBillingSummary(billingSummary),\r\n});\r\n\r\n/**\r\n * @typedef {object} AccountInformation\r\n * @property {string} accountName The account name\r\n * @property {string} accountNumber The account number\r\n * @property {string} accountLink The link to the account billing documents page\r\n */\r\n\r\n/**\r\n * Get the account info from billing document\r\n * @function\r\n * @param {object} param param\r\n * @property {object} param.billingDocument The billing document data from server\r\n * @property {object} param.i18n The i18n object\r\n * @property {number} param.cid The customer Id\r\n * @property {object} param.urls The urls parsed by react router\r\n * @property {bool} param.addBasename Whether to add basename into accountLink\r\n * @returns {AccountInformation} The account information\r\n */\r\nexport const getBillingDocumentAccountInfo = ({\r\n billingDocument,\r\n i18n,\r\n cid,\r\n urls = {},\r\n addBasename = false,\r\n} = {}) => {\r\n const isConsolidatedBilling = isConsolidated(billingDocument);\r\n const accountName = isConsolidatedBilling ? i18n.getString(_TL_('Multiple')) : billingDocument.AccountName;\r\n const accountNumber = isConsolidatedBilling ? undefined : billingDocument.AccountNumber;\r\n const accountLink = _.isFunction(urls && urls.current) && urls.current({ cid, aid: billingDocument.AccountId }, { addBasename });\r\n\r\n return {\r\n accountName,\r\n accountNumber,\r\n accountLink: !isConsolidatedBilling && accountLink,\r\n };\r\n};\r\n\r\n/**\r\n * Format the given number according to billing rules\r\n * @param {number|string} amount The amount to be formatted\r\n * @param {object} i18n The i18n object\r\n * @returns {string} The formatted decimal number according to billing rules\r\n */\r\nexport const formatDecimal = (amount, i18n) => {\r\n const amountNumber = _.isNumber(amount) ? amount : i18n.parseDecimal(amount);\r\n\r\n return i18n.formatDecimal(amountNumber, {\r\n minimumFractionDigits: 2,\r\n maximumFractionDigits: 4,\r\n });\r\n};\r\n\r\nexport const mergeDocumentWithInfo = ({\r\n documents,\r\n documentInfos,\r\n documentIdAttribute = DocumentIdAttribute,\r\n documentInfosIdAttribute = DocumentIdAttribute,\r\n}) => _.chain(documents)\r\n .map((document) => {\r\n const documentInfo = _.findWhere(documentInfos, { [documentInfosIdAttribute]: document[documentIdAttribute] });\r\n return documentInfo ? _.extendOwn({}, document, documentInfo) : undefined;\r\n })\r\n .compact()\r\n .value();\r\n","import { AttestationValue, GroupingCriteria } from './constants';\r\n\r\nexport const normalizeIncludeCampaignDetailsValue = (value) => {\r\n switch (value) {\r\n case true:\r\n return AttestationValue.True;\r\n case false:\r\n return AttestationValue.False;\r\n default:\r\n return AttestationValue.NotSet;\r\n }\r\n};\r\n\r\nexport const denormalizeIncludeCampaignDetailsValue = (value) => {\r\n switch (value) {\r\n case AttestationValue.True:\r\n return true;\r\n case AttestationValue.False:\r\n return false;\r\n default:\r\n return false;\r\n }\r\n};\r\n\r\nexport const MTToUIBillingGroups = billingGroups => billingGroups.map(b => ({\r\n billingGroupId: b.id,\r\n billtoCustomerId: b.BilltoCustomerId,\r\n name: b.Name,\r\n description: b.Description,\r\n sapId: b.SapId,\r\n address: b.Address,\r\n taxInformation: b.TaxInformation,\r\n currencyCode: b.CurrencyCode,\r\n languageId: b.LanguageId,\r\n companyCode: b.CompanyCode,\r\n includeCampaignDetails: normalizeIncludeCampaignDetailsValue(b.IncludeCampaignDetails),\r\n accounts: b.Accounts || [],\r\n}));\r\n\r\nexport const MTToUIUngroupedAccounts = ungroupedAccounts => ungroupedAccounts.map(a => ({\r\n accountName: a.Name,\r\n accountId: a.id,\r\n accountNumber: a.Number,\r\n potentialBillingGroups: a.PotentialBillingGroups ? a.PotentialBillingGroups.map(g => ({ id: g.Key, name: g.Value })) : [],\r\n}));\r\n\r\nexport const UIToMTBillingGroup = billingGroupInfo => ({\r\n id: billingGroupInfo.billingGroupId,\r\n BilltoCustomerId: billingGroupInfo.billtoCustomerId,\r\n Name: billingGroupInfo.name,\r\n Description: billingGroupInfo.description,\r\n SapId: billingGroupInfo.sapId,\r\n Address: billingGroupInfo.address,\r\n TaxInformation: billingGroupInfo.taxInformation,\r\n CurrencyCode: billingGroupInfo.currencyCode,\r\n LanguageId: billingGroupInfo.languageId,\r\n CompanyCode: billingGroupInfo.companyCode,\r\n IncludeCampaignDetails: denormalizeIncludeCampaignDetailsValue(billingGroupInfo.includeCampaignDetails),\r\n Accounts: billingGroupInfo.accounts,\r\n});\r\n\r\nexport const getGroupingCriteria = ({\r\n billtoSapId, currencyType, billingGroupId, companyCode, businessAddress, taxInformation,\r\n}, isInWhiteList) => {\r\n const sharedGroupingCriteria = {\r\n [GroupingCriteria.BilltoSAPId]: billtoSapId,\r\n [GroupingCriteria.CurrencyType]: currencyType,\r\n [GroupingCriteria.BillingGroupId]: billingGroupId,\r\n };\r\n const whiteListGroupingCriteria = {\r\n [GroupingCriteria.CompanyCode]: companyCode,\r\n };\r\n const nonWhiteListGroupingCriteria = {\r\n [GroupingCriteria.BusinessAddress]: businessAddress,\r\n [GroupingCriteria.TaxInformation]: taxInformation,\r\n };\r\n return {\r\n ...sharedGroupingCriteria,\r\n ...(isInWhiteList ? whiteListGroupingCriteria : nonWhiteListGroupingCriteria),\r\n };\r\n};\r\n","import _ from 'underscore';\r\nimport IWindow from '@bingads-webui-clientcenter/window-interface';\r\nimport { CouponType, CouponStatus } from './constants/coupon';\r\nimport { isAccountTaxable } from './tax-utils';\r\n\r\n/**\r\n * Return the active coupons\r\n * @param {array} coupons an array of the coupons list\r\n * @returns {array} the list of active coupons\r\n */\r\nexport const getActiveCoupons = (coupons = []) => _.filter(coupons, coupon => coupon.StatusId === CouponStatus.ActiveCoupon);\r\n\r\n/**\r\n * Return the upfront spending coupons\r\n * @param {array} coupons an array of the coupons list\r\n * @returns {array} the list of upfront spending coupons\r\n */\r\nexport const getUpfrontSpendingCoupons = (coupons = []) => _.filter(coupons, coupon => coupon.StatusId === CouponStatus.UpfrontSpending);\r\n\r\n/**\r\n * Return the first available coupon\r\n * @param {array} coupons an array of the coupons list\r\n * @returns {array} the first available coupon, will return first active coupon. If no active coupons, return first upfront spending coupon\r\n */\r\nexport const getFirstAvailableCoupon = (coupons = []) => _.first(getActiveCoupons(coupons)) || _.first(getUpfrontSpendingCoupons(coupons));\r\n\r\n/**\r\n * Return the upfront spending coupon threshold\r\n * @param {object} coupon the coupon object\r\n * @param {object} account the account object\r\n * @param {array} countries the countries list\r\n * @returns {number} upfront spending coupon threshold\r\n */\r\nexport const getCouponUpfrontSpendThreshold = ({ coupon, account, countries }) => {\r\n if (!coupon) {\r\n return null;\r\n }\r\n\r\n const { CouponType: couponType, UpfrontSpendThreshold: upfrontSpendThreshold, CurrentUpfrontSpend: currentUpfrontSpend = {} } = coupon;\r\n if (couponType === CouponType.Performance\r\n && currentUpfrontSpend === 0\r\n && currentUpfrontSpend < upfrontSpendThreshold\r\n && isAccountTaxable(account, countries)) {\r\n return upfrontSpendThreshold;\r\n }\r\n return null;\r\n};\r\n\r\n/**\r\n * @typedef {object} Coupon\r\n * @property {string} ExpiryDateFromAssociation - The expiry date from association\r\n * @property {string} EndDate - The end date\r\n * @property {string} ExpiryDate - The expiry date\r\n */\r\n\r\n/**\r\n * Get asssociated coupon expiration date\r\n * @function\r\n * @param {Coupon} coupon - The coupon object\r\n * @returns {Date} the coupon expiration date\r\n */\r\nexport const getAssociatedCouponExpirationDate = (coupon) => {\r\n const {\r\n ExpiryDateFromAssociation,\r\n EndDate,\r\n ExpiryDate,\r\n } = coupon || {};\r\n\r\n return _.chain([ExpiryDateFromAssociation, EndDate, ExpiryDate])\r\n .compact()\r\n .map(dateString => new IWindow.Date(dateString))\r\n .sortBy()\r\n .first()\r\n .value();\r\n};\r\n\r\n/**\r\n * Whether the coupon is expired\r\n * @function\r\n * @param {Coupon} coupon - The coupon object\r\n * @returns {bool} Whether the coupon is expired\r\n */\r\nexport const isExpired = (coupon) => {\r\n const associatedCouponExpirationDate = getAssociatedCouponExpirationDate(coupon);\r\n return !!associatedCouponExpirationDate && associatedCouponExpirationDate < new IWindow.Date();\r\n};\r\n\r\n/**\r\n * Extend coupon with some useful functions\r\n * @function\r\n * @param {Coupon} coupon - The coupon to extend\r\n * @returns {Coupon} The extended coupon\r\n */\r\nexport const extendCoupon = coupon => _.defaults({}, coupon, {\r\n isExpired: () => isExpired(coupon),\r\n associatedCouponExpirationDate: () => getAssociatedCouponExpirationDate(coupon),\r\n});\r\n\r\n/**\r\n * Get PBC offer description\r\n * @function\r\n * @param {object} options - The options\r\n * @param {object} options.i18n - The i18n object\r\n * @param {string} options.currencyCode - The currency code\r\n * @param {number} options.performanceCoupon - The performance coupon value\r\n * @param {number} options.upfrontSpend - The upfront spend threshold\r\n * @returns {string} The PBC offer description\r\n */\r\nexport const getPBCOfferDescription = ({\r\n i18n,\r\n currencyCode,\r\n performanceCoupon,\r\n upfrontSpend,\r\n}) => i18n.getString(_TL_('Get {0} when you spend {1}'))\r\n .replace('{0}', i18n.formatCurrency(performanceCoupon, currencyCode, { maximumFractionDigits: 0 }))\r\n .replace('{1}', i18n.formatCurrency(upfrontSpend, currencyCode, { maximumFractionDigits: 0 }));\r\n","import _ from 'underscore';\r\nimport { StringUtils } from '@bingads-webui-clientcenter/common-utils';\r\n\r\nimport { TaxLabelFormat, TaxType, TaxOptionType, TaxTypeEnumValue, TaxIdMaxLength, TaxSGGSTNumberRegExp, TaxNZGSTNumberRegExp, IndiaEInvoicingStatus,\r\n TaxINPANNumberRegExp, TaxRSPIBNumberRegExp, TaxRSLegalNumberRegExp, TaxINGSTINRegExp, TaxCOVatNumberRegExp, TaxAUGSTNumberRegExp, TaxCOCertificateExecutionDateRegExp,\r\n TaxTHVATRegExp, TaxNGVATRegExp, TaxCAGSTNumberRegExp, TaxCABCPSTNumberRegExp, TaxCAQCQSTNumberRegExp, TaxCASKPSTNumberRegExp, TaxCAMBPSTNumberRegExp, TaxChileVATRegExp, TaxIERegExp, CountryCode, TaxExemptionCertVerifiedResult, AttestationValue,\r\n TaxAEVatNumberRegExp, TaxInfo } from './constants';\r\nimport { findCountry, isVatApplicable, isTaxableCountry } from './country-utils';\r\n\r\nconst { isStringNotBlank, regexTest } = StringUtils;\r\n\r\nconst taxInfoConnector = '-';\r\nconst taxInfoSeparator = ', ';\r\n\r\nconst TaxDocumentStatusI18nMap = {\r\n Available: _TL_('Download'),\r\n Pending: _TL_('Pending'),\r\n Cancelled: _TL_('Canceled'),\r\n Failed: _TL_('Failed'),\r\n};\r\nconst inlineFormatLocalizedTaxInfo = ({ label, value }) => (_.isEmpty(label) || _.isEmpty(value) ? '' : `${label}${taxInfoConnector}${value}`);\r\nconst indiaEInvoicingStatusKey = (status) => {\r\n if (!_.isNumber(status)) {\r\n return null;\r\n }\r\n\r\n switch (status) {\r\n case IndiaEInvoicingStatus.Available:\r\n case IndiaEInvoicingStatus.PendingCustomerAction:\r\n case IndiaEInvoicingStatus.PendingSupport:\r\n case IndiaEInvoicingStatus.PendingCreditAndRebill:\r\n return 'Available';\r\n case IndiaEInvoicingStatus.Failed:\r\n return 'Failed';\r\n case IndiaEInvoicingStatus.NotStarted:\r\n case IndiaEInvoicingStatus.PendingIRNGeneration:\r\n default:\r\n return 'Pending';\r\n }\r\n};\r\n\r\n/**\r\n * TaxInfoKeyValue object\r\n * @typedef {object} TaxInfoKeyValue\r\n * @property {string} [Key] the Key of the TaxInfoKeyValue corresponding to the TaxInfo type\r\n * @property {string} [Value] the Value of the TaxInfoKeyValue\r\n */\r\n\r\n/**\r\n * LocalizedTaxInfo object\r\n * @typedef {object} LocalizedTaxInfo\r\n * @property {string} [label] the localized label of the TaxInfo\r\n * @property {string} [value] the Value of the TaxInfo\r\n * @returns {LocalizedTaxInfo} returns a proper TaxInfo object localized ready for use in UI\r\n*/\r\nconst getTaxTypeToLabelMap = ({ permissions }) => ({\r\n default: {\r\n [TaxType.CPF]: _TL_('CPF'),\r\n [TaxType.CNPJ]: _TL_('CNPJ'),\r\n [TaxType.GSTINNumber]: _TL_('GST IN'),\r\n [TaxType.PANNumber]: _TL_('PAN'),\r\n [TaxType.VatNumber]: _TL_('VAT'),\r\n [TaxType.AUGSTNumber]: _TL_('Australian Business Number'),\r\n [TaxType.NZGSTNumber]: _TL_('NZ GST registration number'),\r\n [TaxType.CCM]: _TL_('C.C.M.'),\r\n [TaxType.IE]: _TL_('IE'),\r\n [TaxType.GSTNumber]: _TL_('GST/HST registration number or Business Number'),\r\n [TaxType.PSTNumber]: _TL_('PST registration number'),\r\n [TaxType.QSTNumber]: _TL_('QST registration number'),\r\n [TaxType.LegalIdentifier]: _TL_('Legal Identifier Number'),\r\n },\r\n [CountryCode.CO]: {\r\n [TaxType.VatNumber]: _TL_('NIT/Tax ID'),\r\n },\r\n [CountryCode.CL]: {\r\n [TaxType.VatNumber]: _TL_('RUT Number'),\r\n },\r\n [CountryCode.AE]: {\r\n [TaxType.VatNumber]: _TL_('TRN or VAT ID'),\r\n },\r\n [CountryCode.IL]: {\r\n [TaxType.VatNumber]: _TL_('VAT ID'),\r\n },\r\n [CountryCode.NO]: {\r\n [TaxType.VatNumber]: _TL_('VAT ID'),\r\n },\r\n [CountryCode.VN]: {\r\n [TaxType.VatNumber]: _TL_('TIN'),\r\n },\r\n [CountryCode.TR]: {\r\n [TaxType.VatNumber]: _TL_('VKN'),\r\n },\r\n [CountryCode.GE]: {\r\n [TaxType.VatNumber]: _TL_('VAT ID'),\r\n },\r\n [CountryCode.TH]: {\r\n [TaxType.VatNumber]: _TL_('VAT ID'),\r\n },\r\n [CountryCode.BD]: {\r\n [TaxType.VatNumber]: _TL_('BIN'),\r\n },\r\n [CountryCode.ID]: {\r\n [TaxType.VatNumber]: _TL_('NPWP'),\r\n },\r\n [CountryCode.BY]: {\r\n [TaxType.VatNumber]: _TL_('VAT ID'),\r\n },\r\n [CountryCode.NG]: {\r\n [TaxType.VatNumber]: _TL_('VAT ID'),\r\n },\r\n [CountryCode.IS]: {\r\n [TaxType.VatNumber]: _TL_('VAT ID'),\r\n },\r\n [CountryCode.MD]: {\r\n [TaxType.VatNumber]: _TL_('VAT ID'),\r\n },\r\n [CountryCode.ZW]: {\r\n [TaxType.VatNumber]: _TL_('VAT ID'),\r\n },\r\n [CountryCode.BH]: {\r\n [TaxType.VatNumber]: _TL_('VAT ID'),\r\n },\r\n [CountryCode.KH]: {\r\n [TaxType.VatNumber]: _TL_('VAT-TIN'),\r\n },\r\n [CountryCode.KE]: {\r\n [TaxType.VatNumber]: _TL_('VAT ID'),\r\n },\r\n [CountryCode.SA]: {\r\n [TaxType.VatNumber]: _TL_('TIN or VAT ID'),\r\n },\r\n [CountryCode.OM]: {\r\n [TaxType.VatNumber]: _TL_('VAT ID'),\r\n },\r\n [CountryCode.GH]: {\r\n [TaxType.VatNumber]: _TL_('TIN'),\r\n },\r\n [CountryCode.CM]: {\r\n [TaxType.VatNumber]: _TL_('VAT ID'),\r\n },\r\n [CountryCode.UZ]: {\r\n [TaxType.VatNumber]: _TL_('VAT ID'),\r\n },\r\n [CountryCode.FJ]: {\r\n [TaxType.VatNumber]: _TL_('TIN'),\r\n },\r\n [CountryCode.GT]: {\r\n [TaxType.VatNumber]: _TL_('NIT'),\r\n },\r\n [CountryCode.BS]: {\r\n [TaxType.VatNumber]: _TL_('TIN'),\r\n },\r\n [CountryCode.PH]: {\r\n [TaxType.VatNumber]: _TL_('TIN'),\r\n },\r\n [CountryCode.AM]: {\r\n [TaxType.VatNumber]: _TL_('AAH'),\r\n },\r\n [CountryCode.BB]: {\r\n [TaxType.VatNumber]: _TL_('TIN'),\r\n },\r\n [CountryCode.KZ]: {\r\n [TaxType.VatNumber]: _TL_('NDS/KKS'),\r\n },\r\n [CountryCode.MX]: {\r\n [TaxType.VatNumber]: _TL_('RFC'),\r\n },\r\n [CountryCode.ZA]: {\r\n [TaxType.VatNumber]: _TL_('VAT ID'),\r\n },\r\n [CountryCode.LA]: {\r\n [TaxType.VatNumber]: _TL_('TIN'),\r\n },\r\n [CountryCode.NP]: {\r\n [TaxType.VatNumber]: _TL_('VAT ID'),\r\n },\r\n [CountryCode.RS]: {\r\n [TaxType.VatNumber]: _TL_('Tax identification number (PIB)'),\r\n [TaxType.LegalIdentifier]: _TL_('Legal number'),\r\n },\r\n [CountryCode.AR]: {\r\n [TaxType.VatNumber]: _TL_('CUIT'),\r\n },\r\n [CountryCode.AZ]: {\r\n [TaxType.VatNumber]: _TL_('VÖEN'),\r\n },\r\n [CountryCode.BJ]: {\r\n [TaxType.VatNumber]: _TL_('IFU'),\r\n },\r\n [CountryCode.CN]: {\r\n [TaxType.VatNumber]: _TL_('Tax ID'),\r\n },\r\n [CountryCode.CI]: {\r\n [TaxType.VatNumber]: _TL_('n° TVA'),\r\n },\r\n [CountryCode.JP]: {\r\n [TaxType.VatNumber]: _TL_('JCT'),\r\n },\r\n [CountryCode.MY]: {\r\n [TaxType.VatNumber]: _TL_('SST'),\r\n },\r\n [CountryCode.MM]: {\r\n [TaxType.VatNumber]: _TL_('TBC'),\r\n },\r\n [CountryCode.SR]: {\r\n [TaxType.VatNumber]: _TL_('FIN'),\r\n },\r\n [CountryCode.TJ]: {\r\n [TaxType.VatNumber]: _TL_('TIN'),\r\n },\r\n [CountryCode.UA]: {\r\n [TaxType.VatNumber]: _TL_('VAT Reg. No.'),\r\n },\r\n [CountryCode.VE]: {\r\n [TaxType.VatNumber]: _TL_('RIF'),\r\n },\r\n [CountryCode.ZM]: {\r\n [TaxType.VatNumber]: _TL_('TPIN'),\r\n },\r\n [CountryCode.EG]: {\r\n [TaxType.VatNumber]: _.get(permissions, ['dynamic', 'ABLEgyptTaxUpdate'], false) ? _TL_('TRN') : _TL_('VAT ID'),\r\n [TaxType.UIN]: _TL_('UIN'),\r\n },\r\n [CountryCode.KR]: {\r\n [TaxType.VatNumber]: _TL_('BRN'),\r\n },\r\n [CountryCode.PE]: {\r\n [TaxType.VatNumber]: _TL_('RUC'),\r\n },\r\n [CountryCode.UY]: {\r\n [TaxType.VatNumber]: _TL_('RUT'),\r\n },\r\n [CountryCode.PA]: {\r\n [TaxType.VatNumber]: _TL_('RUC'),\r\n },\r\n [CountryCode.PK]: {\r\n [TaxType.VatNumber]: _TL_('STRN'),\r\n },\r\n [CountryCode.SN]: {\r\n [TaxType.VatNumber]: _TL_('VAT ID'),\r\n },\r\n [CountryCode.TW]: {\r\n [TaxType.VatNumber]: _TL_('VAT ID'),\r\n },\r\n});\r\n\r\nconst TaxInfoLabels = {\r\n [TaxInfo.IsTaxExemptionCertVerified]: {\r\n [TaxExemptionCertVerifiedResult.Accept]: _TL_('VAT Exempted'),\r\n [TaxExemptionCertVerifiedResult.Reject]: _TL_('VAT Not Exempted'),\r\n },\r\n [TaxInfo.IsIVAOrVATTaxPayer]: {\r\n [AttestationValue.True]: _TL_('IVA/VAT Taxpayer'),\r\n [AttestationValue.False]: _TL_('Not IVA/VAT Taxpayer'),\r\n },\r\n [TaxInfo.IsWithholdingTaxExempted]: {\r\n [AttestationValue.True]: _TL_('WHT Exempted'),\r\n [AttestationValue.False]: _TL_('WHT Not Exempted'),\r\n },\r\n [TaxInfo.ReverseChargeDocumentAttestation]: {\r\n [AttestationValue.True]: _TL_('Reverse Charge Document Attested'),\r\n [AttestationValue.False]: _TL_('Reverse Charge Document Not Attested'),\r\n },\r\n};\r\n\r\n/**\r\n * @param {object} permissions the permissions\r\n * @returns {object} mapping between TaxType to TaxOption\r\n */\r\nexport const getTaxTypeTaxOptionMap = (permissions = {}) => {\r\n // return new mapping without CCM if pilot on, since CCM will be optional for both Personal and Business\r\n if (_.get(permissions, ['dynamic', 'ABLBrazilUpdateTax'], false)) {\r\n return {\r\n [TaxType.CPF]: TaxOptionType.Personal,\r\n [TaxType.CNPJ]: TaxOptionType.Business,\r\n };\r\n }\r\n\r\n return {\r\n [TaxType.CPF]: TaxOptionType.Personal,\r\n [TaxType.CNPJ]: TaxOptionType.Business,\r\n [TaxType.CCM]: TaxOptionType.Business,\r\n };\r\n};\r\n\r\n/**\r\n * VAT Id required EMEA Countries,\r\n * - key: countryCode\r\n * - value: pilot name, or boolean if the feature has been GAed\r\n */\r\nconst EMEAVatIdRequiredCountries = {\r\n [CountryCode.HU]: 'ABLHungaryTax',\r\n [CountryCode.PT]: 'ABLPortugalTax',\r\n};\r\n\r\n/**\r\n * VAT Id required EMEA Countries for B2C\r\n * - key: countryCode\r\n * - value: pilot name, or boolean if the feature has been GAed\r\n */\r\nconst EMEAVatIdRequiredCountriesForB2C = {\r\n [CountryCode.HU]: 'ABLHungaryTaxPayments',\r\n [CountryCode.PT]: 'ABLPortugalTaxPayments',\r\n};\r\n\r\n/**\r\n * Check the EMEA VAT ID required status\r\n * @function\r\n * @param {object} param param\r\n * @property {object} param.countryPilotMapping country pilot mapping object\r\n * @property {string} param.countryCode country code\r\n * @property {object} param.permissions permissions object\r\n * @returns {boolean} `true` if the pilot is enabled or feature has been GAed, otherwise `false`.\r\n */\r\nexport const checkEMEAVatIdRequiredStatus = ({ countryPilotMapping, countryCode, permissions }) => {\r\n if (_.has(countryPilotMapping, countryCode)) {\r\n const pilotId = countryPilotMapping[countryCode];\r\n\r\n if (_.isBoolean(pilotId)) {\r\n return pilotId;\r\n }\r\n\r\n const { dynamic } = permissions || {};\r\n return !!(_.result(dynamic, pilotId));\r\n }\r\n\r\n return false;\r\n};\r\n\r\n/**\r\n * Check if the VatId is required for the countryCode\r\n * @function\r\n * @param {object} param param\r\n * @property {string} param.countryCode country code\r\n * @property {object} param.permissions permissions object\r\n * @returns {boolean} `true` if VatId is required for this country, otherwise `false`\r\n */\r\nexport const isEMEAVatIdRequired = ({ countryCode, permissions }) => checkEMEAVatIdRequiredStatus({ countryPilotMapping: EMEAVatIdRequiredCountries, countryCode, permissions });\r\n\r\n/**\r\n * Check if the VatId is required for the countryCode for B2C\r\n * @function\r\n * @param {object} param param\r\n * @property {string} param.countryCode country code\r\n * @property {object} param.permissions permissions object\r\n * @returns {boolean} `true` if VatId is required for this country for B2C, otherwise `false`\r\n */\r\nexport const isEMEAVatIdRequiredForB2C = ({ countryCode, permissions }) => checkEMEAVatIdRequiredStatus({ countryPilotMapping: EMEAVatIdRequiredCountriesForB2C, countryCode, permissions });\r\n\r\n/**\r\n * @param {string} taxOption the tax option\r\n * @param {object} permissions the permissions\r\n * @returns {string} the tax type\r\n */\r\nexport const getTaxOptionByType = (taxOption, permissions) => {\r\n const TaxTypeTaxOptionMap = getTaxTypeTaxOptionMap(permissions);\r\n return TaxTypeTaxOptionMap[taxOption];\r\n};\r\n\r\n/**\r\n * Gets the display string with optional label text\r\n * @param {string} label of the tax\r\n * @param {*} i18n the i18n object\r\n * @returns {string} display string of label with optional text\r\n */\r\nexport const getOptionalLabel = (label, i18n) => (i18n ? `${label} ${i18n.getString(_TL_('(optional)'))}` : label);\r\n\r\n/**\r\n * Gets the display string with state tax id optional label text\r\n * @param {string} label of the tax\r\n * @param {*} i18n the i18n object\r\n * @returns {string} display string of label with optional text\r\n */\r\nexport const getStateTaxIDOptional = (label, i18n) => (i18n ? `${label} ${i18n.getString(_TL_('(State Tax ID, optional)'))}` : label);\r\n\r\n/**\r\n * Gets the display string with required label text\r\n * @param {string} label of the tax\r\n * @param {*} i18n the i18n object\r\n * @returns {string} display string of label with required text\r\n */\r\nexport const getRequiredLabel = (label, i18n) => (i18n ? `${label} ${i18n.getString(_TL_('(required)'))}` : label);\r\n\r\n/**\r\n * Gets the display string with required for all the entities label text\r\n * @param {string} label of the tax\r\n * @param {*} i18n the i18n object\r\n * @returns {string} display string of label with required text\r\n */\r\nexport const getRequiredForAllTheEntitiesLabel = (label, i18n) => (i18n ? `${label} ${i18n.getString(_TL_('(required for all the entities)'))}` : label);\r\n\r\n/**\r\n * Gets the display string with required for business label text\r\n * @param {string} label of the tax\r\n * @param {*} i18n the i18n object\r\n * @returns {string} display string of label with required for business label text\r\n */\r\nexport const getRequiredForBusinessLabel = (label, i18n) => (i18n ? `${label} ${i18n.getString(_TL_('(required for business customers)'))}` : label);\r\n\r\n/**\r\n * Gets the display string with required for VAT registered business customers label text\r\n * @param {string} label of the tax\r\n * @param {*} i18n the i18n object\r\n * @returns {string} display string of label with required for VAT registered business customers label text\r\n */\r\nexport const getRequiredForVATRegisteredBusinessLabel = (label, i18n) => (i18n ? `${label} ${i18n.getString(_TL_('(required for VAT registered business customers)'))}` : label);\r\n\r\nexport const getRequiredForValueAddedTaxIVARegisteredLabel = (label, i18n) => (i18n ? `${label} ${i18n.getString(_TL_('(required for Value Added Tax/IVA registered customers)'))}` : label);\r\n\r\nexport const getRequiredForIVAorVATTaxPayerLabel = (label, i18n) => (i18n ? `${label} ${i18n.getString(_TL_('(required for IVA/VAT tax-payers)'))}` : label);\r\n\r\n/**\r\n * Gets the display string of TaxInfo's type from i18n, or empty string if the type is unknown or i18n cannot be found\r\n * @param {string} taxType the tax type key\r\n * @param {*} i18n the i18n object\r\n * @param {string} options options for the label format and country code\r\n * @param {object} permissions the permissions\r\n * @returns {string} display string of TaxInfo's type from i18n\r\n */\r\nexport const getTaxTypeLabel = (\r\n taxType,\r\n i18n,\r\n {\r\n labelFormat = TaxLabelFormat.Default,\r\n countryCode,\r\n } = {},\r\n permissions = {}\r\n) => {\r\n const taxTypeToLabelMap = getTaxTypeToLabelMap({ permissions });\r\n const taxTypeLabelKey = _.get(taxTypeToLabelMap, [countryCode, taxType]) || taxTypeToLabelMap.default[taxType];\r\n const taxTypeLabel = taxTypeLabelKey && i18n ? i18n.getString(taxTypeLabelKey) : '';\r\n\r\n if (!taxTypeLabel) {\r\n return taxTypeLabel;\r\n }\r\n\r\n switch (labelFormat) {\r\n case TaxLabelFormat.Optional:\r\n return getOptionalLabel(taxTypeLabel, i18n);\r\n case TaxLabelFormat.Required:\r\n return getRequiredLabel(taxTypeLabel, i18n);\r\n case TaxLabelFormat.RequiredForAllTheEntities:\r\n return getRequiredForAllTheEntitiesLabel(taxTypeLabel, i18n);\r\n case TaxLabelFormat.RequiredForBusiness:\r\n return getRequiredForBusinessLabel(taxTypeLabel, i18n);\r\n case TaxLabelFormat.RequiredForVATRegisteredBusiness:\r\n return getRequiredForVATRegisteredBusinessLabel(taxTypeLabel, i18n);\r\n case TaxLabelFormat.RequiredForValueAddedTaxIVARegistered:\r\n return getRequiredForValueAddedTaxIVARegisteredLabel(taxTypeLabel, i18n);\r\n case TaxLabelFormat.RequiredForIVAorVATTaxPayer:\r\n return getRequiredForIVAorVATTaxPayerLabel(taxTypeLabel, i18n);\r\n case TaxLabelFormat.StateTaxIDOptional:\r\n return getStateTaxIDOptional(taxTypeLabel, i18n);\r\n case TaxLabelFormat.Default:\r\n default:\r\n return taxTypeLabel;\r\n }\r\n};\r\n\r\n/**\r\n *\r\n * @param {string} taxCertLabel - The label for tax cert field\r\n * @param {bool} taxCertOptional - Indicate whether tax cert is optional\r\n * @param {object} i18n - the i18n object\r\n * @returns {string} - Tax cert field label\r\n */\r\nexport const getTaxCertLabelDisplay = (taxCertLabel, taxCertOptional, i18n) => (taxCertOptional ? getOptionalLabel(taxCertLabel, i18n) : taxCertLabel);\r\n\r\n/**\r\n *\r\n * @param {string} label of tax\r\n * @param {*} i18n the i18n object\r\n * @returns {string} display string of label with required for customers claiming a tax exemption\r\n */\r\nexport const getRequiredForCustomerClaimTaxExemption = (label, i18n) => (i18n ? `${label} ${i18n.getString(_TL_('(required for customers claiming a tax exemption)'))}` : label);\r\n\r\n/**\r\n * @param {string} taxType the tax type\r\n * @returns {string} the tax type enum value\r\n */\r\nexport const getTaxTypeEnumValue = taxType => TaxTypeEnumValue[taxType];\r\n\r\n/**\r\n * Map the TaxInfoKeyValue pair in parameter into a proper TaxInfo object localized ready for use in UI\r\n * @param {TaxInfoKeyValue} taxInfoKeyValue the TaxInfoKeyValue to map\r\n * @param {*} i18n the i18n object\r\n * @param {object} options the option object\r\n * @returns {LocalizedTaxInfo} returns a proper TaxInfo object localized ready for use in UI\r\n */\r\nexport const mapToLocalizedTaxInfo = (taxInfoKeyValue, i18n, options) => {\r\n const label = getTaxTypeLabel(taxInfoKeyValue && taxInfoKeyValue.Key, i18n, options);\r\n const value = (taxInfoKeyValue && taxInfoKeyValue.Value) || '';\r\n\r\n return { label, value };\r\n};\r\n\r\n/**\r\n * Use mapToLocalizedTaxInfo for all TaxInfoKeyValue objects in the taxInfoKeyValues in params\r\n * @param {TaxInfoKeyValue[]} taxInfoKeyValues the TaxInfoKeyValues array to map\r\n * @param {*} i18n the i18n object\r\n * @param {object} options the options object\r\n * @returns {LocalizedTaxInfo[]} returns a proper TaxInfo object's array localized ready for use in UI\r\n */\r\nexport const mapToLocalizedTaxInfos = (taxInfoKeyValues, i18n, options) => _.chain(taxInfoKeyValues)\r\n .map(_.partial(mapToLocalizedTaxInfo, _, i18n, options))\r\n .filter(localizedTaxInfo => !_.isEmpty(localizedTaxInfo.label))\r\n .value();\r\n\r\n/**\r\n * Mapping between TaxOption to Label\r\n */\r\nconst TaxOptionTypeToLabelMap = {\r\n [TaxOptionType.Personal]: _TL_('Personal'),\r\n [TaxOptionType.Business]: _TL_('Business'),\r\n};\r\n\r\n/**\r\n * Gets the display string of TaxOption type from i18n, or empty string if the type is unknown or i18n cannot be found\r\n * @param {string} taxOption the tax option key\r\n * @param {*} i18n the i18n object\r\n * @returns {string} display string of Tax Option from i18n\r\n */\r\nexport const getTaxOptionLabel = (taxOption, i18n) => {\r\n const taxOptionLabelKey = TaxOptionTypeToLabelMap[taxOption];\r\n return taxOptionLabelKey && i18n ? i18n.getString(taxOptionLabelKey) : '';\r\n};\r\n\r\nexport const isPersonalTaxOptionType = taxOption => taxOption === TaxOptionType.Personal;\r\n\r\nexport const isBusinessTaxOptionType = taxOption => taxOption === TaxOptionType.Business;\r\n\r\n/**\r\n * Returns true if the 2 TaxInfos object in param have the same set of taxInfos, whatever the order.\r\n * If both arrays are empty, then we consider them equal.\r\n * @param {TaxInfoKeyValue[]} taxInfos the tax infos array to test for equality, need to have unique set of key\r\n * @param {TaxInfoKeyValue[]} otherTaxInfos the other tax infos array to test for equality, need to have unique set of key\r\n * @returns {boolean} true if the 2 TaxInfos object in param are equal, false otherwise.\r\n * @throws Will throw an error if the taxInfos in param have duplicate Key or no Key property\r\n */\r\nexport const areEqual = (taxInfos, otherTaxInfos) => {\r\n if (_.isEmpty(taxInfos) && _.isEmpty(otherTaxInfos)) {\r\n return true;\r\n }\r\n\r\n if (_.isArray(taxInfos) && _.isArray(otherTaxInfos)) {\r\n if (taxInfos.length !== otherTaxInfos.length) {\r\n return false;\r\n }\r\n\r\n const hasPropertyKeys = taxInfoArray => _.all(taxInfoArray, taxInfo => _.has(taxInfo, 'Key'));\r\n if (!hasPropertyKeys(taxInfos) || !hasPropertyKeys(otherTaxInfos)) {\r\n throw new Error('TaxInfos parameters needs to have the property \"Key\" for comparison');\r\n }\r\n\r\n const hasUniqueKeys = taxInfoArray => _.unique(taxInfoArray, false, taxInfo => taxInfo.Key).length === taxInfoArray.length;\r\n if (!hasUniqueKeys(taxInfos) || !hasUniqueKeys(otherTaxInfos)) {\r\n throw new Error('TaxInfos parameters cannot have duplicate Keys');\r\n }\r\n\r\n return _.all(taxInfos, taxInfo => _.some(otherTaxInfos, otherTaxInfo => _.isEqual(taxInfo, otherTaxInfo)));\r\n }\r\n\r\n return false;\r\n};\r\n\r\n/**\r\n * Get the formatted tax document status key used by billing grid tax column\r\n * @param {string} brazilEnfStatus Brzil enf status.\r\n * @param {boolean} hasRussiaDAF whether has Russia DAF\r\n * @param {number} billingDocumentId billing document Id\r\n * @param {number} indiaEInvoicingStatus india e-invoicing status\r\n * @return {string} Localization key for the tax doc status.\r\n */\r\nexport const getFormattedTaxDocumentStatusKey = ({\r\n brazilEnfStatus,\r\n hasRussiaDAF,\r\n billingDocumentId,\r\n indiaEInvoicingStatus,\r\n}) => {\r\n const status =\r\n brazilEnfStatus ||\r\n (indiaEInvoicingStatusKey(indiaEInvoicingStatus)) ||\r\n (hasRussiaDAF && billingDocumentId && 'Available');\r\n\r\n if (status) {\r\n return TaxDocumentStatusI18nMap[status];\r\n }\r\n\r\n return null;\r\n};\r\n\r\n/**\r\n * get the tax document download Url.\r\n * @param {string} brazilEnfLink the Brazil ENF download link\r\n * @param {boolean} hasRussiaDAF whether has Russia DAF\r\n * @param {string} indiaEInvoicingLink the India E-invoicing download link\r\n * @param {number} billingDocumentId billing document Id\r\n * @param {number} advertiserCustomerId the advertiser customerId of this BD.\r\n * @param {number} accountId account id\r\n * @param {object} urlBuilders the urlBuilders components.\r\n * @return {string} the download url\r\n */\r\nexport const getTaxDocumentUrl = ({\r\n brazilEnfLink,\r\n hasRussiaDAF,\r\n indiaEInvoicingLink,\r\n billingDocumentId,\r\n advertiserCustomerId,\r\n accountId,\r\n urlBuilders,\r\n}) => {\r\n if (brazilEnfLink) {\r\n return brazilEnfLink;\r\n }\r\n\r\n if (hasRussiaDAF && billingDocumentId && advertiserCustomerId) {\r\n return new urlBuilders.BillingUrlBuilder().action('RenderDAFDocument').params({ aid: accountId, id: billingDocumentId, advertiserCustomerId }).url;\r\n }\r\n\r\n if (indiaEInvoicingLink) {\r\n return indiaEInvoicingLink;\r\n }\r\n\r\n return '';\r\n};\r\n\r\n/**\r\n * Return the tax amount and balance amount\r\n * @param {number} fundingAmount the amount to fund\r\n * @param {number} estimatedTaxRate the estimated tax amount\r\n * @param {number} currentBalance the current balance\r\n * @returns {object} contains the actual applied funding amount and the tax amount\r\n */\r\nexport const getTaxAndBalance = ({ fundingAmount, estimatedTaxRate, currentBalance } = {}) => {\r\n if (!_.isFinite(fundingAmount) || !_.isFinite(estimatedTaxRate)) {\r\n return {};\r\n }\r\n\r\n const actingTaxRate = Math.max(0, estimatedTaxRate);\r\n const taxAmount = fundingAmount * actingTaxRate;\r\n const appliedAmount = _.isFinite(taxAmount) && fundingAmount - taxAmount;\r\n\r\n return _.extend({}, { taxAmount, appliedAmount }, _.isFinite(currentBalance) && { finalBalance: currentBalance + appliedAmount });\r\n};\r\n\r\n/**\r\n * Return the total amount which can get the target post tax amount after paying tax\r\n * @param {number} postTaxAmount the target gross amount after paying tax\r\n * @param {number} estimatedTaxRate the estimated tax amount\r\n * @returns {number} the total amount before paying tax\r\n */\r\nexport const calculatePreTaxAmount = ({ postTaxAmount, estimatedTaxRate } = {}) => {\r\n if (!_.isFinite(postTaxAmount) || !_.isFinite(estimatedTaxRate) || postTaxAmount < 0 || estimatedTaxRate < 0 || estimatedTaxRate >= 1) {\r\n return null;\r\n }\r\n\r\n return postTaxAmount / (1 - estimatedTaxRate); // postTaxAmount = preTaxAmount - preTaxAmount * estimatedTaxRate\r\n};\r\n\r\n/**\r\n * Return the tax rate according to the taxing amount and the actual tax\r\n * @param {number} tax the tax amount\r\n * @param {number} taxingAmount the funding amount which should pay tax\r\n * @returns {number} the tax rate\r\n */\r\nexport const getTaxRate = ({ tax, taxingAmount } = {}) => {\r\n if (!_.isFinite(tax) || !_.isFinite(taxingAmount) || taxingAmount <= 0 || tax < 0 || tax > taxingAmount) {\r\n return null;\r\n }\r\n\r\n return tax / taxingAmount;\r\n};\r\n\r\n/**\r\n * Return whether the account is taxable\r\n * @param {object} account the account\r\n * @param {array} countries an array of the countries list\r\n * @returns {bool} indicate whether the account is taxable\r\n */\r\nexport const isAccountTaxable = (account, countries) => {\r\n if (!account || !countries || !countries.length) {\r\n return false;\r\n }\r\n\r\n const { BusinessAddress: { Country: countryCode } = {} } = account;\r\n const country = findCountry({ countries, countryCode });\r\n\r\n return isTaxableCountry(country) || isVatApplicable(country);\r\n};\r\n\r\n/**\r\n * Return whether the provided CPF id is valid\r\n * @param {string} cpfId The CPF Id\r\n * @returns {bool} Indicate whether CPF id is valid format\r\n */\r\nexport const isCPFIdValid = (cpfId) => {\r\n if (!_.isString(cpfId) || !isStringNotBlank(cpfId) || cpfId.length < TaxIdMaxLength.CPF) {\r\n return false;\r\n }\r\n\r\n let v1 = 0;\r\n let v2 = 0;\r\n\r\n const v1Coefficients = _.range(10, 1, -1);\r\n const v2Coefficients = _.range(11, 2, -1);\r\n const getCPFDigit = index => Number(cpfId[index]);\r\n\r\n _.each(_.range(v1Coefficients.length), (index) => {\r\n const value = getCPFDigit(index);\r\n\r\n v1 += v1Coefficients[index] * value;\r\n v2 += v2Coefficients[index] * value;\r\n });\r\n\r\n v1 = 11 - (v1 % 11);\r\n v1 = v1 >= 10 ? 0 : v1;\r\n\r\n v2 += (2 * v1);\r\n v2 = 11 - (v2 % 11);\r\n v2 = v2 >= 10 ? 0 : v2;\r\n\r\n if (v1 !== getCPFDigit(9) || v2 !== getCPFDigit(10)) {\r\n return false;\r\n }\r\n\r\n return true;\r\n};\r\n\r\n/**\r\n * Return whether the provided CNPJ id is valid\r\n * @param {string} cnpjId The CNPJ Id\r\n * @returns {bool} Indicate whether CNPJ id is valid format\r\n */\r\nexport const isCNPJIdValid = (cnpjId) => {\r\n if (!_.isString(cnpjId) || !isStringNotBlank(cnpjId) || cnpjId.length < TaxIdMaxLength.CNPJ) {\r\n return false;\r\n }\r\n\r\n let v1 = 0;\r\n let v2 = 0;\r\n\r\n const v1Coefficients = [..._.range(5, 1, -1), ..._.range(9, 1, -1)];\r\n const v2Coefficients = [..._.range(6, 1, -1), ..._.range(9, 1, -1)];\r\n const getCNPJDigit = index => Number(cnpjId[index]);\r\n\r\n _.each(v1Coefficients, (v1Digit, index) => { v1 += v1Digit * getCNPJDigit(index); });\r\n _.each(v2Coefficients, (v2Digit, index) => { v2 += v2Digit * getCNPJDigit(index); });\r\n\r\n v1 = 11 - (v1 % 11);\r\n v1 = v1 >= 10 ? 0 : v1;\r\n\r\n v2 = 11 - (v2 % 11);\r\n v2 = v2 >= 10 ? 0 : v2;\r\n\r\n if (v1 !== getCNPJDigit(12) || v2 !== getCNPJDigit(13)) {\r\n return false;\r\n }\r\n\r\n return true;\r\n};\r\n\r\n/**\r\n * Return whether the provided CO Vat Number is valid\r\n * @param {string} coVatNumber The CO Vat Number\r\n * @returns {bool} Indicate whether CO Vat Number is valid format\r\n */\r\nexport const isCOVatNumberValid = _.partial(regexTest, TaxCOVatNumberRegExp);\r\n\r\n/**\r\n * Return whether the provided AE Vat Number is valid\r\n * @param {string} aeVatNumber The AE Vat Number\r\n * @returns {bool} Indicate whether AE Vat Number is valid format\r\n */\r\nexport const isAEVatNumberValid = _.partial(regexTest, TaxAEVatNumberRegExp);\r\n\r\n/**\r\n * Return whether the provided AUD Vat Number is valid\r\n * @param {string} AUGSTNumber The AUD Vat Number\r\n * @returns {bool} Indicate whether AUD Vat Number is valid format\r\n */\r\nexport const isAUGSTNumberValid = (AUGSTNumber) => {\r\n const isAUGSTNumberFormatValid = _.partial(regexTest, TaxAUGSTNumberRegExp);\r\n if (AUGSTNumber === '') {\r\n return true;\r\n }\r\n\r\n if (!isAUGSTNumberFormatValid(AUGSTNumber) || !AUGSTNumber || AUGSTNumber.length !== 11) {\r\n return false;\r\n }\r\n\r\n const weights = [10, 1, 3, 5, 7, 9, 11, 13, 15, 17, 19];\r\n let sum = 0;\r\n\r\n for (let i = 0; i < AUGSTNumber.length; i += 1) {\r\n const digit = parseInt(AUGSTNumber.substring(i, i + 1), 10);\r\n if (i === 0) {\r\n sum += (digit - 1) * weights[i];\r\n } else {\r\n sum += (digit * weights[i]);\r\n }\r\n }\r\n\r\n if (sum % 89 !== 0) {\r\n return false;\r\n }\r\n\r\n return true;\r\n};\r\n\r\n/**\r\n * Return whether the provided CO certification execution date is valid\r\n * @param {string} coCertExecutionDate The CO certification execution date\r\n * @returns {bool} Indicate whether CO certification execution date is in valid format\r\n */\r\nexport const isCOCertExecutionDateValid = _.partial(regexTest, TaxCOCertificateExecutionDateRegExp);\r\n\r\n/**\r\n * Return whether the provided SG GST Number is valid\r\n * @param {string} sggstNumber The SG GST Number\r\n * @returns {bool} Indicate whether SG GST Number is valid format\r\n */\r\nexport const isSGGSTNumberValid = _.partial(regexTest, TaxSGGSTNumberRegExp);\r\n\r\n/**\r\n * Return whether the provided New Zealand GST Number is valid\r\n * @param {string} nzgst The New Zealand GST Number\r\n * @returns {bool} Indicate whether New Zealand GST Number is valid format\r\n */\r\nexport const isNZGSTNumberValid = _.partial(regexTest, TaxNZGSTNumberRegExp);\r\n\r\n/**\r\n * Return whether the provided India PAN Number is valid\r\n * @param {string} pan The PAN tax ID number\r\n * @returns {bool} Indicate whether PAN number is in a valid format\r\n */\r\nexport const isPANNumberValid = _.partial(regexTest, TaxINPANNumberRegExp);\r\n\r\n/**\r\n * Return whether the provided Serbian PIB number is valid\r\n * @param {string} pib The PIB tax ID number\r\n * @returns {bool} Indicate whether PIB number is in a valid format\r\n */\r\nexport const isPIBNumberValid = _.partial(regexTest, TaxRSPIBNumberRegExp);\r\n\r\n/**\r\n * Return whether the provided Serbian legal number is valid\r\n * @param {string} legalNumber The PIB tax ID number\r\n * @returns {bool} Indicate whether PIB number is in a valid format\r\n */\r\nexport const isRSLegalNumberValid = _.partial(regexTest, TaxRSLegalNumberRegExp);\r\n\r\n/**\r\n * Return whether the provided India GSTIN is valid\r\n * @param {string} gstin The GSTIN tax ID number\r\n * @returns {bool} Indicate whether GSTIN is in a valid format\r\n */\r\nexport const isIndiaGSTINValid = _.partial(regexTest, TaxINGSTINRegExp);\r\n\r\n/**\r\n * Return whether the provided Thailand VAT is valid\r\n * @param {string} thvat The Thailand VAT\r\n * @returns {bool} Indicate whether Thailand VAT is valid format\r\n */\r\nexport const isThailandVATValid = _.partial(regexTest, TaxTHVATRegExp);\r\n\r\n/**\r\n * Return whether the provided Nigeria VAT is valid\r\n * @param {string} ngvat The Nigeria Vat Number\r\n * @returns {bool} Indicate whether Nigeria Vat Number is valid format\r\n */\r\nexport const isNigeriaVATValid = _.partial(regexTest, TaxNGVATRegExp);\r\n\r\n/**\r\n * Return whether the provided Canada GST Number is valid\r\n * @param {string} cagst The Canada GST Number\r\n * @returns {bool} Indicate whether Canada GST Number is valid format\r\n */\r\nexport const isCanadaBCPSTNumberValid = _.partial(regexTest, TaxCABCPSTNumberRegExp);\r\n\r\n/**\r\n * Return whether the provided Canada GST Number is valid\r\n * @param {string} cagst The Canada GST Number\r\n * @returns {bool} Indicate whether Canada GST Number is valid format\r\n */\r\nexport const isCanadaQCQSTNumberValid = _.partial(regexTest, TaxCAQCQSTNumberRegExp);\r\n\r\n/**\r\n * Return whether the provided Canada GST Number is valid\r\n * @param {string} cagst The Canada GST Number\r\n * @returns {bool} Indicate whether Canada GST Number is valid format\r\n */\r\nexport const isCanadaMBPSTNumberValid = _.partial(regexTest, TaxCAMBPSTNumberRegExp);\r\n\r\n/**\r\n * Return whether the provided Canada GST Number is valid\r\n * @param {string} cagst The Canada GST Number\r\n * @returns {bool} Indicate whether Canada GST Number is valid format\r\n */\r\nexport const isCanadaSKPSTNumberValid = _.partial(regexTest, TaxCASKPSTNumberRegExp);\r\n\r\n\r\n/**\r\n * Return whether the provided Canada GST Number is valid\r\n * @param {string} cagst The Canada GST Number\r\n * @returns {bool} Indicate whether Canada GST Number is valid format\r\n */\r\nexport const isCanadaGSTNumberValid = _.partial(regexTest, TaxCAGSTNumberRegExp);\r\n\r\n/**\r\n * Return whether the provided IE Vat Number is valid\r\n * @param {string} IE The Vat Number\r\n * @returns {bool} Indicate whether IE Vat Number is valid format\r\n */\r\nexport const isIEValid = _.partial(regexTest, TaxIERegExp);\r\n\r\n/**\r\n * Return whether the provided Chile VAT Number is valid\r\n * @param {string} chileVATNumber The Chile VAT Number\r\n * @returns {bool} Indicate whether Chile VAT Number is valid format\r\n */\r\nexport const isChileVATValid = (chileVATNumber) => {\r\n const isChileVATFormatValid = _.partial(regexTest, TaxChileVATRegExp);\r\n if (chileVATNumber === '') {\r\n return true;\r\n }\r\n\r\n if (!isChileVATFormatValid(chileVATNumber)) {\r\n return false;\r\n }\r\n const weights = [2, 3, 4, 5, 6, 7];\r\n const strList = chileVATNumber.split('-');\r\n const num = strList[0];\r\n const checkDigit = strList[1];\r\n let sum = 0;\r\n let j = 0;\r\n for (let i = num.length - 1; i >= 0; i -= 1) {\r\n sum += (num[i] - '0') * weights[j % weights.length];\r\n j += 1;\r\n }\r\n const expectedCheckDigit = 11 - (sum % 11);\r\n switch (expectedCheckDigit) {\r\n case 11:\r\n return checkDigit === '0';\r\n case 10:\r\n return checkDigit === 'K';\r\n default:\r\n return checkDigit === expectedCheckDigit.toString();\r\n }\r\n};\r\n\r\n/**\r\n * Convert the TaxInfoKeyValue pair in parameter to localized inline format\r\n * @param {TaxInfoKeyValue} taxInfoKeyValue the TaxInfoKeyValue\r\n * @param {object} i18n the i18n object\r\n * @returns {string} the localized inline formatted taxInfo\r\n */\r\nexport const inlineFormatTaxInfo = (taxInfoKeyValue, i18n) =>\r\n inlineFormatLocalizedTaxInfo(mapToLocalizedTaxInfo(taxInfoKeyValue, i18n));\r\n\r\n/**\r\n * Convert all TaxInfoKeyValue objects in the taxInfoKeyValues in params to localized inline format\r\n * @param {TaxInfoKeyValue[]} taxInfoKeyValues the TaxInfoKeyValues array\r\n * @param {object} i18n the i18n object\r\n * @returns {string} the lozalized inline formatted taxInfos\r\n */\r\nexport const inlineFormatTaxInfos = (taxInfoKeyValues, i18n) =>\r\n _.reduce(mapToLocalizedTaxInfos(taxInfoKeyValues, i18n), (memo, localizedTaxInfo) => {\r\n const separator = _.isEmpty(memo) ? '' : taxInfoSeparator;\r\n const inlineformattedTaxInfo = inlineFormatLocalizedTaxInfo(localizedTaxInfo);\r\n return _.isEmpty(inlineformattedTaxInfo) ? memo : `${memo}${separator}${inlineformattedTaxInfo}`;\r\n }, '');\r\n\r\n/**\r\n * Get tax value of a given tax type, returns null if not exists\r\n * @param {TaxInfoKeyValue[]} taxInfoKeyValues - The TaxInfoKeyValues array of { Key: taxType, Value: taxValue }\r\n * @param {string} taxType - The tax type to find\r\n * @returns {string} - The tax value, returns null if not exists\r\n */\r\nexport const getTaxValue = (taxInfoKeyValues, taxType) =>\r\n _.chain(taxInfoKeyValues)\r\n .findWhere({ Key: taxType })\r\n .result('Value', null)\r\n .value();\r\n\r\n/**\r\n * Get available tax types from taxSchema by reading taxSchema.properties\r\n * @param {object} taxSchema - The taxSchema object containing properties of available tax types\r\n * @returns {string[]} - The available tax types\r\n */\r\nexport const getAvailableTaxTypes = ({ taxSchema }) =>\r\n _.filter(_.keys(taxSchema.properties), taxType => _.keys(TaxType).includes(taxType));\r\n\r\n/**\r\n * Fill taxData with empty-Value properties of avaiable tax types if not exist\r\n * @param {object} taxInfoUIObject - The taxInfo UI object. Property is TaxType, value is TaxValue.\r\n * @param {object} taxSchema - The taxSchema object containing properties of available tax types\r\n * @returns {object} - The filled taxInfo UI object\r\n */\r\nexport const defaultsTaxDataWithEmptyValue = ({ taxInfoUIObject, taxSchema }) => {\r\n const availableTaxTypes = getAvailableTaxTypes({ taxSchema });\r\n return _.reduce(\r\n availableTaxTypes,\r\n (memo, taxType) => ({ ...memo, [taxType]: _.result(taxInfoUIObject, taxType, null) }),\r\n {}\r\n );\r\n};\r\n\r\n/**\r\n * Normalize IsTaxExemptionCertVerified value from MT\r\n * @param {string} MTValue - The MTValue of IsTaxExemptionCertVerified\r\n * @returns {string} - The valid IsTaxExemptionCertVerified value accepted by MT\r\n */\r\nexport const normalizeTaxExemptionCertVerifiedResult = (MTValue) => {\r\n if (_.result(MTValue, 'toLowerCase') === TaxExemptionCertVerifiedResult.Accept.toLowerCase()) {\r\n return TaxExemptionCertVerifiedResult.Accept;\r\n }\r\n\r\n if (_.result(MTValue, 'toLowerCase') === TaxExemptionCertVerifiedResult.Reject.toLowerCase()) {\r\n return TaxExemptionCertVerifiedResult.Reject;\r\n }\r\n\r\n return TaxExemptionCertVerifiedResult.NotSet;\r\n};\r\n\r\n/**\r\n * Normalize attestation value from MT\r\n * @param {string} MTValue - The MTValue of attestation value, e.g. IsIVAOrVATTaxPayer\r\n * @returns {string} - The valid attestation value accepted by MT\r\n */\r\nexport const normalizeAttestationValue = (MTValue) => {\r\n if (_.result(MTValue, 'toLowerCase') === AttestationValue.True.toLowerCase()) {\r\n return AttestationValue.True;\r\n }\r\n\r\n if (_.result(MTValue, 'toLowerCase') === AttestationValue.False.toLowerCase()) {\r\n return AttestationValue.False;\r\n }\r\n\r\n return AttestationValue.NotSet;\r\n};\r\n\r\n// below filters logic is to align with CCMT tax filters in consolidated billing v2\r\nconst getTaxFilters = () => {\r\n const ignoredKeyFilter = item => item.Key !== TaxInfo.SkipVatIdValidation;\r\n const ignoredKeyValuePairFilter = item => !(item.Key === TaxInfo.IsTaxExemptionCertVerified && normalizeTaxExemptionCertVerifiedResult(item.Value) === TaxExemptionCertVerifiedResult.Reject);\r\n const emptyValueFilter = item => !_.isEmpty(item.Value) || item.Key === TaxType.CPF;\r\n return { ignoredKeyFilter, ignoredKeyValuePairFilter, emptyValueFilter };\r\n};\r\n\r\n/**\r\n * Serialize tax information to string\r\n * @param {array} taxInformation MT tax information\r\n * @param {*} countryCode country code\r\n * @param {*} i18n i18n object\r\n * @returns {string} serialized tax information\r\n */\r\nexport const serializeTaxInformation = (taxInformation = [], countryCode, i18n) => {\r\n if (taxInformation === null) {\r\n return i18n.getString(_TL_('No tax number'));\r\n }\r\n const delimiter = ', ';\r\n const { ignoredKeyFilter, ignoredKeyValuePairFilter, emptyValueFilter } = getTaxFilters();\r\n const taxInformationFiltered = _.chain(taxInformation)\r\n .filter(ignoredKeyFilter)\r\n .filter(ignoredKeyValuePairFilter)\r\n .filter(emptyValueFilter)\r\n .value();\r\n return _.reduce(taxInformationFiltered, (acc, taxId) => {\r\n if (Object.keys(TaxType).includes(taxId.Key)) {\r\n const taxTypeLabel = getTaxTypeLabel(taxId.Key, i18n, { countryCode });\r\n const value = taxId.Value || i18n.getString(_TL_('Not set'));\r\n // eslint-disable-next-line no-param-reassign\r\n acc += acc ? `${delimiter}${taxTypeLabel}: ${value}` : `${taxTypeLabel}: ${value}`;\r\n } else if (Object.keys(TaxInfo).includes(taxId.Key)) {\r\n const taxInfoLabelMap = TaxInfoLabels[taxId.Key] || {};\r\n const normalizedValue = normalizeAttestationValue(taxId.Value);\r\n const taxInfoLabel = i18n.getString(taxInfoLabelMap[normalizedValue]);\r\n // eslint-disable-next-line no-param-reassign\r\n acc += acc ? `${delimiter}${taxInfoLabel}` : taxInfoLabel;\r\n }\r\n return acc;\r\n }, '');\r\n};\r\n\r\nexport const isCBV2TaxInformationMatch = (taxInformation1 = [], taxInformation2 = []) => {\r\n const convertToLowerCase = item => ({ Key: item.Key.toLowerCase(), Value: item.Value.toLowerCase() });\r\n const { ignoredKeyFilter, ignoredKeyValuePairFilter, emptyValueFilter } = getTaxFilters();\r\n const taxInformation1Filtered = _.chain(taxInformation1)\r\n .filter(ignoredKeyFilter)\r\n .filter(ignoredKeyValuePairFilter)\r\n .filter(emptyValueFilter)\r\n .map(convertToLowerCase)\r\n .sortBy('Key')\r\n .value();\r\n const taxInformation2Filtered = _.chain(taxInformation2)\r\n .filter(ignoredKeyFilter)\r\n .filter(ignoredKeyValuePairFilter)\r\n .filter(emptyValueFilter)\r\n .map(convertToLowerCase)\r\n .sortBy('Key')\r\n .value();\r\n return _.isEqual(taxInformation1Filtered, taxInformation2Filtered);\r\n};\r\n","import _ from 'underscore';\r\nimport { NumberUtils } from '@bingads-webui-clientcenter/common-utils';\r\n\r\nimport { CustomerProfilePropertyType, AppScope, ManagedByType, CustomerServiceLevel } from './constants/customer';\r\nimport { HierarchyAccountTypeValue } from './constants/linking';\r\nimport { TradeScreeningStatus } from './constants/trade-screening-transformation';\r\nimport { isStringNullOrWhiteSpace } from './common';\r\n\r\nconst { hasFlag } = NumberUtils;\r\n\r\n/**\r\n * @typedef {Object} Customer\r\n * @property {string|number} [ServiceLevel]\r\n */\r\n\r\n/**\r\n * Returns the display string of an customer in the format CustomerName (CustomerNumber)\r\n * @param {object} customer the customer object\r\n * @param {*} i18n the i18n object\r\n * @returns {string} the display string of customer\r\n */\r\nexport const getDisplayName = (customer, i18n) => {\r\n if (!_.isObject(customer)) {\r\n return '';\r\n }\r\n const name = customer.name || '';\r\n return customer.number ? i18n.getString(_TL_('{{name}} ({{number}})'), { name, number: customer.number }) : name;\r\n};\r\n\r\nexport const isAggregatee = customer => !!customer.AggregatorName;\r\n\r\n/**\r\n * Returns the hierarchy format of an customer\r\n * @param {object} customer the customer object\r\n * @returns {string} the hierarchy format of an customer\r\n */\r\nexport const getHierarchyCustomer = (customer = {}) => ({\r\n id: customer.id,\r\n name: customer.Name,\r\n number: customer.Number,\r\n managers: _.map(customer.DirectManagers, (manager = {}) => ({\r\n name: manager.RelatedToCustomerName,\r\n number: manager.RelatedToCustomerNumber,\r\n id: manager.RelatedToCustomerId,\r\n })),\r\n type: HierarchyAccountTypeValue.ManagerAccount,\r\n});\r\n\r\n/**\r\n * CustomerProfileModel holds a list profile properties for a customer.\r\n * @typedef {object} CustomerProfileModel\r\n * @property {number} [numberOfBillToInvoiceAccounts]\r\n * @property {number} [numberOfBillToPrepayAccounts]\r\n * @property {number} [numberOfBillToThresholdAccounts]\r\n * @property {bool} [isOptedInConsolidatedBilling]\r\n * @property {bool} [isOptedInCampaignDetails]\r\n * @property {number} [totalNumberOfBillToAccounts]\r\n */\r\n\r\nconst getCustomerProfileValue = (customerProfile, customerProfilePropertyType) => {\r\n const profile = _.findWhere(customerProfile.CustomerProfilePropertyList, { CustomerProfilePropertyType: customerProfilePropertyType });\r\n const value = profile && profile.Value;\r\n return parseInt(value, 10) || 0;\r\n};\r\n\r\n/**\r\n * Parse a customerProfile's CustomerProfilePropertyList array into a readable CustomerProfileModel's properties\r\n * @param {object} customerProfile the customerProfile object\r\n * @returns {CustomerProfileModel} the model of a customer Profile\r\n */\r\nexport const parseCustomerProfile = (customerProfile) => {\r\n if (!_.isObject(customerProfile) || !_.isArray(customerProfile.CustomerProfilePropertyList)) {\r\n return null;\r\n }\r\n\r\n const numberOfBillToInvoiceAccounts = getCustomerProfileValue(customerProfile, CustomerProfilePropertyType.NumberOfBillToInvoiceAccountsUnderCustomer);\r\n const numberOfBillToPrepayAccounts = getCustomerProfileValue(customerProfile, CustomerProfilePropertyType.NumberOfBillToPrepayAccountsUnderCustomer);\r\n const numberOfBillToThresholdAccounts = getCustomerProfileValue(customerProfile, CustomerProfilePropertyType.NumberOfBillToThresholdAccountsUnderCustomer);\r\n const isOptedInConsolidatedBilling = getCustomerProfileValue(customerProfile, CustomerProfilePropertyType.IsOptedInForConsolidatedBilling) === 1;\r\n const isOptedInCampaignDetails = getCustomerProfileValue(customerProfile, CustomerProfilePropertyType.IsOptedInForCampaignDetailsInInvoices) === 1;\r\n\r\n return {\r\n numberOfBillToInvoiceAccounts,\r\n numberOfBillToPrepayAccounts,\r\n numberOfBillToThresholdAccounts,\r\n isOptedInConsolidatedBilling,\r\n isOptedInCampaignDetails,\r\n totalNumberOfBillToAccounts: numberOfBillToInvoiceAccounts + numberOfBillToPrepayAccounts + numberOfBillToThresholdAccounts,\r\n };\r\n};\r\n\r\n/**\r\n * Parse a customerProfile's CustomerProfilePropertyList array and return the specified property value\r\n * @param {object} customerProfile the customerProfile object\r\n * @param {number} propertyType the customerProfilePropertyType enum\r\n * @returns {number} the customerProfileProperty value\r\n */\r\nexport const parseCustomerProfileSingle = (customerProfile, propertyType) => {\r\n if (!_.isObject(customerProfile) || !_.isArray(customerProfile.CustomerProfilePropertyList) || _.isEmpty(customerProfile.CustomerProfilePropertyList)) {\r\n return null;\r\n }\r\n\r\n return getCustomerProfileValue(customerProfile, propertyType);\r\n};\r\n\r\n/**\r\n * Returns true if the customer in param belongs to the appScope given in params\r\n * @param {object} customer the customer object\r\n * @param {*} appScope the Applications the Customer is associated with\r\n * @returns {boolean} true if the customer in param belongs to the appScope given in params\r\n */\r\nexport const isInAppScope = (customer, appScope) => _.contains(_.values(AppScope), appScope) && hasFlag(customer.AppScope, appScope);\r\n\r\n/**\r\n * Returns true if the customer is managed by Yahoo\r\n * @function\r\n * @param {object} customer the customer object\r\n * @returns {bool} true if the customer is managed by Yahoo\r\n */\r\nexport const isManagedByYahoo = customer => _.result(customer, 'ManagedBy') === ManagedByType.Yahoo;\r\n\r\n/**\r\n * Check if customer is in TST data issue missing name status\r\n * @param {object} customer The customer object to be extended with additional utility methods.\r\n * @returns {boolean} Result of whether customer is in TST data issue missing name status\r\n */\r\nexport const isTSTDataIssueName = customer =>\r\n _.get(customer, 'TradeScreeningStatus') === TradeScreeningStatus.DataIssueName ||\r\n _.get(customer, 'TradeScreeningStatus') === TradeScreeningStatus.DataIssueOrg;\r\n\r\n/**\r\n * Check if customer is in TST data issue missing address status\r\n * @param {object} customer The customer object to be extended with additional utility methods.\r\n * @returns {boolean} Result of whether customer is in TST data issue missing address status\r\n */\r\nexport const isTSTDataIssueAddress = customer => _.get(customer, 'TradeScreeningStatus') === TradeScreeningStatus.DataIssueAddress;\r\n\r\n/**\r\n * Check if customer is in TST data issue missing legal identifier status\r\n * @param {object} customer The customer object to be extended with additional utility methods.\r\n * @returns {boolean} Result of whether customer is in TST data issue missing legal identifier status\r\n */\r\nexport const isTSTDataIssueLegalId = customer => _.get(customer, 'TradeScreeningStatus') === TradeScreeningStatus.DataIssueLegalId;\r\n\r\n/**\r\n * Check if customer is in TST hit-in-review status\r\n * @param {object} customer The customer object to be extended with additional utility methods.\r\n * @returns {boolean} Result of whether customer is in TST hit-in-review status\r\n */\r\nexport const isTSTInReview = customer => _.get(customer, 'TradeScreeningStatus') === TradeScreeningStatus.HitInReview;\r\n\r\n/**\r\n * Check if customer is in TST LicR status\r\n * @param {object} customer The customer object to be extended with additional utility methods.\r\n * @returns {boolean} Result of whether customer is in TST LicR status\r\n */\r\nexport const isTSTLicR = customer => _.get(customer, 'TradeScreeningStatus') === TradeScreeningStatus.LicR;\r\n\r\n/**\r\n * Check if customer is in TST true-match status\r\n * @param {object} customer The customer object to be extended with additional utility methods.\r\n * @returns {boolean} Result of whether customer is in TST true-match status\r\n */\r\nexport const isTSTTrueMatch = customer => _.get(customer, 'TradeScreeningStatus') === TradeScreeningStatus.TrueMatch;\r\n\r\n/**\r\n * Check if customer is missing master data\r\n * @param {object} customer The customer object to be extended with additional utility methods.\r\n * @returns {boolean} Result of whether customer is missing data\r\n */\r\nexport const isTSTMissingMasterData = customer => (\r\n isStringNullOrWhiteSpace(_.get(customer, ['Address', 'Country']))\r\n || isStringNullOrWhiteSpace(_.get(customer, ['Address', 'City']))\r\n || isStringNullOrWhiteSpace(_.get(customer, ['Address', 'Line1']))\r\n || isStringNullOrWhiteSpace(_.get(customer, ['Name'])));\r\n\r\n/**\r\n * Check if customer is unmanaged customer\r\n * @param {Customer} customer Duck customer type to be extended with additional utility methods.\r\n * @returns {boolean} Result of whether customer is unmanaged customer\r\n */\r\nexport const isUnmanagedCustomer = ({ ServiceLevel }) => ServiceLevel === CustomerServiceLevel.SelfServe\r\n || CustomerServiceLevel[ServiceLevel] === CustomerServiceLevel.SelfServe\r\n || ServiceLevel === CustomerServiceLevel.SelfServeTrusted\r\n || CustomerServiceLevel[ServiceLevel] === CustomerServiceLevel.SelfServeTrusted;\r\n\r\n/**\r\n * Returns a copy of the given customer object with additional utility methods.\r\n * @param {object} customer The customer object to be extended with additional utility methods.\r\n * @param {*} i18n the i18n object\r\n * @returns {object} A copy of the extended customer object.\r\n */\r\nexport const extendCustomer = (customer = {}, i18n) => _.defaults({}, customer, {\r\n isAggregatee: () => isAggregatee(customer),\r\n displayName: () => getDisplayName(customer, i18n),\r\n hierarchyCustomer: () => getHierarchyCustomer(customer),\r\n isInAppScope: appScope => isInAppScope(customer, appScope),\r\n isManagedByYahoo: () => isManagedByYahoo(customer),\r\n isTSTDataIssueName: () => isTSTDataIssueName(customer),\r\n isTSTDataIssueAddress: () => isTSTDataIssueAddress(customer),\r\n isTSTDataIssueLegalId: () => isTSTDataIssueLegalId(customer),\r\n isTSTInReview: () => isTSTInReview(customer),\r\n isTSTLicR: () => isTSTLicR(customer),\r\n isTSTTrueMatch: () => isTSTTrueMatch(customer),\r\n isTSTMissingMasterData: () => isTSTMissingMasterData(customer),\r\n isUnmanagedCustomer: () => isUnmanagedCustomer(customer),\r\n});\r\n","import _ from 'underscore';\r\nimport URI from 'urijs';\r\n\r\nexport function IsFraudAppealPage({ urls, pageSuffix = '' }) {\r\n const fraudPageId = `fraudAppeal${pageSuffix}`;\r\n const fraudPage = _.isFunction(urls && urls[fraudPageId]) && urls[fraudPageId]();\r\n if (_.isFunction(urls && urls.current) && fraudPage) {\r\n const currentUrl = URI(urls.current());\r\n const targetUrl = URI(fraudPage);\r\n return currentUrl.path() === targetUrl.path();\r\n }\r\n return false;\r\n}\r\n\r\nexport function IsFraudAppealAIVPage({ urls }) {\r\n return IsFraudAppealPage({ urls, pageSuffix: 'AIV' });\r\n}\r\n","import _ from 'underscore';\r\nimport { DateUtils } from '@bingads-webui-clientcenter/common-utils';\r\n\r\nimport {\r\n InsertionOrderStatus,\r\n IOCreationSource,\r\n InsertionOrdersGridFieldNames,\r\n UnlimitedBudget,\r\n EndlessDate,\r\n InsertionOrderLabel,\r\n ImmediateDate,\r\n} from './constants/insertion-order';\r\n\r\nconst { isDateWithoutTimeEqual } = DateUtils;\r\n\r\n/**\r\n * Get whether this insertion order is pending under takeover billing linked accounts\r\n * @param {object} insertionOrder Value object of insertion order\r\n * @returns {bool} Returns true if this insertion order is pending under takeover billing linked accounts.\r\n */\r\nexport const isPendingTakeoverBillingIO = insertionOrder => _.isObject(insertionOrder) &&\r\n insertionOrder.IOCreationSource === IOCreationSource.BillingTakeOver &&\r\n (insertionOrder.Status === InsertionOrderStatus.PendingBillToPartyChange ||\r\n insertionOrder.Status === InsertionOrderStatus.PendingBillToPartyChangeAndUserReview);\r\n\r\n/**\r\n * Returns a copy of the given in object with additional utility methods.\r\n * @param {object} insertionOrder The insertion order object to be extended with additional utility methods.\r\n * @returns {object} A copy of the extended insertion order object.\r\n */\r\nexport const extendInsertionOrder = (insertionOrder = {}) => _.defaults({}, insertionOrder, {\r\n isPendingTakeoverBillingIO: () => isPendingTakeoverBillingIO(insertionOrder),\r\n});\r\n\r\n/**\r\n * Returns an insertion order which matches singleIOForm' format.\r\n * @param {object} selectedIO The insertion order from IO grid.\r\n * @param {object} i18n The i18n object.\r\n * @returns {object} An insertion order which matches singleIOForm' format.\r\n */\r\nexport const convertGridIOToSingleIOFormIO = (selectedIO, i18n) => {\r\n if (!_.isObject(selectedIO) || !_.isObject(i18n) || !_.isFunction(i18n.parseDate)) {\r\n return {};\r\n }\r\n\r\n return ({\r\n account: { AccountId: selectedIO.AccountId, DisplayAccountName: `${selectedIO.AccountName}(${selectedIO.AccountNumber})` },\r\n defaultIO: {\r\n ...selectedIO,\r\n FriendlyName: _.isString(selectedIO[InsertionOrdersGridFieldNames.InsertionOrderName]) ? selectedIO[InsertionOrdersGridFieldNames.InsertionOrderName].trim() : null,\r\n FromDate: selectedIO[InsertionOrdersGridFieldNames.StartDateText] && i18n.parseDate(selectedIO[InsertionOrdersGridFieldNames.StartDateText]),\r\n ThruDate: selectedIO[InsertionOrdersGridFieldNames.EndDateText] && i18n.parseDate(selectedIO[InsertionOrdersGridFieldNames.EndDateText]),\r\n Status: selectedIO[InsertionOrdersGridFieldNames.StatusValue],\r\n },\r\n mtIOEditableMap: {\r\n FriendlyName: selectedIO[InsertionOrdersGridFieldNames.IsInsertionOrderNameEditable],\r\n FromDate: selectedIO[InsertionOrdersGridFieldNames.IsStartDateEditable],\r\n ThruDate: selectedIO[InsertionOrdersGridFieldNames.IsEndDateEditable],\r\n SpendCapAmount: selectedIO[InsertionOrdersGridFieldNames.IsSpendCapAmountEditable],\r\n AgencyIdOrPo: selectedIO[InsertionOrdersGridFieldNames.IsAgencyIdOrPoEditable],\r\n DealPointId: selectedIO[InsertionOrdersGridFieldNames.IsDealPointIdEditable],\r\n RecordCenterId: selectedIO[InsertionOrdersGridFieldNames.IsRecordCenterIdEditable],\r\n Comment: selectedIO[InsertionOrdersGridFieldNames.IsCommentEditable],\r\n },\r\n });\r\n};\r\n\r\n/**\r\n * Returns an insertion order whether is valid.\r\n * @param {object} ioValidationFields The insertion order validation result object from IO grid.\r\n * @param {object} isIOItemNeedValidation The object of which IO items should be verified.\r\n * @returns {bool} Whether is a valid IO.\r\n */\r\nexport const isIOValid = ({ ioValidationFields, isIOItemNeedValidation }) =>\r\n// when isIOItemNeedValidation[key] === false, it means we don't need this io item\r\n// and it does not need validation\r\n _.every(isIOItemNeedValidation, (value, key) => !value || (ioValidationFields && ioValidationFields[key]));\r\n\r\n\r\n/**\r\n * Returns insertion orders whether are all valid.\r\n * @param {object} insertionOrders The insertion orders.\r\n * @param {object} isIOItemNeedValidation The object of which IO items should be verified.\r\n * @returns {bool} Whether are valid IOs.\r\n */\r\nexport const isAllIOsValid = ({ insertionOrders, isIOItemNeedValidation }) =>\r\n _.every(insertionOrders, insertionOrder =>\r\n isIOValid({ ioValidationFields: insertionOrder.ioValidationFields, isIOItemNeedValidation }));\r\n\r\n/**\r\n * Returns insertion orders budget whether is unlimited.\r\n * @param {number} spendCapAmountValue The insertion orders budget.\r\n * @returns {bool} Insertion orders budget whether is unlimited.\r\n */\r\nexport const isUnlimitedIOBudget = spendCapAmountValue => spendCapAmountValue === UnlimitedBudget;\r\n\r\n/**\r\n * Returns insertion orders endDate whether is endless.\r\n * @param {object} endDateValue The insertion orders endDate.\r\n * @returns {bool} Whether insertion orders end date is endless.\r\n */\r\nexport const isEndlessIOEndDate = endDateValue => isDateWithoutTimeEqual(endDateValue, EndlessDate);\r\n\r\n/**\r\n * Returns whether insertion orders startDate is immediate.\r\n * @param {object} startDateValue The insertion orders startDate.\r\n * @returns {bool} Whether insertion orders start date is immediate.\r\n */\r\nexport const isImmediateStartDate = startDateValue => isDateWithoutTimeEqual(startDateValue, ImmediateDate);\r\n\r\n/**\r\n * Returns insertion orders budget number.\r\n * @param {string} spendCapAmountValue The insertion orders budget string or budget number.\r\n * @param {object} i18n The i18n object.\r\n * @returns {number} Insertion orders budget number.\r\n */\r\nexport const getSpendCapAmountNumber = ({ spendCapAmountValue, i18n }) => {\r\n if (_.isString(spendCapAmountValue)) {\r\n return i18n.parseDecimal(spendCapAmountValue);\r\n } else if (_.isNumber(spendCapAmountValue)) {\r\n return spendCapAmountValue;\r\n }\r\n return null;\r\n};\r\n\r\n/**\r\n * Returns insertion orders budget string in grid.\r\n * @param {number} spendCapAmountValue The insertion orders budget.\r\n * @param {object} i18n The i18n object.\r\n * @returns {bool} Insertion orders budget string.\r\n */\r\nexport const formatUnlimitedIOBudgetInGrid = ({ spendCapAmountValue, i18n, unlimitedStringKey = _TL_('Unlimited') }) => {\r\n const spendCapAmountNumber = getSpendCapAmountNumber({ spendCapAmountValue, i18n });\r\n\r\n if (isUnlimitedIOBudget(spendCapAmountNumber)) {\r\n return i18n.getString(unlimitedStringKey);\r\n }\r\n return _.isNull(spendCapAmountNumber) ? null : i18n.formatDecimalToFixed(spendCapAmountNumber);\r\n};\r\n\r\n/**\r\n * Returns insertion orders endDate string in grid.\r\n * @param {object} endDateValue The insertion orders endDate.\r\n * @param {object} i18n The i18n object.\r\n * @returns {bool} Insertion orders endDate string.\r\n */\r\nexport const formatEndlessIOEndDateInGrid = ({ endDateValue, i18n, noEndDateStringKey = _TL_('No End Date') }) => {\r\n if (isEndlessIOEndDate(endDateValue)) {\r\n return i18n.getString(noEndDateStringKey);\r\n }\r\n return _.isDate(endDateValue) ? i18n.formatDate(endDateValue) : null;\r\n};\r\n\r\n/**\r\n * Returns insertion orders endDate string in grid.\r\n * @param {object} i18n The i18n object.\r\n * @param {object} iolabel The insertion orders alert label.\r\n * @param {object} column The insertion orders column name.\r\n * @returns {object} Insertion orders alert status.\r\n */\r\nexport const getIOAlertInGrid = ({ i18n, column, iolabel }) => {\r\n const alert = {\r\n EndDate: {\r\n [InsertionOrderLabel.Expiring]: {\r\n alertStatus: i18n.getString(_TL_('Expiring')),\r\n alertColor: 'status-warning',\r\n alertIcon: 'Warning',\r\n },\r\n [InsertionOrderLabel.Expired]: {\r\n alertStatus: i18n.getString(_TL_('Expired')),\r\n alertColor: 'status-error',\r\n alertIcon: 'Blocked2',\r\n },\r\n },\r\n BalanceAmount: {\r\n [InsertionOrderLabel.Exhausting]: {\r\n alertStatus: i18n.getString(_TL_('Exhausting')),\r\n alertColor: 'status-warning',\r\n alertIcon: 'Warning',\r\n },\r\n [InsertionOrderLabel.NoBudget]: {\r\n alertStatus: i18n.getString(_TL_('No budget')),\r\n alertColor: 'status-error',\r\n alertIcon: 'Blocked2',\r\n },\r\n },\r\n };\r\n return ((column === InsertionOrdersGridFieldNames.EndDate || column === InsertionOrdersGridFieldNames.BalanceAmount) && iolabel) ? alert[column][iolabel] : undefined;\r\n};\r\n\r\n/**\r\n * parse decimal from number or string or others.\r\n * @param {object} i18n The i18n object.\r\n * @param {object} value The value to parse.\r\n * @returns {number} a number parsed from value.\r\n */\r\nexport function getDecimal({ i18n, value }) {\r\n if (_.isNumber(value)) {\r\n return value;\r\n }\r\n if (_.isString(value)) {\r\n return i18n.parseDecimal(value);\r\n }\r\n return NaN;\r\n}\r\n","import _ from 'underscore';\r\n\r\n/**\r\n * Get language name property\r\n * @param {object} languageValue Value object of language\r\n * @param {number} languageValue.Code Code of language\r\n * @param {string} languageValue.Name Name of language\r\n * @returns {object} language name, and empty string if name is not found\r\n */\r\nexport const getLanguageName = languageValue => _.result(languageValue, 'Name', '');\r\n\r\n/**\r\n * Get extendLanguage object\r\n * @param {object} languageValue Value object of language\r\n * @param {number} languageValue.Code Code of language\r\n * @param {string} languageValue.Name Name of language\r\n * @returns {object} extendLanguage object\r\n */\r\nexport const extendLanguage = (languageValue = {}) => _.defaults({}, languageValue, {\r\n name: getLanguageName(languageValue),\r\n});\r\n\r\n/**\r\n * Get language value object by code\r\n * @param {number} code Code of language\r\n * @param {bool} getExtendedObject It indicates if this function will return extended language value object\r\n * @param {object[]} languages List of languages\r\n * @param {number} languages[].code Code of language\r\n * @param {object} languages[].value Value object of language\r\n * @param {number} languages[].value.Code Code of language\r\n * @param {string} languages[].value.Name Name of language\r\n * @returns {object} Language value object, and null or default extendLanguage object if language code is not found\r\n */\r\nexport const findLanguage = ({ languages, code, getExtendedObject = false }) => {\r\n const language = _.findWhere(languages, { code });\r\n const languageValue = _.result(language, 'value', null);\r\n return getExtendedObject ? extendLanguage(languageValue) : languageValue;\r\n};\r\n","import _ from 'underscore';\r\nimport {\r\n PaymentInstrFinancialStatus,\r\n CardCategory,\r\n CountryCode,\r\n CreditCardType,\r\n PaymentInstrumentType,\r\n PaymentInstrLifecycleStatus,\r\n PaymentType,\r\n PaymentTypeId,\r\n PaymentOption,\r\n PaymentOptionId,\r\n PaymentSettingsMap,\r\n PaymentTransactionStatus,\r\n SAPApplicationType,\r\n SAPApplicationStatus,\r\n DocumentType,\r\n AccountMode,\r\n ESCPrepayUnsupportedPITypes,\r\n NukedPIStatusTypes,\r\n CreditCardTypeString,\r\n PaymentOptionString,\r\n} from './constants';\r\n\r\nconst PaymentStatusI18nMap = {\r\n [PaymentTransactionStatus.Processing]: _TL_('Payment processing'),\r\n [PaymentTransactionStatus.Declined]: _TL_('Payment declined'),\r\n [PaymentTransactionStatus.Chargeback]: _TL_('Chargeback'),\r\n [PaymentTransactionStatus.RefundReversal]: _TL_('Refund reversal'),\r\n [PaymentTransactionStatus.ChargebackReversal]: _TL_('Chargeback reversal'),\r\n};\r\n\r\nexport const getCardNumberLast4Digits = number => (_.isString(number) ? number.substr(-4) : '');\r\n\r\nconst getCreditCardDisplayName = (pi, i18n) => {\r\n const displayNameKey = pi.Address ? _TL_('{{cardType}} {{cardCategory}}****{{last4}} ({{country}})') : _TL_('{{cardType}} {{cardCategory}}****{{last4}}');\r\n const cardTypeKey = pi.CardTypeId ? CreditCardTypeString[pi.CardTypeId] : CreditCardTypeString[CreditCardType[pi.CardType]];\r\n\r\n return i18n.getString(\r\n displayNameKey,\r\n {\r\n cardType: i18n.getString(cardTypeKey),\r\n cardCategory: pi.CardCategory === CardCategory.Prepaid ? i18n.getString(_TL_('Prepaid ')) : '',\r\n last4: getCardNumberLast4Digits(pi.Number),\r\n country: pi.Address ? pi.Address.CountryName : '',\r\n }\r\n );\r\n};\r\n\r\nconst getInvoiceDisplayName = (pi, i18n) => {\r\n const stringFormat = pi.SAPCustomerName ? _TL_('SAP: {{customerName}} ({{invoiceId}})') : _TL_('SAP: {{invoiceId}}');\r\n return i18n.getString(\r\n stringFormat,\r\n {\r\n customerName: pi.SAPCustomerName,\r\n invoiceId: pi.InvoiceId,\r\n }\r\n );\r\n};\r\n\r\nconst getCheckDisplayName = (pi, i18n) =>\r\n i18n.getString(_TL_('Check: {{friendlyName}}'), { friendlyName: pi.FriendlyName });\r\n\r\nconst getEFTDisplayName = (pi, i18n) =>\r\n i18n.getString(_TL_('Electronic funds transfer: {{friendlyName}}'), { friendlyName: pi.FriendlyName });\r\n\r\nconst getPayPalDisplayName = (pi, i18n) =>\r\n (pi.Email ? i18n.getString(_TL_('PayPal: {{email}}'), { email: pi.Email }) : i18n.getString(_TL_('PayPal')));\r\n\r\nconst getSepaDisplayName = (pi, i18n) =>\r\n i18n.getString(_TL_('SEPA direct debit: {{friendlyName}}'), { friendlyName: pi.FriendlyName });\r\n\r\nconst getOfflineDisplayName = (pi, i18n) => {\r\n const stringFormat = pi.Address ? _TL_('Bank transfer ({{country}})') : _TL_('Bank transfer');\r\n return i18n.getString(stringFormat, { country: pi.Address ? pi.Address.CountryName : '' });\r\n};\r\n\r\nconst getBoletoDisplayName = (pi, i18n) =>\r\n i18n.getString(_TL_('Boleto Bancário: {{friendlyName}}'), { friendlyName: pi.FriendlyName });\r\n\r\nconst getVBADisplayName = (pi, i18n) =>\r\n i18n.getString(_TL_('Virtual Bank Account: {{friendlyName}}'), { friendlyName: pi.FriendlyName });\r\n\r\nconst getDisplayNameDict = {\r\n [PaymentInstrumentType.CreditCard]: getCreditCardDisplayName,\r\n [PaymentInstrumentType.Invoice]: getInvoiceDisplayName,\r\n [PaymentInstrumentType.Check]: getCheckDisplayName,\r\n [PaymentInstrumentType.ElectronicFundsTransfer]: getEFTDisplayName,\r\n [PaymentInstrumentType.PayPal]: getPayPalDisplayName,\r\n [PaymentInstrumentType.ELV]: getSepaDisplayName,\r\n [PaymentInstrumentType.OfflinePaymentMethod]: getOfflineDisplayName,\r\n [PaymentInstrumentType.Boleto]: getBoletoDisplayName,\r\n [PaymentInstrumentType.VBA]: getVBADisplayName,\r\n};\r\n\r\nexport const isExpired = (pi) => {\r\n if (!(pi && Date.parse(pi.ExpirationDate))) {\r\n return false;\r\n }\r\n const date = new Date(pi.ExpirationDate);\r\n return date.setMonth(date.getMonth() + 1) <= new Date();\r\n};\r\n\r\nexport const isOnHold = pi =>\r\n _.isObject(pi)\r\n && pi.FinancialStatus !== null\r\n && pi.FinancialStatus !== undefined\r\n && pi.FinancialStatus !== PaymentInstrFinancialStatus.NoHold;\r\n\r\nexport const isDeleted = pi => _.isObject(pi) && pi.LifecycleStatusId === PaymentInstrLifecycleStatus.Deleted;\r\n\r\nexport const isPurged = pi => _.isObject(pi) && pi.IsPurged === true;\r\n\r\nexport const isIndiaPI = pi => _.isObject(pi) && pi.Address && pi.Address.Country === CountryCode.IN;\r\n\r\n/**\r\n * Gets a string representation of the expiration date in 'mm/yy' format\r\n * @param {string} dateString The date string\r\n * @returns {string} the string 'mm/yy' format of the date\r\n*/\r\nexport const formatExpDate = (dateString) => {\r\n if (!Date.parse(dateString)) {\r\n return '';\r\n }\r\n\r\n const date = new Date(dateString);\r\n const yearString = date.getFullYear().toString().substr(-2);\r\n const monthString = `0${date.getMonth() + 1}`.substr(-2);\r\n return `${monthString}/${yearString}`;\r\n};\r\n\r\nexport const getDisplayName = (pi, i18n) => {\r\n if (!(pi && pi.Id && i18n && i18n.getString)) {\r\n return '';\r\n }\r\n\r\n const getDisplayNameFunc = getDisplayNameDict[pi.Type];\r\n if (getDisplayNameFunc) {\r\n return getDisplayNameFunc(pi, i18n);\r\n }\r\n\r\n return i18n.getString(_TL_('Payment method: {{id}}'), { id: pi.Id });\r\n};\r\n\r\n/**\r\n * Gets the display string of card status, whether it's on hold, expired or active\r\n * @param {object} pi the payment instrument\r\n * @param {object} i18n the i18n object\r\n * @param {object} permissions the permissions object\r\n * @returns {string} display string of the payment instrument of type CreditCard\r\n */\r\nexport const getCardStatusDisplay = (pi, i18n) => {\r\n if (!(pi && i18n && i18n.getString && i18n.formatDate)) {\r\n return '';\r\n }\r\n\r\n if (isOnHold(pi)) {\r\n const date = Date.parse(pi.OnHoldDate) ? i18n.formatDate(new Date(pi.OnHoldDate)) : '';\r\n return i18n.getString(_TL_('On hold {{date}}'), { date });\r\n }\r\n\r\n return i18n.getString(\r\n isExpired(pi) ? _TL_('Expired {{date}}') : _TL_('Expires {{date}}'),\r\n { date: isIndiaPI(pi) ? i18n.getString(_TL_('N/A')) : formatExpDate(pi.ExpirationDate) }\r\n );\r\n};\r\n\r\n/**\r\n * Get the payment option text by the given paymentOptionId\r\n * @param {number} paymentOptionId the payment option Id\r\n * @param {*} i18n the i18n object\r\n * @returns {string} display text of the payment option\r\n */\r\nexport const getPaymentOptionTextById = (paymentOptionId, i18n) => {\r\n const paymentOptionIds = _.values(PaymentOptionId);\r\n return _.contains(paymentOptionIds, paymentOptionId) ?\r\n i18n.getString(PaymentOptionString[paymentOptionId]) :\r\n undefined;\r\n};\r\n\r\n/**\r\n * Get the payment method formatted display string based on MT returned fields\r\n * This is the same function of server side 'BillingHelper.GetPaymentMethodFormatted'\r\n * @param {object} piInformation contains below properties:\r\n * paymentInstrumentTypeId indicate this PI's type Id\r\n * paymentInstrAccountNumber contains this payment's account information, for different payment type this value is different.\r\n * paymentInstrFriendlyName this holds the PI friendly named used by Paypal, VBA and Boleto.\r\n * paymentInstrCardTypeId this holds the Credit Card Type Id if the PI type is Credit Card.\r\n* @param {*} i18n the i18n object\r\n * @returns {string} display text of the formatted payment method\r\n */\r\nexport const getPaymentMethodFormatted = (\r\n {\r\n paymentInstrumentTypeId,\r\n paymentInstrAccountNumber,\r\n paymentInstrFriendlyName,\r\n paymentInstrCardTypeId,\r\n },\r\n i18n\r\n) => {\r\n let paymentMethodText;\r\n if (paymentInstrumentTypeId && paymentInstrumentTypeId !== PaymentInstrumentType.Unset) {\r\n switch (paymentInstrumentTypeId) {\r\n case PaymentInstrumentType.CreditCard: {\r\n if (paymentInstrCardTypeId) {\r\n paymentMethodText = getCreditCardDisplayName({\r\n CardTypeId: paymentInstrCardTypeId,\r\n Number: paymentInstrAccountNumber,\r\n }, i18n);\r\n }\r\n break;\r\n }\r\n case PaymentInstrumentType.Invoice: {\r\n paymentMethodText = getInvoiceDisplayName({ InvoiceId: paymentInstrAccountNumber }, i18n);\r\n break;\r\n }\r\n case PaymentInstrumentType.PayPal: {\r\n paymentMethodText = getPayPalDisplayName({ Email: paymentInstrFriendlyName }, i18n);\r\n break;\r\n }\r\n case PaymentInstrumentType.ELV: {\r\n paymentMethodText = getSepaDisplayName({ FriendlyName: paymentInstrAccountNumber }, i18n);\r\n break;\r\n }\r\n case PaymentInstrumentType.OfflinePaymentMethod: {\r\n paymentMethodText = getOfflineDisplayName({}, i18n);\r\n break;\r\n }\r\n case PaymentInstrumentType.VBA: {\r\n paymentMethodText = getVBADisplayName({ FriendlyName: paymentInstrFriendlyName }, i18n);\r\n break;\r\n }\r\n case PaymentInstrumentType.Boleto: {\r\n paymentMethodText = getBoletoDisplayName({ FriendlyName: paymentInstrFriendlyName }, i18n);\r\n break;\r\n }\r\n default:\r\n break;\r\n }\r\n }\r\n return paymentMethodText;\r\n};\r\n\r\n/**\r\n * Calculates the remaining credit for a given SAP, returning null if there is no applicable limit.\r\n * @param {object} sap the Invoice object to check\r\n * @param {object} options Some optional parameter to pass, like matchCurrencyCode to ensure that the SAP object matches the given currency code\r\n * @returns {number} the remaining credit for the given SAP or null if not applicable\r\n */\r\nexport const sapCreditRemaining = (sap, options = {}) => {\r\n const { matchCurrencyCode } = options;\r\n const hasValidCreditLimit =\r\n _.isObject(sap) &&\r\n sap.Type === PaymentInstrumentType.Invoice &&\r\n sap.IsCLEOn === true &&\r\n sap.CreditLimit > 0 &&\r\n (!matchCurrencyCode || (sap.CurrencyCode || '').toLowerCase() === matchCurrencyCode.toLowerCase());\r\n\r\n return hasValidCreditLimit ?\r\n sap.CreditLimit - (sap.SAPBalance || 0) :\r\n null;\r\n};\r\n\r\n/**\r\n * Calculates the projected number of days remaining before the given SAP runs out of credit,\r\n * returning null if there is no valid estimate.\r\n * @param {object} sap the Invoice object to check\r\n * @returns {number} the number of days remaining before the given SAP runs out of credit or null\r\n * if there is no valid estimate\r\n */\r\nexport const sapCreditDaysRemaining = (sap) => {\r\n const creditRemaining = sapCreditRemaining(sap);\r\n\r\n return creditRemaining != null && sap.SAPSpendRunRate > 0 ?\r\n Math.ceil(creditRemaining / sap.SAPSpendRunRate) :\r\n null;\r\n};\r\n\r\n/**\r\n * Returns the status whether the passed pi was validated\r\n * @param {object} pi the payment instrument\r\n * @returns {bool} indicate whether the pi had already validated\r\n */\r\nexport const isPiValidated = pi => _.isObject(pi) && Number(pi.LifecycleStatusId) > 0 && pi.LifecycleStatusId !== PaymentInstrLifecycleStatus.PendingValidation;\r\n\r\nconst isPiType = (pi, piType) => _.isObject(pi) && piType && pi.Type === piType;\r\n\r\n/**\r\n * Return whether the payment instrument is the indicated type of pi.\r\n * @param {object} pi the PaymentInstrument object\r\n * @returns {bool} indicate whether the provided Pi is the indicated type of pi.\r\n */\r\nexport const isCreditCard = pi => isPiType(pi, PaymentInstrumentType.CreditCard);\r\n\r\nexport const isInvoice = pi => isPiType(pi, PaymentInstrumentType.Invoice);\r\n\r\nexport const isBoleto = pi => isPiType(pi, PaymentInstrumentType.Boleto);\r\n\r\nexport const isOfflinePaymentMethod = pi => isPiType(pi, PaymentInstrumentType.OfflinePaymentMethod);\r\n\r\nexport const isSepa = pi => isPiType(pi, PaymentInstrumentType.ELV);\r\n\r\nexport const isPaypal = pi => isPiType(pi, PaymentInstrumentType.PayPal);\r\n\r\nexport const isNukePIInvalid = pi => isCreditCard(pi) && (pi.NukedPIStatus === NukedPIStatusTypes.Invalid || pi.NukedPIStatus === NukedPIStatusTypes.AltInvalid);\r\n\r\nexport const isNukePIShowButton = pi => isCreditCard(pi) && pi.NukedPIStatus === NukedPIStatusTypes.ValidShowButton;\r\n\r\nconst getPiCountry = pi => (pi.Address ? pi.Address.Country : null);\r\n\r\n/**\r\n * Check whether the given backup PI can be set as a backup for the given primary PI.\r\n * @param {Object} obj.backupPi - PI to check whether it can be set as backup\r\n * @param {Object} obj.primaryPi - PI set currently set as primary PI\r\n * @returns {Boolean} - A value indicating whether the PI can be set as backup\r\n */\r\nexport const isValidBackup = ({ backupPi, primaryPi }) =>\r\n backupPi.SupportsRecurringPayment &&\r\n backupPi.Id !== primaryPi.Id &&\r\n backupPi.IsTaxable === primaryPi.IsTaxable &&\r\n (!primaryPi.IsTaxable || getPiCountry(backupPi) === getPiCountry(primaryPi));\r\n\r\n/**\r\n * Returns a copy of the given PaymentInstrument object with additional utility methods.\r\n * @param {object} pi The PaymentInstrument object to be extended with additional utility methods\r\n * @param {object} i18n The i18n object\r\n * @param {object} permissions The permissions object\r\n * @returns {object} A copy of the extended PaymentInstrument object.\r\n */\r\nexport const extendPi = (pi = {}, i18n, permissions = {}) => _.defaults({}, pi, {\r\n id: pi && pi.Id, // react DropdownSelector expects an id property\r\n displayName: getDisplayName(pi, i18n),\r\n cardStatus: (pi && pi.Type) === PaymentInstrumentType.CreditCard ? getCardStatusDisplay(pi, i18n, permissions) : '',\r\n isDeleted: isDeleted(pi),\r\n isOnHold: isOnHold(pi),\r\n isPurged: isPurged(pi),\r\n isExpired: isExpired(pi),\r\n isValidated: isPiValidated(pi),\r\n isInvoice: isInvoice(pi),\r\n isBoleto: isBoleto(pi),\r\n isOfflinePaymentMethod: isOfflinePaymentMethod(pi),\r\n isCreditCard: isCreditCard(pi),\r\n isSepa: isSepa(pi),\r\n isPaypal: isPaypal(pi),\r\n isNukePIInvalid: isNukePIInvalid(pi),\r\n isNukePIShowButton: isNukePIShowButton(pi),\r\n});\r\n\r\n/**\r\n * Returns a sorted list of PaymentInstrument ordered by Active > Expired > OnHold, then by Type, then by name.\r\n * @param {object[]} piList A list of PaymentInstrument object to be extended and sorted.\r\n * @param {object} i18n The i18n object\r\n * @param {object} permissions The permissions object\r\n * @returns {object[]} The sorted list of extended PaymentInstrument object.\r\n */\r\nexport const sortPiList = (piList = [], i18n, permissions = {}) => {\r\n if (_.isEmpty(piList)) {\r\n return [];\r\n }\r\n\r\n const piListExtended = _.map(piList, pi => extendPi(pi, i18n, permissions));\r\n const activePis = _.chain(piListExtended)\r\n .reject(pi => pi.isOnHold || pi.isExpired)\r\n .sortBy('displayName')\r\n .sortBy('Type')\r\n .value();\r\n const expiredPis = _.chain(piListExtended)\r\n .filter(pi => pi.isExpired && !pi.isOnHold)\r\n .sortBy('displayName')\r\n .value();\r\n const onHoldPis = _.chain(piListExtended)\r\n .filter(pi => pi.isOnHold)\r\n .sortBy('displayName')\r\n .value();\r\n return _.union(activePis, expiredPis, onHoldPis);\r\n};\r\n\r\n/**\r\n * Returns a string enum value for Payment Type\r\n * @param {PaymentTypeId} piTypeId The payment type Id.\r\n * @returns {PaymentType} The payment type.\r\n */\r\nexport const convertPaymentTypeToString = (piTypeId) => {\r\n const key = _.findKey(PaymentTypeId, val => val === piTypeId);\r\n return PaymentType[key];\r\n};\r\n\r\n/**\r\n * Returns a string enum value for Payment Type\r\n * @param {PaymentType} piType The payment type.\r\n * @returns {PaymentTypeId} The payment type id.\r\n */\r\nexport const convertPaymentTypeToInt = (piType) => {\r\n const key = _.findKey(PaymentType, val => val === piType);\r\n return PaymentTypeId[key];\r\n};\r\n\r\n/**\r\n * Returns a string enum value for Payment Option\r\n * @function\r\n * @param {PaymentOptionId} paymentOptionId The payment option Id.\r\n * @returns {string} The payment option as a string value.\r\n */\r\nexport const convertPaymentOptionToString = paymentOptionId =>\r\n _.result(PaymentOption, _.findKey(PaymentOptionId, val => val === paymentOptionId), null);\r\n\r\n/**\r\n * Returns a number enum value for Payment Option\r\n * @function\r\n * @param {PaymentOption} paymentOptionString The payment option string.\r\n * @returns {number} The payment option as a number value.\r\n */\r\nexport const convertPaymentOptionToId = paymentOptionString =>\r\n _.result(PaymentOptionId, _.findKey(PaymentOption, val => val === paymentOptionString), null);\r\n\r\n/**\r\n * Returns the payment type corresponding to the given payment option ID.\r\n * @param {Number} paymentOptionId - payment option ID to lookup\r\n * @returns {string} - payment type corresponding to the given payment option ID\r\n */\r\nexport const getPaymentTypeForPaymentOption = paymentOptionId =>\r\n _.findKey(PaymentSettingsMap, p => _.contains(p, paymentOptionId)) || null;\r\n\r\n/**\r\n * Return the text key of the payment transaction status used by billing grid.\r\n * @param {PaymentTransactionStatus} paymentTransactionStatus the input payment transaction status\r\n * @param {bool} hasPaymodError whether has paymod error\r\n * @returns {string} the text key of the payment transaction status used by billing grid.\r\n */\r\nexport const getPaymentTransactionStatus = (paymentTransactionStatus, hasPaymodError) => {\r\n if (paymentTransactionStatus\r\n && paymentTransactionStatus !== PaymentTransactionStatus.Unknown\r\n && paymentTransactionStatus !== PaymentTransactionStatus.Success\r\n && !hasPaymodError) {\r\n return PaymentStatusI18nMap[paymentTransactionStatus];\r\n }\r\n return null;\r\n};\r\n\r\n/**\r\n * Return a filtered list of newly added pending SAPApplications\r\n * @param {object[]} [sapApplications=[]] the original SAPApplication list to filter\r\n * @returns {object[]} the filtered SAPApplication list\r\n */\r\nexport const filterPendingSAPApplicationsOfNewSAP = (sapApplications = []) => {\r\n if (!_.isArray(sapApplications)) {\r\n return [];\r\n }\r\n\r\n const types = [SAPApplicationType.ApplyNewBilltoSAP, SAPApplicationType.ApplyNewSoldtoSAP, SAPApplicationType.AddingExistingSAP];\r\n const statuses = [SAPApplicationStatus.UnderReview, SAPApplicationStatus.ActionRequired];\r\n\r\n return _.filter(sapApplications, ({ SAPApplicationType: sapApplicationType, SAPApplicationStatus: sapApplicationStatus }) =>\r\n _.contains(types, sapApplicationType) && _.contains(statuses, sapApplicationStatus));\r\n};\r\n\r\nconst onlinePiTypes = [\r\n PaymentInstrumentType.CreditCard,\r\n PaymentInstrumentType.PayPal,\r\n];\r\n\r\nconst offlinePiTypes = [\r\n PaymentInstrumentType.Boleto,\r\n PaymentInstrumentType.ELV,\r\n PaymentInstrumentType.OfflinePaymentMethod,\r\n];\r\n\r\n/**\r\n * Return a list of payment instruments filtered by payment option\r\n * @param {object[]} paymentInstruments the list of PI's to filter\r\n * @param {number} paymentOptionId The type of payment option to use as filter criteria\r\n * @returns {object[]} the filtered list\r\n */\r\nexport const filterPisByPaymentOption = (paymentInstruments, paymentOptionId) => {\r\n switch (paymentOptionId) {\r\n case PaymentOptionId.Invoice:\r\n return _.filter(\r\n paymentInstruments,\r\n paymentInstrument => paymentInstrument.Type === PaymentInstrumentType.Invoice\r\n );\r\n\r\n case PaymentOptionId.Prepay:\r\n return _.filter(\r\n paymentInstruments,\r\n paymentInstrument => _.contains([...onlinePiTypes, ...offlinePiTypes], paymentInstrument.Type)\r\n );\r\n\r\n case PaymentOptionId.Threshold:\r\n return _.filter(\r\n paymentInstruments,\r\n paymentInstrument => _.contains(\r\n onlinePiTypes,\r\n paymentInstrument.Type\r\n ) && paymentInstrument.SupportsPostpay\r\n );\r\n\r\n default:\r\n return [];\r\n }\r\n};\r\n\r\n/**\r\n * Filters the specified payment instruments,\r\n * based on their compatibility with the specified account mode.\r\n * @param {object[]} paymentInstruments the list of payment instruments to be checked for compatibility\r\n * @param {number} paymentInstruments[].Type the type of payment instrument, e.g. credit card, etc.\r\n * @param {number|null} accountMode the account mode which all specified payment instruments need to be compatible with\r\n * @returns {object[]} the filtered list of payment instruments\r\n */\r\nexport const filterPaymentInstrumentsByAccountMode = (paymentInstruments, accountMode) =>\r\n (accountMode !== AccountMode.UnifiedSmart\r\n ? paymentInstruments\r\n : _.filter(paymentInstruments, pi => !_.contains(ESCPrepayUnsupportedPITypes, pi.Type)));\r\n\r\nexport const getPaymentReason = (documentType) => {\r\n if (documentType === DocumentType.WriteOffCreditMemo) {\r\n return _TL_('Adjustment for uncollected amount');\r\n }\r\n\r\n return null;\r\n};\r\n\r\n/**\r\n * Filter payment options by user's account mode\r\n * @param {Object[]} paymentOptions Payment options returned by backend\r\n * @param {string | null} accountMode account mode\r\n * @param {Object} pilots Permissions/Features\r\n * @param {function} poKeySelector An optional function that selects\r\n * the payment option ID from elements of {@link paymentOptions} collection.\r\n * By default the elements are assumed to be the IDs.\r\n * @returns {Object[]} Filtered payment options, share the same type with paymentOptions param\r\n */\r\nexport const filterPaymentOptionsByAccountMode = (paymentOptions, accountMode, pilots, poKeySelector) => {\r\n const keySelector = poKeySelector || _.identity;\r\n const {\r\n UnifiedProductMonthlyInvoice: isUnifiedProductMonthlyInvoiceEnabled,\r\n ESCPrepay: isEscPrepayEnabled,\r\n } = pilots || {};\r\n\r\n return accountMode !== AccountMode.UnifiedSmart\r\n ? paymentOptions\r\n : _.filter(paymentOptions, (option) => {\r\n switch (`${keySelector(option)}`) {\r\n case `${PaymentOptionId.Invoice}`:\r\n return isUnifiedProductMonthlyInvoiceEnabled;\r\n case `${PaymentOptionId.Prepay}`:\r\n return isEscPrepayEnabled;\r\n case `${PaymentOptionId.Threshold}`:\r\n return true;\r\n default:\r\n return false;\r\n }\r\n });\r\n};\r\n","import _ from 'underscore';\r\n\r\n/**\r\n * Get permission map from domaindata\r\n * @param {object[]} permissions List of permissions\r\n * @param {string} permissions[].id Id of permission\r\n * @param {string} permissions[].action Action name of permission\r\n * @param {boolean} permissions[].hasPermission Value that indicates if it has permission\r\n * @returns {object[]} An object with { action : hasPermission }\r\n */\r\nexport const getPermissionMap = (permissions) => {\r\n const permissionMap = {};\r\n _.each(permissions, permission => _.extend(permissionMap, { [permission.action]: permission.hasPermission }));\r\n return permissionMap;\r\n};\r\n","import _ from 'underscore';\r\nimport { FCAAccountDomainStatus } from './constants';\r\n\r\nexport const MTDomainDataToUI = ({ CleansedDomain, Status }) => ({\r\n cleansedDomain: CleansedDomain, status: Status,\r\n});\r\n\r\nexport const getDomainsToMT = domainData => _.map(domainData, d => ({ CleansedDomain: d.cleansedDomain, Status: d.status || FCAAccountDomainStatus.Create }));\r\n","import _ from 'underscore';\r\nimport { EntityType } from './constants/common';\r\n\r\n/**\r\n * Stores the dictionary of UI external role information.\r\n */\r\nexport const UIExternalRoles = {\r\n AdvertiserManager: {\r\n RoleId: 16, IsAccountScope: true, IsObsolete: false, CanBeSwitchedOut: false,\r\n },\r\n ApiUser: {\r\n RoleId: 27, IsAccountScope: true, IsObsolete: true, CanBeSwitchedOut: true,\r\n },\r\n SmbAggregatorAgency: {\r\n RoleId: 33, IsAccountScope: false, IsObsolete: false, CanBeSwitchedOut: false,\r\n },\r\n SuperAdmin: {\r\n RoleId: 41, IsAccountScope: false, IsObsolete: false, CanBeSwitchedOut: false,\r\n },\r\n AdvertiserAdmin: {\r\n RoleId: 68, IsAccountScope: false, IsObsolete: true, CanBeSwitchedOut: false,\r\n },\r\n ClientAdmin: {\r\n RoleId: 94, IsAccountScope: true, IsObsolete: true, CanBeSwitchedOut: true,\r\n },\r\n ClientViewer: {\r\n RoleId: 100, IsAccountScope: true, IsObsolete: false, CanBeSwitchedOut: true,\r\n },\r\n StandardUser: {\r\n RoleId: 203, IsAccountScope: true, IsObsolete: false, CanBeSwitchedOut: true,\r\n },\r\n};\r\n\r\nexport const hasCustomerLevelRoleEntities = roles => _.any(roles, role => role.EntityType === EntityType.Customer);\r\n\r\nexport const getAccessibleAccountIds = roles => _.chain(roles)\r\n .where({ EntityType: EntityType.Account })\r\n .pluck('EntityId')\r\n .value();\r\n\r\nexport const isAccountScopeUserRole = roleId => _.chain(UIExternalRoles)\r\n .findWhere({ RoleId: Number(roleId) })\r\n .get('IsAccountScope')\r\n .value();\r\n\r\nexport const userRoleCanBeSwitchedOut = roleId => _.findWhere(UIExternalRoles, { RoleId: roleId }).CanBeSwitchedOut;\r\n","import _ from 'underscore';\r\n\r\n/**\r\n * Display format for user email and name\r\n * @param {object} user User object\r\n * @param {string} user.Email User email\r\n * @param {object} user.Name User name object\r\n * @param {string} user.Name.FirstName User firstName\r\n * @param {string} user.Name.LastName User lastName\r\n * @returns {string} The display format for given user\r\n */\r\nexport const getUserDisplayByUser = (user = {}) => {\r\n const names = [_.result(user.Name, 'FirstName'), _.result(user.Name, 'LastName')];\r\n const nameString = _.compact(names).join(' ');\r\n const emailString = user.Email || '';\r\n return _.compact([emailString, nameString]).join(' - ');\r\n};\r\n\r\n\r\n/**\r\n * Find user by id and get display format\r\n * @param {object[]} users List of users\r\n * @param {string} id User id string\r\n * @param {string} users[].Email User email\r\n * @param {object} users[].Name User name object\r\n * @param {string} users[].Name.FirstName User firstName\r\n * @param {string} users[].Name.LastName User lastName\r\n * @returns {array} The display format of user for given id\r\n */\r\nexport const getUserDisplayById = (users, id) => {\r\n const user = _.findWhere(users, { id });\r\n return getUserDisplayByUser(user);\r\n};\r\n\r\n/**\r\n * Returns a copy of the given user object with additional utility methods.\r\n * @param {object} user The user object to be extended with additional utility methods.\r\n * @returns {object} A copy of the extended user object.\r\n */\r\nexport const extendUser = (user = {}) => _.defaults({}, user, {\r\n userDisplay: () => getUserDisplayByUser(user),\r\n});\r\n\r\n/**\r\n * Check if user is missing master data in TST scope\r\n * @param {object} user The user object to be extended with additional utility methods\r\n * @param {object} user.Name The user Name object containing first and last name\r\n * @param {object} user.Address The user Address object\r\n * @param {bool} checkName Flag to check if user name is missing\r\n * @returns {bool} Value indicating if user is missing master data\r\n */\r\nexport const isMissingMasterData = ({ Name = {}, Address = {} } = {}, checkName = false) =>\r\n (checkName && (_.isEmpty(Name.FirstName) || _.isEmpty(Name.LastName))) || _.isEmpty(Address.Line1) || _.isEmpty(Address.City) || _.isEmpty(Address.Country);\r\n","export { GetJsDataInfo } from './src/index';\r\nexport * from './src/utils';\r\n","import _ from 'underscore';\r\nimport URI from 'urijs';\r\nimport { JsDataRestStore } from '@bingads-webui/js-data-rest';\r\nimport { join } from '@bingads-webui/url-util';\r\nimport RestfulServiceBase from '@bingads-webui-clientcenter/restful-service';\r\nimport { staticResourceConfig } from './static-resource';\r\n\r\n/**\r\n * Create RestfulService with given options, and use to create jsdata objects\r\n * @param {Object} options - constructor paramaters for '@bingads-webui-clientcenter/restful-service'\r\n * @param {string} ccRootUrl - url of root CC server\r\n * @param {Array} resourceNames - array of string jsData resource names like \"FeatureAdoptionCoupon\" to filter on\r\n * @return {Object} - jsdata rest service, and jsdata rest store\r\n */\r\nexport function GetJsDataInfo(options, ccRootUrl = '', resourceNames = []) {\r\n const restfulService = new RestfulServiceBase(options);\r\n const jsDataRestStore = new JsDataRestStore({ restfulService });\r\n const cleanedCcRootUrl = URI(ccRootUrl).path('').toString();\r\n // SupportUI API requests should only come from SupportUI\r\n const emptyUrl = URI('').path('').toString();\r\n\r\n const selectedResources = resourceNames && resourceNames.length > 0\r\n ? _.pick(staticResourceConfig, resourceNames)\r\n : staticResourceConfig;\r\n\r\n _.each(\r\n selectedResources,\r\n (config, name) => jsDataRestStore.defineRestResource(name, {\r\n ...config,\r\n uriPath: join(config.isSupportUIAPI ? emptyUrl : cleanedCcRootUrl, config.uriPath),\r\n })\r\n );\r\n\r\n const jsDataCcRest = jsDataRestStore.definitions;\r\n\r\n return { jsDataCcRest, jsDataRestStore };\r\n}\r\n","module.exports = __WEBPACK_EXTERNAL_MODULE__385__;","export const staticResourceConfig = {\r\n Account: {\r\n uriPath: '/cc/API/Account',\r\n },\r\n AccountBackupIOConfig: {\r\n uriPath: '/cc/API/InsertionOrder/AccountBackupIOConfig',\r\n primaryKey: 'AccountId',\r\n },\r\n AccountBudgetCenterInformation: {\r\n uriPath: '/cc/API/BudgetCenter/AccountBudgetCenterInformation',\r\n },\r\n AccountFeatureSet: {\r\n uriPath: '/cc/API/Account/AccountFeatureSet',\r\n primaryKey: 'accountId',\r\n },\r\n AccountFeatureEnabled: {\r\n uriPath: '/cc/API/Account/AccountFeatureEnabled',\r\n primaryKey: 'pilot',\r\n },\r\n AccountsFetchUnderTheSameABL: {\r\n uriPath: '/cc/API/Account/FetchAccountsUnderTheSameABL',\r\n },\r\n AccountIOAutoApproval: {\r\n uriPath: '/cc/InsertionOrder/AccountIOAutoApproval',\r\n primaryKey: 'AccountId',\r\n },\r\n AccountIOForecastingDailySpend: {\r\n uriPath: '/cc/API/InsertionOrder/InsertionOrderForecastingDailySpend',\r\n },\r\n AccountsInfoForAgency: {\r\n uriPath: '/cc/Agency/AccountsInfoForAgency',\r\n primaryKey: 'AccountId',\r\n },\r\n AccountAddOnBehalfOfAgencyContext: {\r\n uriPath: '/cc/Customers/AccountAddOnBehalfOfAgencyContext',\r\n primaryKey: 'AccountId',\r\n },\r\n AccountFundingInfo: {\r\n uriPath: '/cc/API/PaymentUtility/AccountFundingInfo',\r\n primaryKey: 'AccountId',\r\n },\r\n AccountIdentityVerification: {\r\n uriPath: '/cc/API/AccountIdentityVerification',\r\n primaryKey: 'accountId',\r\n },\r\n AccountIdentityVerificationInfo: {\r\n uriPath: '/cc/API/AccountIdentityVerification/Info',\r\n primaryKey: 'accountId',\r\n },\r\n AccountIdentityVerificationOnfidoToken: {\r\n uriPath: '/cc/API/AccountIdentityVerification/OnfidoToken',\r\n primaryKey: 'accountId',\r\n },\r\n AccountIdentityVerificationOnfidoNameComparison: {\r\n uriPath: '/cc/API/AccountIdentityVerification/OnfidoNameComparison',\r\n },\r\n AccountIdentityVerificationRetriggerBusinessVerification: {\r\n uriPath: '/cc/API/AccountIdentityVerification/RetriggerBusinessVerification',\r\n },\r\n AccountIdentityVerificationStateOverride: {\r\n uriPath: '/cc/API/AccountIdentityVerification/StateOverride',\r\n },\r\n AccountIdentityVerificationHoldOverride: {\r\n uriPath: '/cc/API/AccountIdentityVerification/HoldOverride',\r\n },\r\n AccountIdentityVerificationAppeal: {\r\n uriPath: '/cc/API/AccountIdentityVerification/Appeal',\r\n primaryKey: 'accountId',\r\n },\r\n AccountIdentityVerificationAppealDecision: {\r\n uriPath: '/cc/API/AccountIdentityVerification/AppealDecision',\r\n },\r\n AccountLevelAPContact: {\r\n uriPath: '/cc/API/Billing/AccountLevelAPContact',\r\n primaryKey: 'cid',\r\n },\r\n AccountMap: {\r\n uriPath: '/cc/API/Customer/AccountMap',\r\n primaryKey: 'rcid',\r\n },\r\n // TODO: Used in Create Account Step 3. This API should be split up and the server logic moved to client-side.\r\n AccountPaymentInformation: {\r\n uriPath: '/cc/Account/PaymentInformation',\r\n },\r\n AccountReparentingJobLoad: {\r\n uriPath: '/cc/API/Reparenting/JobLoad',\r\n },\r\n AccountReparentingLoadAccounts: {\r\n uriPath: '/cc/API/Reparenting/LoadAccounts',\r\n },\r\n AccountReparentingJobSubmit: {\r\n uriPath: '/cc/API/Reparenting/JobSubmit',\r\n },\r\n AccountReparentingJobAdd: {\r\n uriPath: '/cc/API/Reparenting/JobAdd',\r\n },\r\n AccountReparentingJobUpdate: {\r\n uriPath: '/cc/API/Reparenting/JobUpdate',\r\n },\r\n AccountReparentingValidateAccounts: {\r\n uriPath: '/cc/API/Reparenting/ValidateAccounts',\r\n },\r\n AccountReparentingValidateTargetCustomer: {\r\n uriPath: '/cc/API/Reparenting/ValidateTargetCustomer',\r\n },\r\n AccountReparentingValidateLinkInfo: {\r\n uriPath: '/cc/API/Reparenting/ValidateLinkInfo',\r\n },\r\n AccountReparentingValidateBillingInfo: {\r\n uriPath: '/cc/API/Reparenting/ValidateBillingInfo',\r\n },\r\n AccountReparentingFullValidate: {\r\n uriPath: '/cc/API/Reparenting/FullValidate',\r\n },\r\n ActivateAPContact: {\r\n uriPath: '/cc/ActivateAPContact',\r\n primaryKey: 'code',\r\n },\r\n AddressLoadCountry: {\r\n uriPath: '/cc/Address/LoadCountry',\r\n },\r\n AdjustmentDocument: {\r\n uriPath: '/cc/Adjustments/AdjustmentDocument',\r\n primaryKey: 'DocumentId',\r\n },\r\n AdjustmentNewAdjustment: {\r\n uriPath: '/cc/Adjustments/NewAdjustment',\r\n primaryKey: 'Id',\r\n },\r\n AgencyBulkLinkJobUpdate: {\r\n uriPath: '/cc/Agency/AgencyBulkLinkJobUpdate',\r\n primaryKey: 'cid',\r\n },\r\n AgencyLinkRequest: {\r\n uriPath: '/cc/API/Linking/AgencyLinkRequest',\r\n },\r\n AgencyRequest: {\r\n uriPath: '/cc/Agency/Requests',\r\n },\r\n AgencyRequestBulkAction: {\r\n uriPath: '/cc/Agency/BulkAction',\r\n primaryKey: 'cid',\r\n },\r\n AgencyLinkedCustomers: {\r\n uriPath: '/cc/Customers/AgencyLinkedCustomers',\r\n },\r\n AncestorHierarchyPath: {\r\n uriPath: '/cc/Customers/AncestorHierarchyPath',\r\n },\r\n ApiUser: {\r\n uriPath: '/cc/API/DevCenter/ApiUser',\r\n primaryKey: 'Id',\r\n },\r\n AssociateAndRedeemCoupon: {\r\n uriPath: '/cc/API/Coupon/smartautocoupon',\r\n },\r\n AssociateCoupon: {\r\n uriPath: '/cc/API/Coupon/AssociateCoupon',\r\n },\r\n BAARecommendations: {\r\n uriPath: '/cc/API/Recommendations/BAARecommendations',\r\n },\r\n Balance: {\r\n uriPath: '/cc/API/Billing/Balance',\r\n primaryKey: 'AccountId',\r\n },\r\n BillingGroup: {\r\n uriPath: '/cc/API/BillingGroup',\r\n },\r\n BillingGroupAccount: {\r\n uriPath: '/cc/API/BillingGroup/BillingGroupAccount',\r\n primaryKey: 'AccountId',\r\n },\r\n BillingSPABatchDownload: {\r\n uriPath: '/cc/Billing/SPABatchDownload',\r\n },\r\n BillingStatements: {\r\n uriPath: '/cc/API/Billing/BillingStatements',\r\n primaryKey: 'BillingDocumentId',\r\n },\r\n BillingSummary: {\r\n uriPath: '/cc/API/Billing/BillingSummary',\r\n },\r\n BillingSummaryForAccounts: {\r\n uriPath: '/cc/API/Billing/BillingSummaryForAccount',\r\n },\r\n BillingSettings: {\r\n uriPath: '/cc/Billing/BillingSettings',\r\n primaryKey: 'cid',\r\n },\r\n BillingSettingsUser: {\r\n uriPath: '/cc/Billing/BillingSettingsUser',\r\n primaryKey: 'cid',\r\n },\r\n BillingSettingsAddress: {\r\n uriPath: '/cc/Billing/BillingSettingsAddress',\r\n primaryKey: 'Id',\r\n },\r\n BillingSettingsUpdate: {\r\n uriPath: '/cc/Billing/BillingSettingsUpdate',\r\n },\r\n /* This BillingTile is restricted to be only used in BillingGrid SPA feature.\r\n After move billing tile to SPA this part will be removed.\r\n */\r\n BillingTile: {\r\n uriPath: '/cc/Billing/BillingTile',\r\n },\r\n BillNow: {\r\n uriPath: '/cc/API/Billing/BillNow',\r\n },\r\n BillNowForMca: {\r\n uriPath: '/cc/API/Billing/BillNowForMca',\r\n },\r\n BudgetInsightsAndAlerts: {\r\n uriPath: '/cc/API/BudgetCenter/BudgetInsightsAndAlerts',\r\n },\r\n BulkCreateInsertionOrderViewData: {\r\n uriPath: '/cc/InsertionOrder/BulkCreateInsertionOrderViewData',\r\n primaryKey: 'CustomerId',\r\n },\r\n BulkCreateInsertionOrder: {\r\n uriPath: '/cc/insertionOrder/CreateInsertionOrders',\r\n },\r\n BulkCustomerLinkJob: {\r\n uriPath: '/cc/Agency/BulkCustomerLinkJob',\r\n primaryKey: 'cid',\r\n },\r\n BulkEstimateTaxes: {\r\n uriPath: '/cc/API/Billing/BulkEstimateTaxes',\r\n primaryKey: 'AccountId',\r\n },\r\n BulkGetPrimaryContacts: {\r\n uriPath: '/cc/accounts/BulkGetPrimaryContacts',\r\n },\r\n BulkLinkingCustomerInfo: {\r\n uriPath: '/cc/Agency/BulkLinkingCustomerInfo',\r\n primaryKey: 'cid',\r\n },\r\n BulkLinkJob: {\r\n uriPath: '/cc/Agency/BulkLinkJob',\r\n primaryKey: 'cid',\r\n },\r\n BulkLinkJobUpdate: {\r\n uriPath: '/cc/Agency/BulkLinkJobUpdate',\r\n primaryKey: 'cid',\r\n },\r\n BulkPrepayPaymentParams: {\r\n uriPath: '/cc/Payment/BulkPrepayPaymentParams',\r\n primaryKey: 'cid',\r\n },\r\n BulkUpdatePrimaryContacts: {\r\n uriPath: '/cc/account/BulkUpdatePrimaryContacts',\r\n },\r\n BusinessAddressLoadCountry: {\r\n uriPath: '/cc/BusinessAddress/LoadCountryData', // This endpoint is deprecated. Please use DomainDataCountry\r\n },\r\n CampaignBudgetCenterInformation: {\r\n uriPath: '/cc/API/BudgetCenter/CampaignBudgetCenterInformation',\r\n },\r\n CampaignBudgetSummaryGrid: {\r\n uriPath: '/cc/API/BudgetCenter/CampaignBudgetSummaryGrid',\r\n primaryKey: 'CampaignId',\r\n },\r\n CampaignPerformanceBudget: {\r\n uriPath: '/cc/API/BudgetCenter/CampaignPerformanceBudget',\r\n primaryKey: 'CampaignId',\r\n },\r\n CanTriggerFCAVerification: {\r\n uriPath: '/cc/API/UKFCAVerification/CanTriggerFCAVerification',\r\n primaryKey: 'accountId',\r\n },\r\n CheckBillingGroupNameAvailability: {\r\n uriPath: '/cc/API/BillingGroup/CheckBillingGroupNameAvailability',\r\n },\r\n CleanDomain: {\r\n uriPath: '/cc/API/UKFCAVerification/CleanDomain',\r\n primaryKey: 'RawDomain',\r\n },\r\n ClearBalance: {\r\n uriPath: '/ClearBalance/ClearAccountBalance',\r\n primaryKey: 'accountId',\r\n isSupportUIAPI: true,\r\n },\r\n CountryCurrenciesMapping: {\r\n uriPath: '/cc/API/Currency/CountryCurrenciesMapping',\r\n primaryKey: 'country',\r\n },\r\n CountryTaxTypesMapping: {\r\n uriPath: '/cc/API/Country/CountryTaxTypesMapping',\r\n },\r\n CountryMapping: {\r\n uriPath: '/cc/API/Country',\r\n },\r\n Coupon: {\r\n uriPath: '/cc/API/Coupon',\r\n },\r\n CountryTimeZonesMapping: {\r\n uriPath: '/cc/API/TimeZone/GetTimeZonesPerCountry',\r\n },\r\n // For CCUI\r\n CouponRedemptionsAndAssociations: {\r\n uriPath: '/cc/API/Coupon/CouponRedemptionsAndAssociations',\r\n primaryKey: 'accountId',\r\n },\r\n ChannelPartnerPaymentContext: {\r\n uriPath: '/cc/API/PaymentInstrument/ChannelPartnerPaymentContext',\r\n },\r\n CNAccountVerification: {\r\n uriPath: '/cc/API/CNVerification/AccountVerification',\r\n primaryKey: 'id',\r\n },\r\n CNAccountVerificationSummary: {\r\n uriPath: '/cc/API/CNVerification/AccountVerificationSummary',\r\n primaryKey: 'accountId',\r\n },\r\n CNPredicateAccountVerificationStatus: {\r\n uriPath: '/cc/API/CNVerification/PredicateAccountVerificationStatus',\r\n primaryKey: 'accountId',\r\n },\r\n CNLackedQualifications: {\r\n uriPath: '/cc/API/CNVerification/LackedQualifications',\r\n primaryKey: 'accountId',\r\n },\r\n CNVerificationGridData: {\r\n uriPath: '/cc/API/CNVerification/QualificationList',\r\n primaryKey: 'QualificationId',\r\n },\r\n CNVerificationIndustryList: {\r\n uriPath: '/cc/API/CNVerification/IndustryList',\r\n primaryKey: 'aid',\r\n },\r\n CNVerificationQualification: {\r\n uriPath: '/cc/API/CNVerification/Qualification',\r\n primaryKey: 'QualificationId',\r\n },\r\n CreateApiUser: {\r\n uriPath: '/cc/API/DevCenter/CreateApiUser',\r\n primaryKey: 'Id',\r\n },\r\n CreateCustomer: {\r\n uriPath: '/cc/Customers/CreateCustomer',\r\n },\r\n // This is the API used for create account. It returns currencies based on CID + Country Code.\r\n // The primary key is currently a string like 'query-71-0'. It should probably be changed to currencyId.\r\n Currencies: {\r\n uriPath: '/cc/Account/Currencies',\r\n primaryKey: 'Id',\r\n },\r\n // This is the API used by OBO. It returns currencies based on Country Code only.\r\n // It can probably be merged with Currencies (e.g. \"Currency.findAll({ countryCode: 'US' })\").\r\n CurrenciesByCountry: {\r\n uriPath: '/cc/Account/CurrenciesByCountry',\r\n primaryKey: 'Id',\r\n },\r\n // Not sure if this API is used. It is an extended version of Currencies.\r\n // It returns a list of currencies with their allowed countries, by CID.\r\n CurrencyCountriesMapping: {\r\n uriPath: '/cc/API/Currency/CurrencyCountriesMapping',\r\n primaryKey: 'currency',\r\n },\r\n CurrencyExchangeRate: {\r\n uriPath: '/cc/API/Currency/ExchangeRate',\r\n },\r\n Customer: {\r\n uriPath: '/cc/API/Customer',\r\n },\r\n CustomerAccess: {\r\n uriPath: '/cc/Customers/CustomerAccess',\r\n primaryKey: 'UserId',\r\n },\r\n CustomerAccountSignupOnBehalfOf: {\r\n uriPath: '/cc/Customers/CustomerAccountSignupOnBehalfOf',\r\n primaryKey: 'CustomerId',\r\n },\r\n CustomerAccountSignupOnBehalfOfAgencyContext: {\r\n uriPath: '/cc/Customers/CustomerAccountSignupOnBehalfOfAgencyContext',\r\n primaryKey: 'CustomerId',\r\n },\r\n CustomerAddress: {\r\n uriPath: '/cc/API/Customer/Address',\r\n primaryKey: 'Id',\r\n },\r\n CustomerAddresses: {\r\n uriPath: '/cc/BusinessAddress/CustomerAddresses', // This endpoint is deprecated. Please use CustomerAddress\r\n },\r\n CustomerFeatureDetail: {\r\n uriPath: '/cc/API/Customer/CustomerFeatureDetail',\r\n primaryKey: 'customerId',\r\n },\r\n CustomerFeatureEnabled: {\r\n uriPath: '/cc/API/Customer/CustomerFeatureEnabled',\r\n primaryKey: 'customerId',\r\n },\r\n CustomerFeatureEnabledSet: {\r\n uriPath: '/cc/API/Customer/CustomerFeatureEnabledSet',\r\n primaryKey: 'customerId',\r\n },\r\n CustomerHierarchy: {\r\n uriPath: '/cc/Customers/SearchCustomerHierarchy',\r\n },\r\n CustomerInfo: {\r\n uriPath: '/cc/Customers/CustomerInfo',\r\n primaryKey: 'Id',\r\n },\r\n CustomerLinkPermission: {\r\n uriPath: '/cc/Agency/CustomerLinkPermissionUpdate',\r\n primaryKey: 'cid',\r\n },\r\n CustomersManagement: {\r\n uriPath: '/cc/Customers/Management',\r\n },\r\n CustomerProfile: {\r\n uriPath: '/cc/API/Customer/Profile',\r\n primaryKey: 'CustomerId',\r\n },\r\n DailyRemainingCreditLimit: {\r\n uriPath: '/cc/API/Account/DailyRemainingCreditLimit',\r\n },\r\n DeleteCtpPI: {\r\n uriPath: '/cc/API/PaymentInstrument/DeleteCtpPI',\r\n },\r\n DeletePI: {\r\n uriPath: '/cc/API/PaymentInstrument/DeletePI',\r\n },\r\n DeleteFCAVerification: {\r\n uriPath: '/cc/API/UKFCAVerification/DeleteFCAVerification',\r\n primaryKey: 'AccountId',\r\n },\r\n DelinkAccountRequest: {\r\n uriPath: '/cc/agency/CreateDelinkRequest',\r\n primaryKey: 'Message',\r\n },\r\n DomainDataAdjustmentReason: {\r\n uriPath: '/cc/API/DomainData/AdjustmentReasonMapping',\r\n },\r\n DomainDataCountry: {\r\n uriPath: '/cc/API/DomainData/CountryMapping',\r\n primaryKey: 'Id',\r\n },\r\n // This is just a list of currency information. No CID filtering included.\r\n DomainDataCurrency: {\r\n uriPath: '/cc/API/DomainData/CurrencyMapping',\r\n primaryKey: 'Id',\r\n },\r\n DomainDataEmailFreeHostDomain: {\r\n uriPath: '/cc/API/DomainData/EmailFreeHostDomain',\r\n },\r\n DomainDataIndustry: {\r\n uriPath: '/cc/API/DomainData/IndustryMapping',\r\n primaryKey: 'Code',\r\n },\r\n DomainDataLanguage: {\r\n uriPath: '/cc/API/DomainData/LanguageMapping',\r\n primaryKey: 'Code',\r\n },\r\n DomainDataBillingLanguage: {\r\n uriPath: '/cc/API/DomainData/BillingLanguageMapping',\r\n primaryKey: 'Key',\r\n },\r\n DomainDataGeography: {\r\n uriPath: '/cc/API/DomainData/LocalizedMappingCountry',\r\n primaryKey: 'Id',\r\n },\r\n DomainDataSubGeography: {\r\n uriPath: '/cc/API/DomainData/LocalizedMappingSubGeography',\r\n },\r\n DomainDataTimeZone: {\r\n uriPath: '/cc/API/DomainData/TimeZoneMapping',\r\n primaryKey: 'Name',\r\n },\r\n DomainDataCountryCodeCompanyCode: {\r\n uriPath: '/cc/API/DomainData/CountryCodeCompanyCodeMapping',\r\n primaryKey: 'Key',\r\n },\r\n EditUserViewModel: {\r\n uriPath: '/cc/API/User/EditUserViewModel',\r\n primaryKey: 'tuid',\r\n },\r\n EditUser: {\r\n uriPath: '/cc/API/User/EditUser',\r\n },\r\n EmailTokenValidation: {\r\n uriPath: '/cc/API/EmailTokenValidation',\r\n primaryKey: 'RequestId',\r\n },\r\n EstimateTaxes: {\r\n uriPath: '/cc/API/Billing/EstimateTaxes', // This endpoint is deprecated. Please use EstimateTaxesAllPayments\r\n },\r\n EstimateTaxesAllPayments: {\r\n uriPath: '/cc/API/Billing/EstimateTaxesAllPayments',\r\n },\r\n ExpertAccount: {\r\n uriPath: '/cc/API/Account/ExpertAccount',\r\n primaryKey: 'AccountId',\r\n },\r\n ExportAccountTransferSummary: {\r\n uriPath: '/cc/API/Reparenting/RenderAccountTransferSummaryExcel',\r\n },\r\n // The primary key is currently a string like '-'\r\n // This is so it can be fetched without knowing the current promotionId\r\n // account Id is included in the key because different accounts could have different promotions for a feature\r\n FeatureAdoptionCoupon: {\r\n uriPath: '/cc/API/Coupon/FeatureAdoptionCouponAdoptions',\r\n primaryKey: 'id',\r\n },\r\n FraudCustomerInfo: {\r\n uriPath: '/cc/API/FraudAppeal/FraudCustomerInfo',\r\n },\r\n FraudCustomerOptInAiv: {\r\n uriPath: '/cc/API/FraudAppeal/FraudCustomerOptInAiv',\r\n },\r\n FraudCustomerVerificationInfo: {\r\n uriPath: '/cc/API/FraudAppeal/FraudCustomerVerificationInfo',\r\n },\r\n GetCouponDetails: {\r\n uriPath: '/cc/API/Coupon/GetCouponDetails',\r\n },\r\n // For MCA\r\n GetCouponRedemptionsAndAssociations: {\r\n uriPath: '/cc/API/Coupon/GetCouponRedemptionsAndAssociations',\r\n },\r\n GetCouponStringForSignup: {\r\n uriPath: '/cc/API/Coupon/GetCouponStringForSignup',\r\n },\r\n GetCouponValidForCustomerWebsite: {\r\n uriPath: '/cc/API/Coupon/GetCouponValidForCustomerWebsite',\r\n primaryKey: 'websiteURL',\r\n },\r\n GetCustomers: {\r\n uriPath: '/cc/Customers/GetCustomers',\r\n primaryKey: 'userId',\r\n },\r\n GetPrimaryContacts: {\r\n uriPath: '/cc/API/User/PrimaryContacts',\r\n },\r\n HierarchyCustomersAccounts: {\r\n uriPath: '/cc/API/Hierarchy',\r\n },\r\n HierarchyLinkRequest: {\r\n uriPath: '/cc/API/Linking/HierarchyLinkRequest',\r\n },\r\n IOImportHistory: {\r\n uriPath: '/cc/InsertionOrder/IOImportHistory',\r\n primaryKey: 'ImportId',\r\n },\r\n IOImportSummary: {\r\n uriPath: '/cc/InsertionOrder/ImportSummary',\r\n primaryKey: 'entities',\r\n },\r\n IOImportApplyOrCancel: {\r\n uriPath: '/cc/InsertionOrder/ApplyOrCancelBulkIOImport',\r\n primaryKey: 'ImportId',\r\n },\r\n IndiaEInvoicingGenerationValidation: {\r\n uriPath: '/cc/API/Account/ValidateIndiaEInvoicingGeneration',\r\n },\r\n InsertionOrdersGridData: {\r\n uriPath: '/cc/InsertionOrder/InsertionOrdersGridData',\r\n primaryKey: 'InsertionOrderId',\r\n },\r\n InsertionOrdersGridColumnChooserData: {\r\n uriPath: '/cc/InsertionOrder/InsertionOrdersGridColumnChooserData',\r\n },\r\n InsertionOrdersGridFilterData: {\r\n uriPath: '/cc/InsertionOrder/InsertionOrdersGridFilterData',\r\n },\r\n InsertionOrdersMenuData: {\r\n uriPath: '/cc/InsertionOrder/InsertionOrdersMenuData',\r\n },\r\n InsertionOrderPermission: {\r\n uriPath: '/cc/API/InsertionOrder/InsertionOrderPermission',\r\n },\r\n InsertionOrder: {\r\n uriPath: '/cc/API/InsertionOrder',\r\n },\r\n InviteUser: {\r\n uriPath: '/cc/API/User/InviteUser',\r\n },\r\n LoadAllProfilesForPayee: {\r\n uriPath: '/cc/API/Payee/LoadAllProfilesForPayee',\r\n primaryKey: 'cid',\r\n },\r\n LoadBillingGroupCandidates: {\r\n uriPath: '/cc/API/BillingGroup/LoadBillingGroupCandidates',\r\n },\r\n LoadUngroupedAccounts: {\r\n uriPath: '/cc/API/BillingGroup/LoadUngroupedAccounts',\r\n },\r\n LocationData: {\r\n uriPath: '/cc/API/DevCenter/LocationData',\r\n },\r\n LinkRequest: {\r\n uriPath: '/cc/API/Linking/LinkRequest',\r\n },\r\n ManagersModel: {\r\n uriPath: '/cc/API/Linking/Managers',\r\n primaryKey: 'cid',\r\n },\r\n MandateAgreementRequired: {\r\n uriPath: '/cc/API/MandateAgreementRequired',\r\n primaryKey: 'customerId',\r\n },\r\n McaPaymentContexts: {\r\n uriPath: '/cc/API/PaymentInstrument/McaPaymentContext',\r\n },\r\n MultiUserAuthorize: {\r\n uriPath: '/cc/API/User/MultiUserAuthorize',\r\n primaryKey: 'cid',\r\n },\r\n MultiUserCustomer: {\r\n uriPath: '/cc/Customers/MultiUserCustomer',\r\n },\r\n NavbarTab: {\r\n uriPath: '/cc/Tabs/NavbarTab',\r\n },\r\n OfflinePaymentInstructions: {\r\n uriPath: '/cc/Payment/OfflinePaymentInstructions',\r\n },\r\n PaymentInstrument: {\r\n uriPath: '/cc/API/PaymentInstrument',\r\n primaryKey: 'Id',\r\n },\r\n PaymentOptions: {\r\n uriPath: '/cc/API/PaymentInstrument/PaymentOptions',\r\n },\r\n PaymentSettingSwitch: {\r\n uriPath: '/cc/API/PaymentSettingSwitch',\r\n },\r\n PendingBillToChangeLight: {\r\n uriPath: '/cc/API/Billing/PendingBillToChangeLight',\r\n primaryKey: 'AccountId',\r\n },\r\n PermissionAccount: {\r\n uriPath: '/cc/API/Permission/Account',\r\n },\r\n PermissionCustomer: {\r\n uriPath: '/cc/API/Permission/Customer',\r\n },\r\n Person: {\r\n uriPath: '/cc/Customers/Person',\r\n primaryKey: 'PersonId',\r\n },\r\n PersonHistory: {\r\n uriPath: '/cc/Customers/PersonHistory',\r\n },\r\n PilotFeatures: {\r\n uriPath: '/cc/API/Customer/PilotFeatures',\r\n },\r\n PotentialBillingGroups: {\r\n uriPath: '/cc/API/BillingGroup/PotentialBillingGroups',\r\n },\r\n PrimaryContacts: {\r\n uriPath: '/cc/Users/PrimaryContacts',\r\n },\r\n PutPayeeAndGetToken: {\r\n uriPath: '/cc/API/Payee/PutPayeeAndGetToken',\r\n primaryKey: 'cid',\r\n },\r\n Rebill: {\r\n uriPath: '/cc/API/Rebill',\r\n },\r\n RebillDocumentInfo: {\r\n uriPath: '/cc/Rebill/DocumentInfo',\r\n primaryKey: 'DocumentId',\r\n },\r\n Recommendation: {\r\n uriPath: '/cc/API/Notifications/Recommendation',\r\n },\r\n RecurringInsertionOrder: {\r\n uriPath: '/cc/InsertionOrder/RecurringInsertionOrder',\r\n primaryKey: 'SeriesId',\r\n },\r\n RecurringInsertionOrderViewData: {\r\n uriPath: '/cc/InsertionOrder/RecurringInsertionOrderViewData',\r\n primaryKey: 'CustomerId',\r\n },\r\n RequestDetailsModel: {\r\n uriPath: '/cc/Agency/RequestDetailsModel',\r\n primaryKey: 'id',\r\n },\r\n RequiredTopUpAmount: {\r\n uriPath: '/cc/API/PaymentUtility/RequiredTopUpAmount',\r\n primaryKey: 'accountId',\r\n },\r\n ResendAPContactValidation: {\r\n uriPath: '/cc/Billing/ResendAPContactValidation',\r\n },\r\n RiskControl: {\r\n uriPath: '/cc/API/PaymentUtility/RiskControl',\r\n primaryKey: 'AccountId',\r\n },\r\n SAPApplication: {\r\n uriPath: '/cc/API/PaymentInstrument/SAPApplication',\r\n primaryKey: 'SAPApplicationId',\r\n },\r\n SAPApplicationLight: {\r\n uriPath: '/cc/API/PaymentInstrument/SAPApplicationLight',\r\n primaryKey: 'SAPApplicationId',\r\n },\r\n SAPApplicationByCustomerId: {\r\n uriPath: '/cc/API/PaymentInstrument/SAPApplicationByCustomerId',\r\n primaryKey: 'SAPApplicationId',\r\n },\r\n SAPCreditLimit: {\r\n uriPath: '/cc/API/PaymentInstrument/SAPCreditLimit',\r\n primaryKey: 'SAPId',\r\n },\r\n SAPHighestMonthlySpend: {\r\n uriPath: '/cc/API/PaymentInstrument/SAPHighestMonthlySpend',\r\n primaryKey: 'SAPId',\r\n },\r\n SAPLightInfo: {\r\n uriPath: '/cc/API/PaymentInstrument/SAPLightInfo',\r\n primaryKey: 'invoiceId',\r\n },\r\n SaveCouponStringForSignup: {\r\n uriPath: '/cc/API/Coupon/SaveCouponStringForSignup',\r\n primaryKey: 'couponString',\r\n },\r\n SearchAccountMap: {\r\n uriPath: '/cc/API/Customer/SearchAccountMap',\r\n },\r\n ServiceLevel: {\r\n uriPath: '/cc/API/Customer/ServiceLevel',\r\n },\r\n SetFCADomainStatus: {\r\n uriPath: '/cc/API/UKFCAVerification/SetFCADomainStatus',\r\n },\r\n SettingsEmailNotification: {\r\n uriPath: '/cc/Settings/EmailNotificationSettings',\r\n primaryKey: 'cid',\r\n },\r\n SettingsEmailNotificationCategory: {\r\n uriPath: '/cc/Settings/EmailNotificationCategorySettings',\r\n primaryKey: 'tuid',\r\n },\r\n SettingsUserPreference: {\r\n uriPath: '/cc/Settings/UserPreferences',\r\n primaryKey: 'AccountId',\r\n },\r\n SetXandrSellerDefaultPayment: {\r\n uriPath: '/cc/API/Payee/SetXandrSellerDefaultPayment',\r\n primaryKey: 'cid',\r\n },\r\n ShowLightBox: {\r\n uriPath: '/cc/Notifications/ShowLightBox',\r\n primaryKey: 'cid',\r\n },\r\n SignupAggreementOptions: {\r\n uriPath: '/Signup/AggreementOptions',\r\n primaryKey: 'countryCode',\r\n },\r\n SmartSignupAggreementOptions: {\r\n uriPath: '/Smart/Signup/AggreementOptions',\r\n primaryKey: 'countryCode',\r\n },\r\n SmartAccountStatus: {\r\n uriPath: '/cc/API/Customer/SmartAccountStatus',\r\n primaryKey: 'customerId',\r\n },\r\n SPAGetPaymentStatusAlerts: {\r\n uriPath: '/cc/Billing/SPAGetPaymentStatusAlerts',\r\n primaryKey: 'accountError',\r\n },\r\n StatusNotification: {\r\n uriPath: '/cc/Notifications/StatusNotifications',\r\n },\r\n SubmitBulkUnlinkAccounts: {\r\n uriPath: '/cc/managers/SubmitBulkUnlinkAccounts',\r\n primaryKey: 'ResultType',\r\n },\r\n SubmitPayeeToMDG: {\r\n uriPath: '/cc/API/Payee/SubmitPayeeToMDG',\r\n },\r\n SwitchPaymentSetting: {\r\n uriPath: '/BulkPaymentSettingSwitch/SwitchPaymentSetting',\r\n primaryKey: 'accountId',\r\n isSupportUIAPI: true,\r\n },\r\n TopUp: {\r\n uriPath: '/cc/Payment/TopUp',\r\n },\r\n TopUpLimit: {\r\n uriPath: '/cc/API/PaymentUtility/TopUpLimit',\r\n },\r\n TradeScreeningAccountEntity: {\r\n uriPath: '/cc/API/TradeScreeningTransformation/GridDataAccountEntity',\r\n primaryKey: 'Id',\r\n },\r\n TradeScreeningCustomerEntity: {\r\n uriPath: '/cc/API/TradeScreeningTransformation/GridDataCustomerEntity',\r\n primaryKey: 'Id',\r\n },\r\n TradeScreeningUserEntity: {\r\n uriPath: '/cc/API/TradeScreeningTransformation/GridDataUserEntity',\r\n primaryKey: 'Id',\r\n },\r\n TransactionHistory: {\r\n uriPath: '/cc/API/Billing/TransactionHistory',\r\n },\r\n UCPOfflineRefund: {\r\n uriPath: '/cc/API/UCPOfflineRefund',\r\n },\r\n UKFCAVerification: {\r\n uriPath: '/cc/API/UKFCAVerification',\r\n primaryKey: 'AccountId',\r\n },\r\n UnifiedQueueNotification: {\r\n uriPath: '/cc/API/Notifications/UnifiedQueueNotification',\r\n },\r\n UnifiedSmartAccountStatus: {\r\n uriPath: '/cc/API/Customer/UnifiedSmartAccountStatus',\r\n },\r\n UpdateAccountsInBillingGroup: {\r\n uriPath: '/cc/BillingGroup/UpdateAccountsInBillingGroup',\r\n },\r\n UpdateApiUserType: {\r\n uriPath: '/cc/API/DevCenter/UpdateApiUserType',\r\n primaryKey: 'Id',\r\n },\r\n User: {\r\n uriPath: '/cc/API/User',\r\n },\r\n UserRole: {\r\n uriPath: '/cc/API/User/UserRole',\r\n },\r\n UserPreference: {\r\n uriPath: '/cc/API/Preference/UserPreference',\r\n primaryKey: 'upkey',\r\n },\r\n ValidateCustomerNumbersForLinking: {\r\n uriPath: '/cc/Agency/ValidateCustomerNumbersForLinking',\r\n primaryKey: 'CustomerId',\r\n },\r\n ValidateXandrBafMembers: {\r\n uriPath: '/cc/API/XandrBaf/ValidateMembers',\r\n },\r\n VerifyBusinessAddress: {\r\n uriPath: '/cc/API/Address/VerifyBusinessAddress',\r\n },\r\n VerifyCustomerSpendRequirement: {\r\n uriPath: '/cc/API/Customer/VerifyCustomerSpendRequirement',\r\n },\r\n VerifyEmailTokenValidation: {\r\n uriPath: '/cc/API/EmailTokenValidation/VerifyEmailTokenValidation',\r\n primaryKey: 'accountId',\r\n },\r\n VerifySAPCustomerUniqueness: {\r\n uriPath: '/cc/API/PaymentInstrument/VerifySAPCustomerUniqueness',\r\n },\r\n VerifyTaxInformation: {\r\n uriPath: '/cc/API/Address/VerifyTaxInformation',\r\n },\r\n XandrAccount: {\r\n uriPath: '/cc/API/Account/XandrAccount',\r\n },\r\n XandrBaf: {\r\n uriPath: '/cc/API/XandrBaf',\r\n primaryKey: 'BAFId',\r\n },\r\n XandrBafMembers: {\r\n uriPath: '/cc/API/XandrBaf/BafMembers',\r\n primaryKey: 'BAFId',\r\n },\r\n XandrBafChangeRecord: {\r\n uriPath: '/cc/API/XandrBaf/ChangeRecord',\r\n primaryKey: 'BAFId',\r\n },\r\n XandrSellerBankAssociationProfile: {\r\n uriPath: '/cc/API/XandrSeller/BankAssociationProfile',\r\n primaryKey: 'cid',\r\n },\r\n XandrSellerBankAssociationRelationship: {\r\n uriPath: '/cc/API/XandrSeller/BankAssociationRelationship',\r\n primaryKey: 'piId',\r\n },\r\n YahooToken: {\r\n uriPath: '/TokenExchange/Yahoo',\r\n primaryKey: 'token',\r\n },\r\n};\r\n","import _ from 'underscore';\r\nimport Promise from 'bluebird';\r\n\r\nconst preloadJsDataCache = ({ jsData, cid, aid }) => {\r\n const preloadList = [\r\n ...(cid ? [jsData.Customer.find(cid)] : []),\r\n ...(aid ? [jsData.Account.find(aid)] : []),\r\n ];\r\n\r\n return Promise.all(preloadList);\r\n};\r\n\r\n/**\r\n * Description of the function\r\n * @name PreloadCallback\r\n * @function\r\n * @param {object} options - options\r\n * @param {object} options.jsData - jsData object\r\n * @param {number|string} [options.cid] - customer id\r\n * @param {number|string} [options.aid] - account id\r\n*/\r\n\r\n/**\r\n * Clear the specified entities' jsData cache, then immediately preload some entities.\r\n * This function is designed for clearing dirty cache after entity update.\r\n * @function\r\n * @param {object} options - options\r\n * @param {object} options.jsData - jsData object\r\n * @param {number|string} [options.cid] - customer id to preload\r\n * @param {number|string} [options.aid] - account id to preload\r\n * @param {string[]} [options.entitiesToClear=[]] - the specified entities to clear, for example ['Account', 'Customer']. empty means clear all entities.\r\n * @param {PreloadCallback} [options.preloadCallback=null] - the custom preload callback. If not specified, Account and Customer will be preloaded.\r\n * @returns {Promise} - The preload Promise, it will resolve { ready: true }\r\n */\r\nexport const refreshJsDataCache = ({\r\n jsData,\r\n cid,\r\n aid,\r\n entitiesToClear = [],\r\n preloadCallback = null,\r\n}) => {\r\n if (_.isEmpty(entitiesToClear)) {\r\n // Clear the whole JsData store cache\r\n _.each(jsData, entityObj => entityObj && entityObj.ejectAll());\r\n } else {\r\n // Clear the specified entities' cache as required\r\n _.each(entitiesToClear, entity => jsData[entity] && jsData[entity].ejectAll());\r\n }\r\n\r\n // by default preload customer data and account data\r\n const preloadCallbackFunc = preloadCallback || preloadJsDataCache;\r\n\r\n return preloadCallbackFunc({ jsData, cid, aid }).then(() => ({ ready: true }));\r\n};\r\n","module.exports = __WEBPACK_EXTERNAL_MODULE__70__;","export * from './src/adjustment-reason-utils';\r\nexport * from './src/country-utils';\r\nexport * from './src/currency-utils';\r\nexport * from './src/customer-utils';\r\nexport * from './src/permission-utils';\r\nexport * from './src/user-preference-utils';\r\nexport * from './src/payment-utils';\r\nexport * from './src/account-feature-utils';\r\n","import _ from 'underscore';\r\nimport Promise from 'bluebird';\r\nimport { AdjustmentsUtils } from '@bingads-webui-clientcenter/entity-utils';\r\n\r\nlet newAdjustmentReasons;\r\n\r\n/**\r\n * @type {reason}\r\n * @param {number} reason.id Adjustment reason id\r\n * @param {string} reason.value Adjustment reason localized value\r\n */\r\n\r\n/**\r\n * Get the reasons from MT domainData by calling API/DomainData/AdjustmentReasonMapping\r\n * Returns reasons array after format them with a localized value and add the default None reason.\r\n * @param {object} jsDataCcRest jsData object\r\n * @param {object} i18n i18n\r\n * @returns {promise} The formatted reasons\r\n */\r\nexport const findNewAdjustmentReasons = (jsDataCcRest, i18n) => {\r\n if (_.isUndefined(newAdjustmentReasons)) {\r\n return jsDataCcRest.DomainDataAdjustmentReason.findAll().then((reasons) => {\r\n newAdjustmentReasons = AdjustmentsUtils.mapNewAdjustmentReasons(reasons, i18n);\r\n return newAdjustmentReasons;\r\n });\r\n }\r\n\r\n return Promise.resolve(newAdjustmentReasons);\r\n};\r\n","import _ from 'underscore';\r\nimport Promise from 'bluebird';\r\nimport { CountryUtils, Constants } from '@bingads-webui-clientcenter/entity-utils';\r\n\r\nlet sortedCountries;\r\n\r\n/**\r\n * @type {country}\r\n * @param {string} country.Name Country localized name\r\n * @param {string} country.Code Country code\r\n * @param {string} country.CountryCallingCode Country calling code\r\n * @param {string} country.Currency Country currency\r\n * @param {number} country.Id Country id\r\n * @param {boolean} country.IsAddressRequired It indicates if country's address required\r\n * @param {boolean} country.IsVatApplicable It indicates if country's VAT applicable\r\n * @param {boolean} country.IsPaperlessBillingAllowed It indicates if country allow paperless billing\r\n */\r\n\r\n/**\r\n * Get countries from MT domainData by calling controller: API/DomainData/CountryMapping\r\n * And sort country list by localiazed country name\r\n * @param {object} jsDataCcRest jsData object\r\n * @returns {promise} The formatted countries\r\n */\r\nexport const findCountries = (jsDataCcRest) => {\r\n if (_.isUndefined(sortedCountries)) {\r\n return jsDataCcRest.DomainDataCountry.findAll().then((countries) => {\r\n sortedCountries = CountryUtils.sortCountries(_.pluck(countries, 'value'));\r\n return sortedCountries;\r\n });\r\n }\r\n return Promise.resolve(sortedCountries);\r\n};\r\n\r\n/**\r\n * Get countries from MT domainData by calling controller: API/DomainData/CountryMapping\r\n * Group country list by calling code and sort by localiazed country name\r\n * @param {object} jsDataCcRest jsData object\r\n * @returns {promise} The formatted countries\r\n */\r\nexport const findCountriesGroupByCallingCode = jsDataCcRest => findCountries(jsDataCcRest).then((countries) => {\r\n const groupedCountries = CountryUtils.groupCountriesByCallingCode(countries);\r\n return CountryUtils.sortCountries(groupedCountries);\r\n});\r\n\r\n/**\r\n * Get allowedCountries mapping by accountMode\r\n * @param {object} jsDataCcRest jsData object\r\n * @returns {promise} The accountMode allowedCountries mapping\r\n */\r\nexport const getAllowedCountriesByAccountModeMapping = jsDataCcRest =>\r\n jsDataCcRest.CountryMapping.findAll().then((countries) => {\r\n const escCountries = _.chain(countries)\r\n .pluck('value')\r\n .filter(c => c.HasESCSupport)\r\n .pluck('Code')\r\n .value();\r\n\r\n return _.any(escCountries)\r\n ? { [Constants.AccountMode.UnifiedSmart]: escCountries }\r\n : {};\r\n });\r\n","import _ from 'underscore';\r\nimport Promise from 'bluebird';\r\nimport { CurrencyUtils } from '@bingads-webui-clientcenter/entity-utils';\r\n\r\nlet sortedCurrencies;\r\n\r\n/**\r\n * @type {currency}\r\n * @param {string} currency.DisplayName Currency localized name\r\n * @param {string} currency.Code Currency code\r\n * @param {number} currency.ControlledCurrencyCountryId Controlled currency country id\r\n * @param {number} currency.Id Currency id\r\n */\r\n\r\n/**\r\n * Get currencies from MT domainData by calling controller: API/DomainData/Currency\r\n * @param {object} jsDataCcRest jsData object\r\n * @returns {promise} The formatted currencies\r\n */\r\nexport const findCurrencies = (jsDataCcRest) => {\r\n if (_.isUndefined(sortedCurrencies)) {\r\n return jsDataCcRest.DomainDataCurrency.findAll().then((currencies) => {\r\n sortedCurrencies = CurrencyUtils.sortCurrencies(_.pluck(currencies, 'value'));\r\n return sortedCurrencies;\r\n });\r\n }\r\n return Promise.resolve(sortedCurrencies);\r\n};\r\n","import Promise from 'bluebird';\r\nimport { CustomerUtils } from '@bingads-webui-clientcenter/entity-utils';\r\n\r\n/**\r\n * CustomerProfileModel holds a list profile properties for a customer.\r\n * @typedef {object} CustomerProfileModel\r\n * @property {number} [numberOfBillToInvoiceAccounts]\r\n * @property {number} [numberOfBillToPrepayAccounts]\r\n * @property {number} [numberOfBillToThresholdAccounts]\r\n * @property {bool} [isOptedInConsolidatedBilling]\r\n * @property {bool} [isOptedInCampaignDetails]\r\n * @property {number} [totalNumberOfBillToAccounts]\r\n */\r\n\r\n/**\r\n * Get customer profile on given actions by calling /API/Customer/Profile\r\n * @param {object} jsDataCcRest jsData object\r\n * @param {String|Number} customerId The customer id\r\n * @returns {Promise} An object with { actionName : value } where value is a boolean indication if the actionName is authorized or not\r\n */\r\nexport const getCustomerProfile = (jsDataCcRest, customerId) => {\r\n if (parseInt(customerId, 10) >= 0) {\r\n return jsDataCcRest.CustomerProfile.find(customerId)\r\n .then(customerProfile => CustomerUtils.parseCustomerProfile(customerProfile));\r\n }\r\n\r\n return Promise.resolve(null);\r\n};\r\n","import _ from 'underscore';\r\nimport Promise from 'bluebird';\r\nimport { PermissionUtils } from '@bingads-webui-clientcenter/entity-utils';\r\nimport { NumberUtils } from '@bingads-webui-clientcenter/common-utils';\r\n\r\nconst { isValidWholeNumber } = NumberUtils;\r\n\r\n/**\r\n * Get account permission on given actions by calling /API/Permission/Account\r\n * @function\r\n * @param {object} jsDataCcRest jsData object\r\n * @param {object} options options\\\r\n * @param {Boolean} options.params optional params, e.g. { params: { cid } } for calls in support pages\r\n * @param {String|Number} options.accountId The account id\r\n * @param {String|Number} options.customerId The customer id required to check account permission, for example, checking\r\n * PaymentInstrumentAction requires account's billToCustomerId. No need to pass in it if no customer id is required to\r\n * check account permission.\r\n * @param {Array} options.securityActions List of actions\r\n * @returns {Promise} An object with { actionName : value } where value is a boolean indication if the actionName is authorized or not\r\n */\r\nexport const getAccountPermission = (jsDataCcRest, {\r\n accountId, customerId, securityActions, params = {},\r\n}) => {\r\n if (isValidWholeNumber(accountId) && !_.isEmpty(securityActions)) {\r\n return jsDataCcRest.PermissionAccount.findAll({ accountId, customerId, securityActions }, params)\r\n .then(permissions => PermissionUtils.getPermissionMap(permissions));\r\n }\r\n\r\n return Promise.resolve({});\r\n};\r\n\r\n/**\r\n * Get current user's permission on customer actions by calling /API/Permission/Customer\r\n * @function\r\n * @param {object} jsDataCcRest jsData object\r\n * @param {object} options options\r\n * @param {String|Number} options.customerId The customer id\r\n * @param {Array} options.securityActions List of actions\r\n * @returns {Promise} An object with { actionName : value } where value is a boolean indication if the actionName is authorized or not\r\n */\r\nexport const getCustomerPermission = (jsDataCcRest, { customerId, securityActions }) => {\r\n if (isValidWholeNumber(customerId) && !_.isEmpty(securityActions)) {\r\n return jsDataCcRest.PermissionCustomer.findAll({ customerId, securityActions })\r\n .then(permissions => PermissionUtils.getPermissionMap(permissions));\r\n }\r\n\r\n return Promise.resolve({});\r\n};\r\n","import _ from 'underscore';\r\nimport Promise from 'bluebird';\r\n\r\n/**\r\n * Get the user preference. Sever side will try to load from cache if any.\r\n * @param {object} jsDataCcRest jsData object\r\n * @param {String|Number} userId current user Id.\r\n * @returns {Promise} An object of user preference data.\r\n */\r\nconst BIDateRangeFilterKey = 18190;\r\n\r\nexport const getUserPreference = (jsDataCcRest, { userId, logging }) => {\r\n if (userId) {\r\n return jsDataCcRest.UserPreference.findAll({ uid: userId })\r\n .then((data) => {\r\n if (data && data.length) {\r\n try {\r\n const biDateRangeFilter = _.find(data, userPreference => userPreference.upkey === BIDateRangeFilterKey);\r\n /* istanbul ignore else */\r\n if (biDateRangeFilter && biDateRangeFilter.resultAsJsonString) {\r\n const preferenceJson = JSON.parse(decodeURIComponent(biDateRangeFilter.resultAsJsonString));\r\n /* istanbul ignore else */\r\n if (preferenceJson.BIDateRangeFilter) {\r\n return JSON.parse(preferenceJson.BIDateRangeFilter);\r\n }\r\n }\r\n } catch (e) {\r\n // ignore else branch coverage because it should be rarely hit\r\n /* istanbul ignore else */\r\n if (e instanceof SyntaxError) {\r\n if (logging && logging.trace) {\r\n logging.trace('getUserPreference', `resultAsJsonString JSON parse failed: ${e}`);\r\n }\r\n } else {\r\n throw e;\r\n }\r\n }\r\n }\r\n return undefined;\r\n });\r\n }\r\n\r\n return Promise.resolve({});\r\n};\r\n","import _ from 'underscore';\r\nimport { Constants } from '@bingads-webui-clientcenter/entity-utils';\r\n\r\nconst { AllowedAgencyPITypes } = Constants;\r\n\r\n/**\r\n * Verify SAP Customer is unique\r\n * @param {object} jsDataCcRest jsData object\r\n * @param {string} legalBusinessName the legal business name\r\n * @param {string} countryCode the country code, eg: US\r\n * @returns {promise} a boolean indicating if the SAP customer is unique\r\n */\r\nexport const isSAPCustomerUnique = (jsDataCcRest, legalBusinessName, countryCode) => {\r\n const id = `${legalBusinessName}_${countryCode}`;\r\n return jsDataCcRest.VerifySAPCustomerUniqueness.find(id, {\r\n params: {\r\n legalBusinessName,\r\n countryCode,\r\n },\r\n bypassCache: true,\r\n }).then(({ value }) => value);\r\n};\r\n\r\n/**\r\n * Returns a list of payment instruments for the given agency customer id\r\n * @function\r\n * @param {object} jsDataCcRest jsData object\r\n * @param {number} agencyCustomerId The Id of the agency\r\n * @return {Promise>} The payment instrument list\r\n */\r\nexport const getAgencyPaymentInstruments = (jsDataCcRest, agencyCustomerId) => jsDataCcRest.PaymentInstrument\r\n .findAll({ customerId: agencyCustomerId })\r\n .then(paymentInstruments => _.chain(paymentInstruments)\r\n .filter(pi => _.contains(AllowedAgencyPITypes, pi.Type))\r\n .value());\r\n\r\n\r\n/**\r\n * Returns the account's primary payment instrument\r\n * For some cases MT will throw error, so `catch` is needed\r\n * @function\r\n * @param {object} jsDataCcRest jsData object\r\n * @param {object} args The argument\r\n * @property {number} accountId The Id of the account\r\n * @return {Promise} The payment instrument\r\n */\r\nexport const getAccountPrimaryPaymentInstr = (jsDataCcRest, { accountId }) => jsDataCcRest.Account.find(accountId)\r\n .then((account) => {\r\n if (account && account.PreferredBillToPaymentInstrumentId > 0) {\r\n return jsDataCcRest.PaymentInstrument.find(account.PreferredBillToPaymentInstrumentId);\r\n }\r\n\r\n return null;\r\n })\r\n .catch(() => null);\r\n","import Promise from 'bluebird';\r\nimport { Constants } from '@bingads-webui-clientcenter/entity-utils';\r\nimport { NumberUtils } from '@bingads-webui-clientcenter/common-utils';\r\n\r\nconst { isValidWholeNumber } = NumberUtils;\r\nconst { AccountFeaturePilots } = Constants;\r\n\r\n/**\r\n * Check if a feature is enabled for a particular account\r\n * @function\r\n * @param {object} jsDataCcRest jsData object\r\n * @param {object} options options\r\n * @param {String|Number} options.accountId account id\r\n * @param {String|Number} options.cid customer id\r\n * @param {string} options.featureName name of the feature to look up\r\n * @returns {Promise} A boolean value indication if the feature is enabled or not\r\n */\r\nexport const getAccountSingleFeatureStatus = (jsDataCcRest, { accountId, cid, featureName }) => {\r\n if (!isValidWholeNumber(accountId)) {\r\n return Promise.resolve(null);\r\n }\r\n\r\n // in support pages, cid has to be manually added\r\n const options = (cid !== undefined && isValidWholeNumber(cid)) ? { params: { cid } } : undefined;\r\n\r\n return jsDataCcRest.AccountFeatureSet.find(accountId, options)\r\n .then(res => res.features[AccountFeaturePilots[featureName]]);\r\n};\r\n","module.exports = __WEBPACK_EXTERNAL_MODULE__71__;","import _ from 'underscore';\r\nimport { FileUtils } from '@bingads-webui-clientcenter/common-utils';\r\nimport Http from './http';\r\n\r\nconst { buildFormData } = FileUtils;\r\n\r\nexport const convertToFormData = data => (data instanceof FormData ? data : buildFormData(new FormData(), data));\r\n\r\nconst finalOptions = (data, options) => {\r\n // If used by File Upload then do not JSONStringify data nor set the contentType\r\n const useFormDataFormat = options && options.useFormDataFormat;\r\n let defaultOptions;\r\n\r\n if (useFormDataFormat) {\r\n // Refer to https://stackoverflow.com/questions/19617996/file-upload-without-form/26690647#26690647\r\n defaultOptions = {\r\n data: convertToFormData(data),\r\n processData: false,\r\n contentType: false,\r\n dataType: 'json',\r\n };\r\n } else if (!_.isString(data)) {\r\n defaultOptions = {\r\n data: JSON.stringify(data),\r\n contentType: 'application/json',\r\n dataType: 'json',\r\n };\r\n } else {\r\n defaultOptions = {\r\n data,\r\n dataType: 'json',\r\n };\r\n }\r\n\r\n return _.defaults({}, options, defaultOptions);\r\n};\r\n\r\nexport class RestfulService {\r\n /**\r\n * Constructor for restful service\r\n * @param {Function} cidFetcher - method for getting the cid - this is a method so that it can handle the cid changing\r\n * @param {Function} uidFetcher - method for getting the uid - this is a method so that it can handle the uid changing\r\n * @param {Object} ccuiAlertCenter - if in use, the alert center to show alerts in\r\n * @param {Function} handleAjaxAuthFailure - method for handling AjaxAuthFailures\r\n * @param {Function} appendErrorSummary - method for adding errors\r\n * @param {Function} ajaxSuccess - method to use when ajax call was successful\r\n * @param {Boolean} willSupportCors - when true, it'll add a xhrFields.withCredentials=true and x-requested-with=xhr by default\r\n */\r\n constructor({\r\n cidFetcher,\r\n uidFetcher,\r\n ccuiAlertCenter,\r\n handleAjaxAuthFailure,\r\n appendErrorSummary,\r\n ajaxSuccess,\r\n willSupportCors = true,\r\n } = {}) {\r\n this.http = new Http({\r\n cidFetcher,\r\n uidFetcher,\r\n ccuiAlertCenter,\r\n handleAjaxAuthFailure,\r\n appendErrorSummary,\r\n ajaxSuccess,\r\n willSupportCors,\r\n });\r\n }\r\n\r\n get = (uri, options = {}) => {\r\n const settings = _.defaults({}, options, { dataType: 'json' });\r\n\r\n return this.http.get(uri, settings);\r\n };\r\n\r\n post = (uri, attrs = {}, options = {}) => {\r\n const settings = finalOptions(attrs, options);\r\n\r\n return this.http.post(uri, settings);\r\n };\r\n\r\n put = (uri, attrs = {}, options = {}) => {\r\n const settings = finalOptions(attrs, options);\r\n\r\n return this.http.put(uri, settings);\r\n };\r\n\r\n patch = (uri, attrs = {}, options = {}) => {\r\n const settings = finalOptions(attrs, options);\r\n\r\n return this.http.patch(uri, settings);\r\n };\r\n\r\n delete = (uri, options = {}) => {\r\n const settings = _.defaults({}, options, { dataType: 'json' });\r\n\r\n return this.http.delete(uri, settings);\r\n };\r\n}\r\n","/* eslint no-param-reassign: 0 */\r\nimport _ from 'underscore';\r\nimport Promise from 'bluebird';\r\nimport URI from 'urijs';\r\n\r\nimport { http } from '@bingads-webui/http-util';\r\n\r\nimport AjaxHelper from './ajax-helper';\r\n\r\nconst defaultSetting = {\r\n __adcenterAJAX: true,\r\n data: {},\r\n contentType: 'application/json',\r\n dataType: null,\r\n onsuccessEventData: {},\r\n traditional: false,\r\n silent: false,\r\n};\r\n\r\nconst antiForgeryTokenKey = '__RequestVerificationToken';\r\n\r\nfunction addAntiForgeryToken(options) {\r\n const antiForgeryTokenInput = document.querySelector(`input[name=\"${antiForgeryTokenKey}\"]`);\r\n const antiForgeryToken = antiForgeryTokenInput && antiForgeryTokenInput.value;\r\n const method = _.result(options.method, 'toUpperCase');\r\n\r\n if (antiForgeryToken) {\r\n switch (options.contentType) {\r\n case 'application/json':\r\n options.headers = _.extend({}, options.headers, { [antiForgeryTokenKey]: antiForgeryToken });\r\n break;\r\n case 'application/x-www-form-urlencoded':\r\n if (method && method !== 'GET' && method !== 'DELETE') {\r\n options.data = _.extend({}, options.data, { [antiForgeryTokenKey]: antiForgeryToken });\r\n }\r\n break;\r\n case false:\r\n if (options.useFormDataFormat && options.data instanceof FormData && !options.data.get(antiForgeryTokenKey)) {\r\n options.data.append(antiForgeryTokenKey, antiForgeryToken);\r\n }\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n}\r\n\r\nfunction appendQuery(uri, options, defaultValue) {\r\n let param = _.isObject(options.params) ? options.params : {};\r\n\r\n param = _.defaults(param, defaultValue);\r\n return new URI(uri).addQuery(param).toString();\r\n}\r\n\r\nexport default class {\r\n constructor({\r\n cidFetcher,\r\n uidFetcher,\r\n ccuiAlertCenter,\r\n handleAjaxAuthFailure,\r\n appendErrorSummary,\r\n ajaxSuccess,\r\n willSupportCors = false,\r\n }) {\r\n this.cidFetcher = cidFetcher;\r\n this.uidFetcher = uidFetcher;\r\n this.willSupportCors = willSupportCors;\r\n\r\n this.ajaxHelper = new AjaxHelper({\r\n ccuiAlertCenter,\r\n handleAjaxAuthFailure,\r\n appendErrorSummary,\r\n ajaxSuccess,\r\n });\r\n }\r\n\r\n ajax = (uri, options, cb) => {\r\n const extendedOptions = _.defaults(\r\n {},\r\n options,\r\n defaultSetting\r\n );\r\n\r\n if (this.willSupportCors === true) {\r\n const defaultCorsHeaders = { 'X-Requested-With': 'XMLHttpRequest' };\r\n extendedOptions.headers = _.extend({}, defaultCorsHeaders, extendedOptions.headers);\r\n\r\n const defaultCorsXhrFields = { withCredentials: true };\r\n extendedOptions.xhrFields = _.extend({}, defaultCorsXhrFields, extendedOptions.xhrFields);\r\n }\r\n\r\n addAntiForgeryToken(extendedOptions);\r\n\r\n extendedOptions.beforeSend = this.ajaxHelper.beforeSend(extendedOptions);\r\n extendedOptions.success = this.ajaxHelper.success(extendedOptions);\r\n extendedOptions.error = this.ajaxHelper.error(extendedOptions);\r\n extendedOptions.complete = this.ajaxHelper.complete(extendedOptions);\r\n\r\n const cidUidQueryParam = {};\r\n if (_.isFunction(this.cidFetcher)) {\r\n const cid = this.cidFetcher();\r\n _.extend(cidUidQueryParam, { cid });\r\n }\r\n if (_.isFunction(this.uidFetcher)) {\r\n const uid = this.uidFetcher();\r\n _.extend(cidUidQueryParam, { uid });\r\n }\r\n // append cid and uid to the url\r\n const integrateUri = appendQuery(uri, extendedOptions, cidUidQueryParam);\r\n\r\n return http.ajax(integrateUri, extendedOptions, cb)\r\n .then(res => (res.Errors ? Promise.reject(res) : Promise.resolve(res)));\r\n };\r\n\r\n defaults = options => (...params) => {\r\n const [url, opt, callback] = http.signature(params);\r\n const op = _.defaults({}, opt, options);\r\n\r\n return this.ajax(url, op, callback);\r\n };\r\n\r\n get = this.defaults({ method: 'get' });\r\n put = this.defaults({ method: 'put' });\r\n post = this.defaults({ method: 'post' });\r\n patch = this.defaults({ method: 'patch' });\r\n delete = this.defaults({ method: 'delete' });\r\n}\r\n","module.exports = __WEBPACK_EXTERNAL_MODULE__524__;","import _ from 'underscore';\r\n\r\nexport default class {\r\n constructor({\r\n ccuiAlertCenter,\r\n handleAjaxAuthFailure = _.noop,\r\n appendErrorSummary = _.noop,\r\n ajaxSuccess = _.noop,\r\n } = {}) {\r\n this.ccuiAlertCenter = ccuiAlertCenter;\r\n this.handleAjaxAuthFailure = handleAjaxAuthFailure;\r\n this.appendErrorSummary = appendErrorSummary;\r\n this.ajaxSuccess = ajaxSuccess;\r\n }\r\n\r\n beforeSend = options => _.wrap(options.beforeSend, (func, xhr) => {\r\n if (options.useAlertCenter && this.ccuiAlertCenter && options.alertId) {\r\n this.ccuiAlertCenter.dismiss(options.alertId);\r\n }\r\n\r\n if (_.isFunction(func)) {\r\n func(xhr);\r\n }\r\n });\r\n\r\n success = options => _.wrap(options.onSuccess, (func, data, textStatus, xhr) => {\r\n this.handleAjaxAuthFailure(data);\r\n if (options.useAlertCenter && options.alertId) {\r\n if (data && this.ccuiAlertCenter) {\r\n if (!_.isEmpty(data.Errors)) {\r\n this.ccuiAlertCenter.appendWarning(data.Errors, options.alertId);\r\n } else if (!_.isEmpty(data.Info)) {\r\n this.ccuiAlertCenter.appendInfo(data.Info, options.alertId);\r\n } else if (!_.isEmpty(data.Confirmation)) {\r\n this.ccuiAlertCenter.appendSuccess(data.Confirmation, options.alertId);\r\n }\r\n }\r\n } else if (data && !_.isEmpty(data.Errors)) {\r\n if (_.isFunction(options.onJsonError)) {\r\n options.onJsonError(data, textStatus, xhr);\r\n } else {\r\n this.appendErrorSummary(data.Errors);\r\n }\r\n } else if (data && !_.isEmpty(data.Alert)) {\r\n this.ajaxSuccess(data);\r\n }\r\n\r\n if (_.isFunction(func)) {\r\n func(data, textStatus, options.data, options.onsuccessEventData, xhr);\r\n }\r\n });\r\n\r\n error = options => _.wrap(options.onAjaxError, (func, xhr, textStatus, errorThrown) => {\r\n if (_.isFunction(func)) {\r\n func(xhr, textStatus, errorThrown);\r\n }\r\n });\r\n\r\n complete = options => _.wrap(options.onAjaxComplete, (func, xhr, textStatus) => {\r\n if (_.isFunction(func)) {\r\n func(xhr, textStatus);\r\n }\r\n });\r\n}\r\n","import _ from 'underscore';\r\n\r\nimport getUrlBuilders from './url-builder';\r\nimport * as UrlHelper from './url-helper';\r\n\r\nconst getUrlHelpers = ({\r\n ccBaseUrl, FwLinkBaseUrl, CampaignAzureDomain, cid, uid,\r\n}) => ({\r\n ..._.omit(UrlHelper, 'getTermsAndConditionsUrl'),\r\n TermsAndConditionsUrl: UrlHelper.getTermsAndConditionsUrl(ccBaseUrl),\r\n getForwardLink: _.partial(UrlHelper.getForwardLink, FwLinkBaseUrl),\r\n getErrorPageUrl: _.partial(UrlHelper.getErrorPageUrl, ccBaseUrl),\r\n getSAPApplicationSupportingDocumentUrl: _.partial(UrlHelper.getSAPApplicationSupportingDocumentUrl, ccBaseUrl, cid, uid),\r\n getAccountTaxCertificationUrl: _.partial(UrlHelper.getAccountTaxCertificationUrl, ccBaseUrl, cid, uid),\r\n getCampaignPageUrl: _.partial(UrlHelper.getCampaignPageUrl, CampaignAzureDomain),\r\n});\r\n\r\nexport {\r\n getUrlBuilders,\r\n getUrlHelpers,\r\n UrlHelper,\r\n};\r\n","import URI from 'urijs';\r\nimport _ from 'underscore';\r\nimport { appendRedirectUrl } from './url-helper';\r\n\r\nexport const separator = '/';\r\nconst ccBaseShortUrl = '/cc/';\r\nconst ccBaseShortUrlWithoutCC = '/';\r\n\r\n// eslint-disable-next-line func-names\r\nexport default function ({\r\n getDefaultIsShortUrl,\r\n aidFetcher = _.noop,\r\n cidFetcher = _.noop,\r\n uidFetcher = _.noop,\r\n ccBaseUrl,\r\n}) {\r\n const ccBaseUrlWithoutCC = ccBaseUrl.indexOf('cc/') === ccBaseUrl.length - 3 ? ccBaseUrl.slice(0, -3) : ccBaseUrl;\r\n\r\n const createClientCenterUri = (controllerName, actionNames, isShortUrl) => {\r\n const isShortUrlValue = _.isBoolean(isShortUrl) ? isShortUrl : getDefaultIsShortUrl();\r\n const uri = new URI(isShortUrlValue ? ccBaseShortUrl : ccBaseUrl);\r\n\r\n // After uri.segment(), the path will not ends with '/'\r\n return uri.segment([controllerName, ...actionNames].join(separator));\r\n };\r\n\r\n const appendContextParams = (uri, contextQuery) => {\r\n const cid = cidFetcher();\r\n if (cid) {\r\n _.defaults(contextQuery, { cid });\r\n }\r\n\r\n const aid = aidFetcher();\r\n if (aid) {\r\n _.defaults(contextQuery, { aid });\r\n }\r\n\r\n const uid = uidFetcher();\r\n if (uid) {\r\n _.defaults(contextQuery, { uid });\r\n }\r\n\r\n return uri.setSearch(contextQuery);\r\n };\r\n\r\n let BaseUrlBuilder;\r\n\r\n const appendHash = (uri, hash) => {\r\n if (!(hash instanceof BaseUrlBuilder)) {\r\n throw new Error('Error: hash should be an object of UrlBuilder');\r\n }\r\n\r\n return uri.hash(hash.shortUrl);\r\n };\r\n\r\n const getCustomerUrl = ({\r\n controllerName,\r\n actionNames,\r\n params = {},\r\n hash,\r\n rurl,\r\n isShortUrl,\r\n }) => {\r\n let uri = createClientCenterUri(controllerName, actionNames, isShortUrl);\r\n\r\n uri = appendContextParams(uri, params);\r\n\r\n if (rurl) {\r\n uri = appendRedirectUrl(uri, rurl);\r\n }\r\n\r\n if (hash) {\r\n uri = appendHash(uri, hash);\r\n }\r\n\r\n return uri;\r\n };\r\n /*\r\n * AbstractUrlBuilder - Builder of Url which can handle clientcenter and other urls\r\n * @function constructor(function getUrlMethod) getUrlMethod - is method to generate the url\r\n * @function params(object paramsPairs) paramsPairs - is a pair list of {parameter name: value}\r\n * @function rurl(string rurl) rurl - is a url string which indicates the redirect url\r\n * @getter instance - the instance of URI\r\n * @getter url - the string of url based on ccBaseUrl\r\n * @getter shortUrl - the string of short url without domain name, can be used in hash\r\n */\r\n class AbstractUrlBuilder {\r\n constructor(getUrlMethod, configs = {}) {\r\n this.getUrlMethod = getUrlMethod;\r\n this.configs = configs;\r\n }\r\n\r\n params = (paramsPairs) => {\r\n _.extend(this.configs, { params: paramsPairs });\r\n return this;\r\n };\r\n\r\n rurl(rurl) {\r\n _.extend(this.configs, { rurl });\r\n return this;\r\n }\r\n\r\n get instance() {\r\n return this.getUrlMethod(this.configs);\r\n }\r\n\r\n get url() {\r\n return this.instance.toString();\r\n }\r\n\r\n get absoluteUrl() {\r\n return this.getUrlMethod(_.defaults({ isShortUrl: false }, this.configs)).toString();\r\n }\r\n\r\n get shortUrl() {\r\n return this.getUrlMethod(_.defaults({ isShortUrl: true }, this.configs)).toString();\r\n }\r\n }\r\n\r\n /*\r\n * BaseUrlBuilder - the builder of url, will append cid, aid, and uid from PageContext automatically\r\n * @function constructor(string controllerName) controllerName - is the controller name of the url\r\n * @function action(string actionNames) actionName - add an action name to the url\r\n * @function hash(UrlBuilder hashUrlBuilder) hashUrlBuilder - must be a BaseUrlBuilder object which indicate the hash url\r\n * @function withoutAid() - erase the aid from url\r\n */\r\n BaseUrlBuilder = class extends AbstractUrlBuilder {\r\n constructor(controllerName, configs) {\r\n super(getCustomerUrl, _.extend({}, { controllerName, actionNames: [] }, configs));\r\n }\r\n\r\n action(actionName) {\r\n _.extend(this.configs, { actionNames: [...this.configs.actionNames, actionName] });\r\n return this;\r\n }\r\n\r\n hash(hashUrlBuilder) {\r\n _.extend(this.configs, { hash: hashUrlBuilder });\r\n return this;\r\n }\r\n\r\n withoutAid() {\r\n this.configs.params = _.extend({}, this.configs.params, { aid: '' });\r\n return this;\r\n }\r\n };\r\n\r\n /**\r\n * Build the account settings page url\r\n * @constructor\r\n */\r\n class AccountSettingsUrlBuilder extends BaseUrlBuilder {\r\n constructor(configs) {\r\n super('settings/account', configs);\r\n }\r\n }\r\n\r\n /**\r\n * Build the edit account settings page url\r\n * @constructor\r\n */\r\n class AccountSettingsEditUrlBuilder extends BaseUrlBuilder {\r\n constructor(configs) {\r\n super('settings/account/edit', configs);\r\n }\r\n }\r\n\r\n /**\r\n * Build the accounts page url\r\n * @constructor\r\n */\r\n class AccountsUrlBuilder extends BaseUrlBuilder {\r\n constructor(configs) {\r\n super('accounts', configs);\r\n }\r\n }\r\n\r\n /**\r\n * Build the account page url\r\n * @constructor\r\n */\r\n class AccountUrlBuilder extends BaseUrlBuilder {\r\n constructor(configs) {\r\n super('account', configs);\r\n }\r\n }\r\n\r\n /**\r\n * Build the adjustments page url\r\n * @constructor\r\n */\r\n class AdjustmentsUrlBuilder extends BaseUrlBuilder {\r\n constructor(configs) {\r\n super('adjustments', configs);\r\n }\r\n }\r\n\r\n /**\r\n * Build the agency page url\r\n * @constructor\r\n */\r\n class AgencyUrlBuilder extends BaseUrlBuilder {\r\n constructor(configs) {\r\n super('agency', configs);\r\n }\r\n }\r\n\r\n /**\r\n * Build the billing page url\r\n * @constructor\r\n */\r\n class BillingUrlBuilder extends BaseUrlBuilder {\r\n constructor(configs) {\r\n super('billing', configs);\r\n }\r\n }\r\n\r\n /**\r\n * Build the boleto page url\r\n * @constructor\r\n */\r\n class BoletoUrlBuilder extends BaseUrlBuilder {\r\n constructor(configs) {\r\n super('boleto', configs);\r\n }\r\n }\r\n\r\n /**\r\n * Build the creditHold page url\r\n * @constructor\r\n */\r\n class CreditHoldUrlBuilder extends BaseUrlBuilder {\r\n constructor(configs) {\r\n super('creditHold', configs);\r\n }\r\n }\r\n\r\n /**\r\n * Build the customers page url\r\n * @constructor\r\n */\r\n class CustomersUrlBuilder extends BaseUrlBuilder {\r\n constructor(configs) {\r\n super('customers', configs);\r\n }\r\n }\r\n\r\n /**\r\n * Build the manager account settings page url\r\n * @constructor\r\n */\r\n class ManagerAccountSettingsUrlBuilder extends BaseUrlBuilder {\r\n constructor(configs) {\r\n super('settings/manageraccount', configs);\r\n }\r\n }\r\n\r\n /**\r\n * Build the manager account settings page url\r\n * @constructor\r\n */\r\n class ManagerAccountSettingsEditUrlBuilder extends BaseUrlBuilder {\r\n constructor(configs) {\r\n super('settings/manageraccount/edit', configs);\r\n }\r\n }\r\n\r\n /**\r\n * Build the managers page url\r\n * @constructor\r\n */\r\n class ManagersUrlBuilder extends BaseUrlBuilder {\r\n constructor(configs) {\r\n super('managers', configs);\r\n }\r\n }\r\n\r\n /**\r\n * Build the mandateAgreementRequired page url\r\n * @constructor\r\n */\r\n class MandateAgreementRequiredUrlBuilder extends BaseUrlBuilder {\r\n constructor(configs) {\r\n super('mandateAgreementRequired', configs);\r\n }\r\n }\r\n\r\n /**\r\n * Build the my settings page url\r\n * @constructor\r\n */\r\n class MySettingsUrlBuilder extends BaseUrlBuilder {\r\n constructor(configs) {\r\n super('Settings/MySettings', configs);\r\n }\r\n }\r\n\r\n /**\r\n * Build the insertionOrder page url\r\n * @constructor\r\n */\r\n class InsertionOrderUrlBuilder extends BaseUrlBuilder {\r\n constructor(configs) {\r\n super('insertionOrder', configs);\r\n }\r\n }\r\n\r\n /**\r\n * Build the payment page url\r\n * @constructor\r\n */\r\n class PaymentUrlBuilder extends BaseUrlBuilder {\r\n constructor(configs) {\r\n super('payment', configs);\r\n }\r\n }\r\n\r\n /**\r\n * Build the paymentmethods page url\r\n * @constructor\r\n */\r\n class PaymentmethodsUrlBuilder extends BaseUrlBuilder {\r\n constructor(configs) {\r\n super('paymentmethods', configs);\r\n }\r\n }\r\n\r\n /**\r\n * Build the rebill page url\r\n * @constructor\r\n */\r\n class RebillUrlBuilder extends BaseUrlBuilder {\r\n constructor(configs) {\r\n super('rebill', configs);\r\n }\r\n }\r\n /**\r\n * Build the UK FCA page url\r\n * @constructor\r\n */\r\n class UKFCAUrlBuilder extends BaseUrlBuilder {\r\n constructor(configs) {\r\n super('UKFCA', configs);\r\n }\r\n }\r\n\r\n /**\r\n * Build the users page url\r\n * @constructor\r\n */\r\n class UsersUrlBuilder extends BaseUrlBuilder {\r\n constructor(configs) {\r\n super('users', configs);\r\n }\r\n }\r\n\r\n /**\r\n * Build the welcome page url\r\n * @constructor\r\n */\r\n class WelcomeUrlBuilder extends BaseUrlBuilder {\r\n constructor(configs) {\r\n super('welcome', configs);\r\n }\r\n }\r\n\r\n /**\r\n * Build the SAPOnboarding page url\r\n * @constructor\r\n */\r\n class SAPOnboardingUrlBuilder extends BaseUrlBuilder {\r\n constructor(configs) {\r\n super('SAPOnboarding', configs);\r\n }\r\n }\r\n\r\n /**\r\n * Build the trade screening transformation page url\r\n * @constructor\r\n */\r\n class TradeScreeningTransformationUrlBuilder extends BaseUrlBuilder {\r\n constructor(configs) {\r\n super('MasterData', configs);\r\n }\r\n }\r\n\r\n /**\r\n * Build the Notification page url\r\n * @constructor\r\n */\r\n class NotificationUrlBuilder extends BaseUrlBuilder {\r\n constructor(configs) {\r\n super('Notifications', configs);\r\n }\r\n }\r\n\r\n class BillingApiUrlBuilder extends BaseUrlBuilder {\r\n constructor(configs) {\r\n super('api/billing', configs);\r\n }\r\n }\r\n\r\n class ApiAccountUrlBuilder extends BaseUrlBuilder {\r\n constructor(configs) {\r\n super('api/account', configs);\r\n }\r\n }\r\n\r\n class ApiCashbackapprovalUrlBuilder extends BaseUrlBuilder {\r\n constructor(configs) {\r\n super('api/cashbackapproval', configs);\r\n }\r\n }\r\n class ApiFileUrlBuilder extends BaseUrlBuilder {\r\n constructor(configs) {\r\n super('api/file', configs);\r\n }\r\n }\r\n\r\n class ApiPaymentInstrumentUrlBuilder extends BaseUrlBuilder {\r\n constructor(configs) {\r\n super('api/paymentInstrument', configs);\r\n }\r\n }\r\n\r\n class FraudAppealAIVUrlBuilder extends BaseUrlBuilder {\r\n constructor(configs) {\r\n super('FraudAppeal/AccountIdentityVerification', configs);\r\n }\r\n }\r\n\r\n class FraudAppealAIVWelcomeUrlBuilder extends BaseUrlBuilder {\r\n constructor(configs) {\r\n super('FraudAppeal/AccountIdentityVerificationWelcome', configs);\r\n }\r\n }\r\n\r\n const getLogoutUrl = ({\r\n params = {},\r\n rurl,\r\n isShortUrl,\r\n }) => {\r\n let uri = new URI(isShortUrl ? ccBaseShortUrlWithoutCC : ccBaseUrlWithoutCC);\r\n\r\n // After uri.segment(), the path will not ends with '/'\r\n uri = uri.segment('logout');\r\n\r\n uri = uri.setSearch(params);\r\n\r\n if (rurl) {\r\n uri = appendRedirectUrl(uri, rurl);\r\n }\r\n\r\n return uri;\r\n };\r\n\r\n /**\r\n * Build the logout url\r\n * @constructor\r\n */\r\n class LogoutUrlBuilder extends AbstractUrlBuilder {\r\n constructor(configs) {\r\n super(getLogoutUrl, configs);\r\n }\r\n }\r\n\r\n const getLoginBlockedUrl = ({\r\n params = {},\r\n rurl,\r\n isShortUrl,\r\n }) => {\r\n let uri = new URI(isShortUrl ? ccBaseShortUrlWithoutCC : ccBaseUrlWithoutCC);\r\n\r\n // After uri.segment(), the path will not ends with '/'\r\n uri = uri.segment('Login/Blocked');\r\n\r\n uri = uri.setSearch(params);\r\n\r\n if (rurl) {\r\n uri = appendRedirectUrl(uri, rurl);\r\n }\r\n\r\n return uri;\r\n };\r\n\r\n /**\r\n * Build the Login blocked url\r\n * @constructor\r\n */\r\n class LoginBlockedUrlBuilder extends AbstractUrlBuilder {\r\n constructor(configs) {\r\n super(getLoginBlockedUrl, configs);\r\n }\r\n }\r\n\r\n return ({\r\n BaseUrlBuilder,\r\n AccountSettingsUrlBuilder,\r\n AccountSettingsEditUrlBuilder,\r\n AccountsUrlBuilder,\r\n AccountUrlBuilder,\r\n AdjustmentsUrlBuilder,\r\n AgencyUrlBuilder,\r\n ApiAccountUrlBuilder,\r\n ApiCashbackapprovalUrlBuilder,\r\n ApiFileUrlBuilder,\r\n ApiPaymentInstrumentUrlBuilder,\r\n BillingApiUrlBuilder,\r\n BillingUrlBuilder,\r\n BoletoUrlBuilder,\r\n CreditHoldUrlBuilder,\r\n CustomersUrlBuilder,\r\n FraudAppealAIVUrlBuilder,\r\n FraudAppealAIVWelcomeUrlBuilder,\r\n InsertionOrderUrlBuilder,\r\n LoginBlockedUrlBuilder,\r\n LogoutUrlBuilder,\r\n ManagerAccountSettingsUrlBuilder,\r\n ManagerAccountSettingsEditUrlBuilder,\r\n ManagersUrlBuilder,\r\n MandateAgreementRequiredUrlBuilder,\r\n MySettingsUrlBuilder,\r\n NotificationUrlBuilder,\r\n PaymentUrlBuilder,\r\n PaymentmethodsUrlBuilder,\r\n RebillUrlBuilder,\r\n SAPOnboardingUrlBuilder,\r\n TradeScreeningTransformationUrlBuilder,\r\n UKFCAUrlBuilder,\r\n UsersUrlBuilder,\r\n WelcomeUrlBuilder,\r\n });\r\n}\r\n","import URI from 'urijs';\r\nimport IWindow from '@bingads-webui-clientcenter/window-interface';\r\nimport { separator } from './url-builder';\r\n\r\nconst rurlParamName = 'rurl';\r\n\r\n/**\r\n * Get the terms and conditions url\r\n * @param {string} ccBaseUrl - base Client Center url\r\n * @return {string} the Terms and condition url\r\n */\r\nexport const getTermsAndConditionsUrl = ccBaseUrl => new URI(ccBaseUrl).segment(['TermsAndConditions', 'Index']).toString();\r\n\r\n/**\r\n * Gets a Forward link Url\r\n * @param {string} fwLinkBaseUrl - the baseURl for the fwlink\r\n * @param {string} linkid - the linkId for the fwlink\r\n * @return {string} the path string to the forward link\r\n */\r\nexport const getForwardLink = (fwLinkBaseUrl, linkid) => new URI(fwLinkBaseUrl).addSearch({ linkid }).toString();\r\n\r\n/**\r\n * Gets a Campaign page url\r\n * @param {string} campaignAzureDomain - the baseURl for the campaign azure domain\r\n * @param {string} pathname - the path name for the campaign page\r\n * @param {string} searchParams - the search params for the campaign page\r\n * @return {string} the path string to the campaign page\r\n */\r\nexport const getCampaignPageUrl = (campaignAzureDomain, pathname, searchParams) => new URI(campaignAzureDomain).segment(['campaign', 'vnext', pathname]).addSearch({ ...searchParams }).toString();\r\n\r\n/**\r\n * Get the current path in the browser\r\n * @return {string} the current path string\r\n */\r\nexport const getCurrentPath = () => new URI(IWindow.location.href).path();\r\n\r\n/**\r\n * Append a redirect url to the uri\r\n * @param {URI} uri - the uri to add redirect url\r\n * @param {string} rurl - redirect url to add\r\n * @return {URI} the uri which contains the redirect url\r\n */\r\nexport const appendRedirectUrl = (uri, rurl) => uri.addSearch(rurlParamName, rurl);\r\n\r\n/**\r\n * Get the error(Panda) page url\r\n * @param {string} ccBaseUrl ccui's base url.\r\n * @param {string} requestId The request Id of the error request.\r\n * @param {string} previousUrl The previousurl which is the url when error happened.\r\n * @return {string} The error page's url.\r\n */\r\nexport const getErrorPageUrl = (ccBaseUrl, requestId, previousUrl) => new URI(ccBaseUrl).segment(['Error']).setSearch({ reqid: requestId, previousurl: previousUrl }).toString();\r\n\r\n/**\r\n * Get the SAPApplication supporting document url.\r\n * @param {string} ccBaseUrl ccui's base url.\r\n * @param {(number|string)} cid the customer id.\r\n * @param {(number|string)} uid the user id.\r\n * @param {(number|string)} SAPApplicationId the SAPApplication Id.\r\n * @param {string} fileName fileName of the document.\r\n * @returns {string} the SAPApplication supporting document url.\r\n */\r\nexport const getSAPApplicationSupportingDocumentUrl = (ccBaseUrl, cid, uid, SAPApplicationId, fileName) =>\r\n new URI(ccBaseUrl).segment(['API', 'PaymentInstrument', 'SAPApplicationSupportingDocument'].join(separator))\r\n .setSearch({\r\n fileName, SAPApplicationId, cid, uid,\r\n }).toString();\r\n\r\n/**\r\n * Append a query to the uri hash\r\n * @param {URI} uri - the uri to add hash query\r\n * @param {string} hashQuery - query to add to hash\r\n * @return {URI} the uri whose hash contains the query\r\n */\r\nexport const appendHashQuery = (uri, hashQuery) => uri.hash(URI(uri.fragment()).segment(hashQuery));\r\n\r\n/**\r\n * Get the SAPApplication supporting document url.\r\n * @param {string} ccBaseUrl - ccui's base url.\r\n * @param {(number|string)} cid - the customer id.\r\n * @param {(number|string)} uid - the user id.\r\n * @param {(number|string)} accountId - the tax certification account owner id.\r\n * @param {string} blobContainerName - blob container name of the tax certification.\r\n * @param {string} certificationName - the tax certification name.\r\n * @returns {string} the account tax certification url.\r\n */\r\nexport const getAccountTaxCertificationUrl = (ccBaseUrl, cid, uid, accountId, blobContainerName, certificationName) =>\r\n new URI(ccBaseUrl).segment(['API', 'Account', 'AccountTaxCertification'].join(separator))\r\n .setSearch({\r\n accountId, blobContainerName, certificationName, cid, uid,\r\n }).toString();\r\n","export default window;\r\n"],"names":["bind","module","exports","i","RuleName","maxLength","minLength","required","match","AddressFields","Line1","Line2","Line3","Line4","City","StateOrProvinceName","PostalCode","CountryName","defaultLine1","_TL_","defaultLine2","defaultLine3","defaultLine4","defaultCity","defaultStateOrProvince","defaultBlockDisplayFormat","defaultAddressForOptionalStateOrProvinceCountries","StateOrProvince","BlockDisplayFormat","defaultAddressForOptionalProvinceAndPostalCodeCountries","optionalStateOrProvinceCountriesMetadata","reduce","prev","curr","optionalProvinceAndPostalCodeCountriesMetadata","Metadata","US","CA","IT","ES","BR","IN","AU","CN","GB","SG","FR","SA","DK","DE","AT","CH","FI","IL","KR","NL","NO","RU","SE","TW","default","AddressTwoLinesSeparator","AddressProperties","_","toArray","getMetadata","countryCode","inlineFormatOfProperties","address","properties","_separator","memo","field","addressField","isString","trim","separator","isEmpty","findLatestValidatedAddress","addressList","max","IsValid","ValidationVersionId","TimeStamp","isBoolean","isNumber","isArray","map","byte","toString","join","exists","isObject","Country","isNotEmpty","any","property","blockLinesFormat","metadata","compact","line","contains","inlineFormat","inlineFormatWithBusinessName","BusinessName","dropdownFormat","twoLinesFormat","line1","line2","validateAndReturnError","isOptional","error","ruleName","each","addressProperty","ruleValueRequired","ruleValueMaxlength","ruleValueMinLength","ruleValueMatch","errorList","value","push","length","ruleValue","chain","mapObject","pick","identity","isValid","options","businessNameIsValid","businessName","BusinessNameMaxLength","isValidBusinessName","accountBusinessAddress","normalizeAddress","fieldValue","has","address1","address2","forceNormalized","propertiesToCompare","addressToCompare1","addressToCompare2","all","field1","field2","Boolean","_address","defaults","includedAddressIds","addressFormatter","addressValidator","validAddressList","isFunction","filter","formattedIncludedAddresses","includes","Id","includedAddresses","formatted","reject","groupBy","targetAddressId","targetAddress","findWhere","formattedTargetAddress","validatedAddress","omit","getCityStateCountryString","i18n","getString","FrequencyMonthCountMap","Object","freeze","Monthly","BIMonthly","Quarterly","Yearly","FrequencyDayCountMap","FrequencyMonthI18nKeyMap","getToday","todayObj","timeZone","Date","year","month","day","fromDate","toDate","isDate","Math","ceil","MillisecondsPerDay","offset","getTime","range","start","end","rangeId","dateFormat","StandardDateFormat","formatCivilDate","date","startCivilDate","parseCivilDate","dateString","endCivilDate","startDate","frequency","occurrences","calculateOccurrences","parseInt","startYear","getFullYear","startMonth","getMonth","startDay","getDate","endRawMonth","endYear","endMonth","monthDayCount","endDay","min","endDate","isNaN","parse","date1","date2","isEqual","withoutTime","IWindow","performance","now","file","Promise","resolve","reader","FileReader","onload","result","target","Uint8Array","readAsArrayBuffer","buildFormData","formData","data","parentKey","Blob","undefined","Number","append","subKeyFormatter","Array","key","keys","forEach","containsFile","values","some","url","fields","form","document","createElement","setAttribute","name","hiddenField","appendChild","addInputToForm","body","submit","defaultOptions","precision","needPercentageSymbol","needSpace","isValidWholeNumber","numberValue","number","floor","String","source","extend","$","isNumeric","toFixed","divisor","dividend","hasFlag","flag","str","args","replace","text","html","toLowerCase","arr","bytes","btoa","fromCharCode","regexStr","RegExp","test","agencyRequestsPage","settingsPage","content","userInfo","emailNotification","billing","emailNotificationCategory","emailNotificationCategorySave","emailNotificationCategoryAccountFetch","emailNotificationCategoryAccountSelectorRender","emailNotificationCategoryAccountSelectAll","emailNotificationCategoryAccountFilter","emailNotificationUserSelectorRender","logging","pageReadyMark","pageLoadDurationRecorded","pageNavigationStartTime","pageNavigationRecorded","pageRoutePageLoadDuration","location","pathname","getTimestampMillis","pageLandingPath","mark","Unlimited","Visa","MasterCard","Discover","JCB","JAL","PayPal","CPF","CNPJ","PAN","VAT","IE","TIN","VKN","BIN","NPWP","NIT","AAH","RFC","CUIT","VÖEN","IFU","JCT","SST","TBC","FIN","RIF","TPIN","TRN","UIN","BRN","RUC","RUT","STRN","ABLVerificationStatus","Failed","OverrideFailed","ActionRequired","NotVerified","InPending","Verified","OverrideVerified","VerifiedLimited","Failed_CN","ActionRequired_CN","NotVerified_CN","InPending_CN","Verified_CN","LicenseExpired_CN","CNCompositeVerificationStatus","ABLVerificationFailedStatusList","ABLVerificationVerifiedStatusList","ABLVerificationStatusTextMapping","CNCompositeVerificationStatusTextMapping","AccountVerificationStatus","NeedVerified","NoNeedVerified","ChinaAccountVerificationStatus","LicenseExpired","ChinaAIVStatusToGlobalAIVStatusMapping","AccountVerificationFailedStatusList","AccountVerificationVerifiedStatusList","AccountToAblVerificationStatusRelation","AIVStatusLabelPropertyMapping","glyph","iconStyle","textStyle","labelKey","labelKeyInternal","Individual","Business","UnableTriggerAivReason","InternalUser","NoRemainingRetryCount","UserRoleMismatch","NotAccountOwner","InitializeInProgress","OrderedUnableTriggerAivReasons","Onfido_Rejected_ImageIntegrity_ImageQuality","Onfido_Rejected_ImageIntegrity_SupportedDocument","Onfido_Rejected_ImageIntegrity_ColourPicture","Onfido_Caution_DataConsistency_MultipleDataSourcesPresent","Onfido_Caution_VisualAuthenticity_OriginalDocumentPresent","Onfido_Caution_FaceComparison_FaceMatch","Onfido_Caution_DataValidation_DocumentExpiration","Onfido_Caution_DataComparison_FirstName","Onfido_Caution_DataComparison_LastName","Onfido_Caution_ImageIntegrity_ConclusiveDocumentQuality","Onfido_Caution_ImageIntegrity_ColorPicture","Onfido_Caution_ImageIntegrity_PictureUnavailableInDocument","OneVet_Email_Verification_Failure","OneVet_Business_Verification_Failure","OneVet_Domain_Verification_Failure","SUBJECT_QUALIFICATION_THE_QUALIFICATION_PICTURE_IS_NOT_CLEAR","SUBJECT_QUALIFICATION_QUALIFICATION_EXPIRED","SUBJECT_QUALIFICATION_DISCREPANCY_IN_BUSINESS_SCOPE","SUBJECT_QUALIFICATION_THE_ACCOUNT_OPENING_ENTITY_IS_OPERATING_ABNORMALLY","SUBJECT_QUALIFICATION_THE_UNIFIED_SOCIAL_CREDIT_CODE_WAS_FILLED_IN_INCORRECTLY","SUBJECT_QUALIFICATION_FALSE_QUALIFICATION","SUBJECT_QUALIFICATION_QUALIFICATION_PICTURE_UPLOAD_ERROR","SUBJECT_QUALIFICATION_THE_QUALIFICATION_FILE_HAS_A_RESTRICTED_WATERMARK","SUBJECT_QUALIFICATION_THE_COMPANY_NAME_IS_INCORRECT","SUBJECT_QUALIFICATION_THE_QUALIFICATION_DOCUMENTS_ARE_INCOMPLETE","SUBJECT_QUALIFICATION_PLEASE_CONTACT_YOUR_SALES_AGENT_FOR_ADVICE","INDUSTRY_QUALIFICATION_THE_QUALIFICATION_PICTURE_IS_NOT_CLEAR","INDUSTRY_QUALIFICATION_QUALIFICATION_EXPIRED","INDUSTRY_QUALIFICATION_DISCREPANCY_IN_BUSINESS_SCOPE","INDUSTRY_QUALIFICATION_THE_ACCOUNT_OPENING_ENTITY_IS_OPERATING_ABNORMALLY","INDUSTRY_QUALIFICATION_THE_UNIFIED_SOCIAL_CREDIT_CODE_WAS_FILLED_IN_INCORRECTLY","INDUSTRY_QUALIFICATION_FALSE_QUALIFICATION","INDUSTRY_QUALIFICATION_QUALIFICATION_PICTURE_UPLOAD_ERROR","INDUSTRY_QUALIFICATION_THE_QUALIFICATION_FILE_HAS_A_RESTRICTED_WATERMARK","INDUSTRY_QUALIFICATION_THE_COMPANY_NAME_IS_INCORRECT","INDUSTRY_QUALIFICATION_THE_QUALIFICATION_DOCUMENTS_ARE_INCOMPLETE","INDUSTRY_QUALIFICATION_PLEASE_CONTACT_YOUR_SALES_AGENT_FOR_ADVICE","OTHERS_THE_QUALIFICATION_PICTURE_IS_NOT_CLEAR","OTHERS_QUALIFICATION_EXPIRED","OTHERS_DISCREPANCY_IN_BUSINESS_SCOPE","OTHERS_THE_ACCOUNT_OPENING_ENTITY_IS_OPERATING_ABNORMALLY","OTHERS_THE_UNIFIED_SOCIAL_CREDIT_CODE_WAS_FILLED_IN_INCORRECTLY","OTHERS_FALSE_QUALIFICATION","OTHERS_QUALIFICATION_PICTURE_UPLOAD_ERROR","OTHERS_THE_QUALIFICATION_FILE_HAS_A_RESTRICTED_WATERMARK","OTHERS_THE_COMPANY_NAME_IS_INCORRECT","OTHERS_THE_QUALIFICATION_DOCUMENTS_ARE_INCOMPLETE","OTHERS_PLEASE_CONTACT_YOUR_SALES_AGENT_FOR_ADVICE","AivAppealStatus","Allowed","Submitted","InValid","ValidAivAppealStatusList","AccountFinancialStatus","Active","Inactive","Proposed","PendingCreditCheck","NoHold","SoldToOnly","CreditWarning","Hold","WriteOff","TaxOnHold","UserHold","AccountAssociationType","Primary","Backup","None","AccountFinancialStatusBit","CreditHold","CLEHold","PIHold","ManualHold","AccountLifecycleStatus","Blocked","Pending","Draft","Deleted","Pause","Suspended","AccountInactiveReasonCode","NotSet","PausedDueToSystemIssue","PausedZeroBalance","PausedNoValidIO","Processing","PendingPaymentMethod","PendingNewCustomer","AccountInactiveReasonValue","AccountInactiveCauseCode","AccountLifecycleStatusSuspended","AccountLifecycleStatusDraft","AccountLifecycleStatusDeleted","AccountLifecycleStatusUserPause","AccountFinancialStatusProposed","AccountFinancialStatusWriteOff","AccountFinancialStatusTaxOnHold","AccountFinancialStatusUserHold","AccountFinancialStatusPendingCreditCheck","AccountFinancialStatusSoldToOnly","AdvertiserCustomerLifecycleStatusDraft","AdvertiserCustomerLifecycleStatusInactive","AdvertiserCustomerLifecycleStatusDeleted","AdvertiserCustomerFraudStatusFraud","BillToCustomerLifecycleStatusDraft","BillToCustomerLifecycleStatusInactive","BillToCustomerLifecycleStatusDeleted","BillToCustomerFinancialStatusProposalsOnly","BillToCustomerFinancialStatusSoldToOnly","BillToCustomerFraudStatusFraud","AccountLifecycleStatusNotSet","AccountFinancialStatusNotSet","AdvertiserCustomerLifecycleStatusNotSet","AdvertiserCustomerFraudStatusNotSet","BillToCustomerLifecycleStatusNotSet","BillToCustomerFinancialStatusNotSet","BillToCustomerFraudStatusNotSet","UserDeleted","SystemNoSpendDeactivated","AccountVerificationHold","AccountInactiveCauseValue","AccountActivityStatus","Enabled","Errors","AccountMode","Legacy","Expert","Smart","UnifiedSmart","UnifiedExpert","AccountEditMode","FixIndiaTax","AccountCustomerRelationLifecycleStatus","AccountAutoTaggingType","Off","CustomerOverride","BingAdsOverride","AccountAutoTaggingTypeId","AccountFeaturePilots","SingleAccountIdentityVerification","TokenVerificationScenario","AIV","FCA","CNQualificationType","Industry","Supplementary","CNQualificationStatus","CNQualificationUnableCreateReason","OrderedCNQualificationUnableCreateReason","AdjustmentReason","CustomerRetention","CreditAndRebill","CreditAndRebillTaxIssue","Fraud","SystemIssues","InternalUserError","VolatileTrafficComplaint","Broadmatch","PrepayBalanceRefund","AccountCompromised","TravelSpecialProgram","GAAPCompliance","AnnualPenalty","AvailableCreditAndRebillReasonIds","AdjustmentInProgress","AggregatorAccount","OfflinePayment","NonPrepaidAccountOnPrepaidInvoice","AlreadyRebilled","EndOfMonthHoldOnAggregatorAndConsolidatedRebills","PIDeclined","EndOfDunningCycle","AdjustmentsAction","Debit","Credit","SpotDebit","SpotCredit","CurrentBalanceDebit","CurrentBalanceCredit","SalesHouseDebit","SalesHouseCredit","AvailableCreditAndRebillActionIds","SilentErrorMessage","AdjustmentsType","TrueUpDebit","Payment","Billing","Invoice","CreditMemo","ChargeBack","DebitMemo","BudgetCredit","BudgetDebit","TrueUpCredit","Charge","SetupFee","DealpointCredit","ManualDebit","ManualCredit","PublisherFraudReinvestmentDebit","PublisherFraudReinvestmentCredit","PayoutPaymentIssued","PayoutEarnings","PayoutLateLogs","BatchPayoutManualDebit","BatchPayoutManualCredit","PayoutPaymentDeclined","PayoutTrueUpDebit","PayoutTrueUpCredit","StandardPayoutManualDebit","StandardPayoutManualCredit","YahooAdjustmentCredit","YahooAdjustmentDebit","ContractualPayoutDebit","ContractualPayoutCredit","ThirdPartyPipelineDebit","ThirdPartyPipelineCredit","YahooAgencyDiscountCredit","YahooAgencyDiscountDebit","CrossOverDebit","CrossOverCredit","PrePaidStatement","PrePaidPayments","PrepaidCreditMemo","PrePaidCredit","PaymentFraudDebit","PaymentFraudCredit","PrepaidPaymentReversal","PrepaidRefundReversal","PaymentFraudDeclineCredit","PostPaidStatement","ExternalCharge","PublisherFraudDebit","PublisherFraudCredit","PublisherFraudPayoutDebit","PublisherFraudPayoutCredit","RollForwardDirectCreditRefund","RollForwardDirectDebitRefund","CreditActions","DebitActions","difference","Created","Queued","InProgress","Completed","AdjustmentReasonString","DocumentType","CurrentActivity","PrePaidInvoices","SelfServeInvoice","XandrInvoice","Invoices","CreditMemoInvoice","PrepaidCreditMemoInvoice","PrepaidChargebackInvoice","PrepaidRefundReversalInvoice","WriteOffCreditMemo","MonthlyStatement","SalesHouseInvoice","SalesHouseStatement","DocumentTypeString","CreditMemoDocumentType","BillingDocumentRenderingMethod","Account","Adjustment","IndiaEInvoicingStatus","NotStarted","Available","PendingSupport","PendingIRNGeneration","PendingCustomerAction","PendingCreditAndRebill","ApContactType","SAPLevel","AccountLevel","APContactStatus","PendingUserValidation","PendingSystemValidation","SystemValidationFailure","Unknown","APContactMode","Static","Edit","Create","IndiaDualInvoiceType","Default","RecipientCopy","SupplierCopy","PaymodErrorCodes","AuthorizationExpired","ProcessorDeclined","ExpiredPaymentInstrument","ProcessorRiskcheckDeclined","AmountLimitExceeded","InvalidPaymentInstrument","InsufficientFund","MissingFundingSource","IncorrectPinOrPasscode","TransactionNotAllowed","MissingSessionData","InvalidTransactionData","InvalidTransactionDataPrepay","InvalidTransactionDataThreshold","RiskReject","AuthRequired","CVVValueMismatch","AccountBillMeNowStatus","ForceBill","Refund","BillingDocumentAction","Rebill","ChangeNetAmount","ChangeBillToCustomer","ChangeBillToPI","ChangePostPaidThresholdABL","ChangePostPaidThresholdTaxId","SkipCheckingConsolidatedBd","AggregatorRebill","AggregateeRebill","ConsolidatorRebill","ConsolidateeRebill","PIDeclinedRebill","CbtReportTimePeriod","Today","Yesterday","CbtReportTimePeriodTLString","BudgetRecommendationItemType","Suggested","MaxValue","Current","Other","BudgetEventType","CampaignOutOfBudget","CampaignLimitedByBudget","PrepayAccountBalanceLow","PrepayAccountBalanceZero","InsertionOrderBalanceDepleted","InsertionOrderExpired","InsertionOrderExhaustingUrgent","InsertionOrderExpiringUrgent","AccountHold","BudgetChangeType","PrepayBalanceRecharge","ThresholdPaymentChange","InsertionOrderChange","CampaignDailyBudgetChange","DeliveryStatus","CampaignBudgetPaused","BudgetSuggestions","EntityType","Customer","User","PaymentInstrument","TaxDocument","Person","IncludeCampaignDetailsValueToLabel","AttestationValue","True","False","CampaignDetailsForUnconsolidatedInvoiceValueToLabel","BilltoSAPId","BusinessAddress","CompanyCode","CurrencyType","TaxInformation","BillingGroupId","PaymentOption","MIOL","MOI","India","Brazil","Taiwan","CompanyCodeCompanyNameMapping","TaxType","GSTINNumber","PANNumber","VatNumber","NZGSTNumber","AUGSTNumber","CCM","GSTNumber","PSTNumber","QSTNumber","LegalIdentifier","TaxInfo","IsTaxExemptionCertVerified","SkipVatIdValidation","IsIVAOrVATTaxPayer","IsWithholdingTaxExempted","ReverseChargeDocumentAttestation","TaxOptionType","Personal","ChileIVAorVATConfirmValueToLabel","ChileWHTConfirmValueToLabel","ReverseChargeDocumentAttestationValueToLabel","TaxTypeEnumValue","VatStatusEnum","Valid","Invalid","PastDue","TaxIdMaxLength","TaxCertificateDeclineReasonType","SubmittedDocumentInvalid","CodigoSectionInvalid","NITMissingOrIncomplete","NITMismatch","Accept","Reject","Optional","Required","RequiredForAllTheEntities","RequiredForBusiness","RequiredForVATRegisteredBusiness","RequiredForValueAddedTaxIVARegistered","RequiredForIVAorVATTaxPayer","StateTaxIDOptional","TaxCertificateOrEquivalentProof","TaxCertificate","AttestationValues","CountryCode","UA","AM","AN","AZ","IQ","KZ","KG","MM","MV","HK","HU","PT","PL","CO","CL","AE","VN","VE","TR","FK","VC","GE","TH","TJ","BD","BT","ID","BY","NG","IS","SS","MD","ZW","ZA","BH","KH","KE","OM","GH","CM","UZ","FJ","GT","BS","PH","PK","LK","MX","NP","LA","BB","NZ","RS","AR","BJ","CI","JP","MY","SR","ZM","EG","PE","UY","PA","SN","CallingCode","NonEMEAVatCountries","YahooMarkets","CustomerUnsupportedBusinessLocations","UnsupportedBusinessLocations","CouponType","Unspecified","Acquisition","Retention","Performance","CouponStatus","AssociatedCoupon","PendingUpfrontSpending","UpfrontSpending","ActiveCoupon","Expired","RecommendationAdoptionStatus","NotInProgess","Adopted","PickedUp","Redeemed","DismissedBeforeStart","DismissedAfterStart","AdoptedAfterExpiration","FailedToRedeem","Depleted","FailedAdoption","FeatureAdoptionCouponFeatureId","GoogleImport","FacebookImport","ConversionTracking","CalloutCard","AutoBidMaxClicks","AutoBidMaxConversions","ShoppingCampaign","PerformanceMax","MultiAdFormat","CouponPurposeId","Signup","Ongoing","Multipurpose","FeatureAdoption","BingOnlyCampaign","SyndicationFiltering","MultiChannels","MSANSignUp","StoreAds","RetentionStoreAds","CurrencyCode","USD","INR","BRL","EUR","VByVRequiredCurrencyCodes","CustomerProfilePropertyType","LastLoginTime","IpAddress","AuthType","ImpersonationEnabled","IsOptedInForConsolidatedBilling","IsOptedInForCampaignDetailsInInvoices","IsCustomerOptedInForPostalMail","IsCustomerOptedInPaperlessBilling","IsEligibleForConsolidatedBilling","NumberOfBillToInvoiceAccountsUnderCustomer","NumberOfBillToPrepayAccountsUnderCustomer","NumberOfBillToThresholdAccountsUnderCustomer","IsOptedIn","on","off","AppScope","Adv","Pub","Aca","MultiChannelAds","All","ManagedByType","Microsoft","Yahoo","ChinaJV","CustomerFinancialStatus","ProposalsOnly","CustomerServiceLevel","NA","SelfServe","SelfServeTrusted","Premium","Internal","Select","InsertionOrderStatus","PendingSystemReview","PendingUserReview","Declined","Canceled","Exhausted","PendingBillToPartyChange","PendingBillToPartyChangeAndUserReview","InsertionOrderLabel","Expiring","Exhausting","NoBudget","IOMaxValues","budgetValue","agencyIdOrPoLength","nameLength","commentLength","editCommentLength","IOMinValues","IOCreationSource","UIInsertionOrder","UIBatchInsertionOrder","BulkIOImport","RecurringInsertionOrder","BillingTakeOver","AgencyLinking","Reparenting","PaymentOptionSwitch","CCAPIAddInsertionOrder","IORecommendation","InsertionOrdersGridFieldNames","AccountId","AccountName","AccountNumber","Action","AgencyIdOrPo","BalanceAmount","BillToCustomerName","BillToCustomerNumber","BudgetPerOrder","Comment","CompanyName","DaysToEndDate","DealPointId","DraftEndDateStandardText","DraftEndDateText","DraftStartDateStandardText","DraftStartDateText","EndDate","EndDateStandardText","EndDateText","EndOccurrences","EstDaysToExhaustion","Frequency","FriendlyName","FromDate","InsertionOrderId","InsertionOrderName","IsAgencyIdOrPoEditable","IsCommentEditable","IsDealPointIdEditable","IsEndDateEditable","IsInSeries","IsInsertionOrderNameEditable","IsRecordCenterIdEditable","IsSpendCapAmountEditable","IsStartDateEditable","LastModifiedDate","LastModifiedStandardDate","ModifiedByUser","Notes","OrderName","OrderType","PurchaseOrder","RecommendationId","RecommendationType","RecordCenterId","RecurringIOId","RemainingIOBudgetPercent","SeriesEndDate","SeriesEndDateString","SeriesEndOption","SeriesFrequencyType","SeriesName","SeriesStartDate","SeriesStartDateString","SpendCapAmount","SpentIOBudget","SpentIOBudgetPercent","StartDate","StartDateStandardText","StartDateText","Status","StatusValue","ThruDate","MaxLengths","UpperBound","LowerBound","EndlessDate","ImmediateDate","IOFormInputSchema","type","minimum","maximum","ExtendDays","BackupSpendCapAmount","nullable","Occurrences","Name","EndByDate","NoEndDate","EndByOccurrences","IOFilter","AccountPaused","JSON","stringify","Field","Operator","Values","IOEntryPointAlias","RIONotificationQueue","UcmHealthCheck","ConBNotificationQueue","NotificationEmail","IONotificationsEnhancement","BudgetCenter","IOReportExpiring","IOReportExpired","IOReportExhausting","IOReportExhausted","IOEntryPointLogMessage","Currency","FrequencyType","RepeatCount","BackupIO","AccountBackupIOConfigModel","IOInlineSmartnessInfo","StartDateRecommendationItem","BudgetRecommendationItem","GeneralRecommendationItem","SuggestedStartDate","LastInputStartDate","SuggestedBudget","LastInputBudget","SuggestedDailySpend","IsDisplayed","IsApplyButtonClicked","LinkType","AdAccount","ManagerAccount","LinkPermissionType","Administrative","Standard","LinkRequestType","Link","Unlink","BillingTakeover","AccountTransfer","HierarchyAccountTypeValue","HierarchyAccountType","invert","NotificationType","InsertionOrderBalanceDepletedEvent","InsertionOrderExpiredEvent","InsertionOrderExpiringUrgentEvent","InsertionOrderExhaustingUrgentEvent","PaymentInstrumentType","Unset","CreditCard","Check","ElectronicFundsTransfer","ELV","OfflinePaymentMethod","VBA","Boleto","UPI","PaymentType","Prepay","Postpay","PaymentTypeId","Undefined","Threshold","PaymentOptionId","OrderedPaymentOptionId","OrderedPaymentOptionEnum","sortBy","val","indexOf","PaymentSettingsMap","CardCategory","Prepaid","CreditCardType","VISA","MC","AMEX","DISCOVER","DINER","CB","INV","PaymentInstrFinancialStatus","AllHold","PaymentInstrLifecycleStatus","PendingValidation","PaymentTransactionStatus","Success","Chargeback","RefundReversal","ChargebackReversal","SAPApplicationType","ApplyNewBilltoSAP","UpdateSAPDetails","AddingExistingSAP","ApplyNewSoldtoSAP","SAPApplicationStatus","UnderReview","Approved","Rejected","SAPApplicationQualificationErrors","NoBillingDocumentAsBillto","MinSpendBelowThreshold","AllowedAgencyPITypes","ESCPrepayUnsupportedPITypes","RiskControlEventTypes","AddFunds","RiskControlResponseTypes","RiskControlPassed","BoletoAddFundsHighRisk","SEPAAddFundsHighRisk","SEPAChargebackHighRisk","NukedPIStatusTypes","ValidNoButton","ValidShowButton","AltInvalid","CreditCardTypeString","PaymentOptionString","AccountAdd","AccountBillingLoad","AccountCashBackFetch","AccountCashBackUpdate","AccountDelete","AccountFetch","AccountLoad","AccountReactivate","AccountSensitiveCategorySet","AccountSensitiveCategoryView","AccountUpdate","AccountUserResponsibilityLoad","ActionLoad","AgencyAndSalesHouseCommissionPctView","AgencyInviteLoad","AgencyInvite","AgencyLinkJobAdd","AgencyLinkJobAccept","AgencyLinkJobDelete","AgencyLinkJobUpdate","AgencyLinkJobLoad","AgencyLinkJobFetch","AgencyRelationshipLoad","ApiCustomerFetch","ApiCustomerUpdate","ApiTokenStatusUpdate","ApiUserFetch","ApiUserUpdate","BalanceLoad","BalanceAdjustmentExecute","BIReportMetadataLoad","BusinessLocationLoad","CampaignManagementFullControl","CampaignManagementLoad","CardStatementLoad","CashBackRebateUpdate","CashBackMinMaxRebateUpdate","CashBackPropertiesView","ConvertCustomerToAgency","ConvertCustomerToAggregator","CsoEmailUpdate","CustomerFetch","CustomerFinancialStatusUpdate","CustomerDelete","CustomerIdMappingFetch","CustomerIdMappingUpdate","CustomerLoad","CustomerRetier","CustomerSignup","CustomerScrub","CustomerUpdate","ForceBilling","GetCustomerCreditCardMigrationStatus","InternalUserLoad","InterstitialUrlUpdate","InsertionOrderAdd","InsertionOrderLoad","InsertionOrderUpdate","InvoiceAdd","InvoiceDelete","IsInternal","IsAggregator","LoadBatch","MarketUpdate","MySettingsUpdate","NewAdjustment","OrderLoad","PaymentInstrumentAdd","PaymentInstrumentDelete","PaymentInstrumentFetch","PaymentInstrumentLoad","PaymentInstrumentUpdate","PasswordReset","PilotBatchUpdate","PilotFlagUpdate","PssAdvertiserLoad","RoleActionLoad","SetCustomerConsentForCreditCardMigration","StatementLoad","SupportBillingTemplateAdd","SupportBillingDocumentRenderExecute","SupportBillingDocumentReRenderExecute","SystemLimitUpdate","TaxExemptionCertStatusGet","TaxExemptionCertStatusSet","TaxInfoUpdate","UpdateBatch","UserAccountSecurityFetch","UserAdd","UserCustomerSecurityFetch","UserDelete","UserFetch","UserForceDelete","UserLoad","UserRoleFetch","UserSuspend","UserUpdate","ViewAgentWorkspace","InsertionOrderCreation","AutoRecharge","RecurringInsertionOrderAdd","InsertionOrderInlineSmartness","FCAVerificationType","FS","Gov","NonFS","FCAAccountStatus","NoNeed","NQPPending","FCAVerificationTypeString","FCAVerificationAccountStatusString","Update","FCAStatusMismatch","Unauthorized","NotInPilot","TradeScreeningStatus","HitInReview","TrueMatch","NoHit","SSIF","SSID","SSIE","LicR","SSIF14","SSID30","SSIE60","LicA","DataIssue","IngestionError","Error","NotScreened","DataIssueOrg","DataIssueName","DataIssueAddress","DataIssueLegalId","EnforcementActionType","SuspendAccountCreation","ReadOnly","CustomerFraudStatus","NonFraud","FraudPending","ErrorCode","GstInNumberAddressNotMatch","NotificationCategorySettings","CategoryId","AllAccountsSettingStatus","AllowContactPreference","ContactPreferenceEmail","ContactPreferencePhone","ContactPreferenceMail","MarketingPreference","EmailFormat","ChangedAccountList","On","Custom","AddressUtils","isValidAddress","isValidABL","businessNameData","individualInfoData","firstName","lastName","trimValue","businessNameTrimmed","firstNameTrimmed","lastNameTrimmed","normalizedKeys","normalizedAddress","accountBusinessAddress1","accountBusinessAddress2","accountVerificationStatus","isInternal","AIVLabelProperty","label","ablVerificationStatus","statusLabel","compositeVerificationStatus","ablVerificationStatusMatchList","isAccountVerificationStatusExists","AccountVerificationStatusEnum","isABLVerificationStatusExists","addressData","checkFullAddress","defaultStatus","targetAddressInfo","normalizeAddressList","AccountInactiveReasonsV1","item","Causes","isUnableTriggerAivReasonExists","unableTriggerAivReason","unableTriggerAivReasons","find","orderedReason","userContext","cid","currentUser","get","ParentCustomerId","IsSuperAdmin","individualDetailInfo","isAivAppealAllowed","accountVerificationAppealInfo","AppealUCMTicket","RemainingRetryCount","isAivAppealSubmitted","isAivAppealFailed","getDisplayName","account","getHierarchyAccount","id","managers","Managers","manager","isBillToCustomer","targetCustomerId","BillToCustomerId","isBillToAgencyCustomer","deletedReasonValueMatcher","matcher","Reason","deletedReasonCodeMatcher","isDeleted","LifecycleStatus","UILifecycleStatusLocId","AccountInactiveReasons","isCreated","activityStatus","handledAccountInactiveReasons","remainingAccountInactiveReasons","union","isManualHold","NumberUtils","LastFinStatusUpdatedSourceBitMap","isWriteOff","FinancialStatus","hasPaymentOption","hasOneOfPaymentOptions","paymentOptions","AccountCustomerRelations","isManagingCustomer","RelatedToCustomerId","RelatedToCustomerName","RelatedToCustomerNumber","hasManager","isAccountAPContactMandatory","invoiceMandatoryCountries","prepayThresholdMandatoryCountries","isInvoiceMandatory","isPrepayThresholdMandatory","isIndiaEmandateFailedPIAccount","currentPI","getAccountCountryCode","SupportsRecurringPayment","CreationDate","isManagedByYahoo","getAblInfoFormat","taxData","taxCertification","TaxCertification","prefillAddressId","isTSTInReview","isTSTLicR","isTSTTrueMatch","isTSTDataIssueName","isTSTDataIssueAddress","isTSTDataIssueLegalId","isTSTMissingMasterData","isStringNullOrWhiteSpace","displayName","hierarchyAccount","toAblInfoFormat","isAddressRequired","IsAddressRequired","isVatApplicable","country","IsVatApplicable","Code","toUpperCase","IsTaxableCountry","isPaperlessBillingAllowed","IsPaperlessBillingAllowed","isPaperlessBillingEnforcement","PaperlessBillingEnforced","getRegion","getCallingCodeDisplayByCountry","callingCodeString","CountryCallingCode","extendCountry","callingCodeDisplay","countries","withExtensions","sort","item1","item2","localeCompare","sensitivity","_countryList","callingCode","countryList","indexOfUS","findIndex","splice","concat","moveUsInFront","pluck","phone","phoneNumberWithCallingCodeMatchResult","CallingCodeBeforePhoneNumberRegExp","exec","phoneNumber","removeYahooMarkets","countryCodeKeepList","getAvailableCountriesByControlledCurrency","currencies","currencyType","controlledCurrency","getControlledCurrency","ControlledCurrencyCountryId","getAvailableCountriesByCurrencyCountriesMapping","currencyCountriesMapping","availableCountryListByCurrency","record","currency","controlledCurrencyCountry","filteredCountries","accountMode","allowedCountriesByAccountModeMapping","countryCodePropertyKey","allowedcountryList","getCurrencyCode","currencyValue","extendCurrency","code","getExtendedObject","sortCurrencies","DisplayName","currencyCode","countryCurrenciesMapping","allowedCurrencyCodes","allowedCurrencies","reasons","unselectedReason","newAdjustmentReasonsFormatted","reason","action","isTypeCurrentActivity","documentType","BillingDocumentType","isDocumentTypePrePaidInvoices","isDocumentTypeCreditMemo","getDocumentDateRangeFormatted","ActivityStartDate","ActivityEndDate","getDateFormatted","formatDate","format","isCreditMemoSameDate","isConsolidated","billingDocument","IsStatementConsolidated","IsConsolidatedBilling","customerId","BillingGroupName","getDocumentTypeText","noValueStr","pastDueStatusText","cssClass","paymentOptionId","amountBalance","amountPaid","dueDate","isRebilled","rebilledText","parseFloat","pstNowDate","DateUtils","getPSTDateNow","pastDueDay","getDateDiffInDays","billingUrlBuilder","billingDocumentId","advertiserCustomerId","billtoCustomerId","accountId","accountNumber","methodId","dualInvoiceType","requireINTaxInvoice","params","systemId","withoutAid","absoluteUrl","dateRangeFormatted","documentTypeText","urls","paymodErrorCode","heading","description","helpAction","helpQuery","actions","paymentMethodUrl","paymentMethods","aid","payNowUrl","payNow","prepayUrl","addFunds","managePaymentMethodAction","changePaymentMethodsAction","makeManualPaymentAction","makeManualPaymentPrepayAction","unshift","isDesignatedBillingSummary","billingSummary","isPrepayBillingSummary","isThresholdBillingSummary","isInvoiceBillingSummary","isCouponBillingSummary","getDesignatedBillingSummaryFactory","billingSummaries","getDesignatedBillingSummary","addBasename","isConsolidatedBilling","accountName","accountLink","current","amount","amountNumber","parseDecimal","formatDecimal","minimumFractionDigits","maximumFractionDigits","documents","documentInfos","documentIdAttribute","DocumentIdAttribute","documentInfosIdAttribute","documentInfo","extendOwn","normalizeIncludeCampaignDetailsValue","denormalizeIncludeCampaignDetailsValue","billingGroups","b","billingGroupId","BilltoCustomerId","Description","sapId","SapId","Address","taxInformation","languageId","LanguageId","companyCode","includeCampaignDetails","IncludeCampaignDetails","accounts","Accounts","ungroupedAccounts","a","potentialBillingGroups","PotentialBillingGroups","g","Key","Value","billingGroupInfo","isInWhiteList","billtoSapId","businessAddress","sharedGroupingCriteria","GroupingCriteria","whiteListGroupingCriteria","nonWhiteListGroupingCriteria","getActiveCoupons","coupons","coupon","StatusId","getUpfrontSpendingCoupons","first","couponType","upfrontSpendThreshold","UpfrontSpendThreshold","CurrentUpfrontSpend","currentUpfrontSpend","isAccountTaxable","getAssociatedCouponExpirationDate","ExpiryDateFromAssociation","ExpiryDate","isExpired","associatedCouponExpirationDate","performanceCoupon","upfrontSpend","formatCurrency","StringUtils","isStringNotBlank","regexTest","TaxDocumentStatusI18nMap","Cancelled","inlineFormatLocalizedTaxInfo","TaxInfoLabels","TaxExemptionCertVerifiedResult","getTaxTypeTaxOptionMap","permissions","EMEAVatIdRequiredCountries","EMEAVatIdRequiredCountriesForB2C","checkEMEAVatIdRequiredStatus","countryPilotMapping","pilotId","dynamic","taxOption","getOptionalLabel","getStateTaxIDOptional","getRequiredLabel","getRequiredForAllTheEntitiesLabel","getRequiredForBusinessLabel","getRequiredForVATRegisteredBusinessLabel","getRequiredForValueAddedTaxIVARegisteredLabel","getRequiredForIVAorVATTaxPayerLabel","getTaxTypeLabel","taxType","labelFormat","TaxLabelFormat","taxTypeToLabelMap","getTaxTypeToLabelMap","taxTypeLabelKey","taxTypeLabel","taxCertLabel","taxCertOptional","mapToLocalizedTaxInfo","taxInfoKeyValue","mapToLocalizedTaxInfos","taxInfoKeyValues","partial","localizedTaxInfo","TaxOptionTypeToLabelMap","taxOptionLabelKey","taxInfos","otherTaxInfos","hasPropertyKeys","taxInfoArray","taxInfo","hasUniqueKeys","unique","otherTaxInfo","brazilEnfStatus","hasRussiaDAF","indiaEInvoicingStatus","status","indiaEInvoicingStatusKey","brazilEnfLink","indiaEInvoicingLink","urlBuilders","BillingUrlBuilder","fundingAmount","estimatedTaxRate","currentBalance","isFinite","taxAmount","appliedAmount","finalBalance","postTaxAmount","tax","taxingAmount","findCountry","isTaxableCountry","cpfId","v1","v2","v1Coefficients","v2Coefficients","getCPFDigit","index","cnpjId","getCNPJDigit","v1Digit","v2Digit","isCOVatNumberValid","TaxCOVatNumberRegExp","isAEVatNumberValid","TaxAEVatNumberRegExp","isAUGSTNumberFormatValid","TaxAUGSTNumberRegExp","weights","sum","digit","substring","isCOCertExecutionDateValid","TaxCOCertificateExecutionDateRegExp","isSGGSTNumberValid","TaxSGGSTNumberRegExp","isNZGSTNumberValid","TaxNZGSTNumberRegExp","isPANNumberValid","TaxINPANNumberRegExp","isPIBNumberValid","TaxRSPIBNumberRegExp","isRSLegalNumberValid","TaxRSLegalNumberRegExp","isIndiaGSTINValid","TaxINGSTINRegExp","isThailandVATValid","TaxTHVATRegExp","isNigeriaVATValid","TaxNGVATRegExp","isCanadaBCPSTNumberValid","TaxCABCPSTNumberRegExp","isCanadaQCQSTNumberValid","TaxCAQCQSTNumberRegExp","isCanadaMBPSTNumberValid","TaxCAMBPSTNumberRegExp","isCanadaSKPSTNumberValid","TaxCASKPSTNumberRegExp","isCanadaGSTNumberValid","TaxCAGSTNumberRegExp","isIEValid","TaxIERegExp","chileVATNumber","isChileVATFormatValid","TaxChileVATRegExp","strList","split","num","checkDigit","j","expectedCheckDigit","inlineformattedTaxInfo","getAvailableTaxTypes","taxSchema","taxInfoUIObject","availableTaxTypes","normalizeTaxExemptionCertVerifiedResult","MTValue","normalizeAttestationValue","getTaxFilters","ignoredKeyFilter","ignoredKeyValuePairFilter","emptyValueFilter","taxInformationFiltered","acc","taxId","taxInfoLabelMap","normalizedValue","taxInfoLabel","taxInformation1","taxInformation2","convertToLowerCase","taxInformation1Filtered","taxInformation2Filtered","customer","isAggregatee","AggregatorName","getHierarchyCustomer","DirectManagers","getCustomerProfileValue","customerProfile","customerProfilePropertyType","profile","CustomerProfilePropertyList","numberOfBillToInvoiceAccounts","numberOfBillToPrepayAccounts","numberOfBillToThresholdAccounts","isOptedInConsolidatedBilling","isOptedInCampaignDetails","totalNumberOfBillToAccounts","propertyType","isInAppScope","appScope","isUnmanagedCustomer","ServiceLevel","hierarchyCustomer","IsFraudAppealPage","pageSuffix","fraudPageId","fraudPage","currentUrl","targetUrl","path","NaN","isDateWithoutTimeEqual","isPendingTakeoverBillingIO","insertionOrder","selectedIO","parseDate","DisplayAccountName","defaultIO","mtIOEditableMap","isIOValid","ioValidationFields","isIOItemNeedValidation","every","insertionOrders","isUnlimitedIOBudget","spendCapAmountValue","UnlimitedBudget","isEndlessIOEndDate","endDateValue","startDateValue","getSpendCapAmountNumber","unlimitedStringKey","spendCapAmountNumber","isNull","formatDecimalToFixed","noEndDateStringKey","column","iolabel","alert","alertStatus","alertColor","alertIcon","getLanguageName","languageValue","extendLanguage","languages","language","PaymentStatusI18nMap","getCardNumberLast4Digits","substr","getCreditCardDisplayName","pi","displayNameKey","cardTypeKey","CardTypeId","CardType","cardType","cardCategory","last4","getInvoiceDisplayName","stringFormat","SAPCustomerName","customerName","invoiceId","InvoiceId","getPayPalDisplayName","Email","email","getSepaDisplayName","friendlyName","getOfflineDisplayName","getBoletoDisplayName","getVBADisplayName","getDisplayNameDict","ExpirationDate","setMonth","isOnHold","LifecycleStatusId","isPurged","IsPurged","isIndiaPI","formatExpDate","yearString","monthString","getDisplayNameFunc","Type","getCardStatusDisplay","OnHoldDate","paymentOptionIds","paymentMethodText","paymentInstrumentTypeId","paymentInstrAccountNumber","paymentInstrFriendlyName","paymentInstrCardTypeId","sapCreditRemaining","sap","matchCurrencyCode","IsCLEOn","CreditLimit","SAPBalance","creditRemaining","SAPSpendRunRate","isPiValidated","isPiType","piType","isCreditCard","isInvoice","isBoleto","isOfflinePaymentMethod","isSepa","isPaypal","isNukePIInvalid","NukedPIStatus","isNukePIShowButton","getPiCountry","backupPi","primaryPi","IsTaxable","extendPi","cardStatus","isValidated","piList","piListExtended","activePis","expiredPis","onHoldPis","piTypeId","findKey","paymentOptionString","p","paymentTransactionStatus","hasPaymodError","sapApplications","types","statuses","sapApplicationType","sapApplicationStatus","onlinePiTypes","offlinePiTypes","paymentInstruments","paymentInstrument","SupportsPostpay","pilots","poKeySelector","keySelector","isUnifiedProductMonthlyInvoiceEnabled","UnifiedProductMonthlyInvoice","isEscPrepayEnabled","ESCPrepay","option","permissionMap","permission","hasPermission","cleansedDomain","CleansedDomain","domainData","d","FCAAccountDomainStatus","UIExternalRoles","AdvertiserManager","RoleId","IsAccountScope","IsObsolete","CanBeSwitchedOut","ApiUser","SmbAggregatorAgency","SuperAdmin","AdvertiserAdmin","ClientAdmin","ClientViewer","StandardUser","roles","role","where","roleId","getUserDisplayByUser","user","names","nameString","emailString","users","userDisplay","FirstName","LastName","ccRootUrl","resourceNames","restfulService","RestfulServiceBase","jsDataRestStore","JsDataRestStore","cleanedCcRootUrl","emptyUrl","selectedResources","staticResourceConfig","config","defineRestResource","uriPath","isSupportUIAPI","jsDataCcRest","definitions","AccountBackupIOConfig","primaryKey","AccountBudgetCenterInformation","AccountFeatureSet","AccountFeatureEnabled","AccountsFetchUnderTheSameABL","AccountIOAutoApproval","AccountIOForecastingDailySpend","AccountsInfoForAgency","AccountAddOnBehalfOfAgencyContext","AccountFundingInfo","AccountIdentityVerification","AccountIdentityVerificationInfo","AccountIdentityVerificationOnfidoToken","AccountIdentityVerificationOnfidoNameComparison","AccountIdentityVerificationRetriggerBusinessVerification","AccountIdentityVerificationStateOverride","AccountIdentityVerificationHoldOverride","AccountIdentityVerificationAppeal","AccountIdentityVerificationAppealDecision","AccountLevelAPContact","AccountMap","AccountPaymentInformation","AccountReparentingJobLoad","AccountReparentingLoadAccounts","AccountReparentingJobSubmit","AccountReparentingJobAdd","AccountReparentingJobUpdate","AccountReparentingValidateAccounts","AccountReparentingValidateTargetCustomer","AccountReparentingValidateLinkInfo","AccountReparentingValidateBillingInfo","AccountReparentingFullValidate","ActivateAPContact","AddressLoadCountry","AdjustmentDocument","AdjustmentNewAdjustment","AgencyBulkLinkJobUpdate","AgencyLinkRequest","AgencyRequest","AgencyRequestBulkAction","AgencyLinkedCustomers","AncestorHierarchyPath","AssociateAndRedeemCoupon","AssociateCoupon","BAARecommendations","Balance","BillingGroup","BillingGroupAccount","BillingSPABatchDownload","BillingStatements","BillingSummary","BillingSummaryForAccounts","BillingSettings","BillingSettingsUser","BillingSettingsAddress","BillingSettingsUpdate","BillingTile","BillNow","BillNowForMca","BudgetInsightsAndAlerts","BulkCreateInsertionOrderViewData","BulkCreateInsertionOrder","BulkCustomerLinkJob","BulkEstimateTaxes","BulkGetPrimaryContacts","BulkLinkingCustomerInfo","BulkLinkJob","BulkLinkJobUpdate","BulkPrepayPaymentParams","BulkUpdatePrimaryContacts","BusinessAddressLoadCountry","CampaignBudgetCenterInformation","CampaignBudgetSummaryGrid","CampaignPerformanceBudget","CanTriggerFCAVerification","CheckBillingGroupNameAvailability","CleanDomain","ClearBalance","CountryCurrenciesMapping","CountryTaxTypesMapping","CountryMapping","Coupon","CountryTimeZonesMapping","CouponRedemptionsAndAssociations","ChannelPartnerPaymentContext","CNAccountVerification","CNAccountVerificationSummary","CNPredicateAccountVerificationStatus","CNLackedQualifications","CNVerificationGridData","CNVerificationIndustryList","CNVerificationQualification","CreateApiUser","CreateCustomer","Currencies","CurrenciesByCountry","CurrencyCountriesMapping","CurrencyExchangeRate","CustomerAccess","CustomerAccountSignupOnBehalfOf","CustomerAccountSignupOnBehalfOfAgencyContext","CustomerAddress","CustomerAddresses","CustomerFeatureDetail","CustomerFeatureEnabled","CustomerFeatureEnabledSet","CustomerHierarchy","CustomerInfo","CustomerLinkPermission","CustomersManagement","CustomerProfile","DailyRemainingCreditLimit","DeleteCtpPI","DeletePI","DeleteFCAVerification","DelinkAccountRequest","DomainDataAdjustmentReason","DomainDataCountry","DomainDataCurrency","DomainDataEmailFreeHostDomain","DomainDataIndustry","DomainDataLanguage","DomainDataBillingLanguage","DomainDataGeography","DomainDataSubGeography","DomainDataTimeZone","DomainDataCountryCodeCompanyCode","EditUserViewModel","EditUser","EmailTokenValidation","EstimateTaxes","EstimateTaxesAllPayments","ExpertAccount","ExportAccountTransferSummary","FeatureAdoptionCoupon","FraudCustomerInfo","FraudCustomerOptInAiv","FraudCustomerVerificationInfo","GetCouponDetails","GetCouponRedemptionsAndAssociations","GetCouponStringForSignup","GetCouponValidForCustomerWebsite","GetCustomers","GetPrimaryContacts","HierarchyCustomersAccounts","HierarchyLinkRequest","IOImportHistory","IOImportSummary","IOImportApplyOrCancel","IndiaEInvoicingGenerationValidation","InsertionOrdersGridData","InsertionOrdersGridColumnChooserData","InsertionOrdersGridFilterData","InsertionOrdersMenuData","InsertionOrderPermission","InsertionOrder","InviteUser","LoadAllProfilesForPayee","LoadBillingGroupCandidates","LoadUngroupedAccounts","LocationData","LinkRequest","ManagersModel","MandateAgreementRequired","McaPaymentContexts","MultiUserAuthorize","MultiUserCustomer","NavbarTab","OfflinePaymentInstructions","PaymentOptions","PaymentSettingSwitch","PendingBillToChangeLight","PermissionAccount","PermissionCustomer","PersonHistory","PilotFeatures","PrimaryContacts","PutPayeeAndGetToken","RebillDocumentInfo","Recommendation","RecurringInsertionOrderViewData","RequestDetailsModel","RequiredTopUpAmount","ResendAPContactValidation","RiskControl","SAPApplication","SAPApplicationLight","SAPApplicationByCustomerId","SAPCreditLimit","SAPHighestMonthlySpend","SAPLightInfo","SaveCouponStringForSignup","SearchAccountMap","SetFCADomainStatus","SettingsEmailNotification","SettingsEmailNotificationCategory","SettingsUserPreference","SetXandrSellerDefaultPayment","ShowLightBox","SignupAggreementOptions","SmartSignupAggreementOptions","SmartAccountStatus","SPAGetPaymentStatusAlerts","StatusNotification","SubmitBulkUnlinkAccounts","SubmitPayeeToMDG","SwitchPaymentSetting","TopUp","TopUpLimit","TradeScreeningAccountEntity","TradeScreeningCustomerEntity","TradeScreeningUserEntity","TransactionHistory","UCPOfflineRefund","UKFCAVerification","UnifiedQueueNotification","UnifiedSmartAccountStatus","UpdateAccountsInBillingGroup","UpdateApiUserType","UserRole","UserPreference","ValidateCustomerNumbersForLinking","ValidateXandrBafMembers","VerifyBusinessAddress","VerifyCustomerSpendRequirement","VerifyEmailTokenValidation","VerifySAPCustomerUniqueness","VerifyTaxInformation","XandrAccount","XandrBaf","XandrBafMembers","XandrBafChangeRecord","XandrSellerBankAssociationProfile","XandrSellerBankAssociationRelationship","YahooToken","preloadJsDataCache","jsData","preloadList","entitiesToClear","preloadCallback","entityObj","ejectAll","entity","then","ready","newAdjustmentReasons","isUndefined","findAll","AdjustmentsUtils","mapNewAdjustmentReasons","sortedCountries","findCountries","CountryUtils","sortCountries","groupedCountries","groupCountriesByCallingCode","escCountries","c","HasESCSupport","Constants","sortedCurrencies","CurrencyUtils","CustomerUtils","parseCustomerProfile","securityActions","PermissionUtils","getPermissionMap","userId","uid","biDateRangeFilter","userPreference","upkey","resultAsJsonString","preferenceJson","decodeURIComponent","BIDateRangeFilter","e","SyntaxError","trace","legalBusinessName","bypassCache","agencyCustomerId","PreferredBillToPaymentInstrumentId","catch","featureName","res","features","FileUtils","convertToFormData","FormData","finalOptions","useFormDataFormat","processData","contentType","dataType","RestfulService","constructor","cidFetcher","uidFetcher","ccuiAlertCenter","handleAjaxAuthFailure","appendErrorSummary","ajaxSuccess","willSupportCors","uri","settings","http","post","put","patch","delete","this","Http","defaultSetting","__adcenterAJAX","onsuccessEventData","traditional","silent","antiForgeryTokenKey","cb","extendedOptions","headers","xhrFields","withCredentials","antiForgeryTokenInput","querySelector","antiForgeryToken","method","addAntiForgeryToken","beforeSend","ajaxHelper","success","complete","cidUidQueryParam","integrateUri","defaultValue","param","URI","addQuery","appendQuery","ajax","signature","opt","callback","op","AjaxHelper","noop","wrap","func","xhr","useAlertCenter","alertId","dismiss","onSuccess","textStatus","Info","Confirmation","appendSuccess","appendInfo","appendWarning","onJsonError","Alert","onAjaxError","errorThrown","onAjaxComplete","ccBaseUrl","FwLinkBaseUrl","CampaignAzureDomain","UrlHelper","TermsAndConditionsUrl","getTermsAndConditionsUrl","getForwardLink","getErrorPageUrl","getSAPApplicationSupportingDocumentUrl","getAccountTaxCertificationUrl","getCampaignPageUrl","BaseUrlBuilder","getDefaultIsShortUrl","aidFetcher","ccBaseUrlWithoutCC","slice","getCustomerUrl","controllerName","actionNames","hash","rurl","isShortUrl","isShortUrlValue","ccBaseShortUrl","segment","createClientCenterUri","contextQuery","setSearch","appendContextParams","appendRedirectUrl","shortUrl","appendHash","AbstractUrlBuilder","getUrlMethod","configs","paramsPairs","instance","AccountSettingsUrlBuilder","actionName","hashUrlBuilder","AccountSettingsEditUrlBuilder","AccountsUrlBuilder","AccountUrlBuilder","AdjustmentsUrlBuilder","AgencyUrlBuilder","BoletoUrlBuilder","CreditHoldUrlBuilder","CustomersUrlBuilder","ManagerAccountSettingsUrlBuilder","ManagerAccountSettingsEditUrlBuilder","ManagersUrlBuilder","MandateAgreementRequiredUrlBuilder","MySettingsUrlBuilder","InsertionOrderUrlBuilder","PaymentUrlBuilder","PaymentmethodsUrlBuilder","RebillUrlBuilder","UKFCAUrlBuilder","UsersUrlBuilder","WelcomeUrlBuilder","SAPOnboardingUrlBuilder","TradeScreeningTransformationUrlBuilder","NotificationUrlBuilder","BillingApiUrlBuilder","ApiAccountUrlBuilder","ApiCashbackapprovalUrlBuilder","ApiFileUrlBuilder","ApiPaymentInstrumentUrlBuilder","FraudAppealAIVUrlBuilder","FraudAppealAIVWelcomeUrlBuilder","getLogoutUrl","ccBaseShortUrlWithoutCC","LogoutUrlBuilder","getLoginBlockedUrl","LoginBlockedUrlBuilder","fwLinkBaseUrl","linkid","addSearch","campaignAzureDomain","searchParams","href","requestId","previousUrl","reqid","previousurl","SAPApplicationId","fileName","hashQuery","fragment","blobContainerName","certificationName","window"],"sourceRoot":""}