{"version":3,"sources":["../webpack/bootstrap","../../../../../../../../external/prop-types","../../../../../../../../external/hoist-non-react-statics","../../../../../../../../external/@bingads-webui-react/hoc-utils","../../../../../../../../external/@bingads-webui-react/hoc-with-instrumentation","../../../../../../../../external/react","../webpack-src:/hoc-with-signal/index.js","../webpack-src:/hoc-with-signal/src/with-signal.js","../webpack-src:/hoc-with-signal/src/activity-context-provider.js","../webpack-src:/hoc-with-signal/src/scenario-context-provider.js","../../../../../../../../external/underscore","../webpack/universalModuleDefinition","../webpack-src:/with-state-store/index.tsx","../webpack-src:/with-state-store/src/with-state-store.tsx","../../../../../../../../external/@bingads-webui/state-store","../webpack-src:/hoc-with-permissions/index.js","../webpack-src:/hoc-with-permissions/src/with-permissions.js","../webpack-src:/hoc-with-permissions/src/context.js","../../../../../../../../external/bluebird","../webpack-src:/restful-service/index.js","../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","../../../../../../../../external/urijs","../../../../../../../../external/@bingads-webui-clientcenter/common-utils","../webpack-src:/hoc-with-instrumentation/index.js","../webpack-src:/hoc-with-instrumentation/src/hoc.js","../webpack-src:/hoc-with-instrumentation/src/context.js","../webpack-src:/fabric-with-signal/index.js","../webpack-src:/fabric-with-signal/src/with-signal-fabric.js","../../../../../../../../external/@bingads-webui-react/hoc-with-signal","../webpack-src:/fabric-with-signal/src/render-logger.js","../../../../../../../../external/@bingads-webui-react/fabric-control","../webpack-src:/error-mapper/index.js","../webpack-src:/error-mapper/src/index.js","../webpack-src:/error-mapper/src/error-messages.js","../webpack-src:/error-mapper/src/error-handlers.js","../webpack-src:/error-mapper/src/get-message-for-code.js","../webpack-src:/error-mapper/src/get-error-from-raw.js","../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:/fabric-control/index.js","../webpack-src:/fabric-control/src/controls.js","../../../../../../../../external/@fluentui/react","../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","../../../../../../../../external/@bingads-webui-clientcenter/window-interface","../../../../../../../../external/jquery","../../../../../../../../external/@bingads-webui-universal/primitive-utilities","../webpack-src:/global-error-boundary/index.js","../webpack-src:/global-error-boundary/src/global-error-boundary.js","../webpack-src:/hoc-utils/index.js","../webpack-src:/hoc-utils/src/utils.js","../webpack-src:/help-popup/index.js","../webpack-src:/help-popup/src/help-popup.js","../webpack-src:/help-popup/src/help-popup-inline.js","../../../../../../../../external/classnames","../../../../../../../../external/@bingads-webui-react/i18n-context","../../../../../../../../external/@bingads-webui-react/with-default-styles","../webpack-src:/help-popup/src/help-button.js","../webpack-src:/app-global-error-view/index.js","../webpack-src:/app-global-error-view/src/index.js","../webpack-src:/app-global-error-view/src/style/get-style.js","../webpack-src:/app-global-error-view/src/style/global-error-icon.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:/viewmodel-schema/index.js","../webpack-src:/viewmodel-schema/src/index.es","../webpack-src:/viewmodel-schema/src/field.es","../webpack-src:/viewmodel-schema/src/default-value.es","../webpack-src:/viewmodel-schema/src/validation/index.es","../../../../../../../../external/@bingads-webui/validation","../webpack-src:/viewmodel-schema/src/validation/rules-factory/base-factory.es","../webpack-src:/viewmodel-schema/src/validation/rules-factory/enum-factory.es","../webpack-src:/viewmodel-schema/src/validation/rules-factory/number-factory.es","../webpack-src:/viewmodel-schema/src/validation/rules-factory/string-factory.es","../webpack-src:/viewmodel-schema/src/validation/rules-factory/array-factory.es","../webpack-src:/viewmodel-schema/src/conversion/index.es","../webpack-src:/viewmodel-schema/src/conversion/convertor-factory/base-factory.es","../webpack-src:/viewmodel-schema/src/conversion/convertor-factory/number-factory.es","../../../../../../../../external/@bingads-webui-clientcenter/restful-service","../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","../../../../../../../../external/@bingads-webui/url-util","../webpack-src:/js-data-cc-rest-base/src/static-resource.js","../webpack-src:/js-data-cc-rest-base/src/utils.js","../webpack-others:/d:/dbs/el/actc/private/components/packages/window-interface/index.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","__WEBPACK_EXTERNAL_MODULE__10__","__WEBPACK_EXTERNAL_MODULE__125__","__WEBPACK_EXTERNAL_MODULE__126__","__WEBPACK_EXTERNAL_MODULE__18__","__WEBPACK_EXTERNAL_MODULE__3__","_withSignal","_activityContextProvider","_scenarioContextProvider","_react","_interopRequireDefault","_underscore","_propTypes","_hoistNonReactStatics","WrappedComponent","SignalAdaptor","HoC","React","Component","[object Object]","args","super","shimmedProps","_","map","keys","event","e","this","props","activity","signal","assign","default","createElement","_extends","propTypes","PropTypes","defaultProps","undefined","withActivityContext","currentTarget","className","id","text","innerText","checked","data-analyticsid","dataset","analyticsid","target","_interopRequireWildcard","_hocUtils","ActivityContext","createContext","Activity","context","useContext","ScenarioContext","activityContext","useMemo","createActivity","Provider","children","oneOfType","arrayOf","node","isRequired","string","Consumer","displayName","getDisplayName","_hocWithInstrumentation","Scenario","instrumentation","InstrumentationContext","scenarioInstance","createScenario","scenarioName","parentScenario","scenario","__WEBPACK_EXTERNAL_MODULE__9__","factory","self","__WEBPACK_EXTERNAL_MODULE__7__","__WEBPACK_EXTERNAL_MODULE__31__","__WEBPACK_EXTERNAL_MODULE__194__","_withStateStore","ComponentToWrap","storeFactory","selector","store","select","storeName","res","PureComponent","state","createStore","subscribe","unsubscribe","_stateStore","StateStore","subscription","_a","closed","setState","extend","ref","forwardedRef","forwardRef","__WEBPACK_EXTERNAL_MODULE__119__","__WEBPACK_EXTERNAL_MODULE__120__","_withPermissions","_context","PermissionsContext","permissions","__WEBPACK_EXTERNAL_MODULE__15__","__WEBPACK_EXTERNAL_MODULE__16__","_index","_commonUtils","_http","buildFormData","FileUtils","convertToFormData","data","FormData","finalOptions","options","defaultOptions","useFormDataFormat","processData","contentType","dataType","isString","JSON","stringify","defaults","constructor","_this","cidFetcher","uidFetcher","ccuiAlertCenter","handleAjaxAuthFailure","appendErrorSummary","ajaxSuccess","willSupportCors","arguments","length","_defineProperty","uri","settings","http","attrs","post","put","patch","delete","Http","_bluebird","_urijs","_httpUtil","_ajaxHelper","defaultSetting","__adcenterAJAX","onsuccessEventData","traditional","silent","antiForgeryTokenKey","_ref","cb","extendedOptions","defaultCorsHeaders","X-Requested-With","headers","defaultCorsXhrFields","withCredentials","xhrFields","antiForgeryTokenInput","document","querySelector","concat","antiForgeryToken","method","result","append","addAntiForgeryToken","beforeSend","ajaxHelper","success","error","complete","cidUidQueryParam","isFunction","cid","uid","integrateUri","defaultValue","param","isObject","params","URI","addQuery","toString","appendQuery","ajax","then","Errors","Promise","reject","resolve","_len","Array","_key","url","opt","callback","signature","op","AjaxHelper","__WEBPACK_EXTERNAL_MODULE__524__","noop","wrap","func","xhr","useAlertCenter","alertId","dismiss","onSuccess","textStatus","isEmpty","Info","Confirmation","appendSuccess","appendInfo","appendWarning","onJsonError","Alert","onAjaxError","errorThrown","onAjaxComplete","__WEBPACK_EXTERNAL_MODULE__70__","__WEBPACK_EXTERNAL_MODULE__71__","_hoc","_withSignalFabric","forEach","_renderLogger","_fabricControl","_hocWithSignal","PrimaryButton","withSignal","FabricPrimaryButton","onClick","CommonEventParser","DefaultButton","FabricDefaultButton","ChoiceGroup","FabricChoiceGroup","onChange","Link","FabricLink","SearchBox","FabricSearchBox","Dropdown","FabricDropdown","FabricDropdownParser","TextField","FabricTextField","Checkbox","FabricCheckbox","Toggle","FabricToggle","IconButton","FabricIconButton","__WEBPACK_EXTERNAL_MODULE__406__","RenderLoggerInternal","title","useEffect","Fragment","shape","RenderLogger","__WEBPACK_EXTERNAL_MODULE__5__","__WEBPACK_EXTERNAL_MODULE__6__","_errorMessages","_errorHandlers","_getMessageForCode","_getErrorFromRaw","InvalidValue","_TL_","ad","title1","business","errorPropertyReg","getParsedIndexAndProperty","errorProperty","index","exec","rawError","entity","field","getErrorMessage","useServerErrorMessage","errors","isArray","responseJSON","entityErrors","errProperty","Property","errField","errorCode","Code","message","serverErrorMessage","Message","errMsgObj","ErrMsgObj","clientId","ClientId","push","defaultErrorCode","ResultType","FieldId","getMessageForErrorCode","i18n","errorMap","getString","logTrace","logError","getErrorFromRaw","errorMapper","getMessageForErrorCodeFn","isNumber","ccErrorHandler","odataErrorHandler","ERROR_MESSAGES","_addressMetadata","AddressUtils","Constants","RuleName","maxLength","minLength","required","match","AddressFields","Line1","Line2","Line3","Line4","City","StateOrProvinceName","PostalCode","CountryName","defaultLine1","label","visible","order","defaultLine2","defaultLine3","defaultLine4","defaultCity","defaultStateOrProvince","defaultBlockDisplayFormat","defaultAddressForOptionalStateOrProvinceCountries","StateOrProvince","BlockDisplayFormat","defaultAddressForOptionalProvinceAndPostalCodeCountries","optionalStateOrProvinceCountriesMetadata","reduce","prev","curr","_objectSpread","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","_abl","AddressProperties","toArray","getMetadata","countryCode","inlineFormatOfProperties","address","properties","_separator","memo","addressField","trim","separator","findLatestValidatedAddress","addressList","max","IsValid","ValidationVersionId","TimeStamp","isBoolean","byte","join","exists","Country","isNotEmpty","any","blockLinesFormat","metadata","compact","line","contains","inlineFormat","inlineFormatWithBusinessName","BusinessName","dropdownFormat","twoLinesFormat","line1","line2","validateAndReturnError","isOptional","ruleName","each","addressProperty","ruleValueRequired","ruleValueMaxlength","ruleValueMinLength","ruleValueMatch","errorList","ruleValue","chain","mapObject","pick","identity","isValid","businessNameIsValid","businessName","BusinessNameMaxLength","isValidBusinessName","accountBusinessAddress","normalizeAddress","fieldValue","has","address1","address2","forceNormalized","propertiesToCompare","addressToCompare1","addressToCompare2","all","field1","field2","Boolean","fieldsMatch","_address","includedAddressIds","addressFormatter","addressValidator","validAddressList","filter","formattedIncludedAddresses","includes","Id","formatted","_ref2","groupBy","targetAddressId","targetAddress","findWhere","formattedTargetAddress","_ref3","validatedAddress","omit","_ref4","getCityStateCountryString","_controls","_react2","_exportNames","initializeIcons","ContextualMenu","__WEBPACK_EXTERNAL_MODULE__20__","DateUtils","FormUtils","NumberUtils","StringUtils","LogUtils","_date","_grid","FrequencyMonthCountMap","freeze","Monthly","BIMonthly","Quarterly","Yearly","FrequencyDayCountMap","FrequencyMonthI18nKeyMap","_temporalUtitlities","_primitiveUtilities","_windowInterface","getToday","todayObj","timeZone","Date","year","month","day","fromDate","toDate","isDate","Math","ceil","MillisecondsPerDay","offset","getTime","range","start","end","rangeId","dateFormat","StandardDateFormat","formatCivilDate","date","_ref5","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","reader","FileReader","onload","Uint8Array","readAsArrayBuffer","formData","parentKey","Blob","Number","subKeyFormatter","containsFile","values","some","fields","form","setAttribute","hiddenField","appendChild","addInputToForm","body","submit","_jquery","precision","needPercentageSymbol","needSpace","isValidWholeNumber","numberValue","number","floor","String","source","$","isNumeric","toFixed","divisor","dividend","hasFlag","flag","_numberUtils","str","replace","html","toLowerCase","arr","bytes","btoa","fromCharCode","regexStr","RegExp","test","_dateUtils","agencyRequestsPage","settingsPage","content","userInfo","emailNotification","billing","emailNotificationCategory","emailNotificationCategorySave","emailNotificationCategoryAccountFetch","emailNotificationCategoryAccountSelectorRender","emailNotificationCategoryAccountSelectAll","emailNotificationCategoryAccountFilter","emailNotificationUserSelectorRender","logging","pageReadyMark","pageLoadDurationRecorded","pageNavigationStartTime","pageNavigationRecorded","pageRoutePageLoadDuration","location","pathname","getTimestampMillis","pageLandingPath","mark","__WEBPACK_EXTERNAL_MODULE__25__","__WEBPACK_EXTERNAL_MODULE__35__","__WEBPACK_EXTERNAL_MODULE__77__","_globalErrorBoundary","GlobalErrorBoundary","hasError","componentDidCatch","info","render","renderErrorView","errorViewProps","style","display","instanceOf","_package","_utils","__WEBPACK_EXTERNAL_MODULE__4__","__WEBPACK_EXTERNAL_MODULE__21__","__WEBPACK_EXTERNAL_MODULE__22__","__WEBPACK_EXTERNAL_MODULE__23__","_helpPopup","_helpPopupInline","_helpButton","preventDefault","stopPropagation","window","PopupController","PopupJsClick","HelpPopup","_props$i18n","aria-label","aria-labelledby","href","topic","type","role","aria-roledescription","_classnames","_i18nContext","_withDefaultStyles","InlineHelpUnstyled","classes","withoutSpace","ariaLabel","I18nContext","inlineHelp","withSpace","bool","HelpPopupInline","withDefaultStyles","components","palette","iconFontFamily","fontSize","fontWeight","& .helpbutton","paddingTop","paddingLeft","&::before","fontFamily","position","top","&:focus","outline","outlineColor","neutralSecondary","border","color","black","textDecoration","&:hover","backgroundColor","neutralLighter","&:active","neutralLight","marginLeft","HelpButtonUnstyled","helpButton","HelpButton","cursor","themePrimary","padding","&:before","__WEBPACK_EXTERNAL_MODULE__11__","_src","_getStyle","UnthemedGlobalErrorView","_this$props","description","errorPage","errorPageContent","errorPageIcon","errorPageTxtContent","errorPageTxtTitle","txt","errorPageTxtDesc","GlobalErrorView","getStyle","_globalErrorIcon","width","height","minWidth","white","left","transform","-webkit-transform","backgroundImage","iconBase64","backgroundSize","neutralPrimary","marginTop","errorPageTxtRefresh","ABLUtils","AccountIdentityVerificationUtils","AccountUtils","AdjustmentsUtils","BillingUtils","ConsolidatedBillingUtils","CountryUtils","CouponUtils","CurrencyUtils","CustomerUtils","FraudAppealUtils","InsertionOrderUtils","LanguageUtils","PaymentUtils","PermissionUtils","TaxUtils","UKFCAVerificationUtils","UserRoleUtils","UserUtils","_accountIdentityVerification","_account","_accountVerifications","_adjustments","_billing","_budgetCenter","_campaign","_common","_consolidatedBilling","_country","_coupon","_currency","_customer","_insertionOrder","_language","_linking","_notification","_payment","_permission","_recommendation","_regularExpression","_tax","_ukFcaVerification","_tradeScreeningTransformation","_dsaEnforcement","_errorCode","_settings","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","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","CPF","CNPJ","GSTINNumber","PANNumber","VatNumber","NZGSTNumber","AUGSTNumber","CCM","GSTNumber","PSTNumber","QSTNumber","LegalIdentifier","IE","UIN","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","minimum","maximum","ExtendDays","BackupSpendCapAmount","nullable","Occurrences","Name","EndByDate","NoEndDate","EndByOccurrences","IOFilter","AccountPaused","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","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19","20","21","22","23","24","25","26","27","28","29","30","31","32","33","34","35","36","37","38","39","40","41","42","43","44","45","46","47","48","49","50","51","52","53","54","55","56","57","58","60","61","62","63","64","66","67","68","69","70","71","72","73","74","75","76","77","78","79","80","81","82","83","84","85","86","87","88","89","90","91","92","93","94","95","96","97","98","99","100","101","102","103","104","105","106","107","108","109","110","111","112","113","114","115","116","117","118","119","120","121","122","123","124","125","126","127","128","129","130","131","132","133","134","135","136","137","LinkType","AdAccount","ManagerAccount","LinkPermissionType","Administrative","Standard","LinkRequestType","Unlink","BillingTakeover","AccountTransfer","HierarchyAccountTypeValue","HierarchyAccountType","invert","NotificationType","InsertionOrderBalanceDepletedEvent","InsertionOrderExpiredEvent","InsertionOrderExpiringUrgentEvent","InsertionOrderExhaustingUrgentEvent","PaymentInstrumentType","Unset","CreditCard","Check","ElectronicFundsTransfer","PayPal","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","JCB","CB","JAL","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","isValidAddress","isValidABL","businessNameData","individualInfoData","firstName","lastName","trimValue","businessNameTrimmed","firstNameTrimmed","lastNameTrimmed","normalizedKeys","normalizedAddress","accountBusinessAddress1","accountBusinessAddress2","__WEBPACK_EXTERNAL_MODULE__231__","_constants","_ablUtils","accountVerificationStatus","isInternal","AIVLabelProperty","ablVerificationStatus","statusLabel","compositeVerificationStatus","ablVerificationStatusMatchList","isAccountVerificationStatusExists","AccountVerificationStatusEnum","isABLVerificationStatusExists","_ref6","addressData","checkFullAddress","defaultStatus","targetAddressInfo","normalizeAddressList","AccountInactiveReasonsV1","item","Causes","isUnableTriggerAivReasonExists","unableTriggerAivReason","unableTriggerAivReasons","find","orderedReason","_ref7","userContext","currentUser","ParentCustomerId","IsSuperAdmin","individualDetailInfo","isAivAppealAllowed","_ref8","accountVerificationAppealInfo","AppealUCMTicket","RemainingRetryCount","isAivAppealSubmitted","_ref9","isAivAppealFailed","_ref10","_ref11","_countryUtils","account","getHierarchyAccount","managers","Managers","manager","isBillToCustomer","targetCustomerId","BillToCustomerId","isBillToAgencyCustomer","deletedReasonValueMatcher","matcher","Reason","deletedReasonCodeMatcher","isDeleted","LifecycleStatus","UILifecycleStatusLocId","AccountInactiveReasons","isCreated","activityStatus","handledAccountInactiveReasons","remainingAccountInactiveReasons","union","isManualHold","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","hierarchyAccount","toAblInfoFormat","_currencyUtils","isAddressRequired","IsAddressRequired","isVatApplicable","country","IsVatApplicable","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","moveUsInFront","pluck","phone","phoneNumberWithCallingCodeMatchResult","CallingCodeBeforePhoneNumberRegExp","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","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","getPSTDateNow","pastDueDay","getDateDiffInDays","billingUrlBuilder","billingDocumentId","advertiserCustomerId","billtoCustomerId","accountId","accountNumber","methodId","dualInvoiceType","requireINTaxInvoice","systemId","withoutAid","absoluteUrl","dateRangeFormatted","documentTypeText","urls","paymodErrorCode","heading","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","_taxUtils","getActiveCoupons","coupons","coupon","StatusId","getUpfrontSpendingCoupons","first","couponType","UpfrontSpendThreshold","upfrontSpendThreshold","CurrentUpfrontSpend","currentUpfrontSpend","isAccountTaxable","getAssociatedCouponExpirationDate","ExpiryDateFromAssociation","ExpiryDate","isExpired","associatedCouponExpirationDate","performanceCoupon","upfrontSpend","formatCurrency","isStringNotBlank","regexTest","TaxDocumentStatusI18nMap","Cancelled","inlineFormatLocalizedTaxInfo","TaxInfoLabels","TaxExemptionCertVerifiedResult","getTaxTypeTaxOptionMap","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","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","paymentTransactionStatus","hasPaymodError","sapApplications","types","statuses","sapApplicationType","sapApplicationStatus","onlinePiTypes","offlinePiTypes","paymentInstruments","paymentInstrument","SupportsPostpay","pilots","poKeySelector","keySelector","UnifiedProductMonthlyInvoice","isUnifiedProductMonthlyInvoiceEnabled","ESCPrepay","isEscPrepayEnabled","option","permissionMap","permission","hasPermission","CleansedDomain","cleansedDomain","domainData","FCAAccountDomainStatus","UIExternalRoles","AdvertiserManager","RoleId","IsAccountScope","IsObsolete","CanBeSwitchedOut","ApiUser","SmbAggregatorAgency","SuperAdmin","AdvertiserAdmin","ClientAdmin","ClientViewer","StandardUser","roles","where","roleId","getUserDisplayByUser","user","names","nameString","emailString","users","userDisplay","FirstName","LastName","__WEBPACK_EXTERNAL_MODULE__32__","_field","createField","schema","override","prop","slice","getNestedList","schemaProps","_defaultValue","_index2","getDefaultValue","validation","createValidation","conversion","createConversion","enum","clone","defaultValues","integer","boolean","array","datetime","rules","NumberFactory","decimalLength","EnumFactory","StringFactory","ArrayFactory","BaseFactory","getRuleFactoryByType","allowSpace","Validation","_validation","_baseFactory","_enumFactory","_numberFactory","_stringFactory","_arrayFactory","set","size","isPercentValue","distinguishCJK","minSize","pattern","checkXss","xss","rule","minItems","maxItems","uniqueItems","getConvertorFactoryByType","passThrough","fromModel","toModel","numberToString","numberOfDigits","stringToNumber","localizedString","isValidDecimal","__WEBPACK_EXTERNAL_MODULE__355__","ccRootUrl","resourceNames","restfulService","RestfulServiceBase","jsDataRestStore","JsDataRestStore","cleanedCcRootUrl","emptyUrl","selectedResources","staticResourceConfig","config","defineRestResource","uriPath","isSupportUIAPI","jsDataCcRest","definitions","_jsDataRest","_urlUtil","_restfulService","_staticResource","__WEBPACK_EXTERNAL_MODULE__385__","__WEBPACK_EXTERNAL_MODULE__386__","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","ready"],"mappings":"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cAAe,gBACfC,UAAW,YACXC,qBAAsB,kBACtBC,wBAAyB,qBACzBC,uBAAwB,oBACxBC,sBAAuB,mBACvBC,wBAAyB,qBACzBC,cAAe,gBACfC,iBAAkB,mBAClBC,gBAAiB,kBACjBC,kBAAmB,oBACnBxsB,OAAQ,SACRysB,eAAgB,iBAChBC,yCAA0C,2CAC1CC,cAAe,gBACfC,0BAA2B,oBAC3BC,oCAAqC,oBACrCC,sCAAuC,oBACvCC,kBAAmB,oBACnBC,0BAA2B,4BAC3BC,0BAA2B,4BAC3BC,cAAe,gBACfC,YAAa,cACbC,yBAA0B,2BAC1BC,QAAS,UACTC,0BAA2B,4BAC3BC,WAAY,aACZC,UAAW,YACXC,gBAAiB,kBACjBC,SAAU,WACVC,cAAe,gBACfC,YAAa,cACbC,WAAY,aACZC,mBAAoB,iICnGf,MAAMvY,EAAqBj/C,OAAO6gB,OAAO,CAC9C42C,uBAAwB,IACxBzC,qBAAsB,IACtB0C,aAAc,IACdC,2BAA4B,IAC5BC,8BAA+B,o+DCLN,kFACK,8FACC,mEACa,wDACP,yCACV,yJACW,qCACJ,2FACA,oDACA,2CACA,kDACE,gCACN,qDACI,0DACe,gDACf,mCACA,kCACA,6CACA,sEACA,6CACA,kCACA,wEACA,yCACA,uFACA,kCACA,yCACA,2CACA,kCACA,kCACA,mCACA,oCACA,8FACA,2CACA,qCACA,uCACA,yDACA,mCACA,iEACA,wCACA,kCACA,0CACN,gCACA,0CACM,qCACA,sDACE,kDACA,gDACA,8DACA,qCACF,0CACA,mCACA,mCACA,gFACA,mCACA,mCACA,yCACO,sCACV,+DACkB,2CACf,4CACA,qCACA,mCACA,6DACA,6CACA,mCACA,8DACA,kCACA,mCACA,kCACA,2CACA,iDACA,qCACA,kCACA,kDACA,mCACA,mCACA,kKACA,4BACT,6CACS,0BACR,2CACQ,mSCjF7B,MAAMC,EAAsB,CACjCC,GAAI,EACJC,IAAK,EACLC,MAAO,2BAGF,MAAMC,EAAmB,CAC9Bj9B,QAAS,EACTlH,SAAU,EACVE,gBAAiB,EACjBP,OAAQ,EACRqT,WAAY,EACZoxB,OA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","file":"static/js/application.initial~ca55fe86.ca869034.chunk.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 = 205);\n","module.exports = __WEBPACK_EXTERNAL_MODULE__10__;","module.exports = __WEBPACK_EXTERNAL_MODULE__119__;","module.exports = __WEBPACK_EXTERNAL_MODULE__120__;","module.exports = __WEBPACK_EXTERNAL_MODULE__18__;","module.exports = __WEBPACK_EXTERNAL_MODULE__3__;","export {\r\n withSignal,\r\n CommonEventParser,\r\n FabricDropdownParser,\r\n} from './src/with-signal';\r\n\r\nexport {\r\n ActivityContext,\r\n Activity,\r\n withActivityContext\r\n} from './src/activity-context-provider';\r\n\r\nexport {\r\n ScenarioContext,\r\n Scenario,\r\n withScenarioContext,\r\n} from './src/scenario-context-provider';\r\n","/* eslint-disable react/prefer-stateless-function */\r\n/* eslint-disable no-param-reassign */\r\n/* eslint-disable function-paren-newline */\r\n/* eslint-disable react/forbid-prop-types */\r\nimport React from 'react';\r\nimport _ from 'underscore';\r\nimport PropTypes from 'prop-types';\r\nimport hoistNonReactStatics from 'hoist-non-react-statics';\r\nimport { withActivityContext } from './activity-context-provider';\r\n\r\nexport const withSignal = (WrappedComponent, SignalAdaptor) => {\r\n class HoC extends React.Component {\r\n render = () => {\r\n const shimmedProps = {};\r\n _.map(Object.keys(SignalAdaptor), (event) => {\r\n // call logger first then call the original handler\r\n // not using _.compose because the original handler may expect multiple params\r\n // and _.compose can only pass one param\r\n const shimmedHandler = (...e) => {\r\n if (this.props.activity) {\r\n this.props.activity.signal(_.assign(SignalAdaptor[event](e), { event }));\r\n }\r\n if (this.props[event]) {\r\n this.props[event](...e);\r\n }\r\n };\r\n\r\n shimmedProps[event] = shimmedHandler.bind(this);\r\n });\r\n\r\n return ();\r\n };\r\n }\r\n\r\n HoC.propTypes = {\r\n activity: PropTypes.object,\r\n };\r\n\r\n HoC.defaultProps = {\r\n activity: undefined,\r\n };\r\n\r\n return withActivityContext(hoistNonReactStatics(HoC, WrappedComponent));\r\n};\r\n\r\nexport const CommonEventParser = (e) => {\r\n if (e[0] && e[0].currentTarget) {\r\n return ({\r\n className: e[0].currentTarget.className,\r\n name: e[0].currentTarget.name,\r\n id: e[0].currentTarget.id,\r\n text: e[0].currentTarget.innerText,\r\n value: e[0].currentTarget.value,\r\n checked: e[0].currentTarget.checked,\r\n 'data-analyticsid': e[0].currentTarget.dataset && e[0].currentTarget.dataset.analyticsid,\r\n });\r\n }\r\n return {};\r\n};\r\n\r\nexport const FabricDropdownParser = e => ({\r\n className: e[0].target.className,\r\n name: e[0].target.name,\r\n id: e[0].target.id,\r\n text: e[1].text,\r\n value: e[1].value,\r\n});\r\n","/* eslint-disable react/forbid-prop-types */\r\nimport React, { useContext, useMemo } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport hoistNonReactStatics from 'hoist-non-react-statics';\r\nimport { getDisplayName } from '@bingads-webui-react/hoc-utils';\r\nimport { ScenarioContext } from './scenario-context-provider';\r\n\r\n// if no activity context is provided, defaultActivity will be used\r\nexport const ActivityContext = React.createContext();\r\n\r\nexport const Activity = (props) => {\r\n const context = useContext(ScenarioContext);\r\n\r\n const activityContext = useMemo(() => (context && props.name ?\r\n context.createActivity(props.name) :\r\n undefined\r\n ), [context, props.name]);\r\n\r\n return (\r\n \r\n {props.children}\r\n );\r\n};\r\n\r\nActivity.propTypes = {\r\n children: PropTypes.oneOfType([\r\n PropTypes.arrayOf(PropTypes.node),\r\n PropTypes.node,\r\n ]).isRequired,\r\n name: PropTypes.string,\r\n};\r\n\r\nActivity.defaultProps = {\r\n name: undefined,\r\n};\r\n\r\nexport const withActivityContext = (WrappedComponent) => {\r\n const HoC = props => (\r\n \r\n {context => ()}\r\n \r\n );\r\n\r\n HoC.displayName = `withActivityContext(${getDisplayName(WrappedComponent)})`;\r\n\r\n return hoistNonReactStatics(HoC, WrappedComponent);\r\n};\r\n","/* eslint-disable react/forbid-prop-types */\r\nimport React, { useMemo, useContext } from 'react';\r\nimport hoistNonReactStatics from 'hoist-non-react-statics';\r\nimport PropTypes from 'prop-types';\r\nimport { getDisplayName } from '@bingads-webui-react/hoc-utils';\r\nimport { InstrumentationContext } from '@bingads-webui-react/hoc-with-instrumentation';\r\n\r\nexport const ScenarioContext = React.createContext();\r\n\r\nexport const Scenario = (props) => {\r\n const instrumentation = useContext(InstrumentationContext);\r\n const context = useContext(ScenarioContext);\r\n\r\n const scenarioInstance = useMemo(() => {\r\n if (props.name) {\r\n if (context && context.value === props.name) {\r\n // if parent scenario and current one share the same name\r\n // reuse parent scenario instance\r\n return context;\r\n } else if (instrumentation && instrumentation.createScenario) {\r\n // otherwise create a new scenario instance and pass in parent scenario instance\r\n // which could be undefined or null\r\n return instrumentation.createScenario({\r\n scenarioName: props.name,\r\n parentScenario: context,\r\n });\r\n }\r\n }\r\n return undefined;\r\n }, [context, instrumentation, props.name]);\r\n\r\n return (\r\n \r\n {props.children}\r\n \r\n );\r\n};\r\n\r\nScenario.propTypes = {\r\n children: PropTypes.oneOfType([\r\n PropTypes.arrayOf(PropTypes.node),\r\n PropTypes.node,\r\n ]).isRequired,\r\n name: PropTypes.string.isRequired,\r\n};\r\n\r\nexport const withScenarioContext = (WrappedComponent) => {\r\n const HoC = (props) => {\r\n const context = useContext(ScenarioContext);\r\n\r\n return ();\r\n };\r\n\r\n HoC.displayName = `withScenarioContext(${getDisplayName(WrappedComponent)})`;\r\n\r\n return hoistNonReactStatics(HoC, WrappedComponent);\r\n};\r\n","module.exports = __WEBPACK_EXTERNAL_MODULE__15__;","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"underscore\"), require(\"@bingads-webui/validation\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"underscore\", \"@bingads-webui/validation\"], factory);\n\telse {\n\t\tvar a = typeof exports === 'object' ? factory(require(\"underscore\"), require(\"@bingads-webui/validation\")) : factory(root[\"underscore\"], root[\"@bingads-webui/validation\"]);\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})((typeof self !== 'undefined' ? self : this), function(__WEBPACK_EXTERNAL_MODULE__3__, __WEBPACK_EXTERNAL_MODULE__32__) {\nreturn ","export { withStateStore } from './src/with-state-store';\r\n","import { StateStore } from '@bingads-webui/state-store';\r\nimport React, { ComponentClass } from 'react';\r\n// eslint-disable-next-line import/no-extraneous-dependencies\r\nimport { Subscription } from '@bingads-webui-universal/observable';\r\nimport _ from 'underscore';\r\n\r\nexport function withStateStore(\r\n ComponentToWrap: ComponentClass | React.FC,\r\n storeFactory: S | (() => S),\r\n selector: string | ((store: S) => Object) = 'store',\r\n) {\r\n if (typeof storeFactory !== 'function') {\r\n const store = storeFactory;\r\n // eslint-disable-next-line no-param-reassign\r\n storeFactory = () => store;\r\n }\r\n\r\n let select: any = selector;\r\n if (typeof selector === 'string') {\r\n const storeName: string = selector;\r\n select = (store: StateStore) => {\r\n const res: any = {};\r\n res[storeName] = store;\r\n return res;\r\n };\r\n }\r\n\r\n interface RefProps {\r\n forwardedRef: {\r\n current: any;\r\n };\r\n }\r\n\r\n class WrappedComponent extends React.PureComponent & RefProps> {\r\n private subscription: Subscription | undefined;\r\n\r\n private store: StateStore;\r\n\r\n constructor(props: Partial & RefProps) {\r\n super(props);\r\n this.state = {};\r\n this.store = this.createStore();\r\n }\r\n\r\n componentDidMount() {\r\n this.subscribe();\r\n }\r\n\r\n componentWillUnmount() {\r\n this.unsubscribe();\r\n }\r\n\r\n createStore() {\r\n if (storeFactory instanceof StateStore) {\r\n return storeFactory;\r\n }\r\n // @ts-ignore\r\n return storeFactory();\r\n }\r\n\r\n subscribe() {\r\n this.subscription = this.store.subscribe((state: any) => {\r\n if (!this.subscription?.closed) {\r\n this.setState(state);\r\n }\r\n });\r\n }\r\n\r\n unsubscribe() {\r\n (this.subscription as Subscription).unsubscribe();\r\n }\r\n\r\n render() {\r\n const props = _.extend({}, this.props, select(this.store));\r\n // @ts-ignore\r\n return ;\r\n }\r\n }\r\n\r\n // @ts-ignore\r\n return React.forwardRef((props: any, ref) => );\r\n}\r\n","module.exports = __WEBPACK_EXTERNAL_MODULE__194__;","export { withPermissions } from './src/with-permissions';\r\nexport { PermissionsContext } from './src/context';\r\n","import React from 'react';\r\nimport hoistNonReactStatics from 'hoist-non-react-statics';\r\nimport { getDisplayName } from '@bingads-webui-react/hoc-utils';\r\n\r\nimport { PermissionsContext } from './context';\r\n\r\nexport const withPermissions = (WrappedComponent) => {\r\n const HoC = props => (\r\n \r\n {permissions => }\r\n \r\n );\r\n HoC.displayName = `WithPermission(${getDisplayName(WrappedComponent)})`;\r\n\r\n hoistNonReactStatics(HoC, WrappedComponent);\r\n\r\n return HoC;\r\n};\r\n","import React from 'react';\r\n\r\nexport const PermissionsContext = React.createContext({ permissions: {} });\r\n","module.exports = __WEBPACK_EXTERNAL_MODULE__16__;","export { RestfulService as default } from './src/index';\r\n","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 = false,\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","module.exports = __WEBPACK_EXTERNAL_MODULE__70__;","module.exports = __WEBPACK_EXTERNAL_MODULE__71__;","export { withInstrumentation } from './src/hoc';\r\nexport { InstrumentationContext } from './src/context';\r\n","import React from 'react';\r\nimport hoistNonReactStatics from 'hoist-non-react-statics';\r\nimport { getDisplayName } from '@bingads-webui-react/hoc-utils';\r\n\r\nimport { InstrumentationContext } from './context';\r\n\r\n/**\r\n * HoC for injecting instrumentation into a React component.\r\n * It assumes that InstrumentationContext.Provider has been initialized\r\n * somewhere up the component hierarchy.\r\n * @param {React.Component} WrappedComponent - component to wrap\r\n * @returns {React.Component} an enhanced version of the argument\r\n */\r\nexport const withInstrumentation = (WrappedComponent) => {\r\n const HoC = props => (\r\n \r\n {instrumentation => }\r\n \r\n );\r\n HoC.displayName = `Instrumented(${getDisplayName(WrappedComponent)})`;\r\n\r\n hoistNonReactStatics(HoC, WrappedComponent);\r\n\r\n return HoC;\r\n};\r\n","import React from 'react';\r\n\r\nconst defaultImpl = {};\r\nexport const InstrumentationContext = React.createContext(defaultImpl);\r\n","export * from './src/with-signal-fabric';\r\nexport * from './src/render-logger';\r\n","import {\r\n PrimaryButton as FabricPrimaryButton,\r\n IconButton as FabricIconButton,\r\n DefaultButton as FabricDefaultButton,\r\n ChoiceGroup as FabricChoiceGroup,\r\n Link as FabricLink,\r\n SearchBox as FabricSearchBox,\r\n Dropdown as FabricDropdown,\r\n TextField as FabricTextField,\r\n Checkbox as FabricCheckbox,\r\n Toggle as FabricToggle,\r\n} from '@bingads-webui-react/fabric-control';\r\n\r\nimport {\r\n withSignal,\r\n CommonEventParser,\r\n FabricDropdownParser,\r\n} from '@bingads-webui-react/hoc-with-signal';\r\n\r\nexport const PrimaryButton = withSignal(FabricPrimaryButton, {\r\n onClick: CommonEventParser,\r\n});\r\n\r\nexport const DefaultButton = withSignal(FabricDefaultButton, {\r\n onClick: CommonEventParser,\r\n});\r\n\r\nexport const ChoiceGroup = withSignal(FabricChoiceGroup, {\r\n onChange: CommonEventParser,\r\n});\r\n\r\nexport const Link = withSignal(FabricLink, {\r\n onClick: CommonEventParser,\r\n});\r\n\r\nexport const SearchBox = withSignal(FabricSearchBox, {\r\n onChange: CommonEventParser,\r\n});\r\n\r\nexport const Dropdown = withSignal(FabricDropdown, {\r\n onChange: FabricDropdownParser,\r\n});\r\n\r\nexport const TextField = withSignal(FabricTextField, {\r\n onChange: CommonEventParser,\r\n});\r\n\r\nexport const Checkbox = withSignal(FabricCheckbox, {\r\n onChange: CommonEventParser,\r\n});\r\n\r\nexport const Toggle = withSignal(FabricToggle, {\r\n onChange: CommonEventParser,\r\n});\r\n\r\nexport const IconButton = withSignal(FabricIconButton, {\r\n onClick: CommonEventParser,\r\n});\r\n","module.exports = __WEBPACK_EXTERNAL_MODULE__406__;","import React, { useEffect } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { withActivityContext } from '@bingads-webui-react/hoc-with-signal';\r\n\r\nconst RenderLoggerInternal = ({\r\n title,\r\n activity,\r\n children,\r\n}) => {\r\n useEffect(() => {\r\n if (activity) {\r\n activity.signal(`RenderLogger - ${title} has been rendered.`);\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, []);\r\n\r\n return <> { children };\r\n};\r\nRenderLoggerInternal.propTypes = {\r\n title: PropTypes.string.isRequired,\r\n activity: PropTypes.shape({\r\n signal: PropTypes.func,\r\n }),\r\n children: PropTypes.oneOfType([\r\n PropTypes.node,\r\n PropTypes.arrayOf(PropTypes.node),\r\n ]).isRequired,\r\n};\r\n\r\nRenderLoggerInternal.defaultProps = {\r\n activity: null,\r\n};\r\n\r\nexport const RenderLogger = withActivityContext(RenderLoggerInternal);\r\n","module.exports = __WEBPACK_EXTERNAL_MODULE__5__;","export * from './src/index';\r\n","export * from './error-messages';\r\nexport * from './error-handlers';\r\nexport * from './get-message-for-code';\r\nexport * from './get-error-from-raw';\r\n","export const ERROR_MESSAGES = {\r\n InvalidValue: _TL_('Invalid value'),\r\n ad: {\r\n InvalidValue: _TL_('Invalid ad'),\r\n url: {\r\n InvalidValue: _TL_('Invalid ad url'),\r\n },\r\n title1: {\r\n InvalidValue: _TL_('Invalid ad title1'),\r\n },\r\n },\r\n business: {\r\n InvalidValue: _TL_('Invalid business'),\r\n url: {\r\n InvalidValue: _TL_('Invalid business url'),\r\n },\r\n name: {\r\n InvalidValue: _TL_('Invalid business name'),\r\n },\r\n },\r\n};\r\n","import _ from 'underscore';\r\n\r\nexport const errorPropertyReg = /((.+)\\[(\\d+)\\]){0,1}(\\.)?(.+)?/;\r\n\r\nexport const getParsedIndexAndProperty = (errorProperty) => {\r\n if (!errorProperty) {\r\n return {\r\n index: null,\r\n property: null,\r\n };\r\n }\r\n const res = errorPropertyReg.exec(errorProperty);\r\n const property = !res[5] && res[2] ? res[2] : res[5];\r\n return {\r\n index: res[3],\r\n property,\r\n };\r\n};\r\n\r\nexport const odataErrorHandler = (\r\n rawError, entity, field,\r\n getErrorMessage, useServerErrorMessage\r\n) => {\r\n let errors = [];\r\n if (_.isArray(rawError)) {\r\n errors = rawError;\r\n } else if (_.isObject(rawError)) {\r\n if (rawError['@odata.context'] && _.isArray(rawError.value)) {\r\n errors = rawError.value;\r\n } else if (_.isArray(rawError.responseJSON)) {\r\n errors = rawError.responseJSON;\r\n } else if (_.isObject(rawError.responseJSON) && _.isArray(rawError.responseJSON.Errors)) {\r\n errors = rawError.responseJSON.Errors;\r\n }\r\n }\r\n const entityErrors = {};\r\n errors.forEach((e) => {\r\n const { property: errProperty } = getParsedIndexAndProperty(e.Property);\r\n const errField = field || errProperty || ''; // entity level errors are stored on param ''\r\n\r\n const error = {\r\n errorCode: e.Code,\r\n message: getErrorMessage({\r\n errorCode: e.Code,\r\n entity,\r\n field: field || errProperty,\r\n serverErrorMessage: useServerErrorMessage && e.Message,\r\n errMsgObj: e.ErrMsgObj,\r\n }),\r\n clientId: e.ClientId,\r\n };\r\n if (entityErrors[errField]) {\r\n entityErrors[errField].push(error);\r\n } else {\r\n entityErrors[errField] = [error];\r\n }\r\n });\r\n return entityErrors;\r\n};\r\n\r\nexport const ccErrorHandler = (rawError, entity, field, getErrorMessage) => {\r\n const defaultErrorCode = `ResultType${rawError.ResultType}`;\r\n if (_.isEmpty(rawError.Errors)) {\r\n return {\r\n [field || '']: [{\r\n errorCode: defaultErrorCode,\r\n message: getErrorMessage({\r\n errorCode: defaultErrorCode,\r\n entity,\r\n field,\r\n }),\r\n clientId: rawError.ClientId,\r\n }],\r\n };\r\n }\r\n\r\n const entityErrors = {};\r\n rawError.Errors.forEach((e) => {\r\n const errorCode = e.Code || defaultErrorCode;\r\n const errField = field || e.FieldId || '';\r\n const error = {\r\n errorCode,\r\n message: getErrorMessage({ errorCode, entity, field: field || e.FieldId }),\r\n clientId: e.ClientId,\r\n };\r\n if (entityErrors[errField]) {\r\n entityErrors[errField].push(error);\r\n } else {\r\n entityErrors[errField] = [error];\r\n }\r\n });\r\n\r\n return entityErrors;\r\n};\r\n","import _ from 'underscore';\r\n\r\n/*\r\nPRIORITY LIST:\r\n case1. Entity + field + error code\r\n case2. field + error code\r\n case3. No field + entity + error code\r\n case4. error code\r\n case5. Entity + field + server error message\r\n case6. Return error code without mapping as last option\r\nerrorMap structure for above case handling:\r\n {\r\n entity: {\r\n field: {\r\n errorCode: 'case1',\r\n },\r\n errorCode: 'case3',\r\n },\r\n field: {\r\n errorCode: 'case2',\r\n },\r\n errorCode: 'case4'\r\n }\r\n*/\r\nexport const getMessageForErrorCode = (\r\n i18n,\r\n instrumentation,\r\n errorMap,\r\n {\r\n errorCode,\r\n entity,\r\n field,\r\n serverErrorMessage,\r\n errMsgObj = {},\r\n }\r\n) => {\r\n if (entity && field\r\n && errorMap[entity]\r\n && errorMap[entity][field]\r\n && errorMap[entity][field][errorCode]\r\n && _.isString(errorMap[entity][field][errorCode])) {\r\n return i18n.getString(errorMap[entity][field][errorCode], errMsgObj);\r\n }\r\n if (field\r\n && errorMap[field]\r\n && errorMap[field][errorCode]\r\n && _.isString(errorMap[field][errorCode])) {\r\n return i18n.getString(errorMap[field][errorCode], errMsgObj);\r\n }\r\n if (!field && entity\r\n && errorMap[entity]\r\n && errorMap[entity][errorCode]\r\n && _.isString(errorMap[entity][errorCode])) {\r\n return i18n.getString(errorMap[entity][errorCode], errMsgObj);\r\n }\r\n if (errorMap[errorCode]\r\n && _.isString(errorMap[errorCode])) {\r\n return i18n.getString(errorMap[errorCode], errMsgObj);\r\n }\r\n\r\n if (entity && field && serverErrorMessage) {\r\n if (instrumentation && instrumentation.logTrace) {\r\n instrumentation.logTrace(`Error string not found for error code: ${errorCode}; entity: ${entity}; field: ${field}; using the server error message for now: ${serverErrorMessage}`);\r\n }\r\n return serverErrorMessage;\r\n }\r\n\r\n if (instrumentation && instrumentation.logError) {\r\n instrumentation.logError(`Error string not found for error code: ${errorCode}; entity: ${entity}; field: ${field}`);\r\n }\r\n\r\n return i18n.getString(_TL_('An unknown error occurred'));\r\n};\r\n\r\nexport const getMessageForErrorCodeFn = (i18n, instrumentation, errorMap) => (\r\n args => getMessageForErrorCode(i18n, instrumentation, errorMap, args)\r\n);\r\n","\r\nimport _ from 'underscore';\r\nimport { getMessageForErrorCodeFn } from './get-message-for-code';\r\nimport { odataErrorHandler, ccErrorHandler } from './error-handlers';\r\nimport { ERROR_MESSAGES } from './error-messages';\r\n\r\n// server error code is not unique for now, so we temporarily depend on server error messages\r\n// when MT fixed this error code issue, we should not use server error message any more\r\nexport const getErrorFromRaw = (\r\n i18n, instrumentation, errorMap,\r\n rawError, entity, field, useServerErrorMessage = false\r\n) => {\r\n const errorMapper = getMessageForErrorCodeFn(i18n, instrumentation, errorMap);\r\n if (_.isObject(rawError)) {\r\n if (_.isNumber(rawError.ResultType)) {\r\n return ccErrorHandler(rawError, entity, field, errorMapper);\r\n }\r\n }\r\n return odataErrorHandler(rawError, entity, field, errorMapper, useServerErrorMessage);\r\n};\r\n\r\nexport const getErrorFromRawFn = (i18n, instrumentation, errorMap = ERROR_MESSAGES) => (\r\n (...args) => getErrorFromRaw(i18n, instrumentation, errorMap, ...args));\r\n","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","export * from './src/controls';\r\n","import React from 'react';\r\nimport { ContextualMenu, initializeIcons } from '@fluentui/react';\r\n\r\ninitializeIcons();\r\n\r\nconst ContextualMenuDropdown = props => (\r\n \r\n);\r\n\r\nexport * from '@fluentui/react';\r\nexport { ContextualMenuDropdown as ContextualMenu };\r\n","module.exports = __WEBPACK_EXTERNAL_MODULE__20__;","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","module.exports = __WEBPACK_EXTERNAL_MODULE__25__;","module.exports = __WEBPACK_EXTERNAL_MODULE__35__;","module.exports = __WEBPACK_EXTERNAL_MODULE__77__;","export { GlobalErrorBoundary } from './src/global-error-boundary';\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\n\r\n/**\r\n * React error boundary enclosing the entire application.\r\n * Smaller components in the app should have their own error boundaries as appropriate.\r\n * Any uncaught rendering/React lifecycle errors will be handled here.\r\n * https://reactjs.org/docs/error-boundaries.html\r\n * @extends React.Component\r\n */\r\nexport class GlobalErrorBoundary extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = { hasError: false };\r\n }\r\n\r\n componentDidCatch(error, info) {\r\n if (this.props.logError) {\r\n this.props.logError({ error, info });\r\n }\r\n this.setState({ hasError: true, error, info });\r\n }\r\n\r\n render() {\r\n // Set renderErrorView to null to swallow the error instead of crashing the page\r\n if (this.state.hasError && this.props.renderErrorView) {\r\n return this.props.renderErrorView({\r\n error: this.state.error,\r\n info: this.state.info,\r\n errorViewProps: this.props.errorViewProps,\r\n });\r\n }\r\n return (\r\n \r\n {this.props.children}\r\n

\r\n );\r\n }\r\n}\r\n\r\nGlobalErrorBoundary.propTypes = {\r\n /**\r\n * The enclosed application.\r\n */\r\n children: PropTypes.node.isRequired,\r\n /**\r\n * Function for logging the error that occurred.\r\n * @param {Object} obj - Object based on the arguments provided to React componentDidCatch\r\n * @param {Object} obj.error - Error object from React, which includes an error stack trace.\r\n * @param {Object} obj.info - Info object from React, which includes a componentStack trace.\r\n */\r\n logError: PropTypes.func,\r\n /**\r\n * Function for generating an error page view.\r\n * @param {Object} obj - Object based on the arguments provided to React componentDidCatch\r\n * @param {Object} obj.error - Error object from React, which includes an error stack trace.\r\n * @param {Object} obj.info - Info object from React, which includes a componentStack trace.\r\n * @param {Object} obj.errorViewProps - The props used by the error view to be rendered.\r\n * @returns - React node for the error view.\r\n */\r\n renderErrorView: PropTypes.func,\r\n\r\n /**\r\n * Objects of the props will be passed into the renderErrorView.\r\n */\r\n errorViewProps: PropTypes.instanceOf(Object),\r\n};\r\n\r\nGlobalErrorBoundary.defaultProps = {\r\n logError: null,\r\n renderErrorView: null,\r\n errorViewProps: null,\r\n};\r\n","export { version } from './package.json';\r\nexport * from './src/utils';\r\n","\r\n/**\r\n * @param {React.Component} Component React component\r\n * @returns {string} component name (or default name if unrecognized)\r\n */\r\nexport const getDisplayName = Component => Component.displayName || Component.name || 'Component';\r\n","export { HelpPopup } from './src/help-popup';\r\nexport { HelpPopupInline } from './src/help-popup-inline';\r\nexport { HelpButton } from './src/help-button';\r\n","/* eslint-disable jsx-a11y/anchor-has-content, jsx-a11y/anchor-is-valid, no-script-url */\r\n/* global PopupController */\r\n\r\n// NOTE: preferably use HelpButton to avoid accessibility issues\r\nimport PropTypes from 'prop-types';\r\nimport React from 'react';\r\n\r\n/**\r\n * @param {MouseEvent} event click event\r\n * @return {void}\r\n */\r\nfunction onClick(event) {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n if (!window.PopupController) {\r\n return;\r\n }\r\n PopupController.PopupJsClick(event.target);\r\n}\r\n\r\nexport function HelpPopup(props) {\r\n return (\r\n \r\n );\r\n}\r\n\r\nHelpPopup.propTypes = {\r\n 'aria-label': PropTypes.string,\r\n 'aria-labelledby': PropTypes.string,\r\n topic: PropTypes.string.isRequired,\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func,\r\n }),\r\n};\r\n\r\nHelpPopup.defaultProps = {\r\n 'aria-label': null,\r\n 'aria-labelledby': null,\r\n i18n: null,\r\n};\r\n","// NOTE: preferably use HelpButton to avoid accessibility issues\r\n\r\nimport _ from 'underscore';\r\nimport PropTypes from 'prop-types';\r\nimport React, { memo, useContext } from 'react';\r\nimport classNames from 'classnames';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport { withDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport { HelpPopup } from './help-popup';\r\n\r\nexport const InlineHelpUnstyled = memo((props) => {\r\n const {\r\n classes,\r\n topic,\r\n withoutSpace,\r\n onClick,\r\n ariaLabel,\r\n } = props;\r\n\r\n const i18n = useContext(I18nContext);\r\n\r\n return (\r\n \r\n \r\n \r\n );\r\n});\r\n\r\nInlineHelpUnstyled.propTypes = {\r\n topic: PropTypes.string.isRequired,\r\n classes: PropTypes.shape({\r\n inlineHelp: PropTypes.string,\r\n }).isRequired,\r\n withoutSpace: PropTypes.bool,\r\n onClick: PropTypes.func,\r\n ariaLabel: PropTypes.string,\r\n};\r\n\r\nInlineHelpUnstyled.defaultProps = {\r\n withoutSpace: false,\r\n onClick: _.noop,\r\n ariaLabel: null,\r\n};\r\n\r\nexport const HelpPopupInline = withDefaultStyles(\r\n InlineHelpUnstyled,\r\n (components, { palette = {}, iconFontFamily = 'MsAds MDL2 Assets' }) => ({\r\n inlineHelp: {\r\n display: 'inline-block',\r\n fontSize: '15px !important',\r\n fontWeight: 'normal',\r\n\r\n '& .helpbutton': {\r\n paddingTop: '2px',\r\n paddingLeft: '2px',\r\n\r\n '&::before': {\r\n content: '\"\\\\E9CE\"',\r\n fontFamily: iconFontFamily,\r\n position: 'relative',\r\n top: 2,\r\n },\r\n\r\n '&:focus': {\r\n outline: '1px solid',\r\n outlineColor: palette.neutralSecondary,\r\n border: 'none',\r\n color: palette.black,\r\n textDecoration: 'none',\r\n },\r\n\r\n '&:hover': {\r\n backgroundColor: palette.neutralLighter,\r\n color: palette.black,\r\n textDecoration: 'none',\r\n },\r\n\r\n '&:active': {\r\n backgroundColor: palette.neutralLight,\r\n color: palette.black,\r\n textDecoration: 'none',\r\n },\r\n },\r\n },\r\n\r\n withSpace: {\r\n marginLeft: 3,\r\n },\r\n })\r\n);\r\n\r\n","module.exports = __WEBPACK_EXTERNAL_MODULE__11__;","module.exports = __WEBPACK_EXTERNAL_MODULE__22__;","module.exports = __WEBPACK_EXTERNAL_MODULE__35__;","/* global PopupController */\r\nimport PropTypes from 'prop-types';\r\nimport React, { useContext } from 'react';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport classNames from 'classnames';\r\nimport { withDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\n\r\nfunction onClick(event) {\r\n event.preventDefault();\r\n PopupController.PopupJsClick(event.target);\r\n}\r\n\r\nexport function HelpButtonUnstyled(props) {\r\n const i18n = useContext(I18nContext);\r\n return (\r\n \r\n );\r\n}\r\n\r\nHelpButtonUnstyled.propTypes = {\r\n 'aria-label': PropTypes.string,\r\n 'aria-labelledby': PropTypes.string,\r\n topic: PropTypes.string.isRequired,\r\n classes: PropTypes.shape({\r\n helpButton: PropTypes.string,\r\n }).isRequired,\r\n};\r\n\r\nHelpButtonUnstyled.defaultProps = {\r\n 'aria-label': null,\r\n 'aria-labelledby': null,\r\n};\r\n\r\nexport const HelpButton = withDefaultStyles(\r\n HelpButtonUnstyled,\r\n (components, { palette = {}, iconFontFamily = 'MsAds MDL2 Assets' }) => ({\r\n helpButton: {\r\n border: '0px',\r\n fontSize: '15px',\r\n backgroundColor: 'inherit !important',\r\n textDecoration: 'none !important',\r\n cursor: 'pointer',\r\n '&:focus': {\r\n border: `1px solid ${palette.neutralSecondary}`,\r\n },\r\n color: palette.themePrimary,\r\n fontWeight: 'normal',\r\n padding: '0px',\r\n display: 'block',\r\n '&:before': {\r\n top: '2px',\r\n content: '\"\\\\E9CE\"',\r\n position: 'relative',\r\n fontFamily: iconFontFamily,\r\n },\r\n },\r\n })\r\n);\r\n","export { GlobalErrorView } from './src';\r\n","/* eslint-disable react/no-array-index-key */\r\nimport React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport classNames from 'classnames';\r\nimport _ from 'underscore';\r\nimport { withDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport { getStyle } from './style/get-style';\r\n\r\nclass UnthemedGlobalErrorView extends React.PureComponent {\r\n render() {\r\n const {\r\n classes, description, title, className,\r\n } = this.props;\r\n return (\r\n
\r\n
\r\n
\r\n
\r\n
\r\n {title}\r\n
\r\n
\r\n {_.map(description, (txt, index) => (\r\n
\r\n {_.isFunction(txt) ? txt() : txt}\r\n
\r\n ))}\r\n
\r\n
\r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nUnthemedGlobalErrorView.propTypes = {\r\n description: PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.string, PropTypes.func]))\r\n .isRequired,\r\n title: PropTypes.string.isRequired,\r\n classes: PropTypes.shape({\r\n errorPage: PropTypes.string,\r\n errorPageContent: PropTypes.string,\r\n errorPageIcon: PropTypes.string,\r\n errorPageTxtContent: PropTypes.string,\r\n errorPageTxtDesc: PropTypes.string,\r\n }).isRequired,\r\n className: PropTypes.string,\r\n};\r\n\r\nUnthemedGlobalErrorView.defaultProps = {\r\n className: '',\r\n};\r\n\r\nexport const GlobalErrorView\r\n = withDefaultStyles(UnthemedGlobalErrorView, getStyle);\r\n","/* istanbul ignore file */\r\nimport { iconBase64 } from './global-error-icon';\r\n\r\nexport const getStyle = (_, { palette = {} }) => ({\r\n errorPage: {\r\n width: '100%',\r\n height: '100%',\r\n minWidth: 800,\r\n backgroundColor: palette.white,\r\n position: 'relative',\r\n },\r\n\r\n errorPageContent: {\r\n position: 'absolute',\r\n top: 163,\r\n height: 230,\r\n width: 727,\r\n left: '50%',\r\n transform: 'translate(-50%, 0)',\r\n '-webkit-transform': 'translate(-50%, 0)',\r\n },\r\n\r\n errorPageIcon: {\r\n width: 230,\r\n height: 230,\r\n position: 'absolute',\r\n backgroundImage: `url(\"data:image/svg+xml;base64, ${iconBase64}\")`,\r\n backgroundSize: '230px 230px',\r\n },\r\n\r\n errorPageTxtContent: {\r\n position: 'absolute',\r\n left: 288,\r\n top: '50%',\r\n transform: 'translate(0, -50%)',\r\n '-webkit-transform': 'translate(0, -50%)',\r\n },\r\n\r\n errorPageTxtTitle: {\r\n color: palette.neutralPrimary,\r\n fontSize: 26,\r\n fontWeight: 600,\r\n },\r\n\r\n errorPageTxtDesc: {\r\n color: palette.neutralPrimary,\r\n fontSize: 14,\r\n marginTop: 16,\r\n },\r\n\r\n errorPageTxtRefresh: {\r\n color: '#0078D4',\r\n fontSize: 14,\r\n marginTop: 16,\r\n cursor: 'pointer',\r\n width: 107,\r\n\r\n '&:focus': {\r\n border: `1px solid ${palette.neutralSecondary}`,\r\n outline: 'none',\r\n },\r\n '&:hover': {\r\n color: '#23527c',\r\n textDecoration: 'underline',\r\n },\r\n },\r\n});\r\n","export const iconBase64 = 'PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIDAgMjAxLjYgMjAxLjYiPjxkZWZzPjxzdHlsZT4uY2xzLTF7ZmlsbDojOGI4Y2M0O30uY2xzLTJ7ZmlsbDojZTFkZmRkO30uY2xzLTN7ZmlsbDojZmZmO30uY2xzLTR7ZmlsbDojZjdiNTQ4O30uY2xzLTV7ZmlsbDojZTBiYjk1O30uY2xzLTZ7ZmlsbDojNTk0NTM5O30uY2xzLTd7ZmlsbDp1cmwoI3JhZGlhbC1ncmFkaWVudCk7fS5jbHMtOHtmaWxsOnVybCgjbGluZWFyLWdyYWRpZW50KTt9LmNscy05e2ZpbGw6I2ZmZDU5MDt9LmNscy0xMHtmaWxsOnVybCgjbGluZWFyLWdyYWRpZW50LTIpO30uY2xzLTExe2ZpbGw6dXJsKCNsaW5lYXItZ3JhZGllbnQtMyk7fS5jbHMtMTJ7ZmlsbDp1cmwoI3JhZGlhbC1ncmFkaWVudC0yKTt9LmNscy0xM3tmaWxsOnVybCgjcmFkaWFsLWdyYWRpZW50LTMpO30uY2xzLTE0e2ZpbGw6I2JmOGY2ODt9LmNscy0xNXtmaWxsOm5vbmU7fS5jbHMtMTZ7ZmlsbDojNzk3NjczO308L3N0eWxlPjxyYWRpYWxHcmFkaWVudCBpZD0icmFkaWFsLWdyYWRpZW50IiBjeD0iLTY3LjkxIiBjeT0iMTA2OS42NCIgcj0iMTcuNzEiIGdyYWRpZW50VHJhbnNmb3JtPSJtYXRyaXgoMC45OCwgLTAuMTgsIDAuMTgsIDAuOTgsIC02NS43MiwgLTEwMDIuNDIpIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+PHN0b3Agb2Zmc2V0PSIwIiBzdG9wLWNvbG9yPSIjMjMxZjIwIi8+PHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjNTk0NTM5IiBzdG9wLW9wYWNpdHk9IjAiLz48L3JhZGlhbEdyYWRpZW50PjxsaW5lYXJHcmFkaWVudCBpZD0ibGluZWFyLWdyYWRpZW50IiB4MT0iNTkuNzgiIHkxPSI4MTEuMDciIHgyPSI3Ni40NCIgeTI9IjgxOC4xMiIgZ3JhZGllbnRUcmFuc2Zvcm09InRyYW5zbGF0ZSgwIC02OTcuMykiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj48c3RvcCBvZmZzZXQ9IjAiIHN0b3AtY29sb3I9IiNiZjhmNjgiLz48c3RvcCBvZmZzZXQ9IjAuODUiIHN0b3AtY29sb3I9IiNkYmI0OGUiLz48c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiNlMGJiOTUiLz48L2xpbmVhckdyYWRpZW50PjxsaW5lYXJHcmFkaWVudCBpZD0ibGluZWFyLWdyYWRpZW50LTIiIHgxPSIzNi44MyIgeTE9IjkwMy4wNSIgeDI9IjQ2Ljg5IiB5Mj0iODMyLjI5IiBncmFkaWVudFRyYW5zZm9ybT0idHJhbnNsYXRlKDAgLTY5Ny4zKSIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPjxzdG9wIG9mZnNldD0iMC4wMSIgc3RvcC1jb2xvcj0iIzRiNGM3NSIvPjxzdG9wIG9mZnNldD0iMC4yNiIgc3RvcC1jb2xvcj0iIzY0NjU5MyIvPjxzdG9wIG9mZnNldD0iMC41NSIgc3RvcC1jb2xvcj0iIzc5N2FhZSIvPjxzdG9wIG9mZnNldD0iMC44IiBzdG9wLWNvbG9yPSIjODY4N2JlIi8+PHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjOGI4Y2M0Ii8+PC9saW5lYXJHcmFkaWVudD48bGluZWFyR3JhZGllbnQgaWQ9ImxpbmVhci1ncmFkaWVudC0zIiB4MT0iMTAzIiB5MT0iOTA1LjU2IiB4Mj0iMTAxLjU1IiB5Mj0iODU4LjQzIiBncmFkaWVudFRyYW5zZm9ybT0idHJhbnNsYXRlKDAgLTY5Ny4zKSIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPjxzdG9wIG9mZnNldD0iMC4wMSIgc3RvcC1jb2xvcj0iIzRiNGM3NSIvPjxzdG9wIG9mZnNldD0iMC4xOCIgc3RvcC1jb2xvcj0iIzVhNWI4OCIvPjxzdG9wIG9mZnNldD0iMC41MiIgc3RvcC1jb2xvcj0iIzc1NzZhOSIvPjxzdG9wIG9mZnNldD0iMC44MSIgc3RvcC1jb2xvcj0iIzg1ODZiZCIvPjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iIzhiOGNjNCIvPjwvbGluZWFyR3JhZGllbnQ+PHJhZGlhbEdyYWRpZW50IGlkPSJyYWRpYWwtZ3JhZGllbnQtMiIgY3g9Ii01MzUuNDkiIGN5PSItMzQ0Ljg0IiByPSI5LjIiIGdyYWRpZW50VHJhbnNmb3JtPSJtYXRyaXgoLTAuODksIDAuNDYsIC0wLjMyLCAtMC42MSwgLTUxNS42MiwgMTM5LjQ2KSIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPjxzdG9wIG9mZnNldD0iMCIgc3RvcC1jb2xvcj0iI2JmOGY2OCIvPjxzdG9wIG9mZnNldD0iMC4xNyIgc3RvcC1jb2xvcj0iI2M2OTk3MiIvPjxzdG9wIG9mZnNldD0iMC42OSIgc3RvcC1jb2xvcj0iI2Q5YjI4YiIvPjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iI2UwYmI5NSIvPjwvcmFkaWFsR3JhZGllbnQ+PHJhZGlhbEdyYWRpZW50IGlkPSJyYWRpYWwtZ3JhZGllbnQtMyIgY3g9IjY5LjU5IiBjeT0iNzczLjMxIiByPSIxNy4xNyIgZ3JhZGllbnRUcmFuc2Zvcm09InRyYW5zbGF0ZSgwIC02OTUuMykiIHhsaW5rOmhyZWY9IiNyYWRpYWwtZ3JhZGllbnQiLz48L2RlZnM+PGcgaWQ9IkxheWVyXzIiIGRhdGEtbmFtZT0iTGF5ZXIgMiI+PGcgaWQ9IkxheWVyXzEtMiIgZGF0YS1uYW1lPSJMYXllciAxIj48cG9seWdvbiBjbGFzcz0iY2xzLTEiIHBvaW50cz0iNDcuMzUgMTgyLjY4IDQ0LjU5IDE4OC40NiA0MC42NiAxODIuMDMgNDcuMzUgMTgyLjY4Ii8+PGNpcmNsZSBjbGFzcz0iY2xzLTIiIGN4PSIxMDAuOCIgY3k9IjEwMC44IiByPSIxMDAuOCIvPjxjaXJjbGUgY2xhc3M9ImNscy0zIiBjeD0iMTUxLjk0IiBjeT0iNjcuMTYiIHI9IjI5LjI4Ii8+PGNpcmNsZSBjbGFzcz0iY2xzLTMiIGN4PSIxMjIuNzMiIGN5PSI4Mi40OCIgcj0iNi42OSIvPjxjaXJjbGUgY2xhc3M9ImNscy0zIiBjeD0iMTA5Ljc1IiBjeT0iODUuNDgiIHI9IjMuNTUiLz48cGF0aCBjbGFzcz0iY2xzLTQiIGQ9Ik0xNTIsODAuOTFhMi44MywyLjgzLDAsMCwxLTItLjgyQTIuOTEsMi45MSwwLDAsMSwxNTAsNzZhMi44OCwyLjg4LDAsMCwxLDQuNjUuODksMi44LDIuOCwwLDAsMSwwLDIuMjcsMi44OSwyLjg5LDAsMCwxLS42NC45MSwyLjc3LDIuNzcsMCwwLDEtLjkxLjZBMi44MywyLjgzLDAsMCwxLDE1Miw4MC45MVptLS4wNS04Ljc2aDBhMi40LDIuNCwwLDAsMS0yLjQtMi4zM0wxNDkuMSw1NS45YTIuNDEsMi40MSwwLDAsMSwyLjQtMi40OGguODhhMi4zOSwyLjM5LDAsMCwxLDIuMzksMi40OGwtLjQzLDEzLjkyQTIuNDEsMi40MSwwLDAsMSwxNTEuOTQsNzIuMTVaIi8+PHBhdGggY2xhc3M9ImNscy01IiBkPSJNNTYuOCwxMjUuNjJIODZhMjkuMTksMjkuMTksMCwwLDEsMTkuOTQsNy44NCw0NS4xLDQ1LjEsMCwwLDAtMzMuMjMtMTQuNTdoMGE0NC45Myw0NC45MywwLDAsMC0yNi44Nyw4Ljg2QTI5LjE1LDI5LjE1LDAsMCwxLDU2LjgsMTI1LjYyWiIvPjxwYXRoIGNsYXNzPSJjbHMtNCIgZD0iTTg0LjYsNTUuNzcsMzkuOTEsNjQsMzYsNjIuODlsMy4yNi0yLjY2TDgzLjkxLDUyYTEuNDQsMS40NCwwLDAsMSwxLjY3LDEuMTVsLjE3LDFBMS40NSwxLjQ1LDAsMCwxLDg0LjYsNTUuNzdaIi8+PGNpcmNsZSBjbGFzcz0iY2xzLTYiIGN4PSI2MC40NiIgY3k9IjUzLjQxIiByPSIxNC41NiIvPjxjaXJjbGUgY2xhc3M9ImNscy03IiBjeD0iNjAuNDYiIGN5PSI1My40MyIgcj0iMTQuNTYiLz48Y2lyY2xlIGNsYXNzPSJjbHMtNiIgY3g9IjY2LjQ3IiBjeT0iODYiIHI9IjMwLjA3Ii8+PHBhdGggY2xhc3M9ImNscy01IiBkPSJNODQuNSwxMjAuNDVsLTMuMy0uNjZhMy4wOSwzLjA5LDAsMCwxLTIuNDgtM3YtMmwtMS45Myw1LjY3WiIvPjxyZWN0IGNsYXNzPSJjbHMtOCIgeD0iNjEuODciIHk9Ijk3LjI3IiB3aWR0aD0iMTYuODUiIGhlaWdodD0iNDEuOTEiLz48cGF0aCBjbGFzcz0iY2xzLTkiIGQ9Ik04NiwxMjUuNjJINTYuOGEyOS4yOSwyOS4yOSwwLDAsMC0yOS4zLDI5LjI5VjE3MGExMDAuNTMsMTAwLjUzLDAsMCwwLDczLjMsMzEuNjEsMTAyLDEwMiwwLDAsMCwxNC41LTFWMTU0LjkxQTI5LjI5LDI5LjI5LDAsMCwwLDg2LDEyNS42MloiLz48cGF0aCBjbGFzcz0iY2xzLTEwIiBkPSJNMjcuNSwxNDIuODJsLTgsMzMuNjFjMjEuMTgtNiwyNS45LDEwLjEyLDQwLjY4LDE2LjYzVjExOC4yMkg1Mi4xQzMyLjY4LDExOC4xNiwyNy41LDE0Mi44MiwyNy41LDE0Mi44MloiLz48cGF0aCBjbGFzcz0iY2xzLTExIiBkPSJNODYuNDgsMTIxdjc5LjU1YTEwMS4zOCwxMDEuMzgsMCwwLDAsMzEuNDMtLjQzVjE2My44OUMxMTcuOTEsMTQzLjc4LDEwMC44LDEzNi4zMSw4Ni40OCwxMjFaIi8+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNODYuNDgsMTIxYy0uNyw4LDMuODYsNDEuNiwzLjg2LDQxLjZzMjYuNzEsNS43NSwyNS40NCwxN0MxMTQuNTcsMTkwLjIyLDgxLjcyLDE5MCw4MS43MiwxOTBMODMsMjAwYTEwMiwxMDIsMCwwLDAsMTcuNzcsMS41NiwxMDAuNTksMTAwLjU5LDAsMCwwLDI5LjI2LTQuMzIsMTguMywxOC4zLDAsMCwwLDcuMTMtNS4zOEMxNTAuODgsMTczLjU2LDEyNS45MywxMzQuMzIsODYuNDgsMTIxWiIvPjxjaXJjbGUgY2xhc3M9ImNscy01IiBjeD0iNjcuNDYiIGN5PSI5My45NyIgcj0iMjEuOTgiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0yNy4xNCAxNjAuNTQpIHJvdGF0ZSgtODkuNDYpIi8+PHBvbHlnb24gY2xhc3M9ImNscy0xMiIgcG9pbnRzPSI2NC44MyA4MS4wMSA3MS40NiAxMTUuNTggNTUuMzQgMTEyLjA1IDQ3LjYxIDg0LjAxIDY0LjgzIDgxLjAxIi8+PHBhdGggY2xhc3M9ImNscy01IiBkPSJNNzEuMTYsMTE0LjQ2bC0xLjktNy4zM2ExLjksMS45LDAsMCwwLS44Mi0xLjE0Yy0uNTgtLjM1LTEuMjktLjY5LTEuNTQtMS4zMi0uNzMtMS44OCwxLjI2LTIuNDgsMS40NS01LjM0LDAtLjExLS44MS00LjE5LS44MS00LjE5bDQuNzItLjg4LDUuMjIsMTcuNDJaIi8+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNODUuNjIsOTQuNzhhOC42NSw4LjY1LDAsMCwwLTE3LS4yNUw2Ni4yNSw5NWE4Ljg1LDguODUsMCwwLDAtMi40LTIuNDhBOC42NCw4LjY0LDAsMSwwLDY3LjQ1LDk4YTguMDgsOC4wOCwwLDAsMC0uMjktMS4xbDEuMzQtLjI1YTcuNTcsNy41NywwLDAsMCwuMTMsMS4yNEE4LjY0LDguNjQsMCwwLDAsNzcuMSwxMDVhOS40OSw5LjQ5LDAsMCwwLDEuNTktLjE0LDguNjUsOC42NSwwLDAsMCw2LjkzLTEwLjA3Wm0tMjEuMjgsOC41NGE2LjU0LDYuNTQsMCwxLDEsMS00LjlBNi41LDYuNSwwLDAsMSw2NC4zNCwxMDMuMzJabTE4LjE3LTMuMjZhNi41NCw2LjU0LDAsMCwxLTExLjgyLTIuNTIsNi41Niw2LjU2LDAsMCwxLDUuMjQtNy42Miw2LjkzLDYuOTMsMCwwLDEsMS4xOS0uMTEsNi41NCw2LjU0LDAsMCwxLDUuMzksMTAuMjVaIi8+PHBhdGggY2xhc3M9ImNscy02IiBkPSJNNzcuODIsNjQuNmEyNy4zNiwyNy4zNiwwLDAsMC0xLTRjLTEuMjUtLjUxLTEwLjQ2LS44My0xNi4xMi44M0M0NS41Nyw2NS44NiwzOC40LDkzLjIyLDM4LjUyLDkzLjcyQTI3LjIxLDI3LjIxLDAsMCwwLDc3LjgyLDY0LjZaIi8+PHBhdGggY2xhc3M9ImNscy02IiBkPSJNNzcuODIsNjQuNmEyNy4zNiwyNy4zNiwwLDAsMC0xLTQsMjguNDcsMjguNDcsMCwwLDEsMTcuNDcsMzFBMjcuMywyNy4zLDAsMCwxLDc2LjQ3LDc5LjMyLDI3LjA3LDI3LjA3LDAsMCwwLDc3LjgyLDY0LjZaIi8+PHBhdGggY2xhc3M9ImNscy0xMyIgZD0iTTc3LjgyLDY0LjZhMjcuMzYsMjcuMzYsMCwwLDAtMS00LDI4LjQ3LDI4LjQ3LDAsMCwxLDE3LjQ3LDMxQTI3LjMsMjcuMywwLDAsMSw3Ni40Nyw3OS4zMiwyNy4wNywyNy4wNywwLDAsMCw3Ny44Miw2NC42WiIvPjxlbGxpcHNlIGNsYXNzPSJjbHMtNiIgY3g9IjU5LjEzIiBjeT0iMTAwLjc2IiByeD0iMS42MiIgcnk9IjIuODgiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0xNy4zNiAxMi40NSkgcm90YXRlKC0xMC40OSkiLz48ZWxsaXBzZSBjbGFzcz0iY2xzLTYiIGN4PSI3Ni4yNiIgY3k9Ijk3LjUzIiByeD0iMS42MiIgcnk9IjIuODgiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0xNi40OSAxNS41Mikgcm90YXRlKC0xMC40OSkiLz48cGF0aCBjbGFzcz0iY2xzLTUiIGQ9Ik02MC4zMywxMTguMTksNjUsMTIyLjg2cy05Ljg3LDM1LjY2LTEwLjE4LDM1LjM1LTEzLjM0LTUtMTMuMzQtNVoiLz48cGF0aCBjbGFzcz0iY2xzLTUiIGQ9Ik02NS4wNSwxMjIuODZsLTEzLjgtNS4xNi0zLjM3LTEwLjI0aDBhMS44MSwxLjgxLDAsMCwxLDEuOTEuMDksNS43Nyw1Ljc3LDAsMCwxLDEuODEsMkw1NCwxMTQuMTJsNS44NS43NWE4LjA3LDguMDcsMCwwLDEsMy44NSwxLjQ3LDQuMiw0LjIsMCwwLDEsMS42NywzLjgyWiIvPjxwYXRoIGNsYXNzPSJjbHMtMTQiIGQ9Ik03My40OCwxMDkuNDNsLTEuMzUuNTlhMTIuODgsMTIuODgsMCwwLDEtMS4zOC41Miw1Ljg2LDUuODYsMCwwLDEtMS42OS4yOCwzLjIyLDMuMjIsMCwwLDEtMS44My0uNDkuNDkuNDksMCwwLDEtLjE0LS42OS4zOC4zOCwwLDAsMSwuMTYtLjE1bDAsMGMuNTEtLjMuOTItLjUxLDEuMzYtLjcyYTguNjMsOC42MywwLDAsMSwxLjQxLS41NSw1LjM3LDUuMzcsMCwwLDEsMS43NS0uMjQsMywzLDAsMCwxLDEuODQuNjIuNS41LDAsMCwxLC4wNy43LjY3LjY3LDAsMCwxLS4xOS4xNFoiLz48cGF0aCBjbGFzcz0iY2xzLTE1IiBkPSJNMjAxLjYsMTAwLjhBMTAwLjgsMTAwLjgsMCwwLDEsMjcuNjksMTcwLjE5Yy0xLjMxLTEuMzgtOC43NCwxMy4xNS0xMCwxMS42OXMzLjczLTE4Ljg5LDIuNTgtMjAuNDFBMTAwLjgsMTAwLjgsMCwxLDEsMjAxLjYsMTAwLjhaIi8+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNNjUuNTMsMTMwUzQ2LjEzLDE4Ni41OCw0NC4yLDE4OS4yYy0yLjc5LDMuNzgtMTIuNDUsNy42My0xOS4zNywzLjMxLTguNTEtNS4zMi02Ljg4LTE2Ljk0LTEuOTEtMjIuNzMsMTMuNzctMTYuMDUsMzIuNjktNDUuNDQsMzIuNjktNDUuNDRaIi8+PHBhdGggY2xhc3M9ImNscy0xNiIgZD0iTTEwNy4zNSwxNTQuMTdINDlhMywzLDAsMCwwLTIuODgsM3YyOC4zYTEwMC4yMiwxMDAuMjIsMCwwLDAsNDkuNjUsMTZoMTBjLjgsMCwxLjU5LS4wOSwyLjM4LS4xNWEzLDMsMCwwLDAsMi0yLjg4VjE1Ny4yQTMsMywwLDAsMCwxMDcuMzUsMTU0LjE3WiIvPjwvZz48L2c+PC9zdmc+';\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","\r\n\r\nexport { ViewmodelSchema } from './src/index';\r\n","import _ from 'underscore';\r\nimport { Field } from './field';\r\n\r\nfunction getNestedList(fields, key) {\r\n return _.chain(fields)\r\n .filter(field => field.indexOf(`${key}/`) === 0)\r\n .map(field => field.slice(key.length + 1))\r\n .value();\r\n}\r\n\r\nfunction createField(schema, i18n, fields, override) {\r\n return _.chain(schema.properties)\r\n .pick((value, key) => _.find(fields, field => field === key || field.indexOf(`${key}/`) === 0))\r\n .mapObject((value, key) => {\r\n const prop = _.defaults(value, { required: _.contains(schema.required, key) });\r\n\r\n return value.type === 'object' ?\r\n _.extend({ prop }, createField(value.schema, i18n, getNestedList(fields, key), override)) :\r\n new Field(prop, i18n, _.result(override, key));\r\n })\r\n .value();\r\n}\r\n\r\n/**\r\n * Viewmodel schema, generated from schema file. It provides auto generated\r\n * default value, validation rules and conversions\r\n * @param {JsonSchema} schema - an object which contains property 'properties',\r\n * @param {I18n} i18n - provide callback getString to get localized string\r\n * @param {Array} fields - list of fields to read from schema\r\n * @param {Object} override - Optional override object that changes auto-generated fields\r\n *\r\n * Please notice that in schema, required can be defined on either field or schema entity level:\r\n * @example\r\n * const schema = {\r\n * properties: {\r\n * field1: {\r\n * type: 'string',\r\n * required: true, // required flag on field level\r\n * },\r\n * },\r\n * required: ['fleid2', 'field3'], // required flag on entity level\r\n * }\r\n */\r\nexport class ViewmodelSchema {\r\n constructor(schema, i18n, fields, override) {\r\n const schemaProps = createField(schema, i18n, fields, override);\r\n\r\n _.extend(this, schemaProps);\r\n }\r\n}\r\n","import _ from 'underscore';\r\nimport { getDefaultValue } from './default-value';\r\nimport { createValidation } from './validation/index';\r\nimport { createConversion } from './conversion/index';\r\n\r\n/**\r\n * Viewmodel schema field\r\n * @param {Object} prop - schema property bag\r\n * @param {I18n} i18n - provide callback getString to get localized string\r\n * @param {Object} override - Optional override object that changes auto-generated fields\r\n */\r\nexport class Field {\r\n constructor(prop, i18n, override) {\r\n this.prop = prop;\r\n this.i18n = i18n;\r\n this.override = override;\r\n }\r\n\r\n /**\r\n * Get default value generated from schema\r\n * @returns {Object} - default value\r\n */\r\n get default() {\r\n let defaultValue = getDefaultValue(this.prop);\r\n\r\n if (this.override && _.isFunction(this.override.default)) {\r\n defaultValue = this.override.default(defaultValue);\r\n }\r\n\r\n return defaultValue;\r\n }\r\n\r\n /**\r\n * Get validation rules generated from schema\r\n * @returns {Object} - validation rules\r\n */\r\n get validation() {\r\n let validation = createValidation(this.prop, this.i18n);\r\n\r\n if (this.override && _.isFunction(this.override.validation)) {\r\n validation = this.override.validation(validation);\r\n }\r\n\r\n return validation;\r\n }\r\n\r\n /**\r\n * Get conversions generated from schema\r\n * @returns {Object} - object that handles fromModel and toModel conversion\r\n */\r\n get conversion() {\r\n let conversion = createConversion(this.prop, this.i18n);\r\n\r\n if (this.override && _.isFunction(this.override.conversion)) {\r\n conversion = this.override.conversion(conversion);\r\n }\r\n\r\n return conversion;\r\n }\r\n}\r\n","import _ from 'underscore';\r\n\r\nconst defaultValues = {\r\n integer: 0,\r\n number: undefined,\r\n string: '',\r\n boolean: false,\r\n object: {},\r\n array: [],\r\n datetime: {},\r\n};\r\n\r\n/**\r\n * get default value for property\r\n * @param {Object} prop - property define, it's from schema\r\n * @returns {any} - return default value for different type\r\n */\r\nexport function getDefaultValue(prop) {\r\n if (_.has(prop, 'default')) {\r\n return prop.default;\r\n }\r\n\r\n if (!_.isEmpty(prop.enum)) {\r\n return prop.nullable ? null : _.first(prop.enum);\r\n }\r\n\r\n return _.clone(defaultValues[prop.type]);\r\n}\r\n","import { Validation } from '@bingads-webui/validation';\r\nimport _ from 'underscore';\r\nimport { BaseFactory } from './rules-factory/base-factory';\r\nimport { EnumFactory } from './rules-factory/enum-factory';\r\nimport { NumberFactory } from './rules-factory/number-factory';\r\nimport { StringFactory } from './rules-factory/string-factory';\r\nimport { ArrayFactory } from './rules-factory/array-factory';\r\n\r\n/**\r\n * Find validation rules factory by field type\r\n * @param {Object} prop - Schema field properties\r\n * @param {I18n} i18n - i18n for localization\r\n * @returns {Object} - returns factory for validation rules\r\n */\r\nfunction getRuleFactoryByType(prop, i18n) {\r\n switch (prop.type) {\r\n case 'integer':\r\n return new NumberFactory({ prop: _.defaults({ decimalLength: 0 }, prop), i18n });\r\n case 'number':\r\n return new NumberFactory({ prop: _.defaults({ decimalLength: 2 }, prop), i18n });\r\n case 'boolean':\r\n return new EnumFactory({ prop: { enum: [true, false] }, i18n });\r\n case 'string':\r\n return prop.enum ? new EnumFactory({ prop, i18n }) : new StringFactory({ prop, i18n });\r\n case 'array':\r\n return new ArrayFactory({ prop, i18n });\r\n default:\r\n return new BaseFactory({ prop, i18n });\r\n }\r\n}\r\n\r\n/**\r\n * Create validation rules by field type\r\n * @param {Object} prop - Schema field properties\r\n * @param {I18n} i18n - i18n for localization\r\n * @returns {Object} - returns validation rules\r\n */\r\nexport function createValidation(prop, i18n) {\r\n const factory = getRuleFactoryByType(prop, i18n);\r\n\r\n const rules = factory.create();\r\n\r\n if (prop.required) {\r\n // allowspace means whether value with pure spaces is treated as valid\r\n const allowSpace = _.result(prop, 'allowSpace', false);\r\n\r\n rules.required = Validation.required(allowSpace, i18n);\r\n }\r\n\r\n return rules;\r\n}\r\n","module.exports = __WEBPACK_EXTERNAL_MODULE__32__;","/**\r\n * Base factory for validation rules\r\n * @param {Object} options - input for schema property bag and i18n\r\n */\r\nexport class BaseFactory {\r\n constructor(options) {\r\n this.prop = options.prop;\r\n this.i18n = options.i18n;\r\n }\r\n\r\n /**\r\n * Base method to create rules set\r\n * @returns {Object} - empty rules set\r\n */\r\n create() {\r\n return {};\r\n }\r\n}\r\n","import { Validation } from '@bingads-webui/validation';\r\nimport { BaseFactory } from './base-factory';\r\n\r\n/**\r\n * Factory for enum validation rules\r\n * @param {Object} options - input for schema property bag and i18n\r\n */\r\nexport class EnumFactory extends BaseFactory {\r\n /**\r\n * Create enum rules set from schema property\r\n * @returns {Object} - enum validation rules set\r\n */\r\n create() {\r\n return {\r\n enum: Validation.enum(this.prop.enum, this.i18n),\r\n };\r\n }\r\n}\r\n","import { Validation } from '@bingads-webui/validation';\r\nimport _ from 'underscore';\r\nimport { BaseFactory } from './base-factory';\r\n\r\n/**\r\n * Factory for number validation rules\r\n * @param {Object} options - input for schema property bag and i18n\r\n */\r\nexport class NumberFactory extends BaseFactory {\r\n /**\r\n * Create number rules set from schema property\r\n * @returns {Object} - number validation rules set\r\n */\r\n create() {\r\n const rules = {\r\n type: Validation.number.type(this.i18n).set({ nullable: this.prop.nullable }),\r\n decimalLength: Validation.number.size(undefined, this.prop.decimalLength, this.i18n)\r\n .set({ nullable: this.prop.nullable }),\r\n };\r\n\r\n if (_.isFinite(this.prop.maximum) || _.isFinite(this.prop.minimum)\r\n || this.prop.isPercentValue) {\r\n const minimum = _.isFinite(this.prop.minimum) ?\r\n this.prop.minimum : (this.prop.isPercentValue && 0);\r\n const maximum = _.isFinite(this.prop.maximum) ?\r\n this.prop.maximum : (this.prop.isPercentValue && 100);\r\n\r\n rules.range = Validation.number.range(minimum, maximum, this.i18n)\r\n .set({ nullable: this.prop.nullable });\r\n }\r\n\r\n return rules;\r\n }\r\n}\r\n","import { Validation } from '@bingads-webui/validation';\r\nimport _ from 'underscore';\r\nimport { BaseFactory } from './base-factory';\r\n\r\n/**\r\n * Factory for string validation rules\r\n * @param {Object} options - input for schema property bag and i18n\r\n */\r\nexport class StringFactory extends BaseFactory {\r\n /**\r\n * Create string rules set from schema property\r\n * @returns {Object} - string validation rules set\r\n */\r\n create() {\r\n const rules = {};\r\n\r\n if (_.isFinite(this.prop.maxLength)) {\r\n rules.maxLength = Validation.string.size(\r\n this.prop.maxLength,\r\n this.prop.distinguishCJK,\r\n this.i18n\r\n );\r\n }\r\n\r\n if (_.isFinite(this.prop.minLength)) {\r\n rules.minLength = Validation.string.minSize(\r\n this.prop.minLength,\r\n this.prop.distinguishCJK,\r\n this.i18n\r\n );\r\n }\r\n\r\n if (this.prop.pattern) {\r\n rules.pattern = Validation.string.pattern(this.prop.pattern, this.i18n);\r\n }\r\n\r\n if (this.prop.checkXss) {\r\n rules.checkXss = Validation.string.xss(this.i18n);\r\n }\r\n\r\n // apply nullable prop\r\n _.each(rules, (rule) => {\r\n rule.set({ nullable: this.prop.nullable !== false });\r\n });\r\n\r\n return rules;\r\n }\r\n}\r\n","import { Validation } from '@bingads-webui/validation';\r\nimport { BaseFactory } from './base-factory';\r\n\r\n/**\r\n * Factory for array validation rules\r\n * @param {Object} options - input for schema property bag and i18n\r\n */\r\nexport class ArrayFactory extends BaseFactory {\r\n /**\r\n * Create array rules set from schema property\r\n * @returns {Object} - array validation rules set\r\n */\r\n create() {\r\n const rules = {};\r\n\r\n if (this.prop.minItems || this.prop.maxItems) {\r\n rules.size = Validation.array.size(this.prop.minItems, this.prop.maxItems, this.i18n);\r\n }\r\n\r\n if (this.prop.uniqueItems) {\r\n rules.unique = Validation.array.unique(this.i18n);\r\n }\r\n\r\n return rules;\r\n }\r\n}\r\n","import _ from 'underscore';\r\nimport { BaseFactory } from './convertor-factory/base-factory';\r\nimport { NumberFactory } from './convertor-factory/number-factory';\r\n\r\n/**\r\n * Find conversion factory by field type\r\n * @param {Object} prop - Schema field properties\r\n * @param {I18n} i18n - i18n for localization\r\n * @returns {Object} - returns factory for conversion object\r\n */\r\nfunction getConvertorFactoryByType(prop, i18n) {\r\n switch (prop.type) {\r\n case 'integer':\r\n return new NumberFactory({ prop: _.defaults({ decimalLength: 0 }, prop), i18n });\r\n case 'number':\r\n return new NumberFactory({ prop: _.defaults({ decimalLength: 2 }, prop), i18n });\r\n default:\r\n return new BaseFactory({ prop, i18n });\r\n }\r\n}\r\n\r\n/**\r\n * Create conversion object by field type\r\n * @param {Object} prop - Schema field properties\r\n * @param {I18n} i18n - i18n for localization\r\n * @returns {Object} - returns conversion object\r\n */\r\nexport function createConversion(prop, i18n) {\r\n const factory = getConvertorFactoryByType(prop, i18n);\r\n\r\n return factory.create();\r\n}\r\n","/**\r\n * Base factory for conversion object\r\n * @param {Object} options - input for schema property bag and i18n\r\n */\r\nexport class BaseFactory {\r\n constructor(options) {\r\n this.prop = options.prop;\r\n this.i18n = options.i18n;\r\n }\r\n\r\n /**\r\n * Base method to create conversion object\r\n * @returns {Object} - pass-through conversion object\r\n */\r\n create() {\r\n const passThrough = value => value;\r\n\r\n return {\r\n fromModel: passThrough,\r\n toModel: passThrough,\r\n };\r\n }\r\n}\r\n","import _ from 'underscore';\r\nimport { BaseFactory } from './base-factory';\r\n\r\n/**\r\n * Factory for number conversion object\r\n * @param {Object} options - input for schema property bag and i18n\r\n */\r\nexport class NumberFactory extends BaseFactory {\r\n numberToString(num, numberOfDigits, i18n) {\r\n if (!_.isNumber(num)) {\r\n return num;\r\n }\r\n\r\n return i18n.formatDecimal(num, {\r\n minimumFractionDigits: numberOfDigits,\r\n maximumFractionDigits: numberOfDigits,\r\n });\r\n }\r\n\r\n stringToNumber(localizedString, i18n) {\r\n if (_.isEmpty(localizedString)) {\r\n // Convert to null if string is null or empty. Leave it to required validator to raise error.\r\n return null;\r\n }\r\n if (!i18n.isValidDecimal(localizedString)) {\r\n // Do not convert if it is not decimal. Leave it to validator raise type error.\r\n return localizedString;\r\n }\r\n return i18n.parseDecimal(localizedString);\r\n }\r\n\r\n /**\r\n * Create number conversion object\r\n * @returns {Object} - conversion object that convers number to and from string\r\n */\r\n create() {\r\n return {\r\n fromModel: value => this.numberToString(value, this.prop.decimalLength, this.i18n),\r\n toModel: value => this.stringToNumber(value, this.i18n),\r\n };\r\n }\r\n}\r\n","module.exports = __WEBPACK_EXTERNAL_MODULE__355__;","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__;","module.exports = __WEBPACK_EXTERNAL_MODULE__386__;","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","export default window;\r\n"],"sourceRoot":""}